@usefragments/core 1.2.0 → 1.4.0
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/dist/{chunk-BQQTMGLA.js → chunk-57QDBEHQ.js} +79 -6
- package/dist/chunk-57QDBEHQ.js.map +1 -0
- package/dist/{chunk-DBVTSUMT.js → chunk-CBSNXFOD.js} +20 -6
- package/dist/chunk-CBSNXFOD.js.map +1 -0
- package/dist/codes/index.d.ts +1 -1
- package/dist/codes/index.js +2 -2
- package/dist/compiled-types/index.d.ts +1 -1
- package/dist/generate/index.d.ts +1 -1
- package/dist/{governance-DYSirwJu.d.ts → governance-DxdJV6lx.d.ts} +10 -0
- package/dist/index-0lmh0Lbo.d.ts +6981 -0
- package/dist/index.d.ts +65 -29
- package/dist/index.js +397 -127
- package/dist/index.js.map +1 -1
- package/dist/react-types.d.ts +1 -1
- package/dist/registry.d.ts +18 -18
- package/dist/schemas/index.d.ts +3 -3377
- package/dist/schemas/index.js +1 -1
- package/dist/test-utils.d.ts +1 -1
- package/package.json +1 -1
- package/src/agent-format.test.ts +75 -3
- package/src/agent-format.ts +28 -6
- package/src/constants.ts +3 -0
- package/src/evidence.ts +27 -0
- package/src/facts/builders.ts +3 -1
- package/src/facts/fact-index.ts +22 -2
- package/src/facts/facts.test.ts +1 -1
- package/src/facts/types.ts +16 -1
- package/src/index.ts +4 -0
- package/src/rules/__tests__/fix-emission-invariant.test.ts +174 -0
- package/src/rules/__tests__/tokens-require-dual-fallback.test.ts +90 -0
- package/src/rules/components-prefer-library.test.ts +148 -0
- package/src/rules/components-prefer-library.ts +52 -1
- package/src/rules/emit-gate.test.ts +16 -0
- package/src/rules/emit-gate.ts +6 -3
- package/src/rules/finding.ts +3 -0
- package/src/rules/rules.test.ts +2 -1
- package/src/rules/spacing-resolution.ts +5 -8
- package/src/rules/styles-no-raw-color.test.ts +213 -0
- package/src/rules/styles-no-raw-color.ts +157 -23
- package/src/rules/styles-no-raw-dimensions.ts +31 -12
- package/src/rules/styles-no-raw-spacing.ts +33 -11
- package/src/rules/styles-no-raw-typography.ts +37 -15
- package/src/rules/taxonomy.test.ts +13 -0
- package/src/rules/tokens-require-dual-fallback.ts +54 -17
- package/src/rules/utils.ts +51 -0
- package/src/schema.ts +6 -2
- package/src/schemas/index.ts +81 -3
- package/src/token-types.ts +18 -0
- package/src/tokens/__tests__/source-names.test.ts +42 -0
- package/src/tokens/categories.ts +54 -24
- package/src/tokens/design-token-parser.test.ts +24 -5
- package/src/tokens/design-token-parser.ts +40 -8
- package/src/tokens/scss.test.ts +94 -0
- package/src/tokens/scss.ts +11 -4
- package/src/types.ts +11 -0
- package/dist/chunk-BQQTMGLA.js.map +0 -1
- package/dist/chunk-DBVTSUMT.js.map +0 -1
|
@@ -8,6 +8,13 @@ import {
|
|
|
8
8
|
|
|
9
9
|
// src/schemas/index.ts
|
|
10
10
|
import { z } from "zod";
|
|
11
|
+
var evidenceGradeSchema = z.enum([
|
|
12
|
+
"none",
|
|
13
|
+
"runtime_advisory",
|
|
14
|
+
"provenance_bound",
|
|
15
|
+
"source_backed",
|
|
16
|
+
"receipt_backed"
|
|
17
|
+
]);
|
|
11
18
|
var factLocationSchema = z.object({
|
|
12
19
|
file: z.string(),
|
|
13
20
|
line: z.number().int().nonnegative(),
|
|
@@ -76,6 +83,7 @@ var findingSchema = z.object({
|
|
|
76
83
|
fingerprint: z.string(),
|
|
77
84
|
location: factLocationSchema,
|
|
78
85
|
evidence: z.array(factEvidenceSchema).min(1),
|
|
86
|
+
evidenceGrade: evidenceGradeSchema.optional(),
|
|
79
87
|
fix: findingFixSchema.optional(),
|
|
80
88
|
attributes: z.record(z.unknown()).optional(),
|
|
81
89
|
/**
|
|
@@ -163,6 +171,7 @@ var agentFindingSchema = z.object({
|
|
|
163
171
|
severity: severitySchema,
|
|
164
172
|
level: severityLevelSchema,
|
|
165
173
|
message: z.string(),
|
|
174
|
+
evidenceGrade: evidenceGradeSchema.optional(),
|
|
166
175
|
evidence: z.array(factEvidenceSchema),
|
|
167
176
|
plan: agentPlanSchema
|
|
168
177
|
});
|
|
@@ -174,10 +183,32 @@ var agentIntegritySchema = z.object({
|
|
|
174
183
|
inert: z.boolean(),
|
|
175
184
|
reasons: z.array(z.string())
|
|
176
185
|
});
|
|
177
|
-
var
|
|
186
|
+
var agentRunProvenanceSchema = z.object({
|
|
187
|
+
runId: z.string().regex(/^run_[a-f0-9]{12}$/),
|
|
188
|
+
fcid: z.string().min(1),
|
|
189
|
+
baselineId: z.string().min(1).optional(),
|
|
190
|
+
scope: z.object({
|
|
191
|
+
method: z.enum([
|
|
192
|
+
"three-dot",
|
|
193
|
+
"tree-diff",
|
|
194
|
+
"status",
|
|
195
|
+
"fallback-full",
|
|
196
|
+
"explicit",
|
|
197
|
+
"full"
|
|
198
|
+
]),
|
|
199
|
+
gitOk: z.boolean()
|
|
200
|
+
}),
|
|
201
|
+
engineVersion: z.string().min(1),
|
|
202
|
+
scopeHash: z.string().regex(/^[a-f0-9]{64}$/),
|
|
203
|
+
inputFilesHash: z.string().regex(/^[a-f0-9]{64}$/)
|
|
204
|
+
});
|
|
205
|
+
var agentRunVerdictSchema = z.object({
|
|
206
|
+
exitCode: z.union([z.literal(0), z.literal(1)]),
|
|
207
|
+
reasons: z.array(z.string()),
|
|
208
|
+
gatingFindingCount: z.number().int().nonnegative()
|
|
209
|
+
});
|
|
210
|
+
var agentFormatBaseSchema = z.object({
|
|
178
211
|
schemaVersion: z.literal(AGENT_FORMAT_SCHEMA_VERSION),
|
|
179
|
-
passed: z.boolean(),
|
|
180
|
-
score: z.number(),
|
|
181
212
|
summary: z.string(),
|
|
182
213
|
integrity: agentIntegritySchema,
|
|
183
214
|
fix_first: z.array(agentFindingSchema),
|
|
@@ -193,15 +224,56 @@ var agentFormatSchema = z.object({
|
|
|
193
224
|
scoreDelta: z.number()
|
|
194
225
|
}),
|
|
195
226
|
findings: z.array(findingSchema).optional(),
|
|
196
|
-
suppressions: z.array(suppressionDirectiveSchema).optional()
|
|
227
|
+
suppressions: z.array(suppressionDirectiveSchema).optional(),
|
|
228
|
+
provenance: agentRunProvenanceSchema.optional(),
|
|
229
|
+
verdict: agentRunVerdictSchema.optional()
|
|
197
230
|
});
|
|
231
|
+
var agentFormatSchema = z.union([
|
|
232
|
+
agentFormatBaseSchema.extend({
|
|
233
|
+
passed: z.boolean(),
|
|
234
|
+
score: z.number(),
|
|
235
|
+
status: z.never().optional(),
|
|
236
|
+
reasons: z.never().optional(),
|
|
237
|
+
integrity: agentIntegritySchema.extend({
|
|
238
|
+
rulesLoaded: z.number().int().positive()
|
|
239
|
+
})
|
|
240
|
+
}),
|
|
241
|
+
agentFormatBaseSchema.extend({
|
|
242
|
+
passed: z.literal(false),
|
|
243
|
+
score: z.never().optional(),
|
|
244
|
+
status: z.literal("indeterminate"),
|
|
245
|
+
reasons: z.tuple([z.literal("zero_rules_loaded")]),
|
|
246
|
+
integrity: agentIntegritySchema.extend({
|
|
247
|
+
rulesLoaded: z.literal(0)
|
|
248
|
+
})
|
|
249
|
+
}),
|
|
250
|
+
// A finalized Run can explicitly allow inert governance. Preserve the
|
|
251
|
+
// indeterminate integrity truth while making `passed` match that Run's sole
|
|
252
|
+
// verdict; requiring Run pins prevents generic zero-rule envelopes from
|
|
253
|
+
// accidentally becoming green.
|
|
254
|
+
agentFormatBaseSchema.extend({
|
|
255
|
+
passed: z.literal(true),
|
|
256
|
+
score: z.never().optional(),
|
|
257
|
+
status: z.literal("indeterminate"),
|
|
258
|
+
reasons: z.tuple([z.literal("zero_rules_loaded")]),
|
|
259
|
+
integrity: agentIntegritySchema.extend({
|
|
260
|
+
rulesLoaded: z.literal(0)
|
|
261
|
+
}),
|
|
262
|
+
provenance: agentRunProvenanceSchema,
|
|
263
|
+
verdict: agentRunVerdictSchema.extend({ exitCode: z.literal(0) })
|
|
264
|
+
})
|
|
265
|
+
]);
|
|
198
266
|
var agentErrorEnvelopeSchema = z.object({
|
|
199
267
|
schemaVersion: z.literal(AGENT_FORMAT_SCHEMA_VERSION),
|
|
200
268
|
passed: z.literal(false),
|
|
201
269
|
error: z.object({
|
|
202
270
|
code: z.string().min(1),
|
|
203
271
|
message: z.string().min(1)
|
|
204
|
-
})
|
|
272
|
+
}),
|
|
273
|
+
provenance: agentRunProvenanceSchema.optional(),
|
|
274
|
+
verdict: agentRunVerdictSchema.optional(),
|
|
275
|
+
cloudReport: z.enum(["reported", "failed", "skipped"]).optional(),
|
|
276
|
+
notices: z.array(z.string()).optional()
|
|
205
277
|
});
|
|
206
278
|
var agentOutputSchema = z.union([agentFormatSchema, agentErrorEnvelopeSchema]);
|
|
207
279
|
function normalizeSeverity(severity) {
|
|
@@ -210,6 +282,7 @@ function normalizeSeverity(severity) {
|
|
|
210
282
|
function normalizeFinding(input) {
|
|
211
283
|
return {
|
|
212
284
|
...input,
|
|
285
|
+
evidenceGrade: input.evidenceGrade ?? "source_backed",
|
|
213
286
|
level: input.level ?? severityLevel(input.severity)
|
|
214
287
|
};
|
|
215
288
|
}
|
|
@@ -247,4 +320,4 @@ export {
|
|
|
247
320
|
normalizeFinding,
|
|
248
321
|
normalizeViolation
|
|
249
322
|
};
|
|
250
|
-
//# sourceMappingURL=chunk-
|
|
323
|
+
//# sourceMappingURL=chunk-57QDBEHQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schemas/index.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport {\n legacySeverityLevelSchema,\n severityFromLevel,\n severityLevel,\n severityLevelSchema,\n severitySchema,\n} from \"../severity.js\";\nimport type { LegacySeverityLevel, Severity } from \"../severity.js\";\nimport type { EvidenceGrade } from \"../evidence.js\";\n\nconst evidenceGradeSchema: z.ZodType<EvidenceGrade> = z.enum([\n \"none\",\n \"runtime_advisory\",\n \"provenance_bound\",\n \"source_backed\",\n \"receipt_backed\",\n]);\n\nexport { legacySeverityLevelSchema, severityLevelSchema, severitySchema };\nexport type { LegacySeverityLevel, Severity, SeverityLevel } from \"../severity.js\";\n\nexport const factLocationSchema = z.object({\n file: z.string(),\n line: z.number().int().nonnegative(),\n column: z.number().int().nonnegative(),\n endLine: z.number().int().nonnegative().optional(),\n endColumn: z.number().int().nonnegative().optional(),\n});\nexport type FactLocation = z.infer<typeof factLocationSchema>;\n\nexport const findingReplacePropValueFixSchema = z.object({\n kind: z.literal(\"replacePropValue\"),\n title: z.string(),\n prop: z.string(),\n value: z.unknown(),\n deterministic: z.boolean().optional(),\n});\n\nexport const findingReplaceStyleValueFixSchema = z.object({\n kind: z.literal(\"replaceStyleValue\"),\n title: z.string(),\n property: z.string(),\n value: z.string(),\n deterministic: z.boolean().optional(),\n});\n\nexport const findingReplaceImportFixSchema = z.object({\n kind: z.literal(\"replaceImport\"),\n title: z.string(),\n from: z.string(),\n to: z.string(),\n deterministic: z.boolean().optional(),\n});\n\nexport const findingReplaceComponentFixSchema = z.object({\n kind: z.literal(\"replaceComponent\"),\n title: z.string(),\n from: z.string(),\n to: z.string(),\n deterministic: z.boolean().optional(),\n});\n\nexport const findingReplaceClassTokenFixSchema = z.object({\n kind: z.literal(\"replaceClassToken\"),\n title: z.string(),\n from: z.string(),\n to: z.string().nullable(),\n utility: z.string(),\n deterministic: z.boolean().optional(),\n});\n\nexport const findingFixSchema = z.discriminatedUnion(\"kind\", [\n findingReplacePropValueFixSchema,\n findingReplaceStyleValueFixSchema,\n findingReplaceImportFixSchema,\n findingReplaceComponentFixSchema,\n findingReplaceClassTokenFixSchema,\n]);\nexport type FindingFix = z.infer<typeof findingFixSchema>;\nexport type FindingReplacePropValueFix = z.infer<typeof findingReplacePropValueFixSchema>;\nexport type FindingReplaceStyleValueFix = z.infer<typeof findingReplaceStyleValueFixSchema>;\nexport type FindingReplaceImportFix = z.infer<typeof findingReplaceImportFixSchema>;\nexport type FindingReplaceComponentFix = z.infer<typeof findingReplaceComponentFixSchema>;\nexport type FindingReplaceClassTokenFix = z.infer<typeof findingReplaceClassTokenFixSchema>;\n\nexport interface FactEvidence {\n factId: string;\n fact: {\n kind: string;\n location?: FactLocation;\n };\n}\n\nexport const factEvidenceSchema: z.ZodType<FactEvidence> = z.object({\n factId: z.string(),\n fact: z\n .object({\n kind: z.string(),\n location: factLocationSchema.optional(),\n })\n .passthrough(),\n});\n\nexport const findingSchema = z.object({\n ruleId: z.string(),\n ruleVersion: z.string(),\n severity: severitySchema,\n level: severityLevelSchema,\n code: z\n .string()\n .regex(/^FUI\\d{4}$/)\n .optional(),\n helpUrl: z.string().url().optional(),\n message: z.string(),\n fingerprint: z.string(),\n location: factLocationSchema,\n evidence: z.array(factEvidenceSchema).min(1),\n evidenceGrade: evidenceGradeSchema.optional(),\n fix: findingFixSchema.optional(),\n attributes: z.record(z.unknown()).optional(),\n /**\n * Product area this finding's file resolved to (topology layer). Optional —\n * absent when the repo has no `topology` config. See `topology/resolve-area`.\n */\n area: z\n .object({\n areaId: z.string(),\n areaName: z.string(),\n criticality: z.enum([\"low\", \"medium\", \"high\", \"revenue\", \"regulated\"]),\n owners: z.array(z.string()),\n matchedGlob: z.string(),\n })\n .optional(),\n});\nexport type Finding = z.infer<typeof findingSchema>;\n\nexport const violationSchema = z.object({\n nodeId: z.string(),\n nodeType: z.string(),\n rule: z.string(),\n severity: severitySchema,\n level: severityLevelSchema.optional(),\n code: z\n .string()\n .regex(/^FUI\\d{4}$/)\n .optional(),\n helpUrl: z.string().url().optional(),\n message: z.string(),\n path: z.string().optional(),\n suggestion: z.string().optional(),\n prop: z.string().optional(),\n filePath: z.string().optional(),\n line: z.number().int().nonnegative().optional(),\n column: z.number().int().nonnegative().optional(),\n rawValue: z.string().optional(),\n extra: z.record(z.unknown()).optional(),\n});\nexport type Violation = z.infer<typeof violationSchema>;\n\nexport const fixSchema = z.object({\n nodeId: z.string(),\n prop: z.string().optional(),\n action: z.enum([\"remove\", \"replace\", \"add\"]),\n value: z.unknown().optional(),\n description: z.string(),\n});\nexport type Fix = z.infer<typeof fixSchema>;\n\nexport const validatorResultSchema = z.object({\n validator: z.string(),\n severity: severitySchema,\n passed: z.boolean(),\n violations: z.array(violationSchema),\n findings: z.array(findingSchema).optional(),\n suggestions: z.array(fixSchema).optional(),\n});\nexport type ValidatorResult = z.infer<typeof validatorResultSchema>;\n\nexport const governanceVerdictMetadataSchema = z.object({\n runner: z.string(),\n policyVersion: z.string().optional(),\n duration: z.number().nonnegative(),\n nodeCount: z.number().int().nonnegative(),\n componentTypes: z.array(z.string()),\n});\nexport type GovernanceVerdictMetadata = z.infer<typeof governanceVerdictMetadataSchema>;\n\nexport const governanceVerdictSchema = z.object({\n verdict: z.enum([\"pass\", \"warn\", \"fail\"]).optional(),\n passed: z.boolean(),\n score: z.number(),\n results: z.array(validatorResultSchema),\n metadata: governanceVerdictMetadataSchema,\n});\nexport type GovernanceVerdict = z.infer<typeof governanceVerdictSchema>;\n\nexport const suppressionDirectiveSchema = z.object({\n ruleId: z.string().optional(),\n reason: z.string().min(1),\n expiresAt: z.string().datetime().optional(),\n expiresOn: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/)\n .optional(),\n scope: z.enum([\"line\", \"block\", \"file\"]).default(\"line\"),\n code: z\n .string()\n .regex(/^FUI\\d{4}$/)\n .optional(),\n});\nexport type SuppressionDirective = z.infer<typeof suppressionDirectiveSchema>;\n\nexport const agentPlanSchema = z.object({\n tool: z.enum([\n \"design_system/list_primitives\",\n \"design_system/conform\",\n \"design_system/prove_compliant\",\n ]),\n args: z.record(z.unknown()),\n confidence: z.number().min(0).max(1),\n});\n\nexport const agentFindingSchema = z.object({\n code: z\n .string()\n .regex(/^FUI\\d{4}$/)\n .optional(),\n ruleId: z.string(),\n filePath: z.string(),\n line: z.number().int().nonnegative(),\n col: z.number().int().nonnegative(),\n severity: severitySchema,\n level: severityLevelSchema,\n message: z.string(),\n evidenceGrade: evidenceGradeSchema.optional(),\n evidence: z.array(factEvidenceSchema),\n plan: agentPlanSchema,\n});\n\nexport const AGENT_FORMAT_SCHEMA_VERSION = \"typestyle.agent.v2\" as const;\n\nexport const agentIntegritySchema = z.object({\n rulesLoaded: z.number().int().nonnegative(),\n status: z.enum([\"healthy\", \"degraded\", \"inert\"]),\n healthy: z.boolean(),\n inert: z.boolean(),\n reasons: z.array(z.string()),\n});\n\nconst agentRunProvenanceSchema = z.object({\n runId: z.string().regex(/^run_[a-f0-9]{12}$/),\n fcid: z.string().min(1),\n baselineId: z.string().min(1).optional(),\n scope: z.object({\n method: z.enum([\n \"three-dot\",\n \"tree-diff\",\n \"status\",\n \"fallback-full\",\n \"explicit\",\n \"full\",\n ]),\n gitOk: z.boolean(),\n }),\n engineVersion: z.string().min(1),\n scopeHash: z.string().regex(/^[a-f0-9]{64}$/),\n inputFilesHash: z.string().regex(/^[a-f0-9]{64}$/),\n});\n\nconst agentRunVerdictSchema = z.object({\n exitCode: z.union([z.literal(0), z.literal(1)]),\n reasons: z.array(z.string()),\n gatingFindingCount: z.number().int().nonnegative(),\n});\n\nconst agentFormatBaseSchema = z.object({\n schemaVersion: z.literal(AGENT_FORMAT_SCHEMA_VERSION),\n summary: z.string(),\n integrity: agentIntegritySchema,\n fix_first: z.array(agentFindingSchema),\n remaining: z.array(agentFindingSchema),\n suppression_template: z.object({\n directive: z.string(),\n requiredFields: z.array(z.string()),\n example: z.string(),\n }),\n budget: z.object({\n iteration: z.number().int().nonnegative(),\n maxIterations: z.number().int().positive(),\n scoreDelta: z.number(),\n }),\n findings: z.array(findingSchema).optional(),\n suppressions: z.array(suppressionDirectiveSchema).optional(),\n provenance: agentRunProvenanceSchema.optional(),\n verdict: agentRunVerdictSchema.optional(),\n});\n\nexport const agentFormatSchema = z.union([\n agentFormatBaseSchema.extend({\n passed: z.boolean(),\n score: z.number(),\n status: z.never().optional(),\n reasons: z.never().optional(),\n integrity: agentIntegritySchema.extend({\n rulesLoaded: z.number().int().positive(),\n }),\n }),\n agentFormatBaseSchema.extend({\n passed: z.literal(false),\n score: z.never().optional(),\n status: z.literal(\"indeterminate\"),\n reasons: z.tuple([z.literal(\"zero_rules_loaded\")]),\n integrity: agentIntegritySchema.extend({\n rulesLoaded: z.literal(0),\n }),\n }),\n // A finalized Run can explicitly allow inert governance. Preserve the\n // indeterminate integrity truth while making `passed` match that Run's sole\n // verdict; requiring Run pins prevents generic zero-rule envelopes from\n // accidentally becoming green.\n agentFormatBaseSchema.extend({\n passed: z.literal(true),\n score: z.never().optional(),\n status: z.literal(\"indeterminate\"),\n reasons: z.tuple([z.literal(\"zero_rules_loaded\")]),\n integrity: agentIntegritySchema.extend({\n rulesLoaded: z.literal(0),\n }),\n provenance: agentRunProvenanceSchema,\n verdict: agentRunVerdictSchema.extend({ exitCode: z.literal(0) }),\n }),\n]);\nexport type AgentFormat = z.infer<typeof agentFormatSchema>;\n\nexport const agentErrorEnvelopeSchema = z.object({\n schemaVersion: z.literal(AGENT_FORMAT_SCHEMA_VERSION),\n passed: z.literal(false),\n error: z.object({\n code: z.string().min(1),\n message: z.string().min(1),\n }),\n provenance: agentRunProvenanceSchema.optional(),\n verdict: agentRunVerdictSchema.optional(),\n cloudReport: z.enum([\"reported\", \"failed\", \"skipped\"]).optional(),\n notices: z.array(z.string()).optional(),\n});\nexport type AgentErrorEnvelope = z.infer<typeof agentErrorEnvelopeSchema>;\n\nexport const agentOutputSchema = z.union([agentFormatSchema, agentErrorEnvelopeSchema]);\nexport type AgentOutput = z.infer<typeof agentOutputSchema>;\n\nexport function normalizeSeverity(severity: Severity | LegacySeverityLevel): Severity {\n return severitySchema.safeParse(severity).success\n ? (severity as Severity)\n : severityFromLevel(legacySeverityLevelSchema.parse(severity));\n}\n\nexport function normalizeFinding(\n input: Omit<Finding, \"level\"> & { level?: Finding[\"level\"] }\n): Finding {\n return {\n ...input,\n evidenceGrade: input.evidenceGrade ?? \"source_backed\",\n level: input.level ?? severityLevel(input.severity),\n };\n}\n\nexport function normalizeViolation(\n input: Omit<Violation, \"level\"> & { level?: Violation[\"level\"] }\n): Violation {\n return {\n ...input,\n level: input.level ?? severityLevel(input.severity),\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeFinding,
|
|
3
3
|
normalizeViolation
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-57QDBEHQ.js";
|
|
5
5
|
import {
|
|
6
6
|
authorOwnedImport,
|
|
7
7
|
canonicalizeOwnedComponentId,
|
|
@@ -798,7 +798,8 @@ function makeTokenDefinitionFact(input) {
|
|
|
798
798
|
value: input.value,
|
|
799
799
|
...input.location ? { location: input.location } : {},
|
|
800
800
|
category: input.category,
|
|
801
|
-
referenceFormat: input.referenceFormat
|
|
801
|
+
referenceFormat: input.referenceFormat,
|
|
802
|
+
...input.sourceNames?.length ? { sourceNames: [...input.sourceNames] } : {}
|
|
802
803
|
};
|
|
803
804
|
}
|
|
804
805
|
function makeTailwindPaletteAllowFact(input) {
|
|
@@ -1068,7 +1069,7 @@ function logicalComponentId(componentId2) {
|
|
|
1068
1069
|
}
|
|
1069
1070
|
function logicalFactForComparison(fact) {
|
|
1070
1071
|
if (fact.kind === "token_definition") {
|
|
1071
|
-
const { location: _location, ...logicalFact } = fact;
|
|
1072
|
+
const { location: _location, sourceNames: _sourceNames, ...logicalFact } = fact;
|
|
1072
1073
|
return logicalFact;
|
|
1073
1074
|
}
|
|
1074
1075
|
if (fact.kind === "jsx_import_path_preferred") {
|
|
@@ -1111,12 +1112,16 @@ var FactIndex = class {
|
|
|
1111
1112
|
facts = /* @__PURE__ */ new Map();
|
|
1112
1113
|
idsByKind = /* @__PURE__ */ new Map();
|
|
1113
1114
|
idsByComponent = /* @__PURE__ */ new Map();
|
|
1115
|
+
tokenBySymbol = /* @__PURE__ */ new Map();
|
|
1114
1116
|
add(fact) {
|
|
1117
|
+
if (fact.kind === "token_definition") {
|
|
1118
|
+
this.indexTokenSymbols(fact);
|
|
1119
|
+
}
|
|
1115
1120
|
const existing = this.facts.get(fact.id);
|
|
1116
1121
|
if (existing) {
|
|
1117
1122
|
if (canonicalJson(logicalFactForComparison(existing)) !== canonicalJson(logicalFactForComparison(fact))) {
|
|
1118
1123
|
console.warn(
|
|
1119
|
-
`FactIndex: conflicting facts for id ${fact.id} \u2014 keeping
|
|
1124
|
+
`FactIndex: conflicting facts for id ${fact.id} \u2014 keeping ${describeFactForConflict(existing)}, skipping ${describeFactForConflict(fact)}`
|
|
1120
1125
|
);
|
|
1121
1126
|
}
|
|
1122
1127
|
return;
|
|
@@ -1278,11 +1283,20 @@ var FactIndex = class {
|
|
|
1278
1283
|
// ---------------------------------------------------------------------
|
|
1279
1284
|
tokens = {
|
|
1280
1285
|
list: () => this.byKind("token_definition"),
|
|
1281
|
-
byCategory: (category) => this.byKind("token_definition").filter((t) => t.category === category)
|
|
1286
|
+
byCategory: (category) => this.byKind("token_definition").filter((t) => t.category === category),
|
|
1287
|
+
symbolExists: (name) => this.tokenBySymbol.has(name),
|
|
1288
|
+
definitionForSymbol: (name) => this.tokenBySymbol.get(name)
|
|
1282
1289
|
};
|
|
1283
1290
|
// ---------------------------------------------------------------------
|
|
1284
1291
|
// Internals
|
|
1285
1292
|
// ---------------------------------------------------------------------
|
|
1293
|
+
indexTokenSymbols(fact) {
|
|
1294
|
+
const legacyScssAlias = fact.referenceFormat === "scss-var" && fact.name.startsWith("--") ? `$${fact.name.slice(2)}` : fact.referenceFormat === "scss-var" && fact.name.startsWith("$") ? `--${fact.name.slice(1)}` : void 0;
|
|
1295
|
+
for (const symbol of [fact.name, ...fact.sourceNames ?? [], legacyScssAlias]) {
|
|
1296
|
+
if (!symbol) continue;
|
|
1297
|
+
if (!this.tokenBySymbol.has(symbol)) this.tokenBySymbol.set(symbol, fact);
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1286
1300
|
byComponentOfKind(componentId2, kind) {
|
|
1287
1301
|
const ids = this.idsByComponent.get(logicalComponentId(componentId2));
|
|
1288
1302
|
if (!ids) return [];
|
|
@@ -2169,4 +2183,4 @@ export {
|
|
|
2169
2183
|
bridgeSourceViolation,
|
|
2170
2184
|
bridgeSourceViolations
|
|
2171
2185
|
};
|
|
2172
|
-
//# sourceMappingURL=chunk-
|
|
2186
|
+
//# sourceMappingURL=chunk-CBSNXFOD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/rules/fix-availability.ts","../src/codes/codes.ts","../src/facts/ids.ts","../src/facts/builders.ts","../src/package-identity-match.ts","../src/facts/fact-index.ts","../src/governance.ts","../src/facts/compile.ts","../src/codes/source-finding-bridge.ts"],"sourcesContent":["/**\n * Whether each implemented rule can emit a fix on at least one finding.\n *\n * Rule-backed FUI registry entries derive their `fixAvailable` value from this\n * map. A parity test keeps the keys in lock-step with `RULES`, so capability is\n * declared once instead of being repeated in rule and code registries.\n */\nexport const RULE_FIX_AVAILABLE = {\n \"components/unknown-prop\": false,\n \"components/forbidden-prop-value\": true,\n \"props/invalid-value\": true,\n \"imports/preferred-path\": true,\n \"components/preferred-component\": true,\n \"components/prefer-library\": true,\n \"styles/no-raw-color\": true,\n \"styles/no-raw-dimensions\": true,\n \"styles/no-raw-spacing\": true,\n \"styles/no-raw-typography\": true,\n \"tailwind/arbitrary-color\": false,\n \"tailwind/arbitrary-spacing\": true,\n \"tailwind/forbidden-palette\": true,\n \"tailwind/off-scale-spacing-token\": true,\n \"tailwind/raw-color-via-token\": false,\n \"tailwind/unknown-class\": false,\n \"tokens/require-dual-fallback\": true,\n \"tokens/css-vars-must-be-defined\": false,\n \"theme/no-theme-coupled-literal\": false,\n \"a11y/required-accessible-name\": false,\n \"composition/cardinality\": false,\n \"composition/co-occurrence\": false,\n} as const satisfies Readonly<Record<string, boolean>>;\n\nexport type RuleWithFixAvailability = keyof typeof RULE_FIX_AVAILABLE;\n","import type { Severity } from \"../severity.js\";\nimport { RULE_FIX_AVAILABLE, type RuleWithFixAvailability } from \"../rules/fix-availability.js\";\nexport type { Severity } from \"../severity.js\";\n\nexport const EXPLAIN_URL_BASE = \"https://usefragments.com/errors/\";\n\nexport type CodeCategory =\n | \"canonical-usage\"\n | \"tokens\"\n | \"a11y\"\n | \"states\"\n | \"composition\"\n | \"props\"\n | \"performance\"\n | \"safety\"\n | \"system\";\n\nexport type CodeLifecycle = \"experimental\" | \"stable\" | \"deprecated\";\n\nexport interface FuiCode {\n code: string;\n ruleId: string;\n category: CodeCategory;\n defaultSeverity: Severity;\n title: string;\n explainUrl: string;\n lifecycle: CodeLifecycle;\n replacedBy?: string;\n fixAvailable: boolean;\n evidenceRequired: boolean;\n}\n\nfunction code(entry: Omit<FuiCode, \"explainUrl\"> & { explainUrl?: never }): FuiCode {\n return {\n ...entry,\n explainUrl: `${EXPLAIN_URL_BASE}${entry.code}`,\n };\n}\n\ntype RuleCodeEntry = Omit<FuiCode, \"explainUrl\" | \"fixAvailable\" | \"ruleId\"> & {\n ruleId: RuleWithFixAvailability;\n};\n\nfunction ruleCode(entry: RuleCodeEntry): FuiCode {\n const { evidenceRequired, ...metadata } = entry;\n return code({\n ...metadata,\n fixAvailable: RULE_FIX_AVAILABLE[entry.ruleId],\n evidenceRequired,\n });\n}\n\nexport const CODES = [\n code({\n code: \"FUI1001\",\n ruleId: \"components/non-canonical\",\n category: \"canonical-usage\",\n defaultSeverity: \"serious\",\n title: \"Component should use the canonical primitive\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI1002\",\n ruleId: \"components/preferred-component\",\n category: \"canonical-usage\",\n defaultSeverity: \"serious\",\n title: \"Preferred component should be used\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI1003\",\n ruleId: \"imports/preferred-path\",\n category: \"canonical-usage\",\n defaultSeverity: \"moderate\",\n title: \"Import should use the preferred path\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI1004\",\n ruleId: \"components/prefer-library\",\n category: \"canonical-usage\",\n defaultSeverity: \"moderate\",\n title: \"Library component should be preferred\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI1005\",\n ruleId: \"components/allow\",\n category: \"canonical-usage\",\n defaultSeverity: \"serious\",\n title: \"Component is not in the allowed set\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI1006\",\n ruleId: \"components/deny\",\n category: \"canonical-usage\",\n defaultSeverity: \"serious\",\n title: \"Component is denied by policy\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI2001\",\n ruleId: \"tokens/require-design-tokens\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Design token is required\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI2002\",\n ruleId: \"tokens/allowed-prefixes\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Token prefix is not allowed\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2003\",\n ruleId: \"tokens/require-dual-fallback\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Token fallback is required\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2004\",\n ruleId: \"styles/no-raw-dimensions\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Raw dimension should use a token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2005\",\n ruleId: \"styles/no-raw-color\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Raw color should use a token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2006\",\n ruleId: \"styles/no-raw-spacing\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Raw spacing should use the scale\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2007\",\n ruleId: \"tailwind/arbitrary-color\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind arbitrary color should use a token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2008\",\n ruleId: \"tailwind/arbitrary-spacing\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind arbitrary spacing should use the scale\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2009\",\n ruleId: \"tailwind/forbidden-palette\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind palette is forbidden\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2010\",\n ruleId: \"tailwind/raw-color-via-token\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind color should use a resolved token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2011\",\n ruleId: \"tailwind/off-scale-spacing-token\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind spacing token is off scale\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2012\",\n ruleId: \"tailwind/unknown-class\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind class is unknown\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI2013\",\n ruleId: \"brand/enforce-seeds\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Brand seed token is required\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2014\",\n ruleId: \"theme/no-theme-coupled-literal\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Theme-coupled literal should use a semantic token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2015\",\n ruleId: \"tokens/css-vars-must-be-defined\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"CSS variable is not in the contract vocabulary\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2016\",\n ruleId: \"styles/no-raw-typography\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Raw typography should use a token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI3001\",\n ruleId: \"a11y/required-accessible-name\",\n category: \"a11y\",\n defaultSeverity: \"serious\",\n title: \"Accessible name is required\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI3002\",\n ruleId: \"a11y/standard\",\n category: \"a11y\",\n defaultSeverity: \"serious\",\n title: \"Accessibility standard failed\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI5001\",\n ruleId: \"components/required-children\",\n category: \"composition\",\n defaultSeverity: \"serious\",\n title: \"Required child component is missing\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI5002\",\n ruleId: \"components/canonical-usage\",\n category: \"composition\",\n defaultSeverity: \"serious\",\n title: \"Component should use canonical composition\",\n lifecycle: \"deprecated\",\n replacedBy: \"FUI1001\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI5003\",\n ruleId: \"composition/cardinality\",\n category: \"composition\",\n defaultSeverity: \"moderate\",\n title: \"Too many of a component in one region\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI5004\",\n ruleId: \"composition/co-occurrence\",\n category: \"composition\",\n defaultSeverity: \"moderate\",\n title: \"Required companion component is missing from the region\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI6001\",\n ruleId: \"props/unknown\",\n category: \"props\",\n defaultSeverity: \"moderate\",\n title: \"Prop is unknown\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI6002\",\n ruleId: \"props/invalid-value\",\n category: \"props\",\n defaultSeverity: \"serious\",\n title: \"Prop value is invalid\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI6003\",\n ruleId: \"props/banned-pattern\",\n category: \"props\",\n defaultSeverity: \"serious\",\n title: \"Prop pattern is banned\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI6004\",\n ruleId: \"components/forbidden-prop-value\",\n category: \"props\",\n defaultSeverity: \"serious\",\n title: \"Prop value is forbidden\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI6005\",\n ruleId: \"components/unknown-prop\",\n category: \"props\",\n defaultSeverity: \"moderate\",\n title: \"Component prop is unknown\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8001\",\n ruleId: \"safety/block-event-handlers\",\n category: \"safety\",\n defaultSeverity: \"serious\",\n title: \"Event handler prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8002\",\n ruleId: \"safety/block-dangerous-props\",\n category: \"safety\",\n defaultSeverity: \"critical\",\n title: \"Dangerous prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8003\",\n ruleId: \"safety/block-controlled-props\",\n category: \"safety\",\n defaultSeverity: \"serious\",\n title: \"Controlled prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8004\",\n ruleId: \"safety/block-function-props\",\n category: \"safety\",\n defaultSeverity: \"serious\",\n title: \"Function prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8005\",\n ruleId: \"safety/block-internal-props\",\n category: \"safety\",\n defaultSeverity: \"critical\",\n title: \"Internal prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8006\",\n ruleId: \"safety/sanitize-hrefs\",\n category: \"safety\",\n defaultSeverity: \"critical\",\n title: \"Href must be sanitized\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI9001\",\n ruleId: \"unused-suppression\",\n category: \"system\",\n defaultSeverity: \"minor\",\n title: \"Suppression is unused\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI9002\",\n ruleId: \"expired-suppression\",\n category: \"system\",\n defaultSeverity: \"serious\",\n title: \"Suppression is expired\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI9003\",\n ruleId: \"missing-expiry\",\n category: \"system\",\n defaultSeverity: \"minor\",\n title: \"Suppression expiry is missing\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n] as const satisfies readonly FuiCode[];\n\nexport const byCode: ReadonlyMap<string, FuiCode> = new Map(\n CODES.map((entry) => [entry.code, entry])\n);\n\nexport const byRuleId: ReadonlyMap<string, FuiCode> = new Map(\n CODES.map((entry) => [entry.ruleId, entry])\n);\n\nexport function explainUrlForCode(code: string): string {\n return `${EXPLAIN_URL_BASE}${code}`;\n}\n","/**\n * Content-addressed fact IDs.\n *\n * A fact ID is a deterministic function of (kind, identity). Two runs over the\n * same inputs produce identical IDs; identity attribute order is irrelevant\n * because the payload is canonicalized before hashing.\n *\n * The hash is a 64-bit FNV-1a (computed as two 32-bit halves with different\n * seeds). It is not a cryptographic hash — fact IDs are integrity references\n * inside one build, not security tokens.\n */\n\nimport {\n authorOwnedImport,\n projectV1OwnedComponentId,\n projectV1OwnedImportIdentity,\n} from \"../package-identity.js\";\nimport type { ComponentId, FactId } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Canonical JSON\n// ---------------------------------------------------------------------------\n\nexport function canonicalJson(value: unknown): string {\n if (value === undefined) return \"null\";\n if (value === null || typeof value !== \"object\") return JSON.stringify(value);\n if (Array.isArray(value)) {\n return `[${value.map(canonicalJson).join(\",\")}]`;\n }\n const entries = Object.entries(value as Record<string, unknown>)\n .filter(([, v]) => v !== undefined)\n .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));\n return `{${entries.map(([k, v]) => `${JSON.stringify(k)}:${canonicalJson(v)}`).join(\",\")}}`;\n}\n\n// ---------------------------------------------------------------------------\n// 64-bit FNV-1a (two 32-bit halves with different seeds)\n// ---------------------------------------------------------------------------\n\nconst FNV_PRIME = 0x01000193;\nconst FNV_SEED_A = 0x811c9dc5;\nconst FNV_SEED_B = 0x9e3779b1;\n\nfunction fnv1a32(input: string, seed: number): number {\n let hash = seed >>> 0;\n for (let i = 0; i < input.length; i++) {\n const code = input.charCodeAt(i);\n hash ^= code & 0xff;\n hash = Math.imul(hash, FNV_PRIME) >>> 0;\n if (code > 0xff) {\n hash ^= (code >>> 8) & 0xff;\n hash = Math.imul(hash, FNV_PRIME) >>> 0;\n }\n }\n return hash >>> 0;\n}\n\nexport function hash64Hex(input: string): string {\n const a = fnv1a32(input, FNV_SEED_A);\n const b = fnv1a32(input, FNV_SEED_B);\n return a.toString(16).padStart(8, \"0\") + b.toString(16).padStart(8, \"0\");\n}\n\n// ---------------------------------------------------------------------------\n// IDs\n// ---------------------------------------------------------------------------\n\nexport function componentId(packageName: string, name: string): ComponentId {\n if (!packageName.length || !name.length) {\n throw new Error(\"componentId requires a non-empty packageName and name\");\n }\n return `${authorOwnedImport(packageName)}#${name}` as ComponentId;\n}\n\nexport function asComponentId(value: string): ComponentId {\n if (!value.includes(\"#\")) {\n throw new Error(`componentId must look like \"package#Name\", got \"${value}\"`);\n }\n return value as ComponentId;\n}\n\n/**\n * Compute a content-addressed fact ID. Identity is canonicalized so attribute\n * order is irrelevant.\n */\nexport function factId(kind: string, identity: Record<string, unknown>): FactId {\n const payload = canonicalJson({ k: kind, i: projectFactIdentityV1(kind, identity) });\n return `${kind}:${hash64Hex(payload)}` as FactId;\n}\n\n/**\n * Preserve the immutable v1 fact-id domain across the public package rename.\n * Projection is deliberately kind/key aware: arbitrary strings must not be\n * rewritten merely because they resemble one of our package names.\n */\nfunction projectFactIdentityV1(\n kind: string,\n identity: Record<string, unknown>\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(identity).map(([key, value]) => {\n if (key === \"componentId\" && typeof value === \"string\") {\n return [key, projectV1OwnedComponentId(value)];\n }\n if (\n kind === \"jsx_component_preferred\" &&\n (key === \"from\" || key === \"to\") &&\n typeof value === \"string\"\n ) {\n return [key, projectV1OwnedComponentId(value)];\n }\n if (\n kind === \"jsx_import_path_preferred\" &&\n (key === \"from\" || key === \"to\") &&\n typeof value === \"string\"\n ) {\n return [key, projectV1OwnedImportIdentity(value)];\n }\n if (kind === \"usage_import\" && key === \"source\" && typeof value === \"string\") {\n return [key, projectV1OwnedImportIdentity(value)];\n }\n return [key, value];\n })\n );\n}\n","/**\n * Fact builders — factory functions that compute the content-addressed ID\n * from each fact's identity attributes. Use these everywhere instead of hand-\n * rolling fact objects so the identity contract stays consistent.\n *\n * The \"identity\" of a fact is the subset of attributes that determines its\n * ID. Other attributes (e.g., `because`, `description`) can change without\n * changing the ID — same logical fact, refined payload.\n */\n\nimport type { GovernanceSeverity } from \"../governance.js\";\nimport { factId } from \"./ids.js\";\nimport type {\n A11yNameRequiredFact,\n CanonicalCandidateFact,\n CanonicalMappingFact,\n CanonicalReplacementFact,\n ClassNameDynamicFact,\n ClassNameDynamicReason,\n ClassNameLiteralFact,\n ClassNameOrigin,\n ComponentCapabilityFact,\n ComponentId,\n ComponentMetadataFact,\n FactLocation,\n GovernanceRuleConfigFact,\n JsxComponentPreferredFact,\n JsxImportPathPreferredFact,\n JsxInlineStyleForbiddenRawFact,\n ContractTokenFact,\n JsxUnknownPropsForbiddenFact,\n PropMetadataFact,\n PropValueAvoidedFact,\n PropValueForbiddenFact,\n ScaleFact,\n ScaleValueFact,\n StructuralConfidenceFact,\n StyleCssVarsMustBeDefinedFact,\n StyleDeclarationFact,\n StyleFontSizeScaleFact,\n StylePropertyScaleFact,\n StyleRawColorForbiddenFact,\n StyleRawDimensionForbiddenFact,\n StyleUnsupportedFact,\n UnsupportedStyleReason,\n TailwindPaletteAllowFact,\n TailwindPaletteDenyFact,\n TailwindUnknownClassEnabledFact,\n TailwindClassFact,\n TailwindModifier,\n TailwindResolvedValue,\n TailwindTokenResolvedFact,\n TailwindValue,\n ThemeDeclarationFact,\n TokenDefinitionFact,\n UsageComponentFact,\n UsageImportFact,\n UsageInlineStyleFact,\n UsageNodeFact,\n UsagePropResolvedFact,\n UsageTextChildFact,\n FactId,\n} from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Component facts\n// ---------------------------------------------------------------------------\n\nexport function makeComponentMetadataFact(input: {\n componentId: ComponentId;\n name: string;\n description?: string;\n category?: string;\n filePath?: string;\n}): ComponentMetadataFact {\n return {\n id: factId(\"component\", { componentId: input.componentId }),\n kind: \"component\",\n componentId: input.componentId,\n name: input.name,\n description: input.description,\n category: input.category,\n filePath: input.filePath,\n };\n}\n\nexport function makeComponentCapabilityFact(input: {\n componentId: ComponentId;\n capability: string;\n}): ComponentCapabilityFact {\n return {\n id: factId(\"component_capability\", {\n componentId: input.componentId,\n capability: input.capability,\n }),\n kind: \"component_capability\",\n componentId: input.componentId,\n capability: input.capability,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Classifier facts\n// ---------------------------------------------------------------------------\n\nexport function makeCanonicalCandidateFact(input: {\n componentId: ComponentId;\n canonical: string;\n confidence: number;\n band: CanonicalCandidateFact[\"band\"];\n location?: FactLocation;\n classifierVersion: string;\n vocabVersion: string;\n evidence: unknown[];\n userConfirmed?: boolean;\n}): CanonicalCandidateFact {\n return {\n id: factId(\"canonical_candidate\", {\n componentId: input.componentId,\n canonical: input.canonical,\n classifierVersion: input.classifierVersion,\n vocabVersion: input.vocabVersion,\n }),\n kind: \"canonical_candidate\",\n componentId: input.componentId,\n canonical: input.canonical,\n confidence: input.confidence,\n band: input.band,\n location: input.location,\n classifierVersion: input.classifierVersion,\n vocabVersion: input.vocabVersion,\n evidence: input.evidence,\n userConfirmed: input.userConfirmed,\n };\n}\n\nexport function makeCanonicalMappingFact(input: {\n componentId: ComponentId;\n canonical: string;\n status: CanonicalMappingFact[\"status\"];\n confidence: number;\n location?: FactLocation;\n}): CanonicalMappingFact {\n return {\n id: factId(\"canonical_mapping\", {\n componentId: input.componentId,\n canonical: input.canonical,\n }),\n kind: \"canonical_mapping\",\n componentId: input.componentId,\n canonical: input.canonical,\n status: input.status,\n confidence: input.confidence,\n location: input.location,\n };\n}\n\nexport function makeStructuralConfidenceFact(input: {\n componentId: ComponentId;\n canonical: string;\n confidence: number;\n signalCount: number;\n location?: FactLocation;\n}): StructuralConfidenceFact {\n return {\n id: factId(\"structural_confidence\", {\n componentId: input.componentId,\n canonical: input.canonical,\n }),\n kind: \"structural_confidence\",\n componentId: input.componentId,\n canonical: input.canonical,\n confidence: input.confidence,\n signalCount: input.signalCount,\n location: input.location,\n };\n}\n\nexport function makeCanonicalReplacementFact(input: {\n componentId: ComponentId;\n canonical: string;\n importPath?: string;\n componentName?: string;\n confidence: number;\n location?: FactLocation;\n}): CanonicalReplacementFact {\n return {\n id: factId(\"canonical_replacement\", {\n componentId: input.componentId,\n canonical: input.canonical,\n }),\n kind: \"canonical_replacement\",\n componentId: input.componentId,\n canonical: input.canonical,\n importPath: input.importPath,\n componentName: input.componentName,\n confidence: input.confidence,\n location: input.location,\n };\n}\n\nexport function makePropMetadataFact(input: {\n componentId: ComponentId;\n prop: string;\n type: string;\n values?: string[];\n required: boolean;\n default?: unknown;\n description?: string;\n}): PropMetadataFact {\n return {\n id: factId(\"prop_metadata\", {\n componentId: input.componentId,\n prop: input.prop,\n }),\n kind: \"prop_metadata\",\n componentId: input.componentId,\n prop: input.prop,\n type: input.type,\n values: input.values,\n required: input.required,\n default: input.default,\n description: input.description,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Component-scoped policy facts\n// ---------------------------------------------------------------------------\n\nexport function makePropValueAvoidedFact(input: {\n componentId: ComponentId;\n prop: string;\n value: unknown;\n because: string;\n suggest?: string;\n severity: GovernanceSeverity;\n}): PropValueAvoidedFact {\n return {\n id: factId(\"prop_value_avoided\", {\n componentId: input.componentId,\n prop: input.prop,\n value: input.value,\n }),\n kind: \"prop_value_avoided\",\n componentId: input.componentId,\n prop: input.prop,\n value: input.value,\n because: input.because,\n suggest: input.suggest,\n severity: input.severity,\n };\n}\n\nexport function makePropValueForbiddenFact(input: {\n componentId: ComponentId;\n prop: string;\n value: unknown;\n pathPattern?: string;\n because: string;\n replaceWith?: unknown;\n severity: GovernanceSeverity;\n}): PropValueForbiddenFact {\n return {\n id: factId(\"prop_value_forbidden\", {\n componentId: input.componentId,\n prop: input.prop,\n value: input.value,\n pathPattern: input.pathPattern,\n }),\n kind: \"prop_value_forbidden\",\n componentId: input.componentId,\n prop: input.prop,\n value: input.value,\n pathPattern: input.pathPattern,\n because: input.because,\n replaceWith: input.replaceWith,\n severity: input.severity,\n };\n}\n\nexport function makeA11yNameRequiredFact(input: {\n componentId: ComponentId;\n because: string;\n severity: GovernanceSeverity;\n}): A11yNameRequiredFact {\n return {\n id: factId(\"a11y_name_required\", { componentId: input.componentId }),\n kind: \"a11y_name_required\",\n componentId: input.componentId,\n because: input.because,\n severity: input.severity,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Global policy facts\n// ---------------------------------------------------------------------------\n\nexport function makeScaleFact(input: {\n name: string;\n unit: \"px\" | \"rem\";\n rootFontSizePx?: number;\n emBasePx?: number;\n}): ScaleFact {\n return {\n id: factId(\"scale\", { name: input.name }),\n kind: \"scale\",\n name: input.name,\n unit: input.unit,\n ...(input.rootFontSizePx === undefined ? {} : { rootFontSizePx: input.rootFontSizePx }),\n ...(input.emBasePx === undefined ? {} : { emBasePx: input.emBasePx }),\n };\n}\n\nexport function makeScaleValueFact(input: { scale: string; value: number }): ScaleValueFact {\n return {\n id: factId(\"scale_value\", { scale: input.scale, value: input.value }),\n kind: \"scale_value\",\n scale: input.scale,\n value: input.value,\n };\n}\n\nexport function makeStyleRawColorForbiddenFact(input: {\n except: string[];\n prefer: \"token\" | \"css-variable\";\n severity: GovernanceSeverity;\n}): StyleRawColorForbiddenFact {\n return {\n id: factId(\"style_raw_color_forbidden\", {}),\n kind: \"style_raw_color_forbidden\",\n except: [...input.except],\n prefer: input.prefer,\n severity: input.severity,\n };\n}\n\nexport function makeStyleRawDimensionForbiddenFact(input: {\n appliesTo: string[];\n prefer: \"token\" | \"css-variable\";\n severity: GovernanceSeverity;\n}): StyleRawDimensionForbiddenFact {\n return {\n id: factId(\"style_raw_dimension_forbidden\", {}),\n kind: \"style_raw_dimension_forbidden\",\n appliesTo: [...input.appliesTo],\n prefer: input.prefer,\n severity: input.severity,\n };\n}\n\nexport function makeStylePropertyScaleFact(input: {\n property: string;\n scale: string;\n severity: GovernanceSeverity;\n}): StylePropertyScaleFact {\n return {\n id: factId(\"style_property_scale\", { property: input.property }),\n kind: \"style_property_scale\",\n property: input.property,\n scale: input.scale,\n severity: input.severity,\n };\n}\n\nexport function makeStyleFontSizeScaleFact(input: {\n scale: string;\n severity: GovernanceSeverity;\n}): StyleFontSizeScaleFact {\n return {\n id: factId(\"style_font_size_scale\", {}),\n kind: \"style_font_size_scale\",\n scale: input.scale,\n severity: input.severity,\n };\n}\n\nexport function makeStyleCssVarsMustBeDefinedFact(input: {\n severity: GovernanceSeverity;\n}): StyleCssVarsMustBeDefinedFact {\n return {\n id: factId(\"style_css_vars_must_be_defined\", {}),\n kind: \"style_css_vars_must_be_defined\",\n severity: input.severity,\n };\n}\n\nexport function makeContractTokenFact(input: { name: string }): ContractTokenFact {\n const name = input.name.startsWith(\"--\") ? input.name : `--${input.name}`;\n return {\n id: factId(\"contract_token\", { name }),\n kind: \"contract_token\",\n name,\n };\n}\n\nexport function makeJsxUnknownPropsForbiddenFact(input: {\n severity: GovernanceSeverity;\n}): JsxUnknownPropsForbiddenFact {\n return {\n id: factId(\"jsx_unknown_props_forbidden\", {}),\n kind: \"jsx_unknown_props_forbidden\",\n severity: input.severity,\n };\n}\n\nexport function makeJsxInlineStyleForbiddenRawFact(input: {\n property: string;\n severity: GovernanceSeverity;\n}): JsxInlineStyleForbiddenRawFact {\n return {\n id: factId(\"jsx_inline_style_forbidden_raw\", { property: input.property }),\n kind: \"jsx_inline_style_forbidden_raw\",\n property: input.property,\n severity: input.severity,\n };\n}\n\nexport function makeJsxImportPathPreferredFact(input: {\n from: string;\n to: string;\n imported?: string;\n because?: string;\n severity: GovernanceSeverity;\n}): JsxImportPathPreferredFact {\n return {\n id: factId(\"jsx_import_path_preferred\", {\n from: input.from,\n to: input.to,\n imported: input.imported,\n }),\n kind: \"jsx_import_path_preferred\",\n from: input.from,\n to: input.to,\n imported: input.imported,\n because: input.because,\n severity: input.severity,\n };\n}\n\nexport function makeJsxComponentPreferredFact(input: {\n from: ComponentId;\n to: ComponentId;\n because?: string;\n severity: GovernanceSeverity;\n}): JsxComponentPreferredFact {\n return {\n id: factId(\"jsx_component_preferred\", {\n from: input.from,\n to: input.to,\n }),\n kind: \"jsx_component_preferred\",\n from: input.from,\n to: input.to,\n because: input.because,\n severity: input.severity,\n };\n}\n\nexport function makeTokenDefinitionFact(input: {\n name: string;\n value: string;\n location?: TokenDefinitionFact[\"location\"];\n category?: TokenDefinitionFact[\"category\"];\n referenceFormat?: TokenDefinitionFact[\"referenceFormat\"];\n sourceNames?: TokenDefinitionFact[\"sourceNames\"];\n}): TokenDefinitionFact {\n return {\n id: factId(\"token_definition\", { name: input.name }),\n kind: \"token_definition\",\n name: input.name,\n value: input.value,\n ...(input.location ? { location: input.location } : {}),\n category: input.category,\n referenceFormat: input.referenceFormat,\n ...(input.sourceNames?.length ? { sourceNames: [...input.sourceNames] } : {}),\n };\n}\n\nexport function makeTailwindPaletteAllowFact(input: {\n patterns: string[];\n severity: GovernanceSeverity;\n}): TailwindPaletteAllowFact {\n return {\n id: factId(\"tailwind_palette_allow\", {}),\n kind: \"tailwind_palette_allow\",\n patterns: [...input.patterns],\n severity: input.severity,\n };\n}\n\nexport function makeTailwindPaletteDenyFact(input: {\n patterns: string[];\n severity: GovernanceSeverity;\n}): TailwindPaletteDenyFact {\n return {\n id: factId(\"tailwind_palette_deny\", {}),\n kind: \"tailwind_palette_deny\",\n patterns: [...input.patterns],\n severity: input.severity,\n };\n}\n\nexport function makeTailwindUnknownClassEnabledFact(input: {\n severity: GovernanceSeverity;\n}): TailwindUnknownClassEnabledFact {\n return {\n id: factId(\"tailwind_unknown_class_enabled\", {}),\n kind: \"tailwind_unknown_class_enabled\",\n severity: input.severity,\n };\n}\n\nexport function makeGovernanceRuleConfigFact(input: {\n ruleId: string;\n enabled: boolean;\n severity?: GovernanceSeverity;\n options?: Record<string, unknown>;\n}): GovernanceRuleConfigFact {\n return {\n id: factId(\"governance_rule_config\", { ruleId: input.ruleId }),\n kind: \"governance_rule_config\",\n ruleId: input.ruleId,\n enabled: input.enabled,\n severity: input.severity,\n options: input.options,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Usage facts\n// ---------------------------------------------------------------------------\n\nexport function makeUsageNodeFact(input: {\n file: string;\n nodePath: string;\n element: string;\n role?: string;\n interactive?: boolean;\n location: FactLocation;\n}): UsageNodeFact {\n return {\n // Identity is structural (file + nodePath + element) only — the normalized\n // semantics (role/interactive) are evidence carried on the fact, never part\n // of its ID, so adding them never perturbs existing fact identities.\n id: factId(\"usage_node\", {\n file: input.file,\n nodePath: input.nodePath,\n element: input.element,\n }),\n kind: \"usage_node\",\n file: input.file,\n nodePath: input.nodePath,\n element: input.element,\n ...(input.role !== undefined ? { role: input.role } : {}),\n ...(input.interactive ? { interactive: true } : {}),\n location: input.location,\n };\n}\n\nexport function makeUsageComponentFact(input: {\n nodeId: FactId;\n componentId: ComponentId;\n}): UsageComponentFact {\n return {\n id: factId(\"usage_component\", {\n nodeId: input.nodeId,\n componentId: input.componentId,\n }),\n kind: \"usage_component\",\n nodeId: input.nodeId,\n componentId: input.componentId,\n };\n}\n\nexport function makeUsageImportFact(input: {\n file: string;\n local: string;\n imported: string;\n source: string;\n namespace?: boolean;\n location: FactLocation;\n}): UsageImportFact {\n return {\n id: factId(\"usage_import\", {\n file: input.file,\n local: input.local,\n imported: input.imported,\n source: input.source,\n }),\n kind: \"usage_import\",\n file: input.file,\n local: input.local,\n imported: input.imported,\n source: input.source,\n namespace: input.namespace,\n location: input.location,\n };\n}\n\nexport function makeUsagePropResolvedFact(input: {\n nodeId: FactId;\n prop: string;\n resolution: \"static\" | \"dynamic\" | \"spread\" | \"jsx\";\n value?: unknown;\n location?: FactLocation;\n}): UsagePropResolvedFact {\n return {\n id: factId(\"usage_prop_resolved\", { nodeId: input.nodeId, prop: input.prop }),\n kind: \"usage_prop_resolved\",\n nodeId: input.nodeId,\n prop: input.prop,\n resolution: input.resolution,\n value: input.value,\n location: input.location,\n };\n}\n\nexport function makeUsageInlineStyleFact(input: {\n nodeId: FactId;\n property: string;\n valueKind: \"static\" | \"number\" | \"css-variable\" | \"dynamic-raw\";\n value: string;\n}): UsageInlineStyleFact {\n return {\n id: factId(\"usage_inline_style\", {\n nodeId: input.nodeId,\n property: input.property,\n }),\n kind: \"usage_inline_style\",\n nodeId: input.nodeId,\n property: input.property,\n valueKind: input.valueKind,\n value: input.value,\n };\n}\n\nexport function makeUsageTextChildFact(input: {\n nodeId: FactId;\n text: string;\n index: number;\n}): UsageTextChildFact {\n return {\n id: factId(\"usage_text_child\", { nodeId: input.nodeId, index: input.index }),\n kind: \"usage_text_child\",\n nodeId: input.nodeId,\n text: input.text,\n index: input.index,\n };\n}\n\nexport function makeClassNameLiteralFact(input: {\n file: string;\n nodeId: FactId;\n attr: string;\n classes: string[];\n origin: ClassNameOrigin;\n originPath: string;\n location: FactLocation;\n}): ClassNameLiteralFact {\n return {\n id: factId(\"classname_literal\", {\n nodeId: input.nodeId,\n attr: input.attr,\n origin: input.origin,\n originPath: input.originPath,\n }),\n kind: \"classname_literal\",\n file: input.file,\n nodeId: input.nodeId,\n attr: input.attr,\n classes: [...input.classes],\n origin: input.origin,\n originPath: input.originPath,\n location: input.location,\n };\n}\n\nexport function makeClassNameDynamicFact(input: {\n file: string;\n nodeId: FactId;\n attr: string;\n reason: ClassNameDynamicReason;\n snippet: string;\n originPath: string;\n location: FactLocation;\n}): ClassNameDynamicFact {\n return {\n id: factId(\"classname_dynamic\", {\n nodeId: input.nodeId,\n attr: input.attr,\n reason: input.reason,\n originPath: input.originPath,\n }),\n kind: \"classname_dynamic\",\n file: input.file,\n nodeId: input.nodeId,\n attr: input.attr,\n reason: input.reason,\n snippet: input.snippet,\n originPath: input.originPath,\n location: input.location,\n };\n}\n\nexport function makeTailwindClassFact(input: {\n file: string;\n nodeId: FactId;\n raw: string;\n originPath: string;\n prefix: string | null;\n modifiers: TailwindModifier[];\n important: boolean;\n negative: boolean;\n utility: string;\n value: TailwindValue;\n location: FactLocation;\n}): TailwindClassFact {\n return {\n id: factId(\"tailwind_class\", {\n nodeId: input.nodeId,\n originPath: input.originPath,\n }),\n kind: \"tailwind_class\",\n file: input.file,\n nodeId: input.nodeId,\n raw: input.raw,\n originPath: input.originPath,\n prefix: input.prefix,\n modifiers: input.modifiers.map((m) => ({ ...m })),\n important: input.important,\n negative: input.negative,\n utility: input.utility,\n value: { ...input.value },\n location: input.location,\n };\n}\n\nexport function makeThemeDeclarationFact(input: {\n file: string;\n name: string;\n value: string;\n declarationPath: string;\n inline: boolean;\n flavor: ThemeDeclarationFact[\"flavor\"];\n location: FactLocation;\n}): ThemeDeclarationFact {\n return {\n id: factId(\"theme_declaration\", {\n file: input.file,\n name: input.name,\n declarationPath: input.declarationPath,\n }),\n kind: \"theme_declaration\",\n file: input.file,\n name: input.name,\n value: input.value,\n declarationPath: input.declarationPath,\n inline: input.inline,\n flavor: input.flavor,\n location: input.location,\n };\n}\n\nexport function makeTailwindTokenResolvedFact(input: {\n utility: string;\n token: string;\n resolved: TailwindResolvedValue;\n}): TailwindTokenResolvedFact {\n return {\n id: factId(\"tailwind_token_resolved\", {\n utility: input.utility,\n token: input.token,\n }),\n kind: \"tailwind_token_resolved\",\n utility: input.utility,\n token: input.token,\n resolved: { ...input.resolved },\n };\n}\n\nexport function makeStyleDeclarationFact(input: {\n file: string;\n selector: string;\n declarationPath: string;\n property: string;\n value: string;\n location: FactLocation;\n declaredTokenSource?: boolean;\n}): StyleDeclarationFact {\n return {\n id: factId(\"style_declaration\", {\n file: input.file,\n selector: input.selector,\n declarationPath: input.declarationPath,\n property: input.property,\n }),\n kind: \"style_declaration\",\n file: input.file,\n selector: input.selector,\n declarationPath: input.declarationPath,\n property: input.property,\n value: input.value,\n location: input.location,\n ...(input.declaredTokenSource ? { declaredTokenSource: true } : {}),\n };\n}\n\nexport function makeStyleUnsupportedFact(input: {\n file: string;\n source: \"css-in-js\";\n syntax: string;\n selector: string;\n declarationPath: string;\n property?: string;\n reason: UnsupportedStyleReason;\n location: FactLocation;\n}): StyleUnsupportedFact {\n return {\n id: factId(\"style_unsupported\", {\n file: input.file,\n source: input.source,\n syntax: input.syntax,\n selector: input.selector,\n declarationPath: input.declarationPath,\n property: input.property ?? \"\",\n }),\n kind: \"style_unsupported\",\n file: input.file,\n source: input.source,\n syntax: input.syntax,\n selector: input.selector,\n declarationPath: input.declarationPath,\n property: input.property,\n reason: input.reason,\n location: input.location,\n };\n}\n","import {\n canonicalizeOwnedComponentId,\n canonicalizeOwnedImport,\n ownedImportEquivalents,\n} from \"./package-identity.js\";\n\n/** Equality for typed npm import fields; arbitrary strings remain exact. */\nexport function ownedImportsEqual(left: string, right: string): boolean {\n if (left === right) return true;\n if (ownedImportEquivalents(left).includes(right)) return true;\n return canonicalizeOwnedImport(left) === canonicalizeOwnedImport(right);\n}\n\n/**\n * Match an import against a configured package root/subpath while accepting\n * every signed legacy/current spelling of that root.\n */\nexport function ownedImportMatchesRoot(imported: string, configuredRoot: string): boolean {\n for (const equivalent of ownedImportEquivalents(configuredRoot)) {\n if (imported === equivalent || imported.startsWith(`${equivalent}/`)) {\n return true;\n }\n }\n\n const canonicalImported = canonicalizeOwnedImport(imported);\n const canonicalRoot = canonicalizeOwnedImport(configuredRoot);\n return canonicalImported === canonicalRoot || canonicalImported.startsWith(`${canonicalRoot}/`);\n}\n\n/** Equality for the package-name half of typed `package#Component` ids. */\nexport function ownedComponentIdsEqual(left: string, right: string): boolean {\n return canonicalizeOwnedComponentId(left) === canonicalizeOwnedComponentId(right);\n}\n","/**\n * In-memory index over Fact records.\n *\n * Rules consume the index, never raw fact arrays. The query surface is\n * intentionally narrow: components.byId / propsOf / propOf / capabilitiesOf,\n * and policy.<predicate>(componentId, opts?). This keeps Phase 5 rules pure\n * and content-addressed.\n */\n\nimport type {\n A11yNameRequiredFact,\n ComponentCapabilityFact,\n ComponentId,\n ComponentMetadataFact,\n Fact,\n FactId,\n FactKind,\n FactOfKind,\n GovernanceRuleConfigFact,\n JsxComponentPreferredFact,\n JsxImportPathPreferredFact,\n JsxInlineStyleForbiddenRawFact,\n JsxUnknownPropsForbiddenFact,\n PropMetadataFact,\n PropValueAvoidedFact,\n PropValueForbiddenFact,\n ScaleFact,\n ScaleValueFact,\n StyleCssVarsMustBeDefinedFact,\n StyleFontSizeScaleFact,\n StylePropertyScaleFact,\n StyleRawColorForbiddenFact,\n StyleRawDimensionForbiddenFact,\n TailwindPaletteAllowFact,\n TailwindPaletteDenyFact,\n TailwindUnknownClassEnabledFact,\n TokenDefinitionFact,\n} from \"./types.js\";\nimport { canonicalJson } from \"./ids.js\";\nimport { canonicalizeOwnedComponentId, canonicalizeOwnedImport } from \"../package-identity.js\";\nimport { ownedComponentIdsEqual, ownedImportsEqual } from \"../package-identity-match.js\";\n\nexport interface FactEvidence {\n factId: FactId;\n fact: Fact;\n}\n\ninterface FactWithComponent {\n componentId: ComponentId;\n}\n\nfunction hasComponentId(fact: Fact): fact is Fact & FactWithComponent {\n return \"componentId\" in fact && typeof (fact as FactWithComponent).componentId === \"string\";\n}\n\nfunction logicalComponentId(componentId: ComponentId): ComponentId {\n return canonicalizeOwnedComponentId(componentId) as ComponentId;\n}\n\nfunction logicalFactForComparison(fact: Fact): Record<string, unknown> {\n if (fact.kind === \"token_definition\") {\n const { location: _location, sourceNames: _sourceNames, ...logicalFact } = fact;\n return logicalFact;\n }\n if (fact.kind === \"jsx_import_path_preferred\") {\n return {\n ...fact,\n from: canonicalizeOwnedImport(fact.from),\n to: canonicalizeOwnedImport(fact.to),\n };\n }\n if (fact.kind === \"jsx_component_preferred\") {\n return {\n ...fact,\n from: logicalComponentId(fact.from),\n to: logicalComponentId(fact.to),\n };\n }\n if (fact.kind === \"usage_import\") {\n return { ...fact, source: canonicalizeOwnedImport(fact.source) };\n }\n if (hasComponentId(fact)) {\n return { ...fact, componentId: logicalComponentId(fact.componentId) };\n }\n return { ...fact };\n}\n\nfunction uniqueByLogicalIdentity<T>(items: readonly T[], keyOf: (item: T) => string): T[] {\n const seen = new Set<string>();\n return items.filter((item) => {\n const key = keyOf(item);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\n/**\n * Match a literal path against a simple glob pattern. `*` matches any run of\n * non-separator characters; `**` matches any run of characters including\n * separators.\n */\nexport function matchesGlob(path: string, pattern: string): boolean {\n const escaped = pattern.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const expanded = escaped\n .replace(/\\*\\*/g, \"::DOUBLE::\")\n .replace(/\\*/g, \"[^/]*\")\n .replace(/::DOUBLE::/g, \".*\");\n return new RegExp(`^${expanded}$`).test(path);\n}\n\nexport class FactIndex {\n private readonly facts = new Map<FactId, Fact>();\n private readonly idsByKind = new Map<FactKind, Set<FactId>>();\n private readonly idsByComponent = new Map<ComponentId, Set<FactId>>();\n private readonly tokenBySymbol = new Map<string, TokenDefinitionFact>();\n\n add(fact: Fact): void {\n if (fact.kind === \"token_definition\") {\n this.indexTokenSymbols(fact);\n }\n const existing = this.facts.get(fact.id);\n if (existing) {\n if (\n canonicalJson(logicalFactForComparison(existing)) !==\n canonicalJson(logicalFactForComparison(fact))\n ) {\n console.warn(\n `FactIndex: conflicting facts for id ${fact.id} — keeping ${describeFactForConflict(existing)}, skipping ${describeFactForConflict(fact)}`\n );\n }\n return;\n }\n this.facts.set(fact.id, fact);\n\n let byKind = this.idsByKind.get(fact.kind);\n if (!byKind) {\n byKind = new Set();\n this.idsByKind.set(fact.kind, byKind);\n }\n byKind.add(fact.id);\n\n if (hasComponentId(fact)) {\n const componentId = logicalComponentId(fact.componentId);\n let byComponent = this.idsByComponent.get(componentId);\n if (!byComponent) {\n byComponent = new Set();\n this.idsByComponent.set(componentId, byComponent);\n }\n byComponent.add(fact.id);\n }\n }\n\n addMany(facts: Iterable<Fact>): void {\n for (const fact of facts) this.add(fact);\n }\n\n get(id: FactId): Fact | undefined {\n return this.facts.get(id);\n }\n\n has(id: FactId): boolean {\n return this.facts.has(id);\n }\n\n size(): number {\n return this.facts.size;\n }\n\n all(): Fact[] {\n return [...this.facts.values()];\n }\n\n byKind<K extends FactKind>(kind: K): Array<FactOfKind<K>> {\n const ids = this.idsByKind.get(kind);\n if (!ids) return [];\n const out: FactOfKind<K>[] = [];\n for (const id of ids) {\n const fact = this.facts.get(id);\n if (fact && fact.kind === kind) out.push(fact as FactOfKind<K>);\n }\n return out;\n }\n\n /**\n * Resolve evidence for a list of fact IDs. Throws if any ID is missing —\n * findings must never reference facts that aren't in the index.\n */\n evidence(ids: readonly FactId[]): FactEvidence[] {\n const missing: FactId[] = [];\n const out: FactEvidence[] = [];\n for (const id of ids) {\n const fact = this.facts.get(id);\n if (!fact) {\n missing.push(id);\n continue;\n }\n out.push({ factId: id, fact });\n }\n if (missing.length) {\n throw new Error(`FactIndex.evidence: missing facts in index: ${missing.join(\", \")}`);\n }\n return out;\n }\n\n // ---------------------------------------------------------------------\n // Component queries\n // ---------------------------------------------------------------------\n\n components = {\n list: (): ComponentMetadataFact[] =>\n uniqueByLogicalIdentity(this.byKind(\"component\"), (fact) =>\n canonicalJson({\n ...logicalFactForComparison(fact),\n id: undefined,\n })\n ),\n byId: (componentId: ComponentId): ComponentMetadataFact | undefined =>\n this.byComponentOfKind<ComponentMetadataFact>(componentId, \"component\")[0],\n propsOf: (componentId: ComponentId): PropMetadataFact[] =>\n this.byComponentOfKind<PropMetadataFact>(componentId, \"prop_metadata\"),\n propOf: (componentId: ComponentId, prop: string): PropMetadataFact | undefined =>\n this.components.propsOf(componentId).find((p) => p.prop === prop),\n capabilitiesOf: (componentId: ComponentId): ComponentCapabilityFact[] =>\n this.byComponentOfKind<ComponentCapabilityFact>(componentId, \"component_capability\"),\n };\n\n // ---------------------------------------------------------------------\n // Policy queries\n // ---------------------------------------------------------------------\n\n policy = {\n forbiddenPropValues: (\n componentId: ComponentId,\n opts: { prop?: string; path?: string; value?: unknown } = {}\n ): PropValueForbiddenFact[] => {\n const all = this.byComponentOfKind<PropValueForbiddenFact>(\n componentId,\n \"prop_value_forbidden\"\n );\n return all.filter((fact) => {\n if (opts.prop !== undefined && fact.prop !== opts.prop) return false;\n if (opts.value !== undefined && fact.value !== opts.value) return false;\n if (opts.path !== undefined && fact.pathPattern) {\n if (!matchesGlob(opts.path, fact.pathPattern)) return false;\n }\n return true;\n });\n },\n\n avoidedPropValues: (\n componentId: ComponentId,\n opts: { prop?: string; value?: unknown } = {}\n ): PropValueAvoidedFact[] => {\n const all = this.byComponentOfKind<PropValueAvoidedFact>(componentId, \"prop_value_avoided\");\n return all.filter((fact) => {\n if (opts.prop !== undefined && fact.prop !== opts.prop) return false;\n if (opts.value !== undefined && fact.value !== opts.value) return false;\n return true;\n });\n },\n\n a11yNameRequired: (componentId: ComponentId): A11yNameRequiredFact | undefined =>\n this.byComponentOfKind<A11yNameRequiredFact>(componentId, \"a11y_name_required\")[0],\n\n scales: (): ScaleFact[] => this.byKind(\"scale\"),\n\n scale: (name: string): ScaleFact | undefined =>\n this.byKind(\"scale\").find((s) => s.name === name),\n\n scaleValues: (name: string): ScaleValueFact[] =>\n this.byKind(\"scale_value\").filter((v) => v.scale === name),\n\n rawColorPolicy: (): StyleRawColorForbiddenFact | undefined =>\n this.byKind(\"style_raw_color_forbidden\")[0],\n\n rawDimensionPolicy: (): StyleRawDimensionForbiddenFact | undefined =>\n this.byKind(\"style_raw_dimension_forbidden\")[0],\n\n propertyScale: (property: string): StylePropertyScaleFact | undefined =>\n this.byKind(\"style_property_scale\").find((p) => p.property === property),\n\n fontSizeScale: (): StyleFontSizeScaleFact | undefined =>\n this.byKind(\"style_font_size_scale\")[0],\n\n cssVarsMustBeDefined: (): StyleCssVarsMustBeDefinedFact | undefined =>\n this.byKind(\"style_css_vars_must_be_defined\")[0],\n\n tailwindPaletteAllow: (): TailwindPaletteAllowFact | undefined =>\n this.byKind(\"tailwind_palette_allow\")[0],\n\n tailwindPaletteDeny: (): TailwindPaletteDenyFact | undefined =>\n this.byKind(\"tailwind_palette_deny\")[0],\n\n tailwindUnknownClassEnabled: (): TailwindUnknownClassEnabledFact | undefined =>\n this.byKind(\"tailwind_unknown_class_enabled\")[0],\n\n ruleConfig: (ruleId: string): GovernanceRuleConfigFact | undefined =>\n this.byKind(\"governance_rule_config\").find((fact) => fact.ruleId === ruleId),\n\n jsxUnknownPropsForbidden: (): JsxUnknownPropsForbiddenFact | undefined =>\n this.byKind(\"jsx_unknown_props_forbidden\")[0],\n\n jsxInlineStyleForbiddenRaw: (\n opts: { property?: string } = {}\n ): JsxInlineStyleForbiddenRawFact[] => {\n const all = this.byKind(\"jsx_inline_style_forbidden_raw\");\n return opts.property === undefined ? all : all.filter((f) => f.property === opts.property);\n },\n\n jsxImportPathPreferred: (\n opts: { from?: string; imported?: string } = {}\n ): JsxImportPathPreferredFact[] => {\n const all = uniqueByLogicalIdentity(this.byKind(\"jsx_import_path_preferred\"), (fact) =>\n canonicalJson({\n from: canonicalizeOwnedImport(fact.from),\n to: canonicalizeOwnedImport(fact.to),\n imported: fact.imported,\n because: fact.because,\n severity: fact.severity,\n })\n );\n return all.filter((fact) => {\n if (opts.from !== undefined && !ownedImportsEqual(fact.from, opts.from)) return false;\n if (opts.imported !== undefined && fact.imported !== opts.imported) return false;\n return true;\n });\n },\n\n jsxComponentPreferred: (opts: { from?: ComponentId } = {}): JsxComponentPreferredFact[] => {\n const all = uniqueByLogicalIdentity(this.byKind(\"jsx_component_preferred\"), (fact) =>\n canonicalJson({\n from: canonicalizeOwnedComponentId(fact.from),\n to: canonicalizeOwnedComponentId(fact.to),\n because: fact.because,\n severity: fact.severity,\n })\n );\n return opts.from === undefined\n ? all\n : all.filter((fact) => ownedComponentIdsEqual(fact.from, opts.from!));\n },\n };\n\n // ---------------------------------------------------------------------\n // Token registry queries\n // ---------------------------------------------------------------------\n\n tokens = {\n list: (): TokenDefinitionFact[] => this.byKind(\"token_definition\"),\n byCategory: (category: TokenDefinitionFact[\"category\"]): TokenDefinitionFact[] =>\n this.byKind(\"token_definition\").filter((t) => t.category === category),\n symbolExists: (name: string): boolean => this.tokenBySymbol.has(name),\n definitionForSymbol: (name: string): TokenDefinitionFact | undefined =>\n this.tokenBySymbol.get(name),\n };\n\n // ---------------------------------------------------------------------\n // Internals\n // ---------------------------------------------------------------------\n\n private indexTokenSymbols(fact: TokenDefinitionFact): void {\n const legacyScssAlias =\n fact.referenceFormat === \"scss-var\" && fact.name.startsWith(\"--\")\n ? `$${fact.name.slice(2)}`\n : fact.referenceFormat === \"scss-var\" && fact.name.startsWith(\"$\")\n ? `--${fact.name.slice(1)}`\n : undefined;\n for (const symbol of [fact.name, ...(fact.sourceNames ?? []), legacyScssAlias]) {\n if (!symbol) continue;\n if (!this.tokenBySymbol.has(symbol)) this.tokenBySymbol.set(symbol, fact);\n }\n }\n\n private byComponentOfKind<F extends Fact>(componentId: ComponentId, kind: FactKind): F[] {\n const ids = this.idsByComponent.get(logicalComponentId(componentId));\n if (!ids) return [];\n const out: F[] = [];\n const seen = new Set<string>();\n for (const id of ids) {\n const fact = this.facts.get(id);\n if (fact && fact.kind === kind) {\n const logicalFact = hasComponentId(fact)\n ? {\n ...fact,\n id: undefined,\n componentId: logicalComponentId(fact.componentId),\n }\n : { ...fact, id: undefined };\n const key = canonicalJson(logicalFact);\n if (seen.has(key)) continue;\n seen.add(key);\n out.push(fact as F);\n }\n }\n return out;\n }\n}\n\nfunction describeFactForConflict(fact: Fact): string {\n const parts = [`kind=${fact.kind}`];\n const maybeLocation = \"location\" in fact ? fact.location : undefined;\n if (maybeLocation && typeof maybeLocation === \"object\") {\n const loc = maybeLocation as { file?: unknown; line?: unknown; column?: unknown };\n if (typeof loc.file === \"string\") {\n const line = typeof loc.line === \"number\" ? `:${loc.line}` : \"\";\n const column = typeof loc.column === \"number\" ? `:${loc.column}` : \"\";\n parts.push(`location=${loc.file}${line}${column}`);\n }\n }\n if (\"nodePath\" in fact && typeof fact.nodePath === \"string\") {\n parts.push(`nodePath=${fact.nodePath}`);\n }\n if (\"element\" in fact && typeof fact.element === \"string\") {\n parts.push(`element=${fact.element}`);\n }\n return parts.join(\" \");\n}\n","import { z } from \"zod\";\nimport type {\n ComponentRelation,\n FragmentComponent,\n FragmentContract,\n FragmentExample,\n FragmentGuidance,\n FragmentMeta,\n FragmentProvenance,\n PropDefinition,\n} from \"./types.js\";\nimport { portableRepoPathError } from \"./config-paths.js\";\n\nexport const governanceSeveritySchema = z.enum([\"error\", \"warn\", \"info\"]);\nexport type GovernanceSeverity = z.infer<typeof governanceSeveritySchema>;\n\nexport const scaleGovernanceRecordSchema = z.object({\n kind: z.literal(\"scale\").default(\"scale\"),\n name: z.string().min(1).optional(),\n unit: z.enum([\"px\", \"rem\"]),\n values: z.array(z.number()),\n rootFontSizePx: z.number().positive().optional(),\n emBasePx: z.number().positive().optional(),\n});\n\nconst styleRawColorsForbidRecordSchema = z.object({\n kind: z.literal(\"style.rawColors.forbid\"),\n except: z.array(z.string()),\n prefer: z.enum([\"token\", \"css-variable\"]),\n severity: governanceSeveritySchema,\n});\n\nconst styleRawDimensionsForbidRecordSchema = z.object({\n kind: z.literal(\"style.rawDimensions.forbid\"),\n appliesTo: z.array(z.string().min(1)),\n prefer: z.enum([\"token\", \"css-variable\"]),\n severity: governanceSeveritySchema,\n});\n\nconst styleRawSpacingMustMatchScaleRecordSchema = z.object({\n kind: z.literal(\"style.rawSpacing.mustMatchScale\"),\n scale: z.string().min(1),\n appliesTo: z.array(z.string().min(1)),\n severity: governanceSeveritySchema,\n});\n\nconst styleFontSizeMustMatchScaleRecordSchema = z.object({\n kind: z.literal(\"style.fontSize.mustMatchScale\"),\n scale: z.string().min(1),\n severity: governanceSeveritySchema,\n});\n\nconst styleCssVarsMustBeDefinedRecordSchema = z.object({\n kind: z.literal(\"style.cssVars.mustBeDefined\"),\n severity: governanceSeveritySchema,\n});\n\nexport const globalStyleGovernanceRecordSchema = z.discriminatedUnion(\"kind\", [\n styleRawColorsForbidRecordSchema,\n styleRawDimensionsForbidRecordSchema,\n styleRawSpacingMustMatchScaleRecordSchema,\n styleFontSizeMustMatchScaleRecordSchema,\n styleCssVarsMustBeDefinedRecordSchema,\n]);\n\nconst jsxUnknownPropsForbidRecordSchema = z.object({\n kind: z.literal(\"jsx.unknownProps.forbid\"),\n severity: governanceSeveritySchema,\n});\n\nconst jsxInlineStyleForbidRawRecordSchema = z.object({\n kind: z.literal(\"jsx.inlineStyle.forbidRaw\"),\n properties: z.array(z.string().min(1)),\n severity: governanceSeveritySchema,\n});\n\nconst jsxImportPathPreferRecordSchema = z.object({\n kind: z.literal(\"jsx.importPath.prefer\"),\n from: z.string().min(1),\n to: z.string().min(1),\n imported: z.string().min(1).optional(),\n because: z.string().optional(),\n severity: governanceSeveritySchema,\n});\n\nconst jsxComponentPreferRecordSchema = z.object({\n kind: z.literal(\"jsx.component.prefer\"),\n from: z.string().min(1),\n to: z.string().min(1),\n because: z.string().optional(),\n severity: governanceSeveritySchema,\n});\n\nexport const globalJsxGovernanceRecordSchema = z.discriminatedUnion(\"kind\", [\n jsxUnknownPropsForbidRecordSchema,\n jsxInlineStyleForbidRawRecordSchema,\n jsxImportPathPreferRecordSchema,\n jsxComponentPreferRecordSchema,\n]);\n\nexport const globalGovernanceRecordSchema = z.discriminatedUnion(\"kind\", [\n scaleGovernanceRecordSchema,\n styleRawColorsForbidRecordSchema,\n styleRawDimensionsForbidRecordSchema,\n styleRawSpacingMustMatchScaleRecordSchema,\n styleFontSizeMustMatchScaleRecordSchema,\n styleCssVarsMustBeDefinedRecordSchema,\n jsxUnknownPropsForbidRecordSchema,\n jsxInlineStyleForbidRawRecordSchema,\n jsxImportPathPreferRecordSchema,\n jsxComponentPreferRecordSchema,\n]);\n\nconst componentCapabilityRecordSchema = z.object({\n kind: z.literal(\"capability\"),\n capability: z.string().min(1),\n});\n\nconst propValueAvoidRecordSchema = z.object({\n kind: z.literal(\"prop.value.avoid\"),\n prop: z.string().min(1),\n value: z.unknown(),\n because: z.string(),\n suggest: z.string().optional(),\n severity: governanceSeveritySchema,\n});\n\nconst propValueForbidRecordSchema = z.object({\n kind: z.literal(\"prop.value.forbid\"),\n prop: z.string().min(1),\n value: z.unknown(),\n when: z.object({ path: z.string().min(1).optional() }).optional(),\n because: z.string(),\n fix: z.object({ replaceWith: z.unknown() }).optional(),\n severity: governanceSeveritySchema,\n});\n\nconst a11yRequireNameRecordSchema = z.object({\n kind: z.literal(\"a11y.requireName\"),\n because: z.string(),\n severity: governanceSeveritySchema,\n});\n\nexport const componentGovernanceRecordSchema = z.discriminatedUnion(\"kind\", [\n componentCapabilityRecordSchema,\n propValueAvoidRecordSchema,\n propValueForbidRecordSchema,\n a11yRequireNameRecordSchema,\n]);\n\nexport const componentGovernanceRecordsSchema = z.array(componentGovernanceRecordSchema);\n\nconst componentPolicyMatchSchema = z\n .object({\n componentKey: z.string().min(1).optional(),\n componentId: z.string().min(1).optional(),\n publicRef: z.string().min(1).optional(),\n importPath: z.string().min(1).optional(),\n sourcePath: z.string().min(1).optional(),\n path: z.string().min(1).optional(),\n exportName: z.string().min(1).optional(),\n export: z.string().min(1).optional(),\n name: z.string().min(1).optional(),\n scope: z.enum([\"one\", \"all\"]).optional(),\n })\n .strict();\n\nconst componentPolicyRecordSchema = z\n .object({\n rules: componentGovernanceRecordsSchema,\n status: z.enum([\"active\", \"draft\", \"disabled\"]).optional(),\n })\n .strict();\n\nconst componentPolicyOverrideSchema = z\n .object({\n match: componentPolicyMatchSchema,\n rules: componentGovernanceRecordsSchema,\n status: z.enum([\"active\", \"draft\", \"disabled\"]).optional(),\n })\n .strict();\n\nconst canonicalSourcePathSchema = z\n .string()\n .min(1)\n .superRefine((value, ctx) => {\n const error = portableRepoPathError(value);\n if (error) {\n ctx.addIssue({ code: z.ZodIssueCode.custom, message: error });\n }\n });\n\nconst canonicalSourceRegistryHashSchema = z.string().regex(/^[0-9a-f]{64}$/);\n\nconst canonicalSourceSchema = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"npm\"),\n specifier: z.string().min(1),\n implementationPath: z.string().min(1).optional(),\n include: z.array(z.string().min(1)).optional(),\n exclude: z.array(z.string().min(1)).optional(),\n }),\n z.object({\n kind: z.literal(\"directory\"),\n path: z.string().min(1),\n include: z.array(z.string().min(1)).optional(),\n exclude: z.array(z.string().min(1)).optional(),\n }),\n z.object({\n kind: z.literal(\"registry\"),\n registryId: z.string().min(1),\n registryHash: canonicalSourceRegistryHashSchema.optional(),\n receiptPath: canonicalSourcePathSchema.default(\".fragments/registry-lock.json\"),\n installPath: canonicalSourcePathSchema,\n importPath: z.string().min(1).optional(),\n include: z.array(z.string().min(1)).optional(),\n exclude: z.array(z.string().min(1)).optional(),\n severity: governanceSeveritySchema.optional(),\n }),\n]);\n\nexport const governanceConfigSchema = z\n .object({\n extends: z.array(z.string()).optional(),\n severity: governanceSeveritySchema.optional(),\n rules: z.record(z.string(), z.unknown()).optional(),\n agents: z\n .record(\n z.string(),\n z\n .object({\n rules: z.record(z.string(), z.unknown()).optional(),\n })\n .passthrough()\n )\n .optional(),\n audit: z.object({}).passthrough().optional(),\n runners: z.record(z.string(), z.object({}).passthrough()).optional(),\n canonicalSources: z.array(canonicalSourceSchema).optional(),\n presets: z.array(z.string()).optional(),\n scales: z.record(z.string(), scaleGovernanceRecordSchema).optional(),\n styles: z.array(globalStyleGovernanceRecordSchema).optional(),\n jsx: z.array(globalJsxGovernanceRecordSchema).optional(),\n tailwind: z\n .object({\n palette: z\n .object({\n allow: z.array(z.string().min(1)).optional(),\n deny: z.array(z.string().min(1)).optional(),\n })\n .optional(),\n })\n .passthrough()\n .optional(),\n agent: z\n .object({\n repairOrder: z.array(z.string().min(1)).optional(),\n })\n .passthrough()\n .optional(),\n components: z.record(componentPolicyRecordSchema).optional(),\n overrides: z.array(componentPolicyOverrideSchema).optional(),\n ci: z\n .object({\n failOnWarnings: z.boolean().optional(),\n })\n .passthrough()\n .optional(),\n })\n .strict();\n\nexport type ScaleGovernanceRecord = z.infer<typeof scaleGovernanceRecordSchema>;\nexport type GlobalStyleGovernanceRecord = z.infer<typeof globalStyleGovernanceRecordSchema>;\nexport type GlobalJsxGovernanceRecord = z.infer<typeof globalJsxGovernanceRecordSchema>;\nexport type GlobalGovernanceRecord = z.infer<typeof globalGovernanceRecordSchema>;\nexport type ComponentGovernanceRecord = z.infer<typeof componentGovernanceRecordSchema>;\nexport type ComponentPolicyMatch = z.infer<typeof componentPolicyMatchSchema>;\nexport type ComponentPolicyRecord = z.infer<typeof componentPolicyRecordSchema>;\nexport type ComponentPolicyOverride = z.infer<typeof componentPolicyOverrideSchema>;\nexport type CanonicalSource = z.infer<typeof canonicalSourceSchema>;\n\nexport interface GovernanceConfig {\n extends?: string[];\n severity?: GovernanceSeverity;\n rules?: Record<string, unknown>;\n agents?: Record<string, { rules?: Record<string, unknown> }>;\n audit?: Record<string, unknown>;\n runners?: Record<string, Record<string, unknown>>;\n canonicalSources?: CanonicalSource[];\n presets?: string[];\n scales?: Record<string, ScaleGovernanceRecord>;\n styles?: GlobalStyleGovernanceRecord[];\n jsx?: GlobalJsxGovernanceRecord[];\n tailwind?: {\n palette?: {\n allow?: string[];\n deny?: string[];\n };\n [key: string]: unknown;\n };\n agent?: {\n repairOrder?: string[];\n [key: string]: unknown;\n };\n components?: Record<string, ComponentPolicyRecord>;\n overrides?: ComponentPolicyOverride[];\n ci?: {\n failOnWarnings?: boolean;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n}\n\ntype SeverityOption = {\n severity?: GovernanceSeverity;\n};\n\ntype PropContext = {\n path?: string;\n};\n\ntype NonNullish<T> = T extends null | undefined ? never : T;\n\nexport type GovernancePropValue<T> =\n NonNullish<T> extends string\n ? string extends NonNullish<T>\n ? string\n : NonNullish<T>\n : NonNullish<T> extends number\n ? number extends NonNullish<T>\n ? number\n : NonNullish<T>\n : NonNullish<T> extends boolean\n ? boolean extends NonNullish<T>\n ? boolean\n : NonNullish<T>\n : NonNullish<T>;\n\nexport type PropKey<TProps> = Extract<keyof TProps, string>;\n\nexport interface PropGovernanceOptions<TValue> extends SeverityOption {\n because?: string;\n suggest?: string;\n when?: PropContext;\n fix?: {\n replaceWith: GovernancePropValue<TValue>;\n };\n}\n\nexport interface PropGovernanceBuilder<TValue> {\n avoid(\n value: GovernancePropValue<TValue>,\n options?: Omit<PropGovernanceOptions<TValue>, \"fix\" | \"when\">\n ): ComponentGovernanceRecord;\n forbid(\n value: GovernancePropValue<TValue>,\n options?: PropGovernanceOptions<TValue>\n ): ComponentGovernanceRecord;\n}\n\nexport interface AccessibilityGovernanceBuilder {\n requireName(options?: SeverityOption & { because?: string }): ComponentGovernanceRecord;\n}\n\nexport interface ComponentGovernanceBuilder<TProps> {\n capability(capability: string): ComponentGovernanceRecord;\n prop<TKey extends PropKey<TProps>>(prop: TKey): PropGovernanceBuilder<TProps[TKey]>;\n accessibility(): AccessibilityGovernanceBuilder;\n}\n\nexport interface GovernedFragmentDefinition<\n TProps = unknown,\n TComponent extends FragmentComponent<TProps> = FragmentComponent<TProps>,\n> {\n component: TComponent;\n meta: FragmentMeta;\n guidance: FragmentGuidance;\n props?: Record<string, PropDefinition>;\n relations?: ComponentRelation[];\n examples?: FragmentExample[];\n composition?: {\n pattern?: \"compound\" | \"simple\" | \"controlled\" | \"wrapper\";\n subComponents?: string[];\n requiredChildren?: string[];\n commonPatterns?: string[];\n };\n contract?: FragmentContract;\n _provenance?: FragmentProvenance;\n govern?: (g: ComponentGovernanceBuilder<TProps>) => ComponentGovernanceRecord[];\n governance?: ComponentGovernanceRecord[];\n}\n\nexport type ResolvedGovernedFragmentDefinition<\n TProps = unknown,\n TComponent extends FragmentComponent<TProps> = FragmentComponent<TProps>,\n> = GovernedFragmentDefinition<TProps, TComponent> & {\n governance: ComponentGovernanceRecord[];\n};\n\nexport function createComponentGovernanceBuilder<TProps>(): ComponentGovernanceBuilder<TProps> {\n return {\n capability(capability) {\n return { kind: \"capability\", capability };\n },\n prop(prop) {\n return {\n avoid(value, options = {}) {\n return {\n kind: \"prop.value.avoid\",\n prop,\n value,\n because: options.because ?? \"\",\n suggest: options.suggest,\n severity: options.severity ?? \"warn\",\n };\n },\n forbid(value, options = {}) {\n return {\n kind: \"prop.value.forbid\",\n prop,\n value,\n when: options.when,\n because: options.because ?? \"\",\n fix: options.fix,\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n accessibility() {\n return {\n requireName(options = {}) {\n return {\n kind: \"a11y.requireName\",\n because: options.because ?? \"\",\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n };\n}\n\nexport function resolveComponentGovernance<TProps>(\n definition: GovernedFragmentDefinition<TProps>\n): ComponentGovernanceRecord[] {\n const builder = createComponentGovernanceBuilder<TProps>();\n const records = definition.govern ? definition.govern(builder) : (definition.governance ?? []);\n return componentGovernanceRecordsSchema.parse(records);\n}\n\nexport function normalizeGovernanceConfig<TConfig extends { govern?: GovernanceConfig }>(\n config: TConfig\n): TConfig {\n if (!config.govern?.scales) {\n return config;\n }\n\n const scales = Object.fromEntries(\n Object.entries(config.govern.scales).map(([name, scale]) => {\n if (!scale || typeof scale !== \"object\") {\n return [name, scale];\n }\n\n return [name, { ...scale, name: scale.name ?? name }];\n })\n );\n\n return {\n ...config,\n govern: {\n ...config.govern,\n scales,\n },\n };\n}\n\nexport const g = {\n scale: {\n px(values: readonly number[]): ScaleGovernanceRecord {\n return { kind: \"scale\", unit: \"px\", values: [...values] };\n },\n rem(values: readonly number[]): ScaleGovernanceRecord {\n return { kind: \"scale\", unit: \"rem\", values: [...values] };\n },\n },\n styles: {\n rawColors() {\n return {\n forbid(\n options: {\n except?: string[];\n prefer?: \"token\" | \"css-variable\";\n severity?: GovernanceSeverity;\n } = {}\n ): GlobalStyleGovernanceRecord {\n return {\n kind: \"style.rawColors.forbid\",\n except: options.except ?? [],\n prefer: options.prefer ?? \"token\",\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n rawSpacing() {\n return {\n mustMatchScale(\n scale: string,\n options: SeverityOption & { appliesTo?: string[] } = {}\n ): GlobalStyleGovernanceRecord {\n return {\n kind: \"style.rawSpacing.mustMatchScale\",\n scale,\n appliesTo: options.appliesTo ?? [],\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n fontSize() {\n return {\n mustMatchScale(scale: string, options: SeverityOption = {}): GlobalStyleGovernanceRecord {\n return {\n kind: \"style.fontSize.mustMatchScale\",\n scale,\n severity: options.severity ?? \"warn\",\n };\n },\n };\n },\n cssVars() {\n return {\n mustBeDefined(options: SeverityOption = {}): GlobalStyleGovernanceRecord {\n return {\n kind: \"style.cssVars.mustBeDefined\",\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n },\n jsx: {\n unknownProps() {\n return {\n forbid(options: SeverityOption = {}): GlobalJsxGovernanceRecord {\n return {\n kind: \"jsx.unknownProps.forbid\",\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n inlineStyle() {\n return {\n forbidRaw(\n properties: readonly string[],\n options: SeverityOption = {}\n ): GlobalJsxGovernanceRecord {\n return {\n kind: \"jsx.inlineStyle.forbidRaw\",\n properties: [...properties],\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n importPath() {\n return {\n prefer(\n from: string,\n to: string,\n options: SeverityOption & { imported?: string; because?: string } = {}\n ): GlobalJsxGovernanceRecord {\n return {\n kind: \"jsx.importPath.prefer\",\n from,\n to,\n imported: options.imported,\n because: options.because,\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n component() {\n return {\n prefer(\n from: string,\n to: string,\n options: SeverityOption & { because?: string } = {}\n ): GlobalJsxGovernanceRecord {\n return {\n kind: \"jsx.component.prefer\",\n from,\n to,\n because: options.because,\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n },\n component: createComponentGovernanceBuilder<Record<string, unknown>>(),\n};\n","/**\n * Compile facts from the existing IR.\n *\n * Two entry points:\n * - `compileGlobalGovernanceFacts(govern)` turns a `GovernanceConfig` into\n * scale + scale_value + style_* + jsx_* policy facts.\n * - `compileComponentFacts(componentId, fragment)` turns a governed\n * fragment definition (or a compiled fragment) into component metadata,\n * prop metadata, capability, and component-scoped policy facts.\n *\n * Both functions are pure and produce arrays sorted only by source order; the\n * caller is free to add them to a `FactIndex` in any order.\n */\n\nimport type {\n ComponentGovernanceRecord,\n GovernanceConfig,\n GovernedFragmentDefinition,\n ResolvedGovernedFragmentDefinition,\n} from \"../governance.js\";\nimport { resolveComponentGovernance } from \"../governance.js\";\nimport type { CompiledFragment, PropDefinition } from \"../compiled-types/index.js\";\nimport { asComponentId } from \"./ids.js\";\nimport {\n makeA11yNameRequiredFact,\n makeComponentCapabilityFact,\n makeComponentMetadataFact,\n makeGovernanceRuleConfigFact,\n makeJsxComponentPreferredFact,\n makeJsxInlineStyleForbiddenRawFact,\n makeJsxImportPathPreferredFact,\n makeJsxUnknownPropsForbiddenFact,\n makePropMetadataFact,\n makePropValueAvoidedFact,\n makePropValueForbiddenFact,\n makeScaleFact,\n makeScaleValueFact,\n makeStyleCssVarsMustBeDefinedFact,\n makeStyleFontSizeScaleFact,\n makeStylePropertyScaleFact,\n makeStyleRawColorForbiddenFact,\n makeStyleRawDimensionForbiddenFact,\n makeTailwindPaletteAllowFact,\n makeTailwindPaletteDenyFact,\n makeTailwindUnknownClassEnabledFact,\n} from \"./builders.js\";\nimport type { ComponentId, Fact, PolicyFact } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Global governance → facts\n// ---------------------------------------------------------------------------\n\nexport function compileGlobalGovernanceFacts(govern: GovernanceConfig | undefined): PolicyFact[] {\n if (!govern) return [];\n const out: PolicyFact[] = [];\n\n if (govern.scales) {\n for (const [name, scale] of Object.entries(govern.scales)) {\n out.push(\n makeScaleFact({\n name,\n unit: scale.unit,\n rootFontSizePx: scale.rootFontSizePx,\n emBasePx: scale.emBasePx,\n })\n );\n for (const value of scale.values) {\n out.push(makeScaleValueFact({ scale: name, value }));\n }\n }\n }\n\n if (govern.styles) {\n for (const style of govern.styles) {\n switch (style.kind) {\n case \"style.rawColors.forbid\":\n out.push(\n makeStyleRawColorForbiddenFact({\n except: style.except,\n prefer: style.prefer,\n severity: style.severity,\n })\n );\n break;\n case \"style.rawDimensions.forbid\":\n out.push(\n makeStyleRawDimensionForbiddenFact({\n appliesTo: style.appliesTo,\n prefer: style.prefer,\n severity: style.severity,\n })\n );\n break;\n case \"style.rawSpacing.mustMatchScale\":\n for (const property of style.appliesTo) {\n out.push(\n makeStylePropertyScaleFact({\n property,\n scale: style.scale,\n severity: style.severity,\n })\n );\n }\n break;\n case \"style.fontSize.mustMatchScale\":\n out.push(makeStyleFontSizeScaleFact({ scale: style.scale, severity: style.severity }));\n break;\n case \"style.cssVars.mustBeDefined\":\n out.push(makeStyleCssVarsMustBeDefinedFact({ severity: style.severity }));\n break;\n }\n }\n }\n\n if (govern.jsx) {\n for (const jsx of govern.jsx) {\n switch (jsx.kind) {\n case \"jsx.unknownProps.forbid\":\n out.push(makeJsxUnknownPropsForbiddenFact({ severity: jsx.severity }));\n break;\n case \"jsx.inlineStyle.forbidRaw\":\n for (const property of jsx.properties) {\n out.push(\n makeJsxInlineStyleForbiddenRawFact({\n property,\n severity: jsx.severity,\n })\n );\n }\n break;\n case \"jsx.importPath.prefer\":\n out.push(\n makeJsxImportPathPreferredFact({\n from: jsx.from,\n to: jsx.to,\n imported: jsx.imported,\n because: jsx.because,\n severity: jsx.severity,\n })\n );\n break;\n case \"jsx.component.prefer\":\n out.push(\n makeJsxComponentPreferredFact({\n from: asComponentId(jsx.from) as ComponentId,\n to: asComponentId(jsx.to) as ComponentId,\n because: jsx.because,\n severity: jsx.severity,\n })\n );\n break;\n }\n }\n }\n\n const tailwindPalette = govern.tailwind?.palette;\n const forbiddenPaletteSeverity = ruleSeverity(\n govern.rules?.[\"tailwind/forbidden-palette\"],\n govern.severity ?? \"warn\"\n );\n if (tailwindPalette?.allow?.length) {\n out.push(\n makeTailwindPaletteAllowFact({\n patterns: tailwindPalette.allow,\n severity: forbiddenPaletteSeverity,\n })\n );\n }\n if (tailwindPalette?.deny?.length) {\n out.push(\n makeTailwindPaletteDenyFact({\n patterns: tailwindPalette.deny,\n severity: forbiddenPaletteSeverity,\n })\n );\n }\n\n const unknownClassSeverity = enabledRuleSeverity(\n govern.rules?.[\"tailwind/unknown-class\"],\n \"info\"\n );\n if (unknownClassSeverity) {\n out.push(makeTailwindUnknownClassEnabledFact({ severity: unknownClassSeverity }));\n }\n\n out.push(...compileRuleConfigFacts(govern));\n\n return out;\n}\n\nconst RULE_FAMILY_MEMBERS: Record<string, readonly string[]> = {\n \"tokens/hardcoded-values\": [\n \"styles/no-raw-color\",\n \"styles/no-raw-spacing\",\n \"tokens/require-dual-fallback\",\n \"theme/no-theme-coupled-literal\",\n ],\n \"components/usage\": [\n \"components/forbidden-prop-value\",\n \"components/preferred-component\",\n \"components/unknown-prop\",\n \"props/invalid-value\",\n ],\n \"a11y/wcag\": [\"a11y/required-accessible-name\"],\n};\n\nfunction compileRuleConfigFacts(govern: GovernanceConfig): PolicyFact[] {\n const rules = govern.rules;\n if (!rules && !govern.canonicalSources?.length) return [];\n\n const configs = new Map<string, ReturnType<typeof ruleConfigFromValue>>();\n for (const [ruleId, value] of Object.entries(rules ?? {})) {\n const family = RULE_FAMILY_MEMBERS[ruleId];\n if (!family) continue;\n const config = ruleConfigFromValue(value, govern.severity ?? \"warn\");\n for (const memberRuleId of family) configs.set(memberRuleId, config);\n }\n\n for (const [ruleId, value] of Object.entries(rules ?? {})) {\n configs.set(ruleId, ruleConfigFromValue(value, govern.severity ?? \"warn\"));\n }\n\n if (\n govern.canonicalSources?.length &&\n configs.get(\"components/prefer-library\")?.enabled !== false\n ) {\n const existing = configs.get(\"components/prefer-library\");\n configs.set(\"components/prefer-library\", {\n enabled: true,\n severity: existing?.severity ?? govern.severity ?? \"warn\",\n options: {\n ...existing?.options,\n canonicalSources:\n existing?.options?.canonicalSources ?? govern.canonicalSources,\n },\n });\n }\n\n return [...configs.entries()].map(([ruleId, config]) =>\n makeGovernanceRuleConfigFact({\n ruleId,\n enabled: config.enabled,\n severity: config.severity,\n options: config.options,\n })\n );\n}\n\nfunction ruleConfigFromValue(\n value: unknown,\n fallbackSeverity: \"error\" | \"warn\" | \"info\"\n): { enabled: boolean; severity?: \"error\" | \"warn\" | \"info\"; options?: Record<string, unknown> } {\n if (value === false) return { enabled: false };\n if (value === true) return { enabled: true, severity: fallbackSeverity };\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return { enabled: true, severity: fallbackSeverity };\n }\n const record = value as {\n enabled?: unknown;\n severity?: unknown;\n options?: unknown;\n };\n const options =\n record.options && typeof record.options === \"object\" && !Array.isArray(record.options)\n ? (record.options as Record<string, unknown>)\n : undefined;\n return {\n enabled: record.enabled !== false,\n severity: parseSeverity(record.severity) ?? fallbackSeverity,\n options,\n };\n}\n\nfunction enabledRuleSeverity(\n value: unknown,\n fallback: \"error\" | \"warn\" | \"info\"\n): \"error\" | \"warn\" | \"info\" | null {\n if (value === true) return fallback;\n if (!value || typeof value !== \"object\") return null;\n const record = value as { enabled?: unknown; severity?: unknown };\n if (record.enabled === false) return null;\n if (record.enabled !== true) return null;\n return parseSeverity(record.severity) ?? fallback;\n}\n\nfunction ruleSeverity(\n value: unknown,\n fallback: \"error\" | \"warn\" | \"info\"\n): \"error\" | \"warn\" | \"info\" {\n if (!value || typeof value !== \"object\") return fallback;\n return parseSeverity((value as { severity?: unknown }).severity) ?? fallback;\n}\n\nfunction parseSeverity(value: unknown): \"error\" | \"warn\" | \"info\" | undefined {\n if (value === \"warning\") return \"warn\";\n return value === \"error\" || value === \"warn\" || value === \"info\" ? value : undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Component → facts\n// ---------------------------------------------------------------------------\n\ninterface ComponentFactSource {\n meta: { name: string; description?: string; category?: string };\n guidance?: { when?: string[]; whenNot?: string[] };\n props?: Record<string, PropDefinition>;\n governance?: ComponentGovernanceRecord[];\n filePath?: string;\n}\n\nfunction isResolvedGovernedDefinition(value: unknown): value is ResolvedGovernedFragmentDefinition {\n if (!value || typeof value !== \"object\") return false;\n return \"governance\" in value && Array.isArray((value as { governance: unknown }).governance);\n}\n\nfunction isGovernedDefinition(value: unknown): value is GovernedFragmentDefinition {\n if (!value || typeof value !== \"object\") return false;\n return \"govern\" in value || \"governance\" in value;\n}\n\nfunction toComponentFactSource(input: ComponentFactInput): ComponentFactSource {\n if (isResolvedGovernedDefinition(input)) {\n return {\n meta: input.meta,\n guidance: input.guidance,\n props: (input.props ?? {}) as Record<string, PropDefinition>,\n governance: input.governance,\n };\n }\n if (isGovernedDefinition(input)) {\n return {\n meta: input.meta,\n guidance: input.guidance,\n props: (input.props ?? {}) as Record<string, PropDefinition>,\n governance: resolveComponentGovernance(input),\n };\n }\n // CompiledFragment\n return {\n meta: input.meta,\n guidance: input.guidance ?? input.usage,\n props: input.props,\n governance: input.governance,\n filePath: input.filePath,\n };\n}\n\nexport type ComponentFactInput =\n | CompiledFragment\n | GovernedFragmentDefinition\n | ResolvedGovernedFragmentDefinition;\n\nexport function compileComponentFacts(componentId: ComponentId, input: ComponentFactInput): Fact[] {\n const source = toComponentFactSource(input);\n const facts: Fact[] = [];\n\n facts.push(\n makeComponentMetadataFact({\n componentId,\n name: source.meta.name,\n description: source.meta.description,\n category: source.meta.category,\n filePath: source.filePath,\n })\n );\n\n for (const [propName, prop] of Object.entries(source.props ?? {})) {\n facts.push(\n makePropMetadataFact({\n componentId,\n prop: propName,\n type: prop.type,\n values: prop.values ? [...prop.values] : undefined,\n required: prop.required ?? false,\n default: prop.default,\n description: prop.description,\n })\n );\n }\n\n for (const record of source.governance ?? []) {\n const fact = compileComponentGovernanceRecord(componentId, record);\n if (fact) facts.push(fact);\n }\n\n return facts;\n}\n\nfunction compileComponentGovernanceRecord(\n componentId: ComponentId,\n record: ComponentGovernanceRecord\n): Fact | undefined {\n switch (record.kind) {\n case \"capability\":\n return makeComponentCapabilityFact({ componentId, capability: record.capability });\n case \"prop.value.avoid\":\n return makePropValueAvoidedFact({\n componentId,\n prop: record.prop,\n value: record.value,\n because: record.because,\n suggest: record.suggest,\n severity: record.severity,\n });\n case \"prop.value.forbid\":\n return makePropValueForbiddenFact({\n componentId,\n prop: record.prop,\n value: record.value,\n pathPattern: record.when?.path,\n because: record.because,\n replaceWith: record.fix?.replaceWith,\n severity: record.severity,\n });\n case \"a11y.requireName\":\n return makeA11yNameRequiredFact({\n componentId,\n because: record.because,\n severity: record.severity,\n });\n }\n}\n","import {\n canonicalJson,\n hash64Hex,\n type FactLocation,\n} from \"../facts/index.js\";\nimport {\n normalizeFinding,\n normalizeViolation,\n type Finding,\n type Violation,\n} from \"../schemas/index.js\";\nimport { byRuleId } from \"./codes.js\";\n\nexport interface BridgeViolationInput {\n violation: Violation;\n canonicalRuleId?: string;\n validator?: string;\n attributes?: Record<string, unknown>;\n}\n\nexport function bridgeSourceViolation(input: BridgeViolationInput): {\n violation: Violation;\n finding: Finding;\n} {\n const ruleId = input.canonicalRuleId ?? input.violation.rule;\n const code = byRuleId.get(ruleId);\n const violation = normalizeViolation({\n ...input.violation,\n code: input.violation.code ?? code?.code,\n helpUrl: input.violation.helpUrl ?? code?.explainUrl,\n });\n const location = locationFromViolation(violation);\n const fingerprint = hash64Hex(\n canonicalJson({\n ruleId,\n legacyRule: violation.rule,\n nodeId: violation.nodeId,\n nodeType: violation.nodeType,\n prop: violation.prop,\n path: violation.path,\n filePath: violation.filePath,\n line: violation.line,\n column: violation.column,\n rawValue: violation.rawValue,\n message: violation.message,\n }),\n );\n\n return {\n violation,\n finding: normalizeFinding({\n ruleId,\n ruleVersion: \"1.0.0\",\n severity: violation.severity,\n level: violation.level,\n code: code?.code,\n helpUrl: code?.explainUrl,\n message: violation.message,\n fingerprint,\n location,\n evidence: [\n {\n factId: [\n \"source\",\n input.validator ?? \"validator\",\n ruleId,\n violation.filePath ?? violation.nodeId,\n violation.line ?? 0,\n violation.column ?? 0,\n violation.prop ?? violation.path ?? \"\",\n ].join(\":\"),\n fact: {\n kind: \"source_violation\",\n location,\n },\n },\n ],\n attributes: {\n source: \"source-validator\",\n validator: input.validator,\n legacyRule: violation.rule === ruleId ? undefined : violation.rule,\n nodeId: violation.nodeId,\n nodeType: violation.nodeType,\n prop: violation.prop,\n path: violation.path,\n rawValue: violation.rawValue,\n legacySuggestion: violation.suggestion,\n ...input.attributes,\n },\n }),\n };\n}\n\nexport function bridgeSourceViolations(\n violations: Violation[],\n options: Omit<BridgeViolationInput, \"violation\"> = {},\n): { violations: Violation[]; findings: Finding[] } {\n const bridged = violations.map((violation) =>\n bridgeSourceViolation({ ...options, violation }),\n );\n return {\n violations: bridged.map((entry) => entry.violation),\n findings: bridged.map((entry) => entry.finding),\n };\n}\n\nfunction locationFromViolation(violation: Violation): FactLocation {\n return {\n file: violation.filePath ?? \"<source>\",\n line: violation.line ?? 0,\n column: violation.column ?? 0,\n };\n}\n"],"mappings":"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","names":["code","code","componentId","componentId","code"]}
|
package/dist/codes/index.d.ts
CHANGED
package/dist/codes/index.js
CHANGED
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
byCode,
|
|
7
7
|
byRuleId,
|
|
8
8
|
explainUrlForCode
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-CBSNXFOD.js";
|
|
10
|
+
import "../chunk-57QDBEHQ.js";
|
|
11
11
|
import "../chunk-JNBFJ34I.js";
|
|
12
12
|
import "../chunk-EIYNNS77.js";
|
|
13
13
|
import "../chunk-V4VQB57N.js";
|