MCPcopy
hub / github.com/nestjs/nest / GuardsContextCreator

Class GuardsContextCreator

packages/core/guards/guards-context-creator.ts:12–121  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10import { InstanceWrapper } from '../injector/instance-wrapper';
11
12export class GuardsContextCreator extends ContextCreator {
13 private moduleContext: string;
14
15 constructor(
16 private readonly container: NestContainer,
17 private readonly config?: ApplicationConfig,
18 ) {
19 super();
20 }
21
22 public create(
23 instance: Controller,
24 callback: (...args: unknown[]) => unknown,
25 module: string,
26 contextId = STATIC_CONTEXT,
27 inquirerId?: string,
28 ): CanActivate[] {
29 this.moduleContext = module;
30 return this.createContext(
31 instance,
32 callback,
33 GUARDS_METADATA,
34 contextId,
35 inquirerId,
36 );
37 }
38
39 public createConcreteContext<T extends unknown[], R extends unknown[]>(
40 metadata: T,
41 contextId = STATIC_CONTEXT,
42 inquirerId?: string,
43 ): R {
44 if (isEmpty(metadata)) {
45 return [] as unknown[] as R;
46 }
47 return iterate(metadata)
48 .filter((guard: any) => guard && (guard.name || guard.canActivate))
49 .map(guard =>
50 this.getGuardInstance(guard as Function, contextId, inquirerId),
51 )
52 .filter(
53 (guard: CanActivate | null) => !!guard && isFunction(guard.canActivate),
54 )
55 .toArray() as R;
56 }
57
58 public getGuardInstance(
59 metatype: Function | CanActivate,
60 contextId = STATIC_CONTEXT,
61 inquirerId?: string,
62 ): CanActivate | null {
63 const isObject = !!(metatype as CanActivate).canActivate;
64 if (isObject) {
65 return metatype as CanActivate;
66 }
67 const instanceWrapper = this.getInstanceByMetatype(
68 metatype as Type<unknown>,
69 );

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected