cloudflare-expression-lint 0.7.1 → 0.8.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,19 @@
1
+ /**
2
+ * Shared AST utility functions.
3
+ *
4
+ * Canonical implementations of printNode, normalizeOp, collectChain,
5
+ * stripGroup, and escapeString used by the fixer, formatter, and rewriter.
6
+ */
7
+ import type { ASTNode } from './types.js';
8
+ /** Print an AST node as a single-line string (canonical form). */
9
+ export declare function printNode(node: ASTNode): string;
10
+ /** Normalize operator to English form for consistency. */
11
+ export declare function normalizeOp(op: string): string;
12
+ /** Collect branches of the same operator into a flat list. */
13
+ export declare function collectChain(node: ASTNode, op: string, branches: ASTNode[]): void;
14
+ /** Strip all Group wrappers from a node. */
15
+ export declare function stripGroup(node: ASTNode): ASTNode;
16
+ /** Escape for Cloudflare expression string literals.
17
+ * Only `"` needs escaping (to `\"`). Backslashes pass through as-is
18
+ * because they're regex escapes in Cloudflare expressions, not string escapes. */
19
+ export declare function escapeString(s: string): string;
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Shared AST utility functions.
3
+ *
4
+ * Canonical implementations of printNode, normalizeOp, collectChain,
5
+ * stripGroup, and escapeString used by the fixer, formatter, and rewriter.
6
+ */
7
+ /** Print an AST node as a single-line string (canonical form). */
8
+ export function printNode(node) {
9
+ switch (node.kind) {
10
+ case 'BooleanLiteral':
11
+ return String(node.value);
12
+ case 'StringLiteral':
13
+ if (node.raw)
14
+ return `r"${node.value}"`;
15
+ return `"${escapeString(node.value)}"`;
16
+ case 'IntegerLiteral':
17
+ return String(node.value);
18
+ case 'FloatLiteral':
19
+ return String(node.value);
20
+ case 'IPLiteral':
21
+ return node.cidr !== undefined ? `${node.value}/${node.cidr}` : node.value;
22
+ case 'FieldAccess': {
23
+ let s = node.field;
24
+ if (node.mapKey !== undefined)
25
+ s += `["${escapeString(node.mapKey)}"]`;
26
+ if (node.arrayIndex !== undefined)
27
+ s += `[${node.arrayIndex}]`;
28
+ return s;
29
+ }
30
+ case 'NamedList':
31
+ return node.name.startsWith('$') ? node.name : `$${node.name}`;
32
+ case 'FunctionCall': {
33
+ const args = node.args.map(a => printNode(a)).join(', ');
34
+ return `${node.name}(${args})`;
35
+ }
36
+ case 'Comparison':
37
+ return `${printNode(node.left)} ${node.operator} ${printNode(node.right)}`;
38
+ case 'Logical':
39
+ return `${printNode(node.left)} ${node.operator} ${printNode(node.right)}`;
40
+ case 'Not':
41
+ return `not ${printNode(node.operand)}`;
42
+ case 'InExpression': {
43
+ const field = printNode(node.field);
44
+ const neg = node.negated ? 'not ' : '';
45
+ if (node.values.length === 1 && node.values[0].kind === 'NamedList') {
46
+ return `${neg}${field} in ${printNode(node.values[0])}`;
47
+ }
48
+ const values = node.values.map(v => printNode(v)).join(' ');
49
+ return `${neg}${field} in {${values}}`;
50
+ }
51
+ case 'Group':
52
+ return `(${printNode(node.expression)})`;
53
+ case 'ArrayUnpack':
54
+ return `${printNode(node.field)}[*]`;
55
+ }
56
+ }
57
+ /** Normalize operator to English form for consistency. */
58
+ export function normalizeOp(op) {
59
+ if (op === '&&')
60
+ return 'and';
61
+ if (op === '||')
62
+ return 'or';
63
+ return op;
64
+ }
65
+ /** Collect branches of the same operator into a flat list. */
66
+ export function collectChain(node, op, branches) {
67
+ if (node.kind === 'Logical' && normalizeOp(node.operator) === op) {
68
+ collectChain(node.left, op, branches);
69
+ collectChain(node.right, op, branches);
70
+ }
71
+ else {
72
+ branches.push(node);
73
+ }
74
+ }
75
+ /** Strip all Group wrappers from a node. */
76
+ export function stripGroup(node) {
77
+ while (node.kind === 'Group')
78
+ node = node.expression;
79
+ return node;
80
+ }
81
+ /** Escape for Cloudflare expression string literals.
82
+ * Only `"` needs escaping (to `\"`). Backslashes pass through as-is
83
+ * because they're regex escapes in Cloudflare expressions, not string escapes. */
84
+ export function escapeString(s) {
85
+ return s.replace(/"/g, '\\"');
86
+ }
87
+ //# sourceMappingURL=ast-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../src/ast-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Expression Builder compatibility checker.
3
+ *
4
+ * Checks whether a Cloudflare expression can be represented in the
5
+ * Cloudflare Dashboard's Expression Builder UI. Expressions that
6
+ * can't be represented get an info-level diagnostic.
7
+ */
8
+ import type { ASTNode, Diagnostic } from './types.js';
9
+ /** Check an expression for Builder compatibility issues. */
10
+ export declare function checkBuilderCompatibility(ast: ASTNode, diagnostics: Diagnostic[]): void;
11
+ /** Check that account-level expressions end with `and (cf.zone.plan eq "ENT")`. */
12
+ export declare function checkAccountLevelSuffix(ast: ASTNode, diagnostics: Diagnostic[]): void;
13
+ /** Check if an AST node ends with `and (cf.zone.plan eq "ENT")`. */
14
+ export declare function isZonePlanSuffixed(ast: ASTNode): boolean;
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Expression Builder compatibility checker.
3
+ *
4
+ * Checks whether a Cloudflare expression can be represented in the
5
+ * Cloudflare Dashboard's Expression Builder UI. Expressions that
6
+ * can't be represented get an info-level diagnostic.
7
+ */
8
+ /** Check an expression for Builder compatibility issues. */
9
+ export function checkBuilderCompatibility(ast, diagnostics) {
10
+ if (containsNonBuilderFunction(ast))
11
+ return;
12
+ if (ast.kind === 'BooleanLiteral' || ast.kind === 'FieldAccess')
13
+ return;
14
+ if (ast.kind === 'Comparison' || ast.kind === 'InExpression' || ast.kind === 'FunctionCall') {
15
+ diagnostics.push({
16
+ severity: 'info',
17
+ message: 'Wrap in parentheses for Expression Builder compatibility: (field op value)',
18
+ code: 'builder-incompatible',
19
+ });
20
+ return;
21
+ }
22
+ if (ast.kind === 'Not') {
23
+ checkNotCompatibility(ast, diagnostics);
24
+ return;
25
+ }
26
+ if (ast.kind === 'Group') {
27
+ checkGroupCompatibility(ast, diagnostics);
28
+ return;
29
+ }
30
+ if (ast.kind === 'Logical') {
31
+ checkLogicalCompatibility(ast, diagnostics);
32
+ return;
33
+ }
34
+ }
35
+ /** Check that account-level expressions end with `and (cf.zone.plan eq "ENT")`. */
36
+ export function checkAccountLevelSuffix(ast, diagnostics) {
37
+ if (ast.kind === 'Group') {
38
+ const inner = ast.expression;
39
+ if (inner.kind === 'Comparison' &&
40
+ inner.left.kind === 'FieldAccess' &&
41
+ inner.left.field === 'cf.zone.plan') {
42
+ return;
43
+ }
44
+ }
45
+ if (!isZonePlanSuffixed(ast)) {
46
+ diagnostics.push({
47
+ severity: 'warning',
48
+ message: 'Account-level expression should end with `and (cf.zone.plan eq "ENT")` to scope to Enterprise zones',
49
+ code: 'missing-zone-plan-filter',
50
+ });
51
+ }
52
+ }
53
+ /** Check if an AST node ends with `and (cf.zone.plan eq "ENT")`. */
54
+ export function isZonePlanSuffixed(ast) {
55
+ if (ast.kind !== 'Logical')
56
+ return false;
57
+ if (ast.operator !== 'and' && ast.operator !== '&&')
58
+ return false;
59
+ let right = ast.right;
60
+ if (right.kind === 'Group')
61
+ right = right.expression;
62
+ if (right.kind !== 'Comparison')
63
+ return false;
64
+ if (right.left.kind !== 'FieldAccess')
65
+ return false;
66
+ if (right.left.field !== 'cf.zone.plan')
67
+ return false;
68
+ if (right.right.kind !== 'StringLiteral')
69
+ return false;
70
+ if (right.right.value !== 'ENT')
71
+ return false;
72
+ return true;
73
+ }
74
+ // ── Internal helpers ─────────────────────────────────────────────────
75
+ function checkNotCompatibility(ast, diagnostics) {
76
+ if (ast.operand.kind === 'Group') {
77
+ const inner = ast.operand.expression;
78
+ if (isBuilderCondition(inner)) {
79
+ diagnostics.push({
80
+ severity: 'info',
81
+ message: 'Move `not` inside the group for Expression Builder compatibility: (not A) instead of not (A)',
82
+ code: 'builder-incompatible',
83
+ });
84
+ }
85
+ else if (inner.kind === 'Logical' && isTopLevelOr(inner)) {
86
+ diagnostics.push({
87
+ severity: 'info',
88
+ message: 'Rewrite using De Morgan\'s law for Expression Builder compatibility: not (A or B) → (not A and not B)',
89
+ code: 'builder-incompatible',
90
+ });
91
+ }
92
+ else if (inner.kind === 'Logical' && isTopLevelAnd(inner)) {
93
+ diagnostics.push({
94
+ severity: 'info',
95
+ message: 'Rewrite using De Morgan\'s law for Expression Builder compatibility: not (A and B) → (not A) or (not B)',
96
+ code: 'builder-incompatible',
97
+ });
98
+ }
99
+ else {
100
+ diagnostics.push({
101
+ severity: 'info',
102
+ message: 'Top-level `not (...)` is not Expression Builder compatible',
103
+ code: 'builder-incompatible',
104
+ });
105
+ }
106
+ }
107
+ else {
108
+ diagnostics.push({
109
+ severity: 'info',
110
+ message: 'Wrap in parentheses for Expression Builder compatibility: (not field op value)',
111
+ code: 'builder-incompatible',
112
+ });
113
+ }
114
+ }
115
+ function checkGroupCompatibility(ast, diagnostics) {
116
+ const inner = ast.expression;
117
+ if (isBuilderCondition(inner))
118
+ return;
119
+ if (inner.kind === 'Not' && isBuilderCondition(inner.operand))
120
+ return;
121
+ if (inner.kind === 'Logical' && isTopLevelAnd(inner) && isBuilderAndGroup(inner))
122
+ return;
123
+ if (inner.kind === 'Logical' && isTopLevelOr(inner)) {
124
+ diagnostics.push({
125
+ severity: 'info',
126
+ message: 'Remove outer parentheses from or-chain for Expression Builder compatibility. Use (A) or (B) instead of ((A) or (B)).',
127
+ code: 'builder-incompatible',
128
+ });
129
+ return;
130
+ }
131
+ if (inner.kind === 'Logical' && isTopLevelAnd(inner) && !isBuilderAndGroup(inner)) {
132
+ diagnostics.push({
133
+ severity: 'info',
134
+ message: 'Expression contains `or` nested inside an `and` group, which is not Expression Builder compatible. Consider distributing: ((A or B) and C) → (A and C) or (B and C)',
135
+ code: 'builder-incompatible',
136
+ });
137
+ return;
138
+ }
139
+ if (inner.kind === 'Logical' || inner.kind === 'Not') {
140
+ diagnostics.push({
141
+ severity: 'info',
142
+ message: 'Expression inside group is not Expression Builder compatible',
143
+ code: 'builder-incompatible',
144
+ });
145
+ }
146
+ }
147
+ function checkLogicalCompatibility(ast, diagnostics) {
148
+ if (isTopLevelOr(ast)) {
149
+ const branches = [];
150
+ collectOrBranches(ast, branches);
151
+ const unwrapped = [];
152
+ for (const branch of branches) {
153
+ if (branch.kind === 'Group') {
154
+ if (isValidBuilderGroup(branch))
155
+ continue;
156
+ diagnostics.push({
157
+ severity: 'info',
158
+ message: 'Or-branch contains expressions not compatible with Expression Builder',
159
+ code: 'builder-incompatible',
160
+ });
161
+ return;
162
+ }
163
+ unwrapped.push(branch);
164
+ }
165
+ if (unwrapped.length > 0) {
166
+ diagnostics.push({
167
+ severity: 'info',
168
+ message: `Wrap each or-branch in parentheses for Expression Builder compatibility: (A) or (B). ${unwrapped.length} of ${branches.length} branch(es) need wrapping.`,
169
+ code: 'builder-incompatible',
170
+ });
171
+ }
172
+ return;
173
+ }
174
+ if (isTopLevelAnd(ast)) {
175
+ const andLeaves = [];
176
+ collectAndLeaves(ast, andLeaves);
177
+ const hasGroupLeaves = andLeaves.some(l => l.kind === 'Group');
178
+ if (hasGroupLeaves) {
179
+ const allSimpleGroups = andLeaves.every(l => l.kind === 'Group' ? isValidBuilderGroup(l) : isBuilderAndLeaf(l));
180
+ if (allSimpleGroups) {
181
+ diagnostics.push({
182
+ severity: 'info',
183
+ message: 'Merge and-groups into a single group for Expression Builder compatibility: (A) and (B) → (A and B)',
184
+ code: 'builder-incompatible',
185
+ });
186
+ }
187
+ else {
188
+ diagnostics.push({
189
+ severity: 'info',
190
+ message: 'Top-level `and` between complex expressions is not Expression Builder compatible',
191
+ code: 'builder-incompatible',
192
+ });
193
+ }
194
+ }
195
+ else if (isBuilderAndGroup(ast)) {
196
+ diagnostics.push({
197
+ severity: 'info',
198
+ message: 'Wrap and-chain in parentheses for Expression Builder compatibility: (A and B and C)',
199
+ code: 'builder-incompatible',
200
+ });
201
+ }
202
+ else {
203
+ diagnostics.push({
204
+ severity: 'info',
205
+ message: 'Top-level `and` between complex expressions is not Expression Builder compatible',
206
+ code: 'builder-incompatible',
207
+ });
208
+ }
209
+ }
210
+ }
211
+ function containsNonBuilderFunction(node) {
212
+ switch (node.kind) {
213
+ case 'ArrayUnpack':
214
+ return true;
215
+ case 'FunctionCall':
216
+ return node.args.some(arg => containsNonBuilderFunction(arg));
217
+ case 'Comparison':
218
+ if (node.left.kind === 'FunctionCall' || node.left.kind === 'ArrayUnpack')
219
+ return true;
220
+ return containsNonBuilderFunction(node.left) || containsNonBuilderFunction(node.right);
221
+ case 'Logical':
222
+ return containsNonBuilderFunction(node.left) || containsNonBuilderFunction(node.right);
223
+ case 'Not':
224
+ return containsNonBuilderFunction(node.operand);
225
+ case 'Group':
226
+ return containsNonBuilderFunction(node.expression);
227
+ case 'InExpression':
228
+ if (node.field.kind === 'FunctionCall' || node.field.kind === 'ArrayUnpack')
229
+ return true;
230
+ return false;
231
+ default:
232
+ return false;
233
+ }
234
+ }
235
+ function isBuilderCondition(node) {
236
+ return node.kind === 'Comparison' || node.kind === 'InExpression'
237
+ || node.kind === 'FieldAccess' || node.kind === 'BooleanLiteral'
238
+ || node.kind === 'FunctionCall';
239
+ }
240
+ function isBuilderAndLeaf(node) {
241
+ if (isBuilderCondition(node))
242
+ return true;
243
+ if (node.kind === 'Not')
244
+ return isBuilderCondition(node.operand);
245
+ return false;
246
+ }
247
+ function isBuilderAndGroup(node) {
248
+ if (node.kind === 'Logical') {
249
+ if (node.operator !== 'and' && node.operator !== '&&')
250
+ return false;
251
+ return isBuilderAndGroup(node.left) && isBuilderAndGroup(node.right);
252
+ }
253
+ return isBuilderAndLeaf(node);
254
+ }
255
+ function isValidBuilderGroup(node) {
256
+ if (node.kind !== 'Group')
257
+ return false;
258
+ const inner = node.expression;
259
+ if (isBuilderCondition(inner))
260
+ return true;
261
+ if (inner.kind === 'Not' && isBuilderCondition(inner.operand))
262
+ return true;
263
+ if (inner.kind === 'Logical' && isTopLevelAnd(inner) && isBuilderAndGroup(inner))
264
+ return true;
265
+ return false;
266
+ }
267
+ function isTopLevelAnd(node) {
268
+ if (node.kind !== 'Logical')
269
+ return true;
270
+ if (node.operator !== 'and' && node.operator !== '&&')
271
+ return false;
272
+ return isTopLevelAnd(node.left) && isTopLevelAnd(node.right);
273
+ }
274
+ function isTopLevelOr(node) {
275
+ if (node.kind !== 'Logical')
276
+ return true;
277
+ if (node.operator !== 'or' && node.operator !== '||')
278
+ return false;
279
+ if (node.left.kind === 'Logical' && (node.left.operator === 'or' || node.left.operator === '||')) {
280
+ return isTopLevelOr(node.left);
281
+ }
282
+ return true;
283
+ }
284
+ function collectOrBranches(node, branches) {
285
+ if (node.kind === 'Logical' && (node.operator === 'or' || node.operator === '||')) {
286
+ collectOrBranches(node.left, branches);
287
+ collectOrBranches(node.right, branches);
288
+ }
289
+ else {
290
+ branches.push(node);
291
+ }
292
+ }
293
+ function collectAndLeaves(node, leaves) {
294
+ if (node.kind === 'Logical' && (node.operator === 'and' || node.operator === '&&')) {
295
+ collectAndLeaves(node.left, leaves);
296
+ collectAndLeaves(node.right, leaves);
297
+ }
298
+ else {
299
+ leaves.push(node);
300
+ }
301
+ }
302
+ //# sourceMappingURL=builder-compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-compat.js","sourceRoot":"","sources":["../src/builder-compat.ts"],"names":[],"mappings":"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"}
package/dist/fixer.js CHANGED
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { parse } from './parser.js';
8
8
  import { substitutePlaceholders, restorePlaceholders } from './placeholders.js';
9
+ import { printNode, normalizeOp, collectChain, stripGroup } from './ast-utils.js';
9
10
  const CLIKE_TO_ENGLISH = {
10
11
  '==': 'eq', '!=': 'ne', '<': 'lt', '<=': 'le', '>': 'gt', '>=': 'ge',
11
12
  '~': 'matches', '&&': 'and', '||': 'or', '!': 'not', '^^': 'xor',
@@ -186,7 +187,7 @@ function fixDeMorgans(node, fixes) {
186
187
  if (branches.every(b => isSimpleCondition(b))) {
187
188
  fixes.push('De Morgan: not (A and B) → (not A) or (not B)');
188
189
  const negated = branches.map(b => buildGroup(wrapNot(stripGroup(b))));
189
- return buildOrChain(negated);
190
+ return buildGroup(buildOrChain(negated));
190
191
  }
191
192
  }
192
193
  }
@@ -376,27 +377,6 @@ function isAllOp(node, op) {
376
377
  return false;
377
378
  return isAllOp(node.left, op) && isAllOp(node.right, op);
378
379
  }
379
- function normalizeOp(op) {
380
- if (op === '&&')
381
- return 'and';
382
- if (op === '||')
383
- return 'or';
384
- return op;
385
- }
386
- function collectChain(node, op, branches) {
387
- if (node.kind === 'Logical' && normalizeOp(node.operator) === op) {
388
- collectChain(node.left, op, branches);
389
- collectChain(node.right, op, branches);
390
- }
391
- else {
392
- branches.push(node);
393
- }
394
- }
395
- function stripGroup(node) {
396
- while (node.kind === 'Group')
397
- node = node.expression;
398
- return node;
399
- }
400
380
  function wrapNot(node) {
401
381
  // Don't double-negate
402
382
  if (node.kind === 'Not')
@@ -420,50 +400,4 @@ function buildOrChain(nodes) {
420
400
  }
421
401
  return result;
422
402
  }
423
- // ── AST Printer ──────────────────────────────────────────────────────
424
- function printNode(node) {
425
- switch (node.kind) {
426
- case 'BooleanLiteral':
427
- return String(node.value);
428
- case 'StringLiteral':
429
- if (node.raw)
430
- return `r"${node.value}"`;
431
- return `"${node.value.replace(/"/g, '\\"')}"`;
432
- case 'IntegerLiteral':
433
- case 'FloatLiteral':
434
- return String(node.value);
435
- case 'IPLiteral':
436
- return node.cidr !== undefined ? `${node.value}/${node.cidr}` : node.value;
437
- case 'FieldAccess': {
438
- let s = node.field;
439
- if (node.mapKey !== undefined)
440
- s += `["${node.mapKey.replace(/"/g, '\\"')}"]`;
441
- if (node.arrayIndex !== undefined)
442
- s += `[${node.arrayIndex}]`;
443
- return s;
444
- }
445
- case 'NamedList':
446
- return node.name.startsWith('$') ? node.name : `$${node.name}`;
447
- case 'FunctionCall':
448
- return `${node.name}(${node.args.map(a => printNode(a)).join(', ')})`;
449
- case 'Comparison':
450
- return `${printNode(node.left)} ${node.operator} ${printNode(node.right)}`;
451
- case 'Logical':
452
- return `${printNode(node.left)} ${node.operator} ${printNode(node.right)}`;
453
- case 'Not':
454
- return `not ${printNode(node.operand)}`;
455
- case 'InExpression': {
456
- const field = printNode(node.field);
457
- const neg = node.negated ? 'not ' : '';
458
- if (node.values.length === 1 && node.values[0].kind === 'NamedList') {
459
- return `${neg}${field} in ${printNode(node.values[0])}`;
460
- }
461
- return `${neg}${field} in {${node.values.map(v => printNode(v)).join(' ')}}`;
462
- }
463
- case 'Group':
464
- return `(${printNode(node.expression)})`;
465
- case 'ArrayUnpack':
466
- return `${printNode(node.field)}[*]`;
467
- }
468
- }
469
403
  //# sourceMappingURL=fixer.js.map
package/dist/fixer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fixer.js","sourceRoot":"","sources":["../src/fixer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixer.js","sourceRoot":"","sources":["../src/fixer.ts"],"names":[],"mappings":"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"}