@calibrate-ds/core 0.1.67 → 0.1.70
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/context/hashing.d.ts.map +1 -1
- package/dist/context/hashing.js +5 -1
- package/dist/context/hashing.js.map +1 -1
- package/dist/diff/compare-components.d.ts.map +1 -1
- package/dist/diff/compare-components.js +262 -65
- package/dist/diff/compare-components.js.map +1 -1
- package/dist/diff/format-diff-summary.d.ts +10 -0
- package/dist/diff/format-diff-summary.d.ts.map +1 -1
- package/dist/diff/format-diff-summary.js +77 -0
- package/dist/diff/format-diff-summary.js.map +1 -1
- package/dist/diff/index.d.ts +1 -0
- package/dist/diff/index.d.ts.map +1 -1
- package/dist/diff/index.js +1 -0
- package/dist/diff/index.js.map +1 -1
- package/dist/diff/resolve-design-diff.d.ts +53 -0
- package/dist/diff/resolve-design-diff.d.ts.map +1 -0
- package/dist/diff/resolve-design-diff.js +195 -0
- package/dist/diff/resolve-design-diff.js.map +1 -0
- package/dist/snapshots/clear-diff-baseline.d.ts +9 -2
- package/dist/snapshots/clear-diff-baseline.d.ts.map +1 -1
- package/dist/snapshots/clear-diff-baseline.js +12 -25
- package/dist/snapshots/clear-diff-baseline.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashing.d.ts","sourceRoot":"","sources":["../../src/context/hashing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAcxF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"hashing.d.ts","sourceRoot":"","sources":["../../src/context/hashing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAcxF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA6BtE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAYxE"}
|
package/dist/context/hashing.js
CHANGED
|
@@ -38,7 +38,11 @@ export function calculateContextHash(context) {
|
|
|
38
38
|
// The render trees (and their instance recipes) are the core source of truth for implementation.
|
|
39
39
|
renderTree: context.renderTree,
|
|
40
40
|
variantDiffs: context.variantDiffs,
|
|
41
|
-
|
|
41
|
+
// NOTE: dependencyInstances is intentionally excluded — it is derived from renderTree
|
|
42
|
+
// (which is hashed above and structurally diffable by the reporter). Hashing it
|
|
43
|
+
// separately double-counts the same change and can flag nondeterministic reorder
|
|
44
|
+
// noise as staleness. The invariant: every field that feeds this hash must be
|
|
45
|
+
// describable by compareComponents (see diff/compare-components.ts).
|
|
42
46
|
};
|
|
43
47
|
return createHash("sha256").update(stableStringify(relevantData)).digest("hex");
|
|
44
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashing.js","sourceRoot":"","sources":["../../src/context/hashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,eAAe,CAAE,KAAiC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5H,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC1D,sEAAsE;IACtE,0EAA0E;IAC1E,MAAM,YAAY,GAAG;QACjB,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI;QACrC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;QAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,2DAA2D;YAC3D,2EAA2E;SAC9E,CAAC,CAAC;QACH,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,iGAAiG;QACjG,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,
|
|
1
|
+
{"version":3,"file":"hashing.js","sourceRoot":"","sources":["../../src/context/hashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,eAAe,CAAE,KAAiC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5H,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC1D,sEAAsE;IACtE,0EAA0E;IAC1E,MAAM,YAAY,GAAG;QACjB,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI;QACrC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;QAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,2DAA2D;YAC3D,2EAA2E;SAC9E,CAAC,CAAC;QACH,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,iGAAiG;QACjG,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,sFAAsF;QACtF,gFAAgF;QAChF,iFAAiF;QACjF,8EAA8E;QAC9E,qEAAqE;KACxE,CAAC;IAEF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAwB;IAC5D,MAAM,QAAQ,GAAG;QACb,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK;QACrB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;KACjB,CAAC;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-components.d.ts","sourceRoot":"","sources":["../../src/diff/compare-components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"compare-components.d.ts","sourceRoot":"","sources":["../../src/diff/compare-components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAA8C,MAAM,4BAA4B,CAAC;AA8ehI,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,YAAY,EAAE,CA2DjH"}
|
|
@@ -73,6 +73,71 @@ function diffProperties(prev, curr, details) {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Token-aware diff of a single DesignValue slot (gap, padding side, width, height).
|
|
78
|
+
* Distinguishes hardcode<->token refactors, binding swaps, alias retargets, and raw
|
|
79
|
+
* value/mode drift. Shared by layout and size diffing.
|
|
80
|
+
*/
|
|
81
|
+
function diffDesignValue(p, c, name, details) {
|
|
82
|
+
if (!p && !c)
|
|
83
|
+
return;
|
|
84
|
+
const pBoundId = tokenId(p?.boundToken);
|
|
85
|
+
const cBoundId = tokenId(c?.boundToken);
|
|
86
|
+
const pResId = tokenId(p?.resolvedToken);
|
|
87
|
+
const cResId = tokenId(c?.resolvedToken);
|
|
88
|
+
const pVal = p?.rawValue;
|
|
89
|
+
const cVal = c?.rawValue;
|
|
90
|
+
const pMode = p?.mode;
|
|
91
|
+
const cMode = c?.mode;
|
|
92
|
+
const boundChanged = pBoundId !== cBoundId;
|
|
93
|
+
const resChanged = pResId !== cResId;
|
|
94
|
+
const valChanged = pVal !== cVal;
|
|
95
|
+
const modeChanged = pMode !== cMode;
|
|
96
|
+
if (!boundChanged && !resChanged && !valChanged && !modeChanged)
|
|
97
|
+
return;
|
|
98
|
+
// Hardcoded <-> token swap with the same resolved value: structural-only change.
|
|
99
|
+
// This is the silent-diff bug from PTB v0.1.5: a "wrap 8px in a spacing token"
|
|
100
|
+
// refactor MUST surface, even though no pixel changed.
|
|
101
|
+
if (boundChanged && !valChanged && (!pBoundId || !cBoundId)) {
|
|
102
|
+
if (!pBoundId && cBoundId) {
|
|
103
|
+
details.push(`${name}: hardcoded ${pVal} -> ${formatVar(c?.boundToken)} [resolved: ${cVal}, no visual change]`);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
details.push(`${name}: ${formatVar(p?.boundToken)} -> hardcoded ${cVal} [resolved: ${pVal}, no visual change]`);
|
|
107
|
+
}
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// Slot-level binding swap.
|
|
111
|
+
if (boundChanged && pBoundId && cBoundId) {
|
|
112
|
+
const lines = [
|
|
113
|
+
`${name}: token binding changed`,
|
|
114
|
+
` was: ${formatVar(p?.boundToken)} -> ${p?.resolvedToken?.name ?? "?"} -> ${pVal}`,
|
|
115
|
+
` now: ${formatVar(c?.boundToken)} -> ${c?.resolvedToken?.name ?? "?"} -> ${cVal}`,
|
|
116
|
+
];
|
|
117
|
+
details.push(lines.join("\n"));
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
// Same slot binding, alias resolves to a different leaf.
|
|
121
|
+
if (!boundChanged && pBoundId && resChanged) {
|
|
122
|
+
const lines = [
|
|
123
|
+
`${name}: alias target changed (${formatVar(c?.boundToken)} now resolves to a different token)`,
|
|
124
|
+
` was: -> ${p?.resolvedToken?.name ?? "?"} -> ${pVal}`,
|
|
125
|
+
` now: -> ${c?.resolvedToken?.name ?? "?"} -> ${cVal}`,
|
|
126
|
+
];
|
|
127
|
+
details.push(lines.join("\n"));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// Fallback: raw value or mode drift.
|
|
131
|
+
const formatSide = (v) => {
|
|
132
|
+
if (!v)
|
|
133
|
+
return "none";
|
|
134
|
+
const tok = v.boundToken ?? v.resolvedToken;
|
|
135
|
+
const tokTag = tok ? ` (${tok.name})` : "";
|
|
136
|
+
const modeTag = v.mode ? ` [${v.mode}]` : "";
|
|
137
|
+
return `${v.rawValue}${tokTag}${modeTag}`;
|
|
138
|
+
};
|
|
139
|
+
details.push(`${name} changed: ${formatSide(p)} -> ${formatSide(c)}`);
|
|
140
|
+
}
|
|
76
141
|
function diffLayout(prev, curr, details) {
|
|
77
142
|
const pLayout = prev.layout;
|
|
78
143
|
const cLayout = curr.layout;
|
|
@@ -89,72 +154,12 @@ function diffLayout(prev, curr, details) {
|
|
|
89
154
|
if (pLayout.direction !== cLayout.direction) {
|
|
90
155
|
details.push(`layout direction changed: ${pLayout.direction} -> ${cLayout.direction}`);
|
|
91
156
|
}
|
|
92
|
-
|
|
93
|
-
if (!p && !c)
|
|
94
|
-
return;
|
|
95
|
-
const pBoundId = tokenId(p?.boundToken);
|
|
96
|
-
const cBoundId = tokenId(c?.boundToken);
|
|
97
|
-
const pResId = tokenId(p?.resolvedToken);
|
|
98
|
-
const cResId = tokenId(c?.resolvedToken);
|
|
99
|
-
const pVal = p?.rawValue;
|
|
100
|
-
const cVal = c?.rawValue;
|
|
101
|
-
const pMode = p?.mode;
|
|
102
|
-
const cMode = c?.mode;
|
|
103
|
-
const boundChanged = pBoundId !== cBoundId;
|
|
104
|
-
const resChanged = pResId !== cResId;
|
|
105
|
-
const valChanged = pVal !== cVal;
|
|
106
|
-
const modeChanged = pMode !== cMode;
|
|
107
|
-
if (!boundChanged && !resChanged && !valChanged && !modeChanged)
|
|
108
|
-
return;
|
|
109
|
-
// Hardcoded <-> token swap with the same resolved value: structural-only change.
|
|
110
|
-
// This is the silent-diff bug from PTB v0.1.5: a "wrap 8px in a spacing token"
|
|
111
|
-
// refactor MUST surface, even though no pixel changed.
|
|
112
|
-
if (boundChanged && !valChanged && (!pBoundId || !cBoundId)) {
|
|
113
|
-
if (!pBoundId && cBoundId) {
|
|
114
|
-
details.push(`${name}: hardcoded ${pVal} -> ${formatVar(c?.boundToken)} [resolved: ${cVal}, no visual change]`);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
details.push(`${name}: ${formatVar(p?.boundToken)} -> hardcoded ${cVal} [resolved: ${pVal}, no visual change]`);
|
|
118
|
-
}
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
// Slot-level binding swap.
|
|
122
|
-
if (boundChanged && pBoundId && cBoundId) {
|
|
123
|
-
const lines = [
|
|
124
|
-
`${name}: token binding changed`,
|
|
125
|
-
` was: ${formatVar(p?.boundToken)} -> ${p?.resolvedToken?.name ?? "?"} -> ${pVal}`,
|
|
126
|
-
` now: ${formatVar(c?.boundToken)} -> ${c?.resolvedToken?.name ?? "?"} -> ${cVal}`,
|
|
127
|
-
];
|
|
128
|
-
details.push(lines.join("\n"));
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
// Same slot binding, alias resolves to a different leaf.
|
|
132
|
-
if (!boundChanged && pBoundId && resChanged) {
|
|
133
|
-
const lines = [
|
|
134
|
-
`${name}: alias target changed (${formatVar(c?.boundToken)} now resolves to a different token)`,
|
|
135
|
-
` was: -> ${p?.resolvedToken?.name ?? "?"} -> ${pVal}`,
|
|
136
|
-
` now: -> ${c?.resolvedToken?.name ?? "?"} -> ${cVal}`,
|
|
137
|
-
];
|
|
138
|
-
details.push(lines.join("\n"));
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
// Fallback: raw value or mode drift.
|
|
142
|
-
const formatSide = (v) => {
|
|
143
|
-
if (!v)
|
|
144
|
-
return "none";
|
|
145
|
-
const tok = v.boundToken ?? v.resolvedToken;
|
|
146
|
-
const tokTag = tok ? ` (${tok.name})` : "";
|
|
147
|
-
const modeTag = v.mode ? ` [${v.mode}]` : "";
|
|
148
|
-
return `${v.rawValue}${tokTag}${modeTag}`;
|
|
149
|
-
};
|
|
150
|
-
details.push(`${name} changed: ${formatSide(p)} -> ${formatSide(c)}`);
|
|
151
|
-
};
|
|
152
|
-
diffVal(pLayout.gap, cLayout.gap, "gap");
|
|
157
|
+
diffDesignValue(pLayout.gap, cLayout.gap, "gap", details);
|
|
153
158
|
if (pLayout.padding || cLayout.padding) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
159
|
+
diffDesignValue(pLayout.padding?.top, cLayout.padding?.top, "paddingTop", details);
|
|
160
|
+
diffDesignValue(pLayout.padding?.right, cLayout.padding?.right, "paddingRight", details);
|
|
161
|
+
diffDesignValue(pLayout.padding?.bottom, cLayout.padding?.bottom, "paddingBottom", details);
|
|
162
|
+
diffDesignValue(pLayout.padding?.left, cLayout.padding?.left, "paddingLeft", details);
|
|
158
163
|
}
|
|
159
164
|
if (pLayout.mainAlignment !== cLayout.mainAlignment) {
|
|
160
165
|
details.push(`main alignment changed: ${pLayout.mainAlignment ?? 'none'} -> ${cLayout.mainAlignment ?? 'none'}`);
|
|
@@ -297,10 +302,197 @@ function diffVariantAxes(prev, curr, details) {
|
|
|
297
302
|
details.push(`variant axis removed: ${name}`);
|
|
298
303
|
}
|
|
299
304
|
}
|
|
305
|
+
/** Diffs the component's overall frame size (width/height, incl. hug/fill/fixed mode). */
|
|
306
|
+
function diffSize(prev, curr, details) {
|
|
307
|
+
const p = prev.size;
|
|
308
|
+
const c = curr.size;
|
|
309
|
+
if (!p && !c)
|
|
310
|
+
return;
|
|
311
|
+
if (!p && c) {
|
|
312
|
+
details.push(`size added: ${c.width?.rawValue} x ${c.height?.rawValue}`);
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
if (p && !c) {
|
|
316
|
+
details.push(`size removed`);
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
if (!p || !c)
|
|
320
|
+
return;
|
|
321
|
+
diffDesignValue(p.width, c.width, "width", details);
|
|
322
|
+
diffDesignValue(p.height, c.height, "height", details);
|
|
323
|
+
}
|
|
324
|
+
/** Human-readable label for a text style: the style name, else its resolved font size. */
|
|
325
|
+
function typographyLabel(t) {
|
|
326
|
+
if (!t)
|
|
327
|
+
return undefined;
|
|
328
|
+
const styleName = t.styleRef?.displayName || t.styleRef?.name;
|
|
329
|
+
if (styleName)
|
|
330
|
+
return styleName;
|
|
331
|
+
const fs = t.resolved?.fontSize?.cssValue;
|
|
332
|
+
return fs ? `${fs}` : undefined;
|
|
333
|
+
}
|
|
334
|
+
/** Compact "14px/500" metrics summary for a typography contract, for the parenthetical. */
|
|
335
|
+
function typographyMetrics(t) {
|
|
336
|
+
if (!t?.resolved)
|
|
337
|
+
return "";
|
|
338
|
+
const parts = [t.resolved.fontSize?.cssValue, t.resolved.fontWeight?.cssValue, t.resolved.lineHeight?.cssValue]
|
|
339
|
+
.filter(Boolean);
|
|
340
|
+
return parts.join("/");
|
|
341
|
+
}
|
|
342
|
+
/** Multiset of node names in a render tree (root excluded), for structure comparison. */
|
|
343
|
+
function nodeNameCounts(root) {
|
|
344
|
+
const counts = new Map();
|
|
345
|
+
const walk = (node, isRoot) => {
|
|
346
|
+
if (!isRoot)
|
|
347
|
+
counts.set(node.name, (counts.get(node.name) ?? 0) + 1);
|
|
348
|
+
for (const child of node.children ?? [])
|
|
349
|
+
walk(child, false);
|
|
350
|
+
};
|
|
351
|
+
walk(root, true);
|
|
352
|
+
return counts;
|
|
353
|
+
}
|
|
354
|
+
/** Ordered signature of the tree (names by positional path) — detects pure reorders. */
|
|
355
|
+
function treeShape(root) {
|
|
356
|
+
const parts = [];
|
|
357
|
+
const walk = (node, path) => {
|
|
358
|
+
parts.push(`${path}:${node.name}`);
|
|
359
|
+
const children = node.children ?? [];
|
|
360
|
+
for (let i = 0; i < children.length; i++)
|
|
361
|
+
walk(children[i], `${path}/${i}`);
|
|
362
|
+
};
|
|
363
|
+
walk(root, "0");
|
|
364
|
+
return parts.join("|");
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Diffs two render trees for both structure and content:
|
|
368
|
+
* - structure: nodes added/removed (by name multiset) and pure reorders
|
|
369
|
+
* - content: text-content and typography edits on nodes that stayed in place
|
|
370
|
+
* (same positional path + same name), so a reorder never fabricates a content "change".
|
|
371
|
+
*/
|
|
372
|
+
function diffRenderTree(prev, curr, details) {
|
|
373
|
+
const prevTree = prev.renderTree;
|
|
374
|
+
const currTree = curr.renderTree;
|
|
375
|
+
if (!prevTree && !currTree)
|
|
376
|
+
return;
|
|
377
|
+
if (!prevTree && currTree) {
|
|
378
|
+
details.push(`render tree added`);
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
if (prevTree && !currTree) {
|
|
382
|
+
details.push(`render tree removed`);
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
if (!prevTree || !currTree)
|
|
386
|
+
return;
|
|
387
|
+
// ── Structure: name-multiset delta (robust to positional shift) ──
|
|
388
|
+
const prevCounts = nodeNameCounts(prevTree);
|
|
389
|
+
const currCounts = nodeNameCounts(currTree);
|
|
390
|
+
const added = [];
|
|
391
|
+
const removed = [];
|
|
392
|
+
for (const [name, n] of currCounts) {
|
|
393
|
+
const delta = n - (prevCounts.get(name) ?? 0);
|
|
394
|
+
for (let i = 0; i < delta; i++)
|
|
395
|
+
added.push(name);
|
|
396
|
+
}
|
|
397
|
+
for (const [name, n] of prevCounts) {
|
|
398
|
+
const delta = n - (currCounts.get(name) ?? 0);
|
|
399
|
+
for (let i = 0; i < delta; i++)
|
|
400
|
+
removed.push(name);
|
|
401
|
+
}
|
|
402
|
+
const summarize = (names) => names.length <= 5 ? names.join(", ") : `${names.slice(0, 5).join(", ")}, +${names.length - 5} more`;
|
|
403
|
+
if (added.length > 0)
|
|
404
|
+
details.push(`node(s) added to render tree: ${summarize(added)}`);
|
|
405
|
+
if (removed.length > 0)
|
|
406
|
+
details.push(`node(s) removed from render tree: ${summarize(removed)}`);
|
|
407
|
+
if (added.length === 0 && removed.length === 0 && treeShape(prevTree) !== treeShape(currTree)) {
|
|
408
|
+
details.push(`render tree reordered (same nodes, new arrangement)`);
|
|
409
|
+
}
|
|
410
|
+
// ── Content: text + typography on in-place nodes ──
|
|
411
|
+
const index = (root) => {
|
|
412
|
+
const map = new Map();
|
|
413
|
+
const walk = (node, path) => {
|
|
414
|
+
map.set(path, node);
|
|
415
|
+
const children = node.children ?? [];
|
|
416
|
+
for (let i = 0; i < children.length; i++)
|
|
417
|
+
walk(children[i], `${path}/${i}`);
|
|
418
|
+
};
|
|
419
|
+
walk(root, "0");
|
|
420
|
+
return map;
|
|
421
|
+
};
|
|
422
|
+
const prevNodes = index(prevTree);
|
|
423
|
+
const currNodes = index(currTree);
|
|
424
|
+
for (const [path, cNode] of currNodes) {
|
|
425
|
+
const pNode = prevNodes.get(path);
|
|
426
|
+
if (!pNode || pNode.name !== cNode.name)
|
|
427
|
+
continue; // structure shifted — not an in-place edit
|
|
428
|
+
const where = cNode.name ? ` on "${cNode.name}"` : "";
|
|
429
|
+
// Text content edit (the most common minute change designers make).
|
|
430
|
+
if ((pNode.textContent ?? undefined) !== (cNode.textContent ?? undefined)
|
|
431
|
+
&& (pNode.textContent !== undefined || cNode.textContent !== undefined)) {
|
|
432
|
+
details.push(`text content changed${where}: ${JSON.stringify(pNode.textContent ?? "")} -> ${JSON.stringify(cNode.textContent ?? "")}`);
|
|
433
|
+
}
|
|
434
|
+
// Typography (text style swap or font metric change).
|
|
435
|
+
const pLabel = typographyLabel(pNode.typographyContract);
|
|
436
|
+
const cLabel = typographyLabel(cNode.typographyContract);
|
|
437
|
+
const pMetrics = typographyMetrics(pNode.typographyContract);
|
|
438
|
+
const cMetrics = typographyMetrics(cNode.typographyContract);
|
|
439
|
+
if (pLabel !== cLabel || pMetrics !== cMetrics) {
|
|
440
|
+
if (pLabel || cLabel || pMetrics || cMetrics) {
|
|
441
|
+
const metricTag = pMetrics && cMetrics && pMetrics !== cMetrics ? ` (${pMetrics} -> ${cMetrics})` : "";
|
|
442
|
+
details.push(`text style changed${where}: ${pLabel ?? "?"} -> ${cLabel ?? "?"}${metricTag}`);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
/** Diffs component identity — display name and kind. */
|
|
448
|
+
function diffIdentity(prev, curr, details) {
|
|
449
|
+
if (prev.name !== curr.name) {
|
|
450
|
+
details.push(`renamed: ${JSON.stringify(prev.name)} -> ${JSON.stringify(curr.name)}`);
|
|
451
|
+
}
|
|
452
|
+
const pKind = prev.kind?.value;
|
|
453
|
+
const cKind = curr.kind?.value;
|
|
454
|
+
if (pKind !== cKind) {
|
|
455
|
+
details.push(`kind changed: ${pKind ?? "?"} -> ${cKind ?? "?"}`);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
/** Diffs the direct dependency set (nested component ids), resolving ids to names when known. */
|
|
459
|
+
function diffDependencies(prev, curr, nameById, details) {
|
|
460
|
+
const prevDeps = new Set(prev.dependencies ?? []);
|
|
461
|
+
const currDeps = new Set(curr.dependencies ?? []);
|
|
462
|
+
const label = (id) => nameById.get(id) ?? id;
|
|
463
|
+
for (const id of currDeps) {
|
|
464
|
+
if (!prevDeps.has(id))
|
|
465
|
+
details.push(`dependency added: ${label(id)}`);
|
|
466
|
+
}
|
|
467
|
+
for (const id of prevDeps) {
|
|
468
|
+
if (!currDeps.has(id))
|
|
469
|
+
details.push(`dependency removed: ${label(id)}`);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Coarse diff of per-variant styling deltas (variantDiffs). These capture changes that
|
|
474
|
+
* live only in a non-default variant (e.g. a hover-only color), so they're not covered by
|
|
475
|
+
* the default-variant render tree. A structural equality check keeps them from going
|
|
476
|
+
* silent; a full per-variant breakdown is future work.
|
|
477
|
+
*/
|
|
478
|
+
function diffVariantBehavior(prev, curr, details) {
|
|
479
|
+
const p = prev.variantDiffs;
|
|
480
|
+
const c = curr.variantDiffs;
|
|
481
|
+
if (p === undefined && c === undefined)
|
|
482
|
+
return;
|
|
483
|
+
if (!deepEqual(p, c)) {
|
|
484
|
+
details.push(`variant-specific styling changed (per-variant overrides differ)`);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
300
487
|
export function compareComponents(previous, current) {
|
|
301
488
|
const changes = [];
|
|
302
489
|
const prevMap = new Map(previous.map(c => [c.id, c]));
|
|
303
490
|
const currMap = new Map(current.map(c => [c.id, c]));
|
|
491
|
+
const nameById = new Map();
|
|
492
|
+
for (const c of previous)
|
|
493
|
+
nameById.set(c.id, c.name);
|
|
494
|
+
for (const c of current)
|
|
495
|
+
nameById.set(c.id, c.name);
|
|
304
496
|
// Check for added or modified
|
|
305
497
|
for (const curr of current) {
|
|
306
498
|
const prev = prevMap.get(curr.id);
|
|
@@ -315,10 +507,15 @@ export function compareComponents(previous, current) {
|
|
|
315
507
|
else {
|
|
316
508
|
// Compute detailed granular structural diff dynamically!
|
|
317
509
|
const details = [];
|
|
510
|
+
diffIdentity(prev, curr, details);
|
|
318
511
|
diffVariantAxes(prev, curr, details);
|
|
319
512
|
diffProperties(prev, curr, details);
|
|
513
|
+
diffDependencies(prev, curr, nameById, details);
|
|
320
514
|
diffLayout(prev, curr, details);
|
|
321
515
|
diffStyles(prev, curr, details);
|
|
516
|
+
diffSize(prev, curr, details);
|
|
517
|
+
diffRenderTree(prev, curr, details);
|
|
518
|
+
diffVariantBehavior(prev, curr, details);
|
|
322
519
|
if (details.length > 0) {
|
|
323
520
|
changes.push({
|
|
324
521
|
entityId: curr.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-components.js","sourceRoot":"","sources":["../../src/diff/compare-components.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compare-components.js","sourceRoot":"","sources":["../../src/diff/compare-components.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,SAAS,OAAO,CAAC,CAAiB;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED,4EAA4E;AAC5E,SAAS,SAAS,CAAC,CAAiB;IAChC,IAAI,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACnB,IAAI,CAAC,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC;IAClD,OAAO,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC;AAED,qIAAqI;AACrI,SAAS,SAAS,CAAC,CAAU,EAAE,CAAU;IACrC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACnF,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC;QACD,MAAM,eAAe,GAAG,CAAC,CAAU,EAAU,EAAE,CAC3C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAC5B,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YACjD,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,CAAC,CAAC,GAAG,CACZ,CAAC;QACN,OAAO,eAAe,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,CAAU;IAC5B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,cAAc,CAAC,IAAyB,EAAE,IAAyB,EAAE,OAAiB;IAC3F,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACJ,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YACnG,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,6BAA6B,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAClJ,CAAC;YACD,6BAA6B;YAC7B,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC3C,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;gBACrF,CAAC;gBACD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;gBACzF,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,qBAAqB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,CAA0B,EAAE,CAA0B,EAAE,IAAY,EAAE,OAAiB;IAC5G,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO;IAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC;IAEtB,MAAM,YAAY,GAAG,QAAQ,KAAK,QAAQ,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;IACjC,MAAM,WAAW,GAAG,KAAK,KAAK,KAAK,CAAC;IAEpC,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;QAAE,OAAO;IAExE,iFAAiF;IACjF,+EAA+E;IAC/E,uDAAuD;IACvD,IAAI,YAAY,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,eAAe,IAAI,OAAO,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,IAAI,qBAAqB,CAAC,CAAC;QACrH,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,IAAI,gBAAgB,IAAI,qBAAqB,CAAC,CAAC;QACrH,CAAC;QACD,OAAO;IACX,CAAC;IAED,2BAA2B;IAC3B,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG;YACV,GAAG,IAAI,yBAAyB;YAChC,YAAY,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI,GAAG,OAAO,IAAI,EAAE;YACrF,YAAY,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI,GAAG,OAAO,IAAI,EAAE;SACxF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,OAAO;IACX,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC,YAAY,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG;YACV,GAAG,IAAI,2BAA2B,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,qCAAqC;YAC/F,eAAe,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI,GAAG,OAAO,IAAI,EAAE;YACzD,eAAe,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI,GAAG,OAAO,IAAI,EAAE;SAC5D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,OAAO;IACX,CAAC;IAED,qCAAqC;IACrC,MAAM,UAAU,GAAG,CAAC,CAA0B,EAAU,EAAE;QACtD,IAAI,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,aAAa,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAC,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,EAAE,CAAC;IAC9C,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,aAAa,UAAU,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,UAAU,CAAC,IAAyB,EAAE,IAAyB,EAAE,OAAiB;IACvF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAE5B,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACnD,OAAO;IACX,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,OAAO;IACX,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;QAAE,OAAO;IAEjC,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,6BAA6B,OAAO,CAAC,SAAS,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAE1D,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACnF,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACzF,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QAC5F,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,aAAa,IAAI,MAAM,OAAO,OAAO,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,cAAc,IAAI,MAAM,OAAO,OAAO,CAAC,cAAc,IAAI,MAAM,EAAE,CAAC,CAAC;IACxH,CAAC;AACL,CAAC;AAGD;;;;;;;;;;;GAWG;AACH,SAAS,UAAU,CAAC,IAAyB,EAAE,IAAyB,EAAE,OAAiB;IACvF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;IAEzC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS;QAC7B,GAAG,SAAS,CAAC,IAAI,EAAE;QACnB,GAAG,SAAS,CAAC,IAAI,EAAE;QACnB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACvB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;KAC1B,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE/B,8EAA8E;QAC9E,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,IAAI,KAAK,IAAI;gBAAE,SAAS;YAC5B,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;iBAClE,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;;gBAC/D,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC;YACjE,SAAS;QACb,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;YAC9C,SAAS;QACb,CAAC;QACD,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,SAAS,GAAG,GAAG,CAAC,CAAC;YACpD,SAAS;QACb,CAAC;QAED,yDAAyD;QACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAG,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAG,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,EAAG,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,EAAG,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,EAAG,CAAC,QAAQ,CAAC;QAC1B,MAAM,IAAI,GAAG,EAAG,CAAC,QAAQ,CAAC;QAE1B,MAAM,YAAY,GAAG,QAAQ,KAAK,QAAQ,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;QAEjC,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1D,yFAAyF;QACzF,IAAI,YAAY,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,eAAe,IAAI,OAAO,SAAS,CAAC,EAAG,CAAC,UAAU,CAAC,gBAAgB,IAAI,qBAAqB,CAAC,CAAC;YACtH,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,SAAS,CAAC,EAAG,CAAC,UAAU,CAAC,iBAAiB,IAAI,gBAAgB,IAAI,qBAAqB,CAAC,CAAC;YACtH,CAAC;YACD,SAAS;QACb,CAAC;QAED,wEAAwE;QACxE,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG;gBACV,GAAG,IAAI,yBAAyB;gBAChC,YAAY,SAAS,CAAC,EAAG,CAAC,UAAU,CAAC,OAAO,EAAG,CAAC,aAAa,EAAE,IAAI,IAAI,GAAG,OAAO,IAAI,EAAE;gBACvF,YAAY,SAAS,CAAC,EAAG,CAAC,UAAU,CAAC,OAAO,EAAG,CAAC,aAAa,EAAE,IAAI,IAAI,GAAG,OAAO,IAAI,EAAE;aAC1F,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,SAAS;QACb,CAAC;QAED,6EAA6E;QAC7E,mFAAmF;QACnF,IAAI,CAAC,YAAY,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG;gBACV,GAAG,IAAI,2BAA2B,SAAS,CAAC,EAAG,CAAC,UAAU,CAAC,qCAAqC;gBAChG,eAAe,EAAG,CAAC,aAAa,EAAE,IAAI,IAAI,GAAG,OAAO,IAAI,EAAE;gBAC1D,eAAe,EAAG,CAAC,aAAa,EAAE,IAAI,IAAI,GAAG,OAAO,IAAI,EAAE;aAC7D,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,SAAS;QACb,CAAC;QAED,+EAA+E;QAC/E,8EAA8E;QAC9E,gDAAgD;QAChD,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,EAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAG,CAAC,aAAa,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;YACjG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,gCAAgC,SAAS,KAAK,IAAI,OAAO,IAAI,qBAAqB,CAAC,CAAC;YACxG,SAAS;QACb,CAAC;QAED,sDAAsD;QACtD,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC;IAChE,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,IAAyB,EAAE,IAAyB,EAAE,OAAiB;IAC5F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzE,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,uBAAuB,IAAI,cAAc,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtF,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,4BAA4B,IAAI,KAAK,QAAQ,CAAC,YAAY,OAAO,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC;QAC5G,CAAC;IACL,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;AACL,CAAC;AAGD,0FAA0F;AAC1F,SAAS,QAAQ,CAAC,IAAyB,EAAE,IAAyB,EAAE,OAAiB;IACrF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACpB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO;IACrB,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,QAAQ,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAClG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IACtD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO;IACrB,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,0FAA0F;AAC1F,SAAS,eAAe,CAAC,CAAwC;IAC7D,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC9D,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACpC,CAAC;AAED,2FAA2F;AAC3F,SAAS,iBAAiB,CAAC,CAAwC;IAC/D,IAAI,CAAC,CAAC,EAAE,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;SAC1G,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,yFAAyF;AACzF,SAAS,cAAc,CAAC,IAAoB;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,IAAoB,EAAE,MAAe,EAAE,EAAE;QACnD,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjB,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,wFAAwF;AACxF,SAAS,SAAS,CAAC,IAAoB;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,IAAoB,EAAE,IAAY,EAAE,EAAE;QAChD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAyB,EAAE,IAAyB,EAAE,OAAiB;IAC3F,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;IACjC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;QAAE,OAAO;IACnC,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IACzE,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC3E,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEnC,oEAAoE;IACpE,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,KAAe,EAAE,EAAE,CAClC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC;IACxG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAI,OAAO,CAAC,IAAI,CAAC,iCAAiC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,qCAAqC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACxE,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAG,CAAC,IAAoB,EAA+B,EAAE;QAChE,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC9C,MAAM,IAAI,GAAG,CAAC,IAAoB,EAAE,IAAY,EAAE,EAAE;YAChD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChB,OAAO,GAAG,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAElC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAAE,SAAS,CAAC,2CAA2C;QAC9F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,oEAAoE;QACpE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;eAClE,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,uBAAuB,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3I,CAAC;QAED,sDAAsD;QACtD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC7C,IAAI,MAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,QAAQ,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvG,OAAO,CAAC,IAAI,CAAC,qBAAqB,KAAK,KAAK,MAAM,IAAI,GAAG,OAAO,MAAM,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC,CAAC;YACjG,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED,wDAAwD;AACxD,SAAS,YAAY,CAAC,IAAyB,EAAE,IAAyB,EAAE,OAAiB;IACzF,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;IAC/B,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,iBAAiB,KAAK,IAAI,GAAG,OAAO,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC;AACL,CAAC;AAED,iGAAiG;AACjG,SAAS,gBAAgB,CACrB,IAAyB,EACzB,IAAyB,EACzB,QAA6B,EAC7B,OAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACrD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,IAAyB,EAAE,IAAyB,EAAE,OAAiB;IAChG,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IAC5B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO;IAC/C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IACpF,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA+B,EAAE,OAA8B;IAC7F,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAEpD,8BAA8B;IAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,EAAE;gBACjB,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,OAAO;gBACnB,QAAQ,EAAE,IAAI;aACjB,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,yDAAyD;YACzD,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAClC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACrC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAChC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9B,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAEzC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC;oBACT,QAAQ,EAAE,IAAI,CAAC,EAAE;oBACjB,UAAU,EAAE,WAAW;oBACvB,UAAU,EAAE,UAAU;oBACtB,aAAa,EAAE,IAAI;oBACnB,QAAQ,EAAE,IAAI;oBACd,OAAO;iBACV,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,EAAE;gBACjB,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,SAAS;gBACrB,aAAa,EAAE,IAAI;aACtB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
import type { DiffSummary } from "@calibrate-ds/shared-types";
|
|
2
|
+
import type { BucketedDiffSummary } from "./resolve-design-diff.js";
|
|
2
3
|
export declare function formatDiffSummary(summary: DiffSummary): string;
|
|
4
|
+
/**
|
|
5
|
+
* Formats a bucketed diff (from `resolveDesignDiff`) grouped by lifecycle bucket:
|
|
6
|
+
* - New first appearance, not yet in the lock
|
|
7
|
+
* - Not implemented in the lock, never stamped (shows drift so unbuilt changes aren't lost)
|
|
8
|
+
* - Drifted stamped, but the design moved since implementation
|
|
9
|
+
* The bucket tells the consumer what to *do*; every changed component still surfaces
|
|
10
|
+
* with full granular detail regardless of stamp state.
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatBucketedDiff(summary: BucketedDiffSummary): string;
|
|
3
13
|
//# sourceMappingURL=format-diff-summary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-diff-summary.d.ts","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"format-diff-summary.d.ts","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAkB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAoBpF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAgE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAuEvE"}
|
|
@@ -72,4 +72,81 @@ export function formatDiffSummary(summary) {
|
|
|
72
72
|
}
|
|
73
73
|
return output.join("\n").trim();
|
|
74
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Formats a bucketed diff (from `resolveDesignDiff`) grouped by lifecycle bucket:
|
|
77
|
+
* - New first appearance, not yet in the lock
|
|
78
|
+
* - Not implemented in the lock, never stamped (shows drift so unbuilt changes aren't lost)
|
|
79
|
+
* - Drifted stamped, but the design moved since implementation
|
|
80
|
+
* The bucket tells the consumer what to *do*; every changed component still surfaces
|
|
81
|
+
* with full granular detail regardless of stamp state.
|
|
82
|
+
*/
|
|
83
|
+
export function formatBucketedDiff(summary) {
|
|
84
|
+
if (summary.addedCount === 0 && summary.modifiedCount === 0 && summary.deletedCount === 0) {
|
|
85
|
+
return "No design system changes detected.";
|
|
86
|
+
}
|
|
87
|
+
const output = [];
|
|
88
|
+
output.push(`\x1b[1mDesign changes detected\x1b[0m\n`);
|
|
89
|
+
const compChanges = summary.changes.filter(c => c.entityType === "component");
|
|
90
|
+
const otherChanges = summary.changes.filter(c => c.entityType !== "component");
|
|
91
|
+
const nameOf = (c) => c.newValue?.name || c.previousValue?.name || c.entityId;
|
|
92
|
+
const renderModified = (c) => {
|
|
93
|
+
output.push(`~ ${nameOf(c)}`);
|
|
94
|
+
for (const detail of c.details ?? [])
|
|
95
|
+
pushDetail(output, detail);
|
|
96
|
+
};
|
|
97
|
+
// 1. New (added)
|
|
98
|
+
const added = compChanges.filter(c => c.changeType === "added");
|
|
99
|
+
if (added.length > 0) {
|
|
100
|
+
output.push(`\x1b[32mNew components:\x1b[0m`);
|
|
101
|
+
for (const c of added)
|
|
102
|
+
output.push(`+ ${nameOf(c)}`);
|
|
103
|
+
output.push("");
|
|
104
|
+
}
|
|
105
|
+
// 2. Not implemented (unbuilt) — surfaced even when unchanged so the backlog stays visible
|
|
106
|
+
const unbuilt = compChanges.filter(c => c.changeType === "modified" && c.bucket === "unbuilt");
|
|
107
|
+
if (unbuilt.length > 0) {
|
|
108
|
+
output.push(`\x1b[33mChanged (not implemented):\x1b[0m`);
|
|
109
|
+
for (const c of unbuilt)
|
|
110
|
+
renderModified(c);
|
|
111
|
+
output.push("");
|
|
112
|
+
}
|
|
113
|
+
// 3. Drifted — stamped, design moved since implementation
|
|
114
|
+
const drifted = compChanges.filter(c => c.changeType === "modified" && c.bucket === "drifted");
|
|
115
|
+
if (drifted.length > 0) {
|
|
116
|
+
output.push(`\x1b[34mDrifted (implemented — needs update):\x1b[0m`);
|
|
117
|
+
for (const c of drifted)
|
|
118
|
+
renderModified(c);
|
|
119
|
+
output.push("");
|
|
120
|
+
}
|
|
121
|
+
// Any modified component with no bucket (defensive) — render under a generic header
|
|
122
|
+
const unbucketed = compChanges.filter(c => c.changeType === "modified" && !c.bucket);
|
|
123
|
+
if (unbucketed.length > 0) {
|
|
124
|
+
output.push(`\x1b[34mUpdated components:\x1b[0m`);
|
|
125
|
+
for (const c of unbucketed)
|
|
126
|
+
renderModified(c);
|
|
127
|
+
output.push("");
|
|
128
|
+
}
|
|
129
|
+
// 4. Removed
|
|
130
|
+
const removed = compChanges.filter(c => c.changeType === "deleted");
|
|
131
|
+
if (removed.length > 0) {
|
|
132
|
+
output.push(`\x1b[31mRemoved components:\x1b[0m`);
|
|
133
|
+
for (const c of removed)
|
|
134
|
+
output.push(`- ${nameOf(c)}`);
|
|
135
|
+
output.push("");
|
|
136
|
+
}
|
|
137
|
+
// 5. Token & metadata changes
|
|
138
|
+
if (otherChanges.length > 0) {
|
|
139
|
+
output.push(`\x1b[1mToken & Metadata changes:\x1b[0m`);
|
|
140
|
+
for (const c of otherChanges) {
|
|
141
|
+
const symbol = c.changeType === "added" ? "+" : c.changeType === "deleted" ? "-" : "~";
|
|
142
|
+
const color = c.changeType === "added" ? "\x1b[32m" : c.changeType === "deleted" ? "\x1b[31m" : "\x1b[34m";
|
|
143
|
+
const name = c.newValue?.name || c.previousValue?.name || c.entityId;
|
|
144
|
+
output.push(`${color}${symbol} ${name}\x1b[0m`);
|
|
145
|
+
for (const detail of c.details ?? [])
|
|
146
|
+
pushDetail(output, detail);
|
|
147
|
+
}
|
|
148
|
+
output.push("");
|
|
149
|
+
}
|
|
150
|
+
return output.join("\n").trim();
|
|
151
|
+
}
|
|
75
152
|
//# sourceMappingURL=format-diff-summary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-diff-summary.js","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format-diff-summary.js","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"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"}
|
package/dist/diff/index.d.ts
CHANGED
package/dist/diff/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
|
package/dist/diff/index.js
CHANGED
package/dist/diff/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ComponentDefinition, DesignSystemModel, DiffSummary, EntityChange } from "@calibrate-ds/shared-types";
|
|
2
|
+
import type { PTBLock, StampedContract } from "../context/export-context.js";
|
|
3
|
+
/**
|
|
4
|
+
* Which lifecycle bucket a component change belongs to. This decides how a change
|
|
5
|
+
* is *labeled* — never whether it is *shown*. Every changed component surfaces with
|
|
6
|
+
* full granular detail regardless of stamp state; the bucket only tells the consumer
|
|
7
|
+
* (or agent) what to *do* with it.
|
|
8
|
+
*/
|
|
9
|
+
export type DiffBucket = "new" | "unbuilt" | "drifted";
|
|
10
|
+
/** A change tagged with its lifecycle bucket. */
|
|
11
|
+
export type BucketedChange = EntityChange & {
|
|
12
|
+
bucket?: DiffBucket;
|
|
13
|
+
};
|
|
14
|
+
export interface BucketedDiffSummary extends DiffSummary {
|
|
15
|
+
changes: BucketedChange[];
|
|
16
|
+
}
|
|
17
|
+
export interface ResolveDiffParams {
|
|
18
|
+
/** The current (freshly scanned) model. */
|
|
19
|
+
currentModel: DesignSystemModel;
|
|
20
|
+
/** Parsed ptb.lock, if present. Drives stamp/contract resolution. */
|
|
21
|
+
lock?: PTBLock;
|
|
22
|
+
/**
|
|
23
|
+
* Parsed `diff-baseline.json` (the durable acknowledgement point set by `ptb diff ack`).
|
|
24
|
+
* Takes precedence over history for unstamped/contractless components.
|
|
25
|
+
*/
|
|
26
|
+
ackModel?: DesignSystemModel;
|
|
27
|
+
/**
|
|
28
|
+
* History model snapshots, newest-first. Used as the fallback anchor for unstamped
|
|
29
|
+
* or contractless components so a change stays visible across any number of scans
|
|
30
|
+
* until it is stamped or acknowledged (the anchor never advances on a mere scan).
|
|
31
|
+
*/
|
|
32
|
+
historyNewestFirst?: DesignSystemModel[];
|
|
33
|
+
/**
|
|
34
|
+
* History snapshots keyed by filename. Lets a stamped component diff against its
|
|
35
|
+
* *pinned* stamp-time snapshot (`stampedSnapshotFile`) — the full model, so rich
|
|
36
|
+
* fields (size, typography, text content) the lean contract omits still surface.
|
|
37
|
+
* This is the "lean contract decides staleness, history supplies the values" split.
|
|
38
|
+
*/
|
|
39
|
+
historyByFilename?: Map<string, DesignSystemModel>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Reconstructs a minimal ComponentDefinition from a StampedContract for use as the
|
|
43
|
+
* "previous" side of a diff. Only the fields the reporter actually walks are populated.
|
|
44
|
+
*/
|
|
45
|
+
export declare function contractToComponent(id: string, displayName: string, contract: StampedContract): ComponentDefinition;
|
|
46
|
+
/**
|
|
47
|
+
* Single source of truth for `ptb diff` / `run_diff`. Classifies every component into
|
|
48
|
+
* one lifecycle bucket, diffs each against the correct baseline, and returns a tagged
|
|
49
|
+
* summary. Both the CLI and the MCP server call this so the two surfaces can never
|
|
50
|
+
* disagree on the same repo.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveDesignDiff(params: ResolveDiffParams): BucketedDiffSummary;
|
|
53
|
+
//# sourceMappingURL=resolve-design-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-design-diff.d.ts","sourceRoot":"","sources":["../../src/diff/resolve-design-diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI7E;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAChB,KAAK,GACL,SAAS,GACT,SAAS,CAAC;AAEhB,iDAAiD;AACjD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACpD,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAC9B,2CAA2C;IAC3C,YAAY,EAAE,iBAAiB,CAAC;IAChC,qEAAqE;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACtD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAC/B,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,eAAe,GAC1B,mBAAmB,CAkBrB;AA8ED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,CA4GhF"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { compareComponents } from "./compare-components.js";
|
|
2
|
+
import { compareTokens } from "./compare-tokens.js";
|
|
3
|
+
/**
|
|
4
|
+
* Reconstructs a minimal ComponentDefinition from a StampedContract for use as the
|
|
5
|
+
* "previous" side of a diff. Only the fields the reporter actually walks are populated.
|
|
6
|
+
*/
|
|
7
|
+
export function contractToComponent(id, displayName, contract) {
|
|
8
|
+
return {
|
|
9
|
+
id,
|
|
10
|
+
name: displayName,
|
|
11
|
+
variantAxes: contract.variantAxes ?? [],
|
|
12
|
+
properties: contract.properties ?? [],
|
|
13
|
+
tokenBindings: contract.tokenBindings ?? [],
|
|
14
|
+
styleMetadata: contract.styleMetadata ?? {},
|
|
15
|
+
layout: contract.layout,
|
|
16
|
+
kind: { value: "unclassified", inferred: true },
|
|
17
|
+
categoryPath: "",
|
|
18
|
+
description: "",
|
|
19
|
+
slots: [],
|
|
20
|
+
compositeSlots: [],
|
|
21
|
+
dependencies: [],
|
|
22
|
+
variants: [],
|
|
23
|
+
renderTree: null,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** Slugifies a display name the same way ptb.lock keys are generated. */
|
|
27
|
+
function slugify(name) {
|
|
28
|
+
return name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
29
|
+
}
|
|
30
|
+
/** Locates the current component matching a lock entry by display name or slug. */
|
|
31
|
+
function matchLockEntry(current, displayName, slug) {
|
|
32
|
+
const target = displayName.toLowerCase();
|
|
33
|
+
return current.find(c => c.name.toLowerCase() === target || slugify(c.name) === slug);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* True iff the reporter would actually emit at least one detail line for prev -> curr.
|
|
37
|
+
* Anchoring on the *same* diff logic the reporter uses guarantees we never select a
|
|
38
|
+
* baseline the reporter then has nothing to say about (the "flips to changed with no
|
|
39
|
+
* explanation" class), and it auto-tracks any walker added later.
|
|
40
|
+
*/
|
|
41
|
+
function componentDiffers(prev, curr) {
|
|
42
|
+
return compareComponents([prev], [curr]).some(c => c.changeType === "modified" && (c.details?.length ?? 0) > 0);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolves the baseline to diff an unstamped or contractless component against:
|
|
46
|
+
* 1. The acknowledgement point (`diff-baseline.json`) if the component existed then
|
|
47
|
+
* and has since changed — the durable anchor that survives history pruning.
|
|
48
|
+
* 2. Otherwise the most recent history snapshot in which the component *differs* from
|
|
49
|
+
* its current state (never merely the previous scan — that would let serial scans
|
|
50
|
+
* absorb the change).
|
|
51
|
+
* Returns null when no differing baseline is recoverable (genuinely unchanged, or the
|
|
52
|
+
* change predates the retained window).
|
|
53
|
+
*/
|
|
54
|
+
function resolveAnchor(curr, ackModel, historyNewestFirst) {
|
|
55
|
+
if (ackModel) {
|
|
56
|
+
const acked = ackModel.components.find(c => c.id === curr.id);
|
|
57
|
+
if (acked)
|
|
58
|
+
return componentDiffers(acked, curr) ? acked : null;
|
|
59
|
+
// Not in the ack snapshot → created after acknowledgement; fall through to history.
|
|
60
|
+
}
|
|
61
|
+
for (const snapshot of historyNewestFirst) {
|
|
62
|
+
const prev = snapshot.components.find(c => c.id === curr.id);
|
|
63
|
+
if (!prev)
|
|
64
|
+
continue;
|
|
65
|
+
if (componentDiffers(prev, curr))
|
|
66
|
+
return prev;
|
|
67
|
+
// Equal to current in this snapshot — keep walking older ones for the change point.
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
/** True if the component appeared in the ack point or any retained history snapshot. */
|
|
72
|
+
function seenBefore(id, ackModel, historyNewestFirst) {
|
|
73
|
+
if (ackModel?.components.some(c => c.id === id))
|
|
74
|
+
return true;
|
|
75
|
+
return historyNewestFirst.some(s => s.components.some(c => c.id === id));
|
|
76
|
+
}
|
|
77
|
+
/** Runs compareComponents for one group and tags every emitted change with its bucket. */
|
|
78
|
+
function diffGroup(baselines, currents, bucket) {
|
|
79
|
+
return compareComponents(baselines, currents).map(c => ({ ...c, bucket }));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Single source of truth for `ptb diff` / `run_diff`. Classifies every component into
|
|
83
|
+
* one lifecycle bucket, diffs each against the correct baseline, and returns a tagged
|
|
84
|
+
* summary. Both the CLI and the MCP server call this so the two surfaces can never
|
|
85
|
+
* disagree on the same repo.
|
|
86
|
+
*/
|
|
87
|
+
export function resolveDesignDiff(params) {
|
|
88
|
+
const { currentModel, lock, ackModel, historyNewestFirst = [], historyByFilename } = params;
|
|
89
|
+
/** The rich stamp-time baseline for a stamped component, from its pinned snapshot. */
|
|
90
|
+
const pinnedStampBaseline = (entry, currId) => {
|
|
91
|
+
if (!entry.stampedSnapshotFile || !historyByFilename)
|
|
92
|
+
return undefined;
|
|
93
|
+
const snapshot = historyByFilename.get(entry.stampedSnapshotFile);
|
|
94
|
+
return snapshot?.components.find(c => c.id === currId);
|
|
95
|
+
};
|
|
96
|
+
const driftBaselines = [];
|
|
97
|
+
const driftCurrents = [];
|
|
98
|
+
const unbuiltBaselines = [];
|
|
99
|
+
const unbuiltCurrents = [];
|
|
100
|
+
const newComponents = [];
|
|
101
|
+
const covered = new Set();
|
|
102
|
+
if (lock) {
|
|
103
|
+
for (const [slug, entry] of Object.entries(lock.components)) {
|
|
104
|
+
const curr = matchLockEntry(currentModel.components, entry.displayName, slug);
|
|
105
|
+
if (!curr)
|
|
106
|
+
continue;
|
|
107
|
+
covered.add(curr.id);
|
|
108
|
+
// Never stamped → not implemented. Show it with granular detail when it has
|
|
109
|
+
// drifted from its anchor; if it's a first appearance, show it as New; if it
|
|
110
|
+
// was seen before and is unchanged, it's backlog (ptb status), not a diff line.
|
|
111
|
+
if (!entry.stampedHash) {
|
|
112
|
+
const anchor = resolveAnchor(curr, ackModel, historyNewestFirst);
|
|
113
|
+
if (anchor) {
|
|
114
|
+
unbuiltBaselines.push(anchor);
|
|
115
|
+
unbuiltCurrents.push(curr);
|
|
116
|
+
}
|
|
117
|
+
else if (!seenBefore(curr.id, ackModel, historyNewestFirst))
|
|
118
|
+
newComponents.push(curr);
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
if (entry.stampedHash === entry.designHash)
|
|
122
|
+
continue; // in sync
|
|
123
|
+
// Stamped and drifted. Prefer the pinned stamp-time snapshot (full model — rich
|
|
124
|
+
// fields the contract omits still diff), then the lean contract (scan-timing-
|
|
125
|
+
// independent), then the history/ack anchor as a last resort.
|
|
126
|
+
const pinned = pinnedStampBaseline(entry, curr.id);
|
|
127
|
+
if (pinned) {
|
|
128
|
+
driftBaselines.push(pinned);
|
|
129
|
+
driftCurrents.push(curr);
|
|
130
|
+
}
|
|
131
|
+
else if (entry.stampedContract) {
|
|
132
|
+
driftBaselines.push(contractToComponent(curr.id, entry.displayName, entry.stampedContract));
|
|
133
|
+
driftCurrents.push(curr);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const anchor = resolveAnchor(curr, ackModel, historyNewestFirst);
|
|
137
|
+
if (anchor) {
|
|
138
|
+
driftBaselines.push(anchor);
|
|
139
|
+
driftCurrents.push(curr);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Components present in the model but absent from the lock entirely → first appearance.
|
|
145
|
+
for (const curr of currentModel.components) {
|
|
146
|
+
if (covered.has(curr.id))
|
|
147
|
+
continue;
|
|
148
|
+
newComponents.push(curr);
|
|
149
|
+
}
|
|
150
|
+
const changes = [
|
|
151
|
+
...diffGroup(driftBaselines, driftCurrents, "drifted"),
|
|
152
|
+
...diffGroup(unbuiltBaselines, unbuiltCurrents, "unbuilt"),
|
|
153
|
+
...newComponents.map((c) => ({
|
|
154
|
+
entityId: c.id,
|
|
155
|
+
entityType: "component",
|
|
156
|
+
changeType: "added",
|
|
157
|
+
newValue: c,
|
|
158
|
+
bucket: "new",
|
|
159
|
+
})),
|
|
160
|
+
// Token changes are model-wide, not per-component — diff current tokens against
|
|
161
|
+
// the ack point when available, else the newest history snapshot.
|
|
162
|
+
...compareTokens((ackModel ?? historyNewestFirst[0])?.tokens ?? currentModel.tokens, currentModel.tokens),
|
|
163
|
+
];
|
|
164
|
+
// Deletions: components tracked in the lock that no longer appear in the model.
|
|
165
|
+
if (lock) {
|
|
166
|
+
for (const [slug, entry] of Object.entries(lock.components)) {
|
|
167
|
+
const stillPresent = matchLockEntry(currentModel.components, entry.displayName, slug);
|
|
168
|
+
if (!stillPresent) {
|
|
169
|
+
changes.push({
|
|
170
|
+
entityId: slug,
|
|
171
|
+
entityType: "component",
|
|
172
|
+
changeType: "deleted",
|
|
173
|
+
previousValue: { name: entry.displayName },
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
let addedCount = 0, modifiedCount = 0, deletedCount = 0;
|
|
179
|
+
for (const c of changes) {
|
|
180
|
+
if (c.changeType === "added")
|
|
181
|
+
addedCount++;
|
|
182
|
+
else if (c.changeType === "modified")
|
|
183
|
+
modifiedCount++;
|
|
184
|
+
else if (c.changeType === "deleted")
|
|
185
|
+
deletedCount++;
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
timestamp: new Date().toISOString(),
|
|
189
|
+
changes,
|
|
190
|
+
addedCount,
|
|
191
|
+
modifiedCount,
|
|
192
|
+
deletedCount,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=resolve-design-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-design-diff.js","sourceRoot":"","sources":["../../src/diff/resolve-design-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,15 @@ export type ClearDiffBaselineResult = {
|
|
|
4
4
|
lockCleaned: boolean;
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* Sets the diff acknowledgement point to the current snapshot state. After this,
|
|
8
|
+
* `ptb diff` / `run_diff` report only changes that occur *after* this moment (for
|
|
9
|
+
* unstamped and contractless components — stamped components keep diffing against
|
|
10
|
+
* their implementation contract).
|
|
11
|
+
*
|
|
12
|
+
* This is a pure *reporting* concern: it writes `diff-baseline.json` and never touches
|
|
13
|
+
* `ptb.lock`. The implementation record (stampedHash / stampedContract / verify state)
|
|
14
|
+
* that drives staleness, blockedBy, and the verify gate is left completely intact.
|
|
15
|
+
* Shared by `ptb diff ack` (aka `diff clear`) and the MCP `diff_clear` tool.
|
|
9
16
|
*/
|
|
10
17
|
export declare function clearDiffBaseline(config: PTBConfig): Promise<ClearDiffBaselineResult>;
|
|
11
18
|
//# sourceMappingURL=clear-diff-baseline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear-diff-baseline.d.ts","sourceRoot":"","sources":["../../src/snapshots/clear-diff-baseline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,MAAM,MAAM,uBAAuB,GAAG;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"clear-diff-baseline.d.ts","sourceRoot":"","sources":["../../src/snapshots/clear-diff-baseline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,MAAM,MAAM,uBAAuB,GAAG;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAU3F"}
|
|
@@ -2,36 +2,23 @@ import * as fs from "node:fs/promises";
|
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import { resolveDSPaths } from "../filesystem/resolve-ds-paths.js";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Sets the diff acknowledgement point to the current snapshot state. After this,
|
|
6
|
+
* `ptb diff` / `run_diff` report only changes that occur *after* this moment (for
|
|
7
|
+
* unstamped and contractless components — stamped components keep diffing against
|
|
8
|
+
* their implementation contract).
|
|
9
|
+
*
|
|
10
|
+
* This is a pure *reporting* concern: it writes `diff-baseline.json` and never touches
|
|
11
|
+
* `ptb.lock`. The implementation record (stampedHash / stampedContract / verify state)
|
|
12
|
+
* that drives staleness, blockedBy, and the verify gate is left completely intact.
|
|
13
|
+
* Shared by `ptb diff ack` (aka `diff clear`) and the MCP `diff_clear` tool.
|
|
7
14
|
*/
|
|
8
15
|
export async function clearDiffBaseline(config) {
|
|
9
|
-
const { metadataDir
|
|
16
|
+
const { metadataDir } = resolveDSPaths(config);
|
|
10
17
|
const latestPath = path.join(metadataDir, "latest.json");
|
|
11
18
|
const baselinePath = path.join(metadataDir, "diff-baseline.json");
|
|
12
19
|
const latestContent = await fs.readFile(latestPath, "utf-8");
|
|
13
20
|
await fs.writeFile(baselinePath, latestContent, "utf-8");
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
try {
|
|
17
|
-
const lock = JSON.parse(await fs.readFile(lockPath, "utf-8"));
|
|
18
|
-
for (const entry of Object.values(lock.components ?? {})) {
|
|
19
|
-
if (entry.stampedSnapshotFile || entry.stampedHash) {
|
|
20
|
-
delete entry.stampedSnapshotFile;
|
|
21
|
-
delete entry.stampedHash;
|
|
22
|
-
delete entry.stampedAt;
|
|
23
|
-
delete entry.stampedMessage;
|
|
24
|
-
lockCleaned = true;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (lockCleaned) {
|
|
28
|
-
await fs.writeFile(lockPath, JSON.stringify(lock, null, 2) + "\n", "utf-8");
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
catch (e) {
|
|
32
|
-
if (e.code !== "ENOENT")
|
|
33
|
-
throw new Error(`ptb.lock is corrupt or unreadable: ${e.message}`);
|
|
34
|
-
}
|
|
35
|
-
return { baselinePath, lockCleaned };
|
|
21
|
+
// Intentionally does NOT mutate ptb.lock — the ack point is reporting-only.
|
|
22
|
+
return { baselinePath, lockCleaned: false };
|
|
36
23
|
}
|
|
37
24
|
//# sourceMappingURL=clear-diff-baseline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear-diff-baseline.js","sourceRoot":"","sources":["../../src/snapshots/clear-diff-baseline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE
|
|
1
|
+
{"version":3,"file":"clear-diff-baseline.js","sourceRoot":"","sources":["../../src/snapshots/clear-diff-baseline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAiB;IACrD,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAEzD,4EAA4E;IAC5E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@calibrate-ds/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.70",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"pixelmatch": "^6.0.0",
|
|
28
28
|
"pngjs": "^7.0.0",
|
|
29
29
|
"zod": "^4.3.6",
|
|
30
|
-
"@calibrate-ds/shared-types": "^0.1.
|
|
31
|
-
"@calibrate-ds/figma-client": "^0.1.
|
|
30
|
+
"@calibrate-ds/shared-types": "^0.1.70",
|
|
31
|
+
"@calibrate-ds/figma-client": "^0.1.70"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "tsc -p tsconfig.json",
|