@ontrails/warden 1.0.0-beta.12 → 1.0.0-beta.14

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 (204) hide show
  1. package/.turbo/turbo-lint.log +1 -1
  2. package/CHANGELOG.md +63 -31
  3. package/README.md +21 -19
  4. package/dist/cli.d.ts +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +24 -12
  7. package/dist/cli.js.map +1 -1
  8. package/dist/draft.d.ts +5 -0
  9. package/dist/draft.d.ts.map +1 -0
  10. package/dist/draft.js +16 -0
  11. package/dist/draft.js.map +1 -0
  12. package/dist/drift.d.ts +10 -7
  13. package/dist/drift.d.ts.map +1 -1
  14. package/dist/drift.js +50 -16
  15. package/dist/drift.js.map +1 -1
  16. package/dist/formatters.d.ts +2 -1
  17. package/dist/formatters.d.ts.map +1 -1
  18. package/dist/formatters.js +15 -4
  19. package/dist/formatters.js.map +1 -1
  20. package/dist/index.d.ts +9 -4
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +11 -5
  23. package/dist/index.js.map +1 -1
  24. package/dist/rules/ast.d.ts +22 -11
  25. package/dist/rules/ast.d.ts.map +1 -1
  26. package/dist/rules/ast.js +56 -30
  27. package/dist/rules/ast.js.map +1 -1
  28. package/dist/rules/context-no-trailhead-types.d.ts +12 -0
  29. package/dist/rules/context-no-trailhead-types.d.ts.map +1 -0
  30. package/dist/rules/context-no-trailhead-types.js +96 -0
  31. package/dist/rules/context-no-trailhead-types.js.map +1 -0
  32. package/dist/rules/cross-declarations.d.ts +13 -0
  33. package/dist/rules/cross-declarations.d.ts.map +1 -0
  34. package/dist/rules/cross-declarations.js +264 -0
  35. package/dist/rules/cross-declarations.js.map +1 -0
  36. package/dist/rules/draft-file-marking.d.ts +6 -0
  37. package/dist/rules/draft-file-marking.d.ts.map +1 -0
  38. package/dist/rules/draft-file-marking.js +65 -0
  39. package/dist/rules/draft-file-marking.js.map +1 -0
  40. package/dist/rules/draft-visible-debt.d.ts +12 -0
  41. package/dist/rules/draft-visible-debt.d.ts.map +1 -0
  42. package/dist/rules/draft-visible-debt.js +45 -0
  43. package/dist/rules/draft-visible-debt.js.map +1 -0
  44. package/dist/rules/follow-declarations.d.ts +1 -1
  45. package/dist/rules/follow-declarations.js +5 -5
  46. package/dist/rules/follow-declarations.js.map +1 -1
  47. package/dist/rules/implementation-returns-result.d.ts +2 -2
  48. package/dist/rules/implementation-returns-result.js +6 -6
  49. package/dist/rules/implementation-returns-result.js.map +1 -1
  50. package/dist/rules/index.d.ts +6 -4
  51. package/dist/rules/index.d.ts.map +1 -1
  52. package/dist/rules/index.js +18 -12
  53. package/dist/rules/index.js.map +1 -1
  54. package/dist/rules/no-direct-impl-in-route.d.ts +4 -4
  55. package/dist/rules/no-direct-impl-in-route.js +14 -14
  56. package/dist/rules/no-direct-impl-in-route.js.map +1 -1
  57. package/dist/rules/no-direct-implementation-call.d.ts +3 -3
  58. package/dist/rules/no-direct-implementation-call.js +7 -7
  59. package/dist/rules/no-direct-implementation-call.js.map +1 -1
  60. package/dist/rules/no-sync-result-assumption.d.ts +1 -1
  61. package/dist/rules/no-sync-result-assumption.js +5 -5
  62. package/dist/rules/no-sync-result-assumption.js.map +1 -1
  63. package/dist/rules/no-throw-in-detour-target.js +2 -2
  64. package/dist/rules/no-throw-in-detour-target.js.map +1 -1
  65. package/dist/rules/no-throw-in-implementation.d.ts +1 -1
  66. package/dist/rules/no-throw-in-implementation.js +3 -3
  67. package/dist/rules/no-throw-in-implementation.js.map +1 -1
  68. package/dist/rules/provision-declarations.d.ts +14 -0
  69. package/dist/rules/provision-declarations.d.ts.map +1 -0
  70. package/dist/rules/provision-declarations.js +344 -0
  71. package/dist/rules/provision-declarations.js.map +1 -0
  72. package/dist/rules/provision-exists.d.ts +6 -0
  73. package/dist/rules/provision-exists.d.ts.map +1 -0
  74. package/dist/rules/provision-exists.js +90 -0
  75. package/dist/rules/provision-exists.js.map +1 -0
  76. package/dist/rules/service-declarations.d.ts +7 -5
  77. package/dist/rules/service-declarations.d.ts.map +1 -1
  78. package/dist/rules/service-declarations.js +106 -103
  79. package/dist/rules/service-declarations.js.map +1 -1
  80. package/dist/rules/service-exists.d.ts +3 -1
  81. package/dist/rules/service-exists.d.ts.map +1 -1
  82. package/dist/rules/service-exists.js +35 -33
  83. package/dist/rules/service-exists.js.map +1 -1
  84. package/dist/rules/specs.d.ts +1 -1
  85. package/dist/rules/specs.d.ts.map +1 -1
  86. package/dist/rules/specs.js +1 -1
  87. package/dist/rules/specs.js.map +1 -1
  88. package/dist/rules/types.d.ts +2 -2
  89. package/dist/rules/types.d.ts.map +1 -1
  90. package/dist/rules/valid-detour-refs.d.ts.map +1 -1
  91. package/dist/rules/valid-detour-refs.js +3 -2
  92. package/dist/rules/valid-detour-refs.js.map +1 -1
  93. package/dist/trails/context-no-surface-types.trail.js +1 -1
  94. package/dist/trails/context-no-trailhead-types.trail.d.ts +13 -0
  95. package/dist/trails/context-no-trailhead-types.trail.d.ts.map +1 -0
  96. package/dist/trails/context-no-trailhead-types.trail.js +21 -0
  97. package/dist/trails/context-no-trailhead-types.trail.js.map +1 -0
  98. package/dist/trails/cross-declarations.trail.d.ts +13 -0
  99. package/dist/trails/cross-declarations.trail.d.ts.map +1 -0
  100. package/dist/trails/cross-declarations.trail.js +22 -0
  101. package/dist/trails/cross-declarations.trail.js.map +1 -0
  102. package/dist/trails/follow-declarations.trail.js +1 -1
  103. package/dist/trails/implementation-returns-result.trail.js +1 -1
  104. package/dist/trails/index.d.ts +4 -4
  105. package/dist/trails/index.d.ts.map +1 -1
  106. package/dist/trails/index.js +4 -4
  107. package/dist/trails/index.js.map +1 -1
  108. package/dist/trails/no-direct-impl-in-route.trail.js +4 -4
  109. package/dist/trails/no-direct-impl-in-route.trail.js.map +1 -1
  110. package/dist/trails/no-direct-implementation-call.trail.js +2 -2
  111. package/dist/trails/no-direct-implementation-call.trail.js.map +1 -1
  112. package/dist/trails/no-sync-result-assumption.trail.js +2 -2
  113. package/dist/trails/no-sync-result-assumption.trail.js.map +1 -1
  114. package/dist/trails/no-throw-in-detour-target.trail.d.ts +1 -1
  115. package/dist/trails/no-throw-in-detour-target.trail.js +1 -1
  116. package/dist/trails/no-throw-in-implementation.trail.js +1 -1
  117. package/dist/trails/prefer-schema-inference.trail.js +1 -1
  118. package/dist/trails/provision-declarations.trail.d.ts +13 -0
  119. package/dist/trails/provision-declarations.trail.d.ts.map +1 -0
  120. package/dist/trails/provision-declarations.trail.js +25 -0
  121. package/dist/trails/provision-declarations.trail.js.map +1 -0
  122. package/dist/trails/provision-exists.trail.d.ts +15 -0
  123. package/dist/trails/provision-exists.trail.d.ts.map +1 -0
  124. package/dist/trails/provision-exists.trail.js +27 -0
  125. package/dist/trails/provision-exists.trail.js.map +1 -0
  126. package/dist/trails/run.d.ts +2 -2
  127. package/dist/trails/run.d.ts.map +1 -1
  128. package/dist/trails/run.js +6 -6
  129. package/dist/trails/run.js.map +1 -1
  130. package/dist/trails/schema.d.ts +1 -1
  131. package/dist/trails/schema.js +2 -2
  132. package/dist/trails/schema.js.map +1 -1
  133. package/dist/trails/service-declarations.trail.d.ts +13 -0
  134. package/dist/trails/service-declarations.trail.d.ts.map +1 -1
  135. package/dist/trails/service-declarations.trail.js +9 -7
  136. package/dist/trails/service-declarations.trail.js.map +1 -1
  137. package/dist/trails/service-exists.trail.d.ts +17 -0
  138. package/dist/trails/service-exists.trail.d.ts.map +1 -1
  139. package/dist/trails/service-exists.trail.js +10 -8
  140. package/dist/trails/service-exists.trail.js.map +1 -1
  141. package/dist/trails/valid-describe-refs.trail.d.ts +1 -1
  142. package/dist/trails/valid-detour-refs.trail.d.ts +1 -1
  143. package/dist/trails/valid-detour-refs.trail.js +2 -2
  144. package/dist/trails/wrap-rule.js +14 -14
  145. package/dist/trails/wrap-rule.js.map +1 -1
  146. package/package.json +4 -4
  147. package/src/__tests__/cli.test.ts +121 -8
  148. package/src/__tests__/{follow-declarations.test.ts → cross-declarations.test.ts} +78 -78
  149. package/src/__tests__/drift.test.ts +76 -6
  150. package/src/__tests__/formatters.test.ts +2 -2
  151. package/src/__tests__/implementation-returns-result.test.ts +11 -11
  152. package/src/__tests__/no-direct-implementation-call.test.ts +10 -10
  153. package/src/__tests__/no-sync-result-assumption.test.ts +6 -6
  154. package/src/__tests__/no-throw-in-detour-target.test.ts +6 -6
  155. package/src/__tests__/prefer-schema-inference.test.ts +4 -4
  156. package/src/__tests__/provision-declarations.test.ts +318 -0
  157. package/src/__tests__/provision-exists.test.ts +122 -0
  158. package/src/__tests__/rules.test.ts +38 -38
  159. package/src/__tests__/valid-describe-refs.test.ts +4 -4
  160. package/src/__tests__/wrap-rule.test.ts +4 -4
  161. package/src/cli.ts +27 -15
  162. package/src/draft.ts +22 -0
  163. package/src/drift.ts +63 -21
  164. package/src/formatters.ts +15 -4
  165. package/src/index.ts +29 -8
  166. package/src/rules/ast.ts +74 -31
  167. package/src/rules/{context-no-surface-types.ts → context-no-trailhead-types.ts} +8 -8
  168. package/src/rules/{follow-declarations.ts → cross-declarations.ts} +63 -56
  169. package/src/rules/draft-file-marking.ts +112 -0
  170. package/src/rules/draft-visible-debt.ts +62 -0
  171. package/src/rules/implementation-returns-result.ts +6 -6
  172. package/src/rules/index.ts +18 -12
  173. package/src/rules/no-direct-impl-in-route.ts +17 -17
  174. package/src/rules/no-direct-implementation-call.ts +7 -7
  175. package/src/rules/no-sync-result-assumption.ts +5 -5
  176. package/src/rules/no-throw-in-detour-target.ts +2 -2
  177. package/src/rules/no-throw-in-implementation.ts +3 -3
  178. package/src/rules/{service-declarations.ts → provision-declarations.ts} +145 -129
  179. package/src/rules/{service-exists.ts → provision-exists.ts} +53 -46
  180. package/src/rules/specs.ts +4 -4
  181. package/src/rules/types.ts +2 -2
  182. package/src/rules/valid-detour-refs.ts +4 -2
  183. package/src/trails/{context-no-surface-types.trail.ts → context-no-trailhead-types.trail.ts} +5 -5
  184. package/src/trails/cross-declarations.trail.ts +22 -0
  185. package/src/trails/implementation-returns-result.trail.ts +1 -1
  186. package/src/trails/index.ts +4 -4
  187. package/src/trails/no-direct-impl-in-route.trail.ts +4 -4
  188. package/src/trails/no-direct-implementation-call.trail.ts +2 -2
  189. package/src/trails/no-sync-result-assumption.trail.ts +2 -2
  190. package/src/trails/no-throw-in-detour-target.trail.ts +1 -1
  191. package/src/trails/no-throw-in-implementation.trail.ts +1 -1
  192. package/src/trails/prefer-schema-inference.trail.ts +1 -1
  193. package/src/trails/provision-declarations.trail.ts +25 -0
  194. package/src/trails/provision-exists.trail.ts +27 -0
  195. package/src/trails/run.ts +7 -7
  196. package/src/trails/schema.ts +2 -2
  197. package/src/trails/valid-detour-refs.trail.ts +2 -2
  198. package/src/trails/wrap-rule.ts +17 -17
  199. package/tsconfig.tsbuildinfo +1 -1
  200. package/src/__tests__/service-declarations.test.ts +0 -318
  201. package/src/__tests__/service-exists.test.ts +0 -122
  202. package/src/trails/follow-declarations.trail.ts +0 -22
  203. package/src/trails/service-declarations.trail.ts +0 -25
  204. package/src/trails/service-exists.trail.ts +0 -27
