@usefragments/core 1.0.0 → 1.2.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-R3X7UBHU.js → chunk-BQQTMGLA.js} +24 -2
- package/dist/chunk-BQQTMGLA.js.map +1 -0
- package/dist/{chunk-243QYRUF.js → chunk-DBVTSUMT.js} +71 -44
- package/dist/chunk-DBVTSUMT.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-BOa3KyiJ.d.ts → governance-DYSirwJu.d.ts} +22 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +156 -19
- package/dist/index.js.map +1 -1
- package/dist/react-types.d.ts +1 -1
- package/dist/schemas/index.d.ts +797 -4
- package/dist/schemas/index.js +9 -1
- package/dist/test-utils.d.ts +1 -1
- package/package.json +1 -1
- package/src/agent-format.test.ts +72 -2
- package/src/agent-format.ts +10 -5
- package/src/codes/__tests__/codes.test.ts +57 -7
- package/src/codes/codes.ts +44 -42
- package/src/conform-prove.ts +4 -8
- package/src/contract/index.ts +3 -0
- package/src/contract/preimage.test.ts +50 -0
- package/src/contract/preimage.ts +56 -0
- package/src/facts/builders.ts +2 -0
- package/src/facts/fact-index.ts +4 -0
- package/src/facts/facts.test.ts +49 -0
- package/src/facts/types.ts +1 -0
- package/src/governance-integrity.test.ts +2 -0
- package/src/governance-integrity.ts +7 -1
- package/src/index.ts +9 -0
- package/src/rules/components-prefer-library.ts +165 -7
- package/src/rules/emit-gate.test.ts +24 -2
- package/src/rules/emit-gate.ts +15 -7
- package/src/rules/fix-availability.ts +33 -0
- package/src/rules/rules.test.ts +178 -23
- package/src/rules/taxonomy.test.ts +6 -3
- package/src/rules/tiers.ts +1 -1
- package/src/schemas/index.ts +25 -1
- package/dist/chunk-243QYRUF.js.map +0 -1
- package/dist/chunk-R3X7UBHU.js.map +0 -1
|
@@ -166,11 +166,20 @@ var agentFindingSchema = z.object({
|
|
|
166
166
|
evidence: z.array(factEvidenceSchema),
|
|
167
167
|
plan: agentPlanSchema
|
|
168
168
|
});
|
|
169
|
+
var AGENT_FORMAT_SCHEMA_VERSION = "typestyle.agent.v2";
|
|
170
|
+
var agentIntegritySchema = z.object({
|
|
171
|
+
rulesLoaded: z.number().int().nonnegative(),
|
|
172
|
+
status: z.enum(["healthy", "degraded", "inert"]),
|
|
173
|
+
healthy: z.boolean(),
|
|
174
|
+
inert: z.boolean(),
|
|
175
|
+
reasons: z.array(z.string())
|
|
176
|
+
});
|
|
169
177
|
var agentFormatSchema = z.object({
|
|
170
|
-
schemaVersion: z.literal(
|
|
178
|
+
schemaVersion: z.literal(AGENT_FORMAT_SCHEMA_VERSION),
|
|
171
179
|
passed: z.boolean(),
|
|
172
180
|
score: z.number(),
|
|
173
181
|
summary: z.string(),
|
|
182
|
+
integrity: agentIntegritySchema,
|
|
174
183
|
fix_first: z.array(agentFindingSchema),
|
|
175
184
|
remaining: z.array(agentFindingSchema),
|
|
176
185
|
suppression_template: z.object({
|
|
@@ -186,6 +195,15 @@ var agentFormatSchema = z.object({
|
|
|
186
195
|
findings: z.array(findingSchema).optional(),
|
|
187
196
|
suppressions: z.array(suppressionDirectiveSchema).optional()
|
|
188
197
|
});
|
|
198
|
+
var agentErrorEnvelopeSchema = z.object({
|
|
199
|
+
schemaVersion: z.literal(AGENT_FORMAT_SCHEMA_VERSION),
|
|
200
|
+
passed: z.literal(false),
|
|
201
|
+
error: z.object({
|
|
202
|
+
code: z.string().min(1),
|
|
203
|
+
message: z.string().min(1)
|
|
204
|
+
})
|
|
205
|
+
});
|
|
206
|
+
var agentOutputSchema = z.union([agentFormatSchema, agentErrorEnvelopeSchema]);
|
|
189
207
|
function normalizeSeverity(severity) {
|
|
190
208
|
return severitySchema.safeParse(severity).success ? severity : severityFromLevel(legacySeverityLevelSchema.parse(severity));
|
|
191
209
|
}
|
|
@@ -220,9 +238,13 @@ export {
|
|
|
220
238
|
suppressionDirectiveSchema,
|
|
221
239
|
agentPlanSchema,
|
|
222
240
|
agentFindingSchema,
|
|
241
|
+
AGENT_FORMAT_SCHEMA_VERSION,
|
|
242
|
+
agentIntegritySchema,
|
|
223
243
|
agentFormatSchema,
|
|
244
|
+
agentErrorEnvelopeSchema,
|
|
245
|
+
agentOutputSchema,
|
|
224
246
|
normalizeSeverity,
|
|
225
247
|
normalizeFinding,
|
|
226
248
|
normalizeViolation
|
|
227
249
|
};
|
|
228
|
-
//# sourceMappingURL=chunk-
|
|
250
|
+
//# sourceMappingURL=chunk-BQQTMGLA.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\";\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 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 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\nexport const agentFormatSchema = z.object({\n schemaVersion: z.literal(AGENT_FORMAT_SCHEMA_VERSION),\n passed: z.boolean(),\n score: z.number(),\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});\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});\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 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-BQQTMGLA.js";
|
|
5
5
|
import {
|
|
6
6
|
authorOwnedImport,
|
|
7
7
|
canonicalizeOwnedComponentId,
|
|
@@ -14,6 +14,32 @@ import {
|
|
|
14
14
|
portableRepoPathError
|
|
15
15
|
} from "./chunk-EIYNNS77.js";
|
|
16
16
|
|
|
17
|
+
// src/rules/fix-availability.ts
|
|
18
|
+
var RULE_FIX_AVAILABLE = {
|
|
19
|
+
"components/unknown-prop": false,
|
|
20
|
+
"components/forbidden-prop-value": true,
|
|
21
|
+
"props/invalid-value": true,
|
|
22
|
+
"imports/preferred-path": true,
|
|
23
|
+
"components/preferred-component": true,
|
|
24
|
+
"components/prefer-library": true,
|
|
25
|
+
"styles/no-raw-color": true,
|
|
26
|
+
"styles/no-raw-dimensions": true,
|
|
27
|
+
"styles/no-raw-spacing": true,
|
|
28
|
+
"styles/no-raw-typography": true,
|
|
29
|
+
"tailwind/arbitrary-color": false,
|
|
30
|
+
"tailwind/arbitrary-spacing": true,
|
|
31
|
+
"tailwind/forbidden-palette": true,
|
|
32
|
+
"tailwind/off-scale-spacing-token": true,
|
|
33
|
+
"tailwind/raw-color-via-token": false,
|
|
34
|
+
"tailwind/unknown-class": false,
|
|
35
|
+
"tokens/require-dual-fallback": true,
|
|
36
|
+
"tokens/css-vars-must-be-defined": false,
|
|
37
|
+
"theme/no-theme-coupled-literal": false,
|
|
38
|
+
"a11y/required-accessible-name": false,
|
|
39
|
+
"composition/cardinality": false,
|
|
40
|
+
"composition/co-occurrence": false
|
|
41
|
+
};
|
|
42
|
+
|
|
17
43
|
// src/codes/codes.ts
|
|
18
44
|
var EXPLAIN_URL_BASE = "https://usefragments.com/errors/";
|
|
19
45
|
function code(entry) {
|
|
@@ -22,6 +48,14 @@ function code(entry) {
|
|
|
22
48
|
explainUrl: `${EXPLAIN_URL_BASE}${entry.code}`
|
|
23
49
|
};
|
|
24
50
|
}
|
|
51
|
+
function ruleCode(entry) {
|
|
52
|
+
const { evidenceRequired, ...metadata } = entry;
|
|
53
|
+
return code({
|
|
54
|
+
...metadata,
|
|
55
|
+
fixAvailable: RULE_FIX_AVAILABLE[entry.ruleId],
|
|
56
|
+
evidenceRequired
|
|
57
|
+
});
|
|
58
|
+
}
|
|
25
59
|
var CODES = [
|
|
26
60
|
code({
|
|
27
61
|
code: "FUI1001",
|
|
@@ -33,34 +67,31 @@ var CODES = [
|
|
|
33
67
|
fixAvailable: true,
|
|
34
68
|
evidenceRequired: true
|
|
35
69
|
}),
|
|
36
|
-
|
|
70
|
+
ruleCode({
|
|
37
71
|
code: "FUI1002",
|
|
38
72
|
ruleId: "components/preferred-component",
|
|
39
73
|
category: "canonical-usage",
|
|
40
74
|
defaultSeverity: "serious",
|
|
41
75
|
title: "Preferred component should be used",
|
|
42
76
|
lifecycle: "experimental",
|
|
43
|
-
fixAvailable: true,
|
|
44
77
|
evidenceRequired: true
|
|
45
78
|
}),
|
|
46
|
-
|
|
79
|
+
ruleCode({
|
|
47
80
|
code: "FUI1003",
|
|
48
81
|
ruleId: "imports/preferred-path",
|
|
49
82
|
category: "canonical-usage",
|
|
50
83
|
defaultSeverity: "moderate",
|
|
51
84
|
title: "Import should use the preferred path",
|
|
52
85
|
lifecycle: "experimental",
|
|
53
|
-
fixAvailable: true,
|
|
54
86
|
evidenceRequired: true
|
|
55
87
|
}),
|
|
56
|
-
|
|
88
|
+
ruleCode({
|
|
57
89
|
code: "FUI1004",
|
|
58
90
|
ruleId: "components/prefer-library",
|
|
59
91
|
category: "canonical-usage",
|
|
60
92
|
defaultSeverity: "moderate",
|
|
61
93
|
title: "Library component should be preferred",
|
|
62
94
|
lifecycle: "experimental",
|
|
63
|
-
fixAvailable: true,
|
|
64
95
|
evidenceRequired: true
|
|
65
96
|
}),
|
|
66
97
|
code({
|
|
@@ -103,104 +134,94 @@ var CODES = [
|
|
|
103
134
|
fixAvailable: true,
|
|
104
135
|
evidenceRequired: true
|
|
105
136
|
}),
|
|
106
|
-
|
|
137
|
+
ruleCode({
|
|
107
138
|
code: "FUI2003",
|
|
108
139
|
ruleId: "tokens/require-dual-fallback",
|
|
109
140
|
category: "tokens",
|
|
110
141
|
defaultSeverity: "serious",
|
|
111
142
|
title: "Token fallback is required",
|
|
112
143
|
lifecycle: "experimental",
|
|
113
|
-
fixAvailable: true,
|
|
114
144
|
evidenceRequired: true
|
|
115
145
|
}),
|
|
116
|
-
|
|
146
|
+
ruleCode({
|
|
117
147
|
code: "FUI2004",
|
|
118
148
|
ruleId: "styles/no-raw-dimensions",
|
|
119
149
|
category: "tokens",
|
|
120
150
|
defaultSeverity: "serious",
|
|
121
151
|
title: "Raw dimension should use a token",
|
|
122
152
|
lifecycle: "experimental",
|
|
123
|
-
fixAvailable: true,
|
|
124
153
|
evidenceRequired: true
|
|
125
154
|
}),
|
|
126
|
-
|
|
155
|
+
ruleCode({
|
|
127
156
|
code: "FUI2005",
|
|
128
157
|
ruleId: "styles/no-raw-color",
|
|
129
158
|
category: "tokens",
|
|
130
159
|
defaultSeverity: "serious",
|
|
131
160
|
title: "Raw color should use a token",
|
|
132
161
|
lifecycle: "experimental",
|
|
133
|
-
fixAvailable: true,
|
|
134
162
|
evidenceRequired: true
|
|
135
163
|
}),
|
|
136
|
-
|
|
164
|
+
ruleCode({
|
|
137
165
|
code: "FUI2006",
|
|
138
166
|
ruleId: "styles/no-raw-spacing",
|
|
139
167
|
category: "tokens",
|
|
140
168
|
defaultSeverity: "serious",
|
|
141
169
|
title: "Raw spacing should use the scale",
|
|
142
170
|
lifecycle: "experimental",
|
|
143
|
-
fixAvailable: true,
|
|
144
171
|
evidenceRequired: true
|
|
145
172
|
}),
|
|
146
|
-
|
|
173
|
+
ruleCode({
|
|
147
174
|
code: "FUI2007",
|
|
148
175
|
ruleId: "tailwind/arbitrary-color",
|
|
149
176
|
category: "tokens",
|
|
150
177
|
defaultSeverity: "moderate",
|
|
151
178
|
title: "Tailwind arbitrary color should use a token",
|
|
152
179
|
lifecycle: "experimental",
|
|
153
|
-
fixAvailable: true,
|
|
154
180
|
evidenceRequired: true
|
|
155
181
|
}),
|
|
156
|
-
|
|
182
|
+
ruleCode({
|
|
157
183
|
code: "FUI2008",
|
|
158
184
|
ruleId: "tailwind/arbitrary-spacing",
|
|
159
185
|
category: "tokens",
|
|
160
186
|
defaultSeverity: "moderate",
|
|
161
187
|
title: "Tailwind arbitrary spacing should use the scale",
|
|
162
188
|
lifecycle: "experimental",
|
|
163
|
-
fixAvailable: true,
|
|
164
189
|
evidenceRequired: true
|
|
165
190
|
}),
|
|
166
|
-
|
|
191
|
+
ruleCode({
|
|
167
192
|
code: "FUI2009",
|
|
168
193
|
ruleId: "tailwind/forbidden-palette",
|
|
169
194
|
category: "tokens",
|
|
170
195
|
defaultSeverity: "moderate",
|
|
171
196
|
title: "Tailwind palette is forbidden",
|
|
172
197
|
lifecycle: "experimental",
|
|
173
|
-
fixAvailable: false,
|
|
174
198
|
evidenceRequired: true
|
|
175
199
|
}),
|
|
176
|
-
|
|
200
|
+
ruleCode({
|
|
177
201
|
code: "FUI2010",
|
|
178
202
|
ruleId: "tailwind/raw-color-via-token",
|
|
179
203
|
category: "tokens",
|
|
180
204
|
defaultSeverity: "moderate",
|
|
181
205
|
title: "Tailwind color should use a resolved token",
|
|
182
206
|
lifecycle: "experimental",
|
|
183
|
-
fixAvailable: true,
|
|
184
207
|
evidenceRequired: true
|
|
185
208
|
}),
|
|
186
|
-
|
|
209
|
+
ruleCode({
|
|
187
210
|
code: "FUI2011",
|
|
188
211
|
ruleId: "tailwind/off-scale-spacing-token",
|
|
189
212
|
category: "tokens",
|
|
190
213
|
defaultSeverity: "moderate",
|
|
191
214
|
title: "Tailwind spacing token is off scale",
|
|
192
215
|
lifecycle: "experimental",
|
|
193
|
-
fixAvailable: true,
|
|
194
216
|
evidenceRequired: true
|
|
195
217
|
}),
|
|
196
|
-
|
|
218
|
+
ruleCode({
|
|
197
219
|
code: "FUI2012",
|
|
198
220
|
ruleId: "tailwind/unknown-class",
|
|
199
221
|
category: "tokens",
|
|
200
222
|
defaultSeverity: "moderate",
|
|
201
223
|
title: "Tailwind class is unknown",
|
|
202
224
|
lifecycle: "experimental",
|
|
203
|
-
fixAvailable: false,
|
|
204
225
|
evidenceRequired: true
|
|
205
226
|
}),
|
|
206
227
|
code({
|
|
@@ -213,34 +234,40 @@ var CODES = [
|
|
|
213
234
|
fixAvailable: true,
|
|
214
235
|
evidenceRequired: true
|
|
215
236
|
}),
|
|
216
|
-
|
|
237
|
+
ruleCode({
|
|
217
238
|
code: "FUI2014",
|
|
218
239
|
ruleId: "theme/no-theme-coupled-literal",
|
|
219
240
|
category: "tokens",
|
|
220
241
|
defaultSeverity: "moderate",
|
|
221
242
|
title: "Theme-coupled literal should use a semantic token",
|
|
222
243
|
lifecycle: "experimental",
|
|
223
|
-
fixAvailable: false,
|
|
224
244
|
evidenceRequired: true
|
|
225
245
|
}),
|
|
226
|
-
|
|
246
|
+
ruleCode({
|
|
227
247
|
code: "FUI2015",
|
|
228
248
|
ruleId: "tokens/css-vars-must-be-defined",
|
|
229
249
|
category: "tokens",
|
|
230
250
|
defaultSeverity: "moderate",
|
|
231
251
|
title: "CSS variable is not in the contract vocabulary",
|
|
232
252
|
lifecycle: "experimental",
|
|
233
|
-
fixAvailable: false,
|
|
234
253
|
evidenceRequired: true
|
|
235
254
|
}),
|
|
236
|
-
|
|
255
|
+
ruleCode({
|
|
256
|
+
code: "FUI2016",
|
|
257
|
+
ruleId: "styles/no-raw-typography",
|
|
258
|
+
category: "tokens",
|
|
259
|
+
defaultSeverity: "serious",
|
|
260
|
+
title: "Raw typography should use a token",
|
|
261
|
+
lifecycle: "experimental",
|
|
262
|
+
evidenceRequired: true
|
|
263
|
+
}),
|
|
264
|
+
ruleCode({
|
|
237
265
|
code: "FUI3001",
|
|
238
266
|
ruleId: "a11y/required-accessible-name",
|
|
239
267
|
category: "a11y",
|
|
240
268
|
defaultSeverity: "serious",
|
|
241
269
|
title: "Accessible name is required",
|
|
242
270
|
lifecycle: "experimental",
|
|
243
|
-
fixAvailable: false,
|
|
244
271
|
evidenceRequired: true
|
|
245
272
|
}),
|
|
246
273
|
code({
|
|
@@ -274,24 +301,22 @@ var CODES = [
|
|
|
274
301
|
fixAvailable: true,
|
|
275
302
|
evidenceRequired: true
|
|
276
303
|
}),
|
|
277
|
-
|
|
304
|
+
ruleCode({
|
|
278
305
|
code: "FUI5003",
|
|
279
306
|
ruleId: "composition/cardinality",
|
|
280
307
|
category: "composition",
|
|
281
308
|
defaultSeverity: "moderate",
|
|
282
309
|
title: "Too many of a component in one region",
|
|
283
310
|
lifecycle: "experimental",
|
|
284
|
-
fixAvailable: false,
|
|
285
311
|
evidenceRequired: true
|
|
286
312
|
}),
|
|
287
|
-
|
|
313
|
+
ruleCode({
|
|
288
314
|
code: "FUI5004",
|
|
289
315
|
ruleId: "composition/co-occurrence",
|
|
290
316
|
category: "composition",
|
|
291
317
|
defaultSeverity: "moderate",
|
|
292
318
|
title: "Required companion component is missing from the region",
|
|
293
319
|
lifecycle: "experimental",
|
|
294
|
-
fixAvailable: false,
|
|
295
320
|
evidenceRequired: true
|
|
296
321
|
}),
|
|
297
322
|
code({
|
|
@@ -304,14 +329,13 @@ var CODES = [
|
|
|
304
329
|
fixAvailable: false,
|
|
305
330
|
evidenceRequired: true
|
|
306
331
|
}),
|
|
307
|
-
|
|
332
|
+
ruleCode({
|
|
308
333
|
code: "FUI6002",
|
|
309
334
|
ruleId: "props/invalid-value",
|
|
310
335
|
category: "props",
|
|
311
336
|
defaultSeverity: "serious",
|
|
312
337
|
title: "Prop value is invalid",
|
|
313
338
|
lifecycle: "experimental",
|
|
314
|
-
fixAvailable: true,
|
|
315
339
|
evidenceRequired: true
|
|
316
340
|
}),
|
|
317
341
|
code({
|
|
@@ -324,24 +348,22 @@ var CODES = [
|
|
|
324
348
|
fixAvailable: false,
|
|
325
349
|
evidenceRequired: true
|
|
326
350
|
}),
|
|
327
|
-
|
|
351
|
+
ruleCode({
|
|
328
352
|
code: "FUI6004",
|
|
329
353
|
ruleId: "components/forbidden-prop-value",
|
|
330
354
|
category: "props",
|
|
331
355
|
defaultSeverity: "serious",
|
|
332
356
|
title: "Prop value is forbidden",
|
|
333
357
|
lifecycle: "experimental",
|
|
334
|
-
fixAvailable: true,
|
|
335
358
|
evidenceRequired: true
|
|
336
359
|
}),
|
|
337
|
-
|
|
360
|
+
ruleCode({
|
|
338
361
|
code: "FUI6005",
|
|
339
362
|
ruleId: "components/unknown-prop",
|
|
340
363
|
category: "props",
|
|
341
364
|
defaultSeverity: "moderate",
|
|
342
365
|
title: "Component prop is unknown",
|
|
343
366
|
lifecycle: "experimental",
|
|
344
|
-
fixAvailable: false,
|
|
345
367
|
evidenceRequired: true
|
|
346
368
|
}),
|
|
347
369
|
code({
|
|
@@ -774,6 +796,7 @@ function makeTokenDefinitionFact(input) {
|
|
|
774
796
|
kind: "token_definition",
|
|
775
797
|
name: input.name,
|
|
776
798
|
value: input.value,
|
|
799
|
+
...input.location ? { location: input.location } : {},
|
|
777
800
|
category: input.category,
|
|
778
801
|
referenceFormat: input.referenceFormat
|
|
779
802
|
};
|
|
@@ -1044,6 +1067,10 @@ function logicalComponentId(componentId2) {
|
|
|
1044
1067
|
return canonicalizeOwnedComponentId(componentId2);
|
|
1045
1068
|
}
|
|
1046
1069
|
function logicalFactForComparison(fact) {
|
|
1070
|
+
if (fact.kind === "token_definition") {
|
|
1071
|
+
const { location: _location, ...logicalFact } = fact;
|
|
1072
|
+
return logicalFact;
|
|
1073
|
+
}
|
|
1047
1074
|
if (fact.kind === "jsx_import_path_preferred") {
|
|
1048
1075
|
return {
|
|
1049
1076
|
...fact,
|
|
@@ -2142,4 +2169,4 @@ export {
|
|
|
2142
2169
|
bridgeSourceViolation,
|
|
2143
2170
|
bridgeSourceViolations
|
|
2144
2171
|
};
|
|
2145
|
-
//# sourceMappingURL=chunk-
|
|
2172
|
+
//# sourceMappingURL=chunk-DBVTSUMT.js.map
|