Skip to content

Commit ba89aa2

Browse files
authored
breaking(minimal): handleBuild API for build (#1093)
also changes define-router
1 parent ec87f81 commit ba89aa2

File tree

23 files changed

+849
-376
lines changed

23 files changed

+849
-376
lines changed

e2e/fixtures/define-router/src/entries.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ const entries: ReturnType<typeof defineEntries> = defineEntries({
6969
}
7070
return router.handleRequest(input, utils);
7171
},
72-
getBuildConfig: (utils) => {
73-
return router.getBuildConfig(utils);
72+
handleBuild: (utils) => {
73+
return router.handleBuild(utils);
7474
},
7575
});
7676

e2e/fixtures/rsc-basic/src/entries.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const entries: ReturnType<typeof defineEntries> = defineEntries({
1212
return renderRsc({ _value: value });
1313
}
1414
},
15-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
15+
handleBuild: () => null,
1616
});
1717

1818
export default entries;

e2e/fixtures/rsc-css-modules/src/entries.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const entries: ReturnType<typeof defineEntries> = defineEntries({
1212
return renderRsc({ _value: value });
1313
}
1414
},
15-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
15+
handleBuild: () => null,
1616
});
1717

1818
export default entries;

e2e/fixtures/ssr-basic/src/entries.tsx

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { unstable_defineEntries as defineEntries } from 'waku/minimal/server';
22
import { Slot } from 'waku/minimal/client';
3+
import { unstable_createAsyncIterable as createAsyncIterable } from 'waku/server';
34

45
import App from './components/App.js';
56

@@ -18,7 +19,16 @@ const entries: ReturnType<typeof defineEntries> = defineEntries({
1819
});
1920
}
2021
},
21-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
22+
handleBuild: () =>
23+
createAsyncIterable(async () => {
24+
const tasks = [
25+
async () => ({
26+
type: 'htmlHead' as const,
27+
pathSpec: [],
28+
}),
29+
];
30+
return tasks;
31+
}),
2232
});
2333

2434
export default entries;

e2e/fixtures/ssr-context-provider/src/entries.tsx

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { unstable_defineEntries as defineEntries } from 'waku/minimal/server';
22
import { Slot } from 'waku/minimal/client';
3+
import { unstable_createAsyncIterable as createAsyncIterable } from 'waku/server';
34

45
import App from './components/app.js';
56

@@ -16,7 +17,16 @@ const entries: ReturnType<typeof defineEntries> = defineEntries({
1617
return renderHtml({ App: <App /> }, <Slot id="App" />, { rscPath: '' });
1718
}
1819
},
19-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
20+
handleBuild: () =>
21+
createAsyncIterable(async () => {
22+
const tasks = [
23+
async () => ({
24+
type: 'htmlHead' as const,
25+
pathSpec: [],
26+
}),
27+
];
28+
return tasks;
29+
}),
2030
});
2131

2232
export default entries;

e2e/fixtures/ssr-swr/src/entries.tsx

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { unstable_defineEntries as defineEntries } from 'waku/minimal/server';
22
import { Slot } from 'waku/minimal/client';
3+
import { unstable_createAsyncIterable as createAsyncIterable } from 'waku/server';
34

45
import App from './components/App.js';
56

@@ -18,7 +19,16 @@ const entries: ReturnType<typeof defineEntries> = defineEntries({
1819
});
1920
}
2021
},
21-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
22+
handleBuild: () =>
23+
createAsyncIterable(async () => {
24+
const tasks = [
25+
async () => ({
26+
type: 'htmlHead' as const,
27+
pathSpec: [],
28+
}),
29+
];
30+
return tasks;
31+
}),
2232
});
2333

2434
export default entries;

e2e/fixtures/ssr-target-bundle/src/entries.tsx

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { unstable_defineEntries as defineEntries } from 'waku/minimal/server';
22
import { Slot } from 'waku/minimal/client';
3+
import { unstable_createAsyncIterable as createAsyncIterable } from 'waku/server';
34

