design-token-library 0.2.0 → 0.3.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.
@@ -35,6 +35,23 @@ export class CircularReferenceError extends Error {
35
35
  this.chain = chain;
36
36
  }
37
37
  }
38
+ /**
39
+ * The changes to the configured values in a library's tokens: its own, and
40
+ * those of the libraries it extends, whose values it takes until its tokens
41
+ * are set.
42
+ */
43
+ const configurationVersionOf = (scope) => {
44
+ let version = 0;
45
+ for (let s = scope; s; s = s.source) {
46
+ version += s.configurationVersion;
47
+ }
48
+ return version;
49
+ };
50
+ /**
51
+ * For a library's tokens, the tokens whose configured values refer to each,
52
+ * and the configuration it was made from.
53
+ */
54
+ const dependentsIndexes = new WeakMap();
38
55
  /**
39
56
  * The tokens currently resolving their values, outermost first.
40
57
  */
@@ -75,9 +92,10 @@ const defineGroupMetadata = (group, ...sources) => {
75
92
  }
76
93
  }
77
94
  };
78
- const defineToken = (library, key, token) => {
95
+ const defineToken = (library, key, get) => {
79
96
  Reflect.defineProperty(library, key, {
80
97
  get() {
98
+ const token = get();
81
99
  // Token access is tracked because a ref reads its token from
82
100
  // the library
83
101
  Watcher.track(token);
@@ -117,11 +135,12 @@ const recurseCreate = (name, library, config, scope, typeContext, queue) => {
117
135
  Object.freeze(group);
118
136
  }
119
137
  else if (isToken(config[key])) {
120
- defineToken(library, key, createToken(key, _name, config[key], scope, typeContext, queue));
138
+ const token = createToken(key, _name, config[key], scope, typeContext, queue);
139
+ defineToken(library, key, () => token);
121
140
  }
122
141
  }
123
142
  };
124
- const recurseExtend = (name, sourceTokens, extendedTokens, config, scope, typeContext, queue) => {
143
+ const recurseExtend = (name, sourceTokens, extendedTokens, config, scope, typeContext, queue, inherited) => {
125
144
  // An extension can restate a group's type, or give one to a group that
126
145
  // has none, but can't change it, as for a token.
127
146
  const sourceType = Reflect.get(sourceTokens, "$type");
@@ -140,32 +159,125 @@ const recurseExtend = (name, sourceTokens, extendedTokens, config, scope, typeCo
140
159
  .filter(isChildKey)); // Remove duplicate keys
141
160
  for (const key of keys) {
142
161
  const _name = name.length === 0 ? key : `${name}.${key}`;
143
- const sourceHasKey = key in sourceTokens;
144
- const sourceValue = sourceTokens[key];
162
+ const source = Reflect.getOwnPropertyDescriptor(sourceTokens, key);
145
163
  const configValue = config[key];
146
- if (sourceHasKey ? isGroup(sourceValue) : isGroup(configValue)) {
164
+ // A group of the source is a data property and a token an accessor,
165
+ // so telling them apart doesn't make the token of an extension.
166
+ if (source ? "value" in source : isGroup(configValue)) {
147
167
  const group = {};
148
168
  Reflect.defineProperty(extendedTokens, key, {
149
169
  value: group,
150
170
  enumerable: true,
151
171
  });
152
- if (sourceHasKey) {
153
- recurseExtend(_name, sourceValue, group, configValue || {}, scope, typeContext, queue);
172
+ if (source) {
173
+ recurseExtend(_name, source.value, group, configValue || {}, scope, typeContext, queue, inherited);
154
174
  }
155
175
  else {
156
176
  recurseCreate(_name, group, configValue, scope, typeContext, queue);
157
177
  }
158
178
  Object.freeze(group);
159
179
  }
160
- else if (sourceHasKey ? isToken(sourceValue) : isToken(configValue)) {
161
- const token = sourceHasKey
162
- ? extendToken(sourceValue, scope, queue, configValue)
163
- : createToken(key, _name, configValue, scope, typeContext, queue);
164
- defineToken(extendedTokens, key, token);
180
+ else if (source) {
181
+ const token = new InheritedToken(() => untracked(() => sourceTokens[key]), scope, queue, configValue);
182
+ // A token the extension configures is made now, so its config
183
+ // is checked when the library is.
184
+ if (configValue !== undefined) {
185
+ token.get();
186
+ }
187
+ if (configValue === undefined || !("$value" in configValue)) {
188
+ inherited.push(token);
189
+ }
190
+ defineToken(extendedTokens, key, () => token.get());
191
+ }
192
+ else if (isToken(configValue)) {
193
+ const token = createToken(key, _name, configValue, scope, typeContext, queue);
194
+ defineToken(extendedTokens, key, () => token);
165
195
  }
166
196
  }
167
197
  };
168
- function extendToken(token, scope, queue, node) {
198
+ /**
199
+ * Reads without the read being tracked by the token that is resolving.
200
+ */
201
+ const untracked = (read) => {
202
+ const stopWatching = Watcher.use({ watch() { } });
203
+ try {
204
+ return read();
205
+ }
206
+ finally {
207
+ stopWatching();
208
+ }
209
+ };
210
+ /**
211
+ * Unsubscribes the link of a collected {@link InheritedToken} from its
212
+ * source token.
213
+ */
214
+ const links = new FinalizationRegistry((unlink) => unlink());
215
+ /**
216
+ * The token of an extension for a token of the library it extends. It is
217
+ * made when it is first read, so an extension costs what it reads (#113).
218
+ *
219
+ * Until it is set, it has the value of its source token and follows its
220
+ * changes, through a link on the source token that holds it weakly: the
221
+ * library it extends doesn't keep an extension alive that nothing else
222
+ * refers to. It follows once it is made, or once its extension has a
223
+ * subscriber, which is told of a change to a token it hasn't read.
224
+ */
225
+ class InheritedToken {
226
+ source;
227
+ scope;
228
+ queue;
229
+ node;
230
+ token = null;
231
+ unlink = null;
232
+ detached;
233
+ constructor(source, scope, queue, node) {
234
+ this.source = source;
235
+ this.scope = scope;
236
+ this.queue = queue;
237
+ this.node = node;
238
+ // An override has a value of its own.
239
+ this.detached = node !== undefined && "$value" in node;
240
+ }
241
+ get() {
242
+ if (this.token !== null) {
243
+ return this.token;
244
+ }
245
+ const token = extendToken(this.source(), this.scope, this.queue, this.node, this);
246
+ this.token = token;
247
+ this.follow();
248
+ return token;
249
+ }
250
+ follow() {
251
+ if (this.unlink !== null || this.detached) {
252
+ return;
253
+ }
254
+ // The link holds only a weak reference, so that the registry can
255
+ // collect this token, and nothing that refers to it.
256
+ const target = new WeakRef(this);
257
+ const notifier = getNotifier(this.source());
258
+ const link = {
259
+ onChange() {
260
+ target.deref()?.get().onChange();
261
+ },
262
+ };
263
+ const unlink = () => notifier.unsubscribe(link);
264
+ notifier.subscribe(link);
265
+ links.register(this, unlink, link);
266
+ this.unlink = () => {
267
+ unlink();
268
+ links.unregister(link);
269
+ };
270
+ }
271
+ /**
272
+ * Stops following the source token, when the token is set.
273
+ */
274
+ detach() {
275
+ this.unlink?.();
276
+ this.unlink = null;
277
+ this.detached = true;
278
+ }
279
+ }
280
+ function extendToken(token, scope, queue, node, inherited) {
169
281
  if (node?.$type !== undefined && node.$type !== token.$type) {
170
282
  throw new Error(`An override cannot change the '$type' of token '${token.name}' from '${token.$type}' to '${node.$type}'.`);
171
283
  }
@@ -193,21 +305,12 @@ function extendToken(token, scope, queue, node) {
193
305
  extendingToken.raw = node.$value;
194
306
  }
195
307
  else {
196
- // Subscribe to changes
197
- // spy on set, unsubscribe when set
198
- const subscriber = {
199
- onChange() {
200
- extendingToken.onChange();
201
- },
202
- };
203
- // token.$value;
204
- getNotifier(token).subscribe(subscriber);
205
308
  // Not extendingToken.set: when the extended token is an extension
206
309
  // that hasn't been set, that is the extended token's own wrapper,
207
310
  // which sets the extended token.
208
311
  const set = LibraryToken.prototype.set;
209
312
  extendingToken.set = (value) => {
210
- getNotifier(token).unsubscribe(subscriber);
313
+ inherited.detach();
211
314
  // Own the inherited value, so set() detaches even when the
212
315
  // new value is identical and doesn't notify.
213
316
  extendingToken.raw = extendingToken.raw;
@@ -255,9 +358,10 @@ const tokenAt = (tokens, path) => {
255
358
  };
256
359
  /**
257
360
  * Resolves a value in a library's scope. A ref is replaced by its token's
258
- * value, and a computed value by the result of its recipe's function, or of
259
- * the function that overrides it in the scope, called with its arguments
260
- * resolved. Plain data is copied from its own properties, including
361
+ * value, as it is: the value is resolved and frozen already, so it isn't
362
+ * copied again. A computed value is replaced by the result of its recipe's
363
+ * function, or of the function that overrides it in the scope, called with
364
+ * its arguments resolved. Plain data is copied from its own properties, including
261
365
  * symbol-keyed and non-enumerable ones, with its refs resolved, and the copy
262
366
  * is frozen, so the config isn't. A getter is read once, into a data
263
367
  * property. An object that is in the value twice, or in itself, has one copy.
@@ -271,7 +375,7 @@ const resolve = (value, scope) => {
271
375
  return value;
272
376
  }
273
377
  if (isRef(value)) {
274
- return walk(tokenAt(scope.tokens, value[REF]).$value);
378
+ return tokenAt(scope.tokens, value[REF]).$value;
275
379
  }
276
380
  if (isComputed(value)) {
277
381
  const { recipe, args } = value[COMPUTED];
@@ -322,14 +426,29 @@ class LibraryImpl {
322
426
  scope;
323
427
  queue;
324
428
  tokens;
325
- constructor(scope, queue) {
429
+ /**
430
+ * The inherited tokens of an extension. Each follows its source token
431
+ * once it is read, and all of them once the library has a subscriber,
432
+ * after which this is null.
433
+ */
434
+ inherited;
435
+ constructor(scope, queue, inherited = []) {
326
436
  this.scope = scope;
327
437
  this.queue = queue;
328
438
  this.tokens = scope.tokens;
439
+ this.inherited = inherited;
329
440
  // Groups are frozen as they are built; the root is frozen here.
330
441
  Object.freeze(this.tokens);
331
442
  }
332
443
  subscribe(subscriber) {
444
+ // A subscriber is told of a change to a token of the source that the
445
+ // extension hasn't read.
446
+ if (this.inherited !== null) {
447
+ for (const token of this.inherited) {
448
+ token.follow();
449
+ }
450
+ this.inherited = null;
451
+ }
333
452
  this.queue.subscribe(subscriber);
334
453
  }
335
454
  unsubscribe(subscriber) {
@@ -342,14 +461,24 @@ class LibraryImpl {
342
461
  for (const { recipe, fn } of options.recipes ?? []) {
343
462
  recipes.set(recipe, fn);
344
463
  }
345
- const scope = { tokens: {}, recipes };
346
- recurseExtend("", this.tokens, scope.tokens, config, scope, null, queue);
347
- return new LibraryImpl(scope, queue);
464
+ const scope = {
465
+ tokens: {},
466
+ recipes,
467
+ configurationVersion: 0,
468
+ source: this.scope,
469
+ };
470
+ const inherited = [];
471
+ recurseExtend("", this.tokens, scope.tokens, config, scope, null, queue, inherited);
472
+ return new LibraryImpl(scope, queue, inherited);
348
473
  }
349
474
  static create(config) {
350
475
  assertNoRoot(config);
351
476
  const queue = new Queue();
352
- const scope = { tokens: {}, recipes: new Map() };
477
+ const scope = {
478
+ tokens: {},
479
+ recipes: new Map(),
480
+ configurationVersion: 0,
481
+ };
353
482
  recurseCreate("", scope.tokens, config, scope, null, queue);
354
483
  return new LibraryImpl(scope, queue);
355
484
  }
@@ -451,6 +580,7 @@ class LibraryToken {
451
580
  return;
452
581
  }
453
582
  this.raw = value;
583
+ this.scope.configurationVersion++;
454
584
  this.onChange();
455
585
  }
456
586
  onChange() {
@@ -479,5 +609,214 @@ class LibraryToken {
479
609
  notifier.subscribe(this);
480
610
  }
481
611
  }
612
+ /**
613
+ * The value a token was configured or last set with. An extension's
614
+ * token that has no value of its own inherits its source's.
615
+ */
616
+ static configuredValue(token) {
617
+ return token.raw;
618
+ }
619
+ /**
620
+ * The tokens that the refs in a token's configured value are to, in the
621
+ * token's library, searched as {@link resolve} resolves them: in plain
622
+ * data and in the arguments of computed values.
623
+ */
624
+ static dependencies(token) {
625
+ const dependencies = new Set();
626
+ const seen = new Set();
627
+ const walk = (value) => {
628
+ if (!isObject(value) || seen.has(value)) {
629
+ return;
630
+ }
631
+ seen.add(value);
632
+ if (isRef(value)) {
633
+ dependencies.add(tokenAt(token.scope.tokens, value[REF]));
634
+ }
635
+ else if (isComputed(value)) {
636
+ value[COMPUTED].args.forEach(walk);
637
+ }
638
+ else if (isPlain(value)) {
639
+ for (const key of Reflect.ownKeys(value)) {
640
+ walk(Reflect.get(value, key));
641
+ }
642
+ }
643
+ };
644
+ walk(token.raw);
645
+ return dependencies;
646
+ }
647
+ /**
648
+ * The tokens of the token's library whose configured values refer to it.
649
+ * The index is made from the library's tokens once, and again after a
650
+ * token is set to a different value.
651
+ */
652
+ static dependents(token) {
653
+ const version = configurationVersionOf(token.scope);
654
+ let index = dependentsIndexes.get(token.scope);
655
+ if (index?.version !== version) {
656
+ const dependents = new Map();
657
+ for (const entry of walkEntries(token.scope.tokens, [], {
658
+ whatToShow: "token",
659
+ })) {
660
+ const dependent = libraryTokenOf(entry.token);
661
+ for (const dependency of LibraryToken.dependencies(dependent)) {
662
+ const list = dependents.get(dependency);
663
+ if (list) {
664
+ list.push(dependent);
665
+ }
666
+ else {
667
+ dependents.set(dependency, [dependent]);
668
+ }
669
+ }
670
+ }
671
+ index = { version, dependents };
672
+ dependentsIndexes.set(token.scope, index);
673
+ }
674
+ return index.dependents.get(token) ?? [];
675
+ }
676
+ }
677
+ const libraryTokenOf = (token) => {
678
+ if (!(token instanceof LibraryToken)) {
679
+ throw new Error(`"${token.name}" is not a token of a library.`);
680
+ }
681
+ return token;
682
+ };
683
+ /**
684
+ * A token's value as it was configured, or last given to `set()`, with its
685
+ * refs and computed values unresolved. A token of a library made by
686
+ * `extend()` that isn't given a value has its source token's.
687
+ *
688
+ * @remarks
689
+ * A token's `$value` is resolved, so it can't tell a value that is given from
690
+ * one that is derived from other tokens, or say where in a value a ref is. A
691
+ * tool that reads how a library is configured finds the refs in this value
692
+ * with {@link isRef} and the computed values with {@link isComputed}: a value
693
+ * with neither, at any depth, is given. A converter that writes a ref as a
694
+ * CSS `var()`, rather than its token's value, reads the ref here and its
695
+ * path with {@link pathOf}.
696
+ *
697
+ * It's the value the token holds, not a copy, so it isn't frozen. Changing it
698
+ * doesn't change the token: give a new value to `set()`. Refs and computed
699
+ * values are searched for in plain data, as the library resolves them, and
700
+ * not in a class instance or a function.
701
+ *
702
+ * @example
703
+ * ```ts
704
+ * const isGiven = (value: unknown): boolean =>
705
+ * !isRef(value) &&
706
+ * !isComputed(value) &&
707
+ * (typeof value !== "object" || value === null ||
708
+ * Object.values(value).every(isGiven));
709
+ *
710
+ * isGiven(configuredValueOf(library.tokens.colors.primary)); // true
711
+ * isGiven(configuredValueOf(library.tokens.colors.hover)); // false: a recipe
712
+ * ```
713
+ *
714
+ * @public
715
+ */
716
+ export const configuredValueOf = (token) => LibraryToken.configuredValue(libraryTokenOf(token));
717
+ /**
718
+ * The tokens that a token's value refers to, through refs anywhere in its
719
+ * configured value, including the arguments of the recipes it's computed
720
+ * with, in the token's library. Each token is listed once, in the order its
721
+ * first ref is in the value.
722
+ *
723
+ * @remarks
724
+ * These are the tokens the value is made from, and not theirs in turn: a
725
+ * tool follows each with `dependenciesOf()` for the whole chain. A value
726
+ * computed by a recipe from literal arguments only has no dependencies,
727
+ * though it's derived: {@link configuredValueOf} tells that apart.
728
+ *
729
+ * It throws when a ref's path isn't a token of the library, as reading the
730
+ * token's `$value` does.
731
+ *
732
+ * @example
733
+ * ```ts
734
+ * // hover: { $value: Recipes.darken(theme.colors.primary, 0.2) }
735
+ * dependenciesOf(library.tokens.colors.hover).map((token) => token.name);
736
+ * // ["colors.primary"]
737
+ * ```
738
+ *
739
+ * @public
740
+ */
741
+ export const dependenciesOf = (token) =>
742
+ // The token at a ref's path is a token of the library, of shape `R`: the
743
+ // config's types guarantee it.
744
+ Object.freeze([
745
+ ...LibraryToken.dependencies(libraryTokenOf(token)),
746
+ ]);
747
+ export function entriesOf(library, options = {}) {
748
+ return walkEntries(library.tokens, [], options);
749
+ }
750
+ function* walkEntries(node, path, options) {
751
+ const { whatToShow = "all", filter } = options;
752
+ for (const key of Object.keys(node)) {
753
+ if (!isChildKey(key)) {
754
+ continue;
755
+ }
756
+ const child = node[key];
757
+ const childPath = [...path, key];
758
+ const entry = isToken(child)
759
+ ? { kind: "token", path: childPath, token: child }
760
+ : { kind: "group", path: childPath, group: child };
761
+ let result = true;
762
+ if (whatToShow === "all" || whatToShow === entry.kind) {
763
+ result = filter?.(entry) ?? true;
764
+ if (result === true) {
765
+ yield entry;
766
+ }
767
+ }
768
+ if (entry.kind === "group" && result !== "reject") {
769
+ yield* walkEntries(child, childPath, options);
770
+ }
771
+ }
482
772
  }
773
+ /**
774
+ * The tokens whose values refer to a token, through refs anywhere in their
775
+ * configured values, including the arguments of their recipes, in the
776
+ * token's library. It is the reverse of {@link dependenciesOf}: each token is
777
+ * listed once, in the order of the library.
778
+ *
779
+ * @remarks
780
+ * These are the tokens that refer to the token directly. A token whose value
781
+ * may change when this one is set is also one that refers to one of those: a
782
+ * tool follows each with `dependentsOf()` for the whole set, as it follows
783
+ * {@link dependenciesOf} for the chain the other way.
784
+ *
785
+ * This reads the configured values and not the values, so it resolves no
786
+ * token, and so it is known of a library whose tokens have not been read. It
787
+ * is found for the whole library once and kept until a token is set to a
788
+ * different value, so each call after the first is a lookup. A value a recipe
789
+ * reads other than through its arguments is not seen, as for
790
+ * {@link dependenciesOf}.
791
+ *
792
+ * It throws when a ref in a token of the library isn't a token of it, as
793
+ * reading the token's `$value` does.
794
+ *
795
+ * @example
796
+ * ```ts
797
+ * // hover: { $value: Recipes.darken(theme.colors.primary, 0.2) }
798
+ * dependentsOf(library.tokens.colors.primary).map((token) => token.name);
799
+ * // ["colors.hover"]
800
+ *
801
+ * // Every token that may change when a token is set
802
+ * const affected = new Set<Library.Token<any, any>>();
803
+ * const visit = (token: Library.Token<any, any>) => {
804
+ * for (const dependent of dependentsOf(token)) {
805
+ * if (!affected.has(dependent)) {
806
+ * affected.add(dependent);
807
+ * visit(dependent);
808
+ * }
809
+ * }
810
+ * };
811
+ * visit(extension.tokens.color.context);
812
+ * ```
813
+ *
814
+ * @public
815
+ */
816
+ export const dependentsOf = (token) =>
817
+ // The tokens that refer to a token are of its library, of shape `R`: the
818
+ // config's types guarantee it.
819
+ Object.freeze([
820
+ ...LibraryToken.dependents(libraryTokenOf(token)),
821
+ ]);
483
822
  //# sourceMappingURL=library.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/lib/library.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/lib/library.ts"],"names":[],"mappings":"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"}