@ontrails/warden 1.0.0-beta.14 → 1.0.0-beta.16
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/CHANGELOG.md +149 -0
- package/README.md +77 -34
- package/bin/warden.ts +22 -0
- package/package.json +26 -6
- package/src/ast.ts +28 -0
- package/src/cli.ts +1169 -116
- package/src/command.ts +927 -0
- package/src/config.ts +184 -0
- package/src/drift.ts +76 -34
- package/src/formatters.ts +54 -7
- package/src/guide.ts +234 -0
- package/src/index.ts +151 -38
- package/src/project-context.ts +163 -0
- package/src/resolve.ts +530 -0
- package/src/rules/activation-orphan.ts +97 -0
- package/src/rules/ast.ts +2884 -124
- package/src/rules/circular-refs.ts +154 -0
- package/src/rules/{context-no-trailhead-types.ts → context-no-surface-types.ts} +72 -12
- package/src/rules/contour-exists.ts +251 -0
- package/src/rules/contour-ids.ts +15 -0
- package/src/rules/cross-declarations.ts +277 -69
- package/src/rules/dead-internal-trail.ts +141 -0
- package/src/rules/draft-file-marking.ts +51 -3
- package/src/rules/draft-visible-debt.ts +40 -15
- package/src/rules/error-mapping-completeness.ts +288 -0
- package/src/rules/example-valid.ts +401 -0
- package/src/rules/fires-declarations.ts +758 -0
- package/src/rules/implementation-returns-result.ts +1042 -122
- package/src/rules/incomplete-accessor-for-standard-op.ts +272 -0
- package/src/rules/incomplete-crud.ts +580 -0
- package/src/rules/index.ts +156 -19
- package/src/rules/intent-propagation.ts +127 -0
- package/src/rules/layer-field-name-drift.ts +96 -0
- package/src/rules/metadata.ts +508 -0
- package/src/rules/missing-reconcile.ts +98 -0
- package/src/rules/missing-visibility.ts +110 -0
- package/src/rules/no-dev-permit-in-source.ts +99 -0
- package/src/rules/no-direct-implementation-call.ts +1 -1
- package/src/rules/no-legacy-layer-imports.ts +193 -0
- package/src/rules/no-native-error-result.ts +111 -0
- package/src/rules/no-sync-result-assumption.ts +1131 -96
- package/src/rules/no-throw-in-detour-recover.ts +225 -0
- package/src/rules/no-throw-in-implementation.ts +6 -4
- package/src/rules/on-references-exist.ts +194 -0
- package/src/rules/orphaned-signal.ts +150 -0
- package/src/rules/owner-projection-parity.ts +146 -0
- package/src/rules/permit-governance.ts +25 -0
- package/src/rules/public-internal-deep-imports.ts +517 -0
- package/src/rules/public-output-schema.ts +29 -0
- package/src/rules/public-union-output-discriminants.ts +150 -0
- package/src/rules/read-intent-fires.ts +187 -0
- package/src/rules/reference-exists.ts +98 -0
- package/src/rules/registry-names.ts +113 -0
- package/src/rules/resolved-import-boundary.ts +146 -0
- package/src/rules/{provision-declarations.ts → resource-declarations.ts} +208 -138
- package/src/rules/{provision-exists.ts → resource-exists.ts} +46 -51
- package/src/rules/resource-id-grammar.ts +65 -0
- package/src/rules/scan.ts +0 -26
- package/src/rules/scheduled-destroy-intent.ts +44 -0
- package/src/rules/signal-graph-coaching.ts +191 -0
- package/src/rules/specs.ts +5 -1
- package/src/rules/static-resource-accessor-preference.ts +657 -0
- package/src/rules/types.ts +187 -7
- package/src/rules/unmaterialized-activation-source.ts +84 -0
- package/src/rules/unreachable-detour-shadowing.ts +344 -0
- package/src/rules/valid-describe-refs.ts +160 -32
- package/src/rules/valid-detour-contract.ts +78 -0
- package/src/rules/warden-export-symmetry.ts +533 -0
- package/src/rules/warden-rules-use-ast.ts +996 -0
- package/src/rules/webhook-route-collision.ts +243 -0
- package/src/trails/activation-orphan.trail.ts +81 -0
- package/src/trails/circular-refs.trail.ts +29 -0
- package/src/trails/{context-no-trailhead-types.trail.ts → context-no-surface-types.trail.ts} +4 -4
- package/src/trails/contour-exists.trail.ts +21 -0
- package/src/trails/dead-internal-trail.trail.ts +26 -0
- package/src/trails/draft-file-marking.trail.ts +16 -0
- package/src/trails/draft-visible-debt.trail.ts +16 -0
- package/src/trails/error-mapping-completeness.trail.ts +29 -0
- package/src/trails/example-valid.trail.ts +25 -0
- package/src/trails/fires-declarations.trail.ts +23 -0
- package/src/trails/incomplete-accessor-for-standard-op.trail.ts +76 -0
- package/src/trails/incomplete-crud.trail.ts +39 -0
- package/src/trails/index.ts +56 -8
- package/src/trails/intent-propagation.trail.ts +30 -0
- package/src/trails/layer-field-name-drift.trail.ts +39 -0
- package/src/trails/missing-reconcile.trail.ts +33 -0
- package/src/trails/missing-visibility.trail.ts +22 -0
- package/src/trails/no-dev-permit-in-source.trail.ts +16 -0
- package/src/trails/no-legacy-layer-imports.trail.ts +35 -0
- package/src/trails/no-native-error-result.trail.ts +18 -0
- package/src/trails/no-throw-in-detour-recover.trail.ts +24 -0
- package/src/trails/on-references-exist.trail.ts +21 -0
- package/src/trails/orphaned-signal.trail.ts +36 -0
- package/src/trails/owner-projection-parity.trail.ts +26 -0
- package/src/trails/permit-governance.trail.ts +51 -0
- package/src/trails/public-internal-deep-imports.trail.ts +94 -0
- package/src/trails/public-output-schema.trail.ts +55 -0
- package/src/trails/public-union-output-discriminants.trail.ts +33 -0
- package/src/trails/read-intent-fires.trail.ts +20 -0
- package/src/trails/reference-exists.trail.ts +25 -0
- package/src/trails/resolved-import-boundary.trail.ts +109 -0
- package/src/trails/{provision-declarations.trail.ts → resource-declarations.trail.ts} +6 -6
- package/src/trails/{provision-exists.trail.ts → resource-exists.trail.ts} +7 -7
- package/src/trails/resource-id-grammar.trail.ts +39 -0
- package/src/trails/run.ts +133 -24
- package/src/trails/scheduled-destroy-intent.trail.ts +56 -0
- package/src/trails/schema.ts +122 -4
- package/src/trails/signal-graph-coaching.trail.ts +74 -0
- package/src/trails/static-resource-accessor-preference.trail.ts +25 -0
- package/src/trails/unmaterialized-activation-source.trail.ts +69 -0
- package/src/trails/unreachable-detour-shadowing.trail.ts +45 -0
- package/src/trails/valid-detour-contract.trail.ts +71 -0
- package/src/trails/warden-export-symmetry.trail.ts +16 -0
- package/src/trails/warden-rules-use-ast.trail.ts +45 -0
- package/src/trails/webhook-route-collision.trail.ts +50 -0
- package/src/trails/wrap-rule.ts +133 -14
- package/src/workspaces.ts +238 -0
- package/.turbo/turbo-build.log +0 -1
- package/.turbo/turbo-lint.log +0 -3
- package/.turbo/turbo-typecheck.log +0 -1
- package/dist/cli.d.ts +0 -46
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -247
- package/dist/cli.js.map +0 -1
- package/dist/draft.d.ts +0 -5
- package/dist/draft.d.ts.map +0 -1
- package/dist/draft.js +0 -16
- package/dist/draft.js.map +0 -1
- package/dist/drift.d.ts +0 -29
- package/dist/drift.d.ts.map +0 -1
- package/dist/drift.js +0 -61
- package/dist/drift.js.map +0 -1
- package/dist/formatters.d.ts +0 -30
- package/dist/formatters.d.ts.map +0 -1
- package/dist/formatters.js +0 -98
- package/dist/formatters.js.map +0 -1
- package/dist/index.d.ts +0 -37
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -38
- package/dist/index.js.map +0 -1
- package/dist/rules/ast.d.ts +0 -82
- package/dist/rules/ast.d.ts.map +0 -1
- package/dist/rules/ast.js +0 -363
- package/dist/rules/ast.js.map +0 -1
- package/dist/rules/context-no-surface-types.d.ts +0 -12
- package/dist/rules/context-no-surface-types.d.ts.map +0 -1
- package/dist/rules/context-no-surface-types.js +0 -96
- package/dist/rules/context-no-surface-types.js.map +0 -1
- package/dist/rules/context-no-trailhead-types.d.ts +0 -12
- package/dist/rules/context-no-trailhead-types.d.ts.map +0 -1
- package/dist/rules/context-no-trailhead-types.js +0 -96
- package/dist/rules/context-no-trailhead-types.js.map +0 -1
- package/dist/rules/cross-declarations.d.ts +0 -13
- package/dist/rules/cross-declarations.d.ts.map +0 -1
- package/dist/rules/cross-declarations.js +0 -264
- package/dist/rules/cross-declarations.js.map +0 -1
- package/dist/rules/draft-file-marking.d.ts +0 -6
- package/dist/rules/draft-file-marking.d.ts.map +0 -1
- package/dist/rules/draft-file-marking.js +0 -65
- package/dist/rules/draft-file-marking.js.map +0 -1
- package/dist/rules/draft-visible-debt.d.ts +0 -12
- package/dist/rules/draft-visible-debt.d.ts.map +0 -1
- package/dist/rules/draft-visible-debt.js +0 -45
- package/dist/rules/draft-visible-debt.js.map +0 -1
- package/dist/rules/follow-declarations.d.ts +0 -13
- package/dist/rules/follow-declarations.d.ts.map +0 -1
- package/dist/rules/follow-declarations.js +0 -264
- package/dist/rules/follow-declarations.js.map +0 -1
- package/dist/rules/implementation-returns-result.d.ts +0 -13
- package/dist/rules/implementation-returns-result.d.ts.map +0 -1
- package/dist/rules/implementation-returns-result.js +0 -277
- package/dist/rules/implementation-returns-result.js.map +0 -1
- package/dist/rules/index.d.ts +0 -20
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -49
- package/dist/rules/index.js.map +0 -1
- package/dist/rules/no-direct-impl-in-route.d.ts +0 -12
- package/dist/rules/no-direct-impl-in-route.d.ts.map +0 -1
- package/dist/rules/no-direct-impl-in-route.js +0 -47
- package/dist/rules/no-direct-impl-in-route.js.map +0 -1
- package/dist/rules/no-direct-implementation-call.d.ts +0 -12
- package/dist/rules/no-direct-implementation-call.d.ts.map +0 -1
- package/dist/rules/no-direct-implementation-call.js +0 -39
- package/dist/rules/no-direct-implementation-call.js.map +0 -1
- package/dist/rules/no-sync-result-assumption.d.ts +0 -6
- package/dist/rules/no-sync-result-assumption.d.ts.map +0 -1
- package/dist/rules/no-sync-result-assumption.js +0 -98
- package/dist/rules/no-sync-result-assumption.js.map +0 -1
- package/dist/rules/no-throw-in-detour-target.d.ts +0 -12
- package/dist/rules/no-throw-in-detour-target.d.ts.map +0 -1
- package/dist/rules/no-throw-in-detour-target.js +0 -87
- package/dist/rules/no-throw-in-detour-target.js.map +0 -1
- package/dist/rules/no-throw-in-implementation.d.ts +0 -9
- package/dist/rules/no-throw-in-implementation.d.ts.map +0 -1
- package/dist/rules/no-throw-in-implementation.js +0 -34
- package/dist/rules/no-throw-in-implementation.js.map +0 -1
- package/dist/rules/prefer-schema-inference.d.ts +0 -7
- package/dist/rules/prefer-schema-inference.d.ts.map +0 -1
- package/dist/rules/prefer-schema-inference.js +0 -86
- package/dist/rules/prefer-schema-inference.js.map +0 -1
- package/dist/rules/provision-declarations.d.ts +0 -14
- package/dist/rules/provision-declarations.d.ts.map +0 -1
- package/dist/rules/provision-declarations.js +0 -344
- package/dist/rules/provision-declarations.js.map +0 -1
- package/dist/rules/provision-exists.d.ts +0 -6
- package/dist/rules/provision-exists.d.ts.map +0 -1
- package/dist/rules/provision-exists.js +0 -90
- package/dist/rules/provision-exists.js.map +0 -1
- package/dist/rules/scan.d.ts +0 -8
- package/dist/rules/scan.d.ts.map +0 -1
- package/dist/rules/scan.js +0 -32
- package/dist/rules/scan.js.map +0 -1
- package/dist/rules/service-declarations.d.ts +0 -16
- package/dist/rules/service-declarations.d.ts.map +0 -1
- package/dist/rules/service-declarations.js +0 -346
- package/dist/rules/service-declarations.js.map +0 -1
- package/dist/rules/service-exists.d.ts +0 -8
- package/dist/rules/service-exists.d.ts.map +0 -1
- package/dist/rules/service-exists.js +0 -91
- package/dist/rules/service-exists.js.map +0 -1
- package/dist/rules/specs.d.ts +0 -29
- package/dist/rules/specs.d.ts.map +0 -1
- package/dist/rules/specs.js +0 -192
- package/dist/rules/specs.js.map +0 -1
- package/dist/rules/structure.d.ts +0 -13
- package/dist/rules/structure.d.ts.map +0 -1
- package/dist/rules/structure.js +0 -142
- package/dist/rules/structure.js.map +0 -1
- package/dist/rules/types.d.ts +0 -54
- package/dist/rules/types.d.ts.map +0 -1
- package/dist/rules/types.js +0 -2
- package/dist/rules/types.js.map +0 -1
- package/dist/rules/valid-describe-refs.d.ts +0 -7
- package/dist/rules/valid-describe-refs.d.ts.map +0 -1
- package/dist/rules/valid-describe-refs.js +0 -51
- package/dist/rules/valid-describe-refs.js.map +0 -1
- package/dist/rules/valid-detour-refs.d.ts +0 -6
- package/dist/rules/valid-detour-refs.d.ts.map +0 -1
- package/dist/rules/valid-detour-refs.js +0 -117
- package/dist/rules/valid-detour-refs.js.map +0 -1
- package/dist/trails/context-no-surface-types.trail.d.ts +0 -13
- package/dist/trails/context-no-surface-types.trail.d.ts.map +0 -1
- package/dist/trails/context-no-surface-types.trail.js +0 -21
- package/dist/trails/context-no-surface-types.trail.js.map +0 -1
- package/dist/trails/context-no-trailhead-types.trail.d.ts +0 -13
- package/dist/trails/context-no-trailhead-types.trail.d.ts.map +0 -1
- package/dist/trails/context-no-trailhead-types.trail.js +0 -21
- package/dist/trails/context-no-trailhead-types.trail.js.map +0 -1
- package/dist/trails/cross-declarations.trail.d.ts +0 -13
- package/dist/trails/cross-declarations.trail.d.ts.map +0 -1
- package/dist/trails/cross-declarations.trail.js +0 -22
- package/dist/trails/cross-declarations.trail.js.map +0 -1
- package/dist/trails/follow-declarations.trail.d.ts +0 -13
- package/dist/trails/follow-declarations.trail.d.ts.map +0 -1
- package/dist/trails/follow-declarations.trail.js +0 -22
- package/dist/trails/follow-declarations.trail.js.map +0 -1
- package/dist/trails/implementation-returns-result.trail.d.ts +0 -13
- package/dist/trails/implementation-returns-result.trail.d.ts.map +0 -1
- package/dist/trails/implementation-returns-result.trail.js +0 -20
- package/dist/trails/implementation-returns-result.trail.js.map +0 -1
- package/dist/trails/index.d.ts +0 -16
- package/dist/trails/index.d.ts.map +0 -1
- package/dist/trails/index.js +0 -15
- package/dist/trails/index.js.map +0 -1
- package/dist/trails/no-direct-impl-in-route.trail.d.ts +0 -13
- package/dist/trails/no-direct-impl-in-route.trail.d.ts.map +0 -1
- package/dist/trails/no-direct-impl-in-route.trail.js +0 -22
- package/dist/trails/no-direct-impl-in-route.trail.js.map +0 -1
- package/dist/trails/no-direct-implementation-call.trail.d.ts +0 -13
- package/dist/trails/no-direct-implementation-call.trail.d.ts.map +0 -1
- package/dist/trails/no-direct-implementation-call.trail.js +0 -16
- package/dist/trails/no-direct-implementation-call.trail.js.map +0 -1
- package/dist/trails/no-sync-result-assumption.trail.d.ts +0 -13
- package/dist/trails/no-sync-result-assumption.trail.d.ts.map +0 -1
- package/dist/trails/no-sync-result-assumption.trail.js +0 -19
- package/dist/trails/no-sync-result-assumption.trail.js.map +0 -1
- package/dist/trails/no-throw-in-detour-target.trail.d.ts +0 -15
- package/dist/trails/no-throw-in-detour-target.trail.d.ts.map +0 -1
- package/dist/trails/no-throw-in-detour-target.trail.js +0 -20
- package/dist/trails/no-throw-in-detour-target.trail.js.map +0 -1
- package/dist/trails/no-throw-in-implementation.trail.d.ts +0 -13
- package/dist/trails/no-throw-in-implementation.trail.d.ts.map +0 -1
- package/dist/trails/no-throw-in-implementation.trail.js +0 -20
- package/dist/trails/no-throw-in-implementation.trail.js.map +0 -1
- package/dist/trails/prefer-schema-inference.trail.d.ts +0 -13
- package/dist/trails/prefer-schema-inference.trail.d.ts.map +0 -1
- package/dist/trails/prefer-schema-inference.trail.js +0 -21
- package/dist/trails/prefer-schema-inference.trail.js.map +0 -1
- package/dist/trails/provision-declarations.trail.d.ts +0 -13
- package/dist/trails/provision-declarations.trail.d.ts.map +0 -1
- package/dist/trails/provision-declarations.trail.js +0 -25
- package/dist/trails/provision-declarations.trail.js.map +0 -1
- package/dist/trails/provision-exists.trail.d.ts +0 -15
- package/dist/trails/provision-exists.trail.d.ts.map +0 -1
- package/dist/trails/provision-exists.trail.js +0 -27
- package/dist/trails/provision-exists.trail.js.map +0 -1
- package/dist/trails/run.d.ts +0 -17
- package/dist/trails/run.d.ts.map +0 -1
- package/dist/trails/run.js +0 -39
- package/dist/trails/run.js.map +0 -1
- package/dist/trails/schema.d.ts +0 -53
- package/dist/trails/schema.d.ts.map +0 -1
- package/dist/trails/schema.js +0 -42
- package/dist/trails/schema.js.map +0 -1
- package/dist/trails/service-declarations.trail.d.ts +0 -26
- package/dist/trails/service-declarations.trail.d.ts.map +0 -1
- package/dist/trails/service-declarations.trail.js +0 -27
- package/dist/trails/service-declarations.trail.js.map +0 -1
- package/dist/trails/service-exists.trail.d.ts +0 -32
- package/dist/trails/service-exists.trail.d.ts.map +0 -1
- package/dist/trails/service-exists.trail.js +0 -29
- package/dist/trails/service-exists.trail.js.map +0 -1
- package/dist/trails/topo.d.ts +0 -3
- package/dist/trails/topo.d.ts.map +0 -1
- package/dist/trails/topo.js +0 -5
- package/dist/trails/topo.js.map +0 -1
- package/dist/trails/valid-describe-refs.trail.d.ts +0 -15
- package/dist/trails/valid-describe-refs.trail.d.ts.map +0 -1
- package/dist/trails/valid-describe-refs.trail.js +0 -18
- package/dist/trails/valid-describe-refs.trail.js.map +0 -1
- package/dist/trails/valid-detour-refs.trail.d.ts +0 -15
- package/dist/trails/valid-detour-refs.trail.d.ts.map +0 -1
- package/dist/trails/valid-detour-refs.trail.js +0 -24
- package/dist/trails/valid-detour-refs.trail.js.map +0 -1
- package/dist/trails/wrap-rule.d.ts +0 -29
- package/dist/trails/wrap-rule.d.ts.map +0 -1
- package/dist/trails/wrap-rule.js +0 -47
- package/dist/trails/wrap-rule.js.map +0 -1
- package/src/__tests__/cli.test.ts +0 -311
- package/src/__tests__/cross-declarations.test.ts +0 -303
- package/src/__tests__/drift.test.ts +0 -144
- package/src/__tests__/formatters.test.ts +0 -157
- package/src/__tests__/implementation-returns-result.test.ts +0 -129
- package/src/__tests__/no-direct-implementation-call.test.ts +0 -83
- package/src/__tests__/no-sync-result-assumption.test.ts +0 -85
- package/src/__tests__/no-throw-in-detour-target.test.ts +0 -78
- package/src/__tests__/prefer-schema-inference.test.ts +0 -84
- package/src/__tests__/provision-declarations.test.ts +0 -318
- package/src/__tests__/provision-exists.test.ts +0 -122
- package/src/__tests__/rules.test.ts +0 -227
- package/src/__tests__/trails.test.ts +0 -19
- package/src/__tests__/valid-describe-refs.test.ts +0 -60
- package/src/__tests__/wrap-rule.test.ts +0 -41
- package/src/rules/no-direct-impl-in-route.ts +0 -81
- package/src/rules/no-throw-in-detour-target.ts +0 -150
- package/src/rules/valid-detour-refs.ts +0 -189
- package/src/trails/no-direct-impl-in-route.trail.ts +0 -22
- package/src/trails/no-throw-in-detour-target.trail.ts +0 -20
- package/src/trails/valid-detour-refs.trail.ts +0 -24
- package/tsconfig.json +0 -9
- package/tsconfig.tsbuildinfo +0 -1
package/dist/drift.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Topo lock drift detection.
|
|
3
|
-
*
|
|
4
|
-
* Compares the committed `trails.lock` hash against a freshly generated
|
|
5
|
-
* trailhead map hash to detect when the trail topology has changed without
|
|
6
|
-
* updating the lock file. The committed lock may be structured JSON or the
|
|
7
|
-
* legacy single-line hash format.
|
|
8
|
-
*/
|
|
9
|
-
import { existsSync, statSync } from 'node:fs';
|
|
10
|
-
import { createTopoStore, NotFoundError, ValidationError, } from '@ontrails/core';
|
|
11
|
-
import { resolveTrailsDir } from '@ontrails/core/internal/trails-db';
|
|
12
|
-
import { generateTrailheadMap, hashTrailheadMap, readTrailheadLockData, } from '@ontrails/schema';
|
|
13
|
-
/**
|
|
14
|
-
* Check whether the committed trails.lock is stale compared to the current topology.
|
|
15
|
-
*
|
|
16
|
-
* When no topo is provided, returns a clean result (no drift detectable without runtime info).
|
|
17
|
-
*/
|
|
18
|
-
export const checkDrift = async (rootDir, topo) => {
|
|
19
|
-
try {
|
|
20
|
-
const trailsDir = resolveTrailsDir({ rootDir });
|
|
21
|
-
const committedLock = existsSync(rootDir) && statSync(rootDir).isDirectory()
|
|
22
|
-
? await readTrailheadLockData({ dir: trailsDir })
|
|
23
|
-
: null;
|
|
24
|
-
// Prefer the stored hash (computed by the export pipeline) to avoid
|
|
25
|
-
// divergence between the schema and store hash pipelines.
|
|
26
|
-
const storedHash = (() => {
|
|
27
|
-
try {
|
|
28
|
-
return createTopoStore({ rootDir }).exports.get()?.trailheadHash;
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
if (error instanceof NotFoundError) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
throw error;
|
|
35
|
-
}
|
|
36
|
-
})();
|
|
37
|
-
const currentHash = storedHash ??
|
|
38
|
-
(topo === undefined
|
|
39
|
-
? 'unknown'
|
|
40
|
-
: hashTrailheadMap(generateTrailheadMap(topo)));
|
|
41
|
-
return {
|
|
42
|
-
committedHash: committedLock?.hash ?? null,
|
|
43
|
-
currentHash,
|
|
44
|
-
stale: committedLock !== null &&
|
|
45
|
-
currentHash !== 'unknown' &&
|
|
46
|
-
committedLock.hash !== currentHash,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
if (!(error instanceof ValidationError)) {
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
return {
|
|
54
|
-
blockedReason: error.message,
|
|
55
|
-
committedHash: null,
|
|
56
|
-
currentHash: 'blocked',
|
|
57
|
-
stale: true,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=drift.js.map
|
package/dist/drift.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../src/drift.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAgB1B;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,OAAe,EACf,IAAuB,EACD,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,MAAM,aAAa,GACjB,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;YACpD,CAAC,CAAC,MAAM,qBAAqB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC;QACX,oEAAoE;QACpE,0DAA0D;QAC1D,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC;gBACH,OAAO,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;YACnE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;oBACnC,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,WAAW,GACf,UAAU;YACV,CAAC,IAAI,KAAK,SAAS;gBACjB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpD,OAAO;YACL,aAAa,EAAE,aAAa,EAAE,IAAI,IAAI,IAAI;YAC1C,WAAW;YACX,KAAK,EACH,aAAa,KAAK,IAAI;gBACtB,WAAW,KAAK,SAAS;gBACzB,aAAa,CAAC,IAAI,KAAK,WAAW;SACrC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,eAAe,CAAC,EAAE,CAAC;YACxC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO;YACL,aAAa,EAAE,KAAK,CAAC,OAAO;YAC5B,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,SAAS;YACtB,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
package/dist/formatters.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CI-oriented formatters for warden reports.
|
|
3
|
-
*
|
|
4
|
-
* Each formatter takes a `WardenReport` and produces output suited to a
|
|
5
|
-
* specific CI environment: GitHub Actions annotations, structured JSON,
|
|
6
|
-
* or a concise markdown summary.
|
|
7
|
-
*/
|
|
8
|
-
import type { WardenReport } from './cli.js';
|
|
9
|
-
/**
|
|
10
|
-
* Produce GitHub Actions workflow command annotations, one per diagnostic.
|
|
11
|
-
*
|
|
12
|
-
* Severity mapping: `error` to `::error`, `warn` to `::warning`.
|
|
13
|
-
* Drift staleness or established-export blocking is emitted as a single
|
|
14
|
-
* `::error` annotation when detected.
|
|
15
|
-
*/
|
|
16
|
-
export declare const formatGitHubAnnotations: (report: WardenReport) => string;
|
|
17
|
-
/**
|
|
18
|
-
* Produce a structured JSON string from the report.
|
|
19
|
-
*
|
|
20
|
-
* Includes a `summary` object with error, warning, and suggestion counts
|
|
21
|
-
* for easy consumption by downstream tooling.
|
|
22
|
-
*/
|
|
23
|
-
export declare const formatJson: (report: WardenReport) => string;
|
|
24
|
-
/**
|
|
25
|
-
* Produce a concise markdown summary suitable for a GitHub job summary or PR comment.
|
|
26
|
-
*
|
|
27
|
-
* Groups diagnostics by severity and includes drift status when relevant.
|
|
28
|
-
*/
|
|
29
|
-
export declare const formatSummary: (report: WardenReport) => string;
|
|
30
|
-
//# sourceMappingURL=formatters.d.ts.map
|
package/dist/formatters.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAS7C;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,YAAY,KAAG,MAmB9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,YAAY,KAAG,MAiBjD,CAAC;AAqCF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,YAAY,KAAG,MAapD,CAAC"}
|
package/dist/formatters.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CI-oriented formatters for warden reports.
|
|
3
|
-
*
|
|
4
|
-
* Each formatter takes a `WardenReport` and produces output suited to a
|
|
5
|
-
* specific CI environment: GitHub Actions annotations, structured JSON,
|
|
6
|
-
* or a concise markdown summary.
|
|
7
|
-
*/
|
|
8
|
-
/** Map warden severity to GitHub Actions annotation level. */
|
|
9
|
-
const ghLevel = {
|
|
10
|
-
error: 'error',
|
|
11
|
-
warn: 'warning',
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Produce GitHub Actions workflow command annotations, one per diagnostic.
|
|
15
|
-
*
|
|
16
|
-
* Severity mapping: `error` to `::error`, `warn` to `::warning`.
|
|
17
|
-
* Drift staleness or established-export blocking is emitted as a single
|
|
18
|
-
* `::error` annotation when detected.
|
|
19
|
-
*/
|
|
20
|
-
export const formatGitHubAnnotations = (report) => {
|
|
21
|
-
const lines = [];
|
|
22
|
-
for (const d of report.diagnostics) {
|
|
23
|
-
const level = ghLevel[d.severity];
|
|
24
|
-
lines.push(`::${level} file=${d.filePath},line=${String(d.line)}::${d.rule}: ${d.message}`);
|
|
25
|
-
}
|
|
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`)');
|
|
31
|
-
}
|
|
32
|
-
return lines.join('\n');
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Produce a structured JSON string from the report.
|
|
36
|
-
*
|
|
37
|
-
* Includes a `summary` object with error, warning, and suggestion counts
|
|
38
|
-
* for easy consumption by downstream tooling.
|
|
39
|
-
*/
|
|
40
|
-
export const formatJson = (report) => {
|
|
41
|
-
const summary = {
|
|
42
|
-
errors: report.errorCount,
|
|
43
|
-
suggestions: 0,
|
|
44
|
-
warnings: report.warnCount,
|
|
45
|
-
};
|
|
46
|
-
return JSON.stringify({
|
|
47
|
-
diagnostics: report.diagnostics,
|
|
48
|
-
drift: report.drift,
|
|
49
|
-
passed: report.passed,
|
|
50
|
-
summary,
|
|
51
|
-
}, null, 2);
|
|
52
|
-
};
|
|
53
|
-
/** Format a diagnostic as a markdown list item. */
|
|
54
|
-
const diagnosticLine = (d) => `- \`${d.filePath}:${String(d.line)}\` — ${d.rule}: ${d.message}`;
|
|
55
|
-
/** Render a severity group as a headed markdown section, or empty array. */
|
|
56
|
-
const severitySection = (heading, diagnostics) => {
|
|
57
|
-
if (diagnostics.length === 0) {
|
|
58
|
-
return [];
|
|
59
|
-
}
|
|
60
|
-
return ['', `### ${heading}`, ...diagnostics.map(diagnosticLine)];
|
|
61
|
-
};
|
|
62
|
-
/** Render a drift section if stale, otherwise empty array. */
|
|
63
|
-
const driftSection = (drift) => {
|
|
64
|
-
if (drift?.blockedReason !== undefined) {
|
|
65
|
-
return [
|
|
66
|
-
'',
|
|
67
|
-
'### Drift',
|
|
68
|
-
`- established exports are blocked: ${drift.blockedReason}`,
|
|
69
|
-
];
|
|
70
|
-
}
|
|
71
|
-
if (!drift?.stale) {
|
|
72
|
-
return [];
|
|
73
|
-
}
|
|
74
|
-
return [
|
|
75
|
-
'',
|
|
76
|
-
'### Drift',
|
|
77
|
-
'- trails.lock is stale (regenerate with `trails topo export`)',
|
|
78
|
-
];
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Produce a concise markdown summary suitable for a GitHub job summary or PR comment.
|
|
82
|
-
*
|
|
83
|
-
* Groups diagnostics by severity and includes drift status when relevant.
|
|
84
|
-
*/
|
|
85
|
-
export const formatSummary = (report) => {
|
|
86
|
-
const result = report.passed ? 'PASS' : 'FAIL';
|
|
87
|
-
const errors = report.diagnostics.filter((d) => d.severity === 'error');
|
|
88
|
-
const warnings = report.diagnostics.filter((d) => d.severity === 'warn');
|
|
89
|
-
return [
|
|
90
|
-
'## Warden Report',
|
|
91
|
-
'',
|
|
92
|
-
`**Result: ${result}** | ${String(report.errorCount)} errors, ${String(report.warnCount)} warnings`,
|
|
93
|
-
...severitySection('Errors', errors),
|
|
94
|
-
...severitySection('Warnings', warnings),
|
|
95
|
-
...driftSection(report.drift),
|
|
96
|
-
].join('\n');
|
|
97
|
-
};
|
|
98
|
-
//# sourceMappingURL=formatters.js.map
|
package/dist/formatters.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Warden - Governance package for Trails.
|
|
3
|
-
*
|
|
4
|
-
* Provides lint rules, drift detection, and a CLI runner to enforce
|
|
5
|
-
* contract-first discipline at development time.
|
|
6
|
-
*
|
|
7
|
-
* Package: `@ontrails/warden`
|
|
8
|
-
*/
|
|
9
|
-
export type { ProjectAwareWardenRule, ProjectContext, WardenDiagnostic, WardenRule, WardenSeverity, } from './rules/index.js';
|
|
10
|
-
export { noThrowInImplementation } from './rules/no-throw-in-implementation.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';
|
|
14
|
-
export { validDetourRefs } from './rules/valid-detour-refs.js';
|
|
15
|
-
export { noDirectImplInRoute } from './rules/no-direct-impl-in-route.js';
|
|
16
|
-
export { noDirectImplementationCall } from './rules/no-direct-implementation-call.js';
|
|
17
|
-
export { noSyncResultAssumption } from './rules/no-sync-result-assumption.js';
|
|
18
|
-
export { implementationReturnsResult } from './rules/implementation-returns-result.js';
|
|
19
|
-
export { noThrowInDetourTarget } from './rules/no-throw-in-detour-target.js';
|
|
20
|
-
export { preferSchemaInference } from './rules/prefer-schema-inference.js';
|
|
21
|
-
export { provisionDeclarations } from './rules/provision-declarations.js';
|
|
22
|
-
export { provisionExists } from './rules/provision-exists.js';
|
|
23
|
-
export { validDescribeRefs } from './rules/valid-describe-refs.js';
|
|
24
|
-
export { wardenRules } from './rules/index.js';
|
|
25
|
-
export type { WardenOptions, WardenReport } from './cli.js';
|
|
26
|
-
export { formatWardenReport, runWarden } from './cli.js';
|
|
27
|
-
export { formatGitHubAnnotations, formatJson, formatSummary, } from './formatters.js';
|
|
28
|
-
export type { DriftResult } from './drift.js';
|
|
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';
|
|
33
|
-
export { wardenTopo } from './trails/topo.js';
|
|
34
|
-
export { runWardenTrails } from './trails/run.js';
|
|
35
|
-
export { contextNoTrailheadTypesTrail, crossDeclarationsTrail, diagnosticSchema, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, provisionDeclarationsTrail, provisionExistsTrail, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
|
|
36
|
-
export type { RuleInput, RuleOutput } from './trails/index.js';
|
|
37
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Warden - Governance package for Trails.
|
|
3
|
-
*
|
|
4
|
-
* Provides lint rules, drift detection, and a CLI runner to enforce
|
|
5
|
-
* contract-first discipline at development time.
|
|
6
|
-
*
|
|
7
|
-
* Package: `@ontrails/warden`
|
|
8
|
-
*/
|
|
9
|
-
// Individual rules
|
|
10
|
-
export { noThrowInImplementation } from './rules/no-throw-in-implementation.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';
|
|
14
|
-
export { validDetourRefs } from './rules/valid-detour-refs.js';
|
|
15
|
-
export { noDirectImplInRoute } from './rules/no-direct-impl-in-route.js';
|
|
16
|
-
export { noDirectImplementationCall } from './rules/no-direct-implementation-call.js';
|
|
17
|
-
export { noSyncResultAssumption } from './rules/no-sync-result-assumption.js';
|
|
18
|
-
export { implementationReturnsResult } from './rules/implementation-returns-result.js';
|
|
19
|
-
export { noThrowInDetourTarget } from './rules/no-throw-in-detour-target.js';
|
|
20
|
-
export { preferSchemaInference } from './rules/prefer-schema-inference.js';
|
|
21
|
-
export { provisionDeclarations } from './rules/provision-declarations.js';
|
|
22
|
-
export { provisionExists } from './rules/provision-exists.js';
|
|
23
|
-
export { validDescribeRefs } from './rules/valid-describe-refs.js';
|
|
24
|
-
// Rule registry
|
|
25
|
-
export { wardenRules } from './rules/index.js';
|
|
26
|
-
export { formatWardenReport, runWarden } from './cli.js';
|
|
27
|
-
// CI formatters
|
|
28
|
-
export { formatGitHubAnnotations, formatJson, formatSummary, } from './formatters.js';
|
|
29
|
-
export { checkDrift } from './drift.js';
|
|
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
|
|
35
|
-
export { wardenTopo } from './trails/topo.js';
|
|
36
|
-
export { runWardenTrails } from './trails/run.js';
|
|
37
|
-
export { contextNoTrailheadTypesTrail, crossDeclarationsTrail, diagnosticSchema, implementationReturnsResultTrail, noDirectImplInRouteTrail, noDirectImplementationCallTrail, noSyncResultAssumptionTrail, noThrowInDetourTargetTrail, noThrowInImplementationTrail, preferSchemaInferenceTrail, ruleInput, ruleOutput, provisionDeclarationsTrail, provisionExistsTrail, validDescribeRefsTrail, validDetourRefsTrail, } from './trails/index.js';
|
|
38
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/rules/ast.d.ts
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared AST utilities for warden rules.
|
|
3
|
-
*
|
|
4
|
-
* Uses oxc-parser for native-speed TypeScript parsing. Provides a lightweight
|
|
5
|
-
* walker and helpers for finding trail implementation bodies.
|
|
6
|
-
*/
|
|
7
|
-
export interface AstNode {
|
|
8
|
-
readonly type: string;
|
|
9
|
-
readonly start: number;
|
|
10
|
-
readonly end: number;
|
|
11
|
-
readonly key?: {
|
|
12
|
-
readonly name?: string;
|
|
13
|
-
};
|
|
14
|
-
readonly value?: AstNode;
|
|
15
|
-
readonly body?: AstNode | readonly AstNode[];
|
|
16
|
-
readonly [key: string]: unknown;
|
|
17
|
-
}
|
|
18
|
-
/** Parse TypeScript source into an AST. Returns null on parse failure. */
|
|
19
|
-
export declare const parse: (filePath: string, sourceCode: string) => AstNode | null;
|
|
20
|
-
type WalkFn = (node: unknown, visit: (node: AstNode) => void) => void;
|
|
21
|
-
/** Walk an AST node tree, calling `visit` on every node. */
|
|
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 provision-access analysis where inner functions may shadow
|
|
27
|
-
* the trail context parameter name.
|
|
28
|
-
*/
|
|
29
|
-
export declare const walkScope: WalkFn;
|
|
30
|
-
/** Find the byte offset's line number (1-based) in source code. */
|
|
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
|
-
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[];
|
|
47
|
-
/** Extract the first string argument from a CallExpression. */
|
|
48
|
-
export declare const extractFirstStringArg: (node: AstNode) => string | null;
|
|
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. */
|
|
54
|
-
export declare const collectNamedServiceIds: (ast: AstNode) => ReadonlyMap<string, string>;
|
|
55
|
-
/** Backward-compatible aliases while the migration is in flight. */
|
|
56
|
-
export declare const collectServiceDefinitionIds: (ast: AstNode) => ReadonlySet<string>;
|
|
57
|
-
/** Find a Property node by key name inside an ObjectExpression config. */
|
|
58
|
-
export declare const findConfigProperty: (config: AstNode, propertyName: string) => AstNode | null;
|
|
59
|
-
export interface TrailDefinition {
|
|
60
|
-
/** Trail ID string, e.g. "entity.show" */
|
|
61
|
-
readonly id: string;
|
|
62
|
-
/** "trail" or "signal" */
|
|
63
|
-
readonly kind: string;
|
|
64
|
-
/** The config object argument (second arg to trail() call) */
|
|
65
|
-
readonly config: AstNode;
|
|
66
|
-
/** Start offset of the call expression */
|
|
67
|
-
readonly start: number;
|
|
68
|
-
}
|
|
69
|
-
export declare const findTrailDefinitions: (ast: AstNode) => TrailDefinition[];
|
|
70
|
-
/**
|
|
71
|
-
* Find `blaze:` property values.
|
|
72
|
-
*
|
|
73
|
-
* When given an ObjectExpression (trail config), returns only its direct `blaze:`
|
|
74
|
-
* properties. When given a full AST, finds trail definitions first and extracts
|
|
75
|
-
* `blaze:` from each config — in both cases ignoring nested `blaze:` properties
|
|
76
|
-
* (e.g. `meta: { blaze: ... }`).
|
|
77
|
-
*/
|
|
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;
|
|
81
|
-
export {};
|
|
82
|
-
//# sourceMappingURL=ast.d.ts.map
|
package/dist/rules/ast.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/rules/ast.ts"],"names":[],"mappings":"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"}
|