master 83b312831132 cached
827 files
3.6 MB
997.2k tokens
1294 symbols
1 requests
Download .txt
Showing preview only (3,993K chars total). Download the full file or copy to clipboard to get everything.
Repository: ember-cli/eslint-plugin-ember
Branch: master
Commit: 83b312831132
Files: 827
Total size: 3.6 MB

Directory structure:
gitextract_oxynmjan/

├── .babelrc
├── .editorconfig
├── .eslint-doc-generatorrc.js
├── .gitattributes
├── .github/
│   ├── renovate.json5
│   └── workflows/
│       ├── bench-compare.yml
│       ├── ci.yml
│       ├── codeql-analysis.yml
│       ├── plan-release.yml
│       └── publish.yml
├── .gitignore
├── .markdownlint.json
├── .markdownlintignore
├── .npmpackagejsonlintrc.json
├── .npmrc
├── .prettierignore
├── .prettierrc.js
├── .release-plan.json
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── RELEASE.md
├── docs/
│   └── rules/
│       ├── _TEMPLATE_.md
│       ├── alias-model-in-controller.md
│       ├── avoid-leaking-state-in-ember-objects.md
│       ├── avoid-using-needs-in-controllers.md
│       ├── classic-decorator-hooks.md
│       ├── classic-decorator-no-classic-methods.md
│       ├── closure-actions.md
│       ├── computed-property-getters.md
│       ├── jquery-ember-run.md
│       ├── named-functions-in-promises.md
│       ├── new-module-imports.md
│       ├── no-actions-hash.md
│       ├── no-array-prototype-extensions.md
│       ├── no-arrow-function-computed-properties.md
│       ├── no-assignment-of-untracked-properties-used-in-tracking-contexts.md
│       ├── no-at-ember-render-modifiers.md
│       ├── no-attrs-in-components.md
│       ├── no-attrs-snapshot.md
│       ├── no-builtin-form-components.md
│       ├── no-capital-letters-in-routes.md
│       ├── no-classic-classes.md
│       ├── no-classic-components.md
│       ├── no-component-lifecycle-hooks.md
│       ├── no-computed-properties-in-native-classes.md
│       ├── no-controller-access-in-routes.md
│       ├── no-controllers.md
│       ├── no-current-route-name.md
│       ├── no-deeply-nested-dependent-keys-with-each.md
│       ├── no-deprecated-router-transition-methods.md
│       ├── no-duplicate-dependent-keys.md
│       ├── no-ember-super-in-es-classes.md
│       ├── no-ember-testing-in-module-scope.md
│       ├── no-empty-attrs.md
│       ├── no-empty-glimmer-component-classes.md
│       ├── no-function-prototype-extensions.md
│       ├── no-get-with-default.md
│       ├── no-get.md
│       ├── no-global-jquery.md
│       ├── no-html-safe.md
│       ├── no-implicit-injections.md
│       ├── no-implicit-service-injection-argument.md
│       ├── no-incorrect-calls-with-inline-anonymous-functions.md
│       ├── no-incorrect-computed-macros.md
│       ├── no-invalid-debug-function-arguments.md
│       ├── no-invalid-dependent-keys.md
│       ├── no-invalid-test-waiters.md
│       ├── no-jquery.md
│       ├── no-legacy-test-waiters.md
│       ├── no-mixins.md
│       ├── no-modifier-argument-destructuring.md
│       ├── no-new-mixins.md
│       ├── no-noop-setup-on-error-in-before.md
│       ├── no-observers.md
│       ├── no-old-shims.md
│       ├── no-on-calls-in-components.md
│       ├── no-pause-test.md
│       ├── no-private-routing-service.md
│       ├── no-proxies.md
│       ├── no-replace-test-comments.md
│       ├── no-restricted-property-modifications.md
│       ├── no-restricted-resolver-tests.md
│       ├── no-restricted-service-injections.md
│       ├── no-runloop.md
│       ├── no-settled-after-test-helper.md
│       ├── no-shadow-route-definition.md
│       ├── no-side-effects.md
│       ├── no-string-prototype-extensions.md
│       ├── no-test-and-then.md
│       ├── no-test-import-export.md
│       ├── no-test-module-for.md
│       ├── no-test-support-import.md
│       ├── no-test-this-render.md
│       ├── no-tracked-built-ins.md
│       ├── no-tracked-properties-from-args.md
│       ├── no-try-invoke.md
│       ├── no-unnecessary-index-route.md
│       ├── no-unnecessary-route-path-option.md
│       ├── no-unnecessary-service-injection-argument.md
│       ├── no-unused-services.md
│       ├── no-volatile-computed-properties.md
│       ├── order-in-components.md
│       ├── order-in-controllers.md
│       ├── order-in-models.md
│       ├── order-in-routes.md
│       ├── prefer-ember-test-helpers.md
│       ├── require-async-inverse-relationship.md
│       ├── require-computed-macros.md
│       ├── require-computed-property-dependencies.md
│       ├── require-fetch-import.md
│       ├── require-return-from-computed.md
│       ├── require-super-in-lifecycle-hooks.md
│       ├── require-tagless-components.md
│       ├── require-valid-css-selector-in-test-helpers.md
│       ├── route-path-style.md
│       ├── routes-segments-snake-case.md
│       ├── template-attribute-indentation.md
│       ├── template-attribute-order.md
│       ├── template-block-indentation.md
│       ├── template-builtin-component-arguments.md
│       ├── template-deprecated-inline-view-helper.md
│       ├── template-deprecated-render-helper.md
│       ├── template-eol-last.md
│       ├── template-linebreak-style.md
│       ├── template-link-href-attributes.md
│       ├── template-link-rel-noopener.md
│       ├── template-modifier-name-case.md
│       ├── template-no-abstract-roles.md
│       ├── template-no-accesskey-attribute.md
│       ├── template-no-action-modifiers.md
│       ├── template-no-action-on-submit-button.md
│       ├── template-no-action.md
│       ├── template-no-args-paths.md
│       ├── template-no-arguments-for-html-elements.md
│       ├── template-no-aria-hidden-body.md
│       ├── template-no-aria-unsupported-elements.md
│       ├── template-no-array-prototype-extensions.md
│       ├── template-no-at-ember-render-modifiers.md
│       ├── template-no-attrs-in-components.md
│       ├── template-no-autofocus-attribute.md
│       ├── template-no-bare-strings.md
│       ├── template-no-bare-yield.md
│       ├── template-no-block-params-for-html-elements.md
│       ├── template-no-builtin-form-components.md
│       ├── template-no-capital-arguments.md
│       ├── template-no-chained-this.md
│       ├── template-no-class-bindings.md
│       ├── template-no-curly-component-invocation.md
│       ├── template-no-debugger.md
│       ├── template-no-deprecated.md
│       ├── template-no-duplicate-attributes.md
│       ├── template-no-duplicate-id.md
│       ├── template-no-duplicate-landmark-elements.md
│       ├── template-no-dynamic-subexpression-invocations.md
│       ├── template-no-element-event-actions.md
│       ├── template-no-empty-headings.md
│       ├── template-no-extra-mut-helper-argument.md
│       ├── template-no-forbidden-elements.md
│       ├── template-no-heading-inside-button.md
│       ├── template-no-html-comments.md
│       ├── template-no-implicit-this.md
│       ├── template-no-index-component-invocation.md
│       ├── template-no-inline-event-handlers.md
│       ├── template-no-inline-linkto.md
│       ├── template-no-inline-styles.md
│       ├── template-no-input-block.md
│       ├── template-no-input-tagname.md
│       ├── template-no-invalid-aria-attributes.md
│       ├── template-no-invalid-interactive.md
│       ├── template-no-invalid-link-text.md
│       ├── template-no-invalid-link-title.md
│       ├── template-no-invalid-meta.md
│       ├── template-no-invalid-role.md
│       ├── template-no-jsx-attributes.md
│       ├── template-no-let-reference.md
│       ├── template-no-link-to-positional-params.md
│       ├── template-no-link-to-tagname.md
│       ├── template-no-log.md
│       ├── template-no-model-argument-in-route-templates.md
│       ├── template-no-multiple-empty-lines.md
│       ├── template-no-mut-helper.md
│       ├── template-no-negated-condition.md
│       ├── template-no-nested-interactive.md
│       ├── template-no-nested-landmark.md
│       ├── template-no-nested-splattributes.md
│       ├── template-no-obscure-array-access.md
│       ├── template-no-obsolete-elements.md
│       ├── template-no-only-default-slot.md
│       ├── template-no-outlet-outside-routes.md
│       ├── template-no-page-title-component.md
│       ├── template-no-passed-in-event-handlers.md
│       ├── template-no-pointer-down-event-binding.md
│       ├── template-no-positional-data-test-selectors.md
│       ├── template-no-positive-tabindex.md
│       ├── template-no-potential-path-strings.md
│       ├── template-no-quoteless-attributes.md
│       ├── template-no-redundant-fn.md
│       ├── template-no-redundant-role.md
│       ├── template-no-restricted-invocations.md
│       ├── template-no-route-action.md
│       ├── template-no-scope-outside-table-headings.md
│       ├── template-no-shadowed-elements.md
│       ├── template-no-splattributes-with-class.md
│       ├── template-no-this-in-template-only-components.md
│       ├── template-no-trailing-spaces.md
│       ├── template-no-triple-curlies.md
│       ├── template-no-unavailable-this.md
│       ├── template-no-unbalanced-curlies.md
│       ├── template-no-unbound.md
│       ├── template-no-unknown-arguments-for-builtin-components.md
│       ├── template-no-unnecessary-component-helper.md
│       ├── template-no-unnecessary-concat.md
│       ├── template-no-unnecessary-curly-parens.md
│       ├── template-no-unnecessary-curly-strings.md
│       ├── template-no-unsupported-role-attributes.md
│       ├── template-no-unused-block-params.md
│       ├── template-no-valueless-arguments.md
│       ├── template-no-whitespace-for-layout.md
│       ├── template-no-whitespace-within-word.md
│       ├── template-no-with.md
│       ├── template-no-yield-block-params-to-else-inverse.md
│       ├── template-no-yield-only.md
│       ├── template-no-yield-to-default.md
│       ├── template-quotes.md
│       ├── template-require-aria-activedescendant-tabindex.md
│       ├── template-require-button-type.md
│       ├── template-require-context-role.md
│       ├── template-require-each-key.md
│       ├── template-require-form-method.md
│       ├── template-require-has-block-helper.md
│       ├── template-require-iframe-src-attribute.md
│       ├── template-require-iframe-title.md
│       ├── template-require-input-label.md
│       ├── template-require-input-type.md
│       ├── template-require-lang-attribute.md
│       ├── template-require-mandatory-role-attributes.md
│       ├── template-require-media-caption.md
│       ├── template-require-presentational-children.md
│       ├── template-require-splattributes.md
│       ├── template-require-strict-mode.md
│       ├── template-require-valid-alt-text.md
│       ├── template-require-valid-form-groups.md
│       ├── template-require-valid-named-block-naming-format.md
│       ├── template-self-closing-void-elements.md
│       ├── template-simple-modifiers.md
│       ├── template-simple-unless.md
│       ├── template-sort-invocations.md
│       ├── template-splat-attributes-only.md
│       ├── template-style-concatenation.md
│       ├── template-table-groups.md
│       ├── template-template-length.md
│       ├── use-brace-expansion.md
│       ├── use-ember-data-rfc-395-imports.md
│       └── use-ember-get-and-set.md
├── eslint-remote-tester.config.js
├── eslint.config.js
├── lib/
│   ├── config/
│   │   ├── base.js
│   │   ├── recommended-gjs.js
│   │   ├── recommended-gts.js
│   │   ├── recommended.js
│   │   └── template-lint-migration.js
│   ├── config-legacy/
│   │   ├── base.js
│   │   ├── recommended-gjs.js
│   │   ├── recommended-gts.js
│   │   ├── recommended.js
│   │   └── template-lint-migration.js
│   ├── index.js
│   ├── recommended-rules-gjs.js
│   ├── recommended-rules-gts.js
│   ├── recommended-rules.js
│   ├── recommended.mjs
│   ├── rules/
│   │   ├── alias-model-in-controller.js
│   │   ├── avoid-leaking-state-in-ember-objects.js
│   │   ├── avoid-using-needs-in-controllers.js
│   │   ├── classic-decorator-hooks.js
│   │   ├── classic-decorator-no-classic-methods.js
│   │   ├── closure-actions.js
│   │   ├── computed-property-getters.js
│   │   ├── jquery-ember-run.js
│   │   ├── named-functions-in-promises.js
│   │   ├── new-module-imports.js
│   │   ├── no-actions-hash.js
│   │   ├── no-array-prototype-extensions.js
│   │   ├── no-arrow-function-computed-properties.js
│   │   ├── no-assignment-of-untracked-properties-used-in-tracking-contexts.js
│   │   ├── no-at-ember-render-modifiers.js
│   │   ├── no-attrs-in-components.js
│   │   ├── no-attrs-snapshot.js
│   │   ├── no-builtin-form-components.js
│   │   ├── no-capital-letters-in-routes.js
│   │   ├── no-classic-classes.js
│   │   ├── no-classic-components.js
│   │   ├── no-component-lifecycle-hooks.js
│   │   ├── no-computed-properties-in-native-classes.js
│   │   ├── no-controller-access-in-routes.js
│   │   ├── no-controllers.js
│   │   ├── no-current-route-name.js
│   │   ├── no-deeply-nested-dependent-keys-with-each.js
│   │   ├── no-deprecated-router-transition-methods.js
│   │   ├── no-duplicate-dependent-keys.js
│   │   ├── no-ember-super-in-es-classes.js
│   │   ├── no-ember-testing-in-module-scope.js
│   │   ├── no-empty-attrs.js
│   │   ├── no-empty-glimmer-component-classes.js
│   │   ├── no-function-prototype-extensions.js
│   │   ├── no-get-with-default.js
│   │   ├── no-get.js
│   │   ├── no-global-jquery.js
│   │   ├── no-html-safe.js
│   │   ├── no-implicit-injections.js
│   │   ├── no-implicit-service-injection-argument.js
│   │   ├── no-incorrect-calls-with-inline-anonymous-functions.js
│   │   ├── no-incorrect-computed-macros.js
│   │   ├── no-invalid-debug-function-arguments.js
│   │   ├── no-invalid-dependent-keys.js
│   │   ├── no-invalid-test-waiters.js
│   │   ├── no-jquery.js
│   │   ├── no-legacy-test-waiters.js
│   │   ├── no-mixins.js
│   │   ├── no-modifier-argument-destructuring.js
│   │   ├── no-new-mixins.js
│   │   ├── no-noop-setup-on-error-in-before.js
│   │   ├── no-observers.js
│   │   ├── no-old-shims.js
│   │   ├── no-on-calls-in-components.js
│   │   ├── no-pause-test.js
│   │   ├── no-private-routing-service.js
│   │   ├── no-proxies.js
│   │   ├── no-replace-test-comments.js
│   │   ├── no-restricted-property-modifications.js
│   │   ├── no-restricted-resolver-tests.js
│   │   ├── no-restricted-service-injections.js
│   │   ├── no-runloop.js
│   │   ├── no-settled-after-test-helper.js
│   │   ├── no-shadow-route-definition.js
│   │   ├── no-side-effects.js
│   │   ├── no-string-prototype-extensions.js
│   │   ├── no-test-and-then.js
│   │   ├── no-test-import-export.js
│   │   ├── no-test-module-for.js
│   │   ├── no-test-support-import.js
│   │   ├── no-test-this-render.js
│   │   ├── no-tracked-built-ins.js
│   │   ├── no-tracked-properties-from-args.js
│   │   ├── no-try-invoke.js
│   │   ├── no-unnecessary-index-route.js
│   │   ├── no-unnecessary-route-path-option.js
│   │   ├── no-unnecessary-service-injection-argument.js
│   │   ├── no-unused-services.js
│   │   ├── no-volatile-computed-properties.js
│   │   ├── order-in-components.js
│   │   ├── order-in-controllers.js
│   │   ├── order-in-models.js
│   │   ├── order-in-routes.js
│   │   ├── prefer-ember-test-helpers.js
│   │   ├── require-async-inverse-relationship.js
│   │   ├── require-computed-macros.js
│   │   ├── require-computed-property-dependencies.js
│   │   ├── require-fetch-import.js
│   │   ├── require-return-from-computed.js
│   │   ├── require-super-in-lifecycle-hooks.js
│   │   ├── require-tagless-components.js
│   │   ├── require-valid-css-selector-in-test-helpers.js
│   │   ├── route-path-style.js
│   │   ├── routes-segments-snake-case.js
│   │   ├── template-attribute-indentation.js
│   │   ├── template-attribute-order.js
│   │   ├── template-block-indentation.js
│   │   ├── template-builtin-component-arguments.js
│   │   ├── template-deprecated-inline-view-helper.js
│   │   ├── template-deprecated-render-helper.js
│   │   ├── template-eol-last.js
│   │   ├── template-linebreak-style.js
│   │   ├── template-link-href-attributes.js
│   │   ├── template-link-rel-noopener.js
│   │   ├── template-modifier-name-case.js
│   │   ├── template-no-abstract-roles.js
│   │   ├── template-no-accesskey-attribute.js
│   │   ├── template-no-action-modifiers.js
│   │   ├── template-no-action-on-submit-button.js
│   │   ├── template-no-action.js
│   │   ├── template-no-args-paths.js
│   │   ├── template-no-arguments-for-html-elements.js
│   │   ├── template-no-aria-hidden-body.js
│   │   ├── template-no-aria-unsupported-elements.js
│   │   ├── template-no-array-prototype-extensions.js
│   │   ├── template-no-at-ember-render-modifiers.js
│   │   ├── template-no-attrs-in-components.js
│   │   ├── template-no-autofocus-attribute.js
│   │   ├── template-no-bare-strings.js
│   │   ├── template-no-bare-yield.js
│   │   ├── template-no-block-params-for-html-elements.js
│   │   ├── template-no-builtin-form-components.js
│   │   ├── template-no-capital-arguments.js
│   │   ├── template-no-chained-this.js
│   │   ├── template-no-class-bindings.js
│   │   ├── template-no-curly-component-invocation.js
│   │   ├── template-no-debugger.js
│   │   ├── template-no-deprecated.js
│   │   ├── template-no-duplicate-attributes.js
│   │   ├── template-no-duplicate-id.js
│   │   ├── template-no-duplicate-landmark-elements.js
│   │   ├── template-no-dynamic-subexpression-invocations.js
│   │   ├── template-no-element-event-actions.js
│   │   ├── template-no-empty-headings.js
│   │   ├── template-no-extra-mut-helper-argument.js
│   │   ├── template-no-forbidden-elements.js
│   │   ├── template-no-heading-inside-button.js
│   │   ├── template-no-html-comments.js
│   │   ├── template-no-implicit-this.js
│   │   ├── template-no-index-component-invocation.js
│   │   ├── template-no-inline-event-handlers.js
│   │   ├── template-no-inline-linkto.js
│   │   ├── template-no-inline-styles.js
│   │   ├── template-no-input-block.js
│   │   ├── template-no-input-tagname.js
│   │   ├── template-no-invalid-aria-attributes.js
│   │   ├── template-no-invalid-interactive.js
│   │   ├── template-no-invalid-link-text.js
│   │   ├── template-no-invalid-link-title.js
│   │   ├── template-no-invalid-meta.js
│   │   ├── template-no-invalid-role.js
│   │   ├── template-no-jsx-attributes.js
│   │   ├── template-no-let-reference.js
│   │   ├── template-no-link-to-positional-params.js
│   │   ├── template-no-link-to-tagname.js
│   │   ├── template-no-log.js
│   │   ├── template-no-model-argument-in-route-templates.js
│   │   ├── template-no-multiple-empty-lines.js
│   │   ├── template-no-mut-helper.js
│   │   ├── template-no-negated-condition.js
│   │   ├── template-no-nested-interactive.js
│   │   ├── template-no-nested-landmark.js
│   │   ├── template-no-nested-splattributes.js
│   │   ├── template-no-obscure-array-access.js
│   │   ├── template-no-obsolete-elements.js
│   │   ├── template-no-only-default-slot.js
│   │   ├── template-no-outlet-outside-routes.js
│   │   ├── template-no-page-title-component.js
│   │   ├── template-no-passed-in-event-handlers.js
│   │   ├── template-no-pointer-down-event-binding.js
│   │   ├── template-no-positional-data-test-selectors.js
│   │   ├── template-no-positive-tabindex.js
│   │   ├── template-no-potential-path-strings.js
│   │   ├── template-no-quoteless-attributes.js
│   │   ├── template-no-redundant-fn.js
│   │   ├── template-no-redundant-role.js
│   │   ├── template-no-restricted-invocations.js
│   │   ├── template-no-route-action.js
│   │   ├── template-no-scope-outside-table-headings.js
│   │   ├── template-no-shadowed-elements.js
│   │   ├── template-no-splattributes-with-class.js
│   │   ├── template-no-this-in-template-only-components.js
│   │   ├── template-no-trailing-spaces.js
│   │   ├── template-no-triple-curlies.js
│   │   ├── template-no-unavailable-this.js
│   │   ├── template-no-unbalanced-curlies.js
│   │   ├── template-no-unbound.js
│   │   ├── template-no-unknown-arguments-for-builtin-components.js
│   │   ├── template-no-unnecessary-component-helper.js
│   │   ├── template-no-unnecessary-concat.js
│   │   ├── template-no-unnecessary-curly-parens.js
│   │   ├── template-no-unnecessary-curly-strings.js
│   │   ├── template-no-unsupported-role-attributes.js
│   │   ├── template-no-unused-block-params.js
│   │   ├── template-no-valueless-arguments.js
│   │   ├── template-no-whitespace-for-layout.js
│   │   ├── template-no-whitespace-within-word.js
│   │   ├── template-no-with.js
│   │   ├── template-no-yield-block-params-to-else-inverse.js
│   │   ├── template-no-yield-only.js
│   │   ├── template-no-yield-to-default.js
│   │   ├── template-quotes.js
│   │   ├── template-require-aria-activedescendant-tabindex.js
│   │   ├── template-require-button-type.js
│   │   ├── template-require-context-role.js
│   │   ├── template-require-each-key.js
│   │   ├── template-require-form-method.js
│   │   ├── template-require-has-block-helper.js
│   │   ├── template-require-iframe-src-attribute.js
│   │   ├── template-require-iframe-title.js
│   │   ├── template-require-input-label.js
│   │   ├── template-require-input-type.js
│   │   ├── template-require-lang-attribute.js
│   │   ├── template-require-mandatory-role-attributes.js
│   │   ├── template-require-media-caption.js
│   │   ├── template-require-presentational-children.js
│   │   ├── template-require-splattributes.js
│   │   ├── template-require-strict-mode.js
│   │   ├── template-require-valid-alt-text.js
│   │   ├── template-require-valid-form-groups.js
│   │   ├── template-require-valid-named-block-naming-format.js
│   │   ├── template-self-closing-void-elements.js
│   │   ├── template-simple-modifiers.js
│   │   ├── template-simple-unless.js
│   │   ├── template-sort-invocations.js
│   │   ├── template-splat-attributes-only.js
│   │   ├── template-style-concatenation.js
│   │   ├── template-table-groups.js
│   │   ├── template-template-length.js
│   │   ├── use-brace-expansion.js
│   │   ├── use-ember-data-rfc-395-imports.js
│   │   └── use-ember-get-and-set.js
│   └── utils/
│       ├── computed-properties.js
│       ├── computed-property-dependent-keys.js
│       ├── computed-property-macros.js
│       ├── decorators.js
│       ├── editorconfig.js
│       ├── ember-source-version.js
│       ├── ember.js
│       ├── fixer.js
│       ├── html-interactive-content.js
│       ├── import.js
│       ├── interactive-roles.js
│       ├── is-native-element.js
│       ├── javascript.js
│       ├── jquery-methods.js
│       ├── jquery.js
│       ├── landmark-roles.js
│       ├── new-module.js
│       ├── property-getter.js
│       ├── property-order.js
│       ├── property-setter.js
│       ├── scope-references-this.js
│       ├── stack.js
│       ├── static-attr-value.js
│       ├── types.js
│       └── utils.js
├── package.json
├── scripts/
│   ├── bench-compare.mjs
│   ├── bench-utils.mjs
│   ├── format-bench-cli.mjs
│   ├── format-bench-comment.mjs
│   ├── list-jquery-methods.js
│   ├── local-bench-summary.sh
│   ├── run-bench.sh
│   └── update-rules.js
├── tests/
│   ├── __snapshots__/
│   │   └── recommended.js.snap
│   ├── bench/
│   │   ├── large.gjs
│   │   ├── large.gts
│   │   ├── large.js
│   │   ├── medium.gjs
│   │   ├── medium.gts
│   │   ├── medium.js
│   │   ├── small.gjs
│   │   ├── small.gts
│   │   └── small.js
│   ├── config-setup.js
│   ├── fixtures/
│   │   └── template-no-this-in-template-only-components/
│   │       └── app/
│   │           └── components/
│   │               ├── classic-with-class.js
│   │               ├── with-class.js
│   │               └── with-ts-class.ts
│   ├── helpers/
│   │   ├── babel-eslint-parser.js
│   │   ├── faux-context.js
│   │   └── test-case.js
│   ├── lib/
│   │   ├── eslint-directive-comments-test.js
│   │   ├── rules/
│   │   │   ├── alias-model-in-controller.js
│   │   │   ├── avoid-leaking-state-in-ember-objects.js
│   │   │   ├── avoid-using-needs-in-controllers.js
│   │   │   ├── classic-decorator-hooks.js
│   │   │   ├── classic-decorator-no-classic-methods.js
│   │   │   ├── closure-actions.js
│   │   │   ├── computed-property-getters.js
│   │   │   ├── jquery-ember-run.js
│   │   │   ├── named-functions-in-promises.js
│   │   │   ├── new-module-imports.js
│   │   │   ├── no-actions-hash.js
│   │   │   ├── no-array-prototype-extensions.js
│   │   │   ├── no-arrow-function-computed-properties.js
│   │   │   ├── no-assignment-of-untracked-properties-used-in-tracking-contexts.js
│   │   │   ├── no-at-ember-render-modifiers.js
│   │   │   ├── no-attrs-in-components.js
│   │   │   ├── no-attrs-snapshot.js
│   │   │   ├── no-builtin-form-components.js
│   │   │   ├── no-capital-letters-in-routes.js
│   │   │   ├── no-classic-classes.js
│   │   │   ├── no-classic-components.js
│   │   │   ├── no-component-lifecycle-hooks.js
│   │   │   ├── no-computed-properties-in-native-classes.js
│   │   │   ├── no-controller-access-in-routes.js
│   │   │   ├── no-controllers.js
│   │   │   ├── no-current-route-name.js
│   │   │   ├── no-deeply-nested-dependent-keys-with-each.js
│   │   │   ├── no-deprecated-router-transition-methods.js
│   │   │   ├── no-duplicate-dependent-keys.js
│   │   │   ├── no-ember-super-in-es-classes.js
│   │   │   ├── no-ember-testing-in-module-scope.js
│   │   │   ├── no-empty-attrs.js
│   │   │   ├── no-empty-glimmer-component-classes.js
│   │   │   ├── no-function-prototype-extensions.js
│   │   │   ├── no-get-with-default.js
│   │   │   ├── no-get.js
│   │   │   ├── no-global-jquery.js
│   │   │   ├── no-html-safe.js
│   │   │   ├── no-implicit-injections.js
│   │   │   ├── no-implicit-service-injection-argument.js
│   │   │   ├── no-incorrect-calls-with-inline-anonymous-functions.js
│   │   │   ├── no-incorrect-computed-macros.js
│   │   │   ├── no-invalid-debug-function-arguments.js
│   │   │   ├── no-invalid-dependent-keys.js
│   │   │   ├── no-invalid-test-waiters.js
│   │   │   ├── no-jquery.js
│   │   │   ├── no-legacy-test-waiters.js
│   │   │   ├── no-mixins.js
│   │   │   ├── no-modifier-argument-destructuring.js
│   │   │   ├── no-new-mixins.js
│   │   │   ├── no-noop-setup-on-error-in-before.js
│   │   │   ├── no-observers.js
│   │   │   ├── no-old-shims.js
│   │   │   ├── no-on-calls-in-components.js
│   │   │   ├── no-pause-test.js
│   │   │   ├── no-private-routing-service.js
│   │   │   ├── no-proxies.js
│   │   │   ├── no-replace-test-comments.js
│   │   │   ├── no-restricted-property-modifications.js
│   │   │   ├── no-restricted-resolver-tests.js
│   │   │   ├── no-restricted-service-injections.js
│   │   │   ├── no-runloop.js
│   │   │   ├── no-settled-after-test-helper.js
│   │   │   ├── no-shadow-route-definition.js
│   │   │   ├── no-side-effects.js
│   │   │   ├── no-string-prototype-extensions.js
│   │   │   ├── no-test-and-then.js
│   │   │   ├── no-test-import-export.js
│   │   │   ├── no-test-module-for.js
│   │   │   ├── no-test-support-import.js
│   │   │   ├── no-test-this-render.js
│   │   │   ├── no-tracked-built-ins.js
│   │   │   ├── no-tracked-properties-from-args.js
│   │   │   ├── no-try-invoke.js
│   │   │   ├── no-unnecessary-index-route.js
│   │   │   ├── no-unnecessary-route-path-option.js
│   │   │   ├── no-unnecessary-service-injection-argument.js
│   │   │   ├── no-unused-services.js
│   │   │   ├── no-volatile-computed-properties.js
│   │   │   ├── order-in-components.js
│   │   │   ├── order-in-controllers.js
│   │   │   ├── order-in-models.js
│   │   │   ├── order-in-routes.js
│   │   │   ├── prefer-ember-test-helpers.js
│   │   │   ├── require-async-inverse-relationship.js
│   │   │   ├── require-computed-macros.js
│   │   │   ├── require-computed-property-dependencies.js
│   │   │   ├── require-fetch-import.js
│   │   │   ├── require-return-from-computed.js
│   │   │   ├── require-super-in-lifecycle-hooks.js
│   │   │   ├── require-tagless-components.js
│   │   │   ├── require-valid-css-selector-in-test-helpers.js
│   │   │   ├── route-path-style.js
│   │   │   ├── routes-segments-snake-case.js
│   │   │   ├── template-attribute-indentation.js
│   │   │   ├── template-attribute-order.js
│   │   │   ├── template-block-indentation.js
│   │   │   ├── template-builtin-component-arguments.js
│   │   │   ├── template-deprecated-inline-view-helper.js
│   │   │   ├── template-deprecated-render-helper.js
│   │   │   ├── template-eol-last.js
│   │   │   ├── template-linebreak-style.js
│   │   │   ├── template-link-href-attributes.js
│   │   │   ├── template-link-rel-noopener.js
│   │   │   ├── template-modifier-name-case.js
│   │   │   ├── template-no-abstract-roles.js
│   │   │   ├── template-no-accesskey-attribute.js
│   │   │   ├── template-no-action-modifiers.js
│   │   │   ├── template-no-action-on-submit-button.js
│   │   │   ├── template-no-action.js
│   │   │   ├── template-no-args-paths.js
│   │   │   ├── template-no-arguments-for-html-elements.js
│   │   │   ├── template-no-aria-hidden-body.js
│   │   │   ├── template-no-aria-unsupported-elements.js
│   │   │   ├── template-no-array-prototype-extensions.js
│   │   │   ├── template-no-at-ember-render-modifiers.js
│   │   │   ├── template-no-attrs-in-components.js
│   │   │   ├── template-no-autofocus-attribute.js
│   │   │   ├── template-no-bare-strings.js
│   │   │   ├── template-no-bare-yield.js
│   │   │   ├── template-no-block-params-for-html-elements.js
│   │   │   ├── template-no-builtin-form-components.js
│   │   │   ├── template-no-capital-arguments.js
│   │   │   ├── template-no-chained-this.js
│   │   │   ├── template-no-class-bindings.js
│   │   │   ├── template-no-curly-component-invocation.js
│   │   │   ├── template-no-debugger.js
│   │   │   ├── template-no-deprecated.js
│   │   │   ├── template-no-duplicate-attributes.js
│   │   │   ├── template-no-duplicate-id.js
│   │   │   ├── template-no-duplicate-landmark-elements.js
│   │   │   ├── template-no-dynamic-subexpression-invocations.js
│   │   │   ├── template-no-element-event-actions.js
│   │   │   ├── template-no-empty-headings.js
│   │   │   ├── template-no-extra-mut-helper-argument.js
│   │   │   ├── template-no-forbidden-elements.js
│   │   │   ├── template-no-heading-inside-button.js
│   │   │   ├── template-no-html-comments.js
│   │   │   ├── template-no-implicit-this.js
│   │   │   ├── template-no-index-component-invocation.js
│   │   │   ├── template-no-inline-event-handlers.js
│   │   │   ├── template-no-inline-linkto.js
│   │   │   ├── template-no-inline-styles.js
│   │   │   ├── template-no-input-block.js
│   │   │   ├── template-no-input-tagname.js
│   │   │   ├── template-no-invalid-aria-attributes.js
│   │   │   ├── template-no-invalid-interactive.js
│   │   │   ├── template-no-invalid-link-text.js
│   │   │   ├── template-no-invalid-link-title.js
│   │   │   ├── template-no-invalid-meta.js
│   │   │   ├── template-no-invalid-role.js
│   │   │   ├── template-no-jsx-attributes.js
│   │   │   ├── template-no-let-reference.js
│   │   │   ├── template-no-link-to-positional-params.js
│   │   │   ├── template-no-link-to-tagname.js
│   │   │   ├── template-no-log.js
│   │   │   ├── template-no-model-argument-in-route-templates.js
│   │   │   ├── template-no-multiple-empty-lines.js
│   │   │   ├── template-no-mut-helper.js
│   │   │   ├── template-no-negated-condition.js
│   │   │   ├── template-no-nested-interactive.js
│   │   │   ├── template-no-nested-landmark.js
│   │   │   ├── template-no-nested-splattributes.js
│   │   │   ├── template-no-obscure-array-access.js
│   │   │   ├── template-no-obsolete-elements.js
│   │   │   ├── template-no-only-default-slot.js
│   │   │   ├── template-no-outlet-outside-routes.js
│   │   │   ├── template-no-page-title-component.js
│   │   │   ├── template-no-passed-in-event-handlers.js
│   │   │   ├── template-no-pointer-down-event-binding.js
│   │   │   ├── template-no-positional-data-test-selectors.js
│   │   │   ├── template-no-positive-tabindex.js
│   │   │   ├── template-no-potential-path-strings.js
│   │   │   ├── template-no-quoteless-attributes.js
│   │   │   ├── template-no-redundant-fn.js
│   │   │   ├── template-no-redundant-role.js
│   │   │   ├── template-no-restricted-invocations.js
│   │   │   ├── template-no-route-action.js
│   │   │   ├── template-no-scope-outside-table-headings.js
│   │   │   ├── template-no-shadowed-elements.js
│   │   │   ├── template-no-splattributes-with-class.js
│   │   │   ├── template-no-this-in-template-only-components.js
│   │   │   ├── template-no-trailing-spaces.js
│   │   │   ├── template-no-triple-curlies.js
│   │   │   ├── template-no-unavailable-this.js
│   │   │   ├── template-no-unbalanced-curlies.js
│   │   │   ├── template-no-unbound.js
│   │   │   ├── template-no-unknown-arguments-for-builtin-components.js
│   │   │   ├── template-no-unnecessary-component-helper.js
│   │   │   ├── template-no-unnecessary-concat.js
│   │   │   ├── template-no-unnecessary-curly-parens.js
│   │   │   ├── template-no-unnecessary-curly-strings.js
│   │   │   ├── template-no-unsupported-role-attributes.js
│   │   │   ├── template-no-unused-block-params.js
│   │   │   ├── template-no-valueless-arguments.js
│   │   │   ├── template-no-whitespace-for-layout.js
│   │   │   ├── template-no-whitespace-within-word.js
│   │   │   ├── template-no-with.js
│   │   │   ├── template-no-yield-block-params-to-else-inverse.js
│   │   │   ├── template-no-yield-only.js
│   │   │   ├── template-no-yield-to-default.js
│   │   │   ├── template-quotes.js
│   │   │   ├── template-require-aria-activedescendant-tabindex.js
│   │   │   ├── template-require-button-type.js
│   │   │   ├── template-require-context-role.js
│   │   │   ├── template-require-each-key.js
│   │   │   ├── template-require-form-method.js
│   │   │   ├── template-require-has-block-helper.js
│   │   │   ├── template-require-iframe-src-attribute.js
│   │   │   ├── template-require-iframe-title.js
│   │   │   ├── template-require-input-label.js
│   │   │   ├── template-require-input-type.js
│   │   │   ├── template-require-lang-attribute.js
│   │   │   ├── template-require-mandatory-role-attributes.js
│   │   │   ├── template-require-media-caption.js
│   │   │   ├── template-require-presentational-children.js
│   │   │   ├── template-require-splattributes.js
│   │   │   ├── template-require-strict-mode.js
│   │   │   ├── template-require-valid-alt-text.js
│   │   │   ├── template-require-valid-form-groups.js
│   │   │   ├── template-require-valid-named-block-naming-format.js
│   │   │   ├── template-self-closing-void-elements.js
│   │   │   ├── template-simple-modifiers.js
│   │   │   ├── template-simple-unless.js
│   │   │   ├── template-sort-invocations.js
│   │   │   ├── template-splat-attributes-only.js
│   │   │   ├── template-style-concatenation.js
│   │   │   ├── template-table-groups.js
│   │   │   ├── template-template-length.js
│   │   │   ├── use-brace-expansion.js
│   │   │   ├── use-ember-data-rfc-395-imports.js
│   │   │   └── use-ember-get-and-set.js
│   │   ├── rules-preprocessor/
│   │   │   ├── ember_ts/
│   │   │   │   ├── bar.gts
│   │   │   │   ├── baz.ts
│   │   │   │   └── foo.gts
│   │   │   ├── gjs-gts-parser-test.js
│   │   │   ├── my-component.gts
│   │   │   ├── template-no-deprecated/
│   │   │   │   ├── component-stub.ts
│   │   │   │   ├── component-with-args.ts
│   │   │   │   ├── current-component.ts
│   │   │   │   ├── deprecated-component.ts
│   │   │   │   ├── deprecated-helper.ts
│   │   │   │   └── usage.gts
│   │   │   └── tsconfig.eslint.json
│   │   └── utils/
│   │       ├── computed-properties-test.js
│   │       ├── computed-property-dependent-keys-test.js
│   │       ├── computed-property-macros-test.js
│   │       ├── decorators-test.js
│   │       ├── editorconfig-test.js
│   │       ├── ember-source-version-test.js
│   │       ├── ember-test.js
│   │       ├── html-interactive-content-test.js
│   │       ├── import-test.js
│   │       ├── interactive-roles-test.js
│   │       ├── is-native-element-test.js
│   │       ├── javascript-test.js
│   │       ├── landmark-roles-test.js
│   │       ├── new-module-test.js
│   │       ├── property-getter-test.js
│   │       ├── property-order-test.js
│   │       ├── property-setter-test.js
│   │       ├── scope-references-this-test.js
│   │       ├── static-attr-value-test.js
│   │       ├── types-test.js
│   │       ├── utils/
│   │       │   └── get-source-module-name-for-identifier-test.js
│   │       └── utils-test.js
│   ├── lint.bench.mjs
│   ├── plugin-exports.js
│   ├── recommended.js
│   └── rule-setup.js
└── vitest.config.mjs

================================================
FILE CONTENTS
================================================

================================================
FILE: .babelrc
================================================
{
  "plugins": [
    "@babel/plugin-proposal-class-properties",
    ["@babel/plugin-proposal-decorators", { "decoratorsBeforeExport": true }]
  ]
}


================================================
FILE: .editorconfig
================================================
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org

root = true

[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2

[*.{diff,md}]
trim_trailing_whitespace = false


================================================
FILE: .eslint-doc-generatorrc.js
================================================
const path = require('path');

const HBS_ONLY_NOTE =
  '> **HBS Only**: This rule applies to classic `.hbs` template files only (loose mode). It is not relevant for `gjs`/`gts` files (strict mode), where these patterns cannot occur.';

const END_HEADER_MARKER = '<!-- end auto-generated rule header -->';

/** @type {import('eslint-doc-generator').GenerateOptions} */
module.exports = {
  configEmoji: [
    ['recommended-gjs', '![gjs logo](/docs/svgs/gjs.svg)'],
    ['recommended-gts', '![gts logo](/docs/svgs/gts.svg)'],
    ['template-lint-migration', '📋'],
  ],
  ruleDocSectionInclude: ['Examples'],
  ruleDocTitleFormat: 'prefix-name',
  ruleListSplit: 'meta.docs.category',
  urlConfigs: 'https://github.com/ember-cli/eslint-plugin-ember#-configurations',
  postprocess(content, filePath) {
    // Only process rule doc files
    if (!filePath.includes(path.join('docs', 'rules'))) {
      return content;
    }

    const ruleName = path.basename(filePath, '.md');

    let rule;
    try {
      rule = require(path.join(__dirname, 'lib', 'rules', ruleName));
    } catch {
      return content;
    }

    // Strip any existing HBS Only note (with surrounding blank lines)
    let result = content.replace(/\n> \*\*HBS Only\*\*:[^\n]+\n/, '\n');

    // Add HBS Only note for loose-mode rules
    if (rule.meta?.docs?.templateMode === 'loose') {
      result = result.replace(END_HEADER_MARKER, `${HBS_ONLY_NOTE}\n\n${END_HEADER_MARKER}`);
    }

    return result;
  },
};


================================================
FILE: .gitattributes
================================================
* text=auto eol=lf


================================================
FILE: .github/renovate.json5
================================================
// Docs:
// https://docs.renovatebot.com/configuration-options/
{
  "extends": [
    "github>NullVoxPopuli/renovate:npm.json5"
  ]
}


================================================
FILE: .github/workflows/bench-compare.yml
================================================
name: Benchmark Comparison

on:
  pull_request:
    types: [opened, synchronize, reopened]

concurrency:
  group: bench-${{ github.head_ref }}
  cancel-in-progress: true

jobs:
  bench-compare:
    name: 'Benchmark Comparison'
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
      contents: read

    steps:
      - uses: actions/checkout@v6
        id: checkout
        with:
          # Full history so the script can git-archive the base branch.
          fetch-depth: 0
          # Use the PR head SHA so fork PRs resolve correctly
          # (github.head_ref is a branch name that only exists on the fork remote).
          ref: ${{ github.event.pull_request.head.sha }}

      - uses: wyvox/action-setup-pnpm@v4

      - name: Run benchmark comparison
        env:
          BENCH_JSON_OUTPUT: ${{ runner.temp }}/bench-results.json
        run: |
          set -o pipefail
          pnpm bench:compare | sed 's/\x1b\[[0-9;]*m//g' > "$RUNNER_TEMP/bench-output.txt"

      - name: Format PR comment
        if: always() && steps.checkout.outcome == 'success'
        env:
          BENCH_OUTPUT_FILE: ${{ runner.temp }}/bench-output.txt
          BENCH_JSON_OUTPUT: ${{ runner.temp }}/bench-results.json
          BENCH_JOB_SUCCESS: ${{ job.status == 'success' }}
        run: node scripts/format-bench-comment.mjs > "$RUNNER_TEMP/bench-comment.md"

      - name: Write job summary
        if: always() && steps.checkout.outcome == 'success'
        run: cat "$RUNNER_TEMP/bench-comment.md" >> "$GITHUB_STEP_SUMMARY"

      - name: Post PR comment
        if: always() && steps.checkout.outcome == 'success'
        uses: actions/github-script@v9
        with:
          script: |
            const fs = require('fs');
            const marker = '<!-- bench-compare -->';

            const body = fs.readFileSync(process.env.RUNNER_TEMP + '/bench-comment.md', 'utf8');

            const headFullName = context.payload.pull_request?.head?.repo?.full_name;
            const isFork = !headFullName || headFullName !== context.repo.owner + '/' + context.repo.repo;

            if (isFork) {
              core.info('PR is from a fork — skipping PR comment (results are in the job summary).');
              core.info('--- Comment body start ---');
              core.info(body);
              core.info('--- Comment body end ---');
            } else {
              const { data: comments } = await github.rest.issues.listComments({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.issue.number,
              });

              const existing = comments.find(c => c.body.includes(marker));

              if (existing) {
                await github.rest.issues.updateComment({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  comment_id: existing.id,
                  body,
                });
              } else {
                await github.rest.issues.createComment({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  issue_number: context.issue.number,
                  body,
                });
              }
            }


================================================
FILE: .github/workflows/ci.yml
================================================
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  self-lint:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v6
    - uses: pnpm/action-setup@v5
      with:
        run_install: false
    - uses: actions/setup-node@v6
      with:
        node-version: 24.x
        cache: 'pnpm'

    - run: pnpm install
    - run: pnpm lint

  build:
    runs-on: ${{ matrix.os }}-latest

    strategy:
      matrix:
        os: [ ubuntu, windows ]
        node-version: [20.x, 22.x, 24.x]

    steps:
    - uses: actions/checkout@v6
    - uses: pnpm/action-setup@v5
      with:
        run_install: false
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v6
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'pnpm'

    - run: pnpm install
    - run: pnpm test:coverage


================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
  push:
    branches: [ master ]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [ master ]
  schedule:
    - cron: '18 9 * * 2'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: [ 'javascript' ]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
        # Learn more:
        # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed

    steps:
    - name: Checkout repository
      uses: actions/checkout@v6

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v4
      with:
        languages: ${{ matrix.language }}
        # If you wish to specify custom queries, you can do so here or in a config file.
        # By default, queries listed here will override any specified in a config file.
        # Prefix the list here with "+" to use these queries and those in the config file.
        # queries: ./path/to/local/query, your-org/your-repo/queries@main

    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
    # If this step fails, then you should remove it and run the build manually (see below)
    - name: Autobuild
      uses: github/codeql-action/autobuild@v4

    # ℹ️ Command-line programs to run using the OS shell.
    # 📚 https://git.io/JvXDl

    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
    #    and modify them (or add more) to build your code if your project
    #    uses a compiled language

    #- run: |
    #   make bootstrap
    #   make release

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v4


================================================
FILE: .github/workflows/plan-release.yml
================================================
name: Plan Release
on:
  workflow_dispatch:
  push:
    branches:
      - main
      - master
  pull_request_target: # This workflow has permissions on the repo, do NOT run code from PRs in this workflow. See https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
    types:
      - labeled
      - unlabeled

concurrency:
  group: plan-release # only the latest one of these should ever be running
  cancel-in-progress: true

jobs:
  should-run-release-plan-prepare:
    name: Should we run release-plan prepare?
    runs-on: ubuntu-latest
    outputs:
      should-prepare: ${{ steps.should-prepare.outputs.should-prepare }}
    steps:
      - uses: release-plan/actions/should-prepare-release@v1
        with:
          ref: 'master'
        id: should-prepare

  create-prepare-release-pr:
    name: Create Prepare Release PR
    runs-on: ubuntu-latest
    timeout-minutes: 5
    needs: should-run-release-plan-prepare
    permissions:
      contents: write
      issues: read
      pull-requests: write
    if: needs.should-run-release-plan-prepare.outputs.should-prepare == 'true'    
    steps:
      - uses: release-plan/actions/prepare@v1
        name: Run release-plan prepare
        with:
          ref: 'master'
        env:
          GITHUB_AUTH: ${{ secrets.GITHUB_TOKEN }}
        id: explanation

      - uses: peter-evans/create-pull-request@v8
        name: Create Prepare Release PR
        with:
          commit-message: "Prepare Release ${{ steps.explanation.outputs.new-version}} using 'release-plan'"
          labels: "internal"
          sign-commits: true
          branch: release-preview
          title: Prepare Release ${{ steps.explanation.outputs.new-version }}
          body: |
            This PR is a preview of the release that [release-plan](https://github.com/embroider-build/release-plan) has prepared. To release you should just merge this PR 👍

            -----------------------------------------

            ${{ steps.explanation.outputs.text }}


================================================
FILE: .github/workflows/publish.yml
================================================
# For every push to the primary branch with .release-plan.json modified,
# runs release-plan.

name: Publish Stable

on:
  workflow_dispatch:
  push:
    branches:
      - main
      - master
    paths:
      - '.release-plan.json'

concurrency:
  group: publish-${{ github.head_ref || github.ref }}
  cancel-in-progress: true

jobs:
  publish:
    name: "NPM Publish"
    runs-on: ubuntu-latest
    permissions:
      contents: write
      id-token: write
      attestations: write

    steps:
      - uses: actions/checkout@v6
      - uses: pnpm/action-setup@v5
      - uses: actions/setup-node@v6
        with:
          node-version: 24
          registry-url: 'https://registry.npmjs.org'
          cache: pnpm
      - run: pnpm install --frozen-lockfile
      - run: npm install -g npm@latest # ensure that the globally installed npm is new enough to support OIDC
      - name: Publish to NPM
        run: NPM_CONFIG_PROVENANCE=true pnpm release-plan publish
        env:
          GITHUB_AUTH: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .gitignore
================================================
# Logs
logs
*.log

# Dependencies
node_modules

# Misc
.eslintcache
coverage
npm-debug.log
*.swp
.vscode

# eslint-remote-tester
eslint-remote-tester-results

# Benchmark output
bench-results.json

# Lock file generated by npm install (project uses pnpm)
package-lock.json


================================================
FILE: .markdownlint.json
================================================
{
  "line-length": false,
  "table-column-style": false,
  "ul-style": {
    "style": "dash"
  }
}


================================================
FILE: .markdownlintignore
================================================
CHANGELOG.md
LICENSE.md
node_modules


================================================
FILE: .npmpackagejsonlintrc.json
================================================
{
  "rules": {
    "no-duplicate-properties": "error",
    "no-repeated-dependencies": "error",
    "prefer-alphabetical-bundledDependencies": "error",
    "prefer-alphabetical-dependencies": "error",
    "prefer-alphabetical-devDependencies": "error",
    "prefer-alphabetical-optionalDependencies": "error",
    "prefer-alphabetical-scripts": "error",
    "prefer-caret-version-dependencies": "error",
    "prefer-caret-version-devDependencies": "error",
    "prefer-scripts": ["error", ["lint", "test"]]
  }
}


================================================
FILE: .npmrc
================================================
# npm / pnpm settings here

# as a library, we want to make sure we explicitly handle peers,
# and not rely on hidden behavior of package-managers.
auto-install-peers=false
strict-peer-dependents=true
dedupe-peer-dependents=true
prefer-workspaces-packages=true
resolve-peers-from-workspace-root=false


================================================
FILE: .prettierignore
================================================
node_modules/
dist/
lib/recommended-rules.js
CHANGELOG.md
README.md
pnpm-lock.yaml
.github/*


================================================
FILE: .prettierrc.js
================================================
'use strict';

module.exports = {
  printWidth: 100,
  semi: true,
  singleQuote: true,
  trailingComma: 'es5',
};


================================================
FILE: .release-plan.json
================================================
{
  "solution": {
    "eslint-plugin-ember": {
      "impact": "patch",
      "oldVersion": "13.2.0",
      "newVersion": "13.2.1",
      "tagName": "latest",
      "constraints": [
        {
          "impact": "patch",
          "reason": "Appears in changelog section :bug: Bug Fix"
        },
        {
          "impact": "patch",
          "reason": "Appears in changelog section :house: Internal"
        }
      ],
      "pkgJSONPath": "./package.json"
    }
  },
  "description": "## Release (2026-04-30)\n\n* eslint-plugin-ember 13.2.1 (patch)\n\n#### :bug: Bug Fix\n* `eslint-plugin-ember`\n  * [#2767](https://github.com/ember-cli/eslint-plugin-ember/pull/2767) fix(require-input-label): don't count id as extra label when aria-label/labelledby present ([@johanrd](https://github.com/johanrd))\n  * [#2772](https://github.com/ember-cli/eslint-plugin-ember/pull/2772) fix(template-no-nested-interactive): More useful error message ([@johanrd](https://github.com/johanrd))\n\n#### :house: Internal\n* `eslint-plugin-ember`\n  * [#2758](https://github.com/ember-cli/eslint-plugin-ember/pull/2758) refactor: extract landmark-roles util (preserving deliberate per-rule region exclusion) ([@johanrd](https://github.com/johanrd))\n  * [#2753](https://github.com/ember-cli/eslint-plugin-ember/pull/2753) test(no-nested-interactive): add composite-widget hierarchy valid cases ([@johanrd](https://github.com/johanrd))\n\n#### Committers: 1\n- Johan Røed ([@johanrd](https://github.com/johanrd))\n"
}


================================================
FILE: CHANGELOG.md
================================================
# Changelog

## Release (2026-04-30)

* eslint-plugin-ember 13.2.1 (patch)

#### :bug: Bug Fix
* `eslint-plugin-ember`
  * [#2767](https://github.com/ember-cli/eslint-plugin-ember/pull/2767) fix(require-input-label): don't count id as extra label when aria-label/labelledby present ([@johanrd](https://github.com/johanrd))
  * [#2772](https://github.com/ember-cli/eslint-plugin-ember/pull/2772) fix(template-no-nested-interactive): More useful error message ([@johanrd](https://github.com/johanrd))

#### :house: Internal
* `eslint-plugin-ember`
  * [#2758](https://github.com/ember-cli/eslint-plugin-ember/pull/2758) refactor: extract landmark-roles util (preserving deliberate per-rule region exclusion) ([@johanrd](https://github.com/johanrd))
  * [#2753](https://github.com/ember-cli/eslint-plugin-ember/pull/2753) test(no-nested-interactive): add composite-widget hierarchy valid cases ([@johanrd](https://github.com/johanrd))

#### Committers: 1
- Johan Røed ([@johanrd](https://github.com/johanrd))

## Release (2026-04-28)

* eslint-plugin-ember 13.2.0 (minor)

#### :rocket: Enhancement
* `eslint-plugin-ember`
  * [#2763](https://github.com/ember-cli/eslint-plugin-ember/pull/2763) feat: add template-require-input-type ([@johanrd](https://github.com/johanrd))

#### :bug: Bug Fix
* `eslint-plugin-ember`
  * [#2766](https://github.com/ember-cli/eslint-plugin-ember/pull/2766) Update parser ([@NullVoxPopuli](https://github.com/NullVoxPopuli))

#### Committers: 2
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)
- [@johanrd](https://github.com/johanrd)

## Release (2026-04-27)

* eslint-plugin-ember 13.1.4 (patch)

#### :bug: Bug Fix
* `eslint-plugin-ember`
  * [#2752](https://github.com/ember-cli/eslint-plugin-ember/pull/2752) Update ember-eslint-parser to 0.11.2 ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2728](https://github.com/ember-cli/eslint-plugin-ember/pull/2728) BUGFIX: template-require-mandatory-role-attributes — lowercase role + split whitespace role lists ([@johanrd](https://github.com/johanrd))

#### :house: Internal
* `eslint-plugin-ember`
  * [#2748](https://github.com/ember-cli/eslint-plugin-ember/pull/2748) refactor: extract `html-interactive-content` util (HTML §3.2.5.2.7 authority) ([@johanrd](https://github.com/johanrd))

#### Committers: 2
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)
- [@johanrd](https://github.com/johanrd)

## Release (2026-04-25)

* eslint-plugin-ember 13.1.3 (patch)

#### :bug: Bug Fix
* `eslint-plugin-ember`
  * [#2730](https://github.com/ember-cli/eslint-plugin-ember/pull/2730) BUGFIX: template-require-valid-alt-text — reject empty-string aria-label/labelledby/alt on <input type=image>, <object>, <area> ([@johanrd](https://github.com/johanrd))
  * [#2729](https://github.com/ember-cli/eslint-plugin-ember/pull/2729) BUGFIX: template-no-invalid-role — support DPUB/Graphics-ARIA and role-fallback lists ([@johanrd](https://github.com/johanrd))
  * [#2726](https://github.com/ember-cli/eslint-plugin-ember/pull/2726) BUGFIX: template-no-unsupported-role-attributes — honor aria-query attribute constraints ([@johanrd](https://github.com/johanrd))
  * [#2727](https://github.com/ember-cli/eslint-plugin-ember/pull/2727) BUGFIX: template-no-redundant-role — case-insensitive match + <select>→combobox ([@johanrd](https://github.com/johanrd))

#### :house: Internal
* `eslint-plugin-ember`
  * [#2746](https://github.com/ember-cli/eslint-plugin-ember/pull/2746) refactor: extract isNativeElement util (fix component-vs-HTML-tag misclassification) ([@johanrd](https://github.com/johanrd))

#### Committers: 1
- [@johanrd](https://github.com/johanrd)

## Release (2026-04-25)

* eslint-plugin-ember 13.1.2 (patch)

#### :bug: Bug Fix
* `eslint-plugin-ember`
  * [#2745](https://github.com/ember-cli/eslint-plugin-ember/pull/2745) chore: upgrade ember-eslint-parser from 0.11.0 to 0.11.1 ([@Copilot](https://github.com/apps/copilot-swe-agent))
  * [#2743](https://github.com/ember-cli/eslint-plugin-ember/pull/2743) fix: template-no-autofocus-attribute — value-aware + <dialog> exception ([@johanrd](https://github.com/johanrd))
  * [#2731](https://github.com/ember-cli/eslint-plugin-ember/pull/2731) BUGFIX: template-require-iframe-title — flag title={{null|undefined|number}} ([@johanrd](https://github.com/johanrd))
  * [#2725](https://github.com/ember-cli/eslint-plugin-ember/pull/2725) fix(template-require-mandatory-role-attributes): use axobject-query for semantic-role exemptions ([@johanrd](https://github.com/johanrd))
  * [#2717](https://github.com/ember-cli/eslint-plugin-ember/pull/2717) BUGFIX: template-no-empty-headings — recognize boolean aria-hidden ([@johanrd](https://github.com/johanrd))
  * [#2723](https://github.com/ember-cli/eslint-plugin-ember/pull/2723) fix(template-no-invalid-aria-attributes): absorb allowundefined handling into validateByType ([@johanrd](https://github.com/johanrd))

#### Committers: 2
- Copilot [Bot] ([@copilot-swe-agent](https://github.com/apps/copilot-swe-agent))
- [@johanrd](https://github.com/johanrd)

## Release (2026-04-25)

* eslint-plugin-ember 13.1.1 (patch)

#### :bug: Bug Fix
* `eslint-plugin-ember`
  * [#2735](https://github.com/ember-cli/eslint-plugin-ember/pull/2735) Update ember-eslint-parser to 0.11 ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2736](https://github.com/ember-cli/eslint-plugin-ember/pull/2736) fix: ignore comment + whitespace nodes in template-no-yield-only ([@johanrd](https://github.com/johanrd))
  * [#2722](https://github.com/ember-cli/eslint-plugin-ember/pull/2722) refactor(template-require-presentational-children): source role list from aria-query ([@johanrd](https://github.com/johanrd))
  * [#2719](https://github.com/ember-cli/eslint-plugin-ember/pull/2719) BUGFIX: template-no-aria-unsupported-elements — source the reserved-element list from aria-query ([@johanrd](https://github.com/johanrd))
  * [#2718](https://github.com/ember-cli/eslint-plugin-ember/pull/2718) BUGFIX: template-require-media-caption — compare kind="captions" case-insensitively ([@johanrd](https://github.com/johanrd))
  * [#2714](https://github.com/ember-cli/eslint-plugin-ember/pull/2714) BUGFIX: accept tabindex="-1" in template-require-aria-activedescendant-tabindex ([@johanrd](https://github.com/johanrd))

#### :house: Internal
* `eslint-plugin-ember`
  * [#2733](https://github.com/ember-cli/eslint-plugin-ember/pull/2733) test: cover {{! eslint-disable-* }} directives inside <template> in .gts ([@johanrd](https://github.com/johanrd))
  * [#2721](https://github.com/ember-cli/eslint-plugin-ember/pull/2721) refactor(template-no-abstract-roles): source abstract-role list from aria-query ([@johanrd](https://github.com/johanrd))

#### Committers: 2
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)
- [@johanrd](https://github.com/johanrd)

## Release (2026-04-21)

* eslint-plugin-ember 13.1.0 (minor)

#### :rocket: Enhancement
* `eslint-plugin-ember`
  * [#2715](https://github.com/ember-cli/eslint-plugin-ember/pull/2715) feat: re-export hbs parser and document HBS flat-config setup ([@johanrd](https://github.com/johanrd))

#### :bug: Bug Fix
* `eslint-plugin-ember`
  * [#2713](https://github.com/ember-cli/eslint-plugin-ember/pull/2713) BUGFIX: false positive: interactive flow content inside <details> ([@johanrd](https://github.com/johanrd))

#### Committers: 1
- [@johanrd](https://github.com/johanrd)

## Release (2026-04-20)

* eslint-plugin-ember 13.0.0 (major)

#### :boom: Breaking Change
* `eslint-plugin-ember`
  * [#2492](https://github.com/ember-cli/eslint-plugin-ember/pull/2492) Replace deprecated ESLint context methods for ESLint 10 compatibility, dropping eslint < 8.40 ([@johanrd](https://github.com/johanrd))
  * [#2557](https://github.com/ember-cli/eslint-plugin-ember/pull/2557) Upgrade ember-eslint-parser to 0.8.0 ([@Copilot](https://github.com/apps/copilot-swe-agent))
  * [#2555](https://github.com/ember-cli/eslint-plugin-ember/pull/2555) Drop support for Node &lt; 20.19 ([@Copilot](https://github.com/apps/copilot-swe-agent))

#### :rocket: Enhancement
* `eslint-plugin-ember`
  * [#2702](https://github.com/ember-cli/eslint-plugin-ember/pull/2702) feat: add (opt-in ember-template-lint parity) template-lint-migration config  ([@johanrd](https://github.com/johanrd))
  * [#2631](https://github.com/ember-cli/eslint-plugin-ember/pull/2631) Update ember-eslint-parser ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2562](https://github.com/ember-cli/eslint-plugin-ember/pull/2562) Extract rule: template-no-passed-in-event-handlers ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2567](https://github.com/ember-cli/eslint-plugin-ember/pull/2567) Extract rule: template-no-redundant-fn ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2570](https://github.com/ember-cli/eslint-plugin-ember/pull/2570) Extract rule: template-no-restricted-invocations ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2575](https://github.com/ember-cli/eslint-plugin-ember/pull/2575) Extract rule: template-no-this-in-template-only-components ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2583](https://github.com/ember-cli/eslint-plugin-ember/pull/2583) Extract rule: template-no-unknown-arguments-for-builtin-components ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2601](https://github.com/ember-cli/eslint-plugin-ember/pull/2601) Extract rule: template-require-context-role ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2620](https://github.com/ember-cli/eslint-plugin-ember/pull/2620) Extract rule: template-sort-invocations ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2563](https://github.com/ember-cli/eslint-plugin-ember/pull/2563) Extract rule: template-no-positional-data-test-selectors ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2564](https://github.com/ember-cli/eslint-plugin-ember/pull/2564) Extract rule: template-no-positive-tabindex ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2565](https://github.com/ember-cli/eslint-plugin-ember/pull/2565) Extract rule: template-no-potential-path-strings ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2566](https://github.com/ember-cli/eslint-plugin-ember/pull/2566) Extract rule: template-no-quoteless-attributes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2569](https://github.com/ember-cli/eslint-plugin-ember/pull/2569) Extract rule: template-no-redundant-role ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2571](https://github.com/ember-cli/eslint-plugin-ember/pull/2571) Extract rule: template-no-route-action ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2572](https://github.com/ember-cli/eslint-plugin-ember/pull/2572) Extract rule: template-no-scope-outside-table-headings ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2573](https://github.com/ember-cli/eslint-plugin-ember/pull/2573) Extract rule: template-no-shadowed-elements ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2574](https://github.com/ember-cli/eslint-plugin-ember/pull/2574) Extract rule: template-no-splattributes-with-class ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2576](https://github.com/ember-cli/eslint-plugin-ember/pull/2576) Extract rule: template-no-trailing-spaces ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2579](https://github.com/ember-cli/eslint-plugin-ember/pull/2579) Extract rule: template-no-triple-curlies ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2580](https://github.com/ember-cli/eslint-plugin-ember/pull/2580) Extract rule: template-no-unavailable-this ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2581](https://github.com/ember-cli/eslint-plugin-ember/pull/2581) Extract rule: template-no-unbalanced-curlies ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2582](https://github.com/ember-cli/eslint-plugin-ember/pull/2582) Extract rule: template-no-unbound ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2584](https://github.com/ember-cli/eslint-plugin-ember/pull/2584) Extract rule: template-no-unnecessary-component-helper ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2585](https://github.com/ember-cli/eslint-plugin-ember/pull/2585) Extract rule: template-no-unnecessary-concat ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2587](https://github.com/ember-cli/eslint-plugin-ember/pull/2587) Extract rule: template-no-unnecessary-curly-parens ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2588](https://github.com/ember-cli/eslint-plugin-ember/pull/2588) Extract rule: template-no-unnecessary-curly-strings ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2589](https://github.com/ember-cli/eslint-plugin-ember/pull/2589) Extract rule: template-no-unsupported-role-attributes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2590](https://github.com/ember-cli/eslint-plugin-ember/pull/2590) Extract rule: template-no-unused-block-params ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2591](https://github.com/ember-cli/eslint-plugin-ember/pull/2591) Extract rule: template-no-valueless-arguments ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2592](https://github.com/ember-cli/eslint-plugin-ember/pull/2592) Extract rule: template-no-whitespace-for-layout ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2593](https://github.com/ember-cli/eslint-plugin-ember/pull/2593) Extract rule: template-no-whitespace-within-word ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2594](https://github.com/ember-cli/eslint-plugin-ember/pull/2594) Extract rule: template-no-with ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2595](https://github.com/ember-cli/eslint-plugin-ember/pull/2595) Extract rule: template-no-yield-block-params-to-else-inverse ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2596](https://github.com/ember-cli/eslint-plugin-ember/pull/2596) Extract rule: template-no-yield-only ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2597](https://github.com/ember-cli/eslint-plugin-ember/pull/2597) Extract rule: template-no-yield-to-default ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2598](https://github.com/ember-cli/eslint-plugin-ember/pull/2598) Extract rule: template-quotes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2599](https://github.com/ember-cli/eslint-plugin-ember/pull/2599) Extract rule: template-require-aria-activedescendant-tabindex ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2600](https://github.com/ember-cli/eslint-plugin-ember/pull/2600) Extract rule: template-require-button-type ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2602](https://github.com/ember-cli/eslint-plugin-ember/pull/2602) Extract rule: template-require-each-key ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2603](https://github.com/ember-cli/eslint-plugin-ember/pull/2603) Extract rule: template-require-form-method ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2604](https://github.com/ember-cli/eslint-plugin-ember/pull/2604) Extract rule: template-require-has-block-helper ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2605](https://github.com/ember-cli/eslint-plugin-ember/pull/2605) Extract rule: template-require-iframe-src-attribute ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2606](https://github.com/ember-cli/eslint-plugin-ember/pull/2606) Extract rule: template-require-iframe-title ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2607](https://github.com/ember-cli/eslint-plugin-ember/pull/2607) Extract rule: template-require-input-label ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2608](https://github.com/ember-cli/eslint-plugin-ember/pull/2608) Extract rule: template-require-lang-attribute ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2609](https://github.com/ember-cli/eslint-plugin-ember/pull/2609) Extract rule: template-require-mandatory-role-attributes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2610](https://github.com/ember-cli/eslint-plugin-ember/pull/2610) Extract rule: template-require-media-caption ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2611](https://github.com/ember-cli/eslint-plugin-ember/pull/2611) Extract rule: template-require-presentational-children ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2612](https://github.com/ember-cli/eslint-plugin-ember/pull/2612) Extract rule: template-require-splattributes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2613](https://github.com/ember-cli/eslint-plugin-ember/pull/2613) Extract rule: template-require-strict-mode ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2614](https://github.com/ember-cli/eslint-plugin-ember/pull/2614) Extract rule: template-require-valid-alt-text ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2625](https://github.com/ember-cli/eslint-plugin-ember/pull/2625) Extract rule: template-require-valid-form-groups ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2616](https://github.com/ember-cli/eslint-plugin-ember/pull/2616) Extract rule: template-require-valid-named-block-naming-format ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2617](https://github.com/ember-cli/eslint-plugin-ember/pull/2617) Extract rule: template-self-closing-void-elements ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2618](https://github.com/ember-cli/eslint-plugin-ember/pull/2618) Extract rule: template-simple-modifiers ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2619](https://github.com/ember-cli/eslint-plugin-ember/pull/2619) Extract rule: template-simple-unless ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2621](https://github.com/ember-cli/eslint-plugin-ember/pull/2621) Extract rule: template-splat-attributes-only ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2622](https://github.com/ember-cli/eslint-plugin-ember/pull/2622) Extract rule: template-style-concatenation ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2623](https://github.com/ember-cli/eslint-plugin-ember/pull/2623) Extract rule: template-table-groups ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2624](https://github.com/ember-cli/eslint-plugin-ember/pull/2624) Extract rule: template-template-length ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2578](https://github.com/ember-cli/eslint-plugin-ember/pull/2578) Add native class support for order-in-controllers ([@RobbieTheWagner](https://github.com/RobbieTheWagner))
  * [#2561](https://github.com/ember-cli/eslint-plugin-ember/pull/2561) Add native class support for order-in-routes ([@RobbieTheWagner](https://github.com/RobbieTheWagner))
  * [#2560](https://github.com/ember-cli/eslint-plugin-ember/pull/2560) Add native class support for order-in-models and no-empty-attrs ([@RobbieTheWagner](https://github.com/RobbieTheWagner))
  * [#2472](https://github.com/ember-cli/eslint-plugin-ember/pull/2472) Extract rule: template-no-invalid-link-text ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2551](https://github.com/ember-cli/eslint-plugin-ember/pull/2551) Add `no-tracked-built-ins` rule and ember-source version utility ([@Copilot](https://github.com/apps/copilot-swe-agent))
  * [#2552](https://github.com/ember-cli/eslint-plugin-ember/pull/2552) Add `no-modifier-argument-destructuring` rule ([@Copilot](https://github.com/apps/copilot-swe-agent))
  * [#2529](https://github.com/ember-cli/eslint-plugin-ember/pull/2529) Skip builtin-component-arguments in GJS/GTS when not imported from @ember/component ([@johanrd](https://github.com/johanrd))
  * [#2413](https://github.com/ember-cli/eslint-plugin-ember/pull/2413) Extract rule: template-no-builtin-form-components ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2419](https://github.com/ember-cli/eslint-plugin-ember/pull/2419) Extract rule: template-no-duplicate-attributes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2427](https://github.com/ember-cli/eslint-plugin-ember/pull/2427) Extract rule: template-no-duplicate-landmark-elements ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2418](https://github.com/ember-cli/eslint-plugin-ember/pull/2418) Extract rule: template-no-down-event-binding ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2426](https://github.com/ember-cli/eslint-plugin-ember/pull/2426) Extract rule: template-no-duplicate-id ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2409](https://github.com/ember-cli/eslint-plugin-ember/pull/2409) Extract rule: template-no-bare-strings ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2452](https://github.com/ember-cli/eslint-plugin-ember/pull/2452) Extract rule: template-modifier-name-case ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2435](https://github.com/ember-cli/eslint-plugin-ember/pull/2435) Extract rule: template-no-forbidden-elements ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2455](https://github.com/ember-cli/eslint-plugin-ember/pull/2455) Extract rule: template-no-args-paths ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2451](https://github.com/ember-cli/eslint-plugin-ember/pull/2451) Extract rule: template-deprecated-render-helper ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2456](https://github.com/ember-cli/eslint-plugin-ember/pull/2456) Extract rule: template-no-at-ember-render-modifiers ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2457](https://github.com/ember-cli/eslint-plugin-ember/pull/2457) Extract rule: template-no-bare-yield ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2460](https://github.com/ember-cli/eslint-plugin-ember/pull/2460) Extract rule: template-no-curly-component-invocation ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2450](https://github.com/ember-cli/eslint-plugin-ember/pull/2450) Extract rule: template-deprecated-inline-view-helper ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2441](https://github.com/ember-cli/eslint-plugin-ember/pull/2441) Extract rule: template-no-inline-linkto ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2438](https://github.com/ember-cli/eslint-plugin-ember/pull/2438) Extract rule: template-no-html-comments ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2461](https://github.com/ember-cli/eslint-plugin-ember/pull/2461) Extract rule: template-attribute-indentation ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2453](https://github.com/ember-cli/eslint-plugin-ember/pull/2453) Extract rule: template-no-action-on-submit-button ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2439](https://github.com/ember-cli/eslint-plugin-ember/pull/2439) Extract rule: template-no-index-component-invocation ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2462](https://github.com/ember-cli/eslint-plugin-ember/pull/2462) Extract rule: template-block-indentation ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2459](https://github.com/ember-cli/eslint-plugin-ember/pull/2459) Extract rule: template-no-class-bindings ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2464](https://github.com/ember-cli/eslint-plugin-ember/pull/2464) Extract rule: template-eol-last ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2465](https://github.com/ember-cli/eslint-plugin-ember/pull/2465) Extract rule: template-linebreak-style ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2467](https://github.com/ember-cli/eslint-plugin-ember/pull/2467) Extract rule: template-no-dynamic-subexpression-invocations ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2468](https://github.com/ember-cli/eslint-plugin-ember/pull/2468) Extract rule: template-no-extra-mut-helper-argument ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2469](https://github.com/ember-cli/eslint-plugin-ember/pull/2469) Extract rule: template-no-implicit-this ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2470](https://github.com/ember-cli/eslint-plugin-ember/pull/2470) Extract rule: template-no-input-block ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2471](https://github.com/ember-cli/eslint-plugin-ember/pull/2471) Extract rule: no-invalid-aria-attributes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2473](https://github.com/ember-cli/eslint-plugin-ember/pull/2473) Extract rule: template-no-invalid-link-title ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2474](https://github.com/ember-cli/eslint-plugin-ember/pull/2474) Extract rule: template-no-invalid-meta ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2475](https://github.com/ember-cli/eslint-plugin-ember/pull/2475) Extract rule: template-no-invalid-role ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2477](https://github.com/ember-cli/eslint-plugin-ember/pull/2477) Extract rule: template-no-link-to-positional-params ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2479](https://github.com/ember-cli/eslint-plugin-ember/pull/2479) Extract rule: template-no-model-argument-in-route-templates ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2480](https://github.com/ember-cli/eslint-plugin-ember/pull/2480) Extract rule: template-no-multiple-empty-lines ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2481](https://github.com/ember-cli/eslint-plugin-ember/pull/2481) Extract rule: template-no-mut-helper ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2482](https://github.com/ember-cli/eslint-plugin-ember/pull/2482) Extract rule: template-no-negated-comparison ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2476](https://github.com/ember-cli/eslint-plugin-ember/pull/2476) Extract rule: template-no-jsx-attributes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2478](https://github.com/ember-cli/eslint-plugin-ember/pull/2478) Extract rule: template-no-link-to-tagname ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2483](https://github.com/ember-cli/eslint-plugin-ember/pull/2483) Extract rule: template-no-negated-condition ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2484](https://github.com/ember-cli/eslint-plugin-ember/pull/2484) Extract rule: template-no-nested-interactive ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2485](https://github.com/ember-cli/eslint-plugin-ember/pull/2485) Extract rule: template-no-nested-landmark ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2486](https://github.com/ember-cli/eslint-plugin-ember/pull/2486) Extract rule: template-no-nested-splattributes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2487](https://github.com/ember-cli/eslint-plugin-ember/pull/2487) Extract rule: template-no-obscure-array-access ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2488](https://github.com/ember-cli/eslint-plugin-ember/pull/2488) Extract rule: template-no-obsolete-elements ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2489](https://github.com/ember-cli/eslint-plugin-ember/pull/2489) Extract rule: template-no-only-default-slot ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2490](https://github.com/ember-cli/eslint-plugin-ember/pull/2490) Extract rule: template-no-outlet-outside-routes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2491](https://github.com/ember-cli/eslint-plugin-ember/pull/2491) Extract rule: template-no-page-title-component ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2440](https://github.com/ember-cli/eslint-plugin-ember/pull/2440) Extract rule: template-no-inline-event-handlers ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2442](https://github.com/ember-cli/eslint-plugin-ember/pull/2442) Extract rule: template-no-inline-styles ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2444](https://github.com/ember-cli/eslint-plugin-ember/pull/2444) Extract rule: template-no-input-placeholder ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2447](https://github.com/ember-cli/eslint-plugin-ember/pull/2447) Extract rule: template-no-invalid-interactive ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2445](https://github.com/ember-cli/eslint-plugin-ember/pull/2445) Extract rule: template-no-input-tagname ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2448](https://github.com/ember-cli/eslint-plugin-ember/pull/2448) Add rule: ember/template-no-deprecated ([@wagenet](https://github.com/wagenet))
  * [#1](https://github.com/ember-cli/eslint-plugin-ember/pull/1) Add base configurations ([@michalsnik](https://github.com/michalsnik))
  * [#2430](https://github.com/ember-cli/eslint-plugin-ember/pull/2430) Extract rule: template-no-empty-headings ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2434](https://github.com/ember-cli/eslint-plugin-ember/pull/2434) Extract rule: template-no-chained-this ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2437](https://github.com/ember-cli/eslint-plugin-ember/pull/2437) Extract rule: template-no-heading-inside-button ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2429](https://github.com/ember-cli/eslint-plugin-ember/pull/2429) Extract rule: template-no-element-event-actions ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2414](https://github.com/ember-cli/eslint-plugin-ember/pull/2414) Extract rule: template-no-capital-arguments ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2407](https://github.com/ember-cli/eslint-plugin-ember/pull/2407) Extract rule: template-no-attrs-in-components ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2412](https://github.com/ember-cli/eslint-plugin-ember/pull/2412) Extract rule: template-no-block-params-for-html-elements ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2408](https://github.com/ember-cli/eslint-plugin-ember/pull/2408) Extract rule: template-no-autofocus-attribute ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2421](https://github.com/ember-cli/eslint-plugin-ember/pull/2421) Extract rule: template-no-array-prototype-extensions ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2404](https://github.com/ember-cli/eslint-plugin-ember/pull/2404) Extract rule: template-no-aria-hidden-body ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2424](https://github.com/ember-cli/eslint-plugin-ember/pull/2424) Extract rule: template-no-action-modifiers ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2403](https://github.com/ember-cli/eslint-plugin-ember/pull/2403) Extract rule: template-no-arguments-for-html-elements ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2405](https://github.com/ember-cli/eslint-plugin-ember/pull/2405) Extract rule: template-no-aria-unsupported-elements ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2423](https://github.com/ember-cli/eslint-plugin-ember/pull/2423) Extract rule: template-no-action ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2420](https://github.com/ember-cli/eslint-plugin-ember/pull/2420) Add strict-gjs and strict-gts configs so that users could opt in to these new rules from ember-template-lint before we do our next major ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2398](https://github.com/ember-cli/eslint-plugin-ember/pull/2398) Extract rule: template-no-abstract-roles ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2399](https://github.com/ember-cli/eslint-plugin-ember/pull/2399) Extract rule: template-no-accesskey-attribute ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2396](https://github.com/ember-cli/eslint-plugin-ember/pull/2396) Extract rule: template-link-rel-noopener ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2395](https://github.com/ember-cli/eslint-plugin-ember/pull/2395) Extract rule: template-link-href-attributes ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2391](https://github.com/ember-cli/eslint-plugin-ember/pull/2391) Extract rule: template-builtin-component-arguments ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2390](https://github.com/ember-cli/eslint-plugin-ember/pull/2390) Extract rule: template-attribute-order ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2383](https://github.com/ember-cli/eslint-plugin-ember/pull/2383) Port template-no-debugger rule from PR #2371 ([@Copilot](https://github.com/apps/copilot-swe-agent))
  * [#2381](https://github.com/ember-cli/eslint-plugin-ember/pull/2381) Port template-no-log rule from PR #2371 ([@Copilot](https://github.com/apps/copilot-swe-agent))

#### :bug: Bug Fix
* `eslint-plugin-ember`
  * [#2676](https://github.com/ember-cli/eslint-plugin-ember/pull/2676) Post-merge-review: use scope manager for block-param tracking in template-no-obsolete-elements ([@johanrd](https://github.com/johanrd))
  * [#2689](https://github.com/ember-cli/eslint-plugin-ember/pull/2689) Post-merge-review: extend allowlist with svg-tags on  template-no-block-params-for-html-elements ([@johanrd](https://github.com/johanrd))
  * [#2662](https://github.com/ember-cli/eslint-plugin-ember/pull/2662) Post-merge-review: fix template-no-passed-in-event-handlers ignore-config format and event list ([@johanrd](https://github.com/johanrd))
  * [#2687](https://github.com/ember-cli/eslint-plugin-ember/pull/2687) Post-merge-review: Fix template-no-arguments-for-html-elements: add svg and mathml elements ([@johanrd](https://github.com/johanrd))
  * [#2683](https://github.com/ember-cli/eslint-plugin-ember/pull/2683) Post-merge-review: Fix template-require-lang-attribute: validate every BCP47 subtag from 'language-tags' ([@johanrd](https://github.com/johanrd))
  * [#2694](https://github.com/ember-cli/eslint-plugin-ember/pull/2694) Post-merge-review: Fix template-no-nested-landmark: drop port-only section/region ([@johanrd](https://github.com/johanrd))
  * [#2688](https://github.com/ember-cli/eslint-plugin-ember/pull/2688) Post-merge-review: Fix template-no-attrs-in-components: align detection with upstream ([@johanrd](https://github.com/johanrd))
  * [#2698](https://github.com/ember-cli/eslint-plugin-ember/pull/2698) Post-merge-review: Fix template-require-form-method: throw on bad config; default enabled ([@johanrd](https://github.com/johanrd))
  * [#2709](https://github.com/ember-cli/eslint-plugin-ember/pull/2709) remove: template-no-negated-comparison ([@johanrd](https://github.com/johanrd))
  * [#2681](https://github.com/ember-cli/eslint-plugin-ember/pull/2681) Post-merge-review: Fix template-no-whitespace-for-layout false positive on attribute values ([@johanrd](https://github.com/johanrd))
  * [#2693](https://github.com/ember-cli/eslint-plugin-ember/pull/2693) Post-merge-review: template-no-negated-comparison: document name-clash; drop non-standard 'ne' ([@johanrd](https://github.com/johanrd))
  * [#2704](https://github.com/ember-cli/eslint-plugin-ember/pull/2704) chore: add originallyFrom metadata to 26 ported rules ([@johanrd](https://github.com/johanrd))
  * [#2707](https://github.com/ember-cli/eslint-plugin-ember/pull/2707) Post-merge-review: template-no-implicit-this support regex patterns in allow option ([@johanrd](https://github.com/johanrd))
  * [#2708](https://github.com/ember-cli/eslint-plugin-ember/pull/2708) restore: template-no-negated-condition (accidentally deleted in 133a16fc) ([@johanrd](https://github.com/johanrd))
  * [#2652](https://github.com/ember-cli/eslint-plugin-ember/pull/2652) Post-merge-review: Fix `template-no-link-to-tagname`: only flag `@tagName`, not bare `tagName`, on angle-bracket `<LinkTo>` ([@johanrd](https://github.com/johanrd))
  * [#2684](https://github.com/ember-cli/eslint-plugin-ember/pull/2684) Post-merge-review: Fix template-require-iframe-title: split messageIds; report each duplicate with index ([@johanrd](https://github.com/johanrd))
  * [#2700](https://github.com/ember-cli/eslint-plugin-ember/pull/2700) Post-merge-review: Fix template-require-media-caption: skip caption check when muted is dynamic ([@johanrd](https://github.com/johanrd))
  * [#2690](https://github.com/ember-cli/eslint-plugin-ember/pull/2690) Post-merge-review: Set templateMode: 'both' on template-no-invalid-interactive ([@johanrd](https://github.com/johanrd))
  * [#2691](https://github.com/ember-cli/eslint-plugin-ember/pull/2691) Post-merge-review: Fix template-no-model-argument-in-route-templates: lint .gjs/.gts and unknown paths ([@johanrd](https://github.com/johanrd))
  * [#2692](https://github.com/ember-cli/eslint-plugin-ember/pull/2692) Post-merge-review: Fix template-no-mut-helper: templateMode 'both' and unwrap setterAlternative ([@johanrd](https://github.com/johanrd))
  * [#2695](https://github.com/ember-cli/eslint-plugin-ember/pull/2695) Post-merge-review: Fix template-no-shadowed-elements: align HTML-element detection with upstream ([@johanrd](https://github.com/johanrd))
  * [#2685](https://github.com/ember-cli/eslint-plugin-ember/pull/2685) Post-merge-review: Add autofix to template-no-unknown-arguments-for-builtin-components: rename args and migrate events ([@johanrd](https://github.com/johanrd))
  * [#2696](https://github.com/ember-cli/eslint-plugin-ember/pull/2696) Post-merge-review: Fix template-quotes: accept boolean root config ([@johanrd](https://github.com/johanrd))
  * [#2697](https://github.com/ember-cli/eslint-plugin-ember/pull/2697) Post-merge-review: Fix template-require-aria-activedescendant-tabindex: autofix for non-div tags ([@johanrd](https://github.com/johanrd))
  * [#2686](https://github.com/ember-cli/eslint-plugin-ember/pull/2686) Post-merge-review: Fix template-require-context-role: align aria-hidden scope and report oc with upstream ([@johanrd](https://github.com/johanrd))
  * [#2699](https://github.com/ember-cli/eslint-plugin-ember/pull/2699) Post-merge-review: Fix template-require-mandatory-role-attributes: read StringLiteral .value not .original ([@johanrd](https://github.com/johanrd))
  * [#2701](https://github.com/ember-cli/eslint-plugin-ember/pull/2701) Post-merge-review: Fix template-table-groups: align with upstream's table semantics ([@johanrd](https://github.com/johanrd))
  * [#2664](https://github.com/ember-cli/eslint-plugin-ember/pull/2664) Post-merge-review: Fix `template-no-at-ember-render-modifiers`: detect GJS/GTS imports ([@johanrd](https://github.com/johanrd))
  * [#2654](https://github.com/ember-cli/eslint-plugin-ember/pull/2654) Post-merge-review: Fix `template-no-action-modifiers` autofix: skip when hash pairs are present ([@johanrd](https://github.com/johanrd))
  * [#2680](https://github.com/ember-cli/eslint-plugin-ember/pull/2680) Post-merge-review: Fix template-no-invalid-link-text: skip when link contains non-text children ([@johanrd](https://github.com/johanrd))
  * [#2677](https://github.com/ember-cli/eslint-plugin-ember/pull/2677) Post-merge-review: Fix `template-no-action` false positive in GJS/GTS ([@johanrd](https://github.com/johanrd))
  * [#2675](https://github.com/ember-cli/eslint-plugin-ember/pull/2675) Post-merge-review: Fix `template-no-unnecessary-component-helper`: skip autofix for invalid GJS/GTS identifiers ([@johanrd](https://github.com/johanrd))
  * [#2682](https://github.com/ember-cli/eslint-plugin-ember/pull/2682) Post-merge-review: Fix template-no-duplicate-landmark-elements false positive on dynamic aria-label ([@johanrd](https://github.com/johanrd))
  * [#2660](https://github.com/ember-cli/eslint-plugin-ember/pull/2660) Post-merge-review: Fix `template-no-invalid-aria-attributes`: reject boolean strings for string-typed ARIA attributes ([@johanrd](https://github.com/johanrd))
  * [#2659](https://github.com/ember-cli/eslint-plugin-ember/pull/2659) Post-merge-review: Fix `template-no-implicit-this`: callee detection, block-param scoping, bare `{{this}}` ([@johanrd](https://github.com/johanrd))
  * [#2658](https://github.com/ember-cli/eslint-plugin-ember/pull/2658) Post-merge-review: Fix `template-no-dynamic-subexpression-invocations` false positive on body-position `this.*` mustaches ([@johanrd](https://github.com/johanrd))
  * [#2657](https://github.com/ember-cli/eslint-plugin-ember/pull/2657) Post-merge-review: Fix `template-no-curly-component-invocation`: preserve `this.`/`@`/local names in suggestions, and skip JS scope bindings ([@johanrd](https://github.com/johanrd))
  * [#2656](https://github.com/ember-cli/eslint-plugin-ember/pull/2656) Post-merge-review: Fix `template-no-chained-this` autofix: also update the closing tag ([@johanrd](https://github.com/johanrd))
  * [#2679](https://github.com/ember-cli/eslint-plugin-ember/pull/2679) Post-merge-review: Fix `template-no-inline-linkto` false positive in GJS/GTS ([@johanrd](https://github.com/johanrd))
  * [#2668](https://github.com/ember-cli/eslint-plugin-ember/pull/2668) Post-merge-review: Fix `template-no-unbound` false positive in GJS/GTS ([@johanrd](https://github.com/johanrd))
  * [#2661](https://github.com/ember-cli/eslint-plugin-ember/pull/2661) Post-merge-review: Fix `template-no-multiple-empty-lines`: detect trailing empty lines and fix reported location ([@johanrd](https://github.com/johanrd))
  * [#2663](https://github.com/ember-cli/eslint-plugin-ember/pull/2663) Post-merge-review: Fix `template-no-empty-headings`: recognize `<this.X>`, `<@x>`, `<ns.X>` as accessible content ([@johanrd](https://github.com/johanrd))
  * [#2665](https://github.com/ember-cli/eslint-plugin-ember/pull/2665) Post-merge-review: Fix `template-deprecated-render-helper` false positive in GJS/GTS ([@johanrd](https://github.com/johanrd))
  * [#2666](https://github.com/ember-cli/eslint-plugin-ember/pull/2666) Post-merge-review: Fix `template-deprecated-inline-view-helper` false positive in GJS/GTS ([@johanrd](https://github.com/johanrd))
  * [#2667](https://github.com/ember-cli/eslint-plugin-ember/pull/2667) Post-merge-review: Fix `template-no-class-bindings` false positive in GJS/GTS ([@johanrd](https://github.com/johanrd))
  * [#2670](https://github.com/ember-cli/eslint-plugin-ember/pull/2670) Post-merge-review: Fix `template-no-log` false positive on JS scope bindings in GJS/GTS ([@johanrd](https://github.com/johanrd))
  * [#2671](https://github.com/ember-cli/eslint-plugin-ember/pull/2671) Post-merge-review: Fix `template-no-outlet-outside-routes` false positive on imported `outlet` ([@johanrd](https://github.com/johanrd))
  * [#2673](https://github.com/ember-cli/eslint-plugin-ember/pull/2673) Post-merge-review: Fix `template-require-has-block-helper`: skip JS scope bindings ([@johanrd](https://github.com/johanrd))
  * [#2674](https://github.com/ember-cli/eslint-plugin-ember/pull/2674) Post-merge-review: Fix `template-no-invalid-link-title`: track `@ember/routing` LinkTo import ([@johanrd](https://github.com/johanrd))
  * [#2672](https://github.com/ember-cli/eslint-plugin-ember/pull/2672) Post-merge-review: Fix `template-require-input-label` mustache branch: apply strict-mode guard ([@johanrd](https://github.com/johanrd))
  * [#2669](https://github.com/ember-cli/eslint-plugin-ember/pull/2669) Post-merge-review: Fix `template-no-input-tagname` false positive in GJS/GTS ([@johanrd](https://github.com/johanrd))
  * [#2678](https://github.com/ember-cli/eslint-plugin-ember/pull/2678) Post-merge-review: Fix `template-no-input-block` false positive in GJS/GTS ([@johanrd](https://github.com/johanrd))
  * [#2651](https://github.com/ember-cli/eslint-plugin-ember/pull/2651) Post-merge-review: Fix `template-no-invalid-interactive`: align interactive element detection with upstream ([@johanrd](https://github.com/johanrd))
  * [#2647](https://github.com/ember-cli/eslint-plugin-ember/pull/2647) Post-merge-review: Restore autofix for `template-simple-unless` ([@johanrd](https://github.com/johanrd))
  * [#2650](https://github.com/ember-cli/eslint-plugin-ember/pull/2650) Post merge-review: Fix `template-no-quoteless-attributes` false positive on quoted values ([@johanrd](https://github.com/johanrd))
  * [#2646](https://github.com/ember-cli/eslint-plugin-ember/pull/2646) Post-merge-review: Restore autofix for template-no-positional-data-test-selectors ([@johanrd](https://github.com/johanrd))
  * [#2645](https://github.com/ember-cli/eslint-plugin-ember/pull/2645) Post-merge-review: Fix `template-no-this-in-template-only-components`: detect `.hbs` files with backing class on disk ([@johanrd](https://github.com/johanrd))
  * [#2648](https://github.com/ember-cli/eslint-plugin-ember/pull/2648) Post-merge-review: Restore autofix for `template-no-redundant-fn` ([@johanrd](https://github.com/johanrd))
  * [#2649](https://github.com/ember-cli/eslint-plugin-ember/pull/2649) Post-merge-review: Restore autofix for template-sort-invocations ([@johanrd](https://github.com/johanrd))
  * [#2644](https://github.com/ember-cli/eslint-plugin-ember/pull/2644) Post-merge-review: Fix `template-no-unused-block-params`: detect angle-bracket block params and walk modifiers ([@johanrd](https://github.com/johanrd))
  * [#2637](https://github.com/ember-cli/eslint-plugin-ember/pull/2637) Fix rule: ember/template-no-invalid-link-text ([@tcjr](https://github.com/tcjr))
  * [#2636](https://github.com/ember-cli/eslint-plugin-ember/pull/2636) Fix rule: ember/template-no-unused-block-params ([@tcjr](https://github.com/tcjr))
  * [#2633](https://github.com/ember-cli/eslint-plugin-ember/pull/2633) Remove new configs introduced in template-lint extraction ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2630](https://github.com/ember-cli/eslint-plugin-ember/pull/2630) Post-merge cleanup of eslint 10 copmpat to match with #2492 ([@johanrd](https://github.com/johanrd))
  * [#2626](https://github.com/ember-cli/eslint-plugin-ember/pull/2626) Delete rules that never existed or have overlap with other rules ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2549](https://github.com/ember-cli/eslint-plugin-ember/pull/2549) [BUGFIX]: `no-test-import-export` false positive on non-test files ending in -test ([@johanrd](https://github.com/johanrd))
  * [#2536](https://github.com/ember-cli/eslint-plugin-ember/pull/2536) Restore autofix: `template-block-indentation` ([@johanrd](https://github.com/johanrd))
  * [#2523](https://github.com/ember-cli/eslint-plugin-ember/pull/2523) Post-merge review of #2461 (`template-attribute-indentation`) ([@johanrd](https://github.com/johanrd))
  * [#2524](https://github.com/ember-cli/eslint-plugin-ember/pull/2524) Post-merge review of #2427 (`template-no-duplicate-landmark-elements`) ([@johanrd](https://github.com/johanrd))
  * [#2525](https://github.com/ember-cli/eslint-plugin-ember/pull/2525) Post-merge review of #2450 (`template-deprecated-inline-view-helper`) ([@johanrd](https://github.com/johanrd))
  * [#2526](https://github.com/ember-cli/eslint-plugin-ember/pull/2526) Post-merge review of #2460 (`template-no-curly-component-invocation`) ([@johanrd](https://github.com/johanrd))
  * [#2527](https://github.com/ember-cli/eslint-plugin-ember/pull/2527) Post-merge review of #2426 (`template-no-duplicate-id`) ([@johanrd](https://github.com/johanrd))
  * [#2528](https://github.com/ember-cli/eslint-plugin-ember/pull/2528) Skip reporting for <form method="dialog"> submit buttons ([@johanrd](https://github.com/johanrd))
  * [#2530](https://github.com/ember-cli/eslint-plugin-ember/pull/2530) Restore autofix: `template-no-action-modifiers` ([@johanrd](https://github.com/johanrd))
  * [#2531](https://github.com/ember-cli/eslint-plugin-ember/pull/2531) Restore autofix: `template-no-array-prototype-extensions` ([@johanrd](https://github.com/johanrd))
  * [#2532](https://github.com/ember-cli/eslint-plugin-ember/pull/2532) Restore autofix: `template-no-multiple-empty-lines` ([@johanrd](https://github.com/johanrd))
  * [#2533](https://github.com/ember-cli/eslint-plugin-ember/pull/2533) Restore autofix: `no-negated-condition` ([@johanrd](https://github.com/johanrd))
  * [#2534](https://github.com/ember-cli/eslint-plugin-ember/pull/2534) Restore autofix: `template-no-obscure-array-access` ([@johanrd](https://github.com/johanrd))
  * [#2537](https://github.com/ember-cli/eslint-plugin-ember/pull/2537) Restore autofix: `template-no-curly-component-invocation` ([@johanrd](https://github.com/johanrd))
  * [#2535](https://github.com/ember-cli/eslint-plugin-ember/pull/2535) Restore autofix: `template-attribute-order` ([@johanrd](https://github.com/johanrd))
  * [#2538](https://github.com/ember-cli/eslint-plugin-ember/pull/2538) [BUGFIX legacy]: `avoid-leaking-state-in-ember-objects` false positives with TypeScript type assertions ([@johanrd](https://github.com/johanrd))
  * [#2540](https://github.com/ember-cli/eslint-plugin-ember/pull/2540) [BUGFIX]: Recognize `import { service }` in order-in-* rules and `no-implicit-injections` ([@johanrd](https://github.com/johanrd))
  * [#2541](https://github.com/ember-cli/eslint-plugin-ember/pull/2541) [BUGFIX legacy]: Broaden mirage.js `findBy` exclusion in `no-array-prototype-extensions` ([@johanrd](https://github.com/johanrd))
  * [#2542](https://github.com/ember-cli/eslint-plugin-ember/pull/2542) [BUGFIX]: `no-tracked-properties-from-args` crash on method calls ([@johanrd](https://github.com/johanrd))
  * [#2544](https://github.com/ember-cli/eslint-plugin-ember/pull/2544) [BUGFIX]: `no-empty-glimmer-component-classes` false positive on `declare class` ([@johanrd](https://github.com/johanrd))
  * [#2545](https://github.com/ember-cli/eslint-plugin-ember/pull/2545) [BUGFIX]: `no-test-import-export` false positive on package imports ([@johanrd](https://github.com/johanrd))
  * [#2539](https://github.com/ember-cli/eslint-plugin-ember/pull/2539) [BUGFIX legacy]: `require-computed-macros` self-referential autofix ([@johanrd](https://github.com/johanrd))
  * [#2550](https://github.com/ember-cli/eslint-plugin-ember/pull/2550) [BUGFIX legacy] Fix no-implicit-injections crash with mixins and empty class bodies ([@johanrd](https://github.com/johanrd))
  * [#2546](https://github.com/ember-cli/eslint-plugin-ember/pull/2546) [BUGFIX legacy]: `no-deprecated-router-transition-methods` crash with mixins ([@johanrd](https://github.com/johanrd))
  * [#2548](https://github.com/ember-cli/eslint-plugin-ember/pull/2548) [BUGFIX]: `no-actions-hash` crash on TypeScript declare properties ([@johanrd](https://github.com/johanrd))
  * [#2543](https://github.com/ember-cli/eslint-plugin-ember/pull/2543) [BUGFIX]: `no-computed-properties-in-native-classes` when file mixes native and classic classes ([@johanrd](https://github.com/johanrd))
  * [#2508](https://github.com/ember-cli/eslint-plugin-ember/pull/2508) Fix locals tracking for deprecated-inline-view ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2496](https://github.com/ember-cli/eslint-plugin-ember/pull/2496) Post-merge review of #2408 (`template-no-autofocus-attribute`) ([@johanrd](https://github.com/johanrd))
  * [#2500](https://github.com/ember-cli/eslint-plugin-ember/pull/2500) Post-merge review of #2424 (`template-no-action-modifiers`) ([@johanrd](https://github.com/johanrd))
  * [#2504](https://github.com/ember-cli/eslint-plugin-ember/pull/2504) Post-merge review of #2484 (`template-no-nested-interactive`) ([@johanrd](https://github.com/johanrd))
  * [#2501](https://github.com/ember-cli/eslint-plugin-ember/pull/2501) Post-merge review of #2471 (`template-no-invalid-aria-attributes`) ([@johanrd](https://github.com/johanrd))
  * [#2498](https://github.com/ember-cli/eslint-plugin-ember/pull/2498) Post-merge review of #2475 (`template-no-invalid-role`) ([@johanrd](https://github.com/johanrd))
  * [#2495](https://github.com/ember-cli/eslint-plugin-ember/pull/2495) Post-merge review of #2469 (`template-no-implicit-this`) ([@johanrd](https://github.com/johanrd))
  * [#2497](https://github.com/ember-cli/eslint-plugin-ember/pull/2497)  Post-merge review of #2477 (`template-no-link-to-positional-params`) ([@johanrd](https://github.com/johanrd))
  * [#2494](https://github.com/ember-cli/eslint-plugin-ember/pull/2494) Post-merge review of #2395 (`template-link-href-attributes`) ([@johanrd](https://github.com/johanrd))
  * [#2503](https://github.com/ember-cli/eslint-plugin-ember/pull/2503) Post-merge review of #2396 (`template-link-rel-noopener`) ([@johanrd](https://github.com/johanrd))
  * [#2499](https://github.com/ember-cli/eslint-plugin-ember/pull/2499) Post-merge review of #2414 (`template-no-capital-arguments`) ([@johanrd](https://github.com/johanrd))
  * [#2502](https://github.com/ember-cli/eslint-plugin-ember/pull/2502) Post-merge review of #2381 (`template-no-log`) ([@johanrd](https://github.com/johanrd))
  * [#2505](https://github.com/ember-cli/eslint-plugin-ember/pull/2505) Post-merge review of #2429 (`template-no-element-event-actions`) ([@johanrd](https://github.com/johanrd))
  * [#2506](https://github.com/ember-cli/eslint-plugin-ember/pull/2506) Post-merge review of #2423 (`template-no-action`) ([@johanrd](https://github.com/johanrd))
  * [#2507](https://github.com/ember-cli/eslint-plugin-ember/pull/2507) Post-merge review of #2490 (`template-no-outlet-outside-routes`) ([@johanrd](https://github.com/johanrd))
  * [#2493](https://github.com/ember-cli/eslint-plugin-ember/pull/2493) Post-merge review of #2442 (`template-no-inline-styles`) ([@johanrd](https://github.com/johanrd))

#### :house: Internal
* `eslint-plugin-ember`
  * [#2705](https://github.com/ember-cli/eslint-plugin-ember/pull/2705) Post-merge-review: add missing tests from ember-template-lint test suite ([@johanrd](https://github.com/johanrd))
  * [#2703](https://github.com/ember-cli/eslint-plugin-ember/pull/2703) Post-merge-review: cleanup redundant upstream comments ([@johanrd](https://github.com/johanrd))
  * [#2632](https://github.com/ember-cli/eslint-plugin-ember/pull/2632) Add mitata benchmark for recommended config linting ([@NullVoxPopuli-ai-agent](https://github.com/NullVoxPopuli-ai-agent))
  * [#2520](https://github.com/ember-cli/eslint-plugin-ember/pull/2520) Revert "Update devDependencies (major)" ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2519](https://github.com/ember-cli/eslint-plugin-ember/pull/2519) Revert "Update devDependencies" ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2518](https://github.com/ember-cli/eslint-plugin-ember/pull/2518) Revert "Lock file maintenance" ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2466](https://github.com/ember-cli/eslint-plugin-ember/pull/2466) Add editor config utils ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2463](https://github.com/ember-cli/eslint-plugin-ember/pull/2463) Update the docs-generator to handle the 'templateMode: loose' in rules from nvp/port-ember-template-lint-for-gjs-gts ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2449](https://github.com/ember-cli/eslint-plugin-ember/pull/2449) Upgrade parser ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2382](https://github.com/ember-cli/eslint-plugin-ember/pull/2382) Cleanup unused snapshots ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
  * [#2368](https://github.com/ember-cli/eslint-plugin-ember/pull/2368) We have prettier (and thus editors detect and run it), but what we check in CI is different ([@NullVoxPopuli](https://github.com/NullVoxPopuli))

#### Committers: 8
- @NullVoxPopuli's reduced-access machine account for AI usage ([@NullVoxPopuli-ai-agent](https://github.com/NullVoxPopuli-ai-agent))
- Copilot [Bot] ([@copilot-swe-agent](https://github.com/apps/copilot-swe-agent))
- Michał Sajnóg ([@michalsnik](https://github.com/michalsnik))
- Peter Wagenet ([@wagenet](https://github.com/wagenet))
- Robbie Wagner ([@RobbieTheWagner](https://github.com/RobbieTheWagner))
- Tom Carter ([@tcjr](https://github.com/tcjr))
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)
- [@johanrd](https://github.com/johanrd)

## Release (2026-01-22)

* 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))

#### :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))

#### Committers: 3
- Arthur ([@c0rydoras](https://github.com/c0rydoras))
- LEGO Technix ([@lego-technix](https://github.com/lego-technix))
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)

## Release (2025-11-27)

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))

#### Committers: 1
- Jarek Radosz ([@CvX](https://github.com/CvX))

## Release (2025-09-14)

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))

#### :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))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Vasyl Marchuk ([@VasylMarchuk](https://github.com/VasylMarchuk))

## Release (2025-08-22)

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))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## Release (2025-08-22)

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))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## Release (2025-08-22)

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))

#### :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))

#### Committers: 3
- Richard ([@rmachielse](https://github.com/rmachielse))
- [@Geodewd549](https://github.com/Geodewd549)
- [@MrChocolatine](https://github.com/MrChocolatine)

## Release (2025-07-24)

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))

#### :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))

#### Committers: 2
- Andrew Kazakov ([@andreww2012](https://github.com/andreww2012))
- Peter Wagenet ([@wagenet](https://github.com/wagenet))

## Release (2025-07-12)

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))

#### Committers: 1
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)

## Release (2025-01-30)

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))

#### :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))

#### Committers: 2
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)
- [@github-actions[bot]](https://github.com/apps/github-actions)

## Release (2025-01-30)

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))

#### Committers: 1
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)

## Release (2024-11-22)

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))

#### Committers: 1
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)

## Release (2024-11-21)

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))

#### Committers: 1
- Patrick Pircher ([@patricklx](https://github.com/patricklx))

## Release (2024-10-25)

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))

#### Committers: 1
- Peter Wagenet ([@wagenet](https://github.com/wagenet))

## Release (2024-10-23)

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))

#### :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))

#### :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))

#### 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))

#### 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))

#### :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))

#### :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))

#### 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))

#### Committers: 1
- [@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))

#### :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))

#### :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))

#### 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))

#### :house: Internal
* [#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))

#### :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))

#### :house: Internal
* [#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 `<template>` blocks (not allowed) ([@patricklx](https://github.com/patricklx))
* [#2055](https://github.com/ember-cli/eslint-plugin-ember/pull/2055) Bump ember-eslint-parser to `0.2.5` - Includes fix for SVG scope parsing ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
* [#2048](https://github.com/ember-cli/eslint-plugin-ember/pull/2048) Bump ember-eslint-parser to `0.2.4` ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
* [#2046](https://github.com/ember-cli/eslint-plugin-ember/pull/2046) Fix issue with `no-deprecated-router-transition-methods` throwing errors outside of class usage ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
* [#2027](https://github.com/ember-cli/eslint-plugin-ember/pull/2027) Allow ember-data type registry imports in `use-ember-data-rfc-395-imports` rule ([@wagenet](https://github.com/wagenet))

#### :memo: Documentation
* [#1969](https://github.com/ember-cli/eslint-plugin-ember/pull/1969) Add automatic rule option lists with eslint-doc-generator ([@bmish](https://github.com/bmish))
* [#1966](https://github.com/ember-cli/eslint-plugin-ember/pull/1966) Automatically generate README configs list with eslint-doc-generator ([@bmish](https://github.com/bmish))
* [#1980](https://github.com/ember-cli/eslint-plugin-ember/pull/1980) Improve gts gjs configuration example ([@patricklx](https://github.com/patricklx))
* [#1990](https://github.com/ember-cli/eslint-plugin-ember/pull/1990) Fix names for `recommended-gts` / `recommended-gjs` configs in readme ([@c0rydoras](https://github.com/c0rydoras))

#### :house: Internal
* [#1974](https://github.com/ember-cli/eslint-plugin-ember/pull/1974) Update eslint-plugin-unicorn to v49 ([@bmish](https://github.com/bmish))
* [#2018](https://github.com/ember-cli/eslint-plugin-ember/pull/2018) Switch to ESLint flat config internally ([@bmish](https://github.com/bmish))
* [#2036](https://github.com/ember-cli/eslint-plugin-ember/pull/2036) Add `lint:fix` script ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
* [#2037](https://github.com/ember-cli/eslint-plugin-ember/pull/2037) Add volta in package.json ([@NullVoxPopuli](https://github.com/NullVoxPopuli))

#### Committers: 4
- Arthur Deierlein ([@c0rydoras](https://github.com/c0rydoras))
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Patrick Pircher ([@patricklx](https://github.com/patricklx))
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)


## v12.0.0-alpha.4 (2023-12-22)

#### :boom: Breaking Change
* [#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))

#### :house: Internal
* [#2036](https://github.com/ember-cli/eslint-plugin-ember/pull/2036) Add `lint:fix` script ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
* [#2037](https://github.com/ember-cli/eslint-plugin-ember/pull/2037) Add volta in package.json ([@NullVoxPopuli](https://github.com/NullVoxPopuli))

#### Committers: 1
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)


## v12.0.0-alpha.3 (2023-12-13)

#### :rocket: Enhancement
* [#2020](https://github.com/ember-cli/eslint-plugin-ember/pull/2020) Support ESLint flat config ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#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 `<template>` blocks (not allowed) ([@patricklx](https://github.com/patricklx))
* [#2027](https://github.com/ember-cli/eslint-plugin-ember/pull/2027) Allow ember-data type registry imports in `use-ember-data-rfc-395-imports` rule ([@wagenet](https://github.com/wagenet))

#### :house: Internal
* [#2018](https://github.com/ember-cli/eslint-plugin-ember/pull/2018) Switch to ESLint flat config internally ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Patrick Pircher ([@patricklx](https://github.com/patricklx))


## v12.0.0-alpha.2 (2023-11-10)

#### :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))

#### Committers: 1
- Patrick Pircher ([@patricklx](https://github.com/patricklx))


## v12.0.0-alpha.1 (2023-11-07)

#### :boom: Breaking Change
* [#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))

#### :rocket: Enhancement
* [#1984](https://github.com/ember-cli/eslint-plugin-ember/pull/1984) Update `@typescript-eslint/` dependencies to v6 ([@patricklx](https://github.com/patricklx))

#### :memo: Documentation
* [#1980](https://github.com/ember-cli/eslint-plugin-ember/pull/1980) Improve gts gjs configuration example ([@patricklx](https://github.com/patricklx))
* [#1990](https://github.com/ember-cli/eslint-plugin-ember/pull/1990) Fix names for `recommended-gts` / `recommended-gjs` configs in readme ([@c0rydoras](https://github.com/c0rydoras))

#### Committers: 2
- Arthur Deierlein ([@c0rydoras](https://github.com/c0rydoras))
- Patrick Pircher ([@patricklx](https://github.com/patricklx))


## v12.0.0-alpha.0 (2023-11-04)

#### :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))
* [#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))

#### :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))

#### :memo: Documentation
* [#1969](https://github.com/ember-cli/eslint-plugin-ember/pull/1969) Add automatic rule option lists with eslint-doc-generator ([@bmish](https://github.com/bmish))
* [#1966](https://github.com/ember-cli/eslint-plugin-ember/pull/1966) Automatically generate README configs list with eslint-doc-generator ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#1974](https://github.com/ember-cli/eslint-plugin-ember/pull/1974) Update eslint-plugin-unicorn to v49 ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Patrick Pircher ([@patricklx](https://github.com/patricklx))


## v11.12.0 (2023-12-12)

#### :rocket: Enhancement
* [#2020](https://github.com/ember-cli/eslint-plugin-ember/pull/2020) Support ESLint flat config ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#2027](https://github.com/ember-cli/eslint-plugin-ember/pull/2027) Allow ember-data type registry imports in `use-ember-data-rfc-395-imports` rule ([@wagenet](https://github.com/wagenet))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Peter Wagenet ([@wagenet](https://github.com/wagenet))


## v11.11.1 (2023-08-22)

#### :bug: Bug Fix
* [#1941](https://github.com/ember-cli/eslint-plugin-ember/pull/1941) Revert "Use custom parser for gts/gjs (#1920)" ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v11.11.0 (2023-08-21)

#### :rocket: Enhancement
* [#1920](https://github.com/ember-cli/eslint-plugin-ember/pull/1920) Use custom parser for gts/gjs ([@patricklx](https://github.com/patricklx))

#### Committers: 1
- Patrick Pircher ([@patricklx](https://github.com/patricklx))


## v11.10.0 (2023-07-07)

#### :rocket: Enhancement
* [#1902](https://github.com/ember-cli/eslint-plugin-ember/pull/1902) Add new rule `no-at-ember-render-modifiers` ([@NullVoxPopuli](https://github.com/NullVoxPopuli))

#### Committers: 1
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)


## v11.9.0 (2023-06-26)

#### :rocket: Enhancement
* [#1899](https://github.com/ember-cli/eslint-plugin-ember/pull/1899) Check template tags for service usages in `no-unused-services` ([@lin-ll](https://github.com/lin-ll))

#### :house: Internal
* [#1898](https://github.com/ember-cli/eslint-plugin-ember/pull/1898) [no-empty-glimmer-component-classes] Import the template tag value instead of hardcode ([@chrisrng](https://github.com/chrisrng))

#### Committers: 2
- Chris Ng ([@chrisrng](https://github.com/chrisrng))
- Lucy Lin ([@lin-ll](https://github.com/lin-ll))


## v11.8.0 (2023-05-31)

#### :rocket: Enhancement
* [#1847](https://github.com/ember-cli/eslint-plugin-ember/pull/1847) Add `useAt` option to autofix `.lastObject` to `.at(-1)` in `no-get` rule ([@ArtixZ](https://github.com/ArtixZ))

#### Committers: 1
- [@ArtixZ](https://github.com/ArtixZ)


## v11.7.2 (2023-05-23)

#### :bug: Bug Fix
* [#1876](https://github.com/ember-cli/eslint-plugin-ember/pull/1876) Allow generic type in TypeScript class in `no-empty-glimmer-component-classes` rule ([@chrisrng](https://github.com/chrisrng))

#### Committers: 7
- Chris Ng ([@chrisrng](https://github.com/chrisrng))


## v11.7.1 (2023-05-21)

#### :bug: Bug Fix
* [#1870](https://github.com/ember-cli/eslint-plugin-ember/pull/1870) Fix crash with default computed property import in `no-unused-services` rule ([@bmish](https://github.com/bmish))
* [#1869](https://github.com/ember-cli/eslint-plugin-ember/pull/1869) Avoid crash with `inject` decorator in `no-restricted-service-injections` rule ([@bmish](https://github.com/bmish))
* [#1871](https://github.com/ember-cli/eslint-plugin-ember/pull/1871) Avoid further decorator detection crashes in `no-restricted-service-injections` rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v11.7.0 (2023-05-19)

#### :rocket: Enhancement
* [#1865](https://github.com/ember-cli/eslint-plugin-ember/pull/1865) Support autofix of numerical property access and ternary expressions in `no-get` rule ([@evanjehl](https://github.com/evanjehl))

#### :bug: Bug Fix
* [#1866](https://github.com/ember-cli/eslint-plugin-ember/pull/1866) Account for class only having template tag in `no-empty-glimmer-component-classes` rule ([@chrisrng](https://github.com/chrisrng))

#### Committers: 2
- Chris Ng ([@chrisrng](https://github.com/chrisrng))
- [@evanjehl](https://github.com/evanjehl)


## v11.6.0 (2023-05-16)

#### :rocket: Enhancement
* [#1853](https://github.com/ember-cli/eslint-plugin-ember/pull/1853) Support autofix in gts files ([@patricklx](https://github.com/patricklx))

#### :bug: Bug Fix
* [#1852](https://github.com/ember-cli/eslint-plugin-ember/pull/1852) Only show `no-undef` errors for templates in gts files ([@patricklx](https://github.com/patricklx))

#### Committers: 1
- Patrick Pircher ([@patricklx](https://github.com/patricklx))


## v11.5.2 (2023-04-22)

#### :bug: Bug Fix
* [#1841](https://github.com/ember-cli/eslint-plugin-ember/pull/1841) Fix a bug in autofixer and autofix additional cases with `firstObject and `lastObject` in `no-get` rule ([@ArtixZ](https://github.com/ArtixZ))

#### Committers: 1
- [@ArtixZ](https://github.com/ArtixZ)


## v11.5.1 (2023-04-07)

#### :bug: Bug Fix
* [#1828](https://github.com/ember-cli/eslint-plugin-ember/pull/1828) Clarify error message for `no-pause-test` rule ([@deanmarano](https://github.com/deanmarano))

#### Committers: 1
- Dean Marano ([@deanmarano](https://github.com/deanmarano))


## v11.5.0 (2023-04-05)

#### :rocket: Enhancement
* [#1823](https://github.com/ember-cli/eslint-plugin-ember/pull/1823) Add `getProperties` autofixer to `no-get` rule ([@ArtixZ](https://github.com/ArtixZ))

#### Committers: 1
- [@ArtixZ](https://github.com/ArtixZ)


## v11.4.9 (2023-03-28)

#### :bug: Bug Fix
* [#1819](https://github.com/ember-cli/eslint-plugin-ember/pull/1819) Bump ember-template-imports to 3.4.2 ([@hmajoros](https://github.com/hmajoros))

#### Committers: 1
- Hank Majoros ([@hmajoros](https://github.com/hmajoros))


## v11.4.8 (2023-03-14)

#### :bug: Bug Fix
* [#1801](https://github.com/ember-cli/eslint-plugin-ember/pull/1801) Fix issue with token mapping for lint errors on template tokens in gjs/gts files by displaying eslint error on the opening `<template>` tag ([@hmajoros](https://github.com/hmajoros))
* [#1788](https://github.com/ember-cli/eslint-plugin-ember/pull/1788) Fix `no-array-prototype extensions` undefined error from trying to access callee from non-CallExpression ([@canrozanes](https://github.com/canrozanes))
* [#1795](https://github.com/ember-cli/eslint-plugin-ember/pull/1795) refactor glimmer post-process, better handle template tag ([@hmajoros](https://github.com/hmajoros))

#### Committers: 2
- Can Rozanes ([@canrozanes](https://github.com/canrozanes))
- Hank Majoros ([@hmajoros](https://github.com/hmajoros))


## v11.4.7 (2023-03-02)

#### :bug: Bug Fix
* [#1793](https://github.com/ember-cli/eslint-plugin-ember/pull/1793) [gjs] Fix bug with regex issues when parsing GLIMMER_TEMPLATE ([@hmajoros](https://github.com/hmajoros))
* [#1792](https://github.com/ember-cli/eslint-plugin-ember/pull/1792) [gjs] Return original diagnostic if transformed line matches original line in glimmer preprocessor ([@hmajoros](https://github.com/hmajoros))

#### Committers: 1
- Hank Majoros ([@hmajoros](https://github.com/hmajoros))


## v11.4.6 (2023-02-01)

#### :bug: Bug Fix
* [#1767](https://github.com/ember-cli/eslint-plugin-ember/pull/1767) Bump ember-template-imports to `v3.4.1` ([@gossi](https://github.com/gossi))

#### Committers: 1
- Thomas Gossmann ([@gossi](https://github.com/gossi))


## v11.4.5 (2023-01-28)

#### :bug: Bug Fix
* [#1748](https://github.com/ember-cli/eslint-plugin-ember/pull/1748) Ignore Ember Data `store` service calls in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))
* [#1761](https://github.com/ember-cli/eslint-plugin-ember/pull/1761) Fix false positive with `Promise.any()` in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v11.4.4 (2023-01-23)

#### :bug: Bug Fix
* [#1749](https://github.com/ember-cli/eslint-plugin-ember/pull/1749) Ignore direct instantiation of `EmberArray` in `no-array-prototype-extensions` rule ([@canrozanes](https://github.com/canrozanes))

#### Committers: 1
- Can Rozanes ([@canrozanes](https://github.com/canrozanes))


## v11.4.3 (2023-01-15)

#### :bug: Bug Fix
* [#1735](https://github.com/ember-cli/eslint-plugin-ember/pull/1735) Fix crash from attempting to access non-existent dependent key in `no-tracked-property-from-args` rule ([@joancc](https://github.com/joancc))

#### Committers: 1
- Joan Cejudo ([@joancc](https://github.com/joancc))


## v11.4.2 (2023-01-04)

#### :bug: Bug Fix
* [#1731](https://github.com/ember-cli/eslint-plugin-ember/pull/1731) Handle new service import style in several rules ([@wagenet](https://github.com/wagenet))

#### :house: Internal
* [#1730](https://github.com/ember-cli/eslint-plugin-ember/pull/1730) Add eslint-remote-tester ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Peter Wagenet ([@wagenet](https://github.com/wagenet))


## v11.4.1 (2023-01-03)

#### :bug: Bug Fix
* [#1722](https://github.com/ember-cli/eslint-plugin-ember/pull/1722) Fix some crashes including with legacy classes in `no-deprecated-router-transition-methods` and `no-implicit-injections` rules ([@rtablada](https://github.com/rtablada))

#### Committers: 1
- Ryan Tablada ([@rtablada](https://github.com/rtablada))


## v11.4.0 (2022-12-30)

#### :rocket: Enhancement
* [#1715](https://github.com/ember-cli/eslint-plugin-ember/pull/1715) Add new rule `no-deprecated-router-transition-methods` ([@rtablada](https://github.com/rtablada))
* [#1714](https://github.com/ember-cli/eslint-plugin-ember/pull/1714) Add new rule `no-implicit-injections` ([@rtablada](https://github.com/rtablada))

#### :house: Internal
* [#1720](https://github.com/ember-cli/eslint-plugin-ember/pull/1720) Deprecate trivial node type check helpers ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Ryan Tablada ([@rtablada](https://github.com/rtablada))


## v11.3.1 (2022-12-21)

#### :bug: Bug Fix
* [#1712](https://github.com/ember-cli/eslint-plugin-ember/pull/1712) Fix crash with `no-tracked-properties-from-args` rule ([@joancc](https://github.com/joancc))

#### :house: Internal
* [#1713](https://github.com/ember-cli/eslint-plugin-ember/pull/1713) Switch to config file for `eslint-doc-generator` ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Joan Cejudo ([@joancc](https://github.com/joancc))


## v11.3.0 (2022-12-20)

#### :rocket: Enhancement
* [#1703](https://github.com/ember-cli/eslint-plugin-ember/pull/1703) Add new rule `no-runloop` ([@lin-ll](https://github.com/lin-ll))
* [#1702](https://github.com/ember-cli/eslint-plugin-ember/pull/1702) Add new rule `no-tracked-properties-from-args` ([@joancc](https://github.com/joancc))

#### :memo: Documentation
* [#1693](https://github.com/ember-cli/eslint-plugin-ember/pull/1693) Mention ESLint overrides for glob patterns in `no-restricted-service-injections` rule doc ([@bmish](https://github.com/bmish))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Joan Cejudo ([@joancc](https://github.com/joancc))
- Lucy Lin ([@lin-ll](https://github.com/lin-ll))


## v11.2.1 (2022-11-30)

#### :bug: Bug Fix
* [#1687](https://github.com/ember-cli/eslint-plugin-ember/pull/1687) Don't lose optional chaining with `objectAt` in autofix for `no-array-prototype-extensions` rule ([@52052100](https://github.com/52052100))

#### :house: Internal
* [#1686](https://github.com/ember-cli/eslint-plugin-ember/pull/1686) Temporarily skip failing test scenario for gjs/gts processor ([@nlfurniss](https://github.com/nlfurniss))

#### Committers: 2
- Lan Yang ([@52052100](https://github.com/52052100))
- Nathaniel Furniss ([@nlfurniss](https://github.com/nlfurniss))


## v11.2.0 (2022-10-27)

#### :rocket: Enhancement
* [#1395](https://github.com/ember-cli/eslint-plugin-ember/pull/1395) Support `<template>` (no-undef, etc) ([@NullVoxPopuli](https://github.com/NullVoxPopuli))

#### :bug: Bug Fix
* [#1640](https://github.com/ember-cli/eslint-plugin-ember/pull/1640) Avoid in-place sorting in `sortBy` autofixer in `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))

#### :memo: Documentation
* [#1646](https://github.com/ember-cli/eslint-plugin-ember/pull/1646) Automate docs with eslint-doc-generator ([@bmish](https://github.com/bmish))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Santhosh Venkata Rama Siva Thanakala Gani ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)


## v11.1.0 (2022-10-18)

#### :rocket: Enhancement
* [#1632](https://github.com/ember-cli/eslint-plugin-ember/pull/1632) Add `getEach` to `map` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1633](https://github.com/ember-cli/eslint-plugin-ember/pull/1633) Add `setEach` to `forEach` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1631](https://github.com/ember-cli/eslint-plugin-ember/pull/1631) Add `invoke` to `map` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1629](https://github.com/ember-cli/eslint-plugin-ember/pull/1629) Add `reject` to `filter` autofixer for no-array-prototype-extensions rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1628](https://github.com/ember-cli/eslint-plugin-ember/pull/1628) Add `objectsAt` to `map` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1630](https://github.com/ember-cli/eslint-plugin-ember/pull/1630) Add `isAny` and `isEvery` autofixers for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1627](https://github.com/ember-cli/eslint-plugin-ember/pull/1627) Add `rejectBy` to `filter` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1626](https://github.com/ember-cli/eslint-plugin-ember/pull/1626) Add `uniqBy` to `reduce` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1621](https://github.com/ember-cli/eslint-plugin-ember/pull/1621) Add `sortBy` to `sort` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1620](https://github.com/ember-cli/eslint-plugin-ember/pull/1620) Add `uniq` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1619](https://github.com/ember-cli/eslint-plugin-ember/pull/1619) Add `mapBy` to `map` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1617](https://github.com/ember-cli/eslint-plugin-ember/pull/1617) Add `without` to `filter` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1616](https://github.com/ember-cli/eslint-plugin-ember/pull/1616) Add `toArray` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1615](https://github.com/ember-cli/eslint-plugin-ember/pull/1615) Add `objectAt` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1614](https://github.com/ember-cli/eslint-plugin-ember/pull/1614) Add `findBy` to `find` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1611](https://github.com/ember-cli/eslint-plugin-ember/pull/1611) Add `compact` to `filter` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1610](https://github.com/ember-cli/eslint-plugin-ember/pull/1610) Add `filterBy` to `filter` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))
* [#1609](https://github.com/ember-cli/eslint-plugin-ember/pull/1609) Add `any` to `some` autofixer for `no-array-prototype-extensions` rule ([@tgvrssanthosh](https://github.com/tgvrssanthosh))

#### :bug: Bug Fix
* [#1635](https://github.com/ember-cli/eslint-plugin-ember/pull/1635) Simpler autofix for `sortBy` with single arg for `no-array-prototype-extension` rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#1639](https://github.com/ember-cli/eslint-plugin-ember/pull/1639) Explain what the autofixer covers in `no-array-prototype-extensions` rule doc ([@bmish](https://github.com/bmish))
* [#1618](https://github.com/ember-cli/eslint-plugin-ember/pull/1618) Add codemod links for jQuery-related rules ([@bmish](https://github.com/bmish))
* [#1601](https://github.com/ember-cli/eslint-plugin-ember/pull/1601) Switch to dash for markdown lists ([@bmish](https://github.com/bmish))
* [#1582](https://github.com/ember-cli/eslint-plugin-ember/pull/1582) Add link to deprecation RFC in `no-array-prototype-extensions` rule doc ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Santhosh Venkata Rama Siva Thanakala Gani ([@tgvrssanthosh](https://github.com/tgvrssanthosh))


## v11.0.6 (2022-08-18)

#### :bug: Bug Fix
* [#1562](https://github.com/ember-cli/eslint-plugin-ember/pull/1562) Remove `no-array-prototype-extensions` rule from `recommended` config ([@ef4](https://github.com/ef4))
* [#1555](https://github.com/ember-cli/eslint-plugin-ember/pull/1555) Ignore `super` in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#1569](https://github.com/ember-cli/eslint-plugin-ember/pull/1569) Add link to Ember function prototype extension deprecation RFC ([@bmish](https://github.com/bmish))
* [#1554](https://github.com/ember-cli/eslint-plugin-ember/pull/1554) Mention `no-array-prototype-extensions` ember-template-lint rule ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Edward Faulkner ([@ef4](https://github.com/ef4))


## v11.0.5 (2022-08-02)

#### :bug: Bug Fix
* [#1552](https://github.com/ember-cli/eslint-plugin-ember/pull/1552) Fix false positive with `reject()` on instance of `RSVP.defer()` in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))
* [#1547](https://github.com/ember-cli/eslint-plugin-ember/pull/1547) Improve false positive detection, especially for variable names containing Set/Map, in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v11.0.4 (2022-07-29)

#### :bug: Bug Fix
* [#1546](https://github.com/ember-cli/eslint-plugin-ember/pull/1546) Fix false positives with `RSVP.Promise.reject()` in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#1545](https://github.com/ember-cli/eslint-plugin-ember/pull/1545) Improve documentation for `no-*-prototype-extensions` rules ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v11.0.3 (2022-07-26)

#### :bug: Bug Fix
* [#1544](https://github.com/ember-cli/eslint-plugin-ember/pull/1544) Fix false positive with Set/Map-initialized *private* class properties in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))
* [#1543](https://github.com/ember-cli/eslint-plugin-ember/pull/1543) Fix false positive with Set/Map-initialized *public* class properties in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v11.0.2 (2022-07-23)

#### :bug: Bug Fix
* [#1538](https://github.com/ember-cli/eslint-plugin-ember/pull/1538) Fix false positive with simple Set/Map-initialized objects in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))
* [#1539](https://github.com/ember-cli/eslint-plugin-ember/pull/1539) Fix false positive with `RSVP.reject()` in `no-array-prototype-extensions` ([@gilest](https://github.com/gilest))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Giles Thompson ([@gilest](https://github.com/gilest))


## v11.0.1 (2022-07-21)

#### :bug: Bug Fix
* [#1536](https://github.com/ember-cli/eslint-plugin-ember/pull/1536) Ignore some commonly-known non-array functions/objects to reduce false positives in `no-array-prototype-extensions` rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v11.0.0 (2022-07-20)

#### :boom: Breaking Change
* [#1517](https://github.com/ember-cli/eslint-plugin-ember/pull/1517) Add `no-array-prototype-extensions` as `recommended` rule (NOTE: removed as `recommended` in v11.0.6) ([@bmish](https://github.com/bmish))
* [#1515](https://github.com/ember-cli/eslint-plugin-ember/pull/1515) Drop support for ESLint v6 ([@bmish](https://github.com/bmish))
* [#1318](https://github.com/ember-cli/eslint-plugin-ember/pull/1318) Drop support for Node 10, 12, 15, 17 ([@aggmoulik](https://github.com/aggmoulik))
* [#1519](https://github.com/ember-cli/eslint-plugin-ember/pull/1519) Enable `useOptionalChaining` option by default for `no-get` rule ([@bmish](https://github.com/bmish))
* [#1518](https://github.com/ember-cli/eslint-plugin-ember/pull/1518) Remove `base` config ([@bmish](https://github.com/bmish))
* [#1516](https://github.com/ember-cli/eslint-plugin-ember/pull/1516) Set config `ecmaVersion` to `2020` ([@bmish](https://github.com/bmish))
* [#1513](https://github.com/ember-cli/eslint-plugin-ember/pull/1513) Stop exporting non-Ember utils ([@bmish](https://github.com/bmish))
* [#1514](https://github.com/ember-cli/eslint-plugin-ember/pull/1514) Strictly define Node API ([@bmish](https://github.com/bmish))
* [#1512](https://github.com/ember-cli/eslint-plugin-ember/pull/1512) Update `avoid-leaking-state-in-ember-objects` rule to augment instead of replace default config ([@bmish](https://github.com/bmish))

#### :rocket: Enhancement
* [#1529](https://github.com/ember-cli/eslint-plugin-ember/pull/1529) Better support native class property definitions (and update to ESLint v8 internally) ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#1484](https://github.com/ember-cli/eslint-plugin-ember/pull/1484) Improve links in `no-array-prototype-extensions` rule doc ([@bmish](https://github.com/bmish))
* [#1480](https://github.com/ember-cli/eslint-plugin-ember/pull/1480) Update optional rule example to use actual optional rule ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#1481](https://github.com/ember-cli/eslint-plugin-ember/pull/1481) Add Node 18 to CI ([@ddzz](https://github.com/ddzz))
* [#1352](https://github.com/ember-cli/eslint-plugin-ember/pull/1352) Upgrade ESLint dependencies and fix new linting issues ([@ddzz](https://github.com/ddzz))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Darius Dzien ([@ddzz](https://github.com/ddzz))
- Moulik Aggarwal ([@aggmoulik](https://github.com/aggmoulik))


## v10.6.1 (2022-05-04)

#### :bug: Bug Fix
* [#1476](https://github.com/ember-cli/eslint-plugin-ember/pull/1476) Catch `replace` in `no-array-prototype-extensions` rule ([@smilland](https://github.com/smilland))

#### Committers: 1
- Hang Li ([@smilland](https://github.com/smilland))


## v10.6.0 (2022-04-08)

#### :rocket: Enhancement
* [#1461](https://github.com/ember-cli/eslint-plugin-ember/pull/1461) Add new rule `no-array-prototype-extensions` ([@smilland](https://github.com/smilland))

#### Committers: 1
- Hang Li ([@smilland](https://github.com/smilland))


## v10.5.9 (2022-02-14)

#### :bug: Bug Fix
* [#1431](https://github.com/ember-cli/eslint-plugin-ember/pull/1431) Fix crash in `jquery-ember-run` rule ([@ef4](https://github.com/ef4))

#### :memo: Documentation
* [#1410](https://github.com/ember-cli/eslint-plugin-ember/pull/1410) Fix broken URLs in documentation ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#1402](https://github.com/ember-cli/eslint-plugin-ember/pull/1402) Add GitHub Actions to Dependabot config ([@ddzz](https://github.com/ddzz))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Darius D. ([@ddzz](https://github.com/ddzz))
- Edward Faulkner ([@ef4](https://github.com/ef4))


## v10.5.8 (2021-11-23)

#### :bug: Bug Fix
* [#1374](https://github.com/ember-cli/eslint-plugin-ember/pull/1374) Allow empty-but-decorated classes in `no-empty-glimmer-component-classes` rule ([@adrigzr](https://github.com/adrigzr))

#### :memo: Documentation
* [#1364](https://github.com/ember-cli/eslint-plugin-ember/pull/1364) Fix typos in violation message for `classic-decorator-hooks` rule ([@nlfurniss](https://github.com/nlfurniss))

#### Committers: 4
- Adrián González Rus ([@adrigzr](https://github.com/adrigzr))
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Darius D. ([@ddzz](https://github.com/ddzz))
- Nathaniel Furniss ([@nlfurniss](https://github.com/nlfurniss))


## v10.5.7 (2021-10-13)

#### :bug: Bug Fix
* [#1336](https://github.com/ember-cli/eslint-plugin-ember/pull/1336) Avoid crash when estraverse does not recognize node type during traversal ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v10.5.6 (2021-10-12)

#### :bug: Bug Fix
* [#1333](https://github.com/ember-cli/eslint-plugin-ember/pull/1333) Support ESLint v8 by switching from ESLint's internal traverser to `estraverse` ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v10.5.5 (2021-09-20)

#### :bug: Bug Fix
* [#1297](https://github.com/ember-cli/eslint-plugin-ember/pull/1297) Support if/else route definitions in `no-shadow-route-definition` rule ([@raido](https://github.com/raido))

#### :memo: Documentation
* [#1300](https://github.com/ember-cli/eslint-plugin-ember/pull/1300) Add `eslint-plugin` keywords in package.json ([@bmish](https://github.com/bmish))
* [#1294](https://github.com/ember-cli/eslint-plugin-ember/pull/1294) Super call missing arguments in some rule docs ([@StephanH90](https://github.com/StephanH90))

#### :house: Internal
* [#1301](https://github.com/ember-cli/eslint-plugin-ember/pull/1301) Add jsdoc `type` annotation to rules ([@bmish](https://github.com/bmish))
* [#1299](https://github.com/ember-cli/eslint-plugin-ember/pull/1299) Cache dependencies on GitHub Actions to speed up CI ([@ddzz](https://github.com/ddzz))

#### Committers: 4
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Darius Dzien ([@ddzz](https://github.com/ddzz))
- Raido Kuli ([@raido](https://github.com/raido))
- [@StephanH90](https://github.com/StephanH90)


## v10.5.4 (2021-08-24)

#### :bug: Bug Fix
* [#1286](https://github.com/ember-cli/eslint-plugin-ember/pull/1286) Avoid unnecessary optional chaining in autofix for `no-get` rule when using `useOptionalChaining` option ([@raycohen](https://github.com/raycohen))

#### Committers: 1
- Ray Cohen ([@raycohen](https://github.com/raycohen))


## v10.5.3 (2021-08-17)

#### :bug: Bug Fix
* [#1283](https://github.com/ember-cli/eslint-plugin-ember/pull/1283) Fix crash with `let foo` in `no-controller-access-in-routes` ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v10.5.2 (2021-08-17)

#### :bug: Bug Fix
* [#1281](https://github.com/ember-cli/eslint-plugin-ember/pull/1281) Catch destructured controller access in `no-controller-access-in-routes` rule ([@bmish](https://github.com/bmish))
* [#1277](https://github.com/ember-cli/eslint-plugin-ember/pull/1277) Fix IIFE crash in `require-return-from-computed` rule ([@aniketh-deepsource](https://github.com/aniketh-deepsource))

#### :memo: Documentation
* [#1275](https://github.com/ember-cli/eslint-plugin-ember/pull/1275) Fix typo in `no-controller-access-in-routes` rule doc ([@locks](https://github.com/locks))
* [#1245](https://github.com/ember-cli/eslint-plugin-ember/pull/1245) Explain how to fix violations in `no-empty-glimmer-component-classes` rule doc ([@hxqlin](https://github.com/hxqlin))

#### :house: Internal
* [#1280](https://github.com/ember-cli/eslint-plugin-ember/pull/1280) Add CodeQL ([@bmish](https://github.com/bmish))

#### Committers: 4
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Hannah Lin ([@hxqlin](https://github.com/hxqlin))
- Ricardo Mendes ([@locks](https://github.com/locks))
- [@aniketh-deepsource](https://github.com/aniketh-deepsource)


## v10.5.1 (2021-06-20)

#### :bug: Bug Fix
* [#1237](https://github.com/ember-cli/eslint-plugin-ember/pull/1237) Stop using deprecated ESLint `report` API ([@bmish](https://github.com/bmish))
* [#1230](https://github.com/ember-cli/eslint-plugin-ember/pull/1230) Use `meta.hasSuggestions` for suggestable rules to prepare for ESLint 8 ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#1241](https://github.com/ember-cli/eslint-plugin-ember/pull/1241) Indicate which rules provide automated suggestions in README rules table ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#1222](https://github.com/ember-cli/eslint-plugin-ember/pull/1222) Use `ecmaVersion` of `2020` internally for tests/linting ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v10.5.0 (2021-05-30)

#### :rocket: Enhancement
* [#1188](https://github.com/ember-cli/eslint-plugin-ember/pull/1188) Add new rule [no-implicit-service-injection-argument](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-implicit-service-injection-argument.md) ([@bmish](https://github.com/bmish))
* [#1194](https://github.com/ember-cli/eslint-plugin-ember/pull/1194) Add new rule [no-restricted-property-modifications](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-restricted-property-modifications.md) ([@bmish](https://github.com/bmish))
* [#1199](https://github.com/ember-cli/eslint-plugin-ember/pull/1199) build(deps): bump eslint-utils from 2.1.0 to 3.0.0 ([@dependabot[bot]](https://github.com/apps/dependabot))

#### :bug: Bug Fix
* [#1212](https://github.com/ember-cli/eslint-plugin-ember/pull/1212) Improve detection of property names (check string literals in addition to identifiers) in several rules ([@bmish](https://github.com/bmish))
* [#1211](https://github.com/ember-cli/eslint-plugin-ember/pull/1211) Fix false positive with non-components in `require-tagless-components` rule ([@bmish](https://github.com/bmish))
* [#1210](https://github.com/ember-cli/eslint-plugin-ember/pull/1210) Avoid some false positives with lodash usage when recognizing extended Ember objects ([@bmish](https://github.com/bmish))
* [#1197](https://github.com/ember-cli/eslint-plugin-ember/pull/1197) Check import when detecting controller usage in `order-in-*` rules ([@lin-ll](https://github.com/lin-ll))
* [#1196](https://github.com/ember-cli/eslint-plugin-ember/pull/1196) Check import when detecting observer usage in `order-in-*` rules ([@lin-ll](https://github.com/lin-ll))

#### :memo: Documentation
* [#1213](https://github.com/ember-cli/eslint-plugin-ember/pull/1213) Explain why some rules are not in the `recommended` config ([@bmish](https://github.com/bmish))
* [#1204](https://github.com/ember-cli/eslint-plugin-ember/pull/1204) Improve columns in README rules table ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Lucy Lin ([@lin-ll](https://github.com/lin-ll))


## v10.4.2 (2021-05-13)

#### :bug: Bug Fix
* [#1195](https://github.com/ember-cli/eslint-plugin-ember/pull/1195) Fix false positives with service/controller/observer detection in some rules ([@lin-ll](https://github.com/lin-ll))
* [#1187](https://github.com/ember-cli/eslint-plugin-ember/pull/1187) Fix optional chaining support to handle newer ChainExpression implementation ([@bmish](https://github.com/bmish))
* [#1179](https://github.com/ember-cli/eslint-plugin-ember/pull/1179) Handle spread syntax with both `babel-eslint` and `@babel/eslint-parser` parsers in `order-in-*` rules ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#1191](https://github.com/ember-cli/eslint-plugin-ember/pull/1191) Use `requireindex` to export rules and configs ([@bmish](https://github.com/bmish))
* [#1180](https://github.com/ember-cli/eslint-plugin-ember/pull/1180) Switch from `babel-eslint` to `@babel/eslint-parser` ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Lucy Lin ([@lin-ll](https://github.com/lin-ll))


## v10.4.1 (2021-04-21)

#### :bug: Bug Fix
* [#1160](https://github.com/ember-cli/eslint-plugin-ember/pull/1160) Account for observer dependent keys in `no-unused-services` rule ([@lin-ll](https://github.com/lin-ll))
* [#1164](https://github.com/ember-cli/eslint-plugin-ember/pull/1164) Account for `observes` decorator in `no-unused-services` rule ([@lin-ll](https://github.com/lin-ll))
* [#1162](https://github.com/ember-cli/eslint-plugin-ember/pull/1162) Update several rules to check imports when checking for Ember service injections ([@lin-ll](https://github.com/lin-ll))
* [#1167](https://github.com/ember-cli/eslint-plugin-ember/pull/1167) Update route rules to handle route path option passed as object variable ([@bmish](https://github.com/bmish))
* [#1165](https://github.com/ember-cli/eslint-plugin-ember/pull/1165) Improve robustness of classic class body detection in several rules using `getModuleProperties` util ([@bmish](https://github.com/bmish))
* [#1159](https://github.com/ember-cli/eslint-plugin-ember/pull/1159) Improve robustness of classic class component body detection in `require-tagless-components` rule ([@bmish](https://github.com/bmish))
* [#1158](https://github.com/ember-cli/eslint-plugin-ember/pull/1158) Improve robustness of classic class controller body detection in `no-controllers` rule ([@bmish](https://github.com/bmish))
* [#1168](https://github.com/ember-cli/eslint-plugin-ember/pull/1168) Avoid some false positives with jQuery usage when recognizing extended objects ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#1161](https://github.com/ember-cli/eslint-plugin-ember/pull/1161) Tweak messaging around false positives in `no-unused-services` rule ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Lucy Lin ([@lin-ll](https://github.com/lin-ll))


## v10.4.0 (2021-04-20)

#### :rocket: Enhancement
* [#1143](https://github.com/ember-cli/eslint-plugin-ember/pull/1143) Add new rule `no-unused-services` ([@lin-ll](https://github.com/lin-ll))
* [#1127](https://github.com/ember-cli/eslint-plugin-ember/pull/1127) Add automated suggestion to `route-path-style` rule for converting route path to kebab case ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#1150](https://github.com/ember-cli/eslint-plugin-ember/pull/1150) `no-get` rule should ignore proxy classes that look like `ObjectProxy.extend(SomeMixin)` ([@bmish](https://github.com/bmish))
* [#1149](https://github.com/ember-cli/eslint-plugin-ember/pull/1149) Detect classic classes which have object variables passed to them in `no-classic-classes` rule ([@bmish](https://github.com/bmish))
* [#1135](https://github.com/ember-cli/eslint-plugin-ember/pull/1135) Fix false positive in same level routes but nested paths in `no-shadow-route-definition` rule ([@raido](https://github.com/raido))
* [#1132](https://github.com/ember-cli/eslint-plugin-ember/pull/1132) Fix crash with dynamic/variable route name in `no-shadow-route-definition` rule (again) ([@raido](https://github.com/raido))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Lucy Lin ([@lin-ll](https://github.com/lin-ll))
- Raido Kuli ([@raido](https://github.com/raido))


## v10.3.0 (2021-03-22)

#### :rocket: Enhancement
* [#1113](https://github.com/ember-cli/eslint-plugin-ember/pull/1113) Add `additionalClassImports` option to `no-classic-classes` rule ([@scalvert](https://github.com/scalvert))

#### :bug: Bug Fix
* [#1115](https://github.com/ember-cli/eslint-plugin-ember/pull/1115) Fix crash with dynamic/variable route name in `no-shadow-route-definition` rule ([@bmish](https://github.com/bmish))
* [#1102](https://github.com/ember-cli/eslint-plugin-ember/pull/1102) Fix crash with `this.extend()` in `no-classic-classes` rule ([@bmish](https://github.com/bmish))
* [#1114](https://github.com/ember-cli/eslint-plugin-ember/pull/1114) Ensure rules validate arrays in options to have at least one item and unique items ([@bmish](https://github.com/bmish))
* [#1103](https://github.com/ember-cli/eslint-plugin-ember/pull/1103) Only calculate source module name once in import util function for slight optimization ([@bmish](https://github.com/bmish))
* [#1081](https://github.com/ember-cli/eslint-plugin-ember/pull/1081) Update `avoid-leaking-state-in-ember-objects` rule to apply to mixins ([@jaydgruber](https://github.com/jaydgruber))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Steve Calvert ([@scalvert](https://github.com/scalvert))
- [@jaydgruber](https://github.com/jaydgruber)


## v10.2.0 (2021-01-31)

#### :rocket: Enhancement
* [#1079](https://github.com/ember-cli/eslint-plugin-ember/pull/1079) Add new rule [no-html-safe](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-html-safe.md) ([@patocallaghan](https://github.com/patocallaghan))

#### :bug: Bug Fix
* [#1072](https://github.com/ember-cli/eslint-plugin-ember/pull/1072) Improve jquery detection in `jquery-ember-run` rule ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Pat O'Callaghan ([@patocallaghan](https://github.com/patocallaghan))


## v10.1.2 (2021-01-11)

#### :bug: Bug Fix
* [#1063](https://github.com/ember-cli/eslint-plugin-ember/pull/1063) Improve detection of globals and catch additional jQuery function calls in `no-jquery` rule ([@BarryThePenguin](https://github.com/BarryThePenguin))
* [#1066](https://github.com/ember-cli/eslint-plugin-ember/pull/1066) Improve detection of globals in `no-global-jquery` rule ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#1069](https://github.com/ember-cli/eslint-plugin-ember/pull/1069) Improve tests for `jquery-ember-run` rule ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Jonathan Haines ([@BarryThePenguin](https://github.com/BarryThePenguin))


## v10.1.1 (2020-12-29)

#### :bug: Bug Fix
* [#1059](https://github.com/ember-cli/eslint-plugin-ember/pull/1059) Do not warn about Glimmer lifecycle hooks on classic components in `no-component-lifecycle-hooks` rule ([@Turbo87](https://github.com/Turbo87))

#### :house: Internal
* [#1060](https://github.com/ember-cli/eslint-plugin-ember/pull/1060) Automate release process with release-it-lerna-changelog ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Tobias Bieniek ([@Turbo87](https://github.com/Turbo87))


## v10.1.0 (2020-12-28)

#### :rocket: Enhancement
* [#1056](https://github.com/ember-cli/eslint-plugin-ember/pull/1056) Add new rule [no-current-route-name](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-current-route-name.md) ([@Turbo87](https://github.com/Turbo87))
* [#1055](https://github.com/ember-cli/eslint-plugin-ember/pull/1055) Add new rule [require-fetch-import](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-fetch-import.md) ([@Turbo87](https://github.com/Turbo87))

#### :bug: Bug Fix
* [#1054](https://github.com/ember-cli/eslint-plugin-ember/pull/1054) Handle commas inside quotes in selectors in [require-valid-css-selector-in-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-valid-css-selector-in-test-helpers.md) rule ([@bmish](https://github.com/bmish))
* [#1051](https://github.com/ember-cli/eslint-plugin-ember/pull/1051) Fix path checks for Windows in [no-test-import-export](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-import-export.md) and [no-test-support-import](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-support-import.md) rules ([@dwickern](https://github.com/dwickern))
* [#1038](https://github.com/ember-cli/eslint-plugin-ember/pull/1038) Improve detection of global window methods in [prefer-ember-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/prefer-ember-test-helpers.md) rule ([@bmish](https://github.com/bmish))
* [#1043](https://github.com/ember-cli/eslint-plugin-ember/pull/1043) Fix false positive in [no-shadow-route-definition](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-shadow-route-definition.md) rule ([@raido](https://github.com/raido))
* [#1040](https://github.com/ember-cli/eslint-plugin-ember/pull/1040) `willDestroy` should be considered a classic component lifecycle hook in [require-super-in-lifecycle-hooks](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-super-in-lifecycle-hooks.md) and [no-component-lifecycle-hooks](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-component-lifecycle-hooks.md) rules ([@bmish](https://github.com/bmish))
* [#1036](https://github.com/ember-cli/eslint-plugin-ember/pull/1036) Catch `willDestroy` Glimmer component hook in [require-super-in-lifecycle-hooks](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-super-in-lifecycle-hooks.md) rule ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#1052](https://github.com/ember-cli/eslint-plugin-ember/pull/1052) Add Windows to CI testing matrix ([@dwickern](https://github.com/dwickern))

#### Committers: 4
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Derek Wickern ([@dwickern](https://github.com/dwickern))
- Raido Kuli ([@raido](https://github.com/raido))
- Tobias Bieniek ([@Turbo87](https://github.com/Turbo87))

## v10.0.2 (2020-12-04)

#### :bug: Bug Fix
* [#1029](https://github.com/ember-cli/eslint-plugin-ember/pull/1029) Handle comma-separated selectors in [require-valid-css-selector-in-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-valid-css-selector-in-test-helpers.md) rule ([@bmish](https://github.com/bmish))
* [#1030](https://github.com/ember-cli/eslint-plugin-ember/pull/1030) Allow using string functions directly from Ember in [no-string-prototype-extensions](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-string-prototype-extensions.md) rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#1028](https://github.com/ember-cli/eslint-plugin-ember/pull/1028) Mention Ember 3.13 minimum version to use tracked properties and Glimmer components in some rule docs ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v10.0.1 (2020-12-02)

#### :bug: Bug Fix
* [#1027](https://github.com/ember-cli/eslint-plugin-ember/pull/1027) Fix crash when non-expression precedes `settled()` in [no-settled-after-test-helper](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-settled-after-test-helper.md) rule ([@Turbo87](https://github.com/Turbo87))

#### Committers: 1
- Tobias Bieniek ([@Turbo87](https://github.com/Turbo87))

## v10.0.0 (2020-12-01)

#### :boom: Breaking Change
* [#1025](https://github.com/ember-cli/eslint-plugin-ember/pull/1025) Promote `octane` rules to `recommended` config and delete `octane` config ([@bmish](https://github.com/bmish))
  * [classic-decorator-hooks](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/classic-decorator-hooks.md)
  * [classic-decorator-no-classic-methods](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/classic-decorator-no-classic-methods.md)
  * [no-actions-hash](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-actions-hash.md)
  * [no-classic-classes](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-classic-classes.md)
  * [no-classic-components](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-classic-components.md)
  * [no-component-lifecycle-hooks](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-component-lifecycle-hooks.md)
  * [no-computed-properties-in-native-classes](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-computed-properties-in-native-classes.md)
  * [require-tagless-components](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-tagless-components.md)
* [#1024](https://github.com/ember-cli/eslint-plugin-ember/pull/1024) Enable additional `recommended` rules ([@bmish](https://github.com/bmish))
  * [no-empty-glimmer-component-classes](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-empty-glimmer-component-classes.md)
  * [no-settled-after-test-helper](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-settled-after-test-helper.md)
  * [no-shadow-route-definition](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-shadow-route-definition.md)
  * [no-string-prototype-extensions](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-string-prototype-extensions.md)
  * [no-test-support-import](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-support-import.md)
  * [no-try-invoke](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-try-invoke.md)
  * [require-valid-css-selector-in-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-valid-css-selector-in-test-helpers.md)
* [#1021](https://github.com/ember-cli/eslint-plugin-ember/pull/1021) Update `checkPlainGetters` option default to true in [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) rule ([@bmish](https://github.com/bmish))
* [#1019](https://github.com/ember-cli/eslint-plugin-ember/pull/1019) Update `checkNativeClasses` option default to true in [require-super-in-init](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-super-in-lifecycle-hooks.md) rule ([@bmish](https://github.com/bmish))
* [#1018](https://github.com/ember-cli/eslint-plugin-ember/pull/1018) Update `checkInitOnly` option default to false in [require-super-in-init](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-super-in-lifecycle-hooks.md) rule ([@bmish](https://github.com/bmish))
* [#1020](https://github.com/ember-cli/eslint-plugin-ember/pull/1020) Rename `require-super-in-init` rule to [require-super-in-lifecycle-hooks](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-super-in-lifecycle-hooks.md) ([@bmish](https://github.com/bmish))
* [#1022](https://github.com/ember-cli/eslint-plugin-ember/pull/1022) Update `checkSafeObjects` option default to true in [no-get-with-default](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get-with-default.md) rule ([@bmish](https://github.com/bmish))
* [#1023](https://github.com/ember-cli/eslint-plugin-ember/pull/1023) Update `checkUnsafeObjects` option default to true in [no-get-with-default](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get-with-default.md) rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#1006](https://github.com/ember-cli/eslint-plugin-ember/pull/1006) Elaborate on configuration in [avoid-leaking-state-in-ember-objects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/avoid-leaking-state-in-ember-objects.md) rule doc ([@cincodenada](https://github.com/cincodenada))
* [#1005](https://github.com/ember-cli/eslint-plugin-ember/pull/1005) Fix typo in [require-valid-css-selector-in-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-valid-css-selector-in-test-helpers.md) rule doc ([@jsturgis](https://github.com/jsturgis))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Jeff Sturgis ([@jsturgis](https://github.com/jsturgis))
- Joel Bradshaw ([@cincodenada](https://github.com/cincodenada))

## v9.6.0 (2020-11-09)

#### :rocket: Enhancement
* [#1000](https://github.com/ember-cli/eslint-plugin-ember/pull/1000) Add `catchSafeObjects` and `catchUnsafeObjects` options (default false) to [no-get-with-default](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get-with-default.md) rule ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#1001](https://github.com/ember-cli/eslint-plugin-ember/pull/1001) Fix issues with [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule autofix with array access in nested path ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v9.5.0 (2020-11-05)

#### :rocket: Enhancement
* [#993](https://github.com/ember-cli/eslint-plugin-ember/pull/993) Add new rule [no-empty-glimmer-component-classes](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-empty-glimmer-component-classes.md) ([@hxqlin](https://github.com/hxqlin))

#### :bug: Bug Fix
* [#998](https://github.com/ember-cli/eslint-plugin-ember/pull/998) Fix autofix for array element access at beginning of path string in `no-get` rule ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Hannah Lin ([@hxqlin](https://github.com/hxqlin))

## v9.4.0 (2020-10-28)

#### :rocket: Enhancement
* [#985](https://github.com/ember-cli/eslint-plugin-ember/pull/985) Add new rule [no-settled-after-test-helper](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-settled-after-test-helper.md) ([@Turbo87](https://github.com/Turbo87))
* [#978](https://github.com/ember-cli/eslint-plugin-ember/pull/978) Add new rule [no-shadow-route-definition](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-shadow-route-definition.md) ([@raido](https://github.com/raido))
* [#986](https://github.com/ember-cli/eslint-plugin-ember/pull/986) Add new rule [no-string-prototype-extensions](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-string-prototype-extensions.md) ([@Turbo87](https://github.com/Turbo87))
* [#980](https://github.com/ember-cli/eslint-plugin-ember/pull/980) Add new rule [require-valid-css-selector-in-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-valid-css-selector-in-test-helpers.md) ([@jsturgis](https://github.com/jsturgis))

#### :house: Internal
* [#991](https://github.com/ember-cli/eslint-plugin-ember/pull/991) Add test to ensure rule test files have correct test suite name ([@bmish](https://github.com/bmish))

#### Committers: 4
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Jeff Sturgis ([@jsturgis](https://github.com/jsturgis))
- Raido Kuli ([@raido](https://github.com/raido))
- Tobias Bieniek ([@Turbo87](https://github.com/Turbo87))

## v9.3.0 (2020-10-08)

#### :rocket: Enhancement
* [#973](https://github.com/ember-cli/eslint-plugin-ember/pull/973) Add new rule [no-try-invoke](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-try-invoke.md) ([@bachvo](https://github.com/bachvo))

#### :bug: Bug Fix
* [#971](https://github.com/ember-cli/eslint-plugin-ember/pull/971) Handle path separators for different platforms in [no-test-support-import](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-support-import.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- bach vo ([@bachvo](https://github.com/bachvo))

## v9.2.0 (2020-10-02)

#### :rocket: Enhancement
* [#966](https://github.com/ember-cli/eslint-plugin-ember/pull/966) Add new rule [no-test-support-import](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-support-import.md) ([@gabrielcsapo](https://github.com/gabrielcsapo))

#### :bug: Bug Fix
* [#967](https://github.com/ember-cli/eslint-plugin-ember/pull/967) Avoid false positives and properly check imports in [no-observers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-observers.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Gabriel Csapo ([@gabrielcsapo](https://github.com/gabrielcsapo))

## v9.1.1 (2020-09-27)

#### :bug: Bug Fix
* [#962](https://github.com/ember-cli/eslint-plugin-ember/pull/962) Do not pass `...arguments` in autofix for attrs hooks in [require-super-in-init](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-super-in-lifecycle-hooks.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v9.1.0 (2020-09-27)

#### :rocket: Enhancement
* [#961](https://github.com/ember-cli/eslint-plugin-ember/pull/961) Add `checkPlainGetters` option (default false) to [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) rule ([@bmish](https://github.com/bmish))
* [#957](https://github.com/ember-cli/eslint-plugin-ember/pull/957) Add `checkInitOnly` (default true) and `checkNativeClasses` (default false) options to [require-super-in-init](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-super-in-lifecycle-hooks.md) rule ([@bmish](https://github.com/bmish))
* [#950](https://github.com/ember-cli/eslint-plugin-ember/pull/950) Add autofixer to [require-super-in-init](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-super-in-lifecycle-hooks.md) rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#956](https://github.com/ember-cli/eslint-plugin-ember/pull/956) Add imports in [no-test-module-for](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-module-for.md) rule doc ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#945](https://github.com/ember-cli/eslint-plugin-ember/pull/945) Add sort-package-json ([@bmish](https://github.com/bmish))
* [#944](https://github.com/ember-cli/eslint-plugin-ember/pull/944) Ensure rule doc notices are present in the correct order ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v9.0.0 (2020-09-07)

#### :boom: Breaking Change
* [#940](https://github.com/ember-cli/eslint-plugin-ember/pull/940) Enable additional [recommended](https://github.com/ember-cli/eslint-plugin-ember/blob/master/lib/recommended-rules.js) rules ([@bmish](https://github.com/bmish))
  * [no-assignment-of-untracked-properties-used-in-tracking-contexts](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-assignment-of-untracked-properties-used-in-tracking-contexts.md)
  * [no-controller-access-in-routes](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-controller-access-in-routes.md)
  * [no-invalid-test-waiters](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-test-waiters.md)
  * [no-noop-setup-on-error-in-before](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-noop-setup-on-error-in-before.md)
  * [no-test-this-render](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-this-render.md)
  * [prefer-ember-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/prefer-ember-test-helpers.md)
* [#943](https://github.com/ember-cli/eslint-plugin-ember/pull/943) Enable `catchEvents` option in [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) rule ([@bmish](https://github.com/bmish))
* [#942](https://github.com/ember-cli/eslint-plugin-ember/pull/942) Enable `catchSafeObjects` option in [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule ([@bmish](https://github.com/bmish))
* [#941](https://github.com/ember-cli/eslint-plugin-ember/pull/941) Enable `catchRouterMicrolib` and `catchRouterMain` options in [no-private-routing-service](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-private-routing-service.md) rule ([@bmish](https://github.com/bmish))
* [#939](https://github.com/ember-cli/eslint-plugin-ember/pull/939) Drop ESLint 5 support and add peer dependency on ESLint 6+ ([@bmish](https://github.com/bmish))
* [#938](https://github.com/ember-cli/eslint-plugin-ember/pull/938) Drop Node 13 support ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.14.0 (2020-09-07)

#### :rocket: Enhancement
* [#934](https://github.com/ember-cli/eslint-plugin-ember/pull/934) Add support and enforcement for spread syntax in `order-in-*` rules ([@bmish](https://github.com/bmish))
* [#928](https://github.com/ember-cli/eslint-plugin-ember/pull/928) Refactor [require-super-in-init](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-super-in-lifecycle-hooks.md) rule to improve performance ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#933](https://github.com/ember-cli/eslint-plugin-ember/pull/933) Fix spread syntax crash in [routes-segments-snake-case](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/routes-segments-snake-case.md) rule ([@bmish](https://github.com/bmish))
* [#932](https://github.com/ember-cli/eslint-plugin-ember/pull/932) Fix spread syntax crash in [route-path-style](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/route-path-style.md) rule ([@bmish](https://github.com/bmish))
* [#930](https://github.com/ember-cli/eslint-plugin-ember/pull/930) Fix spread syntax crash in [no-restricted-resolver-tests](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-restricted-resolver-tests.md) rule ([@bmish](https://github.com/bmish))
* [#931](https://github.com/ember-cli/eslint-plugin-ember/pull/931) Fix spread syntax crash in [no-unnecessary-route-path-option](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-unnecessary-route-path-option.md) rule ([@bmish](https://github.com/bmish))
* [#929](https://github.com/ember-cli/eslint-plugin-ember/pull/929) Fix spread syntax crash in [avoid-using-needs-in-controllers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/avoid-using-needs-in-controllers.md) rule ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#935](https://github.com/ember-cli/eslint-plugin-ember/pull/935) Add some more spread syntax tests ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.13.0 (2020-08-26)

#### :rocket: Enhancement
* [#920](https://github.com/ember-cli/eslint-plugin-ember/pull/920) Add new rule [no-noop-setup-on-error-in-before](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-noop-setup-on-error-in-before.md) ([@v-korshun](https://github.com/v-korshun))

#### :bug: Bug Fix
* [#923](https://github.com/ember-cli/eslint-plugin-ember/pull/923) Fix crash with spread syntax in [no-actions-hash](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-actions-hash.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Viktar ([@v-korshun](https://github.com/v-korshun))

## v8.12.0 (2020-08-18)

#### :rocket: Enhancement
* [#916](https://github.com/ember-cli/eslint-plugin-ember/pull/916) Add `catchEvents` option (default false) to [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) rule ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#914](https://github.com/ember-cli/eslint-plugin-ember/pull/914) Improve `set()` detection logic in [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) rule to avoid false positives, catch missed cases, and check imports ([@bmish](https://github.com/bmish))
* [#919](https://github.com/ember-cli/eslint-plugin-ember/pull/919) Fix crash with variable path in [route-path-style](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/route-path-style.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.11.0 (2020-08-14)

#### :rocket: Enhancement
* [#912](https://github.com/ember-cli/eslint-plugin-ember/pull/912) Add `catchSafeObjects` option (default false) to [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule to catch `get(foo, 'bar')` ([@bmish](https://github.com/bmish))
* [#913](https://github.com/ember-cli/eslint-plugin-ember/pull/913) Add `catchUnsafeObjects` option (default false) to [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule to catch `foo.get('bar')` ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#911](https://github.com/ember-cli/eslint-plugin-ember/pull/911) Update [no-test-import-export](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-import-export.md) rule to allow importing from anything under `tests/helpers` path (when using relative path) ([@bmish](https://github.com/bmish))
* [#909](https://github.com/ember-cli/eslint-plugin-ember/pull/909) Check imports when detecting computed properties in many rules ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))


## v8.10.1 (2020-08-07)

#### :bug: Bug Fix
* [#908](https://github.com/ember-cli/eslint-plugin-ember/pull/908) Check imported `get`/`getProperties`/`getWithDefault` functions for missing dependencies in [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md) rule ([@bmish](https://github.com/bmish))
* [#907](https://github.com/ember-cli/eslint-plugin-ember/pull/907) Check imports in [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md) rule ([@bmish](https://github.com/bmish))
* [#906](https://github.com/ember-cli/eslint-plugin-ember/pull/906) Avoid crash from classes extending a non-identifier superclass during Ember core module check ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.10.0 (2020-08-05)

#### :rocket: Enhancement
* [#898](https://github.com/ember-cli/eslint-plugin-ember/pull/898) Add new rule [no-controller-access-in-routes](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-controller-access-in-routes.md) ([@emonroy](https://github.com/emonroy))
* [#887](https://github.com/ember-cli/eslint-plugin-ember/pull/887) Add option for custom computed property macros in [no-assignment-of-untracked-properties-used-in-tracking-contexts](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-assignment-of-untracked-properties-used-in-tracking-contexts.md) rule ([@mongoose700](https://github.com/mongoose700))

#### Committers: 2
- Eduardo Monroy Martínez ([@emonroy](https://github.com/emonroy))
- Michael Peirce ([@mongoose700](https://github.com/mongoose700))

## v8.9.2 (2020-07-23)

#### :bug: Bug Fix
* [#895](https://github.com/ember-cli/eslint-plugin-ember/pull/895) Update [no-test-import-export](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-import-export.md) rule to allow importing from anything under `tests/helpers` path ([@bmish](https://github.com/bmish))
* [#894](https://github.com/ember-cli/eslint-plugin-ember/pull/894) Ensure [no-attrs-in-components](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-attrs-in-components.md) rule only runs inside components ([@bmish](https://github.com/bmish))
* [#893](https://github.com/ember-cli/eslint-plugin-ember/pull/893) Support array element access in [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule autofix ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#888](https://github.com/ember-cli/eslint-plugin-ember/pull/888) Add npm-package-json-lint ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.9.1 (2020-07-05)

#### :bug: Bug Fix
* [#883](https://github.com/ember-cli/eslint-plugin-ember/pull/883) Gather dependent keys from computed property macros in [no-assignment-of-untracked-properties-used-in-tracking-contexts](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-assignment-of-untracked-properties-used-in-tracking-contexts.md) rule ([@bmish](https://github.com/bmish))
* [#880](https://github.com/ember-cli/eslint-plugin-ember/pull/880) Check imports in [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule ([@bmish](https://github.com/bmish))
* [#881](https://github.com/ember-cli/eslint-plugin-ember/pull/881) Check imports in [no-get-with-default](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get-with-default.md) rule ([@bmish](https://github.com/bmish))
* [#882](https://github.com/ember-cli/eslint-plugin-ember/pull/882) Check imports in [no-pause-test](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-pause-test.md) rule ([@bmish](https://github.com/bmish))
* [#879](https://github.com/ember-cli/eslint-plugin-ember/pull/879) Autofix nested paths in the left side of an assignment without using optional chaining in the [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.9.0 (2020-06-28)

#### :rocket: Enhancement
* [#871](https://github.com/ember-cli/eslint-plugin-ember/pull/871) Add `catchRouterMain` option (default false) to [no-private-routing-service](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-private-routing-service.md) rule ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#870](https://github.com/ember-cli/eslint-plugin-ember/pull/870) Fix false positive involving `this` keyword with `filterBy` / `mapBy` in [require-computed-macros](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-macros.md) rule ([@bmish](https://github.com/bmish))
* [#868](https://github.com/ember-cli/eslint-plugin-ember/pull/868) Fix false negatives in [no-invalid-test-waiters](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-test-waiters.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.8.0 (2020-06-24)

#### :rocket: Enhancement
* [#855](https://github.com/ember-cli/eslint-plugin-ember/pull/855) Add new rule [no-assignment-of-untracked-properties-used-in-tracking-contexts](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-assignment-of-untracked-properties-used-in-tracking-contexts.md) ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#866](https://github.com/ember-cli/eslint-plugin-ember/pull/866) Fix missing import statement in autofix for [no-incorrect-computed-macros](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-incorrect-computed-macros.md) rule ([@bmish](https://github.com/bmish))
* [#864](https://github.com/ember-cli/eslint-plugin-ember/pull/864) Fix default value of `ignoreClassic` option to be true for [no-computed-properties-in-native-classes](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-computed-properties-in-native-classes.md) rule ([@jaydgruber](https://github.com/jaydgruber))
* [#857](https://github.com/ember-cli/eslint-plugin-ember/pull/857) Ignore the left side of an assignment (nested path case) in [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md) rule ([@bmish](https://github.com/bmish))
* [#856](https://github.com/ember-cli/eslint-plugin-ember/pull/856) Handle nested paths with ES5 setters in [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- [@jaydgruber](https://github.com/jaydgruber)

## v8.7.0 (2020-06-15)

#### :rocket: Enhancement
* [#845](https://github.com/ember-cli/eslint-plugin-ember/pull/845) Add `useOptionalChaining` option (default false) to [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule ([@bmish](https://github.com/bmish)
* [#840](https://github.com/ember-cli/eslint-plugin-ember/pull/840) Add `includeNativeGetters` option (default false) to [require-computed-macros](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-macros.md) rule ([@bmish](https://github.com/bmish))
* [#848](https://github.com/ember-cli/eslint-plugin-ember/pull/848) Support optional chaining in [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md) rule ([@bmish](https://github.com/bmish))
* [#846](https://github.com/ember-cli/eslint-plugin-ember/pull/846) Support optional chaining in [require-computed-macros](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-macros.md) rule ([@bmish](https://github.com/bmish))
* [#839](https://github.com/ember-cli/eslint-plugin-ember/pull/839) Support `filterBy` and `mapBy` macros in [require-computed-macros](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-macros.md) rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#842](https://github.com/ember-cli/eslint-plugin-ember/pull/842) Explain why [require-return-from-computed](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-return-from-computed.md) rule does not apply to native classes ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.6.0 (2020-06-02)

#### :rocket: Enhancement
* [#827](https://github.com/ember-cli/eslint-plugin-ember/pull/827) Add new rule [no-restricted-service-injections](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-restricted-service-injections.md) ([@bmish](https://github.com/bmish))
* [#826](https://github.com/ember-cli/eslint-plugin-ember/pull/826) Update [no-computed-properties-in-native-classes](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-computed-properties-in-native-classes.md) rule to ignore classes marked `@classic` ([@jaydgruber](https://github.com/jaydgruber))

#### :memo: Documentation
* [#834](https://github.com/ember-cli/eslint-plugin-ember/pull/834) Add link to jQuery RFCs in [no-jquery](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-jquery.md) rule doc ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#828](https://github.com/ember-cli/eslint-plugin-ember/pull/828) Ensure rule docs mention all rule configuration options ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- [@jaydgruber](https://github.com/jaydgruber)

## v8.5.2 (2020-05-21)

#### :bug: Bug Fix
* [#821](https://github.com/ember-cli/eslint-plugin-ember/pull/821) Avoid some false positives when detecting if a file is an Ember component, controller, etc ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#823](https://github.com/ember-cli/eslint-plugin-ember/pull/823) Include recommended fix in [no-ember-super-in-es-classes](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-ember-super-in-es-classes.md) rule error message ([@GoygovRustam](https://github.com/GoygovRustam))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Rustam Goygov ([@GoygovRustam](https://github.com/GoygovRustam))

## v8.5.1 (2020-05-10)

#### :bug: Bug Fix
* [#813](https://github.com/ember-cli/eslint-plugin-ember/pull/813) Fix false positive with multiple imports in [prefer-ember-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/prefer-ember-test-helpers.md) rule ([@bmish](https://github.com/bmish))
* [#812](https://github.com/ember-cli/eslint-plugin-ember/pull/812) Fix false negative when aliasing import in [prefer-ember-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/prefer-ember-test-helpers.md) rule ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#814](https://github.com/ember-cli/eslint-plugin-ember/pull/814) Upgrade to eslint 7 internally ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.5.0 (2020-05-06)

#### :rocket: Enhancement
* [#795](https://github.com/ember-cli/eslint-plugin-ember/pull/795) Add `catchRouterMicrolib` option (default false) to [no-private-routing-service](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-private-routing-service.md) rule ([@nlfurniss](https://github.com/nlfurniss))

#### :bug: Bug Fix
* [#802](https://github.com/ember-cli/eslint-plugin-ember/pull/802) Ignore `mirage/config.js` file in [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule ([@BarryThePenguin](https://github.com/BarryThePenguin))
* [#800](https://github.com/ember-cli/eslint-plugin-ember/pull/800) Handle `@computed` decorator without parentheses in [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) and [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md) rules ([@mongoose700](https://github.com/mongoose700))
* [#794](https://github.com/ember-cli/eslint-plugin-ember/pull/794) Handle braces without nesting in [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md) rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#797](https://github.com/ember-cli/eslint-plugin-ember/pull/797) Remove duplicate example from [no-observers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-observers.md) rule doc ([@mehrdadrafiee](https://github.com/mehrdadrafiee))

#### :house: Internal
* [#801](https://github.com/ember-cli/eslint-plugin-ember/pull/801) Begin testing under Node 14 ([@bmish](https://github.com/bmish))

#### Committers: 5
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Jonathan Haines ([@BarryThePenguin](https://github.com/BarryThePenguin))
- Mehrdad Rafiee ([@mehrdadrafiee](https://github.com/mehrdadrafiee))
- Michael Peirce ([@mongoose700](https://github.com/mongoose700))
- Nathaniel Furniss ([@nlfurniss](https://github.com/nlfurniss))

## v8.4.0 (2020-04-15)

#### :rocket: Enhancement
* [#767](https://github.com/ember-cli/eslint-plugin-ember/pull/767) Add new rule [prefer-ember-test-helpers](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/prefer-ember-test-helpers.md) ([@fierysunset](https://github.com/fierysunset))
* [#778](https://github.com/ember-cli/eslint-plugin-ember/pull/778) Add new rule [no-test-this-render](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-this-render.md) ([@ventuno](https://github.com/ventuno))
* [#789](https://github.com/ember-cli/eslint-plugin-ember/pull/789) Add decorator support to [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) rule ([@bmish](https://github.com/bmish))
* [#790](https://github.com/ember-cli/eslint-plugin-ember/pull/790) Catch assignment in [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) rule ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#786](https://github.com/ember-cli/eslint-plugin-ember/pull/786) Ignore the left side of an assignment in [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Connie C Chang ([@fierysunset](https://github.com/fierysunset))
- [@ventuno](https://github.com/ventuno)

## v8.3.0 (2020-04-14)

#### :rocket: Enhancement
* [#775](https://github.com/ember-cli/eslint-plugin-ember/pull/775) Add support for explicit getter functions in [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md) rule ([@bmish](https://github.com/bmish))
* [#779](https://github.com/ember-cli/eslint-plugin-ember/pull/779) Add decorator support to [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md) rule ([@bmish](https://github.com/bmish))
* [#781](https://github.com/ember-cli/eslint-plugin-ember/pull/781) Add decorator support to [no-unnecessary-service-injection-argument](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-unnecessary-service-injection-argument.md) rule ([@bmish](https://github.com/bmish))
* [#773](https://github.com/ember-cli/eslint-plugin-ember/pull/773) Add autofixer to [no-duplicate-dependent-keys](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-duplicate-dependent-keys.md) rule ([@bmish](https://github.com/bmish))
* [#774](https://github.com/ember-cli/eslint-plugin-ember/pull/774) Catch spaces in [no-invalid-dependent-keys](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-dependent-keys.md) rule ([@bmish](https://github.com/bmish))
* [#768](https://github.com/ember-cli/eslint-plugin-ember/pull/768) Catch leading or trailing periods in [no-invalid-dependent-keys](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-dependent-keys.md) ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#771](https://github.com/ember-cli/eslint-plugin-ember/pull/771) Fix false positives in [no-legacy-test-waiters](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-legacy-test-waiters.md) rule ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.2.0 (2020-04-10)

#### :rocket: Enhancement
* [#764](https://github.com/ember-cli/eslint-plugin-ember/pull/764) Catch unnecessary braces in [no-invalid-dependent-keys](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-dependent-keys.md) rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#759](https://github.com/ember-cli/eslint-plugin-ember/pull/759) Update each rule doc to mention what config enables the rule ([@bmish](https://github.com/bmish))
* [#758](https://github.com/ember-cli/eslint-plugin-ember/pull/758) Fix typo in example in [no-side-effects](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-side-effects.md) rule doc ([@mehrdadrafiee](https://github.com/mehrdadrafiee))

#### :house: Internal
* [#766](https://github.com/ember-cli/eslint-plugin-ember/pull/766) Add test for [no-replace-test-comments](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-replace-test-comments.md) rule with TODO-prefixed comment ([@bmish](https://github.com/bmish))
* [#757](https://github.com/ember-cli/eslint-plugin-ember/pull/757) Add tests that configs are exported and mentioned in the README ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Mehrdad Rafiee ([@mehrdadrafiee](https://github.com/mehrdadrafiee))

## v8.1.1 (2020-04-01)

#### :bug: Bug Fix
* [#752](https://github.com/ember-cli/eslint-plugin-ember/pull/752) Remove [no-empty-attrs](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-empty-attrs.md) from `recommended` config ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#755](https://github.com/ember-cli/eslint-plugin-ember/pull/755) Add note about nullish coalescing operator in [no-get-with-default](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get-with-default.md) rule doc ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.1.0 (2020-03-29)

#### :rocket: Enhancement
* [#747](https://github.com/ember-cli/eslint-plugin-ember/pull/747) Add autofixer to [no-get-with-default](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get-with-default.md) rule ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#746](https://github.com/ember-cli/eslint-plugin-ember/pull/746) Do not disable non-recommended rules in the `recommended` config ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#749](https://github.com/ember-cli/eslint-plugin-ember/pull/749) Add missing init hook super calls in rule examples ([@bmish](https://github.com/bmish))
* [#748](https://github.com/ember-cli/eslint-plugin-ember/pull/748) Switch to new module imports in rule examples ([@bmish](https://github.com/bmish))
* [#745](https://github.com/ember-cli/eslint-plugin-ember/pull/745) Replace `this.get('property')` with `this.property` in rule examples ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v8.0.0 (2020-03-28)

#### :boom: Breaking Change
* [#730](https://github.com/ember-cli/eslint-plugin-ember/pull/730) Drop Node 8, 9, and 11 support ([@bmish](https://github.com/bmish))
* [#729](https://github.com/ember-cli/eslint-plugin-ember/pull/729) Update `ignoreNestedPaths` option default to `false` for [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) rule ([@bmish](https://github.com/bmish))
* [#731](https://github.com/ember-cli/eslint-plugin-ember/pull/731) Enable additional [recommended](https://github.com/ember-cli/eslint-plugin-ember/blob/master/lib/recommended-rules.js) rules ([@bmish](https://github.com/bmish))
  * [no-empty-attrs](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-empty-attrs.md)
  * [no-get-with-default](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get-with-default.md) (formerly in the [octane](https://github.com/ember-cli/eslint-plugin-ember/blob/master/lib/octane-rules.js) config)
  * [no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) (formerly in the [octane](https://github.com/ember-cli/eslint-plugin-ember/blob/master/lib/octane-rules.js) config)
  * [no-incorrect-computed-macros](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-incorrect-computed-macros.md)
  * [no-invalid-dependent-keys](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-dependent-keys.md)
  * [no-jquery](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-jquery.md) (formerly in the [octane](https://github.com/ember-cli/eslint-plugin-ember/blob/master/lib/octane-rules.js) config)
  * [no-legacy-test-waiters](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-legacy-test-waiters.md)
  * [no-mixins](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-mixins.md)
  * [no-pause-test](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-pause-test.md)
  * [no-private-routing-service](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-private-routing-service.md)
  * [no-test-and-then](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-and-then.md)
  * [no-test-import-export](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-import-export.md)
  * [no-test-module-for](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-test-module-for.md)
  * [require-computed-macros](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-macros.md)
  * [require-computed-property-dependencies](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/require-computed-property-dependencies.md)
  * [use-ember-data-rfc-395-imports](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/use-ember-data-rfc-395-imports.md)

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v7.13.0 (2020-03-28)

#### :rocket: Enhancement
* [#742](https://github.com/ember-cli/eslint-plugin-ember/pull/742) Detect invalid position of `@each` or `[]` in [no-invalid-dependent-keys](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-dependent-keys.md) rule ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#741](https://github.com/ember-cli/eslint-plugin-ember/pull/741) Switch from Travis to GitHub Actions for CI ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v7.12.0 (2020-03-27)

#### :rocket: Enhancement
* [#738](https://github.com/ember-cli/eslint-plugin-ember/pull/738) Use sets instead of arrays for better performance ([@bmish](https://github.com/bmish))
* [#702](https://github.com/ember-cli/eslint-plugin-ember/pull/702) Add new rule [no-invalid-test-waiters](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-test-waiters.md) ([@scalvert](https://github.com/scalvert))

#### :memo: Documentation
* [#737](https://github.com/ember-cli/eslint-plugin-ember/pull/737) Mention tracked properties as a fix for [classic-decorator-no-classic-methods](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/classic-decorator-no-classic-methods.md) ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#732](https://github.com/ember-cli/eslint-plugin-ember/pull/732) Begin testing under Node 13 ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Steve Calvert ([@scalvert](https://github.com/scalvert))

## v7.11.1 (2020-03-25)

#### :bug: Bug Fix
* [#728](https://github.com/ember-cli/eslint-plugin-ember/pull/728) Allow brace expansion with `and`, `or` macros in [no-incorrect-computed-macros](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-incorrect-computed-macros.md) rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#724](https://github.com/ember-cli/eslint-plugin-ember/pull/724) Recategorize rules in README ([@bmish](https://github.com/bmish))
* [#723](https://github.com/ember-cli/eslint-plugin-ember/pull/723) Sort rule categories alphabetically in README ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v7.11.0 (2020-03-20)

#### :rocket: Enhancement
* [#695](https://github.com/ember-cli/eslint-plugin-ember/pull/695) Add new rule [no-incorrect-computed-macros](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-incorrect-computed-macros.md) ([@bmish](https://github.com/bmish))
* [#709](https://github.com/ember-cli/eslint-plugin-ember/pull/709) Add new rule [no-invalid-dependent-keys](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-dependent-keys.md) ([@TheMBTH](https://github.com/TheMBTH))
* [#718](https://github.com/ember-cli/eslint-plugin-ember/pull/718) Add new rule [no-replace-test-comments](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-replace-test-comments.md) ([@jaydgruber](https://github.com/jaydgruber))
* [#705](https://github.com/ember-cli/eslint-plugin-ember/pull/705) Support TypeScript files when checking if rules are running on Ember module or test files ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#719](https://github.com/ember-cli/eslint-plugin-ember/pull/719) Validate imports before reporting violations in [no-invalid-debug-function-arguments](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-invalid-debug-function-arguments.md) rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#716](https://github.com/ember-cli/eslint-plugin-ember/pull/716) Revamp the guide for contributing a new rule ([@bmish](https://github.com/bmish))
* [#715](https://github.com/ember-cli/eslint-plugin-ember/pull/715) Mention if a rule is auto-fixable in its documentation ([@bmish](https://github.com/bmish))
* [#713](https://github.com/ember-cli/eslint-plugin-ember/pull/713) Add tests to ensure each rule documentation file has the right title and an examples section ([@bmish](https://github.com/bmish))
* [#711](https://github.com/ember-cli/eslint-plugin-ember/pull/711) Improve contribution guide for adding new rules ([@TheMBTH](https://github.com/TheMBTH))

#### :house: Internal
* [#720](https://github.com/ember-cli/eslint-plugin-ember/pull/720) Add tests to ensure some computed property rules handle the @computed decorator ([@bmish](https://github.com/bmish))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- L@elaps ([@TheMBTH](https://github.com/TheMBTH))
- [@jaydgruber](https://github.com/jaydgruber)

## v7.10.1 (2020-03-07)

#### :bug: Bug Fix
* [#697](https://github.com/ember-cli/eslint-plugin-ember/pull/697) Handle service injections with no arguments in `no-private-routing-service` rule ([@nlfurniss](https://github.com/nlfurniss))

#### Committers: 1
- Nathaniel Furniss ([@nlfurniss](https://github.com/nlfurniss))

## v7.10.0 (2020-03-06)

#### :rocket: Enhancement
* [#694](https://github.com/ember-cli/eslint-plugin-ember/pull/694) Add new rule `no-private-routing-service` ([@nlfurniss](https://github.com/nlfurniss))
* [#691](https://github.com/ember-cli/eslint-plugin-ember/pull/691) Add new rule `no-mixins` ([@nlfurniss](https://github.com/nlfurniss))

#### Committers: 1
- Nathaniel Furniss ([@nlfurniss](https://github.com/nlfurniss))

## v7.9.0 (2020-03-01)

#### :rocket: Enhancement
* [#595](https://github.com/ember-cli/eslint-plugin-ember/pull/595) Add new rule `no-component-lifecycle-hooks` (included in `octane` config) ([@jbandura](https://github.com/jbandura))
* [#681](https://github.com/ember-cli/eslint-plugin-ember/pull/681) Add new rule `no-legacy-test-waiters` ([@scalvert](https://github.com/scalvert))

#### :memo: Documentation
* [#688](https://github.com/ember-cli/eslint-plugin-ember/pull/688) Lint code samples with eslint-plugin-markdown ([@bmish](https://github.com/bmish))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Jacek Bandura ([@jbandura](https://github.com/jbandura))
- Steve Calvert ([@scalvert](https://github.com/scalvert))

## v7.8.1 (2020-02-14)

#### :bug: Bug Fix
* [#674](https://github.com/ember-cli/eslint-plugin-ember/pull/674) Update `require-computed-property-dependencies` rule to handle basic string concatenation in dependent keys ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#669](https://github.com/ember-cli/eslint-plugin-ember/pull/669) Add "Help Wanted" section to documentation for rules that are missing native JavaScript class support ([@bmish](https://github.com/bmish))

#### Committers: 1
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v7.8.0 (2020-02-12)

#### :rocket: Enhancement
* [#661](https://github.com/ember-cli/eslint-plugin-ember/pull/661) Add new rule `no-controllers` ([@bmish](https://github.com/bmish))
* [#665](https://github.com/ember-cli/eslint-plugin-ember/pull/665) Update `order-in-*` rules to support custom ordering of properties ([@cdtinney](https://github.com/cdtinney))
* [#639](https://github.com/ember-cli/eslint-plugin-ember/pull/639) Update `no-observers` rule to catch `addObserver` and observer imports ([@kategengler](https://github.com/kategengler))

#### :bug: Bug Fix
* [#670](https://github.com/ember-cli/eslint-plugin-ember/pull/670) Update `order-in-*` rules to consider template literals as properties ([@cdtinney](https://github.com/cdtinney))
* [#664](https://github.com/ember-cli/eslint-plugin-ember/pull/664) Update `no-classic-components` rule to only disallow the specific component import ([@bmish](https://github.com/bmish))
* [#640](https://github.com/ember-cli/eslint-plugin-ember/pull/640) Update `no-computed-properties-in-native-classes` rule to catch aliasing of computed import ([@kategengler](https://github.com/kategengler))

#### :memo: Documentation
* [#663](https://github.com/ember-cli/eslint-plugin-ember/pull/663) Update rule docs to use consistent headers and fix markdownlint violations ([@bmish](https://github.com/bmish))
* [#655](https://github.com/ember-cli/eslint-plugin-ember/pull/655) Update `no-new-mixins` rule documentation ([@efx](https://github.com/efx))
* [#648](https://github.com/ember-cli/eslint-plugin-ember/pull/648) Fix various spelling mistakes ([@bmish](https://github.com/bmish))
* [#647](https://github.com/ember-cli/eslint-plugin-ember/pull/647) Fix typo in `no-classic-components` rule documentation ([@rwwagner90](https://github.com/rwwagner90))
* [#626](https://github.com/ember-cli/eslint-plugin-ember/pull/626) Simplify and clarify rules and configuration sections in README ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#643](https://github.com/ember-cli/eslint-plugin-ember/pull/643) Add missing test case output assertions ([@bmish](https://github.com/bmish))

#### Committers: 5
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Colin Tinney ([@cdtinney](https://github.com/cdtinney))
- Eli Flanagan ([@efx](https://github.com/efx))
- Katie Gengler ([@kategengler](https://github.com/kategengler))
- Robert Wagner ([@rwwagner90](https://github.com/rwwagner90))

## v7.7.2 (2019-12-12)

#### :bug: Bug Fix
* [#621](https://github.com/ember-cli/eslint-plugin-ember/pull/621) Fix false positive with `ignoreNonThisExpressions` option in `use-ember-get-and-set` rule ([@Exelord](https://github.com/Exelord))

#### :memo: Documentation
* [#620](https://github.com/ember-cli/eslint-plugin-ember/pull/620) Use consistent prefixes for rule descriptions ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#625](https://github.com/ember-cli/eslint-plugin-ember/pull/625) Add eslint-plugin-jest internally and enable rules ([@bmish](https://github.com/bmish))
* [#624](https://github.com/ember-cli/eslint-plugin-ember/pull/624) Add eslint-plugin-unicorn internally and enable recommended rules ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Maciej Kwaśniak ([@Exelord](https://github.com/Exelord))

## v7.7.1 (2019-11-29)

#### :bug: Bug Fix
* [#615](https://github.com/ember-cli/eslint-plugin-ember/pull/615) Fix issue causing assert to fire in `getSourceModuleName` util function ([@patocallaghan](https://github.com/patocallaghan))

#### Committers: 1
- Pat O'Callaghan ([@patocallaghan](https://github.com/patocallaghan))

## v7.7.0 (2019-11-29)

#### :rocket: Enhancement
* [#592](https://github.com/ember-cli/eslint-plugin-ember/pull/592) Update `no-classic-classes` rule to catch classic Ember Data model classes ([@patocallaghan](https://github.com/patocallaghan))

#### :bug: Bug Fix
* [#610](https://github.com/ember-cli/eslint-plugin-ember/pull/610) Fix invalid `no-get` rule autofix caused by invalid JS variable name ([@bmish](https://github.com/bmish))
* [#607](https://github.com/ember-cli/eslint-plugin-ember/pull/607) Fix spread property bug in `require-super-in-init` rule ([@bmish](https://github.com/bmish))
* [#600](https://github.com/ember-cli/eslint-plugin-ember/pull/600) Add missing schema validation for options on many rules ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#611](https://github.com/ember-cli/eslint-plugin-ember/pull/611) Add many missing tests for lines without test coverage ([@bmish](https://github.com/bmish))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Pat O'Callaghan ([@patocallaghan](https://github.com/patocallaghan))

## v7.6.0 (2019-11-19)

#### :rocket: Enhancement
* [#594](https://github.com/ember-cli/eslint-plugin-ember/pull/594) Add new rule `no-get-with-default` ([@steventsao](https://github.com/steventsao))

#### Committers: 1
- Steven Tsao ([@steventsao](https://github.com/steventsao))

## v7.5.0 (2019-11-11)

#### :rocket: Enhancement
* [#583](https://github.com/ember-cli/eslint-plugin-ember/pull/583) Update `no-observers` rule to handle decorators ([@bmish](https://github.com/bmish))
* [#577](https://github.com/ember-cli/eslint-plugin-ember/pull/577) Add autofixer to `no-get` rule ([@bmish](https://github.com/bmish))

#### :bug: Bug Fix
* [#586](https://github.com/ember-cli/eslint-plugin-ember/pull/586) Update `use-brace-expansion` rule to only report the string arguments of a computed property as the violation (and not the entire function body) ([@bmish](https://github.com/bmish))
* [#581](https://github.com/ember-cli/eslint-plugin-ember/pull/581) Update `no-get` rule to ignore `get()` usages inside objects implementing `unknownProperty()` ([@bmish](https://github.com/bmish))
* [#580](https://github.com/ember-cli/eslint-plugin-ember/pull/580) Update `no-get` rule to ignore `get()` usages inside proxy objects ([@bmish](https://github.com/bmish))
* [#579](https://github.com/ember-cli/eslint-plugin-ember/pull/579) Fix handling of multi-line property keys by `require-computed-property-dependencies` rule ([@bmish](https://github.com/bmish))

#### :memo: Documentation
* [#588](https://github.com/ember-cli/eslint-plugin-ember/pull/588) Add `type` meta property to each rule ([@bmish](https://github.com/bmish))
* [#587](https://github.com/ember-cli/eslint-plugin-ember/pull/587) And missing rule documentation URLs ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#582](https://github.com/ember-cli/eslint-plugin-ember/pull/582) Add CI check to ensure `yarn update` is run to update docs/autogenerated files ([@bmish](https://github.com/bmish))
* [#574](https://github.com/ember-cli/eslint-plugin-ember/pull/574) Update `reportUnorderedProperties` util function to also work with native classes  ([@laurmurclar](https://github.com/laurmurclar))

#### Committers: 2
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- Laura Murphy-Clarkin ([@laurmurclar](https://github.com/laurmurclar))

## v7.4.1 (2019-11-07)

#### :bug: Bug Fix
* [#575](https://github.com/ember-cli/eslint-plugin-ember/pull/575) Update `avoid-leaking-state-in-ember-objects` rule to handle logical expressions ([@alexlafroscia](https://github.com/alexlafroscia))
* [#571](https://github.com/ember-cli/eslint-plugin-ember/pull/571) Update `avoid-leaking-state-in-ember-objects` rule to handle ternary expressions ([@alexlafroscia](https://github.com/alexlafroscia))
* [#573](https://github.com/ember-cli/eslint-plugin-ember/pull/573) Update `require-computed-macros` rule to handle `this.get('property')` (in addition to `this.property`) ([@bmish](https://github.com/bmish))

#### Committers: 2
- Alex LaFroscia ([@alexlafroscia](https://github.com/alexlafroscia))
- Bryan Mishkin ([@bmish](https://github.com/bmish))

## v7.4.0 (2019-11-06)

#### :rocket: Enhancement
* [#561](https://github.com/ember-cli/eslint-plugin-ember/pull/561) Add `octane` configuration (experimental) ([@patocallaghan](https://github.com/patocallaghan))
* [#562](https://github.com/ember-cli/eslint-plugin-ember/pull/562) Add new rule `no-test-module-for` ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
* [#565](https://github.com/ember-cli/eslint-plugin-ember/pull/565) Add `ignoreNestedPaths` option (default true) to `no-get` rule ([@bmish](https://github.com/bmish))
* [#564](https://github.com/ember-cli/eslint-plugin-ember/pull/564) Update `no-new-mixins` rule to handle native classes ([@bmish](https://github.com/bmish))

#### :house: Internal
* [#570](https://github.com/ember-cli/eslint-plugin-ember/pull/570) Simplify some tests by setting `parserOptions` globally instead of in each individual test case ([@bmish](https://github.com/bmish))
* [#568](https://github.com/ember-cli/eslint-plugin-ember/pull/568) Add tests to ensure plugin exports correct configurations ([@bmish](https://github.com/bmish))
* [#563](https://github.com/ember-cli/eslint-plugin-ember/pull/563) Lint against unnecessary template literals internally ([@bmish](https://github.com/bmish))

#### Committers: 3
- Bryan Mishkin ([@bmish](https://github.com/bmish))
- L. Preston Sego III ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
- Pat O'Callaghan ([@patocallaghan](https://github.com/patocallaghan))

## v7.3.0 (2019-10-30)

#### :rocket: Enhancement
* [#555](https://github.com/ember-cli/eslint-plugin-ember/pull/555) Add new `no-actions-hash` rule ([@laurmurclar](https://github.com/laurmurclar))
* [#548](https://github.com/ember-cli/eslint-plugin-ember/pull/548) Add new `require-tagless-components` rule ([@alexlafroscia](https://github.com/alexlafroscia))
* [#552](https://github.com/ember-cli/eslint-plugin-ember/pull/552) Add new `no-classic-classes` rule ([@alexlafroscia](https://github.com/alexlafroscia))
* [#551](https://github.com/ember-cli/eslint-plugin-ember/pull/551) Add new `no-classic-components` rule ([@mikoscz](https://github.com/mikoscz))
* [#546](https://git
Download .txt
gitextract_oxynmjan/

├── .babelrc
├── .editorconfig
├── .eslint-doc-generatorrc.js
├── .gitattributes
├── .github/
│   ├── renovate.json5
│   └── workflows/
│       ├── bench-compare.yml
│       ├── ci.yml
│       ├── codeql-analysis.yml
│       ├── plan-release.yml
│       └── publish.yml
├── .gitignore
├── .markdownlint.json
├── .markdownlintignore
├── .npmpackagejsonlintrc.json
├── .npmrc
├── .prettierignore
├── .prettierrc.js
├── .release-plan.json
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── RELEASE.md
├── docs/
│   └── rules/
│       ├── _TEMPLATE_.md
│       ├── alias-model-in-controller.md
│       ├── avoid-leaking-state-in-ember-objects.md
│       ├── avoid-using-needs-in-controllers.md
│       ├── classic-decorator-hooks.md
│       ├── classic-decorator-no-classic-methods.md
│       ├── closure-actions.md
│       ├── computed-property-getters.md
│       ├── jquery-ember-run.md
│       ├── named-functions-in-promises.md
│       ├── new-module-imports.md
│       ├── no-actions-hash.md
│       ├── no-array-prototype-extensions.md
│       ├── no-arrow-function-computed-properties.md
│       ├── no-assignment-of-untracked-properties-used-in-tracking-contexts.md
│       ├── no-at-ember-render-modifiers.md
│       ├── no-attrs-in-components.md
│       ├── no-attrs-snapshot.md
│       ├── no-builtin-form-components.md
│       ├── no-capital-letters-in-routes.md
│       ├── no-classic-classes.md
│       ├── no-classic-components.md
│       ├── no-component-lifecycle-hooks.md
│       ├── no-computed-properties-in-native-classes.md
│       ├── no-controller-access-in-routes.md
│       ├── no-controllers.md
│       ├── no-current-route-name.md
│       ├── no-deeply-nested-dependent-keys-with-each.md
│       ├── no-deprecated-router-transition-methods.md
│       ├── no-duplicate-dependent-keys.md
│       ├── no-ember-super-in-es-classes.md
│       ├── no-ember-testing-in-module-scope.md
│       ├── no-empty-attrs.md
│       ├── no-empty-glimmer-component-classes.md
│       ├── no-function-prototype-extensions.md
│       ├── no-get-with-default.md
│       ├── no-get.md
│       ├── no-global-jquery.md
│       ├── no-html-safe.md
│       ├── no-implicit-injections.md
│       ├── no-implicit-service-injection-argument.md
│       ├── no-incorrect-calls-with-inline-anonymous-functions.md
│       ├── no-incorrect-computed-macros.md
│       ├── no-invalid-debug-function-arguments.md
│       ├── no-invalid-dependent-keys.md
│       ├── no-invalid-test-waiters.md
│       ├── no-jquery.md
│       ├── no-legacy-test-waiters.md
│       ├── no-mixins.md
│       ├── no-modifier-argument-destructuring.md
│       ├── no-new-mixins.md
│       ├── no-noop-setup-on-error-in-before.md
│       ├── no-observers.md
│       ├── no-old-shims.md
│       ├── no-on-calls-in-components.md
│       ├── no-pause-test.md
│       ├── no-private-routing-service.md
│       ├── no-proxies.md
│       ├── no-replace-test-comments.md
│       ├── no-restricted-property-modifications.md
│       ├── no-restricted-resolver-tests.md
│       ├── no-restricted-service-injections.md
│       ├── no-runloop.md
│       ├── no-settled-after-test-helper.md
│       ├── no-shadow-route-definition.md
│       ├── no-side-effects.md
│       ├── no-string-prototype-extensions.md
│       ├── no-test-and-then.md
│       ├── no-test-import-export.md
│       ├── no-test-module-for.md
│       ├── no-test-support-import.md
│       ├── no-test-this-render.md
│       ├── no-tracked-built-ins.md
│       ├── no-tracked-properties-from-args.md
│       ├── no-try-invoke.md
│       ├── no-unnecessary-index-route.md
│       ├── no-unnecessary-route-path-option.md
│       ├── no-unnecessary-service-injection-argument.md
│       ├── no-unused-services.md
│       ├── no-volatile-computed-properties.md
│       ├── order-in-components.md
│       ├── order-in-controllers.md
│       ├── order-in-models.md
│       ├── order-in-routes.md
│       ├── prefer-ember-test-helpers.md
│       ├── require-async-inverse-relationship.md
│       ├── require-computed-macros.md
│       ├── require-computed-property-dependencies.md
│       ├── require-fetch-import.md
│       ├── require-return-from-computed.md
│       ├── require-super-in-lifecycle-hooks.md
│       ├── require-tagless-components.md
│       ├── require-valid-css-selector-in-test-helpers.md
│       ├── route-path-style.md
│       ├── routes-segments-snake-case.md
│       ├── template-attribute-indentation.md
│       ├── template-attribute-order.md
│       ├── template-block-indentation.md
│       ├── template-builtin-component-arguments.md
│       ├── template-deprecated-inline-view-helper.md
│       ├── template-deprecated-render-helper.md
│       ├── template-eol-last.md
│       ├── template-linebreak-style.md
│       ├── template-link-href-attributes.md
│       ├── template-link-rel-noopener.md
│       ├── template-modifier-name-case.md
│       ├── template-no-abstract-roles.md
│       ├── template-no-accesskey-attribute.md
│       ├── template-no-action-modifiers.md
│       ├── template-no-action-on-submit-button.md
│       ├── template-no-action.md
│       ├── template-no-args-paths.md
│       ├── template-no-arguments-for-html-elements.md
│       ├── template-no-aria-hidden-body.md
│       ├── template-no-aria-unsupported-elements.md
│       ├── template-no-array-prototype-extensions.md
│       ├── template-no-at-ember-render-modifiers.md
│       ├── template-no-attrs-in-components.md
│       ├── template-no-autofocus-attribute.md
│       ├── template-no-bare-strings.md
│       ├── template-no-bare-yield.md
│       ├── template-no-block-params-for-html-elements.md
│       ├── template-no-builtin-form-components.md
│       ├── template-no-capital-arguments.md
│       ├── template-no-chained-this.md
│       ├── template-no-class-bindings.md
│       ├── template-no-curly-component-invocation.md
│       ├── template-no-debugger.md
│       ├── template-no-deprecated.md
│       ├── template-no-duplicate-attributes.md
│       ├── template-no-duplicate-id.md
│       ├── template-no-duplicate-landmark-elements.md
│       ├── template-no-dynamic-subexpression-invocations.md
│       ├── template-no-element-event-actions.md
│       ├── template-no-empty-headings.md
│       ├── template-no-extra-mut-helper-argument.md
│       ├── template-no-forbidden-elements.md
│       ├── template-no-heading-inside-button.md
│       ├── template-no-html-comments.md
│       ├── template-no-implicit-this.md
│       ├── template-no-index-component-invocation.md
│       ├── template-no-inline-event-handlers.md
│       ├── template-no-inline-linkto.md
│       ├── template-no-inline-styles.md
│       ├── template-no-input-block.md
│       ├── template-no-input-tagname.md
│       ├── template-no-invalid-aria-attributes.md
│       ├── template-no-invalid-interactive.md
│       ├── template-no-invalid-link-text.md
│       ├── template-no-invalid-link-title.md
│       ├── template-no-invalid-meta.md
│       ├── template-no-invalid-role.md
│       ├── template-no-jsx-attributes.md
│       ├── template-no-let-reference.md
│       ├── template-no-link-to-positional-params.md
│       ├── template-no-link-to-tagname.md
│       ├── template-no-log.md
│       ├── template-no-model-argument-in-route-templates.md
│       ├── template-no-multiple-empty-lines.md
│       ├── template-no-mut-helper.md
│       ├── template-no-negated-condition.md
│       ├── template-no-nested-interactive.md
│       ├── template-no-nested-landmark.md
│       ├── template-no-nested-splattributes.md
│       ├── template-no-obscure-array-access.md
│       ├── template-no-obsolete-elements.md
│       ├── template-no-only-default-slot.md
│       ├── template-no-outlet-outside-routes.md
│       ├── template-no-page-title-component.md
│       ├── template-no-passed-in-event-handlers.md
│       ├── template-no-pointer-down-event-binding.md
│       ├── template-no-positional-data-test-selectors.md
│       ├── template-no-positive-tabindex.md
│       ├── template-no-potential-path-strings.md
│       ├── template-no-quoteless-attributes.md
│       ├── template-no-redundant-fn.md
│       ├── template-no-redundant-role.md
│       ├── template-no-restricted-invocations.md
│       ├── template-no-route-action.md
│       ├── template-no-scope-outside-table-headings.md
│       ├── template-no-shadowed-elements.md
│       ├── template-no-splattributes-with-class.md
│       ├── template-no-this-in-template-only-components.md
│       ├── template-no-trailing-spaces.md
│       ├── template-no-triple-curlies.md
│       ├── template-no-unavailable-this.md
│       ├── template-no-unbalanced-curlies.md
│       ├── template-no-unbound.md
│       ├── template-no-unknown-arguments-for-builtin-components.md
│       ├── template-no-unnecessary-component-helper.md
│       ├── template-no-unnecessary-concat.md
│       ├── template-no-unnecessary-curly-parens.md
│       ├── template-no-unnecessary-curly-strings.md
│       ├── template-no-unsupported-role-attributes.md
│       ├── template-no-unused-block-params.md
│       ├── template-no-valueless-arguments.md
│       ├── template-no-whitespace-for-layout.md
│       ├── template-no-whitespace-within-word.md
│       ├── template-no-with.md
│       ├── template-no-yield-block-params-to-else-inverse.md
│       ├── template-no-yield-only.md
│       ├── template-no-yield-to-default.md
│       ├── template-quotes.md
│       ├── template-require-aria-activedescendant-tabindex.md
│       ├── template-require-button-type.md
│       ├── template-require-context-role.md
│       ├── template-require-each-key.md
│       ├── template-require-form-method.md
│       ├── template-require-has-block-helper.md
│       ├── template-require-iframe-src-attribute.md
│       ├── template-require-iframe-title.md
│       ├── template-require-input-label.md
│       ├── template-require-input-type.md
│       ├── template-require-lang-attribute.md
│       ├── template-require-mandatory-role-attributes.md
│       ├── template-require-media-caption.md
│       ├── template-require-presentational-children.md
│       ├── template-require-splattributes.md
│       ├── template-require-strict-mode.md
│       ├── template-require-valid-alt-text.md
│       ├── template-require-valid-form-groups.md
│       ├── template-require-valid-named-block-naming-format.md
│       ├── template-self-closing-void-elements.md
│       ├── template-simple-modifiers.md
│       ├── template-simple-unless.md
│       ├── template-sort-invocations.md
│       ├── template-splat-attributes-only.md
│       ├── template-style-concatenation.md
│       ├── template-table-groups.md
│       ├── template-template-length.md
│       ├── use-brace-expansion.md
│       ├── use-ember-data-rfc-395-imports.md
│       └── use-ember-get-and-set.md
├── eslint-remote-tester.config.js
├── eslint.config.js
├── lib/
│   ├── config/
│   │   ├── base.js
│   │   ├── recommended-gjs.js
│   │   ├── recommended-gts.js
│   │   ├── recommended.js
│   │   └── template-lint-migration.js
│   ├── config-legacy/
│   │   ├── base.js
│   │   ├── recommended-gjs.js
│   │   ├── recommended-gts.js
│   │   ├── recommended.js
│   │   └── template-lint-migration.js
│   ├── index.js
│   ├── recommended-rules-gjs.js
│   ├── recommended-rules-gts.js
│   ├── recommended-rules.js
│   ├── recommended.mjs
│   ├── rules/
│   │   ├── alias-model-in-controller.js
│   │   ├── avoid-leaking-state-in-ember-objects.js
│   │   ├── avoid-using-needs-in-controllers.js
│   │   ├── classic-decorator-hooks.js
│   │   ├── classic-decorator-no-classic-methods.js
│   │   ├── closure-actions.js
│   │   ├── computed-property-getters.js
│   │   ├── jquery-ember-run.js
│   │   ├── named-functions-in-promises.js
│   │   ├── new-module-imports.js
│   │   ├── no-actions-hash.js
│   │   ├── no-array-prototype-extensions.js
│   │   ├── no-arrow-function-computed-properties.js
│   │   ├── no-assignment-of-untracked-properties-used-in-tracking-contexts.js
│   │   ├── no-at-ember-render-modifiers.js
│   │   ├── no-attrs-in-components.js
│   │   ├── no-attrs-snapshot.js
│   │   ├── no-builtin-form-components.js
│   │   ├── no-capital-letters-in-routes.js
│   │   ├── no-classic-classes.js
│   │   ├── no-classic-components.js
│   │   ├── no-component-lifecycle-hooks.js
│   │   ├── no-computed-properties-in-native-classes.js
│   │   ├── no-controller-access-in-routes.js
│   │   ├── no-controllers.js
│   │   ├── no-current-route-name.js
│   │   ├── no-deeply-nested-dependent-keys-with-each.js
│   │   ├── no-deprecated-router-transition-methods.js
│   │   ├── no-duplicate-dependent-keys.js
│   │   ├── no-ember-super-in-es-classes.js
│   │   ├── no-ember-testing-in-module-scope.js
│   │   ├── no-empty-attrs.js
│   │   ├── no-empty-glimmer-component-classes.js
│   │   ├── no-function-prototype-extensions.js
│   │   ├── no-get-with-default.js
│   │   ├── no-get.js
│   │   ├── no-global-jquery.js
│   │   ├── no-html-safe.js
│   │   ├── no-implicit-injections.js
│   │   ├── no-implicit-service-injection-argument.js
│   │   ├── no-incorrect-calls-with-inline-anonymous-functions.js
│   │   ├── no-incorrect-computed-macros.js
│   │   ├── no-invalid-debug-function-arguments.js
│   │   ├── no-invalid-dependent-keys.js
│   │   ├── no-invalid-test-waiters.js
│   │   ├── no-jquery.js
│   │   ├── no-legacy-test-waiters.js
│   │   ├── no-mixins.js
│   │   ├── no-modifier-argument-destructuring.js
│   │   ├── no-new-mixins.js
│   │   ├── no-noop-setup-on-error-in-before.js
│   │   ├── no-observers.js
│   │   ├── no-old-shims.js
│   │   ├── no-on-calls-in-components.js
│   │   ├── no-pause-test.js
│   │   ├── no-private-routing-service.js
│   │   ├── no-proxies.js
│   │   ├── no-replace-test-comments.js
│   │   ├── no-restricted-property-modifications.js
│   │   ├── no-restricted-resolver-tests.js
│   │   ├── no-restricted-service-injections.js
│   │   ├── no-runloop.js
│   │   ├── no-settled-after-test-helper.js
│   │   ├── no-shadow-route-definition.js
│   │   ├── no-side-effects.js
│   │   ├── no-string-prototype-extensions.js
│   │   ├── no-test-and-then.js
│   │   ├── no-test-import-export.js
│   │   ├── no-test-module-for.js
│   │   ├── no-test-support-import.js
│   │   ├── no-test-this-render.js
│   │   ├── no-tracked-built-ins.js
│   │   ├── no-tracked-properties-from-args.js
│   │   ├── no-try-invoke.js
│   │   ├── no-unnecessary-index-route.js
│   │   ├── no-unnecessary-route-path-option.js
│   │   ├── no-unnecessary-service-injection-argument.js
│   │   ├── no-unused-services.js
│   │   ├── no-volatile-computed-properties.js
│   │   ├── order-in-components.js
│   │   ├── order-in-controllers.js
│   │   ├── order-in-models.js
│   │   ├── order-in-routes.js
│   │   ├── prefer-ember-test-helpers.js
│   │   ├── require-async-inverse-relationship.js
│   │   ├── require-computed-macros.js
│   │   ├── require-computed-property-dependencies.js
│   │   ├── require-fetch-import.js
│   │   ├── require-return-from-computed.js
│   │   ├── require-super-in-lifecycle-hooks.js
│   │   ├── require-tagless-components.js
│   │   ├── require-valid-css-selector-in-test-helpers.js
│   │   ├── route-path-style.js
│   │   ├── routes-segments-snake-case.js
│   │   ├── template-attribute-indentation.js
│   │   ├── template-attribute-order.js
│   │   ├── template-block-indentation.js
│   │   ├── template-builtin-component-arguments.js
│   │   ├── template-deprecated-inline-view-helper.js
│   │   ├── template-deprecated-render-helper.js
│   │   ├── template-eol-last.js
│   │   ├── template-linebreak-style.js
│   │   ├── template-link-href-attributes.js
│   │   ├── template-link-rel-noopener.js
│   │   ├── template-modifier-name-case.js
│   │   ├── template-no-abstract-roles.js
│   │   ├── template-no-accesskey-attribute.js
│   │   ├── template-no-action-modifiers.js
│   │   ├── template-no-action-on-submit-button.js
│   │   ├── template-no-action.js
│   │   ├── template-no-args-paths.js
│   │   ├── template-no-arguments-for-html-elements.js
│   │   ├── template-no-aria-hidden-body.js
│   │   ├── template-no-aria-unsupported-elements.js
│   │   ├── template-no-array-prototype-extensions.js
│   │   ├── template-no-at-ember-render-modifiers.js
│   │   ├── template-no-attrs-in-components.js
│   │   ├── template-no-autofocus-attribute.js
│   │   ├── template-no-bare-strings.js
│   │   ├── template-no-bare-yield.js
│   │   ├── template-no-block-params-for-html-elements.js
│   │   ├── template-no-builtin-form-components.js
│   │   ├── template-no-capital-arguments.js
│   │   ├── template-no-chained-this.js
│   │   ├── template-no-class-bindings.js
│   │   ├── template-no-curly-component-invocation.js
│   │   ├── template-no-debugger.js
│   │   ├── template-no-deprecated.js
│   │   ├── template-no-duplicate-attributes.js
│   │   ├── template-no-duplicate-id.js
│   │   ├── template-no-duplicate-landmark-elements.js
│   │   ├── template-no-dynamic-subexpression-invocations.js
│   │   ├── template-no-element-event-actions.js
│   │   ├── template-no-empty-headings.js
│   │   ├── template-no-extra-mut-helper-argument.js
│   │   ├── template-no-forbidden-elements.js
│   │   ├── template-no-heading-inside-button.js
│   │   ├── template-no-html-comments.js
│   │   ├── template-no-implicit-this.js
│   │   ├── template-no-index-component-invocation.js
│   │   ├── template-no-inline-event-handlers.js
│   │   ├── template-no-inline-linkto.js
│   │   ├── template-no-inline-styles.js
│   │   ├── template-no-input-block.js
│   │   ├── template-no-input-tagname.js
│   │   ├── template-no-invalid-aria-attributes.js
│   │   ├── template-no-invalid-interactive.js
│   │   ├── template-no-invalid-link-text.js
│   │   ├── template-no-invalid-link-title.js
│   │   ├── template-no-invalid-meta.js
│   │   ├── template-no-invalid-role.js
│   │   ├── template-no-jsx-attributes.js
│   │   ├── template-no-let-reference.js
│   │   ├── template-no-link-to-positional-params.js
│   │   ├── template-no-link-to-tagname.js
│   │   ├── template-no-log.js
│   │   ├── template-no-model-argument-in-route-templates.js
│   │   ├── template-no-multiple-empty-lines.js
│   │   ├── template-no-mut-helper.js
│   │   ├── template-no-negated-condition.js
│   │   ├── template-no-nested-interactive.js
│   │   ├── template-no-nested-landmark.js
│   │   ├── template-no-nested-splattributes.js
│   │   ├── template-no-obscure-array-access.js
│   │   ├── template-no-obsolete-elements.js
│   │   ├── template-no-only-default-slot.js
│   │   ├── template-no-outlet-outside-routes.js
│   │   ├── template-no-page-title-component.js
│   │   ├── template-no-passed-in-event-handlers.js
│   │   ├── template-no-pointer-down-event-binding.js
│   │   ├── template-no-positional-data-test-selectors.js
│   │   ├── template-no-positive-tabindex.js
│   │   ├── template-no-potential-path-strings.js
│   │   ├── template-no-quoteless-attributes.js
│   │   ├── template-no-redundant-fn.js
│   │   ├── template-no-redundant-role.js
│   │   ├── template-no-restricted-invocations.js
│   │   ├── template-no-route-action.js
│   │   ├── template-no-scope-outside-table-headings.js
│   │   ├── template-no-shadowed-elements.js
│   │   ├── template-no-splattributes-with-class.js
│   │   ├── template-no-this-in-template-only-components.js
│   │   ├── template-no-trailing-spaces.js
│   │   ├── template-no-triple-curlies.js
│   │   ├── template-no-unavailable-this.js
│   │   ├── template-no-unbalanced-curlies.js
│   │   ├── template-no-unbound.js
│   │   ├── template-no-unknown-arguments-for-builtin-components.js
│   │   ├── template-no-unnecessary-component-helper.js
│   │   ├── template-no-unnecessary-concat.js
│   │   ├── template-no-unnecessary-curly-parens.js
│   │   ├── template-no-unnecessary-curly-strings.js
│   │   ├── template-no-unsupported-role-attributes.js
│   │   ├── template-no-unused-block-params.js
│   │   ├── template-no-valueless-arguments.js
│   │   ├── template-no-whitespace-for-layout.js
│   │   ├── template-no-whitespace-within-word.js
│   │   ├── template-no-with.js
│   │   ├── template-no-yield-block-params-to-else-inverse.js
│   │   ├── template-no-yield-only.js
│   │   ├── template-no-yield-to-default.js
│   │   ├── template-quotes.js
│   │   ├── template-require-aria-activedescendant-tabindex.js
│   │   ├── template-require-button-type.js
│   │   ├── template-require-context-role.js
│   │   ├── template-require-each-key.js
│   │   ├── template-require-form-method.js
│   │   ├── template-require-has-block-helper.js
│   │   ├── template-require-iframe-src-attribute.js
│   │   ├── template-require-iframe-title.js
│   │   ├── template-require-input-label.js
│   │   ├── template-require-input-type.js
│   │   ├── template-require-lang-attribute.js
│   │   ├── template-require-mandatory-role-attributes.js
│   │   ├── template-require-media-caption.js
│   │   ├── template-require-presentational-children.js
│   │   ├── template-require-splattributes.js
│   │   ├── template-require-strict-mode.js
│   │   ├── template-require-valid-alt-text.js
│   │   ├── template-require-valid-form-groups.js
│   │   ├── template-require-valid-named-block-naming-format.js
│   │   ├── template-self-closing-void-elements.js
│   │   ├── template-simple-modifiers.js
│   │   ├── template-simple-unless.js
│   │   ├── template-sort-invocations.js
│   │   ├── template-splat-attributes-only.js
│   │   ├── template-style-concatenation.js
│   │   ├── template-table-groups.js
│   │   ├── template-template-length.js
│   │   ├── use-brace-expansion.js
│   │   ├── use-ember-data-rfc-395-imports.js
│   │   └── use-ember-get-and-set.js
│   └── utils/
│       ├── computed-properties.js
│       ├── computed-property-dependent-keys.js
│       ├── computed-property-macros.js
│       ├── decorators.js
│       ├── editorconfig.js
│       ├── ember-source-version.js
│       ├── ember.js
│       ├── fixer.js
│       ├── html-interactive-content.js
│       ├── import.js
│       ├── interactive-roles.js
│       ├── is-native-element.js
│       ├── javascript.js
│       ├── jquery-methods.js
│       ├── jquery.js
│       ├── landmark-roles.js
│       ├── new-module.js
│       ├── property-getter.js
│       ├── property-order.js
│       ├── property-setter.js
│       ├── scope-references-this.js
│       ├── stack.js
│       ├── static-attr-value.js
│       ├── types.js
│       └── utils.js
├── package.json
├── scripts/
│   ├── bench-compare.mjs
│   ├── bench-utils.mjs
│   ├── format-bench-cli.mjs
│   ├── format-bench-comment.mjs
│   ├── list-jquery-methods.js
│   ├── local-bench-summary.sh
│   ├── run-bench.sh
│   └── update-rules.js
├── tests/
│   ├── __snapshots__/
│   │   └── recommended.js.snap
│   ├── bench/
│   │   ├── large.gjs
│   │   ├── large.gts
│   │   ├── large.js
│   │   ├── medium.gjs
│   │   ├── medium.gts
│   │   ├── medium.js
│   │   ├── small.gjs
│   │   ├── small.gts
│   │   └── small.js
│   ├── config-setup.js
│   ├── fixtures/
│   │   └── template-no-this-in-template-only-components/
│   │       └── app/
│   │           └── components/
│   │               ├── classic-with-class.js
│   │               ├── with-class.js
│   │               └── with-ts-class.ts
│   ├── helpers/
│   │   ├── babel-eslint-parser.js
│   │   ├── faux-context.js
│   │   └── test-case.js
│   ├── lib/
│   │   ├── eslint-directive-comments-test.js
│   │   ├── rules/
│   │   │   ├── alias-model-in-controller.js
│   │   │   ├── avoid-leaking-state-in-ember-objects.js
│   │   │   ├── avoid-using-needs-in-controllers.js
│   │   │   ├── classic-decorator-hooks.js
│   │   │   ├── classic-decorator-no-classic-methods.js
│   │   │   ├── closure-actions.js
│   │   │   ├── computed-property-getters.js
│   │   │   ├── jquery-ember-run.js
│   │   │   ├── named-functions-in-promises.js
│   │   │   ├── new-module-imports.js
│   │   │   ├── no-actions-hash.js
│   │   │   ├── no-array-prototype-extensions.js
│   │   │   ├── no-arrow-function-computed-properties.js
│   │   │   ├── no-assignment-of-untracked-properties-used-in-tracking-contexts.js
│   │   │   ├── no-at-ember-render-modifiers.js
│   │   │   ├── no-attrs-in-components.js
│   │   │   ├── no-attrs-snapshot.js
│   │   │   ├── no-builtin-form-components.js
│   │   │   ├── no-capital-letters-in-routes.js
│   │   │   ├── no-classic-classes.js
│   │   │   ├── no-classic-components.js
│   │   │   ├── no-component-lifecycle-hooks.js
│   │   │   ├── no-computed-properties-in-native-classes.js
│   │   │   ├── no-controller-access-in-routes.js
│   │   │   ├── no-controllers.js
│   │   │   ├── no-current-route-name.js
│   │   │   ├── no-deeply-nested-dependent-keys-with-each.js
│   │   │   ├── no-deprecated-router-transition-methods.js
│   │   │   ├── no-duplicate-dependent-keys.js
│   │   │   ├── no-ember-super-in-es-classes.js
│   │   │   ├── no-ember-testing-in-module-scope.js
│   │   │   ├── no-empty-attrs.js
│   │   │   ├── no-empty-glimmer-component-classes.js
│   │   │   ├── no-function-prototype-extensions.js
│   │   │   ├── no-get-with-default.js
│   │   │   ├── no-get.js
│   │   │   ├── no-global-jquery.js
│   │   │   ├── no-html-safe.js
│   │   │   ├── no-implicit-injections.js
│   │   │   ├── no-implicit-service-injection-argument.js
│   │   │   ├── no-incorrect-calls-with-inline-anonymous-functions.js
│   │   │   ├── no-incorrect-computed-macros.js
│   │   │   ├── no-invalid-debug-function-arguments.js
│   │   │   ├── no-invalid-dependent-keys.js
│   │   │   ├── no-invalid-test-waiters.js
│   │   │   ├── no-jquery.js
│   │   │   ├── no-legacy-test-waiters.js
│   │   │   ├── no-mixins.js
│   │   │   ├── no-modifier-argument-destructuring.js
│   │   │   ├── no-new-mixins.js
│   │   │   ├── no-noop-setup-on-error-in-before.js
│   │   │   ├── no-observers.js
│   │   │   ├── no-old-shims.js
│   │   │   ├── no-on-calls-in-components.js
│   │   │   ├── no-pause-test.js
│   │   │   ├── no-private-routing-service.js
│   │   │   ├── no-proxies.js
│   │   │   ├── no-replace-test-comments.js
│   │   │   ├── no-restricted-property-modifications.js
│   │   │   ├── no-restricted-resolver-tests.js
│   │   │   ├── no-restricted-service-injections.js
│   │   │   ├── no-runloop.js
│   │   │   ├── no-settled-after-test-helper.js
│   │   │   ├── no-shadow-route-definition.js
│   │   │   ├── no-side-effects.js
│   │   │   ├── no-string-prototype-extensions.js
│   │   │   ├── no-test-and-then.js
│   │   │   ├── no-test-import-export.js
│   │   │   ├── no-test-module-for.js
│   │   │   ├── no-test-support-import.js
│   │   │   ├── no-test-this-render.js
│   │   │   ├── no-tracked-built-ins.js
│   │   │   ├── no-tracked-properties-from-args.js
│   │   │   ├── no-try-invoke.js
│   │   │   ├── no-unnecessary-index-route.js
│   │   │   ├── no-unnecessary-route-path-option.js
│   │   │   ├── no-unnecessary-service-injection-argument.js
│   │   │   ├── no-unused-services.js
│   │   │   ├── no-volatile-computed-properties.js
│   │   │   ├── order-in-components.js
│   │   │   ├── order-in-controllers.js
│   │   │   ├── order-in-models.js
│   │   │   ├── order-in-routes.js
│   │   │   ├── prefer-ember-test-helpers.js
│   │   │   ├── require-async-inverse-relationship.js
│   │   │   ├── require-computed-macros.js
│   │   │   ├── require-computed-property-dependencies.js
│   │   │   ├── require-fetch-import.js
│   │   │   ├── require-return-from-computed.js
│   │   │   ├── require-super-in-lifecycle-hooks.js
│   │   │   ├── require-tagless-components.js
│   │   │   ├── require-valid-css-selector-in-test-helpers.js
│   │   │   ├── route-path-style.js
│   │   │   ├── routes-segments-snake-case.js
│   │   │   ├── template-attribute-indentation.js
│   │   │   ├── template-attribute-order.js
│   │   │   ├── template-block-indentation.js
│   │   │   ├── template-builtin-component-arguments.js
│   │   │   ├── template-deprecated-inline-view-helper.js
│   │   │   ├── template-deprecated-render-helper.js
│   │   │   ├── template-eol-last.js
│   │   │   ├── template-linebreak-style.js
│   │   │   ├── template-link-href-attributes.js
│   │   │   ├── template-link-rel-noopener.js
│   │   │   ├── template-modifier-name-case.js
│   │   │   ├── template-no-abstract-roles.js
│   │   │   ├── template-no-accesskey-attribute.js
│   │   │   ├── template-no-action-modifiers.js
│   │   │   ├── template-no-action-on-submit-button.js
│   │   │   ├── template-no-action.js
│   │   │   ├── template-no-args-paths.js
│   │   │   ├── template-no-arguments-for-html-elements.js
│   │   │   ├── template-no-aria-hidden-body.js
│   │   │   ├── template-no-aria-unsupported-elements.js
│   │   │   ├── template-no-array-prototype-extensions.js
│   │   │   ├── template-no-at-ember-render-modifiers.js
│   │   │   ├── template-no-attrs-in-components.js
│   │   │   ├── template-no-autofocus-attribute.js
│   │   │   ├── template-no-bare-strings.js
│   │   │   ├── template-no-bare-yield.js
│   │   │   ├── template-no-block-params-for-html-elements.js
│   │   │   ├── template-no-builtin-form-components.js
│   │   │   ├── template-no-capital-arguments.js
│   │   │   ├── template-no-chained-this.js
│   │   │   ├── template-no-class-bindings.js
│   │   │   ├── template-no-curly-component-invocation.js
│   │   │   ├── template-no-debugger.js
│   │   │   ├── template-no-deprecated.js
│   │   │   ├── template-no-duplicate-attributes.js
│   │   │   ├── template-no-duplicate-id.js
│   │   │   ├── template-no-duplicate-landmark-elements.js
│   │   │   ├── template-no-dynamic-subexpression-invocations.js
│   │   │   ├── template-no-element-event-actions.js
│   │   │   ├── template-no-empty-headings.js
│   │   │   ├── template-no-extra-mut-helper-argument.js
│   │   │   ├── template-no-forbidden-elements.js
│   │   │   ├── template-no-heading-inside-button.js
│   │   │   ├── template-no-html-comments.js
│   │   │   ├── template-no-implicit-this.js
│   │   │   ├── template-no-index-component-invocation.js
│   │   │   ├── template-no-inline-event-handlers.js
│   │   │   ├── template-no-inline-linkto.js
│   │   │   ├── template-no-inline-styles.js
│   │   │   ├── template-no-input-block.js
│   │   │   ├── template-no-input-tagname.js
│   │   │   ├── template-no-invalid-aria-attributes.js
│   │   │   ├── template-no-invalid-interactive.js
│   │   │   ├── template-no-invalid-link-text.js
│   │   │   ├── template-no-invalid-link-title.js
│   │   │   ├── template-no-invalid-meta.js
│   │   │   ├── template-no-invalid-role.js
│   │   │   ├── template-no-jsx-attributes.js
│   │   │   ├── template-no-let-reference.js
│   │   │   ├── template-no-link-to-positional-params.js
│   │   │   ├── template-no-link-to-tagname.js
│   │   │   ├── template-no-log.js
│   │   │   ├── template-no-model-argument-in-route-templates.js
│   │   │   ├── template-no-multiple-empty-lines.js
│   │   │   ├── template-no-mut-helper.js
│   │   │   ├── template-no-negated-condition.js
│   │   │   ├── template-no-nested-interactive.js
│   │   │   ├── template-no-nested-landmark.js
│   │   │   ├── template-no-nested-splattributes.js
│   │   │   ├── template-no-obscure-array-access.js
│   │   │   ├── template-no-obsolete-elements.js
│   │   │   ├── template-no-only-default-slot.js
│   │   │   ├── template-no-outlet-outside-routes.js
│   │   │   ├── template-no-page-title-component.js
│   │   │   ├── template-no-passed-in-event-handlers.js
│   │   │   ├── template-no-pointer-down-event-binding.js
│   │   │   ├── template-no-positional-data-test-selectors.js
│   │   │   ├── template-no-positive-tabindex.js
│   │   │   ├── template-no-potential-path-strings.js
│   │   │   ├── template-no-quoteless-attributes.js
│   │   │   ├── template-no-redundant-fn.js
│   │   │   ├── template-no-redundant-role.js
│   │   │   ├── template-no-restricted-invocations.js
│   │   │   ├── template-no-route-action.js
│   │   │   ├── template-no-scope-outside-table-headings.js
│   │   │   ├── template-no-shadowed-elements.js
│   │   │   ├── template-no-splattributes-with-class.js
│   │   │   ├── template-no-this-in-template-only-components.js
│   │   │   ├── template-no-trailing-spaces.js
│   │   │   ├── template-no-triple-curlies.js
│   │   │   ├── template-no-unavailable-this.js
│   │   │   ├── template-no-unbalanced-curlies.js
│   │   │   ├── template-no-unbound.js
│   │   │   ├── template-no-unknown-arguments-for-builtin-components.js
│   │   │   ├── template-no-unnecessary-component-helper.js
│   │   │   ├── template-no-unnecessary-concat.js
│   │   │   ├── template-no-unnecessary-curly-parens.js
│   │   │   ├── template-no-unnecessary-curly-strings.js
│   │   │   ├── template-no-unsupported-role-attributes.js
│   │   │   ├── template-no-unused-block-params.js
│   │   │   ├── template-no-valueless-arguments.js
│   │   │   ├── template-no-whitespace-for-layout.js
│   │   │   ├── template-no-whitespace-within-word.js
│   │   │   ├── template-no-with.js
│   │   │   ├── template-no-yield-block-params-to-else-inverse.js
│   │   │   ├── template-no-yield-only.js
│   │   │   ├── template-no-yield-to-default.js
│   │   │   ├── template-quotes.js
│   │   │   ├── template-require-aria-activedescendant-tabindex.js
│   │   │   ├── template-require-button-type.js
│   │   │   ├── template-require-context-role.js
│   │   │   ├── template-require-each-key.js
│   │   │   ├── template-require-form-method.js
│   │   │   ├── template-require-has-block-helper.js
│   │   │   ├── template-require-iframe-src-attribute.js
│   │   │   ├── template-require-iframe-title.js
│   │   │   ├── template-require-input-label.js
│   │   │   ├── template-require-input-type.js
│   │   │   ├── template-require-lang-attribute.js
│   │   │   ├── template-require-mandatory-role-attributes.js
│   │   │   ├── template-require-media-caption.js
│   │   │   ├── template-require-presentational-children.js
│   │   │   ├── template-require-splattributes.js
│   │   │   ├── template-require-strict-mode.js
│   │   │   ├── template-require-valid-alt-text.js
│   │   │   ├── template-require-valid-form-groups.js
│   │   │   ├── template-require-valid-named-block-naming-format.js
│   │   │   ├── template-self-closing-void-elements.js
│   │   │   ├── template-simple-modifiers.js
│   │   │   ├── template-simple-unless.js
│   │   │   ├── template-sort-invocations.js
│   │   │   ├── template-splat-attributes-only.js
│   │   │   ├── template-style-concatenation.js
│   │   │   ├── template-table-groups.js
│   │   │   ├── template-template-length.js
│   │   │   ├── use-brace-expansion.js
│   │   │   ├── use-ember-data-rfc-395-imports.js
│   │   │   └── use-ember-get-and-set.js
│   │   ├── rules-preprocessor/
│   │   │   ├── ember_ts/
│   │   │   │   ├── bar.gts
│   │   │   │   ├── baz.ts
│   │   │   │   └── foo.gts
│   │   │   ├── gjs-gts-parser-test.js
│   │   │   ├── my-component.gts
│   │   │   ├── template-no-deprecated/
│   │   │   │   ├── component-stub.ts
│   │   │   │   ├── component-with-args.ts
│   │   │   │   ├── current-component.ts
│   │   │   │   ├── deprecated-component.ts
│   │   │   │   ├── deprecated-helper.ts
│   │   │   │   └── usage.gts
│   │   │   └── tsconfig.eslint.json
│   │   └── utils/
│   │       ├── computed-properties-test.js
│   │       ├── computed-property-dependent-keys-test.js
│   │       ├── computed-property-macros-test.js
│   │       ├── decorators-test.js
│   │       ├── editorconfig-test.js
│   │       ├── ember-source-version-test.js
│   │       ├── ember-test.js
│   │       ├── html-interactive-content-test.js
│   │       ├── import-test.js
│   │       ├── interactive-roles-test.js
│   │       ├── is-native-element-test.js
│   │       ├── javascript-test.js
│   │       ├── landmark-roles-test.js
│   │       ├── new-module-test.js
│   │       ├── property-getter-test.js
│   │       ├── property-order-test.js
│   │       ├── property-setter-test.js
│   │       ├── scope-references-this-test.js
│   │       ├── static-attr-value-test.js
│   │       ├── types-test.js
│   │       ├── utils/
│   │       │   └── get-source-module-name-for-identifier-test.js
│   │       └── utils-test.js
│   ├── lint.bench.mjs
│   ├── plugin-exports.js
│   ├── recommended.js
│   └── rule-setup.js
└── vitest.config.mjs
Download .txt
SYMBOL INDEX (1294 symbols across 331 files)

FILE: .eslint-doc-generatorrc.js
  constant HBS_ONLY_NOTE (line 3) | const HBS_ONLY_NOTE =
  constant END_HEADER_MARKER (line 6) | const END_HEADER_MARKER = '<!-- end auto-generated rule header -->';
  method postprocess (line 19) | postprocess(content, filePath) {

FILE: lib/rules/alias-model-in-controller.js
  method create (line 24) | create(context) {

FILE: lib/rules/avoid-leaking-state-in-ember-objects.js
  constant DEFAULT_IGNORED_PROPERTIES (line 6) | const DEFAULT_IGNORED_PROPERTIES = [
  function isAllowedTernary (line 18) | function isAllowedTernary(value) {
  function isAllowedLogicalExpression (line 26) | function isAllowedLogicalExpression(value) {
  function isAllowed (line 30) | function isAllowed(value) {
  method create (line 77) | create(context) {

FILE: lib/rules/avoid-using-needs-in-controllers.js
  method create (line 23) | create(context) {

FILE: lib/rules/classic-decorator-hooks.js
  constant ERROR_MESSAGE_INIT_IN_NON_CLASSIC (line 1) | const ERROR_MESSAGE_INIT_IN_NON_CLASSIC =
  constant ERROR_MESSAGE_DESTROY_IN_NON_CLASSIC (line 3) | const ERROR_MESSAGE_DESTROY_IN_NON_CLASSIC =
  constant ERROR_MESSAGE_CONSTRUCTOR_IN_CLASSIC (line 5) | const ERROR_MESSAGE_CONSTRUCTOR_IN_CLASSIC =
  method create (line 26) | create(context) {

FILE: lib/rules/classic-decorator-no-classic-methods.js
  function disallowedMethodErrorMessage (line 17) | function disallowedMethodErrorMessage(name) {
  method create (line 38) | create(context) {

FILE: lib/rules/closure-actions.js
  constant ERROR_MESSAGE (line 9) | const ERROR_MESSAGE = 'Use closure actions';
  method create (line 27) | create(context) {

FILE: lib/rules/computed-property-getters.js
  constant ALWAYS_GETTER_MESSAGE (line 11) | const ALWAYS_GETTER_MESSAGE = 'Always use a getter inside computed prope...
  constant PREVENT_GETTER_MESSAGE (line 12) | const PREVENT_GETTER_MESSAGE = 'Do not use a getter inside computed prop...
  constant ALWAYS_WITH_SETTER_MESSAGE (line 13) | const ALWAYS_WITH_SETTER_MESSAGE =
  method create (line 38) | create(context) {

FILE: lib/rules/jquery-ember-run.js
  constant ERROR_MESSAGE (line 13) | const ERROR_MESSAGE = "Don't use jQuery without Ember Run Loop";
  constant EMBER_RUNLOOP_FUNCTIONS (line 16) | const EMBER_RUNLOOP_FUNCTIONS = [
  method create (line 48) | create(context) {

FILE: lib/rules/named-functions-in-promises.js
  method create (line 36) | create(context) {
  function hasPromiseExpression (line 66) | function hasPromiseExpression(node) {

FILE: lib/rules/new-module-imports.js
  constant MAPPING (line 3) | const MAPPING = require('ember-rfc176-data');
  constant GLOBALS (line 7) | const GLOBALS = MAPPING.reduce((memo, exportDefinition) => {
  method create (line 38) | create(context) {

FILE: lib/rules/no-actions-hash.js
  constant ERROR_MESSAGE (line 4) | const ERROR_MESSAGE = 'Use the @action decorator instead of declaring an...
  function reportActionsProp (line 25) | function reportActionsProp(properties) {
  method ClassDeclaration (line 33) | ClassDeclaration(node) {
  method CallExpression (line 41) | CallExpression(node) {
  function inClassWhichCanContainActions (line 50) | function inClassWhichCanContainActions(context, node) {

FILE: lib/rules/no-array-prototype-extensions.js
  constant ERROR_MESSAGE (line 9) | const ERROR_MESSAGE = "Don't use Ember's array prototype extensions";
  constant TOKEN_TYPES (line 10) | const TOKEN_TYPES = {
  constant EXTENSION_METHODS (line 14) | const EXTENSION_METHODS = new Set([
  constant REPLACE_METHOD (line 59) | const REPLACE_METHOD = 'replace';
  constant EXTENSION_PROPERTIES (line 65) | const EXTENSION_PROPERTIES = new Set(['lastObject', 'firstObject']);
  constant KNOWN_NON_ARRAY_FUNCTION_CALLS (line 70) | const KNOWN_NON_ARRAY_FUNCTION_CALLS = new Set([
  constant KNOWN_NON_ARRAY_FUNCTION_CALLS_REGEXP (line 95) | const KNOWN_NON_ARRAY_FUNCTION_CALLS_REGEXP = new Set([
  constant KNOWN_NON_ARRAY_OBJECTS (line 103) | const KNOWN_NON_ARRAY_OBJECTS = new Set([
  constant KNOWN_NON_ARRAY_CLASSES (line 117) | const KNOWN_NON_ARRAY_CLASSES = new Set([
  constant FN_NAMES_TO_KNOWN_NON_ARRAY_WORDS (line 134) | const FN_NAMES_TO_KNOWN_NON_ARRAY_WORDS = new Map([
  function variableNameToWords (line 146) | function variableNameToWords(name) {
  function applyFix (line 178) | function applyFix(callExpressionNode, fixer, context, options = {}) {
  function isThisStoreCall (line 613) | function isThisStoreCall(node) {
  method create (line 646) | create(context) {

FILE: lib/rules/no-arrow-function-computed-properties.js
  constant ERROR_MESSAGE (line 7) | const ERROR_MESSAGE = 'Do not use arrow functions in computed properties';
  method create (line 37) | create(context) {

FILE: lib/rules/no-assignment-of-untracked-properties-used-in-tracking-contexts.js
  function createMacrosByPathMap (line 15) | function createMacrosByPathMap(macroConfigurations) {
  function createMacrosByIndexPathMap (line 29) | function createMacrosByIndexPathMap(macroConfigurations) {
  constant ERROR_MESSAGE (line 47) | const ERROR_MESSAGE =
  function findTrackedProperties (line 56) | function findTrackedProperties(nodeClassDeclaration, trackedImportName) {
  method create (line 179) | create(context) {

FILE: lib/rules/no-at-ember-render-modifiers.js
  constant ERROR_MESSAGE (line 3) | const ERROR_MESSAGE =
  function importDeclarationIsPackageName (line 9) | function importDeclarationIsPackageName(node, path) {
  method create (line 29) | create(context) {

FILE: lib/rules/no-attrs-in-components.js
  constant ERROR_MESSAGE (line 6) | const ERROR_MESSAGE = 'Do not use `this.attrs`';
  method create (line 28) | create(context) {
  function isThisAttrsExpression (line 65) | function isThisAttrsExpression(node) {

FILE: lib/rules/no-attrs-snapshot.js
  constant ERROR_MESSAGE (line 10) | const ERROR_MESSAGE =
  method create (line 37) | create(context) {

FILE: lib/rules/no-builtin-form-components.js
  constant ERROR_MESSAGE (line 5) | const ERROR_MESSAGE = 'Do not use built-in form components. Use native H...
  constant DISALLOWED_IMPORTS (line 6) | const DISALLOWED_IMPORTS = new Set(['Input', 'Textarea']);
  method create (line 24) | create(context) {

FILE: lib/rules/no-capital-letters-in-routes.js
  method create (line 23) | create(context) {

FILE: lib/rules/no-classic-classes.js
  constant ERROR_MESSAGE_NO_CLASSIC_CLASSES (line 7) | const ERROR_MESSAGE_NO_CLASSIC_CLASSES =
  function hasNoArguments (line 10) | function hasNoArguments(node) {
  function hasObjectArgument (line 14) | function hasObjectArgument(node, scopeManager) {
  function isEmberImport (line 21) | function isEmberImport(classImportedFrom) {
  method create (line 71) | create(context) {

FILE: lib/rules/no-classic-components.js
  constant ERROR_MESSAGE (line 6) | const ERROR_MESSAGE =
  method create (line 25) | create(context) {
  function getImportDefaultSpecifier (line 43) | function getImportDefaultSpecifier(node) {

FILE: lib/rules/no-component-lifecycle-hooks.js
  constant ERROR_MESSAGE_NO_COMPONENT_LIFECYCLE_HOOKS (line 12) | const ERROR_MESSAGE_NO_COMPONENT_LIFECYCLE_HOOKS =
  method create (line 35) | create(context) {

FILE: lib/rules/no-computed-properties-in-native-classes.js
  constant ERROR_MESSAGE (line 7) | const ERROR_MESSAGE =
  function findComputedNodes (line 15) | function findComputedNodes(nodeBody) {
  method create (line 57) | create(context) {

FILE: lib/rules/no-controller-access-in-routes.js
  constant ERROR_MESSAGE (line 7) | const ERROR_MESSAGE =
  method create (line 44) | create(context) {
  function getPropertiesArgumentsIncludeController (line 187) | function getPropertiesArgumentsIncludeController(args) {

FILE: lib/rules/no-controllers.js
  constant ERROR_MESSAGE (line 6) | const ERROR_MESSAGE = 'Avoid using controllers except for specifying `qu...
  method ClassDeclaration (line 28) | ClassDeclaration(node) {
  method CallExpression (line 37) | CallExpression(node) {
  function classDeclarationHasProperty (line 50) | function classDeclarationHasProperty(classDeclaration, propertyName) {
  function callExpressionClassHasProperty (line 60) | function callExpressionClassHasProperty(callExpression, propertyName, sc...

FILE: lib/rules/no-current-route-name.js
  constant ERROR_MESSAGE (line 3) | const ERROR_MESSAGE = 'Use currentURL() instead of currentRouteName()';
  method create (line 21) | create(context) {

FILE: lib/rules/no-deeply-nested-dependent-keys-with-each.js
  constant ERROR_MESSAGE (line 10) | const ERROR_MESSAGE =
  method create (line 29) | create(context) {

FILE: lib/rules/no-deprecated-router-transition-methods.js
  function getBaseFixSteps (line 9) | function getBaseFixSteps(fixer, context, currentClass) {
  method create (line 74) | create(context) {

FILE: lib/rules/no-duplicate-dependent-keys.js
  constant ERROR_MESSAGE (line 8) | const ERROR_MESSAGE = 'Dependent keys should not be repeated';
  method create (line 29) | create(context) {
  function findDuplicateStringNodes (line 70) | function findDuplicateStringNodes(stringNodes) {

FILE: lib/rules/no-ember-super-in-es-classes.js
  function isDirectlyInClass (line 3) | function isDirectlyInClass(node) {
  method create (line 38) | create(context) {

FILE: lib/rules/no-ember-testing-in-module-scope.js
  constant ERROR_MESSAGES (line 6) | const ERROR_MESSAGES = [
  method create (line 28) | create(context) {

FILE: lib/rules/no-empty-attrs.js
  method create (line 24) | create(context) {

FILE: lib/rules/no-empty-glimmer-component-classes.js
  constant ERROR_MESSAGE (line 5) | const ERROR_MESSAGE = 'Do not create empty backing classes for Glimmer c...
  constant ERROR_MESSAGE_TEMPLATE_TAG (line 6) | const ERROR_MESSAGE_TEMPLATE_TAG =
  method create (line 30) | create(context) {

FILE: lib/rules/no-function-prototype-extensions.js
  method create (line 23) | create(context) {

FILE: lib/rules/no-get-with-default.js
  constant ERROR_MESSAGE (line 6) | const ERROR_MESSAGE = 'Use `||` or the ternary operator instead of `getW...
  method create (line 41) | create(context) {
  function fix (line 124) | function fix({

FILE: lib/rules/no-get.js
  constant ERROR_MESSAGE_GET (line 9) | const ERROR_MESSAGE_GET = "Use ES5 getters (`this.property`) instead of ...
  constant ERROR_MESSAGE_GET_PROPERTIES (line 11) | const ERROR_MESSAGE_GET_PROPERTIES =
  constant VALID_JS_VARIABLE_NAME_REGEXP (line 14) | const VALID_JS_VARIABLE_NAME_REGEXP = new RegExp('^[a-zA-Z_$][0-9a-zA-Z_...
  constant VALID_JS_ARRAY_INDEX_REGEXP (line 15) | const VALID_JS_ARRAY_INDEX_REGEXP = new RegExp(/^\d+$/);
  function isValidJSVariableName (line 16) | function isValidJSVariableName(str) {
  function isValidJSArrayIndex (line 19) | function isValidJSArrayIndex(str) {
  function isValidJSPath (line 22) | function isValidJSPath(str) {
  function reportGet (line 26) | function reportGet({ node, context, path, useAt, useOptionalChaining, ob...
  function fixGet (line 46) | function fixGet({
  function reportGetProperties (line 113) | function reportGetProperties({ context, node, objectText, properties }) {
  function fixGetProperties (line 135) | function fixGetProperties({ fixer, node, objectText, propertyNames }) {
  method create (line 211) | create(context) {
  function validateGetPropertiesArguments (line 471) | function validateGetPropertiesArguments(args, ignoreNestedPaths) {
  function convertLiteralTypePath (line 482) | function convertLiteralTypePath({

FILE: lib/rules/no-global-jquery.js
  constant ERROR_MESSAGE (line 6) | const ERROR_MESSAGE = 'Do not use global `$` or `jQuery`';
  method create (line 28) | create(context) {

FILE: lib/rules/no-html-safe.js
  constant ERROR_MESSAGE (line 3) | const ERROR_MESSAGE = 'Do not use `htmlSafe`.';
  method create (line 26) | create(context) {

FILE: lib/rules/no-implicit-injections.js
  constant MODULE_TYPES (line 11) | const MODULE_TYPES = [
  function fixService (line 28) | function fixService(fixer, currentClass, serviceInjectImportName, failed...
  function normalizeConfiguration (line 51) | function normalizeConfiguration(denyList) {
  method create (line 110) | create(context) {

FILE: lib/rules/no-implicit-service-injection-argument.js
  constant ERROR_MESSAGE (line 11) | const ERROR_MESSAGE = "Don't omit the argument for the injected service ...
  method create (line 29) | create(context) {

FILE: lib/rules/no-incorrect-calls-with-inline-anonymous-functions.js
  constant ERROR_MESSAGE (line 5) | const ERROR_MESSAGE =
  function isMemberExpressionOnRun (line 8) | function isMemberExpressionOnRun(node) {
  method create (line 36) | create(context) {

FILE: lib/rules/no-incorrect-computed-macros.js
  constant ERROR_MESSAGE_AND_OR (line 6) | const ERROR_MESSAGE_AND_OR = 'Computed property macro should be used wit...
  method create (line 24) | create(context) {

FILE: lib/rules/no-invalid-debug-function-arguments.js
  constant ERROR_MESSAGE (line 10) | const ERROR_MESSAGE =
  constant DEBUG_FUNCTIONS (line 13) | const DEBUG_FUNCTIONS = ['assert', 'deprecate', 'warn'];
  method create (line 33) | create(context) {
  function isDebugFunctionWithReversedArgs (line 60) | function isDebugFunctionWithReversedArgs(node, importedIdentifiers) {
  function isDebugFunction (line 69) | function isDebugFunction(node, importedIdentifiers) {
  function getDebugFunction (line 73) | function getDebugFunction(node, importedIdentifiers) {

FILE: lib/rules/no-invalid-dependent-keys.js
  constant ERROR_MESSAGE_UNBALANCED_BRACES (line 11) | const ERROR_MESSAGE_UNBALANCED_BRACES = 'Found unbalanced braces in depe...
  constant ERROR_MESSAGE_UNNECESSARY_BRACES (line 12) | const ERROR_MESSAGE_UNNECESSARY_BRACES = 'Found unnecessary braces in de...
  constant ERROR_MESSAGE_TERMINAL_AT_EACH (line 13) | const ERROR_MESSAGE_TERMINAL_AT_EACH = 'Found terminal `@each`, use `[]`...
  constant ERROR_MESSAGE_MIDDLE_BRACKETS (line 14) | const ERROR_MESSAGE_MIDDLE_BRACKETS = '`[]` should only be used at the e...
  constant ERROR_MESSAGE_LEADING_TRAILING_PERIOD (line 15) | const ERROR_MESSAGE_LEADING_TRAILING_PERIOD = 'Found leading or trailing...
  constant ERROR_MESSAGE_INVALID_CHARACTER (line 16) | const ERROR_MESSAGE_INVALID_CHARACTER = 'Found invalid character in depe...
  function hasUnbalancedBraces (line 18) | function hasUnbalancedBraces(str) {
  constant REGEXP_UNNECESSARY_BRACES (line 25) | const REGEXP_UNNECESSARY_BRACES = /{([^,.]+)}/g;
  function hasUnnecessaryBraces (line 26) | function hasUnnecessaryBraces(str) {
  function hasTerminalAtEach (line 30) | function hasTerminalAtEach(str) {
  function hasMiddleBrackets (line 34) | function hasMiddleBrackets(str) {
  method create (line 59) | create(context) {
  function removeLastOccurrenceOf (line 167) | function removeLastOccurrenceOf(strToSearch, strToRemove) {

FILE: lib/rules/no-invalid-test-waiters.js
  constant MODULE_SCOPE_ERROR_MESSAGE (line 6) | const MODULE_SCOPE_ERROR_MESSAGE = 'The buildWaiter function should be i...
  constant DIRECT_ASSIGNMENT_ERROR_MESSAGE (line 7) | const DIRECT_ASSIGNMENT_ERROR_MESSAGE =
  function isInModuleScope (line 10) | function isInModuleScope(node) {
  function isDirectVariableDeclaration (line 19) | function isDirectVariableDeclaration(node) {
  method create (line 40) | create(context) {

FILE: lib/rules/no-jquery.js
  constant ERROR_MESSAGE (line 11) | const ERROR_MESSAGE = 'Do not use jQuery';
  method create (line 29) | create(context) {

FILE: lib/rules/no-legacy-test-waiters.js
  constant LEGACY_TEST_WAITER_FUNCTIONS (line 4) | const LEGACY_TEST_WAITER_FUNCTIONS = ['registerWaiter', 'unregisterWaite...
  constant ERROR_MESSAGE (line 5) | const ERROR_MESSAGE =
  method create (line 24) | create(context) {

FILE: lib/rules/no-mixins.js
  constant ERROR_MESSAGE (line 7) | const ERROR_MESSAGE = "Don't use a mixin";
  method create (line 26) | create(context) {

FILE: lib/rules/no-modifier-argument-destructuring.js
  constant ERROR_MESSAGE (line 5) | const ERROR_MESSAGE =
  method create (line 28) | create(context) {

FILE: lib/rules/no-new-mixins.js
  constant ERROR_MESSAGE (line 9) | const ERROR_MESSAGE = "Don't create new mixins";
  method create (line 27) | create(context) {

FILE: lib/rules/no-noop-setup-on-error-in-before.js
  method create (line 27) | create(context) {

FILE: lib/rules/no-observers.js
  constant ERROR_MESSAGE (line 11) | const ERROR_MESSAGE = "Don't use observers";
  method create (line 29) | create(context) {

FILE: lib/rules/no-old-shims.js
  method create (line 265) | create(context) {

FILE: lib/rules/no-on-calls-in-components.js
  method create (line 25) | create(context) {

FILE: lib/rules/no-pause-test.js
  constant ERROR_MESSAGE (line 7) | const ERROR_MESSAGE = 'Do not commit `pauseTest()`';
  method create (line 29) | create(context) {

FILE: lib/rules/no-private-routing-service.js
  constant PRIVATE_ROUTING_SERVICE_ERROR_MESSAGE (line 12) | const PRIVATE_ROUTING_SERVICE_ERROR_MESSAGE =
  constant ROUTER_MICROLIB_ERROR_MESSAGE (line 15) | const ROUTER_MICROLIB_ERROR_MESSAGE =
  constant ROUTER_MAIN_ERROR_MESSAGE (line 18) | const ROUTER_MAIN_ERROR_MESSAGE =
  method create (line 58) | create(context) {

FILE: lib/rules/no-proxies.js
  constant ERROR_MESSAGE (line 3) | const ERROR_MESSAGE = 'Do not use array or object proxies.';
  method create (line 25) | create(context) {

FILE: lib/rules/no-replace-test-comments.js
  constant ERROR_MESSAGE (line 5) | const ERROR_MESSAGE = "No 'Replace this with your real tests' comments. ...
  method create (line 27) | create(context) {

FILE: lib/rules/no-restricted-property-modifications.js
  method create (line 49) | create(context) {
  function isReadOnlyPropertyUsingAliasOrReads (line 114) | function isReadOnlyPropertyUsingAliasOrReads(
  function isThisSet (line 131) | function isThisSet(node) {
  function isThisSetReadOnlyProperty (line 143) | function isThisSetReadOnlyProperty(node, readOnlyProperties) {
  function isAliasComputedProperty (line 147) | function isAliasComputedProperty(node, importedComputedName, importedAli...
  function isReadsComputedProperty (line 154) | function isReadsComputedProperty(node, importedComputedName, importedRea...
  function isIdentifierCall (line 161) | function isIdentifierCall(node, name) {
  function isMemberExpressionCall (line 167) | function isMemberExpressionCall(node, object, name) {
  function isReadOnlyProperty (line 178) | function isReadOnlyProperty(property, readOnlyProperties) {

FILE: lib/rules/no-restricted-resolver-tests.js
  function getNoUnitTrueMessage (line 10) | function getNoUnitTrueMessage(fn) {
  function getNoNeedsMessage (line 14) | function getNoNeedsMessage(fn) {
  function getSingleStringArgumentMessage (line 18) | function getSingleStringArgumentMessage(fn) {
  function getNoPOJOWithoutIntegrationTrueMessage (line 22) | function getNoPOJOWithoutIntegrationTrueMessage(fn) {
  function hasOnlyStringArgument (line 26) | function hasOnlyStringArgument(node) {
  function hasUnitTrue (line 33) | function hasUnitTrue(node) {
  function hasNeeds (line 40) | function hasNeeds(node) {
  function hasIntegrationTrue (line 49) | function hasIntegrationTrue(node) {
  function getAncestorCallExpression (line 58) | function getAncestorCallExpression(node) {
  function getLastArgument (line 62) | function getLastArgument(node) {
  method create (line 94) | create(context) {

FILE: lib/rules/no-restricted-service-injections.js
  constant DEFAULT_ERROR_MESSAGE (line 8) | const DEFAULT_ERROR_MESSAGE = 'Injecting this service is not allowed fro...
  method create (line 61) | create(context) {

FILE: lib/rules/no-runloop.js
  constant RUNLOOP_TO_LIFELINE_MAP (line 10) | const RUNLOOP_TO_LIFELINE_MAP = Object.freeze({
  constant ERROR_MESSAGE (line 18) | const ERROR_MESSAGE =
  constant EMBER_RUNLOOP_FUNCTIONS (line 22) | const EMBER_RUNLOOP_FUNCTIONS = [
  method create (line 74) | create(context) {

FILE: lib/rules/no-settled-after-test-helper.js
  constant ERROR_MESSAGE (line 3) | const ERROR_MESSAGE =
  constant SETTLING_TEST_HELPERS (line 6) | const SETTLING_TEST_HELPERS = new Set([
  method create (line 39) | create(context) {
  function isAwaitSettled (line 98) | function isAwaitSettled(node) {
  function isAwaitSettlingTestHelper (line 113) | function isAwaitSettlingTestHelper(node, settlingTestHelpers) {

FILE: lib/rules/no-shadow-route-definition.js
  constant ROOT_PATH_TRIM_REGEX (line 7) | const ROOT_PATH_TRIM_REGEX = /\/{2,}/g;
  constant SOURCE_PATH_VALUE_TYPE (line 8) | const SOURCE_PATH_VALUE_TYPE = {
  constant URL_CHUNK_SEPARATOR (line 12) | const URL_CHUNK_SEPARATOR = '/';
  function buildErrorMessage (line 14) | function buildErrorMessage(opts) {
  function buildSourceLocationString (line 21) | function buildSourceLocationString(routeInfo) {
  function buildRouteErrorInfo (line 25) | function buildRouteErrorInfo(routeInfo) {
  function isNestedRouteWithSamePath (line 29) | function isNestedRouteWithSamePath(routeInfo) {
  method create (line 53) | create(context) {
  function getRouteInfo (line 103) | function getRouteInfo(node, scopeManager) {
  function getRouteBasePath (line 148) | function getRouteBasePath(node, scopeManager) {
  function getParentRoutesPaths (line 171) | function getParentRoutesPaths(node, scopeManager) {
  function getPropertyByKeyName (line 183) | function getPropertyByKeyName(objectExpression, keyName) {
  function trimRootLevelNestedRoutes (line 192) | function trimRootLevelNestedRoutes(routesPath) {
  function convertPathToGenericForMatching (line 196) | function convertPathToGenericForMatching(routePathInfos) {
  function convertPathForDisplay (line 220) | function convertPathForDisplay(routePathInfos) {
  function getRouteName (line 228) | function getRouteName(node) {
  function getNodeValue (line 233) | function getNodeValue(node) {
  function isString (line 252) | function isString(value) {
  function isValidRouteInfo (line 256) | function isValidRouteInfo(routeInfo) {
  function lookupIfElseBlockStatementsTreePrefix (line 260) | function lookupIfElseBlockStatementsTreePrefix(node) {

FILE: lib/rules/no-side-effects.js
  function isEmberSetThis (line 15) | function isEmberSetThis(node, importedEmberName) {
  function isImportedSetThis (line 29) | function isImportedSetThis(node, importedSetName, importedSetPropertiesN...
  function isThisSet (line 41) | function isThisSet(node) {
  constant DISALLOWED_FUNCTION_CALLS (line 57) | const DISALLOWED_FUNCTION_CALLS = new Set(['send', 'sendAction', 'sendEv...
  function isDisallowedFunctionCall (line 58) | function isDisallowedFunctionCall(node, importedEmberName) {
  function isImportedSendEventCall (line 70) | function isImportedSendEventCall(node, importedSendEventName) {
  function memberExpressionBeginsWithThis (line 86) | function memberExpressionBeginsWithThis(node) {
  function findSideEffects (line 108) | function findSideEffects(
  constant ERROR_MESSAGE (line 137) | const ERROR_MESSAGE = "Don't introduce side-effects in computed properti...
  method create (line 174) | create(context) {

FILE: lib/rules/no-string-prototype-extensions.js
  constant ERROR_MESSAGE (line 5) | const ERROR_MESSAGE = 'Do not using `String` prototype extension methods.';
  constant EXTENSION_METHODS (line 7) | const EXTENSION_METHODS = new Set([
  method create (line 35) | create(context) {

FILE: lib/rules/no-test-and-then.js
  constant ERROR_MESSAGE (line 6) | const ERROR_MESSAGE = 'Use `await` instead of `andThen` test wait helper.';
  method create (line 28) | create(context) {

FILE: lib/rules/no-test-import-export.js
  constant NO_IMPORT_MESSAGE (line 10) | const NO_IMPORT_MESSAGE =
  constant NO_EXPORT_MESSAGE (line 13) | const NO_EXPORT_MESSAGE = 'No exports from test file. Any exports should...
  method ImportDeclaration (line 47) | ImportDeclaration(node) {
  method ExportNamedDeclaration (line 61) | ExportNamedDeclaration(node) {
  method ExportDefaultDeclaration (line 64) | ExportDefaultDeclaration(node) {
  function isInTestDirectory (line 71) | function isInTestDirectory(filename) {
  function isTestHelperFilename (line 80) | function isTestHelperFilename(filename) {

FILE: lib/rules/no-test-module-for.js
  constant ERROR_MESSAGE (line 8) | const ERROR_MESSAGE = 'moduleFor* apis are are not allowed. Use `module`...
  method create (line 30) | create(context) {
  function isModuleFor (line 61) | function isModuleFor(_context, node) {

FILE: lib/rules/no-test-support-import.js
  constant ERROR_MESSAGE_NO_IMPORT (line 9) | const ERROR_MESSAGE_NO_IMPORT =
  method ImportDeclaration (line 32) | ImportDeclaration(node) {

FILE: lib/rules/no-test-this-render.js
  function makeErrorMessage (line 6) | function makeErrorMessage(functionName) {
  method create (line 31) | create(context) {

FILE: lib/rules/no-tracked-built-ins.js
  constant TRACKED_BUILT_INS_MAPPING (line 9) | const TRACKED_BUILT_INS_MAPPING = {
  constant TRACKED_BUILT_INS_MODULE (line 18) | const TRACKED_BUILT_INS_MODULE = 'tracked-built-ins';
  constant EMBER_REACTIVE_MODULE (line 19) | const EMBER_REACTIVE_MODULE = '@ember/reactive/collections';
  constant ERROR_MESSAGE_IMPORT (line 21) | const ERROR_MESSAGE_IMPORT =
  method create (line 50) | create(context) {

FILE: lib/rules/no-tracked-properties-from-args.js
  constant ERROR_MESSAGE (line 8) | const ERROR_MESSAGE =
  function visitClassPropertyOrPropertyDefinition (line 11) | function visitClassPropertyOrPropertyDefinition(node, context, trackedIm...
  method create (line 46) | create(context) {

FILE: lib/rules/no-try-invoke.js
  constant ERROR_MESSAGE (line 6) | const ERROR_MESSAGE = 'Use optional chaining operator `?.()` instead of ...
  method create (line 23) | create(context) {

FILE: lib/rules/no-unnecessary-index-route.js
  constant ERROR_MESSAGE (line 9) | const ERROR_MESSAGE =
  method create (line 28) | create(context) {

FILE: lib/rules/no-unnecessary-route-path-option.js
  constant ERROR_MESSAGE (line 12) | const ERROR_MESSAGE = 'Do not provide unnecessary `path` option which ma...
  method create (line 30) | create(context) {
  function hasPropertyWithKeyName (line 81) | function hasPropertyWithKeyName(objectExpression, keyName) {
  function getPropertyByKeyName (line 85) | function getPropertyByKeyName(objectExpression, keyName) {
  function pathMatchesRouteName (line 94) | function pathMatchesRouteName(path, routeName) {

FILE: lib/rules/no-unnecessary-service-injection-argument.js
  constant ERROR_MESSAGE (line 11) | const ERROR_MESSAGE =
  method create (line 30) | create(context) {

FILE: lib/rules/no-unused-services.js
  method create (line 32) | create(context) {
  function splitValue (line 395) | function splitValue(value) {

FILE: lib/rules/no-volatile-computed-properties.js
  constant ERROR_MESSAGE (line 7) | const ERROR_MESSAGE = 'Do not use volatile computed properties';
  method create (line 24) | create(context) {

FILE: lib/rules/order-in-components.js
  constant ORDER (line 10) | const ORDER = [
  method create (line 64) | create(context) {

FILE: lib/rules/order-in-controllers.js
  constant ORDER (line 10) | const ORDER = [
  method create (line 55) | create(context) {

FILE: lib/rules/order-in-models.js
  constant ORDER (line 10) | const ORDER = [
  method create (line 49) | create(context) {

FILE: lib/rules/order-in-routes.js
  constant ORDER (line 10) | const ORDER = [
  method create (line 62) | create(context) {

FILE: lib/rules/prefer-ember-test-helpers.js
  method Program (line 37) | Program(node) {

FILE: lib/rules/require-async-inverse-relationship.js
  method create (line 14) | create(context) {

FILE: lib/rules/require-computed-macros.js
  function makeErrorMessage (line 14) | function makeErrorMessage(macro) {
  constant ERROR_MESSAGE_READS (line 18) | const ERROR_MESSAGE_READS = makeErrorMessage('reads');
  constant ERROR_MESSAGE_AND (line 19) | const ERROR_MESSAGE_AND = makeErrorMessage('and');
  constant ERROR_MESSAGE_OR (line 20) | const ERROR_MESSAGE_OR = makeErrorMessage('or');
  constant ERROR_MESSAGE_GT (line 21) | const ERROR_MESSAGE_GT = makeErrorMessage('gt');
  constant ERROR_MESSAGE_GTE (line 22) | const ERROR_MESSAGE_GTE = makeErrorMessage('gte');
  constant ERROR_MESSAGE_LT (line 23) | const ERROR_MESSAGE_LT = makeErrorMessage('lt');
  constant ERROR_MESSAGE_LTE (line 24) | const ERROR_MESSAGE_LTE = makeErrorMessage('lte');
  constant ERROR_MESSAGE_NOT (line 25) | const ERROR_MESSAGE_NOT = makeErrorMessage('not');
  constant ERROR_MESSAGE_EQUAL (line 26) | const ERROR_MESSAGE_EQUAL = makeErrorMessage('equal');
  constant ERROR_MESSAGE_FILTER_BY (line 27) | const ERROR_MESSAGE_FILTER_BY = makeErrorMessage('filterBy');
  constant ERROR_MESSAGE_MAP_BY (line 28) | const ERROR_MESSAGE_MAP_BY = makeErrorMessage('mapBy');
  function isThisPropertyFunctionCall (line 37) | function isThisPropertyFunctionCall(node, functionName) {
  function isSimpleThisExpressionsInsideLogicalExpression (line 72) | function isSimpleThisExpressionsInsideLogicalExpression(node, operator) {
  function getThisExpressions (line 103) | function getThisExpressions(nodeLogicalExpression) {
  function getPropertyName (line 118) | function getPropertyName(nodeComputedProperty) {
  function makeFix (line 124) | function makeFix(nodeToReplace, macro, macroArgs) {
  method create (line 170) | create(context) {

FILE: lib/rules/require-computed-property-dependencies.js
  function isIdentifier (line 20) | function isIdentifier(node, name) {
  function isMemberExpression (line 37) | function isMemberExpression(node, objectName, propertyName) {
  function isTwoPartStringLiteral (line 55) | function isTwoPartStringLiteral(node) {
  function nodeToStringValue (line 69) | function nodeToStringValue(node) {
  function parseComputedDependencies (line 86) | function parseComputedDependencies(args) {
  function findEmberGetCalls (line 109) | function findEmberGetCalls(node, importedNames) {
  function findThisGetCalls (line 134) | function findThisGetCalls(node) {
  function getArrayOrRest (line 164) | function getArrayOrRest(args) {
  function extractEmberGetDependencies (line 178) | function extractEmberGetDependencies(
  function extractThisGetDependencies (line 224) | function extractThisGetDependencies(memberExpression, context) {
  function removeRedundantKeys (line 228) | function removeRedundantKeys(keys) {
  function removeServiceNames (line 234) | function removeServiceNames(keys, serviceNames) {
  constant ERROR_MESSAGE_NON_STRING_VALUE (line 241) | const ERROR_MESSAGE_NON_STRING_VALUE = 'Non-string value used as compute...
  method create (line 280) | create(context) {

FILE: lib/rules/require-fetch-import.js
  constant ERROR_MESSAGE (line 5) | const ERROR_MESSAGE = 'Explicitly import `fetch` instead of using `windo...
  method create (line 23) | create(context) {

FILE: lib/rules/require-return-from-computed.js
  function isAnySegmentReachable (line 10) | function isAnySegmentReachable(segments) {
  constant ERROR_MESSAGE (line 20) | const ERROR_MESSAGE = 'Always return a value from computed properties';
  method create (line 38) | create(context) {

FILE: lib/rules/require-super-in-lifecycle-hooks.js
  function hasMatchingNode (line 7) | function hasMatchingNode(node, matcher) {
  function isClassicSuper (line 25) | function isClassicSuper(node) {
  function isNativeSuper (line 41) | function isNativeSuper(node, hook) {
  constant ERROR_MESSAGE (line 55) | const ERROR_MESSAGE = 'Call super in lifecycle hooks';
  method create (line 92) | create(context) {

FILE: lib/rules/require-tagless-components.js
  constant ERROR_MESSAGE_REQUIRE_TAGLESS_COMPONENTS (line 13) | const ERROR_MESSAGE_REQUIRE_TAGLESS_COMPONENTS =
  function isTagNameIdentifier (line 22) | function isTagNameIdentifier(node) {
  function isTagNameProperty (line 32) | function isTagNameProperty(node) {
  function isNonEmptyTagNameProperty (line 40) | function isNonEmptyTagNameProperty(node) {
  function getNonEmptyTagNameInObjectExpression (line 48) | function getNonEmptyTagNameInObjectExpression(node) {
  function getNonEmptyTagNameInClassBody (line 56) | function getNonEmptyTagNameInClassBody(node) {
  function hasNoTagNameInObjectExpression (line 64) | function hasNoTagNameInObjectExpression(node) {
  function hasNoTagNameInClassBody (line 72) | function hasNoTagNameInClassBody(node) {
  function getDecoratorCallExpressionWithName (line 81) | function getDecoratorCallExpressionWithName(node, name) {
  method create (line 104) | create(context) {

FILE: lib/rules/require-valid-css-selector-in-test-helpers.js
  constant REGEX_SPLIT_BY_COMMA_NOT_IN_QUOTES (line 17) | const REGEX_SPLIT_BY_COMMA_NOT_IN_QUOTES = /,(?=(?:(?:[^"']*["']){2})*[^...
  constant TEST_MODULE_NAMES (line 19) | const TEST_MODULE_NAMES = new Set(['module', 'describe']);
  constant TEST_HELPER_IMPORTS (line 20) | const TEST_HELPER_IMPORTS = new Set([
  constant QUERY_SELECTOR_METHODS (line 36) | const QUERY_SELECTOR_METHODS = new Set(['querySelectorAll', 'querySelect...
  constant PARENT_NODE_NAMES (line 37) | const PARENT_NODE_NAMES = new Set(['element', 'document']);
  constant SELECTOR_RULES (line 38) | const SELECTOR_RULES = Object.freeze({
  method fix (line 45) | fix(node, str, fixer) {
  method fix (line 61) | fix() {}
  method fix (line 70) | fix() {}
  function hasMissingClosingBracket (line 75) | function hasMissingClosingBracket(selector) {
  function _isValidSelector (line 79) | function _isValidSelector(selector) {
  function _isAssertDomCall (line 91) | function _isAssertDomCall(node, assertIdentifierName) {
  function _isQuerySelectorCall (line 101) | function _isQuerySelectorCall(node, testModuleSpecifier) {
  function _isTestHelperCall (line 112) | function _isTestHelperCall(node, hasTestHelperImport, localImportNames) {
  method create (line 137) | create(context) {

FILE: lib/rules/route-path-style.js
  constant ERROR_MESSAGE (line 12) | const ERROR_MESSAGE = 'Use kebab-case in route path.';
  method create (line 35) | create(context) {
  function hasPropertyWithKeyName (line 87) | function hasPropertyWithKeyName(objectExpression, keyName) {
  function getPropertyByKeyName (line 91) | function getPropertyByKeyName(objectExpression, keyName) {
  function getStaticURLSegments (line 100) | function getStaticURLSegments(path) {
  function isDynamicSegment (line 104) | function isDynamicSegment(segment) {
  function isWildcardSegment (line 108) | function isWildcardSegment(segment) {
  function isStaticSegment (line 112) | function isStaticSegment(segment) {
  constant KEBAB_CASE_REGEXP (line 116) | const KEBAB_CASE_REGEXP = /^[\da-z-]+$/;
  function isKebabCase (line 117) | function isKebabCase(str) {
  function convertRoutePathToKebabCase (line 121) | function convertRoutePathToKebabCase(path) {

FILE: lib/rules/routes-segments-snake-case.js
  method create (line 30) | create(context) {

FILE: lib/rules/template-attribute-indentation.js
  function getWhiteSpaceLength (line 3) | function getWhiteSpaceLength(statement) {
  function getEndLocationForOpen (line 8) | function getEndLocationForOpen(node) {
  function canApplyRule (line 12) | function canApplyRule(node, config, sourceCode) {
  function getSourceForLoc (line 29) | function getSourceForLoc(sourceLines, loc) {
  function getSourceForNode (line 54) | function getSourceForNode(sourceLines, node) {
  function parseOptions (line 58) | function parseOptions(options) {
  method create (line 146) | create(context) {

FILE: lib/rules/template-attribute-order.js
  method create (line 37) | create(context) {

FILE: lib/rules/template-block-indentation.js
  constant VOID_TAGS (line 5) | const VOID_TAGS = new Set([
  constant IGNORED_ELEMENTS (line 23) | const IGNORED_ELEMENTS = new Set(['pre', 'script', 'style', 'textarea']);
  function isControlChar (line 25) | function isControlChar(char) {
  function getDisplayName (line 29) | function getDisplayName(node) {
  function childrenFor (line 55) | function childrenFor(node) {
  function hasChildren (line 62) | function hasChildren(node) {
  function hasLeadingContent (line 66) | function hasLeadingContent(child, siblings) {
  function detectNestedElseIfBlock (line 89) | function detectNestedElseIfBlock(node) {
  function parseOptions (line 101) | function parseOptions(options) {
  method create (line 166) | create(context) {

FILE: lib/rules/template-builtin-component-arguments.js
  constant FORBIDDEN_ATTRIBUTES (line 1) | const FORBIDDEN_ATTRIBUTES = {
  function generateErrorMessage (line 6) | function generateErrorMessage(component, attribute) {
  method create (line 31) | create(context) {

FILE: lib/rules/template-deprecated-inline-view-helper.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-deprecated-render-helper.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-eol-last.js
  method create (line 33) | create(context) {

FILE: lib/rules/template-linebreak-style.js
  function toDisplay (line 6) | function toDisplay(value) {
  constant EOL_MAP (line 10) | const EOL_MAP = { lf: '\n', cr: '\r', crlf: '\r\n' };
  method create (line 39) | create(context) {

FILE: lib/rules/template-link-href-attributes.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-link-rel-noopener.js
  method create (line 23) | create(context) {

FILE: lib/rules/template-modifier-name-case.js
  constant SIMPLE_DASHERIZE_REGEXP (line 3) | const SIMPLE_DASHERIZE_REGEXP = /[A-Z]/g;
  constant ALPHA (line 4) | const ALPHA = /[A-Za-z]/;
  function dasherize (line 6) | function dasherize(key) {
  method create (line 41) | create(context) {

FILE: lib/rules/template-no-abstract-roles.js
  constant PROHIBITED_ROLE_VALUES (line 6) | const PROHIBITED_ROLE_VALUES = new Set(
  method create (line 34) | create(context) {

FILE: lib/rules/template-no-accesskey-attribute.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-action-modifiers.js
  method create (line 45) | create(context) {

FILE: lib/rules/template-no-action-on-submit-button.js
  function isInsideForm (line 1) | function isInsideForm(node) {
  function isSubmitButton (line 23) | function isSubmitButton(node) {
  function hasClickHandlingModifier (line 36) | function hasClickHandlingModifier(node) {
  method create (line 83) | create(context) {

FILE: lib/rules/template-no-action.js
  function isActionHelperPath (line 1) | function isActionHelperPath(node) {
  method create (line 47) | create(context) {

FILE: lib/rules/template-no-args-paths.js
  method create (line 24) | create(context) {

FILE: lib/rules/template-no-arguments-for-html-elements.js
  method create (line 27) | create(context) {

FILE: lib/rules/template-no-aria-hidden-body.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-aria-unsupported-elements.js
  constant ELEMENTS_WITHOUT_ARIA_SUPPORT (line 6) | const ELEMENTS_WITHOUT_ARIA_SUPPORT = new Set(
  method create (line 35) | create(context) {

FILE: lib/rules/template-no-array-prototype-extensions.js
  constant FIRST_OBJECT_PROP_NAME (line 1) | const FIRST_OBJECT_PROP_NAME = 'firstObject';
  constant LAST_OBJECT_PROP_NAME (line 2) | const LAST_OBJECT_PROP_NAME = 'lastObject';
  constant ERROR_MESSAGES (line 4) | const ERROR_MESSAGES = {
  function isAllowed (line 14) | function isAllowed(originalStr, matchedStr) {
  function isGetHelperWithMatchedLiteral (line 36) | function isGetHelperWithMatchedLiteral(node, matchedStr) {
  function buildGetHelperParts (line 67) | function buildGetHelperParts(originalPath) {
  method create (line 100) | create(context) {

FILE: lib/rules/template-no-at-ember-render-modifiers.js
  constant RENDER_MODIFIER_IMPORT_PATHS (line 2) | const RENDER_MODIFIER_IMPORT_PATHS = {
  constant ROOT_NAMED_EXPORTS (line 9) | const ROOT_NAMED_EXPORTS = {
  constant KEBAB_NAMES (line 15) | const KEBAB_NAMES = new Set(['did-insert', 'did-update', 'will-destroy']);
  constant ROOT_PACKAGE (line 16) | const ROOT_PACKAGE = '@ember/render-modifiers';
  method create (line 42) | create(context) {

FILE: lib/rules/template-no-attrs-in-components.js
  constant COMPONENT_TEMPLATE_REGEX (line 4) | const COMPONENT_TEMPLATE_REGEX = new RegExp(
  method create (line 35) | create(context) {

FILE: lib/rules/template-no-autofocus-attribute.js
  function isMustacheBooleanFalse (line 25) | function isMustacheBooleanFalse(value) {
  function isNativeInputHelper (line 45) | function isNativeInputHelper(node) {
  function isInsideDialog (line 64) | function isInsideDialog(node) {
  method create (line 102) | create(context) {

FILE: lib/rules/template-no-bare-strings.js
  constant DEFAULT_GLOBAL_ATTRIBUTES (line 1) | const DEFAULT_GLOBAL_ATTRIBUTES = [
  constant DEFAULT_ELEMENT_ATTRIBUTES (line 9) | const DEFAULT_ELEMENT_ATTRIBUTES = {
  constant BUILTIN_COMPONENT_ATTRIBUTES (line 14) | const BUILTIN_COMPONENT_ATTRIBUTES = {
  constant DEFAULT_ALLOWLIST (line 19) | const DEFAULT_ALLOWLIST = [
  constant IGNORED_ELEMENTS (line 87) | const IGNORED_ELEMENTS = ['pre', 'script', 'style', 'template', 'textare...
  function sanitizeConfigArray (line 89) | function sanitizeConfigArray(arr = []) {
  function mergeObjects (line 93) | function mergeObjects(obj1 = {}, obj2 = {}) {
  function isPageTitleHelper (line 104) | function isPageTitleHelper(node) {
  function isIfHelper (line 108) | function isIfHelper(node) {
  function isUnlessHelper (line 112) | function isUnlessHelper(node) {
  function isStringOnlyConcatHelper (line 116) | function isStringOnlyConcatHelper(node) {
  function isInAttrNode (line 124) | function isInAttrNode(node) {
  method create (line 177) | create(context) {

FILE: lib/rules/template-no-bare-yield.js
  function isEmptyNode (line 1) | function isEmptyNode(node) {
  function isBareYield (line 9) | function isBareYield(node) {
  method create (line 39) | create(context) {

FILE: lib/rules/template-no-block-params-for-html-elements.js
  method create (line 27) | create(context) {

FILE: lib/rules/template-no-builtin-form-components.js
  method create (line 27) | create(context) {

FILE: lib/rules/template-no-capital-arguments.js
  constant RESERVED (line 1) | const RESERVED = new Set(['@arguments', '@args', '@block', '@else']);
  constant ALLOWED_PREFIX (line 2) | const ALLOWED_PREFIX = /^[a-z]/;
  method create (line 29) | create(context) {

FILE: lib/rules/template-no-chained-this.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-class-bindings.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-curly-component-invocation.js
  constant BUILT_INS (line 2) | const BUILT_INS = new Set([
  constant ALWAYS_CURLY (line 39) | const ALWAYS_CURLY = new Set(['yield']);
  function transformTagName (line 41) | function transformTagName(name, isLocal) {
  function parseConfig (line 59) | function parseConfig(config) {
  function isExplicitThisPath (line 74) | function isExplicitThisPath(pathOriginal) {
  method create (line 123) | create(context) {

FILE: lib/rules/template-no-debugger.js
  method create (line 23) | create(context) {

FILE: lib/rules/template-no-deprecated.js
  constant TS_ALIAS_FLAG (line 8) | const TS_ALIAS_FLAG = 2_097_152;
  method create (line 27) | create(context) {

FILE: lib/rules/template-no-duplicate-attributes.js
  method create (line 27) | create(context) {

FILE: lib/rules/template-no-duplicate-id.js
  constant IGNORE_IDS (line 1) | const IGNORE_IDS = new Set(['{{unique-id}}', '{{(unique-id)}}']);
  function isControlFlowHelper (line 3) | function isControlFlowHelper(node) {
  function findBlockParamAncestor (line 12) | function findBlockParamAncestor(node, headName) {
  method create (line 48) | create(context) {

FILE: lib/rules/template-no-duplicate-landmark-elements.js
  method create (line 31) | create(context) {
  function getLabel (line 196) | function getLabel(node) {
  function getRoleValue (line 219) | function getRoleValue(node) {
  function isNewScopeElement (line 227) | function isNewScopeElement(node) {
  function getLandmarkRole (line 231) | function getLandmarkRole(node, LANDMARK_ROLES, ELEMENT_TO_ROLE, insideSe...

FILE: lib/rules/template-no-dynamic-subexpression-invocations.js
  function isInAttrPosition (line 1) | function isInAttrPosition(node) {
  method create (line 48) | create(context) {

FILE: lib/rules/template-no-element-event-actions.js
  method create (line 32) | create(context) {

FILE: lib/rules/template-no-empty-headings.js
  constant HEADINGS (line 4) | const HEADINGS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']);
  function isAriaHiddenTruthy (line 13) | function isAriaHiddenTruthy(attr) {
  function isHidden (line 25) | function isHidden(node) {
  function isTextEmpty (line 35) | function isTextEmpty(text) {
  function hasAccessibleContent (line 40) | function hasAccessibleContent(node, sourceCode) {
  function isHeadingElement (line 81) | function isHeadingElement(node) {
  method create (line 115) | create(context) {

FILE: lib/rules/template-no-extra-mut-helper-argument.js
  method create (line 23) | create(context) {

FILE: lib/rules/template-no-forbidden-elements.js
  constant DEFAULT_FORBIDDEN (line 1) | const DEFAULT_FORBIDDEN = ['meta', 'style', 'html', 'script'];
  method create (line 38) | create(context) {

FILE: lib/rules/template-no-heading-inside-button.js
  constant HEADING_ELEMENTS (line 1) | const HEADING_ELEMENTS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']);
  function hasButtonParent (line 3) | function hasButtonParent(node) {
  method create (line 43) | create(context) {

FILE: lib/rules/template-no-html-comments.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-implicit-this.js
  constant BUILT_INS (line 2) | const BUILT_INS = new Set([
  constant CALLEE_PARENT_TYPES (line 35) | const CALLEE_PARENT_TYPES = new Set([
  function isCalleePosition (line 44) | function isCalleePosition(node) {
  function isJsScopeVariable (line 60) | function isJsScopeVariable(node, sourceCode) {
  function isLocalBlockParam (line 80) | function isLocalBlockParam(node, pathRoot) {
  method create (line 130) | create(context) {

FILE: lib/rules/template-no-index-component-invocation.js
  method create (line 24) | create(context) {

FILE: lib/rules/template-no-inline-event-handlers.js
  method create (line 19) | create(context) {

FILE: lib/rules/template-no-inline-linkto.js
  method create (line 24) | create(context) {

FILE: lib/rules/template-no-inline-styles.js
  method create (line 29) | create(context) {

FILE: lib/rules/template-no-input-block.js
  method create (line 20) | create(context) {

FILE: lib/rules/template-no-input-tagname.js
  method create (line 21) | create(context) {

FILE: lib/rules/template-no-invalid-aria-attributes.js
  function isBoolean (line 3) | function isBoolean(value) {
  function isNumeric (line 7) | function isNumeric(value) {
  function allowsUndefinedLiteral (line 22) | function allowsUndefinedLiteral(attrDef, value) {
  function validateByType (line 26) | function validateByType(attrDef, value) {
  function isValidAriaValue (line 71) | function isValidAriaValue(attrName, value) {
  function getExpectedTypeDescription (line 79) | function getExpectedTypeDescription(attrName) {
  method create (line 133) | create(context) {

FILE: lib/rules/template-no-invalid-interactive.js
  function hasAttr (line 7) | function hasAttr(node, name) {
  function getTextAttr (line 11) | function getTextAttr(node, name) {
  constant DISALLOWED_DOM_EVENTS (line 19) | const DISALLOWED_DOM_EVENTS = new Set([
  constant ELEMENT_ALLOWED_EVENTS (line 34) | const ELEMENT_ALLOWED_EVENTS = {
  method create (line 73) | create(context) {

FILE: lib/rules/template-no-invalid-link-text.js
  constant DISALLOWED_LINK_TEXTS (line 1) | const DISALLOWED_LINK_TEXTS = new Set(['click here', 'more info', 'read ...
  function getTextContentResult (line 3) | function getTextContentResult(node) {
  function isDynamicValue (line 29) | function isDynamicValue(value) {
  function checkAriaAttributes (line 40) | function checkAriaAttributes(attrs) {
  method create (line 107) | create(context) {

FILE: lib/rules/template-no-invalid-link-title.js
  function getChildTextContents (line 4) | function getChildTextContents(children) {
  function hasInvalidLinkTitle (line 20) | function hasInvalidLinkTitle(children, titleValues) {
  method create (line 47) | create(context) {

FILE: lib/rules/template-no-invalid-meta.js
  method create (line 32) | create(context) {

FILE: lib/rules/template-no-invalid-role.js
  constant ARIA_13_DRAFT_ROLES (line 10) | const ARIA_13_DRAFT_ROLES = [
  constant VALID_ROLES (line 17) | const VALID_ROLES = new Set([
  constant SEMANTIC_ELEMENTS (line 24) | const SEMANTIC_ELEMENTS = new Set([
  method create (line 147) | create(context) {

FILE: lib/rules/template-no-jsx-attributes.js
  function getMessage (line 45) | function getMessage(name) {
  method create (line 74) | create(context) {

FILE: lib/rules/template-no-let-reference.js
  function checkIfWritableReferences (line 22) | function checkIfWritableReferences(node, scope) {
  method GlimmerPathExpression (line 33) | GlimmerPathExpression(node) {
  method GlimmerElementNode (line 37) | GlimmerElementNode(node) {

FILE: lib/rules/template-no-link-to-positional-params.js
  method create (line 23) | create(context) {

FILE: lib/rules/template-no-link-to-tagname.js
  method create (line 24) | create(context) {

FILE: lib/rules/template-no-log.js
  method create (line 23) | create(context) {

FILE: lib/rules/template-no-model-argument-in-route-templates.js
  function isRouteTemplate (line 15) | function isRouteTemplate(filePath) {
  method create (line 57) | create(context) {

FILE: lib/rules/template-no-multiple-empty-lines.js
  method create (line 35) | create(context) {

FILE: lib/rules/template-no-mut-helper.js
  method create (line 32) | create(context) {

FILE: lib/rules/template-no-negated-condition.js
  constant ERROR_MESSAGE_FLIP_IF (line 1) | const ERROR_MESSAGE_FLIP_IF =
  constant ERROR_MESSAGE_USE_IF (line 3) | const ERROR_MESSAGE_USE_IF = 'Change `unless (not condition)` to `if con...
  constant ERROR_MESSAGE_USE_UNLESS (line 4) | const ERROR_MESSAGE_USE_UNLESS = 'Change `if (not condition)` to `unless...
  constant ERROR_MESSAGE_NEGATED_HELPER (line 5) | const ERROR_MESSAGE_NEGATED_HELPER = 'Simplify unnecessary negation of h...
  constant INVERTIBLE_HELPERS (line 7) | const INVERTIBLE_HELPERS = new Set(['not', 'eq', 'not-eq', 'gt', 'gte', ...
  constant HELPER_INVERSIONS (line 9) | const HELPER_INVERSIONS = {
  function isIf (line 19) | function isIf(node) {
  function isUnless (line 23) | function isUnless(node) {
  function hasNotHelper (line 27) | function hasNotHelper(node) {
  function hasNestedFixableHelper (line 36) | function hasNestedFixableHelper(node) {
  function escapeRegExp (line 45) | function escapeRegExp(string) {
  method create (line 83) | create(context) {

FILE: lib/rules/template-no-nested-interactive.js
  function hasAttr (line 6) | function hasAttr(node, name) {
  function getTextAttr (line 10) | function getTextAttr(node, name) {
  function getRole (line 18) | function getRole(node) {
  constant MENUITEM_ROLES (line 25) | const MENUITEM_ROLES = new Set(['menuitem', 'menuitemcheckbox', 'menuite...
  function isCompositeWidgetPattern (line 27) | function isCompositeWidgetPattern(parentRole, childRole) {
  function isMenuItemNode (line 42) | function isMenuItemNode(node) {
  function describeInteractive (line 58) | function describeInteractive(node) {
  function isAllowedDetailsChild (line 96) | function isAllowedDetailsChild(childNode, parentEntry) {
  method create (line 150) | create(context) {

FILE: lib/rules/template-no-nested-landmark.js
  constant LANDMARK_ELEMENTS (line 3) | const LANDMARK_ELEMENTS = new Set(['header', 'aside', 'footer', 'form', ...
  constant EQUIVALENT_ROLE (line 5) | const EQUIVALENT_ROLE = {
  function isLandmark (line 14) | function isLandmark(node) {
  function getLandmarkType (line 29) | function getLandmarkType(node) {
  method create (line 62) | create(context) {

FILE: lib/rules/template-no-nested-splattributes.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-obscure-array-access.js
  constant DIGIT_REGEXP (line 1) | const DIGIT_REGEXP = /^\[?\d+]?$/;
  function getHelperParams (line 12) | function getHelperParams(original) {
  method create (line 52) | create(context) {
  function buildFix (line 89) | function buildFix(context, node, params) {

FILE: lib/rules/template-no-obsolete-elements.js
  constant OBSOLETE (line 1) | const OBSOLETE = [
  function hasBindingInScopeChain (line 33) | function hasBindingInScopeChain(scope, name) {
  method create (line 61) | create(context) {

FILE: lib/rules/template-no-only-default-slot.js
  constant ERROR_MESSAGE (line 1) | const ERROR_MESSAGE =
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-outlet-outside-routes.js
  function isRouteTemplate (line 13) | function isRouteTemplate(filePath) {
  method create (line 53) | create(context) {

FILE: lib/rules/template-no-page-title-component.js
  method create (line 18) | create(context) {

FILE: lib/rules/template-no-passed-in-event-handlers.js
  constant EMBER_EVENTS (line 5) | const EMBER_EVENTS = new Set([
  function isEventName (line 32) | function isEventName(name) {
  method create (line 74) | create(context) {

FILE: lib/rules/template-no-pointer-down-event-binding.js
  method create (line 24) | create(context) {

FILE: lib/rules/template-no-positional-data-test-selectors.js
  constant BUILT_INS (line 1) | const BUILT_INS = new Set([
  function checkNode (line 35) | function checkNode(node, context) {
  method create (line 90) | create(context) {

FILE: lib/rules/template-no-positive-tabindex.js
  function getTabindexViolation (line 6) | function getTabindexViolation(attrValue) {
  function getConditionalTabindexViolation (line 62) | function getConditionalTabindexViolation(params) {
  method create (line 115) | create(context) {

FILE: lib/rules/template-no-potential-path-strings.js
  constant FINE_SYMBOLS (line 1) | const FINE_SYMBOLS = ['|', '/', '\\'];
  method create (line 27) | create(context) {

FILE: lib/rules/template-no-quoteless-attributes.js
  method create (line 23) | create(context) {

FILE: lib/rules/template-no-redundant-fn.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-redundant-role.js
  constant DEFAULT_CONFIG (line 4) | const DEFAULT_CONFIG = {
  function parseConfig (line 8) | function parseConfig(config) {
  function createErrorMessageLandmarkElement (line 15) | function createErrorMessageLandmarkElement(element, role) {
  function createErrorMessageAnyElement (line 19) | function createErrorMessageAnyElement(element, role) {
  constant ALLOWED_ELEMENT_ROLES (line 23) | const ALLOWED_ELEMENT_ROLES = [
  function getSelectImplicitRole (line 39) | function getSelectImplicitRole(node) {
  constant ROLE_TO_ELEMENTS (line 76) | const ROLE_TO_ELEMENTS = {
  method create (line 158) | create(context) {

FILE: lib/rules/template-no-restricted-invocations.js
  constant COMPONENT_HELPER_NAME (line 2) | const COMPONENT_HELPER_NAME = 'component';
  function dasherize (line 4) | function dasherize(str) {
  function parseConfig (line 16) | function parseConfig(config) {
  method create (line 88) | create(context) {

FILE: lib/rules/template-no-route-action.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-scope-outside-table-headings.js
  constant HTML_ELEMENTS (line 3) | const HTML_ELEMENTS = new Set(htmlTags);
  method create (line 27) | create(context) {

FILE: lib/rules/template-no-shadowed-elements.js
  function isHtmlElement (line 9) | function isHtmlElement(tagName) {
  method create (line 54) | create(context) {

FILE: lib/rules/template-no-splattributes-with-class.js
  constant ERROR_MESSAGE (line 1) | const ERROR_MESSAGE =
  method create (line 26) | create(context) {

FILE: lib/rules/template-no-this-in-template-only-components.js
  constant VALID_COMPONENT_EXTENSIONS (line 4) | const VALID_COMPONENT_EXTENSIONS = ['.js', '.ts'];
  constant GLIMMER_SCRIPT_EXTENSIONS (line 5) | const GLIMMER_SCRIPT_EXTENSIONS = ['.gjs', '.gts'];
  function componentClassExists (line 7) | function componentClassExists(pathWithoutExtension) {
  function isTemplateOnlyComponent (line 13) | function isTemplateOnlyComponent(templateFilePath) {
  method create (line 83) | create(context) {

FILE: lib/rules/template-no-trailing-spaces.js
  method create (line 24) | create(context) {

FILE: lib/rules/template-no-triple-curlies.js
  method create (line 21) | create(context) {

FILE: lib/rules/template-no-unavailable-this.js
  function isInsideClassOrFunction (line 1) | function isInsideClassOrFunction(node) {
  method create (line 33) | create(context) {

FILE: lib/rules/template-no-unbalanced-curlies.js
  constant SUSPECT_CHARS (line 3) | const SUSPECT_CHARS = '}}';
  method create (line 28) | create(context) {

FILE: lib/rules/template-no-unbound.js
  method create (line 20) | create(context) {

FILE: lib/rules/template-no-unknown-arguments-for-builtin-components.js
  function deprecateArgument (line 1) | function deprecateArgument(componentName, argumentName, replacementAttri...
  function deprecateEvent (line 11) | function deprecateEvent(componentName, argumentName, replacementAttribut...
  function removeAtSymbol (line 265) | function removeAtSymbol(txt) {
  function fuzzyMatch (line 269) | function fuzzyMatch(query, candidates) {
  function getErrorMessage (line 306) | function getErrorMessage(tagName, argumentName) {
  function checkConflicts (line 340) | function checkConflicts(nodeMeta, node, seen, context) {
  function checkRequired (line 366) | function checkRequired(nodeMeta, node, seen, context) {
  function buildRenameFix (line 388) | function buildRenameFix(attr, newName) {
  method create (line 421) | create(context) {

FILE: lib/rules/template-no-unnecessary-component-helper.js
  function toPascalCase (line 1) | function toPascalCase(name) {
  function isValidIdentifier (line 8) | function isValidIdentifier(name) {
  function isComponentWithStringLiteral (line 12) | function isComponentWithStringLiteral(node) {
  function getComponentInvocationText (line 24) | function getComponentInvocationText(sourceCode, node, componentName) {
  function getOpenInvocationEnd (line 38) | function getOpenInvocationEnd(node) {
  method create (line 75) | create(context) {

FILE: lib/rules/template-no-unnecessary-concat.js
  method create (line 23) | create(context) {

FILE: lib/rules/template-no-unnecessary-curly-parens.js
  function isFixableMustache (line 1) | function isFixableMustache(node) {
  method create (line 34) | create(context) {

FILE: lib/rules/template-no-unnecessary-curly-strings.js
  method create (line 21) | create(context) {

FILE: lib/rules/template-no-unsupported-role-attributes.js
  function getStaticAttrValue (line 3) | function getStaticAttrValue(node, name) {
  function nodeSatisfiesAttributeConstraint (line 15) | function nodeSatisfiesAttributeConstraint(node, attrSpec) {
  function keyMatchesNode (line 35) | function keyMatchesNode(node, key) {
  constant ELEMENT_ROLES_KEYS_BY_TAG (line 50) | const ELEMENT_ROLES_KEYS_BY_TAG = buildElementRolesIndex();
  function buildElementRolesIndex (line 52) | function buildElementRolesIndex() {
  function getImplicitRole (line 63) | function getImplicitRole(node) {
  function getExplicitRole (line 100) | function getExplicitRole(node) {
  function removeRangeWithAdjacentWhitespace (line 108) | function removeRangeWithAdjacentWhitespace(sourceText, range) {
  method create (line 149) | create(context) {

FILE: lib/rules/template-no-unused-block-params.js
  function collectChildNodes (line 1) | function collectChildNodes(n) {
  function markParamIfUsed (line 38) | function markParamIfUsed(name, blockParams, usedParams, shadowedParams) {
  function isPartialStatement (line 45) | function isPartialStatement(n) {
  function buildShadowedSet (line 52) | function buildShadowedSet(shadowedParams, innerBlockParams, outerBlockPa...
  function checkBlockParts (line 62) | function checkBlockParts(n, blockParams, usedParams, shadowedParams, new...
  function checkUnusedBlockParams (line 91) | function checkUnusedBlockParams(context, node, blockParams, startNodes) {
  method create (line 191) | create(context) {

FILE: lib/rules/template-no-valueless-arguments.js
  function isNamedArgument (line 2) | function isNamedArgument(attrName) {
  method create (line 24) | create(context) {

FILE: lib/rules/template-no-whitespace-for-layout.js
  constant ERROR_MESSAGE (line 2) | const ERROR_MESSAGE = 'Excess whitespace detected.';
  method create (line 25) | create(context) {

FILE: lib/rules/template-no-whitespace-within-word.js
  constant WHITESPACE_ENTITY_LIST (line 1) | const WHITESPACE_ENTITY_LIST = [
  constant CHARACTER_REGEX (line 55) | const CHARACTER_REGEX = '[a-zA-Z]';
  constant WHITESPACE_WITHIN_WORD_REGEX (line 63) | const WHITESPACE_WITHIN_WORD_REGEX = new RegExp(
  method create (line 89) | create(context) {

FILE: lib/rules/template-no-with.js
  constant DEPRECATION_URL (line 2) | const DEPRECATION_URL = 'https://deprecations.emberjs.com/v3.x/#toc_embe...
  method create (line 24) | create(context) {

FILE: lib/rules/template-no-yield-block-params-to-else-inverse.js
  constant ERROR_MESSAGE (line 1) | const ERROR_MESSAGE = 'Yielding block params to else/inverse block is no...
  method create (line 26) | create(context) {

FILE: lib/rules/template-no-yield-only.js
  function isEmptyNode (line 1) | function isEmptyNode(node) {
  function isYieldOnly (line 9) | function isYieldOnly(node) {
  method create (line 43) | create(context) {

FILE: lib/rules/template-no-yield-to-default.js
  constant ERROR_MESSAGE (line 1) | const ERROR_MESSAGE = 'A block named "default" is not valid';
  method create (line 26) | create(context) {

FILE: lib/rules/template-quotes.js
  function attrValueHasChar (line 1) | function attrValueHasChar(node, ch) {
  method create (line 53) | create(context) {

FILE: lib/rules/template-require-aria-activedescendant-tabindex.js
  constant HTML_TAGS (line 3) | const HTML_TAGS = new Set(dom.keys());
  constant INTERACTIVE_ELEMENTS (line 4) | const INTERACTIVE_ELEMENTS = new Set(['input', 'button', 'select', 'text...
  constant ERROR_MESSAGE (line 5) | const ERROR_MESSAGE =
  constant FIXED_TABINDEX (line 7) | const FIXED_TABINDEX = 'tabindex="0"';
  function isInteractiveElement (line 9) | function isInteractiveElement(node) {
  function getTabindexNumericValue (line 20) | function getTabindexNumericValue(tabindexAttr) {
  method create (line 69) | create(context) {

FILE: lib/rules/template-require-button-type.js
  function hasParentForm (line 1) | function hasParentForm(node) {
  method create (line 36) | create(context) {

FILE: lib/rules/template-require-context-role.js
  constant ROLES_REQUIRING_CONTEXT (line 1) | const ROLES_REQUIRING_CONTEXT = {
  method create (line 41) | create(context) {
  function getRoleFromNode (line 84) | function getRoleFromNode(node) {
  function hasAriaHiddenTrue (line 92) | function hasAriaHiddenTrue(node) {
  function getParentContext (line 107) | function getParentContext(elementStack) {

FILE: lib/rules/template-require-each-key.js
  constant FIXED_KEY (line 1) | const FIXED_KEY = 'key="@identity"';
  method create (line 27) | create(context) {

FILE: lib/rules/template-require-form-method.js
  constant VALID_FORM_METHODS (line 3) | const VALID_FORM_METHODS = ['POST', 'GET', 'DIALOG'];
  constant DEFAULT_CONFIG (line 5) | const DEFAULT_CONFIG = {
  function parseConfig (line 9) | function parseConfig(config) {
  function makeErrorMessage (line 38) | function makeErrorMessage(methods) {
  function getFixedMethod (line 42) | function getFixedMethod(config) {
  method create (line 90) | create(context) {

FILE: lib/rules/template-require-has-block-helper.js
  constant TRANSFORMATIONS (line 1) | const TRANSFORMATIONS = {
  function getErrorMessage (line 6) | function getErrorMessage(name) {
  function shouldWrapInSubExpression (line 10) | function shouldWrapInSubExpression(node) {
  method create (line 52) | create(context) {

FILE: lib/rules/template-require-iframe-src-attribute.js
  constant ERROR_MESSAGE (line 1) | const ERROR_MESSAGE =
  constant FIXED_SRC_ATTRIBUTE (line 3) | const FIXED_SRC_ATTRIBUTE = 'src="about:blank"';
  method create (line 29) | create(context) {

FILE: lib/rules/template-require-iframe-title.js
  constant INVALID_LITERAL_TYPES (line 7) | const INVALID_LITERAL_TYPES = new Set([
  function isInvalidTitleLiteralPath (line 14) | function isInvalidTitleLiteralPath(path) {
  function getInvalidLiteralType (line 18) | function getInvalidLiteralType(path) {
  method create (line 71) | create(context) {

FILE: lib/rules/template-require-input-label.js
  function hasAttr (line 1) | function hasAttr(node, name) {
  function isString (line 5) | function isString(value) {
  function isRegExp (line 9) | function isRegExp(value) {
  function allowedFormat (line 13) | function allowedFormat(value) {
  function parseConfig (line 17) | function parseConfig(config) {
  function matchesLabelTag (line 35) | function matchesLabelTag(tag, configuredTag) {
  method create (line 77) | create(context) {

FILE: lib/rules/template-require-input-type.js
  constant VALID_TYPES (line 7) | const VALID_TYPES = new Set([
  method create (line 60) | create(context) {

FILE: lib/rules/template-require-lang-attribute.js
  constant DEFAULT_CONFIG (line 3) | const DEFAULT_CONFIG = {
  function isValidLangTag (line 7) | function isValidLangTag(value) {
  function parseConfig (line 14) | function parseConfig(config) {
  method create (line 65) | create(context) {

FILE: lib/rules/template-require-mandatory-role-attributes.js
  function getStaticRolesFromElement (line 7) | function getStaticRolesFromElement(node) {
  function getStaticRolesFromMustache (line 17) | function getStaticRolesFromMustache(node) {
  function splitRoleTokens (line 27) | function splitRoleTokens(value) {
  function getStaticAttrValue (line 38) | function getStaticAttrValue(node, name) {
  function isClassicHbsFilename (line 63) | function isClassicHbsFilename(context) {
  function getTagName (line 68) | function getTagName(node, context) {
  constant AX_CONCEPTS_BY_TAG (line 98) | const AX_CONCEPTS_BY_TAG = buildAxConceptsByTag();
  function buildAxConceptsByTag (line 100) | function buildAxConceptsByTag() {
  function isSemanticRoleElement (line 122) | function isSemanticRoleElement(node, role, context) {
  function getMissingRequiredAttributes (line 164) | function getMissingRequiredAttributes(roleTokens, foundAriaAttributes, n...
  method create (line 212) | create(context) {

FILE: lib/rules/template-require-media-caption.js
  method create (line 24) | create(context) {

FILE: lib/rules/template-require-presentational-children.js
  constant ROLES_REQUIRING_PRESENTATIONAL_CHILDREN (line 6) | const ROLES_REQUIRING_PRESENTATIONAL_CHILDREN = new Set(
  constant NON_SEMANTIC_TAGS (line 11) | const NON_SEMANTIC_TAGS = new Set([
  constant SKIPPED_TAGS (line 27) | const SKIPPED_TAGS = new Set([
  function getRoleValue (line 34) | function getRoleValue(node) {
  function hasPresentationalRole (line 42) | function hasPresentationalRole(node) {
  function findAllSemanticDescendants (line 47) | function findAllSemanticDescendants(children, nonSemanticTags, results) {
  method create (line 107) | create(context) {

FILE: lib/rules/template-require-splattributes.js
  method create (line 26) | create(context) {

FILE: lib/rules/template-require-strict-mode.js
  constant ERROR_MESSAGE (line 1) | const ERROR_MESSAGE =
  function isStrictModeFile (line 4) | function isStrictModeFile(filePath) {
  method create (line 30) | create(context) {

FILE: lib/rules/template-require-valid-alt-text.js
  constant REDUNDANT_WORDS (line 3) | const REDUNDANT_WORDS = ['image', 'photo', 'picture', 'logo', 'spacer'];
  function findAttr (line 5) | function findAttr(node, name) {
  function hasAttr (line 9) | function hasAttr(node, name) {
  function hasNonEmptyTextAttr (line 27) | function hasNonEmptyTextAttr(node, name) {
  function hasAnyNonEmptyTextAttr (line 44) | function hasAnyNonEmptyTextAttr(node, names) {
  function getTextValue (line 48) | function getTextValue(attr) {
  function getNormalizedAltText (line 58) | function getNormalizedAltText(altAttr) {
  function hasChildren (line 77) | function hasChildren(node) {
  method create (line 122) | create(context) {

FILE: lib/rules/template-require-valid-form-groups.js
  constant FORM_ELEMENTS (line 2) | const FORM_ELEMENTS = new Set(['input']);
  function hasRoleGroup (line 4) | function hasRoleGroup(node) {
  function hasAriaLabel (line 9) | function hasAriaLabel(node) {
  function isValidFormGroup (line 13) | function isValidFormGroup(node) {
  function hasMultipleFormElementsInParentScope (line 21) | function hasMultipleFormElementsInParentScope(node) {
  function hasValidGroupingAncestor (line 35) | function hasValidGroupingAncestor(node) {
  method create (line 74) | create(context) {

FILE: lib/rules/template-require-valid-named-block-naming-format.js
  constant FORMAT (line 1) | const FORMAT = {
  function camelize (line 6) | function camelize(str) {
  function dasherize (line 18) | function dasherize(str) {
  constant FORMAT_METHOD (line 22) | const FORMAT_METHOD = {
  constant DEFAULT_FORMAT (line 27) | const DEFAULT_FORMAT = FORMAT.CAMEL_CASE;
  function parseConfig (line 29) | function parseConfig(config) {
  function getStringQuote (line 46) | function getStringQuote(text) {
  function isHasBlockNode (line 50) | function isHasBlockNode(node) {
  function isYieldNode (line 54) | function isYieldNode(node) {
  method create (line 87) | create(context) {

FILE: lib/rules/template-self-closing-void-elements.js
  method create (line 29) | create(context) {

FILE: lib/rules/template-simple-modifiers.js
  function isModifierHelper (line 1) | function isModifierHelper(node) {
  function isValidFirstParam (line 5) | function isValidFirstParam(node) {
  method create (line 35) | create(context) {

FILE: lib/rules/template-simple-unless.js
  function isUnless (line 1) | function isUnless(node) {
  function isIf (line 5) | function isIf(node) {
  method create (line 44) | create(context) {

FILE: lib/rules/template-sort-invocations.js
  method create (line 28) | create(context) {

FILE: lib/rules/template-splat-attributes-only.js
  method create (line 22) | create(context) {

FILE: lib/rules/template-style-concatenation.js
  method create (line 25) | create(context) {

FILE: lib/rules/template-table-groups.js
  constant ALLOWED_TABLE_CHILDREN (line 1) | const ALLOWED_TABLE_CHILDREN = ['caption', 'colgroup', 'thead', 'tbody',...
  constant CONTROL_FLOW_START_MARK (line 2) | const CONTROL_FLOW_START_MARK = 0;
  constant CONTROL_FLOW_END_MARK (line 3) | const CONTROL_FLOW_END_MARK = 1;
  function dasherize (line 5) | function dasherize(str) {
  function isControlFlowHelper (line 12) | function isControlFlowHelper(node) {
  function isIfOrUnless (line 20) | function isIfOrUnless(node) {
  function getEffectiveChildren (line 25) | function getEffectiveChildren(children) {
  function isAllowedTableChild (line 45) | function isAllowedTableChild(child, internalTags) {
  method create (line 136) | create(context) {

FILE: lib/rules/template-template-length.js
  constant DEFAULT_MAX_LENGTH (line 1) | const DEFAULT_MAX_LENGTH = 200;
  constant DEFAULT_MIN_LENGTH (line 2) | const DEFAULT_MIN_LENGTH = 5;
  constant DEFAULT_CONFIG (line 4) | const DEFAULT_CONFIG = {
  function isValidConfigObjectFormat (line 9) | function isValidConfigObjectFormat(config) {
  function parseConfig (line 25) | function parseConfig(config) {
  method create (line 92) | create(context) {

FILE: lib/rules/use-brace-expansion.js
  constant ERROR_MESSAGE (line 11) | const ERROR_MESSAGE = 'Use brace expansion';
  method create (line 29) | create(context) {

FILE: lib/rules/use-ember-data-rfc-395-imports.js
  constant MAPPINGS (line 3) | const MAPPINGS = require('@ember-data/rfc395-data');
  function oldDataImportsReducer (line 15) | function oldDataImportsReducer(acc, mapping) {
  constant OLD_DATA_IMPORTS (line 23) | const OLD_DATA_IMPORTS = MAPPINGS.reduce(oldDataImportsReducer, Object.c...
  function globalsReducer (line 36) | function globalsReducer(acc, mapping) {
  constant GLOBALS (line 54) | const GLOBALS = MAPPINGS.reduce(globalsReducer, Object.create(null));
  constant ERROR_MESSAGE (line 56) | const ERROR_MESSAGE =
  method create (line 79) | create(context) {

FILE: lib/rules/use-ember-get-and-set.js
  method create (line 48) | create(context) {

FILE: lib/utils/computed-properties.js
  function isComputedPropertyBodyArg (line 21) | function isComputedPropertyBodyArg(node) {
  function getComputedPropertyFunctionBody (line 42) | function getComputedPropertyFunctionBody(node) {

FILE: lib/utils/computed-property-dependent-keys.js
  function isBare (line 20) | function isBare(key) {
  function collapseKeys (line 34) | function collapseKeys(keys) {
  function expandKeys (line 66) | function expandKeys(keys) {
  function expandKey (line 80) | function expandKey(key) {
  constant ARRAY_PROPERTIES (line 110) | const ARRAY_PROPERTIES = new Set(['length', 'firstObject', 'lastObject']);
  function computedPropertyDependencyMatchesKeyPath (line 119) | function computedPropertyDependencyMatchesKeyPath(dependency, keyPath) {
  function keyExistsAsPrefixInList (line 169) | function keyExistsAsPrefixInList(keys, key) {
  function findComputedPropertyDependentKeys (line 193) | function findComputedPropertyDependentKeys(
  function getComputedPropertyDependentKeysForConfig (line 265) | function getComputedPropertyDependentKeysForConfig(argument, index, { st...
  function getComputedPropertyDependentKeys (line 315) | function getComputedPropertyDependentKeys(node, computedDependenciesConf...

FILE: lib/utils/computed-property-macros.js
  constant MACROS_TO_TRACKED_ARGUMENT_COUNT (line 8) | const MACROS_TO_TRACKED_ARGUMENT_COUNT = {
  constant DEFAULT_MACRO_CONFIGURATIONS (line 45) | const DEFAULT_MACRO_CONFIGURATIONS = Object.entries(MACROS_TO_TRACKED_AR...
  function getMacros (line 65) | function getMacros() {
  function getMacrosFromImports (line 76) | function getMacrosFromImports(macrosByImport, macrosByIndexImport) {
  function getTrackedArgumentCount (line 89) | function getTrackedArgumentCount(macro) {
  function macroToCanonicalName (line 100) | function macroToCanonicalName(macro, macroImportNames) {

FILE: lib/utils/decorators.js
  function getDecoratorName (line 18) | function getDecoratorName(node) {
  function findDecorator (line 30) | function findDecorator(node, decoratorName) {
  function findDecoratorByNameCallback (line 44) | function findDecoratorByNameCallback(node, callback) {
  function hasDecorator (line 57) | function hasDecorator(node, decoratorName) {
  function getDecorator (line 72) | function getDecorator(node, decoratorName) {
  function isClassPropertyOrPropertyDefinitionWithDecorator (line 88) | function isClassPropertyOrPropertyDefinitionWithDecorator(node, decorato...

FILE: lib/utils/editorconfig.js
  function resolveEditorConfig (line 13) | function resolveEditorConfig(filePath) {

FILE: lib/utils/ember-source-version.js
  function getEmberSourceVersion (line 11) | function getEmberSourceVersion(projectRoot) {
  function isVersionAtLeast (line 32) | function isVersionAtLeast(version, major, minor) {
  function isEmberSourceVersionAtLeast (line 56) | function isEmberSourceVersionAtLeast(major, minor, projectRoot) {

FILE: lib/utils/ember.js
  constant CORE_MODULE_IMPORT_PATHS (line 77) | const CORE_MODULE_IMPORT_PATHS = {
  function isClassicEmberCoreModule (line 90) | function isClassicEmberCoreModule(node, module, filePath) {
  function isLocalModule (line 101) | function isLocalModule(callee, element) {
  function isEmberModule (line 108) | function isEmberModule(callee, element, module) {
  function isPropOfType (line 118) | function isPropOfType(node, type) {
  function isModule (line 139) | function isModule(node, element, moduleName = 'Ember') {
  function isDSModel (line 151) | function isDSModel(node, filePath) {
  function isEmberDataModel (line 162) | function isEmberDataModel(context, node) {
  function isModuleByFilePath (line 211) | function isModuleByFilePath(filePath, module) {
  function isTestFile (line 231) | function isTestFile(fileName) {
  function isMirageDirectory (line 237) | function isMirageDirectory(fileName) {
  function isMirageConfig (line 242) | function isMirageConfig(fileName) {
  constant COMMON_JQUERY_NAMES (line 248) | const COMMON_JQUERY_NAMES = ['$', 'jQuery'];
  constant COMMON_LODASH_NAMES (line 249) | const COMMON_LODASH_NAMES = ['_', 'lodash'];
  constant THIRD_PARTY_LIBRARIES_WITH_EXTEND (line 250) | const THIRD_PARTY_LIBRARIES_WITH_EXTEND = new Set([...COMMON_JQUERY_NAME...
  function isExtendObject (line 252) | function isExtendObject(node) {
  function isReopenClassObject (line 268) | function isReopenClassObject(node) {
  function isReopenObject (line 272) | function isReopenObject(node) {
  function isEmberCoreModule (line 276) | function isEmberCoreModule(context, node, moduleName) {
  function isAnyEmberCoreModule (line 315) | function isAnyEmberCoreModule(context, node) {
  function isEmberComponent (line 330) | function isEmberComponent(context, node) {
  function isGlimmerComponent (line 334) | function isGlimmerComponent(context, node) {
  function isEmberController (line 338) | function isEmberController(context, node) {
  function isEmberMixin (line 342) | function isEmberMixin(context, node) {
  function isEmberRoute (line 346) | function isEmberRoute(context, node) {
  function isEmberService (line 350) | function isEmberService(context, node) {
  function isEmberArrayProxy (line 354) | function isEmberArrayProxy(context, node) {
  function isEmberObjectProxy (line 358) | function isEmberObjectProxy(context, node) {
  function isEmberObject (line 362) | function isEmberObject(context, node) {
  function isEmberHelper (line 366) | function isEmberHelper(context, node) {
  function isEmberProxy (line 370) | function isEmberProxy(context, node) {
  function isInjectedServiceProp (line 383) | function isInjectedServiceProp(node, importedEmberName, importedInjectNa...
  function isInjectedControllerProp (line 408) | function isInjectedControllerProp(node, importedEmberName, importedContr...
  function isObserverProp (line 433) | function isObserverProp(node, importedEmberName, importedObserverName) {
  function isComputedProp (line 457) | function isComputedProp(
  function isComputedPropMacro (line 494) | function isComputedPropMacro(node, importedEmberName, importedComputedNa...
  function isArrayProp (line 513) | function isArrayProp(node) {
  function isObjectProp (line 522) | function isObjectProp(node) {
  function isCustomProp (line 531) | function isCustomProp(property) {
  function isRouteLifecycleHook (line 550) | function isRouteLifecycleHook(property) {
  function isActionsProp (line 554) | function isActionsProp(property) {
  function isComponentLifecycleHookName (line 563) | function isComponentLifecycleHookName(name) {
  function isGlimmerComponentLifecycleHookName (line 580) | function isGlimmerComponentLifecycleHookName(name) {
  function isComponentLifecycleHook (line 584) | function isComponentLifecycleHook(property) {
  function isGlimmerComponentLifecycleHook (line 588) | function isGlimmerComponentLifecycleHook(property) {
  function isRoute (line 594) | function isRoute(node) {
  function isRouteLifecycleHookName (line 603) | function isRouteLifecycleHookName(name) {
  function isRouteProperty (line 618) | function isRouteProperty(name) {
  function isRouteDefaultProp (line 633) | function isRouteDefaultProp(property) {
  function isControllerProperty (line 649) | function isControllerProperty(name) {
  function isControllerDefaultProp (line 662) | function isControllerDefaultProp(property) {
  function getModuleProperties (line 671) | function getModuleProperties(moduleNode, scopeManager) {
  function getEmberImportAliasName (line 686) | function getEmberImportAliasName(importDeclaration) {
  function isSingleLineFn (line 696) | function isSingleLineFn(property, importedEmberName, importedObserverNam...
  function isMultiLineFn (line 708) | function isMultiLineFn(property, importedEmberName, importedObserverName) {
  function isFunctionExpression (line 720) | function isFunctionExpression(property) {
  function isRelation (line 732) | function isRelation(property) {
  function hasDuplicateDependentKeys (line 749) | function hasDuplicateDependentKeys(callExp, importedEmberName, importedC...
  function parseDependentKeys (line 768) | function parseDependentKeys(callExp) {
  function unwrapBraceExpressions (line 788) | function unwrapBraceExpressions(dependentKeys) {
  function isEmberObjectImplementingUnknownProperty (line 806) | function isEmberObjectImplementingUnknownProperty(node, scopeManager) {
  function isObserverDecorator (line 831) | function isObserverDecorator(node, importedObservesName) {
  function convertServiceNameToKebabCase (line 841) | function convertServiceNameToKebabCase(serviceName) {

FILE: lib/utils/fixer.js
  function removeCommaSeparatedNode (line 10) | function removeCommaSeparatedNode(node, sourceCode, fixer) {
  function insertImportDeclaration (line 32) | function insertImportDeclaration(sourceCode, fixer, source, specifier, d...

FILE: lib/utils/html-interactive-content.js
  constant UNCONDITIONAL_INTERACTIVE_TAGS (line 26) | const UNCONDITIONAL_INTERACTIVE_TAGS = new Set([
  function isHtmlInteractiveContent (line 52) | function isHtmlInteractiveContent(node, getTextAttrValue, options = {}) {
  function hasAttribute (line 90) | function hasAttribute(node, name) {

FILE: lib/utils/import.js
  function getSourceModuleNameForIdentifier (line 25) | function getSourceModuleNameForIdentifier(context, node) {
  function getSourceModuleName (line 37) | function getSourceModuleName(node) {
  function getImportIdentifier (line 61) | function getImportIdentifier(node, source, namedImportIdentifier = null) {

FILE: lib/utils/interactive-roles.js
  function buildInteractiveRoleSet (line 43) | function buildInteractiveRoleSet() {
  function buildCompositeWidgetChildren (line 57) | function buildCompositeWidgetChildren() {

FILE: lib/utils/is-native-element.js
  constant ELEMENT_TAGS (line 13) | const ELEMENT_TAGS = new Set([...htmlTags, ...svgTags, ...mathmlTagNames]);
  function isNativeElement (line 49) | function isNativeElement(node, sourceCode) {
  function hasBindingInScopeChain (line 69) | function hasBindingInScopeChain(scope, name) {
  function isComponentInvocation (line 86) | function isComponentInvocation(node, sourceCode) {

FILE: lib/utils/javascript.js
  function duplicateArrays (line 14) | function duplicateArrays(arr, times) {
  function removeWhitespace (line 22) | function removeWhitespace(str) {

FILE: lib/utils/landmark-roles.js
  constant ALL_LANDMARK_ROLES (line 11) | const ALL_LANDMARK_ROLES = buildLandmarkRoleSet();
  constant LANDMARK_ROLES (line 27) | const LANDMARK_ROLES = new Set([...ALL_LANDMARK_ROLES].filter((role) => ...
  function buildLandmarkRoleSet (line 29) | function buildLandmarkRoleSet() {

FILE: lib/utils/new-module.js
  constant EMBER_NAMESPACES (line 12) | const EMBER_NAMESPACES = new Set(['inject.controller', 'inject.service']);
  function isNamespace (line 20) | function isNamespace(obj) {
  function isNamedExport (line 24) | function isNamedExport(obj) {
  function getReplacementSpecifier (line 28) | function getReplacementSpecifier(obj) {
  function buildMessage (line 45) | function buildMessage(obj) {
  function buildFix (line 84) | function buildFix(node, modulesData) {
  function buildNewImports (line 98) | function buildNewImports(node, modulesData, moduleName) {
  function buildLines (line 123) | function buildLines(newImports) {
  function getFullNames (line 146) | function getFullNames(prefix, node) {
  function isDestructuring (line 160) | function isDestructuring(node) {

FILE: lib/utils/property-getter.js
  function isThisGetCall (line 16) | function isThisGetCall(node) {
  function isSimpleThisExpression (line 43) | function isSimpleThisExpression(node) {
  function nodeToDependentKey (line 84) | function nodeToDependentKey(nodeWithThisExpression, context) {

FILE: lib/utils/property-order.js
  constant NAMES (line 14) | const NAMES = {
  function determinePropertyType (line 55) | function determinePropertyType(
  function getOrder (line 151) | function getOrder(ORDER, type) {
  function getNodeKeyName (line 169) | function getNodeKeyName(node) {
  function getName (line 181) | function getName(type, node) {
  function reportUnorderedProperties (line 200) | function reportUnorderedProperties(
  function getCommentOffsetBefore (line 322) | function getCommentOffsetBefore(property, sourceCode) {
  function addBackwardsPosition (line 342) | function addBackwardsPosition(order, newPosition, targetPosition) {

FILE: lib/utils/property-setter.js
  function isThisSet (line 13) | function isThisSet(node) {

FILE: lib/utils/scope-references-this.js
  function scopeReferencesThis (line 11) | function scopeReferencesThis(node) {

FILE: lib/utils/stack.js
  method constructor (line 2) | constructor() {
  method pop (line 5) | pop() {
  method push (line 8) | push(item) {
  method peek (line 11) | peek() {
  method size (line 14) | size() {

FILE: lib/utils/static-attr-value.js
  function getStaticAttrValue (line 15) | function getStaticAttrValue(value) {
  function extractLiteral (line 48) | function extractLiteral(path) {

FILE: lib/utils/types.js
  function isAnyFunctionExpression (line 57) | function isAnyFunctionExpression(node) {
  function isArrayExpression (line 68) | function isArrayExpression(node) {
  function isArrowFunctionExpression (line 79) | function isArrowFunctionExpression(node) {
  function isAssignmentExpression (line 90) | function isAssignmentExpression(node) {
  function isBinaryExpression (line 101) | function isBinaryExpression(node) {
  function isCallExpression (line 112) | function isCallExpression(node) {
  function isCallWithFunctionExpression (line 124) | function isCallWithFunctionExpression(node) {
  function isClassDeclaration (line 142) | function isClassDeclaration(node) {
  function isClassPropertyOrPropertyDefinition (line 152) | function isClassPropertyOrPropertyDefinition(node) {
  function isCommaToken (line 158) | function isCommaToken(token) {
  function isConciseArrowFunctionWithCallExpression (line 170) | function isConciseArrowFunctionWithCallExpression(node) {
  function isConditionalExpression (line 181) | function isConditionalExpression(node) {
  function isDecorator (line 192) | function isDecorator(node) {
  function isExpressionStatement (line 203) | function isExpressionStatement(node) {
  function isFunctionDeclaration (line 214) | function isFunctionDeclaration(node) {
  function isFunctionExpression (line 225) | function isFunctionExpression(node) {
  function isIdentifier (line 236) | function isIdentifier(node) {
  function isImportDeclaration (line 247) | function isImportDeclaration(node) {
  function isImportDefaultSpecifier (line 258) | function isImportDefaultSpecifier(node) {
  function isLiteral (line 269) | function isLiteral(node) {
  function isLogicalExpression (line 280) | function isLogicalExpression(node) {
  function isMemberExpression (line 291) | function isMemberExpression(node) {
  function isMethodDefinition (line 302) | function isMethodDefinition(node) {
  function isNewExpression (line 313) | function isNewExpression(node) {
  function isObjectExpression (line 324) | function isObjectExpression(node) {
  function isObjectPattern (line 335) | function isObjectPattern(node) {
  function isOptionalCallExpression (line 346) | function isOptionalCallExpression(node) {
  function isOptionalMemberExpression (line 357) | function isOptionalMemberExpression(node) {
  function isProperty (line 368) | function isProperty(node) {
  function isReturnStatement (line 379) | function isReturnStatement(node) {
  function isSpreadElement (line 390) | function isSpreadElement(node) {
  function isString (line 394) | function isString(node) {
  function isStringLiteral (line 398) | function isStringLiteral(node) {
  function isTaggedTemplateExpression (line 409) | function isTaggedTemplateExpression(node) {
  function isTemplateLiteral (line 420) | function isTemplateLiteral(node) {
  function isThisExpression (line 431) | function isThisExpression(node) {
  function isUnaryExpression (line 442) | function isUnaryExpression(node) {
  function isVariableDeclarator (line 453) | function isVariableDeclarator(node) {

FILE: lib/utils/utils.js
  function findNodes (line 40) | function findNodes(body, nodeName) {
  function getSize (line 56) | function getSize(node) {
  function parseCallee (line 66) | function parseCallee(node) {
  function parseArgs (line 94) | function parseArgs(node) {
  function findUnorderedProperty (line 112) | function findUnorderedProperty(arr) {
  function getPropertyValue (line 133) | function getPropertyValue(node, path) {
  function collectObjectPatternBindings (line 161) | function collectObjectPatternBindings(node, initialObjToBinding) {
  function isEmptyMethod (line 186) | function isEmptyMethod(node) {
  function getAncestor (line 199) | function getAncestor(node, predicate) {
  function getName (line 223) | function getName(node, includeFunctionCallParens = false) {
  function getNodeOrNodeFromVariable (line 254) | function getNodeOrNodeFromVariable(node, scopeManager) {
  function isInLeftSideOfAssignmentExpression (line 287) | function isInLeftSideOfAssignmentExpression(node) {
  function startsWithThisExpression (line 299) | function startsWithThisExpression(node) {

FILE: scripts/bench-compare.mjs
  constant BASE_BRANCH (line 29) | const BASE_BRANCH = baseIdx !== -1 ? args[baseIdx + 1] : 'master';
  function run (line 35) | function run(cmd, opts = {}) {
  function resolveRef (line 43) | function resolveRef(branch) {
  constant ROOT (line 58) | const ROOT = process.cwd();
  constant CONTROL_DIR (line 59) | const CONTROL_DIR = join(tmpdir(), `bench-control-${BASE_BRANCH}-${Date....
  constant BASE_REF (line 63) | const BASE_REF = resolveRef(BASE_BRANCH);
  function cleanup (line 67) | function cleanup() {

FILE: scripts/bench-utils.mjs
  function formatTime (line 7) | function formatTime(ns) {
  function deltaEmoji (line 13) | function deltaEmoji(pct) {
  function parsePairs (line 26) | function parsePairs(json) {
  function readBenchJSON (line 55) | function readBenchJSON(path) {

FILE: scripts/update-rules.js
  function generate (line 21) | function generate(filename, filter) {

FILE: tests/bench/large.js
  class ProjectDashboardComponent (line 8) | class ProjectDashboardComponent extends Component {
    method filteredProjects (line 71) | get filteredProjects() {
    method sortedProjects (line 90) | get sortedProjects() {
    method paginatedProjects (line 101) | get paginatedProjects() {
    method totalPages (line 106) | get totalPages() {
    method hasNextPage (line 110) | get hasNextPage() {
    method hasPreviousPage (line 114) | get hasPreviousPage() {
    method currentProjectTasks (line 120) | get currentProjectTasks() {
    method filteredTasks (line 125) | get filteredTasks() {
    method groupedTasks (line 164) | get groupedTasks() {
    method tasksByStatus (line 174) | get tasksByStatus() {
    method overdueTasks (line 184) | get overdueTasks() {
    method upcomingDeadlines (line 190) | get upcomingDeadlines() {
    method projectMembers (line 206) | get projectMembers() {
    method taskAssignmentMap (line 211) | get taskAssignmentMap() {
    method projectStats (line 219) | get projectStats() {
    method globalStats (line 241) | get globalStats() {
    method burndownData (line 252) | get burndownData() {
    method totalTimeSpent (line 274) | get totalTimeSpent() {
    method timeByTask (line 278) | get timeByTask() {
    method timeByUser (line 287) | get timeByUser() {
    method isTimerRunning (line 296) | get isTimerRunning() {
    method isOverviewTab (line 302) | get isOverviewTab() {
    method isTasksTab (line 306) | get isTasksTab() {
    method isBoardTab (line 310) | get isBoardTab() {
    method isTimelineTab (line 314) | get isTimelineTab() {
    method isMembersTab (line 318) | get isMembersTab() {
    method isSettingsTab (line 322) | get isSettingsTab() {
    method isActivityTab (line 326) | get isActivityTab() {
    method loadData (line 332) | @action
    method refreshData (line 358) | @action
    method selectProject (line 366) | @action
    method clearProjectSelection (line 374) | @action
    method createProject (line 380) | @action
    method updateProject (line 408) | @action
    method deleteProject (line 428) | @action
    method archiveProject (line 448) | @action
    method selectTask (line 462) | @action
    method clearTaskSelection (line 467) | @action
    method createTask (line 472) | @action
    method updateTaskStatus (line 504) | @action
    method assignTask (line 524) | @action
    method updateTaskPriority (line 538) | @action
    method deleteTask (line 552) | @action
    method duplicateTask (line 568) | @action
    method addTaskLabel (line 594) | @action
    method removeTaskLabel (line 600) | @action
    method addComment (line 608) | @action
    method deleteComment (line 626) | @action
    method taskComments (line 637) | get taskComments() {
    method onDragStart (line 646) | @action
    method onDragOver (line 651) | @action
    method onDrop (line 656) | @action
    method onDragEnd (line 665) | @action
    method startTimer (line 673) | @action
    method stopTimer (line 691) | @action
    method deleteTimeEntry (line 717) | @action
    method setTab (line 730) | @action
    method updateSearch (line 737) | @action
    method clearSearch (line 743) | @action
    method toggleFilters (line 749) | @action
    method setFilterStatus (line 754) | @action
    method setFilterAssignee (line 760) | @action
    method setFilterPriority (line 766) | @action
    method setDateRange (line 772) | @action
    method clearFilters (line 778) | @action
    method setSortField (line 787) | @action
    method setViewMode (line 797) | @action
    method setGroupBy (line 802) | @action
    method toggleCompleted (line 807) | @action
    method toggleGroupCollapse (line 812) | @action
    method nextPage (line 820) | @action
    method previousPage (line 825) | @action
    method goToPage (line 830) | @action
    method openCreateModal (line 835) | @action
    method closeCreateModal (line 840) | @action
    method openEditModal (line 847) | @action
    method closeEditModal (line 853) | @action
    method toggleActivitySidebar (line 859) | @action
    method exportProjectData (line 866) | @action
    method importProjectData (line 899) | @action
    method _resetProjectForm (line 939) | _resetProjectForm() {
    method _resetTaskForm (line 946) | _resetTaskForm() {
    method _logActivity (line 956) | _logActivity(type, entity, metadata = {}) {
    method willDestroy (line 969) | willDestroy() {

FILE: tests/bench/medium.js
  class TodoListComponent (line 7) | class TodoListComponent extends Component {
    method filteredItems (line 33) | get filteredItems() {
    method sortedItems (line 65) | get sortedItems() {
    method completedCount (line 84) | get completedCount() {
    method activeCount (line 88) | get activeCount() {
    method hasCompleted (line 92) | get hasCompleted() {
    method allCompleted (line 96) | get allCompleted() {
    method selectedCount (line 100) | get selectedCount() {
    method hasSelection (line 104) | get hasSelection() {
    method allSelected (line 108) | get allSelected() {
    method overdueCount (line 115) | get overdueCount() {
    method itemsByCategory (line 121) | get itemsByCategory() {
    method canUndo (line 131) | get canUndo() {
    method canRedo (line 135) | get canRedo() {
    method progressPercentage (line 139) | get progressPercentage() {
    method statsForDisplay (line 144) | get statsForDisplay() {
    method _pushUndo (line 155) | _pushUndo(actionDescription) {
    method addItem (line 166) | @action
    method toggleItem (line 199) | @action
    method removeItem (line 206) | @action
    method clearCompleted (line 214) | @action
    method setFilter (line 225) | @action
    method updateLabel (line 230) | @action
    method handleKeydown (line 235) | @action
    method toggleAll (line 244) | @action
    method startEditing (line 254) | @action
    method cancelEditing (line 260) | @action
    method saveEdit (line 266) | @action
    method toggleSelection (line 279) | @action
    method selectAll (line 291) | @action
    method bulkDelete (line 301) | @action
    method bulkComplete (line 312) | @action
    method bulkSetPriority (line 324) | @action
    method archiveCompleted (line 336) | @action
    method restoreFromArchive (line 344) | @action
    method toggleArchiveView (line 352) | @action
    method setSortBy (line 357) | @action
    method updateSearch (line 367) | @action
    method setCategory (line 372) | @action
    method setPriority (line 377) | @action
    method setDueDate (line 382) | @action
    method undo (line 387) | @action
    method redo (line 402) | @action
    method duplicateItem (line 417) | @action
    method exportItems (line 433) | @action
    method importItems (line 446) | @action

FILE: tests/bench/small.js
  class CounterComponent (line 6) | class CounterComponent extends Component {
    method increment (line 11) | @action
    method isPositive (line 16) | get isPositive() {

FILE: tests/config-setup.js
  constant CONFIG_NAMES (line 7) | const CONFIG_NAMES = Object.keys(configs);

FILE: tests/helpers/babel-eslint-parser.js
  function parse (line 3) | function parse(code) {
  function parseForESLint (line 11) | function parseForESLint(code) {

FILE: tests/helpers/faux-context.js
  class FauxContext (line 9) | class FauxContext {
    method constructor (line 10) | constructor(code, filename = '', report = () => {}) {
    method getAncestors (line 24) | getAncestors() {

FILE: tests/helpers/test-case.js
  function addPrefix (line 6) | function addPrefix(testCase, prefix) {
  function addComputedImport (line 23) | function addComputedImport(testCase) {

FILE: tests/lib/eslint-directive-comments-test.js
  constant RULE_ID (line 23) | const RULE_ID = 'ember/template-no-unnecessary-concat';
  function makeLinter (line 25) | function makeLinter(parserName) {

FILE: tests/lib/rules-preprocessor/gjs-gts-parser-test.js
  function initESLint (line 23) | function initESLint(parser = gjsGtsParser) {

FILE: tests/lib/rules-preprocessor/template-no-deprecated/component-stub.ts
  class ComponentBase (line 1) | class ComponentBase<S extends object = object> {

FILE: tests/lib/rules-preprocessor/template-no-deprecated/component-with-args.ts
  class ComponentWithArgs (line 3) | class ComponentWithArgs extends ComponentBase<{

FILE: tests/lib/rules-preprocessor/template-no-deprecated/current-component.ts
  class CurrentComponent (line 1) | class CurrentComponent {}

FILE: tests/lib/rules-preprocessor/template-no-deprecated/deprecated-component.ts
  class DeprecatedComponent (line 2) | class DeprecatedComponent {}

FILE: tests/lib/rules-preprocessor/template-no-deprecated/deprecated-helper.ts
  function deprecatedHelper (line 2) | function deprecatedHelper(): string {

FILE: tests/lib/rules/no-deprecated-router-transition-methods.js
  function validRouteClassUsage (line 23) | function validRouteClassUsage(serviceDefinition) {
  function validRouteExtendUsage (line 43) | function validRouteExtendUsage(serviceDefinition) {
  function invalidRouteClassUsage (line 63) | function invalidRouteClassUsage(serviceDefinition, { routerServiceName, ...
  function invalidRouteExtendUsage (line 104) | function invalidRouteExtendUsage(serviceDefinition, { routerServiceName,...

FILE: tests/lib/rules/no-implicit-injections.js
  constant FLASH_MESSAGES_CONFIG (line 23) | const FLASH_MESSAGES_CONFIG = {
  constant MEDIA_CONFIG (line 26) | const MEDIA_CONFIG = {
  constant FEATURE_CHECKER_CONFIG (line 29) | const FEATURE_CHECKER_CONFIG = {
  constant NESTED_SERVICE_CONFIG (line 32) | const NESTED_SERVICE_CONFIG = {
  function createClassUsage (line 36) | function createClassUsage(serviceDefinition) {
  function createExtendUsage (line 55) | function createExtendUsage(serviceDefinition) {

FILE: tests/lib/rules/no-implicit-service-injection-argument.js
  constant EMBER_IMPORT (line 10) | const EMBER_IMPORT = "import Ember from 'ember';";
  constant INJECT_IMPORT (line 11) | const INJECT_IMPORT = "import {inject} from '@ember/service';";
  constant SERVICE_IMPORT (line 12) | const SERVICE_IMPORT = "import {inject as service} from '@ember/service';";
  constant NEW_SERVICE_IMPORT (line 13) | const NEW_SERVICE_IMPORT = "import {service} from '@ember/service';";

FILE: tests/lib/rules/no-invalid-debug-function-arguments.js
  constant VALID_USAGES_BASIC (line 14) | const VALID_USAGES_BASIC = [
  constant VALID_USAGES_FOR_EACH_DEBUG_FUNCTION (line 23) | const VALID_USAGES_FOR_EACH_DEBUG_FUNCTION = DEBUG_FUNCTIONS.flatMap((de...
  constant VALID_USAGES (line 76) | const VALID_USAGES = [...VALID_USAGES_BASIC, ...VALID_USAGES_FOR_EACH_DE...
  constant INVALID_USAGES (line 78) | const INVALID_USAGES = DEBUG_FUNCTIONS.flatMap((debugFunction) => [

FILE: tests/lib/rules/no-pause-test.js
  constant TEST_FILE_NAME (line 16) | const TEST_FILE_NAME = 'some-test.js';

FILE: tests/lib/rules/no-private-routing-service.js
  constant EMBER_IMPORT (line 14) | const EMBER_IMPORT = "import Ember from 'ember';";
  constant SERVICE_IMPORT (line 15) | const SERVICE_IMPORT = "import {inject as service} from '@ember/service';";
  constant NEW_SERVICE_IMPORT (line 16) | const NEW_SERVICE_IMPORT = "import {service} from '@ember/service';";

FILE: tests/lib/rules/no-restricted-service-injections.js
  constant EMBER_IMPORT (line 6) | const EMBER_IMPORT = "import Ember from 'ember';";
  constant INJECT_IMPORT (line 7) | const INJECT_IMPORT = "import {inject} from '@ember/service';";
  constant SERVICE_IMPORT (line 8) | const SERVICE_IMPORT = "import {inject as service} from '@ember/service';";
  constant NEW_SERVICE_IMPORT (line 9) | const NEW_SERVICE_IMPORT = "import {service} from '@ember/service';";

FILE: tests/lib/rules/no-test-and-then.js
  constant TEST_FILE_NAME (line 21) | const TEST_FILE_NAME = 'some-test.js';

FILE: tests/lib/rules/no-test-import-export.js
  constant NO_IMPORT_MESSAGE (line 10) | const NO_IMPORT_MESSAGE = rule.meta.importMessage;
  constant NO_EXPORT_MESSAGE (line 11) | const NO_EXPORT_MESSAGE = rule.meta.exportMessage;

FILE: tests/lib/rules/no-test-module-for.js
  constant TEST_FILE_NAME (line 21) | const TEST_FILE_NAME = 'some-test.js';

FILE: tests/lib/rules/no-test-this-render.js
  constant TEST_FILE_NAME (line 16) | const TEST_FILE_NAME = 'some-test.js';

FILE: tests/lib/rules/no-unnecessary-service-injection-argument.js
  constant EMBER_IMPORT (line 10) | const EMBER_IMPORT = "import Ember from 'ember';";
  constant SERVICE_IMPORT (line 11) | const SERVICE_IMPORT = "import {inject} from '@ember/service';";
  constant RENAMED_SERVICE_IMPORT (line 12) | const RENAMED_SERVICE_IMPORT = "import {inject as service} from '@ember/...
  constant NEW_SERVICE_IMPORT (line 13) | const NEW_SERVICE_IMPORT = "import {service} from '@ember/service';";

FILE: tests/lib/rules/no-unused-services.js
  constant SERVICE_NAME (line 20) | const SERVICE_NAME = 'fooName';
  constant SERVICE_IMPORT (line 21) | const SERVICE_IMPORT = "import {inject as service} from '@ember/service';";
  constant NEW_SERVICE_IMPORT (line 22) | const NEW_SERVICE_IMPORT = "import {service} from '@ember/service';";
  constant EO_IMPORTS (line 23) | const EO_IMPORTS = "import {computed, get, getProperties, observer} from...
  constant RENAMED_EO_IMPORTS (line 24) | const RENAMED_EO_IMPORTS =
  constant ALIAS_IMPORT (line 26) | const ALIAS_IMPORT = "import {alias} from '@ember/object/computed';";
  constant RENAMED_ALIAS_IMPORT (line 27) | const RENAMED_ALIAS_IMPORT = "import {alias as al} from '@ember/object/c...
  constant OBSERVES_IMPORT (line 28) | const OBSERVES_IMPORT = "import {observes} from '@ember-decorators/objec...
  constant RENAMED_OBSERVES_IMPORT (line 29) | const RENAMED_OBSERVES_IMPORT = "import {observes as obs} from '@ember-d...
  constant EMBER_IMPORT (line 30) | const EMBER_IMPORT = "import Ember from 'ember';";
  constant RENAMED_EMBER_IMPORT (line 31) | const RENAMED_EMBER_IMPORT = "import Em from 'ember';";
  function generateUseCasesFor (line 38) | function generateUseCasesFor(propertyName) {
  function generateEmberObjectUseCasesFor (line 61) | function generateEmberObjectUseCasesFor(propertyName, renamed = false) {
  function generateMacroUseCasesFor (line 80) | function generateMacroUseCasesFor(propertyName, renamed = false) {
  function generateComputedUseCasesFor (line 95) | function generateComputedUseCasesFor(propertyName, renamed = false) {
  function generateObserverUseCasesFor (line 115) | function generateObserverUseCasesFor(propertyName, renamed = false) {
  function generateValid (line 135) | function generateValid(importString = SERVICE_IMPORT) {

FILE: tests/lib/rules/prefer-ember-test-helpers.js
  constant TEST_FILE_NAME (line 21) | const TEST_FILE_NAME = 'some-test.js';
  constant REGULAR_FILE_NAME (line 22) | const REGULAR_FILE_NAME = 'regular-file.js';

FILE: tests/lib/rules/require-valid-css-selector-in-test-helpers.js
  constant EXAMPLE_SELECTORS (line 11) | const EXAMPLE_SELECTORS = [

FILE: tests/lib/rules/template-no-action-on-submit-button.js
  constant ERROR_MESSAGE (line 9) | const ERROR_MESSAGE =

FILE: tests/lib/rules/template-no-curly-component-invocation.js
  function generateError (line 9) | function generateError(name) {
  function generateBlockError (line 155) | function generateBlockError(name, isLocal) {

FILE: tests/lib/rules/template-no-deprecated.js
  constant FIXTURES_DIR (line 7) | const FIXTURES_DIR = path.join(__dirname, '../rules-preprocessor/templat...
  constant PREPROCESSOR_DIR (line 46) | const PREPROCESSOR_DIR = path.join(__dirname, '../rules-preprocessor');

FILE: tests/lib/rules/template-no-splattributes-with-class.js
  constant ERROR_MESSAGE (line 4) | const ERROR_MESSAGE =

FILE: tests/lib/rules/template-no-this-in-template-only-components.js
  constant FIXTURES (line 5) | const FIXTURES = path.resolve(

FILE: tests/lib/rules/template-no-triple-curlies.js
  function wrapTemplate (line 24) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-unbalanced-curlies.js
  function wrapTemplate (line 67) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-unbound.js
  function wrapTemplate (line 19) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-unnecessary-component-helper.js
  function wrapTemplate (line 78) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-unnecessary-concat.js
  function wrapTemplate (line 31) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-unnecessary-curly-parens.js
  function wrapTemplate (line 45) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-unnecessary-curly-strings.js
  function wrapTemplate (line 35) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-unsupported-role-attributes.js
  function wrapTemplate (line 157) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-unused-block-params.js
  function wrapTemplate (line 151) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-valueless-arguments.js
  function wrapTemplate (line 27) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-whitespace-for-layout.js
  function wrapTemplate (line 50) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-whitespace-within-word.js
  function wrapTemplate (line 60) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-with.js
  function wrapTemplate (line 25) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-yield-block-params-to-else-inverse.js
  function wrapTemplate (line 28) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-yield-only.js
  function wrapTemplate (line 45) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-no-yield-to-default.js
  constant ERROR_MESSAGE (line 4) | const ERROR_MESSAGE = 'A block named "default" is not valid';
  function wrapTemplate (line 87) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-quotes.js
  function wrapTemplate (line 142) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-require-aria-activedescendant-tabindex.js
  constant ERROR_MESSAGE (line 4) | const ERROR_MESSAGE =
  function wrapTemplate (line 47) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-require-button-type.js
  constant ERROR_MESSAGE (line 4) | const ERROR_MESSAGE = 'All `<button>` elements should have a valid `type...

FILE: tests/lib/rules/template-require-each-key.js
  constant ERROR_MESSAGE (line 4) | const ERROR_MESSAGE = '{{#each}} helper requires a valid key value to av...
  function wrapTemplate (line 32) | function wrapTemplate(entry) {

FILE: tests/lib/rules/template-require-form-method.js
  constant DEFAULT_ERROR (line 4) | const DEFAULT_ERROR =
  function wrapTemplate (line 90) | function wrapTemplate(entry) {
  function lintWith (line 130) | function lintWith(options) {

FILE: tests/lib/rules/template-require-has-block-helper.js
  function wrapTemplate (line 151) | function wrapTemplate(template) {

FILE: tests/lib/rules/template-require-iframe-src-attribute.js
  constant ERROR_MESSAGE (line 4) | const ERROR_MESSAGE =

FILE: tests/lib/rules/template-require-input-label.js
  constant NO_LABEL (line 6) | const NO_LABEL = 'form elements require a valid associated label.';
  constant MULTIPLE_LABELS (line 7) | const MULTIPLE_LABELS = 'form elements should not have multiple labels.';

FILE: tests/lib/rules/template-require-input-type.js
  constant ERROR_MISSING (line 4) | const ERROR_MISSING = 'All `<input>` elements should have a `type` attri...

FILE: tests/lib/rules/template-require-lang-attribute.js
  constant ERROR_MESSAGE (line 4) | const ERROR_MESSAGE = 'The `<html>` element must have the `lang` attribu...

FILE: tests/lib/utils/computed-properties-test.js
  function parse (line 4) | function parse(code) {

FILE: tests/lib/utils/ember-test.js
  function parse (line 7) | function parse(code) {
  function getProperty (line 11) | function getProperty(code) {

FILE: tests/lib/utils/html-interactive-content-test.js
  function makeNode (line 5) | function makeNode(tag, attrs = {}) {
  function getTextAttrValue (line 17) | function getTextAttrValue(node, name) {

FILE: tests/lib/utils/import-test.js
  function parse (line 4) | function parse(code) {

FILE: tests/lib/utils/landmark-roles-test.js
  constant KNOWN_LANDMARK_ROLES (line 10) | const KNOWN_LANDMARK_ROLES = [

FILE: tests/lib/utils/property-getter-test.js
  function parse (line 7) | function parse(code) {

FILE: tests/lib/utils/property-setter-test.js
  function parse (line 6) | function parse(code) {

FILE: tests/lib/utils/scope-references-this-test.js
  function parse (line 6) | function parse(code) {

FILE: tests/lib/utils/types-test.js
  function parse (line 4) | function parse(code) {

FILE: tests/lib/utils/utils-test.js
  function parse (line 6) | function parse(code) {
  function parseVariableDeclarator (line 10) | function parseVariableDeclarator(code) {

FILE: tests/lint.bench.mjs
  constant CONTROL_DIR (line 29) | const CONTROL_DIR = ctrlIdx !== -1 ? resolve(args[ctrlIdx + 1]) : null;
  function buildConfigs (line 37) | function buildConfigs(pluginPath, parserPath) {
  function fixture (line 110) | function fixture(name) {
  constant FIXTURES (line 114) | const FIXTURES = {
  function createLinter (line 127) | function createLinter(configs, type) {
  constant FILE_TYPES (line 136) | const FILE_TYPES = [
  constant SIZES (line 142) | const SIZES = ['small', 'medium', 'large'];
  constant WARMUP_ROUNDS (line 150) | const WARMUP_ROUNDS = 5;
  constant BENCH_ITERS (line 176) | const BENCH_ITERS = { small: 50, medium: 25, large: 10 };

FILE: tests/rule-setup.js
  constant RULE_NAMES (line 8) | const RULE_NAMES = Object.keys(rules);
  constant RECOMMENDED_RULE_NAMES (line 9) | const RECOMMENDED_RULE_NAMES = Object.keys(recommendedRules).map((name) =>
Condensed preview — 827 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,023K chars).
[
  {
    "path": ".babelrc",
    "chars": 148,
    "preview": "{\n  \"plugins\": [\n    \"@babel/plugin-proposal-class-properties\",\n    [\"@babel/plugin-proposal-decorators\", { \"decoratorsB"
  },
  {
    "path": ".editorconfig",
    "chars": 329,
    "preview": "# EditorConfig helps developers define and maintain consistent\n# coding styles between different editors and IDEs\n# edit"
  },
  {
    "path": ".eslint-doc-generatorrc.js",
    "chars": 1484,
    "preview": "const path = require('path');\n\nconst HBS_ONLY_NOTE =\n  '> **HBS Only**: This rule applies to classic `.hbs` template fil"
  },
  {
    "path": ".gitattributes",
    "chars": 19,
    "preview": "* text=auto eol=lf\n"
  },
  {
    "path": ".github/renovate.json5",
    "chars": 133,
    "preview": "// Docs:\n// https://docs.renovatebot.com/configuration-options/\n{\n  \"extends\": [\n    \"github>NullVoxPopuli/renovate:npm."
  },
  {
    "path": ".github/workflows/bench-compare.yml",
    "chars": 3252,
    "preview": "name: Benchmark Comparison\n\non:\n  pull_request:\n    types: [opened, synchronize, reopened]\n\nconcurrency:\n  group: bench-"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 1135,
    "preview": "# This workflow will do a clean install of node dependencies, build the source code and run tests across different versi"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "chars": 2440,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".github/workflows/plan-release.yml",
    "chars": 2019,
    "preview": "name: Plan Release\non:\n  workflow_dispatch:\n  push:\n    branches:\n      - main\n      - master\n  pull_request_target: # T"
  },
  {
    "path": ".github/workflows/publish.yml",
    "chars": 1029,
    "preview": "# For every push to the primary branch with .release-plan.json modified,\n# runs release-plan.\n\nname: Publish Stable\n\non:"
  },
  {
    "path": ".gitignore",
    "chars": 273,
    "preview": "# Logs\nlogs\n*.log\n\n# Dependencies\nnode_modules\n\n# Misc\n.eslintcache\ncoverage\nnpm-debug.log\n*.swp\n.vscode\n\n# eslint-remot"
  },
  {
    "path": ".markdownlint.json",
    "chars": 99,
    "preview": "{\n  \"line-length\": false,\n  \"table-column-style\": false,\n  \"ul-style\": {\n    \"style\": \"dash\"\n  }\n}\n"
  },
  {
    "path": ".markdownlintignore",
    "chars": 37,
    "preview": "CHANGELOG.md\nLICENSE.md\nnode_modules\n"
  },
  {
    "path": ".npmpackagejsonlintrc.json",
    "chars": 513,
    "preview": "{\n  \"rules\": {\n    \"no-duplicate-properties\": \"error\",\n    \"no-repeated-dependencies\": \"error\",\n    \"prefer-alphabetical"
  },
  {
    "path": ".npmrc",
    "chars": 301,
    "preview": "# npm / pnpm settings here\n\n# as a library, we want to make sure we explicitly handle peers,\n# and not rely on hidden be"
  },
  {
    "path": ".prettierignore",
    "chars": 93,
    "preview": "node_modules/\ndist/\nlib/recommended-rules.js\nCHANGELOG.md\nREADME.md\npnpm-lock.yaml\n.github/*\n"
  },
  {
    "path": ".prettierrc.js",
    "chars": 115,
    "preview": "'use strict';\n\nmodule.exports = {\n  printWidth: 100,\n  semi: true,\n  singleQuote: true,\n  trailingComma: 'es5',\n};\n"
  },
  {
    "path": ".release-plan.json",
    "chars": 1503,
    "preview": "{\n  \"solution\": {\n    \"eslint-plugin-ember\": {\n      \"impact\": \"patch\",\n      \"oldVersion\": \"13.2.0\",\n      \"newVersion\""
  },
  {
    "path": "CHANGELOG.md",
    "chars": 240731,
    "preview": "# Changelog\n\n## Release (2026-04-30)\n\n* eslint-plugin-ember 13.2.1 (patch)\n\n#### :bug: Bug Fix\n* `eslint-plugin-ember`\n "
  },
  {
    "path": "LICENSE.md",
    "chars": 1063,
    "preview": "Copyright 2016-2017 Netguru Sp. z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of "
  },
  {
    "path": "README.md",
    "chars": 65857,
    "preview": "# eslint-plugin-ember\n\n[![NPM version](https://img.shields.io/npm/v/eslint-plugin-ember.svg?style=flat)](https://npmjs.o"
  },
  {
    "path": "RELEASE.md",
    "chars": 1617,
    "preview": "# Release Process\n\nReleases in this repo are mostly automated using [release-plan](https://github.com/embroider-build/re"
  },
  {
    "path": "docs/rules/_TEMPLATE_.md",
    "chars": 1536,
    "preview": "# TODO: rule-name-goes-here\n\n(TODO: only include this line if the rule is recommended) ✅ The `\"extends\": \"plugin:ember/r"
  },
  {
    "path": "docs/rules/alias-model-in-controller.md",
    "chars": 1497,
    "preview": "# ember/alias-model-in-controller\n\n<!-- end auto-generated rule header -->\n\nIt makes code more readable if the model has"
  },
  {
    "path": "docs/rules/avoid-leaking-state-in-ember-objects.md",
    "chars": 1991,
    "preview": "# ember/avoid-leaking-state-in-ember-objects\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/"
  },
  {
    "path": "docs/rules/avoid-using-needs-in-controllers.md",
    "chars": 1134,
    "preview": "# ember/avoid-using-needs-in-controllers\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/embe"
  },
  {
    "path": "docs/rules/classic-decorator-hooks.md",
    "chars": 1240,
    "preview": "# ember/classic-decorator-hooks\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/esl"
  },
  {
    "path": "docs/rules/classic-decorator-no-classic-methods.md",
    "chars": 1708,
    "preview": "# ember/classic-decorator-no-classic-methods\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/"
  },
  {
    "path": "docs/rules/closure-actions.md",
    "chars": 1032,
    "preview": "# ember/closure-actions\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plug"
  },
  {
    "path": "docs/rules/computed-property-getters.md",
    "chars": 2165,
    "preview": "# ember/computed-property-getters\n\n<!-- end auto-generated rule header -->\n\nEnforce the consistent use of getters in com"
  },
  {
    "path": "docs/rules/jquery-ember-run.md",
    "chars": 1033,
    "preview": "# ember/jquery-ember-run\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plu"
  },
  {
    "path": "docs/rules/named-functions-in-promises.md",
    "chars": 2533,
    "preview": "# ember/named-functions-in-promises\n\n<!-- end auto-generated rule header -->\n\nUse named functions defined on objects to "
  },
  {
    "path": "docs/rules/new-module-imports.md",
    "chars": 1264,
    "preview": "# ember/new-module-imports\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-p"
  },
  {
    "path": "docs/rules/no-actions-hash.md",
    "chars": 1788,
    "preview": "# ember/no-actions-hash\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plug"
  },
  {
    "path": "docs/rules/no-array-prototype-extensions.md",
    "chars": 4934,
    "preview": "# ember/no-array-prototype-extensions\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.o"
  },
  {
    "path": "docs/rules/no-arrow-function-computed-properties.md",
    "chars": 1892,
    "preview": "# ember/no-arrow-function-computed-properties\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com"
  },
  {
    "path": "docs/rules/no-assignment-of-untracked-properties-used-in-tracking-contexts.md",
    "chars": 5598,
    "preview": "# ember/no-assignment-of-untracked-properties-used-in-tracking-contexts\n\n💼 This rule is enabled in the ✅ `recommended` ["
  },
  {
    "path": "docs/rules/no-at-ember-render-modifiers.md",
    "chars": 2790,
    "preview": "# ember/no-at-ember-render-modifiers\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cl"
  },
  {
    "path": "docs/rules/no-attrs-in-components.md",
    "chars": 1343,
    "preview": "# ember/no-attrs-in-components\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/esli"
  },
  {
    "path": "docs/rules/no-attrs-snapshot.md",
    "chars": 2355,
    "preview": "# ember/no-attrs-snapshot\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-pl"
  },
  {
    "path": "docs/rules/no-builtin-form-components.md",
    "chars": 2297,
    "preview": "# ember/no-builtin-form-components\n\n<!-- end auto-generated rule header -->\n\nThis rule disallows the use of Ember's buil"
  },
  {
    "path": "docs/rules/no-capital-letters-in-routes.md",
    "chars": 1018,
    "preview": "# ember/no-capital-letters-in-routes\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cl"
  },
  {
    "path": "docs/rules/no-classic-classes.md",
    "chars": 3028,
    "preview": "# ember/no-classic-classes\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-p"
  },
  {
    "path": "docs/rules/no-classic-components.md",
    "chars": 1400,
    "preview": "# ember/no-classic-components\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslin"
  },
  {
    "path": "docs/rules/no-component-lifecycle-hooks.md",
    "chars": 2432,
    "preview": "# ember/no-component-lifecycle-hooks\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cl"
  },
  {
    "path": "docs/rules/no-computed-properties-in-native-classes.md",
    "chars": 3050,
    "preview": "# ember/no-computed-properties-in-native-classes\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github."
  },
  {
    "path": "docs/rules/no-controller-access-in-routes.md",
    "chars": 2330,
    "preview": "# ember/no-controller-access-in-routes\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-"
  },
  {
    "path": "docs/rules/no-controllers.md",
    "chars": 1228,
    "preview": "# ember/no-controllers\n\n<!-- end auto-generated rule header -->\n\nSome people may prefer to avoid the use of controllers "
  },
  {
    "path": "docs/rules/no-current-route-name.md",
    "chars": 982,
    "preview": "# ember/no-current-route-name\n\n<!-- end auto-generated rule header -->\n\nThe route name is something which is not visible"
  },
  {
    "path": "docs/rules/no-deeply-nested-dependent-keys-with-each.md",
    "chars": 1349,
    "preview": "# ember/no-deeply-nested-dependent-keys-with-each\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github"
  },
  {
    "path": "docs/rules/no-deprecated-router-transition-methods.md",
    "chars": 2723,
    "preview": "# ember/no-deprecated-router-transition-methods\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.c"
  },
  {
    "path": "docs/rules/no-duplicate-dependent-keys.md",
    "chars": 944,
    "preview": "# ember/no-duplicate-dependent-keys\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli"
  },
  {
    "path": "docs/rules/no-ember-super-in-es-classes.md",
    "chars": 1285,
    "preview": "# ember/no-ember-super-in-es-classes\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cl"
  },
  {
    "path": "docs/rules/no-ember-testing-in-module-scope.md",
    "chars": 1535,
    "preview": "# ember/no-ember-testing-in-module-scope\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/embe"
  },
  {
    "path": "docs/rules/no-empty-attrs.md",
    "chars": 979,
    "preview": "# ember/no-empty-attrs\n\n<!-- end auto-generated rule header -->\n\nBe explicit with Ember data attribute types.\n\nEmber Dat"
  },
  {
    "path": "docs/rules/no-empty-glimmer-component-classes.md",
    "chars": 3224,
    "preview": "# ember/no-empty-glimmer-component-classes\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/em"
  },
  {
    "path": "docs/rules/no-function-prototype-extensions.md",
    "chars": 1912,
    "preview": "# ember/no-function-prototype-extensions\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/embe"
  },
  {
    "path": "docs/rules/no-get-with-default.md",
    "chars": 2733,
    "preview": "# ember/no-get-with-default\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-"
  },
  {
    "path": "docs/rules/no-get.md",
    "chars": 6201,
    "preview": "# ember/no-get\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plugin-ember#"
  },
  {
    "path": "docs/rules/no-global-jquery.md",
    "chars": 1118,
    "preview": "# ember/no-global-jquery\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plu"
  },
  {
    "path": "docs/rules/no-html-safe.md",
    "chars": 3841,
    "preview": "# ember/no-html-safe\n\n<!-- end auto-generated rule header -->\n\n`htmlSafe` marks a string as safe for unescaped output wi"
  },
  {
    "path": "docs/rules/no-implicit-injections.md",
    "chars": 4312,
    "preview": "# ember/no-implicit-injections\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/esli"
  },
  {
    "path": "docs/rules/no-implicit-service-injection-argument.md",
    "chars": 1731,
    "preview": "# ember/no-implicit-service-injection-argument\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https:/"
  },
  {
    "path": "docs/rules/no-incorrect-calls-with-inline-anonymous-functions.md",
    "chars": 1827,
    "preview": "# ember/no-incorrect-calls-with-inline-anonymous-functions\n\n💼 This rule is enabled in the ✅ `recommended` [config](https"
  },
  {
    "path": "docs/rules/no-incorrect-computed-macros.md",
    "chars": 1686,
    "preview": "# ember/no-incorrect-computed-macros\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cl"
  },
  {
    "path": "docs/rules/no-invalid-debug-function-arguments.md",
    "chars": 2022,
    "preview": "# ember/no-invalid-debug-function-arguments\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/e"
  },
  {
    "path": "docs/rules/no-invalid-dependent-keys.md",
    "chars": 2169,
    "preview": "# ember/no-invalid-dependent-keys\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/e"
  },
  {
    "path": "docs/rules/no-invalid-test-waiters.md",
    "chars": 1209,
    "preview": "# ember/no-invalid-test-waiters\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/esl"
  },
  {
    "path": "docs/rules/no-jquery.md",
    "chars": 1849,
    "preview": "# ember/no-jquery\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plugin-emb"
  },
  {
    "path": "docs/rules/no-legacy-test-waiters.md",
    "chars": 2109,
    "preview": "# ember/no-legacy-test-waiters\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/esli"
  },
  {
    "path": "docs/rules/no-mixins.md",
    "chars": 2088,
    "preview": "# ember/no-mixins\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plugin-emb"
  },
  {
    "path": "docs/rules/no-modifier-argument-destructuring.md",
    "chars": 1685,
    "preview": "# ember/no-modifier-argument-destructuring\n\n<!-- end auto-generated rule header -->\n\nDisallow destructuring of `modifier"
  },
  {
    "path": "docs/rules/no-new-mixins.md",
    "chars": 1928,
    "preview": "# ember/no-new-mixins\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plugin"
  },
  {
    "path": "docs/rules/no-noop-setup-on-error-in-before.md",
    "chars": 1734,
    "preview": "# ember/no-noop-setup-on-error-in-before\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/embe"
  },
  {
    "path": "docs/rules/no-observers.md",
    "chars": 2355,
    "preview": "# ember/no-observers\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plugin-"
  },
  {
    "path": "docs/rules/no-old-shims.md",
    "chars": 1236,
    "preview": "# ember/no-old-shims\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plugin-"
  },
  {
    "path": "docs/rules/no-on-calls-in-components.md",
    "chars": 648,
    "preview": "# ember/no-on-calls-in-components\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/e"
  },
  {
    "path": "docs/rules/no-pause-test.md",
    "chars": 1437,
    "preview": "# ember/no-pause-test\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plugin"
  },
  {
    "path": "docs/rules/no-private-routing-service.md",
    "chars": 2471,
    "preview": "# ember/no-private-routing-service\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/"
  },
  {
    "path": "docs/rules/no-proxies.md",
    "chars": 1222,
    "preview": "# ember/no-proxies\n\n<!-- end auto-generated rule header -->\n\nYou may want to disallow the use of Ember proxy objects (`O"
  },
  {
    "path": "docs/rules/no-replace-test-comments.md",
    "chars": 1604,
    "preview": "# ember/no-replace-test-comments\n\n<!-- end auto-generated rule header -->\n\nEmber developers using blueprints to generate"
  },
  {
    "path": "docs/rules/no-restricted-property-modifications.md",
    "chars": 2688,
    "preview": "# ember/no-restricted-property-modifications\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://e"
  },
  {
    "path": "docs/rules/no-restricted-resolver-tests.md",
    "chars": 2686,
    "preview": "# ember/no-restricted-resolver-tests\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cl"
  },
  {
    "path": "docs/rules/no-restricted-service-injections.md",
    "chars": 3362,
    "preview": "# ember/no-restricted-service-injections\n\n<!-- end auto-generated rule header -->\n\nIn some parts of your application, yo"
  },
  {
    "path": "docs/rules/no-runloop.md",
    "chars": 2827,
    "preview": "# ember/no-runloop\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plugin-em"
  },
  {
    "path": "docs/rules/no-settled-after-test-helper.md",
    "chars": 2013,
    "preview": "# ember/no-settled-after-test-helper\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cl"
  },
  {
    "path": "docs/rules/no-shadow-route-definition.md",
    "chars": 807,
    "preview": "# ember/no-shadow-route-definition\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/"
  },
  {
    "path": "docs/rules/no-side-effects.md",
    "chars": 1943,
    "preview": "# ember/no-side-effects\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plug"
  },
  {
    "path": "docs/rules/no-string-prototype-extensions.md",
    "chars": 1606,
    "preview": "# ember/no-string-prototype-extensions\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-"
  },
  {
    "path": "docs/rules/no-test-and-then.md",
    "chars": 1370,
    "preview": "# ember/no-test-and-then\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plu"
  },
  {
    "path": "docs/rules/no-test-import-export.md",
    "chars": 2100,
    "preview": "# ember/no-test-import-export\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslin"
  },
  {
    "path": "docs/rules/no-test-module-for.md",
    "chars": 1606,
    "preview": "# ember/no-test-module-for\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-p"
  },
  {
    "path": "docs/rules/no-test-support-import.md",
    "chars": 1528,
    "preview": "# ember/no-test-support-import\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/esli"
  },
  {
    "path": "docs/rules/no-test-this-render.md",
    "chars": 1220,
    "preview": "# ember/no-test-this-render\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-"
  },
  {
    "path": "docs/rules/no-tracked-built-ins.md",
    "chars": 2607,
    "preview": "# ember/no-tracked-built-ins\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/l"
  },
  {
    "path": "docs/rules/no-tracked-properties-from-args.md",
    "chars": 1235,
    "preview": "# ember/no-tracked-properties-from-args\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember"
  },
  {
    "path": "docs/rules/no-try-invoke.md",
    "chars": 1065,
    "preview": "# ember/no-try-invoke\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/eslint-plugin"
  },
  {
    "path": "docs/rules/no-unnecessary-index-route.md",
    "chars": 788,
    "preview": "# ember/no-unnecessary-index-route\n\n<!-- end auto-generated rule header -->\n\nDisallow unnecessary `index` route definiti"
  },
  {
    "path": "docs/rules/no-unnecessary-route-path-option.md",
    "chars": 1085,
    "preview": "# ember/no-unnecessary-route-path-option\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/embe"
  },
  {
    "path": "docs/rules/no-unnecessary-service-injection-argument.md",
    "chars": 1631,
    "preview": "# ember/no-unnecessary-service-injection-argument\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](http"
  },
  {
    "path": "docs/rules/no-unused-services.md",
    "chars": 1600,
    "preview": "# ember/no-unused-services\n\n💡 This rule is manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/c"
  },
  {
    "path": "docs/rules/no-volatile-computed-properties.md",
    "chars": 1161,
    "preview": "# ember/no-volatile-computed-properties\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember"
  },
  {
    "path": "docs/rules/order-in-components.md",
    "chars": 3623,
    "preview": "# ember/order-in-components\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/la"
  },
  {
    "path": "docs/rules/order-in-controllers.md",
    "chars": 2896,
    "preview": "# ember/order-in-controllers\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/l"
  },
  {
    "path": "docs/rules/order-in-models.md",
    "chars": 2132,
    "preview": "# ember/order-in-models\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest"
  },
  {
    "path": "docs/rules/order-in-routes.md",
    "chars": 3159,
    "preview": "# ember/order-in-routes\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest"
  },
  {
    "path": "docs/rules/prefer-ember-test-helpers.md",
    "chars": 1579,
    "preview": "# ember/prefer-ember-test-helpers\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/e"
  },
  {
    "path": "docs/rules/require-async-inverse-relationship.md",
    "chars": 1244,
    "preview": "# ember/require-async-inverse-relationship\n\n<!-- end auto-generated rule header -->\n\nThis rule ensures that the `async` "
  },
  {
    "path": "docs/rules/require-computed-macros.md",
    "chars": 4137,
    "preview": "# ember/require-computed-macros\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/esl"
  },
  {
    "path": "docs/rules/require-computed-property-dependencies.md",
    "chars": 2373,
    "preview": "# ember/require-computed-property-dependencies\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.co"
  },
  {
    "path": "docs/rules/require-fetch-import.md",
    "chars": 983,
    "preview": "# ember/require-fetch-import\n\n<!-- end auto-generated rule header -->\n\nUsing `fetch()` without importing it causes the b"
  },
  {
    "path": "docs/rules/require-return-from-computed.md",
    "chars": 2439,
    "preview": "# ember/require-return-from-computed\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cl"
  },
  {
    "path": "docs/rules/require-super-in-lifecycle-hooks.md",
    "chars": 2342,
    "preview": "# ember/require-super-in-lifecycle-hooks\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/embe"
  },
  {
    "path": "docs/rules/require-tagless-components.md",
    "chars": 4008,
    "preview": "# ember/require-tagless-components\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/"
  },
  {
    "path": "docs/rules/require-valid-css-selector-in-test-helpers.md",
    "chars": 2362,
    "preview": "# ember/require-valid-css-selector-in-test-helpers\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://githu"
  },
  {
    "path": "docs/rules/route-path-style.md",
    "chars": 1319,
    "preview": "# ember/route-path-style\n\n💡 This rule is manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/cor"
  },
  {
    "path": "docs/rules/routes-segments-snake-case.md",
    "chars": 826,
    "preview": "# ember/routes-segments-snake-case\n\n💼 This rule is enabled in the ✅ `recommended` [config](https://github.com/ember-cli/"
  },
  {
    "path": "docs/rules/template-attribute-indentation.md",
    "chars": 3123,
    "preview": "# ember/template-attribute-indentation\n\n<!-- end auto-generated rule header -->\n\nMigrated from [ember-template-lint/attr"
  },
  {
    "path": "docs/rules/template-attribute-order.md",
    "chars": 1495,
    "preview": "# ember/template-attribute-order\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/do"
  },
  {
    "path": "docs/rules/template-block-indentation.md",
    "chars": 1683,
    "preview": "# ember/template-block-indentation\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/"
  },
  {
    "path": "docs/rules/template-builtin-component-arguments.md",
    "chars": 2280,
    "preview": "# ember/template-builtin-component-arguments\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https:/"
  },
  {
    "path": "docs/rules/template-deprecated-inline-view-helper.md",
    "chars": 1416,
    "preview": "# ember/template-deprecated-inline-view-helper\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https"
  },
  {
    "path": "docs/rules/template-deprecated-render-helper.md",
    "chars": 859,
    "preview": "# ember/template-deprecated-render-helper\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://gi"
  },
  {
    "path": "docs/rules/template-eol-last.md",
    "chars": 1600,
    "preview": "# ember/template-eol-last\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/late"
  },
  {
    "path": "docs/rules/template-linebreak-style.md",
    "chars": 1507,
    "preview": "# ember/template-linebreak-style\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/do"
  },
  {
    "path": "docs/rules/template-link-href-attributes.md",
    "chars": 1433,
    "preview": "# ember/template-link-href-attributes\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github"
  },
  {
    "path": "docs/rules/template-link-rel-noopener.md",
    "chars": 1516,
    "preview": "# ember/template-link-rel-noopener\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.co"
  },
  {
    "path": "docs/rules/template-modifier-name-case.md",
    "chars": 1177,
    "preview": "# ember/template-modifier-name-case\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org"
  },
  {
    "path": "docs/rules/template-no-abstract-roles.md",
    "chars": 749,
    "preview": "# ember/template-no-abstract-roles\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.co"
  },
  {
    "path": "docs/rules/template-no-accesskey-attribute.md",
    "chars": 1225,
    "preview": "# ember/template-no-accesskey-attribute\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://gith"
  },
  {
    "path": "docs/rules/template-no-action-modifiers.md",
    "chars": 2189,
    "preview": "# ember/template-no-action-modifiers\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.or"
  },
  {
    "path": "docs/rules/template-no-action-on-submit-button.md",
    "chars": 1707,
    "preview": "# ember/template-no-action-on-submit-button\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://"
  },
  {
    "path": "docs/rules/template-no-action.md",
    "chars": 2070,
    "preview": "# ember/template-no-action\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com/ember-"
  },
  {
    "path": "docs/rules/template-no-args-paths.md",
    "chars": 2290,
    "preview": "# ember/template-no-args-paths\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com/em"
  },
  {
    "path": "docs/rules/template-no-arguments-for-html-elements.md",
    "chars": 1624,
    "preview": "# ember/template-no-arguments-for-html-elements\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](http"
  },
  {
    "path": "docs/rules/template-no-aria-hidden-body.md",
    "chars": 1006,
    "preview": "# ember/template-no-aria-hidden-body\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github."
  },
  {
    "path": "docs/rules/template-no-aria-unsupported-elements.md",
    "chars": 1398,
    "preview": "# ember/template-no-aria-unsupported-elements\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https:"
  },
  {
    "path": "docs/rules/template-no-array-prototype-extensions.md",
    "chars": 1758,
    "preview": "# ember/template-no-array-prototype-extensions\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https"
  },
  {
    "path": "docs/rules/template-no-at-ember-render-modifiers.md",
    "chars": 1899,
    "preview": "# ember/template-no-at-ember-render-modifiers\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https:"
  },
  {
    "path": "docs/rules/template-no-attrs-in-components.md",
    "chars": 596,
    "preview": "# ember/template-no-attrs-in-components\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://gith"
  },
  {
    "path": "docs/rules/template-no-autofocus-attribute.md",
    "chars": 2261,
    "preview": "# ember/template-no-autofocus-attribute\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://gith"
  },
  {
    "path": "docs/rules/template-no-bare-strings.md",
    "chars": 2976,
    "preview": "# ember/template-no-bare-strings\n\n<!-- end auto-generated rule header -->\n\nDisallows bare strings in templates to encour"
  },
  {
    "path": "docs/rules/template-no-bare-yield.md",
    "chars": 530,
    "preview": "# ember/template-no-bare-yield\n\n<!-- end auto-generated rule header -->\n\nDisallow `{{yield}}` without parameters outside"
  },
  {
    "path": "docs/rules/template-no-block-params-for-html-elements.md",
    "chars": 1470,
    "preview": "# ember/template-no-block-params-for-html-elements\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](h"
  },
  {
    "path": "docs/rules/template-no-builtin-form-components.md",
    "chars": 2662,
    "preview": "# ember/template-no-builtin-form-components\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://"
  },
  {
    "path": "docs/rules/template-no-capital-arguments.md",
    "chars": 863,
    "preview": "# ember/template-no-capital-arguments\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github"
  },
  {
    "path": "docs/rules/template-no-chained-this.md",
    "chars": 1648,
    "preview": "# ember/template-no-chained-this\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/do"
  },
  {
    "path": "docs/rules/template-no-class-bindings.md",
    "chars": 1192,
    "preview": "# ember/template-no-class-bindings\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.co"
  },
  {
    "path": "docs/rules/template-no-curly-component-invocation.md",
    "chars": 2245,
    "preview": "# ember/template-no-curly-component-invocation\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https"
  },
  {
    "path": "docs/rules/template-no-debugger.md",
    "chars": 1045,
    "preview": "# ember/template-no-debugger\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com/embe"
  },
  {
    "path": "docs/rules/template-no-deprecated.md",
    "chars": 1597,
    "preview": "# ember/template-no-deprecated\n\n<!-- end auto-generated rule header -->\n\nDisallows using components, helpers, or modifie"
  },
  {
    "path": "docs/rules/template-no-duplicate-attributes.md",
    "chars": 1319,
    "preview": "# ember/template-no-duplicate-attributes\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://git"
  },
  {
    "path": "docs/rules/template-no-duplicate-id.md",
    "chars": 1161,
    "preview": "# ember/template-no-duplicate-id\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com/"
  },
  {
    "path": "docs/rules/template-no-duplicate-landmark-elements.md",
    "chars": 1932,
    "preview": "# ember/template-no-duplicate-landmark-elements\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](http"
  },
  {
    "path": "docs/rules/template-no-dynamic-subexpression-invocations.md",
    "chars": 1284,
    "preview": "# ember/template-no-dynamic-subexpression-invocations\n\n<!-- end auto-generated rule header -->\n\nDisallow dynamic helper "
  },
  {
    "path": "docs/rules/template-no-element-event-actions.md",
    "chars": 1383,
    "preview": "# ember/template-no-element-event-actions\n\n<!-- end auto-generated rule header -->\n\nDisallow using element event actions"
  },
  {
    "path": "docs/rules/template-no-empty-headings.md",
    "chars": 2416,
    "preview": "# ember/template-no-empty-headings\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.co"
  },
  {
    "path": "docs/rules/template-no-extra-mut-helper-argument.md",
    "chars": 1150,
    "preview": "# ember/template-no-extra-mut-helper-argument\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https:"
  },
  {
    "path": "docs/rules/template-no-forbidden-elements.md",
    "chars": 1278,
    "preview": "# ember/template-no-forbidden-elements\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://githu"
  },
  {
    "path": "docs/rules/template-no-heading-inside-button.md",
    "chars": 1466,
    "preview": "# ember/template-no-heading-inside-button\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://gi"
  },
  {
    "path": "docs/rules/template-no-html-comments.md",
    "chars": 1229,
    "preview": "# ember/template-no-html-comments\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com"
  },
  {
    "path": "docs/rules/template-no-implicit-this.md",
    "chars": 5340,
    "preview": "# ember/template-no-implicit-this\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com"
  },
  {
    "path": "docs/rules/template-no-index-component-invocation.md",
    "chars": 1857,
    "preview": "# ember/template-no-index-component-invocation\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https"
  },
  {
    "path": "docs/rules/template-no-inline-event-handlers.md",
    "chars": 1443,
    "preview": "# ember/template-no-inline-event-handlers\n\n<!-- end auto-generated rule header -->\n\nDisallows DOM event handler attribut"
  },
  {
    "path": "docs/rules/template-no-inline-linkto.md",
    "chars": 2116,
    "preview": "# ember/template-no-inline-linkto\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/d"
  },
  {
    "path": "docs/rules/template-no-inline-styles.md",
    "chars": 1397,
    "preview": "# ember/template-no-inline-styles\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com"
  },
  {
    "path": "docs/rules/template-no-input-block.md",
    "chars": 958,
    "preview": "# ember/template-no-input-block\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com/e"
  },
  {
    "path": "docs/rules/template-no-input-tagname.md",
    "chars": 1237,
    "preview": "# ember/template-no-input-tagname\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com"
  },
  {
    "path": "docs/rules/template-no-invalid-aria-attributes.md",
    "chars": 1030,
    "preview": "# ember/template-no-invalid-aria-attributes\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://"
  },
  {
    "path": "docs/rules/template-no-invalid-interactive.md",
    "chars": 1997,
    "preview": "# ember/template-no-invalid-interactive\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://gith"
  },
  {
    "path": "docs/rules/template-no-invalid-link-text.md",
    "chars": 2310,
    "preview": "# ember/template-no-invalid-link-text\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github"
  },
  {
    "path": "docs/rules/template-no-invalid-link-title.md",
    "chars": 1180,
    "preview": "# ember/template-no-invalid-link-title\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://githu"
  },
  {
    "path": "docs/rules/template-no-invalid-meta.md",
    "chars": 3555,
    "preview": "# ember/template-no-invalid-meta\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com/"
  },
  {
    "path": "docs/rules/template-no-invalid-role.md",
    "chars": 2104,
    "preview": "# ember/template-no-invalid-role\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com/"
  },
  {
    "path": "docs/rules/template-no-jsx-attributes.md",
    "chars": 2036,
    "preview": "# ember/template-no-jsx-attributes\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/"
  },
  {
    "path": "docs/rules/template-no-let-reference.md",
    "chars": 1378,
    "preview": "# ember/template-no-let-reference\n\n💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint"
  },
  {
    "path": "docs/rules/template-no-link-to-positional-params.md",
    "chars": 983,
    "preview": "# ember/template-no-link-to-positional-params\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https:"
  },
  {
    "path": "docs/rules/template-no-link-to-tagname.md",
    "chars": 1369,
    "preview": "# ember/template-no-link-to-tagname\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.c"
  },
  {
    "path": "docs/rules/template-no-log.md",
    "chars": 1162,
    "preview": "# ember/template-no-log\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com/ember-cli"
  },
  {
    "path": "docs/rules/template-no-model-argument-in-route-templates.md",
    "chars": 1659,
    "preview": "# ember/template-no-model-argument-in-route-templates\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option]("
  },
  {
    "path": "docs/rules/template-no-multiple-empty-lines.md",
    "chars": 1365,
    "preview": "# ember/template-no-multiple-empty-lines\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslin"
  },
  {
    "path": "docs/rules/template-no-mut-helper.md",
    "chars": 5478,
    "preview": "# ember/template-no-mut-helper\n\n<!-- end auto-generated rule header -->\n\nDisallow usage of the `(mut)` helper.\n\nThe `(mu"
  },
  {
    "path": "docs/rules/template-no-negated-condition.md",
    "chars": 1603,
    "preview": "# ember/template-no-negated-condition\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github"
  },
  {
    "path": "docs/rules/template-no-nested-interactive.md",
    "chars": 3965,
    "preview": "# ember/template-no-nested-interactive\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://githu"
  },
  {
    "path": "docs/rules/template-no-nested-landmark.md",
    "chars": 1838,
    "preview": "# ember/template-no-nested-landmark\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.c"
  },
  {
    "path": "docs/rules/template-no-nested-splattributes.md",
    "chars": 1532,
    "preview": "# ember/template-no-nested-splattributes\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://git"
  },
  {
    "path": "docs/rules/template-no-obscure-array-access.md",
    "chars": 1607,
    "preview": "# ember/template-no-obscure-array-access\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://git"
  },
  {
    "path": "docs/rules/template-no-obsolete-elements.md",
    "chars": 1467,
    "preview": "# ember/template-no-obsolete-elements\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github"
  },
  {
    "path": "docs/rules/template-no-only-default-slot.md",
    "chars": 2014,
    "preview": "# ember/template-no-only-default-slot\n\n🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.o"
  },
  {
    "path": "docs/rules/template-no-outlet-outside-routes.md",
    "chars": 1142,
    "preview": "# ember/template-no-outlet-outside-routes\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://gi"
  },
  {
    "path": "docs/rules/template-no-page-title-component.md",
    "chars": 711,
    "preview": "# ember/template-no-page-title-component\n\n<!-- end auto-generated rule header -->\n\nDisallows usage of the `<PageTitle>` "
  },
  {
    "path": "docs/rules/template-no-passed-in-event-handlers.md",
    "chars": 1917,
    "preview": "# ember/template-no-passed-in-event-handlers\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https:/"
  },
  {
    "path": "docs/rules/template-no-pointer-down-event-binding.md",
    "chars": 2118,
    "preview": "# ember/template-no-pointer-down-event-binding\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https"
  },
  {
    "path": "docs/rules/template-no-positional-data-test-selectors.md",
    "chars": 1930,
    "preview": "# ember/template-no-positional-data-test-selectors\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](h"
  },
  {
    "path": "docs/rules/template-no-positive-tabindex.md",
    "chars": 1892,
    "preview": "# ember/template-no-positive-tabindex\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github"
  },
  {
    "path": "docs/rules/template-no-potential-path-strings.md",
    "chars": 1084,
    "preview": "# ember/template-no-potential-path-strings\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://g"
  },
  {
    "path": "docs/rules/template-no-quoteless-attributes.md",
    "chars": 1772,
    "preview": "# ember/template-no-quoteless-attributes\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://git"
  },
  {
    "path": "docs/rules/template-no-redundant-fn.md",
    "chars": 1226,
    "preview": "# ember/template-no-redundant-fn\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.com/"
  },
  {
    "path": "docs/rules/template-no-redundant-role.md",
    "chars": 2557,
    "preview": "# ember/template-no-redundant-role\n\n💼 This rule is enabled in the 📋 `template-lint-migration` [config](https://github.co"
  },
  {
    "path": "docs/rules/template-no-restricted-invocations.md",
    "chars": 1312,
    "preview": "# ember/template-no-restricted-invocations\n\n<!-- end auto-generated rule header -->\n\nDisallow certain components, helper"
  }
]

// ... and 627 more files (download for full content)

About this extraction

This page contains the full source code of the ember-cli/eslint-plugin-ember GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 827 files (3.6 MB), approximately 997.2k tokens, and a symbol index with 1294 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!