Skip to content

Commit 16d71ab

Browse files
committed
docs: refactor twoslash files
1 parent b782427 commit 16d71ab

File tree

6 files changed

+82
-44
lines changed

6 files changed

+82
-44
lines changed

docs/.vitepress/config.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,7 @@ import {
99
releases,
1010
discord,
1111
} from './meta'
12-
import {
13-
apiIndexFile,
14-
typedRouterFile,
15-
typedRouterFileAsModule,
16-
usersLoaderFile,
17-
} from './twoslash-files'
12+
import { typedRouterFile, typedRouterFileAsModule } from './twoslash-files'
1813
import { extraFiles } from './twoslash/files'
1914

2015
export default defineConfig({
@@ -26,9 +21,6 @@ export default defineConfig({
2621
...extraFiles,
2722
'router.ts': typedRouterFileAsModule,
2823
'typed-router.d.ts': typedRouterFile,
29-
'api/index.ts': apiIndexFile,
30-
'../api/index.ts': apiIndexFile,
31-
'loaders/users.ts': usersLoaderFile,
3224
},
3325
},
3426
}),

docs/.vitepress/twoslash-files.ts

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -32,38 +32,3 @@ declare module 'vue-router/auto-routes' {
3232
}
3333
`
3434
export const typedRouterFileAsModule = typedRouterFile + '\nexport {}\n'
35-
export const apiIndexFile = `
36-
export interface User {
37-
id: number
38-
name: string
39-
photoURL: string
40-
}
41-
42-
export async function getUserById(id: string | number) {
43-
return {} as User
44-
}
45-
export async function getUserList() {
46-
return [] as User[]
47-
}
48-
49-
export async function getCommonFriends(userAId: string | number, userBId: string | number) {
50-
return [] as User[]
51-
}
52-
53-
export async function getCurrentUser() {
54-
return {} as User
55-
}
56-
57-
export async function getFriends(id: string | number) {
58-
return [] as User[]
59-
}
60-
`
61-
export const usersLoaderFile = `
62-
${apiIndexFile}
63-
import { defineBasicLoader } from 'unplugin-vue-router/data-loaders/basic'
64-
65-
export const useUserData = defineBasicLoader((route) => getUserById(route.params.id as string))
66-
export const useUserList = defineBasicLoader(() => getUserList())
67-
68-
export { User, getUserById, getUserList }
69-
`

docs/.vitepress/twoslash/code/api.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
export interface User {
2+
id: number
3+
name: string
4+
photoURL: string
5+
}
6+
7+
export async function getUserById(id: string | number) {
8+
return {} as User
9+
}
10+
export async function getUserList() {
11+
return [] as User[]
12+
}
13+
14+
export async function getCommonFriends(
15+
userAId: string | number,
16+
userBId: string | number
17+
) {
18+
return [] as User[]
19+
}
20+
21+
export async function getCurrentUser() {
22+
return {} as User
23+
}
24+
25+
export async function getFriends(id: string | number) {
26+
return [] as User[]
27+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
import { defineStore } from 'pinia'
22

33
export const useSomeStore = defineStore('some', {})
4+
export const useOtherStore = defineStore('other', {})
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
declare module 'vue-router/auto-routes' {
2+
import type {
3+
RouteRecordInfo,
4+
ParamValue,
5+
ParamValueOneOrMore,
6+
ParamValueZeroOrMore,
7+
ParamValueZeroOrOne,
8+
} from 'vue-router'
9+
10+
export interface RouteNamedMap {
11+
'/': RouteRecordInfo<'/', '/', Record<never, never>, Record<never, never>>
12+
'/users': RouteRecordInfo<
13+
'/users',
14+
'/users',
15+
Record<never, never>,
16+
Record<never, never>
17+
>
18+
'/users/[id]': RouteRecordInfo<
19+
'/users/[id]',
20+
'/users/:id',
21+
{ id: ParamValue<true> },
22+
{ id: ParamValue<false> }
23+
>
24+
'/users/[id]/edit': RouteRecordInfo<
25+
'/users/[id]/edit',
26+
'/users/:id/edit',
27+
{ id: ParamValue<true> },
28+
{ id: ParamValue<false> }
29+
>
30+
}
31+
}

docs/.vitepress/twoslash/files.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,19 @@ import { fileURLToPath } from 'node:url'
44

55
const __dirname = fileURLToPath(new URL('.', import.meta.url))
66

7+
const apiCode = fs.readFileSync(join(__dirname, './code/api.ts'), 'utf-8')
8+
9+
export const usersLoaderCode = `
10+
import { defineBasicLoader } from 'unplugin-vue-router/data-loaders/basic'
11+
12+
${apiCode}
13+
14+
export const useUserData = defineBasicLoader((route) => getUserById(route.params.id as string))
15+
export const useUserList = defineBasicLoader(() => getUserList())
16+
17+
export { User, getUserById, getUserList }
18+
`
19+
720
export const extraFiles = {
821
'@/stores/index.ts': fs.readFileSync(
922
join(__dirname, './code/stores.ts'),
@@ -16,4 +29,13 @@ declare module '*.vue' {
1629
export default defineComponent({})
1730
}
1831
`.trimStart(),
32+
33+
// 'router.ts': typedRouterFileAsModule,
34+
'typed-router.d.ts': fs.readFileSync(
35+
join(__dirname, './code/typed-router.ts'),
36+
'utf-8'
37+
),
38+
'api/index.ts': apiCode,
39+
'../api/index.ts': apiCode,
40+
'loaders/users.ts': usersLoaderCode,
1941
}

0 commit comments

Comments
 (0)