eslint-plugin-templ 0.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templ-ast.d.ts","sourceRoot":"","sources":["../src/templ-ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Zod schemas for templ AST structure
3
+ *
4
+ * These schemas define the runtime validation and TypeScript types for the JSON
5
+ * output from templ-ast-to-json. They serve as the source of truth for the
6
+ * "from" types in the conversion to ESLint AST.
7
+ */
8
+ import { z } from "zod";
9
+ /**
10
+ * Validates that unknown JSON is a valid templ AST array.
11
+ * Throws an error with exhaustive validation messages if invalid.
12
+ *
13
+ * @param value - The unknown value to validate
14
+ * @throws {Error} If validation fails, with detailed error messages for all issues
15
+ */
16
+ export function validateTemplAST(value) {
17
+ const result = TemplASTSchema.safeParse(value);
18
+ if (!result.success) {
19
+ const errorMessages = result.error.issues.map((err) => {
20
+ const path = err.path.length > 0 ? err.path.join(".") : "root";
21
+ return ` ${path}: ${err.message}`;
22
+ });
23
+ throw new Error(`Invalid templ AST structure:\n${errorMessages.join("\n")}`);
24
+ }
25
+ }
26
+ export const TemplPositionSchema = z.object({
27
+ Index: z.number(),
28
+ Line: z.number(),
29
+ Col: z.number(),
30
+ });
31
+ export const TemplRangeSchema = z.object({
32
+ From: TemplPositionSchema,
33
+ To: TemplPositionSchema,
34
+ });
35
+ export const TemplExpressionSchema = z.object({
36
+ Value: z.string(),
37
+ Range: TemplRangeSchema,
38
+ });
39
+ // Attribute can have either Value (constant) or Expression (dynamic)
40
+ export const TemplAttributeSchema = z.object({
41
+ Key: z.object({
42
+ Name: z.string(),
43
+ NameRange: TemplRangeSchema,
44
+ }),
45
+ Value: z.string().optional(),
46
+ Expression: TemplExpressionSchema.optional(),
47
+ SingleQuote: z.boolean().optional(),
48
+ });
49
+ export const TemplStringExpressionSchema = z.object({
50
+ Range: TemplRangeSchema,
51
+ Value: z.string(),
52
+ TrailingSpace: z.string(),
53
+ });
54
+ export const TemplGoExpressionSchema = z.object({
55
+ Expression: TemplExpressionSchema,
56
+ TrailingSpace: z.string(),
57
+ });
58
+ export const TemplCallExpressionSchema = z.object({
59
+ Expression: TemplExpressionSchema,
60
+ Children: z.null(),
61
+ Range: TemplRangeSchema,
62
+ });
63
+ export const TemplWhitespaceSchema = z.object({
64
+ Value: z.string(),
65
+ });
66
+ export const TemplTextSchema = z.object({
67
+ Range: TemplRangeSchema,
68
+ Value: z.string(),
69
+ TrailingSpace: z.string(),
70
+ });
71
+ export const TemplDocTypeSchema = z.object({
72
+ Value: z.string(),
73
+ });
74
+ export const TemplHTMLCommentSchema = z.object({
75
+ Contents: z.string(),
76
+ Range: TemplRangeSchema,
77
+ });
78
+ export const TemplGoCommentSchema = z.object({
79
+ Contents: z.string(),
80
+ Multiline: z.boolean(),
81
+ Range: TemplRangeSchema,
82
+ });
83
+ export const TemplGoCodeSchema = z.object({
84
+ Expression: TemplExpressionSchema,
85
+ TrailingSpace: z.string(),
86
+ Multiline: z.boolean(),
87
+ });
88
+ export const TemplChildrenExpressionSchema = z.object({});
89
+ export const TemplConstantCSSPropertySchema = z.object({
90
+ Name: z.string(),
91
+ Value: z.string(),
92
+ });
93
+ export const TemplExpressionCSSPropertySchema = z.object({
94
+ Name: z.string(),
95
+ Value: TemplGoExpressionSchema,
96
+ });
97
+ export const TemplCSSPropertySchema = z.union([
98
+ TemplConstantCSSPropertySchema,
99
+ TemplExpressionCSSPropertySchema,
100
+ ]);
101
+ export const TemplCSSTemplateSchema = z.object({
102
+ Range: TemplRangeSchema,
103
+ Name: z.string(),
104
+ Expression: TemplExpressionSchema,
105
+ Properties: z.array(TemplCSSPropertySchema),
106
+ });
107
+ export const TemplScriptTemplateSchema = z.object({
108
+ Range: TemplRangeSchema,
109
+ Name: TemplExpressionSchema,
110
+ Parameters: TemplExpressionSchema,
111
+ Value: z.string(),
112
+ });
113
+ export const TemplFileGoExpressionSchema = z.object({
114
+ Expression: TemplExpressionSchema,
115
+ BeforePackage: z.boolean(),
116
+ });
117
+ export const TemplElementNodeSchema = z.lazy(() => z.object({
118
+ Name: z.string(),
119
+ Attributes: z.array(TemplAttributeSchema).nullable(),
120
+ IndentAttrs: z.boolean(),
121
+ Children: z.array(TemplChildSchema),
122
+ IndentChildren: z.boolean(),
123
+ TrailingSpace: z.string(),
124
+ NameRange: TemplRangeSchema,
125
+ Range: TemplRangeSchema,
126
+ }));
127
+ export const TemplElseIfExpressionSchema = z.lazy(() => z.object({
128
+ Expression: TemplExpressionSchema,
129
+ Then: z.array(TemplChildSchema),
130
+ Range: TemplRangeSchema,
131
+ }));
132
+ export const TemplIfExpressionSchema = z.lazy(() => z.object({
133
+ Expression: TemplExpressionSchema,
134
+ Then: z.array(TemplChildSchema),
135
+ ElseIfs: z.array(TemplElseIfExpressionSchema).nullable(),
136
+ Else: z.array(TemplChildSchema).nullable(),
137
+ Range: TemplRangeSchema,
138
+ }));
139
+ export const TemplCaseExpressionSchema = z.lazy(() => z.object({
140
+ Expression: TemplExpressionSchema,
141
+ Children: z.array(TemplChildSchema),
142
+ }));
143
+ export const TemplSwitchExpressionSchema = z.lazy(() => z.object({
144
+ Expression: TemplExpressionSchema,
145
+ Cases: z.array(TemplCaseExpressionSchema),
146
+ Range: TemplRangeSchema,
147
+ }));
148
+ export const TemplForExpressionSchema = z.lazy(() => z.object({
149
+ Expression: TemplExpressionSchema,
150
+ Children: z.array(TemplChildSchema),
151
+ Range: TemplRangeSchema,
152
+ }));
153
+ export const TemplElementExpressionSchema = z.lazy(() => z.object({
154
+ Expression: TemplExpressionSchema,
155
+ Children: z.array(TemplChildSchema).nullable(),
156
+ Range: TemplRangeSchema,
157
+ }));
158
+ export const TemplScriptContentsSchema = z.lazy(() => z.object({
159
+ Value: z.string().nullable(),
160
+ GoCode: TemplGoCodeSchema.nullable(),
161
+ InsideStringLiteral: z.boolean(),
162
+ }));
163
+ export const TemplScriptElementSchema = z.lazy(() => z.object({
164
+ Attributes: z.array(TemplAttributeSchema).nullable(),
165
+ Contents: z.array(TemplScriptContentsSchema),
166
+ Range: TemplRangeSchema,
167
+ }));
168
+ export const TemplRawElementSchema = z.lazy(() => z.object({
169
+ Name: z.string(),
170
+ Attributes: z.array(TemplAttributeSchema).nullable(),
171
+ Contents: z.string(),
172
+ Range: TemplRangeSchema,
173
+ }));
174
+ export const TemplChildSchema = z.lazy(() => z.union([
175
+ TemplStringExpressionSchema,
176
+ TemplGoExpressionSchema,
177
+ TemplGoCodeSchema,
178
+ TemplCallExpressionSchema,
179
+ TemplElementExpressionSchema,
180
+ TemplElementNodeSchema,
181
+ TemplWhitespaceSchema,
182
+ TemplTextSchema,
183
+ TemplDocTypeSchema,
184
+ TemplHTMLCommentSchema,
185
+ TemplGoCommentSchema,
186
+ TemplIfExpressionSchema,
187
+ TemplForExpressionSchema,
188
+ TemplSwitchExpressionSchema,
189
+ TemplChildrenExpressionSchema,
190
+ TemplScriptElementSchema,
191
+ TemplRawElementSchema,
192
+ ]));
193
+ // HTMLTemplate (templ component definition)
194
+ export const TemplHTMLTemplateSchema = z.object({
195
+ Range: TemplRangeSchema,
196
+ Expression: TemplExpressionSchema,
197
+ Children: z.array(TemplChildSchema),
198
+ });
199
+ // Top-level node can be HTMLTemplate, CSSTemplate, ScriptTemplate, or FileGoExpression
200
+ export const TemplFileNodeSchema = z.union([
201
+ TemplHTMLTemplateSchema,
202
+ TemplCSSTemplateSchema,
203
+ TemplScriptTemplateSchema,
204
+ TemplFileGoExpressionSchema,
205
+ ]);
206
+ export const TemplASTSchema = z.array(TemplFileNodeSchema);
207
+ //# sourceMappingURL=templ-ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templ-ast.js","sourceRoot":"","sources":["../src/templ-ast.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAE/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/D,OAAO,KAAK,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,KAAK,CACb,iCAAiC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,mBAAmB;IACzB,EAAE,EAAE,mBAAmB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,gBAAgB;CACxB,CAAC,CAAC;AAEH,qEAAqE;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,gBAAgB;KAC5B,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IAC5C,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,UAAU,EAAE,qBAAqB;IACjC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;IAClB,KAAK,EAAE,gBAAgB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,gBAAgB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,KAAK,EAAE,gBAAgB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,qBAAqB;IACjC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,uBAAuB;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5C,8BAA8B;IAC9B,gCAAgC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,gBAAgB;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,KAAK,EAAE,gBAAgB;IACvB,IAAI,EAAE,qBAAqB;IAC3B,UAAU,EAAE,qBAAqB;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,UAAU,EAAE,qBAAqB;IACjC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;CAC3B,CAAC,CAAC;AA2HH,MAAM,CAAC,MAAM,sBAAsB,GAAgC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAC7E,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACpD,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,SAAS,EAAE,gBAAgB;IAC3B,KAAK,EAAE,gBAAgB;CACxB,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GACtC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACV,CAAC,CAAC,MAAM,CAAC;IACP,UAAU,EAAE,qBAAqB;IACjC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAC/B,KAAK,EAAE,gBAAgB;CACxB,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,uBAAuB,GAAiC,CAAC,CAAC,IAAI,CACzE,GAAG,EAAE,CACH,CAAC,CAAC,MAAM,CAAC;IACP,UAAU,EAAE,qBAAqB;IACjC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;IACxD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC1C,KAAK,EAAE,gBAAgB;CACxB,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAmC,CAAC,CAAC,IAAI,CAC7E,GAAG,EAAE,CACH,CAAC,CAAC,MAAM,CAAC;IACP,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACpC,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GACtC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACV,CAAC,CAAC,MAAM,CAAC;IACP,UAAU,EAAE,qBAAqB;IACjC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;IACzC,KAAK,EAAE,gBAAgB;CACxB,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,wBAAwB,GAAkC,CAAC,CAAC,IAAI,CAC3E,GAAG,EAAE,CACH,CAAC,CAAC,MAAM,CAAC;IACP,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACnC,KAAK,EAAE,gBAAgB;CACxB,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GACvC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACV,CAAC,CAAC,MAAM,CAAC;IACP,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,gBAAgB;CACxB,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,yBAAyB,GAAmC,CAAC,CAAC,IAAI,CAC7E,GAAG,EAAE,CACH,CAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACpC,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;CACjC,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAkC,CAAC,CAAC,IAAI,CAC3E,GAAG,EAAE,CACH,CAAC,CAAC,MAAM,CAAC;IACP,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACpD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;IAC5C,KAAK,EAAE,gBAAgB;CACxB,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAA+B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3E,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,gBAAgB;CACxB,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAA0B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACjE,CAAC,CAAC,KAAK,CAAC;IACN,2BAA2B;IAC3B,uBAAuB;IACvB,iBAAiB;IACjB,yBAAyB;IACzB,4BAA4B;IAC5B,sBAAsB;IACtB,qBAAqB;IACrB,eAAe;IACf,kBAAkB;IAClB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,wBAAwB;IACxB,2BAA2B;IAC3B,6BAA6B;IAC7B,wBAAwB;IACxB,qBAAqB;CACtB,CAAC,CACH,CAAC;AAEF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,gBAAgB;IACvB,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACpC,CAAC,CAAC;AAEH,uFAAuF;AACvF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC;IACzC,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,2BAA2B;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { File, Language, LanguageOptions, OkParseResult, ParseResult } from "@eslint/core";
2
+ import { HTMLSourceCode } from "./html-source-code.ts";
3
+ import type { AST } from "eslint";
4
+ export declare class TemplLanguage implements Language<{
5
+ Code: HTMLSourceCode;
6
+ LangOptions: LanguageOptions;
7
+ RootNode: AST.Program;
8
+ Node: object;
9
+ }> {
10
+ fileType: "text";
11
+ lineStart: 0 | 1;
12
+ columnStart: 0 | 1;
13
+ nodeTypeKey: string;
14
+ visitorKeys: Record<string, string[]>;
15
+ constructor();
16
+ validateLanguageOptions(): void;
17
+ parse(file: File): ParseResult<AST.Program>;
18
+ /**
19
+ * @param {File} file
20
+ * @param {OkParseResult<AST.Program>} parseResult
21
+ */
22
+ createSourceCode(file: File, parseResult: OkParseResult<AST.Program>): HTMLSourceCode;
23
+ }
24
+ //# sourceMappingURL=templ-language.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templ-language.d.ts","sourceRoot":"","sources":["../src/templ-language.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,aAAa,EACb,WAAW,EACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAe,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAGlC,qBAAa,aACX,YACE,QAAQ,CAAC;IACP,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,eAAe,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;IAEJ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;;IAUtC,uBAAuB,IAAI,IAAI;IAE/B,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;IAK3C;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;CAOrE"}
@@ -0,0 +1,33 @@
1
+ import { HTMLSourceCode, visitorKeys } from "./html-source-code.js";
2
+ import { parseForESLint } from "./parse-for-eslint.js";
3
+ export class TemplLanguage {
4
+ fileType;
5
+ lineStart;
6
+ columnStart;
7
+ nodeTypeKey;
8
+ visitorKeys;
9
+ constructor() {
10
+ this.fileType = "text";
11
+ this.lineStart = 1;
12
+ this.columnStart = 0;
13
+ this.nodeTypeKey = "type";
14
+ this.visitorKeys = visitorKeys;
15
+ }
16
+ validateLanguageOptions() { }
17
+ parse(file) {
18
+ // Since fileType is "text", body will always be a string at runtime
19
+ return parseForESLint(file.body);
20
+ }
21
+ /**
22
+ * @param {File} file
23
+ * @param {OkParseResult<AST.Program>} parseResult
24
+ */
25
+ createSourceCode(file, parseResult) {
26
+ return new HTMLSourceCode({
27
+ text: file.body,
28
+ ast: parseResult.ast,
29
+ comments: parseResult["comments"],
30
+ });
31
+ }
32
+ }
33
+ //# sourceMappingURL=templ-language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templ-language.js","sourceRoot":"","sources":["../src/templ-language.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,aAAa;IASxB,QAAQ,CAAS;IACjB,SAAS,CAAQ;IACjB,WAAW,CAAQ;IACnB,WAAW,CAAS;IACpB,WAAW,CAA2B;IAEtC;QACE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,uBAAuB,KAAU,CAAC;IAElC,KAAK,CAAC,IAAU;QACd,oEAAoE;QACpE,OAAO,cAAc,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,IAAU,EAAE,WAAuC;QAClE,OAAO,IAAI,cAAc,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAc;YACzB,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "eslint-plugin-templ",
3
+ "version": "0.0.1",
4
+ "engines": {
5
+ "node": ">=20.6.0"
6
+ },
7
+ "devEngines": {
8
+ "runtime": {
9
+ "name": "node",
10
+ "onFail": "error",
11
+ "version": "24.x.x"
12
+ },
13
+ "packageManager": {
14
+ "name": "npm",
15
+ "onFail": "error",
16
+ "version": "*"
17
+ }
18
+ },
19
+ "description": "ESLint plugin for Templ files",
20
+ "keywords": [
21
+ "eslint",
22
+ "eslint-plugin"
23
+ ],
24
+ "homepage": "https://github.com/AdamVig/eslint-plugin-templ",
25
+ "bugs": {
26
+ "url": "https://github.com/AdamVig/eslint-plugin-templ/issues"
27
+ },
28
+ "license": "MIT",
29
+ "author": "Adam Vigneaux <adam@adamvig.com> (https://adamvig.com)",
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "type": "module",
34
+ "exports": {
35
+ ".": "./dist/index.js"
36
+ },
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "git+https://github.com/AdamVig/eslint-plugin-templ.git"
40
+ },
41
+ "scripts": {
42
+ "build:ts": "tsc -p tsconfig.build.json",
43
+ "build:go": "./scripts/build-go",
44
+ "preversion": "npm run lint && npm test && npm run build:ts",
45
+ "version": "npm run build:go && ./scripts/sync-optional-deps.js",
46
+ "postversion": "git push origin HEAD --follow-tags",
47
+ "release": "./scripts/publish",
48
+ "lint": "eslint .",
49
+ "format": "prettier --write .",
50
+ "test": "node --test"
51
+ },
52
+ "devDependencies": {
53
+ "@eslint/core": "^0.17.0",
54
+ "@eslint/js": "^9.39.1",
55
+ "@eslint/plugin-kit": "^0.4.1",
56
+ "@html-eslint/eslint-plugin": "^0.48.0",
57
+ "@html-eslint/types": "^0.48.0",
58
+ "@types/node": "^24.10.0",
59
+ "es-html-parser": "^0.3.1",
60
+ "eslint": "^9.39.1",
61
+ "eslint-plugin-eslint-plugin": "^7.2.0",
62
+ "eslint-plugin-n": "^17.23.1",
63
+ "globals": "^16.5.0",
64
+ "prettier": "^3.6.2",
65
+ "typescript": "^5.9.3",
66
+ "typescript-eslint": "^8.46.4"
67
+ },
68
+ "peerDependencies": {
69
+ "eslint": ">=9.0.0"
70
+ },
71
+ "dependencies": {
72
+ "zod": "^4.1.12"
73
+ },
74
+ "optionalDependencies": {
75
+ "eslint-plugin-templ-darwin-arm64": "0.0.1",
76
+ "eslint-plugin-templ-darwin-x64": "0.0.1",
77
+ "eslint-plugin-templ-linux-arm64": "0.0.1",
78
+ "eslint-plugin-templ-linux-x64": "0.0.1",
79
+ "eslint-plugin-templ-windows-arm64": "0.0.1",
80
+ "eslint-plugin-templ-windows-x64": "0.0.1"
81
+ }
82
+ }