@dsgraph/core 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/code.d.ts ADDED
@@ -0,0 +1,85 @@
1
+ import { type Token } from '@dsgraph/schema';
2
+ import type { DsGraph } from './graph.js';
3
+ import type { Input } from './resolver/system.js';
4
+ /**
5
+ * What a project's code does with the design system: where it reads tokens (`var(--…)`) and where
6
+ * it writes values by hand. Built by a code scanner (`scanStyles` in `@dsgraph/adapters`) and kept
7
+ * apart from the token snapshot: the same code is checked against several versions of the tokens.
8
+ */
9
+ export interface CodeIndex {
10
+ /** Files that were read, relative to the project root. */
11
+ files: string[];
12
+ uses: TokenUse[];
13
+ literals: StyleLiteral[];
14
+ /** Files that could not be read or parsed. */
15
+ skipped: Array<{
16
+ file: string;
17
+ message: string;
18
+ }>;
19
+ }
20
+ export interface CodeLoc {
21
+ file: string;
22
+ line: number;
23
+ column: number;
24
+ }
25
+ /** One `var(--name)` in a style. */
26
+ export interface TokenUse extends CodeLoc {
27
+ /** The custom property as written, `--color-accent`. */
28
+ name: string;
29
+ /** CSS property it is used in (`color`, `padding`, or a custom property it defines). */
30
+ property: string;
31
+ selector?: string;
32
+ /** Fallback written after the name, `var(--x, #fff)`. */
33
+ fallback?: string;
34
+ }
35
+ /** A value written by hand where a token could be used. */
36
+ export interface StyleLiteral extends CodeLoc {
37
+ property: string;
38
+ selector?: string;
39
+ /** The value as written, `#3366ff`, `12px`. */
40
+ text: string;
41
+ type: 'color' | 'dimension';
42
+ /** Canonical DTCG value. */
43
+ value: unknown;
44
+ }
45
+ /**
46
+ * Matches custom property names from code to tokens. Ids of CSS tokens match as written; DTCG paths
47
+ * match by normalized name (`--color-blue-500` ↔ `color.blue.500`). A prefix (`--ds-`) is taken from
48
+ * `prefix`, or learned: a leading segment that several names share and that, removed, names tokens.
49
+ */
50
+ export declare class VarMatcher {
51
+ private readonly graph;
52
+ private readonly prefixes;
53
+ private suffixes?;
54
+ constructor(graph: DsGraph, names?: Iterable<string>, prefix?: string);
55
+ /** The token a custom property names, or undefined. */
56
+ token(name: string): Token | undefined;
57
+ /** Whether a custom property is meant to be a design-system variable (carries a known prefix). */
58
+ isSystemName(name: string): boolean;
59
+ get prefix(): string | undefined;
60
+ /**
61
+ * A token by normalized name: the whole path, or else the end of exactly one path. Exports that
62
+ * group variables by category (`colors.--gray-9`, `spacing.space.4`) match their names in code.
63
+ */
64
+ private byName;
65
+ }
66
+ /** How far apart two values of a type are, in the unit people think in; undefined when not comparable. */
67
+ export declare function valueDistance(type: string, a: unknown, b: unknown, remBase?: number): number | undefined;
68
+ export interface NearestToken {
69
+ token: Token;
70
+ value: unknown;
71
+ /** ΔE for colors, px for dimensions, ms for durations. */
72
+ distance: number;
73
+ /** Within what people cannot tell apart: ΔE < 1, < 0.5px; equal otherwise. */
74
+ exact: boolean;
75
+ }
76
+ /**
77
+ * Tokens nearest to a value in one context. Deprecated ones go last; among equally close tokens,
78
+ * the ones that reference another token (semantic tokens, which follow themes) come before the
79
+ * primitives that hold the value.
80
+ */
81
+ export declare function nearestTokens(graph: DsGraph, parsed: {
82
+ type: string;
83
+ value: unknown;
84
+ }, input: Input, limit: number): NearestToken[];
85
+ //# sourceMappingURL=code.d.ts.map
@@ -0,0 +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;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAIjD;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,8CAA8C;IAC9C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,oCAAoC;AACpC,MAAM,WAAW,QAAS,SAAQ,OAAO;IACvC,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,2DAA2D;AAC3D,MAAM,WAAW,YAAa,SAAQ,OAAO;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,GAAG,WAAW,CAAA;IAC3B,4BAA4B;IAC5B,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;;;GAIG;AACH,qBAAa,UAAU;IAKnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAsB;IAEvC,YACmB,KAAK,EAAE,OAAO,EAC/B,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAM,EAC5B,MAAM,CAAC,EAAE,MAAM,EAKhB;IAED,uDAAuD;IACvD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CASrC;IAED,kGAAkG;IAClG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGlC;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED;;;OAGG;IACH,OAAO,CAAC,MAAM;CAgBf;AA4BD,0GAA0G;AAC1G,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,SAAM,GAAG,MAAM,GAAG,SAAS,CAcrG;AAQD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAA;IAChB,8EAA8E;IAC9E,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EACxC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,GACZ,YAAY,EAAE,CAuBhB"}
package/dist/code.js ADDED
@@ -0,0 +1,139 @@
1
+ import { canonicalize } from '@dsgraph/schema';
2
+ import { normalizeName } from './path.js';
3
+ import { deltaEOK } from './values/color.js';
4
+ import { toPx } from './values/dimension.js';
5
+ /**
6
+ * Matches custom property names from code to tokens. Ids of CSS tokens match as written; DTCG paths
7
+ * match by normalized name (`--color-blue-500` ↔ `color.blue.500`). A prefix (`--ds-`) is taken from
8
+ * `prefix`, or learned: a leading segment that several names share and that, removed, names tokens.
9
+ */
10
+ export class VarMatcher {
11
+ graph;
12
+ prefixes;
13
+ suffixes;
14
+ constructor(graph, names = [], prefix) {
15
+ this.graph = graph;
16
+ this.prefixes = prefix
17
+ ? [normalizeName(prefix.replace(/^--/, ''))]
18
+ : learnPrefixes(graph, names, (n) => this.byName(n));
19
+ }
20
+ /** The token a custom property names, or undefined. */
21
+ token(name) {
22
+ const bare = name.replace(/^--/, '');
23
+ const exact = this.graph.token(bare);
24
+ if (exact)
25
+ return exact;
26
+ const n = normalizeName(bare);
27
+ const direct = this.byName(n);
28
+ if (direct)
29
+ return direct;
30
+ for (const p of this.prefixes)
31
+ if (n.startsWith(`${p}.`))
32
+ return this.byName(n.slice(p.length + 1));
33
+ return undefined;
34
+ }
35
+ /** Whether a custom property is meant to be a design-system variable (carries a known prefix). */
36
+ isSystemName(name) {
37
+ const n = normalizeName(name.replace(/^--/, ''));
38
+ return this.prefixes.some((p) => n.startsWith(`${p}.`));
39
+ }
40
+ get prefix() {
41
+ return this.prefixes[0];
42
+ }
43
+ /**
44
+ * A token by normalized name: the whole path, or else the end of exactly one path. Exports that
45
+ * group variables by category (`colors.--gray-9`, `spacing.space.4`) match their names in code.
46
+ */
47
+ byName(n) {
48
+ const hits = this.graph.byCssVar(`--${n}`);
49
+ if (hits.length)
50
+ return hits.length === 1 ? hits[0] : undefined;
51
+ if (!this.suffixes) {
52
+ this.suffixes = new Map();
53
+ for (const t of this.graph.tokens()) {
54
+ const segs = normalizeName(t.id).split('.');
55
+ for (let i = 1; i < segs.length; i++) {
56
+ const key = segs.slice(i).join('.');
57
+ this.suffixes.set(key, [...(this.suffixes.get(key) ?? []), t]);
58
+ }
59
+ }
60
+ }
61
+ const tail = this.suffixes.get(n);
62
+ return tail?.length === 1 ? tail[0] : undefined;
63
+ }
64
+ }
65
+ /** Leading segments that, removed, turn most names that carry them into token names. */
66
+ function learnPrefixes(graph, names, byName) {
67
+ const stats = new Map();
68
+ for (const name of new Set(names)) {
69
+ const n = normalizeName(name.replace(/^--/, ''));
70
+ if (graph.token(name.replace(/^--/, '')) || byName(n))
71
+ continue;
72
+ const dot = n.indexOf('.');
73
+ if (dot < 0)
74
+ continue;
75
+ const head = n.slice(0, dot);
76
+ const s = stats.get(head) ?? { total: 0, hits: 0 };
77
+ s.total++;
78
+ if (byName(n.slice(dot + 1)))
79
+ s.hits++;
80
+ stats.set(head, s);
81
+ }
82
+ return [...stats]
83
+ .filter(([, s]) => s.hits >= 2 && s.hits / s.total >= 0.5)
84
+ .sort((a, b) => b[1].hits - a[1].hits || a[0].localeCompare(b[0]))
85
+ .map(([p]) => p);
86
+ }
87
+ const REM = 16;
88
+ /** How far apart two values of a type are, in the unit people think in; undefined when not comparable. */
89
+ export function valueDistance(type, a, b, remBase = REM) {
90
+ if (type === 'color')
91
+ return deltaEOK(a, b);
92
+ if (type === 'dimension') {
93
+ const pa = toPx(a, remBase);
94
+ const pb = toPx(b, remBase);
95
+ return pa !== undefined && pb !== undefined ? Math.abs(pa - pb) : undefined;
96
+ }
97
+ if (type === 'duration') {
98
+ const ms = (d) => (d.unit === 's' ? d.value * 1000 : d.value);
99
+ return Math.abs(ms(a) - ms(b));
100
+ }
101
+ if (typeof a === 'number' && typeof b === 'number')
102
+ return Math.abs(a - b);
103
+ // Font families, cubic béziers and the like are either the same or not comparable.
104
+ return canonicalize(a) === canonicalize(b) ? 0 : undefined;
105
+ }
106
+ /** Types a value can stand for: a bare number may be a font weight. */
107
+ const COMPATIBLE = {
108
+ number: ['number', 'fontWeight'],
109
+ fontWeight: ['fontWeight', 'number'],
110
+ };
111
+ /**
112
+ * Tokens nearest to a value in one context. Deprecated ones go last; among equally close tokens,
113
+ * the ones that reference another token (semantic tokens, which follow themes) come before the
114
+ * primitives that hold the value.
115
+ */
116
+ export function nearestTokens(graph, parsed, input, limit) {
117
+ const types = COMPATIBLE[parsed.type] ?? [parsed.type];
118
+ const out = [];
119
+ const depth = new Map();
120
+ for (const token of graph.tokens({ type: types })) {
121
+ const value = graph.value(token.id, input);
122
+ if (value === undefined || value === null)
123
+ continue;
124
+ const d = valueDistance(token.type === parsed.type ? parsed.type : token.type, parsed.value, value);
125
+ if (d === undefined)
126
+ continue;
127
+ const exact = parsed.type === 'color' ? d < 1 : parsed.type === 'dimension' ? d < 0.5 : d === 0;
128
+ const m = { token, value, distance: Math.round(d * 100) / 100, exact };
129
+ out.push(m);
130
+ depth.set(m, graph.chain(token.id, input).length);
131
+ }
132
+ return out
133
+ .sort((a, b) => Number(a.token.deprecated !== null) - Number(b.token.deprecated !== null) ||
134
+ a.distance - b.distance ||
135
+ depth.get(b) - depth.get(a) ||
136
+ a.token.id.localeCompare(b.token.id))
137
+ .slice(0, limit);
138
+ }
139
+ //# sourceMappingURL=code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.js","sourceRoot":"","sources":["../src/code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { Change, Changeset, Level } from '@dsgraph/schema';
2
+ import { type CodeIndex, type TokenUse } from './code.js';
3
+ import type { DsGraph } from './graph.js';
4
+ /** A place in the code that a change reaches: the `var()` and the token it reads. */
5
+ export interface ImpactSite extends TokenUse {
6
+ /** The token the code reads; the changed token itself or one that takes its value from it. */
7
+ token: string;
8
+ }
9
+ export interface ChangeImpact {
10
+ change: string;
11
+ kind: Change['kind'];
12
+ target: string;
13
+ level: Level;
14
+ /** `breaks`: the variable is gone (removed, renamed, missing in a context, new type); `changes`: it looks different. */
15
+ effect: 'breaks' | 'changes';
16
+ sites: ImpactSite[];
17
+ }
18
+ export interface Impact {
19
+ changes: ChangeImpact[];
20
+ /** Places that break and places that look different, each counted once. */
21
+ breaks: number;
22
+ looksDifferent: number;
23
+ files: string[];
24
+ }
25
+ /**
26
+ * Where a changeset reaches into the code (spec section 5.4): for every direct change, the `var()`
27
+ * uses of the changed token and of every token that takes its value from it. Removed and renamed
28
+ * tokens are followed in the base graph, where the code's names still point at them; the rest in
29
+ * the head. Sorted by effect, then by how many places a change reaches.
30
+ */
31
+ export declare function impactOf(cs: Changeset, base: DsGraph, head: DsGraph, code: CodeIndex, opts?: {
32
+ prefix?: string;
33
+ }): Impact;
34
+ //# sourceMappingURL=impact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../src/impact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAc,MAAM,WAAW,CAAA;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,qFAAqF;AACrF,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,8FAA8F;IAC9F,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,KAAK,CAAA;IACZ,wHAAwH;IACxH,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAoCD;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,SAAS,EACf,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,MAAM,CAgDR"}
package/dist/impact.js ADDED
@@ -0,0 +1,83 @@
1
+ import { VarMatcher } from './code.js';
2
+ const BREAKS = new Set([
3
+ 'token.removed',
4
+ 'token.renamed',
5
+ 'token.missing-in-context',
6
+ 'token.type-changed',
7
+ ]);
8
+ const IGNORED = new Set([
9
+ 'token.added',
10
+ 'token.notation-changed',
11
+ 'token.description-changed',
12
+ 'token.extensions-changed',
13
+ 'token.undeprecated',
14
+ 'token.contexts-changed',
15
+ // Deprecation does not change what the code gets; `usage/deprecated` reports those uses.
16
+ 'token.deprecated',
17
+ ]);
18
+ /** Uses of each token in a graph, by token id. */
19
+ function usesByToken(graph, code, prefix) {
20
+ const vars = new VarMatcher(graph, code.uses.map((u) => u.name), prefix);
21
+ const out = new Map();
22
+ for (const u of code.uses) {
23
+ const t = vars.token(u.name);
24
+ if (t)
25
+ out.set(t.id, [...(out.get(t.id) ?? []), u]);
26
+ }
27
+ return out;
28
+ }
29
+ const siteKey = (s) => `${s.file}:${s.line}:${s.column}:${s.name}`;
30
+ /**
31
+ * Where a changeset reaches into the code (spec section 5.4): for every direct change, the `var()`
32
+ * uses of the changed token and of every token that takes its value from it. Removed and renamed
33
+ * tokens are followed in the base graph, where the code's names still point at them; the rest in
34
+ * the head. Sorted by effect, then by how many places a change reaches.
35
+ */
36
+ export function impactOf(cs, base, head, code, opts = {}) {
37
+ const inBase = usesByToken(base, code, opts.prefix);
38
+ const inHead = usesByToken(head, code, opts.prefix);
39
+ const changes = [];
40
+ const broken = new Set();
41
+ const different = new Set();
42
+ const files = new Set();
43
+ for (const c of cs.changes) {
44
+ if (c.origin !== 'direct' ||
45
+ IGNORED.has(c.kind) ||
46
+ c.kind.startsWith('context.') ||
47
+ c.kind.startsWith('modifier.'))
48
+ continue;
49
+ const gone = c.kind === 'token.removed' || c.kind === 'token.renamed';
50
+ const graph = gone ? base : head;
51
+ const index = gone ? inBase : inHead;
52
+ const root = c.kind === 'token.renamed' ? (c.from ?? c.target) : c.target;
53
+ // A removed or renamed token breaks only its own uses: tokens that referenced it are changes of their own.
54
+ const reached = gone ? [root] : [root, ...graph.dependents(root, { transitive: true })];
55
+ const sites = [];
56
+ const seen = new Set();
57
+ for (const id of reached)
58
+ for (const u of index.get(id) ?? []) {
59
+ const k = siteKey(u);
60
+ if (seen.has(k))
61
+ continue;
62
+ seen.add(k);
63
+ sites.push({ ...u, token: id });
64
+ }
65
+ if (sites.length === 0)
66
+ continue;
67
+ const effect = BREAKS.has(c.kind) ? 'breaks' : 'changes';
68
+ for (const s of sites) {
69
+ ;
70
+ (effect === 'breaks' ? broken : different).add(siteKey(s));
71
+ files.add(s.file);
72
+ }
73
+ sites.sort((a, b) => a.file.localeCompare(b.file) || a.line - b.line || a.column - b.column);
74
+ changes.push({ change: c.id, kind: c.kind, target: c.target, level: c.level, effect, sites });
75
+ }
76
+ for (const k of broken)
77
+ different.delete(k);
78
+ changes.sort((a, b) => Number(a.effect === 'changes') - Number(b.effect === 'changes') ||
79
+ b.sites.length - a.sites.length ||
80
+ a.target.localeCompare(b.target));
81
+ return { changes, breaks: broken.size, looksDifferent: different.size, files: [...files].sort() };
82
+ }
83
+ //# sourceMappingURL=impact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact.js","sourceRoot":"","sources":["../src/impact.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from '@dsgraph/schema';
2
+ export { type CodeIndex, type CodeLoc, type NearestToken, nearestTokens, type StyleLiteral, type TokenUse, VarMatcher, valueDistance, } from './code.js';
2
3
  export { DiagnosticBag } from './diagnostics.js';
