@buoy-design/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.
- package/dist/analysis/index.d.ts +2 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +2 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/semantic-diff.d.ts +100 -0
- package/dist/analysis/semantic-diff.d.ts.map +1 -0
- package/dist/analysis/semantic-diff.js +716 -0
- package/dist/analysis/semantic-diff.js.map +1 -0
- package/dist/analysis/semantic-diff.test.d.ts +2 -0
- package/dist/analysis/semantic-diff.test.d.ts.map +1 -0
- package/dist/analysis/semantic-diff.test.js +188 -0
- package/dist/analysis/semantic-diff.test.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/models/component.d.ts +638 -0
- package/dist/models/component.d.ts.map +1 -0
- package/dist/models/component.js +116 -0
- package/dist/models/component.js.map +1 -0
- package/dist/models/component.test.d.ts +2 -0
- package/dist/models/component.test.d.ts.map +1 -0
- package/dist/models/component.test.js +55 -0
- package/dist/models/component.test.js.map +1 -0
- package/dist/models/drift.d.ts +692 -0
- package/dist/models/drift.d.ts.map +1 -0
- package/dist/models/drift.js +152 -0
- package/dist/models/drift.js.map +1 -0
- package/dist/models/drift.test.d.ts +2 -0
- package/dist/models/drift.test.d.ts.map +1 -0
- package/dist/models/drift.test.js +38 -0
- package/dist/models/drift.test.js.map +1 -0
- package/dist/models/index.d.ts +9 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +9 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/intent.d.ts +226 -0
- package/dist/models/intent.d.ts.map +1 -0
- package/dist/models/intent.js +84 -0
- package/dist/models/intent.js.map +1 -0
- package/dist/models/token.d.ts +740 -0
- package/dist/models/token.d.ts.map +1 -0
- package/dist/models/token.js +164 -0
- package/dist/models/token.js.map +1 -0
- package/dist/models/token.test.d.ts +2 -0
- package/dist/models/token.test.d.ts.map +1 -0
- package/dist/models/token.test.js +168 -0
- package/dist/models/token.test.js.map +1 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +2 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/types.d.ts +60 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/models/token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// Token value types
|
|
3
|
+
export const ColorValueSchema = z.object({
|
|
4
|
+
type: z.literal('color'),
|
|
5
|
+
hex: z.string(),
|
|
6
|
+
rgba: z.object({
|
|
7
|
+
r: z.number(),
|
|
8
|
+
g: z.number(),
|
|
9
|
+
b: z.number(),
|
|
10
|
+
a: z.number(),
|
|
11
|
+
}).optional(),
|
|
12
|
+
});
|
|
13
|
+
export const SpacingValueSchema = z.object({
|
|
14
|
+
type: z.literal('spacing'),
|
|
15
|
+
value: z.number(),
|
|
16
|
+
unit: z.enum(['px', 'rem', 'em']),
|
|
17
|
+
});
|
|
18
|
+
export const TypographyValueSchema = z.object({
|
|
19
|
+
type: z.literal('typography'),
|
|
20
|
+
fontFamily: z.string(),
|
|
21
|
+
fontSize: z.number(),
|
|
22
|
+
fontWeight: z.number(),
|
|
23
|
+
lineHeight: z.number().optional(),
|
|
24
|
+
letterSpacing: z.number().optional(),
|
|
25
|
+
});
|
|
26
|
+
export const ShadowValueSchema = z.object({
|
|
27
|
+
type: z.literal('shadow'),
|
|
28
|
+
x: z.number(),
|
|
29
|
+
y: z.number(),
|
|
30
|
+
blur: z.number(),
|
|
31
|
+
spread: z.number(),
|
|
32
|
+
color: z.string(),
|
|
33
|
+
});
|
|
34
|
+
export const BorderValueSchema = z.object({
|
|
35
|
+
type: z.literal('border'),
|
|
36
|
+
width: z.number(),
|
|
37
|
+
style: z.enum(['solid', 'dashed', 'dotted', 'none']),
|
|
38
|
+
color: z.string(),
|
|
39
|
+
radius: z.number().optional(),
|
|
40
|
+
});
|
|
41
|
+
export const RawValueSchema = z.object({
|
|
42
|
+
type: z.literal('raw'),
|
|
43
|
+
value: z.string(),
|
|
44
|
+
});
|
|
45
|
+
export const TokenValueSchema = z.discriminatedUnion('type', [
|
|
46
|
+
ColorValueSchema,
|
|
47
|
+
SpacingValueSchema,
|
|
48
|
+
TypographyValueSchema,
|
|
49
|
+
ShadowValueSchema,
|
|
50
|
+
BorderValueSchema,
|
|
51
|
+
RawValueSchema,
|
|
52
|
+
]);
|
|
53
|
+
// Token source types
|
|
54
|
+
export const CssTokenSourceSchema = z.object({
|
|
55
|
+
type: z.literal('css'),
|
|
56
|
+
path: z.string(),
|
|
57
|
+
selector: z.string().optional(),
|
|
58
|
+
line: z.number().optional(),
|
|
59
|
+
});
|
|
60
|
+
export const JsonTokenSourceSchema = z.object({
|
|
61
|
+
type: z.literal('json'),
|
|
62
|
+
path: z.string(),
|
|
63
|
+
key: z.string().optional(),
|
|
64
|
+
});
|
|
65
|
+
export const ScssTokenSourceSchema = z.object({
|
|
66
|
+
type: z.literal('scss'),
|
|
67
|
+
path: z.string(),
|
|
68
|
+
variableName: z.string(),
|
|
69
|
+
line: z.number().optional(),
|
|
70
|
+
});
|
|
71
|
+
export const FigmaTokenSourceSchema = z.object({
|
|
72
|
+
type: z.literal('figma'),
|
|
73
|
+
fileKey: z.string(),
|
|
74
|
+
variableId: z.string().optional(),
|
|
75
|
+
collectionName: z.string().optional(),
|
|
76
|
+
});
|
|
77
|
+
export const TokenSourceSchema = z.discriminatedUnion('type', [
|
|
78
|
+
CssTokenSourceSchema,
|
|
79
|
+
JsonTokenSourceSchema,
|
|
80
|
+
ScssTokenSourceSchema,
|
|
81
|
+
FigmaTokenSourceSchema,
|
|
82
|
+
]);
|
|
83
|
+
// Token category
|
|
84
|
+
export const TokenCategorySchema = z.enum([
|
|
85
|
+
'color',
|
|
86
|
+
'spacing',
|
|
87
|
+
'typography',
|
|
88
|
+
'shadow',
|
|
89
|
+
'border',
|
|
90
|
+
'sizing',
|
|
91
|
+
'motion',
|
|
92
|
+
'other',
|
|
93
|
+
]);
|
|
94
|
+
// Token metadata
|
|
95
|
+
export const TokenMetadataSchema = z.object({
|
|
96
|
+
deprecated: z.boolean().optional(),
|
|
97
|
+
deprecationReason: z.string().optional(),
|
|
98
|
+
description: z.string().optional(),
|
|
99
|
+
tags: z.array(z.string()).optional(),
|
|
100
|
+
});
|
|
101
|
+
// Main Token schema
|
|
102
|
+
export const DesignTokenSchema = z.object({
|
|
103
|
+
id: z.string(),
|
|
104
|
+
name: z.string(),
|
|
105
|
+
category: TokenCategorySchema,
|
|
106
|
+
value: TokenValueSchema,
|
|
107
|
+
source: TokenSourceSchema,
|
|
108
|
+
aliases: z.array(z.string()),
|
|
109
|
+
usedBy: z.array(z.string()),
|
|
110
|
+
metadata: TokenMetadataSchema,
|
|
111
|
+
scannedAt: z.date(),
|
|
112
|
+
});
|
|
113
|
+
// Helper to create token ID
|
|
114
|
+
export function createTokenId(source, name) {
|
|
115
|
+
switch (source.type) {
|
|
116
|
+
case 'css':
|
|
117
|
+
return `css:${source.path}:${name}`;
|
|
118
|
+
case 'json':
|
|
119
|
+
return `json:${source.path}:${name}`;
|
|
120
|
+
case 'scss':
|
|
121
|
+
return `scss:${source.path}:${source.variableName}`;
|
|
122
|
+
case 'figma':
|
|
123
|
+
return `figma:${source.fileKey}:${source.variableId || name}`;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Helper to normalize token name for matching
|
|
127
|
+
export function normalizeTokenName(name) {
|
|
128
|
+
return name
|
|
129
|
+
.toLowerCase()
|
|
130
|
+
.replace(/[-_\s.]/g, '');
|
|
131
|
+
}
|
|
132
|
+
// Helper to compare token values
|
|
133
|
+
export function tokensMatch(a, b) {
|
|
134
|
+
if (a.type !== b.type)
|
|
135
|
+
return false;
|
|
136
|
+
switch (a.type) {
|
|
137
|
+
case 'color':
|
|
138
|
+
return a.hex.toLowerCase() === b.hex.toLowerCase();
|
|
139
|
+
case 'spacing':
|
|
140
|
+
return a.value === b.value && a.unit === b.unit;
|
|
141
|
+
case 'typography':
|
|
142
|
+
const bTypo = b;
|
|
143
|
+
return (a.fontFamily === bTypo.fontFamily &&
|
|
144
|
+
a.fontSize === bTypo.fontSize &&
|
|
145
|
+
a.fontWeight === bTypo.fontWeight);
|
|
146
|
+
case 'shadow':
|
|
147
|
+
const bShadow = b;
|
|
148
|
+
return (a.x === bShadow.x &&
|
|
149
|
+
a.y === bShadow.y &&
|
|
150
|
+
a.blur === bShadow.blur &&
|
|
151
|
+
a.spread === bShadow.spread &&
|
|
152
|
+
a.color.toLowerCase() === bShadow.color.toLowerCase());
|
|
153
|
+
case 'border':
|
|
154
|
+
const bBorder = b;
|
|
155
|
+
return (a.width === bBorder.width &&
|
|
156
|
+
a.style === bBorder.style &&
|
|
157
|
+
a.color.toLowerCase() === bBorder.color.toLowerCase());
|
|
158
|
+
case 'raw':
|
|
159
|
+
return a.value === b.value;
|
|
160
|
+
default:
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/models/token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.test.d.ts","sourceRoot":"","sources":["../../src/models/token.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
// packages/core/src/models/token.test.ts
|
|
2
|
+
import { describe, it, expect } from 'vitest';
|
|
3
|
+
import { createTokenId, normalizeTokenName, tokensMatch, } from './token.js';
|
|
4
|
+
describe('token model helpers', () => {
|
|
5
|
+
describe('createTokenId', () => {
|
|
6
|
+
it('creates id for CSS token', () => {
|
|
7
|
+
const source = { type: 'css', path: 'variables.css' };
|
|
8
|
+
const id = createTokenId(source, '--primary-color');
|
|
9
|
+
expect(id).toBe('css:variables.css:--primary-color');
|
|
10
|
+
});
|
|
11
|
+
it('creates id for JSON token', () => {
|
|
12
|
+
const source = { type: 'json', path: 'tokens.json', key: 'colors' };
|
|
13
|
+
const id = createTokenId(source, 'primary');
|
|
14
|
+
expect(id).toBe('json:tokens.json:primary');
|
|
15
|
+
});
|
|
16
|
+
it('creates id for SCSS token', () => {
|
|
17
|
+
const source = { type: 'scss', path: '_variables.scss', variableName: '$primary' };
|
|
18
|
+
const id = createTokenId(source, '$primary');
|
|
19
|
+
expect(id).toBe('scss:_variables.scss:$primary');
|
|
20
|
+
});
|
|
21
|
+
it('creates id for Figma token with variableId', () => {
|
|
22
|
+
const source = { type: 'figma', fileKey: 'abc123', variableId: 'var-456' };
|
|
23
|
+
const id = createTokenId(source, 'Primary/500');
|
|
24
|
+
expect(id).toBe('figma:abc123:var-456');
|
|
25
|
+
});
|
|
26
|
+
it('creates id for Figma token without variableId (uses name)', () => {
|
|
27
|
+
const source = { type: 'figma', fileKey: 'abc123' };
|
|
28
|
+
const id = createTokenId(source, 'Primary/500');
|
|
29
|
+
expect(id).toBe('figma:abc123:Primary/500');
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('normalizeTokenName', () => {
|
|
33
|
+
it('lowercases names', () => {
|
|
34
|
+
expect(normalizeTokenName('PrimaryColor')).toBe('primarycolor');
|
|
35
|
+
});
|
|
36
|
+
it('removes hyphens', () => {
|
|
37
|
+
expect(normalizeTokenName('--primary-color')).toBe('primarycolor');
|
|
38
|
+
});
|
|
39
|
+
it('removes underscores', () => {
|
|
40
|
+
expect(normalizeTokenName('primary_color')).toBe('primarycolor');
|
|
41
|
+
});
|
|
42
|
+
it('removes spaces', () => {
|
|
43
|
+
expect(normalizeTokenName('primary color')).toBe('primarycolor');
|
|
44
|
+
});
|
|
45
|
+
it('removes dots', () => {
|
|
46
|
+
expect(normalizeTokenName('color.primary.500')).toBe('colorprimary500');
|
|
47
|
+
});
|
|
48
|
+
it('normalizes complex names consistently', () => {
|
|
49
|
+
// These should all normalize to the same value
|
|
50
|
+
expect(normalizeTokenName('--spacing-lg')).toBe('spacinglg');
|
|
51
|
+
expect(normalizeTokenName('spacing_lg')).toBe('spacinglg');
|
|
52
|
+
expect(normalizeTokenName('spacing.lg')).toBe('spacinglg');
|
|
53
|
+
expect(normalizeTokenName('SPACING-LG')).toBe('spacinglg');
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('tokensMatch', () => {
|
|
57
|
+
describe('color tokens', () => {
|
|
58
|
+
it('matches identical colors', () => {
|
|
59
|
+
const a = { type: 'color', hex: '#ffffff' };
|
|
60
|
+
const b = { type: 'color', hex: '#ffffff' };
|
|
61
|
+
expect(tokensMatch(a, b)).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
it('matches equivalent hex colors (case insensitive)', () => {
|
|
64
|
+
const a = { type: 'color', hex: '#FFFFFF' };
|
|
65
|
+
const b = { type: 'color', hex: '#ffffff' };
|
|
66
|
+
expect(tokensMatch(a, b)).toBe(true);
|
|
67
|
+
});
|
|
68
|
+
it('detects different colors', () => {
|
|
69
|
+
const a = { type: 'color', hex: '#ffffff' };
|
|
70
|
+
const b = { type: 'color', hex: '#000000' };
|
|
71
|
+
expect(tokensMatch(a, b)).toBe(false);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe('spacing tokens', () => {
|
|
75
|
+
it('matches identical spacing', () => {
|
|
76
|
+
const a = { type: 'spacing', value: 16, unit: 'px' };
|
|
77
|
+
const b = { type: 'spacing', value: 16, unit: 'px' };
|
|
78
|
+
expect(tokensMatch(a, b)).toBe(true);
|
|
79
|
+
});
|
|
80
|
+
it('detects different spacing values', () => {
|
|
81
|
+
const a = { type: 'spacing', value: 16, unit: 'px' };
|
|
82
|
+
const b = { type: 'spacing', value: 24, unit: 'px' };
|
|
83
|
+
expect(tokensMatch(a, b)).toBe(false);
|
|
84
|
+
});
|
|
85
|
+
it('detects different spacing units', () => {
|
|
86
|
+
const a = { type: 'spacing', value: 16, unit: 'px' };
|
|
87
|
+
const b = { type: 'spacing', value: 16, unit: 'rem' };
|
|
88
|
+
expect(tokensMatch(a, b)).toBe(false);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe('typography tokens', () => {
|
|
92
|
+
it('matches identical typography', () => {
|
|
93
|
+
const a = { type: 'typography', fontFamily: 'Inter', fontSize: 16, fontWeight: 400 };
|
|
94
|
+
const b = { type: 'typography', fontFamily: 'Inter', fontSize: 16, fontWeight: 400 };
|
|
95
|
+
expect(tokensMatch(a, b)).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
it('detects different font family', () => {
|
|
98
|
+
const a = { type: 'typography', fontFamily: 'Inter', fontSize: 16, fontWeight: 400 };
|
|
99
|
+
const b = { type: 'typography', fontFamily: 'Roboto', fontSize: 16, fontWeight: 400 };
|
|
100
|
+
expect(tokensMatch(a, b)).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
it('detects different font size', () => {
|
|
103
|
+
const a = { type: 'typography', fontFamily: 'Inter', fontSize: 16, fontWeight: 400 };
|
|
104
|
+
const b = { type: 'typography', fontFamily: 'Inter', fontSize: 18, fontWeight: 400 };
|
|
105
|
+
expect(tokensMatch(a, b)).toBe(false);
|
|
106
|
+
});
|
|
107
|
+
it('detects different font weight', () => {
|
|
108
|
+
const a = { type: 'typography', fontFamily: 'Inter', fontSize: 16, fontWeight: 400 };
|
|
109
|
+
const b = { type: 'typography', fontFamily: 'Inter', fontSize: 16, fontWeight: 700 };
|
|
110
|
+
expect(tokensMatch(a, b)).toBe(false);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('shadow tokens', () => {
|
|
114
|
+
it('matches identical shadows', () => {
|
|
115
|
+
const a = { type: 'shadow', x: 0, y: 4, blur: 8, spread: 0, color: '#000000' };
|
|
116
|
+
const b = { type: 'shadow', x: 0, y: 4, blur: 8, spread: 0, color: '#000000' };
|
|
117
|
+
expect(tokensMatch(a, b)).toBe(true);
|
|
118
|
+
});
|
|
119
|
+
it('matches shadows with case-insensitive colors', () => {
|
|
120
|
+
const a = { type: 'shadow', x: 0, y: 4, blur: 8, spread: 0, color: '#AABBCC' };
|
|
121
|
+
const b = { type: 'shadow', x: 0, y: 4, blur: 8, spread: 0, color: '#aabbcc' };
|
|
122
|
+
expect(tokensMatch(a, b)).toBe(true);
|
|
123
|
+
});
|
|
124
|
+
it('detects different shadow properties', () => {
|
|
125
|
+
const a = { type: 'shadow', x: 0, y: 4, blur: 8, spread: 0, color: '#000000' };
|
|
126
|
+
const b = { type: 'shadow', x: 0, y: 8, blur: 8, spread: 0, color: '#000000' };
|
|
127
|
+
expect(tokensMatch(a, b)).toBe(false);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe('border tokens', () => {
|
|
131
|
+
it('matches identical borders', () => {
|
|
132
|
+
const a = { type: 'border', width: 1, style: 'solid', color: '#000000' };
|
|
133
|
+
const b = { type: 'border', width: 1, style: 'solid', color: '#000000' };
|
|
134
|
+
expect(tokensMatch(a, b)).toBe(true);
|
|
135
|
+
});
|
|
136
|
+
it('matches borders with case-insensitive colors', () => {
|
|
137
|
+
const a = { type: 'border', width: 1, style: 'solid', color: '#AABBCC' };
|
|
138
|
+
const b = { type: 'border', width: 1, style: 'solid', color: '#aabbcc' };
|
|
139
|
+
expect(tokensMatch(a, b)).toBe(true);
|
|
140
|
+
});
|
|
141
|
+
it('detects different border style', () => {
|
|
142
|
+
const a = { type: 'border', width: 1, style: 'solid', color: '#000000' };
|
|
143
|
+
const b = { type: 'border', width: 1, style: 'dashed', color: '#000000' };
|
|
144
|
+
expect(tokensMatch(a, b)).toBe(false);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('raw tokens', () => {
|
|
148
|
+
it('matches identical raw values', () => {
|
|
149
|
+
const a = { type: 'raw', value: '10px 20px' };
|
|
150
|
+
const b = { type: 'raw', value: '10px 20px' };
|
|
151
|
+
expect(tokensMatch(a, b)).toBe(true);
|
|
152
|
+
});
|
|
153
|
+
it('detects different raw values', () => {
|
|
154
|
+
const a = { type: 'raw', value: '10px 20px' };
|
|
155
|
+
const b = { type: 'raw', value: '10px 30px' };
|
|
156
|
+
expect(tokensMatch(a, b)).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe('cross-type matching', () => {
|
|
160
|
+
it('returns false for different token types', () => {
|
|
161
|
+
const color = { type: 'color', hex: '#ffffff' };
|
|
162
|
+
const spacing = { type: 'spacing', value: 16, unit: 'px' };
|
|
163
|
+
expect(tokensMatch(color, spacing)).toBe(false);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=token.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.test.js","sourceRoot":"","sources":["../../src/models/token.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Component, DesignToken } from '../models/index.js';
|
|
2
|
+
export interface PluginMetadata {
|
|
3
|
+
name: string;
|
|
4
|
+
version: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
detects?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface ScanContext {
|
|
9
|
+
projectRoot: string;
|
|
10
|
+
config: Record<string, unknown>;
|
|
11
|
+
include?: string[];
|
|
12
|
+
exclude?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface ScanResult {
|
|
15
|
+
components: Component[];
|
|
16
|
+
tokens: DesignToken[];
|
|
17
|
+
errors: Array<{
|
|
18
|
+
file?: string;
|
|
19
|
+
message: string;
|
|
20
|
+
code?: string;
|
|
21
|
+
}>;
|
|
22
|
+
stats: {
|
|
23
|
+
filesScanned: number;
|
|
24
|
+
itemsFound: number;
|
|
25
|
+
duration: number;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface ReportContext {
|
|
29
|
+
ci: boolean;
|
|
30
|
+
format: 'json' | 'table' | 'markdown';
|
|
31
|
+
github?: {
|
|
32
|
+
token: string;
|
|
33
|
+
repo: string;
|
|
34
|
+
pr: number;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface DriftResult {
|
|
38
|
+
signals: Array<{
|
|
39
|
+
type: string;
|
|
40
|
+
severity: 'critical' | 'warning' | 'info';
|
|
41
|
+
message: string;
|
|
42
|
+
component?: string;
|
|
43
|
+
file?: string;
|
|
44
|
+
line?: number;
|
|
45
|
+
suggestion?: string;
|
|
46
|
+
}>;
|
|
47
|
+
summary: {
|
|
48
|
+
total: number;
|
|
49
|
+
critical: number;
|
|
50
|
+
warning: number;
|
|
51
|
+
info: number;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export interface BuoyPlugin {
|
|
55
|
+
metadata: PluginMetadata;
|
|
56
|
+
scan?(context: ScanContext): Promise<ScanResult>;
|
|
57
|
+
report?(results: DriftResult, context: ReportContext): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
export type PluginFactory = () => BuoyPlugin | Promise<BuoyPlugin>;
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACvE;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IACtC,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;QAC1C,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,cAAc,CAAC;IAGzB,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAGjD,MAAM,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@buoy-design/core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Core domain models and analysis for Buoy design drift detection",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "Buoy <hello@buoy.design>",
|
|
8
|
+
"homepage": "https://buoy.design",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/dylantarre/buoy-design.git",
|
|
12
|
+
"directory": "packages/core"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/dylantarre/buoy-design/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": ["buoy", "design-system", "drift-detection", "design-tokens"],
|
|
18
|
+
"files": ["dist", "README.md"],
|
|
19
|
+
"main": "./dist/index.js",
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"import": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./models": {
|
|
27
|
+
"types": "./dist/models/index.d.ts",
|
|
28
|
+
"import": "./dist/models/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./analysis": {
|
|
31
|
+
"types": "./dist/analysis/index.d.ts",
|
|
32
|
+
"import": "./dist/analysis/index.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsc",
|
|
37
|
+
"dev": "tsc --watch",
|
|
38
|
+
"typecheck": "tsc --noEmit",
|
|
39
|
+
"clean": "rm -rf dist",
|
|
40
|
+
"test": "vitest run",
|
|
41
|
+
"test:watch": "vitest"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"zod": "^3.24.1"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"typescript": "^5.7.2"
|
|
48
|
+
}
|
|
49
|
+
}
|