A social knowledge tool for researchers built on ATProto
1import js from '@eslint/js';
2import prettierPlugin from 'eslint-plugin-prettier';
3import tseslint from '@typescript-eslint/eslint-plugin';
4import tsparser from '@typescript-eslint/parser';
5
6export default [
7 js.configs.recommended,
8 {
9 ignores: [
10 'src/webapp/**',
11 'dist/**',
12 'node_modules/**',
13 'src/modules/atproto/infrastructure/lexicon/**',
14 ],
15 },
16 {
17 files: ['**/*.js'],
18 languageOptions: {
19 ecmaVersion: 2022,
20 sourceType: 'script',
21 globals: {
22 console: 'readonly',
23 process: 'readonly',
24 Buffer: 'readonly',
25 __dirname: 'readonly',
26 __filename: 'readonly',
27 module: 'readonly',
28 require: 'readonly',
29 exports: 'readonly',
30 global: 'readonly',
31 setTimeout: 'readonly',
32 },
33 },
34 plugins: {
35 prettier: prettierPlugin,
36 },
37 rules: {
38 'prettier/prettier': 'error',
39 'no-unused-vars': 'warn',
40 'no-console': 'warn',
41 },
42 },
43 {
44 files: ['**/*.ts'],
45 plugins: {
46 '@typescript-eslint': tseslint,
47 prettier: prettierPlugin,
48 },
49 languageOptions: {
50 parser: tsparser,
51 ecmaVersion: 2022,
52 sourceType: 'module',
53 globals: {
54 console: 'readonly',
55 process: 'readonly',
56 Buffer: 'readonly',
57 __dirname: 'readonly',
58 __filename: 'readonly',
59 module: 'readonly',
60 require: 'readonly',
61 exports: 'readonly',
62 global: 'readonly',
63 fetch: 'readonly',
64 // Jest globals
65 describe: 'readonly',
66 test: 'readonly',
67 it: 'readonly',
68 expect: 'readonly',
69 beforeAll: 'readonly',
70 beforeEach: 'readonly',
71 afterAll: 'readonly',
72 afterEach: 'readonly',
73 jest: 'readonly',
74 URLSearchParams: 'readonly',
75 setTimeout: 'readonly',
76 NodeJS: 'readonly',
77 clearTimeout: 'readonly',
78 setImmediate: 'readonly',
79 setInterval: 'readonly',
80 },
81 },
82 rules: {
83 'prettier/prettier': 'error',
84 'no-unused-vars': 'off', // Turn off base rule
85 '@typescript-eslint/no-unused-vars': 'warn',
86 'no-console': 'warn',
87 },
88 },
89 {
90 files: ['**/*.test.ts', '**/*.spec.ts'],
91 languageOptions: {
92 parser: tsparser,
93 ecmaVersion: 2022,
94 sourceType: 'module',
95 globals: {
96 console: 'readonly',
97 process: 'readonly',
98 Buffer: 'readonly',
99 __dirname: 'readonly',
100 __filename: 'readonly',
101 module: 'readonly',
102 require: 'readonly',
103 exports: 'readonly',
104 global: 'readonly',
105 fetch: 'readonly',
106 // Jest globals
107 describe: 'readonly',
108 test: 'readonly',
109 it: 'readonly',
110 expect: 'readonly',
111 beforeAll: 'readonly',
112 beforeEach: 'readonly',
113 afterAll: 'readonly',
114 afterEach: 'readonly',
115 jest: 'readonly',
116 // Browser globals for e2e tests using Playwright
117 document: 'readonly',
118 window: 'readonly',
119 navigator: 'readonly',
120 location: 'readonly',
121 setTimeout: 'readonly',
122 NodeJS: 'readonly',
123 clearTimeout: 'readonly',
124 },
125 },
126 plugins: {
127 '@typescript-eslint': tseslint,
128 prettier: prettierPlugin,
129 },
130 rules: {
131 'prettier/prettier': 'error',
132 'no-unused-vars': 'off',
133 '@typescript-eslint/no-unused-vars': 'warn',
134 'no-console': 'warn',
135 },
136 },
137];