3
4
  export { type DiffOptions, diff } from './diff/diff.js';
4
5
  export { detectRenames, pathSimilarity, stableIdOf } from './diff/rename.js';
@@ -7,13 +8,15 @@ export { type FlatDoc, flattenDocument, type RawGroup, type RawToken } from './d
7
8
  export { expandExtends, mergeDocs } from './dtcg/merge.js';
8
9
  export { type ResolvedDoc, type ResolvedToken, resolveDoc } from './dtcg/resolve.js';
9
10
  export { DsGraph, type TokenFilter } from './graph.js';
11
+ export { type ChangeImpact, type Impact, type ImpactSite, impactOf } from './impact.js';
10
12
  export { parseJsonLenient } from './json.js';
13
+ export { NOT_TOKENS } from './not-tokens.js';
11
14
  export { cssVarToName, globToRegExp, matchGlob, matchPath, normalizeName, tokenId } from './path.js';
12
15
  export { getAt, parsePointer, toPointer } from './pointer.js';
13
16
  export { expandModes } from './resolver/modes.js';
14
17
  export { createResolver, type SystemResolver } from './resolver/resolve.js';
15
18
  export { defaultInput, enumerateInputs, type Input, modifiersOf, selectDocuments, systemFromDocuments, systemFromResolver, type TokenDocument, type TokenSystem, validateInput, } from './resolver/system.js';
