@ontrails/warden 1.0.0-beta.11 → 1.0.0-beta.13

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.
Files changed (183) hide show
  1. package/.turbo/turbo-lint.log +1 -1
  2. package/CHANGELOG.md +59 -31
  3. package/README.md +17 -17
  4. package/dist/cli.d.ts +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +14 -10
  7. package/dist/cli.js.map +1 -1
  8. package/dist/drift.d.ts +6 -6
  9. package/dist/drift.d.ts.map +1 -1
  10. package/dist/drift.js +8 -8
  11. package/dist/drift.js.map +1 -1
  12. package/dist/formatters.js +2 -2
  13. package/dist/formatters.js.map +1 -1
  14. package/dist/index.d.ts +4 -4
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +5 -5
  17. package/dist/index.js.map +1 -1
  18. package/dist/rules/ast.d.ts +15 -11
  19. package/dist/rules/ast.d.ts.map +1 -1
  20. package/dist/rules/ast.js +34 -30
  21. package/dist/rules/ast.js.map +1 -1
  22. package/dist/rules/context-no-trailhead-types.d.ts +12 -0
  23. package/dist/rules/context-no-trailhead-types.d.ts.map +1 -0
  24. package/dist/rules/context-no-trailhead-types.js +96 -0
  25. package/dist/rules/context-no-trailhead-types.js.map +1 -0
  26. package/dist/rules/cross-declarations.d.ts +13 -0
  27. package/dist/rules/cross-declarations.d.ts.map +1 -0
  28. package/dist/rules/cross-declarations.js +264 -0
  29. package/dist/rules/cross-declarations.js.map +1 -0
  30. package/dist/rules/follow-declarations.d.ts +1 -1
  31. package/dist/rules/follow-declarations.js +5 -5
  32. package/dist/rules/follow-declarations.js.map +1 -1
  33. package/dist/rules/implementation-returns-result.d.ts +2 -2
  34. package/dist/rules/implementation-returns-result.js +6 -6
  35. package/dist/rules/implementation-returns-result.js.map +1 -1
  36. package/dist/rules/index.d.ts +4 -4
  37. package/dist/rules/index.d.ts.map +1 -1
  38. package/dist/rules/index.js +12 -12
  39. package/dist/rules/index.js.map +1 -1
  40. package/dist/rules/no-direct-impl-in-route.d.ts +4 -4
  41. package/dist/rules/no-direct-impl-in-route.js +14 -14
  42. package/dist/rules/no-direct-impl-in-route.js.map +1 -1
  43. package/dist/rules/no-direct-implementation-call.d.ts +3 -3
  44. package/dist/rules/no-direct-implementation-call.js +7 -7
  45. package/dist/rules/no-direct-implementation-call.js.map +1 -1
  46. package/dist/rules/no-sync-result-assumption.d.ts +1 -1
  47. package/dist/rules/no-sync-result-assumption.js +5 -5
  48. package/dist/rules/no-sync-result-assumption.js.map +1 -1
  49. package/dist/rules/no-throw-in-detour-target.js +2 -2
  50. package/dist/rules/no-throw-in-detour-target.js.map +1 -1
  51. package/dist/rules/no-throw-in-implementation.d.ts +1 -1
  52. package/dist/rules/no-throw-in-implementation.js +3 -3
  53. package/dist/rules/no-throw-in-implementation.js.map +1 -1
  54. package/dist/rules/provision-declarations.d.ts +14 -0
  55. package/dist/rules/provision-declarations.d.ts.map +1 -0
  56. package/dist/rules/provision-declarations.js +344 -0
  57. package/dist/rules/provision-declarations.js.map +1 -0
  58. package/dist/rules/provision-exists.d.ts +6 -0
  59. package/dist/rules/provision-exists.d.ts.map +1 -0
  60. package/dist/rules/provision-exists.js +89 -0
  61. package/dist/rules/provision-exists.js.map +1 -0
  62. package/dist/rules/service-declarations.d.ts +7 -5
  63. package/dist/rules/service-declarations.d.ts.map +1 -1
  64. package/dist/rules/service-declarations.js +106 -103
  65. package/dist/rules/service-declarations.js.map +1 -1
  66. package/dist/rules/service-exists.d.ts +3 -1
  67. package/dist/rules/service-exists.d.ts.map +1 -1
  68. package/dist/rules/service-exists.js +35 -33
  69. package/dist/rules/service-exists.js.map +1 -1
  70. package/dist/rules/specs.d.ts +1 -1
  71. package/dist/rules/specs.d.ts.map +1 -1
  72. package/dist/rules/specs.js +1 -1
  73. package/dist/rules/specs.js.map +1 -1
  74. package/dist/rules/types.d.ts +2 -2
  75. package/dist/rules/types.d.ts.map +1 -1
  76. package/dist/trails/context-no-surface-types.trail.js +1 -1
  77. package/dist/trails/context-no-trailhead-types.trail.d.ts +13 -0
  78. package/dist/trails/context-no-trailhead-types.trail.d.ts.map +1 -0
  79. package/dist/trails/context-no-trailhead-types.trail.js +21 -0
  80. package/dist/trails/context-no-trailhead-types.trail.js.map +1 -0
  81. package/dist/trails/cross-declarations.trail.d.ts +13 -0
  82. package/dist/trails/cross-declarations.trail.d.ts.map +1 -0
  83. package/dist/trails/cross-declarations.trail.js +22 -0
  84. package/dist/trails/cross-declarations.trail.js.map +1 -0
  85. package/dist/trails/follow-declarations.trail.js +1 -1
  86. package/dist/trails/implementation-returns-result.trail.js +1 -1
  87. package/dist/trails/index.d.ts +4 -4
  88. package/dist/trails/index.d.ts.map +1 -1
  89. package/dist/trails/index.js +4 -4
  90. package/dist/trails/index.js.map +1 -1
  91. package/dist/trails/no-direct-impl-in-route.trail.js +4 -4
  92. package/dist/trails/no-direct-impl-in-route.trail.js.map +1 -1
  93. package/dist/trails/no-direct-implementation-call.trail.js +2 -2
  94. package/dist/trails/no-direct-implementation-call.trail.js.map +1 -1
  95. package/dist/trails/no-sync-result-assumption.trail.js +2 -2
  96. package/dist/trails/no-sync-result-assumption.trail.js.map +1 -1
  97. package/dist/trails/no-throw-in-detour-target.trail.d.ts +1 -1
  98. package/dist/trails/no-throw-in-detour-target.trail.js +1 -1
  99. package/dist/trails/no-throw-in-implementation.trail.js +1 -1
  100. package/dist/trails/prefer-schema-inference.trail.js +1 -1
  101. package/dist/trails/provision-declarations.trail.d.ts +13 -0
  102. package/dist/trails/provision-declarations.trail.d.ts.map +1 -0
  103. package/dist/trails/provision-declarations.trail.js +25 -0
  104. package/dist/trails/provision-declarations.trail.js.map +1 -0
  105. package/dist/trails/provision-exists.trail.d.ts +15 -0
  106. package/dist/trails/provision-exists.trail.d.ts.map +1 -0
  107. package/dist/trails/provision-exists.trail.js +27 -0
  108. package/dist/trails/provision-exists.trail.js.map +1 -0
  109. package/dist/trails/run.d.ts +2 -2
  110. package/dist/trails/run.d.ts.map +1 -1
  111. package/dist/trails/run.js +6 -6
  112. package/dist/trails/run.js.map +1 -1
  113. package/dist/trails/schema.d.ts +1 -1
  114. package/dist/trails/schema.js +2 -2
  115. package/dist/trails/schema.js.map +1 -1
  116. package/dist/trails/service-declarations.trail.d.ts +13 -0
  117. package/dist/trails/service-declarations.trail.d.ts.map +1 -1
  118. package/dist/trails/service-declarations.trail.js +9 -7
  119. package/dist/trails/service-declarations.trail.js.map +1 -1
  120. package/dist/trails/service-exists.trail.d.ts +17 -0
  121. package/dist/trails/service-exists.trail.d.ts.map +1 -1
  122. package/dist/trails/service-exists.trail.js +10 -8
  123. package/dist/trails/service-exists.trail.js.map +1 -1
  124. package/dist/trails/valid-describe-refs.trail.d.ts +1 -1
  125. package/dist/trails/valid-detour-refs.trail.d.ts +1 -1
  126. package/dist/trails/valid-detour-refs.trail.js +2 -2
  127. package/dist/trails/wrap-rule.js +14 -14
  128. package/dist/trails/wrap-rule.js.map +1 -1
  129. package/package.json +4 -4
  130. package/src/__tests__/cli.test.ts +8 -8
  131. package/src/__tests__/{follow-declarations.test.ts → cross-declarations.test.ts} +78 -78
  132. package/src/__tests__/drift.test.ts +5 -5
  133. package/src/__tests__/formatters.test.ts +2 -2
  134. package/src/__tests__/implementation-returns-result.test.ts +11 -11
  135. package/src/__tests__/no-direct-implementation-call.test.ts +10 -10
  136. package/src/__tests__/no-sync-result-assumption.test.ts +6 -6
  137. package/src/__tests__/no-throw-in-detour-target.test.ts +6 -6
  138. package/src/__tests__/prefer-schema-inference.test.ts +4 -4
  139. package/src/__tests__/provision-declarations.test.ts +318 -0
  140. package/src/__tests__/provision-exists.test.ts +122 -0
  141. package/src/__tests__/rules.test.ts +38 -38
  142. package/src/__tests__/valid-describe-refs.test.ts +4 -4
  143. package/src/__tests__/wrap-rule.test.ts +4 -4
  144. package/src/cli.ts +17 -13
  145. package/src/drift.ts +12 -12
  146. package/src/formatters.ts +2 -2
  147. package/src/index.ts +8 -8
  148. package/src/rules/ast.ts +36 -31
  149. package/src/rules/{context-no-surface-types.ts → context-no-trailhead-types.ts} +8 -8
  150. package/src/rules/{follow-declarations.ts → cross-declarations.ts} +63 -56
  151. package/src/rules/implementation-returns-result.ts +6 -6
  152. package/src/rules/index.ts +12 -12
  153. package/src/rules/no-direct-impl-in-route.ts +17 -17
  154. package/src/rules/no-direct-implementation-call.ts +7 -7
  155. package/src/rules/no-sync-result-assumption.ts +5 -5
  156. package/src/rules/no-throw-in-detour-target.ts +2 -2
  157. package/src/rules/no-throw-in-implementation.ts +3 -3
  158. package/src/rules/{service-declarations.ts → provision-declarations.ts} +145 -129
  159. package/src/rules/{service-exists.ts → provision-exists.ts} +51 -46
  160. package/src/rules/specs.ts +4 -4
  161. package/src/rules/types.ts +2 -2
  162. package/src/trails/{context-no-surface-types.trail.ts → context-no-trailhead-types.trail.ts} +5 -5
  163. package/src/trails/cross-declarations.trail.ts +22 -0
  164. package/src/trails/implementation-returns-result.trail.ts +1 -1
  165. package/src/trails/index.ts +4 -4
  166. package/src/trails/no-direct-impl-in-route.trail.ts +4 -4
  167. package/src/trails/no-direct-implementation-call.trail.ts +2 -2
  168. package/src/trails/no-sync-result-assumption.trail.ts +2 -2
  169. package/src/trails/no-throw-in-detour-target.trail.ts +1 -1
  170. package/src/trails/no-throw-in-implementation.trail.ts +1 -1
  171. package/src/trails/prefer-schema-inference.trail.ts +1 -1
  172. package/src/trails/provision-declarations.trail.ts +25 -0
  173. package/src/trails/provision-exists.trail.ts +27 -0
  174. package/src/trails/run.ts +7 -7
  175. package/src/trails/schema.ts +2 -2
  176. package/src/trails/valid-detour-refs.trail.ts +2 -2
  177. package/src/trails/wrap-rule.ts +17 -17
  178. package/tsconfig.tsbuildinfo +1 -1
  179. package/src/__tests__/service-declarations.test.ts +0 -318
  180. package/src/__tests__/service-exists.test.ts +0 -122
  181. package/src/trails/follow-declarations.trail.ts +0 -22
  182. package/src/trails/service-declarations.trail.ts +0 -25
  183. package/src/trails/service-exists.trail.ts +0 -27
