feat(core-eslint): add no-undeclared-analytics-event ESLint rule
Adds the conformance/no-undeclared-analytics-event rule at warn severity,
mirroring no-undeclared-audit and no-undeclared-event-publish. The rule
cross-checks analytics.track("X", ...) literal slugs in *.use-case.ts
files against manifest.useCases[name].analyticsEvents, providing
sub-second editor feedback before boot-time conformance fires.
- Extends _manifest-ast.js to parse analyticsEvents arrays in both
extractUseCaseEntry helpers
- Registers rule in plugin.js and base.js at ["warn", { repoRoot }]
- RuleTester fixtures: declared pass, undeclared warn, non-literal no-op,
non-use-case file no-op, missing manifest entry no-op
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -36,9 +36,27 @@ describe("parseManifestUseCases", () => {
|
||||
jobs: [],
|
||||
} as const);`);
|
||||
expect(parseManifestUseCases(fp)).toEqual({
|
||||
signIn: { mutates: false, audits: [], publishes: [], consumes: [] },
|
||||
signUp: { mutates: true, audits: ["user.created"], publishes: ["auth.signed-up"], consumes: [] },
|
||||
signOut: { mutates: true, audits: ["session.ended"], publishes: [], consumes: [] },
|
||||
signIn: {
|
||||
mutates: false,
|
||||
audits: [],
|
||||
publishes: [],
|
||||
consumes: [],
|
||||
analyticsEvents: [],
|
||||
},
|
||||
signUp: {
|
||||
mutates: true,
|
||||
audits: ["user.created"],
|
||||
publishes: ["auth.signed-up"],
|
||||
consumes: [],
|
||||
analyticsEvents: [],
|
||||
},
|
||||
signOut: {
|
||||
mutates: true,
|
||||
audits: ["session.ended"],
|
||||
publishes: [],
|
||||
consumes: [],
|
||||
analyticsEvents: [],
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
@@ -69,8 +87,20 @@ describe("parseManifestFully", () => {
|
||||
name: "auth",
|
||||
requiredCores: ["audit", "events"],
|
||||
useCases: {
|
||||
signIn: { mutates: false, audits: [], publishes: [], consumes: [] },
|
||||
signUp: { mutates: true, audits: ["user.created"], publishes: [], consumes: [] },
|
||||
signIn: {
|
||||
mutates: false,
|
||||
audits: [],
|
||||
publishes: [],
|
||||
consumes: [],
|
||||
analyticsEvents: [],
|
||||
},
|
||||
signUp: {
|
||||
mutates: true,
|
||||
audits: ["user.created"],
|
||||
publishes: [],
|
||||
consumes: [],
|
||||
analyticsEvents: [],
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user