From 08ff4107b9b3c63c3cb4fafef9fde09f6ebf8f24 Mon Sep 17 00:00:00 2001
From: Jay McDoniel <jmcdo29@gmail.com>
Date: Thu, 7 Mar 2024 11:25:38 -0800
Subject: [PATCH 1/2] fix: use strict false when getting guard providers

---
 packages/or-guard/src/lib/and.guard.ts | 10 ++++++----
 packages/or-guard/src/lib/or.guard.ts  |  4 +++-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/packages/or-guard/src/lib/and.guard.ts b/packages/or-guard/src/lib/and.guard.ts
index c1cc699..3d04ae1 100644
--- a/packages/or-guard/src/lib/and.guard.ts
+++ b/packages/or-guard/src/lib/and.guard.ts
@@ -24,16 +24,18 @@ interface AndGuardOptions {
 
 export function AndGuard(
   guards: Array<Type<CanActivate> | InjectionToken>,
-  orGuardOptions?: AndGuardOptions
+  andGuardOptions?: AndGuardOptions
 ) {
   class AndMixinGuard implements CanActivate {
     private guards: CanActivate[] = [];
     constructor(@Inject(ModuleRef) private readonly modRef: ModuleRef) {}
     canActivate(context: ExecutionContext): Observable<boolean> {
-      this.guards = guards.map((guard) => this.modRef.get(guard));
+      this.guards = guards.map((guard) =>
+        this.modRef.get(guard, { strict: false })
+      );
       const canActivateReturns: Array<() => Observable<boolean>> =
         this.guards.map((guard) => () => this.deferGuard(guard, context));
-      const mapOperator = orGuardOptions?.sequential ? concatMap : mergeMap;
+      const mapOperator = andGuardOptions?.sequential ? concatMap : mergeMap;
       return from(canActivateReturns).pipe(
         mapOperator((obs) => {
           return obs().pipe(this.handleError());
@@ -61,7 +63,7 @@ export function AndGuard(
 
     private handleError(): OperatorFunction<boolean, boolean> {
       return catchError((err) => {
-        if (orGuardOptions?.throwOnFirstError) {
+        if (andGuardOptions?.throwOnFirstError) {
           return throwError(() => err);
         }
         return of(false);
diff --git a/packages/or-guard/src/lib/or.guard.ts b/packages/or-guard/src/lib/or.guard.ts
index 7f984c2..17fedf7 100644
--- a/packages/or-guard/src/lib/or.guard.ts
+++ b/packages/or-guard/src/lib/or.guard.ts
@@ -29,7 +29,9 @@ export function OrGuard(
     private guards: CanActivate[] = [];
     constructor(@Inject(ModuleRef) private readonly modRef: ModuleRef) {}
     canActivate(context: ExecutionContext): Observable<boolean> {
-      this.guards = guards.map((guard) => this.modRef.get(guard));
+      this.guards = guards.map((guard) =>
+        this.modRef.get(guard, { strict: false })
+      );
       const canActivateReturns: Array<Observable<boolean>> = this.guards.map(
         (guard) => this.deferGuard(guard, context)
       );

From 797228195b228bc3ed4975792e6ed918b9f622b0 Mon Sep 17 00:00:00 2001
From: Jay McDoniel <jmcdo29@gmail.com>
Date: Thu, 7 Mar 2024 11:26:33 -0800
Subject: [PATCH 2/2] chore: changeset for or-guard patch

---
 .changeset/polite-planes-invite.md | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 .changeset/polite-planes-invite.md

diff --git a/.changeset/polite-planes-invite.md b/.changeset/polite-planes-invite.md
new file mode 100644
index 0000000..3dd8d7f
--- /dev/null
+++ b/.changeset/polite-planes-invite.md
@@ -0,0 +1,6 @@
+---
+'@nest-lab/or-guard': patch
+---
+
+Use `{strict: false}` when calling modRef.get() to ensure guards can come from
+other modules