@skapxd/eslint-opinionated 2.0.0 → 4.0.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.
Files changed (56) hide show
  1. package/README.md +67 -2386
  2. package/dist/astro/index.d.mts +52 -45
  3. package/dist/astro/index.d.ts +52 -45
  4. package/dist/astro/index.js +2 -0
  5. package/dist/astro/index.js.map +1 -1
  6. package/dist/astro/index.mjs +2 -2
  7. package/dist/{chunk-33N6EMC2.mjs → chunk-24YEIN4M.mjs} +2 -2
  8. package/dist/chunk-24YEIN4M.mjs.map +1 -0
  9. package/dist/{chunk-S2MDPOWE.mjs → chunk-LHB5QN6B.mjs} +2193 -627
  10. package/dist/chunk-LHB5QN6B.mjs.map +1 -0
  11. package/dist/{chunk-TFVTEI2T.mjs → chunk-SU7QO6Z2.mjs} +17 -1
  12. package/dist/chunk-SU7QO6Z2.mjs.map +1 -0
  13. package/dist/{chunk-FTSYXBE4.mjs → chunk-T6OT6UUF.mjs} +3 -3
  14. package/dist/chunk-T6OT6UUF.mjs.map +1 -0
  15. package/dist/{chunk-HB755SJQ.mjs → chunk-VD2ANSAF.mjs} +1 -1
  16. package/dist/chunk-VD2ANSAF.mjs.map +1 -0
  17. package/dist/{chunk-3LQ4KQP5.mjs → chunk-ZLLDTBKQ.mjs} +2 -2
  18. package/dist/chunk-ZLLDTBKQ.mjs.map +1 -0
  19. package/dist/cli.js +1551 -3366
  20. package/dist/cli.js.map +1 -1
  21. package/dist/cli.mjs +1552 -3367
  22. package/dist/cli.mjs.map +1 -1
  23. package/dist/index.d.mts +1466 -9
  24. package/dist/index.d.ts +1466 -9
  25. package/dist/index.js +2216 -636
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +15 -17
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/nest/index.d.mts +60 -48
  30. package/dist/nest/index.d.ts +60 -48
  31. package/dist/nest/index.js +16 -0
  32. package/dist/nest/index.js.map +1 -1
  33. package/dist/nest/index.mjs +2 -2
  34. package/dist/next/index.d.mts +58 -51
  35. package/dist/next/index.d.ts +58 -51
  36. package/dist/next/index.js +2 -0
  37. package/dist/next/index.js.map +1 -1
  38. package/dist/next/index.mjs +3 -3
  39. package/dist/rules-BI9wL85g.d.ts +68 -0
  40. package/dist/rules-C6E7Lk2q.d.mts +68 -0
  41. package/dist/shared/index.d.mts +149 -118
  42. package/dist/shared/index.d.ts +149 -118
  43. package/dist/shared/index.js +2207 -625
  44. package/dist/shared/index.js.map +1 -1
  45. package/dist/shared/index.mjs +3 -3
  46. package/dist/types-CYktcbmS.d.mts +83 -0
  47. package/dist/types-CYktcbmS.d.ts +83 -0
  48. package/package.json +13 -5
  49. package/dist/chunk-33N6EMC2.mjs.map +0 -1
  50. package/dist/chunk-3LQ4KQP5.mjs.map +0 -1
  51. package/dist/chunk-FTSYXBE4.mjs.map +0 -1
  52. package/dist/chunk-HB755SJQ.mjs.map +0 -1
  53. package/dist/chunk-S2MDPOWE.mjs.map +0 -1
  54. package/dist/chunk-TFVTEI2T.mjs.map +0 -1
  55. package/dist/rules-qISQhAKV.d.mts +0 -5
  56. package/dist/rules-qISQhAKV.d.ts +0 -5
@@ -1,61 +1,68 @@
1
1
  import * as typescript_eslint from 'typescript-eslint';
2
+ import { O as OpinionatedPluginReference } from '../types-CYktcbmS.mjs';
3
+ import 'eslint';
4
+ import '@typescript-eslint/utils';
2
5
 
