-
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy patheslint.config.mjs
More file actions
162 lines (153 loc) · 4.73 KB
/
eslint.config.mjs
File metadata and controls
162 lines (153 loc) · 4.73 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import js from '@eslint/js';
import globals from 'globals';
import tseslint from 'typescript-eslint';
export default [
// --- Global ignores ---
{
ignores: [
'**/dist/**',
'**/coverage/**',
'**/node_modules/**',
'apps/api/src/**/*.test.js',
'archive/**',
'paper/**',
'reference/**',
'packages/sdk-js/src/**/*.test.js',
'packages/sdk-js/tests/**',
'packages/sdk-js/archived/**',
'reference/**',
],
},
// --- Base: eslint:recommended + globals ---
{
...js.configs.recommended,
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: {
...globals.es2021,
...globals.node,
},
},
rules: {
'no-unused-vars': ['error', { argsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }],
},
},
// --- TypeScript files: parser + disable rules handled by tsc ---
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: {
parser: tseslint.parser,
},
rules: {
// These are handled by TypeScript compiler (tsc --noEmit)
'no-unused-vars': 'off',
'no-undef': 'off',
'no-redeclare': 'off',
},
},
// --- @peac/crypto: restrict direct @noble/ed25519 imports ---
// All noble usage must go through the async-only wrapper (src/ed25519.ts).
// The wrapper itself and test files are exempt.
{
files: ['packages/crypto/src/**/*.ts'],
ignores: ['packages/crypto/src/ed25519.ts'],
rules: {
'no-restricted-imports': [
'error',
{
paths: [
{
name: '@noble/ed25519',
message:
'Import from ./ed25519.js instead. Direct @noble/ed25519 imports bypass the async-only wrapper.',
},
],
},
],
},
},
// --- @peac/mappings-content-signals: forbid network imports ---
// Content-signal parser packages take pre-fetched bytes only.
// Tests are exempt. (@peac/pref (packages/aipref/) was archived in v0.13.0
// and moved to archive/pref/; its historical source is no longer on the
// active lint path, so the rule now targets the canonical content-signals
// mapping package only.)
{
files: [
'packages/mappings/content-signals/src/**/*.ts',
],
rules: {
'no-restricted-imports': [
'error',
{
paths: [
{ name: 'node-fetch', message: 'Network I/O forbidden in content-signal parser packages. Pass pre-fetched bytes to the parser.' },
{ name: 'got', message: 'Network I/O forbidden in content-signal parser packages.' },
{ name: 'axios', message: 'Network I/O forbidden in content-signal parser packages.' },
{ name: 'undici', message: 'Network I/O forbidden in content-signal parser packages.' },
{ name: 'node:http', message: 'Network I/O forbidden in content-signal parser packages.' },
{ name: 'node:https', message: 'Network I/O forbidden in content-signal parser packages.' },
{ name: 'node:net', message: 'Network I/O forbidden in content-signal parser packages.' },
{ name: 'http', message: 'Network I/O forbidden in content-signal parser packages.' },
{ name: 'https', message: 'Network I/O forbidden in content-signal parser packages.' },
{ name: 'net', message: 'Network I/O forbidden in content-signal parser packages.' },
],
patterns: [
{ group: ['node:http', 'node:https', 'node:net'], message: 'Network I/O forbidden in content-signal parser packages.' },
],
},
],
'no-restricted-globals': [
'error',
{
name: 'fetch',
message:
'Network I/O forbidden in content-signal parser packages. Callers pass pre-fetched bytes; parsers operate on bytes only.',
},
],
},
},
// --- @peac/mcp-server: forbid console.log (stdout is reserved for JSON-RPC) ---
// Use process.stderr.write() for diagnostics, never console.log/warn/error.
{
files: ['packages/mcp-server/src/**/*.ts'],
rules: {
'no-console': 'error',
},
},
// --- Test files: add test globals ---
{
files: [
'**/*.test.ts',
'**/*.test.js',
'**/*.spec.ts',
'**/*.spec.js',
'**/tests/**',
'**/__tests__/**',
],
languageOptions: {
globals: {
...globals.jest,
},
},
},
// --- Verifier app: browser globals ---
{
files: ['apps/verifier/src/**/*.ts'],
languageOptions: {
globals: {
...globals.browser,
},
},
},
// --- Service worker: add SW globals ---
{
files: ['apps/verifier/public/sw.js'],
languageOptions: {
globals: {
...globals.serviceworker,
},
},
},
];