From 8b108488100ed9783b49f9863820b5579ae597fd Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sun, 24 Sep 2023 16:33:11 +0530 Subject: [PATCH] build: improve types (#3009) --- package.json | 6 +++++- pnpm-lock.yaml | 3 +++ rollup.config.ts | 11 +++++++++-- src/client/index.ts | 2 +- src/client/shim.d.ts | 4 ++-- src/node/index.ts | 2 +- src/node/postcss/index.ts | 6 +++--- theme.d.ts | 32 +++++++++++++++++--------------- 8 files changed, 41 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index ba9818cf..30812588 100644 --- a/package.json +++ b/package.json @@ -103,11 +103,15 @@ "vue": "^3.3.4" }, "peerDependencies": { - "markdown-it-mathjax3": "^4.3.2" + "markdown-it-mathjax3": "^4.3.2", + "postcss": "^8.4.30" }, "peerDependenciesMeta": { "markdown-it-mathjax3": { "optional": true + }, + "postcss": { + "optional": true } }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9e28ed9..08509159 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,9 @@ importers: minisearch: specifier: ^6.1.0 version: 6.1.0 + postcss: + specifier: ^8.4.30 + version: 8.4.30 shiki: specifier: ^0.14.4 version: 0.14.4 diff --git a/rollup.config.ts b/rollup.config.ts index b9f46c64..83fb93ec 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -62,13 +62,20 @@ const esmBuild: RollupOptions = { } } +const typesExternal = [ + ...external, + /\/vitepress\/(?!(dist|node_modules)\/).*\.d\.ts$/, + 'source-map-js', + 'fast-glob' +] + const nodeTypes: RollupOptions = { input: r('src/node/index.ts'), output: { format: 'esm', file: 'dist/node/index.d.ts' }, - external: [...external, r('types/shared.d.ts'), 'postcss', 'source-map-js'], + external: typesExternal, plugins: [dts({ respectExternal: true })] } @@ -78,7 +85,7 @@ const clientTypes: RollupOptions = { format: 'esm', file: 'dist/client/index.d.ts' }, - external, + external: typesExternal, plugins: [ dts({ respectExternal: true }), { diff --git a/src/client/index.ts b/src/client/index.ts index 157693c1..072adba3 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -1,5 +1,5 @@ // exports in this file are exposed to themes and md files via 'vitepress' -// so the user can do `import { useRoute, useSiteData } from 'vitepress'` +// so the user can do `import { useRoute, useData } from 'vitepress'` // generic types export type { VitePressData } from './app/data' diff --git a/src/client/shim.d.ts b/src/client/shim.d.ts index b53e8ab2..e12889d5 100644 --- a/src/client/shim.d.ts +++ b/src/client/shim.d.ts @@ -29,7 +29,7 @@ declare module '@localSearchIndex' { } declare module 'mark.js/src/vanilla.js' { - import type { Mark } from 'mark.js' - const mark: Mark + import type Mark from 'mark.js' + const mark: typeof Mark export default mark } diff --git a/src/node/index.ts b/src/node/index.ts index 17efe1f2..79432a9b 100644 --- a/src/node/index.ts +++ b/src/node/index.ts @@ -7,7 +7,7 @@ export * from './init/init' export * from './contentLoader' export * from './postcss' export { defineLoader, type LoaderModule } from './plugins/staticDataPlugin' -export { loadEnv } from 'vite' +export { loadEnv, type Plugin } from 'vite' // shared types export type { diff --git a/src/node/postcss/index.ts b/src/node/postcss/index.ts index 588503c0..dadd5cbd 100644 --- a/src/node/postcss/index.ts +++ b/src/node/postcss/index.ts @@ -1,8 +1,8 @@ import postcssPrefixSelector from 'postcss-prefix-selector' -type Options = Parameters[0] - -export function postcssIsolateStyles(options: Options = {}) { +export function postcssIsolateStyles( + options: Parameters[0] = {} +): ReturnType { return postcssPrefixSelector({ prefix: ':not(:where(.vp-raw, .vp-raw *))', includeFiles: [/base\.css/], diff --git a/theme.d.ts b/theme.d.ts index f11accd6..446a9d65 100644 --- a/theme.d.ts +++ b/theme.d.ts @@ -1,19 +1,10 @@ // so that users can do `import DefaultTheme from 'vitepress/theme'` + import type { DefineComponent } from 'vue' -import { EnhanceAppContext } from './dist/client/index.js' +import type { EnhanceAppContext } from './dist/client/index.js' +import type { DefaultTheme } from './types/default-theme.js' -// TODO: add props for these -export const VPImage: DefineComponent -export const VPButton: DefineComponent -export const VPHomeHero: DefineComponent -export const VPHomeFeatures: DefineComponent -export const VPHomeSponsors: DefineComponent -export const VPDocAsideSponsors: DefineComponent -export const VPSponsors: DefineComponent -export const VPTeamPage: DefineComponent -export const VPTeamPageTitle: DefineComponent -export const VPTeamPageSection: DefineComponent -export const VPTeamMembers: DefineComponent +export type { DefaultTheme } from './types/default-theme.js' declare const theme: { Layout: DefineComponent @@ -21,6 +12,17 @@ declare const theme: { } export default theme -export type { DefaultTheme } from './types/default-theme.js' +export declare const useSidebar: () => DefaultTheme.DocSidebar -export const useSidebar: () => DefaultTheme.DocSidebar +// TODO: add props for these +export declare const VPButton: DefineComponent +export declare const VPDocAsideSponsors: DefineComponent +export declare const VPHomeFeatures: DefineComponent +export declare const VPHomeHero: DefineComponent +export declare const VPHomeSponsors: DefineComponent +export declare const VPImage: DefineComponent +export declare const VPSponsors: DefineComponent +export declare const VPTeamMembers: DefineComponent +export declare const VPTeamPage: DefineComponent +export declare const VPTeamPageSection: DefineComponent +export declare const VPTeamPageTitle: DefineComponent