-
Notifications
You must be signed in to change notification settings - Fork 217
Expand file tree
/
Copy patheslint.config.js
More file actions
130 lines (124 loc) · 3.65 KB
/
eslint.config.js
File metadata and controls
130 lines (124 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
const shopifyPlugin = require('@shopify/eslint-plugin');
module.exports = [
// Core configs
...shopifyPlugin.configs.typescript,
...shopifyPlugin.configs.prettier,
// Global ignores (replaces .eslintignore and ignorePatterns)
{
ignores: [
'**/build/',
'**/tmp/',
'**/dist/',
'**/coverage/',
'**/node_modules/',
'**/rollup.config.js',
'**/rollup.config.*.js',
'**/rollup.config.cjs',
'**/.eslintrc.cjs',
'**/babel.config.js',
'packages/apps/shopify-api/rest/admin/',
// .mjs test helper scripts (not part of the library, never linted before)
'**/*.mjs',
// Remix and React Router example/doc files
'packages/apps/shopify-app-remix/docs/',
'packages/apps/shopify-app-remix/**/*.example.ts',
'packages/apps/shopify-app-remix/**/*.example.tsx',
'packages/apps/shopify-app-remix/**/*.example.*.ts',
'packages/apps/shopify-app-remix/**/*.example.*.tsx',
'packages/apps/shopify-app-react-router/docs/',
'packages/apps/shopify-app-react-router/**/*.example.ts',
'packages/apps/shopify-app-react-router/**/*.example.tsx',
'packages/apps/shopify-app-react-router/**/*.example.*.ts',
'packages/apps/shopify-app-react-router/**/*.example.*.tsx',
],
},
// Global rule overrides
{
rules: {
'import/no-extraneous-dependencies': 'off',
'no-console': 'off',
'@typescript-eslint/naming-convention': 'off',
'@typescript-eslint/consistent-indexed-object-style': 'off',
},
},
// TypeScript-specific rule overrides (scoped to .ts/.tsx files)
{
files: ['**/*.ts', '**/*.tsx'],
rules: {
'@typescript-eslint/no-empty-object-type': [
'error',
{allowInterfaces: 'with-single-extends'},
],
},
},
// Remix: prevent cross-imports between react and server directories
{
files: ['packages/apps/shopify-app-remix/src/react/**/*.ts'],
rules: {
'no-restricted-imports': [
'error',
{
patterns: [
{
group: ['../server/*'],
message:
'Importing from src/react in src/server is not allowed as they must be kept separate, because it breaks Remix bundling.',
},
],
},
],
},
},
{
files: ['packages/apps/shopify-app-remix/src/server/**/*.ts'],
rules: {
'no-restricted-imports': [
'error',
{
patterns: [
{
group: ['../react/*'],
message:
'Importing from src/react in src/server is not allowed as they must be kept separate, because it breaks Remix bundling.',
},
],
},
],
},
},
// React Router: prevent cross-imports between react and server directories
{
files: ['packages/apps/shopify-app-react-router/src/react/**/*.ts'],
rules: {
'no-restricted-imports': [
'error',
{
patterns: [
{
group: ['../server/*'],
message:
'Importing from src/react in src/server is not allowed as they must be kept separate, because it breaks Remix bundling.',
},
],
},
],
},
},
{
files: ['packages/apps/shopify-app-react-router/src/server/**/*.ts'],
rules: {
'no-restricted-imports': [
'error',
{
patterns: [
{
group: ['../react/*'],
message:
'Importing from src/react in src/server is not allowed as they must be kept separate, because it breaks Remix bundling.',
},
],
},
],
},
},
];