@barefootjs/jsx 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/debug.d.ts +78 -2
- package/dist/debug.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +331 -15
- package/dist/ir-to-client-js/html-template.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/auto-defer-brand.test.ts +284 -0
- package/src/__tests__/debug.test.ts +346 -1
- package/src/debug.ts +450 -20
- package/src/index.ts +10 -1
- package/src/ir-to-client-js/html-template.ts +17 -0
- package/src/jsx-to-ir.ts +39 -2
package/dist/debug.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides static analysis of signal dependency graphs, update propagation
|
|
5
5
|
* paths, and component reactive structure — all without running any code.
|
|
6
6
|
*/
|
|
7
|
-
import type { ComponentIR, SourceLocation } from './types';
|
|
7
|
+
import type { ComponentIR, IRMetadata, SourceLocation } from './types';
|
|
8
8
|
import { listComponentFunctions } from './analyzer';
|
|
9
9
|
import type { WrapReason } from './ir-to-client-js/reactivity';
|
|
10
10
|
export interface SignalNode {
|
|
@@ -113,7 +113,14 @@ export interface EventBinding {
|
|
|
113
113
|
export interface SetterRef {
|
|
114
114
|
setter: string;
|
|
115
115
|
signal: string | null;
|
|
116
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Call chain from the handler to the setter, when the setter is reached
|
|
118
|
+
* through one or more local helper functions. For a handler that calls
|
|
119
|
+
* the setter directly this is omitted. For `onClick={handlePointerDown}`
|
|
120
|
+
* where `handlePointerDown` calls `setValue` which calls `setInternalValue`,
|
|
121
|
+
* this is `['handlePointerDown', 'setValue']`.
|
|
122
|
+
*/
|
|
123
|
+
via?: string[];
|
|
117
124
|
}
|
|
118
125
|
export interface EventSummary {
|
|
119
126
|
componentName: string;
|
|
@@ -142,6 +149,44 @@ export interface LoopSummary {
|
|
|
142
149
|
sourceFile: string;
|
|
143
150
|
loops: LoopInfo[];
|
|
144
151
|
}
|
|
152
|
+
export interface WhyUpdateResult {
|
|
153
|
+
binding: string;
|
|
154
|
+
expression: string | null;
|
|
155
|
+
deps: WhyUpdateDep[];
|
|
156
|
+
classification?: 'reactive' | 'fallback';
|
|
157
|
+
wrapReason?: WrapReason;
|
|
158
|
+
ambiguous?: Array<{
|
|
159
|
+
label: string;
|
|
160
|
+
slotId: string;
|
|
161
|
+
}>;
|
|
162
|
+
}
|
|
163
|
+
export interface WhyUpdateDep {
|
|
164
|
+
name: string;
|
|
165
|
+
kind: 'signal' | 'memo';
|
|
166
|
+
dependsOn: string[];
|
|
167
|
+
changedBy: WhyUpdateSource[];
|
|
168
|
+
}
|
|
169
|
+
export interface WhyUpdateSource {
|
|
170
|
+
handler: string;
|
|
171
|
+
setter: string;
|
|
172
|
+
elementContext: string;
|
|
173
|
+
via?: string[];
|
|
174
|
+
}
|
|
175
|
+
export interface ComponentSummary {
|
|
176
|
+
componentName: string;
|
|
177
|
+
sourceFile: string;
|
|
178
|
+
hydrated: boolean;
|
|
179
|
+
clientBundle: string | null;
|
|
180
|
+
signals: number;
|
|
181
|
+
memos: number;
|
|
182
|
+
effects: number;
|
|
183
|
+
loops: number;
|
|
184
|
+
eventHandlers: number;
|
|
185
|
+
dynamicTextBindings: number;
|
|
186
|
+
dynamicAttributes: number;
|
|
187
|
+
conditionals: number;
|
|
188
|
+
fallbacks: number;
|
|
189
|
+
}
|
|
145
190
|
export interface ComponentAnalysis {
|
|
146
191
|
graph: ComponentGraph;
|
|
147
192
|
ir: ComponentIR;
|
|
@@ -166,6 +211,19 @@ export declare function buildComponentAnalysis(source: string, filePath: string,
|
|
|
166
211
|
* and downstream update paths.
|
|
167
212
|
*/
|
|
168
213
|
export declare function buildEventSummary(source: string, filePath: string, componentName?: string): EventSummary;
|
|
214
|
+
export declare function escapeForIdBoundary(name: string): string;
|
|
215
|
+
export declare function makeIdCallRegex(name: string): RegExp;
|
|
216
|
+
/**
|
|
217
|
+
* A setter reachable from a local function, with the chain of intermediate
|
|
218
|
+
* function names between that function and the setter (excluding the function
|
|
219
|
+
* itself). For a direct call the chain is empty.
|
|
220
|
+
*/
|
|
221
|
+
export interface FnSetterResolution {
|
|
222
|
+
setter: string;
|
|
223
|
+
chain: string[];
|
|
224
|
+
}
|
|
225
|
+
export declare function buildLocalFunctionSetterMap(meta: IRMetadata, setterToSignal: Map<string, string>): Map<string, FnSetterResolution[]>;
|
|
226
|
+
export declare function resolveSetters(handler: string, setterToSignal: Map<string, string>, fnSetters: Map<string, FnSetterResolution[]>): SetterRef[];
|
|
169
227
|
/**
|
|
170
228
|
* Format an event summary as a human-readable string for `bf debug events`.
|
|
171
229
|
* Uses the graph to trace downstream updates for each setter.
|
|
@@ -178,6 +236,8 @@ export declare function formatLoopSummary(summary: LoopSummary): string;
|
|
|
178
236
|
* Shows all downstream effects, memos, and DOM bindings.
|
|
179
237
|
*/
|
|
180
238
|
export declare function traceUpdatePath(graph: ComponentGraph, targetName: string): UpdatePath | null;
|
|
239
|
+
export declare function buildWhyUpdate(source: string, filePath: string, bindingLabel: string, componentName?: string): WhyUpdateResult | null;
|
|
240
|
+
export declare function formatWhyUpdate(result: WhyUpdateResult): string;
|
|
181
241
|
/** Format the component graph as a human-readable string for `bf debug graph`. */
|
|
182
242
|
export declare function formatComponentGraph(graph: ComponentGraph): string;
|
|
183
243
|
/** Format an update path as a human-readable string for `bf debug trace`. */
|
|
@@ -199,5 +259,21 @@ export interface SignalTrace {
|
|
|
199
259
|
export declare function generateStaticTrace(graph: ComponentGraph): SignalTrace[];
|
|
200
260
|
/** Format a signal trace as a human-readable string. */
|
|
201
261
|
export declare function formatSignalTrace(traces: SignalTrace[]): string;
|
|
262
|
+
export interface FallbackExplanation {
|
|
263
|
+
label: string;
|
|
264
|
+
expression: string;
|
|
265
|
+
reason: string;
|
|
266
|
+
runtimeDeps: string;
|
|
267
|
+
suggestion: string;
|
|
268
|
+
loc?: {
|
|
269
|
+
file: string;
|
|
270
|
+
line: number;
|
|
271
|
+
};
|
|
272
|
+
isEventHandler: boolean;
|
|
273
|
+
}
|
|
274
|
+
export declare function describeFallback(binding: DomBinding): FallbackExplanation;
|
|
275
|
+
export declare function formatFallbackExplanations(componentName: string, fallbacks: DomBinding[]): string;
|
|
276
|
+
export declare function buildComponentSummary(source: string, filePath: string, componentName?: string): ComponentSummary;
|
|
277
|
+
export declare function formatComponentSummary(summary: ComponentSummary): string;
|
|
202
278
|
export { listComponentFunctions };
|
|
203
279
|
//# sourceMappingURL=debug.d.ts.map
|
package/dist/debug.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -169,8 +169,8 @@ export { parseExpression, isSupported, exprToString, stringifyParsedExpr, identi
|
|
|
169
169
|
export type { ParsedExpr, ParsedStatement, SortComparator, SupportLevel, SupportResult, TemplatePart } from './expression-parser';
|
|
170
170
|
export { buildLoopChainExpr } from './loop-chain';
|
|
171
171
|
export type { LoopChainInputs } from './loop-chain';
|
|
172
|
-
export { buildComponentGraph, buildComponentAnalysis, buildGraphFromIR, buildEventSummary, buildLoopSummary, traceUpdatePath, formatComponentGraph, formatUpdatePath, formatEventSummary, formatLoopSummary, formatSignalTrace, generateStaticTrace, graphToJSON, } from './debug';
|
|
173
|
-
export type { ComponentGraph, ComponentAnalysis, SignalNode, MemoNode, EffectNode, DomBinding, UpdatePath, SignalTrace, EventBinding, SetterRef, EventSummary, LoopInfo, LoopChildBinding, LoopSummary } from './debug';
|
|
172
|
+
export { buildComponentGraph, buildComponentAnalysis, buildGraphFromIR, buildEventSummary, buildLoopSummary, buildWhyUpdate, traceUpdatePath, formatComponentGraph, formatUpdatePath, formatEventSummary, formatLoopSummary, formatWhyUpdate, describeFallback, formatFallbackExplanations, buildComponentSummary, formatComponentSummary, formatSignalTrace, generateStaticTrace, graphToJSON, resolveSetters, buildLocalFunctionSetterMap, makeIdCallRegex, } from './debug';
|
|
173
|
+
export type { ComponentGraph, ComponentAnalysis, SignalNode, MemoNode, EffectNode, DomBinding, UpdatePath, SignalTrace, EventBinding, SetterRef, FnSetterResolution, EventSummary, LoopInfo, LoopChildBinding, LoopSummary, WhyUpdateResult, WhyUpdateDep, WhyUpdateSource, FallbackExplanation, ComponentSummary } from './debug';
|
|
174
174
|
export type { WrapReason } from './ir-to-client-js/reactivity';
|
|
175
175
|
export { BOOLEAN_ATTRS, isBooleanAttr } from './html-constants';
|
|
176
176
|
export type { TargetedEvent, TargetedInputEvent, TargetedFocusEvent, TargetedKeyboardEvent, TargetedMouseEvent, InputEventHandler, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, ChangeEventHandler, BaseEventAttributes, HTMLBaseAttributes, HTMLAttributeFormEnctype, HTMLAttributeFormMethod, HTMLAttributeAnchorTarget, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes, FormHTMLAttributes, AnchorHTMLAttributes, ImgHTMLAttributes, LabelHTMLAttributes, OptionHTMLAttributes, } from './html-types';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACtD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAGtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,YAAY,EACV,WAAW,EACX,MAAM,EACN,SAAS,EACT,MAAM,EACN,YAAY,EACZ,aAAa,EACb,MAAM,EACN,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,cAAc,EACd,MAAM,EACN,SAAS,EACT,QAAQ,EACR,cAAc,EACd,aAAa,GACd,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,sBAAsB,IAAI,sBAAsB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AAC3O,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAGpF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGxH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EACV,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAChI,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAGrE,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACvG,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGvD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACvF,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAG/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAGhE,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAA;IACd,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAA;IAC9G;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GACpB,IAAI,GACJ;IAAE,KAAK,CAAC,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACvD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAEtC;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,qCAAqC;IACrC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,uEAAuE;IACvE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC3D;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACxC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,WAAW,EAAE,CAAA;IAC7B;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC/B;AAGD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG1D,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAGlF,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC1J,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACjI,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAGnD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,2BAA2B,EAC3B,eAAe,GAChB,MAAM,SAAS,CAAA;AAChB,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAClU,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAG9D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAG/D,YAAY,EAEV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAGlB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAGlB,mBAAmB,EACnB,kBAAkB,EAGlB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EAGzB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1652,6 +1652,9 @@ function irToComponentTemplateWithOpts(node, opts) {
|
|
|
1652
1652
|
}
|
|
1653
1653
|
return `\${${transformExpr(node.expr, node.templateExpr)}}`;
|
|
1654
1654
|
case "conditional": {
|
|
1655
|
+
if (node.clientOnly && node.slotId) {
|
|
1656
|
+
return `<!--bf-cond-start:${node.slotId}--><!--bf-cond-end:${node.slotId}-->`;
|
|
1657
|
+
}
|
|
1655
1658
|
const trueBranch = recurse(node.whenTrue);
|
|
1656
1659
|
const falseBranch = recurse(node.whenFalse);
|
|
1657
1660
|
const trueHtml = node.slotId ? addCondAttrToTemplate(trueBranch, node.slotId) : trueBranch;
|
|
@@ -1882,6 +1885,9 @@ function generateCsrTemplateWithOpts(node, opts) {
|
|
|
1882
1885
|
return `\${${expr}}`;
|
|
1883
1886
|
}
|
|
1884
1887
|
case "conditional": {
|
|
1888
|
+
if (node.clientOnly && node.slotId) {
|
|
1889
|
+
return `<!--bf-cond-start:${node.slotId}--><!--bf-cond-end:${node.slotId}-->`;
|
|
1890
|
+
}
|
|
1885
1891
|
const trueBranch = recurse(node.whenTrue);
|
|
1886
1892
|
const falseBranch = recurse(node.whenFalse);
|
|
1887
1893
|
const trueHtml = node.slotId ? addCondAttrToTemplate(trueBranch, node.slotId) : trueBranch;
|
|
@@ -7274,7 +7280,7 @@ function transformExpressionInner(expr, ctx, node, isClientOnly) {
|
|
|
7274
7280
|
}
|
|
7275
7281
|
const ir = transformJsxExpression(expr, ctx, isClientOnly);
|
|
7276
7282
|
if (ir !== null) {
|
|
7277
|
-
if (isClientOnly && ir.type === "conditional") {
|
|
7283
|
+
if ((isClientOnly || shouldAutoDeferReactiveBrand(expr, ctx)) && ir.type === "conditional") {
|
|
7278
7284
|
ir.clientOnly = true;
|
|
7279
7285
|
if (!ir.slotId) {
|
|
7280
7286
|
ir.slotId = generateSlotId(ctx);
|
|
@@ -8625,7 +8631,7 @@ function processAttributes(attributes, ctx) {
|
|
|
8625
8631
|
value = { ...value, templateExpr: rewritten };
|
|
8626
8632
|
}
|
|
8627
8633
|
}
|
|
8628
|
-
if (hasLeadingClientDirective(attr.initializer.expression, ctx.sourceFile)) {
|
|
8634
|
+
if (hasLeadingClientDirective(attr.initializer.expression, ctx.sourceFile) || shouldAutoDeferReactiveBrand(attr.initializer.expression, ctx)) {
|
|
8629
8635
|
clientOnly = true;
|
|
8630
8636
|
}
|
|
8631
8637
|
}
|
|
@@ -9029,6 +9035,16 @@ function isReactiveExpression(expr, ctx, astNode) {
|
|
|
9029
9035
|
}
|
|
9030
9036
|
return false;
|
|
9031
9037
|
}
|
|
9038
|
+
function shouldAutoDeferReactiveBrand(expr, ctx) {
|
|
9039
|
+
const checker = ctx.analyzer.checker;
|
|
9040
|
+
if (!checker)
|
|
9041
|
+
return false;
|
|
9042
|
+
if (!containsReactiveExpression(expr, checker))
|
|
9043
|
+
return false;
|
|
9044
|
+
if (isSignalOrMemoReference(ctx.getJS(expr), ctx))
|
|
9045
|
+
return false;
|
|
9046
|
+
return true;
|
|
9047
|
+
}
|
|
9032
9048
|
function isSignalOrMemoReference(expr, ctx, visited) {
|
|
9033
9049
|
for (const { pattern } of ctx.patterns.signals) {
|
|
9034
9050
|
if (pattern.test(expr))
|
|
@@ -17205,15 +17221,57 @@ function makeIdRefRegex(name) {
|
|
|
17205
17221
|
}
|
|
17206
17222
|
function buildLocalFunctionSetterMap(meta, setterToSignal) {
|
|
17207
17223
|
const setterPatterns = [...setterToSignal.keys()].map((s) => ({ name: s, re: makeIdCallRegex(s) }));
|
|
17208
|
-
const
|
|
17209
|
-
for (const fn of meta.localFunctions)
|
|
17224
|
+
const bodies = new Map;
|
|
17225
|
+
for (const fn of meta.localFunctions)
|
|
17226
|
+
bodies.set(fn.name, fn.body);
|
|
17227
|
+
for (const c of meta.localConstants) {
|
|
17228
|
+
if (c.containsArrow && c.value)
|
|
17229
|
+
bodies.set(c.name, c.value);
|
|
17230
|
+
}
|
|
17231
|
+
const fnNamePatterns = [...bodies.keys()].map((n) => ({ name: n, re: makeIdCallRegex(n) }));
|
|
17232
|
+
const directSetters = new Map;
|
|
17233
|
+
const directCalls = new Map;
|
|
17234
|
+
for (const [name, body] of bodies) {
|
|
17210
17235
|
const setters = [];
|
|
17211
|
-
for (const { name, re } of setterPatterns) {
|
|
17212
|
-
if (re.test(
|
|
17213
|
-
setters.push(
|
|
17236
|
+
for (const { name: setter, re } of setterPatterns) {
|
|
17237
|
+
if (re.test(body))
|
|
17238
|
+
setters.push(setter);
|
|
17239
|
+
}
|
|
17240
|
+
directSetters.set(name, setters);
|
|
17241
|
+
const calls = [];
|
|
17242
|
+
for (const { name: callee, re } of fnNamePatterns) {
|
|
17243
|
+
if (callee !== name && re.test(body))
|
|
17244
|
+
calls.push(callee);
|
|
17245
|
+
}
|
|
17246
|
+
directCalls.set(name, calls);
|
|
17247
|
+
}
|
|
17248
|
+
const resolve2 = (name, stack) => {
|
|
17249
|
+
const out = [];
|
|
17250
|
+
const seen = new Set;
|
|
17251
|
+
for (const setter of directSetters.get(name) ?? []) {
|
|
17252
|
+
if (!seen.has(setter)) {
|
|
17253
|
+
out.push({ setter, chain: [] });
|
|
17254
|
+
seen.add(setter);
|
|
17255
|
+
}
|
|
17214
17256
|
}
|
|
17215
|
-
|
|
17216
|
-
|
|
17257
|
+
for (const callee of directCalls.get(name) ?? []) {
|
|
17258
|
+
if (stack.has(callee))
|
|
17259
|
+
continue;
|
|
17260
|
+
const sub = resolve2(callee, new Set([...stack, callee]));
|
|
17261
|
+
for (const r of sub) {
|
|
17262
|
+
if (!seen.has(r.setter)) {
|
|
17263
|
+
out.push({ setter: r.setter, chain: [callee, ...r.chain] });
|
|
17264
|
+
seen.add(r.setter);
|
|
17265
|
+
}
|
|
17266
|
+
}
|
|
17267
|
+
}
|
|
17268
|
+
return out;
|
|
17269
|
+
};
|
|
17270
|
+
const result = new Map;
|
|
17271
|
+
for (const name of bodies.keys()) {
|
|
17272
|
+
const resolved = resolve2(name, new Set([name]));
|
|
17273
|
+
if (resolved.length > 0)
|
|
17274
|
+
result.set(name, resolved);
|
|
17217
17275
|
}
|
|
17218
17276
|
return result;
|
|
17219
17277
|
}
|
|
@@ -17308,12 +17366,16 @@ function resolveSetters(handler, setterToSignal, fnSetters) {
|
|
|
17308
17366
|
}
|
|
17309
17367
|
}
|
|
17310
17368
|
}
|
|
17311
|
-
for (const [fnName,
|
|
17369
|
+
for (const [fnName, resolutions] of fnSetters) {
|
|
17312
17370
|
if (trimmed === fnName || makeIdCallRegex(fnName).test(handler)) {
|
|
17313
|
-
for (const
|
|
17314
|
-
if (!seen.has(setter)) {
|
|
17315
|
-
refs.push({
|
|
17316
|
-
|
|
17371
|
+
for (const r of resolutions) {
|
|
17372
|
+
if (!seen.has(r.setter)) {
|
|
17373
|
+
refs.push({
|
|
17374
|
+
setter: r.setter,
|
|
17375
|
+
signal: setterToSignal.get(r.setter) ?? null,
|
|
17376
|
+
via: [fnName, ...r.chain]
|
|
17377
|
+
});
|
|
17378
|
+
seen.add(r.setter);
|
|
17317
17379
|
}
|
|
17318
17380
|
}
|
|
17319
17381
|
}
|
|
@@ -17349,7 +17411,7 @@ function formatEventSummary(summary, graph) {
|
|
|
17349
17411
|
lines.push("");
|
|
17350
17412
|
lines.push(` ${event.elementContext}`);
|
|
17351
17413
|
const setterParts = event.setterCalls.map((s) => {
|
|
17352
|
-
const chain = s.via ? `${s.via} -> ${s.setter}` : s.setter;
|
|
17414
|
+
const chain = s.via && s.via.length > 0 ? `${s.via.join(" -> ")} -> ${s.setter}` : s.setter;
|
|
17353
17415
|
return chain;
|
|
17354
17416
|
});
|
|
17355
17417
|
const setterStr = setterParts.length > 0 ? setterParts.join(", ") : event.handler;
|
|
@@ -17641,6 +17703,100 @@ function buildUpdateEntry(consumer, graph, visited) {
|
|
|
17641
17703
|
}
|
|
17642
17704
|
return { name: consumer, kind: "effect", label: consumer, children: [] };
|
|
17643
17705
|
}
|
|
17706
|
+
function buildWhyUpdate(source, filePath, bindingLabel, componentName) {
|
|
17707
|
+
const { graph, ir } = buildComponentAnalysis(source, filePath, componentName);
|
|
17708
|
+
const matches = graph.domBindings.filter((d) => d.label === bindingLabel || d.slotId === bindingLabel);
|
|
17709
|
+
if (matches.length === 0)
|
|
17710
|
+
return null;
|
|
17711
|
+
if (matches.length > 1) {
|
|
17712
|
+
return {
|
|
17713
|
+
binding: bindingLabel,
|
|
17714
|
+
expression: null,
|
|
17715
|
+
deps: [],
|
|
17716
|
+
ambiguous: matches.map((d) => ({ label: d.label, slotId: d.slotId }))
|
|
17717
|
+
};
|
|
17718
|
+
}
|
|
17719
|
+
const binding = matches[0];
|
|
17720
|
+
const setterToSignal = new Map;
|
|
17721
|
+
for (const s of ir.metadata.signals) {
|
|
17722
|
+
if (s.setter)
|
|
17723
|
+
setterToSignal.set(s.setter, s.getter);
|
|
17724
|
+
}
|
|
17725
|
+
const fnSetters = buildLocalFunctionSetterMap(ir.metadata, setterToSignal);
|
|
17726
|
+
const events = collectEventBindings(ir.root, setterToSignal, fnSetters);
|
|
17727
|
+
const deps = [];
|
|
17728
|
+
const visited = new Set;
|
|
17729
|
+
function traceDep(name) {
|
|
17730
|
+
if (visited.has(name))
|
|
17731
|
+
return;
|
|
17732
|
+
visited.add(name);
|
|
17733
|
+
const signal = graph.signals.find((s) => s.name === name);
|
|
17734
|
+
if (signal) {
|
|
17735
|
+
const changedBy = [];
|
|
17736
|
+
for (const ev of events) {
|
|
17737
|
+
for (const sc of ev.setterCalls) {
|
|
17738
|
+
if (sc.signal === name) {
|
|
17739
|
+
changedBy.push({
|
|
17740
|
+
handler: ev.eventName,
|
|
17741
|
+
setter: sc.setter,
|
|
17742
|
+
elementContext: ev.elementContext,
|
|
17743
|
+
via: sc.via
|
|
17744
|
+
});
|
|
17745
|
+
}
|
|
17746
|
+
}
|
|
17747
|
+
}
|
|
17748
|
+
deps.push({ name, kind: "signal", dependsOn: [], changedBy });
|
|
17749
|
+
return;
|
|
17750
|
+
}
|
|
17751
|
+
const memo = graph.memos.find((m) => m.name === name);
|
|
17752
|
+
if (memo) {
|
|
17753
|
+
deps.push({ name, kind: "memo", dependsOn: memo.deps, changedBy: [] });
|
|
17754
|
+
for (const dep of memo.deps)
|
|
17755
|
+
traceDep(dep);
|
|
17756
|
+
}
|
|
17757
|
+
}
|
|
17758
|
+
for (const dep of binding.deps)
|
|
17759
|
+
traceDep(dep);
|
|
17760
|
+
const stableId = binding.type === "attribute" ? binding.label : binding.slotId;
|
|
17761
|
+
return {
|
|
17762
|
+
binding: stableId,
|
|
17763
|
+
expression: binding.expression ?? null,
|
|
17764
|
+
deps,
|
|
17765
|
+
...binding.classification === "fallback" && { classification: binding.classification },
|
|
17766
|
+
...binding.wrapReason && { wrapReason: binding.wrapReason }
|
|
17767
|
+
};
|
|
17768
|
+
}
|
|
17769
|
+
function formatWhyUpdate(result) {
|
|
17770
|
+
const lines = [];
|
|
17771
|
+
lines.push(`${result.binding} updates because:`);
|
|
17772
|
+
if (result.expression) {
|
|
17773
|
+
lines.push(` ${result.expression}`);
|
|
17774
|
+
}
|
|
17775
|
+
if (result.classification === "fallback") {
|
|
17776
|
+
lines.push("");
|
|
17777
|
+
lines.push(`note: this is a fallback-wrapped binding (${result.wrapReason ?? "unknown"})`);
|
|
17778
|
+
lines.push(" the compiler could not statically prove reactivity — deps are determined at runtime");
|
|
17779
|
+
}
|
|
17780
|
+
for (const dep of result.deps) {
|
|
17781
|
+
lines.push("");
|
|
17782
|
+
if (dep.kind === "memo") {
|
|
17783
|
+
lines.push(`${dep.name} depends on:`);
|
|
17784
|
+
for (const d of dep.dependsOn)
|
|
17785
|
+
lines.push(` ${d}`);
|
|
17786
|
+
} else {
|
|
17787
|
+
lines.push(`${dep.name} changes from:`);
|
|
17788
|
+
if (dep.changedBy.length === 0) {
|
|
17789
|
+
lines.push(" (no event handlers found)");
|
|
17790
|
+
}
|
|
17791
|
+
for (const src of dep.changedBy) {
|
|
17792
|
+
const chain = src.via && src.via.length > 0 ? `${src.elementContext} ${src.handler} -> ${src.via.join(" -> ")} -> ${src.setter}` : `${src.elementContext} ${src.handler} -> ${src.setter}`;
|
|
17793
|
+
lines.push(` ${chain}`);
|
|
17794
|
+
}
|
|
17795
|
+
}
|
|
17796
|
+
}
|
|
17797
|
+
return lines.join(`
|
|
17798
|
+
`);
|
|
17799
|
+
}
|
|
17644
17800
|
function formatComponentGraph(graph) {
|
|
17645
17801
|
const lines = [];
|
|
17646
17802
|
lines.push(`${graph.componentName} (${graph.sourceFile})`);
|
|
@@ -17816,6 +17972,157 @@ function formatSignalTrace(traces) {
|
|
|
17816
17972
|
}).join(`
|
|
17817
17973
|
`);
|
|
17818
17974
|
}
|
|
17975
|
+
function describeFallback(binding) {
|
|
17976
|
+
const isEventHandler = binding.type === "event" || binding.type === "attribute" && /^on[A-Z]/.test(binding.label.split(".").pop() ?? "");
|
|
17977
|
+
const reason = describeFallbackReason(binding.wrapReason, binding.type, isEventHandler);
|
|
17978
|
+
const runtimeDeps = binding.deps.length > 0 ? binding.deps.join(", ") : isEventHandler ? "likely none (event handler captures values, does not track reactively)" : "unknown — subscribes to whatever signals it reads at runtime";
|
|
17979
|
+
const suggestion = isEventHandler ? "event handlers intentionally capture scope values; this fallback is typically safe to ignore" : binding.wrapReason === "fallback-function-calls" ? "inline the reactive source or wrap the result in createMemo so the compiler can prove the dependency" : binding.wrapReason === "fallback-getter-calls" ? "the call looks like a signal getter but is not a known signal; verify the function is pure or extract as createMemo" : "rewrite to use a known signal/memo reference so the compiler can statically prove reactivity";
|
|
17980
|
+
return {
|
|
17981
|
+
label: binding.label,
|
|
17982
|
+
expression: binding.expression ?? "(expression not captured)",
|
|
17983
|
+
reason,
|
|
17984
|
+
runtimeDeps,
|
|
17985
|
+
suggestion,
|
|
17986
|
+
loc: binding.loc ? { file: binding.loc.file, line: binding.loc.start.line } : undefined,
|
|
17987
|
+
isEventHandler
|
|
17988
|
+
};
|
|
17989
|
+
}
|
|
17990
|
+
function describeFallbackReason(wrapReason, bindingType, isEventHandler) {
|
|
17991
|
+
const context = bindingType === "attribute" ? "an attribute expression" : bindingType === "text" ? "a text interpolation" : bindingType === "conditional" ? "a conditional expression" : bindingType === "loop" ? "a loop array expression" : "an expression";
|
|
17992
|
+
switch (wrapReason) {
|
|
17993
|
+
case "fallback-function-calls":
|
|
17994
|
+
return isEventHandler ? `function call in ${context} (event handler prop)` : `opaque function call in ${context} — the compiler cannot prove it is reactive or pure`;
|
|
17995
|
+
case "fallback-getter-calls":
|
|
17996
|
+
return `call pattern resembles a signal getter in ${context}, but is not a recognized signal`;
|
|
17997
|
+
case "string-reactive":
|
|
17998
|
+
return `string-level match found a signal/memo name in ${context}`;
|
|
17999
|
+
case "props-access":
|
|
18000
|
+
return `props.xxx reference in ${context} — reactive via prop forwarding`;
|
|
18001
|
+
case "proven-reactive":
|
|
18002
|
+
return `statically proven reactive in ${context}`;
|
|
18003
|
+
default:
|
|
18004
|
+
return `unknown fallback trigger in ${context}`;
|
|
18005
|
+
}
|
|
18006
|
+
}
|
|
18007
|
+
function formatFallbackExplanations(componentName, fallbacks) {
|
|
18008
|
+
const lines = [];
|
|
18009
|
+
if (fallbacks.length === 0) {
|
|
18010
|
+
lines.push(`${componentName} — no fallback-wrapped expressions.`);
|
|
18011
|
+
return lines.join(`
|
|
18012
|
+
`);
|
|
18013
|
+
}
|
|
18014
|
+
lines.push(`${componentName} — ${fallbacks.length} fallback-wrapped expression(s)`);
|
|
18015
|
+
for (const f of fallbacks) {
|
|
18016
|
+
const ex = describeFallback(f);
|
|
18017
|
+
lines.push("");
|
|
18018
|
+
if (ex.loc) {
|
|
18019
|
+
const locFile = ex.loc.file.split("/").pop() ?? ex.loc.file;
|
|
18020
|
+
lines.push(` ${locFile}:${ex.loc.line}`);
|
|
18021
|
+
}
|
|
18022
|
+
lines.push(` ${ex.label} fallback:`);
|
|
18023
|
+
lines.push(` expression: ${ex.expression}`);
|
|
18024
|
+
lines.push(` reason: ${ex.reason}`);
|
|
18025
|
+
lines.push(` runtime deps: ${ex.runtimeDeps}`);
|
|
18026
|
+
lines.push(` suggestion: ${ex.suggestion}`);
|
|
18027
|
+
}
|
|
18028
|
+
return lines.join(`
|
|
18029
|
+
`);
|
|
18030
|
+
}
|
|
18031
|
+
function buildComponentSummary(source, filePath, componentName) {
|
|
18032
|
+
const { graph, ir } = buildComponentAnalysis(source, filePath, componentName);
|
|
18033
|
+
const meta = ir.metadata;
|
|
18034
|
+
const clientNeeds = analyzeClientNeeds(ir);
|
|
18035
|
+
const hasReactiveState = meta.signals.length > 0 || meta.memos.length > 0 || meta.effects.length > 0;
|
|
18036
|
+
const needsClient = clientNeeds.needsInit && hasReactiveState;
|
|
18037
|
+
let loopCount = 0;
|
|
18038
|
+
countNodeType(ir.root, "loop", () => {
|
|
18039
|
+
loopCount++;
|
|
18040
|
+
});
|
|
18041
|
+
let conditionalCount = 0;
|
|
18042
|
+
countNodeType(ir.root, "conditional", () => {
|
|
18043
|
+
conditionalCount++;
|
|
18044
|
+
});
|
|
18045
|
+
const eventHandlers = graph.domBindings.filter((d) => d.type === "event").length;
|
|
18046
|
+
const textBindings = graph.domBindings.filter((d) => d.type === "text").length;
|
|
18047
|
+
const attrBindings = graph.domBindings.filter((d) => d.type === "attribute").length;
|
|
18048
|
+
const fallbacks = graph.domBindings.filter((d) => d.classification === "fallback").length;
|
|
18049
|
+
let clientBundle = null;
|
|
18050
|
+
if (needsClient) {
|
|
18051
|
+
const base = filePath.replace(/\.[^.]+$/, "").split("/").pop() ?? meta.componentName;
|
|
18052
|
+
clientBundle = `${base}.client.js`;
|
|
18053
|
+
}
|
|
18054
|
+
return {
|
|
18055
|
+
componentName: graph.componentName,
|
|
18056
|
+
sourceFile: graph.sourceFile,
|
|
18057
|
+
hydrated: needsClient,
|
|
18058
|
+
clientBundle,
|
|
18059
|
+
signals: graph.signals.length,
|
|
18060
|
+
memos: graph.memos.length,
|
|
18061
|
+
effects: graph.effects.length,
|
|
18062
|
+
loops: loopCount,
|
|
18063
|
+
eventHandlers,
|
|
18064
|
+
dynamicTextBindings: textBindings,
|
|
18065
|
+
dynamicAttributes: attrBindings,
|
|
18066
|
+
conditionals: conditionalCount,
|
|
18067
|
+
fallbacks
|
|
18068
|
+
};
|
|
18069
|
+
}
|
|
18070
|
+
function countNodeType(node, targetType, cb) {
|
|
18071
|
+
if (node.type === targetType)
|
|
18072
|
+
cb();
|
|
18073
|
+
switch (node.type) {
|
|
18074
|
+
case "element":
|
|
18075
|
+
case "fragment":
|
|
18076
|
+
case "provider":
|
|
18077
|
+
for (const child of node.children)
|
|
18078
|
+
countNodeType(child, targetType, cb);
|
|
18079
|
+
break;
|
|
18080
|
+
case "component":
|
|
18081
|
+
for (const child of node.children)
|
|
18082
|
+
countNodeType(child, targetType, cb);
|
|
18083
|
+
break;
|
|
18084
|
+
case "conditional":
|
|
18085
|
+
countNodeType(node.whenTrue, targetType, cb);
|
|
18086
|
+
countNodeType(node.whenFalse, targetType, cb);
|
|
18087
|
+
break;
|
|
18088
|
+
case "loop":
|
|
18089
|
+
for (const child of node.children)
|
|
18090
|
+
countNodeType(child, targetType, cb);
|
|
18091
|
+
break;
|
|
18092
|
+
case "if-statement":
|
|
18093
|
+
countNodeType(node.consequent, targetType, cb);
|
|
18094
|
+
if (node.alternate)
|
|
18095
|
+
countNodeType(node.alternate, targetType, cb);
|
|
18096
|
+
break;
|
|
18097
|
+
case "async":
|
|
18098
|
+
countNodeType(node.fallback, targetType, cb);
|
|
18099
|
+
for (const child of node.children)
|
|
18100
|
+
countNodeType(child, targetType, cb);
|
|
18101
|
+
break;
|
|
18102
|
+
}
|
|
18103
|
+
}
|
|
18104
|
+
function formatComponentSummary(summary) {
|
|
18105
|
+
const lines = [];
|
|
18106
|
+
lines.push(summary.componentName);
|
|
18107
|
+
lines.push(` hydrated: ${summary.hydrated ? "yes" : "no"}`);
|
|
18108
|
+
if (summary.clientBundle) {
|
|
18109
|
+
lines.push(` client bundle: ${summary.clientBundle}`);
|
|
18110
|
+
}
|
|
18111
|
+
lines.push(` signals: ${summary.signals}`);
|
|
18112
|
+
lines.push(` memos: ${summary.memos}`);
|
|
18113
|
+
if (summary.effects > 0)
|
|
18114
|
+
lines.push(` effects: ${summary.effects}`);
|
|
18115
|
+
lines.push(` loops: ${summary.loops}`);
|
|
18116
|
+
lines.push(` event handlers: ${summary.eventHandlers}`);
|
|
18117
|
+
lines.push(` dynamic text bindings: ${summary.dynamicTextBindings}`);
|
|
18118
|
+
lines.push(` dynamic attributes: ${summary.dynamicAttributes}`);
|
|
18119
|
+
if (summary.conditionals > 0)
|
|
18120
|
+
lines.push(` conditionals: ${summary.conditionals}`);
|
|
18121
|
+
if (summary.fallbacks > 0)
|
|
18122
|
+
lines.push(` fallbacks: ${summary.fallbacks}`);
|
|
18123
|
+
return lines.join(`
|
|
18124
|
+
`);
|
|
18125
|
+
}
|
|
17819
18126
|
function inferWrapReasonForAttrLike(hasStringReactive, hasPropsRef, flags) {
|
|
17820
18127
|
if (hasPropsRef)
|
|
17821
18128
|
return "props-access";
|
|
@@ -18056,10 +18363,12 @@ export {
|
|
|
18056
18363
|
traceUpdatePath,
|
|
18057
18364
|
stringifyParsedExpr,
|
|
18058
18365
|
rewriteImportsForTemplate,
|
|
18366
|
+
resolveSetters,
|
|
18059
18367
|
resetCompilerCounters,
|
|
18060
18368
|
parseExpression,
|
|
18061
18369
|
parseBlockBody,
|
|
18062
18370
|
needsTypeBasedDetection,
|
|
18371
|
+
makeIdCallRegex,
|
|
18063
18372
|
listComponentFunctions as listExportedComponents,
|
|
18064
18373
|
listComponentFunctions,
|
|
18065
18374
|
jsxToIR,
|
|
@@ -18073,12 +18382,15 @@ export {
|
|
|
18073
18382
|
generateCodeFrame,
|
|
18074
18383
|
generateClientJsWithSourceMap,
|
|
18075
18384
|
generateClientJs,
|
|
18385
|
+
formatWhyUpdate,
|
|
18076
18386
|
formatUpdatePath,
|
|
18077
18387
|
formatSignalTrace,
|
|
18078
18388
|
formatParamWithType,
|
|
18079
18389
|
formatLoopSummary,
|
|
18390
|
+
formatFallbackExplanations,
|
|
18080
18391
|
formatEventSummary,
|
|
18081
18392
|
formatError,
|
|
18393
|
+
formatComponentSummary,
|
|
18082
18394
|
formatComponentGraph,
|
|
18083
18395
|
findReachableNames,
|
|
18084
18396
|
extractSsrDefaults,
|
|
@@ -18089,18 +18401,22 @@ export {
|
|
|
18089
18401
|
emitIRNode,
|
|
18090
18402
|
emitAttrValue,
|
|
18091
18403
|
disableCompilerInstrumentation,
|
|
18404
|
+
describeFallback,
|
|
18092
18405
|
createProgramForFile,
|
|
18093
18406
|
createProgramForCorpus,
|
|
18094
18407
|
createError,
|
|
18095
18408
|
containsHigherOrder,
|
|
18096
18409
|
compileJSX,
|
|
18097
18410
|
combineParentChildClientJs,
|
|
18411
|
+
buildWhyUpdate,
|
|
18098
18412
|
buildSourceMapFromIR,
|
|
18099
18413
|
buildMetadata,
|
|
18100
18414
|
buildLoopSummary,
|
|
18101
18415
|
buildLoopChainExpr,
|
|
18416
|
+
buildLocalFunctionSetterMap,
|
|
18102
18417
|
buildGraphFromIR,
|
|
18103
18418
|
buildEventSummary,
|
|
18419
|
+
buildComponentSummary,
|
|
18104
18420
|
buildComponentGraph,
|
|
18105
18421
|
buildComponentAnalysis,
|
|
18106
18422
|
applyCssLayerPrefix,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-template.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/html-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,EAAE,MAAM,UAAU,CAAA;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG5C,OAAO,EAAwD,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI;IACvC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9B,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAC/B,CAaA;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBnE;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,IAAI;IACpD,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9B,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAC/B,CAeA;AA+LD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,gBAAgB,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,KAAK,OAAO,CAAA;IACxE,+EAA+E;IAC/E,eAAe,EAAE,OAAO,CAAA;CACzB;AAiFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,SAAI,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,UAAQ,EAAE,iBAAiB,UAAQ,GAAG,MAAM,CAqM/N;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,SAAI,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,MAAM,CAoG9J;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAM7D;AA0ED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAM1E;AAeD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B;;;;;;;;;;;;OAYG;IACH,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAC9B,MAAM,CAER;
|
|
1
|
+
{"version":3,"file":"html-template.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/html-template.ts"],"names":[],"mappings":"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"}
|