@ontrails/warden 1.0.0-beta.10 → 1.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-lint.log +1 -1
- package/CHANGELOG.md +26 -0
- package/README.md +5 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +23 -6
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/rules/ast.d.ts +24 -1
- package/dist/rules/ast.d.ts.map +1 -1
- package/dist/rules/ast.js +130 -11
- package/dist/rules/ast.js.map +1 -1
- package/dist/rules/index.d.ts +2 -0
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +6 -0
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/service-declarations.d.ts +14 -0
- package/dist/rules/service-declarations.d.ts.map +1 -0
- package/dist/rules/service-declarations.js +343 -0
- package/dist/rules/service-declarations.js.map +1 -0
- package/dist/rules/service-exists.d.ts +6 -0
- package/dist/rules/service-exists.d.ts.map +1 -0
- package/dist/rules/service-exists.js +89 -0
- package/dist/rules/service-exists.js.map +1 -0
- package/dist/rules/types.d.ts +2 -0
- package/dist/rules/types.d.ts.map +1 -1
- package/dist/trails/index.d.ts +2 -0
- package/dist/trails/index.d.ts.map +1 -1
- package/dist/trails/index.js +2 -0
- package/dist/trails/index.js.map +1 -1
- package/dist/trails/no-throw-in-detour-target.trail.d.ts +1 -0
- package/dist/trails/no-throw-in-detour-target.trail.d.ts.map +1 -1
- package/dist/trails/run.d.ts +1 -0
- package/dist/trails/run.d.ts.map +1 -1
- package/dist/trails/run.js +11 -2
- package/dist/trails/run.js.map +1 -1
- package/dist/trails/schema.d.ts +1 -0
- package/dist/trails/schema.d.ts.map +1 -1
- package/dist/trails/schema.js +4 -0
- package/dist/trails/schema.js.map +1 -1
- package/dist/trails/service-declarations.trail.d.ts +13 -0
- package/dist/trails/service-declarations.trail.d.ts.map +1 -0
- package/dist/trails/service-declarations.trail.js +25 -0
- package/dist/trails/service-declarations.trail.js.map +1 -0
- package/dist/trails/service-exists.trail.d.ts +15 -0
- package/dist/trails/service-exists.trail.d.ts.map +1 -0
- package/dist/trails/service-exists.trail.js +27 -0
- package/dist/trails/service-exists.trail.js.map +1 -0
- package/dist/trails/valid-describe-refs.trail.d.ts +1 -0
- package/dist/trails/valid-describe-refs.trail.d.ts.map +1 -1
- package/dist/trails/valid-detour-refs.trail.d.ts +1 -0
- package/dist/trails/valid-detour-refs.trail.d.ts.map +1 -1
- package/dist/trails/wrap-rule.d.ts.map +1 -1
- package/dist/trails/wrap-rule.js +6 -2
- package/dist/trails/wrap-rule.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/service-declarations.test.ts +318 -0
- package/src/__tests__/service-exists.test.ts +122 -0
- package/src/__tests__/trails.test.ts +2 -2
- package/src/__tests__/wrap-rule.test.ts +41 -0
- package/src/cli.ts +37 -6
- package/src/index.ts +4 -0
- package/src/rules/ast.ts +168 -8
- package/src/rules/index.ts +6 -0
- package/src/rules/service-declarations.ts +618 -0
- package/src/rules/service-exists.ts +177 -0
- package/src/rules/types.ts +2 -0
- package/src/trails/index.ts +2 -0
- package/src/trails/run.ts +17 -4
- package/src/trails/schema.ts +4 -0
- package/src/trails/service-declarations.trail.ts +25 -0
- package/src/trails/service-exists.trail.ts +27 -0
- package/src/trails/wrap-rule.ts +14 -6
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-lint.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @ontrails/warden
|
|
2
2
|
|
|
3
|
+
## 1.0.0-beta.11
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Add services as a first-class primitive.
|
|
8
|
+
|
|
9
|
+
Services make infrastructure dependencies declarative, injectable, and governable. Define a service with `service()`, declare it on a trail with `services: [db]`, and access it with `db.from(ctx)` or `ctx.service()`.
|
|
10
|
+
|
|
11
|
+
**Core:** `service()` factory, `ServiceSpec<T>`, `ServiceContext`, singleton resolution in `executeTrail`, in-flight creation dedup, `isService` guard, `findDuplicateServiceId`, topo service discovery and validation, `services` field on trail specs.
|
|
12
|
+
|
|
13
|
+
**Testing:** Auto-resolution of `mock` factories in `testAll`, `testExamples`, `testContracts`, and `testFollows`. Explicit `services` overrides with correct precedence (`explicit > ctx.extensions > auto-mock`). Service mock propagation through follow graphs.
|
|
14
|
+
|
|
15
|
+
**Warden:** `service-declarations` rule validates `db.from(ctx)` and `ctx.service()` usage matches declared `services: [...]`. `service-exists` rule validates declared service IDs resolve in project context. Scope-aware AST walking skips nested function boundaries.
|
|
16
|
+
|
|
17
|
+
**Surfaces:** Service overrides thread through `dispatch` and `blaze` on CLI, MCP, and HTTP.
|
|
18
|
+
|
|
19
|
+
**Introspection:** Survey and surface map outputs include service graph. Topo exposes `.services`, `.getService()`, `.hasService()`, `.listServices()`, `.serviceIds()`, `.serviceCount`.
|
|
20
|
+
|
|
21
|
+
**Docs:** ADR-009 accepted. Unified services guide, updated vocabulary, getting-started, architecture, and package READMEs.
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- Updated dependencies
|
|
26
|
+
- @ontrails/core@1.0.0-beta.11
|
|
27
|
+
- @ontrails/schema@1.0.0-beta.11
|
|
28
|
+
|
|
3
29
|
## 1.0.0-beta.10
|
|
4
30
|
|
|
5
31
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @ontrails/warden
|
|
2
2
|
|
|
3
|
-
AST-based code convention rules for Trails.
|
|
3
|
+
AST-based code convention rules for Trails. 13 lint rules that catch contract violations at development time, plus surface lock drift detection and CI formatters.
|
|
4
4
|
|
|
5
|
-
Structural checks (follow target existence, recursive follow, example schema validation) live in `validateTopo()` from `@ontrails/core`. Warden handles the code-level rules that need AST analysis.
|
|
5
|
+
Structural checks (follow target existence, declared service existence, recursive follow, example schema validation) live in `validateTopo()` from `@ontrails/core`. Warden handles the code-level rules that need AST analysis.
|
|
6
6
|
|
|
7
7
|
## Usage
|
|
8
8
|
|
|
@@ -38,6 +38,8 @@ console.log(formatWardenReport(report));
|
|
|
38
38
|
| `no-direct-impl-in-route` | warn | Direct `.run()` calls inside trail bodies with `follow` |
|
|
39
39
|
| `prefer-schema-inference` | warn | Redundant field overrides already derivable from the schema |
|
|
40
40
|
| `follow-declarations` | error/warn | `ctx.follow()` calls that drift from declared `follow: [...]` |
|
|
41
|
+
| `service-declarations` | error/warn | `service.from(ctx)` / `ctx.service()` usage that drifts from declared `services: [...]` |
|
|
42
|
+
| `service-exists` | error | Declared or referenced service IDs that do not resolve in project context |
|
|
41
43
|
| `valid-describe-refs` | warn | `@see` refs in `.describe()` that do not resolve |
|
|
42
44
|
|
|
43
45
|
## Drift detection
|
|
@@ -84,6 +86,7 @@ console.log(wardenTopo.ids()); // ['warden.rule.no-throw-in-implementation', ...
|
|
|
84
86
|
// Run all rule trails against a source file
|
|
85
87
|
const diagnostics = await runWardenTrails(filePath, sourceCode, {
|
|
86
88
|
knownTrailIds: myApp.ids(),
|
|
89
|
+
knownServiceIds: myApp.serviceIds(),
|
|
87
90
|
});
|
|
88
91
|
```
|
|
89
92
|
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAU9C,OAAO,KAAK,EAGV,gBAAgB,EAEjB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,gDAAgD;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClD,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAoND;;GAEG;AACH,eAAO,MAAM,SAAS,GACpB,UAAS,aAAkB,KAC1B,OAAO,CAAC,YAAY,CAqBtB,CAAC;AAsDF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,YAAY,KAAG,MAmBzD,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { resolve } from 'node:path';
|
|
8
8
|
import { checkDrift } from './drift.js';
|
|
9
|
-
import { findConfigProperty, findTrailDefinitions, parse, walk, } from './rules/ast.js';
|
|
9
|
+
import { collectServiceDefinitionIds, findConfigProperty, findTrailDefinitions, parse, walk, } from './rules/ast.js';
|
|
10
10
|
import { wardenRules } from './rules/index.js';
|
|
11
11
|
/**
|
|
12
12
|
* Collect all .ts files under a directory, excluding node_modules, dist, and .git.
|
|
@@ -67,6 +67,15 @@ const collectDetourTargetTrailIds = (sourceCode, filePath, detourTargetTrailIds)
|
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
|
+
const collectKnownServiceIds = (sourceCode, filePath, knownServiceIds) => {
|
|
71
|
+
const ast = parse(filePath, sourceCode);
|
|
72
|
+
if (!ast) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
for (const id of collectServiceDefinitionIds(ast)) {
|
|
76
|
+
knownServiceIds.add(id);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
70
79
|
const loadSourceFiles = async (rootDir) => {
|
|
71
80
|
const sourceFiles = [];
|
|
72
81
|
for (const filePath of collectTsFiles(rootDir)) {
|
|
@@ -82,11 +91,10 @@ const loadSourceFiles = async (rootDir) => {
|
|
|
82
91
|
}
|
|
83
92
|
return sourceFiles;
|
|
84
93
|
};
|
|
85
|
-
const
|
|
86
|
-
const knownTrailIds = new Set(appTopo.trails.keys());
|
|
94
|
+
const collectTopoDetourTargetTrailIds = (appTopo) => {
|
|
87
95
|
const detourTargetTrailIds = new Set();
|
|
88
|
-
for (const
|
|
89
|
-
const detours =
|
|
96
|
+
for (const trail of appTopo.trails.values()) {
|
|
97
|
+
const detours = trail['detours'];
|
|
90
98
|
if (!detours) {
|
|
91
99
|
continue;
|
|
92
100
|
}
|
|
@@ -96,17 +104,26 @@ const buildProjectContextFromTopo = (appTopo) => {
|
|
|
96
104
|
}
|
|
97
105
|
}
|
|
98
106
|
}
|
|
99
|
-
return
|
|
107
|
+
return detourTargetTrailIds;
|
|
108
|
+
};
|
|
109
|
+
const buildProjectContextFromTopo = (appTopo) => {
|
|
110
|
+
const knownTrailIds = new Set(appTopo.trails.keys());
|
|
111
|
+
const knownServiceIds = new Set(appTopo.services.keys());
|
|
112
|
+
const detourTargetTrailIds = collectTopoDetourTargetTrailIds(appTopo);
|
|
113
|
+
return { detourTargetTrailIds, knownServiceIds, knownTrailIds };
|
|
100
114
|
};
|
|
101
115
|
const buildProjectContextFromFiles = (sourceFiles) => {
|
|
102
116
|
const knownTrailIds = new Set();
|
|
117
|
+
const knownServiceIds = new Set();
|
|
103
118
|
const detourTargetTrailIds = new Set();
|
|
104
119
|
for (const sourceFile of sourceFiles) {
|
|
105
120
|
collectKnownTrailIds(sourceFile.sourceCode, sourceFile.filePath, knownTrailIds);
|
|
121
|
+
collectKnownServiceIds(sourceFile.sourceCode, sourceFile.filePath, knownServiceIds);
|
|
106
122
|
collectDetourTargetTrailIds(sourceFile.sourceCode, sourceFile.filePath, detourTargetTrailIds);
|
|
107
123
|
}
|
|
108
124
|
return {
|
|
109
125
|
detourTargetTrailIds,
|
|
126
|
+
knownServiceIds,
|
|
110
127
|
knownTrailIds,
|
|
111
128
|
};
|
|
112
129
|
};
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export { noSyncResultAssumption } from './rules/no-sync-result-assumption.js';
|
|
|
16
16
|
export { implementationReturnsResult } from './rules/implementation-returns-result.js';
|
|
17
17
|
export { noThrowInDetourTarget } from './rules/no-throw-in-detour-target.js';
|
|
18
18
|
export { preferSchemaInference } from './rules/prefer-schema-inference.js';
|
|
19
|
+
export { serviceDeclarations } from './rules/service-declarations.js';
|
|
20
|
+
export { serviceExists } from './rules/service-exists.js';
|
|
19
21
|
export { validDescribeRefs } from './rules/valid-describe-refs.js';
|
|
20
22
|
export { wardenRules } from './rules/index.js';
|
|
21
23
|
export type { WardenOptions, WardenReport } from './cli.js';
|
|
@@ -25,6 +27,6 @@ export type { DriftResult } from './drift.js';
|
|
|
25
27
|
export { checkDrift } from './drift.js';
|
|
26
28
|
export { wardenTopo } from './trails/topo.js';
|
|
27
29
|
export { runWardenTrails } from './trails/run.js';
|
|
28
|
-
export { contextNoSurfaceTypesTrail, diagnosticSchema, followDeclarationsTrail, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
|
|
30
|
+
export { contextNoSurfaceTypesTrail, diagnosticSchema, followDeclarationsTrail, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, serviceDeclarationsTrail, serviceExistsTrail, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
|
|
29
31
|
export type { RuleInput, RuleOutput } from './trails/index.js';
|
|
30
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,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,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,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"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,8 @@ export { noSyncResultAssumption } from './rules/no-sync-result-assumption.js';
|
|
|
16
16
|
export { implementationReturnsResult } from './rules/implementation-returns-result.js';
|
|
17
17
|
export { noThrowInDetourTarget } from './rules/no-throw-in-detour-target.js';
|
|
18
18
|
export { preferSchemaInference } from './rules/prefer-schema-inference.js';
|
|
19
|
+
export { serviceDeclarations } from './rules/service-declarations.js';
|
|
20
|
+
export { serviceExists } from './rules/service-exists.js';
|
|
19
21
|
export { validDescribeRefs } from './rules/valid-describe-refs.js';
|
|
20
22
|
// Rule registry
|
|
21
23
|
export { wardenRules } from './rules/index.js';
|
|
@@ -26,5 +28,5 @@ export { checkDrift } from './drift.js';
|
|
|
26
28
|
// Trail layer
|
|
27
29
|
export { wardenTopo } from './trails/topo.js';
|
|
28
30
|
export { runWardenTrails } from './trails/run.js';
|
|
29
|
-
export { contextNoSurfaceTypesTrail, diagnosticSchema, followDeclarationsTrail, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
|
|
31
|
+
export { contextNoSurfaceTypesTrail, diagnosticSchema, followDeclarationsTrail, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, serviceDeclarationsTrail, serviceExistsTrail, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
|
|
30
32
|
//# 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,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,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,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"}
|
package/dist/rules/ast.d.ts
CHANGED
|
@@ -17,10 +17,32 @@ export interface AstNode {
|
|
|
17
17
|
}
|
|
18
18
|
/** Parse TypeScript source into an AST. Returns null on parse failure. */
|
|
19
19
|
export declare const parse: (filePath: string, sourceCode: string) => AstNode | null;
|
|
20
|
+
type WalkFn = (node: unknown, visit: (node: AstNode) => void) => void;
|
|
20
21
|
/** Walk an AST node tree, calling `visit` on every node. */
|
|
21
|
-
export declare const walk:
|
|
22
|
+
export declare const walk: WalkFn;
|
|
23
|
+
/**
|
|
24
|
+
* Walk an AST node tree without descending into nested function scopes.
|
|
25
|
+
* The root node is always traversed; only inner function boundaries are skipped.
|
|
26
|
+
* Useful for service-access analysis where inner functions may shadow
|
|
27
|
+
* the trail context parameter name.
|
|
28
|
+
*/
|
|
29
|
+
export declare const walkScope: WalkFn;
|
|
22
30
|
/** Find the byte offset's line number (1-based) in source code. */
|
|
23
31
|
export declare const offsetToLine: (sourceCode: string, offset: number) => number;
|
|
32
|
+
/** Get the name of an Identifier node, or null. */
|
|
33
|
+
export declare const identifierName: (node: AstNode | undefined) => string | null;
|
|
34
|
+
/** Check if a node is a string literal. */
|
|
35
|
+
export declare const isStringLiteral: (node: AstNode | undefined) => node is AstNode;
|
|
36
|
+
/** Extract the string value from a string literal node. */
|
|
37
|
+
export declare const getStringValue: (node: AstNode) => string | null;
|
|
38
|
+
/** Extract a string literal value, or null when the node is not a string. */
|
|
39
|
+
export declare const extractStringLiteral: (node: AstNode | undefined) => string | null;
|
|
40
|
+
/** Extract the first string argument from a CallExpression. */
|
|
41
|
+
export declare const extractFirstStringArg: (node: AstNode) => string | null;
|
|
42
|
+
/** Collect `const foo = service('id', ...)` bindings from a parsed file. */
|
|
43
|
+
export declare const collectNamedServiceIds: (ast: AstNode) => ReadonlyMap<string, string>;
|
|
44
|
+
/** Collect all inline `service('id', ...)` definition IDs from a parsed file. */
|
|
45
|
+
export declare const collectServiceDefinitionIds: (ast: AstNode) => ReadonlySet<string>;
|
|
24
46
|
/** Find a Property node by key name inside an ObjectExpression config. */
|
|
25
47
|
export declare const findConfigProperty: (config: AstNode, propertyName: string) => AstNode | null;
|
|
26
48
|
export interface TrailDefinition {
|
|
@@ -45,4 +67,5 @@ export declare const findTrailDefinitions: (ast: AstNode) => TrailDefinition[];
|
|
|
45
67
|
export declare const findRunBodies: (node: AstNode) => AstNode[];
|
|
46
68
|
/** Check if a node is a call to `.run()` on some object. */
|
|
47
69
|
export declare const isRunCall: (node: AstNode) => boolean;
|
|
70
|
+
export {};
|
|
48
71
|
//# sourceMappingURL=ast.d.ts.map
|
package/dist/rules/ast.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/rules/ast.js
CHANGED
|
@@ -18,9 +18,18 @@ export const parse = (filePath, sourceCode) => {
|
|
|
18
18
|
return null;
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const walkChildren = (node, visit, recurse) => {
|
|
22
|
+
for (const val of Object.values(node)) {
|
|
23
|
+
if (Array.isArray(val)) {
|
|
24
|
+
for (const item of val) {
|
|
25
|
+
recurse(item, visit);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else if (val && typeof val === 'object' && val.type) {
|
|
29
|
+
recurse(val, visit);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
24
33
|
/** Walk an AST node tree, calling `visit` on every node. */
|
|
25
34
|
export const walk = (node, visit) => {
|
|
26
35
|
if (!node || typeof node !== 'object') {
|
|
@@ -30,16 +39,41 @@ export const walk = (node, visit) => {
|
|
|
30
39
|
if (n.type) {
|
|
31
40
|
visit(n);
|
|
32
41
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
walkChildren(n, visit, walk);
|
|
43
|
+
};
|
|
44
|
+
const NESTED_SCOPE_TYPES = new Set([
|
|
45
|
+
'ArrowFunctionExpression',
|
|
46
|
+
'FunctionExpression',
|
|
47
|
+
'FunctionDeclaration',
|
|
48
|
+
]);
|
|
49
|
+
const walkScopeInner = (node, visit) => {
|
|
50
|
+
if (!node || typeof node !== 'object') {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const n = node;
|
|
54
|
+
if (n.type) {
|
|
55
|
+
visit(n);
|
|
56
|
+
if (NESTED_SCOPE_TYPES.has(n.type)) {
|
|
57
|
+
return;
|
|
41
58
|
}
|
|
42
59
|
}
|
|
60
|
+
walkChildren(n, visit, walkScopeInner);
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Walk an AST node tree without descending into nested function scopes.
|
|
64
|
+
* The root node is always traversed; only inner function boundaries are skipped.
|
|
65
|
+
* Useful for service-access analysis where inner functions may shadow
|
|
66
|
+
* the trail context parameter name.
|
|
67
|
+
*/
|
|
68
|
+
export const walkScope = (node, visit) => {
|
|
69
|
+
if (!node || typeof node !== 'object') {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const n = node;
|
|
73
|
+
if (n.type) {
|
|
74
|
+
visit(n);
|
|
75
|
+
}
|
|
76
|
+
walkChildren(n, visit, walkScopeInner);
|
|
43
77
|
};
|
|
44
78
|
// ---------------------------------------------------------------------------
|
|
45
79
|
// Helpers
|
|
@@ -54,6 +88,91 @@ export const offsetToLine = (sourceCode, offset) => {
|
|
|
54
88
|
}
|
|
55
89
|
return line;
|
|
56
90
|
};
|
|
91
|
+
/** Get the name of an Identifier node, or null. */
|
|
92
|
+
export const identifierName = (node) => {
|
|
93
|
+
if (node?.type !== 'Identifier') {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return node.name ?? null;
|
|
97
|
+
};
|
|
98
|
+
/** Check if a node is a string literal. */
|
|
99
|
+
export const isStringLiteral = (node) => {
|
|
100
|
+
if (!node) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
if (node.type === 'StringLiteral') {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
if (node.type === 'Literal') {
|
|
107
|
+
return typeof node.value === 'string';
|
|
108
|
+
}
|
|
109
|
+
return false;
|
|
110
|
+
};
|
|
111
|
+
/** Extract the string value from a string literal node. */
|
|
112
|
+
export const getStringValue = (node) => {
|
|
113
|
+
const val = node.value;
|
|
114
|
+
return typeof val === 'string' ? val : null;
|
|
115
|
+
};
|
|
116
|
+
/** Extract a string literal value, or null when the node is not a string. */
|
|
117
|
+
export const extractStringLiteral = (node) => node && isStringLiteral(node) ? getStringValue(node) : null;
|
|
118
|
+
/** Extract the first string argument from a CallExpression. */
|
|
119
|
+
export const extractFirstStringArg = (node) => {
|
|
120
|
+
if (node.type !== 'CallExpression') {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const args = node['arguments'];
|
|
124
|
+
const [firstArg] = args ?? [];
|
|
125
|
+
return extractStringLiteral(firstArg);
|
|
126
|
+
};
|
|
127
|
+
const isServiceCall = (node) => !!node &&
|
|
128
|
+
node.type === 'CallExpression' &&
|
|
129
|
+
identifierName(node.callee) ===
|
|
130
|
+
'service';
|
|
131
|
+
const extractBindingName = (node) => {
|
|
132
|
+
if (!node) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
if (node.type === 'Identifier') {
|
|
136
|
+
return identifierName(node);
|
|
137
|
+
}
|
|
138
|
+
if (node.type === 'AssignmentPattern') {
|
|
139
|
+
return identifierName(node.left);
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
};
|
|
143
|
+
/** Collect `const foo = service('id', ...)` bindings from a parsed file. */
|
|
144
|
+
export const collectNamedServiceIds = (ast) => {
|
|
145
|
+
const ids = new Map();
|
|
146
|
+
walk(ast, (node) => {
|
|
147
|
+
if (node.type !== 'VariableDeclarator') {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const { id, init } = node;
|
|
151
|
+
if (!isServiceCall(init)) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const name = extractBindingName(id);
|
|
155
|
+
const serviceId = init ? extractFirstStringArg(init) : null;
|
|
156
|
+
if (name && serviceId) {
|
|
157
|
+
ids.set(name, serviceId);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
return ids;
|
|
161
|
+
};
|
|
162
|
+
/** Collect all inline `service('id', ...)` definition IDs from a parsed file. */
|
|
163
|
+
export const collectServiceDefinitionIds = (ast) => {
|
|
164
|
+
const ids = new Set();
|
|
165
|
+
walk(ast, (node) => {
|
|
166
|
+
if (!isServiceCall(node)) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const id = extractFirstStringArg(node);
|
|
170
|
+
if (id) {
|
|
171
|
+
ids.add(id);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
return ids;
|
|
175
|
+
};
|
|
57
176
|
// ---------------------------------------------------------------------------
|
|
58
177
|
// Config property extraction helpers
|
|
59
178
|
// ---------------------------------------------------------------------------
|
package/dist/rules/ast.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/rules/ast.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/index.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export { noSyncResultAssumption } from './no-sync-result-assumption.js';
|
|
|
10
10
|
export { implementationReturnsResult } from './implementation-returns-result.js';
|
|
11
11
|
export { noThrowInDetourTarget } from './no-throw-in-detour-target.js';
|
|
12
12
|
export { preferSchemaInference } from './prefer-schema-inference.js';
|
|
13
|
+
export { serviceDeclarations } from './service-declarations.js';
|
|
14
|
+
export { serviceExists } from './service-exists.js';
|
|
13
15
|
export { validDescribeRefs } from './valid-describe-refs.js';
|
|
14
16
|
/** All built-in warden rules, keyed by rule name. */
|
|
15
17
|
export declare const wardenRules: ReadonlyMap<string, WardenRule>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,qDAAqD;AACrD,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAiBtD,CAAC"}
|
package/dist/rules/index.js
CHANGED
|
@@ -7,6 +7,8 @@ import { noSyncResultAssumption } from './no-sync-result-assumption.js';
|
|
|
7
7
|
import { noThrowInDetourTarget } from './no-throw-in-detour-target.js';
|
|
8
8
|
import { noThrowInImplementation } from './no-throw-in-implementation.js';
|
|
9
9
|
import { preferSchemaInference } from './prefer-schema-inference.js';
|
|
10
|
+
import { serviceDeclarations } from './service-declarations.js';
|
|
11
|
+
import { serviceExists } from './service-exists.js';
|
|
10
12
|
import { validDescribeRefs } from './valid-describe-refs.js';
|
|
11
13
|
import { validDetourRefs } from './valid-detour-refs.js';
|
|
12
14
|
export { noThrowInImplementation } from './no-throw-in-implementation.js';
|
|
@@ -19,12 +21,16 @@ export { noSyncResultAssumption } from './no-sync-result-assumption.js';
|
|
|
19
21
|
export { implementationReturnsResult } from './implementation-returns-result.js';
|
|
20
22
|
export { noThrowInDetourTarget } from './no-throw-in-detour-target.js';
|
|
21
23
|
export { preferSchemaInference } from './prefer-schema-inference.js';
|
|
24
|
+
export { serviceDeclarations } from './service-declarations.js';
|
|
25
|
+
export { serviceExists } from './service-exists.js';
|
|
22
26
|
export { validDescribeRefs } from './valid-describe-refs.js';
|
|
23
27
|
/** All built-in warden rules, keyed by rule name. */
|
|
24
28
|
export const wardenRules = new Map([
|
|
25
29
|
[noThrowInImplementation.name, noThrowInImplementation],
|
|
26
30
|
[contextNoSurfaceTypes.name, contextNoSurfaceTypes],
|
|
27
31
|
[followDeclarations.name, followDeclarations],
|
|
32
|
+
[serviceDeclarations.name, serviceDeclarations],
|
|
33
|
+
[serviceExists.name, serviceExists],
|
|
28
34
|
[preferSchemaInference.name, preferSchemaInference],
|
|
29
35
|
[validDescribeRefs.name, validDescribeRefs],
|
|
30
36
|
[validDetourRefs.name, validDetourRefs],
|
package/dist/rules/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAUzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAAoC,IAAI,GAAG,CAGjE;IACA,CAAC,uBAAuB,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvD,CAAC,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACnD,CAAC,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAC7C,CAAC,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAC/C,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;IACnC,CAAC,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACnD,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAC3C,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC;IACvC,CAAC,0BAA0B,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC7D,CAAC,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACrD,CAAC,2BAA2B,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAC/D,CAAC,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACnD,CAAC,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAC;CAChD,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates that service access matches the declared `services` array.
|
|
3
|
+
*
|
|
4
|
+
* Statically analyzes trail run functions to find `db.from(ctx)` and
|
|
5
|
+
* `ctx.service('db.main')` calls and compares them against the declared
|
|
6
|
+
* `services: [...]` array in the trail config. Reports errors for undeclared
|
|
7
|
+
* access and warnings for unused declarations.
|
|
8
|
+
*/
|
|
9
|
+
import type { WardenRule } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Validates that service access aligns with declared `services` arrays.
|
|
12
|
+
*/
|
|
13
|
+
export declare const serviceDeclarations: WardenRule;
|
|
14
|
+
//# sourceMappingURL=service-declarations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-declarations.d.ts","sourceRoot":"","sources":["../../src/rules/service-declarations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH,OAAO,KAAK,EAAoB,UAAU,EAAE,MAAM,YAAY,CAAC;AAgjB/D;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,UA8BjC,CAAC"}
|