Skip to content

Commit a2e5e97

Browse files
bartvenemanBart Veneman
andauthored
chore: dedupe extensions code (#22)
Co-authored-by: Bart Veneman <[email protected]>
1 parent 365a897 commit a2e5e97

File tree

2 files changed

+38
-60
lines changed

2 files changed

+38
-60
lines changed

src/index.ts

Lines changed: 32 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -105,24 +105,21 @@ export function analysis_to_tokens(analysis: CssAnalysis): Tokens {
105105
for (let font_size in unique) {
106106
let name = `fontSize-${hash(font_size)}`
107107
let parsed = parse_length(font_size)
108-
let count = get_count(unique[font_size]!)
108+
let extensions = {
109+
[EXTENSION_AUTHORED_AS]: font_size,
110+
[EXTENSION_USAGE_COUNT]: get_count(unique[font_size]!),
111+
}
109112

110113
if (parsed === null) {
111114
font_sizes[name] = {
112115
$value: font_size,
113-
$extensions: {
114-
[EXTENSION_AUTHORED_AS]: font_size,
115-
[EXTENSION_USAGE_COUNT]: count,
116-
}
116+
$extensions: extensions,
117117
}
118118
} else {
119119
font_sizes[name] = {
120120
$type: 'dimension',
121121
$value: parsed,
122-
$extensions: {
123-
[EXTENSION_AUTHORED_AS]: font_size,
124-
[EXTENSION_USAGE_COUNT]: count,
125-
}
122+
$extensions: extensions,
126123
}
127124
}
128125
}
@@ -153,42 +150,33 @@ export function analysis_to_tokens(analysis: CssAnalysis): Tokens {
153150
for (let line_height in unique) {
154151
let name = `lineHeight-${hash(line_height)}`
155152
let parsed = destructure_line_height(line_height)
156-
let count = get_count(unique[line_height]!)
153+
let extensions = {
154+
[EXTENSION_AUTHORED_AS]: line_height,
155+
[EXTENSION_USAGE_COUNT]: get_count(unique[line_height]!),
156+
}
157157

158158
if (parsed === null) {
159159
line_heights[name] = {
160160
$value: line_height,
161-
$extensions: {
162-
[EXTENSION_AUTHORED_AS]: line_height,
163-
[EXTENSION_USAGE_COUNT]: count,
164-
}
161+
$extensions: extensions,
165162
}
166163
} else if (typeof parsed === 'number') {
167164
line_heights[name] = {
168165
$type: 'number',
169166
$value: parsed,
170-
$extensions: {
171-
[EXTENSION_AUTHORED_AS]: line_height,
172-
[EXTENSION_USAGE_COUNT]: count,
173-
}
167+
$extensions: extensions,
174168
}
175169
} else if (typeof parsed === 'object') {
176170
if (parsed.unit === 'px' || parsed.unit === 'rem') {
177171
line_heights[name] = {
178172
$type: 'dimension',
179173
$value: parsed,
180-
$extensions: {
181-
[EXTENSION_AUTHORED_AS]: line_height,
182-
[EXTENSION_USAGE_COUNT]: count,
183-
}
174+
$extensions: extensions,
184175
}
185176
} else {
186177
line_heights[name] = {
187178
$value: line_height,
188-
$extensions: {
189-
[EXTENSION_AUTHORED_AS]: line_height,
190-
[EXTENSION_USAGE_COUNT]: count,
191-
}
179+
$extensions: extensions,
192180
}
193181
}
194182
}
@@ -217,24 +205,21 @@ export function analysis_to_tokens(analysis: CssAnalysis): Tokens {
217205
for (let box_shadow in unique) {
218206
let name = `boxShadow-${hash(box_shadow)}`
219207
let parsed = destructure_box_shadow(box_shadow)
220-
let count = get_count(unique[box_shadow]!)
208+
let extensions = {
209+
[EXTENSION_AUTHORED_AS]: box_shadow,
210+
[EXTENSION_USAGE_COUNT]: get_count(unique[box_shadow]!),
211+
}
221212

222213
if (parsed === null) {
223214
shadows[name] = {
224215
$value: box_shadow,
225-
$extensions: {
226-
[EXTENSION_AUTHORED_AS]: box_shadow,
227-
[EXTENSION_USAGE_COUNT]: count,
228-
}
216+
$extensions: extensions,
229217
}
230218
} else {
231219
shadows[name] = {
232220
$type: 'shadow',
233221
$value: parsed.length === 1 ? parsed[0]! : parsed,
234-
$extensions: {
235-
[EXTENSION_AUTHORED_AS]: box_shadow,
236-
[EXTENSION_USAGE_COUNT]: count,
237-
}
222+
$extensions: extensions,
238223
}
239224
}
240225
}
@@ -264,7 +249,10 @@ export function analysis_to_tokens(analysis: CssAnalysis): Tokens {
264249
let parsed = convert_duration(duration)
265250
let is_valid = parsed < Number.MAX_SAFE_INTEGER - 1
266251
let name = hash(parsed.toString())
267-
let count = get_count(unique[duration]!)
252+
let extensions = {
253+
[EXTENSION_AUTHORED_AS]: duration,
254+
[EXTENSION_USAGE_COUNT]: get_count(unique[duration]!),
255+
}
268256

269257
if (is_valid) {
270258
durations[`duration-${name}`] = {
@@ -273,18 +261,12 @@ export function analysis_to_tokens(analysis: CssAnalysis): Tokens {
273261
value: parsed,
274262
unit: 'ms'
275263
},
276-
$extensions: {
277-
[EXTENSION_AUTHORED_AS]: duration,
278-
[EXTENSION_USAGE_COUNT]: count,
279-
}
264+
$extensions: extensions,
280265
}
281266
} else {
282267
durations[`duration-${name}`] = {
283268
$value: duration,
284-
$extensions: {
285-
[EXTENSION_AUTHORED_AS]: duration,
286-
[EXTENSION_USAGE_COUNT]: count,
287-
}
269+
$extensions: extensions,
288270
}
289271
}
290272
}
@@ -297,24 +279,21 @@ export function analysis_to_tokens(analysis: CssAnalysis): Tokens {
297279
for (let easing in unique) {
298280
let name = `easing-${hash(easing)}`
299281
let value = destructure_easing(easing)
300-
let count = get_count(unique[easing]!)
282+
let extensions = {
283+
[EXTENSION_AUTHORED_AS]: easing,
284+
[EXTENSION_USAGE_COUNT]: get_count(unique[easing]!),
285+
}
301286

302287
if (value !== null) {
303288
easings[name] = {
304289
$value: value,
305290
$type: 'cubicBezier',
306-
$extensions: {
307-
[EXTENSION_AUTHORED_AS]: easing,
308-
[EXTENSION_USAGE_COUNT]: count,
309-
}
291+
$extensions: extensions,
310292
}
311293
} else {
312294
easings[name] = {
313295
$value: easing,
314-
$extensions: {
315-
[EXTENSION_AUTHORED_AS]: easing,
316-
[EXTENSION_USAGE_COUNT]: count,
317-
}
296+
$extensions: extensions,
318297
}
319298
}
320299
}

src/types.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ export type BaseToken = {
1515
}
1616
}
1717

18+
type DurationValue = {
19+
value: number
20+
unit: 'ms'
21+
}
22+
1823
export type DurationToken = BaseToken & {
1924
$type: 'duration'
20-
$value: {
21-
value: number
22-
unit: 'ms'
23-
}
25+
$value: DurationValue
2426
}
2527

2628
export type UnparsedToken = BaseToken & {
@@ -42,9 +44,6 @@ export type ColorValue = {
4244
export type ColorToken = BaseToken & {
4345
$type: 'color'
4446
$value: ColorValue
45-
$extensions: {
46-
[EXTENSION_AUTHORED_AS]: string
47-
}
4847
}
4948

5049
export type DimensionValue = {

0 commit comments

Comments
 (0)