@solidjs/web 2.0.0-beta.31 → 2.0.0-beta.32
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/README.md +1 -6
- package/dist/dev.cjs +234 -45
- package/dist/dev.js +221 -42
- package/dist/server.cjs +456 -123
- package/dist/server.js +445 -120
- package/dist/web.cjs +234 -45
- package/dist/web.js +221 -42
- package/frames/dist/client.cjs +217 -112
- package/frames/dist/client.dev.cjs +217 -112
- package/frames/dist/client.dev.js +218 -113
- package/frames/dist/client.js +218 -113
- package/frames/dist/server.cjs +488 -177
- package/frames/dist/server.js +489 -179
- package/package.json +55 -4
- package/serialization/dist/serialization.cjs +8 -0
- package/serialization/dist/serialization.js +1 -0
- package/serialization/types/index.d.ts +173 -6
- package/serialization/types-cjs/index.d.cts +173 -6
- package/server-functions/dist/client.cjs +46 -9
- package/server-functions/dist/client.js +47 -11
- package/server-functions/dist/rich-args.cjs +11 -0
- package/server-functions/dist/rich-args.js +9 -0
- package/server-functions/dist/server.cjs +275 -126
- package/server-functions/dist/server.dev.cjs +1053 -0
- package/server-functions/dist/server.dev.js +1021 -0
- package/server-functions/dist/server.js +273 -127
- package/server-functions/package.json +10 -0
- package/server-functions/rich-args/package.json +20 -0
- package/storage/types/index.d.ts +1 -1
- package/storage/types-cjs/index.d.cts +1 -1
- package/types/client.d.ts +127 -6
- package/types/core.d.ts +3 -1
- package/types/frames/client.d.ts +15 -1
- package/types/frames/frame-client.d.ts +37 -7
- package/types/frames/frame-sink.d.ts +26 -3
- package/types/frames/frame-transport.d.ts +39 -7
- package/types/frames/serializer.d.ts +173 -6
- package/types/frames/server.d.ts +22 -0
- package/types/index.d.ts +2 -3
- package/types/response.d.ts +45 -0
- package/types/serializer.d.ts +173 -6
- package/types/server-functions/client.d.ts +1 -0
- package/types/server-functions/rich-args.d.ts +10 -0
- package/types/server-functions/server.d.ts +98 -0
- package/types/server-functions/shared.d.ts +22 -0
- package/types/server-mock.d.ts +171 -59
- package/types/server.d.ts +188 -36
- package/types-cjs/client.d.cts +127 -6
- package/types-cjs/core.d.cts +3 -1
- package/types-cjs/frames/client.d.cts +15 -1
- package/types-cjs/frames/frame-client.d.cts +37 -7
- package/types-cjs/frames/frame-sink.d.cts +26 -3
- package/types-cjs/frames/frame-transport.d.cts +39 -7
- package/types-cjs/frames/serializer.d.cts +173 -6
- package/types-cjs/frames/server.d.cts +22 -0
- package/types-cjs/index.d.cts +2 -3
- package/types-cjs/response.d.cts +45 -0
- package/types-cjs/serializer.d.cts +173 -6
- package/types-cjs/server-functions/client.d.cts +1 -0
- package/types-cjs/server-functions/rich-args.d.cts +10 -0
- package/types-cjs/server-functions/server.d.cts +98 -0
- package/types-cjs/server-functions/shared.d.cts +22 -0
- package/types-cjs/server-mock.d.cts +171 -59
- package/types-cjs/server.d.cts +188 -36
package/README.md
CHANGED
|
@@ -13,12 +13,7 @@ Solid 2.0's web platform runtime — DOM rendering, hydration, server-side rende
|
|
|
13
13
|
import { render, hydrate, Portal, Dynamic, dynamic } from "@solidjs/web";
|
|
14
14
|
|
|
15
15
|
// Server (SSR)
|
|
16
|
-
import {
|
|
17
|
-
renderToString,
|
|
18
|
-
renderToStringAsync,
|
|
19
|
-
renderToStream,
|
|
20
|
-
isServer
|
|
21
|
-
} from "@solidjs/web";
|
|
16
|
+
import { renderToString, renderToStream, isServer } from "@solidjs/web";
|
|
22
17
|
```
|
|
23
18
|
|
|
24
19
|
The control-flow components from `solid-js` (`For`, `Show`, `Switch`/`Match`, `Loading`, `Errored`, `Repeat`, `Reveal`) are also re-exported from `@solidjs/web` for convenience.
|
package/dist/dev.cjs
CHANGED
|
@@ -63,6 +63,17 @@ const effect = (fn, effectFn, options) => solidJs.createRenderEffect(fn, effectF
|
|
|
63
63
|
transparent: !options.scope
|
|
64
64
|
} : transparentOptions);
|
|
65
65
|
const memo = fn => solidJs.createMemo(() => fn(), syncOptions);
|
|
66
|
+
const assetGates = new WeakMap();
|
|
67
|
+
const waitAsset = promise => {
|
|
68
|
+
let gate = assetGates.get(promise);
|
|
69
|
+
if (!gate) {
|
|
70
|
+
solidJs.runWithOwner(null, () => {
|
|
71
|
+
gate = solidJs.createMemo(() => promise);
|
|
72
|
+
});
|
|
73
|
+
assetGates.set(promise, gate);
|
|
74
|
+
}
|
|
75
|
+
gate();
|
|
76
|
+
};
|
|
66
77
|
|
|
67
78
|
function reconcileArrays(parentNode, a, b, marker) {
|
|
68
79
|
let bLength = b.length,
|
|
@@ -174,6 +185,7 @@ const HEAD_ELIGIBLE_TAGS = new Set(["title", "meta", "link", "style", "script",
|
|
|
174
185
|
const HEAD_ATTR_NAME = /^[a-zA-Z_][a-zA-Z0-9_:.-]*$/;
|
|
175
186
|
const RESOURCE_LINK_RELS = new Set(["preload", "modulepreload", "prefetch", "preconnect", "dns-prefetch", "stylesheet"]);
|
|
176
187
|
const RESOURCE_QUALIFIERS = ["as", "crossorigin", "type", "media", "imagesrcset", "imagesizes"];
|
|
188
|
+
const STYLESHEET_FETCH_META = new Set(["crossorigin", "integrity", "referrerpolicy", "fetchpriority"]);
|
|
177
189
|
function evalHeadValue(v) {
|
|
178
190
|
return typeof v === "function" ? v() : v;
|
|
179
191
|
}
|
|
@@ -255,6 +267,43 @@ function resolveHead(groups) {
|
|
|
255
267
|
return winners;
|
|
256
268
|
}
|
|
257
269
|
|
|
270
|
+
function parseCookieHeader(header) {
|
|
271
|
+
const cookies = {};
|
|
272
|
+
if (!header) return cookies;
|
|
273
|
+
for (const part of header.split(";")) {
|
|
274
|
+
const eq = part.indexOf("=");
|
|
275
|
+
if (eq < 0) continue;
|
|
276
|
+
const name = decodeSafe(part.slice(0, eq).trim());
|
|
277
|
+
let value = part.slice(eq + 1).trim();
|
|
278
|
+
if (value.length > 1 && value[0] === '"' && value[value.length - 1] === '"') {
|
|
279
|
+
value = value.slice(1, -1);
|
|
280
|
+
}
|
|
281
|
+
cookies[name] = decodeSafe(value);
|
|
282
|
+
}
|
|
283
|
+
return cookies;
|
|
284
|
+
}
|
|
285
|
+
function decodeSafe(text) {
|
|
286
|
+
try {
|
|
287
|
+
return decodeURIComponent(text);
|
|
288
|
+
} catch {
|
|
289
|
+
return text;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
function serializeCookie(name, value, options = {}) {
|
|
293
|
+
let cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
|
|
294
|
+
cookie += `; Path=${options.path === undefined ? "/" : options.path}`;
|
|
295
|
+
if (options.domain) cookie += `; Domain=${options.domain}`;
|
|
296
|
+
if (options.maxAge !== undefined) cookie += `; Max-Age=${Math.trunc(options.maxAge)}`;
|
|
297
|
+
if (options.expires) cookie += `; Expires=${options.expires.toUTCString()}`;
|
|
298
|
+
if (options.httpOnly) cookie += "; HttpOnly";
|
|
299
|
+
if (options.secure) cookie += "; Secure";
|
|
300
|
+
if (options.sameSite) {
|
|
301
|
+
const sameSite = options.sameSite.toLowerCase();
|
|
302
|
+
cookie += `; SameSite=${sameSite === "none" ? "None" : sameSite === "strict" ? "Strict" : "Lax"}`;
|
|
303
|
+
}
|
|
304
|
+
return cookie;
|
|
305
|
+
}
|
|
306
|
+
|
|
258
307
|
const $$EVENT_OWNER = "_$DX_EVENT_OWNER";
|
|
259
308
|
const INNER_OWNED = {};
|
|
260
309
|
const delegatedEvents = new Set();
|
|
@@ -658,6 +707,9 @@ function findAssetElement(selector, attr, value) {
|
|
|
658
707
|
}
|
|
659
708
|
return null;
|
|
660
709
|
}
|
|
710
|
+
function setAssetAttrs(el, attrs) {
|
|
711
|
+
for (const name in attrs) el.setAttribute(name, attrs[name]);
|
|
712
|
+
}
|
|
661
713
|
function mountAssetElement(descriptor) {
|
|
662
714
|
let el;
|
|
663
715
|
if (descriptor.type === "inline-style") {
|
|
@@ -676,12 +728,77 @@ function mountAssetElement(descriptor) {
|
|
|
676
728
|
el.href = descriptor.href;
|
|
677
729
|
}
|
|
678
730
|
}
|
|
679
|
-
if (descriptor.attrs)
|
|
680
|
-
for (const name in descriptor.attrs) el.setAttribute(name, descriptor.attrs[name]);
|
|
681
|
-
}
|
|
731
|
+
if (descriptor.attrs) setAssetAttrs(el, descriptor.attrs);
|
|
682
732
|
if (!el.isConnected) document.head.appendChild(el);
|
|
683
733
|
return el;
|
|
684
734
|
}
|
|
735
|
+
const assetLoadSettled = /*#__PURE__*/Promise.resolve();
|
|
736
|
+
function trackAssetLoad(entry, adopted) {
|
|
737
|
+
if (entry.loadPromise) return;
|
|
738
|
+
const el = entry.element;
|
|
739
|
+
let settled = el.sheet != null;
|
|
740
|
+
if (!settled && adopted && typeof performance !== "undefined" && performance.getEntriesByName) {
|
|
741
|
+
settled = performance.getEntriesByName(el.href).length > 0;
|
|
742
|
+
}
|
|
743
|
+
if (settled) {
|
|
744
|
+
entry.loadState = "loaded";
|
|
745
|
+
entry.loadPromise = assetLoadSettled;
|
|
746
|
+
return;
|
|
747
|
+
}
|
|
748
|
+
entry.loadState = "pending";
|
|
749
|
+
entry.loadPromise = new Promise(resolve => {
|
|
750
|
+
const settle = state => {
|
|
751
|
+
entry.loadState = state;
|
|
752
|
+
resolve();
|
|
753
|
+
};
|
|
754
|
+
el.addEventListener("load", () => settle("loaded"), {
|
|
755
|
+
once: true
|
|
756
|
+
});
|
|
757
|
+
el.addEventListener("error", () => settle("errored"), {
|
|
758
|
+
once: true
|
|
759
|
+
});
|
|
760
|
+
});
|
|
761
|
+
}
|
|
762
|
+
function warmAsset(descriptor) {
|
|
763
|
+
if (descriptor.policy === "exclusive" || descriptor.type === "inline-style") return;
|
|
764
|
+
const key = assetEntryKey(descriptor);
|
|
765
|
+
let entry = assetRegistry.get(key);
|
|
766
|
+
if (!entry) {
|
|
767
|
+
entry = {
|
|
768
|
+
count: 0,
|
|
769
|
+
element: null,
|
|
770
|
+
timer: null
|
|
771
|
+
};
|
|
772
|
+
assetRegistry.set(key, entry);
|
|
773
|
+
}
|
|
774
|
+
let adopted = true;
|
|
775
|
+
if (!entry.element || !entry.element.isConnected) {
|
|
776
|
+
const rel = descriptor.type === "module" ? "modulepreload" : "stylesheet";
|
|
777
|
+
let el = findAssetElement(`link[rel="${rel}"]`, "href", descriptor.href);
|
|
778
|
+
if (!el && descriptor.type === "style") {
|
|
779
|
+
el = findAssetElement('link[rel="preload"][as="style"]', "href", descriptor.href);
|
|
780
|
+
}
|
|
781
|
+
if (!el) {
|
|
782
|
+
adopted = false;
|
|
783
|
+
el = document.createElement("link");
|
|
784
|
+
if (descriptor.type === "style") {
|
|
785
|
+
el.setAttribute("rel", "preload");
|
|
786
|
+
el.setAttribute("as", "style");
|
|
787
|
+
} else {
|
|
788
|
+
el.setAttribute("rel", "modulepreload");
|
|
789
|
+
}
|
|
790
|
+
el.setAttribute("href", descriptor.href);
|
|
791
|
+
if (!document.body) el.setAttribute("blocking", "render");
|
|
792
|
+
}
|
|
793
|
+
if (descriptor.attrs) setAssetAttrs(el, descriptor.attrs);
|
|
794
|
+
if (!el.isConnected) document.head.appendChild(el);
|
|
795
|
+
entry.element = el;
|
|
796
|
+
entry.loadState = undefined;
|
|
797
|
+
entry.loadPromise = undefined;
|
|
798
|
+
}
|
|
799
|
+
if (descriptor.type === "style") trackAssetLoad(entry, adopted);
|
|
800
|
+
return entry;
|
|
801
|
+
}
|
|
685
802
|
function acquireAsset(descriptor) {
|
|
686
803
|
const key = assetEntryKey(descriptor);
|
|
687
804
|
let entry = assetRegistry.get(key);
|
|
@@ -728,7 +845,12 @@ function acquireAsset(descriptor) {
|
|
|
728
845
|
entry.timer = null;
|
|
729
846
|
}
|
|
730
847
|
entry.count++;
|
|
731
|
-
if (!entry.element || !entry.element.isConnected)
|
|
848
|
+
if (!entry.element || !entry.element.isConnected) {
|
|
849
|
+
entry.element = mountAssetElement(descriptor);
|
|
850
|
+
} else if (descriptor.type === "style" && entry.element.getAttribute("rel") === "preload") {
|
|
851
|
+
entry.element.removeAttribute("as");
|
|
852
|
+
entry.element.setAttribute("rel", "stylesheet");
|
|
853
|
+
}
|
|
732
854
|
let released = false;
|
|
733
855
|
return () => {
|
|
734
856
|
if (released) return;
|
|
@@ -877,25 +999,9 @@ function headElementMatches(el, t) {
|
|
|
877
999
|
const children = t.props.children;
|
|
878
1000
|
return (children == null ? "" : String(children)) === el.textContent;
|
|
879
1001
|
}
|
|
880
|
-
function
|
|
881
|
-
if (tag === "link" && (props.rel === "stylesheet" || props.rel === "modulepreload")) {
|
|
882
|
-
const descriptor = {
|
|
883
|
-
type: props.rel === "stylesheet" ? "style" : "module",
|
|
884
|
-
href: props.href
|
|
885
|
-
};
|
|
886
|
-
let attrs = null;
|
|
887
|
-
for (const name in props) {
|
|
888
|
-
if (name === "rel" || name === "href") continue;
|
|
889
|
-
if (!HEAD_ATTR_NAME.test(name)) continue;
|
|
890
|
-
const v = props[name];
|
|
891
|
-
if (v == null || v === false) continue;
|
|
892
|
-
(attrs || (attrs = {}))[name] = v === true ? "" : String(v);
|
|
893
|
-
}
|
|
894
|
-
if (attrs) descriptor.attrs = attrs;
|
|
895
|
-
return acquireAsset(descriptor);
|
|
896
|
-
}
|
|
1002
|
+
function mountHeadResource(tag, props) {
|
|
897
1003
|
const identity = resourceIdentity(tag, props);
|
|
898
|
-
if (headMountedResources.has(identity)) return
|
|
1004
|
+
if (headMountedResources.has(identity)) return;
|
|
899
1005
|
headMountedResources.add(identity);
|
|
900
1006
|
const url = props.href || props.src;
|
|
901
1007
|
let el = null;
|
|
@@ -903,9 +1009,28 @@ function acquireHeadResource(tag, props) {
|
|
|
903
1009
|
if (tag === "link") el = findAssetElement(`link[rel="${props.rel}"]`, "href", url);else if (tag === "script") el = findAssetElement("script[src]", "src", url);else el = findAssetElement("style[href]", "href", url);
|
|
904
1010
|
}
|
|
905
1011
|
if (!el) document.head.appendChild(createHeadElement(tag, props));
|
|
906
|
-
return noopFn;
|
|
907
1012
|
}
|
|
908
|
-
function
|
|
1013
|
+
function gateHeadResource(props) {
|
|
1014
|
+
const descriptor = {
|
|
1015
|
+
type: props.rel === "stylesheet" ? "style" : "module",
|
|
1016
|
+
href: props.href
|
|
1017
|
+
};
|
|
1018
|
+
let gateable = props.rel === "stylesheet" && props.href != null;
|
|
1019
|
+
let attrs = null;
|
|
1020
|
+
for (const name in props) {
|
|
1021
|
+
if (name === "rel" || name === "href") continue;
|
|
1022
|
+
if (!STYLESHEET_FETCH_META.has(name)) gateable = false;
|
|
1023
|
+
if (!HEAD_ATTR_NAME.test(name)) continue;
|
|
1024
|
+
const v = props[name];
|
|
1025
|
+
if (v == null || v === false) continue;
|
|
1026
|
+
(attrs || (attrs = {}))[name] = v === true ? "" : String(v);
|
|
1027
|
+
}
|
|
1028
|
+
if (attrs) descriptor.attrs = attrs;
|
|
1029
|
+
effect(() => {
|
|
1030
|
+
const entry = warmAsset(descriptor);
|
|
1031
|
+
if (gateable && entry.loadState === "pending" && typeof waitAsset === "function") waitAsset(entry.loadPromise);
|
|
1032
|
+
}, () => acquireAsset(descriptor));
|
|
1033
|
+
}
|
|
909
1034
|
function useHead(tags) {
|
|
910
1035
|
initHeadRegistry();
|
|
911
1036
|
const reg = {
|
|
@@ -929,10 +1054,16 @@ function useHead(tags) {
|
|
|
929
1054
|
rel: cls.rel
|
|
930
1055
|
} : undefined);
|
|
931
1056
|
if (cls.resource) {
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
1057
|
+
if (desc.tag === "link" && (props.rel === "stylesheet" || props.rel === "modulepreload")) {
|
|
1058
|
+
gateHeadResource(props);
|
|
1059
|
+
} else if (desc.tag === "link") {
|
|
1060
|
+
mountHeadResource(desc.tag, props);
|
|
1061
|
+
} else {
|
|
1062
|
+
resources.push({
|
|
1063
|
+
tag: desc.tag,
|
|
1064
|
+
props
|
|
1065
|
+
});
|
|
1066
|
+
}
|
|
936
1067
|
} else {
|
|
937
1068
|
const key = evalHeadValue(desc.key);
|
|
938
1069
|
replaceable.push({
|
|
@@ -947,9 +1078,8 @@ function useHead(tags) {
|
|
|
947
1078
|
resources
|
|
948
1079
|
};
|
|
949
1080
|
}, evaluated => {
|
|
950
|
-
const releases = [];
|
|
951
1081
|
for (let i = 0; i < evaluated.resources.length; i++) {
|
|
952
|
-
|
|
1082
|
+
mountHeadResource(evaluated.resources[i].tag, evaluated.resources[i].props);
|
|
953
1083
|
}
|
|
954
1084
|
reg.tags = evaluated.replaceable;
|
|
955
1085
|
if (reg.seq < 0) reg.seq = ++headSeq;
|
|
@@ -958,7 +1088,6 @@ function useHead(tags) {
|
|
|
958
1088
|
return () => {
|
|
959
1089
|
const idx = headRegistrations.indexOf(reg);
|
|
960
1090
|
if (idx > -1) headRegistrations.splice(idx, 1);
|
|
961
|
-
for (let i = 0; i < releases.length; i++) releases[i]();
|
|
962
1091
|
scheduleHeadApply();
|
|
963
1092
|
};
|
|
964
1093
|
});
|
|
@@ -1446,7 +1575,13 @@ function gatherHydratable(element, root) {
|
|
|
1446
1575
|
for (let i = 0; i < templates.length; i++) {
|
|
1447
1576
|
const node = templates[i];
|
|
1448
1577
|
const key = node.getAttribute("_hk");
|
|
1449
|
-
if (
|
|
1578
|
+
if (root) {
|
|
1579
|
+
if (!key.startsWith(root)) continue;
|
|
1580
|
+
} else {
|
|
1581
|
+
const frame = node.closest("[data-fid]");
|
|
1582
|
+
if (frame && frame !== element && element.contains(frame)) continue;
|
|
1583
|
+
}
|
|
1584
|
+
if (!solidJs.sharedConfig.registry.has(key)) solidJs.sharedConfig.registry.set(key, node);
|
|
1450
1585
|
}
|
|
1451
1586
|
}
|
|
1452
1587
|
function getHydrationKey() {
|
|
@@ -1462,20 +1597,37 @@ function throwInBrowser(func) {
|
|
|
1462
1597
|
function renderToString(fn, options) {
|
|
1463
1598
|
throwInBrowser(renderToString);
|
|
1464
1599
|
}
|
|
1465
|
-
function renderToStringAsync(fn, options) {
|
|
1466
|
-
throwInBrowser(renderToStringAsync);
|
|
1467
|
-
}
|
|
1468
1600
|
function renderToStream(fn, options) {
|
|
1469
1601
|
throwInBrowser(renderToStream);
|
|
1470
1602
|
}
|
|
1603
|
+
function createResponseStub() {
|
|
1604
|
+
throwInBrowser(createResponseStub);
|
|
1605
|
+
}
|
|
1606
|
+
function createRequestEvent(request, init) {
|
|
1607
|
+
throwInBrowser(createRequestEvent);
|
|
1608
|
+
}
|
|
1609
|
+
function getExpectedRedirectStatus(response) {
|
|
1610
|
+
throwInBrowser(getExpectedRedirectStatus);
|
|
1611
|
+
}
|
|
1612
|
+
function createSSRResponse() {
|
|
1613
|
+
throwInBrowser(createSSRResponse);
|
|
1614
|
+
}
|
|
1615
|
+
function commitEventResponse(response, event) {
|
|
1616
|
+
throwInBrowser(commitEventResponse);
|
|
1617
|
+
}
|
|
1618
|
+
function composeMiddleware(middlewares) {
|
|
1619
|
+
throwInBrowser(composeMiddleware);
|
|
1620
|
+
}
|
|
1471
1621
|
function ssr(template, ...nodes) {}
|
|
1472
1622
|
function ssrElement(name, props, children, needsId) {}
|
|
1473
|
-
function
|
|
1623
|
+
function ssrClassName(value) {}
|
|
1474
1624
|
function ssrStyle(value) {}
|
|
1625
|
+
function ssrStyleProperty(name, value) {}
|
|
1475
1626
|
function ssrAttribute(key, value) {}
|
|
1627
|
+
function ssrGroup(fn, n) {}
|
|
1476
1628
|
function ssrHydrationKey() {}
|
|
1477
|
-
function resolveSSRNode(node) {}
|
|
1478
|
-
function escape(
|
|
1629
|
+
function resolveSSRNode(node, result, top) {}
|
|
1630
|
+
function escape(s, attr) {}
|
|
1479
1631
|
|
|
1480
1632
|
const ENVELOPE = Symbol.for("solid.ResponseEnvelope");
|
|
1481
1633
|
class ResponseEnvelope {
|
|
@@ -1492,13 +1644,38 @@ const HREF = Symbol.for("solid.Href");
|
|
|
1492
1644
|
function isHref(value) {
|
|
1493
1645
|
return !!(value && (typeof value === "object" || typeof value === "function") && value[HREF]);
|
|
1494
1646
|
}
|
|
1647
|
+
const SAFE_ERROR = Symbol.for("solid.SafeError");
|
|
1648
|
+
function markSafeError(error) {
|
|
1649
|
+
if (error && (typeof error === "object" || typeof error === "function")) {
|
|
1650
|
+
Object.defineProperty(error, SAFE_ERROR, {
|
|
1651
|
+
value: true,
|
|
1652
|
+
enumerable: false,
|
|
1653
|
+
configurable: true
|
|
1654
|
+
});
|
|
1655
|
+
}
|
|
1656
|
+
return error;
|
|
1657
|
+
}
|
|
1658
|
+
function isSafeError(value) {
|
|
1659
|
+
return !!(value && (typeof value === "object" || typeof value === "function") && value[SAFE_ERROR]);
|
|
1660
|
+
}
|
|
1495
1661
|
const REVALIDATE_HEADER = "X-Revalidate";
|
|
1496
1662
|
function initWithRevalidate(init) {
|
|
1497
1663
|
const {
|
|
1498
1664
|
revalidate,
|
|
1499
1665
|
...responseInit
|
|
1500
1666
|
} = init;
|
|
1501
|
-
|
|
1667
|
+
let headers;
|
|
1668
|
+
if (responseInit.headers && responseInit.headers.getSetCookie) {
|
|
1669
|
+
headers = new Headers();
|
|
1670
|
+
responseInit.headers.forEach((value, key) => {
|
|
1671
|
+
if (key !== "set-cookie") headers.append(key, value);
|
|
1672
|
+
});
|
|
1673
|
+
for (const cookie of responseInit.headers.getSetCookie()) {
|
|
1674
|
+
headers.append("Set-Cookie", cookie);
|
|
1675
|
+
}
|
|
1676
|
+
} else {
|
|
1677
|
+
headers = new Headers(responseInit.headers);
|
|
1678
|
+
}
|
|
1502
1679
|
revalidate !== undefined && headers.set(REVALIDATE_HEADER, revalidate.toString());
|
|
1503
1680
|
return {
|
|
1504
1681
|
responseInit,
|
|
@@ -1625,9 +1802,11 @@ function bindingOf(value) {
|
|
|
1625
1802
|
function dynamic(source) {
|
|
1626
1803
|
let latest = 0;
|
|
1627
1804
|
const sites = new Set();
|
|
1805
|
+
let deliveredAddress;
|
|
1628
1806
|
const resolveBinding = (next, prev) => {
|
|
1629
1807
|
const binding = bindingOf(next);
|
|
1630
1808
|
if (!binding) return next;
|
|
1809
|
+
deliveredAddress = binding.address;
|
|
1631
1810
|
const prevBinding = bindingOf(prev);
|
|
1632
1811
|
if (prevBinding && prevBinding.component === binding.component) {
|
|
1633
1812
|
for (const deliver of sites) deliver(binding.address);
|
|
@@ -1656,7 +1835,7 @@ function dynamic(source) {
|
|
|
1656
1835
|
});
|
|
1657
1836
|
const binding = bindingOf(component);
|
|
1658
1837
|
if (binding) {
|
|
1659
|
-
const [address, setAddress] = solidJs.createSignal(binding.address);
|
|
1838
|
+
const [address, setAddress] = solidJs.createSignal(deliveredAddress ?? binding.address);
|
|
1660
1839
|
sites.add(setAddress);
|
|
1661
1840
|
solidJs.onCleanup(() => sites.delete(setAddress));
|
|
1662
1841
|
return solidJs.untrack(() => binding.component(props, address));
|
|
@@ -1758,7 +1937,6 @@ Object.defineProperty(exports, "untrack", {
|
|
|
1758
1937
|
enumerable: true,
|
|
1759
1938
|
get: function () { return solidJs.untrack; }
|
|
1760
1939
|
});
|
|
1761
|
-
exports.Assets = voidFn;
|
|
1762
1940
|
exports.ChildProperties = ChildProperties;
|
|
1763
1941
|
exports.DOMElements = DOMElements;
|
|
1764
1942
|
exports.DOMWithState = DOMWithState;
|
|
@@ -1773,6 +1951,7 @@ exports.REVALIDATE_HEADER = REVALIDATE_HEADER;
|
|
|
1773
1951
|
exports.RawTextElements = RawTextElements;
|
|
1774
1952
|
exports.RequestContext = RequestContext;
|
|
1775
1953
|
exports.ResponseEnvelope = ResponseEnvelope;
|
|
1954
|
+
exports.SAFE_ERROR = SAFE_ERROR;
|
|
1776
1955
|
exports.SVGElements = SVGElements;
|
|
1777
1956
|
exports.VoidElements = VoidElements;
|
|
1778
1957
|
exports.acquireAsset = acquireAsset;
|
|
@@ -1783,14 +1962,19 @@ exports.claimElement = claimElement;
|
|
|
1783
1962
|
exports.claimElementTree = claimElementTree;
|
|
1784
1963
|
exports.className = className;
|
|
1785
1964
|
exports.clientOnly = clientOnly;
|
|
1965
|
+
exports.commitEventResponse = commitEventResponse;
|
|
1966
|
+
exports.composeMiddleware = composeMiddleware;
|
|
1967
|
+
exports.createRequestEvent = createRequestEvent;
|
|
1968
|
+
exports.createResponseStub = createResponseStub;
|
|
1969
|
+
exports.createSSRResponse = createSSRResponse;
|
|
1786
1970
|
exports.delegateEvents = delegateEvents;
|
|
1787
1971
|
exports.dynamic = dynamic;
|
|
1788
1972
|
exports.dynamicProperty = dynamicProperty;
|
|
1789
1973
|
exports.effect = effect;
|
|
1790
1974
|
exports.escape = escape;
|
|
1791
1975
|
exports.generateHydrationScript = voidFn;
|
|
1792
|
-
exports.getAssets = voidFn;
|
|
1793
1976
|
exports.getDelegatedRoot = getDelegatedRoot;
|
|
1977
|
+
exports.getExpectedRedirectStatus = getExpectedRedirectStatus;
|
|
1794
1978
|
exports.getFirstChild = getFirstChild;
|
|
1795
1979
|
exports.getHydrationKey = getHydrationKey;
|
|
1796
1980
|
exports.getNextElement = getNextElement;
|
|
@@ -1806,9 +1990,12 @@ exports.installHydrationRuntime = installHydrationRuntime;
|
|
|
1806
1990
|
exports.isDev = isDev;
|
|
1807
1991
|
exports.isHref = isHref;
|
|
1808
1992
|
exports.isResponseEnvelope = isResponseEnvelope;
|
|
1993
|
+
exports.isSafeError = isSafeError;
|
|
1809
1994
|
exports.isServer = isServer;
|
|
1995
|
+
exports.markSafeError = markSafeError;
|
|
1810
1996
|
exports.memo = memo;
|
|
1811
1997
|
exports.mergeProps = mergeProps;
|
|
1998
|
+
exports.parseCookieHeader = parseCookieHeader;
|
|
1812
1999
|
exports.redirect = redirect;
|
|
1813
2000
|
exports.ref = ref;
|
|
1814
2001
|
exports.registerDelegatedContainer = registerDelegatedContainer;
|
|
@@ -1818,11 +2005,11 @@ exports.reload = reload;
|
|
|
1818
2005
|
exports.render = render;
|
|
1819
2006
|
exports.renderToStream = renderToStream;
|
|
1820
2007
|
exports.renderToString = renderToString;
|
|
1821
|
-
exports.renderToStringAsync = renderToStringAsync;
|
|
1822
2008
|
exports.resolveSSRNode = resolveSSRNode;
|
|
1823
2009
|
exports.respond = respond;
|
|
1824
2010
|
exports.runHydrationEvents = runHydrationEvents;
|
|
1825
2011
|
exports.scope = scope;
|
|
2012
|
+
exports.serializeCookie = serializeCookie;
|
|
1826
2013
|
exports.setAttribute = setAttribute;
|
|
1827
2014
|
exports.setAttributeNS = setAttributeNS;
|
|
1828
2015
|
exports.setProperty = setProperty;
|
|
@@ -1830,13 +2017,15 @@ exports.setStyleProperty = setStyleProperty;
|
|
|
1830
2017
|
exports.spread = spread;
|
|
1831
2018
|
exports.ssr = ssr;
|
|
1832
2019
|
exports.ssrAttribute = ssrAttribute;
|
|
1833
|
-
exports.
|
|
2020
|
+
exports.ssrClassName = ssrClassName;
|
|
1834
2021
|
exports.ssrElement = ssrElement;
|
|
2022
|
+
exports.ssrGroup = ssrGroup;
|
|
1835
2023
|
exports.ssrHydrationKey = ssrHydrationKey;
|
|
1836
2024
|
exports.ssrStyle = ssrStyle;
|
|
2025
|
+
exports.ssrStyleProperty = ssrStyleProperty;
|
|
1837
2026
|
exports.style = style;
|
|
1838
2027
|
exports.template = template;
|
|
1839
2028
|
exports.unregisterDelegatedContainer = unregisterDelegatedContainer;
|
|
1840
2029
|
exports.unregisterDelegatedRoot = unregisterDelegatedRoot;
|
|
1841
|
-
exports.useAssets = voidFn;
|
|
1842
2030
|
exports.useHead = useHead;
|
|
2031
|
+
exports.warmAsset = warmAsset;
|