diff --git a/src/index.ts b/src/index.ts index aba2503..c4e71ac 100644 --- a/src/index.ts +++ b/src/index.ts @@ -107,6 +107,8 @@ import type { ExcludeElysiaResponse } from './types' +type AnyElysia = Elysia // prettier-ignore + /** * ### Elysia Server * Main instance to create web server using Elysia @@ -1909,7 +1911,7 @@ export default class Elysia< error?: { prototype: Error } - ): Elysia { + ): AnyElysia { switch (typeof name) { case 'string': // @ts-ignore @@ -2253,7 +2255,7 @@ export default class Elysia< group< const Prefix extends string, - const NewElysia extends Elysia, + const NewElysia extends AnyElysia, const Input extends InputSchema< Extract >, @@ -2318,13 +2320,9 @@ export default class Elysia< prefix: string, schemaOrRun: | LocalHook - | (( - group: Elysia - ) => Elysia), - run?: ( - group: Elysia - ) => Elysia - ): Elysia { + | ((group: AnyElysia) => AnyElysia), + run?: (group: AnyElysia) => AnyElysia + ): AnyElysia { const instance = new Elysia({ ...(this.config || {}), prefix: '' @@ -2452,7 +2450,7 @@ export default class Elysia< const LocalSchema extends InputSchema< Extract >, - const NewElysia extends Elysia, + const NewElysia extends AnyElysia, const Schema extends MergeSchema< UnwrapRoute, Metadata['schema'] @@ -2488,7 +2486,7 @@ export default class Elysia< const LocalSchema extends InputSchema< Extract >, - const NewElysia extends Elysia, + const NewElysia extends AnyElysia, const Schema extends MergeSchema< UnwrapRoute, Metadata['schema'] @@ -2557,13 +2555,9 @@ export default class Elysia< guard( hook: | LocalHook - | (( - group: Elysia - ) => Elysia), - run?: ( - group: Elysia - ) => Elysia - ): Elysia { + | ((group: AnyElysia) => AnyElysia), + run?: (group: AnyElysia) => AnyElysia + ): AnyElysia { if (!run) { if (typeof hook === 'object') { this.applyMacro(hook) @@ -2583,7 +2577,7 @@ export default class Elysia< return this.guard({}, hook) } - const instance = new Elysia({ + const instance: AnyElysia = new Elysia({ ...this.config, prefix: '' }) @@ -2654,17 +2648,8 @@ export default class Elysia< * Inline fn */ use< - const NewElysia extends Elysia, - const Param extends Elysia< - any, - any, - any, - any, - any, - any, - any, - any - > = this + const NewElysia extends AnyElysia, + const Param extends AnyElysia = this >( plugin: MaybePromise<(app: Param) => MaybePromise> ): NewElysia['_scoped'] extends false @@ -2697,7 +2682,7 @@ export default class Elysia< /** * Entire Instance **/ - use>( + use( instance: MaybePromise ): NewElysia['_scoped'] extends false ? Elysia< @@ -2729,11 +2714,9 @@ export default class Elysia< /** * Import fn */ - use>( + use( plugin: Promise<{ - default: ( - elysia: Elysia - ) => MaybePromise + default: (elysia: AnyElysia) => MaybePromise }> ): NewElysia['_scoped'] extends false ? Elysia< @@ -2765,18 +2748,7 @@ export default class Elysia< /** * Import entire instance */ - use< - const LazyLoadElysia extends Elysia< - any, - any, - any, - any, - any, - any, - any, - any - > - >( + use( plugin: Promise<{ default: LazyLoadElysia }> @@ -2824,27 +2796,17 @@ export default class Elysia< */ use( plugin: - | MaybePromise> - // | Elysia[] + | MaybePromise | MaybePromise< - ( - app: Elysia - ) => MaybePromise< - Elysia - > + AnyElysia | ((app: AnyElysia) => MaybePromise) > | Promise<{ - default: Elysia - }> - | Promise<{ - default: ( - elysia: Elysia - ) => MaybePromise< - Elysia - > + default: + | AnyElysia + | ((app: AnyElysia) => MaybePromise) }>, options?: { scoped?: boolean } - ): Elysia { + ): AnyElysia { if (options?.scoped) return this.guard({}, (app) => app.use(plugin as any)) @@ -2884,11 +2846,7 @@ export default class Elysia< } private _use( - plugin: - | Elysia - | (( - app: Elysia - ) => MaybePromise>) + plugin: AnyElysia | ((app: AnyElysia) => MaybePromise) ) { if (typeof plugin === 'function') { const instance = plugin(this as unknown as any) as unknown as any @@ -3323,25 +3281,19 @@ export default class Elysia< } mount( - handle: - | ((request: Request) => MaybePromise) - | Elysia + handle: ((request: Request) => MaybePromise) | AnyElysia ): this mount( path: string, - handle: - | ((request: Request) => MaybePromise) - | Elysia + handle: ((request: Request) => MaybePromise) | AnyElysia ): this mount( path: | string | ((request: Request) => MaybePromise) - | Elysia, - handle?: - | ((request: Request) => MaybePromise) - | Elysia + | AnyElysia, + handle?: ((request: Request) => MaybePromise) | AnyElysia ) { if ( path instanceof Elysia ||