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 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 ? "server-and-client" // default
18
- : "client-only"
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: "server-only"
42
+ env: {
43
+ server: true
44
+ }
38
45
  },
39
46
  Layout: {
40
- env: "server-and-client"
47
+ env: {
48
+ server: true,
49
+ client: true
50
+ }
41
51
  },
42
52
  title: {
43
- env: "server-and-client"
53
+ env: {
54
+ server: true,
55
+ client: true
56
+ }
44
57
  },
45
58
  description: {
46
- env: "server-only"
59
+ env: {
60
+ server: true
61
+ }
47
62
  },
48
63
  favicon: {
49
- env: "server-only"
64
+ env: {
65
+ server: true
66
+ }
50
67
  },
51
68
  lang: {
52
- env: "server-only"
69
+ env: {
70
+ server: true
71
+ }
53
72
  },
54
73
  ssr: {
55
- env: "config-only",
74
+ env: {
75
+ config: true
76
+ },
56
77
  effect: toggleSsrRelatedConfig
57
78
  }
58
79
  }
@@ -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: "server-only";
26
+ env: {
27
+ server: true;
28
+ };
27
29
  };
28
30
  Layout: {
29
- env: "server-and-client";
31
+ env: {
32
+ server: true;
33
+ client: true;
34
+ };
30
35
  };
31
36
  title: {
32
- env: "server-and-client";
37
+ env: {
38
+ server: true;
39
+ client: true;
40
+ };
33
41
  };
34
42
  description: {
35
- env: "server-only";
43
+ env: {
44
+ server: true;
45
+ };
36
46
  };
37
47
  favicon: {
38
- env: "server-only";
48
+ env: {
49
+ server: true;
50
+ };
39
51
  };
40
52
  lang: {
41
- env: "server-only";
53
+ env: {
54
+ server: true;
55
+ };
42
56
  };
43
57
  ssr: {
44
- env: "config-only";
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.4",
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.5",
17
- "vite": "^4.5.0",
18
- "vike": "^0.4.144"
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.4",
20
+ "babel-preset-solid": "^1.8.6",
28
21
  "bumpp": "^9.2.0",
29
- "rollup": "^4.4.0",
22
+ "rollup": "^4.6.0",
30
23
  "rollup-plugin-dts": "^6.1.0",
31
- "solid-js": "^1.8.5",
24
+ "solid-js": "^1.8.6",
32
25
  "tslib": "^2.6.2",
33
- "typescript": "^5.2.2",
34
- "vite": "^4.5.0",
35
- "vike": "^0.4.144"
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
  },