45
import App from './components/App.js';
56

@@ -18,7 +19,16 @@ const entries: ReturnType<typeof defineEntries> = defineEntries({
1819
});
1920
}
2021
},
21-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
22+
handleBuild: () =>
23+
createAsyncIterable(async () => {
24+
const tasks = [
25+
async () => ({
26+
type: 'htmlHead' as const,
27+
pathSpec: [],
28+
}),
29+
];
30+
return tasks;
31+
}),
2232
});
2333

2434
export default entries;

examples/12_nossr/src/entries.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default defineEntries({
1414
}
1515
return router.handleRequest(input, utils);
1616
},
17-
getBuildConfig: (utils) => {
18-
return router.getBuildConfig(utils);
17+
handleBuild: (utils) => {
18+
return router.handleBuild(utils);
1919
},
2020
});

examples/31_minimal/src/entries.tsx

+39-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { unstable_defineEntries as defineEntries } from 'waku/minimal/server';
22
import { Slot } from 'waku/minimal/client';
3+
import { unstable_createAsyncIterable as createAsyncIterable } from 'waku/server';
34

45
import App from './components/App';
56

@@ -14,5 +15,42 @@ export default defineEntries({
1415
});
1516
}
1617
},
17-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
18+
handleBuild: ({
19+
// renderRsc,
20+
// renderHtml,
21+
// rscPath2pathname,
22+
unstable_generatePrefetchCode,
23+
}) =>
24+
createAsyncIterable(async () => {
25+
const moduleIds = new Set<string>();
26+
const generateHtmlHead = () =>
27+
`<script type="module" async>${unstable_generatePrefetchCode(
28+
[''],
29+
moduleIds,
30+
)}</script>`;
31+
const tasks = [
32+
async () => ({
33+
type: 'htmlHead' as const,
34+
pathSpec: [],
35+
head: generateHtmlHead(),
36+
}),
37+
// async () => ({
38+
// type: 'file' as const,
39+
// pathname: rscPath2pathname(''),
40+
// body: renderRsc(
41+
// { App: <App name="Waku" /> },
42+
// { moduleIdCallback: (id) => moduleIds.add(id) },
43+
// ),
44+
// }),
45+
// async () => ({
46+
// type: 'file' as const,
47+
// pathname: '/',
48+
// body: renderHtml({ App: <App name="Waku" /> }, <Slot id="App" />, {
49+
// rscPath: '',
50+
// htmlHead: generateHtmlHead(),
51+
// }).then(({ body }) => body),
52+
// }),
53+
];
54+
return tasks;
55+
}),
1856
});

examples/32_minimal_js/src/entries.jsx

+39-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { unstable_defineEntries as defineEntries } from 'waku/minimal/server';
22
import { Slot } from 'waku/minimal/client';
3+
import { unstable_createAsyncIterable as createAsyncIterable } from 'waku/server';
34

45
import App from './components/app';
56

@@ -14,5 +15,42 @@ export default defineEntries({
1415
});
1516
}
1617
},
17-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
18+
handleBuild: ({
19+
// renderRsc,
20+
// renderHtml,
21+
// rscPath2pathname,
22+
unstable_generatePrefetchCode,
23+
}) =>
24+
createAsyncIterable(async () => {
25+
const moduleIds = new Set();
26+
const generateHtmlHead = () =>
27+
`<script type="module" async>${unstable_generatePrefetchCode(
28+
[''],
29+
moduleIds,
30+
)}</script>`;
31+
const tasks = [
32+
async () => ({
33+
type: 'htmlHead',
34+
pathSpec: [],
35+
head: generateHtmlHead(),
36+
}),
37+
// async () => ({
38+
// type: 'file',
39+
// pathname: rscPath2pathname(''),
40+
// body: await renderRsc(
41+
// { App: <App name="Waku" /> },
42+
// { moduleIdCallback: (id) => moduleIds.add(id) },
43+
// ),
44+
// }),
45+
// async () => ({
46+
// type: 'file',
47+
// pathname: '/',
48+
// body: renderHtml({ App: <App name="Waku" /> }, <Slot id="App" />, {
49+
// rscPath: '',
50+
// htmlHead: generateHtmlHead(),
51+
// }).then(({ body }) => body),
52+
// }),
53+
];
54+
return tasks;
55+
}),
1856
});