@@ -14,7 +14,8 @@ const ghLevel = {
14
14
  * Produce GitHub Actions workflow command annotations, one per diagnostic.
15
15
  *
16
16
  * Severity mapping: `error` to `::error`, `warn` to `::warning`.
17
- * Drift staleness is emitted as a single `::error` annotation when detected.
17
+ * Drift staleness or established-export blocking is emitted as a single
18
+ * `::error` annotation when detected.
18
19
  */
19
20
  export const formatGitHubAnnotations = (report) => {
20
21
  const lines = [];
@@ -22,8 +23,11 @@ export const formatGitHubAnnotations = (report) => {
22
23
  const level = ghLevel[d.severity];
23
24
  lines.push(`::${level} file=${d.filePath},line=${String(d.line)}::${d.rule}: ${d.message}`);
24
25
  }
25
- if (report.drift?.stale) {
26
- lines.push('::error::drift: surface.lock is stale (regenerate with `trails survey generate`)');
26
+ if (report.drift?.blockedReason !== undefined) {
27
+ lines.push(`::error::drift: ${report.drift.blockedReason}`);
28
+ }
29
+ else if (report.drift?.stale) {
30
+ lines.push('::error::drift: trails.lock is stale (regenerate with `trails topo export`)');
27
31
  }
28
32
  return lines.join('\n');
29
33
  };
@@ -57,13 +61,20 @@ const severitySection = (heading, diagnostics) => {
57
61
  };
58
62
  /** Render a drift section if stale, otherwise empty array. */
59
63
  const driftSection = (drift) => {
64
+ if (drift?.blockedReason !== undefined) {
65
+ return [
66
+ '',
67
+ '### Drift',
68
+ `- established exports are blocked: ${drift.blockedReason}`,
69
+ ];
70
+ }
60
71
  if (!drift?.stale) {
61
72
  return [];
62
73
  }
63
74
  return [
64
75
  '',
65
76
  '### Drift',
66
- '- surface.lock is stale (regenerate with `trails survey generate`)',
77
+ '- trails.lock is stale (regenerate with `trails topo export`)',
67
78
  ];
68
79
  };
69
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,7 +8,9 @@
8
8
  */
9
9
  export type { ProjectAwareWardenRule, ProjectContext, WardenDiagnostic, WardenRule, WardenSeverity, } from './rules/index.js';
10
10
  export { noThrowInImplementation } from './rules/no-throw-in-implementation.js';
11
- export { contextNoSurfaceTypes } from './rules/context-no-surface-types.js';
11
+ export { contextNoTrailheadTypes } from './rules/context-no-trailhead-types.js';
12
+ export { draftFileMarking } from './rules/draft-file-marking.js';
13
+ export { draftVisibleDebt } from './rules/draft-visible-debt.js';
12
14
  export { validDetourRefs } from './rules/valid-detour-refs.js';
13
15
  export { noDirectImplInRoute } from './rules/no-direct-impl-in-route.js';
14
16
  export { noDirectImplementationCall } from './rules/no-direct-implementation-call.js';
@@ -16,8 +18,8 @@ export { noSyncResultAssumption } from './rules/no-sync-result-assumption.js';
16
18
  export { implementationReturnsResult } from './rules/implementation-returns-result.js';
17
19
  export { noThrowInDetourTarget } from './rules/no-throw-in-detour-target.js';
18
20
  export { preferSchemaInference } from './rules/prefer-schema-inference.js';
19
- export { serviceDeclarations } from './rules/service-declarations.js';
20
- export { serviceExists } from './rules/service-exists.js';
21
+ export { provisionDeclarations } from './rules/provision-declarations.js';
22
+ export { provisionExists } from './rules/provision-exists.js';
21
23
  export { validDescribeRefs } from './rules/valid-describe-refs.js';
22
24
  export { wardenRules } from './rules/index.js';
23
25
  export type { WardenOptions, WardenReport } from './cli.js';
@@ -25,8 +27,11 @@ export { formatWardenReport, runWarden } from './cli.js';
25
27
  export { formatGitHubAnnotations, formatJson, formatSummary, } from './formatters.js';
26
28
  export type { DriftResult } from './drift.js';
27
29
  export { checkDrift } from './drift.js';
30
+ export { DRAFT_FILE_PREFIX, DRAFT_FILE_SEGMENT, isDraftMarkedFile, stripDraftFileMarkers, } from './draft.js';
31
+ export { findStringLiterals, getStringValue, isStringLiteral, offsetToLine, parse, walk, } from './rules/ast.js';
32
+ export type { AstNode, StringLiteralMatch } from './rules/ast.js';
28
33
  export { wardenTopo } from './trails/topo.js';
29
34
  export { runWardenTrails } from './trails/run.js';
30
- export { contextNoSurfaceTypesTrail, diagnosticSchema, followDeclarationsTrail, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, serviceDeclarationsTrail, serviceExistsTrail, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
35
+ export { contextNoTrailheadTypesTrail, crossDeclarationsTrail, diagnosticSchema, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, provisionDeclarationsTrail, provisionExistsTrail, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
31
36
  export type { RuleInput, RuleOutput } from './trails/index.js';
32
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGzD,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,gCAAgC,EAChC,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGzD,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,KAAK,EACL,IAAI,GACL,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,gCAAgC,EAChC,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -8,7 +8,9 @@
8
8
  */
9
9
  // Individual rules
10
10
  export { noThrowInImplementation } from './rules/no-throw-in-implementation.js';
11
- export { contextNoSurfaceTypes } from './rules/context-no-surface-types.js';
11
+ export { contextNoTrailheadTypes } from './rules/context-no-trailhead-types.js';
12
+ export { draftFileMarking } from './rules/draft-file-marking.js';
13
+ export { draftVisibleDebt } from './rules/draft-visible-debt.js';
12
14
  export { validDetourRefs } from './rules/valid-detour-refs.js';
13
15
  export { noDirectImplInRoute } from './rules/no-direct-impl-in-route.js';
14
16
  export { noDirectImplementationCall } from './rules/no-direct-implementation-call.js';
@@ -16,8 +18,8 @@ export { noSyncResultAssumption } from './rules/no-sync-result-assumption.js';
16
18
  export { implementationReturnsResult } from './rules/implementation-returns-result.js';
17
19
  export { noThrowInDetourTarget } from './rules/no-throw-in-detour-target.js';
18
20
  export { preferSchemaInference } from './rules/prefer-schema-inference.js';
19
- export { serviceDeclarations } from './rules/service-declarations.js';
20
- export { serviceExists } from './rules/service-exists.js';
21
+ export { provisionDeclarations } from './rules/provision-declarations.js';
22
+ export { provisionExists } from './rules/provision-exists.js';
21
23
  export { validDescribeRefs } from './rules/valid-describe-refs.js';
22
24
  // Rule registry
23
25
  export { wardenRules } from './rules/index.js';
@@ -25,8 +27,12 @@ export { formatWardenReport, runWarden } from './cli.js';
25
27
  // CI formatters
26
28
  export { formatGitHubAnnotations, formatJson, formatSummary, } from './formatters.js';
27
29
  export { checkDrift } from './drift.js';
28
- // Trail layer
30
+ // Draft helpers
31
+ export { DRAFT_FILE_PREFIX, DRAFT_FILE_SEGMENT, isDraftMarkedFile, stripDraftFileMarkers, } from './draft.js';
32
+ // AST helpers for repo-local tooling
33
+ export { findStringLiterals, getStringValue, isStringLiteral, offsetToLine, parse, walk, } from './rules/ast.js';
34
+ // Trail gate
29
35
  export { wardenTopo } from './trails/topo.js';
30
36
  export { runWardenTrails } from './trails/run.js';
31
- export { contextNoSurfaceTypesTrail, diagnosticSchema, followDeclarationsTrail, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, serviceDeclarationsTrail, serviceExistsTrail, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
37
+ export { contextNoTrailheadTypesTrail, crossDeclarationsTrail, diagnosticSchema, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, provisionDeclarationsTrail, provisionExistsTrail, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
32
38
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,mBAAmB;AACnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEzD,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,gCAAgC,EAChC,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,mBAAmB;AACnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEzD,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,gBAAgB;AAChB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,qCAAqC;AACrC,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,KAAK,EACL,IAAI,GACL,MAAM,gBAAgB,CAAC;AAGxB,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,gCAAgC,EAChC,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
@@ -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;
@@ -37,18 +37,29 @@ export declare const isStringLiteral: (node: AstNode | undefined) => node is Ast
37
37
  export declare const getStringValue: (node: AstNode) => string | null;
38
38
  /** Extract a string literal value, or null when the node is not a string. */
39
39
  export declare const extractStringLiteral: (node: AstNode | undefined) => string | null;
40
+ export interface StringLiteralMatch {
41
+ readonly end: number;
42
+ readonly node: AstNode;
43
+ readonly start: number;
44
+ readonly value: string;
45
+ }
46
+ export declare const findStringLiterals: (ast: AstNode, predicate?: (value: string, node: AstNode) => boolean) => StringLiteralMatch[];
40
47
  /** Extract the first string argument from a CallExpression. */
41
48
  export declare const extractFirstStringArg: (node: AstNode) => string | null;
42
- /** Collect `const foo = service('id', ...)` bindings from a parsed file. */
49
+ /** Collect `const foo = provision('id', ...)` bindings from a parsed file. */
50
+ export declare const collectNamedProvisionIds: (ast: AstNode) => ReadonlyMap<string, string>;
51
+ /** Collect all inline `provision('id', ...)` definition IDs from a parsed file. */
52
+ export declare const collectProvisionDefinitionIds: (ast: AstNode) => ReadonlySet<string>;
53
+ /** Backward-compatible aliases while the migration is in flight. */
43
54
  export declare const collectNamedServiceIds: (ast: AstNode) => ReadonlyMap<string, string>;
44
- /** Collect all inline `service('id', ...)` definition IDs from a parsed file. */
55
+ /** Backward-compatible aliases while the migration is in flight. */
45
56
  export declare const collectServiceDefinitionIds: (ast: AstNode) => ReadonlySet<string>;
46
57
  /** Find a Property node by key name inside an ObjectExpression config. */
47
58
  export declare const findConfigProperty: (config: AstNode, propertyName: string) => AstNode | null;
48
59
  export interface TrailDefinition {
49
60
  /** Trail ID string, e.g. "entity.show" */
50
61
  readonly id: string;
51
- /** "trail" or "event" */
62
+ /** "trail" or "signal" */
52
63
  readonly kind: string;
53
64
  /** The config object argument (second arg to trail() call) */
54
65
  readonly config: AstNode;
@@ -57,15 +68,15 @@ export interface TrailDefinition {
57
68
  }
58
69
  export declare const findTrailDefinitions: (ast: AstNode) => TrailDefinition[];
59
70
  /**
60
- * Find `run:` property values.
71
+ * Find `blaze:` property values.
61
72
  *
62
- * When given an ObjectExpression (trail config), returns only its direct `run:`
73
+ * When given an ObjectExpression (trail config), returns only its direct `blaze:`
63
74
  * 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: ... }`).
75
+ * `blaze:` from each config — in both cases ignoring nested `blaze:` properties
76
+ * (e.g. `meta: { blaze: ... }`).
66
77
  */
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;
78
+ export declare const findBlazeBodies: (node: AstNode) => AstNode[];
79
+ /** Check if a node is a call to `.blaze()` on some object. */
80
+ export declare const isBlazeCall: (node: AstNode) => boolean;
70
81
  export {};
71
82
  //# 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) => {
@@ -115,6 +115,28 @@ export const getStringValue = (node) => {
115
115
  };
116
116
  /** Extract a string literal value, or null when the node is not a string. */
117
117
  export const extractStringLiteral = (node) => node && isStringLiteral(node) ? getStringValue(node) : null;
118
+ export const findStringLiterals = (ast, predicate) => {
119
+ const matches = [];
120
+ walk(ast, (node) => {
121
+ if (!isStringLiteral(node)) {
122
+ return;
123
+ }
124
+ const value = getStringValue(node);
125
+ if (value === null) {
126
+ return;
127
+ }
128
+ if (predicate && !predicate(value, node)) {
129
+ return;
130
+ }
131
+ matches.push({
132
+ end: node.end,
133
+ node,
134
+ start: node.start,
135
+ value,
136
+ });
137
+ });
138
+ return matches;
139
+ };
118
140
  /** Extract the first string argument from a CallExpression. */
119
141
  export const extractFirstStringArg = (node) => {
120
142
  if (node.type !== 'CallExpression') {
@@ -124,10 +146,10 @@ export const extractFirstStringArg = (node) => {
124
146
  const [firstArg] = args ?? [];
125
147
  return extractStringLiteral(firstArg);
126
148
  };
127
- const isServiceCall = (node) => !!node &&
149
+ const isProvisionCall = (node) => !!node &&
128
150
  node.type === 'CallExpression' &&
129
151
  identifierName(node.callee) ===
130
- 'service';
152
+ 'provision';
131
153
  const extractBindingName = (node) => {
132
154
  if (!node) {
133
155
  return null;
@@ -140,30 +162,30 @@ const extractBindingName = (node) => {
140
162
  }
141
163
  return null;
142
164
  };
143
- /** Collect `const foo = service('id', ...)` bindings from a parsed file. */
144
- export const collectNamedServiceIds = (ast) => {
165
+ /** Collect `const foo = provision('id', ...)` bindings from a parsed file. */
166
+ export const collectNamedProvisionIds = (ast) => {
145
167
  const ids = new Map();
146
168
  walk(ast, (node) => {
147
169
  if (node.type !== 'VariableDeclarator') {
148
170
  return;
149
171
  }
150
172
  const { id, init } = node;
151
- if (!isServiceCall(init)) {
173
+ if (!isProvisionCall(init)) {
152
174
  return;
153
175
  }
154
176
  const name = extractBindingName(id);
155
- const serviceId = init ? extractFirstStringArg(init) : null;
156
- if (name && serviceId) {
157
- ids.set(name, serviceId);
177
+ const provisionId = init ? extractFirstStringArg(init) : null;
178
+ if (name && provisionId) {
179
+ ids.set(name, provisionId);
158
180
  }
159
181
  });
160
182
  return ids;
161
183
  };
162
- /** Collect all inline `service('id', ...)` definition IDs from a parsed file. */
163
- export const collectServiceDefinitionIds = (ast) => {
184
+ /** Collect all inline `provision('id', ...)` definition IDs from a parsed file. */
185
+ export const collectProvisionDefinitionIds = (ast) => {
164
186
  const ids = new Set();
165
187
  walk(ast, (node) => {
166
- if (!isServiceCall(node)) {
188
+ if (!isProvisionCall(node)) {
167
189
  return;
168
190
  }
169
191
  const id = extractFirstStringArg(node);
@@ -173,6 +195,10 @@ export const collectServiceDefinitionIds = (ast) => {
173
195
  });
174
196
  return ids;
175
197
  };
198
+ /** Backward-compatible aliases while the migration is in flight. */
199
+ export const collectNamedServiceIds = collectNamedProvisionIds;
200
+ /** Backward-compatible aliases while the migration is in flight. */
201
+ export const collectServiceDefinitionIds = collectProvisionDefinitionIds;
176
202
  // ---------------------------------------------------------------------------
177
203
  // Config property extraction helpers
178
204
  // ---------------------------------------------------------------------------
@@ -194,11 +220,11 @@ export const findConfigProperty = (config, propertyName) => {
194
220
  };
195
221
  /**
196
222
  * Find all `trail("id", { ... })`, `trail({ id: "x", ... })`, and
197
- * `event("id", { ... })` call sites.
223
+ * `signal("id", { ... })` call sites.
198
224
  *
199
225
  * Returns the trail ID, kind, and config object node for each definition.
200
226
  */
201
- const TRAIL_CALLEE_NAMES = new Set(['trail', 'event']);
227
+ const TRAIL_CALLEE_NAMES = new Set(['trail', 'signal']);
202
228
  const getTrailCalleeName = (node) => {
203
229
  if (node.type !== 'CallExpression') {
204
230
  return null;
@@ -275,50 +301,50 @@ export const findTrailDefinitions = (ast) => {
275
301
  return definitions;
276
302
  };
277
303
  // ---------------------------------------------------------------------------
278
- // Run body extraction
304
+ // Blaze body extraction
279
305
  // ---------------------------------------------------------------------------
280
306
  /**
281
- * Extract top-level `run:` property values from an ObjectExpression's direct properties.
307
+ * Extract top-level `blaze:` property values from an ObjectExpression's direct properties.
282
308
  *
283
- * Does not recurse into nested objects, so `metadata: { run: ... }` is ignored.
309
+ * Does not recurse into nested objects, so `meta: { blaze: ... }` is ignored.
284
310
  */
285
- const extractRunFromConfig = (config) => {
311
+ const extractBlazeFromConfig = (config) => {
286
312
  const bodies = [];
287
313
  const properties = config['properties'];
288
314
  if (!properties) {
289
315
  return bodies;
290
316
  }
291
317
  for (const prop of properties) {
292
- if (prop.type === 'Property' && prop.key?.name === 'run' && prop.value) {
318
+ if (prop.type === 'Property' && prop.key?.name === 'blaze' && prop.value) {
293
319
  bodies.push(prop.value);
294
320
  }
295
321
  }
296
322
  return bodies;
297
323
  };
298
324
  /**
299
- * Find `run:` property values.
325
+ * Find `blaze:` property values.
300
326
  *
301
- * When given an ObjectExpression (trail config), returns only its direct `run:`
327
+ * When given an ObjectExpression (trail config), returns only its direct `blaze:`
302
328
  * 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: ... }`).
329
+ * `blaze:` from each config — in both cases ignoring nested `blaze:` properties
330
+ * (e.g. `meta: { blaze: ... }`).
305
331
  */
306
- export const findRunBodies = (node) => {
332
+ export const findBlazeBodies = (node) => {
307
333
  if (node.type === 'ObjectExpression') {
308
- return extractRunFromConfig(node);
334
+ return extractBlazeFromConfig(node);
309
335
  }
310
- // Full AST — find trail definitions and extract run from their configs
336
+ // Full AST — find trail definitions and extract blaze from their configs
311
337
  const bodies = [];
312
338
  for (const def of findTrailDefinitions(node)) {
313
- bodies.push(...extractRunFromConfig(def.config));
339
+ bodies.push(...extractBlazeFromConfig(def.config));
314
340
  }
315
341
  return bodies;
316
342
  };
317
343
  // ---------------------------------------------------------------------------
318
344
  // Misc helpers
319
345
  // ---------------------------------------------------------------------------
320
- /** Check if a node is a call to `.run()` on some object. */
321
- export const isRunCall = (node) => {
346
+ /** Check if a node is a call to `.blaze()` on some object. */
347
+ export const isBlazeCall = (node) => {
322
348
  if (node.type !== 'CallExpression') {
323
349
  return false;
324
350
  }
@@ -332,6 +358,6 @@ export const isRunCall = (node) => {
332
358
  }
333
359
  const prop = callee.property;
334
360
  return (prop?.type === 'Identifier' &&
335
- prop.name === 'run');
361
+ prop.name === 'blaze');
336
362
  };
337
363
  //# sourceMappingURL=ast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/rules/ast.ts"],"names":[],"mappings":"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"}
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"}