@xylabs/eslint-config-flat 8.2.18 → 8.2.19

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.
@@ -1,36 +1,48 @@
1
1
  import type { Linter } from 'eslint';
2
+ export { applyRecommendedConfigTypeChecked, DEFAULT_RECOMMENDED_CONFIG_OPTIONS, formatRecommendedConfigCall, type LintTier, parseRecommendedConfigSource, recommendedConfig, type RecommendedConfigOptions, resolveRecommendedConfigOptions, } from './recommendedConfig.ts';
2
3
  /**
3
4
  * Tier 0 — correctness: type safety, bug prevention, import restrictions.
4
5
  * Each subsequent tier is a superset of the previous tier.
6
+ *
7
+ * @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: false })` instead.
5
8
  */
6
9
  export declare const configTier0Correctness: Linter.Config[];
10
+ /** @deprecated Use `recommendedConfig({ tier: 0, isTypeChecked: true })` instead. */
7
11
  export declare const configTier0CorrectnessTypeChecked: Linter.Config[];
8
12
  /**
9
13
  * Tier 1 — consistency: Tier 0 plus formatting, member ordering, and complexity limits.
14
+ *
15
+ * @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: false })` instead.
10
16
  */
11
17
  export declare const configTier1Consistency: Linter.Config[];
18
+ /** @deprecated Use `recommendedConfig({ tier: 1, isTypeChecked: true })` instead. */
12
19
  export declare const configTier1ConsistencyTypeChecked: Linter.Config[];
13
20
  /**
14
21
  * Tier 2 — best practices: Tier 1 plus unicorn and import validation.
15
- * This is the recommended default for XY Labs repositories.
22
+ *
23
+ * @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: false })` instead.
16
24
  */
17
25
  export declare const configTier2BestPractices: Linter.Config[];
26
+ /** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */
18
27
  export declare const configTier2BestPracticesTypeChecked: Linter.Config[];
19
28
  /**
20
29
  * Tier 3 — opinionated: Tier 2 plus unicorn v66 warnings and promotion of optional rules to errors.
30
+ *
31
+ * @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: false })` instead.
21
32
  */
22
33
  export declare const configTier3Opinionated: Linter.Config[];
34
+ /** @deprecated Use `recommendedConfig({ tier: 3, isTypeChecked: true })` instead. */
23
35
  export declare const configTier3OpinionatedTypeChecked: Linter.Config[];
24
36
  /**
25
37
  * Tier 4 — experimental: Tier 3 plus unicorn v67 warnings (v66 remain warnings).
26
- * New tier-only rules default to warnings; use `xy lint --strict` to treat them as errors.
38
+ *
39
+ * @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: false })` instead.
27
40
  */
28
41
  export declare const configTier4Experimental: Linter.Config[];
42
+ /** @deprecated Use `recommendedConfig({ tier: 4, isTypeChecked: true })` instead. */
29
43
  export declare const configTier4ExperimentalTypeChecked: Linter.Config[];
30
- /** @deprecated Use `configTier2BestPractices` instead. */
31
- export declare const recommendedConfig: Linter.Config[];
32
- /** @deprecated Use `configTier2BestPracticesTypeChecked` instead. */
44
+ /** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: false })` instead. */
33
45
  export declare const recommendedTypeCheckedConfig: Linter.Config[];
34
- /** @deprecated Use `configTier3OpinionatedTypeChecked` instead. */
46
+ /** @deprecated Use `recommendedConfig({ tier: 2, isTypeChecked: true })` instead. */
35
47
  export declare const config: Linter.Config[];
