@batijs/cli 0.0.141 → 0.0.143
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/boilerplates/@batijs/react/files/$package.json.js +20 -14
- package/dist/boilerplates/@batijs/react/files/layouts/HeadDefault.tsx +7 -0
- package/dist/boilerplates/@batijs/react/files/pages/+config.h.ts +2 -7
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/@id/+Page.tsx +4 -2
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/@id/+data.ts +22 -0
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/@id/+title.ts +7 -0
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/index/+Page.tsx +5 -3
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/index/+data.ts +22 -0
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/index/+title.ts +7 -0
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/types.ts +1 -4
- package/dist/boilerplates/@batijs/react/types/pages/+config.h.d.ts +9 -9
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/@id/+Page.d.ts +1 -4
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/@id/+data.d.ts +4 -0
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/@id/+title.d.ts +3 -0
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/index/+Page.d.ts +1 -4
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/index/+data.d.ts +3 -0
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/index/+title.d.ts +3 -0
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/types.d.ts +1 -4
- package/dist/boilerplates/@batijs/react-telefunc/files/pages/todo/+Page.tsx +4 -2
- package/dist/boilerplates/@batijs/react-telefunc/files/pages/todo/+data.ts +9 -0
- package/dist/boilerplates/@batijs/react-telefunc/types/pages/todo/+Page.d.ts +1 -4
- package/dist/boilerplates/@batijs/react-telefunc/types/pages/todo/+data.d.ts +2 -0
- package/dist/boilerplates/@batijs/react-trpc/files/pages/todo-trpc/+Page.tsx +4 -2
- package/dist/boilerplates/@batijs/react-trpc/files/pages/todo-trpc/+data.ts +9 -0
- package/dist/boilerplates/@batijs/react-trpc/types/pages/todo-trpc/+Page.d.ts +1 -4
- package/dist/boilerplates/@batijs/react-trpc/types/pages/todo-trpc/+data.d.ts +2 -0
- package/dist/boilerplates/@batijs/vercel/files/$package.json.js +2 -2
- package/dist/index.js +1 -1
- package/package.json +5 -5
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/@id/+onBeforeRender.ts +0 -25
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/filterMovieData.ts +0 -7
- package/dist/boilerplates/@batijs/react/files/pages/star-wars/index/+onBeforeRender.ts +0 -77
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/@id/+onBeforeRender.d.ts +0 -10
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/filterMovieData.d.ts +0 -2
- package/dist/boilerplates/@batijs/react/types/pages/star-wars/index/+onBeforeRender.d.ts +0 -9
- package/dist/boilerplates/@batijs/react-telefunc/files/pages/todo/+onBeforeRender.ts +0 -13
- package/dist/boilerplates/@batijs/react-telefunc/types/pages/todo/+onBeforeRender.d.ts +0 -7
- package/dist/boilerplates/@batijs/react-trpc/files/pages/todo-trpc/+onBeforeRender.ts +0 -13
- package/dist/boilerplates/@batijs/react-trpc/types/pages/todo-trpc/+onBeforeRender.d.ts +0 -7
|
@@ -55,8 +55,8 @@ var require_package = __commonJS({
|
|
|
55
55
|
"react-dom": "^18.2.0",
|
|
56
56
|
tailwindcss: "^3.4.1",
|
|
57
57
|
typescript: "^5.3.3",
|
|
58
|
-
vike: "^0.4.
|
|
59
|
-
"vike-react": "^0.
|
|
58
|
+
vike: "^0.4.159",
|
|
59
|
+
"vike-react": "^0.4.0",
|
|
60
60
|
vite: "^5.0.11"
|
|
61
61
|
},
|
|
62
62
|
dependencies: {
|
|
@@ -101,20 +101,23 @@ var require_package = __commonJS({
|
|
|
101
101
|
"./pages/star-wars/types": {
|
|
102
102
|
types: "./dist/types/pages/star-wars/types.d.ts"
|
|
103
103
|
},
|
|
104
|
-
"./pages/star-wars
|
|
105
|
-
types: "./dist/types/pages/star-wars
|
|
104
|
+
"./pages/star-wars/@id/+data": {
|
|
105
|
+
types: "./dist/types/pages/star-wars/@id/+data.d.ts"
|
|
106
106
|
},
|
|
107
107
|
"./pages/star-wars/@id/+Page": {
|
|
108
108
|
types: "./dist/types/pages/star-wars/@id/+Page.d.ts"
|
|
109
109
|
},
|
|
110
|
-
"./pages/star-wars/@id/+
|
|
111
|
-
types: "./dist/types/pages/star-wars/@id/+
|
|
110
|
+
"./pages/star-wars/@id/+title": {
|
|
111
|
+
types: "./dist/types/pages/star-wars/@id/+title.d.ts"
|
|
112
|
+
},
|
|
113
|
+
"./pages/star-wars/index/+data": {
|
|
114
|
+
types: "./dist/types/pages/star-wars/index/+data.d.ts"
|
|
112
115
|
},
|
|
113
116
|
"./pages/star-wars/index/+Page": {
|
|
114
117
|
types: "./dist/types/pages/star-wars/index/+Page.d.ts"
|
|
115
118
|
},
|
|
116
|
-
"./pages/star-wars/index/+
|
|
117
|
-
types: "./dist/types/pages/star-wars/index/+
|
|
119
|
+
"./pages/star-wars/index/+title": {
|
|
120
|
+
types: "./dist/types/pages/star-wars/index/+title.d.ts"
|
|
118
121
|
}
|
|
119
122
|
},
|
|
120
123
|
typesVersions: {
|
|
@@ -149,20 +152,23 @@ var require_package = __commonJS({
|
|
|
149
152
|
"pages/star-wars/types": [
|
|
150
153
|
"./dist/types/pages/star-wars/types.d.ts"
|
|
151
154
|
],
|
|
152
|
-
"pages/star-wars
|
|
153
|
-
"./dist/types/pages/star-wars
|
|
155
|
+
"pages/star-wars/@id/+data": [
|
|
156
|
+
"./dist/types/pages/star-wars/@id/+data.d.ts"
|
|
154
157
|
],
|
|
155
158
|
"pages/star-wars/@id/+Page": [
|
|
156
159
|
"./dist/types/pages/star-wars/@id/+Page.d.ts"
|
|
157
160
|
],
|
|
158
|
-
"pages/star-wars/@id/+
|
|
159
|
-
"./dist/types/pages/star-wars/@id/+
|
|
161
|
+
"pages/star-wars/@id/+title": [
|
|
162
|
+
"./dist/types/pages/star-wars/@id/+title.d.ts"
|
|
163
|
+
],
|
|
164
|
+
"pages/star-wars/index/+data": [
|
|
165
|
+
"./dist/types/pages/star-wars/index/+data.d.ts"
|
|
160
166
|
],
|
|
161
167
|
"pages/star-wars/index/+Page": [
|
|
162
168
|
"./dist/types/pages/star-wars/index/+Page.d.ts"
|
|
163
169
|
],
|
|
164
|
-
"pages/star-wars/index/+
|
|
165
|
-
"./dist/types/pages/star-wars/index/+
|
|
170
|
+
"pages/star-wars/index/+title": [
|
|
171
|
+
"./dist/types/pages/star-wars/index/+title.d.ts"
|
|
166
172
|
]
|
|
167
173
|
}
|
|
168
174
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import logoUrl from "../assets/logo.svg";
|
|
2
3
|
|
|
3
4
|
// Default <head> (can be overridden by pages)
|
|
4
5
|
|
|
@@ -7,6 +8,8 @@ export default function HeadDefault() {
|
|
|
7
8
|
return (
|
|
8
9
|
<>
|
|
9
10
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
11
|
+
<meta name="description" content="Demo showcasing Vike" />
|
|
12
|
+
<link rel="icon" href={logoUrl} />
|
|
10
13
|
{/* See https://plausible.io/docs/plausible-script */}
|
|
11
14
|
{/* TODO: update data-domain */}
|
|
12
15
|
<script defer data-domain="yourdomain.com" src="https://plausible.io/js/script.js"></script>
|
|
@@ -16,6 +19,8 @@ export default function HeadDefault() {
|
|
|
16
19
|
return (
|
|
17
20
|
<>
|
|
18
21
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
22
|
+
<meta name="description" content="Demo showcasing Vike" />
|
|
23
|
+
<link rel="icon" href={logoUrl} />
|
|
19
24
|
<script
|
|
20
25
|
async
|
|
21
26
|
src={`https://www.googletagmanager.com/gtag/js?id=${import.meta.env.PUBLIC_ENV__GOOGLE_ANALYTICS}`}
|
|
@@ -35,6 +40,8 @@ export default function HeadDefault() {
|
|
|
35
40
|
return (
|
|
36
41
|
<>
|
|
37
42
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
43
|
+
<meta name="description" content="Demo showcasing Vike" />
|
|
44
|
+
<link rel="icon" href={logoUrl} />
|
|
38
45
|
</>
|
|
39
46
|
);
|
|
40
47
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
+
import vikeReact from "vike-react";
|
|
1
2
|
import type { Config } from "vike/types";
|
|
2
|
-
import Layout from "../layouts/LayoutDefault";
|
|
3
3
|
import Head from "../layouts/HeadDefault";
|
|
4
|
-
import
|
|
5
|
-
import vikeReact from "vike-react";
|
|
4
|
+
import Layout from "../layouts/LayoutDefault";
|
|
6
5
|
|
|
7
6
|
// Default config (can be overridden by pages)
|
|
8
7
|
export default {
|
|
@@ -10,9 +9,5 @@ export default {
|
|
|
10
9
|
Head,
|
|
11
10
|
// <title>
|
|
12
11
|
title: "My Vike App",
|
|
13
|
-
// <meta name="description">
|
|
14
|
-
description: "Demo showcasing Vike",
|
|
15
|
-
// <link rel="icon" href="${favicon}" />
|
|
16
|
-
favicon: logoUrl,
|
|
17
12
|
extends: vikeReact,
|
|
18
13
|
} satisfies Config;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import
|
|
2
|
+
import { useData } from "vike-react/useData";
|
|
3
|
+
import type { Data } from "./+data";
|
|
3
4
|
|
|
4
|
-
export default function Page(
|
|
5
|
+
export default function Page() {
|
|
6
|
+
const movie = useData<Data>();
|
|
5
7
|
return (
|
|
6
8
|
<>
|
|
7
9
|
<h1>{movie.title}</h1>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// https://vike.dev/data
|
|
2
|
+
|
|
3
|
+
import fetch from "cross-fetch";
|
|
4
|
+
import type { PageContextServer } from "vike/types";
|
|
5
|
+
import type { MovieDetails } from "../types";
|
|
6
|
+
|
|
7
|
+
export type Data = Awaited<ReturnType<typeof data>>;
|
|
8
|
+
|
|
9
|
+
export const data = async (pageContext: PageContextServer) => {
|
|
10
|
+
const response = await fetch(`https://brillout.github.io/star-wars/api/films/${pageContext.routeParams.id}.json`);
|
|
11
|
+
let movie = (await response.json()) as MovieDetails;
|
|
12
|
+
// We remove data we don't need because the data is passed to
|
|
13
|
+
// the client; we should minimize what is sent over the network.
|
|
14
|
+
movie = minimize(movie);
|
|
15
|
+
return movie;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
function minimize(movie: MovieDetails): MovieDetails {
|
|
19
|
+
const { id, title, release_date, director, producer } = movie;
|
|
20
|
+
movie = { id, title, release_date, director, producer };
|
|
21
|
+
return movie;
|
|
22
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import
|
|
2
|
+
import { useData } from "vike-react/useData";
|
|
3
|
+
import type { Data } from "./+data";
|
|
3
4
|
|
|
4
|
-
export default function Page(
|
|
5
|
+
export default function Page() {
|
|
6
|
+
const movies = useData<Data>();
|
|
5
7
|
return (
|
|
6
8
|
<>
|
|
7
9
|
<h1>Star Wars Movies</h1>
|
|
@@ -13,7 +15,7 @@ export default function Page({ movies }: { movies: Movie[] }) {
|
|
|
13
15
|
))}
|
|
14
16
|
</ol>
|
|
15
17
|
<p>
|
|
16
|
-
Source: <a href="https://star-wars
|
|
18
|
+
Source: <a href="https://brillout.github.io/star-wars">brillout.github.io/star-wars</a>.
|
|
17
19
|
</p>
|
|
18
20
|
</>
|
|
19
21
|
);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// https://vike.dev/data
|
|
2
|
+
|
|
3
|
+
import fetch from "cross-fetch";
|
|
4
|
+
import type { Movie, MovieDetails } from "../types";
|
|
5
|
+
|
|
6
|
+
export type Data = Awaited<ReturnType<typeof data>>;
|
|
7
|
+
|
|
8
|
+
export const data = async () => {
|
|
9
|
+
const response = await fetch("https://brillout.github.io/star-wars/api/films.json");
|
|
10
|
+
const moviesData = (await response.json()) as MovieDetails[];
|
|
11
|
+
// We remove data we don't need because the data is passed to the client; we should
|
|
12
|
+
// minimize what is sent over the network.
|
|
13
|
+
const movies = minimize(moviesData);
|
|
14
|
+
return movies;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
function minimize(movies: MovieDetails[]): Movie[] {
|
|
18
|
+
return movies.map((movie) => {
|
|
19
|
+
const { title, release_date, id } = movie;
|
|
20
|
+
return { title, release_date, id };
|
|
21
|
+
});
|
|
22
|
+
}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import Layout from "../layouts/LayoutDefault";
|
|
2
1
|
import Head from "../layouts/HeadDefault";
|
|
2
|
+
import Layout from "../layouts/LayoutDefault";
|
|
3
3
|
declare const _default: {
|
|
4
4
|
Layout: typeof Layout;
|
|
5
5
|
Head: typeof Head;
|
|
6
6
|
title: string;
|
|
7
|
-
description: string;
|
|
8
|
-
favicon: string;
|
|
9
7
|
extends: {
|
|
10
8
|
onRenderHtml: "import:vike-react/renderer/onRenderHtml:onRenderHtml";
|
|
11
9
|
onRenderClient: "import:vike-react/renderer/onRenderClient:onRenderClient";
|
|
12
|
-
passToClient: string[];
|
|
13
10
|
clientRouting: true;
|
|
14
11
|
hydrationCanBeAborted: true;
|
|
15
12
|
meta: {
|
|
@@ -30,19 +27,16 @@ declare const _default: {
|
|
|
30
27
|
client: true;
|
|
31
28
|
};
|
|
32
29
|
};
|
|
33
|
-
description: {
|
|
34
|
-
env: {
|
|
35
|
-
server: true;
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
30
|
favicon: {
|
|
39
31
|
env: {
|
|
40
32
|
server: true;
|
|
33
|
+
client: true;
|
|
41
34
|
};
|
|
42
35
|
};
|
|
43
36
|
lang: {
|
|
44
37
|
env: {
|
|
45
38
|
server: true;
|
|
39
|
+
client: true;
|
|
46
40
|
};
|
|
47
41
|
};
|
|
48
42
|
ssr: {
|
|
@@ -62,6 +56,12 @@ declare const _default: {
|
|
|
62
56
|
server: true;
|
|
63
57
|
};
|
|
64
58
|
};
|
|
59
|
+
Wrapper: {
|
|
60
|
+
env: {
|
|
61
|
+
client: true;
|
|
62
|
+
server: true;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
65
|
};
|
|
66
66
|
};
|
|
67
67
|
};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { TodoItem } from "@batijs/shared-db/database/todoItems";
|
|
2
1
|
import React, { useState } from "react";
|
|
2
|
+
import { useData } from "vike-react/useData";
|
|
3
|
+
import type { Data } from "./+data";
|
|
3
4
|
import { TodoList } from "./TodoList";
|
|
4
5
|
|
|
5
|
-
export default function Page(
|
|
6
|
+
export default function Page() {
|
|
7
|
+
const todoItemsInitial = useData<Data>();
|
|
6
8
|
return (
|
|
7
9
|
<>
|
|
8
10
|
<h1>To-do List</h1>
|
|
@@ -1,4 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export default function Page({ todoItemsInitial }: {
|
|
3
|
-
todoItemsInitial: TodoItem[];
|
|
4
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
export default function Page(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { TodoItem } from "@batijs/shared-db/database/todoItems";
|
|
2
1
|
import React, { useState } from "react";
|
|
2
|
+
import { useData } from "vike-react/useData";
|
|
3
|
+
import type { Data } from "./+data";
|
|
3
4
|
import { TodoList } from "./TodoList";
|
|
4
5
|
|
|
5
|
-
export default function Page(
|
|
6
|
+
export default function Page() {
|
|
7
|
+
const todoItemsInitial = useData<Data>();
|
|
6
8
|
return (
|
|
7
9
|
<>
|
|
8
10
|
<h1>To-do List</h1>
|
|
@@ -1,4 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export default function Page({ todoItemsInitial }: {
|
|
3
|
-
todoItemsInitial: TodoItem[];
|
|
4
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
export default function Page(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -43,10 +43,10 @@ var require_package = __commonJS({
|
|
|
43
43
|
devDependencies: {
|
|
44
44
|
"@batijs/compile": "workspace:*",
|
|
45
45
|
"@types/node": "^18.19.3",
|
|
46
|
-
"@vite-plugin-vercel/vike": "^
|
|
46
|
+
"@vite-plugin-vercel/vike": "^3.0.1",
|
|
47
47
|
vike: "^0.4.156",
|
|
48
48
|
vite: "^5.0.11",
|
|
49
|
-
"vite-plugin-vercel": "^
|
|
49
|
+
"vite-plugin-vercel": "^3.0.1"
|
|
50
50
|
},
|
|
51
51
|
dependencies: {
|
|
52
52
|
"@batijs/core": "workspace:*"
|
package/dist/index.js
CHANGED
|
@@ -584,7 +584,7 @@ Please report this issue to https://github.com/magne4000/bati`
|
|
|
584
584
|
// package.json
|
|
585
585
|
var package_default = {
|
|
586
586
|
name: "@batijs/cli",
|
|
587
|
-
version: "0.0.
|
|
587
|
+
version: "0.0.143",
|
|
588
588
|
type: "module",
|
|
589
589
|
scripts: {
|
|
590
590
|
"check-types": "tsc --noEmit",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@batijs/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.143",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"description": "Next-gen scaffolder. Get started with fully-functional apps, and choose any tool you want",
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
"tsup": "^8.0.1",
|
|
20
20
|
"typescript": "^5.3.3",
|
|
21
21
|
"vite": "^5.0.11",
|
|
22
|
-
"@batijs/
|
|
23
|
-
"@batijs/
|
|
22
|
+
"@batijs/compile": "0.0.143",
|
|
23
|
+
"@batijs/build": "0.0.143"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@batijs/core": "0.0.
|
|
27
|
-
"@batijs/features": "0.0.
|
|
26
|
+
"@batijs/core": "0.0.143",
|
|
27
|
+
"@batijs/features": "0.0.143"
|
|
28
28
|
},
|
|
29
29
|
"bin": "./dist/index.js",
|
|
30
30
|
"exports": {
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import fetch from "cross-fetch";
|
|
2
|
-
import type { PageContextBuiltInServer } from "vike/types";
|
|
3
|
-
import { filterMovieData } from "../filterMovieData";
|
|
4
|
-
import type { MovieDetails } from "../types";
|
|
5
|
-
|
|
6
|
-
export default async function onBeforeRender(pageContext: PageContextBuiltInServer) {
|
|
7
|
-
const response = await fetch(`https://star-wars.brillout.com/api/films/${pageContext.routeParams.id}.json`);
|
|
8
|
-
let movie = (await response.json()) as MovieDetails;
|
|
9
|
-
|
|
10
|
-
// We remove data we don't need because we pass `pageContext.movie` to
|
|
11
|
-
// the client; we want to minimize what is sent over the network.
|
|
12
|
-
movie = filterMovieData(movie);
|
|
13
|
-
|
|
14
|
-
const { title } = movie;
|
|
15
|
-
|
|
16
|
-
return {
|
|
17
|
-
pageContext: {
|
|
18
|
-
pageProps: {
|
|
19
|
-
movie,
|
|
20
|
-
},
|
|
21
|
-
// The page's <title>
|
|
22
|
-
title,
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { MovieDetails } from "./types";
|
|
2
|
-
|
|
3
|
-
export function filterMovieData(movie: MovieDetails & Record<string, unknown>): MovieDetails {
|
|
4
|
-
const { id, title, release_date, director, producer } = movie;
|
|
5
|
-
movie = { id, title, release_date, director, producer };
|
|
6
|
-
return movie;
|
|
7
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import fetch from "cross-fetch";
|
|
2
|
-
//import { filterMovieData } from '../filterMovieData'
|
|
3
|
-
import type { Movie, MovieDetails } from "../types";
|
|
4
|
-
|
|
5
|
-
export default async function onBeforeRender() {
|
|
6
|
-
const movies = await getStarWarsMovies();
|
|
7
|
-
return {
|
|
8
|
-
pageContext: {
|
|
9
|
-
pageProps: {
|
|
10
|
-
// We remove data we don't need because we pass `pageContext.movies` to
|
|
11
|
-
// the client; we want to minimize what is sent over the network.
|
|
12
|
-
movies: filterMoviesData(movies),
|
|
13
|
-
},
|
|
14
|
-
// The page's <title>
|
|
15
|
-
title: getTitle(movies),
|
|
16
|
-
},
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
async function getStarWarsMovies(): Promise<MovieDetails[]> {
|
|
21
|
-
const response = await fetch("https://star-wars.brillout.com/api/films.json");
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
-
let movies: MovieDetails[] = ((await response.json()) as any).results;
|
|
24
|
-
movies = movies.map((movie: MovieDetails, i: number) => ({
|
|
25
|
-
...movie,
|
|
26
|
-
id: String(i + 1),
|
|
27
|
-
}));
|
|
28
|
-
return movies;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function filterMoviesData(movies: MovieDetails[]): Movie[] {
|
|
32
|
-
return movies.map((movie: MovieDetails) => {
|
|
33
|
-
const { title, release_date, id } = movie;
|
|
34
|
-
return { title, release_date, id };
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/*
|
|
39
|
-
async function prerender() {
|
|
40
|
-
const movies = await getStarWarsMovies()
|
|
41
|
-
return [
|
|
42
|
-
{
|
|
43
|
-
url: '/star-wars',
|
|
44
|
-
// We already provide `pageContext` here so that Vike
|
|
45
|
-
// will *not* have to call the `onBeforeRender()` hook defined
|
|
46
|
-
// above in this file.
|
|
47
|
-
pageContext: {
|
|
48
|
-
pageProps: {
|
|
49
|
-
movies: filterMoviesData(movies)
|
|
50
|
-
},
|
|
51
|
-
documentProps: { title: getTitle(movies) }
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
...movies.map((movie) => {
|
|
55
|
-
const url = `/star-wars/${movie.id}`
|
|
56
|
-
return {
|
|
57
|
-
url,
|
|
58
|
-
// Note that we can also provide the `pageContext` of other pages.
|
|
59
|
-
// This means that Vike will not call any
|
|
60
|
-
// `onBeforeRender()` hook and the Star Wars API will be called
|
|
61
|
-
// only once (in this `prerender()` hook).
|
|
62
|
-
pageContext: {
|
|
63
|
-
pageProps: {
|
|
64
|
-
movie: filterMovieData(movie)
|
|
65
|
-
},
|
|
66
|
-
documentProps: { title: movie.title }
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
})
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
function getTitle(movies: Movie[] | MovieDetails[]): string {
|
|
75
|
-
const title = `${movies.length} Star Wars Movies`;
|
|
76
|
-
return title;
|
|
77
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { PageContextBuiltInServer } from "vike/types";
|
|
2
|
-
import type { MovieDetails } from "../types";
|
|
3
|
-
export default function onBeforeRender(pageContext: PageContextBuiltInServer): Promise<{
|
|
4
|
-
pageContext: {
|
|
5
|
-
pageProps: {
|
|
6
|
-
movie: MovieDetails;
|
|
7
|
-
};
|
|
8
|
-
title: string;
|
|
9
|
-
};
|
|
10
|
-
}>;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// https://vike.dev/onBeforeRender
|
|
2
|
-
import { todoItems } from "@batijs/shared-db/database/todoItems";
|
|
3
|
-
|
|
4
|
-
export default function onBeforeRender() {
|
|
5
|
-
const todoItemsInitial = todoItems;
|
|
6
|
-
return {
|
|
7
|
-
pageContext: {
|
|
8
|
-
pageProps: {
|
|
9
|
-
todoItemsInitial,
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
|
-
};
|
|
13
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// https://vike.dev/onBeforeRender
|
|
2
|
-
import { todoItems } from "@batijs/shared-db/database/todoItems";
|
|
3
|
-
|
|
4
|
-
export default function onBeforeRender() {
|
|
5
|
-
const todoItemsInitial = todoItems;
|
|
6
|
-
return {
|
|
7
|
-
pageContext: {
|
|
8
|
-
pageProps: {
|
|
9
|
-
todoItemsInitial,
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
|
-
};
|
|
13
|
-
}
|