@evertondgn/solid-tooling 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lint.mjs CHANGED
@@ -1,983 +1 @@
1
- import { n as RENDER_INTEGRITY_MODULE, t as RELATIVE_IMPORT_RESTRICTION } from "./constants-Jqvtbvxu.mjs";
2
- // src/backendPolicy/index.ts
3
- const NETWORK = [
4
- "fetch",
5
- "XMLHttpRequest",
6
- "WebSocket",
7
- "EventSource"
8
- ];
9
- const RESTRICTED_GLOBALS = [...NETWORK, "console"];
10
- const GLOBALS = [
11
- "globalThis",
12
- "window",
13
- "self",
14
- "global"
15
- ];
16
- const SAFE_ERRORS = {
17
- name: "@solidjs/web",
18
- importNames: ["markSafeError", "SAFE_ERROR"],
19
- message: "Use createPublicError; only publicErrors may mark an error as public."
20
- };
21
- const SERVER_ERROR_HOOK = {
22
- name: "@solidjs/web",
23
- importNames: ["configureServerErrors"],
24
- message: "Only src/infra/server/configureServerErrors/index.ts may import this: server error handling is configured in that module."
25
- };
26
- const SERVER_CONFIG = ["@solidjs/web/server-functions", "@solidjs/web/server-functions/server"].map((name) => ({
27
- name,
28
- message: "Only src/infra/server/configureServerErrors/index.ts may import this: server error handling is configured in that module."
29
- }));
30
- const RENDER_OBSERVER = {
31
- regex: RENDER_INTEGRITY_MODULE,
32
- importNames: ["observeRenderFailures"],
33
- message: "Only configureServerErrors may declare that render failures are observed."
34
- };
35
- const TRANSPORTS = [
36
- "http",
37
- "https",
38
- "http2",
39
- "net",
40
- "tls",
41
- "undici"
42
- ].flatMap((name) => [name, `node:${name}`]).map((name) => ({
43
- name,
44
- message: "Node transports cannot be imported in src/. Use requestJson for HTTP, or an adapter in src/infra/server/ wrapped in protectServerOperation."
45
- }));
46
- function imports({ paths, patterns = [] }) {
47
- return { "eslint/no-restricted-imports": ["error", {
48
- paths,
49
- patterns: [RELATIVE_IMPORT_RESTRICTION, ...patterns]
50
- }] };
51
- }
52
- function globals({ names, properties = names }) {
53
- return {
54
- "eslint/no-restricted-globals": ["error", {
55
- globals: names,
56
- checkGlobalObject: true,
57
- globalObjects: ["global"]
58
- }],
59
- "eslint/no-restricted-properties": ["error", ...GLOBALS.flatMap((object) => properties.map((property) => ({
60
- object,
61
- property,
62
- message: property === "console" ? "Log failures only through logServerFailure." : "Call the backend through requestJson, or through an adapter in src/infra/server/ wrapped in protectServerOperation."
63
- })))]
64
- };
65
- }
66
- const backendPolicy = [
67
- {
68
- files: ["src/**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}"],
69
- rules: {
70
- "backend/static-solid-imports": "error",
71
- "backend/static-render-integrity-imports": "error",
72
- "eslint/no-console": ["error", { allow: [] }],
73
- ...globals({ names: RESTRICTED_GLOBALS }),
74
- ...imports({
75
- paths: [
76
- SAFE_ERRORS,
77
- SERVER_ERROR_HOOK,
78
- ...SERVER_CONFIG,
79
- ...TRANSPORTS
80
- ],
81
- patterns: [RENDER_OBSERVER]
82
- })
83
- }
84
- },
85
- {
86
- files: ["src/infra/server/logServerFailure/index.ts"],
87
- rules: {
88
- ...globals({
89
- names: NETWORK,
90
- properties: RESTRICTED_GLOBALS
91
- }),
92
- "eslint/no-console": ["error", { allow: ["error"] }]
93
- }
94
- },
95
- {
96
- files: ["src/infra/server/requestJson/index.ts"],
97
- rules: globals({ names: RESTRICTED_GLOBALS.filter((name) => name !== "fetch") })
98
- },
99
- {
100
- files: ["src/infra/server/publicErrors/index.ts"],
101
- rules: imports({
102
- paths: [
103
- SERVER_ERROR_HOOK,
104
- ...SERVER_CONFIG,
105
- ...TRANSPORTS
106
- ],
107
- patterns: [RENDER_OBSERVER]
108
- })
109
- },
110
- {
111
- files: ["src/infra/server/configureServerErrors/index.ts"],
112
- rules: imports({ paths: [SAFE_ERRORS, ...TRANSPORTS] })
113
- },
114
- {
115
- files: [
116
- "src/**/*.test.{ts,tsx,mts,cts,js,jsx,mjs,cjs}",
117
- "src/**/*.test-d.{ts,tsx}",
118
- "src/**/*.d.{ts,mts,cts}"
119
- ],
120
- rules: {
121
- "backend/static-solid-imports": "off",
122
- "backend/static-render-integrity-imports": "off",
123
- "eslint/no-console": "off",
124
- "eslint/no-restricted-globals": "off",
125
- "eslint/no-restricted-properties": "off",
126
- ...imports({ paths: [] })
127
- }
128
- }
129
- ];
130
- // src/lint/rules/environment.ts
131
- const environmentRules = {
132
- "architecture/layer-imports": "error",
133
- "project/css-modules-import": "error",
134
- "project/css-filename": "error",
135
- "project/test-filename": "error",
136
- "project/no-export-list": "error",
137
- "project/seo-module": "error",
138
- "jsx-a11y/alt-text": "error",
139
- "jsx-a11y/anchor-ambiguous-text": "error",
140
- "jsx-a11y/anchor-has-content": "error",
141
- "jsx-a11y/anchor-is-valid": "error",
142
- "jsx-a11y/aria-activedescendant-has-tabindex": "error",
143
- "jsx-a11y/aria-props": "error",
144
- "jsx-a11y/aria-proptypes": "error",
145
- "jsx-a11y/aria-role": "error",
146
- "jsx-a11y/aria-unsupported-elements": "error",
147
- "jsx-a11y/autocomplete-valid": "error",
148
- "jsx-a11y/click-events-have-key-events": "error",
149
- "jsx-a11y/control-has-associated-label": "error",
150
- "jsx-a11y/heading-has-content": "error",
151
- "jsx-a11y/html-has-lang": "error",
152
- "jsx-a11y/iframe-has-title": "error",
153
- "jsx-a11y/img-redundant-alt": "error",
154
- "jsx-a11y/interactive-supports-focus": "error",
155
- "jsx-a11y/label-has-associated-control": "error",
156
- "jsx-a11y/lang": "error",
157
- "jsx-a11y/media-has-caption": "error",
158
- "jsx-a11y/mouse-events-have-key-events": "error",
159
- "jsx-a11y/no-access-key": "error",
160
- "jsx-a11y/no-aria-hidden-on-focusable": "error",
161
- "jsx-a11y/no-autofocus": "error",
162
- "jsx-a11y/no-distracting-elements": "error",
163
- "jsx-a11y/no-interactive-element-to-noninteractive-role": "error",
164
- "jsx-a11y/no-noninteractive-element-interactions": "error",
165
- "jsx-a11y/no-noninteractive-element-to-interactive-role": "error",
166
- "jsx-a11y/no-noninteractive-tabindex": "error",
167
- "jsx-a11y/no-redundant-roles": "error",
168
- "jsx-a11y/no-static-element-interactions": "error",
169
- "jsx-a11y/prefer-tag-over-role": "error",
170
- "jsx-a11y/role-has-required-aria-props": "error",
171
- "jsx-a11y/role-supports-aria-props": "error",
172
- "jsx-a11y/scope": "error",
173
- "jsx-a11y/tabindex-no-positive": "error",
174
- "node/callback-return": "error",
175
- "node/exports-style": "error",
176
- "node/global-require": "error",
177
- "node/handle-callback-err": "error",
178
- "node/no-exports-assign": "error",
179
- "node/no-mixed-requires": "error",
180
- "node/no-new-require": "error",
181
- "node/no-path-concat": "error",
182
- "node/no-process-env": "error",
183
- "node/no-sync": "error",
184
- "oxc/approx-constant": "error",
185
- "oxc/bad-array-method-on-arguments": "error",
186
- "oxc/bad-bitwise-operator": "error",
187
- "oxc/bad-char-at-comparison": "error",
188
- "oxc/bad-comparison-sequence": "error",
189
- "oxc/bad-match-all-arg": "error",
190
- "oxc/bad-min-max-func": "error",
191
- "oxc/bad-object-literal-comparison": "error",
192
- "oxc/bad-replace-all-arg": "error",
193
- "oxc/branches-sharing-code": "error",
194
- "oxc/const-comparisons": "error",
195
- "oxc/double-comparisons": "error",
196
- "oxc/erasing-op": "error",
197
- "oxc/misrefactored-assign-op": "error",
198
- "oxc/missing-throw": "error",
199
- "oxc/no-accumulating-spread": "error",
200
- "oxc/no-async-endpoint-handlers": "error",
201
- "oxc/no-barrel-file": "error",
202
- "oxc/no-const-enum": "error",
203
- "oxc/no-map-spread": "error",
204
- "oxc/no-this-in-exported-function": "error",
205
- "oxc/number-arg-out-of-range": "error",
206
- "oxc/only-used-in-recursion": "error",
207
- "oxc/uninvoked-array-callback": "error",
208
- "paraglide/no-dynamic-message-access": ["error", { messageModules: ["@paraglide/messages.js", "@paraglide/messages/_index.js"] }],
209
- "promise/always-return": "error",
210
- "promise/avoid-new": "error",
211
- "promise/catch-or-return": ["error", {
212
- allowThen: true,
213
- allowFinally: true
214
- }],
215
- "promise/no-callback-in-promise": "error",
216
- "promise/no-multiple-resolved": "error",
217
- "promise/no-nesting": "error",
218
- "promise/no-new-statics": "error",
219
- "promise/no-promise-in-callback": "error",
220
- "promise/no-return-in-finally": "error",
221
- "promise/no-return-wrap": "error",
222
- "promise/param-names": "error",
223
- "promise/prefer-await-to-callbacks": "error",
224
- "promise/prefer-await-to-then": ["error", { strict: true }],
225
- "promise/prefer-catch": "error",
226
- "promise/spec-only": "error",
227
- "promise/valid-params": "error",
228
- "solid/action-yield-after-await": "error",
229
- "solid/components-return-once": "warn",
230
- "solid/event-handlers": "error",
231
- "solid/imports": "warn",
232
- "solid/jsx-no-duplicate-props": "error",
233
- "solid/jsx-no-script-url": "error",
234
- "solid/jsx-no-undef": ["error", { typescriptEnabled: true }],
235
- "solid/jsx-uses-vars": "error",
236
- "solid/no-accessor-as-prop": "error",
237
- "solid/no-boolean-enumerated-attribute": "error",
238
- "solid/no-browser-globals-in-server-function": "error",
239
- "solid/no-destructure": "error",
240
- "solid/no-innerhtml": "error",
241
- "solid/no-invalid-server-capture": "error",
242
- "solid/no-module-scope-reactive-primitive": "error",
243
- "solid/no-react-specific-props": "error",
244
- "solid/no-restated-default-options": "error",
245
- "solid/no-single-arg-create-effect": "error",
246
- "solid/no-store-mutation-outside-setter": "error",
247
- "solid/no-unassigned-vars": "error",
248
- "solid/no-unknown-namespaces": "error",
249
- "solid/no-unused-signal": "error",
250
- "solid/no-write-in-pure-computation": "error",
251
- "solid/prefer-for": "error",
252
- "solid/prefer-onSettled-for-side-effects": "warn",
253
- "solid/prefer-structured-class": "error",
254
- "solid/reactivity": "warn",
255
- "solid/removed-api": "error",
256
- "solid/require-async-server-function": "error",
257
- "solid/self-closing-comp": "warn",
258
- "solid/style-prop": "warn",
259
- "solid/valid-use-server": "error",
260
- "solid/validate-jsx-nesting": "error",
261
- "vite-plus/prefer-vite-plus-imports": "error"
262
- };
263
- // src/lint/rules/imports.ts
264
- const importRules = {
265
- "import/consistent-type-specifier-style": ["error", "prefer-top-level-if-only-type-imports"],
266
- "import/default": "error",
267
- "import/export": "error",
268
- "import/exports-last": "error",
269
- "import/extensions": ["error", "ignorePackages"],
270
- "import/first": "error",
271
- "import/named": "error",
272
- "import/namespace": "error",
273
- "import/newline-after-import": "error",
274
- "import/no-absolute-path": "error",
275
- "import/no-amd": "error",
276
- "import/no-anonymous-default-export": "error",
277
- "import/no-commonjs": "error",
278
- "import/no-cycle": "error",
279
- "import/no-duplicates": ["error", { preferInline: true }],
280
- "import/no-dynamic-require": "error",
281
- "import/no-empty-named-blocks": "error",
282
- "import/no-mutable-exports": "error",
283
- "import/no-named-as-default": "error",
284
- "import/no-named-as-default-member": "error",
285
- "import/no-named-default": "error",
286
- "import/no-namespace": ["error", { ignore: ["valibot"] }],
287
- "import/no-nodejs-modules": "error",
288
- "import/no-self-import": "error",
289
- "import/no-unassigned-import": ["error", { allow: ["**/*.css"] }],
290
- "import/no-webpack-loader-syntax": "error",
291
- "import/unambiguous": "error"
292
- };
293
- // src/lint/rules/javascript.ts
294
- const javascriptRules = {
295
- "eslint/accessor-pairs": "error",
296
- "eslint/array-callback-return": "error",
297
- "eslint/arrow-body-style": ["error", "as-needed"],
298
- "eslint/block-scoped-var": "error",
299
- "eslint/complexity": ["error", { max: 20 }],
300
- "eslint/constructor-super": "error",
301
- "eslint/curly": ["error", "multi-line"],
302
- "eslint/default-case-last": "error",
303
- "eslint/default-param-last": "error",
304
- "eslint/eqeqeq": ["error", "always"],
305
- "eslint/for-direction": "error",
306
- "eslint/func-names": ["error", "always"],
307
- "eslint/getter-return": "error",
308
- "eslint/grouped-accessor-pairs": "error",
309
- "eslint/guard-for-in": "error",
310
- "eslint/logical-assignment-operators": [
311
- "error",
312
- "always",
313
- { enforceForIfStatements: true }
314
- ],
315
- "eslint/max-depth": ["error", { max: 4 }],
316
- "eslint/max-lines": ["warn", {
317
- max: 800,
318
- skipBlankLines: true,
319
- skipComments: true
320
- }],
321
- "eslint/max-lines-per-function": ["warn", {
322
- max: 200,
323
- skipBlankLines: true,
324
- skipComments: true
325
- }],
326
- "eslint/max-nested-callbacks": ["warn", { max: 3 }],
327
- "eslint/max-params": ["error", { max: 2 }],
328
- "eslint/no-array-constructor": "error",
329
- "eslint/no-async-promise-executor": "error",
330
- "eslint/no-caller": "error",
331
- "eslint/no-case-declarations": "error",
332
- "eslint/no-class-assign": "error",
333
- "eslint/no-compare-neg-zero": "error",
334
- "eslint/no-cond-assign": "error",
335
- "eslint/no-console": ["warn", { allow: ["warn", "error"] }],
336
- "eslint/no-const-assign": "error",
337
- "eslint/no-constant-binary-expression": "error",
338
- "eslint/no-constant-condition": "error",
339
- "eslint/no-constructor-return": "error",
340
- "eslint/no-control-regex": "error",
341
- "eslint/no-debugger": "error",
342
- "eslint/no-delete-var": "error",
343
- "eslint/no-div-regex": "error",
344
- "eslint/no-dupe-class-members": "error",
345
- "eslint/no-dupe-else-if": "error",
346
- "eslint/no-dupe-keys": "error",
347
- "eslint/no-duplicate-case": "error",
348
- "eslint/no-else-return": "error",
349
- "eslint/no-empty": ["error", { allowEmptyCatch: false }],
350
- "eslint/no-empty-character-class": "error",
351
- "eslint/no-empty-function": "error",
352
- "eslint/no-empty-pattern": "error",
353
- "eslint/no-empty-static-block": "error",
354
- "eslint/no-eq-null": "error",
355
- "eslint/no-eval": "error",
356
- "eslint/no-ex-assign": "error",
357
- "eslint/no-extend-native": "error",
358
- "eslint/no-extra-bind": "error",
359
- "eslint/no-extra-boolean-cast": "error",
360
- "eslint/no-extra-label": "error",
361
- "eslint/no-fallthrough": "error",
362
- "eslint/no-func-assign": "error",
363
- "eslint/no-global-assign": "error",
364
- "eslint/no-implicit-coercion": "error",
365
- "eslint/no-implicit-globals": "error",
366
- "eslint/no-implied-eval": "error",
367
- "eslint/no-import-assign": "error",
368
- "eslint/no-inline-comments": "error",
369
- "eslint/no-inner-declarations": "error",
370
- "eslint/no-invalid-regexp": "error",
371
- "eslint/no-irregular-whitespace": "error",
372
- "eslint/no-iterator": "error",
373
- "eslint/no-label-var": "error",
374
- "eslint/no-labels": "error",
375
- "eslint/no-lone-blocks": "error",
376
- "eslint/no-lonely-if": "error",
377
- "eslint/no-loop-func": "error",
378
- "eslint/no-loss-of-precision": "error",
379
- "eslint/no-magic-numbers": ["error", {
380
- ignore: [
381
- -1,
382
- 0,
383
- 1
384
- ],
385
- ignoreNumericLiteralTypes: true,
386
- ignoreDefaultValues: true,
387
- ignoreArrayIndexes: true
388
- }],
389
- "eslint/no-misleading-character-class": "error",
390
- "eslint/no-multi-assign": "error",
391
- "eslint/no-multi-str": "error",
392
- "eslint/no-negated-condition": "error",
393
- "eslint/no-nested-ternary": "error",
394
- "eslint/no-new": "error",
395
- "eslint/no-new-func": "error",
396
- "eslint/no-new-native-nonconstructor": "error",
397
- "eslint/no-new-wrappers": "error",
398
- "eslint/no-nonoctal-decimal-escape": "error",
399
- "eslint/no-obj-calls": "error",
400
- "eslint/no-object-constructor": "error",
401
- "eslint/no-param-reassign": "error",
402
- "eslint/no-plusplus": "error",
403
- "eslint/no-promise-executor-return": "error",
404
- "eslint/no-proto": "error",
405
- "eslint/no-prototype-builtins": "error",
406
- "eslint/no-redeclare": "error",
407
- "eslint/no-regex-spaces": "error",
408
- "eslint/no-restricted-imports": ["error", { patterns: [RELATIVE_IMPORT_RESTRICTION] }],
409
- "eslint/no-return-assign": "error",
410
- "eslint/no-script-url": "error",
411
- "eslint/no-self-assign": "error",
412
- "eslint/no-self-compare": "error",
413
- "eslint/no-sequences": "error",
414
- "eslint/no-setter-return": "error",
415
- "eslint/no-shadow": "error",
416
- "eslint/no-shadow-restricted-names": "error",
417
- "eslint/no-sparse-arrays": "error",
418
- "eslint/no-template-curly-in-string": "error",
419
- "eslint/no-this-before-super": "error",
420
- "eslint/no-throw-literal": "error",
421
- "eslint/no-undef": "error",
422
- "eslint/no-underscore-dangle": "error",
423
- "eslint/no-unexpected-multiline": "error",
424
- "eslint/no-unmodified-loop-condition": "error",
425
- "eslint/no-unneeded-ternary": "error",
426
- "eslint/no-unreachable": "error",
427
- "eslint/no-unreachable-loop": "error",
428
- "eslint/no-unsafe-finally": "error",
429
- "eslint/no-unsafe-negation": "error",
430
- "eslint/no-unsafe-optional-chaining": "error",
431
- "eslint/no-unused-expressions": "error",
432
- "eslint/no-unused-labels": "error",
433
- "eslint/no-unused-private-class-members": "error",
434
- "eslint/no-unused-vars": "error",
435
- "eslint/no-use-before-define": "error",
436
- "eslint/no-useless-assignment": "error",
437
- "eslint/no-useless-backreference": "error",
438
- "eslint/no-useless-call": "error",
439
- "eslint/no-useless-catch": "error",
440
- "eslint/no-useless-computed-key": "error",
441
- "eslint/no-useless-concat": "error",
442
- "eslint/no-useless-constructor": "error",
443
- "eslint/no-useless-escape": "error",
444
- "eslint/no-useless-rename": "error",
445
- "eslint/no-useless-return": "error",
446
- "eslint/no-var": "error",
447
- "eslint/no-with": "error",
448
- "eslint/object-shorthand": "error",
449
- "eslint/operator-assignment": "error",
450
- "eslint/prefer-arrow-callback": ["error", {
451
- allowNamedFunctions: true,
452
- allowUnboundThis: true
453
- }],
454
- "eslint/prefer-const": "error",
455
- "eslint/prefer-destructuring": "error",
456
- "eslint/prefer-exponentiation-operator": "error",
457
- "eslint/prefer-named-capture-group": "error",
458
- "eslint/prefer-numeric-literals": "error",
459
- "eslint/prefer-object-has-own": "error",
460
- "eslint/prefer-object-spread": "error",
461
- "eslint/prefer-promise-reject-errors": "error",
462
- "eslint/prefer-regex-literals": "error",
463
- "eslint/prefer-rest-params": "error",
464
- "eslint/prefer-spread": "error",
465
- "eslint/prefer-template": "error",
466
- "eslint/preserve-caught-error": "error",
467
- "eslint/radix": "error",
468
- "eslint/require-unicode-regexp": "error",
469
- "eslint/require-yield": "error",
470
- "eslint/symbol-description": "error",
471
- "eslint/unicode-bom": "error",
472
- "eslint/use-isnan": "error",
473
- "eslint/valid-typeof": "error",
474
- "eslint/vars-on-top": "error",
475
- "eslint/yoda": "error"
476
- };
477
- // src/lint/rules/testing.ts
478
- const testRules = {
479
- "vitest/consistent-each-for": "error",
480
- "vitest/consistent-test-filename": "error",
481
- "vitest/consistent-test-it": ["error", { fn: "it" }],
482
- "vitest/consistent-vitest-vi": "error",
483
- "vitest/expect-expect": "error",
484
- "vitest/hoisted-apis-on-top": "error",
485
- "vitest/max-expects": "error",
486
- "vitest/max-nested-describe": "error",
487
- "vitest/no-alias-methods": "error",
488
- "vitest/no-commented-out-tests": "error",
489
- "vitest/no-conditional-expect": "error",
490
- "vitest/no-conditional-tests": "error",
491
- "vitest/no-disabled-tests": "error",
492
- "vitest/no-duplicate-hooks": "error",
493
- "vitest/no-focused-tests": "error",
494
- "vitest/no-identical-title": "error",
495
- "vitest/no-import-node-test": "error",
496
- "vitest/no-interpolation-in-snapshots": "error",
497
- "vitest/no-large-snapshots": "error",
498
- "vitest/no-mocks-import": "error",
499
- "vitest/no-standalone-expect": "error",
500
- "vitest/no-test-prefixes": "error",
501
- "vitest/no-test-return-statement": "error",
502
- "vitest/no-unneeded-async-expect-function": "error",
503
- "vitest/padding-around-after-all-blocks": "error",
504
- "vitest/padding-around-test-blocks": "error",
505
- "vitest/prefer-called-exactly-once-with": "error",
506
- "vitest/prefer-called-once": "error",
507
- "vitest/prefer-called-with": "error",
508
- "vitest/prefer-comparison-matcher": "error",
509
- "vitest/prefer-describe-function-title": "error",
510
- "vitest/prefer-each": "error",
511
- "vitest/prefer-equality-matcher": "error",
512
- "vitest/prefer-expect-resolves": "error",
513
- "vitest/prefer-expect-type-of": "error",
514
- "vitest/prefer-hooks-in-order": "error",
515
- "vitest/prefer-hooks-on-top": "error",
516
- "vitest/prefer-import-in-mock": "error",
517
- "vitest/prefer-lowercase-title": ["error", { allowedPrefixes: [
518
- "API",
519
- "CSP",
520
- "CSS",
521
- "DOM",
522
- "HTML",
523
- "HTTP",
524
- "JSON",
525
- "SEO",
526
- "SSR",
527
- "URL"
528
- ] }],
529
- "vitest/prefer-mock-promise-shorthand": "error",
530
- "vitest/prefer-mock-return-shorthand": "error",
531
- "vitest/prefer-snapshot-hint": "error",
532
- "vitest/prefer-spy-on": "error",
533
- "vitest/prefer-strict-boolean-matchers": "error",
534
- "vitest/prefer-strict-equal": "error",
535
- "vitest/prefer-to-be": "error",
536
- "vitest/prefer-to-be-object": "error",
537
- "vitest/prefer-to-contain": "error",
538
- "vitest/prefer-to-have-been-called-times": "error",
539
- "vitest/prefer-to-have-length": "error",
540
- "vitest/prefer-todo": "error",
541
- "vitest/require-awaited-expect-poll": "error",
542
- "vitest/require-local-test-context-for-concurrent-snapshots": "error",
543
- "vitest/require-mock-type-parameters": "error",
544
- "vitest/require-to-throw-message": "error",
545
- "vitest/require-top-level-describe": "error",
546
- "vitest/valid-describe-callback": "error",
547
- "vitest/valid-expect": "error",
548
- "vitest/valid-expect-in-promise": "error",
549
- "vitest/valid-title": "error",
550
- "vitest/warn-todo": "error"
551
- };
552
- // src/lint/rules/typescript.ts
553
- const typescriptRules = {
554
- "typescript/adjacent-overload-signatures": "error",
555
- "typescript/array-type": "error",
556
- "typescript/await-thenable": "error",
557
- "typescript/ban-ts-comment": "error",
558
- "typescript/ban-tslint-comment": "error",
559
- "typescript/ban-types": "error",
560
- "typescript/class-literal-property-style": "error",
561
- "typescript/consistent-generic-constructors": "error",
562
- "typescript/consistent-indexed-object-style": "error",
563
- "typescript/consistent-return": "error",
564
- "typescript/consistent-type-assertions": "error",
565
- "typescript/consistent-type-definitions": ["error", "type"],
566
- "typescript/consistent-type-exports": "error",
567
- "typescript/consistent-type-imports": ["error", {
568
- prefer: "type-imports",
569
- fixStyle: "inline-type-imports"
570
- }],
571
- "typescript/dot-notation": "error",
572
- "typescript/explicit-member-accessibility": "error",
573
- "typescript/explicit-module-boundary-types": "error",
574
- "typescript/method-signature-style": "error",
575
- "typescript/no-array-delete": "error",
576
- "typescript/no-base-to-string": "error",
577
- "typescript/no-confusing-non-null-assertion": "error",
578
- "typescript/no-confusing-void-expression": ["error", { ignoreArrowShorthand: true }],
579
- "typescript/no-deprecated": "error",
580
- "typescript/no-duplicate-enum-values": "error",
581
- "typescript/no-duplicate-type-constituents": "error",
582
- "typescript/no-dynamic-delete": "error",
583
- "typescript/no-empty-interface": "error",
584
- "typescript/no-empty-object-type": "error",
585
- "typescript/no-explicit-any": "error",
586
- "typescript/no-extra-non-null-assertion": "error",
587
- "typescript/no-extraneous-class": "error",
588
- "typescript/no-floating-promises": "error",
589
- "typescript/no-for-in-array": "error",
590
- "typescript/no-implied-eval": "error",
591
- "typescript/no-import-type-side-effects": "error",
592
- "typescript/no-inferrable-types": "error",
593
- "typescript/no-invalid-void-type": "error",
594
- "typescript/no-meaningless-void-operator": "error",
595
- "typescript/no-misused-new": "error",
596
- "typescript/no-misused-promises": ["error", { checksVoidReturn: { attributes: false } }],
597
- "typescript/no-misused-spread": "error",
598
- "typescript/no-mixed-enums": "error",
599
- "typescript/no-namespace": "error",
600
- "typescript/no-non-null-asserted-nullish-coalescing": "error",
601
- "typescript/no-non-null-asserted-optional-chain": "error",
602
- "typescript/no-non-null-assertion": "error",
603
- "typescript/no-redundant-type-constituents": "error",
604
- "typescript/no-require-imports": "error",
605
- "typescript/no-this-alias": "error",
606
- "typescript/no-unnecessary-boolean-literal-compare": "error",
607
- "typescript/no-unnecessary-condition": "error",
608
- "typescript/no-unnecessary-parameter-property-assignment": "error",
609
- "typescript/no-unnecessary-qualifier": "error",
610
- "typescript/no-unnecessary-template-expression": "error",
611
- "typescript/no-unnecessary-type-arguments": "error",
612
- "typescript/no-unnecessary-type-assertion": "error",
613
- "typescript/no-unnecessary-type-constraint": "error",
614
- "typescript/no-unnecessary-type-conversion": "error",
615
- "typescript/no-unnecessary-type-parameters": "error",
616
- "typescript/no-unsafe-argument": "error",
617
- "typescript/no-unsafe-assignment": "error",
618
- "typescript/no-unsafe-call": "error",
619
- "typescript/no-unsafe-declaration-merging": "error",
620
- "typescript/no-unsafe-enum-comparison": "error",
621
- "typescript/no-unsafe-function-type": "error",
622
- "typescript/no-unsafe-member-access": "error",
623
- "typescript/no-unsafe-return": "error",
624
- "typescript/no-unsafe-type-assertion": "error",
625
- "typescript/no-unsafe-unary-minus": "error",
626
- "typescript/no-useless-default-assignment": "error",
627
- "typescript/no-useless-empty-export": "error",
628
- "typescript/no-var-requires": "error",
629
- "typescript/no-wrapper-object-types": "error",
630
- "typescript/non-nullable-type-assertion-style": "error",
631
- "typescript/only-throw-error": "error",
632
- "typescript/parameter-properties": "error",
633
- "typescript/prefer-as-const": "error",
634
- "typescript/prefer-enum-initializers": "error",
635
- "typescript/prefer-find": "error",
636
- "typescript/prefer-for-of": "error",
637
- "typescript/prefer-function-type": "error",
638
- "typescript/prefer-includes": "error",
639
- "typescript/prefer-literal-enum-member": "error",
640
- "typescript/prefer-namespace-keyword": "error",
641
- "typescript/prefer-nullish-coalescing": "error",
642
- "typescript/prefer-optional-chain": "error",
643
- "typescript/prefer-promise-reject-errors": "error",
644
- "typescript/prefer-readonly": "error",
645
- "typescript/prefer-reduce-type-parameter": "error",
646
- "typescript/prefer-regexp-exec": "error",
647
- "typescript/prefer-return-this-type": "error",
648
- "typescript/prefer-string-starts-ends-with": "error",
649
- "typescript/prefer-ts-expect-error": "error",
650
- "typescript/related-getter-setter-pairs": "error",
651
- "typescript/require-array-sort-compare": "error",
652
- "typescript/require-await": "error",
653
- "typescript/restrict-plus-operands": "error",
654
- "typescript/restrict-template-expressions": "error",
655
- "typescript/return-await": "error",
656
- "typescript/strict-boolean-expressions": ["error", {
657
- allowNullableBoolean: true,
658
- allowNullableString: true,
659
- allowNullableNumber: true
660
- }],
661
- "typescript/switch-exhaustiveness-check": "error",
662
- "typescript/triple-slash-reference": "error",
663
- "typescript/unbound-method": "error",
664
- "typescript/unified-signatures": "error",
665
- "typescript/use-unknown-in-catch-callback-variable": "error"
666
- };
667
- // src/lint/rules/unicorn.ts
668
- const unicornRules = {
669
- "unicorn/catch-error-name": "error",
670
- "unicorn/consistent-assert": "error",
671
- "unicorn/consistent-date-clone": "error",
672
- "unicorn/consistent-empty-array-spread": "error",
673
- "unicorn/consistent-existence-index-check": "error",
674
- "unicorn/consistent-function-scoping": "error",
675
- "unicorn/consistent-template-literal-escape": "error",
676
- "unicorn/custom-error-definition": "error",
677
- "unicorn/empty-brace-spaces": "error",
678
- "unicorn/error-message": "error",
679
- "unicorn/escape-case": "error",
680
- "unicorn/explicit-length-check": "error",
681
- "unicorn/explicit-timer-delay": "error",
682
- "unicorn/filename-case": "error",
683
- "unicorn/import-style": "error",
684
- "unicorn/max-nested-calls": "error",
685
- "unicorn/new-for-builtins": "error",
686
- "unicorn/no-abusive-eslint-disable": "error",
687
- "unicorn/no-accessor-recursion": "error",
688
- "unicorn/no-anonymous-default-export": "error",
689
- "unicorn/no-array-callback-reference": "error",
690
- "unicorn/no-array-fill-with-reference-type": "error",
691
- "unicorn/no-array-method-this-argument": "error",
692
- "unicorn/no-array-reduce": "error",
693
- "unicorn/no-array-reverse": "error",
694
- "unicorn/no-array-sort": "error",
695
- "unicorn/no-await-expression-member": "error",
696
- "unicorn/no-await-in-promise-methods": "error",
697
- "unicorn/no-confusing-array-with": "error",
698
- "unicorn/no-console-spaces": "error",
699
- "unicorn/no-document-cookie": "error",
700
- "unicorn/no-empty-file": "error",
701
- "unicorn/no-hex-escape": "error",
702
- "unicorn/no-immediate-mutation": "error",
703
- "unicorn/no-instanceof-array": "error",
704
- "unicorn/no-instanceof-builtins": "error",
705
- "unicorn/no-invalid-fetch-options": "error",
706
- "unicorn/no-invalid-remove-event-listener": "error",
707
- "unicorn/no-length-as-slice-end": "error",
708
- "unicorn/no-lonely-if": "error",
709
- "unicorn/no-magic-array-flat-depth": "error",
710
- "unicorn/no-negation-in-equality-check": "error",
711
- "unicorn/no-new-array": "error",
712
- "unicorn/no-new-buffer": "error",
713
- "unicorn/no-object-as-default-parameter": "error",
714
- "unicorn/no-process-exit": "error",
715
- "unicorn/no-single-promise-in-promise-methods": "error",
716
- "unicorn/no-static-only-class": "error",
717
- "unicorn/no-thenable": "error",
718
- "unicorn/no-this-assignment": "error",
719
- "unicorn/no-typeof-undefined": "error",
720
- "unicorn/no-unnecessary-array-flat-depth": "error",
721
- "unicorn/no-unnecessary-array-splice-count": "error",
722
- "unicorn/no-unnecessary-await": "error",
723
- "unicorn/no-unnecessary-slice-end": "error",
724
- "unicorn/no-unreadable-array-destructuring": "error",
725
- "unicorn/no-unreadable-iife": "error",
726
- "unicorn/no-useless-collection-argument": "error",
727
- "unicorn/no-useless-error-capture-stack-trace": "error",
728
- "unicorn/no-useless-fallback-in-spread": "error",
729
- "unicorn/no-useless-iterator-to-array": "error",
730
- "unicorn/no-useless-length-check": "error",
731
- "unicorn/no-useless-promise-resolve-reject": "error",
732
- "unicorn/no-useless-spread": "error",
733
- "unicorn/no-useless-switch-case": "error",
734
- "unicorn/no-useless-undefined": "error",
735
- "unicorn/no-zero-fractions": "error",
736
- "unicorn/number-literal-case": "error",
737
- "unicorn/numeric-separators-style": "error",
738
- "unicorn/prefer-add-event-listener": "error",
739
- "unicorn/prefer-array-find": "error",
740
- "unicorn/prefer-array-flat": "error",
741
- "unicorn/prefer-array-flat-map": "error",
742
- "unicorn/prefer-array-index-of": "error",
743
- "unicorn/prefer-array-some": "error",
744
- "unicorn/prefer-at": "error",
745
- "unicorn/prefer-bigint-literals": "error",
746
- "unicorn/prefer-blob-reading-methods": "error",
747
- "unicorn/prefer-class-fields": "error",
748
- "unicorn/prefer-classlist-toggle": "error",
749
- "unicorn/prefer-code-point": "error",
750
- "unicorn/prefer-date-now": "error",
751
- "unicorn/prefer-default-parameters": "error",
752
- "unicorn/prefer-dom-node-append": "error",
753
- "unicorn/prefer-dom-node-dataset": "error",
754
- "unicorn/prefer-dom-node-remove": "error",
755
- "unicorn/prefer-dom-node-text-content": "error",
756
- "unicorn/prefer-event-target": "error",
757
- "unicorn/prefer-export-from": "error",
758
- "unicorn/prefer-global-this": "error",
759
- "unicorn/prefer-import-meta-properties": "error",
760
- "unicorn/prefer-includes": "error",
761
- "unicorn/prefer-keyboard-event-key": "error",
762
- "unicorn/prefer-logical-operator-over-ternary": "error",
763
- "unicorn/prefer-math-min-max": "error",
764
- "unicorn/prefer-math-trunc": "error",
765
- "unicorn/prefer-modern-dom-apis": "error",
766
- "unicorn/prefer-modern-math-apis": "error",
767
- "unicorn/prefer-module": "error",
768
- "unicorn/prefer-native-coercion-functions": "error",
769
- "unicorn/prefer-negative-index": "error",
770
- "unicorn/prefer-node-protocol": "error",
771
- "unicorn/prefer-number-coercion": "error",
772
- "unicorn/prefer-number-properties": "error",
773
- "unicorn/prefer-object-from-entries": "error",
774
- "unicorn/prefer-optional-catch-binding": "error",
775
- "unicorn/prefer-prototype-methods": "error",
776
- "unicorn/prefer-query-selector": "error",
777
- "unicorn/prefer-reflect-apply": "error",
778
- "unicorn/prefer-regexp-test": "error",
779
- "unicorn/prefer-response-static-json": "error",
780
- "unicorn/prefer-set-has": "error",
781
- "unicorn/prefer-set-size": "error",
782
- "unicorn/prefer-single-call": "error",
783
- "unicorn/prefer-spread": "error",
784
- "unicorn/prefer-string-raw": "error",
785
- "unicorn/prefer-string-replace-all": "error",
786
- "unicorn/prefer-string-slice": "error",
787
- "unicorn/prefer-string-starts-ends-with": "error",
788
- "unicorn/prefer-string-trim-start-end": "error",
789
- "unicorn/prefer-structured-clone": "error",
790
- "unicorn/prefer-ternary": "error",
791
- "unicorn/prefer-top-level-await": "error",
792
- "unicorn/prefer-type-error": "error",
793
- "unicorn/relative-url-style": "error",
794
- "unicorn/require-array-join-separator": "error",
795
- "unicorn/require-module-attributes": "error",
796
- "unicorn/require-module-specifiers": "error",
797
- "unicorn/require-number-to-fixed-digits-argument": "error",
798
- "unicorn/require-post-message-target-origin": "error",
799
- "unicorn/switch-case-braces": "error",
800
- "unicorn/switch-case-break-position": "error",
801
- "unicorn/text-encoding-identifier-case": "error",
802
- "unicorn/throw-new-error": "error"
803
- };
804
- // src/lint.ts
805
- const TEST_FILES = [
806
- "**/*.test.{ts,tsx}",
807
- "**/*.test-d.{ts,tsx}",
808
- "**/tests/**"
809
- ];
810
- const lint = {
811
- ignorePatterns: [
812
- "public/**",
813
- "src/assets/**",
814
- "src/@types/routes.d.ts",
815
- ".agents/**",
816
- ".claude/**"
817
- ],
818
- categories: {
819
- correctness: "off",
820
- nursery: "off",
821
- pedantic: "off",
822
- perf: "off",
823
- restriction: "off",
824
- style: "off",
825
- suspicious: "off"
826
- },
827
- jsPlugins: [
828
- {
829
- name: "project",
830
- specifier: "@evertondgn/solid-tooling/project-plugin"
831
- },
832
- {
833
- name: "backend",
834
- specifier: "@evertondgn/solid-tooling/backend-plugin"
835
- },
836
- {
837
- name: "architecture",
838
- specifier: "@evertondgn/solid-tooling/architecture-plugin"
839
- },
840
- {
841
- name: "paraglide",
842
- specifier: "@inlang/paraglide-js/eslint"
843
- },
844
- {
845
- name: "solid",
846
- specifier: "@evertondgn/solid-tooling/solid-plugin"
847
- },
848
- {
849
- name: "vite-plus",
850
- specifier: "vite-plus/oxlint-plugin"
851
- }
852
- ],
853
- options: {
854
- typeAware: true,
855
- typeCheck: true,
856
- denyWarnings: true,
857
- reportUnusedDisableDirectives: "error"
858
- },
859
- overrides: [
860
- ...backendPolicy,
861
- {
862
- files: ["src/infra/server/**/index.ts"],
863
- rules: { "import/no-unassigned-import": ["error", { allow: ["server-only"] }] }
864
- },
865
- {
866
- files: [
867
- "src/**/*.node.test.{ts,tsx}",
868
- "src/tests/pages/**/*.e2e.test.ts",
869
- "src/tests/helpers/readSiteOrigin/index.ts",
870
- "src/tests/fixtures/e2e/routes/publication-probe/metrics.ts",
871
- "src/infra/server/publicationScope/index.ts"
872
- ],
873
- rules: { "import/no-nodejs-modules": "off" }
874
- },
875
- {
876
- files: [
877
- "src/**/*.test.{ts,tsx}",
878
- "src/**/*.test-d.{ts,tsx}",
879
- "tooling/**/*.test.ts"
880
- ],
881
- rules: { "unicorn/filename-case": "off" }
882
- },
883
- {
884
- files: [
885
- "src/**/*.test.{ts,tsx}",
886
- "src/tests/**/*.{ts,tsx}",
887
- "tooling/**/__tests__/**/*.ts",
888
- "tooling/i18n/i18nPlugin/index.ts",
889
- "vite.config.ts"
890
- ],
891
- rules: { "eslint/max-params": "off" }
892
- },
893
- {
894
- files: ["src/@types/icons.d.ts"],
895
- rules: { "import/unambiguous": "off" }
896
- },
897
- {
898
- files: ["src/**/*.tsx"],
899
- rules: { "typescript/explicit-module-boundary-types": "off" }
900
- },
901
- {
902
- files: [
903
- "src/@types/solid.d.ts",
904
- "src/@types/env.d.ts",
905
- "src/@types/router.d.ts"
906
- ],
907
- rules: {
908
- "import/no-unassigned-import": "off",
909
- "typescript/consistent-type-definitions": "off"
910
- }
911
- },
912
- {
913
- files: TEST_FILES,
914
- rules: {
915
- "eslint/no-empty": "off",
916
- "vitest/require-hook": "error"
917
- }
918
- },
919
- {
920
- files: ["tooling/**/*.ts"],
921
- rules: { "vitest/no-import-node-test": "off" }
922
- },
923
- {
924
- files: ["tooling/**/__tests__/**/*.ts"],
925
- rules: {
926
- "typescript/no-floating-promises": ["error", { allowForKnownSafeCalls: [{
927
- from: "package",
928
- package: "node:test",
929
- name: [
930
- "describe",
931
- "it",
932
- "test",
933
- "suite"
934
- ]
935
- }] }],
936
- "vitest/prefer-each": "off"
937
- }
938
- },
939
- {
940
- files: ["src/tests/pages/**/*.e2e.test.ts"],
941
- rules: { "vitest/prefer-each": "off" }
942
- },
943
- {
944
- files: ["**/*.{ts,tsx,mts,cts}"],
945
- rules: { "eslint/no-undef": "off" }
946
- },
947
- {
948
- files: ["vite.config.ts", "tooling/**/*.ts"],
949
- rules: { "import/no-nodejs-modules": "off" }
950
- },
951
- {
952
- files: ["src/App.tsx", "src/Document.tsx"],
953
- rules: { "unicorn/filename-case": "off" }
954
- },
955
- {
956
- files: ["src/tests/fixtures/e2e/middleware/index.ts", "src/middleware/localizeRequest/index.ts"],
957
- rules: { "node/callback-return": "off" }
958
- }
959
- ],
960
- plugins: [
961
- "import",
962
- "jsx-a11y",
963
- "node",
964
- "oxc",
965
- "promise",
966
- "typescript",
967
- "unicorn",
968
- "vitest"
969
- ],
970
- rules: {
971
- ...environmentRules,
972
- ...javascriptRules,
973
- ...importRules,
974
- ...typescriptRules,
975
- ...unicornRules,
976
- ...testRules
977
- },
978
- settings: {
979
- "jsx-a11y": { attributes: { for: ["htmlFor", "for"] } },
980
- solid: { version: 2 }
981
- }
982
- };
983
- export { lint };
1
+ export { t as lint } from "./lint-UTfyg7AR.mjs";