From 487b51031f50cd905adc805a271d8354af23cfb4 Mon Sep 17 00:00:00 2001
From: Steel <mael.acier@ensiie.fr>
Date: Fri, 13 Sep 2024 15:41:11 +0200
Subject: [PATCH] Refactor Locals interface to improve type safety

---
 src/lib/types.ts | 21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

diff --git a/src/lib/types.ts b/src/lib/types.ts
index 44d55e4..275ca43 100644
--- a/src/lib/types.ts
+++ b/src/lib/types.ts
@@ -38,22 +38,15 @@ export type CookieNames = {
   oauthCodeVerifier: string;
 };
 
+type Extract<T> =
+  T extends AriseIdConnect<infer Session, infer User>
+    ? { session: Session; user: User }
+    : never;
+
 export interface Locals<
   T extends AriseIdConnect<DefaultSessionAttributes, DefaultUserAttributes>,
 > {
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  user:
-    | ((T extends AriseIdConnect<any, infer UserAttributes>
-        ? UserAttributes
-        : never) &
-        User)
-    | null;
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  session:
-    | ((T extends AriseIdConnect<infer SessionAttributes, any>
-        ? SessionAttributes
-        : never) &
-        Session)
-    | null;
+  user: (Extract<T>["user"] & User) | null;
+  session: (Extract<T>["session"] & Session) | null;
   authPaths: Paths;
 }
-- 
GitLab