@@ -23,7 +23,7 @@ export declare const walk: WalkFn;
23
23
  /**
24
24
  * Walk an AST node tree without descending into nested function scopes.
25
25
  * The root node is always traversed; only inner function boundaries are skipped.
26
- * Useful for service-access analysis where inner functions may shadow
26
+ * Useful for provision-access analysis where inner functions may shadow
27
27
  * the trail context parameter name.
28
28
  */
29
29
  export declare const walkScope: WalkFn;
@@ -39,16 +39,20 @@ export declare const getStringValue: (node: AstNode) => string | null;
39
39
  export declare const extractStringLiteral: (node: AstNode | undefined) => string | null;
40
40
  /** Extract the first string argument from a CallExpression. */
41
41
  export declare const extractFirstStringArg: (node: AstNode) => string | null;
42
- /** Collect `const foo = service('id', ...)` bindings from a parsed file. */
42
+ /** Collect `const foo = provision('id', ...)` bindings from a parsed file. */
43
+ export declare const collectNamedProvisionIds: (ast: AstNode) => ReadonlyMap<string, string>;
44
+ /** Collect all inline `provision('id', ...)` definition IDs from a parsed file. */
45
+ export declare const collectProvisionDefinitionIds: (ast: AstNode) => ReadonlySet<string>;
46
+ /** Backward-compatible aliases while the migration is in flight. */
43
47
  export declare const collectNamedServiceIds: (ast: AstNode) => ReadonlyMap<string, string>;
