@herb-tools/config 0.8.10 → 0.9.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/README.md +1 -1
- package/dist/{src/config-schema.js → config-schema.js} +9 -0
- package/dist/config-schema.js.map +1 -0
- package/dist/{src/config.js → config.js} +73 -83
- package/dist/config.js.map +1 -0
- package/dist/herb-config.cjs +87 -87
- package/dist/herb-config.cjs.map +1 -1
- package/dist/herb-config.esm.js +88 -88
- package/dist/herb-config.esm.js.map +1 -1
- package/dist/index.js.map +1 -0
- package/dist/{src/merge.js → merge.js} +1 -1
- package/dist/merge.js.map +1 -0
- package/dist/types/config-schema.d.ts +19 -0
- package/dist/types/config.d.ts +16 -6
- package/dist/{src/vscode.js → vscode.js} +1 -1
- package/dist/vscode.js.map +1 -0
- package/package.json +2 -2
- package/src/config-schema.ts +11 -0
- package/src/config-template.yml +7 -1
- package/src/config.ts +90 -87
- package/src/merge.ts +1 -1
- package/src/vscode.ts +1 -1
- package/dist/package.json +0 -49
- package/dist/src/config-schema.js.map +0 -1
- package/dist/src/config.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/merge.js.map +0 -1
- package/dist/src/vscode.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types/src/config-schema.d.ts +0 -102
- package/dist/types/src/config.d.ts +0 -365
- package/dist/types/src/index.d.ts +0 -5
- package/dist/types/src/merge.d.ts +0 -11
- package/dist/types/src/vscode.d.ts +0 -13
- /package/dist/{src/index.js → index.js} +0 -0
package/README.md
CHANGED
|
@@ -31,9 +31,18 @@ export const FormatterConfigSchema = z.object({
|
|
|
31
31
|
maxLineLength: z.number().int().positive().optional().describe("Maximum line length before wrapping"),
|
|
32
32
|
rewriter: RewriterConfigSchema.describe("Rewriter configuration for pre and post-format transformations"),
|
|
33
33
|
}).strict().optional();
|
|
34
|
+
export const ValidatorsConfigSchema = z.object({
|
|
35
|
+
security: z.boolean().optional().describe("Enable or disable the security validator (default: true)"),
|
|
36
|
+
nesting: z.boolean().optional().describe("Enable or disable the nesting validator (default: true)"),
|
|
37
|
+
accessibility: z.boolean().optional().describe("Enable or disable the accessibility validator (default: true)"),
|
|
38
|
+
}).strict().optional();
|
|
39
|
+
export const EngineConfigSchema = z.object({
|
|
40
|
+
validators: ValidatorsConfigSchema.describe("Per-validator enable/disable configuration"),
|
|
41
|
+
}).strict().optional();
|
|
34
42
|
export const HerbConfigSchema = z.object({
|
|
35
43
|
version: z.string().describe("Configuration file version"),
|
|
36
44
|
files: FilesConfigSchema.describe("Top-level file configuration"),
|
|
45
|
+
engine: EngineConfigSchema.describe("Engine configuration"),
|
|
37
46
|
linter: LinterConfigSchema,
|
|
38
47
|
formatter: FormatterConfigSchema,
|
|
39
48
|
}).strict();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,9 @@ import { HerbConfigSchema } from "./config-schema.js";
|
|
|
9
9
|
import { deepMerge } from "./merge.js";
|
|
10
10
|
import packageJson from "../package.json";
|
|
11
11
|
import configTemplate from "./config-template.yml";
|
|
12
|
+
import defaultsYaml from "../../../../lib/herb/defaults.yml";
|
|
12
13
|
const DEFAULT_VERSION = packageJson.version;
|
|
14
|
+
const PARSED_DEFAULTS = parse(defaultsYaml);
|
|
13
15
|
export class Config {
|
|
14
16
|
static configPath = ".herb.yml";
|
|
15
17
|
static PROJECT_INDICATORS = [
|
|
@@ -83,8 +85,9 @@ export class Config {
|
|
|
83
85
|
}
|
|
84
86
|
/**
|
|
85
87
|
* Get the files configuration for a specific tool.
|
|
86
|
-
*
|
|
87
|
-
* Include
|
|
88
|
+
* Both include and exclude patterns are additive:
|
|
89
|
+
* - Include: defaults + files.include + tool.include
|
|
90
|
+
* - Exclude: defaults + files.exclude + tool.exclude
|
|
88
91
|
* @param tool - The tool to get files config for ('linter' or 'formatter')
|
|
89
92
|
* @returns The merged files configuration
|
|
90
93
|
*/
|
|
@@ -94,7 +97,9 @@ export class Config {
|
|
|
94
97
|
const topLevelInclude = topLevelFiles.include || [];
|
|
95
98
|
const toolInclude = toolConfig?.include || [];
|
|
96
99
|
const include = [...topLevelInclude, ...toolInclude];
|
|
97
|
-
const
|
|
100
|
+
const topLevelExclude = topLevelFiles.exclude || [];
|
|
101
|
+
const toolExclude = toolConfig?.exclude || [];
|
|
102
|
+
const exclude = [...topLevelExclude, ...toolExclude];
|
|
98
103
|
return {
|
|
99
104
|
include,
|
|
100
105
|
exclude
|
|
@@ -178,7 +183,7 @@ export class Config {
|
|
|
178
183
|
}
|
|
179
184
|
/**
|
|
180
185
|
* Check if a tool (linter or formatter) is enabled for a specific file path.
|
|
181
|
-
* Respects
|
|
186
|
+
* Respects the tool's enabled state and all exclude patterns (defaults + files.exclude + tool.exclude).
|
|
182
187
|
* @param filePath - The file path to check
|
|
183
188
|
* @param tool - The tool to check ('linter' or 'formatter')
|
|
184
189
|
* @returns true if the tool is enabled for this path
|
|
@@ -188,8 +193,8 @@ export class Config {
|
|
|
188
193
|
if (!isEnabled) {
|
|
189
194
|
return false;
|
|
190
195
|
}
|
|
191
|
-
const
|
|
192
|
-
const excludePatterns =
|
|
196
|
+
const filesConfig = this.getFilesConfigForTool(tool);
|
|
197
|
+
const excludePatterns = filesConfig.exclude || [];
|
|
193
198
|
return !this.isPathExcluded(filePath, excludePatterns);
|
|
194
199
|
}
|
|
195
200
|
/**
|
|
@@ -212,11 +217,11 @@ export class Config {
|
|
|
212
217
|
}
|
|
213
218
|
/**
|
|
214
219
|
* Check if a specific rule is enabled for a specific file path.
|
|
215
|
-
* Respects
|
|
220
|
+
* Respects rule.enabled, rule.include, rule.only, and rule.exclude patterns.
|
|
216
221
|
*
|
|
217
222
|
* Pattern precedence:
|
|
218
|
-
* - If rule.only
|
|
219
|
-
* - If rule.only
|
|
223
|
+
* - If rule.only or rule.include matches the path: bypasses parent excludes (linter.exclude, files.exclude, defaults)
|
|
224
|
+
* - If no rule.only/include patterns or path doesn't match: respects all parent excludes
|
|
220
225
|
* - rule.exclude is always applied regardless of 'only' or 'include'
|
|
221
226
|
*
|
|
222
227
|
* @param ruleName - The name of the rule to check
|
|
@@ -224,7 +229,7 @@ export class Config {
|
|
|
224
229
|
* @returns true if the rule is enabled for this path
|
|
225
230
|
*/
|
|
226
231
|
isRuleEnabledForPath(ruleName, filePath) {
|
|
227
|
-
if (!this.
|
|
232
|
+
if (!this.isLinterEnabled) {
|
|
228
233
|
return false;
|
|
229
234
|
}
|
|
230
235
|
if (this.isRuleDisabled(ruleName)) {
|
|
@@ -234,13 +239,25 @@ export class Config {
|
|
|
234
239
|
const ruleOnlyPatterns = ruleConfig?.only || [];
|
|
235
240
|
const ruleIncludePatterns = ruleConfig?.include || [];
|
|
236
241
|
const ruleExcludePatterns = ruleConfig?.exclude || [];
|
|
242
|
+
let bypassParentExcludes = false;
|
|
237
243
|
if (ruleOnlyPatterns.length > 0) {
|
|
238
|
-
if (
|
|
244
|
+
if (this.isPathIncluded(filePath, ruleOnlyPatterns)) {
|
|
245
|
+
bypassParentExcludes = true;
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
239
248
|
return false;
|
|
240
249
|
}
|
|
241
250
|
}
|
|
242
251
|
else if (ruleIncludePatterns.length > 0) {
|
|
243
|
-
if (
|
|
252
|
+
if (this.isPathIncluded(filePath, ruleIncludePatterns)) {
|
|
253
|
+
bypassParentExcludes = true;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
if (!bypassParentExcludes) {
|
|
260
|
+
if (!this.isLinterEnabledForPath(filePath)) {
|
|
244
261
|
return false;
|
|
245
262
|
}
|
|
246
263
|
}
|
|
@@ -577,7 +594,7 @@ export class Config {
|
|
|
577
594
|
result.push('');
|
|
578
595
|
}
|
|
579
596
|
}
|
|
580
|
-
if (/^ [a-z][\w-]*:/.test(line) && prevLine &&
|
|
597
|
+
if (/^ [a-z][\w-]*:/.test(line) && prevLine && prevLine.startsWith(' ')) {
|
|
581
598
|
result.push('');
|
|
582
599
|
}
|
|
583
600
|
result.push(line);
|
|
@@ -731,7 +748,7 @@ export class Config {
|
|
|
731
748
|
console.error(`✓ Created default configuration at ${configPath}`);
|
|
732
749
|
}
|
|
733
750
|
}
|
|
734
|
-
catch (
|
|
751
|
+
catch (_error) {
|
|
735
752
|
if (!silent) {
|
|
736
753
|
console.error(`⚠ Could not create config file at ${configPath}, using defaults in-memory`);
|
|
737
754
|
}
|
|
@@ -820,62 +837,57 @@ export class Config {
|
|
|
820
837
|
* Read, parse, and validate config file
|
|
821
838
|
*/
|
|
822
839
|
static async readAndValidateConfig(configPath, projectRoot, version, exitOnError = false) {
|
|
840
|
+
const content = await fs.readFile(configPath, "utf8");
|
|
841
|
+
let parsed;
|
|
823
842
|
try {
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
843
|
+
parsed = parse(content);
|
|
844
|
+
}
|
|
845
|
+
catch (error) {
|
|
846
|
+
if (exitOnError) {
|
|
847
|
+
console.error(`\n✗ Invalid YAML syntax in ${configPath}`);
|
|
848
|
+
if (error instanceof Error) {
|
|
849
|
+
console.error(` ${error.message}\n`);
|
|
850
|
+
}
|
|
851
|
+
process.exit(1);
|
|
828
852
|
}
|
|
829
|
-
|
|
853
|
+
else {
|
|
854
|
+
throw new Error(`Invalid YAML syntax in ${configPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
if (parsed === null || parsed === undefined) {
|
|
858
|
+
parsed = {};
|
|
859
|
+
}
|
|
860
|
+
if (!parsed.version) {
|
|
861
|
+
parsed.version = version;
|
|
862
|
+
}
|
|
863
|
+
try {
|
|
864
|
+
HerbConfigSchema.parse(parsed);
|
|
865
|
+
}
|
|
866
|
+
catch (error) {
|
|
867
|
+
if (error instanceof ZodError) {
|
|
868
|
+
const validationError = fromZodError(error, {
|
|
869
|
+
prefix: `Configuration errors in ${configPath}`,
|
|
870
|
+
});
|
|
830
871
|
if (exitOnError) {
|
|
831
|
-
console.error(`\n✗
|
|
832
|
-
if (error instanceof Error) {
|
|
833
|
-
console.error(` ${error.message}\n`);
|
|
834
|
-
}
|
|
872
|
+
console.error(`\n✗ ${validationError.toString()}\n`);
|
|
835
873
|
process.exit(1);
|
|
836
874
|
}
|
|
837
875
|
else {
|
|
838
|
-
throw new Error(
|
|
839
|
-
}
|
|
840
|
-
}
|
|
841
|
-
if (parsed === null || parsed === undefined) {
|
|
842
|
-
parsed = {};
|
|
843
|
-
}
|
|
844
|
-
if (!parsed.version) {
|
|
845
|
-
parsed.version = version;
|
|
846
|
-
}
|
|
847
|
-
try {
|
|
848
|
-
HerbConfigSchema.parse(parsed);
|
|
849
|
-
}
|
|
850
|
-
catch (error) {
|
|
851
|
-
if (error instanceof ZodError) {
|
|
852
|
-
const validationError = fromZodError(error, {
|
|
853
|
-
prefix: `Configuration errors in ${configPath}`,
|
|
854
|
-
});
|
|
855
|
-
if (exitOnError) {
|
|
856
|
-
console.error(`\n✗ ${validationError.toString()}\n`);
|
|
857
|
-
process.exit(1);
|
|
858
|
-
}
|
|
859
|
-
else {
|
|
860
|
-
throw new Error(validationError.toString());
|
|
861
|
-
}
|
|
876
|
+
throw new Error(validationError.toString());
|
|
862
877
|
}
|
|
863
|
-
throw error;
|
|
864
|
-
}
|
|
865
|
-
if (parsed.version && parsed.version !== version) {
|
|
866
|
-
console.error(`\n⚠️ Configuration version mismatch in ${configPath}`);
|
|
867
|
-
console.error(` Config version: ${parsed.version}`);
|
|
868
|
-
console.error(` Current version: ${version}`);
|
|
869
|
-
console.error(` Consider updating your .herb.yml file.\n`);
|
|
870
878
|
}
|
|
871
|
-
const defaults = this.getDefaultConfig(version);
|
|
872
|
-
const resolved = deepMerge(defaults, parsed);
|
|
873
|
-
resolved.version = version;
|
|
874
|
-
return new Config(projectRoot, resolved);
|
|
875
|
-
}
|
|
876
|
-
catch (error) {
|
|
877
879
|
throw error;
|
|
878
880
|
}
|
|
881
|
+
if (parsed.version && parsed.version !== version) {
|
|
882
|
+
console.error(`\n⚠️ Configuration version mismatch in ${configPath}`);
|
|
883
|
+
console.error(` Config version: ${parsed.version}`);
|
|
884
|
+
console.error(` Current version: ${version}`);
|
|
885
|
+
console.error(` Consider updating your .herb.yml file.\n`);
|
|
886
|
+
}
|
|
887
|
+
const defaults = this.getDefaultConfig(version);
|
|
888
|
+
const resolved = deepMerge(defaults, parsed);
|
|
889
|
+
resolved.version = version;
|
|
890
|
+
return new Config(projectRoot, resolved);
|
|
879
891
|
}
|
|
880
892
|
/**
|
|
881
893
|
* Get default configuration object
|
|
@@ -883,29 +895,7 @@ export class Config {
|
|
|
883
895
|
static getDefaultConfig(version = DEFAULT_VERSION) {
|
|
884
896
|
return {
|
|
885
897
|
version,
|
|
886
|
-
|
|
887
|
-
include: [
|
|
888
|
-
'**/*.html',
|
|
889
|
-
'**/*.rhtml',
|
|
890
|
-
'**/*.html.erb',
|
|
891
|
-
'**/*.html+*.erb',
|
|
892
|
-
'**/*.turbo_stream.erb'
|
|
893
|
-
],
|
|
894
|
-
exclude: [
|
|
895
|
-
'node_modules/**/*',
|
|
896
|
-
'vendor/bundle/**/*',
|
|
897
|
-
'coverage/**/*',
|
|
898
|
-
]
|
|
899
|
-
},
|
|
900
|
-
linter: {
|
|
901
|
-
enabled: true,
|
|
902
|
-
rules: {}
|
|
903
|
-
},
|
|
904
|
-
formatter: {
|
|
905
|
-
enabled: false,
|
|
906
|
-
indentWidth: 2,
|
|
907
|
-
maxLineLength: 80
|
|
908
|
-
}
|
|
898
|
+
...PARSED_DEFAULTS
|
|
909
899
|
};
|
|
910
900
|
}
|
|
911
901
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAGjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,OAAO,WAAW,MAAM,iBAAiB,CAAA;AACzC,OAAO,cAAc,MAAM,uBAAuB,CAAA;AAClD,OAAO,YAAY,MAAM,mCAAmC,CAAA;AAE5D,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAA;AAC3C,MAAM,eAAe,GAAG,KAAK,CAAC,YAAY,CAAgC,CAAA;AA8E1E,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,UAAU,GAAG,WAAW,CAAA;IAEvB,MAAM,CAAC,kBAAkB,GAAG;QAClC,MAAM;QACN,OAAO;QACP,WAAW;QACX,SAAS;QACT,cAAc;QACd,UAAU;QACV,WAAW;QACX,WAAW;QACX,uBAAuB;KACxB,CAAA;IAEe,IAAI,CAAQ;IACrB,MAAM,CAAY;IAEzB,YAAY,WAAmB,EAAE,MAAkB;QACjD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAA;QACzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED,IAAI,OAAO;QACT,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACjC,CAAA;IACH,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;IAC9B,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAChD,CAAC;IAED;;;OAGG;IACH,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAA;IACzF,CAAC;IAED;;;OAGG;IACH,IAAW,kBAAkB;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,OAAO,IAAI,KAAK,CAAA;IAChG,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,QAAgB;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,KAAK,CAAA;IACjE,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,QAAgB;QACnC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IACvC,CAAC;IAED;;;;;;;OAOG;IACI,qBAAqB,CAAC,IAA4B;QACvD,MAAM,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;QACjF,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;QAE7C,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,IAAI,EAAE,CAAA;QACnD,MAAM,WAAW,GAAG,UAAU,EAAE,OAAO,IAAI,EAAE,CAAA;QAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC,CAAA;QAEpD,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,IAAI,EAAE,CAAA;QACnD,MAAM,WAAW,GAAG,UAAU,EAAE,OAAO,IAAI,EAAE,CAAA;QAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC,CAAA;QAEpD,OAAO;YACL,OAAO;YACP,OAAO;SACR,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;IAC7C,CAAC;IAED;;;;OAIG;IACH,IAAW,uBAAuB;QAChC,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAChD,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,gBAAgB,CAAC,IAA4B,EAAE,GAAY;QACtE,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAEpD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAA;QAE1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,QAAQ,EAAE;YAC1B,GAAG,EAAE,SAAS;YACd,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,WAAW,CAAC,OAAO,IAAI,EAAE;SAClC,CAAC,CAAA;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,kBAAkB,CAAC,GAAY;QAC1C,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC7C,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,qBAAqB,CAAC,GAAY;QAC7C,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;IAChD,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,QAAgB,EAAE,eAA0B;QACjE,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,QAAgB,EAAE,eAA0B;QACjE,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED;;;;;;OAMG;IACI,gBAAgB,CAAC,QAAgB,EAAE,IAA4B;QACpE,MAAM,SAAS,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAA;QAEpF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAA;QAEjD,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;IACxD,CAAC;IAED;;;;;OAKG;IACI,sBAAsB,CAAC,QAAgB;QAC5C,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED;;;;;OAKG;IACI,yBAAyB,CAAC,QAAgB;QAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,oBAAoB,CAAC,QAAgB,EAAE,QAAgB;QAC5D,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAA;QACxD,MAAM,gBAAgB,GAAG,UAAU,EAAE,IAAI,IAAI,EAAE,CAAA;QAC/C,MAAM,mBAAmB,GAAG,UAAU,EAAE,OAAO,IAAI,EAAE,CAAA;QACrD,MAAM,mBAAmB,GAAG,UAAU,EAAE,OAAO,IAAI,EAAE,CAAA;QAErD,IAAI,oBAAoB,GAAG,KAAK,CAAA;QAEhC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC;gBACpD,oBAAoB,GAAG,IAAI,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;aAAM,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,CAAC;gBACvD,oBAAoB,GAAG,IAAI,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAA;IAC5D,CAAC;IAED;;;OAGG;IACI,qBAAqB,CAAC,QAAgB,EAAE,eAAmC;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAA;QAExD,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,UAAU,CAAC,QAAQ,CAAA;QAC5B,CAAC;QAED,OAAO,eAAe,CAAA;IACxB,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAA2D,QAAa;QACnG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC5D,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACtC,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAA;YACtD,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,yBAAyB,CAAC,WAAmB;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,sBAAsB;QAC3B,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAA;IACrD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,UAAkB;QAC9B,IAAI,CAAC;YACH,IAAI,UAAkB,CAAA;YAEtB,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzC,UAAU,GAAG,UAAU,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAA;YACzD,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;YAElC,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,SAAiB;QAC5C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;QAE5D,OAAO,WAAW,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAiB;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAEzC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;YAE1C,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;YAE1D,IAAI,CAAC;gBACH,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;gBAE7B,OAAO,WAAW,CAAA;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;YAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAChD,IAAI,CAAC;oBACH,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;oBAEpD,OAAO,WAAW,CAAA;gBACpB,CAAC;gBAAC,MAAM,CAAC;oBACP,yCAAyC;gBAC3C,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YAE5C,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC/B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAA;YACtB,CAAC;YAED,WAAW,GAAG,UAAU,CAAA;QAC1B,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,UAAkB;QACnC,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;YACrD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAA;QAE9C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,UAAkB,EAClB,UAAuB,EAAE;QAEzB,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,eAAe,EAAE,eAAe,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;QAE3G,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzC,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;YAClF,CAAC;YAED,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;YAEzE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;YACvF,CAAC;iBAAM,IAAI,eAAe,EAAE,CAAC;gBAC3B,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrE,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;gBAE/C,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAA;YACb,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,UAAkB,EAAE,OAAgB;QAC7D,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACjC,MAAM,EAAE,IAAI;YACZ,OAAO;YACP,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,UAAkB,EAClB,OAAgB,EAChB,kBAA2B,KAAK;QAEhC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACjC,MAAM,EAAE,KAAK;YACb,OAAO;YACP,eAAe;YACf,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,UAAkB,EAClB,QAAoC;QAEpC,IAAI,WAAmB,CAAA;QAEvB,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAE9D,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;gBAE/C,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;gBAEhE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBACxB,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;oBACpD,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC,CAAA;gBACnF,CAAC;gBAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACtB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;oBAEzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7B,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;oBAC1C,CAAC;gBACH,CAAC;gBAED,WAAW,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,eAAe,CAAA;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAA;YACb,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,WAAW,GAAG,cAAc,CAAC,OAAO,CAClC,sBAAsB,EACtB,YAAY,eAAe,EAAE,CAC9B,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;gBACvD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAe,CAAA;gBAE3D,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE;oBAC/B,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,CAAC;oBACZ,UAAU,EAAE,SAAS;iBACtB,CAAC,CAAA;gBAEF,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;QAED,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,yBAAyB,CAC9B,WAAmB,EACnB,QAAoC;QAEpC,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;QAE3C,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC3D,CAAC;QAED,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAA;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,sBAAsB,CAC3B,QAAoC,EACpC,UAAkB,eAAe;QAEjC,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,CACtC,sBAAsB,EACtB,YAAY,OAAO,EAAE,CACtB,CAAA;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACrE,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,uBAAuB,CAAC,IAAS,EAAE,QAAa;QAC7D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;YAE3B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChE,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAE9B,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;oBACjB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAC5B,CAAC;gBAED,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;gBACjD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,IAAY;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAA;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YAE7B,IAAI,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACtE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACjB,CAAC;YACH,CAAC;YAED,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACjB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAU,CACf,OAAmC,EACnC,UAA6B,EAAE;QAE/B,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,eAAe,EAAE,GAAG,OAAO,CAAA;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAe,SAAS,CAAC,QAAQ,EAAE,OAAc,CAAC,CAAA;QAE9D,IAAI,CAAC;YACH,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;gBAC9B,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,EAAE;oBAC1C,MAAM,EAAE,gCAAgC;iBACzC,CAAC,CAAA;gBAEF,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC7C,CAAC;YAED,MAAM,KAAK,CAAA;QACb,CAAC;QAED,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACxC,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,KAAK,CAAC,cAAc,CACjC,SAAiB;QAEjB,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAEzC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAExC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;YAE1D,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;gBAE3B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;YAE3D,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;YACvD,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YAE5C,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC/B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAA;YACzD,CAAC;YAED,WAAW,GAAG,UAAU,CAAA;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAe;QAChD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;gBAE9C,OAAO,IAAI,CAAA;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,UAAkB,EAClB,MAAe,EACf,OAAe,EACf,WAAoB;QAEpB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAE7C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAEzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpB,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,kCAAkC,YAAY,IAAI,CAAC,CAAA;oBAEjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAA;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,YAAY,IAAI,CAAC,CAAA;oBAE7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAA;gBAC3D,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAA;QACb,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;QAEhG,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAA;QAC9D,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,YAAY,CAC/B,UAAkB,EAClB,WAAmB,EACnB,MAAe,EACf,OAAe,EACf,WAAoB;QAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;QAE9F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACtC,WAAmB,EACnB,MAAe,EACf,OAAe;QAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QAErD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAEzB,OAAO,CAAC,KAAK,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAA;YAC7D,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;YAEtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAA;QAE9D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;YAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAA;YACnE,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,qCAAqC,UAAU,4BAA4B,CAAC,CAAA;YAC5F,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAE/C,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,IAAY,EACZ,OAGC;QAED,MAAM,MAAM,GAA4B,EAAE,CAAA;QAC1C,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAA;QAChC,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,CAAA;QAExC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;gBACrD,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAEzB,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,mDAAmD;oBAC5D,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,sBAAsB;oBAC5B,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,CAAC;oBACP,MAAM,EAAE,CAAC;iBACV,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;QACH,CAAC;QAED,IAAI,MAAW,CAAA;QAEf,IAAI,CAAC;YACH,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,IAAwB,CAAA;YAC5B,IAAI,MAA0B,CAAA;YAE9B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAEtE,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;gBAClC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACtC,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,qBAAqB;gBAC/C,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,OAAO;gBACjB,IAAI;gBACJ,MAAM;aACP,CAAC,CAAA;YAEF,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,GAAG,EAAE,CAAA;QACb,CAAC;QAED,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,0BAA0B,MAAM,CAAC,OAAO,oCAAoC,OAAO,0CAA0C;gBACtI,IAAI,EAAE,CAAC,SAAS,CAAC;gBACjB,IAAI,EAAE,kBAAkB;gBACxB,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAA;QACrC,CAAC;QAED,IAAI,CAAC;YACH,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACxC,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,OAAgB;iBAC3B,CAAC,CAAC,CAAC,CAAA;YACN,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,qBAAqB,CACxC,UAAkB,EAClB,WAAmB,EACnB,OAAe,EACf,cAAuB,KAAK;QAE5B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAErD,IAAI,MAAW,CAAA;QAEf,IAAI,CAAC;YACH,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAA;gBAEzD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAA;gBACvC,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACpH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,GAAG,EAAE,CAAA;QACb,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;gBAC9B,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,EAAE;oBAC1C,MAAM,EAAE,2BAA2B,UAAU,EAAE;iBAChD,CAAC,CAAA;gBAEF,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;oBAEpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC7C,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAA;QACb,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAA;YACrE,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;YACrD,OAAO,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAA;YAC/C,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,MAA6B,CAAC,CAAA;QAEnE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;QAE1B,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,gBAAgB,CAAC,UAAkB,eAAe;QAC/D,OAAO;YACL,OAAO;YACP,GAAG,eAAe;SACnB,CAAA;IACH,CAAC"}
|
package/dist/herb-config.cjs
CHANGED
|
@@ -4800,9 +4800,18 @@ const FormatterConfigSchema = object({
|
|
|
4800
4800
|
maxLineLength: number().int().positive().optional().describe("Maximum line length before wrapping"),
|
|
4801
4801
|
rewriter: RewriterConfigSchema.describe("Rewriter configuration for pre and post-format transformations"),
|
|
4802
4802
|
}).strict().optional();
|
|
4803
|
+
const ValidatorsConfigSchema = object({
|
|
4804
|
+
security: boolean().optional().describe("Enable or disable the security validator (default: true)"),
|
|
4805
|
+
nesting: boolean().optional().describe("Enable or disable the nesting validator (default: true)"),
|
|
4806
|
+
accessibility: boolean().optional().describe("Enable or disable the accessibility validator (default: true)"),
|
|
4807
|
+
}).strict().optional();
|
|
4808
|
+
const EngineConfigSchema = object({
|
|
4809
|
+
validators: ValidatorsConfigSchema.describe("Per-validator enable/disable configuration"),
|
|
4810
|
+
}).strict().optional();
|
|
4803
4811
|
const HerbConfigSchema = object({
|
|
4804
4812
|
version: string().describe("Configuration file version"),
|
|
4805
4813
|
files: FilesConfigSchema.describe("Top-level file configuration"),
|
|
4814
|
+
engine: EngineConfigSchema.describe("Engine configuration"),
|
|
4806
4815
|
linter: LinterConfigSchema,
|
|
4807
4816
|
formatter: FormatterConfigSchema,
|
|
4808
4817
|
}).strict();
|
|
@@ -4826,7 +4835,7 @@ function deepMerge(target, source) {
|
|
|
4826
4835
|
continue;
|
|
4827
4836
|
}
|
|
4828
4837
|
if (Array.isArray(sourceValue)) {
|
|
4829
|
-
if (key === 'include' && Array.isArray(targetValue)) {
|
|
4838
|
+
if ((key === 'include' || key === 'exclude') && Array.isArray(targetValue)) {
|
|
4830
4839
|
output[key] = [...targetValue, ...sourceValue];
|
|
4831
4840
|
}
|
|
4832
4841
|
else {
|
|
@@ -4844,13 +4853,16 @@ function deepMerge(target, source) {
|
|
|
4844
4853
|
return output;
|
|
4845
4854
|
}
|
|
4846
4855
|
|
|
4847
|
-
var version = "0.
|
|
4856
|
+
var version = "0.9.0";
|
|
4848
4857
|
var packageJson = {
|
|
4849
4858
|
version: version};
|
|
4850
4859
|
|
|
4851
|
-
var configTemplate = "# This file configures Herb for your project and team.\n# Settings here take precedence over individual editor preferences.\n#\n# Herb is a suite of tools for HTML+ERB templates including:\n# - Linter: Validates templates and enforces best practices\n# - Formatter: Auto-formats templates with intelligent indentation\n# - Language Server: Provides IDE support (VS Code, Zed, Neovim, etc.)\n#\n# Website: https://herb-tools.dev\n# Configuration: https://herb-tools.dev/configuration\n# GitHub Repo: https://github.com/marcoroth/herb\n#\n\nversion: 0.
|
|
4860
|
+
var configTemplate = "# This file configures Herb for your project and team.\n# Settings here take precedence over individual editor preferences.\n#\n# Herb is a suite of tools for HTML+ERB templates including:\n# - Linter: Validates templates and enforces best practices\n# - Formatter: Auto-formats templates with intelligent indentation\n# - Language Server: Provides IDE support (VS Code, Zed, Neovim, etc.)\n#\n# Website: https://herb-tools.dev\n# Configuration: https://herb-tools.dev/configuration\n# GitHub Repo: https://github.com/marcoroth/herb\n#\n\nversion: 0.9.0\n\n# files:\n# # Additional patterns beyond the defaults (**.html, **.rhtml, **.html.erb, etc.)\n# include:\n# - '**/*.xml.erb'\n# - 'custom/**/*.html'\n#\n# # Patterns to exclude (can exclude defaults too)\n# exclude:\n# - 'public/**/*'\n# - 'tmp/**/*'\n\n# engine:\n# validators:\n# security: true # default: true\n# nesting: true # default: true\n# accessibility: true # default: true\n\nlinter:\n enabled: true\n\n # # Exit with error code when diagnostics of this severity or higher are present\n # # Valid values: error (default), warning, info, hint\n # failLevel: warning\n\n # # Additional patterns beyond the defaults for linting\n # include:\n # - '**/*.xml.erb'\n #\n # # Patterns to exclude from linting\n # exclude:\n # - 'app/views/admin/**/*'\n\n # rules:\n # erb-no-extra-newline:\n # enabled: false\n #\n # # Rules can have 'include', 'only', and 'exclude' patterns\n # some-rule:\n # # Additional patterns to check (additive, ignored when 'only' is present)\n # include:\n # - 'app/components/**/*'\n # # Don't apply this rule to files matching these patterns\n # exclude:\n # - 'app/views/admin/**/*'\n #\n # another-rule:\n # # Only apply this rule to files matching these patterns (overrides all 'include')\n # only:\n # - 'app/views/**/*'\n # # Exclude still applies even with 'only'\n # exclude:\n # - 'app/views/admin/**/*'\n\nformatter:\n enabled: false\n indentWidth: 2\n maxLineLength: 80\n\n # # Additional patterns beyond the defaults for formatting\n # include:\n # - '**/*.xml.erb'\n #\n # # Patterns to exclude from formatting\n # exclude:\n # - 'app/views/admin/**/*'\n\n # # Rewriters modify templates during formatting\n # rewriter:\n # # Pre-format rewriters (modify AST before formatting)\n # pre:\n # - tailwind-class-sorter\n # # Post-format rewriters (modify formatted output string)\n # post: []\n";
|
|
4861
|
+
|
|
4862
|
+
var defaultsYaml = "files:\n include:\n - \"**/*.herb\"\n - \"**/*.html.erb\"\n - \"**/*.html.herb\"\n - \"**/*.html\"\n - \"**/*.html+*.erb\"\n - \"**/*.rhtml\"\n - \"**/*.turbo_stream.erb\"\n\n exclude:\n - \"coverage/**/*\"\n - \"log/**/*\"\n - \"node_modules/**/*\"\n - \"storage/**/*\"\n - \"tmp/**/*\"\n - \"vendor/**/*\"\n\nengine:\n validators:\n security: true\n nesting: true\n accessibility: true\n\nlinter:\n enabled: true\n rules: {}\n\nformatter:\n enabled: false\n indentWidth: 2\n maxLineLength: 80\n";
|
|
4852
4863
|
|
|
4853
4864
|
const DEFAULT_VERSION = packageJson.version;
|
|
4865
|
+
const PARSED_DEFAULTS = yaml.parse(defaultsYaml);
|
|
4854
4866
|
class Config {
|
|
4855
4867
|
static configPath = ".herb.yml";
|
|
4856
4868
|
static PROJECT_INDICATORS = [
|
|
@@ -4924,8 +4936,9 @@ class Config {
|
|
|
4924
4936
|
}
|
|
4925
4937
|
/**
|
|
4926
4938
|
* Get the files configuration for a specific tool.
|
|
4927
|
-
*
|
|
4928
|
-
* Include
|
|
4939
|
+
* Both include and exclude patterns are additive:
|
|
4940
|
+
* - Include: defaults + files.include + tool.include
|
|
4941
|
+
* - Exclude: defaults + files.exclude + tool.exclude
|
|
4929
4942
|
* @param tool - The tool to get files config for ('linter' or 'formatter')
|
|
4930
4943
|
* @returns The merged files configuration
|
|
4931
4944
|
*/
|
|
@@ -4935,7 +4948,9 @@ class Config {
|
|
|
4935
4948
|
const topLevelInclude = topLevelFiles.include || [];
|
|
4936
4949
|
const toolInclude = toolConfig?.include || [];
|
|
4937
4950
|
const include = [...topLevelInclude, ...toolInclude];
|
|
4938
|
-
const
|
|
4951
|
+
const topLevelExclude = topLevelFiles.exclude || [];
|
|
4952
|
+
const toolExclude = toolConfig?.exclude || [];
|
|
4953
|
+
const exclude = [...topLevelExclude, ...toolExclude];
|
|
4939
4954
|
return {
|
|
4940
4955
|
include,
|
|
4941
4956
|
exclude
|
|
@@ -5019,7 +5034,7 @@ class Config {
|
|
|
5019
5034
|
}
|
|
5020
5035
|
/**
|
|
5021
5036
|
* Check if a tool (linter or formatter) is enabled for a specific file path.
|
|
5022
|
-
* Respects
|
|
5037
|
+
* Respects the tool's enabled state and all exclude patterns (defaults + files.exclude + tool.exclude).
|
|
5023
5038
|
* @param filePath - The file path to check
|
|
5024
5039
|
* @param tool - The tool to check ('linter' or 'formatter')
|
|
5025
5040
|
* @returns true if the tool is enabled for this path
|
|
@@ -5029,8 +5044,8 @@ class Config {
|
|
|
5029
5044
|
if (!isEnabled) {
|
|
5030
5045
|
return false;
|
|
5031
5046
|
}
|
|
5032
|
-
const
|
|
5033
|
-
const excludePatterns =
|
|
5047
|
+
const filesConfig = this.getFilesConfigForTool(tool);
|
|
5048
|
+
const excludePatterns = filesConfig.exclude || [];
|
|
5034
5049
|
return !this.isPathExcluded(filePath, excludePatterns);
|
|
5035
5050
|
}
|
|
5036
5051
|
/**
|
|
@@ -5053,11 +5068,11 @@ class Config {
|
|
|
5053
5068
|
}
|
|
5054
5069
|
/**
|
|
5055
5070
|
* Check if a specific rule is enabled for a specific file path.
|
|
5056
|
-
* Respects
|
|
5071
|
+
* Respects rule.enabled, rule.include, rule.only, and rule.exclude patterns.
|
|
5057
5072
|
*
|
|
5058
5073
|
* Pattern precedence:
|
|
5059
|
-
* - If rule.only
|
|
5060
|
-
* - If rule.only
|
|
5074
|
+
* - If rule.only or rule.include matches the path: bypasses parent excludes (linter.exclude, files.exclude, defaults)
|
|
5075
|
+
* - If no rule.only/include patterns or path doesn't match: respects all parent excludes
|
|
5061
5076
|
* - rule.exclude is always applied regardless of 'only' or 'include'
|
|
5062
5077
|
*
|
|
5063
5078
|
* @param ruleName - The name of the rule to check
|
|
@@ -5065,7 +5080,7 @@ class Config {
|
|
|
5065
5080
|
* @returns true if the rule is enabled for this path
|
|
5066
5081
|
*/
|
|
5067
5082
|
isRuleEnabledForPath(ruleName, filePath) {
|
|
5068
|
-
if (!this.
|
|
5083
|
+
if (!this.isLinterEnabled) {
|
|
5069
5084
|
return false;
|
|
5070
5085
|
}
|
|
5071
5086
|
if (this.isRuleDisabled(ruleName)) {
|
|
@@ -5075,13 +5090,25 @@ class Config {
|
|
|
5075
5090
|
const ruleOnlyPatterns = ruleConfig?.only || [];
|
|
5076
5091
|
const ruleIncludePatterns = ruleConfig?.include || [];
|
|
5077
5092
|
const ruleExcludePatterns = ruleConfig?.exclude || [];
|
|
5093
|
+
let bypassParentExcludes = false;
|
|
5078
5094
|
if (ruleOnlyPatterns.length > 0) {
|
|
5079
|
-
if (
|
|
5095
|
+
if (this.isPathIncluded(filePath, ruleOnlyPatterns)) {
|
|
5096
|
+
bypassParentExcludes = true;
|
|
5097
|
+
}
|
|
5098
|
+
else {
|
|
5080
5099
|
return false;
|
|
5081
5100
|
}
|
|
5082
5101
|
}
|
|
5083
5102
|
else if (ruleIncludePatterns.length > 0) {
|
|
5084
|
-
if (
|
|
5103
|
+
if (this.isPathIncluded(filePath, ruleIncludePatterns)) {
|
|
5104
|
+
bypassParentExcludes = true;
|
|
5105
|
+
}
|
|
5106
|
+
else {
|
|
5107
|
+
return false;
|
|
5108
|
+
}
|
|
5109
|
+
}
|
|
5110
|
+
if (!bypassParentExcludes) {
|
|
5111
|
+
if (!this.isLinterEnabledForPath(filePath)) {
|
|
5085
5112
|
return false;
|
|
5086
5113
|
}
|
|
5087
5114
|
}
|
|
@@ -5418,7 +5445,7 @@ class Config {
|
|
|
5418
5445
|
result.push('');
|
|
5419
5446
|
}
|
|
5420
5447
|
}
|
|
5421
|
-
if (/^ [a-z][\w-]*:/.test(line) && prevLine &&
|
|
5448
|
+
if (/^ [a-z][\w-]*:/.test(line) && prevLine && prevLine.startsWith(' ')) {
|
|
5422
5449
|
result.push('');
|
|
5423
5450
|
}
|
|
5424
5451
|
result.push(line);
|
|
@@ -5572,7 +5599,7 @@ class Config {
|
|
|
5572
5599
|
console.error(`✓ Created default configuration at ${configPath}`);
|
|
5573
5600
|
}
|
|
5574
5601
|
}
|
|
5575
|
-
catch (
|
|
5602
|
+
catch (_error) {
|
|
5576
5603
|
if (!silent) {
|
|
5577
5604
|
console.error(`⚠ Could not create config file at ${configPath}, using defaults in-memory`);
|
|
5578
5605
|
}
|
|
@@ -5661,62 +5688,57 @@ class Config {
|
|
|
5661
5688
|
* Read, parse, and validate config file
|
|
5662
5689
|
*/
|
|
5663
5690
|
static async readAndValidateConfig(configPath, projectRoot, version, exitOnError = false) {
|
|
5691
|
+
const content = await fs.promises.readFile(configPath, "utf8");
|
|
5692
|
+
let parsed;
|
|
5664
5693
|
try {
|
|
5665
|
-
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
5694
|
+
parsed = yaml.parse(content);
|
|
5695
|
+
}
|
|
5696
|
+
catch (error) {
|
|
5697
|
+
if (exitOnError) {
|
|
5698
|
+
console.error(`\n✗ Invalid YAML syntax in ${configPath}`);
|
|
5699
|
+
if (error instanceof Error) {
|
|
5700
|
+
console.error(` ${error.message}\n`);
|
|
5701
|
+
}
|
|
5702
|
+
process.exit(1);
|
|
5669
5703
|
}
|
|
5670
|
-
|
|
5704
|
+
else {
|
|
5705
|
+
throw new Error(`Invalid YAML syntax in ${configPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
5706
|
+
}
|
|
5707
|
+
}
|
|
5708
|
+
if (parsed === null || parsed === undefined) {
|
|
5709
|
+
parsed = {};
|
|
5710
|
+
}
|
|
5711
|
+
if (!parsed.version) {
|
|
5712
|
+
parsed.version = version;
|
|
5713
|
+
}
|
|
5714
|
+
try {
|
|
5715
|
+
HerbConfigSchema.parse(parsed);
|
|
5716
|
+
}
|
|
5717
|
+
catch (error) {
|
|
5718
|
+
if (error instanceof ZodError) {
|
|
5719
|
+
const validationError = fromZodError(error, {
|
|
5720
|
+
prefix: `Configuration errors in ${configPath}`,
|
|
5721
|
+
});
|
|
5671
5722
|
if (exitOnError) {
|
|
5672
|
-
console.error(`\n✗
|
|
5673
|
-
if (error instanceof Error) {
|
|
5674
|
-
console.error(` ${error.message}\n`);
|
|
5675
|
-
}
|
|
5723
|
+
console.error(`\n✗ ${validationError.toString()}\n`);
|
|
5676
5724
|
process.exit(1);
|
|
5677
5725
|
}
|
|
5678
5726
|
else {
|
|
5679
|
-
throw new Error(
|
|
5680
|
-
}
|
|
5681
|
-
}
|
|
5682
|
-
if (parsed === null || parsed === undefined) {
|
|
5683
|
-
parsed = {};
|
|
5684
|
-
}
|
|
5685
|
-
if (!parsed.version) {
|
|
5686
|
-
parsed.version = version;
|
|
5687
|
-
}
|
|
5688
|
-
try {
|
|
5689
|
-
HerbConfigSchema.parse(parsed);
|
|
5690
|
-
}
|
|
5691
|
-
catch (error) {
|
|
5692
|
-
if (error instanceof ZodError) {
|
|
5693
|
-
const validationError = fromZodError(error, {
|
|
5694
|
-
prefix: `Configuration errors in ${configPath}`,
|
|
5695
|
-
});
|
|
5696
|
-
if (exitOnError) {
|
|
5697
|
-
console.error(`\n✗ ${validationError.toString()}\n`);
|
|
5698
|
-
process.exit(1);
|
|
5699
|
-
}
|
|
5700
|
-
else {
|
|
5701
|
-
throw new Error(validationError.toString());
|
|
5702
|
-
}
|
|
5727
|
+
throw new Error(validationError.toString());
|
|
5703
5728
|
}
|
|
5704
|
-
throw error;
|
|
5705
|
-
}
|
|
5706
|
-
if (parsed.version && parsed.version !== version) {
|
|
5707
|
-
console.error(`\n⚠️ Configuration version mismatch in ${configPath}`);
|
|
5708
|
-
console.error(` Config version: ${parsed.version}`);
|
|
5709
|
-
console.error(` Current version: ${version}`);
|
|
5710
|
-
console.error(` Consider updating your .herb.yml file.\n`);
|
|
5711
5729
|
}
|
|
5712
|
-
const defaults = this.getDefaultConfig(version);
|
|
5713
|
-
const resolved = deepMerge(defaults, parsed);
|
|
5714
|
-
resolved.version = version;
|
|
5715
|
-
return new Config(projectRoot, resolved);
|
|
5716
|
-
}
|
|
5717
|
-
catch (error) {
|
|
5718
5730
|
throw error;
|
|
5719
5731
|
}
|
|
5732
|
+
if (parsed.version && parsed.version !== version) {
|
|
5733
|
+
console.error(`\n⚠️ Configuration version mismatch in ${configPath}`);
|
|
5734
|
+
console.error(` Config version: ${parsed.version}`);
|
|
5735
|
+
console.error(` Current version: ${version}`);
|
|
5736
|
+
console.error(` Consider updating your .herb.yml file.\n`);
|
|
5737
|
+
}
|
|
5738
|
+
const defaults = this.getDefaultConfig(version);
|
|
5739
|
+
const resolved = deepMerge(defaults, parsed);
|
|
5740
|
+
resolved.version = version;
|
|
5741
|
+
return new Config(projectRoot, resolved);
|
|
5720
5742
|
}
|
|
5721
5743
|
/**
|
|
5722
5744
|
* Get default configuration object
|
|
@@ -5724,29 +5746,7 @@ class Config {
|
|
|
5724
5746
|
static getDefaultConfig(version = DEFAULT_VERSION) {
|
|
5725
5747
|
return {
|
|
5726
5748
|
version,
|
|
5727
|
-
|
|
5728
|
-
include: [
|
|
5729
|
-
'**/*.html',
|
|
5730
|
-
'**/*.rhtml',
|
|
5731
|
-
'**/*.html.erb',
|
|
5732
|
-
'**/*.html+*.erb',
|
|
5733
|
-
'**/*.turbo_stream.erb'
|
|
5734
|
-
],
|
|
5735
|
-
exclude: [
|
|
5736
|
-
'node_modules/**/*',
|
|
5737
|
-
'vendor/bundle/**/*',
|
|
5738
|
-
'coverage/**/*',
|
|
5739
|
-
]
|
|
5740
|
-
},
|
|
5741
|
-
linter: {
|
|
5742
|
-
enabled: true,
|
|
5743
|
-
rules: {}
|
|
5744
|
-
},
|
|
5745
|
-
formatter: {
|
|
5746
|
-
enabled: false,
|
|
5747
|
-
indentWidth: 2,
|
|
5748
|
-
maxLineLength: 80
|
|
5749
|
-
}
|
|
5749
|
+
...PARSED_DEFAULTS
|
|
5750
5750
|
};
|
|
5751
5751
|
}
|
|
5752
5752
|
}
|
|
@@ -5786,7 +5786,7 @@ function readExtensionsJson(filePath) {
|
|
|
5786
5786
|
}
|
|
5787
5787
|
return parsed;
|
|
5788
5788
|
}
|
|
5789
|
-
catch (
|
|
5789
|
+
catch (_error) {
|
|
5790
5790
|
console.warn(`Warning: Could not parse ${filePath}, creating new file`);
|
|
5791
5791
|
return { recommendations: [] };
|
|
5792
5792
|
}
|