fix(schema): update vite import.meta types (#19338)

This commit is contained in:
Xin Du (Clark) 2023-03-03 10:20:15 +00:00 committed by GitHub
parent 2cf5f48621
commit 654b9a21d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 109 additions and 10 deletions

View File

@ -65,7 +65,7 @@ if (process.dev) {
// Vite // Vite
if (import.meta.hot) { if (import.meta.hot) {
import.meta.hot.accept((newModule) => { import.meta.hot.accept((newModule) => {
const newConfig = newModule._getAppConfig() const newConfig = newModule?._getAppConfig()
applyHMR(newConfig) applyHMR(newConfig)
}) })
} }

View File

@ -1,35 +1,134 @@
/** /**
* Reference: https://github.com/vitejs/vite/blob/main/packages/vite/types/importMeta.d.ts * Reference: https://github.com/vitejs/vite/blob/main/packages/vite/types/importMeta.d.ts
*/ */
export type ModuleNamespace = Record<string, any> & {
[Symbol.toStringTag]: 'Module'
}
export interface ViteHot { export interface ViteHot {
readonly data: any readonly data: any
accept (): void accept (): void
accept (cb: (mod: any) => void): void accept (cb: (mod: ModuleNamespace | undefined) => void): void
accept (dep: string, cb: (mod: any) => void): void accept (dep: string, cb: (mod: ModuleNamespace | undefined) => void): void
accept (deps: readonly string[], cb: (mods: any[]) => void): void accept (deps: readonly string[], cb: (mods: Array<ModuleNamespace | undefined>) => void): void
acceptExports (exportNames: string | readonly string[], cb?: (mod: ModuleNamespace | undefined) => void): void
dispose (cb: (data: any) => void): void dispose (cb: (data: any) => void): void
decline (): void prune (cb: (data: any) => void): void
invalidate (): void invalidate (message?: string): void
on (event: any, cb: (payload: any) => void): void on (event: any, cb: (payload: any) => void): void
send (event: any, data?: any): void send (event: any, data?: any): void
} }
export interface ViteGlobOptions { export interface KnownAsTypeMap {
as?: string raw: string
eager?: boolean url: string
worker: Worker
}
export interface ImportGlobOptions<
Eager extends boolean,
AsType extends string
> {
/**
* Import type for the import url.
*/
as?: AsType
/**
* Import as static or dynamic
*
* @default false
*/
eager?: Eager
/**
* Import only the specific named export. Set to `default` to import the default export.
*/
import?: string import?: string
/**
* Custom queries
*/
query?: string | Record<string, string | number | boolean> query?: string | Record<string, string | number | boolean>
/**
* Search files also inside `node_modules/` and hidden directories (e.g. `.git/`). This might have impact on performance.
*
* @default false
*/
exhaustive?: boolean exhaustive?: boolean
} }
export interface ImportGlobFunction {
/**
* Import a list of files with a glob pattern.
*
* Overload 1: No generic provided, infer the type from `eager` and `as`
*/
<
Eager extends boolean,
As extends string,
T = As extends keyof KnownAsTypeMap ? KnownAsTypeMap[As] : unknown
>(
glob: string | string[],
options?: ImportGlobOptions<Eager, As>
): (Eager extends true
? true
: false) extends true
? Record<string, T>
: Record<string, () => Promise<T>>
/**
* Import a list of files with a glob pattern.
*
* Overload 2: Module generic provided, infer the type from `eager: false`
*/
<M>(
glob: string | string[],
options?: ImportGlobOptions<false, string>
): Record<string, () => Promise<M>>
/**
* Import a list of files with a glob pattern.
*
* Overload 3: Module generic provided, infer the type from `eager: true`
*/
<M>(
glob: string | string[],
options: ImportGlobOptions<true, string>
): Record<string, M>
}
export interface ImportGlobEagerFunction {
/**
* Eagerly import a list of files with a glob pattern.
*
* Overload 1: No generic provided, infer the type from `as`
*/
<
As extends string,
T = As extends keyof KnownAsTypeMap ? KnownAsTypeMap[As] : unknown
>(
glob: string | string[],
options?: Omit<ImportGlobOptions<boolean, As>, 'eager'>
): Record<string, T>
/**
* Eagerly import a list of files with a glob pattern.
*
* Overload 2: Module generic provided
*/
<M>(
glob: string | string[],
options?: Omit<ImportGlobOptions<boolean, string>, 'eager'>
): Record<string, M>
}
export interface ViteImportMeta { export interface ViteImportMeta {
/** Vite client HMR API - see https://vitejs.dev/guide/api-hmr.html */ /** Vite client HMR API - see https://vitejs.dev/guide/api-hmr.html */
readonly hot?: ViteHot readonly hot?: ViteHot
/** vite glob import utility - https://vitejs.dev/guide/features.html#glob-import */ /** vite glob import utility - https://vitejs.dev/guide/features.html#glob-import */
glob (glob: string | string[], options?: ViteGlobOptions): Record<string, () => Promise<Record<string, any>>> glob: ImportGlobFunction
/**
* @deprecated Use `import.meta.glob('*', { eager: true })` instead
*/
globEager: ImportGlobEagerFunction
} }