sygnal 5.3.4 → 5.3.6
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/astro/server.cjs.js +11 -0
- package/dist/astro/server.mjs +11 -0
- package/dist/index.cjs.js +11 -0
- package/dist/index.d.ts +28 -23
- package/dist/index.esm.js +11 -0
- package/dist/sygnal.min.js +1 -1
- package/dist/vike/onRenderHtml.cjs.js +23 -1
- package/dist/vike/onRenderHtml.mjs +23 -1
- package/package.json +1 -1
- package/src/extra/ssr.ts +12 -0
- package/src/index.d.ts +28 -23
- package/src/vike/onRenderHtml.ts +23 -1
package/dist/astro/server.cjs.js
CHANGED
|
@@ -132,6 +132,13 @@ function processSSRTree(vnode, context, parentState) {
|
|
|
132
132
|
if (typeof vnode === 'string' || vnode.text != null)
|
|
133
133
|
return vnode;
|
|
134
134
|
const sel = vnode.sel;
|
|
135
|
+
// Fragment: no selector, recurse into children
|
|
136
|
+
if (!sel && vnode.children && Array.isArray(vnode.children)) {
|
|
137
|
+
vnode.children = vnode.children
|
|
138
|
+
.map((c) => processSSRTree(c, context, parentState))
|
|
139
|
+
.filter((c) => c != null);
|
|
140
|
+
return vnode;
|
|
141
|
+
}
|
|
135
142
|
// Portal: render children inline (no target container on server)
|
|
136
143
|
if (sel === 'portal') {
|
|
137
144
|
const children = vnode.children || [];
|
|
@@ -511,6 +518,10 @@ function vnodeToHtml(vnode) {
|
|
|
511
518
|
if (!sel) {
|
|
512
519
|
if (vnode.text != null)
|
|
513
520
|
return escapeHtml(String(vnode.text));
|
|
521
|
+
// Fragment: no selector, but has children — concatenate child HTML
|
|
522
|
+
if (vnode.children && Array.isArray(vnode.children)) {
|
|
523
|
+
return vnode.children.map((c) => vnodeToHtml(c)).join('');
|
|
524
|
+
}
|
|
514
525
|
return '';
|
|
515
526
|
}
|
|
516
527
|
// Parse selector: tag#id.class1.class2
|
package/dist/astro/server.mjs
CHANGED
|
@@ -128,6 +128,13 @@ function processSSRTree(vnode, context, parentState) {
|
|
|
128
128
|
if (typeof vnode === 'string' || vnode.text != null)
|
|
129
129
|
return vnode;
|
|
130
130
|
const sel = vnode.sel;
|
|
131
|
+
// Fragment: no selector, recurse into children
|
|
132
|
+
if (!sel && vnode.children && Array.isArray(vnode.children)) {
|
|
133
|
+
vnode.children = vnode.children
|
|
134
|
+
.map((c) => processSSRTree(c, context, parentState))
|
|
135
|
+
.filter((c) => c != null);
|
|
136
|
+
return vnode;
|
|
137
|
+
}
|
|
131
138
|
// Portal: render children inline (no target container on server)
|
|
132
139
|
if (sel === 'portal') {
|
|
133
140
|
const children = vnode.children || [];
|
|
@@ -507,6 +514,10 @@ function vnodeToHtml(vnode) {
|
|
|
507
514
|
if (!sel) {
|
|
508
515
|
if (vnode.text != null)
|
|
509
516
|
return escapeHtml(String(vnode.text));
|
|
517
|
+
// Fragment: no selector, but has children — concatenate child HTML
|
|
518
|
+
if (vnode.children && Array.isArray(vnode.children)) {
|
|
519
|
+
return vnode.children.map((c) => vnodeToHtml(c)).join('');
|
|
520
|
+
}
|
|
510
521
|
return '';
|
|
511
522
|
}
|
|
512
523
|
// Parse selector: tag#id.class1.class2
|
package/dist/index.cjs.js
CHANGED
|
@@ -6505,6 +6505,13 @@ function processSSRTree(vnode, context, parentState) {
|
|
|
6505
6505
|
if (typeof vnode === 'string' || vnode.text != null)
|
|
6506
6506
|
return vnode;
|
|
6507
6507
|
const sel = vnode.sel;
|
|
6508
|
+
// Fragment: no selector, recurse into children
|
|
6509
|
+
if (!sel && vnode.children && Array.isArray(vnode.children)) {
|
|
6510
|
+
vnode.children = vnode.children
|
|
6511
|
+
.map((c) => processSSRTree(c, context, parentState))
|
|
6512
|
+
.filter((c) => c != null);
|
|
6513
|
+
return vnode;
|
|
6514
|
+
}
|
|
6508
6515
|
// Portal: render children inline (no target container on server)
|
|
6509
6516
|
if (sel === 'portal') {
|
|
6510
6517
|
const children = vnode.children || [];
|
|
@@ -6884,6 +6891,10 @@ function vnodeToHtml(vnode) {
|
|
|
6884
6891
|
if (!sel) {
|
|
6885
6892
|
if (vnode.text != null)
|
|
6886
6893
|
return escapeHtml(String(vnode.text));
|
|
6894
|
+
// Fragment: no selector, but has children — concatenate child HTML
|
|
6895
|
+
if (vnode.children && Array.isArray(vnode.children)) {
|
|
6896
|
+
return vnode.children.map((c) => vnodeToHtml(c)).join('');
|
|
6897
|
+
}
|
|
6887
6898
|
return '';
|
|
6888
6899
|
}
|
|
6889
6900
|
// Parse selector: tag#id.class1.class2
|
package/dist/index.d.ts
CHANGED
|
@@ -42,11 +42,13 @@ type NextFunction<ACTIONS = any> = ACTIONS extends object
|
|
|
42
42
|
) => void
|
|
43
43
|
: (action: string, data?: any, delay?: number) => void
|
|
44
44
|
|
|
45
|
-
type
|
|
45
|
+
type ReducerExtras<PROPS, CONTEXT> = PROPS & { context: CONTEXT; children?: JSX.Element | JSX.Element[]; slots?: Record<string, JSX.Element[]> }
|
|
46
|
+
|
|
47
|
+
type Reducer<STATE, PROPS, ACTIONS = any, DATA = any, RETURN = any, CONTEXT = {}> = (
|
|
46
48
|
state: STATE,
|
|
47
49
|
args: DATA,
|
|
48
50
|
next: NextFunction<ACTIONS>,
|
|
49
|
-
props: PROPS
|
|
51
|
+
props: ReducerExtras<PROPS, CONTEXT>
|
|
50
52
|
) => RETURN | ABORT | undefined
|
|
51
53
|
|
|
52
54
|
export type ExactShape<EXPECTED, ACTUAL extends EXPECTED> = ACTUAL &
|
|
@@ -76,24 +78,24 @@ type ResolvedNonStateSinkReturns<SINK_RETURNS extends NonStateSinkReturns = {}>
|
|
|
76
78
|
* - true: Whatever value is received from the intent for this action is passed on as-is.
|
|
77
79
|
* - Function: A reducer
|
|
78
80
|
*/
|
|
79
|
-
type SinkValue<STATE, PROPS, ACTIONS, DATA, RETURN, CALCULATED> =
|
|
81
|
+
type SinkValue<STATE, PROPS, ACTIONS, DATA, RETURN, CALCULATED, CONTEXT = {}> =
|
|
80
82
|
| true
|
|
81
|
-
| Reducer<STATE & CALCULATED, PROPS, ACTIONS, DATA, RETURN>
|
|
83
|
+
| Reducer<STATE & CALCULATED, PROPS, ACTIONS, DATA, RETURN, CONTEXT>
|
|
82
84
|
|
|
83
|
-
type EffectReducer<STATE, PROPS, ACTIONS, DATA, CALCULATED> =
|
|
84
|
-
| ((state: STATE & CALCULATED, args: DATA, next: NextFunction<ACTIONS>, props: PROPS) => void)
|
|
85
|
+
type EffectReducer<STATE, PROPS, ACTIONS, DATA, CALCULATED, CONTEXT = {}> =
|
|
86
|
+
| ((state: STATE & CALCULATED, args: DATA, next: NextFunction<ACTIONS>, props: ReducerExtras<PROPS, CONTEXT>) => void)
|
|
85
87
|
|
|
86
|
-
type DefaultSinks<STATE, PROPS, ACTIONS, DATA, CALCULATED, SINK_RETURNS extends NonStateSinkReturns = {}> = {
|
|
87
|
-
STATE?: SinkValue<STATE, PROPS, ACTIONS, DATA, STATE, CALCULATED>;
|
|
88
|
-
EVENTS?: SinkValue<STATE, PROPS, ACTIONS, DATA, ResolvedNonStateSinkReturns<SINK_RETURNS>['EVENTS'], CALCULATED>;
|
|
89
|
-
LOG?: SinkValue<STATE, PROPS, ACTIONS, DATA, ResolvedNonStateSinkReturns<SINK_RETURNS>['LOG'], CALCULATED>;
|
|
90
|
-
PARENT?: SinkValue<STATE, PROPS, ACTIONS, DATA, ResolvedNonStateSinkReturns<SINK_RETURNS>['PARENT'], CALCULATED>;
|
|
91
|
-
EFFECT?: EffectReducer<STATE, PROPS, ACTIONS, DATA, CALCULATED>;
|
|
88
|
+
type DefaultSinks<STATE, PROPS, ACTIONS, DATA, CALCULATED, SINK_RETURNS extends NonStateSinkReturns = {}, CONTEXT = {}> = {
|
|
89
|
+
STATE?: SinkValue<STATE, PROPS, ACTIONS, DATA, STATE, CALCULATED, CONTEXT>;
|
|
90
|
+
EVENTS?: SinkValue<STATE, PROPS, ACTIONS, DATA, ResolvedNonStateSinkReturns<SINK_RETURNS>['EVENTS'], CALCULATED, CONTEXT>;
|
|
91
|
+
LOG?: SinkValue<STATE, PROPS, ACTIONS, DATA, ResolvedNonStateSinkReturns<SINK_RETURNS>['LOG'], CALCULATED, CONTEXT>;
|
|
92
|
+
PARENT?: SinkValue<STATE, PROPS, ACTIONS, DATA, ResolvedNonStateSinkReturns<SINK_RETURNS>['PARENT'], CALCULATED, CONTEXT>;
|
|
93
|
+
EFFECT?: EffectReducer<STATE, PROPS, ACTIONS, DATA, CALCULATED, CONTEXT>;
|
|
92
94
|
}
|
|
93
95
|
|
|
94
|
-
type CustomDriverSinks<STATE, PROPS, DRIVERS, ACTIONS, ACTION_ENTRY, CALCULATED> = keyof DRIVERS extends never
|
|
96
|
+
type CustomDriverSinks<STATE, PROPS, DRIVERS, ACTIONS, ACTION_ENTRY, CALCULATED, CONTEXT = {}> = keyof DRIVERS extends never
|
|
95
97
|
? {
|
|
96
|
-
[driver: string]: SinkValue<STATE, PROPS, ACTIONS, any, any, CALCULATED>
|
|
98
|
+
[driver: string]: SinkValue<STATE, PROPS, ACTIONS, any, any, CALCULATED, CONTEXT>
|
|
97
99
|
}
|
|
98
100
|
: {
|
|
99
101
|
[DRIVER_KEY in keyof DRIVERS]: SinkValue<
|
|
@@ -102,15 +104,16 @@ type CustomDriverSinks<STATE, PROPS, DRIVERS, ACTIONS, ACTION_ENTRY, CALCULATED>
|
|
|
102
104
|
ACTIONS,
|
|
103
105
|
ACTION_ENTRY,
|
|
104
106
|
DRIVERS[DRIVER_KEY] extends { source: any; sink: any } ? DRIVERS[DRIVER_KEY]['sink'] : any,
|
|
105
|
-
CALCULATED
|
|
107
|
+
CALCULATED,
|
|
108
|
+
CONTEXT
|
|
106
109
|
>
|
|
107
110
|
}
|
|
108
111
|
|
|
109
|
-
type ModelEntry<STATE, PROPS, DRIVERS, ACTIONS, ACTION_ENTRY, CALCULATED, SINK_RETURNS extends NonStateSinkReturns = {}> =
|
|
110
|
-
| SinkValue<STATE, PROPS, ACTIONS, ACTION_ENTRY, STATE, CALCULATED>
|
|
112
|
+
type ModelEntry<STATE, PROPS, DRIVERS, ACTIONS, ACTION_ENTRY, CALCULATED, SINK_RETURNS extends NonStateSinkReturns = {}, CONTEXT = {}> =
|
|
113
|
+
| SinkValue<STATE, PROPS, ACTIONS, ACTION_ENTRY, STATE, CALCULATED, CONTEXT>
|
|
111
114
|
| Partial<
|
|
112
|
-
DefaultSinks<STATE, PROPS, ACTIONS, ACTION_ENTRY, CALCULATED, SINK_RETURNS> &
|
|
113
|
-
CustomDriverSinks<STATE, PROPS, DRIVERS, ACTIONS, ACTION_ENTRY, CALCULATED>
|
|
115
|
+
DefaultSinks<STATE, PROPS, ACTIONS, ACTION_ENTRY, CALCULATED, SINK_RETURNS, CONTEXT> &
|
|
116
|
+
CustomDriverSinks<STATE, PROPS, DRIVERS, ACTIONS, ACTION_ENTRY, CALCULATED, CONTEXT>
|
|
114
117
|
>
|
|
115
118
|
|
|
116
119
|
type WithDefaultActions<STATE, ACTIONS> = ACTIONS & {
|
|
@@ -120,7 +123,7 @@ type WithDefaultActions<STATE, ACTIONS> = ACTIONS & {
|
|
|
120
123
|
DISPOSE?: never;
|
|
121
124
|
}
|
|
122
125
|
|
|
123
|
-
type ComponentModel<STATE, PROPS, DRIVERS, ACTIONS, CALCULATED, SINK_RETURNS extends NonStateSinkReturns = {}> = keyof ACTIONS extends never
|
|
126
|
+
type ComponentModel<STATE, PROPS, DRIVERS, ACTIONS, CALCULATED, SINK_RETURNS extends NonStateSinkReturns = {}, CONTEXT = {}> = keyof ACTIONS extends never
|
|
124
127
|
? {
|
|
125
128
|
[action: string]: ModelEntry<
|
|
126
129
|
STATE,
|
|
@@ -129,7 +132,8 @@ type ComponentModel<STATE, PROPS, DRIVERS, ACTIONS, CALCULATED, SINK_RETURNS ext
|
|
|
129
132
|
WithDefaultActions<STATE, { [action: string]: any }>,
|
|
130
133
|
any,
|
|
131
134
|
CALCULATED,
|
|
132
|
-
SINK_RETURNS
|
|
135
|
+
SINK_RETURNS,
|
|
136
|
+
CONTEXT
|
|
133
137
|
>
|
|
134
138
|
}
|
|
135
139
|
: {
|
|
@@ -140,7 +144,8 @@ type ComponentModel<STATE, PROPS, DRIVERS, ACTIONS, CALCULATED, SINK_RETURNS ext
|
|
|
140
144
|
WithDefaultActions<STATE, ACTIONS>,
|
|
141
145
|
WithDefaultActions<STATE, ACTIONS>[ACTION_KEY],
|
|
142
146
|
CALCULATED,
|
|
143
|
-
SINK_RETURNS
|
|
147
|
+
SINK_RETURNS,
|
|
148
|
+
CONTEXT
|
|
144
149
|
>
|
|
145
150
|
}
|
|
146
151
|
|
|
@@ -259,7 +264,7 @@ export type Component<
|
|
|
259
264
|
DOMSourceName?: string;
|
|
260
265
|
stateSourceName?: string;
|
|
261
266
|
requestSourceName?: string;
|
|
262
|
-
model?: ComponentModel<STATE, PROPS, FixDrivers<DRIVERS>, ACTIONS, CALCULATED, SINK_RETURNS>;
|
|
267
|
+
model?: ComponentModel<STATE, PROPS, FixDrivers<DRIVERS>, ACTIONS, CALCULATED, SINK_RETURNS, CONTEXT>;
|
|
263
268
|
intent?: ComponentIntent<STATE & CALCULATED, FixDrivers<DRIVERS>, ACTIONS>;
|
|
264
269
|
initialState?: STATE;
|
|
265
270
|
calculated?: Calculated<STATE, CALCULATED>;
|
package/dist/index.esm.js
CHANGED
|
@@ -6488,6 +6488,13 @@ function processSSRTree(vnode, context, parentState) {
|
|
|
6488
6488
|
if (typeof vnode === 'string' || vnode.text != null)
|
|
6489
6489
|
return vnode;
|
|
6490
6490
|
const sel = vnode.sel;
|
|
6491
|
+
// Fragment: no selector, recurse into children
|
|
6492
|
+
if (!sel && vnode.children && Array.isArray(vnode.children)) {
|
|
6493
|
+
vnode.children = vnode.children
|
|
6494
|
+
.map((c) => processSSRTree(c, context, parentState))
|
|
6495
|
+
.filter((c) => c != null);
|
|
6496
|
+
return vnode;
|
|
6497
|
+
}
|
|
6491
6498
|
// Portal: render children inline (no target container on server)
|
|
6492
6499
|
if (sel === 'portal') {
|
|
6493
6500
|
const children = vnode.children || [];
|
|
@@ -6867,6 +6874,10 @@ function vnodeToHtml(vnode) {
|
|
|
6867
6874
|
if (!sel) {
|
|
6868
6875
|
if (vnode.text != null)
|
|
6869
6876
|
return escapeHtml(String(vnode.text));
|
|
6877
|
+
// Fragment: no selector, but has children — concatenate child HTML
|
|
6878
|
+
if (vnode.children && Array.isArray(vnode.children)) {
|
|
6879
|
+
return vnode.children.map((c) => vnodeToHtml(c)).join('');
|
|
6880
|
+
}
|
|
6870
6881
|
return '';
|
|
6871
6882
|
}
|
|
6872
6883
|
// Parse selector: tag#id.class1.class2
|