vike-solid 0.2.4 → 0.2.6
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/+config.js +30 -9
- package/dist/+onRenderHtml.js +12 -1
- package/dist/ClientOnly.js +40 -0
- package/dist/components/ClientOnly.d.ts +12 -0
- package/dist/renderer/+config.d.ts +23 -7
- package/package.json +21 -17
package/dist/+config.js
CHANGED
|
@@ -14,8 +14,13 @@ const toggleSsrRelatedConfig = ({
|
|
|
14
14
|
// browser. We achieve this by then making the `Page` implementation
|
|
15
15
|
// accessible only in the client's renderer.
|
|
16
16
|
Page: {
|
|
17
|
-
env: configValue ?
|
|
18
|
-
|
|
17
|
+
env: configValue ? {
|
|
18
|
+
server: true,
|
|
19
|
+
client: true
|
|
20
|
+
} // default
|
|
21
|
+
: {
|
|
22
|
+
client: true
|
|
23
|
+
}
|
|
19
24
|
}
|
|
20
25
|
}
|
|
21
26
|
};
|
|
@@ -34,25 +39,41 @@ var _config = {
|
|
|
34
39
|
hydrationCanBeAborted: true,
|
|
35
40
|
meta: {
|
|
36
41
|
Head: {
|
|
37
|
-
env:
|
|
42
|
+
env: {
|
|
43
|
+
server: true
|
|
44
|
+
}
|
|
38
45
|
},
|
|
39
46
|
Layout: {
|
|
40
|
-
env:
|
|
47
|
+
env: {
|
|
48
|
+
server: true,
|
|
49
|
+
client: true
|
|
50
|
+
}
|
|
41
51
|
},
|
|
42
52
|
title: {
|
|
43
|
-
env:
|
|
53
|
+
env: {
|
|
54
|
+
server: true,
|
|
55
|
+
client: true
|
|
56
|
+
}
|
|
44
57
|
},
|
|
45
58
|
description: {
|
|
46
|
-
env:
|
|
59
|
+
env: {
|
|
60
|
+
server: true
|
|
61
|
+
}
|
|
47
62
|
},
|
|
48
63
|
favicon: {
|
|
49
|
-
env:
|
|
64
|
+
env: {
|
|
65
|
+
server: true
|
|
66
|
+
}
|
|
50
67
|
},
|
|
51
68
|
lang: {
|
|
52
|
-
env:
|
|
69
|
+
env: {
|
|
70
|
+
server: true
|
|
71
|
+
}
|
|
53
72
|
},
|
|
54
73
|
ssr: {
|
|
55
|
-
env:
|
|
74
|
+
env: {
|
|
75
|
+
config: true
|
|
76
|
+
},
|
|
56
77
|
effect: toggleSsrRelatedConfig
|
|
57
78
|
}
|
|
58
79
|
}
|
package/dist/+onRenderHtml.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createComponent, Dynamic, mergeProps, renderToString, renderToStream, generateHydrationScript } from 'solid-js/web';
|
|
2
|
-
import { escapeInject, stampPipe, dangerouslySkipEscape } from 'vike/server';
|
|
2
|
+
import { version, escapeInject, stampPipe, dangerouslySkipEscape } from 'vike/server';
|
|
3
3
|
import { P as PageContextProvider, u as usePageContext } from './usePageContext-gFteWsFt.js';
|
|
4
4
|
import 'solid-js';
|
|
5
5
|
|
|
@@ -73,6 +73,7 @@ function Passthrough(props) {
|
|
|
73
73
|
return props.children;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
checkVikeVersion();
|
|
76
77
|
const onRenderHtml = async pageContext => {
|
|
77
78
|
const title = getTitle(pageContext);
|
|
78
79
|
const titleTag = !title ? "" : escapeInject`<title>${title}</title>`;
|
|
@@ -109,8 +110,18 @@ const onRenderHtml = async pageContext => {
|
|
|
109
110
|
<body>
|
|
110
111
|
<div id="page-view">${pipe}</div>
|
|
111
112
|
</body>
|
|
113
|
+
<!-- built with https://github.com/vikejs/vike-solid -->
|
|
112
114
|
</html>`;
|
|
113
115
|
return documentHtml;
|
|
114
116
|
};
|
|
117
|
+
function checkVikeVersion() {
|
|
118
|
+
if (version) {
|
|
119
|
+
const versionParts = version.split('.').map(s => parseInt(s, 10));
|
|
120
|
+
if (versionParts[0] > 0) return;
|
|
121
|
+
if (versionParts[1] > 4) return;
|
|
122
|
+
if (versionParts[2] >= 147) return;
|
|
123
|
+
}
|
|
124
|
+
throw new Error('Update Vike to its latest version (or vike@0.4.147 and any version above)');
|
|
125
|
+
}
|
|
115
126
|
|
|
116
127
|
export { onRenderHtml };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createComponent, Dynamic, ssr, ssrHydrationKey } from 'solid-js/web';
|
|
2
|
+
import { createSignal, createEffect, Suspense, lazy } from 'solid-js';
|
|
3
|
+
|
|
4
|
+
const _tmpl$ = ["<p", ">Error loading component.</p>"];
|
|
5
|
+
function ClientOnlyError() {
|
|
6
|
+
return ssr(_tmpl$, ssrHydrationKey());
|
|
7
|
+
}
|
|
8
|
+
function ClientOnly(props) {
|
|
9
|
+
const [getComponent, setComponent] = createSignal(undefined);
|
|
10
|
+
createEffect(() => {
|
|
11
|
+
const loadComponent = () => {
|
|
12
|
+
const Component = lazy(() => props.load().then(LoadedComponent => {
|
|
13
|
+
return {
|
|
14
|
+
default: () => props.children("default" in LoadedComponent ? LoadedComponent.default : LoadedComponent)
|
|
15
|
+
};
|
|
16
|
+
}).catch(error => {
|
|
17
|
+
console.error("Component loading failed:", error);
|
|
18
|
+
return {
|
|
19
|
+
default: ClientOnlyError
|
|
20
|
+
};
|
|
21
|
+
}));
|
|
22
|
+
setComponent(() => Component);
|
|
23
|
+
};
|
|
24
|
+
loadComponent();
|
|
25
|
+
});
|
|
26
|
+
return createComponent(Suspense, {
|
|
27
|
+
get fallback() {
|
|
28
|
+
return props.fallback;
|
|
29
|
+
},
|
|
30
|
+
get children() {
|
|
31
|
+
return createComponent(Dynamic, {
|
|
32
|
+
get component() {
|
|
33
|
+
return getComponent();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { ClientOnly };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Component, JSX, createSignal } from 'solid-js';
|
|
2
|
+
|
|
3
|
+
declare function ClientOnly<T>(props: {
|
|
4
|
+
load: () => Promise<{
|
|
5
|
+
default: Component<T>;
|
|
6
|
+
} | Component<T>>;
|
|
7
|
+
children: (Component: Component<T>) => JSX.Element;
|
|
8
|
+
fallback: JSX.Element;
|
|
9
|
+
deps?: Parameters<typeof createSignal>[1];
|
|
10
|
+
}): JSX.Element;
|
|
11
|
+
|
|
12
|
+
export { ClientOnly };
|
|
@@ -23,25 +23,41 @@ declare const _default: {
|
|
|
23
23
|
hydrationCanBeAborted: true;
|
|
24
24
|
meta: {
|
|
25
25
|
Head: {
|
|
26
|
-
env:
|
|
26
|
+
env: {
|
|
27
|
+
server: true;
|
|
28
|
+
};
|
|
27
29
|
};
|
|
28
30
|
Layout: {
|
|
29
|
-
env:
|
|
31
|
+
env: {
|
|
32
|
+
server: true;
|
|
33
|
+
client: true;
|
|
34
|
+
};
|
|
30
35
|
};
|
|
31
36
|
title: {
|
|
32
|
-
env:
|
|
37
|
+
env: {
|
|
38
|
+
server: true;
|
|
39
|
+
client: true;
|
|
40
|
+
};
|
|
33
41
|
};
|
|
34
42
|
description: {
|
|
35
|
-
env:
|
|
43
|
+
env: {
|
|
44
|
+
server: true;
|
|
45
|
+
};
|
|
36
46
|
};
|
|
37
47
|
favicon: {
|
|
38
|
-
env:
|
|
48
|
+
env: {
|
|
49
|
+
server: true;
|
|
50
|
+
};
|
|
39
51
|
};
|
|
40
52
|
lang: {
|
|
41
|
-
env:
|
|
53
|
+
env: {
|
|
54
|
+
server: true;
|
|
55
|
+
};
|
|
42
56
|
};
|
|
43
57
|
ssr: {
|
|
44
|
-
env:
|
|
58
|
+
env: {
|
|
59
|
+
config: true;
|
|
60
|
+
};
|
|
45
61
|
effect: ConfigEffect;
|
|
46
62
|
};
|
|
47
63
|
};
|
package/package.json
CHANGED
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vike-solid",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"exports": {
|
|
6
|
-
".": "./dist/+config.js",
|
|
7
|
-
"./vite": "./dist/vite-plugin-vike-solid.js",
|
|
8
|
-
"./usePageContext": "./dist/usePageContext.js",
|
|
9
|
-
"./renderer/onRenderHtml": "./dist/+onRenderHtml.js",
|
|
10
|
-
"./renderer/onRenderClient": "./dist/+onRenderClient.js"
|
|
11
|
-
},
|
|
12
5
|
"dependencies": {
|
|
13
6
|
"vite-plugin-solid": "^2.7.2"
|
|
14
7
|
},
|
|
15
8
|
"peerDependencies": {
|
|
16
|
-
"solid-js": "^1.8.
|
|
17
|
-
"vite": "^4.5.0",
|
|
18
|
-
"vike": "^0.4.
|
|
9
|
+
"solid-js": "^1.8.6",
|
|
10
|
+
"vite": "^4.4 || ^5.0.2",
|
|
11
|
+
"vike": "^0.4.147"
|
|
19
12
|
},
|
|
20
13
|
"devDependencies": {
|
|
21
14
|
"@babel/core": "^7.23.3",
|
|
@@ -24,15 +17,23 @@
|
|
|
24
17
|
"@rollup/plugin-babel": "^6.0.4",
|
|
25
18
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
26
19
|
"@types/node": "^18.17.4",
|
|
27
|
-
"babel-preset-solid": "^1.8.
|
|
20
|
+
"babel-preset-solid": "^1.8.6",
|
|
28
21
|
"bumpp": "^9.2.0",
|
|
29
|
-
"rollup": "^4.
|
|
22
|
+
"rollup": "^4.6.0",
|
|
30
23
|
"rollup-plugin-dts": "^6.1.0",
|
|
31
|
-
"solid-js": "^1.8.
|
|
24
|
+
"solid-js": "^1.8.6",
|
|
32
25
|
"tslib": "^2.6.2",
|
|
33
|
-
"typescript": "^5.
|
|
34
|
-
"vite": "^
|
|
35
|
-
"vike": "^0.4.
|
|
26
|
+
"typescript": "^5.3.2",
|
|
27
|
+
"vite": "^5.0.2",
|
|
28
|
+
"vike": "^0.4.147"
|
|
29
|
+
},
|
|
30
|
+
"exports": {
|
|
31
|
+
".": "./dist/+config.js",
|
|
32
|
+
"./vite": "./dist/vite-plugin-vike-solid.js",
|
|
33
|
+
"./usePageContext": "./dist/usePageContext.js",
|
|
34
|
+
"./ClientOnly": "./dist/ClientOnly.js",
|
|
35
|
+
"./renderer/onRenderHtml": "./dist/+onRenderHtml.js",
|
|
36
|
+
"./renderer/onRenderClient": "./dist/+onRenderClient.js"
|
|
36
37
|
},
|
|
37
38
|
"typesVersions": {
|
|
38
39
|
"*": {
|
|
@@ -47,6 +48,9 @@
|
|
|
47
48
|
],
|
|
48
49
|
"usePageContext": [
|
|
49
50
|
"dist/components/usePageContext.d.ts"
|
|
51
|
+
],
|
|
52
|
+
"ClientOnly": [
|
|
53
|
+
"dist/components/ClientOnly.d.ts"
|
|
50
54
|
]
|
|
51
55
|
}
|
|
52
56
|
},
|