Skip to content

Commit

Permalink
feat: allow derive typings values reused in next derive
Browse files Browse the repository at this point in the history
  • Loading branch information
kravetsone committed Oct 7, 2024
1 parent bbe5145 commit aca2725
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 7 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "gramio",
"type": "commonjs",
"version": "0.0.50",
"version": "0.0.51",
"description": "Powerful, extensible and really type-safe Telegram Bot API framework",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
Expand Down
12 changes: 9 additions & 3 deletions src/bot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -468,21 +468,27 @@ export class Bot<
* })
* ```
*/
derive<Handler extends Hooks.Derive<Context<typeof this>>>(
derive<
Handler extends Hooks.Derive<Context<typeof this> & Derives["global"]>,
>(
handler: Handler,
): Bot<Errors, Derives & { global: Awaited<ReturnType<Handler>> }>;

derive<
Update extends UpdateName,
Handler extends Hooks.Derive<ContextType<typeof this, Update>>,
Handler extends Hooks.Derive<
ContextType<typeof this, Update> & Derives["global"] & Derives[Update]
>,
>(
updateName: MaybeArray<Update>,
handler: Handler,
): Bot<Errors, Derives & { [K in Update]: Awaited<ReturnType<Handler>> }>;

derive<
Update extends UpdateName,
Handler extends Hooks.Derive<ContextType<typeof this, Update>>,
Handler extends Hooks.Derive<
ContextType<typeof this, Update> & Derives["global"] & Derives[Update]
>,
>(updateNameOrHandler: MaybeArray<Update> | Handler, handler?: Handler) {
this.updates.composer.derive(updateNameOrHandler, handler);

Expand Down
10 changes: 7 additions & 3 deletions src/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,21 +161,25 @@ export class Plugin<
* })
* ```
*/
derive<Handler extends Hooks.Derive<Context<AnyBot>>>(
derive<Handler extends Hooks.Derive<Context<AnyBot> & Derives["global"]>>(
handler: Handler,
): Plugin<Errors, Derives & { global: Awaited<ReturnType<Handler>> }>;

derive<
Update extends UpdateName,
Handler extends Hooks.Derive<ContextType<AnyBot, Update>>,
Handler extends Hooks.Derive<
ContextType<AnyBot, Update> & Derives["global"] & Derives[Update]
>,
>(
updateName: MaybeArray<Update>,
handler: Handler,
): Plugin<Errors, Derives & { [K in Update]: Awaited<ReturnType<Handler>> }>;

derive<
Update extends UpdateName,
Handler extends Hooks.Derive<ContextType<Bot, Update>>,
Handler extends Hooks.Derive<
ContextType<Bot, Update> & Derives["global"] & Derives[Update]
>,
>(updateNameOrHandler: MaybeArray<Update> | Handler, handler?: Handler) {
this._.composer.derive(updateNameOrHandler, handler);

Expand Down

0 comments on commit aca2725

Please sign in to comment.