solid-js 1.5.0-beta.2 → 1.5.0-beta.5
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/dev.cjs +97 -72
- package/dist/dev.js +97 -72
- package/dist/server.cjs +14 -5
- package/dist/server.js +14 -5
- package/dist/solid.cjs +97 -72
- package/dist/solid.js +97 -72
- package/h/jsx-runtime/types/jsx.d.ts +1 -1
- package/package.json +5 -1
- package/store/types/store.d.ts +2 -2
- package/types/index.d.ts +1 -1
- package/types/jsx.d.ts +2 -2
- package/types/reactive/signal.d.ts +10 -6
- package/types/render/flow.d.ts +18 -1
- package/types/server/reactive.d.ts +5 -1
- package/types/server/rendering.d.ts +10 -4
- package/universal/dist/dev.cjs +4 -1
- package/universal/dist/dev.js +5 -2
- package/universal/dist/universal.cjs +4 -1
- package/universal/dist/universal.js +5 -2
- package/web/dist/dev.cjs +13 -7
- package/web/dist/dev.js +8 -6
- package/web/dist/server.cjs +288 -221
- package/web/dist/server.js +286 -222
- package/web/dist/web.cjs +13 -7
- package/web/dist/web.js +8 -6
- package/web/types/client.d.ts +3 -0
- package/web/types/server-mock.d.ts +4 -1
- package/web/types/server.d.ts +2 -0
- package/jsx-runtime.d.ts +0 -1
package/web/dist/server.cjs
CHANGED
|
@@ -13,225 +13,255 @@ const Aliases = {
|
|
|
13
13
|
htmlFor: "for"
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
function devalue(value) {
|
|
35
|
-
var counts = new Map();
|
|
36
|
-
function walk(thing) {
|
|
37
|
-
if (typeof thing === 'function') {
|
|
38
|
-
throw new Error("Cannot stringify a function");
|
|
16
|
+
const {
|
|
17
|
+
hasOwnProperty
|
|
18
|
+
} = Object.prototype;
|
|
19
|
+
const REF_START_CHARS = "hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_";
|
|
20
|
+
const REF_START_CHARS_LEN = REF_START_CHARS.length;
|
|
21
|
+
const REF_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_";
|
|
22
|
+
const REF_CHARS_LEN = REF_CHARS.length;
|
|
23
|
+
const STACK = [];
|
|
24
|
+
const BUFFER = [""];
|
|
25
|
+
let ASSIGNMENTS = new Map();
|
|
26
|
+
let INDEX_OR_REF = new WeakMap();
|
|
27
|
+
let REF_COUNT = 0;
|
|
28
|
+
BUFFER.pop();
|
|
29
|
+
function stringify(root) {
|
|
30
|
+
if (writeProp(root, "")) {
|
|
31
|
+
let result = BUFFER[0];
|
|
32
|
+
for (let i = 1, len = BUFFER.length; i < len; i++) {
|
|
33
|
+
result += BUFFER[i];
|
|
39
34
|
}
|
|
40
|
-
if (
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
if (REF_COUNT) {
|
|
36
|
+
if (ASSIGNMENTS.size) {
|
|
37
|
+
let ref = INDEX_OR_REF.get(root);
|
|
38
|
+
if (typeof ref === "number") {
|
|
39
|
+
ref = toRefParam(REF_COUNT++);
|
|
40
|
+
result = ref + "=" + result;
|
|
41
|
+
}
|
|
42
|
+
for (const [assignmentRef, assignments] of ASSIGNMENTS) {
|
|
43
|
+
result += ";" + assignments + assignmentRef;
|
|
44
|
+
}
|
|
45
|
+
result += ";return " + ref;
|
|
46
|
+
ASSIGNMENTS = new Map();
|
|
47
|
+
} else {
|
|
48
|
+
result = "return " + result;
|
|
49
|
+
}
|
|
50
|
+
result = "(function(" + refParamsString() + "){" + result + "}())";
|
|
51
|
+
} else if (root && root.constructor === Object) {
|
|
52
|
+
result = "(" + result + ")";
|
|
43
53
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
54
|
+
BUFFER.length = 0;
|
|
55
|
+
INDEX_OR_REF = new WeakMap();
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
return "void 0";
|
|
59
|
+
}
|
|
60
|
+
function writeProp(cur, accessor) {
|
|
61
|
+
switch (typeof cur) {
|
|
62
|
+
case "string":
|
|
63
|
+
BUFFER.push(quote(cur, 0));
|
|
64
|
+
break;
|
|
65
|
+
case "number":
|
|
66
|
+
BUFFER.push(cur + "");
|
|
67
|
+
break;
|
|
68
|
+
case "boolean":
|
|
69
|
+
BUFFER.push(cur ? "!0" : "!1");
|
|
70
|
+
break;
|
|
71
|
+
case "object":
|
|
72
|
+
if (cur === null) {
|
|
73
|
+
BUFFER.push("null");
|
|
74
|
+
} else {
|
|
75
|
+
const ref = getRef(cur, accessor);
|
|
76
|
+
switch (ref) {
|
|
77
|
+
case true:
|
|
78
|
+
return false;
|
|
79
|
+
case false:
|
|
80
|
+
switch (cur.constructor) {
|
|
81
|
+
case Object:
|
|
82
|
+
writeObject(cur);
|
|
83
|
+
break;
|
|
84
|
+
case Array:
|
|
85
|
+
writeArray(cur);
|
|
86
|
+
break;
|
|
87
|
+
case Date:
|
|
88
|
+
BUFFER.push('new Date("' + cur.toISOString() + '")');
|
|
89
|
+
break;
|
|
90
|
+
case RegExp:
|
|
91
|
+
BUFFER.push(cur + "");
|
|
92
|
+
break;
|
|
93
|
+
case Map:
|
|
94
|
+
BUFFER.push("new Map(");
|
|
95
|
+
writeArray(Array.from(cur));
|
|
96
|
+
BUFFER.push(")");
|
|
97
|
+
break;
|
|
98
|
+
case Set:
|
|
99
|
+
BUFFER.push("new Set(");
|
|
100
|
+
writeArray(Array.from(cur));
|
|
101
|
+
BUFFER.push(")");
|
|
102
|
+
break;
|
|
103
|
+
case undefined:
|
|
104
|
+
BUFFER.push("Object.assign(Object.create(null),");
|
|
105
|
+
writeObject(cur);
|
|
106
|
+
BUFFER.push("))");
|
|
107
|
+
break;
|
|
108
|
+
default:
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
break;
|
|
112
|
+
default:
|
|
113
|
+
BUFFER.push(ref);
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
default:
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
function writeObject(obj) {
|
|
124
|
+
let sep = "{";
|
|
125
|
+
STACK.push(obj);
|
|
126
|
+
for (const key in obj) {
|
|
127
|
+
if (hasOwnProperty.call(obj, key)) {
|
|
128
|
+
const val = obj[key];
|
|
129
|
+
const escapedKey = toObjectKey(key);
|
|
130
|
+
BUFFER.push(sep + escapedKey + ":");
|
|
131
|
+
if (writeProp(val, escapedKey)) {
|
|
132
|
+
sep = ",";
|
|
133
|
+
} else {
|
|
134
|
+
BUFFER.pop();
|
|
72
135
|
}
|
|
73
136
|
}
|
|
74
137
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
138
|
+
if (sep === "{") {
|
|
139
|
+
BUFFER.push("{}");
|
|
140
|
+
} else {
|
|
141
|
+
BUFFER.push("}");
|
|
142
|
+
}
|
|
143
|
+
STACK.pop();
|
|
144
|
+
}
|
|
145
|
+
function writeArray(arr) {
|
|
146
|
+
BUFFER.push("[");
|
|
147
|
+
STACK.push(arr);
|
|
148
|
+
writeProp(arr[0], 0);
|
|
149
|
+
for (let i = 1, len = arr.length; i < len; i++) {
|
|
150
|
+
BUFFER.push(",");
|
|
151
|
+
writeProp(arr[i], i);
|
|
152
|
+
}
|
|
153
|
+
STACK.pop();
|
|
154
|
+
BUFFER.push("]");
|
|
155
|
+
}
|
|
156
|
+
function getRef(cur, accessor) {
|
|
157
|
+
let ref = INDEX_OR_REF.get(cur);
|
|
158
|
+
if (ref === undefined) {
|
|
159
|
+
INDEX_OR_REF.set(cur, BUFFER.length);
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
if (typeof ref === "number") {
|
|
163
|
+
ref = insertAndGetRef(cur, ref);
|
|
164
|
+
}
|
|
165
|
+
if (STACK.includes(cur)) {
|
|
166
|
+
const parent = STACK[STACK.length - 1];
|
|
167
|
+
let parentRef = INDEX_OR_REF.get(parent);
|
|
168
|
+
if (typeof parentRef === "number") {
|
|
169
|
+
parentRef = insertAndGetRef(parent, parentRef);
|
|
87
170
|
}
|
|
88
|
-
|
|
89
|
-
|
|
171
|
+
ASSIGNMENTS.set(ref, (ASSIGNMENTS.get(ref) || "") + toAssignment(parentRef, accessor) + "=");
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
return ref;
|
|
175
|
+
}
|
|
176
|
+
function toObjectKey(name) {
|
|
177
|
+
const invalidIdentifierPos = getInvalidIdentifierPos(name);
|
|
178
|
+
return invalidIdentifierPos === -1 ? name : quote(name, invalidIdentifierPos);
|
|
179
|
+
}
|
|
180
|
+
function toAssignment(parent, key) {
|
|
181
|
+
return parent + (typeof key === "number" || key[0] === '"' ? "[" + key + "]" : "." + key);
|
|
182
|
+
}
|
|
183
|
+
function getInvalidIdentifierPos(name) {
|
|
184
|
+
let char = name[0];
|
|
185
|
+
if (!(char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char === "$" || char === "_")) {
|
|
186
|
+
return 0;
|
|
187
|
+
}
|
|
188
|
+
for (let i = 1, len = name.length; i < len; i++) {
|
|
189
|
+
char = name[i];
|
|
190
|
+
if (!(char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char >= "0" && char <= "9" || char === "$" || char === "_")) {
|
|
191
|
+
return i;
|
|
90
192
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
193
|
+
}
|
|
194
|
+
return -1;
|
|
195
|
+
}
|
|
196
|
+
function quote(str, startPos) {
|
|
197
|
+
let result = "";
|
|
198
|
+
let lastPos = 0;
|
|
199
|
+
for (let i = startPos, len = str.length; i < len; i++) {
|
|
200
|
+
let replacement;
|
|
201
|
+
switch (str[i]) {
|
|
202
|
+
case '"':
|
|
203
|
+
replacement = '\\"';
|
|
204
|
+
break;
|
|
205
|
+
case "\\":
|
|
206
|
+
replacement = "\\\\";
|
|
207
|
+
break;
|
|
208
|
+
case "<":
|
|
209
|
+
replacement = "\\x3C";
|
|
210
|
+
break;
|
|
211
|
+
case "\n":
|
|
212
|
+
replacement = "\\n";
|
|
213
|
+
break;
|
|
214
|
+
case "\r":
|
|
215
|
+
replacement = "\\r";
|
|
216
|
+
break;
|
|
217
|
+
case "\u2028":
|
|
218
|
+
replacement = "\\u2028";
|
|
219
|
+
break;
|
|
220
|
+
case "\u2029":
|
|
221
|
+
replacement = "\\u2029";
|
|
222
|
+
break;
|
|
110
223
|
default:
|
|
111
|
-
|
|
112
|
-
return safeKey(key) + ":" + stringify(thing[key]);
|
|
113
|
-
}).join(',') + "}";
|
|
114
|
-
var proto = Object.getPrototypeOf(thing);
|
|
115
|
-
if (proto === null) {
|
|
116
|
-
return Object.keys(thing).length > 0 ? "Object.assign(Object.create(null)," + obj + ")" : "Object.create(null)";
|
|
117
|
-
}
|
|
118
|
-
return obj;
|
|
224
|
+
continue;
|
|
119
225
|
}
|
|
226
|
+
result += str.slice(lastPos, i) + replacement;
|
|
227
|
+
lastPos = i + 1;
|
|
120
228
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
var params_1 = [];
|
|
124
|
-
var statements_1 = [];
|
|
125
|
-
var values_1 = [];
|
|
126
|
-
names.forEach(function (name, thing) {
|
|
127
|
-
params_1.push(name);
|
|
128
|
-
if (isPrimitive(thing)) {
|
|
129
|
-
values_1.push(stringifyPrimitive(thing));
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
var type = getType(thing);
|
|
133
|
-
switch (type) {
|
|
134
|
-
case 'Number':
|
|
135
|
-
case 'String':
|
|
136
|
-
case 'Boolean':
|
|
137
|
-
values_1.push("Object(" + stringify(thing.valueOf()) + ")");
|
|
138
|
-
break;
|
|
139
|
-
case 'RegExp':
|
|
140
|
-
values_1.push(thing.toString());
|
|
141
|
-
break;
|
|
142
|
-
case 'Date':
|
|
143
|
-
values_1.push("new Date(" + thing.getTime() + ")");
|
|
144
|
-
break;
|
|
145
|
-
case 'Array':
|
|
146
|
-
values_1.push("Array(" + thing.length + ")");
|
|
147
|
-
thing.forEach(function (v, i) {
|
|
148
|
-
statements_1.push(name + "[" + i + "]=" + stringify(v));
|
|
149
|
-
});
|
|
150
|
-
break;
|
|
151
|
-
case 'Set':
|
|
152
|
-
values_1.push("new Set");
|
|
153
|
-
statements_1.push(name + "." + Array.from(thing).map(function (v) {
|
|
154
|
-
return "add(" + stringify(v) + ")";
|
|
155
|
-
}).join('.'));
|
|
156
|
-
break;
|
|
157
|
-
case 'Map':
|
|
158
|
-
values_1.push("new Map");
|
|
159
|
-
statements_1.push(name + "." + Array.from(thing).map(function (_a) {
|
|
160
|
-
var k = _a[0],
|
|
161
|
-
v = _a[1];
|
|
162
|
-
return "set(" + stringify(k) + ", " + stringify(v) + ")";
|
|
163
|
-
}).join('.'));
|
|
164
|
-
break;
|
|
165
|
-
default:
|
|
166
|
-
values_1.push(Object.getPrototypeOf(thing) === null ? 'Object.create(null)' : '{}');
|
|
167
|
-
Object.keys(thing).forEach(function (key) {
|
|
168
|
-
statements_1.push("" + name + safeProp(key) + "=" + stringify(thing[key]));
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
statements_1.push("return " + str);
|
|
173
|
-
return "(function(" + params_1.join(',') + "){" + statements_1.join(';') + "}(" + values_1.join(',') + "))";
|
|
229
|
+
if (lastPos === startPos) {
|
|
230
|
+
result = str;
|
|
174
231
|
} else {
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
return
|
|
188
|
-
}
|
|
189
|
-
function
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
var str = String(thing);
|
|
194
|
-
if (typeof thing === 'number') return str.replace(/^(-)?0\./, '$1.');
|
|
195
|
-
return str;
|
|
196
|
-
}
|
|
197
|
-
function getType(thing) {
|
|
198
|
-
return Object.prototype.toString.call(thing).slice(8, -1);
|
|
199
|
-
}
|
|
200
|
-
function escapeUnsafeChar(c) {
|
|
201
|
-
return escaped[c] || c;
|
|
202
|
-
}
|
|
203
|
-
function escapeUnsafeChars(str) {
|
|
204
|
-
return str.replace(unsafeChars, escapeUnsafeChar);
|
|
205
|
-
}
|
|
206
|
-
function safeKey(key) {
|
|
207
|
-
return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? key : escapeUnsafeChars(JSON.stringify(key));
|
|
208
|
-
}
|
|
209
|
-
function safeProp(key) {
|
|
210
|
-
return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? "." + key : "[" + escapeUnsafeChars(JSON.stringify(key)) + "]";
|
|
211
|
-
}
|
|
212
|
-
function stringifyString(str) {
|
|
213
|
-
var result = '"';
|
|
214
|
-
for (var i = 0; i < str.length; i += 1) {
|
|
215
|
-
var char = str.charAt(i);
|
|
216
|
-
var code = char.charCodeAt(0);
|
|
217
|
-
if (char === '"') {
|
|
218
|
-
result += '\\"';
|
|
219
|
-
} else if (char in escaped) {
|
|
220
|
-
result += escaped[char];
|
|
221
|
-
} else if (code >= 0xd800 && code <= 0xdfff) {
|
|
222
|
-
var next = str.charCodeAt(i + 1);
|
|
223
|
-
if (code <= 0xdbff && next >= 0xdc00 && next <= 0xdfff) {
|
|
224
|
-
result += char + str[++i];
|
|
225
|
-
} else {
|
|
226
|
-
result += "\\u" + code.toString(16).toUpperCase();
|
|
227
|
-
}
|
|
228
|
-
} else {
|
|
229
|
-
result += char;
|
|
230
|
-
}
|
|
232
|
+
result += str.slice(lastPos);
|
|
233
|
+
}
|
|
234
|
+
return '"' + result + '"';
|
|
235
|
+
}
|
|
236
|
+
function insertAndGetRef(obj, pos) {
|
|
237
|
+
const ref = toRefParam(REF_COUNT++);
|
|
238
|
+
INDEX_OR_REF.set(obj, ref);
|
|
239
|
+
if (pos) {
|
|
240
|
+
BUFFER[pos - 1] += ref + "=";
|
|
241
|
+
} else {
|
|
242
|
+
BUFFER[pos] = ref + "=" + BUFFER[pos];
|
|
243
|
+
}
|
|
244
|
+
return ref;
|
|
245
|
+
}
|
|
246
|
+
function refParamsString() {
|
|
247
|
+
let result = REF_START_CHARS[0];
|
|
248
|
+
for (let i = 1; i < REF_COUNT; i++) {
|
|
249
|
+
result += "," + toRefParam(i);
|
|
231
250
|
}
|
|
232
|
-
|
|
251
|
+
REF_COUNT = 0;
|
|
233
252
|
return result;
|
|
234
253
|
}
|
|
254
|
+
function toRefParam(index) {
|
|
255
|
+
let mod = index % REF_START_CHARS_LEN;
|
|
256
|
+
let ref = REF_START_CHARS[mod];
|
|
257
|
+
index = (index - mod) / REF_START_CHARS_LEN;
|
|
258
|
+
while (index > 0) {
|
|
259
|
+
mod = index % REF_CHARS_LEN;
|
|
260
|
+
ref += REF_CHARS[mod];
|
|
261
|
+
index = (index - mod) / REF_CHARS_LEN;
|
|
262
|
+
}
|
|
263
|
+
return ref;
|
|
264
|
+
}
|
|
235
265
|
|
|
236
266
|
const REPLACE_SCRIPT = `function $df(e,t,d,l){d=document.getElementById(e),(l=document.getElementById("pl-"+e))&&l.replaceWith(...d.childNodes),d.remove(),_$HY.set(e,t)}`;
|
|
237
267
|
function renderToString(code, options = {}) {
|
|
@@ -244,7 +274,7 @@ function renderToString(code, options = {}) {
|
|
|
244
274
|
nonce: options.nonce,
|
|
245
275
|
writeResource(id, p, error) {
|
|
246
276
|
if (error) return scripts += `_$HY.set("${id}", ${serializeError(p)});`;
|
|
247
|
-
scripts += `_$HY.set("${id}", ${
|
|
277
|
+
scripts += `_$HY.set("${id}", ${stringify(p)});`;
|
|
248
278
|
}
|
|
249
279
|
};
|
|
250
280
|
let html = injectAssets(solidJs.sharedConfig.context.assets, resolveSSRNode(escape(code())));
|
|
@@ -430,22 +460,16 @@ function renderToStream(code, options = {}) {
|
|
|
430
460
|
};
|
|
431
461
|
}
|
|
432
462
|
function Assets(props) {
|
|
433
|
-
|
|
434
|
-
get children() {
|
|
435
|
-
return resolveSSRNode(props.children);
|
|
436
|
-
}
|
|
437
|
-
}));
|
|
438
|
-
return ssr(`%%$${solidJs.sharedConfig.context.assets.length - 1}%%`);
|
|
463
|
+
useAssets(() => props.children);
|
|
439
464
|
}
|
|
440
465
|
function HydrationScript(props) {
|
|
441
466
|
const {
|
|
442
467
|
nonce
|
|
443
468
|
} = solidJs.sharedConfig.context;
|
|
444
|
-
|
|
469
|
+
return ssr(generateHydrationScript({
|
|
445
470
|
nonce,
|
|
446
471
|
...props
|
|
447
472
|
}));
|
|
448
|
-
return ssr(`%%$${solidJs.sharedConfig.context.assets.length - 1}%%`);
|
|
449
473
|
}
|
|
450
474
|
function NoHydration(props) {
|
|
451
475
|
const c = solidJs.sharedConfig.context;
|
|
@@ -591,6 +615,15 @@ function getHydrationKey() {
|
|
|
591
615
|
const hydrate = solidJs.sharedConfig.context;
|
|
592
616
|
return hydrate && !hydrate.noHydrate && `${hydrate.id}${hydrate.count++}`;
|
|
593
617
|
}
|
|
618
|
+
function useAssets(fn) {
|
|
619
|
+
solidJs.sharedConfig.context.assets.push(() => resolveSSRNode(fn()));
|
|
620
|
+
}
|
|
621
|
+
function getAssets() {
|
|
622
|
+
const assets = solidJs.sharedConfig.context.assets;
|
|
623
|
+
let out = "";
|
|
624
|
+
for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();
|
|
625
|
+
return out;
|
|
626
|
+
}
|
|
594
627
|
function generateHydrationScript({
|
|
595
628
|
eventNames = ["click", "input"],
|
|
596
629
|
nonce
|
|
@@ -598,10 +631,10 @@ function generateHydrationScript({
|
|
|
598
631
|
return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=t=>e.r[t];</script><!--xs-->`;
|
|
599
632
|
}
|
|
600
633
|
function injectAssets(assets, html) {
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
return html;
|
|
634
|
+
if (!assets || !assets.length) return html;
|
|
635
|
+
let out = "";
|
|
636
|
+
for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();
|
|
637
|
+
return html.replace(`<head>`, `<head>` + out);
|
|
605
638
|
}
|
|
606
639
|
function injectScripts(html, scripts, nonce) {
|
|
607
640
|
const tag = `<script${nonce ? ` nonce="${nonce}"` : ""}>${scripts}</script>`;
|
|
@@ -622,9 +655,9 @@ function serializeError(error) {
|
|
|
622
655
|
fields[key] = value;
|
|
623
656
|
}
|
|
624
657
|
}
|
|
625
|
-
return `Object.assign(new Error(${
|
|
658
|
+
return `Object.assign(new Error(${stringify(error.message)}), ${stringify(fields)})`;
|
|
626
659
|
}
|
|
627
|
-
return
|
|
660
|
+
return stringify(error);
|
|
628
661
|
}
|
|
629
662
|
function waitForFragments(registry, key) {
|
|
630
663
|
for (const k of [...registry.keys()].reverse()) {
|
|
@@ -635,7 +668,7 @@ function waitForFragments(registry, key) {
|
|
|
635
668
|
}
|
|
636
669
|
return false;
|
|
637
670
|
}
|
|
638
|
-
function serializeSet(registry, key, value, serializer =
|
|
671
|
+
function serializeSet(registry, key, value, serializer = stringify) {
|
|
639
672
|
const exist = registry.get(value);
|
|
640
673
|
if (exist) return `_$HY.set("${key}", _$HY.r["${exist}"][0])`;
|
|
641
674
|
value !== null && typeof value === "object" && registry.set(value, key);
|
|
@@ -690,6 +723,37 @@ function pipeToWritable(code, writable, options = {}) {
|
|
|
690
723
|
const stream = renderToStream(code, options);
|
|
691
724
|
if (!options.onReady) stream.pipeTo(writable);
|
|
692
725
|
}
|
|
726
|
+
function ssrSpread(props, isSVG, skipChildren) {
|
|
727
|
+
let result = "";
|
|
728
|
+
if (props == null) return results;
|
|
729
|
+
if (typeof props === "function") props = props();
|
|
730
|
+
const keys = Object.keys(props);
|
|
731
|
+
let classResolved;
|
|
732
|
+
for (let i = 0; i < keys.length; i++) {
|
|
733
|
+
const prop = keys[i];
|
|
734
|
+
if (prop === "children") {
|
|
735
|
+
!skipChildren && console.warn(`SSR currently does not support spread children.`);
|
|
736
|
+
continue;
|
|
737
|
+
}
|
|
738
|
+
const value = props[prop];
|
|
739
|
+
if (prop === "style") {
|
|
740
|
+
result += `style="${ssrStyle(value)}"`;
|
|
741
|
+
} else if (prop === "class" || prop === "className" || prop === "classList") {
|
|
742
|
+
if (classResolved) continue;
|
|
743
|
+
let n;
|
|
744
|
+
result += `class="${(n = props.class) ? n + " " : ""}${(n = props.className) ? n + " " : ""}${ssrClassList(props.classList)}"`;
|
|
745
|
+
classResolved = true;
|
|
746
|
+
} else if (BooleanAttributes.has(prop)) {
|
|
747
|
+
if (value) result += prop;else continue;
|
|
748
|
+
} else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on") {
|
|
749
|
+
continue;
|
|
750
|
+
} else {
|
|
751
|
+
result += `${Aliases[prop] || prop}="${escape(value, true)}"`;
|
|
752
|
+
}
|
|
753
|
+
if (i !== keys.length - 1) result += " ";
|
|
754
|
+
}
|
|
755
|
+
return result;
|
|
756
|
+
}
|
|
693
757
|
|
|
694
758
|
const isServer = true;
|
|
695
759
|
function spread() {}
|
|
@@ -754,6 +818,7 @@ exports.NoHydration = NoHydration;
|
|
|
754
818
|
exports.Portal = Portal;
|
|
755
819
|
exports.escape = escape;
|
|
756
820
|
exports.generateHydrationScript = generateHydrationScript;
|
|
821
|
+
exports.getAssets = getAssets;
|
|
757
822
|
exports.getHydrationKey = getHydrationKey;
|
|
758
823
|
exports.isServer = isServer;
|
|
759
824
|
exports.pipeToNodeWritable = pipeToNodeWritable;
|
|
@@ -768,4 +833,6 @@ exports.ssrAttribute = ssrAttribute;
|
|
|
768
833
|
exports.ssrClassList = ssrClassList;
|
|
769
834
|
exports.ssrElement = ssrElement;
|
|
770
835
|
exports.ssrHydrationKey = ssrHydrationKey;
|
|
836
|
+
exports.ssrSpread = ssrSpread;
|
|
771
837
|
exports.ssrStyle = ssrStyle;
|
|
838
|
+
exports.useAssets = useAssets;
|