36
48
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AA0BpC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAIjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAI5D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAKjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAK5D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAInD,CAAA;AAED,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,MAAM,EAI9D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAGjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAG5D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAGlD,CAAA;AAED,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,MAAM,EAG7D,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAA6B,CAAA;AAE1E,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA;AAEhG,mEAAmE;AACnE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EACL,iCAAiC,EACjC,kCAAkC,EAClC,2BAA2B,EAC3B,KAAK,QAAQ,EACb,4BAA4B,EAC5B,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,+BAA+B,GAChC,MAAM,wBAAwB,CAAA;AAI/B;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAE3G,qFAAqF;AACrF,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAErH;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAE3G,qFAAqF;AACrF,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAErH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAE7G,qFAAqF;AACrF,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAEvH;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAE3G,qFAAqF;AACrF,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAErH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAyD,CAAA;AAE5G,qFAAqF;AACrF,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAEtH,sFAAsF;AACtF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA;AAEhH,qFAAqF;AACrF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAwD,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { Linter } from 'eslint';
2
+ export type LintTier = 0 | 1 | 2 | 3 | 4;
3
+ export interface RecommendedConfigOptions {
4
+ isTypeChecked?: boolean;
5
+ tier?: LintTier;
6
+ }
7
+ export declare const DEFAULT_RECOMMENDED_CONFIG_OPTIONS: Required<RecommendedConfigOptions>;
8
+ export declare function resolveRecommendedConfigOptions(options?: RecommendedConfigOptions): Required<RecommendedConfigOptions>;
9
+ export declare function recommendedConfig(options?: RecommendedConfigOptions): Linter.Config[];
10
+ export declare function formatRecommendedConfigCall(options: RecommendedConfigOptions): string;
11
+ export declare function parseRecommendedConfigSource(source: string): {
12
+ configKind: 'custom' | 'preset';
13
+ options: Required<RecommendedConfigOptions>;
14
+ } | undefined;
15
+ export declare function applyRecommendedConfigTypeChecked(source: string, isEnabled: boolean): string;
16
+ //# sourceMappingURL=recommendedConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendedConfig.d.ts","sourceRoot":"","sources":["../../../src/tiers/recommendedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAsBpC,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAExC,MAAM,WAAW,wBAAwB;IACvC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB;AAED,eAAO,MAAM,kCAAkC,EAAE,QAAQ,CAAC,wBAAwB,CAGjF,CAAA;AAqFD,wBAAgB,+BAA+B,CAC7C,OAAO,CAAC,EAAE,wBAAwB,GACjC,QAAQ,CAAC,wBAAwB,CAAC,CAKpC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,CAGrF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAGrF;AA4BD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,GACb;IAAE,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAA;CAAE,GAAG,SAAS,CAQ9F;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,GACjB,MAAM,CAOR"}
@@ -824,61 +824,151 @@ var experimentalUnicornLayerConfig = {
824
824
  var experimentalLayerConfig = experimentalUnicornLayerConfig;
825
825
  var experimentalPromotionRules = experimentalUnicornLayerConfig.rules;
826
826
 
827
- // src/tiers/index.ts
827
+ // src/tiers/recommendedConfig.ts
828
+ var DEFAULT_RECOMMENDED_CONFIG_OPTIONS = {
829
+ isTypeChecked: true,
830
+ tier: 3
831
+ };
832
+ var composedConfigModules = [
833
+ "bestPracticesCoreConfig",
834
+ "consistencyRulesConfig",
835
+ "correctnessCoreConfig",
836
+ "importConfig",
837
+ "rulesConfig",
838
+ "typescriptConfig",
839
+ "typescriptConsistencyConfig",
840
+ "typescriptCorrectnessConfig",
841
+ "typescriptTypeCheckedConfig",
842
+ "typescriptTypeCheckedConsistencyConfig",
843
+ "typescriptTypeCheckedCorrectnessConfig",
844
+ "unicornConfig",
845
+ "workspacesConfig"
846
+ ];
828
847
  function mergeTierConfigs(...parts) {
829
848
  return parts.flat();
830
849
  }
831
- var configTier0Correctness = mergeTierConfigs(
832
- markdownConfig,
833
- correctnessCoreConfig,
834
- typescriptCorrectnessConfig
835
- );
836
- var configTier0CorrectnessTypeChecked = mergeTierConfigs(
837
- markdownConfig,
838
- correctnessCoreConfig,
839
- typescriptTypeCheckedCorrectnessConfig
840
- );
841
- var configTier1Consistency = mergeTierConfigs(
842
- configTier0Correctness,
843
- [consistencyRulesConfig],
844
- typescriptConsistencyConfig,
845
- [typescriptDelegationConfig]
846
- );
847
- var configTier1ConsistencyTypeChecked = mergeTierConfigs(
848
- configTier0CorrectnessTypeChecked,
849
- [consistencyRulesConfig],
850
- typescriptTypeCheckedConsistencyConfig,
851
- [typescriptDelegationConfig]
852
- );
853
- var configTier2BestPractices = mergeTierConfigs(
854
- configTier1Consistency,
855
- bestPracticesCoreConfig,
856
- importConfig
857
- );
858
- var configTier2BestPracticesTypeChecked = mergeTierConfigs(
859
- configTier1ConsistencyTypeChecked,
860
- bestPracticesCoreConfig,
861
- importConfig
862
- );
863
- var configTier3Opinionated = mergeTierConfigs(
864
- configTier2BestPractices,
865
- [opinionatedUnicornV66LayerConfig, opinionatedPromotionLayerConfig]
866
- );
867
- var configTier3OpinionatedTypeChecked = mergeTierConfigs(
868
- configTier2BestPracticesTypeChecked,
869
- [opinionatedUnicornV66LayerConfig, opinionatedPromotionLayerConfig]
870
- );
871
- var configTier4Experimental = mergeTierConfigs(
872
- configTier3Opinionated,
873
- [experimentalUnicornLayerConfig]
874
- );
875
- var configTier4ExperimentalTypeChecked = mergeTierConfigs(
876
- configTier3OpinionatedTypeChecked,
877
- [experimentalUnicornLayerConfig]
878
- );
879
- var recommendedConfig = configTier2BestPractices;
880
- var recommendedTypeCheckedConfig = configTier2BestPracticesTypeChecked;
881
- var config = configTier2BestPracticesTypeChecked;
850
+ function buildTier0(isTypeChecked) {
851
+ return mergeTierConfigs(
852
+ markdownConfig,
853
+ correctnessCoreConfig,
854
+ isTypeChecked ? typescriptTypeCheckedCorrectnessConfig : typescriptCorrectnessConfig
855
+ );
856
+ }
857
+ function buildTier1(isTypeChecked) {
858
+ return mergeTierConfigs(
859
+ buildTier0(isTypeChecked),
860
+ [consistencyRulesConfig],
861
+ isTypeChecked ? typescriptTypeCheckedConsistencyConfig : typescriptConsistencyConfig,
862
+ [typescriptDelegationConfig]
863
+ );
864
+ }
865
+ function buildTier2(isTypeChecked) {
866
+ return mergeTierConfigs(
867
+ buildTier1(isTypeChecked),
868
+ bestPracticesCoreConfig,
869
+ importConfig
870
+ );
871
+ }
872
+ function buildTier3(isTypeChecked) {
873
+ return mergeTierConfigs(
874
+ buildTier2(isTypeChecked),
875
+ [opinionatedUnicornV66LayerConfig, opinionatedPromotionLayerConfig]
876
+ );
877
+ }
878
+ function buildTier4(isTypeChecked) {
879
+ return mergeTierConfigs(
880
+ buildTier3(isTypeChecked),
881
+ [experimentalUnicornLayerConfig]
882
+ );
883
+ }
884
+ function buildTierConfig(tier, isTypeChecked) {
885
+ switch (tier) {
886
+ case 0: {
887
+ return buildTier0(isTypeChecked);
888
+ }
889
+ case 1: {
890
+ return buildTier1(isTypeChecked);
891
+ }
892
+ case 2: {
893
+ return buildTier2(isTypeChecked);
894
+ }
895
+ case 3: {
896
+ return buildTier3(isTypeChecked);
897
+ }
898
+ case 4: {
899
+ return buildTier4(isTypeChecked);
900
+ }
901
+ default: {
902
+ const unsupported = tier;
903
+ throw new Error(`Unsupported lint tier ${unsupported}`);
904
+ }
905
+ }
906
+ }
907
+ function resolveRecommendedConfigOptions(options) {
908
+ return {
909
+ isTypeChecked: options?.isTypeChecked ?? DEFAULT_RECOMMENDED_CONFIG_OPTIONS.isTypeChecked,
910
+ tier: options?.tier ?? DEFAULT_RECOMMENDED_CONFIG_OPTIONS.tier
911
+ };
912
+ }
913
+ function recommendedConfig(options) {
914
+ const resolved = resolveRecommendedConfigOptions(options);
915
+ return buildTierConfig(resolved.tier, resolved.isTypeChecked);
916
+ }
917
+ function formatRecommendedConfigCall(options) {
918
+ const resolved = resolveRecommendedConfigOptions(options);
919
+ return `recommendedConfig({ tier: ${resolved.tier}, isTypeChecked: ${String(resolved.isTypeChecked)} })`;
920
+ }
921
+ function hasComposedConfigModules(source) {
922
+ return composedConfigModules.some((module) => source.includes(module));
923
+ }
924
+ function parseRecommendedConfigOptionsLiteral(literal) {
925
+ const resolved = { ...DEFAULT_RECOMMENDED_CONFIG_OPTIONS };
926
+ if (literal === void 0 || literal.trim().length === 0) return resolved;
927
+ const tierMatch = /tier:\s*([0-4])\b/.exec(literal);
928
+ if (tierMatch !== null) {
929
+ resolved.tier = Number(tierMatch[1]);
930
+ }
931
+ const isTypeCheckedMatch = /isTypeChecked:\s*(true|false)\b/.exec(literal);
932
+ if (isTypeCheckedMatch === null) {
933
+ const legacyTypeCheckedMatch = /typeChecked:\s*(true|false)\b/.exec(literal);
934
+ if (legacyTypeCheckedMatch !== null) {
935
+ resolved.isTypeChecked = legacyTypeCheckedMatch[1] === "true";
936
+ }
937
+ } else {
938
+ resolved.isTypeChecked = isTypeCheckedMatch[1] === "true";
939
+ }
940
+ return resolved;
941
+ }
942
+ function parseRecommendedConfigSource(source) {
943
+ const callPattern = /recommendedConfig\s*\(\s*(?:\{([^}]*)\})?\s*\)/g;
944
+ const match = callPattern.exec(source);
945
+ if (match === null) return void 0;
946
+ const options = parseRecommendedConfigOptionsLiteral(match[1]);
947
+ const configKind = hasComposedConfigModules(source) ? "custom" : "preset";
948
+ return { configKind, options };
949
+ }
950
+ function applyRecommendedConfigTypeChecked(source, isEnabled) {
951
+ const callPattern = /recommendedConfig\s*\(\s*(?:\{([^}]*)\})?\s*\)/g;
952
+ return source.replaceAll(callPattern, (_match, literal) => {
953
+ const options = parseRecommendedConfigOptionsLiteral(literal);
954
+ options.isTypeChecked = isEnabled;
955
+ return formatRecommendedConfigCall(options);
956
+ });
957
+ }
958
+
959
+ // src/tiers/index.ts
960
+ var configTier0Correctness = recommendedConfig({ tier: 0, isTypeChecked: false });
961
+ var configTier0CorrectnessTypeChecked = recommendedConfig({ tier: 0, isTypeChecked: true });
962
+ var configTier1Consistency = recommendedConfig({ tier: 1, isTypeChecked: false });
963
+ var configTier1ConsistencyTypeChecked = recommendedConfig({ tier: 1, isTypeChecked: true });
964
+ var configTier2BestPractices = recommendedConfig({ tier: 2, isTypeChecked: false });
965
+ var configTier2BestPracticesTypeChecked = recommendedConfig({ tier: 2, isTypeChecked: true });
966
+ var configTier3Opinionated = recommendedConfig({ tier: 3, isTypeChecked: false });
967
+ var configTier3OpinionatedTypeChecked = recommendedConfig({ tier: 3, isTypeChecked: true });
968
+ var configTier4Experimental = recommendedConfig({ tier: 4, isTypeChecked: false });
969
+ var configTier4ExperimentalTypeChecked = recommendedConfig({ tier: 4, isTypeChecked: true });
970
+ var recommendedTypeCheckedConfig = recommendedConfig({ tier: 2, isTypeChecked: true });
971
+ var config = recommendedConfig({ tier: 2, isTypeChecked: true });
882
972
 
