@dsgraph/adapters 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,332 @@
1
+ import { cssColorToDtcg, evaluateExpression } from '@dsgraph/core';
2
+ import { cssValueToToken, splitTopLevel } from './css-values.js';
3
+ /** Types of token-set and value/type JSON → DTCG types. Others keep their own name. */
4
+ const TYPES = {
5
+ color: 'color',
6
+ dimension: 'dimension',
7
+ sizing: 'dimension',
8
+ spacing: 'dimension',
9
+ size: 'dimension',
10
+ borderRadius: 'dimension',
11
+ borderWidth: 'dimension',
12
+ fontSizes: 'dimension',
13
+ fontSize: 'dimension',
14
+ letterSpacing: 'dimension',
15
+ paragraphSpacing: 'dimension',
16
+ paragraphIndent: 'dimension',
17
+ opacity: 'number',
18
+ number: 'number',
19
+ fontFamilies: 'fontFamily',
20
+ fontFamily: 'fontFamily',
21
+ fontWeights: 'fontWeight',
22
+ fontWeight: 'fontWeight',
23
+ lineHeights: 'lineHeight',
24
+ lineHeight: 'lineHeight',
25
+ typography: 'typography',
26
+ boxShadow: 'shadow',
27
+ shadow: 'shadow',
28
+ border: 'border',
29
+ duration: 'duration',
30
+ time: 'duration',
31
+ easing: 'cubicBezier',
32
+ cubicBezier: 'cubicBezier',
33
+ strokeStyle: 'strokeStyle',
34
+ transition: 'transition',
35
+ gradient: 'gradient',
36
+ };
37
+ /** `border-radius` (kebab-case types) → `borderRadius`. */
38
+ const mapKey = (t) => t.replace(/-([a-z])/g, (_, ch) => ch.toUpperCase());
39
+ const mapType = (t) => TYPES[t] ?? TYPES[mapKey(t)] ?? t;
40
+ /** Types only the token-set format uses; their presence tells it from plain value/type JSON. */
41
+ export const SET_FORMAT_TYPES = new Set([
42
+ 'sizing',
43
+ 'spacing',
44
+ 'borderRadius',
45
+ 'borderWidth',
46
+ 'fontSizes',
47
+ 'fontFamilies',
48
+ 'fontWeights',
49
+ 'lineHeights',
50
+ 'letterSpacing',
51
+ 'paragraphSpacing',
52
+ 'paragraphIndent',
53
+ 'boxShadow',
54
+ 'composition',
55
+ 'textCase',
56
+ 'textDecoration',
57
+ 'opacity',
58
+ ]);
59
+ const FONT_WEIGHTS = {
60
+ thin: 100,
61
+ hairline: 100,
62
+ extralight: 200,
63
+ ultralight: 200,
64
+ light: 300,
65
+ normal: 400,
66
+ regular: 400,
67
+ book: 400,
68
+ medium: 500,
69
+ semibold: 600,
70
+ demibold: 600,
71
+ bold: 700,
72
+ extrabold: 800,
73
+ ultrabold: 800,
74
+ black: 900,
75
+ heavy: 900,
76
+ extrablack: 950,
77
+ ultrablack: 950,
78
+ };
79
+ const WHOLE_REF = /^\{[^{}]+\}$/;
80
+ const NUM = /^\s*(-?(?:\d+\.?\d*|\.\d+))\s*([a-z%]*)\s*$/i;
81
+ const isObj = (v) => v !== null && typeof v === 'object' && !Array.isArray(v);
82
+ /**
83
+ * References as these tools write them, in DTCG syntax: `{a.b.value}` and `{a.b.$value}` drop the
84
+ * suffix, a whole-value `$a.b` (an early notation) becomes `{a.b}`.
85
+ */
86
+ export function normalizeRefs(v) {
87
+ if (typeof v === 'string') {
88
+ const s = v.replace(/\{([^{}]+?)\.\$?value\}/g, '{$1}');
89
+ return /^\$[\w-]+(\.[\w-]+)+$/.test(s) ? `{${s.slice(1)}}` : s;
90
+ }
91
+ if (Array.isArray(v))
92
+ return v.map(normalizeRefs);
93
+ if (isObj(v))
94
+ return Object.fromEntries(Object.entries(v).map(([k, x]) => [k, normalizeRefs(x)]));
95
+ return v;
96
+ }
97
+ const hasRefInside = (s) => s.includes('{') && !WHOLE_REF.test(s.trim());
98
+ const isArithmetic = (s) => /^[\d\s.+\-*/()a-z%]+$/i.test(s) && /\d\s*[-+*/]\s*[\d(.]/.test(s);
99
+ /** A string that stays as text for the core: a reference or an expression with references. */
100
+ function deferred(s, c) {
101
+ if (WHOLE_REF.test(s.trim()))
102
+ return s.trim();
103
+ if (hasRefInside(s)) {
104
+ c.expression = true;
105
+ return s;
106
+ }
107
+ return undefined;
108
+ }
109
+ function dimension(v, c, percentAs) {
110
+ if (typeof v === 'number')
111
+ return { value: v, unit: v === 0 ? 'px' : c.unit };
112
+ if (typeof v !== 'string')
113
+ return v;
114
+ const d = deferred(v, c);
115
+ if (d !== undefined)
116
+ return d;
117
+ const m = NUM.exec(v);
118
+ if (m) {
119
+ const n = Number(m[1]);
120
+ const unit = m[2].toLowerCase();
121
+ if (unit === '%' && percentAs === 'em')
122
+ return { value: n / 100, unit: 'em' };
123
+ return { value: n, unit: unit || c.unit };
124
+ }
125
+ if (isArithmetic(v) || /^calc\(/i.test(v))
126
+ return evaluateExpression(v, 'dimension', c.unit) ?? v;
127
+ return v;
128
+ }
129
+ function numberValue(v, c) {
130
+ if (typeof v !== 'string')
131
+ return v;
132
+ const d = deferred(v, c);
133
+ if (d !== undefined)
134
+ return d;
135
+ const m = NUM.exec(v);
136
+ if (m && (m[2] === '' || m[2] === '%'))
137
+ return m[2] === '%' ? Number(m[1]) / 100 : Number(m[1]);
138
+ return evaluateExpression(v, 'number') ?? v;
139
+ }
140
+ function color(v, c) {
141
+ if (typeof v !== 'string')
142
+ return v;
143
+ const d = deferred(v, c);
144
+ if (d !== undefined)
145
+ return d;
146
+ return cssColorToDtcg(v) ?? evaluateExpression(v, 'color') ?? v;
147
+ }
148
+ function fontFamily(v) {
149
+ if (typeof v !== 'string' || WHOLE_REF.test(v.trim()))
150
+ return v;
151
+ const list = splitTopLevel(v, ',').map((f) => f.replace(/^["']|["']$/g, ''));
152
+ return list.length === 1 ? list[0] : list;
153
+ }
154
+ /** `Bold`, `Semi Bold Italic`, `700` → a number; unknown names stay as written. */
155
+ export function fontWeight(v) {
156
+ if (typeof v === 'number' || typeof v !== 'string' || WHOLE_REF.test(v.trim()))
157
+ return v;
158
+ if (/^\d+$/.test(v.trim()))
159
+ return Number(v);
160
+ const key = v
161
+ .toLowerCase()
162
+ .replace(/\b(italic|oblique|(semi|extra|ultra)?\s*(condensed|compressed|expanded|extended)|narrow|wide)\b/g, '')
163
+ .replace(/[\s_-]/g, '');
164
+ return FONT_WEIGHTS[key === '' ? 'regular' : key] ?? v;
165
+ }
166
+ /** Line height: a percentage or a small unitless number is a multiplier; a larger one is px. */
167
+ function lineHeight(v, c) {
168
+ if (typeof v === 'number')
169
+ return v <= 4 ? { type: 'number', value: v } : { type: 'dimension', value: { value: v, unit: c.unit } };
170
+ if (typeof v !== 'string')
171
+ return { type: 'number', value: v };
172
+ if (WHOLE_REF.test(v.trim()))
173
+ return { type: '', value: v.trim() };
174
+ // An expression over references is almost always a multiple of a font size: a length.
175
+ const d = deferred(v, c);
176
+ if (d !== undefined)
177
+ return { type: 'dimension', value: d };
178
+ if (/^auto$/i.test(v.trim()))
179
+ return undefined;
180
+ const m = NUM.exec(v);
181
+ if (!m)
182
+ return { type: 'number', value: evaluateExpression(v, 'number') ?? v };
183
+ const n = Number(m[1]);
184
+ const unit = m[2].toLowerCase();
185
+ if (unit === '%')
186
+ return { type: 'number', value: n / 100 };
187
+ if (unit === '' && n <= 4)
188
+ return { type: 'number', value: n };
189
+ return { type: 'dimension', value: { value: n, unit: unit || c.unit } };
190
+ }
191
+ function typography(v, c) {
192
+ if (!isObj(v))
193
+ return v;
194
+ const out = { ...v };
195
+ if (v.fontFamily !== undefined)
196
+ out.fontFamily = fontFamily(v.fontFamily);
197
+ if (v.fontWeight !== undefined)
198
+ out.fontWeight = fontWeight(v.fontWeight);
199
+ if (v.fontSize !== undefined)
200
+ out.fontSize = dimension(v.fontSize, c);
201
+ if (v.letterSpacing !== undefined)
202
+ out.letterSpacing = dimension(v.letterSpacing, c, 'em');
203
+ if (v.lineHeight !== undefined) {
204
+ const lh = lineHeight(v.lineHeight, c);
205
+ if (lh)
206
+ out.lineHeight = lh.value;
207
+ else
208
+ delete out.lineHeight;
209
+ }
210
+ for (const k of ['paragraphSpacing', 'paragraphIndent'])
211
+ if (v[k] !== undefined)
212
+ out[k] = dimension(v[k], c);
213
+ return out;
214
+ }
215
+ function shadowLayer(v, c) {
216
+ if (!isObj(v))
217
+ return v;
218
+ const out = {
219
+ color: color(v.color, c),
220
+ offsetX: dimension(v.offsetX ?? v.x ?? 0, c),
221
+ offsetY: dimension(v.offsetY ?? v.y ?? 0, c),
222
+ blur: dimension(v.blur ?? 0, c),
223
+ spread: dimension(v.spread ?? 0, c),
224
+ };
225
+ if (v.inset !== undefined)
226
+ out.inset = v.inset;
227
+ else if (v.type === 'innerShadow')
228
+ out.inset = true;
229
+ return out;
230
+ }
231
+ function border(v, c) {
232
+ if (!isObj(v))
233
+ return v;
234
+ const out = { ...v };
235
+ if (v.color !== undefined)
236
+ out.color = color(v.color, c);
237
+ if (v.width !== undefined)
238
+ out.width = dimension(v.width, c);
239
+ return out;
240
+ }
241
+ function duration(v) {
242
+ if (typeof v === 'number')
243
+ return { value: v, unit: 'ms' };
244
+ if (typeof v !== 'string')
245
+ return v;
246
+ const m = NUM.exec(v);
247
+ if (m && (m[2] === '' || m[2] === 'ms' || m[2] === 's'))
248
+ return { value: Number(m[1]), unit: m[2] || 'ms' };
249
+ return v;
250
+ }
251
+ /** Category/type/item naming: the first path segment says what an untyped token is. */
252
+ function inferType(path, v, c) {
253
+ const category = path[0]?.toLowerCase();
254
+ if (category === 'color' || category === 'colors')
255
+ return { type: 'color', value: color(v, c) };
256
+ if (category === 'size' || category === 'sizes')
257
+ return { type: 'dimension', value: dimension(v, { ...c, unit: 'rem' }) };
258
+ if (category === 'time')
259
+ return { type: 'duration', value: duration(v) };
260
+ if ((typeof v === 'string' && !v.includes('{')) || typeof v === 'number') {
261
+ const t = cssValueToToken(path.join('-'), String(v));
262
+ // `var(--x)` names a CSS property, not a token of this file: kept as text.
263
+ if (t.$type === undefined || t.$type === 'css-expression' || String(v).includes('var('))
264
+ return { type: 'other', value: v };
265
+ return { type: t.$type, value: t.$value };
266
+ }
267
+ return { type: 'other', value: v };
268
+ }
269
+ /**
270
+ * One token's value in DTCG form, by its (source) type. References and expressions with
271
+ * references stay as text for the core; everything literal becomes a DTCG value.
272
+ */
273
+ export function convertValue(sourceType, raw, path, c) {
274
+ const v = normalizeRefs(raw);
275
+ if (sourceType === 'other' && typeof v === 'string' && WHOLE_REF.test(v.trim()))
276
+ return { value: v.trim() };
277
+ if (sourceType === 'other' && (typeof v === 'number' || (typeof v === 'string' && !v.includes('{')))) {
278
+ // The catch-all `other` type: the value says what it is.
279
+ const t = inferType(path, v, c);
280
+ return t.type === 'other' ? { type: 'other', value: v } : { ...t, inferred: true };
281
+ }
282
+ if (sourceType === undefined) {
283
+ if (typeof v === 'string' && v.includes('{')) {
284
+ // An untyped alias takes its type from the target.
285
+ deferred(v, c);
286
+ return { value: v };
287
+ }
288
+ return { ...inferType(path, v, c), inferred: true };
289
+ }
290
+ const type = mapType(sourceType);
291
+ // CSS that no DTCG value can hold (`clamp(…)`, `var(--x)`, gradients) is kept as text.
292
+ const css = (value) => typeof value === 'string' && !value.includes('{') ? { type: 'css-expression', value } : { type, value };
293
+ switch (type) {
294
+ case 'color':
295
+ if (typeof v === 'string' && /gradient\(/i.test(v))
296
+ return { type: 'css-expression', value: v };
297
+ return css(color(v, c));
298
+ case 'dimension':
299
+ return css(dimension(v, c, /letterSpacing/.test(mapKey(sourceType)) ? 'em' : undefined));
300
+ case 'number':
301
+ return { type, value: numberValue(v, c) };
302
+ case 'fontFamily':
303
+ return { type, value: fontFamily(v) };
304
+ case 'fontWeight':
305
+ return { type, value: fontWeight(v) };
306
+ case 'lineHeight': {
307
+ // A whole alias takes its type from the target (a dimension or a number).
308
+ const lh = lineHeight(v, c);
309
+ if (!lh)
310
+ return { type: sourceType, value: v };
311
+ return lh.type ? lh : { value: lh.value };
312
+ }
313
+ case 'typography':
314
+ return { type, value: typography(v, c) };
315
+ case 'shadow':
316
+ return { type, value: Array.isArray(v) ? v.map((l) => shadowLayer(l, c)) : shadowLayer(v, c) };
317
+ case 'border':
318
+ return { type, value: border(v, c) };
319
+ case 'duration':
320
+ return { type, value: duration(v) };
321
+ default:
322
+ if (typeof v === 'string')
323
+ deferred(v, c);
324
+ return { type, value: v };
325
+ }
326
+ }
327
+ /** A group's `$type` in DTCG terms; undefined when it depends on each value (line heights). */
328
+ export const groupType = (sourceType) => {
329
+ const t = mapType(sourceType);
330
+ return t === 'lineHeight' ? undefined : t;
331
+ };
332
+ //# sourceMappingURL=json-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-values.js","sourceRoot":"","sources":["../src/json-values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type TokenAdapter } from '@dsgraph/core';
2
+ /**
3
+ * Token-set JSON and value/type JSON → token system (DTCG 2025.10 values).
4
+ * Token sets: one file each or top-level keys of one file, `$metadata.json` for
5
+ * set order and `$themes.json` for themes; theme groups become modifiers. Value/type JSON: every
6
+ * file merges into one set, untyped tokens take their type from the category (`color`, `size`,
7
+ * `time`) or the value. Plain DTCG files are left to the core.
8
+ */
9
+ export declare const jsonTokens: TokenAdapter;
10
+ //# sourceMappingURL=tokens-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens-json.d.ts","sourceRoot":"","sources":["../src/tokens-json.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAA;AAqetB;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,YA4BxB,CAAA"}