@dsgraph/core 0.6.2 → 0.7.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/code.d.ts +39 -4
- package/dist/code.d.ts.map +1 -1
- package/dist/code.js +180 -5
- package/dist/code.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/knowledge.d.ts +43 -0
- package/dist/knowledge.d.ts.map +1 -0
- package/dist/knowledge.js +107 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/snapshot.d.ts +1 -1
- package/dist/snapshot.js +1 -1
- package/package.json +2 -2
package/dist/code.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Token } from '@dsgraph/schema';
|
|
2
2
|
import type { DsGraph } from './graph.js';
|
|
3
|
+
import { type Knowledge, type Role } from './knowledge.js';
|
|
3
4
|
import type { Input } from './resolver/system.js';
|
|
4
5
|
/**
|
|
5
6
|
* What a project's code does with the design system: where it reads tokens (`var(--…)`) and where
|
|
@@ -97,13 +98,47 @@ export interface NearestToken {
|
|
|
97
98
|
/** Within what people cannot tell apart: ΔE < 1, < 0.5px; equal otherwise. */
|
|
98
99
|
exact: boolean;
|
|
99
100
|
}
|
|
101
|
+
/** The role a CSS property's value plays: `color` is text, `background-color` a background. */
|
|
102
|
+
export declare function roleOfProperty(property: string): Role | undefined;
|
|
100
103
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
|
|
104
|
+
* Where a value is written, as far as choosing a token goes: the CSS property, the states the rule
|
|
105
|
+
* applies in (`:hover` → `hover`) and the component it styles (`.button`, `Button.tsx`).
|
|
106
|
+
*/
|
|
107
|
+
export interface StyleContext {
|
|
108
|
+
property?: string;
|
|
109
|
+
/** `hover`, `focus`, `active`, `disabled`, `selected`, `visited`; none for the resting state. */
|
|
110
|
+
states?: string[];
|
|
111
|
+
/** Names of the component the code styles, lower case, without separators: `button`, `actionlist`. */
|
|
112
|
+
components?: string[];
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The context of a value written in code, for `nearestTokens`: states from the selector or a
|
|
116
|
+
* class's variants, components from the selector's classes (the block of a BEM class) and the file
|
|
117
|
+
* name (`Button.module.css`, `ActionList/Item.tsx`).
|
|
118
|
+
*/
|
|
119
|
+
export declare function styleContext(at: {
|
|
120
|
+
file: string;
|
|
121
|
+
property: string;
|
|
122
|
+
selector?: string;
|
|
123
|
+
source?: string;
|
|
124
|
+
}, knowledge?: Knowledge): StyleContext;
|
|
125
|
+
/**
|
|
126
|
+
* Tokens nearest to a value in one context. Deprecated ones go last. Among exact matches, the name
|
|
127
|
+
* decides, in this order:
|
|
128
|
+
* - a token made for another role goes last (`borderColor.accent` for `color`);
|
|
129
|
+
* - the code's state: `control.bgColor.hover` in a `:hover` rule, and in a rule without one, not
|
|
130
|
+
* a token for hover or disabled;
|
|
131
|
+
* - the code's component: `button.bgColor.rest` in `.button` or `Button.tsx`;
|
|
132
|
+
* - the property's role, as the first part of the name before deeper in it (`fgColor.accent`
|
|
133
|
+
* before `selection.fgColor`).
|
|
134
|
+
* Among equally close tokens, the ones that reference another token (semantic tokens, which follow
|
|
135
|
+
* themes) come before the primitives that hold the value; then general tokens before component ones
|
|
136
|
+
* (`fgColor.accent` before `button.outline.fgColor.rest`), and the one others build on first.
|
|
137
|
+
* `context` is a CSS property or a whole `StyleContext` (see `styleContext`); a knowledge pack adds
|
|
138
|
+
* to the words names are read by.
|
|
104
139
|
*/
|
|
105
140
|
export declare function nearestTokens(graph: DsGraph, parsed: {
|
|
106
141
|
type: string;
|
|
107
142
|
value: unknown;
|
|
108
|
-
}, input: Input, limit: number): NearestToken[];
|
|
143
|
+
}, input: Input, limit: number, context?: string | StyleContext, knowledge?: Knowledge): NearestToken[];
|
|
109
144
|
//# sourceMappingURL=code.d.ts.map
|
package/dist/code.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../src/code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../src/code.ts"],"names":[],"mappings":"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"}
|
package/dist/code.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { canonicalize } from '@dsgraph/schema';
|
|
2
|
+
import { vocabularyOf } from './knowledge.js';
|
|
2
3
|
import { normalizeName } from './path.js';
|
|
3
4
|
import { deltaEOK } from './values/color.js';
|
|
4
5
|
import { toPx } from './values/dimension.js';
|
|
@@ -138,12 +139,161 @@ const COMPATIBLE = {
|
|
|
138
139
|
number: ['number', 'fontWeight'],
|
|
139
140
|
fontWeight: ['fontWeight', 'number'],
|
|
140
141
|
};
|
|
142
|
+
/** The role a CSS property's value plays: `color` is text, `background-color` a background. */
|
|
143
|
+
export function roleOfProperty(property) {
|
|
144
|
+
const p = property.toLowerCase();
|
|
145
|
+
if (/^(color|caret-color|-webkit-text-fill-color|text-decoration-color|text-emphasis-color)$/.test(p))
|
|
146
|
+
return 'text';
|
|
147
|
+
if (/^background(-color)?$|^(fill)$/.test(p))
|
|
148
|
+
return 'background';
|
|
149
|
+
if (/^(border|outline|column-rule)(-(top|right|bottom|left|block|inline)(-(start|end))?)?(-color)?$|^stroke$/.test(p))
|
|
150
|
+
return 'border';
|
|
151
|
+
if (/shadow$/.test(p))
|
|
152
|
+
return 'shadow';
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
/** States in a selector; what `:not()` excludes does not count. */
|
|
156
|
+
const SELECTOR_STATES = [
|
|
157
|
+
[/:hover\b/, 'hover'],
|
|
158
|
+
[/:focus(-visible|-within)?\b/, 'focus'],
|
|
159
|
+
[/:active\b|\[aria-pressed(=["']?true["']?)?\]/, 'active'],
|
|
160
|
+
[/:disabled\b|\[disabled\]|\[aria-disabled(=["']?true["']?)?\]|\.is-disabled\b/, 'disabled'],
|
|
161
|
+
[
|
|
162
|
+
/:checked\b|\[aria-(selected|checked|current)(=["']?(true|page|step)["']?)?\]|\.is-(selected|checked)\b|\[data-state=["']?(checked|on|active)["']?\]/,
|
|
163
|
+
'selected',
|
|
164
|
+
],
|
|
165
|
+
[/:visited\b/, 'visited'],
|
|
166
|
+
];
|
|
167
|
+
/** States of a utility class's variants: `hover:`, `group-focus-visible:`, `aria-disabled:`, `data-[state=checked]:`. */
|
|
168
|
+
function variantStates(source) {
|
|
169
|
+
const m = /^((?:[\w-]+(?:\[[^\]]*\])?:)*)/.exec(source);
|
|
170
|
+
const out = new Set();
|
|
171
|
+
for (const v of (m?.[1] ?? '').split(':').filter(Boolean)) {
|
|
172
|
+
if (/hover/.test(v))
|
|
173
|
+
out.add('hover');
|
|
174
|
+
else if (/focus/.test(v))
|
|
175
|
+
out.add('focus');
|
|
176
|
+
else if (/(^|-)active$|pressed/.test(v))
|
|
177
|
+
out.add('active');
|
|
178
|
+
else if (/disabled/.test(v))
|
|
179
|
+
out.add('disabled');
|
|
180
|
+
else if (/checked|selected|current/.test(v))
|
|
181
|
+
out.add('selected');
|
|
182
|
+
else if (/visited/.test(v))
|
|
183
|
+
out.add('visited');
|
|
184
|
+
}
|
|
185
|
+
return [...out];
|
|
186
|
+
}
|
|
187
|
+
const compact = (name) => normalizeName(name).replace(/\./g, '');
|
|
188
|
+
/**
|
|
189
|
+
* The context of a value written in code, for `nearestTokens`: states from the selector or a
|
|
190
|
+
* class's variants, components from the selector's classes (the block of a BEM class) and the file
|
|
191
|
+
* name (`Button.module.css`, `ActionList/Item.tsx`).
|
|
192
|
+
*/
|
|
193
|
+
export function styleContext(at, knowledge) {
|
|
194
|
+
const v = vocabularyOf(knowledge);
|
|
195
|
+
const states = new Set();
|
|
196
|
+
if (at.selector) {
|
|
197
|
+
const sel = at.selector.replace(/:not\([^)]*\)/g, '');
|
|
198
|
+
for (const [re, state] of SELECTOR_STATES)
|
|
199
|
+
if (re.test(sel))
|
|
200
|
+
states.add(state);
|
|
201
|
+
}
|
|
202
|
+
if (at.source)
|
|
203
|
+
for (const s of variantStates(at.source))
|
|
204
|
+
states.add(s);
|
|
205
|
+
const components = new Set();
|
|
206
|
+
const add = (name, isClass) => {
|
|
207
|
+
const c = compact(name);
|
|
208
|
+
const words = normalizeName(name).split('.');
|
|
209
|
+
if (!c || v.generic.has(c) || /^\d/.test(c))
|
|
210
|
+
return;
|
|
211
|
+
// A class that names a state or a role (`.is-active`, `.text`) is not a component.
|
|
212
|
+
if (words.some((w) => v.states.has(w) || v.rest.has(w)) || words[0] === 'is' || words[0] === 'has')
|
|
213
|
+
return;
|
|
214
|
+
if (isClass && Object.values(v.roles).some((re) => re.test(c)))
|
|
215
|
+
return;
|
|
216
|
+
components.add(c);
|
|
217
|
+
};
|
|
218
|
+
for (const cls of at.selector?.match(/\.-?[_a-zA-Z][\w-]*/g) ?? []) {
|
|
219
|
+
const name = cls.slice(1);
|
|
220
|
+
add(name.split(/__|--/)[0], true);
|
|
221
|
+
if (/__|--/.test(name))
|
|
222
|
+
add(name.replace(/--.*$/, ''), true);
|
|
223
|
+
}
|
|
224
|
+
const parts = at.file.split('/');
|
|
225
|
+
const base = parts.at(-1).replace(/(\.(module|styles?|stories|test|spec))*\.[\w]+$/i, '');
|
|
226
|
+
add(base, false);
|
|
227
|
+
// `Button/index.tsx`, `Button/styles.css`: the folder names the component.
|
|
228
|
+
if (parts.length > 1 && v.generic.has(compact(base)))
|
|
229
|
+
add(parts.at(-2), false);
|
|
230
|
+
const ctx = { property: at.property };
|
|
231
|
+
if (states.size)
|
|
232
|
+
ctx.states = [...states].sort();
|
|
233
|
+
if (components.size)
|
|
234
|
+
ctx.components = [...components];
|
|
235
|
+
return ctx;
|
|
236
|
+
}
|
|
237
|
+
/** How a token's name fits the code's states: 2 names the state, 1 says nothing, 0 names another state. */
|
|
238
|
+
function stateScore(words, states, v) {
|
|
239
|
+
const named = new Set(words.map((w) => v.states.get(w)).filter(Boolean));
|
|
240
|
+
if (states.length)
|
|
241
|
+
return states.some((s) => named.has(s)) ? 2 : named.size || words.some((w) => v.rest.has(w)) ? 0 : 1;
|
|
242
|
+
// In the resting state, a token for hover or disabled is the wrong one even with the same value.
|
|
243
|
+
return named.size ? 0 : 1;
|
|
244
|
+
}
|
|
245
|
+
/** Whether a token's name names one of the components: `button` in `button.primary.bgColor`. */
|
|
246
|
+
function componentScore(words, components) {
|
|
247
|
+
if (!components.length)
|
|
248
|
+
return 0;
|
|
249
|
+
for (let i = 0; i < words.length; i++) {
|
|
250
|
+
let joined = '';
|
|
251
|
+
for (let j = i; j < Math.min(words.length, i + 4); j++) {
|
|
252
|
+
joined += words[j];
|
|
253
|
+
if (components.includes(joined))
|
|
254
|
+
return 1;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return 0;
|
|
258
|
+
}
|
|
259
|
+
const segments = (id) => id.split('.').length;
|
|
141
260
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
261
|
+
* How well a token's name says it is made for the role: 2 when the name starts with it (`bgColor.*`,
|
|
262
|
+
* a general token), 1 when it says so further on (`selection.bgColor`), -1 when it names another
|
|
263
|
+
* role, else 0.
|
|
145
264
|
*/
|
|
146
|
-
|
|
265
|
+
function roleScore(id, role, v) {
|
|
266
|
+
if (!role)
|
|
267
|
+
return 0;
|
|
268
|
+
const name = normalizeName(id);
|
|
269
|
+
const roles = v.roles;
|
|
270
|
+
if (roles[role].test(name.split('.')[0]))
|
|
271
|
+
return 2;
|
|
272
|
+
if (roles[role].test(name))
|
|
273
|
+
return 1;
|
|
274
|
+
return Object.keys(roles).some((r) => r !== role && roles[r].test(name)) ? -1 : 0;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Tokens nearest to a value in one context. Deprecated ones go last. Among exact matches, the name
|
|
278
|
+
* decides, in this order:
|
|
279
|
+
* - a token made for another role goes last (`borderColor.accent` for `color`);
|
|
280
|
+
* - the code's state: `control.bgColor.hover` in a `:hover` rule, and in a rule without one, not
|
|
281
|
+
* a token for hover or disabled;
|
|
282
|
+
* - the code's component: `button.bgColor.rest` in `.button` or `Button.tsx`;
|
|
283
|
+
* - the property's role, as the first part of the name before deeper in it (`fgColor.accent`
|
|
284
|
+
* before `selection.fgColor`).
|
|
285
|
+
* Among equally close tokens, the ones that reference another token (semantic tokens, which follow
|
|
286
|
+
* themes) come before the primitives that hold the value; then general tokens before component ones
|
|
287
|
+
* (`fgColor.accent` before `button.outline.fgColor.rest`), and the one others build on first.
|
|
288
|
+
* `context` is a CSS property or a whole `StyleContext` (see `styleContext`); a knowledge pack adds
|
|
289
|
+
* to the words names are read by.
|
|
290
|
+
*/
|
|
291
|
+
export function nearestTokens(graph, parsed, input, limit, context, knowledge) {
|
|
292
|
+
const v = vocabularyOf(knowledge);
|
|
293
|
+
const ctx = typeof context === 'string' ? { property: context } : (context ?? {});
|
|
294
|
+
const role = ctx.property ? roleOfProperty(ctx.property) : undefined;
|
|
295
|
+
const states = ctx.states ?? [];
|
|
296
|
+
const components = ctx.components ?? [];
|
|
147
297
|
const types = COMPATIBLE[parsed.type] ?? [parsed.type];
|
|
148
298
|
const out = [];
|
|
149
299
|
const depth = new Map();
|
|
@@ -159,10 +309,35 @@ export function nearestTokens(graph, parsed, input, limit) {
|
|
|
159
309
|
out.push(m);
|
|
160
310
|
depth.set(m, graph.chain(token.id, input).length);
|
|
161
311
|
}
|
|
312
|
+
// How a name fits the context, worked out once per exact match: [role ok, state, component, role].
|
|
313
|
+
const fits = new Map();
|
|
314
|
+
const fit = (m) => {
|
|
315
|
+
let f = fits.get(m);
|
|
316
|
+
if (!f) {
|
|
317
|
+
const words = normalizeName(m.token.id).split('.');
|
|
318
|
+
const r = roleScore(m.token.id, role, v);
|
|
319
|
+
f = [r < 0 ? 0 : 1, stateScore(words, states, v), componentScore(words, components), r];
|
|
320
|
+
fits.set(m, f);
|
|
321
|
+
}
|
|
322
|
+
return f;
|
|
323
|
+
};
|
|
324
|
+
const byFit = (a, b) => {
|
|
325
|
+
if (!a.exact || !b.exact)
|
|
326
|
+
return 0;
|
|
327
|
+
const fa = fit(a);
|
|
328
|
+
const fb = fit(b);
|
|
329
|
+
for (let i = 0; i < fa.length; i++)
|
|
330
|
+
if (fa[i] !== fb[i])
|
|
331
|
+
return fb[i] - fa[i];
|
|
332
|
+
return 0;
|
|
333
|
+
};
|
|
162
334
|
return out
|
|
163
335
|
.sort((a, b) => Number(a.token.deprecated !== null) - Number(b.token.deprecated !== null) ||
|
|
336
|
+
byFit(a, b) ||
|
|
164
337
|
a.distance - b.distance ||
|
|
165
|
-
depth.get(b) - depth.get(a) ||
|
|
338
|
+
Number(depth.get(b) > 1) - Number(depth.get(a) > 1) ||
|
|
339
|
+
segments(a.token.id) - segments(b.token.id) ||
|
|
340
|
+
depth.get(a) - depth.get(b) ||
|
|
166
341
|
a.token.id.localeCompare(b.token.id))
|
|
167
342
|
.slice(0, limit);
|
|
168
343
|
}
|
package/dist/code.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.js","sourceRoot":"","sources":["../src/code.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"code.js","sourceRoot":"","sources":["../src/code.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from '@dsgraph/schema';
|
|
2
|
-
export { type CodeIndex, type CodeLoc, type Coverage, coverageOf, formatCoverage, type NearestToken, nearestTokens, type StyleLiteral, type TokenUse, VarMatcher, valueDistance, varNames, } from './code.js';
|
|
2
|
+
export { type CodeIndex, type CodeLoc, type Coverage, coverageOf, formatCoverage, type NearestToken, nearestTokens, roleOfProperty, type StyleContext, type StyleLiteral, styleContext, type TokenUse, VarMatcher, valueDistance, varNames, } from './code.js';
|
|
3
3
|
export { DiagnosticBag } from './diagnostics.js';
|
|
4
4
|
export { type DiffOptions, diff } from './diff/diff.js';
|
|
5
5
|
export { detectRenames, pathSimilarity, stableIdOf } from './diff/rename.js';
|
|
@@ -10,6 +10,7 @@ export { type ResolvedDoc, type ResolvedToken, resolveDoc } from './dtcg/resolve
|
|
|
10
10
|
export { DsGraph, type TokenFilter } from './graph.js';
|
|
11
11
|
export { type ChangeImpact, type Impact, type ImpactSite, impactOf } from './impact.js';
|
|
12
12
|
export { parseJsonLenient } from './json.js';
|
|
13
|
+
export { type CompiledVocabulary, DEFAULT_VOCABULARY, type Knowledge, type Role, readKnowledge, type Vocabulary, vocabularyOf, } from './knowledge.js';
|
|
13
14
|
export { NOT_TOKENS } from './not-tokens.js';
|
|
14
15
|
export { cssVarToName, globToRegExp, matchGlob, matchPath, normalizeName, tokenId } from './path.js';
|
|
15
16
|
export { getAt, parsePointer, toPointer } from './pointer.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from '@dsgraph/schema';
|
|
2
|
-
export { coverageOf, formatCoverage, nearestTokens, VarMatcher, valueDistance, varNames, } from './code.js';
|
|
2
|
+
export { coverageOf, formatCoverage, nearestTokens, roleOfProperty, styleContext, VarMatcher, valueDistance, varNames, } from './code.js';
|
|
3
3
|
export { DiagnosticBag } from './diagnostics.js';
|
|
4
4
|
export { diff } from './diff/diff.js';
|
|
5
5
|
export { detectRenames, pathSimilarity, stableIdOf } from './diff/rename.js';
|
|
@@ -10,6 +10,7 @@ export { resolveDoc } from './dtcg/resolve.js';
|
|
|
10
10
|
export { DsGraph } from './graph.js';
|
|
11
11
|
export { impactOf } from './impact.js';
|
|
12
12
|
export { parseJsonLenient } from './json.js';
|
|
13
|
+
export { DEFAULT_VOCABULARY, readKnowledge, vocabularyOf, } from './knowledge.js';
|
|
13
14
|
export { NOT_TOKENS } from './not-tokens.js';
|
|
14
15
|
export { cssVarToName, globToRegExp, matchGlob, matchPath, normalizeName, tokenId } from './path.js';
|
|
15
16
|
export { getAt, parsePointer, toPointer } from './pointer.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAIL,UAAU,EACV,cAAc,EAEd,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAIL,UAAU,EACV,cAAc,EAEd,aAAa,EACb,cAAc,EAGd,YAAY,EAEZ,UAAU,EACV,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAoB,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAqB,MAAM,kBAAkB,CAAA;AACpG,OAAO,EAAgB,eAAe,EAAgC,MAAM,mBAAmB,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAwC,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpF,OAAO,EAAE,OAAO,EAAoB,MAAM,YAAY,CAAA;AACtD,OAAO,EAAmD,QAAQ,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAEL,kBAAkB,EAGlB,aAAa,EAEb,YAAY,GACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACpG,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAuB,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EACL,YAAY,EACZ,eAAe,EAEf,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAGlB,aAAa,GACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,EAGV,IAAI,GAEL,MAAM,WAAW,CAAA;AAClB,OAAO,EAAqB,aAAa,EAAE,SAAS,EAAoB,MAAM,eAAe,CAAA;AAC7F,OAAO,EAAE,QAAQ,EAAe,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,EACL,YAAY,EAGZ,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACb,UAAU,EACV,QAAQ,EACR,OAAO,GACR,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAA2C,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC7G,OAAO,EAAuB,cAAc,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAGL,kBAAkB,EAClB,YAAY,EACZ,WAAW,GAEZ,MAAM,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Words dsgraph reads token and file names by. The engine carries a small neutral vocabulary that
|
|
3
|
+
* any front-end developer would write; a knowledge pack (`dsgraph/knowledge@1`) adds to it. The
|
|
4
|
+
* pack is data, not code: the engine works the same without it, with fewer names understood.
|
|
5
|
+
*/
|
|
6
|
+
/** What a color is for, by words in a token's name. */
|
|
7
|
+
export type Role = 'text' | 'background' | 'border' | 'shadow';
|
|
8
|
+
export interface Vocabulary {
|
|
9
|
+
/** Words that name a role: `fg` and `text` for text, `bg` and `surface` for a background. */
|
|
10
|
+
roles: Record<Role, string[]>;
|
|
11
|
+
/** Words in a token's name that name a state, and the state: `hover` → `hover`. */
|
|
12
|
+
states: Record<string, string>;
|
|
13
|
+
/** Words that name the resting state: `button.bgColor.rest` is for no state. */
|
|
14
|
+
rest: string[];
|
|
15
|
+
/** File, folder and class names that say nothing about the component: `index`, `styles`, `root`. */
|
|
16
|
+
generic: string[];
|
|
17
|
+
}
|
|
18
|
+
/** A knowledge pack: what is known about how design systems name things, beyond the defaults. */
|
|
19
|
+
export interface Knowledge {
|
|
20
|
+
schema: 'dsgraph/knowledge@1';
|
|
21
|
+
/** The pack's own version. */
|
|
22
|
+
version: string;
|
|
23
|
+
/** Added to the default vocabulary, never replacing it. */
|
|
24
|
+
vocabulary?: {
|
|
25
|
+
roles?: Partial<Record<Role, string[]>>;
|
|
26
|
+
states?: Record<string, string>;
|
|
27
|
+
rest?: string[];
|
|
28
|
+
generic?: string[];
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export declare const DEFAULT_VOCABULARY: Vocabulary;
|
|
32
|
+
/** A vocabulary ready to match normalized names (`bg.color.hover`). */
|
|
33
|
+
export interface CompiledVocabulary {
|
|
34
|
+
roles: Record<Role, RegExp>;
|
|
35
|
+
states: Map<string, string>;
|
|
36
|
+
rest: Set<string>;
|
|
37
|
+
generic: Set<string>;
|
|
38
|
+
}
|
|
39
|
+
/** Checks that a value is a knowledge pack dsgraph can read; throws a readable error if not. */
|
|
40
|
+
export declare function readKnowledge(value: unknown): Knowledge;
|
|
41
|
+
/** The default vocabulary, with a pack's words added. */
|
|
42
|
+
export declare function vocabularyOf(knowledge?: Knowledge): CompiledVocabulary;
|
|
43
|
+
//# sourceMappingURL=knowledge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../src/knowledge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uDAAuD;AACvD,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE9D,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,gFAAgF;IAChF,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,oGAAoG;IACpG,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,iGAAiG;AACjG,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;CACF;AAED,eAAO,MAAM,kBAAkB,EAAE,UAqDhC,CAAA;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACrB;AAoBD,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAWvD;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,kBAAkB,CAkBtE"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Words dsgraph reads token and file names by. The engine carries a small neutral vocabulary that
|
|
3
|
+
* any front-end developer would write; a knowledge pack (`dsgraph/knowledge@1`) adds to it. The
|
|
4
|
+
* pack is data, not code: the engine works the same without it, with fewer names understood.
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_VOCABULARY = {
|
|
7
|
+
roles: {
|
|
8
|
+
text: ['fg', 'foreground', 'text', 'ink', 'content', 'on', 'link', 'icon'],
|
|
9
|
+
background: ['bg', 'background', 'surface', 'canvas', 'fill', 'container', 'layer', 'backdrop'],
|
|
10
|
+
border: ['border', 'stroke', 'outline', 'divider', 'separator', 'ring'],
|
|
11
|
+
shadow: ['shadow', 'elevation'],
|
|
12
|
+
},
|
|
13
|
+
states: {
|
|
14
|
+
hover: 'hover',
|
|
15
|
+
focus: 'focus',
|
|
16
|
+
active: 'active',
|
|
17
|
+
disabled: 'disabled',
|
|
18
|
+
selected: 'selected',
|
|
19
|
+
visited: 'visited',
|
|
20
|
+
},
|
|
21
|
+
rest: ['rest'],
|
|
22
|
+
generic: [
|
|
23
|
+
'index',
|
|
24
|
+
'style',
|
|
25
|
+
'styles',
|
|
26
|
+
'main',
|
|
27
|
+
'app',
|
|
28
|
+
'global',
|
|
29
|
+
'globals',
|
|
30
|
+
'base',
|
|
31
|
+
'reset',
|
|
32
|
+
'util',
|
|
33
|
+
'utils',
|
|
34
|
+
'utilities',
|
|
35
|
+
'common',
|
|
36
|
+
'shared',
|
|
37
|
+
'theme',
|
|
38
|
+
'themes',
|
|
39
|
+
'tokens',
|
|
40
|
+
'variables',
|
|
41
|
+
'vars',
|
|
42
|
+
'mixins',
|
|
43
|
+
'snippet',
|
|
44
|
+
'root',
|
|
45
|
+
'container',
|
|
46
|
+
'wrapper',
|
|
47
|
+
'inner',
|
|
48
|
+
'src',
|
|
49
|
+
'lib',
|
|
50
|
+
'components',
|
|
51
|
+
'ui',
|
|
52
|
+
'css',
|
|
53
|
+
'scss',
|
|
54
|
+
'sass',
|
|
55
|
+
'assets',
|
|
56
|
+
'pages',
|
|
57
|
+
'views',
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
const ROLES = ['text', 'background', 'border', 'shadow'];
|
|
61
|
+
const literal = (w) => w.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
62
|
+
const words = (list) => list.map((w) => w.toLowerCase());
|
|
63
|
+
function compile(v) {
|
|
64
|
+
const roles = {};
|
|
65
|
+
for (const r of ROLES)
|
|
66
|
+
roles[r] = new RegExp(`(^|\\.)(${words(v.roles[r]).map(literal).join('|')})(\\.|$)`);
|
|
67
|
+
return {
|
|
68
|
+
roles,
|
|
69
|
+
states: new Map(Object.entries(v.states).map(([w, s]) => [w.toLowerCase(), s])),
|
|
70
|
+
rest: new Set(words(v.rest)),
|
|
71
|
+
generic: new Set(words(v.generic)),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const BASE = compile(DEFAULT_VOCABULARY);
|
|
75
|
+
const compiled = new WeakMap();
|
|
76
|
+
/** Checks that a value is a knowledge pack dsgraph can read; throws a readable error if not. */
|
|
77
|
+
export function readKnowledge(value) {
|
|
78
|
+
const k = value;
|
|
79
|
+
if (!k || typeof k !== 'object' || k.schema !== 'dsgraph/knowledge@1')
|
|
80
|
+
throw new Error('Not a dsgraph knowledge pack: expected schema "dsgraph/knowledge@1"');
|
|
81
|
+
const v = k.vocabulary ?? {};
|
|
82
|
+
const lists = [...Object.values(v.roles ?? {}), v.rest ?? [], v.generic ?? []];
|
|
83
|
+
if (!lists.every((l) => Array.isArray(l) && l.every((w) => typeof w === 'string')))
|
|
84
|
+
throw new Error('Knowledge pack: vocabulary lists must be arrays of words');
|
|
85
|
+
if (!Object.values(v.states ?? {}).every((s) => typeof s === 'string'))
|
|
86
|
+
throw new Error('Knowledge pack: vocabulary.states maps words to state names');
|
|
87
|
+
return k;
|
|
88
|
+
}
|
|
89
|
+
/** The default vocabulary, with a pack's words added. */
|
|
90
|
+
export function vocabularyOf(knowledge) {
|
|
91
|
+
if (!knowledge?.vocabulary)
|
|
92
|
+
return BASE;
|
|
93
|
+
let c = compiled.get(knowledge);
|
|
94
|
+
if (!c) {
|
|
95
|
+
const add = knowledge.vocabulary;
|
|
96
|
+
const d = DEFAULT_VOCABULARY;
|
|
97
|
+
c = compile({
|
|
98
|
+
roles: Object.fromEntries(ROLES.map((r) => [r, [...d.roles[r], ...(add.roles?.[r] ?? [])]])),
|
|
99
|
+
states: { ...d.states, ...add.states },
|
|
100
|
+
rest: [...d.rest, ...(add.rest ?? [])],
|
|
101
|
+
generic: [...d.generic, ...(add.generic ?? [])],
|
|
102
|
+
});
|
|
103
|
+
compiled.set(knowledge, c);
|
|
104
|
+
}
|
|
105
|
+
return c;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../src/knowledge.ts"],"names":[],"mappings":"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"}
|
package/dist/snapshot.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface BuildOptions {
|
|
|
14
14
|
diagnostics?: DiagnosticBag;
|
|
15
15
|
meta?: Record<string, unknown>;
|
|
16
16
|
}
|
|
17
|
-
export declare const GENERATOR = "dsgraph@0.
|
|
17
|
+
export declare const GENERATOR = "dsgraph@0.7.0";
|
|
18
18
|
/** Builds a canonical snapshot by resolving every permutation of contexts (Resolver 2025.10). */
|
|
19
19
|
export declare function buildSnapshot(system: TokenSystem, opts?: BuildOptions): Promise<Snapshot>;
|
|
20
20
|
//# sourceMappingURL=snapshot.d.ts.map
|
package/dist/snapshot.js
CHANGED
|
@@ -3,7 +3,7 @@ import { DiagnosticBag } from './diagnostics.js';
|
|
|
3
3
|
import { matchPath } from './path.js';
|
|
4
4
|
import { createResolver } from './resolver/resolve.js';
|
|
5
5
|
import { defaultInput, enumerateInputs, modifiersOf, } from './resolver/system.js';
|
|
6
|
-
export const GENERATOR = 'dsgraph@0.
|
|
6
|
+
export const GENERATOR = 'dsgraph@0.7.0';
|
|
7
7
|
const inputKey = (input) => canonicalize(input);
|
|
8
8
|
/** Builds a canonical snapshot by resolving every permutation of contexts (Resolver 2025.10). */
|
|
9
9
|
export async function buildSnapshot(system, opts = {}) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsgraph/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Design-system graph core: DTCG 2025.10 + Resolver parsing, canonical values, snapshots, diff and semver. Isomorphic (browser + Node).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"semver"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@dsgraph/schema": "0.
|
|
30
|
+
"@dsgraph/schema": "0.7.0",
|
|
31
31
|
"culori": "4.0.2",
|
|
32
32
|
"json5": "2.2.3"
|
|
33
33
|
},
|