@yahoo/uds-create-config 4.36.1 → 4.37.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/configs/system.js +2 -0
- package/dist/entities/system/LinkedSystem.d.ts +8 -0
- package/dist/entities/system/LinkedSystem.js +22 -12
- package/dist/entities/system/copy-plan.js +1 -2
- package/dist/entities/system/link-plan.d.ts +24 -5
- package/dist/entities/system/link-plan.js +70 -15
- package/dist/framework/Config.d.ts +1 -1
- package/dist/framework/Config.js +1 -1
- package/dist/framework/schema-version.d.ts +1 -1
- package/dist/framework/schema-version.js +5 -5
- package/dist/index.d.ts +2 -2
- package/dist/migrations/20260928180801_link_on_linked.d.ts +10 -0
- package/dist/migrations/20260928180801_link_on_linked.js +8 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
package/dist/configs/system.js
CHANGED
|
@@ -42,6 +42,7 @@ import { renderTokenRefsMigration } from "../migrations/20260923160425_render_to
|
|
|
42
42
|
import { globalStyleDerivedColorsMigration } from "../migrations/20260923163604_global_style_derived_colors.js";
|
|
43
43
|
import { slotCodeFormsMigration } from "../migrations/20260924044539_slot_code_forms.js";
|
|
44
44
|
import { canvasRoleSlotMigration } from "../migrations/20260925143319_canvas_role_slot.js";
|
|
45
|
+
import { linkOnLinkedMigration } from "../migrations/20260928180801_link_on_linked.js";
|
|
45
46
|
const System = defineConfig({
|
|
46
47
|
name: WEB_CONFIG_NAME,
|
|
47
48
|
description: "A design system: the values, primitives and compositions an app is built from. A ref is written `{ \"__ref\": \"<kind>:<path>\" }`, so a token is `{ \"__ref\": \"token:<group>/<name>\" }` and a token group is `{ \"__ref\": \"token:<group>\" }`. Build it in this order. Tokens first, in groups by purpose (colors, spacing, radii, type sizes), since everything else names them. Then style properties, each with `values` holding one ref to the token group whose members it accepts (`{ \"__ref\": \"token:color\" }`), so a prop takes token names rather than raw CSS; add a string keyword only for a value no token holds. A style rule's bag holds a prop's values (`\"padding\": \"4\"`, `\"bg\": \"brand\"`), never raw CSS. Then a few primitive components, one layer each, whose props are style properties (a box for layout and surface, a text for type, a pressable for interaction). Then every other component composed from those primitives: its layers name a primitive or an element, its anatomy places them (a node renders a layer, a tag or `Slot` where a slot prop's content lands; `children` is the edge list; `visible` is `{ \"$state\": \"<prop>\" }`; a prop shown in a nested layer is a `forward` route, and `$state` never sits in a node's props), and its style rules set style-property values per layer, keyed by prop values when a variant changes them. Modes (a dark mode is `{ type: \"selector\", value: \".dark\" }`) change token values through a token's `overrides`, so a component never restyles for a mode; modifiers (hover, focus, disabled) name a state, and a style rule applies under one as a `_hover` block inside a layer bag. Composites bundle style values that recur. Last, register canvas roles: the canvas draws with them, one entity per tool (`frame` for the layout primitive, `text` for the text primitive, `image`) whose entries name the components that tool inserts, and a tool whose role is unregistered is disabled. Give each component a `preview` entry under `*` so it shows content, and never write a CSS property name where a style-property name belongs.",
|
|
@@ -95,5 +96,6 @@ if (!registeredSchemaMigrations().has(20260923160425)) registerSchemaMigrations(
|
|
|
95
96
|
if (!registeredSchemaMigrations().has(20260923163604)) registerSchemaMigrations(globalStyleDerivedColorsMigration);
|
|
96
97
|
if (!registeredSchemaMigrations().has(20260924044539)) registerSchemaMigrations(slotCodeFormsMigration);
|
|
97
98
|
if (!registeredSchemaMigrations().has(20260925143319)) registerSchemaMigrations(canvasRoleSlotMigration);
|
|
99
|
+
if (!registeredSchemaMigrations().has(20260928180801)) registerSchemaMigrations(linkOnLinkedMigration);
|
|
98
100
|
//#endregion
|
|
99
101
|
export { System };
|
|
@@ -107,12 +107,20 @@ declare const LinkedSystemDefinition: EntityClass<z.ZodObject<{
|
|
|
107
107
|
readonly input: z.ZodObject<{
|
|
108
108
|
path: z.ZodType<string, string | undefined, z.core.$ZodTypeInternals<string, string | undefined>>;
|
|
109
109
|
data: z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodArray<z.ZodString>]>>]>;
|
|
110
|
+
onLinked: z.ZodOptional<z.ZodEnum<{
|
|
111
|
+
keep: "keep";
|
|
112
|
+
take: "take";
|
|
113
|
+
}>>;
|
|
110
114
|
}, z.core.$strip>;
|
|
111
115
|
};
|
|
112
116
|
readonly 'link-plan': {
|
|
113
117
|
readonly input: z.ZodObject<{
|
|
114
118
|
path: z.ZodType<string, string | undefined, z.core.$ZodTypeInternals<string, string | undefined>>;
|
|
115
119
|
data: z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodArray<z.ZodString>]>>]>;
|
|
120
|
+
onLinked: z.ZodOptional<z.ZodEnum<{
|
|
121
|
+
keep: "keep";
|
|
122
|
+
take: "take";
|
|
123
|
+
}>>;
|
|
116
124
|
}, z.core.$strip>;
|
|
117
125
|
};
|
|
118
126
|
readonly unlink: {
|
|
@@ -146,7 +146,10 @@ const linkInput = z.object({
|
|
|
146
146
|
path: pathInput("linked-system"),
|
|
147
147
|
/** What to draw, keyed by accessor the way the pin's `link` is, or `'*'` for everything the source
|
|
148
148
|
* offers. A path that names a folder in the source covers its members. */
|
|
149
|
-
data: z.union([z.literal("*"), z.record(z.string(), copyPaths)])
|
|
149
|
+
data: z.union([z.literal("*"), z.record(z.string(), copyPaths)]),
|
|
150
|
+
/** What to do at a path another linked system provides: `'take'` makes it follow this source,
|
|
151
|
+
* `'keep'` leaves it where it comes from. Required when there is one; `link-plan` lists them. */
|
|
152
|
+
onLinked: z.enum(["keep", "take"]).optional()
|
|
150
153
|
});
|
|
151
154
|
const unlinkInput = z.object({
|
|
152
155
|
path: pathInput("linked-system"),
|
|
@@ -173,6 +176,14 @@ function copyInputOf(input) {
|
|
|
173
176
|
...input.onConflict === void 0 ? {} : { onConflict: input.onConflict }
|
|
174
177
|
};
|
|
175
178
|
}
|
|
179
|
+
/** The parsed `link` input as the plan takes it. */
|
|
180
|
+
function linkPlanInputOf(input) {
|
|
181
|
+
return {
|
|
182
|
+
path: String(input.path),
|
|
183
|
+
data: input.data,
|
|
184
|
+
...input.onLinked === void 0 ? {} : { onLinked: input.onLinked }
|
|
185
|
+
};
|
|
186
|
+
}
|
|
176
187
|
/** A `link` or `unlink` example: one entity the source offers, under the accessor this config files it by. */
|
|
177
188
|
function linkExample({ config, path }) {
|
|
178
189
|
const target = exampleBorrowable(config, path);
|
|
@@ -243,7 +254,8 @@ const LinkedSystem = defineEntity({
|
|
|
243
254
|
* Draw entities from a linked system: the pin's `link` declaration grows to cover them and the
|
|
244
255
|
* build mints a pointer row per entity, in this one op. A row of this config's own at a covered
|
|
245
256
|
* path is deleted so theirs shows through; a row held through another pin becomes an extension
|
|
246
|
-
* through this one
|
|
257
|
+
* through this one when `onLinked` is `'take'`. `link-plan` says what that replaces before anything
|
|
258
|
+
* is written.
|
|
247
259
|
*/
|
|
248
260
|
link: {
|
|
249
261
|
input: linkInput,
|
|
@@ -255,13 +267,14 @@ const LinkedSystem = defineEntity({
|
|
|
255
267
|
title: (entity) => `Link something from ${entity}`,
|
|
256
268
|
example: linkExample,
|
|
257
269
|
handler: (input, config) => {
|
|
258
|
-
const { patches } = planLink({
|
|
270
|
+
const { linked, patches } = planLink({
|
|
259
271
|
config,
|
|
260
|
-
input:
|
|
261
|
-
path: String(input.path),
|
|
262
|
-
data: input.data
|
|
263
|
-
}
|
|
272
|
+
input: linkPlanInputOf(input)
|
|
264
273
|
});
|
|
274
|
+
if (linked.length > 0 && input.onLinked === void 0) {
|
|
275
|
+
const named = linked.map((at) => `${at.path} (from ${at.from})`);
|
|
276
|
+
rejectData(`Linking through "${String(input.path)}" reaches what another linked system provides: ${named.join(", ")}. Say whether to take them (\`onLinked: 'take'\`) or keep them where they come from (\`onLinked: 'keep'\`).`, ["onLinked"]);
|
|
277
|
+
}
|
|
265
278
|
if (patches.length === 0) return config;
|
|
266
279
|
return config.applyAll(patches).withDerivedRows();
|
|
267
280
|
}
|
|
@@ -270,17 +283,14 @@ const LinkedSystem = defineEntity({
|
|
|
270
283
|
input: linkInput,
|
|
271
284
|
readOnly: true,
|
|
272
285
|
label: "Plan a link",
|
|
273
|
-
description: "What `link` with the same input replaces — rows of yours deleted so the source shows through,
|
|
286
|
+
description: "What `link` with the same input replaces — rows of yours deleted so the source shows through, every path another linked system provides (`linked`, turned into extensions when `onLinked` says take), and members left alone because they are already here from the same origin. Writes nothing.",
|
|
274
287
|
scope: "item",
|
|
275
288
|
title: (entity) => `Plan a link from ${entity}`,
|
|
276
289
|
example: linkExample,
|
|
277
290
|
handler: (input, config) => {
|
|
278
291
|
const { patches: _patches, ...plan } = planLink({
|
|
279
292
|
config,
|
|
280
|
-
input:
|
|
281
|
-
path: String(input.path),
|
|
282
|
-
data: input.data
|
|
283
|
-
}
|
|
293
|
+
input: linkPlanInputOf(input)
|
|
284
294
|
});
|
|
285
295
|
return plan;
|
|
286
296
|
}
|
|
@@ -413,8 +413,7 @@ function planCopy({ config, input }) {
|
|
|
413
413
|
const removal = /* @__PURE__ */ new Map();
|
|
414
414
|
for (const { kind, at, named } of taking) {
|
|
415
415
|
if (!named) continue;
|
|
416
|
-
|
|
417
|
-
if (!stored || !isMintedRow(stored)) continue;
|
|
416
|
+
if (config.storedBody(kind, at) === void 0) continue;
|
|
418
417
|
if (config.resolve(kind, at)?.borrowedFrom !== slug) continue;
|
|
419
418
|
const accessor = config.accessorOf(kind) ?? kind;
|
|
420
419
|
if (!covers({
|
|
@@ -6,10 +6,21 @@ import { Config, Patch, TreeNode } from "../../framework/Config.js";
|
|
|
6
6
|
/** What one op names, keyed by accessor the way the pin's `link` is: every entry of the kind, or the
|
|
7
7
|
* source's paths, where a folder names its members. `'*'` alone is every kind the source offers. */
|
|
8
8
|
type LinkPaths = '*' | Readonly<Record<string, '*' | readonly string[]>>;
|
|
9
|
+
/** What a link does at a path held through another linked system: `'take'` makes the row follow this
|
|
10
|
+
* source, `'keep'` leaves it with the system it comes from. */
|
|
11
|
+
type OnLinked = 'keep' | 'take';
|
|
9
12
|
interface LinkPlanInput {
|
|
10
13
|
/** The pin's slug. */
|
|
11
14
|
readonly path: string;
|
|
12
15
|
readonly data: LinkPaths;
|
|
16
|
+
/** Planned as `'take'` when omitted; the `link` op refuses without it while `linked` is not empty. */
|
|
17
|
+
readonly onLinked?: OnLinked;
|
|
18
|
+
}
|
|
19
|
+
/** A path the link reaches that another linked system provides, or declares under a row of this
|
|
20
|
+
* config's own. */
|
|
21
|
+
interface LinkedElsewhere extends EntityAddress {
|
|
22
|
+
/** The slug of the pin it comes through. */
|
|
23
|
+
readonly from: string;
|
|
13
24
|
}
|
|
14
25
|
/** One row a link mints. `named` when a path the call named covers it; otherwise it comes along
|
|
15
26
|
* because something linked points at it. */
|
|
@@ -25,6 +36,8 @@ interface LinkPlan {
|
|
|
25
36
|
readonly replaces: number;
|
|
26
37
|
/** Rows of this config's own deleted so the source's row shows through at the path. */
|
|
27
38
|
readonly addresses: readonly EntityAddress[];
|
|
39
|
+
/** Every path the link reaches that another linked system provides, whatever `onLinked` says. */
|
|
40
|
+
readonly linked: readonly LinkedElsewhere[];
|
|
28
41
|
/** Rows held through another pin, turned into extensions through this one. */
|
|
29
42
|
readonly extended: readonly EntityAddress[];
|
|
30
43
|
/** Members already here from the source's own origin, left alone and kept out of the declaration. */
|
|
@@ -85,6 +98,11 @@ interface SourceRowState {
|
|
|
85
98
|
readonly linked: boolean;
|
|
86
99
|
/** Rows of this config's own a `link` would write over. */
|
|
87
100
|
readonly replaces: number;
|
|
101
|
+
/** Members another linked system provides or also declares, which a `link` asks about through
|
|
102
|
+
* `onLinked`. */
|
|
103
|
+
readonly linkedElsewhere: number;
|
|
104
|
+
/** The slugs of the pins those come through. */
|
|
105
|
+
readonly linkedFrom: readonly string[];
|
|
88
106
|
/** Members already here from the source's own origin, through another pin. */
|
|
89
107
|
readonly shared: number;
|
|
90
108
|
/** That origin's name, when `shared` is above zero. */
|
|
@@ -97,10 +115,11 @@ interface SourceRowState {
|
|
|
97
115
|
* The declaration goes first. A row of this config's own that other rows point at can only be deleted
|
|
98
116
|
* once the declaration covers the path, since the config refuses a delete that leaves a referrer
|
|
99
117
|
* dangling. A row held through another pin is not deleted — that pin's declaration would mint it
|
|
100
|
-
* again, and declaring one path on two pins is a collision nothing derives
|
|
101
|
-
* extension through this pin: a row of this config's own that shadows the other pin's and
|
|
102
|
-
* source.
|
|
103
|
-
*
|
|
118
|
+
* again, and declaring one path on two pins is a collision nothing derives. With `onLinked: 'take'` it
|
|
119
|
+
* becomes an extension through this pin: a row of this config's own that shadows the other pin's and
|
|
120
|
+
* follows this source. With `'keep'` it stays with the other pin and out of the declaration. A member
|
|
121
|
+
* already here from the source's own origin is left alone and kept out of the declaration, so a
|
|
122
|
+
* folder that holds one is declared by its other members.
|
|
104
123
|
*/
|
|
105
124
|
declare function planLink({
|
|
106
125
|
config,
|
|
@@ -159,4 +178,4 @@ declare function sourceRowStates({
|
|
|
159
178
|
readonly slug: string;
|
|
160
179
|
}): SourceRowState[];
|
|
161
180
|
//#endregion
|
|
162
|
-
export { BreakOutcome, BreakPlan, BreakPlanInput, BreakPlanRow, BreakReach, LinkArrival, LinkPaths, LinkPlan, LinkPlanInput, SourceRowState, UnlinkPlan, UnlinkPlanInput, planBreak, planLink, planUnlink, sourceRowStates };
|
|
181
|
+
export { BreakOutcome, BreakPlan, BreakPlanInput, BreakPlanRow, BreakReach, LinkArrival, LinkPaths, LinkPlan, LinkPlanInput, LinkedElsewhere, OnLinked, SourceRowState, UnlinkPlan, UnlinkPlanInput, planBreak, planLink, planUnlink, sourceRowStates };
|
|
@@ -42,6 +42,20 @@ function sharedWithOrigin({ config, source, slug, kind, path }) {
|
|
|
42
42
|
if (!theirs || !mine || theirs.key !== mine.key) return void 0;
|
|
43
43
|
return theirs.pin.displayName ?? theirs.key;
|
|
44
44
|
}
|
|
45
|
+
/** Another pin whose declaration covers the path and whose source has it: the pin the path would
|
|
46
|
+
* derive from if this config held nothing there. */
|
|
47
|
+
function declaredElsewhere({ config, slug, kind, path }) {
|
|
48
|
+
const accessor = config.accessorOf(kind) ?? kind;
|
|
49
|
+
for (const pin of config.list(PIN_KIND)) {
|
|
50
|
+
if (pin.path === slug) continue;
|
|
51
|
+
if (!covers({
|
|
52
|
+
declared: declarationOf(config, pin.path),
|
|
53
|
+
accessor,
|
|
54
|
+
path
|
|
55
|
+
})) continue;
|
|
56
|
+
if (config.sourceFor(pin.path)?.resolve(kind, path)) return pin.path;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
45
59
|
/**
|
|
46
60
|
* Link paths of a source: the declaration that mints them, then the edits that let them show through
|
|
47
61
|
* where this config already holds something.
|
|
@@ -49,10 +63,11 @@ function sharedWithOrigin({ config, source, slug, kind, path }) {
|
|
|
49
63
|
* The declaration goes first. A row of this config's own that other rows point at can only be deleted
|
|
50
64
|
* once the declaration covers the path, since the config refuses a delete that leaves a referrer
|
|
51
65
|
* dangling. A row held through another pin is not deleted — that pin's declaration would mint it
|
|
52
|
-
* again, and declaring one path on two pins is a collision nothing derives
|
|
53
|
-
* extension through this pin: a row of this config's own that shadows the other pin's and
|
|
54
|
-
* source.
|
|
55
|
-
*
|
|
66
|
+
* again, and declaring one path on two pins is a collision nothing derives. With `onLinked: 'take'` it
|
|
67
|
+
* becomes an extension through this pin: a row of this config's own that shadows the other pin's and
|
|
68
|
+
* follows this source. With `'keep'` it stays with the other pin and out of the declaration. A member
|
|
69
|
+
* already here from the source's own origin is left alone and kept out of the declaration, so a
|
|
70
|
+
* folder that holds one is declared by its other members.
|
|
56
71
|
*/
|
|
57
72
|
function planLink({ config, input }) {
|
|
58
73
|
const { path: slug } = input;
|
|
@@ -66,12 +81,13 @@ function planLink({ config, input }) {
|
|
|
66
81
|
verb: "link"
|
|
67
82
|
});
|
|
68
83
|
const addresses = [];
|
|
84
|
+
const linked = [];
|
|
69
85
|
const extended = [];
|
|
70
86
|
const shared = [];
|
|
71
87
|
const shadows = [];
|
|
72
88
|
/** Per accessor, what the declaration gains: the kind whole, or paths. */
|
|
73
89
|
const gains = /* @__PURE__ */ new Map();
|
|
74
|
-
let
|
|
90
|
+
let leftAnywhere = false;
|
|
75
91
|
const shadow = (kind, path) => {
|
|
76
92
|
const held = config.resolve(kind, path);
|
|
77
93
|
if (!held || held.borrowedFrom === slug) return true;
|
|
@@ -86,10 +102,16 @@ function planLink({ config, input }) {
|
|
|
86
102
|
kind,
|
|
87
103
|
path
|
|
88
104
|
});
|
|
89
|
-
|
|
105
|
+
leftAnywhere = true;
|
|
90
106
|
return false;
|
|
91
107
|
}
|
|
92
|
-
|
|
108
|
+
const from = held.borrowedFrom ?? declaredElsewhere({
|
|
109
|
+
config,
|
|
110
|
+
slug,
|
|
111
|
+
kind,
|
|
112
|
+
path
|
|
113
|
+
});
|
|
114
|
+
if (from === void 0) {
|
|
93
115
|
addresses.push({
|
|
94
116
|
kind,
|
|
95
117
|
path
|
|
@@ -101,6 +123,20 @@ function planLink({ config, input }) {
|
|
|
101
123
|
});
|
|
102
124
|
return true;
|
|
103
125
|
}
|
|
126
|
+
linked.push({
|
|
127
|
+
kind,
|
|
128
|
+
path,
|
|
129
|
+
from
|
|
130
|
+
});
|
|
131
|
+
if (input.onLinked === "keep") {
|
|
132
|
+
if (held.borrowedFrom === void 0) shadows.push({
|
|
133
|
+
kind,
|
|
134
|
+
operation: "delete",
|
|
135
|
+
path
|
|
136
|
+
});
|
|
137
|
+
leftAnywhere = true;
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
104
140
|
const stored = config.storedBody(kind, path);
|
|
105
141
|
const minted = stored !== void 0 && isMintedRow(stored);
|
|
106
142
|
extended.push({
|
|
@@ -145,7 +181,7 @@ function planLink({ config, input }) {
|
|
|
145
181
|
}
|
|
146
182
|
const declares = [];
|
|
147
183
|
let declared = current;
|
|
148
|
-
if (current !== "*") if (input.data === "*" && !
|
|
184
|
+
if (current !== "*") if (input.data === "*" && !leftAnywhere) {
|
|
149
185
|
declared = "*";
|
|
150
186
|
declares.push({
|
|
151
187
|
kind: PIN_KIND,
|
|
@@ -192,6 +228,7 @@ function planLink({ config, input }) {
|
|
|
192
228
|
}),
|
|
193
229
|
replaces: addresses.length,
|
|
194
230
|
addresses,
|
|
231
|
+
linked,
|
|
195
232
|
extended,
|
|
196
233
|
shared,
|
|
197
234
|
patches
|
|
@@ -485,7 +522,7 @@ function planBreak({ config, input }) {
|
|
|
485
522
|
const pointing = /* @__PURE__ */ new Map();
|
|
486
523
|
/** Folders drawn through the pin by a pointer of this config's own, released once their members are copied. */
|
|
487
524
|
const pointedFolders = [];
|
|
488
|
-
const reach = ({ kind, path, reach }) => {
|
|
525
|
+
const reach = ({ kind, path, reach: how }) => {
|
|
489
526
|
const held = config.resolve(kind, path);
|
|
490
527
|
if (held?.borrowedFrom === slug) {
|
|
491
528
|
copying.path(kind, path);
|
|
@@ -495,7 +532,7 @@ function planBreak({ config, input }) {
|
|
|
495
532
|
folder: false,
|
|
496
533
|
refs: [ref(kind, path, slug).__ref],
|
|
497
534
|
outcome: "copied",
|
|
498
|
-
reach
|
|
535
|
+
reach: how
|
|
499
536
|
});
|
|
500
537
|
return;
|
|
501
538
|
}
|
|
@@ -516,9 +553,15 @@ function planBreak({ config, input }) {
|
|
|
516
553
|
folder: true,
|
|
517
554
|
refs: [ref(kind, path, slug).__ref],
|
|
518
555
|
outcome: "copied",
|
|
519
|
-
reach
|
|
556
|
+
reach: how
|
|
520
557
|
});
|
|
558
|
+
return;
|
|
521
559
|
}
|
|
560
|
+
for (const member of config.members(kind, path)) if (member.borrowedFrom === slug) reach({
|
|
561
|
+
kind,
|
|
562
|
+
path: member.path,
|
|
563
|
+
reach: "taken"
|
|
564
|
+
});
|
|
522
565
|
return;
|
|
523
566
|
}
|
|
524
567
|
const refs = drawnThroughPin({
|
|
@@ -534,7 +577,7 @@ function planBreak({ config, input }) {
|
|
|
534
577
|
}
|
|
535
578
|
pointing.set(`${kind}:${path}`, {
|
|
536
579
|
refs,
|
|
537
|
-
reach
|
|
580
|
+
reach: how
|
|
538
581
|
});
|
|
539
582
|
};
|
|
540
583
|
if (scoped) for (const { kind, accessor, paths } of wantedKinds({
|
|
@@ -730,6 +773,8 @@ function sourceRowStates({ config, slug }) {
|
|
|
730
773
|
if (members.length === 0) continue;
|
|
731
774
|
let linked = 0;
|
|
732
775
|
let local = 0;
|
|
776
|
+
let elsewhere = 0;
|
|
777
|
+
const linkedFrom = /* @__PURE__ */ new Set();
|
|
733
778
|
let shared = 0;
|
|
734
779
|
let sharedOrigin;
|
|
735
780
|
for (const leaf of members) {
|
|
@@ -739,7 +784,6 @@ function sourceRowStates({ config, slug }) {
|
|
|
739
784
|
linked += 1;
|
|
740
785
|
continue;
|
|
741
786
|
}
|
|
742
|
-
local += 1;
|
|
743
787
|
const origin = sharedWithOrigin({
|
|
744
788
|
config: derived,
|
|
745
789
|
source,
|
|
@@ -747,10 +791,19 @@ function sourceRowStates({ config, slug }) {
|
|
|
747
791
|
kind,
|
|
748
792
|
path: leaf.path
|
|
749
793
|
});
|
|
794
|
+
const from = origin === void 0 ? held.borrowedFrom ?? declaredElsewhere({
|
|
795
|
+
config: derived,
|
|
796
|
+
slug,
|
|
797
|
+
kind,
|
|
798
|
+
path: leaf.path
|
|
799
|
+
}) : void 0;
|
|
750
800
|
if (origin !== void 0) {
|
|
751
801
|
shared += 1;
|
|
752
802
|
sharedOrigin ??= origin;
|
|
753
|
-
}
|
|
803
|
+
} else if (from !== void 0) {
|
|
804
|
+
elsewhere += 1;
|
|
805
|
+
linkedFrom.add(from);
|
|
806
|
+
} else local += 1;
|
|
754
807
|
}
|
|
755
808
|
rows.push({
|
|
756
809
|
kind,
|
|
@@ -760,7 +813,9 @@ function sourceRowStates({ config, slug }) {
|
|
|
760
813
|
members: members.length,
|
|
761
814
|
held: linked,
|
|
762
815
|
linked: linked === members.length,
|
|
763
|
-
replaces: local
|
|
816
|
+
replaces: local,
|
|
817
|
+
linkedElsewhere: elsewhere,
|
|
818
|
+
linkedFrom: [...linkedFrom],
|
|
764
819
|
shared,
|
|
765
820
|
...sharedOrigin === void 0 ? {} : { sharedOrigin }
|
|
766
821
|
});
|
|
@@ -72,7 +72,7 @@ interface RecordedSource {
|
|
|
72
72
|
* The dense-counter `2` a short-lived scheme stamped before the chain existed reads as the mint
|
|
73
73
|
* that replaced it (see `detectedWireVersion`).
|
|
74
74
|
*/
|
|
75
|
-
declare const SERIALIZED_CONFIG_VERSION =
|
|
75
|
+
declare const SERIALIZED_CONFIG_VERSION = 20260928180801;
|
|
76
76
|
interface SerializedConfig {
|
|
77
77
|
/** See {@link SERIALIZED_CONFIG_VERSION}. Always written; a stored artifact may lack it. */
|
|
78
78
|
readonly version: number;
|
package/dist/framework/Config.js
CHANGED
|
@@ -5135,7 +5135,7 @@ var Config = class Config {
|
|
|
5135
5135
|
* links from the provided sources. A declared `linkedKind` with no provided source throws. */
|
|
5136
5136
|
hydrateFrom(stored, options) {
|
|
5137
5137
|
const claimed = schemaVersionOf(stored);
|
|
5138
|
-
if (claimed >
|
|
5138
|
+
if (claimed > 20260928180801) throw new SchemaVersionTooNew(claimed);
|
|
5139
5139
|
const wire = upgradeSerializedConfig(stored);
|
|
5140
5140
|
if (!Array.isArray(wire.ownedKinds) || typeof wire.items !== "object" || wire.items === null) throw new ConfigFormatError(`Config "${stored.name ?? "system-config"}" cannot be hydrated: this is not a serialized config-v2 config (no "ownedKinds"/"items"). A pre-cutover build artifact converts through the registered cutover migration — import the config type's module (e.g. \`configs/system\`) before hydrating, or port the repo once with \`uds migrate\`.`);
|
|
5141
5141
|
const leftover = wire.options;
|
|
@@ -15,7 +15,7 @@ import { Patch, SerializedConfig } from "./Config.js";
|
|
|
15
15
|
* sets this constant to its own older timestamp; the merge ref then carries a registered migration
|
|
16
16
|
* newer than the constant, and the assertion fails until the author re-mints.
|
|
17
17
|
*/
|
|
18
|
-
declare const CURRENT_SCHEMA_VERSION =
|
|
18
|
+
declare const CURRENT_SCHEMA_VERSION = 20260928180801;
|
|
19
19
|
/** What the walkers need to see of an envelope — loose on purpose, so a typed `SerializedConfig`
|
|
20
20
|
* and a raw old-shape record both flow in without casts. */
|
|
21
21
|
interface VersionStamped {
|
|
@@ -13,7 +13,7 @@ import { ConfigFormatError } from "./rejection.js";
|
|
|
13
13
|
* sets this constant to its own older timestamp; the merge ref then carries a registered migration
|
|
14
14
|
* newer than the constant, and the assertion fails until the author re-mints.
|
|
15
15
|
*/
|
|
16
|
-
const CURRENT_SCHEMA_VERSION =
|
|
16
|
+
const CURRENT_SCHEMA_VERSION = 20260928180801;
|
|
17
17
|
/** The mint that moved `options` into the `settings` kind — restated here, rather than imported
|
|
18
18
|
* from the migration that owns it, because that migration imports this module. */
|
|
19
19
|
const SETTINGS_AS_KIND_VERSION = 20260908171448;
|
|
@@ -45,7 +45,7 @@ function registerSchemaMigrations(...migrations) {
|
|
|
45
45
|
for (const migration of migrations) {
|
|
46
46
|
if (migration.version !== 1 && !isMintTimestamp(migration.version)) throw new Error(`Schema migration version ${migration.version} is not a mint timestamp — mint one with \`date +%Y%m%d%H%M%S\`, like a supabase migration.`);
|
|
47
47
|
if (REGISTERED.has(migration.version)) throw new Error(`A schema migration at version ${migration.version} is already registered.`);
|
|
48
|
-
if (migration.version >
|
|
48
|
+
if (migration.version > 20260928180801) throw new Error(`Schema migration ${migration.version} is newer than CURRENT_SCHEMA_VERSION (${CURRENT_SCHEMA_VERSION}) — a stale branch merged, or the mint forgot to bump the constant. Re-mint: set CURRENT_SCHEMA_VERSION to the newest migration version.`);
|
|
49
49
|
REGISTERED.set(migration.version, migration);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -102,7 +102,7 @@ function pendingFor(version, target, options) {
|
|
|
102
102
|
* Already-current input passes through untouched — same reference, so hot paths pay nothing.
|
|
103
103
|
*/
|
|
104
104
|
function upgradeSerializedConfig(json, options) {
|
|
105
|
-
const target = options?.target ??
|
|
105
|
+
const target = options?.target ?? 20260928180801;
|
|
106
106
|
const version = detectedWireVersion(json);
|
|
107
107
|
if (version > target) throw new SchemaVersionTooNew(version, target);
|
|
108
108
|
const raw = json;
|
|
@@ -160,7 +160,7 @@ function upgradedSources(json, options) {
|
|
|
160
160
|
* meaning under the current schema and replay skips it — reported by the caller, not swallowed here.
|
|
161
161
|
*/
|
|
162
162
|
function upgradePatch(patch, writtenAt, options) {
|
|
163
|
-
const target = options?.target ??
|
|
163
|
+
const target = options?.target ?? 20260928180801;
|
|
164
164
|
if (writtenAt > target) throw new SchemaVersionTooNew(writtenAt, target);
|
|
165
165
|
let current = patch;
|
|
166
166
|
for (const migration of pendingFor(writtenAt, target, options)) {
|
|
@@ -179,7 +179,7 @@ function upgradePatch(patch, writtenAt, options) {
|
|
|
179
179
|
* stamp would cause.
|
|
180
180
|
*/
|
|
181
181
|
function upgradeDraftEntries(draft, options) {
|
|
182
|
-
const target = options?.target ??
|
|
182
|
+
const target = options?.target ?? 20260928180801;
|
|
183
183
|
const entries = [];
|
|
184
184
|
const held = [];
|
|
185
185
|
const retired = [];
|
package/dist/index.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ import { EntryGroup, GROUP, GroupBody, brandGroup, isGroupBody } from "./framewo
|
|
|
20
20
|
import { EntityClass, GroupComputedInput, ItemOf, KindRef, OpInput, defineEntity } from "./framework/defineEntity.js";
|
|
21
21
|
import { Collection, ConfigClass, ConfigInstance, ConfigKind, EntityMap, OwnedRecords, SourceMap, SourcesOf, defineConfig, kindsOf } from "./framework/defineConfig.js";
|
|
22
22
|
import { LINK_SLUG, LINK_SLUG_MESSAGE, LinkDeclaration, LinkedSystem, LinkedSystemClass, LinkedSystemResolver, LinkedSystemState, PinDirective, PinOptions, PinOptionsField, ResolvedSource, Source, SourceUnavailable, borrowedGroup, borrowedItem, isLinkSlug, resolvedSource, sourceOfGroup, sourceOfItem, sourceSlugFor, sourceUnavailable, suggestLinkSlug } from "./entities/system/LinkedSystem.js";
|
|
23
|
-
import { BreakOutcome, BreakPlan, BreakPlanInput, BreakPlanRow, BreakReach, LinkArrival, LinkPaths, LinkPlan, LinkPlanInput, SourceRowState, UnlinkPlan, UnlinkPlanInput, planBreak, planLink, planUnlink, sourceRowStates } from "./entities/system/link-plan.js";
|
|
23
|
+
import { BreakOutcome, BreakPlan, BreakPlanInput, BreakPlanRow, BreakReach, LinkArrival, LinkPaths, LinkPlan, LinkPlanInput, LinkedElsewhere, OnLinked, SourceRowState, UnlinkPlan, UnlinkPlanInput, planBreak, planLink, planUnlink, sourceRowStates } from "./entities/system/link-plan.js";
|
|
24
24
|
import { EntityChange, KindSlice, Snapshot } from "./framework/snapshot.js";
|
|
25
25
|
import { AttachedSources, Config, CssGrammar, Edition, HydrationOptions, ListOptions, LiveConfig, Patch, RecordedSource, SERIALIZED_CONFIG_VERSION, SerializedConfig, SkippedOp, SourcesBySlug, StoredConfig, SubPatch, TreeNode } from "./framework/Config.js";
|
|
26
26
|
import { CapturedChild, CapturedElement, CapturedNode, CapturedNodeJson, CapturedText, DomLikeElement, capturedFromDom, elementFromCaptured } from "./capture/captured-tree.js";
|
|
@@ -106,4 +106,4 @@ import { SpecNode, validateSpec } from "./framework/validate-spec.js";
|
|
|
106
106
|
import { valueLeavesOf, valueSchemaOf } from "./framework/value-domain.js";
|
|
107
107
|
import { views } from "./framework/views-facade.js";
|
|
108
108
|
import { RN_STYLE_KEYS } from "./react-native/style-keys.generated.js";
|
|
109
|
-
export { AI_LANES, ANATOMY_MARKER, AiChat, type AiChatClass, AiFlow, type AiFlowClass, type AiFlowOrigin, AiGeneration, type AiGenerationClass, type AiLane, AiMessage, type AiMessageClass, type AiMultiAgentMode, type AnatomyIssue, type AnatomyIssueKind, type AnatomyReport, type AnySystemConfig, type AsInput, type AttachedSources, type Authored, type AuthoredComponent, type AuthoredProp, type AuthoredPropBody, type AuthoredStyleBag, type AuthoredStyleField, type AuthoringSignatureOptions, BUILD_DEFAULTS, type BindingKind, type BreakOutcome, type BreakPlan, type BreakPlanInput, type BreakPlanRow, type BreakReach, BuildSection, type BuildSectionClass, CANVAS_ROLES, CONFIG_OPERATION_KIND, CSS_DEFAULTS, CSS_PROPERTY_NAMES, CSS_WIDE_KEYWORDS, CURRENT_SCHEMA_VERSION, Canvas, type CanvasClass, CanvasConfig, type CanvasConfigClass, CanvasRole, type CanvasRoleClass, type CanvasRoleName, CanvasSection, type CanvasSectionClass, type CaptureToSpecOptions, type CaptureToSpecResult, type CapturedChild, type CapturedElement, CapturedNode, type CapturedNodeJson, type Spec as CapturedSpec, type SpecElement as CapturedSpecElement, type CapturedText, type Cell, type CellSlot, type Change, type ChangeHook, type ChangeTarget, type CheckedTokenRefPath, type ChildrenPolicy, type ClassGrammar, type CodeSlot, type Collection, type ColorValue, Component, type ComponentBody, type ComponentBuilder, type ComponentClass, type ComponentContractOf, type ComponentElementBody, type ComponentModuleSource, type ComponentPropBody, type ComponentPropsOf, type ComponentReference, type ComponentRegistryImport, type ComponentRegistryImportBinding, type ComponentRuleClass, type ComponentSpec, type ComponentSpecs, type ComponentStyleBody, type ComposedValue, type ComposedValueAuthoring, type ComposedValueForm, Composite, type CompositeClass, type ComputedFields, type ComputedFunctions, type ComputedInput, type ComputedMap, type ComputedValue, Config, type ConfigClass, type ConfigEdit, ConfigFormatError, type ConfigInstance, type ConfigIssue, type ConfigIssueCode, type ConfigKind, type ConfigOp, ConfigRejection, ConfigSession, type ConfigSessionOptions, type ConfigSink, type ConfigSource, type CopyPlan, type CopyPlanInput, type CopyPlanRow, type CreateInput, type CssGrammar, type CssPrefix, type CssPropertyEntry, CssSection, type CssSectionClass, DERIVED_COLOR_SPACE, DERIVED_MUTATIONS, type DanglingDirective, type DanglingLocalRef, type DanglingRef, type DeclaredRuntimeModule, type DeletePlan, type DeriveMembers, type DerivedColor, type DerivedEntityClass, type DerivedOp, Device, type DeviceClass, type DiffOptions, Documentation, type DocumentationClass, DocumentationLibrary, type DocumentationLibraryClass, type DomLikeElement, type DraftSource, ENTITY_PATH_MESSAGE, EXPORT_MEMBER, type Edition, type ElementVisibility, type ElementVisibilityInput, type ElementVisibilitySchema, Entity, type EntityAddress, type EntityChange, type EntityClass, type EntityKind, type EntityMap, type EntryGroup, type ExpandOptions, type ExpansionResult, type ExtendedComponentRef, type ExtendedRef, type FieldsSchema, File, type FileClass, Font, type FontClass, FontFile, type FontFileClass, type ForwardClaims, GROUP, GUIDANCE_LANES, GlobalStyle, type GlobalStyleClass, type GlyphComponent, type GlyphExportRule, type GlyphSource, type GlyphValue, type GoverningCondition, type Gradient, type GroupBody, type GroupComputedInput, Guidance, type GuidanceClass, type GuidanceLane, type GuidanceScope, type GuidanceSegment, GuidanceStyle, type GuidanceStyleBody, type GuidanceStyleClass, type HasSnapshot, type HydrationOptions, ICON_METADATA_FORMATS, Icon, type IconAnswer, type IconClass, type IconGlyph, type IconHook, type IconLibrary, type IconMemberMetadata, type IconMetadataAdapter, type IconMetadataDeclaration, type IconMetadataFile, type IconMetadataFormat, type IconTool, type IconVariantAs, type IdentifiedOp, type InferredRename, type Instance, type InstanceSlot, type InstanceSpec, type ItemOf, type KindRef, type KindSignature, type KindSlice, LINK_SLUG, LINK_SLUG_MESSAGE, type LayerElement, type LayerMap, type LayerPropDriver, type LayerStyleOptions, type LeafAddress, type LinkArrival, type LinkDeclaration, type LinkPaths, type LinkPlan, type LinkPlanInput, LinkedSystem, type LinkedSystemClass, type LinkedSystemResolver, type LinkedSystemState, type ListOptions, type LiveConfig, type LocalOverlay, MINTED, MODIFIER_CATEGORIES, type MarkerKind, type MisdeclaredOverlay, Modifier, type ModifierCategory, type ModifierClass, type ModifierGroupMeta, Motion, type MotionClass, NATIVE_ACTIVATIONS, type NativeActivation, NativeModifier, type NativeModifierClass, NativeSettings, NativeStyleProperty, NativeToken, Node, type NodeClass, type OpHandler, type OpInput, Operation, type OperationClass, type OverlayVerb, type OverrideCondition, type OwnedRecords, PLAYGROUND_DEFAULTS, Package, type PackageClass, Page, type PageClass, type Patch, type PathOf, type PinDirective, type PinOptions, type PinOptionsField, type Plan, type PlanImpact, type PlanOp, PlaygroundSection, type PlaygroundSectionClass, type PreviewElement, type PreviewMatrix, type ProjectedVisibility, type PropCondition, type PropDecl, type PropDeclaration, type PropMap, type PropRoute, type PropShapeSchema, RN_STYLE_KEYS, ReactNativeSystem, type ReactNativeSystemClass, type ReactNativeSystemConfig, type RebaseConflict, type RebaseOrigin, type RebaseResult, type RecordedSource, type RedundantQualifier, type Ref, type RefGraph, type RefGraphEntry, type RefIndex, type RefIndexChange, type RefMember, type RefTarget, type RegisteredComponentContracts, type RegisteredEntities, type RegisteredMembers, type RegisteredModifiers, type RegisteredPaths, type RegisteredStyleBag, type RegisteredStyleProps, type RegisteredTokenValues, type RenamePlan, type RenderArgs, type RenderElement, type RenderSpec, type RenderedNode, type RenderedTarget, type RepeatRow, type RepeatSpec, type ResolveContext, type ResolveValueTypeInput, type ResolvedBinding, type ResolvedSource, type RootFontSize, SCRIPT_EXTENSIONS, SERIALIZED_CONFIG_VERSION, SIZE_TOLERANCE_PX, SLOT_CODE_FORMS, STYLE_PROPERTIES, STYLE_PROP_VALUE_FORMS, STYLE_PROP_VALUE_LEAVES, type SchemaEntry, type SchemaMigration, SchemaVersionTooNew, type SerializedConfig, type SerializedSourceAnswer, Settings, type SettingsClass, type SignatureOptions, type SkippedOp, type Slot, type SlotCell, type SlotCodeForm, type SlotDecl, type SlotTarget, Snapshot, type Source, type SourceAnswer, type SourceChange, type SourceMap, type SourceResolution, type SourceResolutionSchemas, type SourceResolver, type SourceRowState, type SourceState, type SourceUnavailable, type SourcesBySlug, type SourcesOf, type SpecNode, type SplitStyleProps, type StampedPatch, type StoredConfig, type StoredPreviewCondition, type StyleClass, type StylePropEntry, type StylePropLeaf, type StylePropValue, type StylePropValueCtx, type StylePropValueKind, StyleProperty, type StylePropertyClass, type StylePropertyItem, type StyleRuleInput, type StyleValue, type SubEntityClass, type SubPatch, type SurfaceCompositeProp, type SurfaceProp, type SurfacePropCondition, type SurfacePropKind, type SurfaceScalarProp, type SurfaceSlotProp, type SurfaceStylePropertyProp, type SurfaceVariantProp, System, type SystemClass, type SystemConfig, SystemSection, type SystemSectionClass, SystemSource, type SystemSourceClass, TOKEN_READERS, type TimingValue, Token, type TokenBinding, type TokenBody, type TokenClass, type TokenGroupReader, type TokenMatch, type TokenReader, type TokenReaders, type TokenRefPath, type TokenReference, type TokenValueEntry, type TokenValueRow, type TokenValueState, Tool, type ToolClass, type Transition, type TransitionSegment, type TraverseOptions, type TreeNode, UNCONDITIONAL_PREVIEW_KEY, UNREACHABLE, type UnadoptedDirective, type UnknownStyleLeaf, type UnlinkPlan, type UnlinkPlanInput, type UnreadableBorrow, type UnstatableCondition, type UnstatableOverride, type UpgradedDraft, type UserSchemas, VOID_ELEMENTS, type ValueOf, type ValueType, type VarNaming, type VariantValueBody, type VariantValues, type VisibilityOperator, type VisibilityTerm, WEB_ACTIVATIONS, type WalkOptions, type WebActivation, addressOf, alpha, anatomyElementComponent, anatomyIssueKey, anatomyTextProp, applyPathDelta, authoredBag, authoredValue, authoringSignatures, baseOf, bindStateRef, bindingPath, blankComponentBody, borrowedGroup, borrowedItem, boundElementType, brandGroup, buildRefGraph, buildRefIndex, canonicalWhen, capturedFromDom, changeOf, changeValueAt, changesOf, childrenPolicy, classGrammar, className, classPrefixOf, classifyOverlay, classifyStylePropValue, codeSlotsOf, collectRefs, componentClassBase, componentCompositeClasses, componentLayerClass, componentModuleFilePaths, componentModuleKey, componentModuleSource, componentMotionClasses, componentPropClasses, componentRegistryImports, componentRuleClasses, componentSpec, composedValueAuthoring, composedValueFormOf, composedValueForms, composedValueSchemas, condArms, condValue, containsMarker, createCanvasConfig, createSliceMemo, cssPrefixes, cssPropValue, cssProperty, cssPropertyNames, cssString, cssValueIssue, cssVar, cssVarRef, danglingDirectives, danglingLocalRefs, danglingSourcedRefs, darken, declaredField, declaredPropDefaults, declaredPropRouting, declaredRuntimeModules, defineComponent, defineConfig, defineDerivedEntity, defineEntity, defineOverride, defineSubEntity, deriveCreateSchema, deriveSpec, deriveUpdateSchema, describeBody, describePatch, detectedWireVersion, diffRendered, editOp, elementFromCaptured, entityRefOf, entryKeyOf, expandComponent, expandSpec, fieldKeys, fontFamilyStack, forceModeAttribute, forceModeAttributeOf, forceModeProp, forceModePropGroup, forceModePropValue, forceModeProps, forceStateAttribute, forwardClaims, forwardedLayers, forwardedNames, forwardsOf, globalStyleName, glyphComponentOf, glyphExportNames, glyphExportRule, glyphLibrariesOf, glyphPropsOf, glyphSourcesOf, glyphType, graftPreviewElements, guidanceReaches, guidanceScopeOf, guidanceTextOf, heldLinked, iconCategories, iconLibraries, iconLibrary, iconMemberMetadata, iconMetadata, iconMetadataDeclaration, iconMetadataFile, iconMetadataFileJsonSchema, iconMetadataFormat, iconMetadataSourceFile, iconResolver, iconToolAxisOptions, iconToolFor, iconToolLibraries, iconToolOf, iconToolsOf, iconVariantAs, inferredRenames, inputOf, instanceHolding, instanceSpec, intoName, isAuthored, isBinaryAsset, isComposedValue, isConfigFormatError, isConfigRejection, isCssProperty, isDeclaredElementProp, isDerivedColor, isEntityPath, isExtendedRef, isForceModeProp, isGradient, isGroupBody, isIdentifier, isLinkSlug, isMintedRow, isNativeConfig, isPlainObject, isPreviewElement, isRef, isReservedWord, isSystemConfig, isTokenReader, isTransition, isValueSlot, kebabComponent, keyedPreviewConditions, kindOf, kindsOf, layerPropDrivers, layerPropRoutes, layerRef, layerRoutedProps, layerStyles, layerTextProp, leafAddresses, leafVerb, leavesOfStylePropValue, librariesBoundBy, libraryHolding, lighten, linearGradient, linkedVarNaming, liveStateProps, markerKind, matchEntities, matchTokens, memberFromLeaf, memberLeaves, memberOf, memberRef, memberVariantOptions, memoryConfigSource, misdeclaredOverlays, mix, modeAxes, modifierAxes, modifierAxis, modifierCategory, modifierGroupFields, modifierInvariants, modifierLeaf, modifierUtilitiesUsed, motionClassName, nameIconsInTree, namedFields, nativeTokenValue, negatedCssValue, normalizeName, normalizeStyleValue, opOf, opVerb, opacityPercentage, opsForKind, orRef, overlayVerb, overrideCondition, overrideKey, overrideKeyModifiers, overrideModifiers, ownValues, ownerOf, ownsItsValues, packageKey, packageName, parseRootFontSize, partsOf, pathDelta, pathOf, pathSegments, placedGlyphElement, planBreak, planCopy, planLink, planUnlink, previewConditionalProps, previewConditions, previewDefaults, previewMatrix, previewSpec, propApplies, propInto, propOwner, propRegistryRef, propValueDomain, propValueFromAxis, propsIntoLayer, readStatePointer, readsState, redundantQualifiers, ref, refGraphOf, refLeaf, refListOf, refSchema, refTo, registerSchemaMigrations, renderBindingsOf, renderComposedValue, renderDerivedColor, renderGradient, renderSignature, renderStyleValue, renderTransition, renderedElement, renderedSignatureOf, renderedTarget, resolutionSchema, resolveBinding, resolveComponentProps, resolveFieldValue, resolveIconLibraries, resolveInputDir, resolveOutDir, resolveRegistryDir, resolveTokenValue, resolveTokenValueUnder, resolveValue, resolveValueType, resolveVisibility, resolvedSource, rewriteRefNamespace, rewriteRefSource, rewriteRefs, rnStyleKey, rootFontSize, rootLayerOf, routeOf, routedBag, routedProp, routedPropIn, routesContent, ruleApplies, ruleCondition, runChangeHooks, schemaVersionOf, searchEntities, searchTokens, setAtPath, signatureOf, slotCodeForms, slotTargetsOf, snapshotHtml, sniffValueType, sourceEntries, sourceOf, sourceOfGroup, sourceOfItem, sourceRowStates, sourceSlugFor, sourceUnavailable, sourceUnreachable, sourceVarPrefix, specFromCapture, specToNodePatches, specWithResolvedVisibility, spellTokenRead, splitRef, splitStyleProps, stamp, standsInForCode, statePointerProp, stateRef, stateTest, storedPreview, styleAliasesOf, styleDeclarations, stylePropClassBase, stylePropClassName, stylePropClasses, stylePropEntries, stylePropLeafForToken, stylePropNegates, stylePropTokenGroup, stylePropTokenPath, stylePropTokenValues, stylePropValueFormOf, stylePropValueFromLeaf, stylePropValueLeaves, stylePropValueSchema, stylePropValues, stylePropertiesWriting, stylePropertyAccepts, stylePropertyFor, stylePropertyPathFor, styleRuleMotionClasses, suggestLinkSlug, summarizeChanges, surfaceProp, surfaceProps, tablerExportName, tablerStyledExportName, toCssPropertyName, tokenBinding, tokenExists, tokenValueRow, tokenValueRows, touchedFields, transition, unadoptedDirectives, unconditionalPreviewProps, unknownStyleLeaves, unreadableBorrows, unstatableConditions, unstatableOverrides, updateRefIndex, upgradeDraftEntries, upgradePatch, upgradeSerializedConfig, validateComponentProps, validateSpec, valueAt, valueForwardsOf, valueLeavesOf, valueRef, valueSchemaOf, varPrefixOf, views, visibilityStateProps, visibilityTerms, withoutTruthyTerm, wrappedElementKey };
|
|
109
|
+
export { AI_LANES, ANATOMY_MARKER, AiChat, type AiChatClass, AiFlow, type AiFlowClass, type AiFlowOrigin, AiGeneration, type AiGenerationClass, type AiLane, AiMessage, type AiMessageClass, type AiMultiAgentMode, type AnatomyIssue, type AnatomyIssueKind, type AnatomyReport, type AnySystemConfig, type AsInput, type AttachedSources, type Authored, type AuthoredComponent, type AuthoredProp, type AuthoredPropBody, type AuthoredStyleBag, type AuthoredStyleField, type AuthoringSignatureOptions, BUILD_DEFAULTS, type BindingKind, type BreakOutcome, type BreakPlan, type BreakPlanInput, type BreakPlanRow, type BreakReach, BuildSection, type BuildSectionClass, CANVAS_ROLES, CONFIG_OPERATION_KIND, CSS_DEFAULTS, CSS_PROPERTY_NAMES, CSS_WIDE_KEYWORDS, CURRENT_SCHEMA_VERSION, Canvas, type CanvasClass, CanvasConfig, type CanvasConfigClass, CanvasRole, type CanvasRoleClass, type CanvasRoleName, CanvasSection, type CanvasSectionClass, type CaptureToSpecOptions, type CaptureToSpecResult, type CapturedChild, type CapturedElement, CapturedNode, type CapturedNodeJson, type Spec as CapturedSpec, type SpecElement as CapturedSpecElement, type CapturedText, type Cell, type CellSlot, type Change, type ChangeHook, type ChangeTarget, type CheckedTokenRefPath, type ChildrenPolicy, type ClassGrammar, type CodeSlot, type Collection, type ColorValue, Component, type ComponentBody, type ComponentBuilder, type ComponentClass, type ComponentContractOf, type ComponentElementBody, type ComponentModuleSource, type ComponentPropBody, type ComponentPropsOf, type ComponentReference, type ComponentRegistryImport, type ComponentRegistryImportBinding, type ComponentRuleClass, type ComponentSpec, type ComponentSpecs, type ComponentStyleBody, type ComposedValue, type ComposedValueAuthoring, type ComposedValueForm, Composite, type CompositeClass, type ComputedFields, type ComputedFunctions, type ComputedInput, type ComputedMap, type ComputedValue, Config, type ConfigClass, type ConfigEdit, ConfigFormatError, type ConfigInstance, type ConfigIssue, type ConfigIssueCode, type ConfigKind, type ConfigOp, ConfigRejection, ConfigSession, type ConfigSessionOptions, type ConfigSink, type ConfigSource, type CopyPlan, type CopyPlanInput, type CopyPlanRow, type CreateInput, type CssGrammar, type CssPrefix, type CssPropertyEntry, CssSection, type CssSectionClass, DERIVED_COLOR_SPACE, DERIVED_MUTATIONS, type DanglingDirective, type DanglingLocalRef, type DanglingRef, type DeclaredRuntimeModule, type DeletePlan, type DeriveMembers, type DerivedColor, type DerivedEntityClass, type DerivedOp, Device, type DeviceClass, type DiffOptions, Documentation, type DocumentationClass, DocumentationLibrary, type DocumentationLibraryClass, type DomLikeElement, type DraftSource, ENTITY_PATH_MESSAGE, EXPORT_MEMBER, type Edition, type ElementVisibility, type ElementVisibilityInput, type ElementVisibilitySchema, Entity, type EntityAddress, type EntityChange, type EntityClass, type EntityKind, type EntityMap, type EntryGroup, type ExpandOptions, type ExpansionResult, type ExtendedComponentRef, type ExtendedRef, type FieldsSchema, File, type FileClass, Font, type FontClass, FontFile, type FontFileClass, type ForwardClaims, GROUP, GUIDANCE_LANES, GlobalStyle, type GlobalStyleClass, type GlyphComponent, type GlyphExportRule, type GlyphSource, type GlyphValue, type GoverningCondition, type Gradient, type GroupBody, type GroupComputedInput, Guidance, type GuidanceClass, type GuidanceLane, type GuidanceScope, type GuidanceSegment, GuidanceStyle, type GuidanceStyleBody, type GuidanceStyleClass, type HasSnapshot, type HydrationOptions, ICON_METADATA_FORMATS, Icon, type IconAnswer, type IconClass, type IconGlyph, type IconHook, type IconLibrary, type IconMemberMetadata, type IconMetadataAdapter, type IconMetadataDeclaration, type IconMetadataFile, type IconMetadataFormat, type IconTool, type IconVariantAs, type IdentifiedOp, type InferredRename, type Instance, type InstanceSlot, type InstanceSpec, type ItemOf, type KindRef, type KindSignature, type KindSlice, LINK_SLUG, LINK_SLUG_MESSAGE, type LayerElement, type LayerMap, type LayerPropDriver, type LayerStyleOptions, type LeafAddress, type LinkArrival, type LinkDeclaration, type LinkPaths, type LinkPlan, type LinkPlanInput, type LinkedElsewhere, LinkedSystem, type LinkedSystemClass, type LinkedSystemResolver, type LinkedSystemState, type ListOptions, type LiveConfig, type LocalOverlay, MINTED, MODIFIER_CATEGORIES, type MarkerKind, type MisdeclaredOverlay, Modifier, type ModifierCategory, type ModifierClass, type ModifierGroupMeta, Motion, type MotionClass, NATIVE_ACTIVATIONS, type NativeActivation, NativeModifier, type NativeModifierClass, NativeSettings, NativeStyleProperty, NativeToken, Node, type NodeClass, type OnLinked, type OpHandler, type OpInput, Operation, type OperationClass, type OverlayVerb, type OverrideCondition, type OwnedRecords, PLAYGROUND_DEFAULTS, Package, type PackageClass, Page, type PageClass, type Patch, type PathOf, type PinDirective, type PinOptions, type PinOptionsField, type Plan, type PlanImpact, type PlanOp, PlaygroundSection, type PlaygroundSectionClass, type PreviewElement, type PreviewMatrix, type ProjectedVisibility, type PropCondition, type PropDecl, type PropDeclaration, type PropMap, type PropRoute, type PropShapeSchema, RN_STYLE_KEYS, ReactNativeSystem, type ReactNativeSystemClass, type ReactNativeSystemConfig, type RebaseConflict, type RebaseOrigin, type RebaseResult, type RecordedSource, type RedundantQualifier, type Ref, type RefGraph, type RefGraphEntry, type RefIndex, type RefIndexChange, type RefMember, type RefTarget, type RegisteredComponentContracts, type RegisteredEntities, type RegisteredMembers, type RegisteredModifiers, type RegisteredPaths, type RegisteredStyleBag, type RegisteredStyleProps, type RegisteredTokenValues, type RenamePlan, type RenderArgs, type RenderElement, type RenderSpec, type RenderedNode, type RenderedTarget, type RepeatRow, type RepeatSpec, type ResolveContext, type ResolveValueTypeInput, type ResolvedBinding, type ResolvedSource, type RootFontSize, SCRIPT_EXTENSIONS, SERIALIZED_CONFIG_VERSION, SIZE_TOLERANCE_PX, SLOT_CODE_FORMS, STYLE_PROPERTIES, STYLE_PROP_VALUE_FORMS, STYLE_PROP_VALUE_LEAVES, type SchemaEntry, type SchemaMigration, SchemaVersionTooNew, type SerializedConfig, type SerializedSourceAnswer, Settings, type SettingsClass, type SignatureOptions, type SkippedOp, type Slot, type SlotCell, type SlotCodeForm, type SlotDecl, type SlotTarget, Snapshot, type Source, type SourceAnswer, type SourceChange, type SourceMap, type SourceResolution, type SourceResolutionSchemas, type SourceResolver, type SourceRowState, type SourceState, type SourceUnavailable, type SourcesBySlug, type SourcesOf, type SpecNode, type SplitStyleProps, type StampedPatch, type StoredConfig, type StoredPreviewCondition, type StyleClass, type StylePropEntry, type StylePropLeaf, type StylePropValue, type StylePropValueCtx, type StylePropValueKind, StyleProperty, type StylePropertyClass, type StylePropertyItem, type StyleRuleInput, type StyleValue, type SubEntityClass, type SubPatch, type SurfaceCompositeProp, type SurfaceProp, type SurfacePropCondition, type SurfacePropKind, type SurfaceScalarProp, type SurfaceSlotProp, type SurfaceStylePropertyProp, type SurfaceVariantProp, System, type SystemClass, type SystemConfig, SystemSection, type SystemSectionClass, SystemSource, type SystemSourceClass, TOKEN_READERS, type TimingValue, Token, type TokenBinding, type TokenBody, type TokenClass, type TokenGroupReader, type TokenMatch, type TokenReader, type TokenReaders, type TokenRefPath, type TokenReference, type TokenValueEntry, type TokenValueRow, type TokenValueState, Tool, type ToolClass, type Transition, type TransitionSegment, type TraverseOptions, type TreeNode, UNCONDITIONAL_PREVIEW_KEY, UNREACHABLE, type UnadoptedDirective, type UnknownStyleLeaf, type UnlinkPlan, type UnlinkPlanInput, type UnreadableBorrow, type UnstatableCondition, type UnstatableOverride, type UpgradedDraft, type UserSchemas, VOID_ELEMENTS, type ValueOf, type ValueType, type VarNaming, type VariantValueBody, type VariantValues, type VisibilityOperator, type VisibilityTerm, WEB_ACTIVATIONS, type WalkOptions, type WebActivation, addressOf, alpha, anatomyElementComponent, anatomyIssueKey, anatomyTextProp, applyPathDelta, authoredBag, authoredValue, authoringSignatures, baseOf, bindStateRef, bindingPath, blankComponentBody, borrowedGroup, borrowedItem, boundElementType, brandGroup, buildRefGraph, buildRefIndex, canonicalWhen, capturedFromDom, changeOf, changeValueAt, changesOf, childrenPolicy, classGrammar, className, classPrefixOf, classifyOverlay, classifyStylePropValue, codeSlotsOf, collectRefs, componentClassBase, componentCompositeClasses, componentLayerClass, componentModuleFilePaths, componentModuleKey, componentModuleSource, componentMotionClasses, componentPropClasses, componentRegistryImports, componentRuleClasses, componentSpec, composedValueAuthoring, composedValueFormOf, composedValueForms, composedValueSchemas, condArms, condValue, containsMarker, createCanvasConfig, createSliceMemo, cssPrefixes, cssPropValue, cssProperty, cssPropertyNames, cssString, cssValueIssue, cssVar, cssVarRef, danglingDirectives, danglingLocalRefs, danglingSourcedRefs, darken, declaredField, declaredPropDefaults, declaredPropRouting, declaredRuntimeModules, defineComponent, defineConfig, defineDerivedEntity, defineEntity, defineOverride, defineSubEntity, deriveCreateSchema, deriveSpec, deriveUpdateSchema, describeBody, describePatch, detectedWireVersion, diffRendered, editOp, elementFromCaptured, entityRefOf, entryKeyOf, expandComponent, expandSpec, fieldKeys, fontFamilyStack, forceModeAttribute, forceModeAttributeOf, forceModeProp, forceModePropGroup, forceModePropValue, forceModeProps, forceStateAttribute, forwardClaims, forwardedLayers, forwardedNames, forwardsOf, globalStyleName, glyphComponentOf, glyphExportNames, glyphExportRule, glyphLibrariesOf, glyphPropsOf, glyphSourcesOf, glyphType, graftPreviewElements, guidanceReaches, guidanceScopeOf, guidanceTextOf, heldLinked, iconCategories, iconLibraries, iconLibrary, iconMemberMetadata, iconMetadata, iconMetadataDeclaration, iconMetadataFile, iconMetadataFileJsonSchema, iconMetadataFormat, iconMetadataSourceFile, iconResolver, iconToolAxisOptions, iconToolFor, iconToolLibraries, iconToolOf, iconToolsOf, iconVariantAs, inferredRenames, inputOf, instanceHolding, instanceSpec, intoName, isAuthored, isBinaryAsset, isComposedValue, isConfigFormatError, isConfigRejection, isCssProperty, isDeclaredElementProp, isDerivedColor, isEntityPath, isExtendedRef, isForceModeProp, isGradient, isGroupBody, isIdentifier, isLinkSlug, isMintedRow, isNativeConfig, isPlainObject, isPreviewElement, isRef, isReservedWord, isSystemConfig, isTokenReader, isTransition, isValueSlot, kebabComponent, keyedPreviewConditions, kindOf, kindsOf, layerPropDrivers, layerPropRoutes, layerRef, layerRoutedProps, layerStyles, layerTextProp, leafAddresses, leafVerb, leavesOfStylePropValue, librariesBoundBy, libraryHolding, lighten, linearGradient, linkedVarNaming, liveStateProps, markerKind, matchEntities, matchTokens, memberFromLeaf, memberLeaves, memberOf, memberRef, memberVariantOptions, memoryConfigSource, misdeclaredOverlays, mix, modeAxes, modifierAxes, modifierAxis, modifierCategory, modifierGroupFields, modifierInvariants, modifierLeaf, modifierUtilitiesUsed, motionClassName, nameIconsInTree, namedFields, nativeTokenValue, negatedCssValue, normalizeName, normalizeStyleValue, opOf, opVerb, opacityPercentage, opsForKind, orRef, overlayVerb, overrideCondition, overrideKey, overrideKeyModifiers, overrideModifiers, ownValues, ownerOf, ownsItsValues, packageKey, packageName, parseRootFontSize, partsOf, pathDelta, pathOf, pathSegments, placedGlyphElement, planBreak, planCopy, planLink, planUnlink, previewConditionalProps, previewConditions, previewDefaults, previewMatrix, previewSpec, propApplies, propInto, propOwner, propRegistryRef, propValueDomain, propValueFromAxis, propsIntoLayer, readStatePointer, readsState, redundantQualifiers, ref, refGraphOf, refLeaf, refListOf, refSchema, refTo, registerSchemaMigrations, renderBindingsOf, renderComposedValue, renderDerivedColor, renderGradient, renderSignature, renderStyleValue, renderTransition, renderedElement, renderedSignatureOf, renderedTarget, resolutionSchema, resolveBinding, resolveComponentProps, resolveFieldValue, resolveIconLibraries, resolveInputDir, resolveOutDir, resolveRegistryDir, resolveTokenValue, resolveTokenValueUnder, resolveValue, resolveValueType, resolveVisibility, resolvedSource, rewriteRefNamespace, rewriteRefSource, rewriteRefs, rnStyleKey, rootFontSize, rootLayerOf, routeOf, routedBag, routedProp, routedPropIn, routesContent, ruleApplies, ruleCondition, runChangeHooks, schemaVersionOf, searchEntities, searchTokens, setAtPath, signatureOf, slotCodeForms, slotTargetsOf, snapshotHtml, sniffValueType, sourceEntries, sourceOf, sourceOfGroup, sourceOfItem, sourceRowStates, sourceSlugFor, sourceUnavailable, sourceUnreachable, sourceVarPrefix, specFromCapture, specToNodePatches, specWithResolvedVisibility, spellTokenRead, splitRef, splitStyleProps, stamp, standsInForCode, statePointerProp, stateRef, stateTest, storedPreview, styleAliasesOf, styleDeclarations, stylePropClassBase, stylePropClassName, stylePropClasses, stylePropEntries, stylePropLeafForToken, stylePropNegates, stylePropTokenGroup, stylePropTokenPath, stylePropTokenValues, stylePropValueFormOf, stylePropValueFromLeaf, stylePropValueLeaves, stylePropValueSchema, stylePropValues, stylePropertiesWriting, stylePropertyAccepts, stylePropertyFor, stylePropertyPathFor, styleRuleMotionClasses, suggestLinkSlug, summarizeChanges, surfaceProp, surfaceProps, tablerExportName, tablerStyledExportName, toCssPropertyName, tokenBinding, tokenExists, tokenValueRow, tokenValueRows, touchedFields, transition, unadoptedDirectives, unconditionalPreviewProps, unknownStyleLeaves, unreadableBorrows, unstatableConditions, unstatableOverrides, updateRefIndex, upgradeDraftEntries, upgradePatch, upgradeSerializedConfig, validateComponentProps, validateSpec, valueAt, valueForwardsOf, valueLeavesOf, valueRef, valueSchemaOf, varPrefixOf, views, visibilityStateProps, visibilityTerms, withoutTruthyTerm, wrappedElementKey };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An additive fence: `link` and `link-plan` take `onLinked`, which says what a link does at a path
|
|
3
|
+
* another linked system provides, so the operation catalogue's fingerprint moves. No stored byte
|
|
4
|
+
* changes.
|
|
5
|
+
*
|
|
6
|
+
* Deletable once no stored config artifact is below this version.
|
|
7
|
+
*/
|
|
8
|
+
import type { SchemaMigration } from '../framework/schema-version';
|
|
9
|
+
export declare const LINK_ON_LINKED_VERSION = 20260928180801;
|
|
10
|
+
export declare const linkOnLinkedMigration: SchemaMigration;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/migrations/20260928180801_link_on_linked.ts
|
|
2
|
+
const LINK_ON_LINKED_VERSION = 20260928180801;
|
|
3
|
+
const linkOnLinkedMigration = {
|
|
4
|
+
version: LINK_ON_LINKED_VERSION,
|
|
5
|
+
up: (json) => json
|
|
6
|
+
};
|
|
7
|
+
//#endregion
|
|
8
|
+
export { LINK_ON_LINKED_VERSION, linkOnLinkedMigration };
|