44
- /** Collect all inline `service('id', ...)` definition IDs from a parsed file. */
48
+ /** Backward-compatible aliases while the migration is in flight. */
45
49
  export declare const collectServiceDefinitionIds: (ast: AstNode) => ReadonlySet<string>;
46
50
  /** Find a Property node by key name inside an ObjectExpression config. */
47
51
  export declare const findConfigProperty: (config: AstNode, propertyName: string) => AstNode | null;
48
52
  export interface TrailDefinition {
49
53
  /** Trail ID string, e.g. "entity.show" */
50
54
  readonly id: string;
51
- /** "trail" or "event" */
55
+ /** "trail" or "signal" */
52
56
  readonly kind: string;
53
57
  /** The config object argument (second arg to trail() call) */
54
58
  readonly config: AstNode;
@@ -57,15 +61,15 @@ export interface TrailDefinition {
57
61
  }
58
62
  export declare const findTrailDefinitions: (ast: AstNode) => TrailDefinition[];
59
63
  /**
60
- * Find `run:` property values.
64
+ * Find `blaze:` property values.
61
65
  *
62
- * When given an ObjectExpression (trail config), returns only its direct `run:`
66
+ * When given an ObjectExpression (trail config), returns only its direct `blaze:`
63
67
  * properties. When given a full AST, finds trail definitions first and extracts
64
- * `run:` from each config — in both cases ignoring nested `run:` properties
65
- * (e.g. `metadata: { run: ... }`).
68
+ * `blaze:` from each config — in both cases ignoring nested `blaze:` properties
69
+ * (e.g. `meta: { blaze: ... }`).
66
70
  */
67
- export declare const findRunBodies: (node: AstNode) => AstNode[];
68
- /** Check if a node is a call to `.run()` on some object. */
69
- export declare const isRunCall: (node: AstNode) => boolean;
71
+ export declare const findBlazeBodies: (node: AstNode) => AstNode[];
72
+ /** Check if a node is a call to `.blaze()` on some object. */
73
+ export declare const isBlazeCall: (node: AstNode) => boolean;
70
74
  export {};
71
75
  //# sourceMappingURL=ast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/rules/ast.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC;IAC7C,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAMD,0EAA0E;AAC1E,eAAO,MAAM,KAAK,GAAI,UAAU,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,GAAG,IAOtE,CAAC;AAMF,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;AAkBtE,4DAA4D;AAC5D,eAAO,MAAM,IAAI,EAAE,MASlB,CAAC;AAsBF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,MASvB,CAAC;AAMF,mEAAmE;AACnE,eAAO,MAAM,YAAY,GAAI,YAAY,MAAM,EAAE,QAAQ,MAAM,KAAG,MAQjE,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,cAAc,GAAI,MAAM,OAAO,GAAG,SAAS,KAAG,MAAM,GAAG,IAKnE,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,eAAe,GAAI,MAAM,OAAO,GAAG,SAAS,KAAG,IAAI,IAAI,OAWnE,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,cAAc,GAAI,MAAM,OAAO,KAAG,MAAM,GAAG,IAGvD,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,GAC/B,MAAM,OAAO,GAAG,SAAS,KACxB,MAAM,GAAG,IACiD,CAAC;AAE9D,+DAA+D;AAC/D,eAAO,MAAM,qBAAqB,GAAI,MAAM,OAAO,KAAG,MAAM,GAAG,IAQ9D,CAAC;AAqBF,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,GACjC,KAAK,OAAO,KACX,WAAW,CAAC,MAAM,EAAE,MAAM,CAwB5B,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,GACtC,KAAK,OAAO,KACX,WAAW,CAAC,MAAM,CAepB,CAAC;AAMF,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,OAAO,EACf,cAAc,MAAM,KACnB,OAAO,GAAG,IAcZ,CAAC;AAMF,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AA2FD,eAAO,MAAM,oBAAoB,GAAI,KAAK,OAAO,KAAG,eAAe,EAWlE,CAAC;AAyBF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,OAAO,KAAG,OAAO,EAWpD,CAAC;AAMF,4DAA4D;AAC5D,eAAO,MAAM,SAAS,GAAI,MAAM,OAAO,KAAG,OAmBzC,CAAC"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/rules/ast.ts"],"names":[],"mappings":"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"}
package/dist/rules/ast.js CHANGED
@@ -62,7 +62,7 @@ const walkScopeInner = (node, visit) => {
62
62
  /**
63
63
  * Walk an AST node tree without descending into nested function scopes.
64
64
  * The root node is always traversed; only inner function boundaries are skipped.
65
- * Useful for service-access analysis where inner functions may shadow
65
+ * Useful for provision-access analysis where inner functions may shadow
66
66
  * the trail context parameter name.
67
67
  */
68
68
  export const walkScope = (node, visit) => {
@@ -124,10 +124,10 @@ export const extractFirstStringArg = (node) => {
124
124
  const [firstArg] = args ?? [];
125
125
  return extractStringLiteral(firstArg);
126
126
  };
127
- const isServiceCall = (node) => !!node &&
127
+ const isProvisionCall = (node) => !!node &&
128
128
  node.type === 'CallExpression' &&
129
129
  identifierName(node.callee) ===
130
- 'service';
130
+ 'provision';
131
131
  const extractBindingName = (node) => {
132
132
  if (!node) {
133
133
  return null;
@@ -140,30 +140,30 @@ const extractBindingName = (node) => {
140
140
  }
141
141
  return null;
142
142
  };
143
- /** Collect `const foo = service('id', ...)` bindings from a parsed file. */
144
- export const collectNamedServiceIds = (ast) => {
143
+ /** Collect `const foo = provision('id', ...)` bindings from a parsed file. */
144
+ export const collectNamedProvisionIds = (ast) => {
145
145
  const ids = new Map();
146
146
  walk(ast, (node) => {
147
147
  if (node.type !== 'VariableDeclarator') {
148
148
  return;
149
149
  }
150
150
  const { id, init } = node;
151
- if (!isServiceCall(init)) {
151
+ if (!isProvisionCall(init)) {
152
152
  return;
153
153
  }
154
154
  const name = extractBindingName(id);
155
- const serviceId = init ? extractFirstStringArg(init) : null;
156
- if (name && serviceId) {
157
- ids.set(name, serviceId);
155
+ const provisionId = init ? extractFirstStringArg(init) : null;
156
+ if (name && provisionId) {
157
+ ids.set(name, provisionId);
158
158
  }
159
159
  });
160
160
  return ids;
161
161
  };
162
- /** Collect all inline `service('id', ...)` definition IDs from a parsed file. */
163
- export const collectServiceDefinitionIds = (ast) => {
162
+ /** Collect all inline `provision('id', ...)` definition IDs from a parsed file. */
163
+ export const collectProvisionDefinitionIds = (ast) => {
164
164
  const ids = new Set();
165
165
  walk(ast, (node) => {
166
- if (!isServiceCall(node)) {
166
+ if (!isProvisionCall(node)) {
167
167
  return;
168
168
  }
169
169
  const id = extractFirstStringArg(node);
@@ -173,6 +173,10 @@ export const collectServiceDefinitionIds = (ast) => {
173
173
  });
174
174
  return ids;
175
175
  };
176
+ /** Backward-compatible aliases while the migration is in flight. */
177
+ export const collectNamedServiceIds = collectNamedProvisionIds;
178
+ /** Backward-compatible aliases while the migration is in flight. */
179
+ export const collectServiceDefinitionIds = collectProvisionDefinitionIds;
176
180
  // ---------------------------------------------------------------------------
177
181
  // Config property extraction helpers
178
182
  // ---------------------------------------------------------------------------
@@ -194,11 +198,11 @@ export const findConfigProperty = (config, propertyName) => {
194
198
  };
195
199
  /**
196
200
  * Find all `trail("id", { ... })`, `trail({ id: "x", ... })`, and
197
- * `event("id", { ... })` call sites.
201
+ * `signal("id", { ... })` call sites.
198
202
  *
199
203
  * Returns the trail ID, kind, and config object node for each definition.
200
204
  */
201
- const TRAIL_CALLEE_NAMES = new Set(['trail', 'event']);
205
+ const TRAIL_CALLEE_NAMES = new Set(['trail', 'signal']);
202
206
  const getTrailCalleeName = (node) => {
203
207
  if (node.type !== 'CallExpression') {
204
208
  return null;
@@ -275,50 +279,50 @@ export const findTrailDefinitions = (ast) => {
275
279
  return definitions;
276
280
  };
277
281
  // ---------------------------------------------------------------------------
278
- // Run body extraction
282
+ // Blaze body extraction
279
283
  // ---------------------------------------------------------------------------
280
284
  /**
281
- * Extract top-level `run:` property values from an ObjectExpression's direct properties.
285
+ * Extract top-level `blaze:` property values from an ObjectExpression's direct properties.
282
286
  *
283
- * Does not recurse into nested objects, so `metadata: { run: ... }` is ignored.
287
+ * Does not recurse into nested objects, so `meta: { blaze: ... }` is ignored.
284
288
  */
285
- const extractRunFromConfig = (config) => {
289
+ const extractBlazeFromConfig = (config) => {
286
290
  const bodies = [];
287
291
  const properties = config['properties'];
288
292
  if (!properties) {
289
293
  return bodies;
290
294
  }
291
295
  for (const prop of properties) {
292
- if (prop.type === 'Property' && prop.key?.name === 'run' && prop.value) {
296
+ if (prop.type === 'Property' && prop.key?.name === 'blaze' && prop.value) {
293
297
  bodies.push(prop.value);
294
298
  }
295
299
  }
296
300
  return bodies;
297
301
  };
298
302
  /**
299
- * Find `run:` property values.
303
+ * Find `blaze:` property values.
300
304
  *
301
- * When given an ObjectExpression (trail config), returns only its direct `run:`
305
+ * When given an ObjectExpression (trail config), returns only its direct `blaze:`
302
306
  * properties. When given a full AST, finds trail definitions first and extracts
303
- * `run:` from each config — in both cases ignoring nested `run:` properties
304
- * (e.g. `metadata: { run: ... }`).
307
+ * `blaze:` from each config — in both cases ignoring nested `blaze:` properties
308
+ * (e.g. `meta: { blaze: ... }`).
305
309
  */
306
- export const findRunBodies = (node) => {
310
+ export const findBlazeBodies = (node) => {
307
311
  if (node.type === 'ObjectExpression') {
308
- return extractRunFromConfig(node);
312
+ return extractBlazeFromConfig(node);
309
313
  }
310
- // Full AST — find trail definitions and extract run from their configs
314
+ // Full AST — find trail definitions and extract blaze from their configs
311
315
  const bodies = [];
312
316
  for (const def of findTrailDefinitions(node)) {
313
- bodies.push(...extractRunFromConfig(def.config));
317
+ bodies.push(...extractBlazeFromConfig(def.config));
314
318
  }
315
319
  return bodies;
316
320
  };
317
321
  // ---------------------------------------------------------------------------
318
322
  // Misc helpers
319
323
  // ---------------------------------------------------------------------------
320
- /** Check if a node is a call to `.run()` on some object. */
321
- export const isRunCall = (node) => {
324
+ /** Check if a node is a call to `.blaze()` on some object. */
325
+ export const isBlazeCall = (node) => {
322
326
  if (node.type !== 'CallExpression') {
323
327
  return false;
324
328
  }
@@ -332,6 +336,6 @@ export const isRunCall = (node) => {
332
336
  }
333
337
  const prop = callee.property;
334
338
  return (prop?.type === 'Identifier' &&
335
- prop.name === 'run');
339
+ prop.name === 'blaze');
336
340
  };
337
341
  //# sourceMappingURL=ast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/rules/ast.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgBvC,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,UAAkB,EAAkB,EAAE;IAC5E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,OAA6B,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAQF,MAAM,YAAY,GAAG,CACnB,IAAa,EACb,KAA8B,EAC9B,OAAe,EACT,EAAE;IACR,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAK,GAAe,CAAC,IAAI,EAAE,CAAC;YACnE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,IAAI,GAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IAC1C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,IAAe,CAAC;IAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,KAAK,CAAC,CAAC,CAAC,CAAC;IACX,CAAC;IACD,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,yBAAyB;IACzB,oBAAoB;IACpB,qBAAqB;CACtB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IAC7C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,IAAe,CAAC;IAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,KAAK,CAAC,CAAC,CAAC,CAAC;QACT,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;IACH,CAAC;IACD,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IAC/C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,IAAe,CAAC;IAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,KAAK,CAAC,CAAC,CAAC,CAAC;IACX,CAAC;IACD,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,mEAAmE;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,MAAc,EAAU,EAAE;IACzE,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAyB,EAAiB,EAAE;IACzE,IAAI,IAAI,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAQ,IAAqC,CAAC,IAAI,IAAI,IAAI,CAAC;AAC7D,CAAC,CAAC;AAEF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAyB,EAAmB,EAAE;IAC5E,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,OAAQ,IAAuC,CAAC,KAAK,KAAK,QAAQ,CAAC;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAa,EAAiB,EAAE;IAC7D,MAAM,GAAG,GAAI,IAAuC,CAAC,KAAK,CAAC;IAC3D,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAyB,EACV,EAAE,CACjB,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE9D,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAa,EAAiB,EAAE;IACpE,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAmC,CAAC;IACjE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IAC9B,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAyB,EAAW,EAAE,CAC3D,CAAC,CAAC,IAAI;IACN,IAAI,CAAC,IAAI,KAAK,gBAAgB;IAC9B,cAAc,CAAE,IAAwC,CAAC,MAAM,CAAC;QAC9D,SAAS,CAAC;AAEd,MAAM,kBAAkB,GAAG,CAAC,IAAyB,EAAiB,EAAE;IACtE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC/B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,OAAO,cAAc,CAAE,IAAsC,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,GAAY,EACiB,EAAE;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QACjB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAGpB,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;YACtB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,GAAY,EACS,EAAE;IACvB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9B,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,EAAE,EAAE,CAAC;YACP,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAe,EACf,YAAoB,EACJ,EAAE;IAClB,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAmC,CAAC;IAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAiBF;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEvD,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAiB,EAAE;IAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAwB,CAAC;IACrD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAsC,CAAC;IACxD,OAAO,IAAI,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC,CAAC;AAEF,uFAAuF;AACvF,MAAM,gBAAgB,GAAG,CACvB,IAAa,EACyC,EAAE;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAmC,CAAC;IACjE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qCAAqC;IACrC,IAAI,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACtD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,8CAA8C;IAC9C,OAAO,QAAQ,CAAC,IAAI,KAAK,kBAAkB;QACzC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;QACtC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC;AAEF,uFAAuF;AACvF,MAAM,mBAAmB,GAAG,CAAC,MAAe,EAAiB,EAAE;IAC7D,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAI,MAAM,CAAC,KAAwC,CAAC,KAAK,CAAC;IACnE,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,SAGvB,EAAiB,EAAE;IAClB,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,OAAQ,SAAS,CAAC,KAAuC,CAAC,KAAK,IAAI,IAAI,CAAC;IAC1E,CAAC;IACD,OAAO,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,IAAa,EAA0B,EAAE;IACvE,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,SAAS;QAC3B,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAY,EAAqB,EAAE;IACtE,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QACjB,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,GAAG,EAAE,CAAC;YACR,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,CAAC,MAAe,EAAa,EAAE;IAC1D,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAmC,CAAC;IAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAa,EAAa,EAAE;IACxD,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,uEAAuE;IACvE,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAa,EAAW,EAAE;IAClD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAwB,CAAC;IACrD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,MAAM,CAAC,IAAI,KAAK,wBAAwB;QACxC,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAClC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAI,MAA4C,CAAC,QAAQ,CAAC;IACpE,OAAO,CACL,IAAI,EAAE,IAAI,KAAK,YAAY;QAC1B,IAAoC,CAAC,IAAI,KAAK,KAAK,CACrD,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/rules/ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Detects imports of trailhead-specific modules and types in trail files.
3
+ *
4
+ * Uses AST parsing for accurate detection — no false positives from
5
+ * imports in comments or strings.
6
+ */
7
+ import type { WardenRule } from './types.js';
8
+ /**
9
+ * Detects imports of trailhead-specific types in trail implementation files.
10
+ */
11
+ export declare const contextNoTrailheadTypes: WardenRule;
12
+ //# sourceMappingURL=context-no-trailhead-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-no-trailhead-types.d.ts","sourceRoot":"","sources":["../../src/rules/context-no-trailhead-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAoB,UAAU,EAAE,MAAM,YAAY,CAAC;AAgH/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,UA0BrC,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Detects imports of trailhead-specific modules and types in trail files.
3
+ *
4
+ * Uses AST parsing for accurate detection — no false positives from
5
+ * imports in comments or strings.
6
+ */
7
+ import { offsetToLine, parse, walk } from './ast.js';
8
+ const SURFACE_MODULES = new Set([
9
+ 'express',
10
+ 'hono',
11
+ 'fastify',
12
+ '@modelcontextprotocol/sdk',
13
+ 'node:http',
14
+ 'node:https',
15
+ '@hono/node-server',
16
+ 'koa',
17
+ ]);
18
+ const SURFACE_TYPE_NAMES = new Set([
19
+ 'Request',
20
+ 'Response',
21
+ 'NextFunction',
22
+ 'McpSession',
23
+ 'McpCallToolRequest',
24
+ 'IncomingMessage',
25
+ 'ServerResponse',
26
+ ]);
27
+ const makeDiag = (filePath, sourceCode, node, message) => ({
28
+ filePath,
29
+ line: offsetToLine(sourceCode, node.start),
30
+ message,
31
+ rule: 'context-no-trailhead-types',
32
+ severity: 'error',
33
+ });
34
+ const findSurfaceTypeName = (specifiers) => {
35
+ for (const spec of specifiers) {
36
+ const name = spec.imported?.name ?? spec.local?.name;
37
+ if (name && SURFACE_TYPE_NAMES.has(name)) {
38
+ return name;
39
+ }
40
+ }
41
+ return undefined;
42
+ };
43
+ const getImportModuleName = (node) => {
44
+ if (node.type !== 'ImportDeclaration') {
45
+ return null;
46
+ }
47
+ const source = node['source'];
48
+ return source?.value ?? null;
49
+ };
50
+ const checkSpecifiersForSurfaceTypes = (node, filePath, sourceCode) => {
51
+ const specifiers = node['specifiers'];
52
+ if (!specifiers) {
53
+ return undefined;
54
+ }
55
+ const typeName = findSurfaceTypeName(specifiers);
56
+ if (!typeName) {
57
+ return undefined;
58
+ }
59
+ return makeDiag(filePath, sourceCode, node, `Do not import trailhead type "${typeName}" in trail implementation files.`);
60
+ };
61
+ const classifyImport = (node, filePath, sourceCode) => {
62
+ const moduleName = getImportModuleName(node);
63
+ if (!moduleName) {
64
+ return undefined;
65
+ }
66
+ if (SURFACE_MODULES.has(moduleName)) {
67
+ return makeDiag(filePath, sourceCode, node, `Do not import from trailhead module "${moduleName}" in trail implementation files.`);
68
+ }
69
+ return checkSpecifiersForSurfaceTypes(node, filePath, sourceCode);
70
+ };
71
+ /**
72
+ * Detects imports of trailhead-specific types in trail implementation files.
73
+ */
74
+ export const contextNoTrailheadTypes = {
75
+ check(sourceCode, filePath) {
76
+ if (!/\btrail\s*\(/.test(sourceCode)) {
77
+ return [];
78
+ }
79
+ const ast = parse(filePath, sourceCode);
80
+ if (!ast) {
81
+ return [];
82
+ }
83
+ const diagnostics = [];
84
+ walk(ast, (node) => {
85
+ const diag = classifyImport(node, filePath, sourceCode);
86
+ if (diag) {
87
+ diagnostics.push(diag);
88
+ }
89
+ });
90
+ return diagnostics;
91
+ },
92
+ description: 'Disallow trailhead-specific type imports (Request, Response, McpSession, etc.) in trail implementation files.',
93
+ name: 'context-no-trailhead-types',
94
+ severity: 'error',
95
+ };
96
+ //# sourceMappingURL=context-no-trailhead-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-no-trailhead-types.js","sourceRoot":"","sources":["../../src/rules/context-no-trailhead-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Validates that `ctx.cross()` calls match the declared `crosses` array.
3
+ *
4
+ * Statically analyzes trail `blaze` functions to find `ctx.cross('trailId', ...)`
5
+ * calls and compares them against the `crosses: [...]` declaration in the trail
6
+ * config. Reports errors for undeclared crossings and warnings for unused ones.
7
+ */
8
+ import type { WardenRule } from './types.js';
9
+ /**
10
+ * Validates that `ctx.cross()` calls align with declared `crosses` arrays.
11
+ */
12
+ export declare const crossDeclarations: WardenRule;
13
+ //# sourceMappingURL=cross-declarations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-declarations.d.ts","sourceRoot":"","sources":["../../src/rules/cross-declarations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,OAAO,KAAK,EAAoB,UAAU,EAAE,MAAM,YAAY,CAAC;AAsV/D;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,UAuB/B,CAAC"}