16
- export { DEFAULT_EXCLUDE, excludeFor, loadSystem, NOT_TOKENS, type ScanConfig, type ScanOptions, scan, type TokenAdapter, } from './scan.js';
19
+ export { DEFAULT_EXCLUDE, excludeFor, loadSystem, type ScanConfig, type ScanOptions, scan, type TokenAdapter, } from './scan.js';
17
20
  export { type BuildOptions, buildSnapshot, GENERATOR, type LayerConfig } from './snapshot.js';
18
21
  export { prefetch, type Source } from './source.js';
19
22
  export { canonicalValue, INTERNAL_TYPES, STANDARD_TYPES } from './values/canonical.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,KAAK,WAAW,EAAE,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,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpG,OAAO,EAAE,KAAK,OAAO,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpF,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,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,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EACL,YAAY,EACZ,eAAe,EACf,KAAK,KAAK,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,aAAa,GACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,EACV,UAAU,EACV,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,IAAI,EACJ,KAAK,YAAY,GAClB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,KAAK,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAC7F,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,EACL,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACb,UAAU,EACV,QAAQ,EACR,OAAO,GACR,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC7G,OAAO,EAAE,KAAK,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,KAAK,QAAQ,GACd,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from '@dsgraph/schema';
2
+ export { nearestTokens, VarMatcher, valueDistance, } from './code.js';
2
3
  export { DiagnosticBag } from './diagnostics.js';