3
- declare function createAstroConfigs(pluginReference: unknown): ({
6
+ declare function createAstroConfigs(pluginReference: OpinionatedPluginReference): ({
4
7
  files: string[];
5
8
  languageOptions: {
6
9
  parser: typescript_eslint.CompatibleParser;
7
10
  };
8
11
  name: string;
9
12
  plugins: {
10
- skapxd: unknown;
13
+ skapxd: OpinionatedPluginReference;
11
14
  };
12
15
  rules: {
13
- "skapxd/class-properties-require-readonly": string;
14
- "skapxd/max-public-methods": string;
15
- "skapxd/no-accessors": string;
16
- "skapxd/no-ad-hoc-ok-result": string;
17
- "skapxd/no-anonymous-condition": string;
18
- "skapxd/no-deep-relative-imports": string;
19
- "skapxd/no-default-export": string;
20
- "skapxd/no-else": string;
21
- "skapxd/no-emoji": string;
22
- "skapxd/no-nested-if": string;
23
- "skapxd/no-runtime-state-guard": string;
24
- "skapxd/no-promise-chain": string;
25
- "skapxd/no-try-catch": string;
26
- "skapxd/one-root-function-per-file": string;
27
- "skapxd/prefer-tagged-union-state": string;
28
- "skapxd/requires-strict-tsconfig": string;
29
- "skapxd/prefer-ts-pattern": string;
30
- "skapxd/result-error-requires-cause": string;
31
- "skapxd/result-error-requires-handling": string;
16
+ "skapxd/class-properties-require-readonly": "error";
17
+ "skapxd/max-public-methods": "error";
18
+ "skapxd/no-accessors": "error";
19
+ "skapxd/no-ad-hoc-ok-result": "error";
20
+ "skapxd/no-anonymous-condition": "error";
21
+ "skapxd/no-deep-relative-imports": "error";
22
+ "skapxd/no-default-export": "error";
23
+ "skapxd/no-else": "error";
24
+ "skapxd/no-emoji": "error";
25
+ "skapxd/no-nested-if": "error";
26
+ "skapxd/nested-function-requires-capture": "error";
27
+ "skapxd/no-runtime-state-guard": "error";
28
+ "skapxd/no-promise-chain": "error";
29
+ "skapxd/no-try-catch": "error";
30
+ "skapxd/one-root-function-per-file": "error";
31
+ "skapxd/prefer-node-protocol-for-builtins": "error";
32
+ "skapxd/prefer-tagged-union-state": "error";
33
+ "skapxd/requires-strict-tsconfig": "error";
34
+ "skapxd/prefer-ts-pattern": "error";
35
+ "skapxd/result-error-requires-cause": "error";
36
+ "skapxd/result-error-requires-handling": "error";
32
37
  };
33
38
  } | {
34
39
  files: string[];
35
40
  name: string;
36
41
  plugins: {
37
- skapxd: unknown;
42
+ skapxd: OpinionatedPluginReference;
38
43
  };
39
44
  rules: {
40
- "skapxd/class-properties-require-readonly": string;
41
- "skapxd/max-public-methods": string;
42
- "skapxd/no-accessors": string;
43
- "skapxd/no-ad-hoc-ok-result": string;
44
- "skapxd/no-anonymous-condition": string;
45
- "skapxd/no-deep-relative-imports": string;
46
- "skapxd/no-default-export": string;
47
- "skapxd/no-else": string;
48
- "skapxd/no-emoji": string;
49
- "skapxd/no-nested-if": string;
50
- "skapxd/no-runtime-state-guard": string;
51
- "skapxd/no-promise-chain": string;
52
- "skapxd/no-try-catch": string;
53
- "skapxd/one-root-function-per-file": string;
54
- "skapxd/prefer-tagged-union-state": string;
55
- "skapxd/requires-strict-tsconfig": string;
56
- "skapxd/prefer-ts-pattern": string;
57
- "skapxd/result-error-requires-cause": string;
58
- "skapxd/result-error-requires-handling": string;
45
+ "skapxd/class-properties-require-readonly": "error";
46
+ "skapxd/max-public-methods": "error";
47
+ "skapxd/no-accessors": "error";
48
+ "skapxd/no-ad-hoc-ok-result": "error";
49
+ "skapxd/no-anonymous-condition": "error";
50
+ "skapxd/no-deep-relative-imports": "error";
51
+ "skapxd/no-default-export": "error";
52
+ "skapxd/no-else": "error";
53
+ "skapxd/no-emoji": "error";
54
+ "skapxd/no-nested-if": "error";
55
+ "skapxd/nested-function-requires-capture": "error";
56
+ "skapxd/no-runtime-state-guard": "error";
57
+ "skapxd/no-promise-chain": "error";
58
+ "skapxd/no-try-catch": "error";
59
+ "skapxd/one-root-function-per-file": "error";
60
+ "skapxd/prefer-node-protocol-for-builtins": "error";
61
+ "skapxd/prefer-tagged-union-state": "error";
62
+ "skapxd/requires-strict-tsconfig": "error";
63
+ "skapxd/prefer-ts-pattern": "error";
64
+ "skapxd/result-error-requires-cause": "error";
65
+ "skapxd/result-error-requires-handling": "error";
59
66
  };
60
67
  languageOptions?: undefined;
61
68
  } | {
@@ -68,12 +75,12 @@ declare function createAstroConfigs(pluginReference: unknown): ({
68
75
  };
69
76
  name: string;
70
77
  plugins: {
71
- skapxd: unknown;
78
+ skapxd: OpinionatedPluginReference;
72
79
  };
73
80
  rules: {
74
- "skapxd/await-requires-result": string;
75
- "skapxd/result-error-requires-cause": string;
76
- "skapxd/result-error-requires-handling": string;
81
+ "skapxd/await-requires-result": "error";
82
+ "skapxd/result-error-requires-cause": "error";
83
+ "skapxd/result-error-requires-handling": "error";
77
84
  };
78
85
  })[];
79
86
 
@@ -1,61 +1,68 @@
1
1
  import * as typescript_eslint from 'typescript-eslint';
2
+ import { O as OpinionatedPluginReference } from '../types-CYktcbmS.js';
3
+ import 'eslint';
4
+ import '@typescript-eslint/utils';
2
5
 
3
- declare function createAstroConfigs(pluginReference: unknown): ({
6
+ declare function createAstroConfigs(pluginReference: OpinionatedPluginReference): ({
4
7
  files: string[];
5
8
  languageOptions: {
6
9
  parser: typescript_eslint.CompatibleParser;
7
10
  };
8
11
  name: string;
9
12
  plugins: {
10
- skapxd: unknown;
13
+ skapxd: OpinionatedPluginReference;
11
14
  };
12
15
  rules: {
13
- "skapxd/class-properties-require-readonly": string;
14
- "skapxd/max-public-methods": string;
15
- "skapxd/no-accessors": string;
16
- "skapxd/no-ad-hoc-ok-result": string;
17
- "skapxd/no-anonymous-condition": string;
18
- "skapxd/no-deep-relative-imports": string;
19
- "skapxd/no-default-export": string;
20
- "skapxd/no-else": string;
21
- "skapxd/no-emoji": string;
22
- "skapxd/no-nested-if": string;
23
- "skapxd/no-runtime-state-guard": string;
24
- "skapxd/no-promise-chain": string;
25
- "skapxd/no-try-catch": string;
26
- "skapxd/one-root-function-per-file": string;
27
- "skapxd/prefer-tagged-union-state": string;
28
- "skapxd/requires-strict-tsconfig": string;
29
- "skapxd/prefer-ts-pattern": string;
30
- "skapxd/result-error-requires-cause": string;
31
- "skapxd/result-error-requires-handling": string;
16
+ "skapxd/class-properties-require-readonly": "error";
17
+ "skapxd/max-public-methods": "error";
18
+ "skapxd/no-accessors": "error";
19
+ "skapxd/no-ad-hoc-ok-result": "error";
20
+ "skapxd/no-anonymous-condition": "error";
21
+ "skapxd/no-deep-relative-imports": "error";
22
+ "skapxd/no-default-export": "error";
23
+ "skapxd/no-else": "error";
24
+ "skapxd/no-emoji": "error";
25
+ "skapxd/no-nested-if": "error";
26
+ "skapxd/nested-function-requires-capture": "error";
27
+ "skapxd/no-runtime-state-guard": "error";
28
+ "skapxd/no-promise-chain": "error";
29
+ "skapxd/no-try-catch": "error";
30
+ "skapxd/one-root-function-per-file": "error";
31
+ "skapxd/prefer-node-protocol-for-builtins": "error";
32
+ "skapxd/prefer-tagged-union-state": "error";
33
+ "skapxd/requires-strict-tsconfig": "error";
34
+ "skapxd/prefer-ts-pattern": "error";
35
+ "skapxd/result-error-requires-cause": "error";
36
+ "skapxd/result-error-requires-handling": "error";
32
37
  };
33
38
  } | {
34
39
  files: string[];
35
40
  name: string;
36
41
  plugins: {
37
- skapxd: unknown;
42
+ skapxd: OpinionatedPluginReference;
38
43
  };
39
44
  rules: {
40
- "skapxd/class-properties-require-readonly": string;
41
- "skapxd/max-public-methods": string;
42
- "skapxd/no-accessors": string;
43
- "skapxd/no-ad-hoc-ok-result": string;
44
- "skapxd/no-anonymous-condition": string;
45
- "skapxd/no-deep-relative-imports": string;
46
- "skapxd/no-default-export": string;
47
- "skapxd/no-else": string;
48
- "skapxd/no-emoji": string;
49
- "skapxd/no-nested-if": string;
50
- "skapxd/no-runtime-state-guard": string;
51
- "skapxd/no-promise-chain": string;
52
- "skapxd/no-try-catch": string;
53
- "skapxd/one-root-function-per-file": string;
54
- "skapxd/prefer-tagged-union-state": string;
55
- "skapxd/requires-strict-tsconfig": string;
56
- "skapxd/prefer-ts-pattern": string;
57
- "skapxd/result-error-requires-cause": string;
58
- "skapxd/result-error-requires-handling": string;
45
+ "skapxd/class-properties-require-readonly": "error";
46
+ "skapxd/max-public-methods": "error";
47
+ "skapxd/no-accessors": "error";
48
+ "skapxd/no-ad-hoc-ok-result": "error";
49
+ "skapxd/no-anonymous-condition": "error";
50
+ "skapxd/no-deep-relative-imports": "error";
51
+ "skapxd/no-default-export": "error";
52
+ "skapxd/no-else": "error";
53
+ "skapxd/no-emoji": "error";
54
+ "skapxd/no-nested-if": "error";
55
+ "skapxd/nested-function-requires-capture": "error";
56
+ "skapxd/no-runtime-state-guard": "error";
57
+ "skapxd/no-promise-chain": "error";
58
+ "skapxd/no-try-catch": "error";
59
+ "skapxd/one-root-function-per-file": "error";
60
+ "skapxd/prefer-node-protocol-for-builtins": "error";
61
+ "skapxd/prefer-tagged-union-state": "error";
62
+ "skapxd/requires-strict-tsconfig": "error";
63
+ "skapxd/prefer-ts-pattern": "error";
64
+ "skapxd/result-error-requires-cause": "error";
65
+ "skapxd/result-error-requires-handling": "error";
59
66
  };
60
67
  languageOptions?: undefined;
61
68
  } | {
@@ -68,12 +75,12 @@ declare function createAstroConfigs(pluginReference: unknown): ({
68
75
  };
69
76
  name: string;
70
77
  plugins: {
71
- skapxd: unknown;
78
+ skapxd: OpinionatedPluginReference;
72
79
  };
73
80
  rules: {
74
- "skapxd/await-requires-result": string;
75
- "skapxd/result-error-requires-cause": string;
76
- "skapxd/result-error-requires-handling": string;
81
+ "skapxd/await-requires-result": "error";
82
+ "skapxd/result-error-requires-cause": "error";
83
+ "skapxd/result-error-requires-handling": "error";
77
84
  };
78
85
  })[];
79
86
 
@@ -49,10 +49,12 @@ var baseRules = {
49
49
  "skapxd/no-else": "error",
50
50
  "skapxd/no-emoji": "error",
51
51
  "skapxd/no-nested-if": "error",
52
+ "skapxd/nested-function-requires-capture": "error",
52
53
  "skapxd/no-runtime-state-guard": "error",
53
54
  "skapxd/no-promise-chain": "error",
54
55
  "skapxd/no-try-catch": "error",
55
56
  "skapxd/one-root-function-per-file": "error",
57
+ "skapxd/prefer-node-protocol-for-builtins": "error",
56
58
  "skapxd/prefer-tagged-union-state": "error",
57
59
  "skapxd/requires-strict-tsconfig": "error",
58
60
  "skapxd/prefer-ts-pattern": "error",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/astro/index.ts","../../src/shared/configs/base-rules.ts","../../src/shared/configs/create-base-language-options.ts","../../src/shared/configs/create-typed-language-options.ts","../../src/astro/configs.ts"],"sourcesContent":["export { createAstroConfigs } from \"./configs\";\n","export const baseRules = {\n \"skapxd/class-properties-require-readonly\": \"error\",\n \"skapxd/max-public-methods\": \"error\",\n \"skapxd/no-accessors\": \"error\",\n \"skapxd/no-ad-hoc-ok-result\": \"error\",\n // En las bases por decisión del dueño (issue #2): con poca adopción\n // todavía, es el momento de subir la vara; los legacy la apagan en su\n // lista de pendientes (playbook de adopción del README).\n \"skapxd/no-anonymous-condition\": \"error\",\n \"skapxd/no-deep-relative-imports\": \"error\",\n \"skapxd/no-default-export\": \"error\",\n \"skapxd/no-else\": \"error\",\n \"skapxd/no-emoji\": \"error\",\n \"skapxd/no-nested-if\": \"error\",\n \"skapxd/no-runtime-state-guard\": \"error\",\n \"skapxd/no-promise-chain\": \"error\",\n \"skapxd/no-try-catch\": \"error\",\n \"skapxd/one-root-function-per-file\": \"error\",\n \"skapxd/prefer-tagged-union-state\": \"error\",\n \"skapxd/requires-strict-tsconfig\": \"error\",\n \"skapxd/prefer-ts-pattern\": \"error\",\n \"skapxd/result-error-requires-cause\": \"error\",\n \"skapxd/result-error-requires-handling\": \"error\",\n};\n","import tseslint from \"typescript-eslint\";\n\n// Variante sin type-checking: solo el parser, para presets que aplican a TS\n// pero no necesitan projectService (base, package, next/base, next/react).\nexport function createBaseLanguageOptions() {\n return {\n parser: tseslint.parser,\n };\n}\n","import tseslint from \"typescript-eslint\";\n\nexport function createTypedLanguageOptions() {\n return {\n // Sin el parser explícito, un consumidor que use solo estos presets\n // obtiene \"Parsing error\" en cada archivo TS (espree no parsea TS).\n parser: tseslint.parser,\n parserOptions: {\n projectService: true,\n },\n };\n}\n","import {\n baseRules,\n createBaseLanguageOptions,\n createTypedLanguageOptions,\n} from \"#/shared/configs\";\n\nexport function createAstroConfigs(pluginReference: unknown) {\n const baseLanguageOptions = createBaseLanguageOptions();\n const typedLanguageOptions = createTypedLanguageOptions();\n\n return [\n {\n files: [\"src/**/*.{ts,tsx}\"],\n languageOptions: baseLanguageOptions,\n name: \"skapxd/astro/base\",\n plugins: { skapxd: pluginReference },\n rules: baseRules,\n },\n // Los .astro no llevan parser propio: lo aporta eslint-plugin-astro,\n // que el consumidor debe tener configurado.\n {\n files: [\"src/**/*.astro\"],\n name: \"skapxd/astro/astro-files\",\n plugins: { skapxd: pluginReference },\n rules: baseRules,\n },\n {\n files: [\"src/**/*.{ts,tsx}\"],\n languageOptions: typedLanguageOptions,\n name: \"skapxd/astro/typescript\",\n plugins: { skapxd: pluginReference },\n rules: {\n \"skapxd/await-requires-result\": \"error\",\n \"skapxd/result-error-requires-cause\": \"error\",\n \"skapxd/result-error-requires-handling\": \"error\",\n },\n },\n ];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,YAAY;AAAA,EACvB,4CAA4C;AAAA,EAC5C,6BAA6B;AAAA,EAC7B,uBAAuB;AAAA,EACvB,8BAA8B;AAAA;AAAA;AAAA;AAAA,EAI9B,iCAAiC;AAAA,EACjC,mCAAmC;AAAA,EACnC,4BAA4B;AAAA,EAC5B,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,iCAAiC;AAAA,EACjC,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,qCAAqC;AAAA,EACrC,oCAAoC;AAAA,EACpC,mCAAmC;AAAA,EACnC,4BAA4B;AAAA,EAC5B,sCAAsC;AAAA,EACtC,yCAAyC;AAC3C;;;ACvBA,+BAAqB;AAId,SAAS,4BAA4B;AAC1C,SAAO;AAAA,IACL,QAAQ,yBAAAA,QAAS;AAAA,EACnB;AACF;;;ACRA,IAAAC,4BAAqB;AAEd,SAAS,6BAA6B;AAC3C,SAAO;AAAA;AAAA;AAAA,IAGL,QAAQ,0BAAAC,QAAS;AAAA,IACjB,eAAe;AAAA,MACb,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;;;ACLO,SAAS,mBAAmB,iBAA0B;AAC3D,QAAM,sBAAsB,0BAA0B;AACtD,QAAM,uBAAuB,2BAA2B;AAExD,SAAO;AAAA,IACL;AAAA,MACE,OAAO,CAAC,mBAAmB;AAAA,MAC3B,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,IACT;AAAA;AAAA;AAAA,IAGA;AAAA,MACE,OAAO,CAAC,gBAAgB;AAAA,MACxB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO,CAAC,mBAAmB;AAAA,MAC3B,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,gCAAgC;AAAA,QAChC,sCAAsC;AAAA,QACtC,yCAAyC;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AACF;","names":["tseslint","import_typescript_eslint","tseslint"]}
1
+ {"version":3,"sources":["../../src/astro/index.ts","../../src/shared/configs/base-rules.ts","../../src/shared/configs/create-base-language-options.ts","../../src/shared/configs/create-typed-language-options.ts","../../src/astro/configs.ts"],"sourcesContent":["export { createAstroConfigs } from \"./configs\";\n","import type { Linter } from \"eslint\";\n\nexport const baseRules = {\n \"skapxd/class-properties-require-readonly\": \"error\",\n \"skapxd/max-public-methods\": \"error\",\n \"skapxd/no-accessors\": \"error\",\n \"skapxd/no-ad-hoc-ok-result\": \"error\",\n // En las bases por decisión del dueño (issue #2): con poca adopción\n // todavía, es el momento de subir la vara; los legacy la apagan en su\n // lista de pendientes (playbook de adopción del README).\n \"skapxd/no-anonymous-condition\": \"error\",\n \"skapxd/no-deep-relative-imports\": \"error\",\n \"skapxd/no-default-export\": \"error\",\n \"skapxd/no-else\": \"error\",\n \"skapxd/no-emoji\": \"error\",\n \"skapxd/no-nested-if\": \"error\",\n \"skapxd/nested-function-requires-capture\": \"error\",\n \"skapxd/no-runtime-state-guard\": \"error\",\n \"skapxd/no-promise-chain\": \"error\",\n \"skapxd/no-try-catch\": \"error\",\n \"skapxd/one-root-function-per-file\": \"error\",\n \"skapxd/prefer-node-protocol-for-builtins\": \"error\",\n \"skapxd/prefer-tagged-union-state\": \"error\",\n \"skapxd/requires-strict-tsconfig\": \"error\",\n \"skapxd/prefer-ts-pattern\": \"error\",\n \"skapxd/result-error-requires-cause\": \"error\",\n \"skapxd/result-error-requires-handling\": \"error\",\n} satisfies Linter.RulesRecord;\n","import tseslint from \"typescript-eslint\";\n\n// Variante sin type-checking: solo el parser, para presets que aplican a TS\n// pero no necesitan projectService (base, package, next/base, next/react).\nexport function createBaseLanguageOptions() {\n return {\n parser: tseslint.parser,\n };\n}\n","import tseslint from \"typescript-eslint\";\n\nexport function createTypedLanguageOptions() {\n return {\n // Sin el parser explícito, un consumidor que use solo estos presets\n // obtiene \"Parsing error\" en cada archivo TS (espree no parsea TS).\n parser: tseslint.parser,\n parserOptions: {\n projectService: true,\n },\n };\n}\n","import {\n baseRules,\n createBaseLanguageOptions,\n createTypedLanguageOptions,\n type OpinionatedConfigList,\n type OpinionatedPluginReference,\n} from \"#/shared/configs\";\n\nexport function createAstroConfigs(\n pluginReference: OpinionatedPluginReference,\n) {\n const baseLanguageOptions = createBaseLanguageOptions();\n const typedLanguageOptions = createTypedLanguageOptions();\n\n return [\n {\n files: [\"src/**/*.{ts,tsx}\"],\n languageOptions: baseLanguageOptions,\n name: \"skapxd/astro/base\",\n plugins: { skapxd: pluginReference },\n rules: baseRules,\n },\n // Los .astro no llevan parser propio: lo aporta eslint-plugin-astro,\n // que el consumidor debe tener configurado.\n {\n files: [\"src/**/*.astro\"],\n name: \"skapxd/astro/astro-files\",\n plugins: { skapxd: pluginReference },\n rules: baseRules,\n },\n {\n files: [\"src/**/*.{ts,tsx}\"],\n languageOptions: typedLanguageOptions,\n name: \"skapxd/astro/typescript\",\n plugins: { skapxd: pluginReference },\n rules: {\n \"skapxd/await-requires-result\": \"error\",\n \"skapxd/result-error-requires-cause\": \"error\",\n \"skapxd/result-error-requires-handling\": \"error\",\n },\n },\n ] satisfies OpinionatedConfigList;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,IAAM,YAAY;AAAA,EACvB,4CAA4C;AAAA,EAC5C,6BAA6B;AAAA,EAC7B,uBAAuB;AAAA,EACvB,8BAA8B;AAAA;AAAA;AAAA;AAAA,EAI9B,iCAAiC;AAAA,EACjC,mCAAmC;AAAA,EACnC,4BAA4B;AAAA,EAC5B,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,2CAA2C;AAAA,EAC3C,iCAAiC;AAAA,EACjC,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,qCAAqC;AAAA,EACrC,4CAA4C;AAAA,EAC5C,oCAAoC;AAAA,EACpC,mCAAmC;AAAA,EACnC,4BAA4B;AAAA,EAC5B,sCAAsC;AAAA,EACtC,yCAAyC;AAC3C;;;AC3BA,+BAAqB;AAId,SAAS,4BAA4B;AAC1C,SAAO;AAAA,IACL,QAAQ,yBAAAA,QAAS;AAAA,EACnB;AACF;;;ACRA,IAAAC,4BAAqB;AAEd,SAAS,6BAA6B;AAC3C,SAAO;AAAA;AAAA;AAAA,IAGL,QAAQ,0BAAAC,QAAS;AAAA,IACjB,eAAe;AAAA,MACb,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;;;ACHO,SAAS,mBACd,iBACA;AACA,QAAM,sBAAsB,0BAA0B;AACtD,QAAM,uBAAuB,2BAA2B;AAExD,SAAO;AAAA,IACL;AAAA,MACE,OAAO,CAAC,mBAAmB;AAAA,MAC3B,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,IACT;AAAA;AAAA;AAAA,IAGA;AAAA,MACE,OAAO,CAAC,gBAAgB;AAAA,MACxB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO,CAAC,mBAAmB;AAAA,MAC3B,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,gCAAgC;AAAA,QAChC,sCAAsC;AAAA,QACtC,yCAAyC;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AACF;","names":["tseslint","import_typescript_eslint","tseslint"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAstroConfigs
3
- } from "../chunk-3LQ4KQP5.mjs";
4
- import "../chunk-TFVTEI2T.mjs";
3
+ } from "../chunk-ZLLDTBKQ.mjs";
4
+ import "../chunk-SU7QO6Z2.mjs";
5
5
  export {
6
6
  createAstroConfigs
7
7
  };
@@ -2,7 +2,7 @@ import {
2
2
  baseRules,
3
3
  createTypedLanguageOptions,
4
4
  typeDrivenRules
5
- } from "./chunk-TFVTEI2T.mjs";
5
+ } from "./chunk-SU7QO6Z2.mjs";
6
6
 
7
7
  // src/constants/nest-entrypoint-file-patterns.ts
8
8
  var nestEntrypointFilePatterns = [
@@ -130,4 +130,4 @@ function createNestConfigs(pluginReference) {
130
130
  export {
131
131
  createNestConfigs
132
132
  };
133
- //# sourceMappingURL=chunk-33N6EMC2.mjs.map
133
+ //# sourceMappingURL=chunk-24YEIN4M.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants/nest-entrypoint-file-patterns.ts","../src/constants/nest-framework-hook-names.ts","../src/nest/configs.ts"],"sourcesContent":["// Entrypoints de un proyecto Nest donde exigir Promise<Result> no aplica:\n// el bootstrap debe crashear ruidoso, no modelar errores de dominio.\n// Globs (matchean en cualquier carpeta), basados en proyectos reales:\n// main.ts, main.module.ts/app.module.ts, instrumentation.ts, app-cluster.ts.\nexport const nestEntrypointFilePatterns = [\n \"src/main.ts\",\n \"src/app-cluster.ts\",\n \"src/instrumentation.ts\",\n];\n","// Métodos públicos que NO cuentan hacia el límite porque son callbacks del\n// framework (NestJS): los llama el container/router/HTTP layer, nunca el\n// código de negocio. Contarlos forzaría refactors sin semántica.\nexport const nestFrameworkHookNames = [\n // Lifecycle hooks — https://docs.nestjs.com/fundamentals/lifecycle-events\n \"onModuleInit\",\n \"onModuleDestroy\",\n \"onApplicationBootstrap\",\n \"onApplicationShutdown\",\n \"beforeApplicationShutdown\",\n // Interfaces del request pipeline\n \"canActivate\", // CanActivate (Guard)\n \"intercept\", // NestInterceptor\n \"transform\", // PipeTransform\n \"catch\", // ExceptionFilter\n \"use\", // NestMiddleware\n];\n","import { nestEntrypointFilePatterns } from \"#/constants/nest-entrypoint-file-patterns\";\nimport { nestFrameworkHookNames } from \"#/constants/nest-framework-hook-names\";\nimport {\n baseRules,\n createTypedLanguageOptions,\n type OpinionatedConfigList,\n type OpinionatedPluginReference,\n typeDrivenRules,\n} from \"#/shared/configs\";\n\nexport function createNestConfigs(\n pluginReference: OpinionatedPluginReference,\n) {\n const typedLanguageOptions = createTypedLanguageOptions();\n\n return [\n // El dominio completo (services, controllers, modules, guards, ...).\n // Las carpetas fuera de src (dev/, scripts/, e2e/, integration-test/)\n // quedan fuera del preset a propósito: no son la app.\n {\n files: [\"src/**/*.ts\"],\n languageOptions: typedLanguageOptions,\n name: \"skapxd/nest/base\",\n // Solo el plugin skapxd: las reglas de typescript-eslint entran\n // re-registradas bajo nuestro namespace (typeDrivenRules).\n plugins: { skapxd: pluginReference },\n rules: {\n ...baseRules,\n ...typeDrivenRules,\n // Nota: class-properties-require-readonly viene de las bases sin\n // override — la exención de la capa de persistencia es por\n // PROPIEDAD (decoradores @Prop/@Column verificados contra los\n // imports de @nestjs/mongoose/typeorm), no por nombre de archivo.\n // La regla agnóstica de las bases, con el conocimiento del\n // framework inyectado: los hooks de Nest (onModuleInit,\n // canActivate, intercept, ...) no cuentan como superficie pública.\n \"skapxd/max-public-methods\": [\n \"error\",\n { ignore: [...nestFrameworkHookNames] },\n ],\n // Todo await resuelve en Result, salvo los entrypoints (main.ts,\n // instrumentation): ahí el bootstrap debe crashear ruidoso.\n \"skapxd/await-requires-result\": [\n \"error\",\n { allowFilePatterns: [...nestEntrypointFilePatterns] },\n ],\n // El contrato HTTP se documenta en los DTOs (@ApiProperty), no en el\n // controller: el plugin @nestjs/swagger introspecciona el resto.\n \"skapxd/nest-dto-requires-api-property\": \"error\",\n // Los DTOs de input validan en runtime con class-validator (+ @Type\n // de class-transformer para anidados); los out-*/-response quedan\n // exentos: el server los produce, no los recibe.\n \"skapxd/nest-dto-requires-validation\": \"error\",\n // El controller es la frontera: consume el Result con match() y\n // traduce a DTO o HttpException. Devolverlo crudo serializa el\n // envelope { ok, error } al cliente.\n \"skapxd/nest-no-result-response\": \"error\",\n \"skapxd/nest-no-swagger-in-controllers\": \"error\",\n // Configuración del proyecto verificada por el lint: el plugin de\n // swagger en nest-cli.json (la premisa de las reglas de swagger) y\n // un ValidationPipe con transform + whitelist (la premisa de las\n // reglas de DTOs).\n \"skapxd/nest-requires-swagger-plugin\": \"error\",\n \"skapxd/nest-validation-pipe-config\": \"error\",\n },\n },\n // En services, las dependencias entran por el constructor (DI), no con\n // `new`.\n {\n files: [\"src/**/*.service.ts\"],\n name: \"skapxd/nest/services\",\n plugins: { skapxd: pluginReference },\n rules: {\n \"skapxd/nest-no-direct-instantiation\": \"error\",\n },\n },\n // La forma de controllers y gateways la dicta el framework (un método\n // por ruta/evento): ahí el límite de métodos públicos no aporta\n // semántica. Y 2+ query params individuales son un DTO disfrazado.\n {\n files: [\"src/**/*.controller.ts\", \"src/**/*.gateway.ts\"],\n name: \"skapxd/nest/controllers\",\n plugins: { skapxd: pluginReference },\n rules: {\n \"skapxd/max-public-methods\": \"off\",\n \"skapxd/nest-no-inline-query-params\": \"error\",\n },\n },\n // Specs colocados: los tests awaitean helpers y SUTs libremente, y\n // descartar un Result en una aserción no es perder un trace.\n {\n files: [\"**/*.spec.ts\", \"**/*.e2e-spec.ts\"],\n name: \"skapxd/nest/tests\",\n plugins: { skapxd: pluginReference },\n rules: {\n // El `!` sobre un fixture cuya existencia el propio test garantiza\n // no es mentirle al compilador: es el arrange. no-floating-promises\n // sí queda activa — un await olvidado en un spec es un falso verde.\n \"skapxd/await-requires-result\": \"off\",\n \"skapxd/no-non-null-assertion\": \"off\",\n \"skapxd/no-try-catch\": \"off\",\n \"skapxd/result-error-requires-handling\": \"off\",\n },\n },\n ] satisfies OpinionatedConfigList;\n}\n"],"mappings":";;;;;;;AAIO,IAAM,6BAA6B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACF;;;ACLO,IAAM,yBAAyB;AAAA;AAAA,EAEpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;;;ACNO,SAAS,kBACd,iBACA;AACA,QAAM,uBAAuB,2BAA2B;AAExD,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL;AAAA,MACE,OAAO,CAAC,aAAa;AAAA,MACrB,iBAAiB;AAAA,MACjB,MAAM;AAAA;AAAA;AAAA,MAGN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAQH,6BAA6B;AAAA,UAC3B;AAAA,UACA,EAAE,QAAQ,CAAC,GAAG,sBAAsB,EAAE;AAAA,QACxC;AAAA;AAAA;AAAA,QAGA,gCAAgC;AAAA,UAC9B;AAAA,UACA,EAAE,mBAAmB,CAAC,GAAG,0BAA0B,EAAE;AAAA,QACvD;AAAA;AAAA;AAAA,QAGA,yCAAyC;AAAA;AAAA;AAAA;AAAA,QAIzC,uCAAuC;AAAA;AAAA;AAAA;AAAA,QAIvC,kCAAkC;AAAA,QAClC,yCAAyC;AAAA;AAAA;AAAA;AAAA;AAAA,QAKzC,uCAAuC;AAAA,QACvC,sCAAsC;AAAA,MACxC;AAAA,IACF;AAAA;AAAA;AAAA,IAGA;AAAA,MACE,OAAO,CAAC,qBAAqB;AAAA,MAC7B,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,uCAAuC;AAAA,MACzC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA,MACE,OAAO,CAAC,0BAA0B,qBAAqB;AAAA,MACvD,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,6BAA6B;AAAA,QAC7B,sCAAsC;AAAA,MACxC;AAAA,IACF;AAAA;AAAA;AAAA,IAGA;AAAA,MACE,OAAO,CAAC,gBAAgB,kBAAkB;AAAA,MAC1C,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA;AAAA;AAAA;AAAA,QAIL,gCAAgC;AAAA,QAChC,gCAAgC;AAAA,QAChC,uBAAuB;AAAA,QACvB,yCAAyC;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AACF;","names":[]}