@skapxd/eslint-opinionated 0.1.0 → 0.1.1

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/README.md CHANGED
@@ -257,7 +257,7 @@ completo**, también dispara las reglas estructurales (p. ej.
257
257
  src/
258
258
  ├── shared/
259
259
  │ ├── rules.ts
260
- │ ├── configs.ts
260
+ │ ├── configs/
261
261
  │ └── index.ts
262
262
  ├── next/
263
263
  │ ├── configs.ts
@@ -379,6 +379,10 @@ export default [
379
379
  ];
380
380
  ```
381
381
 
382
+ > Para los archivos `.astro` el preset no impone parser: necesitas tener
383
+ > `eslint-plugin-astro` configurado (su preset recomendado ya lo aporta).
384
+ > Los `.ts/.tsx` sí traen el parser de `typescript-eslint` incluido.
385
+
382
386
  También puedes importar solo el factory de Astro:
383
387
 
384
388
  ```js
@@ -1,4 +1,24 @@
1
+ import * as typescript_eslint from 'typescript-eslint';
2
+
1
3
  declare function createAstroConfigs(pluginReference: unknown): ({
4
+ files: string[];
5
+ languageOptions: {
6
+ parser: typescript_eslint.CompatibleParser;
7
+ };
8
+ name: string;
9
+ plugins: {
10
+ skapxd: unknown;
11
+ };
12
+ rules: {
13
+ "skapxd/no-ad-hoc-ok-result": string;
14
+ "skapxd/no-deep-relative-imports": string;
15
+ "skapxd/no-promise-chain": string;
16
+ "skapxd/no-try-catch": string;
17
+ "skapxd/one-root-function-per-file": string;
18
+ "skapxd/prefer-ts-pattern": string;
19
+ "skapxd/result-error-requires-cause": string;
20
+ };
21
+ } | {
2
22
  files: string[];
3
23
  name: string;
4
24
  plugins: {
@@ -17,6 +37,7 @@ declare function createAstroConfigs(pluginReference: unknown): ({
17
37
  } | {
18
38
  files: string[];
19
39
  languageOptions: {
40
+ parser: typescript_eslint.CompatibleParser;
20
41
  parserOptions: {
21
42
  projectService: boolean;
22
43
  };
@@ -1,4 +1,24 @@
1
+ import * as typescript_eslint from 'typescript-eslint';
2
+
1
3
  declare function createAstroConfigs(pluginReference: unknown): ({
4
+ files: string[];
5
+ languageOptions: {
6
+ parser: typescript_eslint.CompatibleParser;
7
+ };
8
+ name: string;
9
+ plugins: {
10
+ skapxd: unknown;
11
+ };
12
+ rules: {
13
+ "skapxd/no-ad-hoc-ok-result": string;
14
+ "skapxd/no-deep-relative-imports": string;
15
+ "skapxd/no-promise-chain": string;
16
+ "skapxd/no-try-catch": string;
17
+ "skapxd/one-root-function-per-file": string;
18
+ "skapxd/prefer-ts-pattern": string;
19
+ "skapxd/result-error-requires-cause": string;
20
+ };
21
+ } | {
2
22
  files: string[];
3
23
  name: string;
4
24
  plugins: {
@@ -17,6 +37,7 @@ declare function createAstroConfigs(pluginReference: unknown): ({
17
37
  } | {
18
38
  files: string[];
19
39
  languageOptions: {
40
+ parser: typescript_eslint.CompatibleParser;
20
41
  parserOptions: {
21
42
  projectService: boolean;
22
43
  };
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
 
20
30
  // src/astro/index.ts
@@ -35,9 +45,21 @@ var baseRules = {
35
45
  "skapxd/result-error-requires-cause": "error"
36
46
  };
37
47
 
48
+ // src/shared/configs/create-base-language-options.ts
49
+ var import_typescript_eslint = __toESM(require("typescript-eslint"));
50
+ function createBaseLanguageOptions() {
51
+ return {
52
+ parser: import_typescript_eslint.default.parser
53
+ };
54
+ }
55
+
38
56
  // src/shared/configs/create-typed-language-options.ts
57
+ var import_typescript_eslint2 = __toESM(require("typescript-eslint"));
39
58
  function createTypedLanguageOptions() {
40
59
  return {
60
+ // Sin el parser explícito, un consumidor que use solo estos presets
61
+ // obtiene "Parsing error" en cada archivo TS (espree no parsea TS).
62
+ parser: import_typescript_eslint2.default.parser,
41
63
  parserOptions: {
42
64
  projectService: true
43
65
  }
@@ -46,14 +68,24 @@ function createTypedLanguageOptions() {
46
68
 
47
69
  // src/astro/configs.ts
48
70
  function createAstroConfigs(pluginReference) {
71
+ const baseLanguageOptions = createBaseLanguageOptions();
49
72
  const typedLanguageOptions = createTypedLanguageOptions();
50
73
  return [
51
74
  {
52
- files: ["src/**/*.{ts,tsx,astro}"],
75
+ files: ["src/**/*.{ts,tsx}"],
76
+ languageOptions: baseLanguageOptions,
53
77
  name: "skapxd/astro/base",
54
78
  plugins: { skapxd: pluginReference },
55
79
  rules: baseRules
56
80
  },
81
+ // Los .astro no llevan parser propio: lo aporta eslint-plugin-astro,
82
+ // que el consumidor debe tener configurado.
83
+ {
84
+ files: ["src/**/*.astro"],
85
+ name: "skapxd/astro/astro-files",
86
+ plugins: { skapxd: pluginReference },
87
+ rules: baseRules
88
+ },
57
89
  {
58
90
  files: ["src/**/*.{ts,tsx}"],
59
91
  languageOptions: typedLanguageOptions,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/astro/index.ts","../../src/shared/configs/base-rules.ts","../../src/shared/configs/create-typed-language-options.ts","../../src/astro/configs.ts"],"sourcesContent":["export { createAstroConfigs } from \"./configs\";\n","export const baseRules = {\n \"skapxd/no-ad-hoc-ok-result\": \"warn\",\n \"skapxd/no-deep-relative-imports\": \"warn\",\n \"skapxd/no-promise-chain\": \"error\",\n \"skapxd/no-try-catch\": \"error\",\n \"skapxd/one-root-function-per-file\": \"error\",\n \"skapxd/prefer-ts-pattern\": \"error\",\n \"skapxd/result-error-requires-cause\": \"error\",\n};\n","export function createTypedLanguageOptions() {\n return {\n parserOptions: {\n projectService: true,\n },\n };\n}\n","import { baseRules, createTypedLanguageOptions } from \"#/shared/configs\";\n\nexport function createAstroConfigs(pluginReference: unknown) {\n const typedLanguageOptions = createTypedLanguageOptions();\n\n return [\n {\n files: [\"src/**/*.{ts,tsx,astro}\"],\n name: \"skapxd/astro/base\",\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/result-error-requires-cause\": \"error\",\n },\n },\n ];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,YAAY;AAAA,EACvB,8BAA8B;AAAA,EAC9B,mCAAmC;AAAA,EACnC,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,qCAAqC;AAAA,EACrC,4BAA4B;AAAA,EAC5B,sCAAsC;AACxC;;;ACRO,SAAS,6BAA6B;AAC3C,SAAO;AAAA,IACL,eAAe;AAAA,MACb,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;;;ACJO,SAAS,mBAAmB,iBAA0B;AAC3D,QAAM,uBAAuB,2BAA2B;AAExD,SAAO;AAAA,IACL;AAAA,MACE,OAAO,CAAC,yBAAyB;AAAA,MACjC,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,sCAAsC;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
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/no-ad-hoc-ok-result\": \"warn\",\n \"skapxd/no-deep-relative-imports\": \"warn\",\n \"skapxd/no-promise-chain\": \"error\",\n \"skapxd/no-try-catch\": \"error\",\n \"skapxd/one-root-function-per-file\": \"error\",\n \"skapxd/prefer-ts-pattern\": \"error\",\n \"skapxd/result-error-requires-cause\": \"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/result-error-requires-cause\": \"error\",\n },\n },\n ];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,YAAY;AAAA,EACvB,8BAA8B;AAAA,EAC9B,mCAAmC;AAAA,EACnC,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,qCAAqC;AAAA,EACrC,4BAA4B;AAAA,EAC5B,sCAAsC;AACxC;;;ACRA,+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,sCAAsC;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACF;","names":["tseslint","import_typescript_eslint","tseslint"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAstroConfigs
3
- } from "../chunk-3FB4H7N6.mjs";
4
- import "../chunk-CQKEQ32W.mjs";
3
+ } from "../chunk-LJBYVPVK.mjs";
4
+ import "../chunk-DITFYRKS.mjs";
5
5
  export {
6
6
  createAstroConfigs
7
7
  };
@@ -1,6 +1,10 @@
1
1
  // src/shared/configs/create-typed-language-options.ts
2
+ import tseslint from "typescript-eslint";
2
3
  function createTypedLanguageOptions() {
3
4
  return {
5
+ // Sin el parser explícito, un consumidor que use solo estos presets
6
+ // obtiene "Parsing error" en cada archivo TS (espree no parsea TS).
7
+ parser: tseslint.parser,
4
8
  parserOptions: {
5
9
  projectService: true
6
10
  }
@@ -18,8 +22,17 @@ var baseRules = {
18
22
  "skapxd/result-error-requires-cause": "error"
19
23
  };
20
24
 
25
+ // src/shared/configs/create-base-language-options.ts
26
+ import tseslint2 from "typescript-eslint";
27
+ function createBaseLanguageOptions() {
28
+ return {
29
+ parser: tseslint2.parser
30
+ };
31
+ }
32
+
21
33
  // src/shared/configs/create-shared-configs.ts
22
34
  function createSharedConfigs(pluginReference) {
35
+ const baseLanguageOptions = createBaseLanguageOptions();
23
36
  const typedLanguageOptions = createTypedLanguageOptions();
24
37
  return {
25
38
  backend: {
@@ -38,6 +51,7 @@ function createSharedConfigs(pluginReference) {
38
51
  }
39
52
  },
40
53
  base: {
54
+ languageOptions: baseLanguageOptions,
41
55
  name: "skapxd/shared/base",
42
56
  plugins: { skapxd: pluginReference },
43
57
  rules: baseRules
@@ -73,6 +87,7 @@ function createSharedConfigs(pluginReference) {
73
87
  }
74
88
  },
75
89
  package: {
90
+ languageOptions: baseLanguageOptions,
76
91
  name: "skapxd/shared/package",
77
92
  plugins: { skapxd: pluginReference },
78
93
  rules: {
@@ -92,8 +107,9 @@ var strictConfig = {
92
107
 
93
108
  export {
94
109
  baseRules,
110
+ createBaseLanguageOptions,
95
111
  createTypedLanguageOptions,
96
112
  createSharedConfigs,
97
113
  strictConfig
98
114
  };
99
- //# sourceMappingURL=chunk-CQKEQ32W.mjs.map
115
+ //# sourceMappingURL=chunk-DITFYRKS.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shared/configs/create-typed-language-options.ts","../src/shared/configs/base-rules.ts","../src/shared/configs/create-base-language-options.ts","../src/shared/configs/create-shared-configs.ts","../src/shared/configs/strict-config.ts"],"sourcesContent":["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","export const baseRules = {\n \"skapxd/no-ad-hoc-ok-result\": \"warn\",\n \"skapxd/no-deep-relative-imports\": \"warn\",\n \"skapxd/no-promise-chain\": \"error\",\n \"skapxd/no-try-catch\": \"error\",\n \"skapxd/one-root-function-per-file\": \"error\",\n \"skapxd/prefer-ts-pattern\": \"error\",\n \"skapxd/result-error-requires-cause\": \"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 { baseRules } from \"./base-rules\";\nimport { createBaseLanguageOptions } from \"./create-base-language-options\";\nimport { createTypedLanguageOptions } from \"./create-typed-language-options\";\n\nexport function createSharedConfigs(pluginReference: unknown) {\n const baseLanguageOptions = createBaseLanguageOptions();\n const typedLanguageOptions = createTypedLanguageOptions();\n\n return {\n backend: {\n languageOptions: typedLanguageOptions,\n name: \"skapxd/shared/backend\",\n plugins: { skapxd: pluginReference },\n rules: {\n ...baseRules,\n \"skapxd/async-functions-return-result\": [\n \"error\",\n {\n checkMissingReturnType: true,\n resultTypeNames: [\"Result\", \"ResultValue\", \"SafeResult\"],\n },\n ],\n },\n },\n base: {\n languageOptions: baseLanguageOptions,\n name: \"skapxd/shared/base\",\n plugins: { skapxd: pluginReference },\n rules: baseRules,\n },\n frontend: {\n languageOptions: typedLanguageOptions,\n name: \"skapxd/shared/frontend\",\n plugins: { skapxd: pluginReference },\n rules: {\n ...baseRules,\n \"skapxd/jsx-return-name-pascal-case\": \"error\",\n \"skapxd/no-functions-inside-components\": \"error\",\n \"skapxd/no-jsx-ternary-null\": \"error\",\n \"skapxd/max-hook-size\": [\n \"warn\",\n {\n maxLines: 120,\n maxUseState: 1,\n },\n ],\n },\n },\n // Capa de servicios del front (peticiones, clientes de API): todo await\n // debe ir envuelto en trySafe de @skapxd/result. El consumidor puede\n // sobreescribir `files` si sus servicios viven en otra carpeta.\n frontendServices: {\n files: [\"**/services/**/*.{ts,tsx}\", \"**/api/**/*.{ts,tsx}\"],\n languageOptions: typedLanguageOptions,\n name: \"skapxd/shared/frontend-services\",\n plugins: { skapxd: pluginReference },\n rules: {\n \"skapxd/await-requires-try-safe\": \"error\",\n },\n },\n package: {\n languageOptions: baseLanguageOptions,\n name: \"skapxd/shared/package\",\n plugins: { skapxd: pluginReference },\n rules: {\n \"skapxd/one-root-function-per-file\": \"error\",\n },\n },\n };\n}\n","// Config endurecida: ignora TODOS los comentarios `eslint-disable` (y demás\n// directivas inline) en los archivos que cubre. Así ni una persona ni un agente\n// pueden saltarse una regla con `// eslint-disable-next-line`.\nexport const strictConfig = {\n linterOptions: {\n noInlineConfig: true,\n },\n name: \"skapxd/strict\",\n};\n"],"mappings":";AAAA,OAAO,cAAc;AAEd,SAAS,6BAA6B;AAC3C,SAAO;AAAA;AAAA;AAAA,IAGL,QAAQ,SAAS;AAAA,IACjB,eAAe;AAAA,MACb,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;;;ACXO,IAAM,YAAY;AAAA,EACvB,8BAA8B;AAAA,EAC9B,mCAAmC;AAAA,EACnC,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,qCAAqC;AAAA,EACrC,4BAA4B;AAAA,EAC5B,sCAAsC;AACxC;;;ACRA,OAAOA,eAAc;AAId,SAAS,4BAA4B;AAC1C,SAAO;AAAA,IACL,QAAQA,UAAS;AAAA,EACnB;AACF;;;ACJO,SAAS,oBAAoB,iBAA0B;AAC5D,QAAM,sBAAsB,0BAA0B;AACtD,QAAM,uBAAuB,2BAA2B;AAExD,SAAO;AAAA,IACL,SAAS;AAAA,MACP,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,GAAG;AAAA,QACH,wCAAwC;AAAA,UACtC;AAAA,UACA;AAAA,YACE,wBAAwB;AAAA,YACxB,iBAAiB,CAAC,UAAU,eAAe,YAAY;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,GAAG;AAAA,QACH,sCAAsC;AAAA,QACtC,yCAAyC;AAAA,QACzC,8BAA8B;AAAA,QAC9B,wBAAwB;AAAA,UACtB;AAAA,UACA;AAAA,YACE,UAAU;AAAA,YACV,aAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAIA,kBAAkB;AAAA,MAChB,OAAO,CAAC,6BAA6B,sBAAsB;AAAA,MAC3D,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,kCAAkC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,qCAAqC;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AACF;;;AClEO,IAAM,eAAe;AAAA,EAC1B,eAAe;AAAA,IACb,gBAAgB;AAAA,EAClB;AAAA,EACA,MAAM;AACR;","names":["tseslint"]}
@@ -1,18 +1,29 @@
1
1
  import {
2
2
  baseRules,
3
+ createBaseLanguageOptions,
3
4
  createTypedLanguageOptions
4
- } from "./chunk-CQKEQ32W.mjs";
5
+ } from "./chunk-DITFYRKS.mjs";
5
6
 
6
7
  // src/astro/configs.ts
7
8
  function createAstroConfigs(pluginReference) {
9
+ const baseLanguageOptions = createBaseLanguageOptions();
8
10
  const typedLanguageOptions = createTypedLanguageOptions();
9
11
  return [
10
12
  {
11
- files: ["src/**/*.{ts,tsx,astro}"],
13
+ files: ["src/**/*.{ts,tsx}"],
14
+ languageOptions: baseLanguageOptions,
12
15
  name: "skapxd/astro/base",
13
16
  plugins: { skapxd: pluginReference },
14
17
  rules: baseRules
15
18
  },
19
+ // Los .astro no llevan parser propio: lo aporta eslint-plugin-astro,
20
+ // que el consumidor debe tener configurado.
21
+ {
22
+ files: ["src/**/*.astro"],
23
+ name: "skapxd/astro/astro-files",
24
+ plugins: { skapxd: pluginReference },
25
+ rules: baseRules
26
+ },
16
27
  {
17
28
  files: ["src/**/*.{ts,tsx}"],
18
29
  languageOptions: typedLanguageOptions,
@@ -28,4 +39,4 @@ function createAstroConfigs(pluginReference) {
28
39
  export {
29
40
  createAstroConfigs
30
41
  };
31
- //# sourceMappingURL=chunk-3FB4H7N6.mjs.map
42
+ //# sourceMappingURL=chunk-LJBYVPVK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/astro/configs.ts"],"sourcesContent":["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/result-error-requires-cause\": \"error\",\n },\n },\n ];\n}\n"],"mappings":";;;;;;;AAMO,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,sCAAsC;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,13 +1,16 @@
1
1
  import {
2
2
  baseRules,
3
+ createBaseLanguageOptions,
3
4
  createTypedLanguageOptions
4
- } from "./chunk-CQKEQ32W.mjs";
5
+ } from "./chunk-DITFYRKS.mjs";
5
6
 
6
7
  // src/next/configs.ts
7
8
  function createNextConfigs(pluginReference) {
9
+ const baseLanguageOptions = createBaseLanguageOptions();
8
10
  const typedLanguageOptions = createTypedLanguageOptions();
9
11
  return [
10
12
  {
13
+ languageOptions: baseLanguageOptions,
11
14
  name: "skapxd/next/base",
12
15
  plugins: { skapxd: pluginReference },
13
16
  rules: baseRules
@@ -38,6 +41,7 @@ function createNextConfigs(pluginReference) {
38
41
  },
39
42
  {
40
43
  files: ["**/*.tsx"],
44
+ languageOptions: baseLanguageOptions,
41
45
  name: "skapxd/next/react",
42
46
  plugins: { skapxd: pluginReference },
43
47
  rules: {
@@ -59,4 +63,4 @@ function createNextConfigs(pluginReference) {
59
63
  export {
60
64
  createNextConfigs
61
65
  };
62
- //# sourceMappingURL=chunk-BAHAXSWA.mjs.map
66
+ //# sourceMappingURL=chunk-XGWQ7UQ4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/next/configs.ts"],"sourcesContent":["import {\n baseRules,\n createBaseLanguageOptions,\n createTypedLanguageOptions,\n} from \"#/shared/configs\";\n\nexport function createNextConfigs(pluginReference: unknown) {\n const baseLanguageOptions = createBaseLanguageOptions();\n const typedLanguageOptions = createTypedLanguageOptions();\n\n return [\n {\n languageOptions: baseLanguageOptions,\n name: \"skapxd/next/base\",\n plugins: { skapxd: pluginReference },\n rules: baseRules,\n },\n {\n files: [\"src/app/api/**/*.{ts,tsx}\", \"src/server/**/*.{ts,tsx}\"],\n languageOptions: typedLanguageOptions,\n name: \"skapxd/next/server\",\n plugins: { skapxd: pluginReference },\n rules: {\n ...baseRules,\n \"skapxd/async-functions-return-result\": [\n \"error\",\n {\n allowFilePatterns: [\n \"/(route|page|layout|template|loading|error|not-found)\\\\.tsx?$\",\n ],\n allowNamePatterns: [\n \"^(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS)$\",\n \"^handle(Get|Post|Put|Patch|Delete|Head|Options)$\",\n \"^start$\",\n ],\n checkMissingReturnType: true,\n resultTypeNames: [\"Result\", \"ResultValue\", \"SafeResult\"],\n },\n ],\n },\n },\n {\n files: [\"**/*.tsx\"],\n languageOptions: baseLanguageOptions,\n name: \"skapxd/next/react\",\n plugins: { skapxd: pluginReference },\n rules: {\n \"skapxd/jsx-return-name-pascal-case\": \"error\",\n \"skapxd/no-functions-inside-components\": \"error\",\n \"skapxd/no-jsx-ternary-null\": \"error\",\n \"skapxd/max-hook-size\": [\n \"warn\",\n {\n maxLines: 120,\n maxUseState: 1,\n },\n ],\n },\n },\n ];\n}\n"],"mappings":";;;;;;;AAMO,SAAS,kBAAkB,iBAA0B;AAC1D,QAAM,sBAAsB,0BAA0B;AACtD,QAAM,uBAAuB,2BAA2B;AAExD,SAAO;AAAA,IACL;AAAA,MACE,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO,CAAC,6BAA6B,0BAA0B;AAAA,MAC/D,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,GAAG;AAAA,QACH,wCAAwC;AAAA,UACtC;AAAA,UACA;AAAA,YACE,mBAAmB;AAAA,cACjB;AAAA,YACF;AAAA,YACA,mBAAmB;AAAA,cACjB;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,YACxB,iBAAiB,CAAC,UAAU,eAAe,YAAY;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO,CAAC,UAAU;AAAA,MAClB,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,QAAQ,gBAAgB;AAAA,MACnC,OAAO;AAAA,QACL,sCAAsC;AAAA,QACtC,yCAAyC;AAAA,QACzC,8BAA8B;AAAA,QAC9B,wBAAwB;AAAA,UACtB;AAAA,UACA;AAAA,YACE,UAAU;AAAA,YACV,aAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
package/dist/cli.js CHANGED
@@ -25,6 +25,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
 
26
26
  // src/cli.ts
27
27
  var import_node_child_process2 = require("child_process");
28
+ var import_node_path2 = __toESM(require("path"));
28
29
  var import_node_process2 = __toESM(require("process"));
29
30
  var import_result = require("@skapxd/result");
30
31
 
@@ -3139,9 +3140,9 @@ Expecting one of '${allowedValues.join("', '")}'`);
3139
3140
  * @param {string} [path]
3140
3141
  * @return {(string|null|Command)}
3141
3142
  */
3142
- executableDir(path2) {
3143
- if (path2 === void 0) return this._executableDir;
3144
- this._executableDir = path2;
3143
+ executableDir(path3) {
3144
+ if (path3 === void 0) return this._executableDir;
3145
+ this._executableDir = path3;
3145
3146
  return this;
3146
3147
  }
3147
3148
  /**
@@ -3400,21 +3401,24 @@ var program = new Command();
3400
3401
  var import_eslint = require("eslint");
3401
3402
  var lintableFile = /\.(c|m)?[jt]sx?$/;
3402
3403
  async function lintChanged(base) {
3403
- function git(command) {
3404
+ function git(command, options = {}) {
3404
3405
  const result = (0, import_result.trySafe)(
3405
- () => (0, import_node_child_process2.execSync)(command, { encoding: "utf8", stdio: ["pipe", "pipe", "ignore"] })
3406
+ () => (0, import_node_child_process2.execSync)(command, {
3407
+ encoding: "utf8",
3408
+ stdio: ["pipe", "pipe", "ignore"],
3409
+ ...options
3410
+ })
3406
3411
  );
3407
3412
  return result.ok ? result.value : "";
3408
3413
  }
3409
3414
  function getChangedFiles() {
3415
+ const root = git("git rev-parse --show-toplevel").trim() || import_node_process2.default.cwd();
3410
3416
  const range = base ? `${base}...HEAD` : "HEAD";
3411
3417
  const changed = git(`git diff --name-only --diff-filter=ACMR ${range}`);
3412
- const untracked = base ? "" : git("git ls-files --others --exclude-standard");
3418
+ const untracked = base ? "" : git("git ls-files --others --exclude-standard", { cwd: root });
3413
3419
  const lines = `${changed}
3414
3420
  ${untracked}`.split("\n").map((line) => line.trim());
3415
- return [...new Set(lines)].filter(
3416
- (file) => file && lintableFile.test(file)
3417
- );
3421
+ return [...new Set(lines)].filter((file) => file && lintableFile.test(file)).map((file) => import_node_path2.default.join(root, file));
3418
3422
  }
3419
3423
  const files = getChangedFiles();
3420
3424
  if (files.length === 0) {
@@ -3423,12 +3427,13 @@ ${untracked}`.split("\n").map((line) => line.trim());
3423
3427
  }
3424
3428
  console.log(`skapxd-lint-changed: linteando ${files.length} archivo(s):`);
3425
3429
  for (const file of files) {
3426
- console.log(` \u2022 ${file}`);
3430
+ console.log(` \u2022 ${import_node_path2.default.relative(import_node_process2.default.cwd(), file)}`);
3427
3431
  }
3428
3432
  const eslint = new import_eslint.ESLint({ warnIgnored: false });
3429
3433
  const lint = await (0, import_result.trySafe)(() => eslint.lintFiles(files));
3430
3434
  if (!lint.ok) {
3431
3435
  console.error("skapxd-lint-changed: ESLint fall\xF3 al ejecutarse.");
3436
+ console.error(lint.error);
3432
3437
  import_node_process2.default.exitCode = 1;
3433
3438
  return;
3434
3439
  }