883
973
  // src/tiers/plugin-rules.ts
884
974
  import js2 from "@eslint/js";
@@ -994,7 +1084,9 @@ var docsConfig = [
994
1084
  json5Config
995
1085
  ];
996
1086
  export {
1087
+ DEFAULT_RECOMMENDED_CONFIG_OPTIONS,
997
1088
  RULE_OWNERSHIP_GROUPS,
1089
+ applyRecommendedConfigTypeChecked,
998
1090
  assertNoRuleOwnershipConflicts,
999
1091
  bestPracticesCoreConfig,
1000
1092
  collectPluginRuleSnapshots,
@@ -1018,6 +1110,7 @@ export {
1018
1110
  experimentalPromotionRules,
1019
1111
  experimentalUnicornLayerConfig,
1020
1112
  findRuleOwnershipConflicts,
1113
+ formatRecommendedConfigCall,
1021
1114
  ignores,
1022
1115
  importConfig,
1023
1116
  json5Config,
@@ -1029,8 +1122,10 @@ export {
1029
1122
  opinionatedPromotionLayerConfig,
1030
1123
  opinionatedPromotionRules,
1031
1124
  opinionatedUnicornV66LayerConfig,
1125
+ parseRecommendedConfigSource,
1032
1126
  recommendedConfig,
1033
1127
  recommendedTypeCheckedConfig,
1128
+ resolveRecommendedConfigOptions,
1034
1129
  rulesConfig,
1035
1130
  serializePluginRuleSnapshots,
1036
1131
  srcImportsConfig,