Skip to content

Commit

Permalink
chore: fix type
Browse files Browse the repository at this point in the history
  • Loading branch information
mengdaoshizhongxinyang committed Jul 19, 2024
1 parent 5fc77dc commit fb40478
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
8 changes: 5 additions & 3 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,12 @@ function tarball(opts: ViteTarballPluginOptions = {}): Plugin {
}

function compression(): Plugin
function compression<A extends Algorithm>(opts: Pretty<ViteCompressionPluginConfigAlgorithm<A>>): Plugin
function compression<T extends UserCompressionOptions = NonNullable<unknown>>(
opts: Pretty<ViteCompressionPluginConfigFunction<T>>
function compression<T extends UserCompressionOptions | undefined, A extends Algorithm | AlgorithmFunction<T> | AlgorithmFunction<undefined>>(
opts: A extends Algorithm
? Pretty<ViteCompressionPluginConfigAlgorithm<A>>
: ViteCompressionPluginConfigFunction<T, AlgorithmFunction<T>>
): Plugin
function compression<T extends UserCompressionOptions>(opts: ViteCompressionPluginConfigFunction<T, AlgorithmFunction<T>>): Plugin
function compression(opts: ViteWithoutCompressionPluginConfigFunction): Plugin
function compression<T extends UserCompressionOptions, A extends Algorithm>(
opts: ViteCompressionPluginConfig<T, A> = {}
Expand Down
19 changes: 12 additions & 7 deletions src/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@ export type CompressionOptions<T> = InferDefault<T>

export type Pretty<T> =
& {
[key in keyof T]: T[key] extends (...args: any[]) => any ? (...args: Parameters<T[key]>) => ReturnType<T[key]>
: T[key] & NonNullable<unknown>
[key in keyof T]: T[key]
}
& NonNullable<unknown>

Expand All @@ -36,8 +35,8 @@ interface AlgorithmToZlib {

export type AlgorithmFunction<T extends UserCompressionOptions> = (buf: InputType, options: T) => Promise<Buffer>

type InternalCompressionPluginOptionsFunction<T> = {
algorithm?: AlgorithmFunction<T>
type InternalCompressionPluginOptionsFunction<T, A extends AlgorithmFunction<T>> = {
algorithm?: A
compressionOptions: T
}
type InternalWithoutCompressionPluginOptionsFunction = {
Expand All @@ -48,9 +47,9 @@ type InternalCompressionPluginOptionsAlgorithm<A extends Algorithm> = {
compressionOptions?: Pretty<AlgorithmToZlib[A]>
}

export type ViteCompressionPluginConfigFunction<T extends UserCompressionOptions> =
export type ViteCompressionPluginConfigFunction<T extends UserCompressionOptions, A extends AlgorithmFunction<T>> =
& BaseCompressionPluginOptions
& InternalCompressionPluginOptionsFunction<T>
& InternalCompressionPluginOptionsFunction<T, A>
export type ViteWithoutCompressionPluginConfigFunction = Pretty<
& BaseCompressionPluginOptions
& InternalWithoutCompressionPluginOptionsFunction
Expand All @@ -59,9 +58,15 @@ export type ViteCompressionPluginConfigAlgorithm<A extends Algorithm> =
& BaseCompressionPluginOptions
& InternalCompressionPluginOptionsAlgorithm<A>
export type ViteCompressionPluginConfig<T, A extends Algorithm> =
| ViteCompressionPluginConfigFunction<T>
| ViteCompressionPluginConfigFunction<T, AlgorithmFunction<T>>
| ViteCompressionPluginConfigAlgorithm<A>

export type ViteCompressionPluginOption<A extends Algorithm | UserCompressionOptions | undefined = undefined> = A extends undefined
? Pretty<ViteWithoutCompressionPluginConfigFunction>
: A extends Algorithm ? Pretty<ViteCompressionPluginConfigAlgorithm<A>>
: A extends UserCompressionOptions ? Pretty<ViteCompressionPluginConfigFunction<A, AlgorithmFunction<A>>>
: never

export type GenerateBundle = HookHandler<Plugin['generateBundle']>

export interface ViteTarballPluginOptions {
Expand Down

0 comments on commit fb40478

Please sign in to comment.