@solidjs/web 2.0.0-beta.31 → 2.0.0-beta.33
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 +285 -60
- package/dist/dev.js +267 -57
- package/dist/server.cjs +1148 -176
- package/dist/server.js +1133 -175
- package/dist/web.cjs +285 -60
- package/dist/web.js +267 -57
- package/frames/dist/client.cjs +397 -175
- package/frames/dist/client.dev.cjs +401 -175
- package/frames/dist/client.dev.js +399 -173
- package/frames/dist/client.js +395 -173
- package/frames/dist/server.cjs +1424 -277
- package/frames/dist/server.js +1426 -280
- package/package.json +69 -7
- package/serialization/decode/package.json +20 -0
- package/serialization/dist/decode.cjs +110 -0
- package/serialization/dist/decode.js +104 -0
- package/serialization/dist/serialization.cjs +106 -43
- package/serialization/dist/serialization.js +100 -44
- package/serialization/types/index.d.ts +85 -60
- package/serialization/types/serializer-decode.d.ts +182 -0
- package/serialization/types-cjs/index.d.cts +85 -60
- package/serialization/types-cjs/serializer-decode.d.cts +182 -0
- package/server-functions/dist/client.cjs +131 -98
- package/server-functions/dist/client.js +131 -99
- package/server-functions/dist/rich-args.cjs +11 -0
- package/server-functions/dist/rich-args.js +9 -0
- package/server-functions/dist/server.cjs +367 -194
- package/server-functions/dist/server.dev.cjs +1077 -0
- package/server-functions/dist/server.dev.js +1045 -0
- package/server-functions/dist/server.js +365 -195
- 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 +149 -6
- package/types/cookies.d.ts +93 -0
- package/types/core.d.ts +4 -2
- package/types/frames/client.d.ts +15 -1
- package/types/frames/frame-client.d.ts +63 -7
- package/types/frames/frame-sink.d.ts +26 -3
- package/types/frames/frame-transport.d.ts +40 -8
- package/types/frames/serializer.d.ts +85 -60
- 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-decode.d.ts +182 -0
- package/types/serializer.d.ts +85 -60
- package/types/server-functions/client.d.ts +2 -1
- package/types/server-functions/rich-args.d.ts +10 -0
- package/types/server-functions/server.d.ts +99 -1
- package/types/server-functions/shared.d.ts +79 -1
- package/types/server-mock.d.ts +171 -59
- package/types/server.d.ts +209 -37
- package/types-cjs/client.d.cts +149 -6
- package/types-cjs/cookies.d.cts +93 -0
- package/types-cjs/core.d.cts +4 -2
- package/types-cjs/frames/client.d.cts +15 -1
- package/types-cjs/frames/frame-client.d.cts +63 -7
- package/types-cjs/frames/frame-sink.d.cts +26 -3
- package/types-cjs/frames/frame-transport.d.cts +40 -8
- package/types-cjs/frames/serializer.d.cts +85 -60
- 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-decode.d.cts +182 -0
- package/types-cjs/serializer.d.cts +85 -60
- package/types-cjs/server-functions/client.d.cts +2 -1
- package/types-cjs/server-functions/rich-args.d.cts +10 -0
- package/types-cjs/server-functions/server.d.cts +99 -1
- package/types-cjs/server-functions/shared.d.cts +79 -1
- package/types-cjs/server-mock.d.cts +171 -59
- package/types-cjs/server.d.cts +209 -37
package/dist/web.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
|
}
|
|
@@ -254,6 +266,64 @@ function resolveHead(groups) {
|
|
|
254
266
|
return winners;
|
|
255
267
|
}
|
|
256
268
|
|
|
269
|
+
function parseCookieHeader(header) {
|
|
270
|
+
const cookies = {};
|
|
271
|
+
if (!header) return cookies;
|
|
272
|
+
for (const part of header.split(";")) {
|
|
273
|
+
const eq = part.indexOf("=");
|
|
274
|
+
if (eq < 0) continue;
|
|
275
|
+
const name = decodeSafe(part.slice(0, eq).trim());
|
|
276
|
+
let value = part.slice(eq + 1).trim();
|
|
277
|
+
if (value.length > 1 && value[0] === '"' && value[value.length - 1] === '"') {
|
|
278
|
+
value = value.slice(1, -1);
|
|
279
|
+
}
|
|
280
|
+
cookies[name] = decodeSafe(value);
|
|
281
|
+
}
|
|
282
|
+
return cookies;
|
|
283
|
+
}
|
|
284
|
+
function decodeSafe(text) {
|
|
285
|
+
try {
|
|
286
|
+
return decodeURIComponent(text);
|
|
287
|
+
} catch {
|
|
288
|
+
return text;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
function serializeCookie(name, value, options = {}) {
|
|
292
|
+
let cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
|
|
293
|
+
cookie += `; Path=${options.path === undefined ? "/" : options.path}`;
|
|
294
|
+
if (options.domain) cookie += `; Domain=${options.domain}`;
|
|
295
|
+
if (options.maxAge !== undefined) cookie += `; Max-Age=${Math.trunc(options.maxAge)}`;
|
|
296
|
+
if (options.expires) cookie += `; Expires=${options.expires.toUTCString()}`;
|
|
297
|
+
if (options.httpOnly) cookie += "; HttpOnly";
|
|
298
|
+
if (options.secure) cookie += "; Secure";
|
|
299
|
+
if (options.sameSite) {
|
|
300
|
+
const sameSite = options.sameSite.toLowerCase();
|
|
301
|
+
cookie += `; SameSite=${sameSite === "none" ? "None" : sameSite === "strict" ? "Strict" : "Lax"}`;
|
|
302
|
+
}
|
|
303
|
+
return cookie;
|
|
304
|
+
}
|
|
305
|
+
const FLASH_COOKIE = "flash";
|
|
306
|
+
const FLASH_MATCHER = new RegExp(`(?:^|;\\s*)${FLASH_COOKIE}=([^;]+)`);
|
|
307
|
+
function hasFlashCookie(cookieHeader) {
|
|
308
|
+
return !!cookieHeader && FLASH_MATCHER.test(cookieHeader);
|
|
309
|
+
}
|
|
310
|
+
function clearFlashCookie() {
|
|
311
|
+
return `${FLASH_COOKIE}=; Max-Age=0; Path=/`;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
const SERVER_FUNCTION_METADATA = Symbol.for("solid.ServerFunctionMetadata");
|
|
315
|
+
function getServerFunctionMetadata(fn) {
|
|
316
|
+
if (typeof fn !== "function") return undefined;
|
|
317
|
+
return fn[SERVER_FUNCTION_METADATA] || undefined;
|
|
318
|
+
}
|
|
319
|
+
function isServerFunction(fn) {
|
|
320
|
+
return typeof fn === "function" && !!fn[SERVER_FUNCTION_METADATA];
|
|
321
|
+
}
|
|
322
|
+
const SERVER_FUNCTION_RPC = Symbol.for("solid.ServerFunctionRPC");
|
|
323
|
+
function getServerFunctionRPC() {
|
|
324
|
+
return globalThis[SERVER_FUNCTION_RPC];
|
|
325
|
+
}
|
|
326
|
+
|
|
257
327
|
const $$EVENT_OWNER = "_$DX_EVENT_OWNER";
|
|
258
328
|
const INNER_OWNED = {};
|
|
259
329
|
const delegatedEvents = new Set();
|
|
@@ -603,8 +673,7 @@ function insert(parent, accessor, marker, initial, options) {
|
|
|
603
673
|
const value = normalize(accessor(), current, multi, true);
|
|
604
674
|
if (typeof value !== "function") return value;
|
|
605
675
|
effect(() => (hydrationRt !== null && (current = hydrationRt.reclaimRegion(current, parent, marker)), normalize(value, current, multi)), inner => {
|
|
606
|
-
insertExpression(parent, inner, current, marker);
|
|
607
|
-
current = inner;
|
|
676
|
+
current = insertExpression(parent, inner, current, marker);
|
|
608
677
|
host && tagHost(current, host);
|
|
609
678
|
}, prev !== undefined && !(options && options.schedule) ? {
|
|
610
679
|
...options,
|
|
@@ -613,8 +682,7 @@ function insert(parent, accessor, marker, initial, options) {
|
|
|
613
682
|
return INNER_OWNED;
|
|
614
683
|
}, value => {
|
|
615
684
|
if (value === INNER_OWNED) return;
|
|
616
|
-
insertExpression(parent, value, current, marker);
|
|
617
|
-
current = value;
|
|
685
|
+
current = insertExpression(parent, value, current, marker);
|
|
618
686
|
host && tagHost(current, host);
|
|
619
687
|
},
|
|
620
688
|
accessor.$s ? options ? {
|
|
@@ -652,6 +720,9 @@ function findAssetElement(selector, attr, value) {
|
|
|
652
720
|
}
|
|
653
721
|
return null;
|
|
654
722
|
}
|
|
723
|
+
function setAssetAttrs(el, attrs) {
|
|
724
|
+
for (const name in attrs) el.setAttribute(name, attrs[name]);
|
|
725
|
+
}
|
|
655
726
|
function mountAssetElement(descriptor) {
|
|
656
727
|
let el;
|
|
657
728
|
if (descriptor.type === "inline-style") {
|
|
@@ -670,12 +741,77 @@ function mountAssetElement(descriptor) {
|
|
|
670
741
|
el.href = descriptor.href;
|
|
671
742
|
}
|
|
672
743
|
}
|
|
673
|
-
if (descriptor.attrs)
|
|
674
|
-
for (const name in descriptor.attrs) el.setAttribute(name, descriptor.attrs[name]);
|
|
675
|
-
}
|
|
744
|
+
if (descriptor.attrs) setAssetAttrs(el, descriptor.attrs);
|
|
676
745
|
if (!el.isConnected) document.head.appendChild(el);
|
|
677
746
|
return el;
|
|
678
747
|
}
|
|
748
|
+
const assetLoadSettled = /*#__PURE__*/Promise.resolve();
|
|
749
|
+
function trackAssetLoad(entry, adopted) {
|
|
750
|
+
if (entry.loadPromise) return;
|
|
751
|
+
const el = entry.element;
|
|
752
|
+
let settled = el.sheet != null;
|
|
753
|
+
if (!settled && adopted && typeof performance !== "undefined" && performance.getEntriesByName) {
|
|
754
|
+
settled = performance.getEntriesByName(el.href).length > 0;
|
|
755
|
+
}
|
|
756
|
+
if (settled) {
|
|
757
|
+
entry.loadState = "loaded";
|
|
758
|
+
entry.loadPromise = assetLoadSettled;
|
|
759
|
+
return;
|
|
760
|
+
}
|
|
761
|
+
entry.loadState = "pending";
|
|
762
|
+
entry.loadPromise = new Promise(resolve => {
|
|
763
|
+
const settle = state => {
|
|
764
|
+
entry.loadState = state;
|
|
765
|
+
resolve();
|
|
766
|
+
};
|
|
767
|
+
el.addEventListener("load", () => settle("loaded"), {
|
|
768
|
+
once: true
|
|
769
|
+
});
|
|
770
|
+
el.addEventListener("error", () => settle("errored"), {
|
|
771
|
+
once: true
|
|
772
|
+
});
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
function warmAsset(descriptor) {
|
|
776
|
+
if (descriptor.policy === "exclusive" || descriptor.type === "inline-style") return;
|
|
777
|
+
const key = assetEntryKey(descriptor);
|
|
778
|
+
let entry = assetRegistry.get(key);
|
|
779
|
+
if (!entry) {
|
|
780
|
+
entry = {
|
|
781
|
+
count: 0,
|
|
782
|
+
element: null,
|
|
783
|
+
timer: null
|
|
784
|
+
};
|
|
785
|
+
assetRegistry.set(key, entry);
|
|
786
|
+
}
|
|
787
|
+
let adopted = true;
|
|
788
|
+
if (!entry.element || !entry.element.isConnected) {
|
|
789
|
+
const rel = descriptor.type === "module" ? "modulepreload" : "stylesheet";
|
|
790
|
+
let el = findAssetElement(`link[rel="${rel}"]`, "href", descriptor.href);
|
|
791
|
+
if (!el && descriptor.type === "style") {
|
|
792
|
+
el = findAssetElement('link[rel="preload"][as="style"]', "href", descriptor.href);
|
|
793
|
+
}
|
|
794
|
+
if (!el) {
|
|
795
|
+
adopted = false;
|
|
796
|
+
el = document.createElement("link");
|
|
797
|
+
if (descriptor.type === "style") {
|
|
798
|
+
el.setAttribute("rel", "preload");
|
|
799
|
+
el.setAttribute("as", "style");
|
|
800
|
+
} else {
|
|
801
|
+
el.setAttribute("rel", "modulepreload");
|
|
802
|
+
}
|
|
803
|
+
el.setAttribute("href", descriptor.href);
|
|
804
|
+
if (!document.body) el.setAttribute("blocking", "render");
|
|
805
|
+
}
|
|
806
|
+
if (descriptor.attrs) setAssetAttrs(el, descriptor.attrs);
|
|
807
|
+
if (!el.isConnected) document.head.appendChild(el);
|
|
808
|
+
entry.element = el;
|
|
809
|
+
entry.loadState = undefined;
|
|
810
|
+
entry.loadPromise = undefined;
|
|
811
|
+
}
|
|
812
|
+
if (descriptor.type === "style") trackAssetLoad(entry, adopted);
|
|
813
|
+
return entry;
|
|
814
|
+
}
|
|
679
815
|
function acquireAsset(descriptor) {
|
|
680
816
|
const key = assetEntryKey(descriptor);
|
|
681
817
|
let entry = assetRegistry.get(key);
|
|
@@ -722,7 +858,12 @@ function acquireAsset(descriptor) {
|
|
|
722
858
|
entry.timer = null;
|
|
723
859
|
}
|
|
724
860
|
entry.count++;
|
|
725
|
-
if (!entry.element || !entry.element.isConnected)
|
|
861
|
+
if (!entry.element || !entry.element.isConnected) {
|
|
862
|
+
entry.element = mountAssetElement(descriptor);
|
|
863
|
+
} else if (descriptor.type === "style" && entry.element.getAttribute("rel") === "preload") {
|
|
864
|
+
entry.element.removeAttribute("as");
|
|
865
|
+
entry.element.setAttribute("rel", "stylesheet");
|
|
866
|
+
}
|
|
726
867
|
let released = false;
|
|
727
868
|
return () => {
|
|
728
869
|
if (released) return;
|
|
@@ -869,25 +1010,9 @@ function headElementMatches(el, t) {
|
|
|
869
1010
|
const children = t.props.children;
|
|
870
1011
|
return (children == null ? "" : String(children)) === el.textContent;
|
|
871
1012
|
}
|
|
872
|
-
function
|
|
873
|
-
if (tag === "link" && (props.rel === "stylesheet" || props.rel === "modulepreload")) {
|
|
874
|
-
const descriptor = {
|
|
875
|
-
type: props.rel === "stylesheet" ? "style" : "module",
|
|
876
|
-
href: props.href
|
|
877
|
-
};
|
|
878
|
-
let attrs = null;
|
|
879
|
-
for (const name in props) {
|
|
880
|
-
if (name === "rel" || name === "href") continue;
|
|
881
|
-
if (!HEAD_ATTR_NAME.test(name)) continue;
|
|
882
|
-
const v = props[name];
|
|
883
|
-
if (v == null || v === false) continue;
|
|
884
|
-
(attrs || (attrs = {}))[name] = v === true ? "" : String(v);
|
|
885
|
-
}
|
|
886
|
-
if (attrs) descriptor.attrs = attrs;
|
|
887
|
-
return acquireAsset(descriptor);
|
|
888
|
-
}
|
|
1013
|
+
function mountHeadResource(tag, props) {
|
|
889
1014
|
const identity = resourceIdentity(tag, props);
|
|
890
|
-
if (headMountedResources.has(identity)) return
|
|
1015
|
+
if (headMountedResources.has(identity)) return;
|
|
891
1016
|
headMountedResources.add(identity);
|
|
892
1017
|
const url = props.href || props.src;
|
|
893
1018
|
let el = null;
|
|
@@ -895,9 +1020,28 @@ function acquireHeadResource(tag, props) {
|
|
|
895
1020
|
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);
|
|
896
1021
|
}
|
|
897
1022
|
if (!el) document.head.appendChild(createHeadElement(tag, props));
|
|
898
|
-
return noopFn;
|
|
899
1023
|
}
|
|
900
|
-
function
|
|
1024
|
+
function gateHeadResource(props) {
|
|
1025
|
+
const descriptor = {
|
|
1026
|
+
type: props.rel === "stylesheet" ? "style" : "module",
|
|
1027
|
+
href: props.href
|
|
1028
|
+
};
|
|
1029
|
+
let gateable = props.rel === "stylesheet" && props.href != null;
|
|
1030
|
+
let attrs = null;
|
|
1031
|
+
for (const name in props) {
|
|
1032
|
+
if (name === "rel" || name === "href") continue;
|
|
1033
|
+
if (!STYLESHEET_FETCH_META.has(name)) gateable = false;
|
|
1034
|
+
if (!HEAD_ATTR_NAME.test(name)) continue;
|
|
1035
|
+
const v = props[name];
|
|
1036
|
+
if (v == null || v === false) continue;
|
|
1037
|
+
(attrs || (attrs = {}))[name] = v === true ? "" : String(v);
|
|
1038
|
+
}
|
|
1039
|
+
if (attrs) descriptor.attrs = attrs;
|
|
1040
|
+
effect(() => {
|
|
1041
|
+
const entry = warmAsset(descriptor);
|
|
1042
|
+
if (gateable && entry.loadState === "pending" && typeof waitAsset === "function") waitAsset(entry.loadPromise);
|
|
1043
|
+
}, () => acquireAsset(descriptor));
|
|
1044
|
+
}
|
|
901
1045
|
function useHead(tags) {
|
|
902
1046
|
initHeadRegistry();
|
|
903
1047
|
const reg = {
|
|
@@ -920,10 +1064,16 @@ function useHead(tags) {
|
|
|
920
1064
|
rel: cls.rel
|
|
921
1065
|
} : undefined);
|
|
922
1066
|
if (cls.resource) {
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
1067
|
+
if (desc.tag === "link" && (props.rel === "stylesheet" || props.rel === "modulepreload")) {
|
|
1068
|
+
gateHeadResource(props);
|
|
1069
|
+
} else if (desc.tag === "link") {
|
|
1070
|
+
mountHeadResource(desc.tag, props);
|
|
1071
|
+
} else {
|
|
1072
|
+
resources.push({
|
|
1073
|
+
tag: desc.tag,
|
|
1074
|
+
props
|
|
1075
|
+
});
|
|
1076
|
+
}
|
|
927
1077
|
} else {
|
|
928
1078
|
const key = evalHeadValue(desc.key);
|
|
929
1079
|
replaceable.push({
|
|
@@ -938,9 +1088,8 @@ function useHead(tags) {
|
|
|
938
1088
|
resources
|
|
939
1089
|
};
|
|
940
1090
|
}, evaluated => {
|
|
941
|
-
const releases = [];
|
|
942
1091
|
for (let i = 0; i < evaluated.resources.length; i++) {
|
|
943
|
-
|
|
1092
|
+
mountHeadResource(evaluated.resources[i].tag, evaluated.resources[i].props);
|
|
944
1093
|
}
|
|
945
1094
|
reg.tags = evaluated.replaceable;
|
|
946
1095
|
if (reg.seq < 0) reg.seq = ++headSeq;
|
|
@@ -949,7 +1098,6 @@ function useHead(tags) {
|
|
|
949
1098
|
return () => {
|
|
950
1099
|
const idx = headRegistrations.indexOf(reg);
|
|
951
1100
|
if (idx > -1) headRegistrations.splice(idx, 1);
|
|
952
|
-
for (let i = 0; i < releases.length; i++) releases[i]();
|
|
953
1101
|
scheduleHeadApply();
|
|
954
1102
|
};
|
|
955
1103
|
});
|
|
@@ -1263,8 +1411,11 @@ function eventHandler(e, container, state) {
|
|
|
1263
1411
|
retarget(oriTarget);
|
|
1264
1412
|
}
|
|
1265
1413
|
function insertExpression(parent, value, current, marker) {
|
|
1266
|
-
if (hydrationRt !== null && isHydrating(parent))
|
|
1267
|
-
|
|
1414
|
+
if (hydrationRt !== null && isHydrating(parent)) {
|
|
1415
|
+
if (value && value !== current) for (const n of Array.isArray(value) ? value : [value]) if (n && n.nodeType && !isHydrating(n)) return current;
|
|
1416
|
+
return value;
|
|
1417
|
+
}
|
|
1418
|
+
if (value === current) return value;
|
|
1268
1419
|
const t = typeof value,
|
|
1269
1420
|
multi = marker !== undefined;
|
|
1270
1421
|
if (t === "string" || t === "number") {
|
|
@@ -1303,6 +1454,7 @@ function insertExpression(parent, value, current, marker) {
|
|
|
1303
1454
|
appendNodes(parent, value);
|
|
1304
1455
|
}
|
|
1305
1456
|
} else ;
|
|
1457
|
+
return value;
|
|
1306
1458
|
}
|
|
1307
1459
|
function normalize(value, current, multi, doNotUnwrap) {
|
|
1308
1460
|
value = solidJs.flatten(value, {
|
|
@@ -1385,7 +1537,13 @@ function gatherHydratable(element, root) {
|
|
|
1385
1537
|
for (let i = 0; i < templates.length; i++) {
|
|
1386
1538
|
const node = templates[i];
|
|
1387
1539
|
const key = node.getAttribute("_hk");
|
|
1388
|
-
if (
|
|
1540
|
+
if (root) {
|
|
1541
|
+
if (!key.startsWith(root)) continue;
|
|
1542
|
+
} else {
|
|
1543
|
+
const frame = node.closest("[data-fid]");
|
|
1544
|
+
if (frame && frame !== element && element.contains(frame)) continue;
|
|
1545
|
+
}
|
|
1546
|
+
if (!solidJs.sharedConfig.registry.has(key)) solidJs.sharedConfig.registry.set(key, node);
|
|
1389
1547
|
}
|
|
1390
1548
|
}
|
|
1391
1549
|
function getHydrationKey() {
|
|
@@ -1401,29 +1559,50 @@ function throwInBrowser(func) {
|
|
|
1401
1559
|
function renderToString(fn, options) {
|
|
1402
1560
|
throwInBrowser(renderToString);
|
|
1403
1561
|
}
|
|
1404
|
-
function renderToStringAsync(fn, options) {
|
|
1405
|
-
throwInBrowser(renderToStringAsync);
|
|
1406
|
-
}
|
|
1407
1562
|
function renderToStream(fn, options) {
|
|
1408
1563
|
throwInBrowser(renderToStream);
|
|
1409
1564
|
}
|
|
1565
|
+
function createResponseStub() {
|
|
1566
|
+
throwInBrowser(createResponseStub);
|
|
1567
|
+
}
|
|
1568
|
+
function createRequestEvent(request, init) {
|
|
1569
|
+
throwInBrowser(createRequestEvent);
|
|
1570
|
+
}
|
|
1571
|
+
function getExpectedRedirectStatus(response) {
|
|
1572
|
+
throwInBrowser(getExpectedRedirectStatus);
|
|
1573
|
+
}
|
|
1574
|
+
function createSSRResponse() {
|
|
1575
|
+
throwInBrowser(createSSRResponse);
|
|
1576
|
+
}
|
|
1577
|
+
function commitEventResponse(response, event) {
|
|
1578
|
+
throwInBrowser(commitEventResponse);
|
|
1579
|
+
}
|
|
1580
|
+
function composeMiddleware(middlewares) {
|
|
1581
|
+
throwInBrowser(composeMiddleware);
|
|
1582
|
+
}
|
|
1410
1583
|
function ssr(template, ...nodes) {}
|
|
1411
1584
|
function ssrElement(name, props, children, needsId) {}
|
|
1412
|
-
function
|
|
1585
|
+
function ssrClassName(value) {}
|
|
1413
1586
|
function ssrStyle(value) {}
|
|
1587
|
+
function ssrStyleProperty(name, value) {}
|
|
1414
1588
|
function ssrAttribute(key, value) {}
|
|
1589
|
+
function ssrGroup(fn, n) {}
|
|
1415
1590
|
function ssrHydrationKey() {}
|
|
1416
|
-
function resolveSSRNode(node) {}
|
|
1417
|
-
function escape(
|
|
1591
|
+
function resolveSSRNode(node, result, top) {}
|
|
1592
|
+
function escape(s, attr) {}
|
|
1418
1593
|
|
|
1419
1594
|
const ENVELOPE = Symbol.for("solid.ResponseEnvelope");
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1595
|
+
// PURE-annotated factory (same convention as solid's MockPromise): the brand
|
|
1596
|
+
const ResponseEnvelope = /* @__PURE__ */(() => {
|
|
1597
|
+
class ResponseEnvelope {
|
|
1598
|
+
constructor(response, value) {
|
|
1599
|
+
this.response = response;
|
|
1600
|
+
this.value = value;
|
|
1601
|
+
}
|
|
1424
1602
|
}
|
|
1425
|
-
|
|
1426
|
-
ResponseEnvelope
|
|
1603
|
+
ResponseEnvelope.prototype[ENVELOPE] = true;
|
|
1604
|
+
return ResponseEnvelope;
|
|
1605
|
+
})();
|
|
1427
1606
|
function isResponseEnvelope(value) {
|
|
1428
1607
|
return !!(value && typeof value === "object" && value[ENVELOPE]);
|
|
1429
1608
|
}
|
|
@@ -1431,13 +1610,38 @@ const HREF = Symbol.for("solid.Href");
|
|
|
1431
1610
|
function isHref(value) {
|
|
1432
1611
|
return !!(value && (typeof value === "object" || typeof value === "function") && value[HREF]);
|
|
1433
1612
|
}
|
|
1613
|
+
const SAFE_ERROR = Symbol.for("solid.SafeError");
|
|
1614
|
+
function markSafeError(error) {
|
|
1615
|
+
if (error && (typeof error === "object" || typeof error === "function")) {
|
|
1616
|
+
Object.defineProperty(error, SAFE_ERROR, {
|
|
1617
|
+
value: true,
|
|
1618
|
+
enumerable: false,
|
|
1619
|
+
configurable: true
|
|
1620
|
+
});
|
|
1621
|
+
}
|
|
1622
|
+
return error;
|
|
1623
|
+
}
|
|
1624
|
+
function isSafeError(value) {
|
|
1625
|
+
return !!(value && (typeof value === "object" || typeof value === "function") && value[SAFE_ERROR]);
|
|
1626
|
+
}
|
|
1434
1627
|
const REVALIDATE_HEADER = "X-Revalidate";
|
|
1435
1628
|
function initWithRevalidate(init) {
|
|
1436
1629
|
const {
|
|
1437
1630
|
revalidate,
|
|
1438
1631
|
...responseInit
|
|
1439
1632
|
} = init;
|
|
1440
|
-
|
|
1633
|
+
let headers;
|
|
1634
|
+
if (responseInit.headers && responseInit.headers.getSetCookie) {
|
|
1635
|
+
headers = new Headers();
|
|
1636
|
+
responseInit.headers.forEach((value, key) => {
|
|
1637
|
+
if (key !== "set-cookie") headers.append(key, value);
|
|
1638
|
+
});
|
|
1639
|
+
for (const cookie of responseInit.headers.getSetCookie()) {
|
|
1640
|
+
headers.append("Set-Cookie", cookie);
|
|
1641
|
+
}
|
|
1642
|
+
} else {
|
|
1643
|
+
headers = new Headers(responseInit.headers);
|
|
1644
|
+
}
|
|
1441
1645
|
revalidate !== undefined && headers.set(REVALIDATE_HEADER, revalidate.toString());
|
|
1442
1646
|
return {
|
|
1443
1647
|
responseInit,
|
|
@@ -1514,7 +1718,8 @@ function portalImpl(props) {
|
|
|
1514
1718
|
endMarker = document.createTextNode(""),
|
|
1515
1719
|
mount = () => props.mount || document.body,
|
|
1516
1720
|
content = solidJs.createMemo(() => [startMarker, props.children], {
|
|
1517
|
-
ssrSource: "client"
|
|
1721
|
+
ssrSource: "client",
|
|
1722
|
+
loadingValue: undefined
|
|
1518
1723
|
});
|
|
1519
1724
|
solidJs.createRenderEffect(
|
|
1520
1725
|
() => [mount(), content(), solidJs.getOwner()], ([, c, owner]) => {
|
|
@@ -1551,7 +1756,8 @@ function portalImpl(props) {
|
|
|
1551
1756
|
ssrSource: "client"
|
|
1552
1757
|
});
|
|
1553
1758
|
if (solidJs.sharedConfig.hydrating) return solidJs.createMemo(() => treeMarker, {
|
|
1554
|
-
ssrSource: "client"
|
|
1759
|
+
ssrSource: "client",
|
|
1760
|
+
loadingValue: undefined
|
|
1555
1761
|
});
|
|
1556
1762
|
return treeMarker;
|
|
1557
1763
|
}
|
|
@@ -1562,9 +1768,11 @@ function bindingOf(value) {
|
|
|
1562
1768
|
function dynamic(source) {
|
|
1563
1769
|
let latest = 0;
|
|
1564
1770
|
const sites = new Set();
|
|
1771
|
+
let deliveredAddress;
|
|
1565
1772
|
const resolveBinding = (next, prev) => {
|
|
1566
1773
|
const binding = bindingOf(next);
|
|
1567
1774
|
if (!binding) return next;
|
|
1775
|
+
deliveredAddress = binding.address;
|
|
1568
1776
|
const prevBinding = bindingOf(prev);
|
|
1569
1777
|
if (prevBinding && prevBinding.component === binding.component) {
|
|
1570
1778
|
for (const deliver of sites) deliver(binding.address);
|
|
@@ -1590,7 +1798,7 @@ function dynamic(source) {
|
|
|
1590
1798
|
{
|
|
1591
1799
|
const binding = bindingOf(component);
|
|
1592
1800
|
if (binding) {
|
|
1593
|
-
const [address, setAddress] = solidJs.createSignal(binding.address);
|
|
1801
|
+
const [address, setAddress] = solidJs.createSignal(deliveredAddress ?? binding.address);
|
|
1594
1802
|
sites.add(setAddress);
|
|
1595
1803
|
solidJs.onCleanup(() => sites.delete(setAddress));
|
|
1596
1804
|
return solidJs.untrack(() => binding.component(props, address));
|
|
@@ -1633,7 +1841,9 @@ _moduleUrl) {
|
|
|
1633
1841
|
if ((Comp = solidJs.untrack(comp)) && !solidJs.sharedConfig.hydrating) return Comp(rest);
|
|
1634
1842
|
const [mounted, setMounted] = solidJs.createSignal(!solidJs.sharedConfig.hydrating);
|
|
1635
1843
|
const gate = solidJs.createMemo(() => (Comp = comp(), m = mounted(), solidJs.untrack(() => Comp && m ? Comp(rest) : props.fallback)));
|
|
1636
|
-
solidJs.sharedConfig.onHydrationEnd
|
|
1844
|
+
const onHydrationEnd = solidJs.sharedConfig.onHydrationEnd;
|
|
1845
|
+
const release = () => setMounted(true);
|
|
1846
|
+
onHydrationEnd ? onHydrationEnd(release) : queueMicrotask(release);
|
|
1637
1847
|
return gate;
|
|
1638
1848
|
};
|
|
1639
1849
|
}
|
|
@@ -1692,7 +1902,6 @@ Object.defineProperty(exports, "untrack", {
|
|
|
1692
1902
|
enumerable: true,
|
|
1693
1903
|
get: function () { return solidJs.untrack; }
|
|
1694
1904
|
});
|
|
1695
|
-
exports.Assets = voidFn;
|
|
1696
1905
|
exports.ChildProperties = ChildProperties;
|
|
1697
1906
|
exports.DOMElements = DOMElements;
|
|
1698
1907
|
exports.DOMWithState = DOMWithState;
|
|
@@ -1707,6 +1916,7 @@ exports.REVALIDATE_HEADER = REVALIDATE_HEADER;
|
|
|
1707
1916
|
exports.RawTextElements = RawTextElements;
|
|
1708
1917
|
exports.RequestContext = RequestContext;
|
|
1709
1918
|
exports.ResponseEnvelope = ResponseEnvelope;
|
|
1919
|
+
exports.SAFE_ERROR = SAFE_ERROR;
|
|
1710
1920
|
exports.SVGElements = SVGElements;
|
|
1711
1921
|
exports.VoidElements = VoidElements;
|
|
1712
1922
|
exports.acquireAsset = acquireAsset;
|
|
@@ -1716,15 +1926,21 @@ exports.assign = assign;
|
|
|
1716
1926
|
exports.claimElement = claimElement;
|
|
1717
1927
|
exports.claimElementTree = claimElementTree;
|
|
1718
1928
|
exports.className = className;
|
|
1929
|
+
exports.clearFlashCookie = clearFlashCookie;
|
|
1719
1930
|
exports.clientOnly = clientOnly;
|
|
1931
|
+
exports.commitEventResponse = commitEventResponse;
|
|
1932
|
+
exports.composeMiddleware = composeMiddleware;
|
|
1933
|
+
exports.createRequestEvent = createRequestEvent;
|
|
1934
|
+
exports.createResponseStub = createResponseStub;
|
|
1935
|
+
exports.createSSRResponse = createSSRResponse;
|
|
1720
1936
|
exports.delegateEvents = delegateEvents;
|
|
1721
1937
|
exports.dynamic = dynamic;
|
|
1722
1938
|
exports.dynamicProperty = dynamicProperty;
|
|
1723
1939
|
exports.effect = effect;
|
|
1724
1940
|
exports.escape = escape;
|
|
1725
1941
|
exports.generateHydrationScript = voidFn;
|
|
1726
|
-
exports.getAssets = voidFn;
|
|
1727
1942
|
exports.getDelegatedRoot = getDelegatedRoot;
|
|
1943
|
+
exports.getExpectedRedirectStatus = getExpectedRedirectStatus;
|
|
1728
1944
|
exports.getFirstChild = getFirstChild;
|
|
1729
1945
|
exports.getHydrationKey = getHydrationKey;
|
|
1730
1946
|
exports.getNextElement = getNextElement;
|
|
@@ -1732,6 +1948,9 @@ exports.getNextMarker = getNextMarker;
|
|
|
1732
1948
|
exports.getNextMatch = getNextMatch;
|
|
1733
1949
|
exports.getNextSibling = getNextSibling;
|
|
1734
1950
|
exports.getRequestEvent = voidFn;
|
|
1951
|
+
exports.getServerFunctionMetadata = getServerFunctionMetadata;
|
|
1952
|
+
exports.getServerFunctionRPC = getServerFunctionRPC;
|
|
1953
|
+
exports.hasFlashCookie = hasFlashCookie;
|
|
1735
1954
|
exports.httpHeader = httpHeader;
|
|
1736
1955
|
exports.httpStatus = httpStatus;
|
|
1737
1956
|
exports.hydrate = hydrate;
|
|
@@ -1740,9 +1959,13 @@ exports.installHydrationRuntime = installHydrationRuntime;
|
|
|
1740
1959
|
exports.isDev = isDev;
|
|
1741
1960
|
exports.isHref = isHref;
|
|
1742
1961
|
exports.isResponseEnvelope = isResponseEnvelope;
|
|
1962
|
+
exports.isSafeError = isSafeError;
|
|
1743
1963
|
exports.isServer = isServer;
|
|
1964
|
+
exports.isServerFunction = isServerFunction;
|
|
1965
|
+
exports.markSafeError = markSafeError;
|
|
1744
1966
|
exports.memo = memo;
|
|
1745
1967
|
exports.mergeProps = mergeProps;
|
|
1968
|
+
exports.parseCookieHeader = parseCookieHeader;
|
|
1746
1969
|
exports.redirect = redirect;
|
|
1747
1970
|
exports.ref = ref;
|
|
1748
1971
|
exports.registerDelegatedContainer = registerDelegatedContainer;
|
|
@@ -1752,11 +1975,11 @@ exports.reload = reload;
|
|
|
1752
1975
|
exports.render = render;
|
|
1753
1976
|
exports.renderToStream = renderToStream;
|
|
1754
1977
|
exports.renderToString = renderToString;
|
|
1755
|
-
exports.renderToStringAsync = renderToStringAsync;
|
|
1756
1978
|
exports.resolveSSRNode = resolveSSRNode;
|
|
1757
1979
|
exports.respond = respond;
|
|
1758
1980
|
exports.runHydrationEvents = runHydrationEvents;
|
|
1759
1981
|
exports.scope = scope;
|
|
1982
|
+
exports.serializeCookie = serializeCookie;
|
|
1760
1983
|
exports.setAttribute = setAttribute;
|
|
1761
1984
|
exports.setAttributeNS = setAttributeNS;
|
|
1762
1985
|
exports.setProperty = setProperty;
|
|
@@ -1764,13 +1987,15 @@ exports.setStyleProperty = setStyleProperty;
|
|
|
1764
1987
|
exports.spread = spread;
|
|
1765
1988
|
exports.ssr = ssr;
|
|
1766
1989
|
exports.ssrAttribute = ssrAttribute;
|
|
1767
|
-
exports.
|
|
1990
|
+
exports.ssrClassName = ssrClassName;
|
|
1768
1991
|
exports.ssrElement = ssrElement;
|
|
1992
|
+
exports.ssrGroup = ssrGroup;
|
|
1769
1993
|
exports.ssrHydrationKey = ssrHydrationKey;
|
|
1770
1994
|
exports.ssrStyle = ssrStyle;
|
|
1995
|
+
exports.ssrStyleProperty = ssrStyleProperty;
|
|
1771
1996
|
exports.style = style;
|
|
1772
1997
|
exports.template = template;
|
|
1773
1998
|
exports.unregisterDelegatedContainer = unregisterDelegatedContainer;
|
|
1774
1999
|
exports.unregisterDelegatedRoot = unregisterDelegatedRoot;
|
|
1775
|
-
exports.useAssets = voidFn;
|
|
1776
2000
|
exports.useHead = useHead;
|
|
2001
|
+
exports.warmAsset = warmAsset;
|