@solidjs/web 2.0.0-beta.6 → 2.0.0-beta.7
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 +78 -37
- package/dist/dev.js +75 -38
- package/dist/server.cjs +77 -79
- package/dist/server.js +77 -79
- package/dist/web.cjs +74 -34
- package/dist/web.js +71 -35
- package/package.json +72 -30
- package/storage/package.json +8 -3
- package/storage/types/src/index.d.ts +1 -1
- package/storage/types-cjs/index.d.cts +2 -0
- package/storage/types-cjs/package.json +3 -0
- package/storage/types-cjs/src/client.d.cts +1 -0
- package/storage/types-cjs/src/index.d.cts +46 -0
- package/storage/types-cjs/src/server-mock.d.cts +72 -0
- package/storage/types-cjs/storage/src/index.d.cts +2 -0
- package/types/client.d.ts +9 -3
- package/types/core.d.ts +1 -1
- package/types/index.d.ts +1 -1
- package/types/server.d.ts +9 -3
- package/types-cjs/client.d.cts +93 -0
- package/types-cjs/core.d.cts +3 -0
- package/types-cjs/index.d.cts +46 -0
- package/types-cjs/jsx.d.cts +1 -0
- package/types-cjs/package.json +3 -0
- package/types-cjs/server-mock.d.cts +72 -0
- package/types-cjs/server.d.cts +161 -0
package/dist/server.cjs
CHANGED
|
@@ -5,39 +5,6 @@ var seroval = require('seroval');
|
|
|
5
5
|
var web = require('seroval-plugins/web');
|
|
6
6
|
var signals = require('@solidjs/signals');
|
|
7
7
|
|
|
8
|
-
const DOMWithState = {
|
|
9
|
-
INPUT: {
|
|
10
|
-
value: 1,
|
|
11
|
-
defaultValue: 1,
|
|
12
|
-
checked: 1,
|
|
13
|
-
defaultChecked: 1
|
|
14
|
-
},
|
|
15
|
-
SELECT: {
|
|
16
|
-
value: 1
|
|
17
|
-
},
|
|
18
|
-
OPTION: {
|
|
19
|
-
value: 1,
|
|
20
|
-
selected: 1,
|
|
21
|
-
defaultSelected: 1
|
|
22
|
-
},
|
|
23
|
-
TEXTAREA: {
|
|
24
|
-
value: 1,
|
|
25
|
-
defaultValue: 1
|
|
26
|
-
},
|
|
27
|
-
VIDEO: {
|
|
28
|
-
muted: 1,
|
|
29
|
-
defaultMuted: 1
|
|
30
|
-
},
|
|
31
|
-
AUDIO: {
|
|
32
|
-
muted: 1,
|
|
33
|
-
defaultMuted: 1
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
for (const tagName in DOMWithState) {
|
|
37
|
-
for (const propName in DOMWithState[tagName]) {
|
|
38
|
-
DOMWithState[tagName]["prop:" + propName] = 1;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
8
|
const ChildProperties = /*#__PURE__*/new Set(["innerHTML", "textContent", "innerText", "children"]);
|
|
42
9
|
const DelegatedEvents = /*#__PURE__*/new Set(["beforeinput", "click", "dblclick", "contextmenu", "focusin", "focusout", "input", "keydown", "keyup", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "pointerdown", "pointermove", "pointerout", "pointerover", "pointerup", "touchend", "touchmove", "touchstart"]);
|
|
43
10
|
const SVGElements = /*#__PURE__*/new Set([
|
|
@@ -56,10 +23,10 @@ const DOMElements = /*#__PURE__*/new Set(["html", "base", "head", "link", "meta"
|
|
|
56
23
|
"webview",
|
|
57
24
|
"isindex", "listing", "multicol", "nextid", "noindex", "search"]);
|
|
58
25
|
|
|
59
|
-
const effect = (fn, effectFn
|
|
26
|
+
const effect = (fn, effectFn) => solidJs.createRenderEffect(fn, effectFn, {
|
|
60
27
|
transparent: true
|
|
61
28
|
});
|
|
62
|
-
const memo = (fn, transparent) => transparent ? fn.$r ? fn : signals.createMemo(() => fn(),
|
|
29
|
+
const memo = (fn, transparent) => transparent ? fn.$r ? fn : signals.createMemo(() => fn(), {
|
|
63
30
|
transparent: true
|
|
64
31
|
}) : solidJs.createMemo(() => fn());
|
|
65
32
|
|
|
@@ -144,11 +111,11 @@ function createAssetTracking() {
|
|
|
144
111
|
currentBoundaryId = v;
|
|
145
112
|
},
|
|
146
113
|
registerModule(moduleUrl, entryUrl) {
|
|
147
|
-
|
|
148
|
-
let map = boundaryModules.get(
|
|
114
|
+
const id = currentBoundaryId || "";
|
|
115
|
+
let map = boundaryModules.get(id);
|
|
149
116
|
if (!map) {
|
|
150
117
|
map = {};
|
|
151
|
-
boundaryModules.set(
|
|
118
|
+
boundaryModules.set(id, map);
|
|
152
119
|
}
|
|
153
120
|
map[moduleUrl] = entryUrl;
|
|
154
121
|
},
|
|
@@ -231,6 +198,7 @@ function renderToString(code, options = {}) {
|
|
|
231
198
|
}, {
|
|
232
199
|
id: renderId
|
|
233
200
|
});
|
|
201
|
+
serializeFragmentAssets("", tracking.boundaryModules, solidJs.sharedConfig.context);
|
|
234
202
|
solidJs.sharedConfig.context.noHydrate = true;
|
|
235
203
|
serializer.close();
|
|
236
204
|
html = injectAssets(solidJs.sharedConfig.context.assets, html);
|
|
@@ -249,10 +217,12 @@ function renderToStream(code, options = {}) {
|
|
|
249
217
|
} = options;
|
|
250
218
|
let dispose;
|
|
251
219
|
const blockingPromises = new Set();
|
|
220
|
+
let headerEmitted = false;
|
|
252
221
|
const pushTask = task => {
|
|
253
222
|
if (noScripts) return;
|
|
254
|
-
if (!
|
|
255
|
-
|
|
223
|
+
if (!headerEmitted) {
|
|
224
|
+
headerEmitted = true;
|
|
225
|
+
tasks += getLocalHeaderScript(renderId);
|
|
256
226
|
}
|
|
257
227
|
tasks += task + ";";
|
|
258
228
|
if (!timer && firstFlushed) {
|
|
@@ -487,13 +457,32 @@ function renderToStream(code, options = {}) {
|
|
|
487
457
|
function doShell() {
|
|
488
458
|
if (shellCompleted) return;
|
|
489
459
|
if (rootHoles) {
|
|
460
|
+
const pending = [];
|
|
490
461
|
for (const {
|
|
491
462
|
id,
|
|
492
463
|
fn
|
|
493
464
|
} of rootHoles) {
|
|
494
465
|
const marker = `<!--rh${id}-->`;
|
|
495
466
|
const res = resolveSSRNode(fn);
|
|
496
|
-
|
|
467
|
+
if (!res.h.length) {
|
|
468
|
+
html = html.replace(marker, res.t[0]);
|
|
469
|
+
} else {
|
|
470
|
+
let out = res.t[0];
|
|
471
|
+
for (let j = 0; j < res.h.length; j++) {
|
|
472
|
+
const newId = nextHoleId++;
|
|
473
|
+
pending.push({
|
|
474
|
+
id: newId,
|
|
475
|
+
fn: res.h[j]
|
|
476
|
+
});
|
|
477
|
+
out += `<!--rh${newId}-->` + res.t[j + 1];
|
|
478
|
+
}
|
|
479
|
+
html = html.replace(marker, out);
|
|
480
|
+
for (const p of res.p) blockingPromises.add(p);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
if (pending.length) {
|
|
484
|
+
rootHoles = pending;
|
|
485
|
+
return;
|
|
497
486
|
}
|
|
498
487
|
rootHoles = null;
|
|
499
488
|
}
|
|
@@ -504,6 +493,7 @@ function renderToStream(code, options = {}) {
|
|
|
504
493
|
if (url.endsWith(".css")) headStyles.add(url);
|
|
505
494
|
}
|
|
506
495
|
html = injectPreloadLinks(tracking.emittedAssets, html);
|
|
496
|
+
serializeFragmentAssets("", tracking.boundaryModules, context);
|
|
507
497
|
if (tasks.length) html = injectScripts(html, tasks, nonce);
|
|
508
498
|
buffer.write(html);
|
|
509
499
|
tasks = "";
|
|
@@ -530,48 +520,56 @@ function renderToStream(code, options = {}) {
|
|
|
530
520
|
queue(flushEnd);
|
|
531
521
|
},
|
|
532
522
|
pipe(w) {
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
523
|
+
function flush() {
|
|
524
|
+
allSettled(blockingPromises).then(() => {
|
|
525
|
+
setTimeout(() => {
|
|
526
|
+
doShell();
|
|
527
|
+
if (!shellCompleted) return flush();
|
|
528
|
+
buffer = writable = w;
|
|
529
|
+
buffer.write(tmp);
|
|
530
|
+
firstFlushed = true;
|
|
531
|
+
if (completed) {
|
|
532
|
+
dispose();
|
|
533
|
+
writable.end();
|
|
534
|
+
} else flushEnd();
|
|
535
|
+
});
|
|
543
536
|
});
|
|
544
|
-
}
|
|
537
|
+
}
|
|
538
|
+
flush();
|
|
545
539
|
},
|
|
546
540
|
pipeTo(w) {
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
541
|
+
let resolve;
|
|
542
|
+
const p = new Promise(r => resolve = r);
|
|
543
|
+
function flush() {
|
|
544
|
+
allSettled(blockingPromises).then(() => {
|
|
545
|
+
setTimeout(() => {
|
|
546
|
+
doShell();
|
|
547
|
+
if (!shellCompleted) return flush();
|
|
548
|
+
const encoder = new TextEncoder();
|
|
549
|
+
const writer = w.getWriter();
|
|
550
|
+
writable = {
|
|
551
|
+
end() {
|
|
552
|
+
writer.releaseLock();
|
|
553
|
+
w.close().catch(() => {});
|
|
554
|
+
resolve();
|
|
555
|
+
}
|
|
556
|
+
};
|
|
557
|
+
buffer = {
|
|
558
|
+
write(payload) {
|
|
559
|
+
writer.write(encoder.encode(payload)).catch(() => {});
|
|
560
|
+
}
|
|
561
|
+
};
|
|
562
|
+
buffer.write(tmp);
|
|
563
|
+
firstFlushed = true;
|
|
564
|
+
if (completed) {
|
|
565
|
+
dispose();
|
|
566
|
+
writable.end();
|
|
567
|
+
} else flushEnd();
|
|
568
|
+
});
|
|
572
569
|
});
|
|
573
|
-
|
|
574
|
-
|
|
570
|
+
}
|
|
571
|
+
flush();
|
|
572
|
+
return p;
|
|
575
573
|
}
|
|
576
574
|
};
|
|
577
575
|
}
|
package/dist/server.js
CHANGED
|
@@ -4,39 +4,6 @@ import { Serializer, Feature, getCrossReferenceHeader } from 'seroval';
|
|
|
4
4
|
import { AbortSignalPlugin, CustomEventPlugin, DOMExceptionPlugin, EventPlugin, FormDataPlugin, HeadersPlugin, ReadableStreamPlugin, RequestPlugin, ResponsePlugin, URLSearchParamsPlugin, URLPlugin } from 'seroval-plugins/web';
|
|
5
5
|
import { createMemo } from '@solidjs/signals';
|
|
6
6
|
|
|
7
|
-
const DOMWithState = {
|
|
8
|
-
INPUT: {
|
|
9
|
-
value: 1,
|
|
10
|
-
defaultValue: 1,
|
|
11
|
-
checked: 1,
|
|
12
|
-
defaultChecked: 1
|
|
13
|
-
},
|
|
14
|
-
SELECT: {
|
|
15
|
-
value: 1
|
|
16
|
-
},
|
|
17
|
-
OPTION: {
|
|
18
|
-
value: 1,
|
|
19
|
-
selected: 1,
|
|
20
|
-
defaultSelected: 1
|
|
21
|
-
},
|
|
22
|
-
TEXTAREA: {
|
|
23
|
-
value: 1,
|
|
24
|
-
defaultValue: 1
|
|
25
|
-
},
|
|
26
|
-
VIDEO: {
|
|
27
|
-
muted: 1,
|
|
28
|
-
defaultMuted: 1
|
|
29
|
-
},
|
|
30
|
-
AUDIO: {
|
|
31
|
-
muted: 1,
|
|
32
|
-
defaultMuted: 1
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
for (const tagName in DOMWithState) {
|
|
36
|
-
for (const propName in DOMWithState[tagName]) {
|
|
37
|
-
DOMWithState[tagName]["prop:" + propName] = 1;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
7
|
const ChildProperties = /*#__PURE__*/new Set(["innerHTML", "textContent", "innerText", "children"]);
|
|
41
8
|
const DelegatedEvents = /*#__PURE__*/new Set(["beforeinput", "click", "dblclick", "contextmenu", "focusin", "focusout", "input", "keydown", "keyup", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "pointerdown", "pointermove", "pointerout", "pointerover", "pointerup", "touchend", "touchmove", "touchstart"]);
|
|
42
9
|
const SVGElements = /*#__PURE__*/new Set([
|
|
@@ -55,10 +22,10 @@ const DOMElements = /*#__PURE__*/new Set(["html", "base", "head", "link", "meta"
|
|
|
55
22
|
"webview",
|
|
56
23
|
"isindex", "listing", "multicol", "nextid", "noindex", "search"]);
|
|
57
24
|
|
|
58
|
-
const effect = (fn, effectFn
|
|
25
|
+
const effect = (fn, effectFn) => createRenderEffect(fn, effectFn, {
|
|
59
26
|
transparent: true
|
|
60
27
|
});
|
|
61
|
-
const memo = (fn, transparent) => transparent ? fn.$r ? fn : createMemo(() => fn(),
|
|
28
|
+
const memo = (fn, transparent) => transparent ? fn.$r ? fn : createMemo(() => fn(), {
|
|
62
29
|
transparent: true
|
|
63
30
|
}) : createMemo$1(() => fn());
|
|
64
31
|
|
|
@@ -143,11 +110,11 @@ function createAssetTracking() {
|
|
|
143
110
|
currentBoundaryId = v;
|
|
144
111
|
},
|
|
145
112
|
registerModule(moduleUrl, entryUrl) {
|
|
146
|
-
|
|
147
|
-
let map = boundaryModules.get(
|
|
113
|
+
const id = currentBoundaryId || "";
|
|
114
|
+
let map = boundaryModules.get(id);
|
|
148
115
|
if (!map) {
|
|
149
116
|
map = {};
|
|
150
|
-
boundaryModules.set(
|
|
117
|
+
boundaryModules.set(id, map);
|
|
151
118
|
}
|
|
152
119
|
map[moduleUrl] = entryUrl;
|
|
153
120
|
},
|
|
@@ -230,6 +197,7 @@ function renderToString(code, options = {}) {
|
|
|
230
197
|
}, {
|
|
231
198
|
id: renderId
|
|
232
199
|
});
|
|
200
|
+
serializeFragmentAssets("", tracking.boundaryModules, sharedConfig.context);
|
|
233
201
|
sharedConfig.context.noHydrate = true;
|
|
234
202
|
serializer.close();
|
|
235
203
|
html = injectAssets(sharedConfig.context.assets, html);
|
|
@@ -248,10 +216,12 @@ function renderToStream(code, options = {}) {
|
|
|
248
216
|
} = options;
|
|
249
217
|
let dispose;
|
|
250
218
|
const blockingPromises = new Set();
|
|
219
|
+
let headerEmitted = false;
|
|
251
220
|
const pushTask = task => {
|
|
252
221
|
if (noScripts) return;
|
|
253
|
-
if (!
|
|
254
|
-
|
|
222
|
+
if (!headerEmitted) {
|
|
223
|
+
headerEmitted = true;
|
|
224
|
+
tasks += getLocalHeaderScript(renderId);
|
|
255
225
|
}
|
|
256
226
|
tasks += task + ";";
|
|
257
227
|
if (!timer && firstFlushed) {
|
|
@@ -486,13 +456,32 @@ function renderToStream(code, options = {}) {
|
|
|
486
456
|
function doShell() {
|
|
487
457
|
if (shellCompleted) return;
|
|
488
458
|
if (rootHoles) {
|
|
459
|
+
const pending = [];
|
|
489
460
|
for (const {
|
|
490
461
|
id,
|
|
491
462
|
fn
|
|
492
463
|
} of rootHoles) {
|
|
493
464
|
const marker = `<!--rh${id}-->`;
|
|
494
465
|
const res = resolveSSRNode(fn);
|
|
495
|
-
|
|
466
|
+
if (!res.h.length) {
|
|
467
|
+
html = html.replace(marker, res.t[0]);
|
|
468
|
+
} else {
|
|
469
|
+
let out = res.t[0];
|
|
470
|
+
for (let j = 0; j < res.h.length; j++) {
|
|
471
|
+
const newId = nextHoleId++;
|
|
472
|
+
pending.push({
|
|
473
|
+
id: newId,
|
|
474
|
+
fn: res.h[j]
|
|
475
|
+
});
|
|
476
|
+
out += `<!--rh${newId}-->` + res.t[j + 1];
|
|
477
|
+
}
|
|
478
|
+
html = html.replace(marker, out);
|
|
479
|
+
for (const p of res.p) blockingPromises.add(p);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
if (pending.length) {
|
|
483
|
+
rootHoles = pending;
|
|
484
|
+
return;
|
|
496
485
|
}
|
|
497
486
|
rootHoles = null;
|
|
498
487
|
}
|
|
@@ -503,6 +492,7 @@ function renderToStream(code, options = {}) {
|
|
|
503
492
|
if (url.endsWith(".css")) headStyles.add(url);
|
|
504
493
|
}
|
|
505
494
|
html = injectPreloadLinks(tracking.emittedAssets, html);
|
|
495
|
+
serializeFragmentAssets("", tracking.boundaryModules, context);
|
|
506
496
|
if (tasks.length) html = injectScripts(html, tasks, nonce);
|
|
507
497
|
buffer.write(html);
|
|
508
498
|
tasks = "";
|
|
@@ -529,48 +519,56 @@ function renderToStream(code, options = {}) {
|
|
|
529
519
|
queue(flushEnd);
|
|
530
520
|
},
|
|
531
521
|
pipe(w) {
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
522
|
+
function flush() {
|
|
523
|
+
allSettled(blockingPromises).then(() => {
|
|
524
|
+
setTimeout(() => {
|
|
525
|
+
doShell();
|
|
526
|
+
if (!shellCompleted) return flush();
|
|
527
|
+
buffer = writable = w;
|
|
528
|
+
buffer.write(tmp);
|
|
529
|
+
firstFlushed = true;
|
|
530
|
+
if (completed) {
|
|
531
|
+
dispose();
|
|
532
|
+
writable.end();
|
|
533
|
+
} else flushEnd();
|
|
534
|
+
});
|
|
542
535
|
});
|
|
543
|
-
}
|
|
536
|
+
}
|
|
537
|
+
flush();
|
|
544
538
|
},
|
|
545
539
|
pipeTo(w) {
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
540
|
+
let resolve;
|
|
541
|
+
const p = new Promise(r => resolve = r);
|
|
542
|
+
function flush() {
|
|
543
|
+
allSettled(blockingPromises).then(() => {
|
|
544
|
+
setTimeout(() => {
|
|
545
|
+
doShell();
|
|
546
|
+
if (!shellCompleted) return flush();
|
|
547
|
+
const encoder = new TextEncoder();
|
|
548
|
+
const writer = w.getWriter();
|
|
549
|
+
writable = {
|
|
550
|
+
end() {
|
|
551
|
+
writer.releaseLock();
|
|
552
|
+
w.close().catch(() => {});
|
|
553
|
+
resolve();
|
|
554
|
+
}
|
|
555
|
+
};
|
|
556
|
+
buffer = {
|
|
557
|
+
write(payload) {
|
|
558
|
+
writer.write(encoder.encode(payload)).catch(() => {});
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
buffer.write(tmp);
|
|
562
|
+
firstFlushed = true;
|
|
563
|
+
if (completed) {
|
|
564
|
+
dispose();
|
|
565
|
+
writable.end();
|
|
566
|
+
} else flushEnd();
|
|
567
|
+
});
|
|
571
568
|
});
|
|
572
|
-
|
|
573
|
-
|
|
569
|
+
}
|
|
570
|
+
flush();
|
|
571
|
+
return p;
|
|
574
572
|
}
|
|
575
573
|
};
|
|
576
574
|
}
|