marko 6.0.98 → 6.0.99
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/common/helpers.d.ts +1 -0
- package/dist/debug/dom.js +20 -41
- package/dist/debug/dom.mjs +20 -41
- package/dist/dom/renderer.d.ts +1 -1
- package/dist/dom/signals.d.ts +9 -9
- package/dist/dom.d.ts +1 -0
- package/dist/dom.js +21 -36
- package/dist/dom.mjs +21 -36
- package/dist/translator/index.js +180 -238
- package/dist/translator/util/get-root.d.ts +1 -0
- package/package.json +1 -1
package/dist/common/helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function _call<T>(fn: (v: T) => unknown, v: T): T;
|
|
1
2
|
export declare function classValue(classValue: unknown): string;
|
|
2
3
|
export declare function styleValue(styleValue: unknown): string;
|
|
3
4
|
export declare function isEventHandler(name: string): name is `on${string}`;
|
package/dist/debug/dom.js
CHANGED
|
@@ -51,6 +51,7 @@ __export(dom_exports, {
|
|
|
51
51
|
_attrs_partial_content: () => _attrs_partial_content,
|
|
52
52
|
_attrs_script: () => _attrs_script,
|
|
53
53
|
_await: () => _await,
|
|
54
|
+
_call: () => _call,
|
|
54
55
|
_child_setup: () => _child_setup,
|
|
55
56
|
_closure: () => _closure,
|
|
56
57
|
_closure_get: () => _closure_get,
|
|
@@ -177,6 +178,10 @@ function forUntil(until, from, step, cb) {
|
|
|
177
178
|
}
|
|
178
179
|
|
|
179
180
|
// src/common/helpers.ts
|
|
181
|
+
function _call(fn, v) {
|
|
182
|
+
fn(v);
|
|
183
|
+
return v;
|
|
184
|
+
}
|
|
180
185
|
function classValue(classValue2) {
|
|
181
186
|
return toDelimitedString(classValue2, " ", stringifyClassObject);
|
|
182
187
|
}
|
|
@@ -569,8 +574,7 @@ function init(runtimeId = DEFAULT_RUNTIME_ID) {
|
|
|
569
574
|
registeredValues[lastEffect](
|
|
570
575
|
scopeLookup[serialized] ||= {
|
|
571
576
|
___id: scopeId
|
|
572
|
-
}
|
|
573
|
-
scopeLookup[serialized]
|
|
577
|
+
}
|
|
574
578
|
);
|
|
575
579
|
} else {
|
|
576
580
|
for (const scope of serialized(serializeContext)) {
|
|
@@ -972,28 +976,17 @@ function _let(valueAccessor, fn) {
|
|
|
972
976
|
);
|
|
973
977
|
}
|
|
974
978
|
const valueChangeAccessor = "TagVariableChange:" /* TagVariableChange */ + valueAccessor;
|
|
975
|
-
const update = (scope, value) => {
|
|
976
|
-
if (scope[valueAccessor] !== value) {
|
|
977
|
-
scope[valueAccessor] = value;
|
|
978
|
-
fn && fn(scope, value);
|
|
979
|
-
}
|
|
980
|
-
};
|
|
981
979
|
return (scope, value, valueChange) => {
|
|
982
980
|
if (rendering) {
|
|
983
981
|
if ((scope[valueChangeAccessor] = valueChange) && scope[valueAccessor] !== value || scope.___creating) {
|
|
984
982
|
scope[valueAccessor] = value;
|
|
985
|
-
fn && fn(scope
|
|
983
|
+
fn && fn(scope);
|
|
986
984
|
}
|
|
987
985
|
} else if (scope[valueChangeAccessor]) {
|
|
988
986
|
scope[valueChangeAccessor](value);
|
|
989
|
-
} else {
|
|
987
|
+
} else if (scope[valueAccessor] !== (scope[valueAccessor] = value) && fn) {
|
|
990
988
|
schedule();
|
|
991
|
-
queueRender(
|
|
992
|
-
scope,
|
|
993
|
-
update,
|
|
994
|
-
true ? id : valueAccessor,
|
|
995
|
-
value
|
|
996
|
-
);
|
|
989
|
+
queueRender(scope, fn, true ? id : valueAccessor);
|
|
997
990
|
}
|
|
998
991
|
return value;
|
|
999
992
|
};
|
|
@@ -1003,7 +996,7 @@ function _const(valueAccessor, fn = () => {
|
|
|
1003
996
|
return (scope, value) => {
|
|
1004
997
|
if (!(valueAccessor in scope) || scope[valueAccessor] !== value) {
|
|
1005
998
|
scope[valueAccessor] = value;
|
|
1006
|
-
fn(scope
|
|
999
|
+
fn(scope);
|
|
1007
1000
|
}
|
|
1008
1001
|
};
|
|
1009
1002
|
}
|
|
@@ -1020,8 +1013,7 @@ function _or(id, fn, defaultPending = 1, scopeIdAccessor = /* @__KEY__ */ "___id
|
|
|
1020
1013
|
}
|
|
1021
1014
|
};
|
|
1022
1015
|
}
|
|
1023
|
-
function _for_closure(
|
|
1024
|
-
const childSignal = closure(valueAccessor, fn);
|
|
1016
|
+
function _for_closure(ownerLoopNodeAccessor, fn) {
|
|
1025
1017
|
const loopScopeAccessor = "LoopScopeArray:" /* LoopScopeArray */ + ownerLoopNodeAccessor;
|
|
1026
1018
|
const loopScopeMapAccessor = "LoopScopeMap:" /* LoopScopeMap */ + ownerLoopNodeAccessor;
|
|
1027
1019
|
const ownerSignal = (ownerScope) => {
|
|
@@ -1033,7 +1025,7 @@ function _for_closure(valueAccessor, ownerLoopNodeAccessor, fn) {
|
|
|
1033
1025
|
() => {
|
|
1034
1026
|
for (const scope of scopes) {
|
|
1035
1027
|
if (!scope.___creating && !scope.___destroyed) {
|
|
1036
|
-
|
|
1028
|
+
fn(scope);
|
|
1037
1029
|
}
|
|
1038
1030
|
}
|
|
1039
1031
|
},
|
|
@@ -1043,20 +1035,19 @@ function _for_closure(valueAccessor, ownerLoopNodeAccessor, fn) {
|
|
|
1043
1035
|
);
|
|
1044
1036
|
}
|
|
1045
1037
|
};
|
|
1046
|
-
ownerSignal._ =
|
|
1038
|
+
ownerSignal._ = fn;
|
|
1047
1039
|
return ownerSignal;
|
|
1048
1040
|
}
|
|
1049
|
-
function _if_closure(
|
|
1050
|
-
const childSignal = closure(valueAccessor, fn);
|
|
1041
|
+
function _if_closure(ownerConditionalNodeAccessor, branch, fn) {
|
|
1051
1042
|
const scopeAccessor = "ConditionalScope:" /* ConditionalScope */ + ownerConditionalNodeAccessor;
|
|
1052
1043
|
const branchAccessor = "ConditionalRenderer:" /* ConditionalRenderer */ + ownerConditionalNodeAccessor;
|
|
1053
1044
|
const ownerSignal = (scope) => {
|
|
1054
1045
|
const ifScope = scope[scopeAccessor];
|
|
1055
1046
|
if (ifScope && !ifScope.___creating && (scope[branchAccessor] || 0) === branch) {
|
|
1056
|
-
queueRender(ifScope,
|
|
1047
|
+
queueRender(ifScope, fn, -1);
|
|
1057
1048
|
}
|
|
1058
1049
|
};
|
|
1059
|
-
ownerSignal._ =
|
|
1050
|
+
ownerSignal._ = fn;
|
|
1060
1051
|
return ownerSignal;
|
|
1061
1052
|
}
|
|
1062
1053
|
function subscribeToScopeSet(ownerScope, accessor, scope) {
|
|
@@ -1089,10 +1080,9 @@ function _closure(...closureSignals) {
|
|
|
1089
1080
|
};
|
|
1090
1081
|
}
|
|
1091
1082
|
function _closure_get(valueAccessor, fn, getOwnerScope) {
|
|
1092
|
-
const childSignal = closure(valueAccessor, fn, getOwnerScope);
|
|
1093
1083
|
const closureSignal = ((scope) => {
|
|
1094
1084
|
scope[closureSignal.___signalIndexAccessor] = closureSignal.___index;
|
|
1095
|
-
|
|
1085
|
+
fn(scope);
|
|
1096
1086
|
subscribeToScopeSet(
|
|
1097
1087
|
getOwnerScope ? getOwnerScope(scope) : scope["_" /* Owner */],
|
|
1098
1088
|
closureSignal.___scopeInstancesAccessor,
|
|
@@ -1103,14 +1093,6 @@ function _closure_get(valueAccessor, fn, getOwnerScope) {
|
|
|
1103
1093
|
closureSignal.___signalIndexAccessor = "ClosureSignalIndex:" /* ClosureSignalIndex */ + valueAccessor;
|
|
1104
1094
|
return closureSignal;
|
|
1105
1095
|
}
|
|
1106
|
-
function closure(valueAccessor, fn, getOwnerScope) {
|
|
1107
|
-
return (scope) => {
|
|
1108
|
-
fn(
|
|
1109
|
-
scope,
|
|
1110
|
-
(getOwnerScope ? getOwnerScope(scope) : scope["_" /* Owner */])[valueAccessor]
|
|
1111
|
-
);
|
|
1112
|
-
};
|
|
1113
|
-
}
|
|
1114
1096
|
function _child_setup(setup) {
|
|
1115
1097
|
setup._ = (scope, owner) => {
|
|
1116
1098
|
scope["_" /* Owner */] = owner;
|
|
@@ -2164,11 +2146,8 @@ function prepareEffects(fn) {
|
|
|
2164
2146
|
return preparedEffects;
|
|
2165
2147
|
}
|
|
2166
2148
|
var runEffects = ((effects) => {
|
|
2167
|
-
for (let i = 0
|
|
2168
|
-
effects[i++](
|
|
2169
|
-
scope = effects[i++],
|
|
2170
|
-
scope
|
|
2171
|
-
);
|
|
2149
|
+
for (let i = 0; i < effects.length; ) {
|
|
2150
|
+
effects[i++](effects[i++]);
|
|
2172
2151
|
}
|
|
2173
2152
|
});
|
|
2174
2153
|
function runRenders() {
|
|
@@ -2227,7 +2206,7 @@ var _enable_catch = () => {
|
|
|
2227
2206
|
scope = effects[i++];
|
|
2228
2207
|
branch = scope.___closestBranch;
|
|
2229
2208
|
if (!branch?.___destroyed && !(checkPending && handlePendingTry(fn, scope, branch))) {
|
|
2230
|
-
fn(scope
|
|
2209
|
+
fn(scope);
|
|
2231
2210
|
}
|
|
2232
2211
|
}
|
|
2233
2212
|
} else {
|
package/dist/debug/dom.mjs
CHANGED
|
@@ -75,6 +75,10 @@ function forUntil(until, from, step, cb) {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
// src/common/helpers.ts
|
|
78
|
+
function _call(fn, v) {
|
|
79
|
+
fn(v);
|
|
80
|
+
return v;
|
|
81
|
+
}
|
|
78
82
|
function classValue(classValue2) {
|
|
79
83
|
return toDelimitedString(classValue2, " ", stringifyClassObject);
|
|
80
84
|
}
|
|
@@ -467,8 +471,7 @@ function init(runtimeId = DEFAULT_RUNTIME_ID) {
|
|
|
467
471
|
registeredValues[lastEffect](
|
|
468
472
|
scopeLookup[serialized] ||= {
|
|
469
473
|
___id: scopeId
|
|
470
|
-
}
|
|
471
|
-
scopeLookup[serialized]
|
|
474
|
+
}
|
|
472
475
|
);
|
|
473
476
|
} else {
|
|
474
477
|
for (const scope of serialized(serializeContext)) {
|
|
@@ -870,28 +873,17 @@ function _let(valueAccessor, fn) {
|
|
|
870
873
|
);
|
|
871
874
|
}
|
|
872
875
|
const valueChangeAccessor = "TagVariableChange:" /* TagVariableChange */ + valueAccessor;
|
|
873
|
-
const update = (scope, value) => {
|
|
874
|
-
if (scope[valueAccessor] !== value) {
|
|
875
|
-
scope[valueAccessor] = value;
|
|
876
|
-
fn && fn(scope, value);
|
|
877
|
-
}
|
|
878
|
-
};
|
|
879
876
|
return (scope, value, valueChange) => {
|
|
880
877
|
if (rendering) {
|
|
881
878
|
if ((scope[valueChangeAccessor] = valueChange) && scope[valueAccessor] !== value || scope.___creating) {
|
|
882
879
|
scope[valueAccessor] = value;
|
|
883
|
-
fn && fn(scope
|
|
880
|
+
fn && fn(scope);
|
|
884
881
|
}
|
|
885
882
|
} else if (scope[valueChangeAccessor]) {
|
|
886
883
|
scope[valueChangeAccessor](value);
|
|
887
|
-
} else {
|
|
884
|
+
} else if (scope[valueAccessor] !== (scope[valueAccessor] = value) && fn) {
|
|
888
885
|
schedule();
|
|
889
|
-
queueRender(
|
|
890
|
-
scope,
|
|
891
|
-
update,
|
|
892
|
-
true ? id : valueAccessor,
|
|
893
|
-
value
|
|
894
|
-
);
|
|
886
|
+
queueRender(scope, fn, true ? id : valueAccessor);
|
|
895
887
|
}
|
|
896
888
|
return value;
|
|
897
889
|
};
|
|
@@ -901,7 +893,7 @@ function _const(valueAccessor, fn = () => {
|
|
|
901
893
|
return (scope, value) => {
|
|
902
894
|
if (!(valueAccessor in scope) || scope[valueAccessor] !== value) {
|
|
903
895
|
scope[valueAccessor] = value;
|
|
904
|
-
fn(scope
|
|
896
|
+
fn(scope);
|
|
905
897
|
}
|
|
906
898
|
};
|
|
907
899
|
}
|
|
@@ -918,8 +910,7 @@ function _or(id, fn, defaultPending = 1, scopeIdAccessor = /* @__KEY__ */ "___id
|
|
|
918
910
|
}
|
|
919
911
|
};
|
|
920
912
|
}
|
|
921
|
-
function _for_closure(
|
|
922
|
-
const childSignal = closure(valueAccessor, fn);
|
|
913
|
+
function _for_closure(ownerLoopNodeAccessor, fn) {
|
|
923
914
|
const loopScopeAccessor = "LoopScopeArray:" /* LoopScopeArray */ + ownerLoopNodeAccessor;
|
|
924
915
|
const loopScopeMapAccessor = "LoopScopeMap:" /* LoopScopeMap */ + ownerLoopNodeAccessor;
|
|
925
916
|
const ownerSignal = (ownerScope) => {
|
|
@@ -931,7 +922,7 @@ function _for_closure(valueAccessor, ownerLoopNodeAccessor, fn) {
|
|
|
931
922
|
() => {
|
|
932
923
|
for (const scope of scopes) {
|
|
933
924
|
if (!scope.___creating && !scope.___destroyed) {
|
|
934
|
-
|
|
925
|
+
fn(scope);
|
|
935
926
|
}
|
|
936
927
|
}
|
|
937
928
|
},
|
|
@@ -941,20 +932,19 @@ function _for_closure(valueAccessor, ownerLoopNodeAccessor, fn) {
|
|
|
941
932
|
);
|
|
942
933
|
}
|
|
943
934
|
};
|
|
944
|
-
ownerSignal._ =
|
|
935
|
+
ownerSignal._ = fn;
|
|
945
936
|
return ownerSignal;
|
|
946
937
|
}
|
|
947
|
-
function _if_closure(
|
|
948
|
-
const childSignal = closure(valueAccessor, fn);
|
|
938
|
+
function _if_closure(ownerConditionalNodeAccessor, branch, fn) {
|
|
949
939
|
const scopeAccessor = "ConditionalScope:" /* ConditionalScope */ + ownerConditionalNodeAccessor;
|
|
950
940
|
const branchAccessor = "ConditionalRenderer:" /* ConditionalRenderer */ + ownerConditionalNodeAccessor;
|
|
951
941
|
const ownerSignal = (scope) => {
|
|
952
942
|
const ifScope = scope[scopeAccessor];
|
|
953
943
|
if (ifScope && !ifScope.___creating && (scope[branchAccessor] || 0) === branch) {
|
|
954
|
-
queueRender(ifScope,
|
|
944
|
+
queueRender(ifScope, fn, -1);
|
|
955
945
|
}
|
|
956
946
|
};
|
|
957
|
-
ownerSignal._ =
|
|
947
|
+
ownerSignal._ = fn;
|
|
958
948
|
return ownerSignal;
|
|
959
949
|
}
|
|
960
950
|
function subscribeToScopeSet(ownerScope, accessor, scope) {
|
|
@@ -987,10 +977,9 @@ function _closure(...closureSignals) {
|
|
|
987
977
|
};
|
|
988
978
|
}
|
|
989
979
|
function _closure_get(valueAccessor, fn, getOwnerScope) {
|
|
990
|
-
const childSignal = closure(valueAccessor, fn, getOwnerScope);
|
|
991
980
|
const closureSignal = ((scope) => {
|
|
992
981
|
scope[closureSignal.___signalIndexAccessor] = closureSignal.___index;
|
|
993
|
-
|
|
982
|
+
fn(scope);
|
|
994
983
|
subscribeToScopeSet(
|
|
995
984
|
getOwnerScope ? getOwnerScope(scope) : scope["_" /* Owner */],
|
|
996
985
|
closureSignal.___scopeInstancesAccessor,
|
|
@@ -1001,14 +990,6 @@ function _closure_get(valueAccessor, fn, getOwnerScope) {
|
|
|
1001
990
|
closureSignal.___signalIndexAccessor = "ClosureSignalIndex:" /* ClosureSignalIndex */ + valueAccessor;
|
|
1002
991
|
return closureSignal;
|
|
1003
992
|
}
|
|
1004
|
-
function closure(valueAccessor, fn, getOwnerScope) {
|
|
1005
|
-
return (scope) => {
|
|
1006
|
-
fn(
|
|
1007
|
-
scope,
|
|
1008
|
-
(getOwnerScope ? getOwnerScope(scope) : scope["_" /* Owner */])[valueAccessor]
|
|
1009
|
-
);
|
|
1010
|
-
};
|
|
1011
|
-
}
|
|
1012
993
|
function _child_setup(setup) {
|
|
1013
994
|
setup._ = (scope, owner) => {
|
|
1014
995
|
scope["_" /* Owner */] = owner;
|
|
@@ -2062,11 +2043,8 @@ function prepareEffects(fn) {
|
|
|
2062
2043
|
return preparedEffects;
|
|
2063
2044
|
}
|
|
2064
2045
|
var runEffects = ((effects) => {
|
|
2065
|
-
for (let i = 0
|
|
2066
|
-
effects[i++](
|
|
2067
|
-
scope = effects[i++],
|
|
2068
|
-
scope
|
|
2069
|
-
);
|
|
2046
|
+
for (let i = 0; i < effects.length; ) {
|
|
2047
|
+
effects[i++](effects[i++]);
|
|
2070
2048
|
}
|
|
2071
2049
|
});
|
|
2072
2050
|
function runRenders() {
|
|
@@ -2125,7 +2103,7 @@ var _enable_catch = () => {
|
|
|
2125
2103
|
scope = effects[i++];
|
|
2126
2104
|
branch = scope.___closestBranch;
|
|
2127
2105
|
if (!branch?.___destroyed && !(checkPending && handlePendingTry(fn, scope, branch))) {
|
|
2128
|
-
fn(scope
|
|
2106
|
+
fn(scope);
|
|
2129
2107
|
}
|
|
2130
2108
|
}
|
|
2131
2109
|
} else {
|
|
@@ -2387,6 +2365,7 @@ export {
|
|
|
2387
2365
|
_attrs_partial_content,
|
|
2388
2366
|
_attrs_script,
|
|
2389
2367
|
_await,
|
|
2368
|
+
_call,
|
|
2390
2369
|
_child_setup,
|
|
2391
2370
|
_closure,
|
|
2392
2371
|
_closure_get,
|
package/dist/dom/renderer.d.ts
CHANGED
|
@@ -18,6 +18,6 @@ export declare function _content(id: string, template: string | 0, walks?: strin
|
|
|
18
18
|
_: Signal<unknown>;
|
|
19
19
|
} | SetupFn | 0, params?: Signal<unknown> | 0, dynamicScopesAccessor?: Accessor): (owner?: Scope) => Renderer;
|
|
20
20
|
export declare function _content_resume(id: string, template: string | 0, walks?: string | 0, setup?: SetupFn | 0, params?: Signal<unknown> | 0, dynamicScopesAccessor?: Accessor): (owner?: Scope) => Renderer;
|
|
21
|
-
export declare function _content_closures(renderer: ReturnType<typeof _content>, closureFns: Record<Accessor, SignalFn
|
|
21
|
+
export declare function _content_closures(renderer: ReturnType<typeof _content>, closureFns: Record<Accessor, SignalFn>): (owner: Scope, closureValues: Record<Accessor, unknown>) => Renderer;
|
|
22
22
|
export declare function _content_branch(template: string | 0, walks?: string | 0, setup?: SetupFn | 0, params?: Signal<unknown> | 0): Renderer;
|
|
23
23
|
export {};
|
package/dist/dom/signals.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { type Accessor, type Scope } from "../common/types";
|
|
2
|
-
export type SignalFn
|
|
3
|
-
export type Signal<T> =
|
|
2
|
+
export type SignalFn = (scope: Scope) => void;
|
|
3
|
+
export type Signal<T> = ((scope: Scope, value: T) => void) & {
|
|
4
4
|
___subscribe?(scope: Scope): void;
|
|
5
5
|
};
|
|
6
|
-
export declare function _let<T>(valueAccessor: Accessor, fn?: SignalFn
|
|
7
|
-
export declare function _const<T>(valueAccessor: Accessor, fn?: SignalFn
|
|
8
|
-
export declare function _or(id: number, fn: SignalFn
|
|
9
|
-
export declare function _for_closure
|
|
10
|
-
export declare function _if_closure
|
|
6
|
+
export declare function _let<T>(valueAccessor: Accessor, fn?: SignalFn): (scope: Scope, value: T, valueChange?: (v: T) => void) => T;
|
|
7
|
+
export declare function _const<T>(valueAccessor: Accessor, fn?: SignalFn): Signal<T>;
|
|
8
|
+
export declare function _or(id: number, fn: SignalFn, defaultPending?: number, scopeIdAccessor?: Accessor): Signal<never>;
|
|
9
|
+
export declare function _for_closure(ownerLoopNodeAccessor: Accessor, fn: SignalFn): SignalFn;
|
|
10
|
+
export declare function _if_closure(ownerConditionalNodeAccessor: Accessor, branch: number, fn: SignalFn): SignalFn;
|
|
11
11
|
export declare function subscribeToScopeSet(ownerScope: Scope, accessor: Accessor, scope: Scope): void;
|
|
12
12
|
export declare function _closure(...closureSignals: ReturnType<typeof _closure_get>[]): (scope: Scope) => void;
|
|
13
|
-
export declare function _closure_get
|
|
13
|
+
export declare function _closure_get(valueAccessor: Accessor, fn: SignalFn, getOwnerScope?: (scope: Scope) => Scope): SignalFn & {
|
|
14
14
|
___scopeInstancesAccessor: string;
|
|
15
15
|
___signalIndexAccessor: string;
|
|
16
16
|
___index: number;
|
|
17
17
|
};
|
|
18
18
|
export declare function _child_setup(setup: Signal<never> & {
|
|
19
19
|
_: Signal<Scope>;
|
|
20
|
-
}):
|
|
20
|
+
}): ((scope: Scope, value: never) => void) & {
|
|
21
21
|
___subscribe?(scope: Scope): void;
|
|
22
22
|
} & {
|
|
23
23
|
_: Signal<Scope>;
|
package/dist/dom.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { attrTag, attrTags } from "./common/attr-tag";
|
|
2
2
|
export { _assert_hoist } from "./common/errors";
|
|
3
3
|
export { forIn, forOf, forTo, forUntil } from "./common/for";
|
|
4
|
+
export { _call } from "./common/helpers";
|
|
4
5
|
export { $signal, $signalReset } from "./dom/abort-signal";
|
|
5
6
|
export { compat } from "./dom/compat";
|
|
6
7
|
export { _await, _dynamic_tag, _for_in, _for_of, _for_to, _for_until, _if, _try, } from "./dom/control-flow";
|
package/dist/dom.js
CHANGED
|
@@ -48,6 +48,7 @@ __export(dom_exports, {
|
|
|
48
48
|
_attrs_partial_content: () => _attrs_partial_content,
|
|
49
49
|
_attrs_script: () => _attrs_script,
|
|
50
50
|
_await: () => _await,
|
|
51
|
+
_call: () => _call,
|
|
51
52
|
_child_setup: () => _child_setup,
|
|
52
53
|
_closure: () => _closure,
|
|
53
54
|
_closure_get: () => _closure_get,
|
|
@@ -137,6 +138,9 @@ function forUntil(until, from, step, cb) {
|
|
|
137
138
|
}
|
|
138
139
|
|
|
139
140
|
// src/common/helpers.ts
|
|
141
|
+
function _call(fn, v) {
|
|
142
|
+
return fn(v), v;
|
|
143
|
+
}
|
|
140
144
|
function classValue(classValue2) {
|
|
141
145
|
return toDelimitedString(classValue2, " ", stringifyClassObject);
|
|
142
146
|
}
|
|
@@ -367,8 +371,7 @@ function init(runtimeId = "M") {
|
|
|
367
371
|
registeredValues[lastEffect](
|
|
368
372
|
scopeLookup[serialized] ||= {
|
|
369
373
|
l: scopeId
|
|
370
|
-
}
|
|
371
|
-
scopeLookup[serialized]
|
|
374
|
+
}
|
|
372
375
|
);
|
|
373
376
|
else
|
|
374
377
|
for (let scope of serialized(serializeContext))
|
|
@@ -618,20 +621,13 @@ function triggerMacroTask() {
|
|
|
618
621
|
function _let(valueAccessor, fn) {
|
|
619
622
|
if (0)
|
|
620
623
|
var id;
|
|
621
|
-
let valueChangeAccessor = "o" /* TagVariableChange */ + valueAccessor
|
|
622
|
-
|
|
623
|
-
};
|
|
624
|
-
return (scope, value, valueChange) => (rendering ? ((scope[valueChangeAccessor] = valueChange) && scope[valueAccessor] !== value || scope.n) && (scope[valueAccessor] = value, fn && fn(scope, value)) : scope[valueChangeAccessor] ? scope[valueChangeAccessor](value) : (schedule(), queueRender(
|
|
625
|
-
scope,
|
|
626
|
-
update,
|
|
627
|
-
valueAccessor,
|
|
628
|
-
value
|
|
629
|
-
)), value);
|
|
624
|
+
let valueChangeAccessor = "o" /* TagVariableChange */ + valueAccessor;
|
|
625
|
+
return (scope, value, valueChange) => (rendering ? ((scope[valueChangeAccessor] = valueChange) && scope[valueAccessor] !== value || scope.n) && (scope[valueAccessor] = value, fn && fn(scope)) : scope[valueChangeAccessor] ? scope[valueChangeAccessor](value) : scope[valueAccessor] !== (scope[valueAccessor] = value) && fn && (schedule(), queueRender(scope, fn, valueAccessor)), value);
|
|
630
626
|
}
|
|
631
627
|
function _const(valueAccessor, fn = () => {
|
|
632
628
|
}) {
|
|
633
629
|
return (scope, value) => {
|
|
634
|
-
(!(valueAccessor in scope) || scope[valueAccessor] !== value) && (scope[valueAccessor] = value, fn(scope
|
|
630
|
+
(!(valueAccessor in scope) || scope[valueAccessor] !== value) && (scope[valueAccessor] = value, fn(scope));
|
|
635
631
|
};
|
|
636
632
|
}
|
|
637
633
|
function _or(id, fn, defaultPending = 1, scopeIdAccessor = /* @__KEY__ */ "l") {
|
|
@@ -639,28 +635,28 @@ function _or(id, fn, defaultPending = 1, scopeIdAccessor = /* @__KEY__ */ "l") {
|
|
|
639
635
|
scope.n ? scope[id] === void 0 ? scope[id] = defaultPending : --scope[id] || fn(scope) : queueRender(scope, fn, id, 0, scope[scopeIdAccessor]);
|
|
640
636
|
};
|
|
641
637
|
}
|
|
642
|
-
function _for_closure(
|
|
643
|
-
let
|
|
638
|
+
function _for_closure(ownerLoopNodeAccessor, fn) {
|
|
639
|
+
let loopScopeAccessor = "l" /* LoopScopeArray */ + ownerLoopNodeAccessor, loopScopeMapAccessor = "m" /* LoopScopeMap */ + ownerLoopNodeAccessor, ownerSignal = (ownerScope) => {
|
|
644
640
|
let scopes = ownerScope[loopScopeAccessor] ||= ownerScope[loopScopeMapAccessor] ? [...ownerScope[loopScopeMapAccessor].values()] : [], [firstScope] = scopes;
|
|
645
641
|
firstScope && queueRender(
|
|
646
642
|
ownerScope,
|
|
647
643
|
() => {
|
|
648
644
|
for (let scope of scopes)
|
|
649
|
-
!scope.n && !scope.z &&
|
|
645
|
+
!scope.n && !scope.z && fn(scope);
|
|
650
646
|
},
|
|
651
647
|
-1,
|
|
652
648
|
0,
|
|
653
649
|
firstScope.l
|
|
654
650
|
);
|
|
655
651
|
};
|
|
656
|
-
return ownerSignal._ =
|
|
652
|
+
return ownerSignal._ = fn, ownerSignal;
|
|
657
653
|
}
|
|
658
|
-
function _if_closure(
|
|
659
|
-
let
|
|
654
|
+
function _if_closure(ownerConditionalNodeAccessor, branch, fn) {
|
|
655
|
+
let scopeAccessor = "d" /* ConditionalScope */ + ownerConditionalNodeAccessor, branchAccessor = "c" /* ConditionalRenderer */ + ownerConditionalNodeAccessor, ownerSignal = (scope) => {
|
|
660
656
|
let ifScope = scope[scopeAccessor];
|
|
661
|
-
ifScope && !ifScope.n && (scope[branchAccessor] || 0) === branch && queueRender(ifScope,
|
|
657
|
+
ifScope && !ifScope.n && (scope[branchAccessor] || 0) === branch && queueRender(ifScope, fn, -1);
|
|
662
658
|
};
|
|
663
|
-
return ownerSignal._ =
|
|
659
|
+
return ownerSignal._ = fn, ownerSignal;
|
|
664
660
|
}
|
|
665
661
|
function subscribeToScopeSet(ownerScope, accessor, scope) {
|
|
666
662
|
let subscribers = ownerScope[accessor] ||= /* @__PURE__ */ new Set();
|
|
@@ -684,8 +680,8 @@ function _closure(...closureSignals) {
|
|
|
684
680
|
};
|
|
685
681
|
}
|
|
686
682
|
function _closure_get(valueAccessor, fn, getOwnerScope) {
|
|
687
|
-
let
|
|
688
|
-
scope[closureSignal.E] = closureSignal.K,
|
|
683
|
+
let closureSignal = ((scope) => {
|
|
684
|
+
scope[closureSignal.E] = closureSignal.K, fn(scope), subscribeToScopeSet(
|
|
689
685
|
getOwnerScope ? getOwnerScope(scope) : scope._,
|
|
690
686
|
closureSignal.D,
|
|
691
687
|
scope
|
|
@@ -693,14 +689,6 @@ function _closure_get(valueAccessor, fn, getOwnerScope) {
|
|
|
693
689
|
});
|
|
694
690
|
return closureSignal.D = "a" /* ClosureScopes */ + valueAccessor, closureSignal.E = "b" /* ClosureSignalIndex */ + valueAccessor, closureSignal;
|
|
695
691
|
}
|
|
696
|
-
function closure(valueAccessor, fn, getOwnerScope) {
|
|
697
|
-
return (scope) => {
|
|
698
|
-
fn(
|
|
699
|
-
scope,
|
|
700
|
-
(getOwnerScope ? getOwnerScope(scope) : scope._)[valueAccessor]
|
|
701
|
-
);
|
|
702
|
-
};
|
|
703
|
-
}
|
|
704
692
|
function _child_setup(setup) {
|
|
705
693
|
return setup._ = (scope, owner) => {
|
|
706
694
|
scope._ = owner, queueRender(scope, setup, -1);
|
|
@@ -1388,11 +1376,8 @@ function prepareEffects(fn) {
|
|
|
1388
1376
|
return preparedEffects;
|
|
1389
1377
|
}
|
|
1390
1378
|
var runEffects = ((effects) => {
|
|
1391
|
-
for (let i = 0
|
|
1392
|
-
effects[i++](
|
|
1393
|
-
scope = effects[i++],
|
|
1394
|
-
scope
|
|
1395
|
-
);
|
|
1379
|
+
for (let i = 0; i < effects.length; )
|
|
1380
|
+
effects[i++](effects[i++]);
|
|
1396
1381
|
});
|
|
1397
1382
|
function runRenders() {
|
|
1398
1383
|
for (; pendingRenders.length; ) {
|
|
@@ -1427,7 +1412,7 @@ var runRender = (render) => render.M(render.q, render.H), _enable_catch = () =>
|
|
|
1427
1412
|
if (checkPending || caughtError.has(effects)) {
|
|
1428
1413
|
let i = 0, fn, scope, branch;
|
|
1429
1414
|
for (; i < effects.length; )
|
|
1430
|
-
fn = effects[i++], scope = effects[i++], branch = scope.k, !branch?.z && !(checkPending && handlePendingTry(fn, scope, branch)) && fn(scope
|
|
1415
|
+
fn = effects[i++], scope = effects[i++], branch = scope.k, !branch?.z && !(checkPending && handlePendingTry(fn, scope, branch)) && fn(scope);
|
|
1431
1416
|
} else
|
|
1432
1417
|
runEffects2(effects);
|
|
1433
1418
|
})(runEffects), runRender = /* @__PURE__ */ ((runRender2) => (render) => {
|
package/dist/dom.mjs
CHANGED
|
@@ -38,6 +38,9 @@ function forUntil(until, from, step, cb) {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
// src/common/helpers.ts
|
|
41
|
+
function _call(fn, v) {
|
|
42
|
+
return fn(v), v;
|
|
43
|
+
}
|
|
41
44
|
function classValue(classValue2) {
|
|
42
45
|
return toDelimitedString(classValue2, " ", stringifyClassObject);
|
|
43
46
|
}
|
|
@@ -268,8 +271,7 @@ function init(runtimeId = "M") {
|
|
|
268
271
|
registeredValues[lastEffect](
|
|
269
272
|
scopeLookup[serialized] ||= {
|
|
270
273
|
l: scopeId
|
|
271
|
-
}
|
|
272
|
-
scopeLookup[serialized]
|
|
274
|
+
}
|
|
273
275
|
);
|
|
274
276
|
else
|
|
275
277
|
for (let scope of serialized(serializeContext))
|
|
@@ -519,20 +521,13 @@ function triggerMacroTask() {
|
|
|
519
521
|
function _let(valueAccessor, fn) {
|
|
520
522
|
if (0)
|
|
521
523
|
var id;
|
|
522
|
-
let valueChangeAccessor = "o" /* TagVariableChange */ + valueAccessor
|
|
523
|
-
|
|
524
|
-
};
|
|
525
|
-
return (scope, value, valueChange) => (rendering ? ((scope[valueChangeAccessor] = valueChange) && scope[valueAccessor] !== value || scope.n) && (scope[valueAccessor] = value, fn && fn(scope, value)) : scope[valueChangeAccessor] ? scope[valueChangeAccessor](value) : (schedule(), queueRender(
|
|
526
|
-
scope,
|
|
527
|
-
update,
|
|
528
|
-
valueAccessor,
|
|
529
|
-
value
|
|
530
|
-
)), value);
|
|
524
|
+
let valueChangeAccessor = "o" /* TagVariableChange */ + valueAccessor;
|
|
525
|
+
return (scope, value, valueChange) => (rendering ? ((scope[valueChangeAccessor] = valueChange) && scope[valueAccessor] !== value || scope.n) && (scope[valueAccessor] = value, fn && fn(scope)) : scope[valueChangeAccessor] ? scope[valueChangeAccessor](value) : scope[valueAccessor] !== (scope[valueAccessor] = value) && fn && (schedule(), queueRender(scope, fn, valueAccessor)), value);
|
|
531
526
|
}
|
|
532
527
|
function _const(valueAccessor, fn = () => {
|
|
533
528
|
}) {
|
|
534
529
|
return (scope, value) => {
|
|
535
|
-
(!(valueAccessor in scope) || scope[valueAccessor] !== value) && (scope[valueAccessor] = value, fn(scope
|
|
530
|
+
(!(valueAccessor in scope) || scope[valueAccessor] !== value) && (scope[valueAccessor] = value, fn(scope));
|
|
536
531
|
};
|
|
537
532
|
}
|
|
538
533
|
function _or(id, fn, defaultPending = 1, scopeIdAccessor = /* @__KEY__ */ "l") {
|
|
@@ -540,28 +535,28 @@ function _or(id, fn, defaultPending = 1, scopeIdAccessor = /* @__KEY__ */ "l") {
|
|
|
540
535
|
scope.n ? scope[id] === void 0 ? scope[id] = defaultPending : --scope[id] || fn(scope) : queueRender(scope, fn, id, 0, scope[scopeIdAccessor]);
|
|
541
536
|
};
|
|
542
537
|
}
|
|
543
|
-
function _for_closure(
|
|
544
|
-
let
|
|
538
|
+
function _for_closure(ownerLoopNodeAccessor, fn) {
|
|
539
|
+
let loopScopeAccessor = "l" /* LoopScopeArray */ + ownerLoopNodeAccessor, loopScopeMapAccessor = "m" /* LoopScopeMap */ + ownerLoopNodeAccessor, ownerSignal = (ownerScope) => {
|
|
545
540
|
let scopes = ownerScope[loopScopeAccessor] ||= ownerScope[loopScopeMapAccessor] ? [...ownerScope[loopScopeMapAccessor].values()] : [], [firstScope] = scopes;
|
|
546
541
|
firstScope && queueRender(
|
|
547
542
|
ownerScope,
|
|
548
543
|
() => {
|
|
549
544
|
for (let scope of scopes)
|
|
550
|
-
!scope.n && !scope.z &&
|
|
545
|
+
!scope.n && !scope.z && fn(scope);
|
|
551
546
|
},
|
|
552
547
|
-1,
|
|
553
548
|
0,
|
|
554
549
|
firstScope.l
|
|
555
550
|
);
|
|
556
551
|
};
|
|
557
|
-
return ownerSignal._ =
|
|
552
|
+
return ownerSignal._ = fn, ownerSignal;
|
|
558
553
|
}
|
|
559
|
-
function _if_closure(
|
|
560
|
-
let
|
|
554
|
+
function _if_closure(ownerConditionalNodeAccessor, branch, fn) {
|
|
555
|
+
let scopeAccessor = "d" /* ConditionalScope */ + ownerConditionalNodeAccessor, branchAccessor = "c" /* ConditionalRenderer */ + ownerConditionalNodeAccessor, ownerSignal = (scope) => {
|
|
561
556
|
let ifScope = scope[scopeAccessor];
|
|
562
|
-
ifScope && !ifScope.n && (scope[branchAccessor] || 0) === branch && queueRender(ifScope,
|
|
557
|
+
ifScope && !ifScope.n && (scope[branchAccessor] || 0) === branch && queueRender(ifScope, fn, -1);
|
|
563
558
|
};
|
|
564
|
-
return ownerSignal._ =
|
|
559
|
+
return ownerSignal._ = fn, ownerSignal;
|
|
565
560
|
}
|
|
566
561
|
function subscribeToScopeSet(ownerScope, accessor, scope) {
|
|
567
562
|
let subscribers = ownerScope[accessor] ||= /* @__PURE__ */ new Set();
|
|
@@ -585,8 +580,8 @@ function _closure(...closureSignals) {
|
|
|
585
580
|
};
|
|
586
581
|
}
|
|
587
582
|
function _closure_get(valueAccessor, fn, getOwnerScope) {
|
|
588
|
-
let
|
|
589
|
-
scope[closureSignal.E] = closureSignal.K,
|
|
583
|
+
let closureSignal = ((scope) => {
|
|
584
|
+
scope[closureSignal.E] = closureSignal.K, fn(scope), subscribeToScopeSet(
|
|
590
585
|
getOwnerScope ? getOwnerScope(scope) : scope._,
|
|
591
586
|
closureSignal.D,
|
|
592
587
|
scope
|
|
@@ -594,14 +589,6 @@ function _closure_get(valueAccessor, fn, getOwnerScope) {
|
|
|
594
589
|
});
|
|
595
590
|
return closureSignal.D = "a" /* ClosureScopes */ + valueAccessor, closureSignal.E = "b" /* ClosureSignalIndex */ + valueAccessor, closureSignal;
|
|
596
591
|
}
|
|
597
|
-
function closure(valueAccessor, fn, getOwnerScope) {
|
|
598
|
-
return (scope) => {
|
|
599
|
-
fn(
|
|
600
|
-
scope,
|
|
601
|
-
(getOwnerScope ? getOwnerScope(scope) : scope._)[valueAccessor]
|
|
602
|
-
);
|
|
603
|
-
};
|
|
604
|
-
}
|
|
605
592
|
function _child_setup(setup) {
|
|
606
593
|
return setup._ = (scope, owner) => {
|
|
607
594
|
scope._ = owner, queueRender(scope, setup, -1);
|
|
@@ -1289,11 +1276,8 @@ function prepareEffects(fn) {
|
|
|
1289
1276
|
return preparedEffects;
|
|
1290
1277
|
}
|
|
1291
1278
|
var runEffects = ((effects) => {
|
|
1292
|
-
for (let i = 0
|
|
1293
|
-
effects[i++](
|
|
1294
|
-
scope = effects[i++],
|
|
1295
|
-
scope
|
|
1296
|
-
);
|
|
1279
|
+
for (let i = 0; i < effects.length; )
|
|
1280
|
+
effects[i++](effects[i++]);
|
|
1297
1281
|
});
|
|
1298
1282
|
function runRenders() {
|
|
1299
1283
|
for (; pendingRenders.length; ) {
|
|
@@ -1328,7 +1312,7 @@ var runRender = (render) => render.M(render.q, render.H), _enable_catch = () =>
|
|
|
1328
1312
|
if (checkPending || caughtError.has(effects)) {
|
|
1329
1313
|
let i = 0, fn, scope, branch;
|
|
1330
1314
|
for (; i < effects.length; )
|
|
1331
|
-
fn = effects[i++], scope = effects[i++], branch = scope.k, !branch?.z && !(checkPending && handlePendingTry(fn, scope, branch)) && fn(scope
|
|
1315
|
+
fn = effects[i++], scope = effects[i++], branch = scope.k, !branch?.z && !(checkPending && handlePendingTry(fn, scope, branch)) && fn(scope);
|
|
1332
1316
|
} else
|
|
1333
1317
|
runEffects2(effects);
|
|
1334
1318
|
})(runEffects), runRender = /* @__PURE__ */ ((runRender2) => (render) => {
|
|
@@ -1511,6 +1495,7 @@ export {
|
|
|
1511
1495
|
_attrs_partial_content,
|
|
1512
1496
|
_attrs_script,
|
|
1513
1497
|
_await,
|
|
1498
|
+
_call,
|
|
1514
1499
|
_child_setup,
|
|
1515
1500
|
_closure,
|
|
1516
1501
|
_closure_get,
|
package/dist/translator/index.js
CHANGED
|
@@ -719,6 +719,20 @@ function getFnRoot(path5) {
|
|
|
719
719
|
}
|
|
720
720
|
return fnPath;
|
|
721
721
|
}
|
|
722
|
+
function getFnParent(path5) {
|
|
723
|
+
let curPath = path5;
|
|
724
|
+
while (!isMarko(curPath)) {
|
|
725
|
+
if (isFunction(curPath)) {
|
|
726
|
+
return curPath;
|
|
727
|
+
}
|
|
728
|
+
const parentPath = curPath.parentPath;
|
|
729
|
+
if (parentPath) {
|
|
730
|
+
curPath = parentPath;
|
|
731
|
+
} else {
|
|
732
|
+
break;
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
}
|
|
722
736
|
function getDeclarationRoot(path5) {
|
|
723
737
|
let curPath = path5;
|
|
724
738
|
let declPath;
|
|
@@ -3130,45 +3144,6 @@ function getDeclaredBindingExpression(binding) {
|
|
|
3130
3144
|
|
|
3131
3145
|
// src/translator/util/scope-read.ts
|
|
3132
3146
|
var import_compiler19 = require("@marko/compiler");
|
|
3133
|
-
function createScopeReadPattern(section, referencedBindings) {
|
|
3134
|
-
const rootDepth = section.depth;
|
|
3135
|
-
const rootPattern = import_compiler19.types.objectPattern([]);
|
|
3136
|
-
let nestedPatterns;
|
|
3137
|
-
forEach(referencedBindings, (ref) => {
|
|
3138
|
-
const propertyValue = ref.name;
|
|
3139
|
-
if (!isValidPropertyIdentifier(propertyValue)) return;
|
|
3140
|
-
const propertyKey = getScopeAccessor(ref);
|
|
3141
|
-
const isShorthand = propertyKey === propertyValue;
|
|
3142
|
-
let pattern = rootPattern;
|
|
3143
|
-
if (ref.section !== section && ref.type !== 4 /* local */) {
|
|
3144
|
-
if (!nestedPatterns) nestedPatterns = [rootPattern];
|
|
3145
|
-
const relativeDepth = rootDepth - ref.section.depth;
|
|
3146
|
-
let i = nestedPatterns.length;
|
|
3147
|
-
let prev = nestedPatterns[i - 1];
|
|
3148
|
-
for (; i <= relativeDepth; i++) {
|
|
3149
|
-
const nestedPattern = import_compiler19.types.objectPattern([]);
|
|
3150
|
-
prev.properties.push(
|
|
3151
|
-
import_compiler19.types.objectProperty(
|
|
3152
|
-
import_compiler19.types.identifier(getAccessorProp().Owner),
|
|
3153
|
-
nestedPattern
|
|
3154
|
-
)
|
|
3155
|
-
);
|
|
3156
|
-
nestedPatterns.push(nestedPattern);
|
|
3157
|
-
prev = nestedPattern;
|
|
3158
|
-
}
|
|
3159
|
-
pattern = nestedPatterns[relativeDepth];
|
|
3160
|
-
}
|
|
3161
|
-
pattern.properties.push(
|
|
3162
|
-
import_compiler19.types.objectProperty(
|
|
3163
|
-
toPropertyName(propertyKey),
|
|
3164
|
-
import_compiler19.types.identifier(propertyValue),
|
|
3165
|
-
false,
|
|
3166
|
-
isShorthand
|
|
3167
|
-
)
|
|
3168
|
-
);
|
|
3169
|
-
});
|
|
3170
|
-
return rootPattern;
|
|
3171
|
-
}
|
|
3172
3147
|
function getScopeExpression(section, targetSection) {
|
|
3173
3148
|
let scope = scopeIdentifier ?? import_compiler19.types.identifier("undefined");
|
|
3174
3149
|
const diff = section.depth - targetSection.depth;
|
|
@@ -3183,7 +3158,7 @@ function getScopeExpression(section, targetSection) {
|
|
|
3183
3158
|
function createScopeReadExpression(section, reference) {
|
|
3184
3159
|
const propName = toPropertyName(getScopeAccessor(reference));
|
|
3185
3160
|
return import_compiler19.types.memberExpression(
|
|
3186
|
-
getScopeExpression(section, reference.section),
|
|
3161
|
+
reference.type === 4 /* local */ ? scopeIdentifier : getScopeExpression(section, reference.section),
|
|
3187
3162
|
propName,
|
|
3188
3163
|
propName.type !== "Identifier"
|
|
3189
3164
|
);
|
|
@@ -3393,20 +3368,10 @@ function signalHasStatements(signal) {
|
|
|
3393
3368
|
function getSignalFn(signal) {
|
|
3394
3369
|
const section = signal.section;
|
|
3395
3370
|
const binding = signal.referencedBindings;
|
|
3396
|
-
const params = [scopeIdentifier];
|
|
3397
3371
|
const isIntersection = Array.isArray(binding);
|
|
3398
3372
|
const isBinding = binding && !isIntersection;
|
|
3399
3373
|
const isValue = isBinding && binding.section === section;
|
|
3400
3374
|
const assertsHoists = isValue && binding.hoists.size && !isOptimize();
|
|
3401
|
-
if (isBinding && (signal.renderReferencedBindings || assertsHoists || binding.aliases.size || binding.propertyAliases.size)) {
|
|
3402
|
-
const valueParam = import_compiler22.types.identifier(binding.name);
|
|
3403
|
-
if (binding.loc) {
|
|
3404
|
-
valueParam.loc = binding.loc;
|
|
3405
|
-
valueParam.start = binding.loc.start.index;
|
|
3406
|
-
valueParam.end = binding.loc.end.index;
|
|
3407
|
-
}
|
|
3408
|
-
params.push(valueParam);
|
|
3409
|
-
}
|
|
3410
3375
|
if (isValue) {
|
|
3411
3376
|
for (const alias of binding.aliases) {
|
|
3412
3377
|
const aliasSignal = getSignal(alias.section, alias);
|
|
@@ -3438,7 +3403,7 @@ function getSignalFn(signal) {
|
|
|
3438
3403
|
...getTranslatedExtraArgs(aliasSignal)
|
|
3439
3404
|
])
|
|
3440
3405
|
),
|
|
3441
|
-
[
|
|
3406
|
+
[createScopeReadExpression(binding.section, binding)]
|
|
3442
3407
|
)
|
|
3443
3408
|
)
|
|
3444
3409
|
);
|
|
@@ -3447,7 +3412,7 @@ function getSignalFn(signal) {
|
|
|
3447
3412
|
import_compiler22.types.expressionStatement(
|
|
3448
3413
|
import_compiler22.types.callExpression(aliasSignal.identifier, [
|
|
3449
3414
|
scopeIdentifier,
|
|
3450
|
-
|
|
3415
|
+
createScopeReadExpression(binding.section, binding),
|
|
3451
3416
|
...getTranslatedExtraArgs(aliasSignal)
|
|
3452
3417
|
])
|
|
3453
3418
|
)
|
|
@@ -3462,7 +3427,7 @@ function getSignalFn(signal) {
|
|
|
3462
3427
|
import_compiler22.types.callExpression(aliasSignal.identifier, [
|
|
3463
3428
|
scopeIdentifier,
|
|
3464
3429
|
toMemberExpression(
|
|
3465
|
-
|
|
3430
|
+
createScopeReadExpression(binding.section, binding),
|
|
3466
3431
|
key,
|
|
3467
3432
|
binding.nullable
|
|
3468
3433
|
),
|
|
@@ -3474,7 +3439,10 @@ function getSignalFn(signal) {
|
|
|
3474
3439
|
if (assertsHoists) {
|
|
3475
3440
|
signal.render.push(
|
|
3476
3441
|
import_compiler22.types.expressionStatement(
|
|
3477
|
-
callRuntime(
|
|
3442
|
+
callRuntime(
|
|
3443
|
+
"_assert_hoist",
|
|
3444
|
+
createScopeReadExpression(binding.section, binding)
|
|
3445
|
+
)
|
|
3478
3446
|
)
|
|
3479
3447
|
);
|
|
3480
3448
|
}
|
|
@@ -3556,42 +3524,25 @@ function getSignalFn(signal) {
|
|
|
3556
3524
|
)
|
|
3557
3525
|
);
|
|
3558
3526
|
}
|
|
3559
|
-
if (isIntersection && signal.renderReferencedBindings) {
|
|
3560
|
-
signal.render.unshift(
|
|
3561
|
-
import_compiler22.types.variableDeclaration("let", [
|
|
3562
|
-
import_compiler22.types.variableDeclarator(
|
|
3563
|
-
createScopeReadPattern(section, signal.renderReferencedBindings),
|
|
3564
|
-
scopeIdentifier
|
|
3565
|
-
)
|
|
3566
|
-
])
|
|
3567
|
-
);
|
|
3568
|
-
}
|
|
3569
3527
|
if (signal.render.length === 1) {
|
|
3570
3528
|
const render = signal.render[0];
|
|
3571
3529
|
if (render.type === "ExpressionStatement") {
|
|
3572
3530
|
const { expression } = render;
|
|
3573
3531
|
if (expression.type === "CallExpression") {
|
|
3574
3532
|
const args = expression.arguments;
|
|
3575
|
-
if (
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
const param = params[i];
|
|
3579
|
-
const arg = args[i];
|
|
3580
|
-
if (arg.type !== "Identifier" || param.type !== "Identifier" || param.name !== arg.name) {
|
|
3581
|
-
break;
|
|
3582
|
-
}
|
|
3583
|
-
}
|
|
3584
|
-
if (i === -1) {
|
|
3585
|
-
if (expression.callee.type === "MemberExpression" && expression.callee.property.type === "Identifier" && expression.callee.property.name === "_") {
|
|
3586
|
-
return expression.callee.object;
|
|
3587
|
-
}
|
|
3588
|
-
return expression.callee;
|
|
3533
|
+
if (args.length === 1 && args[0].type === "Identifier" && args[0].name === scopeIdentifier.name) {
|
|
3534
|
+
if (expression.callee.type === "MemberExpression" && expression.callee.property.type === "Identifier" && expression.callee.property.name === "_") {
|
|
3535
|
+
return expression.callee.object;
|
|
3589
3536
|
}
|
|
3537
|
+
return expression.callee;
|
|
3590
3538
|
}
|
|
3591
3539
|
}
|
|
3592
3540
|
}
|
|
3593
3541
|
}
|
|
3594
|
-
return import_compiler22.types.arrowFunctionExpression(
|
|
3542
|
+
return import_compiler22.types.arrowFunctionExpression(
|
|
3543
|
+
[scopeIdentifier],
|
|
3544
|
+
import_compiler22.types.blockStatement(signal.render)
|
|
3545
|
+
);
|
|
3595
3546
|
}
|
|
3596
3547
|
var hasTranslatedExtraArgs = /* @__PURE__ */ new WeakSet();
|
|
3597
3548
|
var emptyExtraArgs = [];
|
|
@@ -3758,11 +3709,11 @@ function writeSignals(section) {
|
|
|
3758
3709
|
writeSignal(signal);
|
|
3759
3710
|
}
|
|
3760
3711
|
function writeSignal(signal) {
|
|
3761
|
-
if (
|
|
3712
|
+
if (seen.has(signal)) return;
|
|
3762
3713
|
seen.add(signal);
|
|
3763
|
-
for (const
|
|
3764
|
-
writeSignal(
|
|
3765
|
-
traverseReplace(
|
|
3714
|
+
for (const value of signal.values) {
|
|
3715
|
+
writeSignal(value.signal);
|
|
3716
|
+
traverseReplace(value, "value", replaceRenderNode);
|
|
3766
3717
|
}
|
|
3767
3718
|
forEach(signal.intersection, writeSignal);
|
|
3768
3719
|
traverseReplace(signal, "render", replaceRenderNode);
|
|
@@ -3772,11 +3723,6 @@ function writeSignals(section) {
|
|
|
3772
3723
|
const effectIdentifier = import_compiler22.types.identifier(
|
|
3773
3724
|
`${signal.identifier.name}__script`
|
|
3774
3725
|
);
|
|
3775
|
-
const referencedBindings = signal.effectReferencedBindings;
|
|
3776
|
-
const referencesScope = traverseContains(
|
|
3777
|
-
signal.effect,
|
|
3778
|
-
isScopeIdentifier
|
|
3779
|
-
);
|
|
3780
3726
|
effectDeclarator = import_compiler22.types.variableDeclarator(
|
|
3781
3727
|
effectIdentifier,
|
|
3782
3728
|
callRuntime(
|
|
@@ -3785,45 +3731,47 @@ function writeSignals(section) {
|
|
|
3785
3731
|
getResumeRegisterId(section, signal.referencedBindings)
|
|
3786
3732
|
),
|
|
3787
3733
|
import_compiler22.types.arrowFunctionExpression(
|
|
3788
|
-
|
|
3789
|
-
scopeIdentifier,
|
|
3790
|
-
createScopeReadPattern(section, referencedBindings)
|
|
3791
|
-
] : [createScopeReadPattern(section, referencedBindings)] : referencesScope ? [scopeIdentifier] : [],
|
|
3734
|
+
[scopeIdentifier],
|
|
3792
3735
|
toFirstExpressionOrBlock(signal.effect)
|
|
3793
3736
|
)
|
|
3794
3737
|
)
|
|
3795
3738
|
);
|
|
3796
3739
|
}
|
|
3797
|
-
let
|
|
3798
|
-
if (
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
|
|
3802
|
-
|
|
3803
|
-
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
signal.identifier,
|
|
3816
|
-
value.
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3820
|
-
|
|
3740
|
+
let signalDeclaration;
|
|
3741
|
+
if (signal.build) {
|
|
3742
|
+
let value = signal.build();
|
|
3743
|
+
if (!value || !signal.register && import_compiler22.types.isFunction(value) && import_compiler22.types.isBlockStatement(value.body) && !value.body.body.length) {
|
|
3744
|
+
return;
|
|
3745
|
+
}
|
|
3746
|
+
if (import_compiler22.types.isCallExpression(value)) {
|
|
3747
|
+
replaceNullishAndEmptyFunctionsWith0(value.arguments);
|
|
3748
|
+
}
|
|
3749
|
+
if (signal.register) {
|
|
3750
|
+
value = callRuntime(
|
|
3751
|
+
"_var_resume",
|
|
3752
|
+
import_compiler22.types.stringLiteral(
|
|
3753
|
+
getResumeRegisterId(section, signal.referencedBindings, "var")
|
|
3754
|
+
),
|
|
3755
|
+
value
|
|
3756
|
+
);
|
|
3757
|
+
}
|
|
3758
|
+
const signalDeclarator = import_compiler22.types.variableDeclarator(signal.identifier, value);
|
|
3759
|
+
signalDeclaration = !section.parent && !signal.referencedBindings && (import_compiler22.types.isFunctionExpression(value) || import_compiler22.types.isArrowFunctionExpression(value)) ? import_compiler22.types.functionDeclaration(
|
|
3760
|
+
signal.identifier,
|
|
3761
|
+
value.params,
|
|
3762
|
+
import_compiler22.types.isExpression(value.body) ? import_compiler22.types.blockStatement([import_compiler22.types.expressionStatement(value.body)]) : value.body
|
|
3763
|
+
) : import_compiler22.types.variableDeclaration("const", [signalDeclarator]);
|
|
3764
|
+
if (signal.export) {
|
|
3765
|
+
signalDeclaration = import_compiler22.types.exportNamedDeclaration(signalDeclaration);
|
|
3766
|
+
}
|
|
3821
3767
|
}
|
|
3822
3768
|
const signalStatements = signal.prependStatements || [];
|
|
3823
3769
|
if (effectDeclarator) {
|
|
3824
3770
|
signalStatements.push(import_compiler22.types.variableDeclaration("const", [effectDeclarator]));
|
|
3825
3771
|
}
|
|
3826
|
-
|
|
3772
|
+
if (signalDeclaration) {
|
|
3773
|
+
signalStatements.push(signalDeclaration);
|
|
3774
|
+
}
|
|
3827
3775
|
(0, import_babel_utils15.getProgram)().node.body.push(...signalStatements);
|
|
3828
3776
|
}
|
|
3829
3777
|
}
|
|
@@ -3898,25 +3846,10 @@ function writeRegisteredFns() {
|
|
|
3898
3846
|
if (registeredFns) {
|
|
3899
3847
|
for (const registeredFn of registeredFns) {
|
|
3900
3848
|
let fn;
|
|
3901
|
-
|
|
3902
|
-
scopeIdentifier,
|
|
3903
|
-
import_compiler22.types.assignmentPattern(
|
|
3904
|
-
createScopeReadPattern(
|
|
3905
|
-
registeredFn.section,
|
|
3906
|
-
registeredFn.referencedBindings
|
|
3907
|
-
),
|
|
3908
|
-
scopeIdentifier
|
|
3909
|
-
)
|
|
3910
|
-
] : [
|
|
3911
|
-
createScopeReadPattern(
|
|
3912
|
-
registeredFn.section,
|
|
3913
|
-
registeredFn.referencedBindings
|
|
3914
|
-
)
|
|
3915
|
-
] : registeredFn.referencesScope ? [scopeIdentifier] : void 0;
|
|
3916
|
-
if (params) {
|
|
3849
|
+
if (registeredFn.referencedBindings || registeredFn.referencesScope) {
|
|
3917
3850
|
fn = import_compiler22.types.functionDeclaration(
|
|
3918
3851
|
import_compiler22.types.identifier(registeredFn.id),
|
|
3919
|
-
|
|
3852
|
+
[scopeIdentifier],
|
|
3920
3853
|
import_compiler22.types.blockStatement(toReturnedFunction(registeredFn.node))
|
|
3921
3854
|
);
|
|
3922
3855
|
} else if (registeredFn.node.type === "FunctionDeclaration" && registeredFn.node.id?.name === registeredFn.id) {
|
|
@@ -4168,32 +4101,34 @@ var updateExpressions = /* @__PURE__ */ new WeakSet();
|
|
|
4168
4101
|
function replaceAssignedNode(node) {
|
|
4169
4102
|
switch (node.type) {
|
|
4170
4103
|
case "ExpressionStatement": {
|
|
4171
|
-
if (node.expression.type === "
|
|
4172
|
-
node.expression = node.expression.
|
|
4173
|
-
|
|
4104
|
+
if (node.expression.type === "BinaryExpression" && updateExpressions.delete(node.expression)) {
|
|
4105
|
+
node.expression = node.expression.left;
|
|
4106
|
+
}
|
|
4107
|
+
if (node.expression.type === "CallExpression" && updateExpressions.delete(node.expression)) {
|
|
4108
|
+
node.expression.callee = node.expression.arguments[0];
|
|
4109
|
+
node.expression.arguments = [node.expression.arguments[1]];
|
|
4174
4110
|
}
|
|
4175
4111
|
break;
|
|
4176
4112
|
}
|
|
4177
4113
|
case "UpdateExpression": {
|
|
4178
4114
|
const { extra } = node.argument;
|
|
4179
4115
|
if (isAssignedBindingExtra(extra)) {
|
|
4180
|
-
|
|
4116
|
+
let builtAssignment = getBuildAssignment(extra)?.(
|
|
4181
4117
|
extra.section,
|
|
4182
|
-
|
|
4118
|
+
import_compiler22.types.binaryExpression(
|
|
4119
|
+
node.operator === "++" ? "+" : "-",
|
|
4120
|
+
createScopeReadExpression(extra.section, extra.assignment),
|
|
4121
|
+
import_compiler22.types.numericLiteral(1)
|
|
4122
|
+
)
|
|
4183
4123
|
);
|
|
4184
4124
|
if (builtAssignment) {
|
|
4185
4125
|
if (!node.prefix) {
|
|
4186
|
-
|
|
4187
|
-
|
|
4126
|
+
builtAssignment = import_compiler22.types.binaryExpression(
|
|
4127
|
+
node.operator === "++" ? "-" : "+",
|
|
4188
4128
|
builtAssignment,
|
|
4189
|
-
import_compiler22.types.
|
|
4190
|
-
|
|
4191
|
-
|
|
4192
|
-
import_compiler22.types.numericLiteral(1)
|
|
4193
|
-
)
|
|
4194
|
-
]);
|
|
4195
|
-
updateExpressions.add(replacement);
|
|
4196
|
-
return replacement;
|
|
4129
|
+
import_compiler22.types.numericLiteral(1)
|
|
4130
|
+
);
|
|
4131
|
+
updateExpressions.add(builtAssignment);
|
|
4197
4132
|
}
|
|
4198
4133
|
return builtAssignment;
|
|
4199
4134
|
}
|
|
@@ -4207,15 +4142,15 @@ function replaceAssignedNode(node) {
|
|
|
4207
4142
|
if (isAssignedBindingExtra(extra)) {
|
|
4208
4143
|
return getBuildAssignment(extra)?.(
|
|
4209
4144
|
extra.section,
|
|
4210
|
-
|
|
4211
|
-
extra.assignmentFunction.referencedBindingsInFunction,
|
|
4212
|
-
extra.assignment
|
|
4213
|
-
) ? node : node.operator === "=" ? node.right : import_compiler22.types.binaryExpression(
|
|
4145
|
+
node.operator === "=" ? node.right : import_compiler22.types.binaryExpression(
|
|
4214
4146
|
node.operator.slice(
|
|
4215
4147
|
0,
|
|
4216
4148
|
-1
|
|
4217
4149
|
),
|
|
4218
|
-
|
|
4150
|
+
createScopeReadExpression(
|
|
4151
|
+
extra.section,
|
|
4152
|
+
extra.assignment
|
|
4153
|
+
),
|
|
4219
4154
|
node.right
|
|
4220
4155
|
)
|
|
4221
4156
|
) || extra?.assignment && withLeadingComment(node.right, getDebugName(extra.assignment));
|
|
@@ -4237,12 +4172,7 @@ function replaceAssignedNode(node) {
|
|
|
4237
4172
|
import_compiler22.types.identifier(uid)
|
|
4238
4173
|
);
|
|
4239
4174
|
if (builtAssignment) {
|
|
4240
|
-
|
|
4241
|
-
extra.assignmentFunction.referencedBindingsInFunction,
|
|
4242
|
-
extra.assignment
|
|
4243
|
-
)) {
|
|
4244
|
-
id.name = uid;
|
|
4245
|
-
}
|
|
4175
|
+
id.name = uid;
|
|
4246
4176
|
(params ||= []).push(import_compiler22.types.identifier(uid));
|
|
4247
4177
|
(assignments ||= []).push(builtAssignment);
|
|
4248
4178
|
return;
|
|
@@ -4280,8 +4210,14 @@ function replaceAssignedNode(node) {
|
|
|
4280
4210
|
function getBuildAssignment(extra) {
|
|
4281
4211
|
const { assignmentTo, assignment } = extra;
|
|
4282
4212
|
if (assignmentTo) {
|
|
4283
|
-
return (
|
|
4284
|
-
|
|
4213
|
+
return (section, value) => {
|
|
4214
|
+
const replacement = callRuntime(
|
|
4215
|
+
"_call",
|
|
4216
|
+
createScopeReadExpression(section, assignmentTo),
|
|
4217
|
+
value
|
|
4218
|
+
);
|
|
4219
|
+
updateExpressions.add(replacement);
|
|
4220
|
+
return replacement;
|
|
4285
4221
|
};
|
|
4286
4222
|
}
|
|
4287
4223
|
return getSignal(assignment.section, assignment).buildAssignment;
|
|
@@ -6389,10 +6325,9 @@ var for_default = {
|
|
|
6389
6325
|
const tagExtra = node.extra;
|
|
6390
6326
|
const { referencedBindings } = tagExtra;
|
|
6391
6327
|
const nodeRef = getOptimizedOnlyChildNodeBinding(tag, tagSection);
|
|
6392
|
-
setClosureSignalBuilder(tag, (
|
|
6328
|
+
setClosureSignalBuilder(tag, (_closure, render) => {
|
|
6393
6329
|
return callRuntime(
|
|
6394
6330
|
"_for_closure",
|
|
6395
|
-
getScopeAccessorLiteral(closure),
|
|
6396
6331
|
getScopeAccessorLiteral(nodeRef),
|
|
6397
6332
|
render
|
|
6398
6333
|
);
|
|
@@ -7998,25 +7933,28 @@ function trackReferencesForBinding(babelBinding, binding) {
|
|
|
7998
7933
|
}
|
|
7999
7934
|
}
|
|
8000
7935
|
function trackAssignment(assignment, binding) {
|
|
8001
|
-
const
|
|
7936
|
+
const fnParent = getFnParent(assignment);
|
|
7937
|
+
if (!fnParent) {
|
|
7938
|
+
throw assignment.buildCodeFrameError(
|
|
7939
|
+
`Assignments to a tag ${binding.type === 3 /* param */ ? "parameter" : "variable"} must be within a script or function.`
|
|
7940
|
+
);
|
|
7941
|
+
}
|
|
7942
|
+
const fnRoot = getFnRoot(fnParent);
|
|
7943
|
+
const fnExtra = fnRoot && (fnRoot.node.extra ??= {});
|
|
8002
7944
|
const section = getOrCreateSection(assignment);
|
|
8003
7945
|
setReferencesScope(assignment);
|
|
8004
7946
|
forEachIdentifierPath(assignment, (id) => {
|
|
8005
7947
|
if (id.node.name === binding.name) {
|
|
8006
|
-
if (!fnRoot) {
|
|
8007
|
-
throw id.buildCodeFrameError(
|
|
8008
|
-
`Assignments to a tag ${binding.type === 3 /* param */ ? "parameter" : "variable"} must be within a script or function.`
|
|
8009
|
-
);
|
|
8010
|
-
}
|
|
8011
|
-
const fnExtra = fnRoot && (fnRoot.node.extra ??= {});
|
|
8012
7948
|
const idExtra = id.node.extra ??= {};
|
|
8013
7949
|
idExtra.assignment = binding;
|
|
8014
|
-
idExtra.assignmentFunction = fnExtra;
|
|
8015
|
-
fnExtra.section = idExtra.section = section;
|
|
8016
7950
|
binding.assignmentSections = sectionUtil.add(
|
|
8017
7951
|
binding.assignmentSections,
|
|
8018
7952
|
section
|
|
8019
7953
|
);
|
|
7954
|
+
if (fnExtra) {
|
|
7955
|
+
idExtra.assignmentFunction = fnExtra;
|
|
7956
|
+
fnExtra.section = idExtra.section = section;
|
|
7957
|
+
}
|
|
8020
7958
|
if (binding.upstreamAlias && binding.property !== void 0) {
|
|
8021
7959
|
const changePropName = binding.property + "Change";
|
|
8022
7960
|
const changeBinding = binding.upstreamAlias.propertyAliases.get(changePropName) || createBinding(
|
|
@@ -8780,78 +8718,74 @@ function getSectionInstancesAccessorLiteral(section) {
|
|
|
8780
8718
|
}
|
|
8781
8719
|
function getReadReplacement(node) {
|
|
8782
8720
|
const { extra } = node;
|
|
8783
|
-
if (!extra) return;
|
|
8784
|
-
|
|
8785
|
-
let replacement;
|
|
8721
|
+
if (!extra || extra.assignment) return;
|
|
8722
|
+
const { read, binding } = extra;
|
|
8786
8723
|
if (read) {
|
|
8724
|
+
const readBinding = read.binding;
|
|
8725
|
+
let replacement;
|
|
8787
8726
|
if (read.props === void 0) {
|
|
8788
|
-
|
|
8789
|
-
|
|
8790
|
-
|
|
8791
|
-
binding = void 0;
|
|
8792
|
-
}
|
|
8793
|
-
}
|
|
8794
|
-
if (binding) {
|
|
8795
|
-
if (node.type === "Identifier") {
|
|
8796
|
-
if (binding.type === 0 /* dom */) {
|
|
8797
|
-
if (binding.section.domGetterBindings.has(binding) && isOutputDOM()) {
|
|
8798
|
-
replacement = import_compiler35.types.callExpression(getBindingGetterIdentifier(binding), [
|
|
8799
|
-
getScopeExpression(node.extra.section, binding.section)
|
|
8800
|
-
]);
|
|
8801
|
-
}
|
|
8802
|
-
} else if (binding.type === 6 /* hoist */) {
|
|
8803
|
-
if (node.extra?.[kIsInvoked]) {
|
|
8804
|
-
if (isOutputDOM()) {
|
|
8727
|
+
if (isOutputDOM()) {
|
|
8728
|
+
if (readBinding.type === 0 /* dom */) {
|
|
8729
|
+
if (!extra[kIsInvoked] && readBinding.section.domGetterBindings.has(readBinding)) {
|
|
8805
8730
|
replacement = import_compiler35.types.callExpression(
|
|
8806
|
-
getBindingGetterIdentifier(
|
|
8807
|
-
[getScopeExpression(
|
|
8731
|
+
getBindingGetterIdentifier(readBinding),
|
|
8732
|
+
[getScopeExpression(extra.section, readBinding.section)]
|
|
8808
8733
|
);
|
|
8809
8734
|
}
|
|
8735
|
+
} else if (readBinding.type === 6 /* hoist */ && extra[kIsInvoked]) {
|
|
8736
|
+
replacement = import_compiler35.types.callExpression(
|
|
8737
|
+
getBindingGetterIdentifier(readBinding),
|
|
8738
|
+
[getScopeExpression(extra.section, readBinding.section)]
|
|
8739
|
+
);
|
|
8810
8740
|
} else {
|
|
8811
|
-
replacement =
|
|
8741
|
+
replacement = createScopeReadExpression(extra.section, readBinding);
|
|
8742
|
+
}
|
|
8743
|
+
} else {
|
|
8744
|
+
if (node.type !== "Identifier") {
|
|
8745
|
+
replacement = import_compiler35.types.identifier(readBinding.name);
|
|
8746
|
+
} else if (readBinding.name !== node.name && readBinding.type !== 0 /* dom */ && (readBinding.type !== 6 /* hoist */ || !extra[kIsInvoked])) {
|
|
8747
|
+
node.name = readBinding.name;
|
|
8812
8748
|
}
|
|
8813
|
-
} else if (binding.name !== node.name) {
|
|
8814
|
-
node.name = binding.name;
|
|
8815
8749
|
}
|
|
8816
8750
|
} else {
|
|
8817
|
-
|
|
8818
|
-
|
|
8819
|
-
|
|
8820
|
-
|
|
8821
|
-
|
|
8822
|
-
|
|
8823
|
-
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
8828
|
-
|
|
8829
|
-
|
|
8830
|
-
|
|
8831
|
-
|
|
8832
|
-
|
|
8833
|
-
|
|
8834
|
-
|
|
8835
|
-
|
|
8836
|
-
|
|
8837
|
-
|
|
8838
|
-
|
|
8839
|
-
|
|
8840
|
-
|
|
8841
|
-
|
|
8842
|
-
|
|
8843
|
-
|
|
8844
|
-
replaceMember.
|
|
8845
|
-
|
|
8751
|
+
const props = read.props ? Array.isArray(read.props) ? read.props.slice() : [read.props] : [];
|
|
8752
|
+
let curNode = node;
|
|
8753
|
+
let curBinding = read.binding;
|
|
8754
|
+
let replaceMember;
|
|
8755
|
+
replacement = isOutputDOM() ? createScopeReadExpression(extra.section, read.binding) : import_compiler35.types.identifier(read.binding.name);
|
|
8756
|
+
while (props.length && (curNode.type === "MemberExpression" || curNode.type === "OptionalMemberExpression")) {
|
|
8757
|
+
const prop = props.pop();
|
|
8758
|
+
const memberProp = getMemberExpressionPropString(curNode);
|
|
8759
|
+
if (memberProp !== prop) break;
|
|
8760
|
+
replaceMember = curNode;
|
|
8761
|
+
curNode = curNode.object;
|
|
8762
|
+
}
|
|
8763
|
+
for (const prop of props) {
|
|
8764
|
+
if (curBinding) {
|
|
8765
|
+
curBinding = curBinding.propertyAliases.get(prop);
|
|
8766
|
+
}
|
|
8767
|
+
replacement = toMemberExpression(
|
|
8768
|
+
replacement,
|
|
8769
|
+
prop,
|
|
8770
|
+
!!curBinding?.nullable
|
|
8771
|
+
);
|
|
8772
|
+
}
|
|
8773
|
+
if (replaceMember) {
|
|
8774
|
+
if (read.binding.nullable && replaceMember.object.type !== replacement.type) {
|
|
8775
|
+
replaceMember.type = "OptionalMemberExpression";
|
|
8776
|
+
replaceMember.optional = true;
|
|
8777
|
+
}
|
|
8778
|
+
replaceMember.object = withPreviousLocation(
|
|
8779
|
+
replacement,
|
|
8780
|
+
replaceMember.object
|
|
8781
|
+
);
|
|
8782
|
+
replacement = void 0;
|
|
8846
8783
|
}
|
|
8847
|
-
replaceMember.object = withPreviousLocation(
|
|
8848
|
-
replacement,
|
|
8849
|
-
replaceMember.object
|
|
8850
|
-
);
|
|
8851
|
-
replacement = void 0;
|
|
8852
8784
|
}
|
|
8785
|
+
return replacement && withPreviousLocation(replacement, node);
|
|
8786
|
+
} else if (binding && node.type == "Identifier" && node.name !== binding.name) {
|
|
8787
|
+
node.name = binding.name;
|
|
8853
8788
|
}
|
|
8854
|
-
return replacement && withPreviousLocation(replacement, node);
|
|
8855
8789
|
}
|
|
8856
8790
|
function pruneBinding(bindings, binding) {
|
|
8857
8791
|
let shouldPrune = !binding.downstreamExpressions.size;
|
|
@@ -8939,14 +8873,23 @@ function resolveReferencedBindings(expr, reads, intersectionsBySection) {
|
|
|
8939
8873
|
const rootBindings = getRootBindings(reads);
|
|
8940
8874
|
for (const read of reads) {
|
|
8941
8875
|
let { binding } = read;
|
|
8942
|
-
if (read.node
|
|
8943
|
-
|
|
8876
|
+
if (read.node) {
|
|
8877
|
+
const readExtra = read.node.extra ??= {};
|
|
8878
|
+
if (readExtra.assignmentTo !== binding) {
|
|
8879
|
+
readExtra.section = expr.section;
|
|
8880
|
+
({ binding } = readExtra.read ??= resolveExpressionReference(
|
|
8881
|
+
rootBindings,
|
|
8882
|
+
binding
|
|
8883
|
+
));
|
|
8884
|
+
}
|
|
8944
8885
|
}
|
|
8945
8886
|
referencedBindings = bindingUtil.add(referencedBindings, binding);
|
|
8946
8887
|
}
|
|
8947
8888
|
} else if (reads) {
|
|
8948
8889
|
if (reads.node) {
|
|
8949
|
-
|
|
8890
|
+
const readExtra = reads.node.extra ??= {};
|
|
8891
|
+
readExtra.section = expr.section;
|
|
8892
|
+
readExtra.read = createRead(reads.binding, void 0);
|
|
8950
8893
|
}
|
|
8951
8894
|
referencedBindings = reads.binding;
|
|
8952
8895
|
}
|
|
@@ -10658,10 +10601,9 @@ var IfTag = {
|
|
|
10658
10601
|
const consequent = import_compiler48.types.numericLiteral(branchBodySection ? i : -1);
|
|
10659
10602
|
if (branchBodySection) {
|
|
10660
10603
|
rendererIdentifiers.push(import_compiler48.types.identifier(branchBodySection.name));
|
|
10661
|
-
setClosureSignalBuilder(branchTag, (
|
|
10604
|
+
setClosureSignalBuilder(branchTag, (_closure, render) => {
|
|
10662
10605
|
return callRuntime(
|
|
10663
10606
|
"_if_closure",
|
|
10664
|
-
getScopeAccessorLiteral(closure),
|
|
10665
10607
|
getScopeAccessorLiteral(nodeRef),
|
|
10666
10608
|
import_compiler48.types.numericLiteral(i),
|
|
10667
10609
|
render
|
|
@@ -3,5 +3,6 @@ export type MarkoExprRootPath = t.NodePath<t.MarkoTag | t.MarkoTagBody | t.Marko
|
|
|
3
3
|
export declare function getMarkoRoot(path: t.NodePath<t.Node>): MarkoExprRootPath | null;
|
|
4
4
|
export declare function getExprRoot(path: t.NodePath<t.Node>): t.NodePath<t.Node>;
|
|
5
5
|
export declare function getFnRoot(path: t.NodePath<t.Node>): t.NodePath<t.ArrowFunctionExpression | t.FunctionExpression | t.ObjectMember> | undefined;
|
|
6
|
+
export declare function getFnParent(path: t.NodePath<t.Node>): t.NodePath<t.ArrowFunctionExpression | t.FunctionExpression | t.ObjectMember> | undefined;
|
|
6
7
|
export declare function getDeclarationRoot(path: t.NodePath<t.Node>): t.NodePath<t.FunctionDeclaration | t.VariableDeclaration> | undefined;
|
|
7
8
|
export declare function isMarko(path: t.NodePath<any>): path is MarkoExprRootPath;
|