flexily 0.3.0 → 0.3.1
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/README.md +2 -0
- package/package.json +16 -24
- package/src/classic/layout.ts +2 -2
- package/src/layout-helpers.ts +2 -2
- package/dist/classic/layout.d.ts +0 -57
- package/dist/classic/layout.d.ts.map +0 -1
- package/dist/classic/layout.js +0 -1567
- package/dist/classic/layout.js.map +0 -1
- package/dist/classic/node.d.ts +0 -648
- package/dist/classic/node.d.ts.map +0 -1
- package/dist/classic/node.js +0 -1002
- package/dist/classic/node.js.map +0 -1
- package/dist/constants.d.ts +0 -59
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -71
- package/dist/constants.js.map +0 -1
- package/dist/index-classic.d.ts +0 -30
- package/dist/index-classic.d.ts.map +0 -1
- package/dist/index-classic.js +0 -57
- package/dist/index-classic.js.map +0 -1
- package/dist/index.d.ts +0 -30
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -57
- package/dist/index.js.map +0 -1
- package/dist/layout-flex-lines.d.ts +0 -77
- package/dist/layout-flex-lines.d.ts.map +0 -1
- package/dist/layout-flex-lines.js +0 -317
- package/dist/layout-flex-lines.js.map +0 -1
- package/dist/layout-helpers.d.ts +0 -45
- package/dist/layout-helpers.d.ts.map +0 -1
- package/dist/layout-helpers.js +0 -103
- package/dist/layout-helpers.js.map +0 -1
- package/dist/layout-measure.d.ts +0 -25
- package/dist/layout-measure.d.ts.map +0 -1
- package/dist/layout-measure.js +0 -231
- package/dist/layout-measure.js.map +0 -1
- package/dist/layout-stats.d.ts +0 -19
- package/dist/layout-stats.d.ts.map +0 -1
- package/dist/layout-stats.js +0 -37
- package/dist/layout-stats.js.map +0 -1
- package/dist/layout-traversal.d.ts +0 -28
- package/dist/layout-traversal.d.ts.map +0 -1
- package/dist/layout-traversal.js +0 -65
- package/dist/layout-traversal.js.map +0 -1
- package/dist/layout-zero.d.ts +0 -26
- package/dist/layout-zero.d.ts.map +0 -1
- package/dist/layout-zero.js +0 -1757
- package/dist/layout-zero.js.map +0 -1
- package/dist/logger.d.ts +0 -14
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -61
- package/dist/logger.js.map +0 -1
- package/dist/node-zero.d.ts +0 -702
- package/dist/node-zero.d.ts.map +0 -1
- package/dist/node-zero.js +0 -1268
- package/dist/node-zero.js.map +0 -1
- package/dist/testing.d.ts +0 -69
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -179
- package/dist/testing.js.map +0 -1
- package/dist/trace.d.ts +0 -74
- package/dist/trace.d.ts.map +0 -1
- package/dist/trace.js +0 -191
- package/dist/trace.js.map +0 -1
- package/dist/types.d.ts +0 -170
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -43
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -49
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -222
- package/dist/utils.js.map +0 -1
- package/src/beorn-logger.d.ts +0 -10
package/dist/node-zero.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-zero.js","sourceRoot":"","sources":["../src/node-zero.ts"],"names":[],"mappings":"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"}
|
package/dist/testing.d.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Flexily Testing Utilities
|
|
3
|
-
*
|
|
4
|
-
* Diagnostic helpers for verifying layout correctness, especially
|
|
5
|
-
* incremental re-layout consistency. Used by downstream consumers
|
|
6
|
-
* (silvery, km-tui) and flexily's own test suite.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { Node, DIRECTION_LTR } from 'flexily';
|
|
11
|
-
* import { getLayout, diffLayouts, assertLayoutSanity } from 'flexily/testing';
|
|
12
|
-
*
|
|
13
|
-
* const root = Node.create();
|
|
14
|
-
* root.setWidth(80);
|
|
15
|
-
* root.calculateLayout(80, 24, DIRECTION_LTR);
|
|
16
|
-
* assertLayoutSanity(root);
|
|
17
|
-
* const layout = getLayout(root);
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
import type { MeasureFunc } from "./types.js";
|
|
21
|
-
import { Node } from "./node-zero.js";
|
|
22
|
-
export interface LayoutResult {
|
|
23
|
-
left: number;
|
|
24
|
-
top: number;
|
|
25
|
-
width: number;
|
|
26
|
-
height: number;
|
|
27
|
-
children: LayoutResult[];
|
|
28
|
-
}
|
|
29
|
-
export interface BuildTreeResult {
|
|
30
|
-
root: Node;
|
|
31
|
-
dirtyTargets: Node[];
|
|
32
|
-
}
|
|
33
|
-
/** Recursively extract computed layout from a node tree. */
|
|
34
|
-
export declare function getLayout(node: Node): LayoutResult;
|
|
35
|
-
/** Format a layout tree as an indented string for debugging. */
|
|
36
|
-
export declare function formatLayout(layout: LayoutResult, indent?: number): string;
|
|
37
|
-
/**
|
|
38
|
-
* Collect node-by-node diffs between two layout trees.
|
|
39
|
-
* Returns empty array if layouts match.
|
|
40
|
-
*/
|
|
41
|
-
export declare function diffLayouts(a: LayoutResult, b: LayoutResult, path?: string): string[];
|
|
42
|
-
/**
|
|
43
|
-
* Wrapping text measure function factory.
|
|
44
|
-
* Simulates text of given width that wraps to multiple lines when constrained.
|
|
45
|
-
*/
|
|
46
|
-
export declare function textMeasure(textWidth: number): MeasureFunc;
|
|
47
|
-
/**
|
|
48
|
-
* Assert that all layout values are non-negative and width is finite.
|
|
49
|
-
* Height may be NaN for auto-height trees with unconstrained height.
|
|
50
|
-
* Throws a descriptive error on failure.
|
|
51
|
-
*/
|
|
52
|
-
export declare function assertLayoutSanity(node: Node, path?: string): void;
|
|
53
|
-
/**
|
|
54
|
-
* Differential oracle: re-layout of partially-dirty tree must match fresh layout.
|
|
55
|
-
* Throws a descriptive error with node-by-node diff on failure.
|
|
56
|
-
*/
|
|
57
|
-
export declare function expectRelayoutMatchesFresh(buildTree: () => BuildTreeResult, layoutWidth: number, layoutHeight: number): void;
|
|
58
|
-
/**
|
|
59
|
-
* Assert that laying out twice with identical constraints produces identical results.
|
|
60
|
-
* Catches non-determinism or state corruption from a single layout pass.
|
|
61
|
-
*/
|
|
62
|
-
export declare function expectIdempotent(buildTree: () => BuildTreeResult, layoutWidth: number, layoutHeight: number): void;
|
|
63
|
-
/**
|
|
64
|
-
* Assert that layout at width W, then different width W', then back to W
|
|
65
|
-
* produces the same result as fresh layout at W.
|
|
66
|
-
* Catches stale cache entries that don't update on constraint change.
|
|
67
|
-
*/
|
|
68
|
-
export declare function expectResizeRoundTrip(buildTree: () => BuildTreeResult, widths: number[]): void;
|
|
69
|
-
//# sourceMappingURL=testing.d.ts.map
|
package/dist/testing.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAMrC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,YAAY,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAA;IACV,YAAY,EAAE,IAAI,EAAE,CAAA;CACrB;AAMD,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CAQlD;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,SAAI,GAAG,MAAM,CAOrE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,SAAS,GAAG,MAAM,EAAE,CAiBrF;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAS1D;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,SAAS,GAAG,IAAI,CAelE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,eAAe,EAChC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,IAAI,CAqBN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAYlH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAoB9F"}
|
package/dist/testing.js
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Flexily Testing Utilities
|
|
3
|
-
*
|
|
4
|
-
* Diagnostic helpers for verifying layout correctness, especially
|
|
5
|
-
* incremental re-layout consistency. Used by downstream consumers
|
|
6
|
-
* (silvery, km-tui) and flexily's own test suite.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { Node, DIRECTION_LTR } from 'flexily';
|
|
11
|
-
* import { getLayout, diffLayouts, assertLayoutSanity } from 'flexily/testing';
|
|
12
|
-
*
|
|
13
|
-
* const root = Node.create();
|
|
14
|
-
* root.setWidth(80);
|
|
15
|
-
* root.calculateLayout(80, 24, DIRECTION_LTR);
|
|
16
|
-
* assertLayoutSanity(root);
|
|
17
|
-
* const layout = getLayout(root);
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
import { DIRECTION_LTR, MEASURE_MODE_AT_MOST, MEASURE_MODE_EXACTLY } from "./constants.js";
|
|
21
|
-
// ============================================================================
|
|
22
|
-
// Layout Inspection
|
|
23
|
-
// ============================================================================
|
|
24
|
-
/** Recursively extract computed layout from a node tree. */
|
|
25
|
-
export function getLayout(node) {
|
|
26
|
-
return {
|
|
27
|
-
left: node.getComputedLeft(),
|
|
28
|
-
top: node.getComputedTop(),
|
|
29
|
-
width: node.getComputedWidth(),
|
|
30
|
-
height: node.getComputedHeight(),
|
|
31
|
-
children: Array.from({ length: node.getChildCount() }, (_, i) => getLayout(node.getChild(i))),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
/** Format a layout tree as an indented string for debugging. */
|
|
35
|
-
export function formatLayout(layout, indent = 0) {
|
|
36
|
-
const pad = " ".repeat(indent);
|
|
37
|
-
let result = `${pad}{ left: ${layout.left}, top: ${layout.top}, width: ${layout.width}, height: ${layout.height} }`;
|
|
38
|
-
if (layout.children.length > 0) {
|
|
39
|
-
result += ` [\n${layout.children.map((c) => formatLayout(c, indent + 1)).join(",\n")}\n${pad}]`;
|
|
40
|
-
}
|
|
41
|
-
return result;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Collect node-by-node diffs between two layout trees.
|
|
45
|
-
* Returns empty array if layouts match.
|
|
46
|
-
*/
|
|
47
|
-
export function diffLayouts(a, b, path = "root") {
|
|
48
|
-
const diffs = [];
|
|
49
|
-
// Use Object.is for NaN-safe comparison (NaN === NaN is false, Object.is(NaN, NaN) is true)
|
|
50
|
-
if (!Object.is(a.left, b.left))
|
|
51
|
-
diffs.push(`${path}: left ${a.left} vs ${b.left}`);
|
|
52
|
-
if (!Object.is(a.top, b.top))
|
|
53
|
-
diffs.push(`${path}: top ${a.top} vs ${b.top}`);
|
|
54
|
-
if (!Object.is(a.width, b.width))
|
|
55
|
-
diffs.push(`${path}: width ${a.width} vs ${b.width}`);
|
|
56
|
-
if (!Object.is(a.height, b.height))
|
|
57
|
-
diffs.push(`${path}: height ${a.height} vs ${b.height}`);
|
|
58
|
-
for (let i = 0; i < Math.max(a.children.length, b.children.length); i++) {
|
|
59
|
-
if (a.children[i] && b.children[i]) {
|
|
60
|
-
diffs.push(...diffLayouts(a.children[i], b.children[i], `${path}[${i}]`));
|
|
61
|
-
}
|
|
62
|
-
else if (a.children[i]) {
|
|
63
|
-
diffs.push(`${path}[${i}]: missing in incremental`);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
diffs.push(`${path}[${i}]: missing in reference`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return diffs;
|
|
70
|
-
}
|
|
71
|
-
// ============================================================================
|
|
72
|
-
// Measure Functions
|
|
73
|
-
// ============================================================================
|
|
74
|
-
/**
|
|
75
|
-
* Wrapping text measure function factory.
|
|
76
|
-
* Simulates text of given width that wraps to multiple lines when constrained.
|
|
77
|
-
*/
|
|
78
|
-
export function textMeasure(textWidth) {
|
|
79
|
-
return (width, widthMode, _height, _heightMode) => {
|
|
80
|
-
if (widthMode === MEASURE_MODE_EXACTLY || widthMode === MEASURE_MODE_AT_MOST) {
|
|
81
|
-
if (width >= textWidth)
|
|
82
|
-
return { width: textWidth, height: 1 };
|
|
83
|
-
const lines = Math.ceil(textWidth / width);
|
|
84
|
-
return { width: Math.min(textWidth, width), height: lines };
|
|
85
|
-
}
|
|
86
|
-
return { width: textWidth, height: 1 };
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
// ============================================================================
|
|
90
|
-
// Assertions (throw on failure, no vitest dependency)
|
|
91
|
-
// ============================================================================
|
|
92
|
-
/**
|
|
93
|
-
* Assert that all layout values are non-negative and width is finite.
|
|
94
|
-
* Height may be NaN for auto-height trees with unconstrained height.
|
|
95
|
-
* Throws a descriptive error on failure.
|
|
96
|
-
*/
|
|
97
|
-
export function assertLayoutSanity(node, path = "root") {
|
|
98
|
-
const w = node.getComputedWidth();
|
|
99
|
-
const h = node.getComputedHeight();
|
|
100
|
-
const l = node.getComputedLeft();
|
|
101
|
-
const t = node.getComputedTop();
|
|
102
|
-
if (w < 0)
|
|
103
|
-
throw new Error(`${path}: width is negative (${w})`);
|
|
104
|
-
if (!Number.isFinite(w))
|
|
105
|
-
throw new Error(`${path}: width is not finite (${w})`);
|
|
106
|
-
if (!Number.isFinite(l))
|
|
107
|
-
throw new Error(`${path}: left is not finite (${l})`);
|
|
108
|
-
if (Number.isFinite(h) && h < 0)
|
|
109
|
-
throw new Error(`${path}: height is negative (${h})`);
|
|
110
|
-
if (Number.isFinite(t) && t < 0)
|
|
111
|
-
throw new Error(`${path}: top is negative (${t})`);
|
|
112
|
-
for (let i = 0; i < node.getChildCount(); i++) {
|
|
113
|
-
assertLayoutSanity(node.getChild(i), `${path}[${i}]`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Differential oracle: re-layout of partially-dirty tree must match fresh layout.
|
|
118
|
-
* Throws a descriptive error with node-by-node diff on failure.
|
|
119
|
-
*/
|
|
120
|
-
export function expectRelayoutMatchesFresh(buildTree, layoutWidth, layoutHeight) {
|
|
121
|
-
// 1. Build, layout, mark dirty, re-layout
|
|
122
|
-
const { root, dirtyTargets } = buildTree();
|
|
123
|
-
root.calculateLayout(layoutWidth, layoutHeight, DIRECTION_LTR);
|
|
124
|
-
for (const t of dirtyTargets)
|
|
125
|
-
t.markDirty();
|
|
126
|
-
root.calculateLayout(layoutWidth, layoutHeight, DIRECTION_LTR);
|
|
127
|
-
const incremental = getLayout(root);
|
|
128
|
-
// 2. Build identical fresh tree, layout once
|
|
129
|
-
const fresh = buildTree();
|
|
130
|
-
fresh.root.calculateLayout(layoutWidth, layoutHeight, DIRECTION_LTR);
|
|
131
|
-
const reference = getLayout(fresh.root);
|
|
132
|
-
// 3. Must be identical — show detailed diff on failure
|
|
133
|
-
const diffs = diffLayouts(reference, incremental);
|
|
134
|
-
if (diffs.length > 0) {
|
|
135
|
-
const detail = diffs.map((d) => ` ${d}`).join("\n");
|
|
136
|
-
throw new Error(`Incremental layout differs from fresh (${diffs.length} diffs):\n${detail}\n\nFresh:\n${formatLayout(reference)}\n\nIncremental:\n${formatLayout(incremental)}`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Assert that laying out twice with identical constraints produces identical results.
|
|
141
|
-
* Catches non-determinism or state corruption from a single layout pass.
|
|
142
|
-
*/
|
|
143
|
-
export function expectIdempotent(buildTree, layoutWidth, layoutHeight) {
|
|
144
|
-
const { root } = buildTree();
|
|
145
|
-
root.calculateLayout(layoutWidth, layoutHeight, DIRECTION_LTR);
|
|
146
|
-
const first = getLayout(root);
|
|
147
|
-
root.calculateLayout(layoutWidth, layoutHeight, DIRECTION_LTR);
|
|
148
|
-
const second = getLayout(root);
|
|
149
|
-
const diffs = diffLayouts(first, second);
|
|
150
|
-
if (diffs.length > 0) {
|
|
151
|
-
const detail = diffs.map((d) => ` ${d}`).join("\n");
|
|
152
|
-
throw new Error(`Layout not idempotent (${diffs.length} diffs after 2nd pass):\n${detail}`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Assert that layout at width W, then different width W', then back to W
|
|
157
|
-
* produces the same result as fresh layout at W.
|
|
158
|
-
* Catches stale cache entries that don't update on constraint change.
|
|
159
|
-
*/
|
|
160
|
-
export function expectResizeRoundTrip(buildTree, widths) {
|
|
161
|
-
const { root } = buildTree();
|
|
162
|
-
for (const w of widths) {
|
|
163
|
-
root.setWidth(w);
|
|
164
|
-
root.calculateLayout(w, NaN, DIRECTION_LTR);
|
|
165
|
-
}
|
|
166
|
-
const incremental = getLayout(root);
|
|
167
|
-
// Fresh reference at final width
|
|
168
|
-
const finalWidth = widths[widths.length - 1];
|
|
169
|
-
const fresh = buildTree();
|
|
170
|
-
fresh.root.setWidth(finalWidth);
|
|
171
|
-
fresh.root.calculateLayout(finalWidth, NaN, DIRECTION_LTR);
|
|
172
|
-
const reference = getLayout(fresh.root);
|
|
173
|
-
const diffs = diffLayouts(reference, incremental);
|
|
174
|
-
if (diffs.length > 0) {
|
|
175
|
-
const detail = diffs.map((d) => ` ${d}`).join("\n");
|
|
176
|
-
throw new Error(`Resize round-trip differs (widths: ${widths.join("→")}, ${diffs.length} diffs):\n${detail}`);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=testing.js.map
|
package/dist/testing.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
package/dist/trace.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Layout Trace — instrumented debug mode for fingerprint/cache tracing.
|
|
3
|
-
*
|
|
4
|
-
* Records every fingerprint check (hit/miss), cache lookup (hit/miss),
|
|
5
|
-
* measureNode save/restore, and parent size override during a layout pass.
|
|
6
|
-
* Two traces from consecutive passes can be diffed to find where they diverge.
|
|
7
|
-
*
|
|
8
|
-
* Zero-cost when disabled: the module-level `trace` getter returns undefined,
|
|
9
|
-
* and all callsites use optional chaining (`trace?.event()`).
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* import { enableTrace, disableTrace, diffTraces } from 'flexily/trace';
|
|
14
|
-
*
|
|
15
|
-
* const t1 = enableTrace();
|
|
16
|
-
* root.calculateLayout(80, 24, DIRECTION_LTR);
|
|
17
|
-
* disableTrace();
|
|
18
|
-
*
|
|
19
|
-
* // Mutate tree...
|
|
20
|
-
* const t2 = enableTrace();
|
|
21
|
-
* root.calculateLayout(80, 24, DIRECTION_LTR);
|
|
22
|
-
* disableTrace();
|
|
23
|
-
*
|
|
24
|
-
* const diffs = diffTraces(t1, t2);
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export type TraceEventType = "fingerprint_hit" | "fingerprint_miss" | "cache_hit" | "cache_miss" | "measure_cache_hit" | "measure_cache_miss" | "measure_save_restore" | "parent_override" | "layout_enter" | "layout_exit";
|
|
28
|
-
export interface TraceEvent {
|
|
29
|
-
type: TraceEventType;
|
|
30
|
-
/** Node index in tree traversal order (stable across same tree) */
|
|
31
|
-
nodeIndex: number;
|
|
32
|
-
/** Available width constraint */
|
|
33
|
-
availW: number;
|
|
34
|
-
/** Available height constraint */
|
|
35
|
-
availH: number;
|
|
36
|
-
/** Extra data depending on event type */
|
|
37
|
-
detail?: Record<string, number | string | boolean>;
|
|
38
|
-
}
|
|
39
|
-
export interface TraceDiff {
|
|
40
|
-
index: number;
|
|
41
|
-
event1: TraceEvent | undefined;
|
|
42
|
-
event2: TraceEvent | undefined;
|
|
43
|
-
reason: string;
|
|
44
|
-
}
|
|
45
|
-
export declare class LayoutTrace {
|
|
46
|
-
readonly events: TraceEvent[];
|
|
47
|
-
private _nodeCounter;
|
|
48
|
-
/** Reset node counter at start of a new layout pass */
|
|
49
|
-
resetCounter(): void;
|
|
50
|
-
/** Get next node index (call once per layoutNode entry) */
|
|
51
|
-
nextNode(): number;
|
|
52
|
-
fingerprintHit(nodeIndex: number, availW: number, availH: number): void;
|
|
53
|
-
fingerprintMiss(nodeIndex: number, availW: number, availH: number, detail?: Record<string, number | string | boolean>): void;
|
|
54
|
-
cacheHit(nodeIndex: number, availW: number, availH: number, width: number, height: number): void;
|
|
55
|
-
cacheMiss(nodeIndex: number, availW: number, availH: number): void;
|
|
56
|
-
measureCacheHit(nodeIndex: number, availW: number, availH: number, width: number, height: number): void;
|
|
57
|
-
measureCacheMiss(nodeIndex: number, availW: number, availH: number): void;
|
|
58
|
-
measureSaveRestore(nodeIndex: number, savedW: number, savedH: number, measuredW: number, measuredH: number): void;
|
|
59
|
-
parentOverride(nodeIndex: number, axis: "main" | "cross", original: number, overridden: number): void;
|
|
60
|
-
layoutEnter(nodeIndex: number, availW: number, availH: number, isDirty: boolean, childCount: number): void;
|
|
61
|
-
layoutExit(nodeIndex: number, width: number, height: number): void;
|
|
62
|
-
}
|
|
63
|
-
/** Enable tracing. Returns the trace recorder for later inspection. */
|
|
64
|
-
export declare function enableTrace(): LayoutTrace;
|
|
65
|
-
/** Disable tracing. Returns the trace that was recorded. */
|
|
66
|
-
export declare function disableTrace(): LayoutTrace | null;
|
|
67
|
-
/** Get the current trace recorder (null when tracing is disabled). */
|
|
68
|
-
export declare function getTrace(): LayoutTrace | null;
|
|
69
|
-
/**
|
|
70
|
-
* Compare two traces event-by-event.
|
|
71
|
-
* Returns divergence points — where the two passes made different decisions.
|
|
72
|
-
*/
|
|
73
|
-
export declare function diffTraces(t1: LayoutTrace, t2: LayoutTrace): TraceDiff[];
|
|
74
|
-
//# sourceMappingURL=trace.d.ts.map
|
package/dist/trace.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
|
package/dist/trace.js
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Layout Trace — instrumented debug mode for fingerprint/cache tracing.
|
|
3
|
-
*
|
|
4
|
-
* Records every fingerprint check (hit/miss), cache lookup (hit/miss),
|
|
5
|
-
* measureNode save/restore, and parent size override during a layout pass.
|
|
6
|
-
* Two traces from consecutive passes can be diffed to find where they diverge.
|
|
7
|
-
*
|
|
8
|
-
* Zero-cost when disabled: the module-level `trace` getter returns undefined,
|
|
9
|
-
* and all callsites use optional chaining (`trace?.event()`).
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* import { enableTrace, disableTrace, diffTraces } from 'flexily/trace';
|
|
14
|
-
*
|
|
15
|
-
* const t1 = enableTrace();
|
|
16
|
-
* root.calculateLayout(80, 24, DIRECTION_LTR);
|
|
17
|
-
* disableTrace();
|
|
18
|
-
*
|
|
19
|
-
* // Mutate tree...
|
|
20
|
-
* const t2 = enableTrace();
|
|
21
|
-
* root.calculateLayout(80, 24, DIRECTION_LTR);
|
|
22
|
-
* disableTrace();
|
|
23
|
-
*
|
|
24
|
-
* const diffs = diffTraces(t1, t2);
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
// =============================================================================
|
|
28
|
-
// Trace Recorder
|
|
29
|
-
// =============================================================================
|
|
30
|
-
export class LayoutTrace {
|
|
31
|
-
events = [];
|
|
32
|
-
_nodeCounter = 0;
|
|
33
|
-
/** Reset node counter at start of a new layout pass */
|
|
34
|
-
resetCounter() {
|
|
35
|
-
this._nodeCounter = 0;
|
|
36
|
-
}
|
|
37
|
-
/** Get next node index (call once per layoutNode entry) */
|
|
38
|
-
nextNode() {
|
|
39
|
-
return this._nodeCounter++;
|
|
40
|
-
}
|
|
41
|
-
fingerprintHit(nodeIndex, availW, availH) {
|
|
42
|
-
this.events.push({ type: "fingerprint_hit", nodeIndex, availW, availH });
|
|
43
|
-
}
|
|
44
|
-
fingerprintMiss(nodeIndex, availW, availH, detail) {
|
|
45
|
-
this.events.push({ type: "fingerprint_miss", nodeIndex, availW, availH, detail });
|
|
46
|
-
}
|
|
47
|
-
cacheHit(nodeIndex, availW, availH, width, height) {
|
|
48
|
-
this.events.push({
|
|
49
|
-
type: "cache_hit",
|
|
50
|
-
nodeIndex,
|
|
51
|
-
availW,
|
|
52
|
-
availH,
|
|
53
|
-
detail: { width, height },
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
cacheMiss(nodeIndex, availW, availH) {
|
|
57
|
-
this.events.push({ type: "cache_miss", nodeIndex, availW, availH });
|
|
58
|
-
}
|
|
59
|
-
measureCacheHit(nodeIndex, availW, availH, width, height) {
|
|
60
|
-
this.events.push({
|
|
61
|
-
type: "measure_cache_hit",
|
|
62
|
-
nodeIndex,
|
|
63
|
-
availW,
|
|
64
|
-
availH,
|
|
65
|
-
detail: { width, height },
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
measureCacheMiss(nodeIndex, availW, availH) {
|
|
69
|
-
this.events.push({ type: "measure_cache_miss", nodeIndex, availW, availH });
|
|
70
|
-
}
|
|
71
|
-
measureSaveRestore(nodeIndex, savedW, savedH, measuredW, measuredH) {
|
|
72
|
-
this.events.push({
|
|
73
|
-
type: "measure_save_restore",
|
|
74
|
-
nodeIndex,
|
|
75
|
-
availW: 0,
|
|
76
|
-
availH: 0,
|
|
77
|
-
detail: { savedW, savedH, measuredW, measuredH },
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
parentOverride(nodeIndex, axis, original, overridden) {
|
|
81
|
-
this.events.push({
|
|
82
|
-
type: "parent_override",
|
|
83
|
-
nodeIndex,
|
|
84
|
-
availW: 0,
|
|
85
|
-
availH: 0,
|
|
86
|
-
detail: { axis, original, overridden },
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
layoutEnter(nodeIndex, availW, availH, isDirty, childCount) {
|
|
90
|
-
this.events.push({
|
|
91
|
-
type: "layout_enter",
|
|
92
|
-
nodeIndex,
|
|
93
|
-
availW,
|
|
94
|
-
availH,
|
|
95
|
-
detail: { isDirty, childCount },
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
layoutExit(nodeIndex, width, height) {
|
|
99
|
-
this.events.push({
|
|
100
|
-
type: "layout_exit",
|
|
101
|
-
nodeIndex,
|
|
102
|
-
availW: 0,
|
|
103
|
-
availH: 0,
|
|
104
|
-
detail: { width, height },
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// =============================================================================
|
|
109
|
-
// Module-level state (zero-cost when null)
|
|
110
|
-
// =============================================================================
|
|
111
|
-
let _trace = null;
|
|
112
|
-
/** Enable tracing. Returns the trace recorder for later inspection. */
|
|
113
|
-
export function enableTrace() {
|
|
114
|
-
_trace = new LayoutTrace();
|
|
115
|
-
return _trace;
|
|
116
|
-
}
|
|
117
|
-
/** Disable tracing. Returns the trace that was recorded. */
|
|
118
|
-
export function disableTrace() {
|
|
119
|
-
const t = _trace;
|
|
120
|
-
_trace = null;
|
|
121
|
-
return t;
|
|
122
|
-
}
|
|
123
|
-
/** Get the current trace recorder (null when tracing is disabled). */
|
|
124
|
-
export function getTrace() {
|
|
125
|
-
return _trace;
|
|
126
|
-
}
|
|
127
|
-
// =============================================================================
|
|
128
|
-
// Diff Utility
|
|
129
|
-
// =============================================================================
|
|
130
|
-
/**
|
|
131
|
-
* Compare two traces event-by-event.
|
|
132
|
-
* Returns divergence points — where the two passes made different decisions.
|
|
133
|
-
*/
|
|
134
|
-
export function diffTraces(t1, t2) {
|
|
135
|
-
const diffs = [];
|
|
136
|
-
const maxLen = Math.max(t1.events.length, t2.events.length);
|
|
137
|
-
for (let i = 0; i < maxLen; i++) {
|
|
138
|
-
const e1 = t1.events[i];
|
|
139
|
-
const e2 = t2.events[i];
|
|
140
|
-
if (!e1 || !e2) {
|
|
141
|
-
diffs.push({
|
|
142
|
-
index: i,
|
|
143
|
-
event1: e1,
|
|
144
|
-
event2: e2,
|
|
145
|
-
reason: !e1 ? "extra event in trace 2" : "extra event in trace 1",
|
|
146
|
-
});
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
if (e1.type !== e2.type) {
|
|
150
|
-
diffs.push({
|
|
151
|
-
index: i,
|
|
152
|
-
event1: e1,
|
|
153
|
-
event2: e2,
|
|
154
|
-
reason: `type differs: ${e1.type} vs ${e2.type}`,
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
else if (e1.nodeIndex !== e2.nodeIndex) {
|
|
158
|
-
diffs.push({
|
|
159
|
-
index: i,
|
|
160
|
-
event1: e1,
|
|
161
|
-
event2: e2,
|
|
162
|
-
reason: `nodeIndex differs: ${e1.nodeIndex} vs ${e2.nodeIndex}`,
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
else if (!Object.is(e1.availW, e2.availW) || !Object.is(e1.availH, e2.availH)) {
|
|
166
|
-
diffs.push({
|
|
167
|
-
index: i,
|
|
168
|
-
event1: e1,
|
|
169
|
-
event2: e2,
|
|
170
|
-
reason: `constraints differ: (${e1.availW},${e1.availH}) vs (${e2.availW},${e2.availH})`,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
else if (e1.detail && e2.detail) {
|
|
174
|
-
// Compare detail fields
|
|
175
|
-
const keys = new Set([...Object.keys(e1.detail), ...Object.keys(e2.detail)]);
|
|
176
|
-
for (const key of keys) {
|
|
177
|
-
if (!Object.is(e1.detail[key], e2.detail[key])) {
|
|
178
|
-
diffs.push({
|
|
179
|
-
index: i,
|
|
180
|
-
event1: e1,
|
|
181
|
-
event2: e2,
|
|
182
|
-
reason: `detail.${key} differs: ${e1.detail[key]} vs ${e2.detail[key]}`,
|
|
183
|
-
});
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return diffs;
|
|
190
|
-
}
|
|
191
|
-
//# sourceMappingURL=trace.js.map
|
package/dist/trace.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
|