Skip to content

Commit f7c906a

Browse files
committed
feat(typescript): added typescript support
1 parent a7d7333 commit f7c906a

File tree

116 files changed

+2675
-1835
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+2675
-1835
lines changed

.husky/pre-push

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
export NVM_DIR="$HOME/.nvm"
55
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
66

7-
npx branch-name-lint .branchlintrc
7+
# npx branch-name-lint .branchlintrc

build.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export default {
22
failOnWarn: false,
33
externals: [
44
// package
5+
'vue-bundle-renderer',
56
'@nuxt/image',
67
'browserslist-useragent-regexp',
78
'cheerio',

docs/.vitepress/config.js docs/.vitepress/config.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import { fileURLToPath } from 'url';
2-
import { defineConfig } from 'vitepress';
2+
// import type { DefaultTheme, UserConfig } from 'vitepress';
3+
import { defineConfigWithTheme } from 'vitepress';
34
import markdownItInlineComments from 'markdown-it-inline-comments';
4-
import navigation from './navigation.js';
5+
import navigation from './navigation';
6+
7+
// 'UserConfig<Config>
58

69
// https://vitepress.dev/reference/site-config
7-
export default defineConfig(() => ({
10+
export default defineConfigWithTheme({
811
markdown: {
912
config: md => {
1013
md.use(markdownItInlineComments);
@@ -58,7 +61,7 @@ export default defineConfig(() => ({
5861
sitemap: {
5962
hostname: 'https://basics.github.io/nuxt-booster/'
6063
}
61-
}));
64+
});
6265

6366
function getBaseUrl() {
6467
return process.env.npm_config_base_url || process.env.BASE_URL || '/';
File renamed without changes.

docs/.vitepress/theme/index.js docs/.vitepress/theme/index.ts

-4
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,5 @@ export default {
1111
return h(DefaultTheme.Layout, null, {
1212
// https://vitepress.dev/guide/extending-default-theme#layout-slots
1313
});
14-
},
15-
// eslint-disable-next-line no-unused-vars
16-
enhanceApp({ app, router, siteData }) {
17-
// ...
1814
}
1915
};

docs/components/VPNavBarMenu.vue

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
<script setup>
2-
import { useData } from 'vitepress/dist/client/theme-default/composables/data';
1+
<script lang="ts" setup>
2+
import { useData } from 'vitepress';
33
import VPNavBarMenuLink from 'vitepress/dist/client/theme-default/components/VPNavBarMenuLink.vue';
44
import VPNavBarMenuGroup from 'vitepress/dist/client/theme-default/components/VPNavBarMenuGroup.vue';
5-
import { useVersion } from '../composables/version.js';
5+
import useVersion from '../composables/version';
66
77
const { theme } = useData();
88

docs/components/VPNavBarTitle.vue

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
<script setup>
2-
import { useData } from 'vitepress/dist/client/theme-default/composables/data';
3-
import { useLangs } from 'vitepress/dist/client/theme-default/composables/langs';
4-
import { useSidebar } from 'vitepress/dist/client/theme-default/composables/sidebar';
5-
import { normalizeLink } from 'vitepress/dist/client/theme-default/support/utils';
1+
<script lang="ts" setup>
2+
import { useData } from 'vitepress';
3+
import { useLangs } from 'vitepress/dist/client/theme-default/composables/langs.js';
4+
import { normalizeLink } from 'vitepress/dist/client/theme-default/support/utils.js';
65
import VPImage from 'vitepress/dist/client/theme-default/components/VPImage.vue';
76
import Logo from './Logo.vue';
7+
import { useSidebar } from 'vitepress/theme';
88
99
const { site, theme } = useData();
1010
const { hasSidebar } = useSidebar();

docs/components/VPNavScreenMenu.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<script lang="ts" setup>
2-
import { useData } from 'vitepress/dist/client/theme-default/composables/data';
2+
import { useData } from 'vitepress';
33
import VPNavScreenMenuLink from 'vitepress/dist/client/theme-default/components/VPNavScreenMenuLink.vue';
44
import VPNavScreenMenuGroup from 'vitepress/dist/client/theme-default/components/VPNavScreenMenuGroup.vue';
5-
import { useVersion } from '../composables/version.js';
5+
import useVersion from '../composables/version';
66
77
const { theme } = useData();
88
const { nav: versionNav } = useVersion();

docs/composables/version.js

-42
This file was deleted.

docs/composables/version.ts

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { useData } from 'vitepress';
2+
import { computed } from 'vue';
3+
4+
export default function useVersion() {
5+
const { theme, page } = useData();
6+
7+
const defaultVersion = computed(
8+
() =>
9+
theme.value.version.find(
10+
({ isDefault }: { isDefault: boolean }) => isDefault
11+
)?.version
12+
);
13+
14+
const currentVersion = computed(() =>
15+
Number(
16+
(/v(\d+)\/.*/.test(page.value.relativePath) &&
17+
page.value.relativePath.replace(/v(\d+)\/.*/, '$1')) ||
18+
defaultVersion.value
19+
)
20+
);
21+
22+
const nav = computed(() => {
23+
return (
24+
theme.value.version?.length && [
25+
{
26+
text: `v${currentVersion.value}`,
27+
items: theme.value.version
28+
.filter(
29+
({ version }: { version: number }) =>
30+
version !== currentVersion.value
31+
)
32+
.map(
33+
({
34+
version,
35+
isDefault
36+
}: {
37+
version: number;
38+
isDefault: boolean;
39+
}) => {
40+
return {
41+
text: `v${version}`,
42+
link: isDefault ? '/' : `/v${version}/`
43+
};
44+
}
45+
)
46+
}
47+
]
48+
);
49+
});
50+
51+
return {
52+
defaultVersion,
53+
currentVersion,
54+
nav
55+
};
56+
}

eslint.config.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import { withNuxt } from './playground/.nuxt/eslint.config.mjs';
22
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
33
import eslintIgnores from './eslint.ignores.js';
44
import pluginSecurity from 'eslint-plugin-security';
5+
import tseslint from 'typescript-eslint';
56

67
export default withNuxt({
7-
files: ['**/*.js', '**/*.vue'],
8+
files: ['**/*.js', '**/*.ts', '**/*.d.ts', '**/*.vue'],
89
rules: {
910
'prettier/prettier': 'error',
1011
classPrivateMethods: 'off',
@@ -40,6 +41,7 @@ export default withNuxt({
4041
}
4142
}).prepend(
4243
eslintIgnores,
44+
tseslint.configs.recommended,
4345
pluginSecurity.configs.recommended,
4446
eslintPluginPrettierRecommended
4547
);

0 commit comments

Comments
 (0)