Urara-Blog/node_modules/.pnpm-store/v3/files/5e/68c74946dcfa2a0f026e8e78cc26bbf53a79fd88be2c1f03b87e551e052ebf2d622bfa32251c56f322381ad51aa7d201826fd8f9365e64d52f089f77e8d4fd
2022-08-14 01:14:53 +08:00

87 lines
2.1 KiB
Text

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
/**
* Custom queries
*/
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
}
export type GeneralImportGlobOptions = ImportGlobOptions<boolean, string>
export interface KnownAsTypeMap {
raw: string
url: string
worker: Worker
}
export interface ImportGlobFunction {
/**
* 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>>
/**
* 2. Module generic provided, infer the type from `eager: false`
*/
<M>(
glob: string | string[],
options?: ImportGlobOptions<false, string>
): Record<string, () => Promise<M>>
/**
* 3. Module generic provided, infer the type from `eager: true`
*/
<M>(
glob: string | string[],
options: ImportGlobOptions<true, string>
): Record<string, M>
}
export interface ImportGlobEagerFunction {
/**
* 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>
/**
* 2. Module generic provided
*/
<M>(
glob: string | string[],
options?: Omit<ImportGlobOptions<boolean, string>, 'eager'>
): Record<string, M>
}