From 32d4edeacadaf99ceec06911e2a9c65afae048c8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Jan 2026 21:28:48 +0000 Subject: [PATCH 1/2] Port over ember-template-lint rule for gjs/gts --- .gitignore | 3 +- CHANGELOG.md | 2314 ++++++++++------- README.md | 215 +- docs/rules/no-array-prototype-extensions.md | 2 +- docs/rules/no-at-ember-render-modifiers.md | 4 +- docs/rules/no-html-safe.md | 2 +- .../rules/no-restricted-service-injections.md | 2 +- docs/rules/template-attribute-order.md | 47 +- docs/rules/template-block-indentation.md | 2 - .../template-builtin-component-arguments.md | 30 +- .../template-deprecated-inline-view-helper.md | 2 - .../template-deprecated-render-helper.md | 2 - docs/rules/template-eol-last.md | 1 - docs/rules/template-link-href-attributes.md | 2 +- docs/rules/template-link-rel-noopener.md | 8 +- docs/rules/template-modifier-name-case.md | 2 - docs/rules/template-no-abstract-roles.md | 8 +- docs/rules/template-no-action-modifiers.md | 57 +- docs/rules/template-no-action.md | 110 +- .../template-no-ambiguous-glimmer-paths.md | 41 + docs/rules/template-no-args-paths.md | 2 - ...template-no-arguments-for-html-elements.md | 22 +- docs/rules/template-no-aria-hidden-body.md | 12 +- .../template-no-aria-unsupported-elements.md | 6 +- .../template-no-array-prototype-extensions.md | 10 - docs/rules/template-no-attrs-in-components.md | 2 + ...plate-no-block-params-for-html-elements.md | 4 + docs/rules/template-no-capital-arguments.md | 22 +- docs/rules/template-no-chained-this.md | 10 + .../template-no-curly-component-invocation.md | 2 - docs/rules/template-no-debugger.md | 2 +- docs/rules/template-no-down-event-binding.md | 78 + ...template-no-duplicate-landmark-elements.md | 82 +- .../template-no-element-event-actions.md | 5 + docs/rules/template-no-empty-headings.md | 12 +- docs/rules/template-no-extra-mut-helpers.md | 37 + docs/rules/template-no-form-action.md | 68 + docs/rules/template-no-inline-linkto.md | 2 - docs/rules/template-no-input-tagname.md | 18 +- docs/rules/template-no-invalid-link-text.md | 2 +- docs/rules/template-no-let-reference.md | 10 +- docs/rules/template-no-log.md | 2 +- .../rules/template-no-multiple-empty-lines.md | 2 - docs/rules/template-no-negated-condition.md | 2 - docs/rules/template-no-nested-interactive.md | 13 +- .../rules/template-no-obscure-array-access.md | 2 - .../template-no-outlet-outside-routes.md | 1 - docs/rules/template-no-partial.md | 44 + .../template-no-passed-in-event-handlers.md | 98 + .../template-no-pointer-down-event-binding.md | 35 +- ...plate-no-positional-data-test-selectors.md | 76 + docs/rules/template-no-positive-tabindex.md | 67 + .../template-no-potential-path-strings.md | 80 + .../rules/template-no-quoteless-attributes.md | 50 + docs/rules/template-no-redundant-fn.md | 65 + .../template-no-redundant-landmark-role.md | 70 + docs/rules/template-no-redundant-role.md | 73 + .../template-no-restricted-invocations.md | 77 + docs/rules/template-no-route-action.md | 144 + ...emplate-no-scope-outside-table-headings.md | 56 + docs/rules/template-no-shadowed-elements.md | 89 + .../template-no-splattributes-with-class.md | 53 + ...ate-no-this-in-template-only-components.md | 42 + docs/rules/template-no-trailing-spaces.md | 45 + docs/rules/template-no-triple-curlies.md | 62 + docs/rules/template-no-unavailable-this.md | 51 + docs/rules/template-no-unbalanced-curlies.md | 68 + docs/rules/template-no-unbound.md | 27 + ...nknown-arguments-for-builtin-components.md | 54 + ...emplate-no-unnecessary-component-helper.md | 35 + docs/rules/template-no-unnecessary-concat.md | 48 + ...te-no-unnecessary-curly-in-string-attrs.md | 31 + .../template-no-unnecessary-curly-parens.md | 51 + .../template-no-unnecessary-curly-strings.md | 37 + ...template-no-unsupported-role-attributes.md | 59 + docs/rules/template-no-unused-block-params.md | 57 + docs/rules/template-no-valueless-arguments.md | 36 + .../template-no-whitespace-for-layout.md | 56 + .../template-no-whitespace-within-word.md | 49 + docs/rules/template-no-with.md | 76 + ...e-no-yield-block-params-to-else-inverse.md | 58 + docs/rules/template-no-yield-only.md | 44 + docs/rules/template-no-yield-to-default.md | 37 + docs/rules/template-quotes.md | 60 + ...-require-aria-activedescendant-tabindex.md | 55 + docs/rules/template-require-button-type.md | 58 + docs/rules/template-require-context-role.md | 101 + docs/rules/template-require-each-key.md | 41 + docs/rules/template-require-form-method.md | 71 + .../template-require-has-block-helper.md | 54 + .../template-require-iframe-src-attribute.md | 74 + docs/rules/template-require-iframe-title.md | 36 + docs/rules/template-require-input-label.md | 67 + docs/rules/template-require-lang-attribute.md | 63 + ...plate-require-mandatory-role-attributes.md | 77 + docs/rules/template-require-media-caption.md | 59 + ...emplate-require-presentational-children.md | 96 + docs/rules/template-require-splattributes.md | 57 + docs/rules/template-require-strict-mode.md | 42 + docs/rules/template-require-valid-alt-text.md | 117 + .../template-require-valid-form-groups.md | 56 + ...require-valid-named-block-naming-format.md | 55 + .../template-self-closing-void-elements.md | 64 + docs/rules/template-simple-modifiers.md | 45 + docs/rules/template-simple-unless.md | 71 + docs/rules/template-sort-invocations.md | 67 + docs/rules/template-splat-attributes-only.md | 32 + docs/rules/template-style-concatenation.md | 78 + docs/rules/template-table-groups.md | 73 + docs/rules/template-template-length.md | 57 + fix-autofix-tests.js | 80 + lib/config-legacy/strict-gjs.js | 5 - lib/config-legacy/strict-gts.js | 5 - lib/config/strict-gjs.js | 3 - lib/config/strict-gts.js | 3 - lib/index.js | 4 +- lib/rules/template-attribute-indentation.js | 40 - lib/rules/template-attribute-order.js | 313 ++- lib/rules/template-block-indentation.js | 44 +- .../template-builtin-component-arguments.js | 9 +- .../template-deprecated-inline-view-helper.js | 141 +- .../template-deprecated-render-helper.js | 26 +- lib/rules/template-eol-last.js | 24 +- lib/rules/template-indent.js | 1 + lib/rules/template-linebreak-style.js | 19 +- lib/rules/template-link-href-attributes.js | 15 +- lib/rules/template-link-rel-noopener.js | 55 +- lib/rules/template-modifier-name-case.js | 43 +- lib/rules/template-no-abstract-roles.js | 9 +- lib/rules/template-no-accesskey-attribute.js | 9 +- lib/rules/template-no-action-modifiers.js | 44 +- .../template-no-action-on-submit-button.js | 11 - lib/rules/template-no-action.js | 56 +- .../template-no-ambiguous-glimmer-paths.js | 73 + lib/rules/template-no-args-paths.js | 79 +- ...template-no-arguments-for-html-elements.js | 9 +- lib/rules/template-no-aria-hidden-body.js | 9 +- .../template-no-aria-unsupported-elements.js | 20 +- .../template-no-array-prototype-extensions.js | 9 +- .../template-no-at-ember-render-modifiers.js | 7 +- lib/rules/template-no-attrs-in-components.js | 15 +- lib/rules/template-no-autofocus-attribute.js | 16 +- lib/rules/template-no-bare-strings.js | 18 +- lib/rules/template-no-bare-yield.js | 53 +- ...plate-no-block-params-for-html-elements.js | 9 +- .../template-no-builtin-form-components.js | 55 +- lib/rules/template-no-capital-arguments.js | 74 +- lib/rules/template-no-chained-this.js | 9 +- .../template-no-curly-component-invocation.js | 205 +- lib/rules/template-no-debugger.js | 7 + lib/rules/template-no-deprecated.js | 1 + lib/rules/template-no-down-event-binding.js | 57 + lib/rules/template-no-duplicate-id.js | 85 +- ...template-no-duplicate-landmark-elements.js | 69 +- .../template-no-element-event-actions.js | 9 +- lib/rules/template-no-empty-headings.js | 9 +- lib/rules/template-no-extra-mut-helpers.js | 40 + lib/rules/template-no-forbidden-elements.js | 14 +- lib/rules/template-no-form-action.js | 36 + .../template-no-heading-inside-button.js | 9 +- lib/rules/template-no-html-comments.js | 10 +- lib/rules/template-no-implicit-this.js | 3 - .../template-no-inline-event-handlers.js | 3 +- lib/rules/template-no-inline-linkto.js | 40 +- lib/rules/template-no-inline-styles.js | 12 +- lib/rules/template-no-input-placeholder.js | 3 +- lib/rules/template-no-input-tagname.js | 9 +- .../template-no-invalid-aria-attributes.js | 38 +- lib/rules/template-no-invalid-interactive.js | 9 +- lib/rules/template-no-invalid-link-text.js | 130 +- lib/rules/template-no-invalid-role.js | 50 +- lib/rules/template-no-jsx-attributes.js | 2 +- lib/rules/template-no-let-reference.js | 1 + .../template-no-link-to-positional-params.js | 35 + lib/rules/template-no-log.js | 74 +- ...te-no-model-argument-in-route-templates.js | 4 +- lib/rules/template-no-multiple-empty-lines.js | 59 +- lib/rules/template-no-negated-condition.js | 134 +- lib/rules/template-no-nested-interactive.js | 3 +- lib/rules/template-no-obscure-array-access.js | 74 +- lib/rules/template-no-only-default-slot.js | 2 +- .../template-no-outlet-outside-routes.js | 64 +- lib/rules/template-no-partial.js | 53 + .../template-no-passed-in-event-handlers.js | 141 + .../template-no-pointer-down-event-binding.js | 64 +- ...plate-no-positional-data-test-selectors.js | 67 + lib/rules/template-no-positive-tabindex.js | 123 + .../template-no-potential-path-strings.js | 62 + lib/rules/template-no-quoteless-attributes.js | 51 + lib/rules/template-no-redundant-fn.js | 62 + .../template-no-redundant-landmark-role.js | 81 + lib/rules/template-no-redundant-role.js | 175 ++ .../template-no-restricted-invocations.js | 346 +++ lib/rules/template-no-route-action.js | 49 + ...emplate-no-scope-outside-table-headings.js | 47 + lib/rules/template-no-shadowed-elements.js | 224 ++ .../template-no-splattributes-with-class.js | 41 + ...ate-no-this-in-template-only-components.js | 56 + lib/rules/template-no-trailing-spaces.js | 67 + lib/rules/template-no-triple-curlies.js | 40 + lib/rules/template-no-unavailable-this.js | 48 + lib/rules/template-no-unbalanced-curlies.js | 47 + lib/rules/template-no-unbound.js | 32 + ...nknown-arguments-for-builtin-components.js | 446 ++++ ...emplate-no-unnecessary-component-helper.js | 124 + lib/rules/template-no-unnecessary-concat.js | 43 + ...te-no-unnecessary-curly-in-string-attrs.js | 33 + .../template-no-unnecessary-curly-parens.js | 64 + .../template-no-unnecessary-curly-strings.js | 59 + ...template-no-unsupported-role-attributes.js | 146 ++ lib/rules/template-no-unused-block-params.js | 173 ++ lib/rules/template-no-valueless-arguments.js | 35 + .../template-no-whitespace-for-layout.js | 51 + .../template-no-whitespace-within-word.js | 117 + lib/rules/template-no-with.js | 32 + ...e-no-yield-block-params-to-else-inverse.js | 55 + lib/rules/template-no-yield-only.js | 79 + lib/rules/template-no-yield-to-default.js | 76 + lib/rules/template-quotes.js | 156 ++ ...-require-aria-activedescendant-tabindex.js | 135 + lib/rules/template-require-button-type.js | 93 + lib/rules/template-require-context-role.js | 126 + lib/rules/template-require-each-key.js | 54 + lib/rules/template-require-form-method.js | 115 + .../template-require-has-block-helper.js | 41 + .../template-require-iframe-src-attribute.js | 44 + lib/rules/template-require-iframe-title.js | 89 + lib/rules/template-require-input-label.js | 153 ++ lib/rules/template-require-lang-attribute.js | 258 ++ ...plate-require-mandatory-role-attributes.js | 108 + lib/rules/template-require-media-caption.js | 86 + ...emplate-require-presentational-children.js | 199 ++ lib/rules/template-require-splattributes.js | 89 + lib/rules/template-require-strict-mode.js | 45 + lib/rules/template-require-valid-alt-text.js | 203 ++ .../template-require-valid-form-groups.js | 96 + ...require-valid-named-block-naming-format.js | 142 + .../template-self-closing-void-elements.js | 76 + lib/rules/template-simple-modifiers.js | 57 + lib/rules/template-simple-unless.js | 155 ++ lib/rules/template-sort-invocations.js | 299 +++ lib/rules/template-splat-attributes-only.js | 31 + lib/rules/template-style-concatenation.js | 55 + lib/rules/template-table-groups.js | 231 ++ lib/rules/template-template-length.js | 119 + pnpm-lock.yaml | 9 + scripts/generate-hbs-tests.js | 518 ++++ scripts/update-rules.js | 19 +- .../rules-preprocessor/gjs-gts-parser-test.js | 45 + .../rules/template-attribute-indentation.js | 53 - tests/lib/rules/template-attribute-order.js | 428 ++- tests/lib/rules/template-block-indentation.js | 1206 ++++----- .../template-builtin-component-arguments.js | 66 +- .../template-deprecated-inline-view-helper.js | 53 +- .../template-deprecated-render-helper.js | 25 +- tests/lib/rules/template-eol-last.js | 213 +- tests/lib/rules/template-linebreak-style.js | 266 +- .../rules/template-link-href-attributes.js | 44 +- tests/lib/rules/template-link-rel-noopener.js | 91 +- .../lib/rules/template-modifier-name-case.js | 167 +- tests/lib/rules/template-no-abstract-roles.js | 142 +- .../rules/template-no-accesskey-attribute.js | 94 + .../lib/rules/template-no-action-modifiers.js | 102 +- .../template-no-action-on-submit-button.js | 8 - tests/lib/rules/template-no-action.js | 133 +- .../template-no-ambiguous-glimmer-paths.js | 57 + tests/lib/rules/template-no-args-paths.js | 62 +- ...template-no-arguments-for-html-elements.js | 97 + .../lib/rules/template-no-aria-hidden-body.js | 32 + .../template-no-aria-unsupported-elements.js | 55 + .../template-no-array-prototype-extensions.js | 192 +- .../template-no-at-ember-render-modifiers.js | 51 +- .../rules/template-no-attrs-in-components.js | 81 +- .../rules/template-no-autofocus-attribute.js | 183 +- tests/lib/rules/template-no-bare-strings.js | 18 - tests/lib/rules/template-no-bare-yield.js | 68 +- ...plate-no-block-params-for-html-elements.js | 46 + .../template-no-builtin-form-components.js | 155 +- .../rules/template-no-capital-arguments.js | 133 + tests/lib/rules/template-no-chained-this.js | 47 + .../template-no-curly-component-invocation.js | 128 +- tests/lib/rules/template-no-debugger.js | 30 + .../rules/template-no-down-event-binding.js | 71 + tests/lib/rules/template-no-duplicate-id.js | 35 +- ...template-no-duplicate-landmark-elements.js | 44 +- .../template-no-element-event-actions.js | 73 + tests/lib/rules/template-no-empty-headings.js | 122 +- .../rules/template-no-extra-mut-helpers.js | 68 + .../rules/template-no-forbidden-elements.js | 14 - tests/lib/rules/template-no-form-action.js | 66 + .../template-no-heading-inside-button.js | 63 +- tests/lib/rules/template-no-html-comments.js | 2 - tests/lib/rules/template-no-inline-linkto.js | 6 +- tests/lib/rules/template-no-inline-styles.js | 52 +- tests/lib/rules/template-no-input-tagname.js | 50 +- .../template-no-invalid-aria-attributes.js | 20 +- .../rules/template-no-invalid-interactive.js | 135 +- .../rules/template-no-invalid-link-text.js | 237 +- tests/lib/rules/template-no-invalid-role.js | 69 - tests/lib/rules/template-no-log.js | 133 +- .../rules/template-no-multiple-empty-lines.js | 3 + .../rules/template-no-negated-condition.js | 121 +- .../rules/template-no-obscure-array-access.js | 49 +- .../template-no-outlet-outside-routes.js | 51 +- tests/lib/rules/template-no-partial.js | 87 + .../template-no-passed-in-event-handlers.js | 196 ++ .../template-no-pointer-down-event-binding.js | 91 +- ...plate-no-positional-data-test-selectors.js | 213 ++ .../rules/template-no-positive-tabindex.js | 229 ++ .../template-no-potential-path-strings.js | 178 ++ .../rules/template-no-quoteless-attributes.js | 73 + tests/lib/rules/template-no-redundant-fn.js | 149 ++ .../template-no-redundant-landmark-role.js | 82 + tests/lib/rules/template-no-redundant-role.js | 239 ++ .../template-no-restricted-invocations.js | 570 ++++ tests/lib/rules/template-no-route-action.js | 229 ++ ...emplate-no-scope-outside-table-headings.js | 125 + .../rules/template-no-shadowed-elements.js | 113 + .../template-no-splattributes-with-class.js | 103 + ...ate-no-this-in-template-only-components.js | 93 + .../lib/rules/template-no-trailing-spaces.js | 232 ++ tests/lib/rules/template-no-triple-curlies.js | 99 + .../lib/rules/template-no-unavailable-this.js | 76 + .../rules/template-no-unbalanced-curlies.js | 188 ++ tests/lib/rules/template-no-unbound.js | 51 + ...nknown-arguments-for-builtin-components.js | 305 +++ ...emplate-no-unnecessary-component-helper.js | 144 + .../rules/template-no-unnecessary-concat.js | 65 + ...te-no-unnecessary-curly-in-string-attrs.js | 25 + .../template-no-unnecessary-curly-parens.js | 110 + .../template-no-unnecessary-curly-strings.js | 88 + ...template-no-unsupported-role-attributes.js | 238 ++ .../rules/template-no-unused-block-params.js | 176 ++ .../rules/template-no-valueless-arguments.js | 69 + .../template-no-whitespace-for-layout.js | 136 + .../template-no-whitespace-within-word.js | 144 + tests/lib/rules/template-no-with.js | 75 + ...e-no-yield-block-params-to-else-inverse.js | 74 + tests/lib/rules/template-no-yield-only.js | 155 ++ .../lib/rules/template-no-yield-to-default.js | 301 +++ tests/lib/rules/template-quotes.js | 175 ++ ...-require-aria-activedescendant-tabindex.js | 126 + .../lib/rules/template-require-button-type.js | 202 ++ .../rules/template-require-context-role.js | 466 ++++ tests/lib/rules/template-require-each-key.js | 89 + .../lib/rules/template-require-form-method.js | 204 ++ .../template-require-has-block-helper.js | 326 +++ .../template-require-iframe-src-attribute.js | 97 + .../rules/template-require-iframe-title.js | 118 + .../lib/rules/template-require-input-label.js | 469 ++++ .../rules/template-require-lang-attribute.js | 143 + ...plate-require-mandatory-role-attributes.js | 150 ++ .../rules/template-require-media-caption.js | 185 ++ ...emplate-require-presentational-children.js | 199 ++ .../rules/template-require-splattributes.js | 95 + .../lib/rules/template-require-strict-mode.js | 63 + .../rules/template-require-valid-alt-text.js | 343 +++ .../template-require-valid-form-groups.js | 128 + ...require-valid-named-block-naming-format.js | 307 +++ .../template-self-closing-void-elements.js | 348 +++ tests/lib/rules/template-simple-modifiers.js | 87 + tests/lib/rules/template-simple-unless.js | 442 ++++ tests/lib/rules/template-sort-invocations.js | 1325 ++++++++++ .../rules/template-splat-attributes-only.js | 55 + .../lib/rules/template-style-concatenation.js | 167 ++ tests/lib/rules/template-table-groups.js | 893 +++++++ tests/lib/rules/template-template-length.js | 116 + tests/plugin-exports.js | 4 - 368 files changed, 31144 insertions(+), 4788 deletions(-) create mode 100644 docs/rules/template-no-ambiguous-glimmer-paths.md create mode 100644 docs/rules/template-no-down-event-binding.md create mode 100644 docs/rules/template-no-extra-mut-helpers.md create mode 100644 docs/rules/template-no-form-action.md create mode 100644 docs/rules/template-no-partial.md create mode 100644 docs/rules/template-no-passed-in-event-handlers.md create mode 100644 docs/rules/template-no-positional-data-test-selectors.md create mode 100644 docs/rules/template-no-positive-tabindex.md create mode 100644 docs/rules/template-no-potential-path-strings.md create mode 100644 docs/rules/template-no-quoteless-attributes.md create mode 100644 docs/rules/template-no-redundant-fn.md create mode 100644 docs/rules/template-no-redundant-landmark-role.md create mode 100644 docs/rules/template-no-redundant-role.md create mode 100644 docs/rules/template-no-restricted-invocations.md create mode 100644 docs/rules/template-no-route-action.md create mode 100644 docs/rules/template-no-scope-outside-table-headings.md create mode 100644 docs/rules/template-no-shadowed-elements.md create mode 100644 docs/rules/template-no-splattributes-with-class.md create mode 100644 docs/rules/template-no-this-in-template-only-components.md create mode 100644 docs/rules/template-no-trailing-spaces.md create mode 100644 docs/rules/template-no-triple-curlies.md create mode 100644 docs/rules/template-no-unavailable-this.md create mode 100644 docs/rules/template-no-unbalanced-curlies.md create mode 100644 docs/rules/template-no-unbound.md create mode 100644 docs/rules/template-no-unknown-arguments-for-builtin-components.md create mode 100644 docs/rules/template-no-unnecessary-component-helper.md create mode 100644 docs/rules/template-no-unnecessary-concat.md create mode 100644 docs/rules/template-no-unnecessary-curly-in-string-attrs.md create mode 100644 docs/rules/template-no-unnecessary-curly-parens.md create mode 100644 docs/rules/template-no-unnecessary-curly-strings.md create mode 100644 docs/rules/template-no-unsupported-role-attributes.md create mode 100644 docs/rules/template-no-unused-block-params.md create mode 100644 docs/rules/template-no-valueless-arguments.md create mode 100644 docs/rules/template-no-whitespace-for-layout.md create mode 100644 docs/rules/template-no-whitespace-within-word.md create mode 100644 docs/rules/template-no-with.md create mode 100644 docs/rules/template-no-yield-block-params-to-else-inverse.md create mode 100644 docs/rules/template-no-yield-only.md create mode 100644 docs/rules/template-no-yield-to-default.md create mode 100644 docs/rules/template-quotes.md create mode 100644 docs/rules/template-require-aria-activedescendant-tabindex.md create mode 100644 docs/rules/template-require-button-type.md create mode 100644 docs/rules/template-require-context-role.md create mode 100644 docs/rules/template-require-each-key.md create mode 100644 docs/rules/template-require-form-method.md create mode 100644 docs/rules/template-require-has-block-helper.md create mode 100644 docs/rules/template-require-iframe-src-attribute.md create mode 100644 docs/rules/template-require-iframe-title.md create mode 100644 docs/rules/template-require-input-label.md create mode 100644 docs/rules/template-require-lang-attribute.md create mode 100644 docs/rules/template-require-mandatory-role-attributes.md create mode 100644 docs/rules/template-require-media-caption.md create mode 100644 docs/rules/template-require-presentational-children.md create mode 100644 docs/rules/template-require-splattributes.md create mode 100644 docs/rules/template-require-strict-mode.md create mode 100644 docs/rules/template-require-valid-alt-text.md create mode 100644 docs/rules/template-require-valid-form-groups.md create mode 100644 docs/rules/template-require-valid-named-block-naming-format.md create mode 100644 docs/rules/template-self-closing-void-elements.md create mode 100644 docs/rules/template-simple-modifiers.md create mode 100644 docs/rules/template-simple-unless.md create mode 100644 docs/rules/template-sort-invocations.md create mode 100644 docs/rules/template-splat-attributes-only.md create mode 100644 docs/rules/template-style-concatenation.md create mode 100644 docs/rules/template-table-groups.md create mode 100644 docs/rules/template-template-length.md create mode 100644 fix-autofix-tests.js delete mode 100644 lib/config-legacy/strict-gjs.js delete mode 100644 lib/config-legacy/strict-gts.js delete mode 100644 lib/config/strict-gjs.js delete mode 100644 lib/config/strict-gts.js create mode 100644 lib/rules/template-no-ambiguous-glimmer-paths.js create mode 100644 lib/rules/template-no-down-event-binding.js create mode 100644 lib/rules/template-no-extra-mut-helpers.js create mode 100644 lib/rules/template-no-form-action.js create mode 100644 lib/rules/template-no-partial.js create mode 100644 lib/rules/template-no-passed-in-event-handlers.js create mode 100644 lib/rules/template-no-positional-data-test-selectors.js create mode 100644 lib/rules/template-no-positive-tabindex.js create mode 100644 lib/rules/template-no-potential-path-strings.js create mode 100644 lib/rules/template-no-quoteless-attributes.js create mode 100644 lib/rules/template-no-redundant-fn.js create mode 100644 lib/rules/template-no-redundant-landmark-role.js create mode 100644 lib/rules/template-no-redundant-role.js create mode 100644 lib/rules/template-no-restricted-invocations.js create mode 100644 lib/rules/template-no-route-action.js create mode 100644 lib/rules/template-no-scope-outside-table-headings.js create mode 100644 lib/rules/template-no-shadowed-elements.js create mode 100644 lib/rules/template-no-splattributes-with-class.js create mode 100644 lib/rules/template-no-this-in-template-only-components.js create mode 100644 lib/rules/template-no-trailing-spaces.js create mode 100644 lib/rules/template-no-triple-curlies.js create mode 100644 lib/rules/template-no-unavailable-this.js create mode 100644 lib/rules/template-no-unbalanced-curlies.js create mode 100644 lib/rules/template-no-unbound.js create mode 100644 lib/rules/template-no-unknown-arguments-for-builtin-components.js create mode 100644 lib/rules/template-no-unnecessary-component-helper.js create mode 100644 lib/rules/template-no-unnecessary-concat.js create mode 100644 lib/rules/template-no-unnecessary-curly-in-string-attrs.js create mode 100644 lib/rules/template-no-unnecessary-curly-parens.js create mode 100644 lib/rules/template-no-unnecessary-curly-strings.js create mode 100644 lib/rules/template-no-unsupported-role-attributes.js create mode 100644 lib/rules/template-no-unused-block-params.js create mode 100644 lib/rules/template-no-valueless-arguments.js create mode 100644 lib/rules/template-no-whitespace-for-layout.js create mode 100644 lib/rules/template-no-whitespace-within-word.js create mode 100644 lib/rules/template-no-with.js create mode 100644 lib/rules/template-no-yield-block-params-to-else-inverse.js create mode 100644 lib/rules/template-no-yield-only.js create mode 100644 lib/rules/template-no-yield-to-default.js create mode 100644 lib/rules/template-quotes.js create mode 100644 lib/rules/template-require-aria-activedescendant-tabindex.js create mode 100644 lib/rules/template-require-button-type.js create mode 100644 lib/rules/template-require-context-role.js create mode 100644 lib/rules/template-require-each-key.js create mode 100644 lib/rules/template-require-form-method.js create mode 100644 lib/rules/template-require-has-block-helper.js create mode 100644 lib/rules/template-require-iframe-src-attribute.js create mode 100644 lib/rules/template-require-iframe-title.js create mode 100644 lib/rules/template-require-input-label.js create mode 100644 lib/rules/template-require-lang-attribute.js create mode 100644 lib/rules/template-require-mandatory-role-attributes.js create mode 100644 lib/rules/template-require-media-caption.js create mode 100644 lib/rules/template-require-presentational-children.js create mode 100644 lib/rules/template-require-splattributes.js create mode 100644 lib/rules/template-require-strict-mode.js create mode 100644 lib/rules/template-require-valid-alt-text.js create mode 100644 lib/rules/template-require-valid-form-groups.js create mode 100644 lib/rules/template-require-valid-named-block-naming-format.js create mode 100644 lib/rules/template-self-closing-void-elements.js create mode 100644 lib/rules/template-simple-modifiers.js create mode 100644 lib/rules/template-simple-unless.js create mode 100644 lib/rules/template-sort-invocations.js create mode 100644 lib/rules/template-splat-attributes-only.js create mode 100644 lib/rules/template-style-concatenation.js create mode 100644 lib/rules/template-table-groups.js create mode 100644 lib/rules/template-template-length.js create mode 100644 scripts/generate-hbs-tests.js create mode 100644 tests/lib/rules/template-no-ambiguous-glimmer-paths.js create mode 100644 tests/lib/rules/template-no-down-event-binding.js create mode 100644 tests/lib/rules/template-no-extra-mut-helpers.js create mode 100644 tests/lib/rules/template-no-form-action.js create mode 100644 tests/lib/rules/template-no-partial.js create mode 100644 tests/lib/rules/template-no-passed-in-event-handlers.js create mode 100644 tests/lib/rules/template-no-positional-data-test-selectors.js create mode 100644 tests/lib/rules/template-no-positive-tabindex.js create mode 100644 tests/lib/rules/template-no-potential-path-strings.js create mode 100644 tests/lib/rules/template-no-quoteless-attributes.js create mode 100644 tests/lib/rules/template-no-redundant-fn.js create mode 100644 tests/lib/rules/template-no-redundant-landmark-role.js create mode 100644 tests/lib/rules/template-no-redundant-role.js create mode 100644 tests/lib/rules/template-no-restricted-invocations.js create mode 100644 tests/lib/rules/template-no-route-action.js create mode 100644 tests/lib/rules/template-no-scope-outside-table-headings.js create mode 100644 tests/lib/rules/template-no-shadowed-elements.js create mode 100644 tests/lib/rules/template-no-splattributes-with-class.js create mode 100644 tests/lib/rules/template-no-this-in-template-only-components.js create mode 100644 tests/lib/rules/template-no-trailing-spaces.js create mode 100644 tests/lib/rules/template-no-triple-curlies.js create mode 100644 tests/lib/rules/template-no-unavailable-this.js create mode 100644 tests/lib/rules/template-no-unbalanced-curlies.js create mode 100644 tests/lib/rules/template-no-unbound.js create mode 100644 tests/lib/rules/template-no-unknown-arguments-for-builtin-components.js create mode 100644 tests/lib/rules/template-no-unnecessary-component-helper.js create mode 100644 tests/lib/rules/template-no-unnecessary-concat.js create mode 100644 tests/lib/rules/template-no-unnecessary-curly-in-string-attrs.js create mode 100644 tests/lib/rules/template-no-unnecessary-curly-parens.js create mode 100644 tests/lib/rules/template-no-unnecessary-curly-strings.js create mode 100644 tests/lib/rules/template-no-unsupported-role-attributes.js create mode 100644 tests/lib/rules/template-no-unused-block-params.js create mode 100644 tests/lib/rules/template-no-valueless-arguments.js create mode 100644 tests/lib/rules/template-no-whitespace-for-layout.js create mode 100644 tests/lib/rules/template-no-whitespace-within-word.js create mode 100644 tests/lib/rules/template-no-with.js create mode 100644 tests/lib/rules/template-no-yield-block-params-to-else-inverse.js create mode 100644 tests/lib/rules/template-no-yield-only.js create mode 100644 tests/lib/rules/template-no-yield-to-default.js create mode 100644 tests/lib/rules/template-quotes.js create mode 100644 tests/lib/rules/template-require-aria-activedescendant-tabindex.js create mode 100644 tests/lib/rules/template-require-button-type.js create mode 100644 tests/lib/rules/template-require-context-role.js create mode 100644 tests/lib/rules/template-require-each-key.js create mode 100644 tests/lib/rules/template-require-form-method.js create mode 100644 tests/lib/rules/template-require-has-block-helper.js create mode 100644 tests/lib/rules/template-require-iframe-src-attribute.js create mode 100644 tests/lib/rules/template-require-iframe-title.js create mode 100644 tests/lib/rules/template-require-input-label.js create mode 100644 tests/lib/rules/template-require-lang-attribute.js create mode 100644 tests/lib/rules/template-require-mandatory-role-attributes.js create mode 100644 tests/lib/rules/template-require-media-caption.js create mode 100644 tests/lib/rules/template-require-presentational-children.js create mode 100644 tests/lib/rules/template-require-splattributes.js create mode 100644 tests/lib/rules/template-require-strict-mode.js create mode 100644 tests/lib/rules/template-require-valid-alt-text.js create mode 100644 tests/lib/rules/template-require-valid-form-groups.js create mode 100644 tests/lib/rules/template-require-valid-named-block-naming-format.js create mode 100644 tests/lib/rules/template-self-closing-void-elements.js create mode 100644 tests/lib/rules/template-simple-modifiers.js create mode 100644 tests/lib/rules/template-simple-unless.js create mode 100644 tests/lib/rules/template-sort-invocations.js create mode 100644 tests/lib/rules/template-splat-attributes-only.js create mode 100644 tests/lib/rules/template-style-concatenation.js create mode 100644 tests/lib/rules/template-table-groups.js create mode 100644 tests/lib/rules/template-template-length.js diff --git a/.gitignore b/.gitignore index bf5ca4ad8d..2a3450e0f1 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,5 @@ npm-debug.log # eslint-remote-tester eslint-remote-tester-results - -# Lock file generated by npm install (project uses pnpm) package-lock.json +.tmp/ diff --git a/CHANGELOG.md b/CHANGELOG.md index aa47025e63..96ce999313 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,18 +2,21 @@ ## Release (2026-01-22) -* eslint-plugin-ember 12.7.6 (patch) +- eslint-plugin-ember 12.7.6 (patch) #### :bug: Bug Fix -* `eslint-plugin-ember` - * [#2363](https://github.com/ember-cli/eslint-plugin-ember/pull/2363) fix: classic-decorator-no-classic-methods matching private identifiers ([@c0rydoras](https://github.com/c0rydoras)) - * [#2364](https://github.com/ember-cli/eslint-plugin-ember/pull/2364) Consider .test.{js|ts|gjs|gts} as a test file pattern ([@lego-technix](https://github.com/lego-technix)) + +- `eslint-plugin-ember` + - [#2363](https://github.com/ember-cli/eslint-plugin-ember/pull/2363) fix: classic-decorator-no-classic-methods matching private identifiers ([@c0rydoras](https://github.com/c0rydoras)) + - [#2364](https://github.com/ember-cli/eslint-plugin-ember/pull/2364) Consider .test.{js|ts|gjs|gts} as a test file pattern ([@lego-technix](https://github.com/lego-technix)) #### :house: Internal -* `eslint-plugin-ember` - * [#2334](https://github.com/ember-cli/eslint-plugin-ember/pull/2334) pnpm dlx create-release-plan-setup@latest --update ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + +- `eslint-plugin-ember` + - [#2334](https://github.com/ember-cli/eslint-plugin-ember/pull/2334) pnpm dlx create-release-plan-setup@latest --update ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) #### Committers: 3 + - Arthur ([@c0rydoras](https://github.com/c0rydoras)) - LEGO Technix ([@lego-technix](https://github.com/lego-technix)) - [@NullVoxPopuli](https://github.com/NullVoxPopuli) @@ -23,10 +26,12 @@ eslint-plugin-ember 12.7.5 (patch) #### :bug: Bug Fix -* `eslint-plugin-ember` - * [#2349](https://github.com/ember-cli/eslint-plugin-ember/pull/2349) fix: allow decorated template-tag-only classes ([@CvX](https://github.com/CvX)) + +- `eslint-plugin-ember` + - [#2349](https://github.com/ember-cli/eslint-plugin-ember/pull/2349) fix: allow decorated template-tag-only classes ([@CvX](https://github.com/CvX)) #### Committers: 1 + - Jarek Radosz ([@CvX](https://github.com/CvX)) ## Release (2025-09-14) @@ -34,14 +39,17 @@ eslint-plugin-ember 12.7.5 (patch) eslint-plugin-ember 12.7.4 (patch) #### :bug: Bug Fix -* `eslint-plugin-ember` - * [#2331](https://github.com/ember-cli/eslint-plugin-ember/pull/2331) fix: Ignore `findBy` calls from `ember-cli-mirage` in `no-array-prototype-extensions` ([@VasylMarchuk](https://github.com/VasylMarchuk)) + +- `eslint-plugin-ember` + - [#2331](https://github.com/ember-cli/eslint-plugin-ember/pull/2331) fix: Ignore `findBy` calls from `ember-cli-mirage` in `no-array-prototype-extensions` ([@VasylMarchuk](https://github.com/VasylMarchuk)) #### :house: Internal -* `eslint-plugin-ember` - * [#2332](https://github.com/ember-cli/eslint-plugin-ember/pull/2332) chore: try actions/setup-node before pnpm/action-setup ([@bmish](https://github.com/bmish)) + +- `eslint-plugin-ember` + - [#2332](https://github.com/ember-cli/eslint-plugin-ember/pull/2332) chore: try actions/setup-node before pnpm/action-setup ([@bmish](https://github.com/bmish)) #### Committers: 2 + - Bryan Mishkin ([@bmish](https://github.com/bmish)) - Vasyl Marchuk ([@VasylMarchuk](https://github.com/VasylMarchuk)) @@ -50,10 +58,12 @@ eslint-plugin-ember 12.7.4 (patch) eslint-plugin-ember 12.7.3 (patch) #### :house: Internal -* `eslint-plugin-ember` - * [#2323](https://github.com/ember-cli/eslint-plugin-ember/pull/2323) chore: add npm provenance to publishing (second attempt) ([@bmish](https://github.com/bmish)) + +- `eslint-plugin-ember` + - [#2323](https://github.com/ember-cli/eslint-plugin-ember/pull/2323) chore: add npm provenance to publishing (second attempt) ([@bmish](https://github.com/bmish)) #### Committers: 1 + - Bryan Mishkin ([@bmish](https://github.com/bmish)) ## Release (2025-08-22) @@ -61,10 +71,12 @@ eslint-plugin-ember 12.7.3 (patch) eslint-plugin-ember 12.7.2 (patch) #### :house: Internal -* `eslint-plugin-ember` - * [#2321](https://github.com/ember-cli/eslint-plugin-ember/pull/2321) chore: add npm provenance to publishing ([@bmish](https://github.com/bmish)) + +- `eslint-plugin-ember` + - [#2321](https://github.com/ember-cli/eslint-plugin-ember/pull/2321) chore: add npm provenance to publishing ([@bmish](https://github.com/bmish)) #### Committers: 1 + - Bryan Mishkin ([@bmish](https://github.com/bmish)) ## Release (2025-08-22) @@ -72,15 +84,18 @@ eslint-plugin-ember 12.7.2 (patch) eslint-plugin-ember 12.7.1 (patch) #### :bug: Bug Fix -* `eslint-plugin-ember` - * [#2320](https://github.com/ember-cli/eslint-plugin-ember/pull/2320) fix: `no-array-prototype-extensions` rule to lint against `setObjects()` ([@MrChocolatine](https://github.com/MrChocolatine)) - * [#2315](https://github.com/ember-cli/eslint-plugin-ember/pull/2315) fix: no-runloop: catch namespace imports ([@Geodewd549](https://github.com/Geodewd549)) + +- `eslint-plugin-ember` + - [#2320](https://github.com/ember-cli/eslint-plugin-ember/pull/2320) fix: `no-array-prototype-extensions` rule to lint against `setObjects()` ([@MrChocolatine](https://github.com/MrChocolatine)) + - [#2315](https://github.com/ember-cli/eslint-plugin-ember/pull/2315) fix: no-runloop: catch namespace imports ([@Geodewd549](https://github.com/Geodewd549)) #### :memo: Documentation -* `eslint-plugin-ember` - * [#2313](https://github.com/ember-cli/eslint-plugin-ember/pull/2313) Remove name from CHANGELOG ([@rmachielse](https://github.com/rmachielse)) + +- `eslint-plugin-ember` + - [#2313](https://github.com/ember-cli/eslint-plugin-ember/pull/2313) Remove name from CHANGELOG ([@rmachielse](https://github.com/rmachielse)) #### Committers: 3 + - Richard ([@rmachielse](https://github.com/rmachielse)) - [@Geodewd549](https://github.com/Geodewd549) - [@MrChocolatine](https://github.com/MrChocolatine) @@ -90,14 +105,17 @@ eslint-plugin-ember 12.7.1 (patch) eslint-plugin-ember 12.7.0 (minor) #### :rocket: Enhancement -* `eslint-plugin-ember` - * [#2282](https://github.com/ember-cli/eslint-plugin-ember/pull/2282) Add no-builtin-form-components rule ([@wagenet](https://github.com/wagenet)) + +- `eslint-plugin-ember` + - [#2282](https://github.com/ember-cli/eslint-plugin-ember/pull/2282) Add no-builtin-form-components rule ([@wagenet](https://github.com/wagenet)) #### :bug: Bug Fix -* `eslint-plugin-ember` - * [#2308](https://github.com/ember-cli/eslint-plugin-ember/pull/2308) fix: disallow extra properties in rule options ([@andreww2012](https://github.com/andreww2012)) + +- `eslint-plugin-ember` + - [#2308](https://github.com/ember-cli/eslint-plugin-ember/pull/2308) fix: disallow extra properties in rule options ([@andreww2012](https://github.com/andreww2012)) #### Committers: 2 + - Andrew Kazakov ([@andreww2012](https://github.com/andreww2012)) - Peter Wagenet ([@wagenet](https://github.com/wagenet)) @@ -106,10 +124,12 @@ eslint-plugin-ember 12.7.0 (minor) eslint-plugin-ember 12.6.0 (minor) #### :rocket: Enhancement -* `eslint-plugin-ember` - * [#2306](https://github.com/ember-cli/eslint-plugin-ember/pull/2306) Add names for the eslint-inspector ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + +- `eslint-plugin-ember` + - [#2306](https://github.com/ember-cli/eslint-plugin-ember/pull/2306) Add names for the eslint-inspector ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) #### Committers: 1 + - [@NullVoxPopuli](https://github.com/NullVoxPopuli) ## Release (2025-01-30) @@ -117,14 +137,17 @@ eslint-plugin-ember 12.6.0 (minor) eslint-plugin-ember 12.5.0 (minor) #### :rocket: Enhancement -* `eslint-plugin-ember` - * [#2251](https://github.com/ember-cli/eslint-plugin-ember/pull/2251) Force bump the parser to latest, 0.5.9 ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + +- `eslint-plugin-ember` + - [#2251](https://github.com/ember-cli/eslint-plugin-ember/pull/2251) Force bump the parser to latest, 0.5.9 ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) #### :house: Internal -* `eslint-plugin-ember` - * [#2252](https://github.com/ember-cli/eslint-plugin-ember/pull/2252) Prepare Release ([@github-actions[bot]](https://github.com/apps/github-actions)) + +- `eslint-plugin-ember` + - [#2252](https://github.com/ember-cli/eslint-plugin-ember/pull/2252) Prepare Release ([@github-actions[bot]](https://github.com/apps/github-actions)) #### Committers: 2 + - [@NullVoxPopuli](https://github.com/NullVoxPopuli) - [@github-actions[bot]](https://github.com/apps/github-actions) @@ -133,10 +156,12 @@ eslint-plugin-ember 12.5.0 (minor) eslint-plugin-ember 12.4.0 (minor) #### :rocket: Enhancement -* `eslint-plugin-ember` - * [#2251](https://github.com/ember-cli/eslint-plugin-ember/pull/2251) Force bump the parser to latest, 0.5.9 ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + +- `eslint-plugin-ember` + - [#2251](https://github.com/ember-cli/eslint-plugin-ember/pull/2251) Force bump the parser to latest, 0.5.9 ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) #### Committers: 1 + - [@NullVoxPopuli](https://github.com/NullVoxPopuli) ## Release (2024-11-22) @@ -144,10 +169,12 @@ eslint-plugin-ember 12.4.0 (minor) eslint-plugin-ember 12.3.3 (patch) #### :bug: Bug Fix -* `eslint-plugin-ember` - * [#2220](https://github.com/ember-cli/eslint-plugin-ember/pull/2220) Bump minimum parser version (fixes SVGs, MathML, custom-elements) ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + +- `eslint-plugin-ember` + - [#2220](https://github.com/ember-cli/eslint-plugin-ember/pull/2220) Bump minimum parser version (fixes SVGs, MathML, custom-elements) ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) #### Committers: 1 + - [@NullVoxPopuli](https://github.com/NullVoxPopuli) ## Release (2024-11-21) @@ -155,10 +182,12 @@ eslint-plugin-ember 12.3.3 (patch) eslint-plugin-ember 12.3.2 (patch) #### :bug: Bug Fix -* `eslint-plugin-ember` - * [#2216](https://github.com/ember-cli/eslint-plugin-ember/pull/2216) upgrade parser ([@patricklx](https://github.com/patricklx)) + +- `eslint-plugin-ember` + - [#2216](https://github.com/ember-cli/eslint-plugin-ember/pull/2216) upgrade parser ([@patricklx](https://github.com/patricklx)) #### Committers: 1 + - Patrick Pircher ([@patricklx](https://github.com/patricklx)) ## Release (2024-10-25) @@ -166,10 +195,12 @@ eslint-plugin-ember 12.3.2 (patch) eslint-plugin-ember 12.3.1 (patch) #### :bug: Bug Fix -* `eslint-plugin-ember` - * [#2200](https://github.com/ember-cli/eslint-plugin-ember/pull/2200) Fix no-component-lifecycle-hook in double extended classic component ([@wagenet](https://github.com/wagenet)) + +- `eslint-plugin-ember` + - [#2200](https://github.com/ember-cli/eslint-plugin-ember/pull/2200) Fix no-component-lifecycle-hook in double extended classic component ([@wagenet](https://github.com/wagenet)) #### Committers: 1 + - Peter Wagenet ([@wagenet](https://github.com/wagenet)) ## Release (2024-10-23) @@ -177,983 +208,1105 @@ eslint-plugin-ember 12.3.1 (patch) eslint-plugin-ember 12.3.0 (minor) #### :rocket: Enhancement -* `eslint-plugin-ember` - * [#2191](https://github.com/ember-cli/eslint-plugin-ember/pull/2191) Provide better gjs/gts config support for eslint 9 ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + +- `eslint-plugin-ember` + - [#2191](https://github.com/ember-cli/eslint-plugin-ember/pull/2191) Provide better gjs/gts config support for eslint 9 ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) #### :bug: Bug Fix -* `eslint-plugin-ember` - * [#2195](https://github.com/ember-cli/eslint-plugin-ember/pull/2195) fix: Typo in error message ([@HeroicEric](https://github.com/HeroicEric)) + +- `eslint-plugin-ember` + - [#2195](https://github.com/ember-cli/eslint-plugin-ember/pull/2195) fix: Typo in error message ([@HeroicEric](https://github.com/HeroicEric)) #### :house: Internal -* `eslint-plugin-ember` - * [#2198](https://github.com/ember-cli/eslint-plugin-ember/pull/2198) Switch away from release-it to release-plan ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) - * [#2196](https://github.com/ember-cli/eslint-plugin-ember/pull/2196) Switch to pnpm + vitest (away from yarn @ 1 and jest) ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + +- `eslint-plugin-ember` + - [#2198](https://github.com/ember-cli/eslint-plugin-ember/pull/2198) Switch away from release-it to release-plan ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + - [#2196](https://github.com/ember-cli/eslint-plugin-ember/pull/2196) Switch to pnpm + vitest (away from yarn @ 1 and jest) ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) #### Committers: 2 + - Eric Kelly ([@HeroicEric](https://github.com/HeroicEric)) - [@NullVoxPopuli](https://github.com/NullVoxPopuli) - - - - - - - - - ## v12.2.1 (2024-09-25) #### :bug: Bug Fix -* [#2163](https://github.com/ember-cli/eslint-plugin-ember/pull/2163) Bump the parser ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) -* [#2162](https://github.com/ember-cli/eslint-plugin-ember/pull/2162) Allow imports from `ember-data/store` ([@Windvis](https://github.com/Windvis)) + +- [#2163](https://github.com/ember-cli/eslint-plugin-ember/pull/2163) Bump the parser ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) +- [#2162](https://github.com/ember-cli/eslint-plugin-ember/pull/2162) Allow imports from `ember-data/store` ([@Windvis](https://github.com/Windvis)) #### Committers: 2 + - Sam Van Campenhout ([@Windvis](https://github.com/Windvis)) - [@NullVoxPopuli](https://github.com/NullVoxPopuli) ## v12.2.0 (2024-08-17) #### :rocket: Enhancement -* [#2155](https://github.com/ember-cli/eslint-plugin-ember/pull/2155) Add new ember-data rule: `require-async-inverse-relationship` ([@wozny1989](https://github.com/wozny1989)) -* [#2157](https://github.com/ember-cli/eslint-plugin-ember/pull/2157) Consider `_test.{js|ts|gjs|gts}` as test file. ([@HEYGUL](https://github.com/HEYGUL)) + +- [#2155](https://github.com/ember-cli/eslint-plugin-ember/pull/2155) Add new ember-data rule: `require-async-inverse-relationship` ([@wozny1989](https://github.com/wozny1989)) +- [#2157](https://github.com/ember-cli/eslint-plugin-ember/pull/2157) Consider `_test.{js|ts|gjs|gts}` as test file. ([@HEYGUL](https://github.com/HEYGUL)) #### :bug: Bug Fix -* [#2159](https://github.com/ember-cli/eslint-plugin-ember/pull/2159) Fix deprecation blocking eslint v9 ([@LucasHill](https://github.com/LucasHill)) -* [#2151](https://github.com/ember-cli/eslint-plugin-ember/pull/2151) Fix false positive error for `no-runloop` ([@mkszepp](https://github.com/mkszepp)) + +- [#2159](https://github.com/ember-cli/eslint-plugin-ember/pull/2159) Fix deprecation blocking eslint v9 ([@LucasHill](https://github.com/LucasHill)) +- [#2151](https://github.com/ember-cli/eslint-plugin-ember/pull/2151) Fix false positive error for `no-runloop` ([@mkszepp](https://github.com/mkszepp)) #### :house: Internal -* [#2153](https://github.com/ember-cli/eslint-plugin-ember/pull/2153) Fix API deprecations blocking eslint v9 compatibility ([@LucasHill](https://github.com/LucasHill)) + +- [#2153](https://github.com/ember-cli/eslint-plugin-ember/pull/2153) Fix API deprecations blocking eslint v9 compatibility ([@LucasHill](https://github.com/LucasHill)) #### Committers: 4 + - Adam Woźny ([@wozny1989](https://github.com/wozny1989)) - GUL ([@HEYGUL](https://github.com/HEYGUL)) - Lucas Hill ([@LucasHill](https://github.com/LucasHill)) - Markus Sanin ([@mkszepp](https://github.com/mkszepp)) - ## v12.1.1 (2024-05-21) #### :bug: Bug Fix -* [#2149](https://github.com/ember-cli/eslint-plugin-ember/pull/2149) Bump parser version ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) -* [#2148](https://github.com/ember-cli/eslint-plugin-ember/pull/2148) fix test after parser update, resolves #2118 ([@patricklx](https://github.com/patricklx)) -* [#2147](https://github.com/ember-cli/eslint-plugin-ember/pull/2147) fix isTestFile - test-aware lints were not correctly identifying gjs and gts tests and test files ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + +- [#2149](https://github.com/ember-cli/eslint-plugin-ember/pull/2149) Bump parser version ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) +- [#2148](https://github.com/ember-cli/eslint-plugin-ember/pull/2148) fix test after parser update, resolves #2118 ([@patricklx](https://github.com/patricklx)) +- [#2147](https://github.com/ember-cli/eslint-plugin-ember/pull/2147) fix isTestFile - test-aware lints were not correctly identifying gjs and gts tests and test files ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) #### Committers: 1 -- [@NullVoxPopuli](https://github.com/NullVoxPopuli) +- [@NullVoxPopuli](https://github.com/NullVoxPopuli) ## v12.1.0 (2024-05-14) #### :rocket: Enhancement -* [#2117](https://github.com/ember-cli/eslint-plugin-ember/pull/2117) update ember eslint parser ([@patricklx](https://github.com/patricklx)) + +- [#2117](https://github.com/ember-cli/eslint-plugin-ember/pull/2117) update ember eslint parser ([@patricklx](https://github.com/patricklx)) #### :bug: Bug Fix -* [#2107](https://github.com/ember-cli/eslint-plugin-ember/pull/2107) include recommended ts-eslint rules for gts ([@patricklx](https://github.com/patricklx)) + +- [#2107](https://github.com/ember-cli/eslint-plugin-ember/pull/2107) include recommended ts-eslint rules for gts ([@patricklx](https://github.com/patricklx)) #### :memo: Documentation -* [#2142](https://github.com/ember-cli/eslint-plugin-ember/pull/2142) Fix spread operator sample in `no-array-prototype-extensions` rule doc ([@mkszepp](https://github.com/mkszepp)) + +- [#2142](https://github.com/ember-cli/eslint-plugin-ember/pull/2142) Fix spread operator sample in `no-array-prototype-extensions` rule doc ([@mkszepp](https://github.com/mkszepp)) #### Committers: 2 + - Markus Sanin ([@mkszepp](https://github.com/mkszepp)) - Patrick Pircher ([@patricklx](https://github.com/patricklx)) ## v12.0.2 (2024-02-15) #### :bug: Bug Fix -* [#2092](https://github.com/ember-cli/eslint-plugin-ember/pull/2092) Fix flat config for gts/gjs and `noop` parser name ([@bmish](https://github.com/bmish)) -* [#2091](https://github.com/ember-cli/eslint-plugin-ember/pull/2091) Upgrade ember-eslint-parser to 0.3.6 ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) + +- [#2092](https://github.com/ember-cli/eslint-plugin-ember/pull/2092) Fix flat config for gts/gjs and `noop` parser name ([@bmish](https://github.com/bmish)) +- [#2091](https://github.com/ember-cli/eslint-plugin-ember/pull/2091) Upgrade ember-eslint-parser to 0.3.6 ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) #### :house: Internal -* [#2093](https://github.com/ember-cli/eslint-plugin-ember/pull/2093) Update linting ([@bmish](https://github.com/bmish)) + +- [#2093](https://github.com/ember-cli/eslint-plugin-ember/pull/2093) Update linting ([@bmish](https://github.com/bmish)) #### Committers: 2 + - Bryan Mishkin ([@bmish](https://github.com/bmish)) - [@NullVoxPopuli](https://github.com/NullVoxPopuli) - ## v12.0.1 (2024-02-13) #### :bug: Bug Fix -* [#2071](https://github.com/ember-cli/eslint-plugin-ember/pull/2071) Fix nested classes case in `no-ember-super-in-es-classes` ([@CvX](https://github.com/CvX)) + +- [#2071](https://github.com/ember-cli/eslint-plugin-ember/pull/2071) Fix nested classes case in `no-ember-super-in-es-classes` ([@CvX](https://github.com/CvX)) #### :memo: Documentation -* [#2088](https://github.com/ember-cli/eslint-plugin-ember/pull/2088) add doc about gts imports in ts files ([@patricklx](https://github.com/patricklx)) -* [#2068](https://github.com/ember-cli/eslint-plugin-ember/pull/2068) add `plugin:@typescript-eslint/recommended` to readme for GTS ([@evoactivity](https://github.com/evoactivity)) + +- [#2088](https://github.com/ember-cli/eslint-plugin-ember/pull/2088) add doc about gts imports in ts files ([@patricklx](https://github.com/patricklx)) +- [#2068](https://github.com/ember-cli/eslint-plugin-ember/pull/2068) add `plugin:@typescript-eslint/recommended` to readme for GTS ([@evoactivity](https://github.com/evoactivity)) #### :house: Internal -* [#2090](https://github.com/ember-cli/eslint-plugin-ember/pull/2090) Refresh lockfile ([@bmish](https://github.com/bmish)) + +- [#2090](https://github.com/ember-cli/eslint-plugin-ember/pull/2090) Refresh lockfile ([@bmish](https://github.com/bmish)) #### Committers: 4 + - Bryan Mishkin ([@bmish](https://github.com/bmish)) - Jarek Radosz ([@CvX](https://github.com/CvX)) - Liam Potter ([@evoactivity](https://github.com/evoactivity)) - Patrick Pircher ([@patricklx](https://github.com/patricklx)) - ## v12.0.0 (2024-01-13) #### :boom: Breaking Change -* [#1962](https://github.com/ember-cli/eslint-plugin-ember/pull/1962) Drop support for Node 14, 16, 19 ([@patricklx](https://github.com/patricklx)) -* [#1963](https://github.com/ember-cli/eslint-plugin-ember/pull/1963) Add new `recommended` rules: `no-at-ember-render-modifiers`, `no-deprecated-router-transition-methods`, `no-implicit-injections`, `no-runloop`, `no-tracked-properties-from-args`, ([@patricklx](https://github.com/patricklx)) -* [#1977](https://github.com/ember-cli/eslint-plugin-ember/pull/1977) Add new `recommended` rule: `template-no-let-reference` ([@bmish](https://github.com/bmish)) -* [#1981](https://github.com/ember-cli/eslint-plugin-ember/pull/1981) Add `template-no-let-reference` rule to `recommended-gjs` and `recommended-gts` configs ([@patricklx](https://github.com/patricklx)) -* [#1967](https://github.com/ember-cli/eslint-plugin-ember/pull/1967) Drop support for ESLint 7 ([@bmish](https://github.com/bmish)) -* [#1978](https://github.com/ember-cli/eslint-plugin-ember/pull/1978) Set config `ecmaVersion` to `2022` ([@bmish](https://github.com/bmish)) -* [#1965](https://github.com/ember-cli/eslint-plugin-ember/pull/1965) Change `useAt` option default to `true` at in `no-get` rule ([@patricklx](https://github.com/patricklx)) -* [#2028](https://github.com/ember-cli/eslint-plugin-ember/pull/2028) Move gjs/gts parser to `ember-eslint-parser` library ([@NullVoxPopuli](https://github.com/NullVoxPopuli)) - -#### :rocket: Enhancement -* [#1939](https://github.com/ember-cli/eslint-plugin-ember/pull/1939) Add new rule `template-no-let-reference` ([@patricklx](https://github.com/patricklx)) -* [#1943](https://github.com/ember-cli/eslint-plugin-ember/pull/1943) Add new rule `template-indent` ([@patricklx](https://github.com/patricklx)) -* [#1971](https://github.com/ember-cli/eslint-plugin-ember/pull/1971) Add template block comment eslint directives ([@patricklx](https://github.com/patricklx)) -* [#1944](https://github.com/ember-cli/eslint-plugin-ember/pull/1944) Add gts/gjs configs ([@patricklx](https://github.com/patricklx)) -* [#1942](https://github.com/ember-cli/eslint-plugin-ember/pull/1942) Use custom parser for gts/gjs ([@patricklx](https://github.com/patricklx)) -* [#1975](https://github.com/ember-cli/eslint-plugin-ember/pull/1975) Update almost all dependencies ([@bmish](https://github.com/bmish)) -* [#1984](https://github.com/ember-cli/eslint-plugin-ember/pull/1984) Update `@typescript-eslint/` dependencies to v6 ([@patricklx](https://github.com/patricklx)) -* [#2020](https://github.com/ember-cli/eslint-plugin-ember/pull/2020) Support ESLint flat config ([@bmish](https://github.com/bmish)) - -#### :bug: Bug Fix -* [#1994](https://github.com/ember-cli/eslint-plugin-ember/pull/1994) [gjs/gts parser] fix locations for ast after templates ([@patricklx](https://github.com/patricklx)) -* [#1992](https://github.com/ember-cli/eslint-plugin-ember/pull/1992) [gjs/gts parser] fix references for tags with a dot & non standard html tags ([@patricklx](https://github.com/patricklx)) -* [#1996](https://github.com/ember-cli/eslint-plugin-ember/pull/1996) [gjs/gts parser] fix type aware linting when using ts+gts files ([@patricklx](https://github.com/patricklx)) -* [#2005](https://github.com/ember-cli/eslint-plugin-ember/pull/2005) [gjs/gts parser] fix parsing when there are multiple default `