3
4
  export { diff } from './diff/diff.js';
4
5
  export { detectRenames, pathSimilarity, stableIdOf } from './diff/rename.js';
@@ -7,13 +8,15 @@ export { flattenDocument } from './dtcg/flatten.js';
7
8
  export { expandExtends, mergeDocs } from './dtcg/merge.js';
8
9
  export { resolveDoc } from './dtcg/resolve.js';
9
10
  export { DsGraph } from './graph.js';
11
+ export { impactOf } from './impact.js';
10
12
  export { parseJsonLenient } from './json.js';
13
+ export { NOT_TOKENS } from './not-tokens.js';
11
14
  export { cssVarToName, globToRegExp, matchGlob, matchPath, normalizeName, tokenId } from './path.js';
12
15
  export { getAt, parsePointer, toPointer } from './pointer.js';
13
16
  export { expandModes } from './resolver/modes.js';
14
17
  export { createResolver } from './resolver/resolve.js';
15
18
  export { defaultInput, enumerateInputs, modifiersOf, selectDocuments, systemFromDocuments, systemFromResolver, validateInput, } from './resolver/system.js';
16
- export { DEFAULT_EXCLUDE, excludeFor, loadSystem, NOT_TOKENS, scan, } from './scan.js';
19
+ export { DEFAULT_EXCLUDE, excludeFor, loadSystem, scan, } from './scan.js';
17
20
  export { buildSnapshot, GENERATOR } from './snapshot.js';
