Skip to content

Commit 894c039

Browse files
committedSep 8, 2023
fix: enable vike-* packages to seamlessly extend Config using interface merging
1 parent bdbcb00 commit 894c039

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed
 

‎vite-plugin-ssr/shared/page-configs/Config.ts

+14-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ export type { Config }
22
export type { ConfigNameBuiltIn }
33
export type { ConfigMeta }
44
export type { HookName }
5+
export type { ConfigVikePackages }
6+
export type { ConfigVikeReact }
7+
export type { ConfigVikeVue }
8+
export type { ConfigVikeSolid }
9+
export type { ConfigVikeSvelte }
510

611
import type { PrefetchStaticAssets } from '../../client/client-routing-runtime/prefetch/getPrefetchSettings.js'
712
import { ConfigDefinition } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js'
@@ -33,7 +38,7 @@ type ConfigNameBuiltIn = ConfigNameBuiltInPublic | ConfigNameBuiltInInternal
3338
*
3439
* https://vite-plugin-ssr.com/config
3540
*/
36-
type Config<Page = unknown> = {
41+
type Config<Page = unknown> = ConfigVikePackagesAll & {
3742
Page?: Page
3843

3944
/** The page's URL(s).
@@ -158,6 +163,14 @@ type Config<Page = unknown> = {
158163
prefetchStaticAssets?: PrefetchStaticAssets | ImportString
159164
}
160165

166+
type ConfigVikePackagesAll = ConfigVikePackages & (ConfigVikeReact | ConfigVikeVue | ConfigVikeSolid | ConfigVikeSvelte)
167+
interface ConfigVikePackages {} // For vike-* packages that don't conflict, e.g. the `isr` config of vike-vercel
168+
// Because of conflicts, e.g. the Page config, we need a different interface for each vike-{react/vue/solid/svelte}
169+
interface ConfigVikeReact {} // For vike-react
170+
interface ConfigVikeVue {} // For vike-vue
171+
interface ConfigVikeSolid {} // For vike-solid
172+
interface ConfigVikeSvelte {} // For vike-svelte (doesn't exist yet)
173+
161174
type ConfigMeta = Record<string, ConfigDefinition>
162175

163176
type ImportString = `import:${string}`

‎vite-plugin-ssr/types/index.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,15 @@ export type { PageContextBuiltInServer } from '../shared/types.js'
22
export type { PageContextBuiltInClientWithClientRouting } from '../shared/types.js'
33
export type { PageContextBuiltInClientWithServerRouting } from '../shared/types.js'
44
export type { InjectFilterEntry } from '../node/runtime/html/injectAssets/getHtmlTags.js'
5-
export type { Config, ConfigMeta as Meta } from '../shared/page-configs/Config.js'
5+
export type {
6+
Config,
7+
ConfigMeta as Meta,
8+
ConfigVikePackages,
9+
ConfigVikeReact,
10+
ConfigVikeVue,
11+
ConfigVikeSolid,
12+
ConfigVikeSvelte
13+
} from '../shared/page-configs/Config.js'
614
export type { ConfigEnv } from '../shared/page-configs/PageConfig.js'
715
export type {
816
ConfigDefinition,

0 commit comments

Comments
 (0)
Please sign in to comment.