examples/33_promise/src/entries.tsx

+39-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { unstable_defineEntries as defineEntries } from 'waku/minimal/server';
22
import { Children, Slot } from 'waku/minimal/client';
3+
import { unstable_createAsyncIterable as createAsyncIterable } from 'waku/server';
34

45
import App from './components/App';
56

@@ -30,5 +31,42 @@ export default defineEntries({
3031
);
3132
}
3233
},
33-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
34+
handleBuild: ({
35+
// renderRsc,
36+
// renderHtml,
37+
// rscPath2pathname,
38+
unstable_generatePrefetchCode,
39+
}) =>
40+
createAsyncIterable(async () => {
41+
const moduleIds = new Set<string>();
42+
const generateHtmlHead = () =>
43+
`<script type="module" async>${unstable_generatePrefetchCode(
44+
[''],
45+
moduleIds,
46+
)}</script>`;
47+
const tasks = [
48+
async () => ({
49+
type: 'htmlHead' as const,
50+
pathSpec: [],
51+
head: generateHtmlHead(),
52+
}),
53+
// async () => ({
54+
// type: 'file' as const,
55+
// pathname: rscPath2pathname(''),
56+
// body: await renderRsc(
57+
// { App: <App name="Waku" /> },
58+
// { moduleIdCallback: (id) => moduleIds.add(id) },
59+
// ),
60+
// }),
61+
// async () => ({
62+
// type: 'file' as const,
63+
// pathname: '/',
64+
// body: renderHtml({ App: <App name="Waku" /> }, <Slot id="App" />, {
65+
// rscPath: '',
66+
// htmlHead: generateHtmlHead(),
67+
// }).then(({ body }) => body),
68+
// }),
69+
];
70+
return tasks;
71+
}),
3472
});

examples/34_functions/src/entries.tsx

+39-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { unstable_defineEntries as defineEntries } from 'waku/minimal/server';
22
import { Slot } from 'waku/minimal/client';
3+
import { unstable_createAsyncIterable as createAsyncIterable } from 'waku/server';
34

45
import App from './components2/App';
56
import { runWithRerender } from './als';
@@ -25,5 +26,42 @@ export default defineEntries({
2526
});
2627
}
2728
},
28-
getBuildConfig: async () => [{ pathSpec: [], entries: [{ rscPath: '' }] }],
29+
handleBuild: ({
30+
// renderRsc,
31+
// renderHtml,
32+
// rscPath2pathname,
33+
unstable_generatePrefetchCode,
34+
}) =>
35+
createAsyncIterable(async () => {
36+
const moduleIds = new Set<string>();
37+
const generateHtmlHead = () =>
38+
`<script type="module" async>${unstable_generatePrefetchCode(
39+
[''],
40+
moduleIds,
41+
)}</script>`;
42+
const tasks = [
43+
async () => ({
44+
type: 'htmlHead' as const,
45+
pathSpec: [],
46+
head: generateHtmlHead(),
47+
}),
48+
// async () => ({
49+
// type: 'file' as const,
50+
// pathname: rscPath2pathname(''),
51+
// body: await renderRsc(
52+
// { App: <App name="Waku" /> },
53+
// { moduleIdCallback: (id) => moduleIds.add(id) },
54+
// ),
55+
// }),
56+
// async () => ({
57+
// type: 'file' as const,
58+
// pathname: '/',
59+
// body: renderHtml({ App: <App name="Waku" /> }, <Slot id="App" />, {
60+
// rscPath: '',
61+
// htmlHead: generateHtmlHead(),
62+
// }).then(({ body }) => body),
63+
// }),
64+
];
65+
return tasks;
66+
}),
2967
});

0 commit comments

Comments
 (0)