18
21
  export { prefetch } from './source.js';
19
22
  export { canonicalValue, INTERNAL_TYPES, STANDARD_TYPES } from './values/canonical.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,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,EAAE,gBAAgB,EAAE,MAAM,WAAW,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,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAIL,aAAa,EAGb,UAAU,EACV,aAAa,GACd,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,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,6 @@
1
+ /**
2
+ * JSON files that are never token files, skipped when looking through all `*.json`.
3
+ * A module of its own so that browser code can use it without pulling in the scanner.
4
+ */
5
+ export declare const NOT_TOKENS: RegExp;
6
+ //# sourceMappingURL=not-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-tokens.d.ts","sourceRoot":"","sources":["../src/not-tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,UAAU,QACqK,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * JSON files that are never token files, skipped when looking through all `*.json`.
3
+ * A module of its own so that browser code can use it without pulling in the scanner.
4
+ */
5
+ export const NOT_TOKENS = /(^|\/)(package(-lock)?|tsconfig[\w.-]*|jsconfig|composer|lerna|nx|project|turbo|vercel|biome|renovate|manifest|\.?[\w-]*rc|[\w.-]*\.schema|([\w.-]*\.)?resolver|dsgraph\.config)\.json$/i;
6
+ //# sourceMappingURL=not-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-tokens.js","sourceRoot":"","sources":["../src/not-tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GACrB,0LAA0L,CAAA"}
package/dist/scan.d.ts CHANGED
@@ -28,8 +28,6 @@ export declare const DEFAULT_EXCLUDE: string[];
28
28
  * own: files named in `include` are read wherever they are.
