intent-core 0.1.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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/dist/compiler/index.d.ts +53 -0
  4. package/dist/compiler/index.d.ts.map +1 -0
  5. package/dist/compiler/index.js +147 -0
  6. package/dist/compiler/index.js.map +1 -0
  7. package/dist/compiler/parser.d.ts +25 -0
  8. package/dist/compiler/parser.d.ts.map +1 -0
  9. package/dist/compiler/parser.js +198 -0
  10. package/dist/compiler/parser.js.map +1 -0
  11. package/dist/generator/ai-manifest.d.ts +14 -0
  12. package/dist/generator/ai-manifest.d.ts.map +1 -0
  13. package/dist/generator/ai-manifest.js +276 -0
  14. package/dist/generator/ai-manifest.js.map +1 -0
  15. package/dist/generator/css.d.ts +16 -0
  16. package/dist/generator/css.d.ts.map +1 -0
  17. package/dist/generator/css.js +230 -0
  18. package/dist/generator/css.js.map +1 -0
  19. package/dist/generator/types.d.ts +11 -0
  20. package/dist/generator/types.d.ts.map +1 -0
  21. package/dist/generator/types.js +229 -0
  22. package/dist/generator/types.js.map +1 -0
  23. package/dist/index.d.ts +47 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +51 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/schema/define.d.ts +60 -0
  28. package/dist/schema/define.d.ts.map +1 -0
  29. package/dist/schema/define.js +167 -0
  30. package/dist/schema/define.js.map +1 -0
  31. package/dist/types/index.d.ts +156 -0
  32. package/dist/types/index.d.ts.map +1 -0
  33. package/dist/types/index.js +5 -0
  34. package/dist/types/index.js.map +1 -0
  35. package/dist/validator/constraints.d.ts +16 -0
  36. package/dist/validator/constraints.d.ts.map +1 -0
  37. package/dist/validator/constraints.js +168 -0
  38. package/dist/validator/constraints.js.map +1 -0
  39. package/dist/validator/index.d.ts +22 -0
  40. package/dist/validator/index.d.ts.map +1 -0
  41. package/dist/validator/index.js +321 -0
  42. package/dist/validator/index.js.map +1 -0
  43. package/package.json +61 -0
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Validator
3
+ *
4
+ * Validates component usage against design system schemas.
5
+ */
6
+ import { validateConstraints } from './constraints.js';
7
+ // ============================================================================
8
+ // Schema Validation
9
+ // ============================================================================
10
+ export function validateSchema(config) {
11
+ const issues = [];
12
+ // Validate tokens
13
+ for (const [category, tokens] of Object.entries(config.tokens)) {
14
+ if (!tokens)
15
+ continue;
16
+ for (const [name, value] of Object.entries(tokens)) {
17
+ // Check for valid token names (kebab-case recommended)
18
+ if (!/^[a-z][a-z0-9-]*$/.test(name)) {
19
+ issues.push({
20
+ severity: 'warning',
21
+ code: 'INVALID_TOKEN_NAME',
22
+ message: `Token name "${name}" in category "${category}" should be kebab-case`,
23
+ path: `tokens.${category}.${name}`,
24
+ });
25
+ }
26
+ // Check for empty values
27
+ if (value === '' || value === undefined) {
28
+ issues.push({
29
+ severity: 'error',
30
+ code: 'EMPTY_TOKEN_VALUE',
31
+ message: `Token "${category}.${name}" has empty value`,
32
+ path: `tokens.${category}.${name}`,
33
+ });
34
+ }
35
+ }
36
+ }
37
+ // Validate components
38
+ for (const [name, schema] of Object.entries(config.components)) {
39
+ // Check component name matches key
40
+ if (schema.name !== name) {
41
+ issues.push({
42
+ severity: 'warning',
43
+ code: 'COMPONENT_NAME_MISMATCH',
44
+ message: `Component key "${name}" does not match schema name "${schema.name}"`,
45
+ path: `components.${name}`,
46
+ });
47
+ }
48
+ // Validate properties
49
+ for (const [propName, prop] of Object.entries(schema.properties)) {
50
+ const propIssues = validatePropertyDefinition(propName, prop);
51
+ issues.push(...propIssues.map(i => ({ ...i, path: `components.${name}.properties.${propName}` })));
52
+ }
53
+ // Validate constraints reference existing properties
54
+ for (const constraint of schema.constraints) {
55
+ for (const propName of Object.keys(constraint.when)) {
56
+ if (!schema.properties[propName]) {
57
+ issues.push({
58
+ severity: 'error',
59
+ code: 'UNKNOWN_CONSTRAINT_PROPERTY',
60
+ message: `Constraint references unknown property "${propName}"`,
61
+ path: `components.${name}.constraints`,
62
+ });
63
+ }
64
+ }
65
+ if (constraint.forbid) {
66
+ for (const propName of constraint.forbid) {
67
+ if (!schema.properties[propName]) {
68
+ issues.push({
69
+ severity: 'error',
70
+ code: 'UNKNOWN_FORBIDDEN_PROPERTY',
71
+ message: `Constraint forbids unknown property "${propName}"`,
72
+ path: `components.${name}.constraints`,
73
+ });
74
+ }
75
+ }
76
+ }
77
+ if (constraint.require) {
78
+ for (const propName of Object.keys(constraint.require)) {
79
+ if (!schema.properties[propName]) {
80
+ issues.push({
81
+ severity: 'error',
82
+ code: 'UNKNOWN_REQUIRED_PROPERTY',
83
+ message: `Constraint requires unknown property "${propName}"`,
84
+ path: `components.${name}.constraints`,
85
+ });
86
+ }
87
+ }
88
+ }
89
+ }
90
+ // Validate mappings reference existing properties
91
+ for (const [key, mapping] of Object.entries(schema.mappings)) {
92
+ const [propName] = key.split('=');
93
+ if (!schema.properties[propName]) {
94
+ issues.push({
95
+ severity: 'error',
96
+ code: 'UNKNOWN_MAPPING_PROPERTY',
97
+ message: `Mapping references unknown property "${propName}"`,
98
+ path: `components.${name}.mappings.${key}`,
99
+ });
100
+ }
101
+ }
102
+ }
103
+ return {
104
+ valid: !issues.some(i => i.severity === 'error'),
105
+ issues,
106
+ };
107
+ }
108
+ function validatePropertyDefinition(name, prop) {
109
+ const issues = [];
110
+ // Check property name is camelCase
111
+ if (!/^[a-z][a-zA-Z0-9]*$/.test(name)) {
112
+ issues.push({
113
+ severity: 'warning',
114
+ code: 'INVALID_PROPERTY_NAME',
115
+ message: `Property name "${name}" should be camelCase`,
116
+ path: name,
117
+ });
118
+ }
119
+ // Validate enum values
120
+ if (prop.type === 'enum') {
121
+ if (prop.values.length === 0) {
122
+ issues.push({
123
+ severity: 'error',
124
+ code: 'EMPTY_ENUM',
125
+ message: `Enum property "${name}" has no values`,
126
+ path: name,
127
+ });
128
+ }
129
+ for (const value of prop.values) {
130
+ // Check for kebab-case enum values
131
+ if (!/^[a-z][a-z0-9-]*$/.test(value)) {
132
+ issues.push({
133
+ severity: 'warning',
134
+ code: 'INVALID_ENUM_VALUE',
135
+ message: `Enum value "${value}" should be lowercase and kebab-case`,
136
+ path: `${name}.values`,
137
+ });
138
+ }
139
+ }
140
+ // Check default value is in values
141
+ if (prop.default !== undefined && !prop.values.includes(prop.default)) {
142
+ issues.push({
143
+ severity: 'error',
144
+ code: 'INVALID_DEFAULT',
145
+ message: `Default value "${prop.default}" is not in enum values`,
146
+ path: `${name}.default`,
147
+ });
148
+ }
149
+ }
150
+ // Validate number constraints
151
+ if (prop.type === 'number') {
152
+ if (prop.min !== undefined && prop.max !== undefined && prop.min > prop.max) {
153
+ issues.push({
154
+ severity: 'error',
155
+ code: 'INVALID_RANGE',
156
+ message: `Min (${prop.min}) cannot be greater than max (${prop.max})`,
157
+ path: name,
158
+ });
159
+ }
160
+ }
161
+ return issues;
162
+ }
163
+ export function validateUsage(schema, usage, context) {
164
+ const issues = [];
165
+ const props = usage.props;
166
+ // Check for required properties
167
+ for (const [propName, prop] of Object.entries(schema.properties)) {
168
+ if (prop.required && !(propName in props)) {
169
+ issues.push({
170
+ severity: 'error',
171
+ code: 'MISSING_REQUIRED_PROP',
172
+ message: `Required property "${propName}" is missing`,
173
+ path: context ? `${context.file}:${context.line}:${context.column}` : usage.component,
174
+ suggestion: `Add ${propName}="${getDefaultSuggestion(prop)}"`,
175
+ });
176
+ }
177
+ }
178
+ // Check for unknown properties
179
+ for (const propName of Object.keys(props)) {
180
+ // Skip HTML attributes and special props
181
+ if (['children', 'key', 'ref'].includes(propName))
182
+ continue;
183
+ if (propName.startsWith('on') || propName.startsWith('data-'))
184
+ continue;
185
+ if (!schema.properties[propName]) {
186
+ issues.push({
187
+ severity: 'error',
188
+ code: 'UNKNOWN_PROPERTY',
189
+ message: `Unknown property "${propName}" on component "${schema.name}"`,
190
+ path: context ? `${context.file}:${context.line}:${context.column}` : usage.component,
191
+ suggestion: `Valid properties: ${Object.keys(schema.properties).join(', ')}`,
192
+ });
193
+ }
194
+ }
195
+ // Validate property values
196
+ for (const [propName, value] of Object.entries(props)) {
197
+ const prop = schema.properties[propName];
198
+ if (!prop)
199
+ continue;
200
+ const valueIssues = validatePropertyValue(propName, prop, value);
201
+ issues.push(...valueIssues.map(i => ({
202
+ ...i,
203
+ path: context ? `${context.file}:${context.line}:${context.column}` : `${usage.component}.${propName}`,
204
+ })));
205
+ }
206
+ // Validate constraints
207
+ const constraintIssues = validateConstraints(schema, usage, context);
208
+ issues.push(...constraintIssues);
209
+ return {
210
+ valid: !issues.some(i => i.severity === 'error'),
211
+ issues,
212
+ };
213
+ }
214
+ function validatePropertyValue(name, prop, value) {
215
+ const issues = [];
216
+ // Skip dynamic values (we can't validate these statically)
217
+ if (typeof value === 'object' && value !== null && '__dynamic' in value) {
218
+ return [{
219
+ severity: 'info',
220
+ code: 'DYNAMIC_VALUE',
221
+ message: `Property "${name}" has dynamic value that cannot be statically validated`,
222
+ path: name,
223
+ }];
224
+ }
225
+ switch (prop.type) {
226
+ case 'enum': {
227
+ const strValue = String(value);
228
+ if (!prop.values.includes(strValue)) {
229
+ issues.push({
230
+ severity: 'error',
231
+ code: 'INVALID_ENUM_VALUE',
232
+ message: `Invalid value "${strValue}" for property "${name}". Valid values: ${prop.values.join(', ')}`,
233
+ path: name,
234
+ suggestion: `Use one of: ${prop.values.join(', ')}`,
235
+ });
236
+ }
237
+ break;
238
+ }
239
+ case 'boolean': {
240
+ if (typeof value !== 'boolean') {
241
+ issues.push({
242
+ severity: 'error',
243
+ code: 'TYPE_MISMATCH',
244
+ message: `Property "${name}" must be a boolean, got ${typeof value}`,
245
+ path: name,
246
+ });
247
+ }
248
+ break;
249
+ }
250
+ case 'number': {
251
+ const numValue = typeof value === 'string' ? Number(value) : value;
252
+ if (typeof numValue !== 'number' || isNaN(numValue)) {
253
+ issues.push({
254
+ severity: 'error',
255
+ code: 'TYPE_MISMATCH',
256
+ message: `Property "${name}" must be a number, got ${typeof value}`,
257
+ path: name,
258
+ });
259
+ }
260
+ else {
261
+ if (prop.min !== undefined && numValue < prop.min) {
262
+ issues.push({
263
+ severity: 'error',
264
+ code: 'VALUE_OUT_OF_RANGE',
265
+ message: `Property "${name}" must be >= ${prop.min}, got ${numValue}`,
266
+ path: name,
267
+ });
268
+ }
269
+ if (prop.max !== undefined && numValue > prop.max) {
270
+ issues.push({
271
+ severity: 'error',
272
+ code: 'VALUE_OUT_OF_RANGE',
273
+ message: `Property "${name}" must be <= ${prop.max}, got ${numValue}`,
274
+ path: name,
275
+ });
276
+ }
277
+ }
278
+ break;
279
+ }
280
+ case 'string': {
281
+ // Any string is valid
282
+ break;
283
+ }
284
+ }
285
+ return issues;
286
+ }
287
+ function getDefaultSuggestion(prop) {
288
+ if (prop.type === 'enum') {
289
+ return prop.default || prop.values[0];
290
+ }
291
+ if (prop.type === 'boolean') {
292
+ return String(prop.default ?? 'true');
293
+ }
294
+ return '...';
295
+ }
296
+ export function validateAllUsages(config, batch, options) {
297
+ const allIssues = [];
298
+ for (const { file, usages } of batch) {
299
+ for (const usage of usages) {
300
+ const schema = config.components[usage.component];
301
+ if (!schema) {
302
+ allIssues.push({
303
+ severity: 'error',
304
+ code: 'UNKNOWN_COMPONENT',
305
+ message: `Unknown component "${usage.component}"`,
306
+ path: file,
307
+ });
308
+ continue;
309
+ }
310
+ const result = validateUsage(schema, usage, { file });
311
+ allIssues.push(...result.issues);
312
+ }
313
+ }
314
+ const hasErrors = allIssues.some(i => i.severity === 'error');
315
+ const hasWarnings = allIssues.some(i => i.severity === 'warning');
316
+ return {
317
+ valid: options?.strict ? !(hasErrors || hasWarnings) : !hasErrors,
318
+ issues: allIssues,
319
+ };
320
+ }
321
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validator/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "intent-core",
3
+ "version": "0.1.0",
4
+ "description": "Core schema definition, compiler, and validator for Intent styling framework",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/mixedmetals/intent-framework",
10
+ "directory": "packages/core"
11
+ },
12
+ "keywords": [
13
+ "intent",
14
+ "css",
15
+ "design-system",
16
+ "schema",
17
+ "ai",
18
+ "styling",
19
+ "compiler"
20
+ ],
21
+ "files": [
22
+ "dist",
23
+ "README.md",
24
+ "LICENSE"
25
+ ],
26
+ "main": "./dist/index.js",
27
+ "module": "./dist/index.js",
28
+ "types": "./dist/index.d.ts",
29
+ "exports": {
30
+ ".": {
31
+ "types": "./dist/index.d.ts",
32
+ "import": "./dist/index.js"
33
+ },
34
+ "./compiler": {
35
+ "types": "./dist/compiler/index.d.ts",
36
+ "import": "./dist/compiler/index.js"
37
+ }
38
+ },
39
+ "scripts": {
40
+ "build": "tsc",
41
+ "dev": "tsc --watch",
42
+ "test": "vitest run",
43
+ "clean": "rm -rf dist"
44
+ },
45
+ "peerDependencies": {
46
+ "typescript": ">=5.0.0"
47
+ },
48
+ "peerDependenciesMeta": {
49
+ "typescript": {
50
+ "optional": true
51
+ }
52
+ },
53
+ "devDependencies": {
54
+ "@types/node": "^20.10.0",
55
+ "typescript": "^5.3.0",
56
+ "vitest": "^1.0.0"
57
+ },
58
+ "engines": {
59
+ "node": ">=18.0.0"
60
+ }
61
+ }