From b784af6dcf9384f1c31468106379549421416bf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Belli?= Date: Sat, 11 Nov 2023 18:21:19 +0100 Subject: [PATCH] fix: mikro-orm context --- .../module-core/src/utils/context-builder.ts | 19 +++++++++++++------ .../module-mikro-orm/src/types/IContext.ts | 7 +++++-- .../src/utils/context-builder.ts | 9 +++++---- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/modules/module-core/src/utils/context-builder.ts b/modules/module-core/src/utils/context-builder.ts index 5392db1e2..50f20448c 100644 --- a/modules/module-core/src/utils/context-builder.ts +++ b/modules/module-core/src/utils/context-builder.ts @@ -36,7 +36,14 @@ function getHeader( return header ?? null; } -export const context = async ( +export const context = async < + IUserOrContext extends object = User, + Ctx extends object = object, + _User_ extends User = IUserOrContext extends User ? IUserOrContext : User, + _Context_ extends object = IUserOrContext extends User + ? IContext + : IUserOrContext, +>( { req, request, @@ -51,8 +58,8 @@ export const context = async ): AccountsContextOptions extends { ctx: any } - ? Promise & Ctx> - : Promise> => { + ? Promise<_Context_ & Ctx> + : Promise<_Context_> => { const reqOrRequest = request ?? req; if (!reqOrRequest) { return { @@ -63,7 +70,7 @@ export const context = async as _Context_; } const headerName = options.headerName || 'Authorization'; @@ -81,7 +88,7 @@ export const context = async >(AccountsServer) + .get>(AccountsServer) .resumeSession(authToken); } catch (error) { // Empty catch @@ -112,5 +119,5 @@ export const context = async as _Context_; }; diff --git a/modules/module-mikro-orm/src/types/IContext.ts b/modules/module-mikro-orm/src/types/IContext.ts index 9e689c9a9..11e266ebb 100644 --- a/modules/module-mikro-orm/src/types/IContext.ts +++ b/modules/module-mikro-orm/src/types/IContext.ts @@ -1,6 +1,9 @@ -import { IContext as AccountsContext, User } from '@accounts/types'; +import { IContext as AccountsContext } from '@accounts/types'; import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +import { IUser } from '@accounts/mikro-orm'; -export interface IContext extends AccountsContext { +export interface IContext = IUser> + extends Omit { + user?: User; em?: EntityManager>; } diff --git a/modules/module-mikro-orm/src/utils/context-builder.ts b/modules/module-mikro-orm/src/utils/context-builder.ts index e9739f8e5..6f3501964 100644 --- a/modules/module-mikro-orm/src/utils/context-builder.ts +++ b/modules/module-mikro-orm/src/utils/context-builder.ts @@ -1,10 +1,11 @@ +import { IUser } from '@accounts/mikro-orm'; import { context as contextBase } from '@accounts/module-core'; -import { User } from '@accounts/types'; import { Connection, EntityManager, IDatabaseDriver } from '@mikro-orm/core'; +import { IContext } from '../types'; export const context = async < - IUser extends User = User, + User extends IUser = IUser, Ctx extends { em?: EntityManager> } = object, >( - ...args: Parameters> -): ReturnType> => contextBase(...args); + ...args: Parameters, Ctx>> +): ReturnType, Ctx>> => contextBase(...args);