29
29
  */
30
30
  export declare function excludeFor(config: ScanConfig, section: 'tokens' | 'css'): string[];
31
- /** JSON files that are never token files, skipped when looking through all `*.json`. */
32
- export declare const NOT_TOKENS: RegExp;
33
31
  /**
34
32
  * Loads a token system. Precedence: a resolver document, then DTCG token files, then adapters.
35
33
  * When only `css` is configured, adapters come before DTCG files.
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAIhD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAEnD,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;IACxC,mEAAmE;IACnE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CACrG;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;CACnC;AAKD,eAAO,MAAM,eAAe,UAAuC,CAAA;AAKnE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,EAAE,CAIlF;AAED,wFAAwF;AACxF,eAAO,MAAM,UAAU,QACkK,CAAA;AAEzL;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,WAAW,CAAC,CA0EtB;AAMD,sCAAsC;AACtC,wBAAsB,IAAI,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,UAAe,EACvB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,QAAQ,CAAC,CAuBnB"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAKhD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAEnD,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;IACxC,mEAAmE;IACnE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CACrG;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;CACnC;AAKD,eAAO,MAAM,eAAe,UAAuC,CAAA;AAKnE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,EAAE,CAIlF;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,WAAW,CAAC,CA0EtB;AAMD,sCAAsC;AACtC,wBAAsB,IAAI,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,UAAe,EACvB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,QAAQ,CAAC,CAuBnB"}
package/dist/scan.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { DiagnosticBag } from './diagnostics.js';
2
2
  import { parseJsonLenient } from './json.js';
3
+ import { NOT_TOKENS } from './not-tokens.js';
3
4
  import { matchGlob } from './path.js';
4
5
  import { expandModes, systemFromModeFiles } from './resolver/modes.js';
5
6
  import { systemFromDocuments, systemFromResolver, } from './resolver/system.js';
@@ -18,8 +19,6 @@ export function excludeFor(config, section) {
18
19
  const skipBuild = !own?.include && !config.includeBuild;
19
20
  return [...ALWAYS_EXCLUDE, ...(skipBuild ? BUILD_OUTPUT : []), ...(own?.exclude ?? [])];
20
21
  }
21
- /** JSON files that are never token files, skipped when looking through all `*.json`. */
22
- export const NOT_TOKENS = /(^|\/)(package(-lock)?|tsconfig[\w.-]*|jsconfig|composer|lerna|nx|project|turbo|vercel|biome|renovate|manifest|\.?[\w-]*rc|[\w.-]*\.schema|[\w.-]*\.resolver|dsgraph\.config)\.json$/i;
23
22
  /**
24
23
  * Loads a token system. Precedence: a resolver document, then DTCG token files, then adapters.
25
24
  * When only `css` is configured, adapters come before DTCG files.
package/dist/scan.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
@@ -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.2.0";
17
+ export declare const GENERATOR = "dsgraph@0.4.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.2.0';
6
+ export const GENERATOR = 'dsgraph@0.4.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.2.0",
3
+ "version": "0.4.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.2.0",
30
+ "@dsgraph/schema": "0.4.0",
31
31
  "culori": "4.0.2",
32
32
  "json5": "2.2.3"
33
33
  },