@bleedingdev/modern-js-renderer-solid 0.0.0-stage → 3.9.3-ultramodern.1
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/esm/actions.js +283 -0
- package/dist/esm/application-router.js +25 -0
- package/dist/esm/client.js +49 -0
- package/dist/esm/entry-application.js +60 -0
- package/dist/esm/entry-client.js +23 -0
- package/dist/esm/federation-context.js +25 -0
- package/dist/esm/federation-ssr.js +84 -0
- package/dist/esm/federation.js +83 -0
- package/dist/esm/i18n/I18nProvider.js +33 -0
- package/dist/esm/i18n/LocalizedLink.js +74 -0
- package/dist/esm/i18n/context.js +3 -0
- package/dist/esm/i18n/index.js +8 -0
- package/dist/esm/i18n/languageSync.js +50 -0
- package/dist/esm/i18n/types.js +0 -0
- package/dist/esm/i18n/useI18n.js +74 -0
- package/dist/esm/index.js +58 -0
- package/dist/esm/manifest.js +150 -0
- package/dist/esm/route-completion.js +150 -0
- package/dist/esm/route-data-error.js +108 -0
- package/dist/esm/router-binding/Asset.js +201 -0
- package/dist/esm/router-binding/CatchBoundary.js +94 -0
- package/dist/esm/router-binding/ClientOnly.js +26 -0
- package/dist/esm/router-binding/HeadContent.js +8 -0
- package/dist/esm/router-binding/LICENSE +21 -0
- package/dist/esm/router-binding/Match.js +319 -0
- package/dist/esm/router-binding/Matches.js +117 -0
- package/dist/esm/router-binding/PROVENANCE.json +94 -0
- package/dist/esm/router-binding/RouterProvider.js +51 -0
- package/dist/esm/router-binding/SafeFragment.js +5 -0
- package/dist/esm/router-binding/ScriptOnce.js +15 -0
- package/dist/esm/router-binding/Scripts.js +30 -0
- package/dist/esm/router-binding/ScrollRestoration.js +16 -0
- package/dist/esm/router-binding/Transitioner.js +103 -0
- package/dist/esm/router-binding/awaited.js +48 -0
- package/dist/esm/router-binding/fileRoute.js +83 -0
- package/dist/esm/router-binding/flightData.js +23 -0
- package/dist/esm/router-binding/headContentUtils.js +162 -0
- package/dist/esm/router-binding/history.js +0 -0
- package/dist/esm/router-binding/index.js +35 -0
- package/dist/esm/router-binding/lazyRouteComponent.js +30 -0
- package/dist/esm/router-binding/link.js +389 -0
- package/dist/esm/router-binding/matchContext.js +7 -0
- package/dist/esm/router-binding/nonRouteComponentContext.js +13 -0
- package/dist/esm/router-binding/not-found.js +35 -0
- package/dist/esm/router-binding/publicMatchData.js +447 -0
- package/dist/esm/router-binding/registryTransfer.js +210 -0
- package/dist/esm/router-binding/renderRouteNotFound.js +23 -0
- package/dist/esm/router-binding/route.js +143 -0
- package/dist/esm/router-binding/router.js +13 -0
- package/dist/esm/router-binding/routerContext.js +3 -0
- package/dist/esm/router-binding/routerStores.js +50 -0
- package/dist/esm/router-binding/scroll-restoration.js +13 -0
- package/dist/esm/router-binding/typePrimitives.js +0 -0
- package/dist/esm/router-binding/useBlocker.js +152 -0
- package/dist/esm/router-binding/useCanGoBack.js +7 -0
- package/dist/esm/router-binding/useLoaderData.js +9 -0
- package/dist/esm/router-binding/useLoaderDeps.js +8 -0
- package/dist/esm/router-binding/useLocation.js +14 -0
- package/dist/esm/router-binding/useMatch.js +28 -0
- package/dist/esm/router-binding/useNavigate.js +19 -0
- package/dist/esm/router-binding/useParams.js +13 -0
- package/dist/esm/router-binding/useRouteContext.js +8 -0
- package/dist/esm/router-binding/useRouter.js +10 -0
- package/dist/esm/router-binding/useRouterState.js +19 -0
- package/dist/esm/router-binding/useSearch.js +13 -0
- package/dist/esm/router-binding/utils.js +23 -0
- package/dist/esm/router.js +187 -0
- package/dist/esm-node/actions.js +263 -0
- package/dist/esm-node/application-router.js +25 -0
- package/dist/esm-node/client.js +49 -0
- package/dist/esm-node/entry-application.js +110 -0
- package/dist/esm-node/entry-client.js +23 -0
- package/dist/esm-node/entry-server.js +47 -0
- package/dist/esm-node/federation-context.js +25 -0
- package/dist/esm-node/federation-ssr.js +84 -0
- package/dist/esm-node/federation.js +83 -0
- package/dist/esm-node/i18n/I18nProvider.js +42 -0
- package/dist/esm-node/i18n/LocalizedLink.js +142 -0
- package/dist/esm-node/i18n/context.js +3 -0
- package/dist/esm-node/i18n/index.js +8 -0
- package/dist/esm-node/i18n/languageSync.js +50 -0
- package/dist/esm-node/i18n/types.js +1 -0
- package/dist/esm-node/i18n/useI18n.js +74 -0
- package/dist/esm-node/index.js +58 -0
- package/dist/esm-node/manifest.js +150 -0
- package/dist/esm-node/native-promise-serialization.js +113 -0
- package/dist/esm-node/plugin/compiler.js +209 -0
- package/dist/esm-node/plugin/create.js +235 -0
- package/dist/esm-node/plugin/index.js +73 -0
- package/dist/esm-node/plugin/profile.js +52 -0
- package/dist/esm-node/route-completion.js +160 -0
- package/dist/esm-node/route-data-error.js +108 -0
- package/dist/esm-node/router-binding/Asset.js +171 -0
- package/dist/esm-node/router-binding/CatchBoundary.js +136 -0
- package/dist/esm-node/router-binding/ClientOnly.js +46 -0
- package/dist/esm-node/router-binding/HeadContent.js +8 -0
- package/dist/esm-node/router-binding/LICENSE +21 -0
- package/dist/esm-node/router-binding/Match.js +660 -0
- package/dist/esm-node/router-binding/Matches.js +161 -0
- package/dist/esm-node/router-binding/PROVENANCE.json +94 -0
- package/dist/esm-node/router-binding/RouterProvider.js +87 -0
- package/dist/esm-node/router-binding/SafeFragment.js +5 -0
- package/dist/esm-node/router-binding/ScriptOnce.js +16 -0
- package/dist/esm-node/router-binding/Scripts.js +49 -0
- package/dist/esm-node/router-binding/ScrollRestoration.js +16 -0
- package/dist/esm-node/router-binding/Transitioner.js +103 -0
- package/dist/esm-node/router-binding/awaited.js +75 -0
- package/dist/esm-node/router-binding/fileRoute.js +83 -0
- package/dist/esm-node/router-binding/flightData.js +23 -0
- package/dist/esm-node/router-binding/headContentUtils.js +162 -0
- package/dist/esm-node/router-binding/history.js +1 -0
- package/dist/esm-node/router-binding/index.js +35 -0
- package/dist/esm-node/router-binding/lazyRouteComponent.js +30 -0
- package/dist/esm-node/router-binding/link.js +399 -0
- package/dist/esm-node/router-binding/matchContext.js +7 -0
- package/dist/esm-node/router-binding/nonRouteComponentContext.js +22 -0
- package/dist/esm-node/router-binding/not-found.js +49 -0
- package/dist/esm-node/router-binding/publicMatchData.js +447 -0
- package/dist/esm-node/router-binding/registryTransfer.js +210 -0
- package/dist/esm-node/router-binding/renderRouteNotFound.js +22 -0
- package/dist/esm-node/router-binding/route.js +162 -0
- package/dist/esm-node/router-binding/router.js +13 -0
- package/dist/esm-node/router-binding/routerContext.js +3 -0
- package/dist/esm-node/router-binding/routerStores.js +50 -0
- package/dist/esm-node/router-binding/scroll-restoration.js +12 -0
- package/dist/esm-node/router-binding/typePrimitives.js +1 -0
- package/dist/esm-node/router-binding/useBlocker.js +152 -0
- package/dist/esm-node/router-binding/useCanGoBack.js +7 -0
- package/dist/esm-node/router-binding/useLoaderData.js +9 -0
- package/dist/esm-node/router-binding/useLoaderDeps.js +8 -0
- package/dist/esm-node/router-binding/useLocation.js +14 -0
- package/dist/esm-node/router-binding/useMatch.js +28 -0
- package/dist/esm-node/router-binding/useNavigate.js +19 -0
- package/dist/esm-node/router-binding/useParams.js +13 -0
- package/dist/esm-node/router-binding/useRouteContext.js +8 -0
- package/dist/esm-node/router-binding/useRouter.js +10 -0
- package/dist/esm-node/router-binding/useRouterState.js +19 -0
- package/dist/esm-node/router-binding/useSearch.js +13 -0
- package/dist/esm-node/router-binding/utils.js +23 -0
- package/dist/esm-node/router.js +187 -0
- package/dist/esm-node/server.js +396 -0
- package/dist/types/actions.d.ts +45 -0
- package/dist/types/application-router.d.ts +5 -0
- package/dist/types/client.d.ts +23 -0
- package/dist/types/entry-application.d.ts +10 -0
- package/dist/types/entry-client.d.ts +5 -0
- package/dist/types/entry-server.d.ts +5 -0
- package/dist/types/federation-context.d.ts +16 -0
- package/dist/types/federation-ssr.d.ts +21 -0
- package/dist/types/federation.d.ts +30 -0
- package/dist/types/i18n/I18nProvider.d.ts +21 -0
- package/dist/types/i18n/LocalizedLink.d.ts +43 -0
- package/dist/types/i18n/context.d.ts +11 -0
- package/dist/types/i18n/index.d.ts +9 -0
- package/dist/types/i18n/languageSync.d.ts +31 -0
- package/dist/types/i18n/types.d.ts +33 -0
- package/dist/types/i18n/useI18n.d.ts +24 -0
- package/dist/types/index.d.ts +41 -0
- package/dist/types/manifest.d.ts +55 -0
- package/dist/types/native-promise-serialization.d.ts +9 -0
- package/dist/types/plugin/compiler.d.ts +6 -0
- package/dist/types/plugin/create.d.ts +21 -0
- package/dist/types/plugin/index.d.ts +3 -0
- package/dist/types/plugin/lazy-modules.d.cts +15 -0
- package/dist/types/plugin/preserve-import-loader.d.cts +3 -0
- package/dist/types/plugin/profile.d.ts +2 -0
- package/dist/types/plugin/solid-loader.d.cts +2 -0
- package/dist/types/plugin/svg-component-template.d.cts +6 -0
- package/dist/types/route-completion.d.ts +21 -0
- package/dist/types/route-data-error.d.ts +17 -0
- package/dist/types/router-binding/Asset.d.ts +3 -0
- package/dist/types/router-binding/CatchBoundary.d.ts +13 -0
- package/dist/types/router-binding/ClientOnly.d.ts +31 -0
- package/dist/types/router-binding/HeadContent.d.ts +13 -0
- package/dist/types/router-binding/Match.d.ts +6 -0
- package/dist/types/router-binding/Matches.d.ts +26 -0
- package/dist/types/router-binding/RouterProvider.d.ts +10 -0
- package/dist/types/router-binding/SafeFragment.d.ts +2 -0
- package/dist/types/router-binding/ScriptOnce.d.ts +6 -0
- package/dist/types/router-binding/Scripts.d.ts +2 -0
- package/dist/types/router-binding/ScrollRestoration.d.ts +14 -0
- package/dist/types/router-binding/Transitioner.d.ts +2 -0
- package/dist/types/router-binding/awaited.d.ts +11 -0
- package/dist/types/router-binding/fileRoute.d.ts +54 -0
- package/dist/types/router-binding/flightData.d.ts +38 -0
- package/dist/types/router-binding/headContentUtils.d.ts +15 -0
- package/dist/types/router-binding/history.d.ts +8 -0
- package/dist/types/router-binding/index.d.ts +45 -0
- package/dist/types/router-binding/lazyRouteComponent.d.ts +2 -0
- package/dist/types/router-binding/link.d.ts +43 -0
- package/dist/types/router-binding/matchContext.d.ts +7 -0
- package/dist/types/router-binding/nonRouteComponentContext.d.ts +5 -0
- package/dist/types/router-binding/not-found.d.ts +11 -0
- package/dist/types/router-binding/publicMatchData.d.ts +19 -0
- package/dist/types/router-binding/registryTransfer.d.ts +47 -0
- package/dist/types/router-binding/renderRouteNotFound.d.ts +11 -0
- package/dist/types/router-binding/route.d.ts +105 -0
- package/dist/types/router-binding/router.d.ts +70 -0
- package/dist/types/router-binding/routerContext.d.ts +3 -0
- package/dist/types/router-binding/routerStores.d.ts +2 -0
- package/dist/types/router-binding/scroll-restoration.d.ts +2 -0
- package/dist/types/router-binding/typePrimitives.d.ts +10 -0
- package/dist/types/router-binding/useBlocker.d.ts +70 -0
- package/dist/types/router-binding/useCanGoBack.d.ts +2 -0
- package/dist/types/router-binding/useLoaderData.d.ts +8 -0
- package/dist/types/router-binding/useLoaderDeps.d.ts +8 -0
- package/dist/types/router-binding/useLocation.d.ts +7 -0
- package/dist/types/router-binding/useMatch.d.ts +10 -0
- package/dist/types/router-binding/useNavigate.d.ts +5 -0
- package/dist/types/router-binding/useParams.d.ts +9 -0
- package/dist/types/router-binding/useRouteContext.d.ts +4 -0
- package/dist/types/router-binding/useRouter.d.ts +4 -0
- package/dist/types/router-binding/useRouterState.d.ts +8 -0
- package/dist/types/router-binding/useSearch.d.ts +9 -0
- package/dist/types/router-binding/utils.d.ts +25 -0
- package/dist/types/router.d.ts +31 -0
- package/dist/types/server.d.ts +47 -0
- package/package.json +123 -4
- package/src/actions.tsx +437 -0
- package/src/application-router.tsx +41 -0
- package/src/client.ts +106 -0
- package/src/entry-application.tsx +73 -0
- package/src/entry-client.tsx +48 -0
- package/src/entry-server.tsx +85 -0
- package/src/federation-context.ts +47 -0
- package/src/federation-ssr.ts +117 -0
- package/src/federation.tsx +193 -0
- package/src/i18n/I18nProvider.tsx +54 -0
- package/src/i18n/LocalizedLink.tsx +122 -0
- package/src/i18n/context.ts +13 -0
- package/src/i18n/index.ts +35 -0
- package/src/i18n/languageSync.ts +113 -0
- package/src/i18n/types.ts +35 -0
- package/src/i18n/useI18n.ts +121 -0
- package/src/index.ts +41 -0
- package/src/manifest.ts +337 -0
- package/src/native-promise-serialization.ts +167 -0
- package/src/plugin/compiler.ts +320 -0
- package/src/plugin/create.ts +270 -0
- package/src/plugin/index.ts +72 -0
- package/src/plugin/lazy-modules.cjs +146 -0
- package/src/plugin/preserve-import-loader.cjs +46 -0
- package/src/plugin/profile.ts +42 -0
- package/src/plugin/solid-loader.cjs +83 -0
- package/src/plugin/svg-component-template.cjs +19 -0
- package/src/route-completion.tsx +222 -0
- package/src/route-data-error.ts +175 -0
- package/src/router-binding/Asset.tsx +283 -0
- package/src/router-binding/CatchBoundary.tsx +130 -0
- package/src/router-binding/ClientOnly.tsx +76 -0
- package/src/router-binding/HeadContent.tsx +23 -0
- package/src/router-binding/LICENSE +21 -0
- package/src/router-binding/Match.tsx +397 -0
- package/src/router-binding/Matches.tsx +242 -0
- package/src/router-binding/PROVENANCE.json +94 -0
- package/src/router-binding/RouterProvider.tsx +129 -0
- package/src/router-binding/SafeFragment.tsx +5 -0
- package/src/router-binding/ScriptOnce.tsx +23 -0
- package/src/router-binding/Scripts.tsx +44 -0
- package/src/router-binding/ScrollRestoration.tsx +49 -0
- package/src/router-binding/Transitioner.tsx +172 -0
- package/src/router-binding/awaited.tsx +71 -0
- package/src/router-binding/fileRoute.ts +268 -0
- package/src/router-binding/flightData.ts +90 -0
- package/src/router-binding/headContentUtils.tsx +290 -0
- package/src/router-binding/history.ts +9 -0
- package/src/router-binding/index.tsx +318 -0
- package/src/router-binding/lazyRouteComponent.tsx +70 -0
- package/src/router-binding/link.tsx +865 -0
- package/src/router-binding/matchContext.tsx +15 -0
- package/src/router-binding/nonRouteComponentContext.tsx +23 -0
- package/src/router-binding/not-found.tsx +65 -0
- package/src/router-binding/publicMatchData.ts +674 -0
- package/src/router-binding/registryTransfer.ts +383 -0
- package/src/router-binding/renderRouteNotFound.tsx +53 -0
- package/src/router-binding/route.tsx +665 -0
- package/src/router-binding/router.ts +121 -0
- package/src/router-binding/routerContext.tsx +6 -0
- package/src/router-binding/routerStores.ts +85 -0
- package/src/router-binding/scroll-restoration.tsx +15 -0
- package/src/router-binding/typePrimitives.ts +74 -0
- package/src/router-binding/useBlocker.tsx +359 -0
- package/src/router-binding/useCanGoBack.ts +9 -0
- package/src/router-binding/useLoaderData.tsx +50 -0
- package/src/router-binding/useLoaderDeps.tsx +46 -0
- package/src/router-binding/useLocation.tsx +43 -0
- package/src/router-binding/useMatch.tsx +111 -0
- package/src/router-binding/useNavigate.tsx +43 -0
- package/src/router-binding/useParams.tsx +72 -0
- package/src/router-binding/useRouteContext.ts +30 -0
- package/src/router-binding/useRouter.tsx +17 -0
- package/src/router-binding/useRouterState.tsx +50 -0
- package/src/router-binding/useSearch.tsx +72 -0
- package/src/router-binding/utils.ts +59 -0
- package/src/router.ts +376 -0
- package/src/server.ts +645 -0
- package/README.md +0 -3
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { DataProtocolError, assertPublicData } from "@modern-js/renderer-core/data";
|
|
2
|
+
import { RouteDataError } from "@modern-js/renderer-core/router";
|
|
3
|
+
function invalid(message) {
|
|
4
|
+
throw new DataProtocolError(message);
|
|
5
|
+
}
|
|
6
|
+
function publicFields(value, required, optional = [], allowStackAccessor = false) {
|
|
7
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
8
|
+
for (const key of Reflect.ownKeys(descriptors)){
|
|
9
|
+
if ("string" != typeof key || !required.includes(key) && !optional.includes(key)) invalid("Route data errors must not contain undeclared fields");
|
|
10
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
11
|
+
if (descriptor.get || descriptor.set) {
|
|
12
|
+
if (allowStackAccessor && "stack" === key) continue;
|
|
13
|
+
invalid("Route data errors must not contain accessors");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
for (const key of required)if (!Object.hasOwn(descriptors, key)) invalid("Route data errors are missing a declared field");
|
|
17
|
+
return descriptors;
|
|
18
|
+
}
|
|
19
|
+
function validateFields(routeId, status, name, message) {
|
|
20
|
+
if ("string" != typeof routeId || 0 === routeId.length) invalid("Route data errors require a nonempty route identifier");
|
|
21
|
+
if ("number" != typeof status || !Number.isInteger(status) || status < 200 || status > 599) invalid("Route data errors require a valid public HTTP status");
|
|
22
|
+
if ("string" != typeof name || "string" != typeof message) invalid("Route data errors require public name and message strings");
|
|
23
|
+
return {
|
|
24
|
+
routeId,
|
|
25
|
+
status,
|
|
26
|
+
name,
|
|
27
|
+
message
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function projectRouteDataError(error, production = true) {
|
|
31
|
+
if (!error || "object" != typeof error || Object.getPrototypeOf(error) !== RouteDataError.prototype) invalid("Only the exact RouteDataError class has a route error projection");
|
|
32
|
+
const descriptors = publicFields(error, [
|
|
33
|
+
"routeId",
|
|
34
|
+
"status",
|
|
35
|
+
"data",
|
|
36
|
+
"name",
|
|
37
|
+
"message"
|
|
38
|
+
], [
|
|
39
|
+
"stack"
|
|
40
|
+
], true);
|
|
41
|
+
const routeId = descriptors.routeId.value;
|
|
42
|
+
const status = descriptors.status.value;
|
|
43
|
+
const name = descriptors.name.value;
|
|
44
|
+
const message = descriptors.message.value;
|
|
45
|
+
const fields = validateFields(routeId, status, name, message);
|
|
46
|
+
const snapshot = {
|
|
47
|
+
kind: "ultramodern-route-data-error",
|
|
48
|
+
version: 1,
|
|
49
|
+
routeId: fields.routeId,
|
|
50
|
+
status: fields.status,
|
|
51
|
+
data: descriptors.data.value,
|
|
52
|
+
error: {
|
|
53
|
+
name: fields.name,
|
|
54
|
+
message: fields.message
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const stack = descriptors.stack;
|
|
58
|
+
if (stack && !stack.get && !stack.set) {
|
|
59
|
+
if ("string" != typeof stack.value) invalid("Route data error stacks must be strings");
|
|
60
|
+
if (!production) snapshot.error.stack = stack.value;
|
|
61
|
+
}
|
|
62
|
+
assertPublicData(snapshot);
|
|
63
|
+
return snapshot;
|
|
64
|
+
}
|
|
65
|
+
function plainRecord(value) {
|
|
66
|
+
if (!value || "object" != typeof value) invalid("Malformed route data error snapshot");
|
|
67
|
+
const prototype = Object.getPrototypeOf(value);
|
|
68
|
+
if (prototype !== Object.prototype && null !== prototype) invalid("Route data error snapshots require plain records");
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
function restoreRouteDataError(snapshot) {
|
|
72
|
+
const descriptors = publicFields(plainRecord(snapshot), [
|
|
73
|
+
"kind",
|
|
74
|
+
"version",
|
|
75
|
+
"routeId",
|
|
76
|
+
"status",
|
|
77
|
+
"data",
|
|
78
|
+
"error"
|
|
79
|
+
]);
|
|
80
|
+
if ("ultramodern-route-data-error" !== descriptors.kind.value || 1 !== descriptors.version.value) invalid("Unsupported route data error snapshot");
|
|
81
|
+
const error = publicFields(plainRecord(descriptors.error.value), [
|
|
82
|
+
"name",
|
|
83
|
+
"message"
|
|
84
|
+
], [
|
|
85
|
+
"stack"
|
|
86
|
+
]);
|
|
87
|
+
const routeId = descriptors.routeId.value;
|
|
88
|
+
const fields = validateFields(routeId, descriptors.status.value, error.name.value, error.message.value);
|
|
89
|
+
if (error.stack && "string" != typeof error.stack.value) invalid("Route data error stacks must be strings");
|
|
90
|
+
assertPublicData(snapshot);
|
|
91
|
+
const restored = new RouteDataError(fields.routeId, {
|
|
92
|
+
kind: "error",
|
|
93
|
+
status: fields.status,
|
|
94
|
+
data: descriptors.data.value,
|
|
95
|
+
error: {
|
|
96
|
+
name: fields.name,
|
|
97
|
+
message: fields.message
|
|
98
|
+
},
|
|
99
|
+
thrown: true
|
|
100
|
+
});
|
|
101
|
+
if (error.stack) Object.defineProperty(restored, "stack", {
|
|
102
|
+
value: error.stack.value,
|
|
103
|
+
configurable: true,
|
|
104
|
+
writable: true
|
|
105
|
+
});
|
|
106
|
+
return restored;
|
|
107
|
+
}
|
|
108
|
+
export { projectRouteDataError, restoreRouteDataError };
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { createComponent, getNextElement, insert, ref, runHydrationEvents, scope, spread, template } from "@solidjs/web";
|
|
2
|
+
import { isServer } from "@tanstack/router-core/isServer";
|
|
3
|
+
import { createEffect, onCleanup, onSettled } from "solid-js";
|
|
4
|
+
import { useRouter } from "./useRouter.js";
|
|
5
|
+
var _tmpl$ = /* @__PURE__ */ template("<style>");
|
|
6
|
+
var _tmpl$2 = /* @__PURE__ */ template("<meta>");
|
|
7
|
+
var _tmpl$3 = /* @__PURE__ */ template("<link>");
|
|
8
|
+
var _tmpl$4 = /* @__PURE__ */ template("<title>");
|
|
9
|
+
var _tmpl$5 = /* @__PURE__ */ template("<script>");
|
|
10
|
+
const INLINE_CSS_HYDRATION_ATTR = "data-tsr-inline-css";
|
|
11
|
+
function Asset(asset) {
|
|
12
|
+
const { tag, attrs, children } = asset;
|
|
13
|
+
switch(tag){
|
|
14
|
+
case "title":
|
|
15
|
+
return createComponent(Title, {
|
|
16
|
+
attrs,
|
|
17
|
+
children
|
|
18
|
+
});
|
|
19
|
+
case "meta":
|
|
20
|
+
return createComponent(HeadElement, {
|
|
21
|
+
tag: "meta",
|
|
22
|
+
attrs
|
|
23
|
+
});
|
|
24
|
+
case "link":
|
|
25
|
+
return createComponent(HeadElement, {
|
|
26
|
+
tag: "link",
|
|
27
|
+
attrs
|
|
28
|
+
});
|
|
29
|
+
case "style":
|
|
30
|
+
if (asset.inlineCss && ("true" === process.env.TSS_INLINE_CSS_ENABLED || void 0 === process.env.TSS_INLINE_CSS_ENABLED && isServer)) return createComponent(InlineCssStyle, {
|
|
31
|
+
attrs,
|
|
32
|
+
children
|
|
33
|
+
});
|
|
34
|
+
return createComponent(HeadElement, {
|
|
35
|
+
tag: "style",
|
|
36
|
+
attrs,
|
|
37
|
+
children
|
|
38
|
+
});
|
|
39
|
+
case "script":
|
|
40
|
+
return createComponent(Script, {
|
|
41
|
+
attrs,
|
|
42
|
+
children
|
|
43
|
+
});
|
|
44
|
+
default:
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function useRelocateToHead(getEl) {
|
|
49
|
+
onSettled(()=>{
|
|
50
|
+
const el = getEl();
|
|
51
|
+
if (el && el.parentNode !== document.head) document.head.appendChild(el);
|
|
52
|
+
});
|
|
53
|
+
onCleanup(()=>{
|
|
54
|
+
const el = getEl();
|
|
55
|
+
if (el?.parentNode) el.parentNode.removeChild(el);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function InlineCssStyle({ attrs, children }) {
|
|
59
|
+
const isInlineCssPlaceholder = void 0 === children;
|
|
60
|
+
const html = isInlineCssPlaceholder ? "u" < typeof document ? "" : document.querySelector(`style[${INLINE_CSS_HYDRATION_ATTR}]`)?.textContent ?? "" : children ?? "";
|
|
61
|
+
return createComponent(HeadElement, {
|
|
62
|
+
tag: "style",
|
|
63
|
+
get attrs () {
|
|
64
|
+
return {
|
|
65
|
+
...attrs,
|
|
66
|
+
[INLINE_CSS_HYDRATION_ATTR]: ""
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
children: html
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function HeadElement(props) {
|
|
73
|
+
let element;
|
|
74
|
+
switch(props.tag){
|
|
75
|
+
case "style":
|
|
76
|
+
{
|
|
77
|
+
const attrs = {
|
|
78
|
+
...props.attrs,
|
|
79
|
+
innerHTML: "string" == typeof props.children ? props.children : void 0
|
|
80
|
+
};
|
|
81
|
+
element = (()=>{
|
|
82
|
+
var _el$ = getNextElement(_tmpl$);
|
|
83
|
+
spread(_el$, attrs, false);
|
|
84
|
+
runHydrationEvents();
|
|
85
|
+
return _el$;
|
|
86
|
+
})();
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
case "meta":
|
|
90
|
+
element = (()=>{
|
|
91
|
+
var _el$2 = getNextElement(_tmpl$2);
|
|
92
|
+
spread(_el$2, ()=>props.attrs, false);
|
|
93
|
+
runHydrationEvents();
|
|
94
|
+
return _el$2;
|
|
95
|
+
})();
|
|
96
|
+
break;
|
|
97
|
+
default:
|
|
98
|
+
element = (()=>{
|
|
99
|
+
var _el$3 = getNextElement(_tmpl$3);
|
|
100
|
+
spread(_el$3, ()=>props.attrs, false);
|
|
101
|
+
runHydrationEvents();
|
|
102
|
+
return _el$3;
|
|
103
|
+
})();
|
|
104
|
+
}
|
|
105
|
+
useRelocateToHead(()=>element);
|
|
106
|
+
return element;
|
|
107
|
+
}
|
|
108
|
+
function Title(props) {
|
|
109
|
+
let el;
|
|
110
|
+
useRelocateToHead(()=>el);
|
|
111
|
+
createEffect(()=>props.children, (titleText)=>{
|
|
112
|
+
document.title = "string" == typeof titleText ? titleText : "";
|
|
113
|
+
});
|
|
114
|
+
var _el$4 = getNextElement(_tmpl$4);
|
|
115
|
+
spread(_el$4, ()=>props.attrs, true);
|
|
116
|
+
ref(()=>(e)=>el = e, _el$4);
|
|
117
|
+
insert(_el$4, scope(()=>props.children));
|
|
118
|
+
runHydrationEvents();
|
|
119
|
+
return _el$4;
|
|
120
|
+
}
|
|
121
|
+
function Script(props) {
|
|
122
|
+
const router = useRouter();
|
|
123
|
+
const attrs = props.attrs;
|
|
124
|
+
const children = props.children;
|
|
125
|
+
const dataScript = "string" == typeof attrs?.type && "" !== attrs.type && "text/javascript" !== attrs.type && "module" !== attrs.type;
|
|
126
|
+
if (isServer ?? router.isServer) {
|
|
127
|
+
if (attrs?.src) {
|
|
128
|
+
var _el$5 = getNextElement(_tmpl$5);
|
|
129
|
+
spread(_el$5, attrs, false);
|
|
130
|
+
runHydrationEvents();
|
|
131
|
+
return _el$5;
|
|
132
|
+
}
|
|
133
|
+
if ("string" == typeof children) {
|
|
134
|
+
var _el$6 = getNextElement(_tmpl$5);
|
|
135
|
+
spread(_el$6, [
|
|
136
|
+
attrs,
|
|
137
|
+
{
|
|
138
|
+
innerHTML: children
|
|
139
|
+
}
|
|
140
|
+
], false);
|
|
141
|
+
runHydrationEvents();
|
|
142
|
+
return _el$6;
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
if (dataScript && "string" == typeof children) {
|
|
147
|
+
var _el$7 = getNextElement(_tmpl$5);
|
|
148
|
+
spread(_el$7, [
|
|
149
|
+
attrs,
|
|
150
|
+
{
|
|
151
|
+
innerHTML: children
|
|
152
|
+
}
|
|
153
|
+
], false);
|
|
154
|
+
runHydrationEvents();
|
|
155
|
+
return _el$7;
|
|
156
|
+
}
|
|
157
|
+
createEffect(()=>({
|
|
158
|
+
attrs,
|
|
159
|
+
children,
|
|
160
|
+
dataScript
|
|
161
|
+
}), ({ attrs, children, dataScript })=>{
|
|
162
|
+
if (dataScript) return;
|
|
163
|
+
let script;
|
|
164
|
+
if (attrs?.src) {
|
|
165
|
+
const normSrc = (()=>{
|
|
166
|
+
try {
|
|
167
|
+
const base = document.baseURI || window.location.href;
|
|
168
|
+
return new URL(attrs.src, base).href;
|
|
169
|
+
} catch {
|
|
170
|
+
return attrs.src;
|
|
171
|
+
}
|
|
172
|
+
})();
|
|
173
|
+
const existingScript = Array.from(document.querySelectorAll("script[src]")).find((el)=>el.src === normSrc);
|
|
174
|
+
if (existingScript) return;
|
|
175
|
+
script = document.createElement("script");
|
|
176
|
+
for (const [key, value] of Object.entries(attrs))if (void 0 !== value && false !== value) script.setAttribute(key, "boolean" == typeof value ? "" : String(value));
|
|
177
|
+
document.head.appendChild(script);
|
|
178
|
+
} else if ("string" == typeof children) {
|
|
179
|
+
const typeAttr = "string" == typeof attrs?.type ? attrs.type : "text/javascript";
|
|
180
|
+
const nonceAttr = "string" == typeof attrs?.nonce ? attrs.nonce : void 0;
|
|
181
|
+
const existingScript = Array.from(document.querySelectorAll("script:not([src])")).find((el)=>{
|
|
182
|
+
if (!(el instanceof HTMLScriptElement)) return false;
|
|
183
|
+
const sType = el.getAttribute("type") ?? "text/javascript";
|
|
184
|
+
const sNonce = el.getAttribute("nonce") ?? void 0;
|
|
185
|
+
return el.textContent === children && sType === typeAttr && sNonce === nonceAttr;
|
|
186
|
+
});
|
|
187
|
+
if (existingScript) return;
|
|
188
|
+
script = document.createElement("script");
|
|
189
|
+
script.textContent = children;
|
|
190
|
+
if (attrs) {
|
|
191
|
+
for (const [key, value] of Object.entries(attrs))if (void 0 !== value && false !== value) script.setAttribute(key, "boolean" == typeof value ? "" : String(value));
|
|
192
|
+
}
|
|
193
|
+
document.head.appendChild(script);
|
|
194
|
+
}
|
|
195
|
+
return ()=>{
|
|
196
|
+
if (script?.parentNode) script.parentNode.removeChild(script);
|
|
197
|
+
};
|
|
198
|
+
});
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
export { Asset };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Dynamic, createComponent, delegateEvents, getNextElement, getNextMarker, insert, memo, runHydrationEvents, scope, template } from "@solidjs/web";
|
|
2
|
+
import { renderInNonRouteComponentContext } from "./nonRouteComponentContext.js";
|
|
3
|
+
import * as __rspack_external_solid_js_0ac0db99 from "solid-js";
|
|
4
|
+
var _tmpl$ = /* @__PURE__ */ template('<div style=padding:.5rem;max-width:100%><div style=display:flex;align-items:center;gap:.5rem><strong style=font-size:1rem>Something went wrong!</strong><button style="appearance:none;font-size:.6em;border:1px solid currentColor;padding:.1rem .2rem;font-weight:bold;border-radius:.25rem"></button></div><div style=height:.25rem></div><!$><!/>');
|
|
5
|
+
var _tmpl$2 = /* @__PURE__ */ template('<div><pre style="font-size:.7em;border:1px solid red;border-radius:.25rem;padding:.3rem;color:red;overflow:auto">');
|
|
6
|
+
var _tmpl$3 = /* @__PURE__ */ template("<code>");
|
|
7
|
+
function CatchBoundary(props) {
|
|
8
|
+
const [retryKey, setRetryKey] = __rspack_external_solid_js_0ac0db99.createSignal({});
|
|
9
|
+
let resetBoundary;
|
|
10
|
+
let initialized = false;
|
|
11
|
+
let previousKey;
|
|
12
|
+
__rspack_external_solid_js_0ac0db99.onCleanup(()=>{
|
|
13
|
+
resetBoundary = void 0;
|
|
14
|
+
});
|
|
15
|
+
__rspack_external_solid_js_0ac0db99.createEffect(props.getResetKey, (key)=>{
|
|
16
|
+
if (!initialized) {
|
|
17
|
+
initialized = true;
|
|
18
|
+
previousKey = key;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (key === previousKey) return;
|
|
22
|
+
previousKey = key;
|
|
23
|
+
const reset = resetBoundary;
|
|
24
|
+
if (reset) queueMicrotask(()=>{
|
|
25
|
+
if (resetBoundary !== reset) return;
|
|
26
|
+
setRetryKey({});
|
|
27
|
+
reset();
|
|
28
|
+
__rspack_external_solid_js_0ac0db99.flush();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
return createComponent(__rspack_external_solid_js_0ac0db99.Errored, {
|
|
32
|
+
fallback: (error, reset)=>{
|
|
33
|
+
const resolvedError = __rspack_external_solid_js_0ac0db99.untrack(()=>error());
|
|
34
|
+
props.onCatch?.(resolvedError);
|
|
35
|
+
resetBoundary = reset;
|
|
36
|
+
return "production" !== process.env.NODE_ENV ? renderInNonRouteComponentContext(()=>createComponent(Dynamic, {
|
|
37
|
+
get component () {
|
|
38
|
+
return props.errorComponent ?? ErrorComponent;
|
|
39
|
+
},
|
|
40
|
+
error: resolvedError,
|
|
41
|
+
reset
|
|
42
|
+
}), "errorComponent") : createComponent(Dynamic, {
|
|
43
|
+
get component () {
|
|
44
|
+
return props.errorComponent ?? ErrorComponent;
|
|
45
|
+
},
|
|
46
|
+
error: resolvedError,
|
|
47
|
+
reset
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
get children () {
|
|
51
|
+
return createComponent(__rspack_external_solid_js_0ac0db99.Show, {
|
|
52
|
+
get when () {
|
|
53
|
+
return retryKey();
|
|
54
|
+
},
|
|
55
|
+
keyed: true,
|
|
56
|
+
children: (_retryKey)=>props.render?.() ?? props.children
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function ErrorComponent({ error }) {
|
|
62
|
+
const [show, setShow] = __rspack_external_solid_js_0ac0db99.createSignal("production" !== process.env.NODE_ENV);
|
|
63
|
+
var _el$ = getNextElement(_tmpl$);
|
|
64
|
+
var _el$2 = _el$.firstChild;
|
|
65
|
+
var _el$3 = _el$2.firstChild;
|
|
66
|
+
var _el$4 = _el$3.nextSibling;
|
|
67
|
+
var _el$5 = _el$2.nextSibling;
|
|
68
|
+
var _el$6 = _el$5.nextSibling;
|
|
69
|
+
var [_el$7, _el$8] = getNextMarker(_el$6.nextSibling);
|
|
70
|
+
_el$4._$$click = ()=>setShow((d)=>!d);
|
|
71
|
+
insert(_el$4, ()=>show() ? "Hide Error" : "Show Error");
|
|
72
|
+
insert(_el$, scope((()=>{
|
|
73
|
+
var _c$ = memo(()=>!!show());
|
|
74
|
+
return ()=>_c$() ? (()=>{
|
|
75
|
+
var _el$9 = getNextElement(_tmpl$2);
|
|
76
|
+
var _el$10 = _el$9.firstChild;
|
|
77
|
+
insert(_el$10, scope((()=>{
|
|
78
|
+
var _c$2 = memo(()=>!!error.message);
|
|
79
|
+
return ()=>_c$2() ? (()=>{
|
|
80
|
+
var _el$11 = getNextElement(_tmpl$3);
|
|
81
|
+
insert(_el$11, scope(()=>error.message));
|
|
82
|
+
return _el$11;
|
|
83
|
+
})() : null;
|
|
84
|
+
})()));
|
|
85
|
+
return _el$9;
|
|
86
|
+
})() : null;
|
|
87
|
+
})()), _el$7, _el$8);
|
|
88
|
+
runHydrationEvents();
|
|
89
|
+
return _el$;
|
|
90
|
+
}
|
|
91
|
+
delegateEvents([
|
|
92
|
+
"click"
|
|
93
|
+
]);
|
|
94
|
+
export { CatchBoundary, ErrorComponent };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createComponent } from "@solidjs/web";
|
|
2
|
+
import * as __rspack_external_solid_js_0ac0db99 from "solid-js";
|
|
3
|
+
function ClientOnly(props) {
|
|
4
|
+
const hydrated = useHydrated();
|
|
5
|
+
return createComponent(__rspack_external_solid_js_0ac0db99.Show, {
|
|
6
|
+
get when () {
|
|
7
|
+
return hydrated();
|
|
8
|
+
},
|
|
9
|
+
get fallback () {
|
|
10
|
+
return props.fallback ?? null;
|
|
11
|
+
},
|
|
12
|
+
get children () {
|
|
13
|
+
return props.children;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
let globalHydrated = false;
|
|
18
|
+
function useHydrated() {
|
|
19
|
+
const [hydrated, setHydrated] = __rspack_external_solid_js_0ac0db99.createSignal(globalHydrated && !__rspack_external_solid_js_0ac0db99.isHydrating());
|
|
20
|
+
__rspack_external_solid_js_0ac0db99.createEffect(()=>true, ()=>{
|
|
21
|
+
globalHydrated = true;
|
|
22
|
+
setHydrated(true);
|
|
23
|
+
});
|
|
24
|
+
return hydrated;
|
|
25
|
+
}
|
|
26
|
+
export { ClientOnly, useHydrated };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { HydrationScript, createComponent, useHead } from "@solidjs/web";
|
|
2
|
+
import { toHeadTags, useTags } from "./headContentUtils.js";
|
|
3
|
+
function HeadContent(props) {
|
|
4
|
+
const tags = useTags(props.assetCrossOrigin);
|
|
5
|
+
useHead(()=>toHeadTags(tags()));
|
|
6
|
+
return createComponent(HydrationScript, {});
|
|
7
|
+
}
|
|
8
|
+
export { HeadContent };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021-present Tanner Linsley
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|