Skip to content

Commit 71d19ff

Browse files
committed
non-breaking approach
1 parent a96dc3b commit 71d19ff

File tree

12 files changed

+1772
-163
lines changed

12 files changed

+1772
-163
lines changed

README.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,29 @@ module.exports = {
4343
```
4444

4545
To correctly parse gjs/gts:
46-
Do not set an override for the parser in the global config.
47-
To use e.g. the typescript parser, the following should be used
4846

4947
```js
5048
// .eslintrc.js
5149
module.exports = {
5250
plugins: ['ember'],
53-
// parser: '@typescript-eslint/parser', <-- needs to be removed, or set the gts/gjs one
54-
// so we could also have:
55-
// parser: "eslint-plugin-ember/gts-parser",
5651
extends: [
5752
'eslint:recommended',
58-
'plugin:@typescript-eslint/base', // or typescript-eslint/recommended, must come before plugin:ember/recommended
5953
'plugin:ember/recommended', // or other configuration
6054
],
55+
overrides: [
56+
{
57+
files: ['**/*.gts'],
58+
extends: [
59+
'plugin:ember/recommended-gjs',
60+
]
61+
},
62+
{
63+
files: ['**/*.gjs'],
64+
extends: [
65+
'plugin:ember/recommended-gjs',
66+
]
67+
}
68+
],
6169
rules: {
6270
// override / enable optional rules
6371
'ember/no-replace-test-comments': 'error'

lib/config/recommended-gjs.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
const rules = require('../recommended-rules');
2+
3+
module.exports = {
4+
root: true,
5+
6+
parserOptions: {
7+
ecmaVersion: 2020,
8+
sourceType: 'module',
9+
},
10+
11+
env: {
12+
browser: true,
13+
es2020: true,
14+
},
15+
16+
plugins: ['ember'],
17+
18+
rules,
19+
20+
overrides: [
21+
/**
22+
* We don't want to *always* have the preprocessor active,
23+
* it's only relevant on gjs and gts files.
24+
*
25+
* Additionally, we need to declare a global (which is private API)
26+
* so that ESLint doesn't report errors about the variable being undefined.
27+
* While this is true, it's a temporary thing for babel to do further processing
28+
* on -- and isn't relevant to user-land code.
29+
*/
30+
{
31+
files: ['**/*.gts'],
32+
parser: 'eslint-plugin-ember/gts-parser',
33+
processor: 'ember/<noop>',
34+
},
35+
{
36+
files: ['**/*.gjs'],
37+
parser: 'eslint-plugin-ember/gjs-parser',
38+
processor: 'ember/<noop>',
39+
},
40+
],
41+
};

lib/config/recommended.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const rules = require('../recommended-rules');
2+
const util = require('ember-template-imports/src/util');
23

34
module.exports = {
45
root: true,
@@ -28,12 +29,11 @@ module.exports = {
2829
* on -- and isn't relevant to user-land code.
2930
*/
3031
{
31-
files: ['**/*.gts'],
32-
parser: require.resolve('../parsers/gts-parser'),
33-
},
34-
{
35-
files: ['**/*.gjs'],
36-
parser: require.resolve('../parsers/gjs-parser'),
32+
files: ['**/*.gjs', '**/*.gts'],
33+
processor: 'ember/<template>',
34+
globals: {
35+
[util.TEMPLATE_TAG_PLACEHOLDER]: 'readonly',
36+
},
3737
},
3838
],
3939
};

lib/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,18 @@
22

33
const requireIndex = require('requireindex');
44

5+
const gjs = require('./preprocessors/glimmer');
6+
const noop = require('./preprocessors/noop');
7+
58
module.exports = {
69
rules: requireIndex(`${__dirname}/rules`),
710
configs: requireIndex(`${__dirname}/config`),
811
utils: {
912
ember: require('./utils/ember'),
1013
},
14+
processors: {
15+
// https://eslint.org/docs/developer-guide/working-with-plugins#file-extension-named-processor
16+
'<template>': gjs,
17+
'<noop>': noop,
18+
},
1119
};

0 commit comments

Comments
 (0)