• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nestjs / nest / f7142b24-e394-4028-89c6-717e281431d1

25 Nov 2024 01:12PM UTC coverage: 90.141% (-1.8%) from 91.989%
f7142b24-e394-4028-89c6-717e281431d1

Pull #14177

circleci

web-flow
Merge pull request #14200 from nestjs/feat/allow-queue-per-handler

feat(microservices): support nats queue per handler
Pull Request #14177: release: version 11.0.0

2612 of 3236 branches covered (80.72%)

496 of 704 new or added lines in 48 files covered. (70.45%)

79 existing lines in 11 files now uncovered.

6985 of 7749 relevant lines covered (90.14%)

16.31 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

91.67
/packages/core/injector/compiler.ts
1
import {
2
  DynamicModule,
3
  ForwardReference,
4
  Type,
5
} from '@nestjs/common/interfaces';
6
import { ModuleOpaqueKeyFactory } from './opaque-key-factory/interfaces/module-opaque-key-factory.interface';
7

8
export interface ModuleFactory {
9
  type: Type<any>;
10
  token: string;
11
  dynamicMetadata?: Partial<DynamicModule>;
12
}
13

14
export class ModuleCompiler {
1✔
15
  constructor(
16
    private readonly _moduleOpaqueKeyFactory: ModuleOpaqueKeyFactory,
454✔
17
  ) {}
18

19
  get moduleOpaqueKeyFactory(): ModuleOpaqueKeyFactory {
NEW
20
    return this._moduleOpaqueKeyFactory;
×
21
  }
22

23
  public async compile(
24
    moduleClsOrDynamic:
25
      | Type
26
      | DynamicModule
27
      | ForwardReference
28
      | Promise<DynamicModule>,
29
  ): Promise<ModuleFactory> {
30
    moduleClsOrDynamic = await moduleClsOrDynamic;
63✔
31

32
    const { type, dynamicMetadata } = this.extractMetadata(moduleClsOrDynamic);
63✔
33
    const token = dynamicMetadata
63✔
34
      ? this._moduleOpaqueKeyFactory.createForDynamic(
63!
35
          type,
36
          dynamicMetadata,
37
          moduleClsOrDynamic as DynamicModule | ForwardReference,
38
        )
39
      : this._moduleOpaqueKeyFactory.createForStatic(
40
          type,
41
          moduleClsOrDynamic as Type,
42
        );
43

44
    return { type, dynamicMetadata, token };
63✔
45
  }
46

47
  public extractMetadata(
48
    moduleClsOrDynamic: Type | ForwardReference | DynamicModule,
49
  ): {
50
    type: Type;
51
    dynamicMetadata: Omit<DynamicModule, 'module'> | undefined;
52
  } {
53
    if (!this.isDynamicModule(moduleClsOrDynamic)) {
65✔
54
      return {
64✔
55
        type: (moduleClsOrDynamic as ForwardReference)?.forwardRef
56
          ? (moduleClsOrDynamic as ForwardReference).forwardRef()
64!
57
          : moduleClsOrDynamic,
58
        dynamicMetadata: undefined,
59
      };
60
    }
61
    const { module: type, ...dynamicMetadata } = moduleClsOrDynamic;
1✔
62
    return { type, dynamicMetadata };
1✔
63
  }
64

65
  public isDynamicModule(
66
    moduleClsOrDynamic: Type | DynamicModule | ForwardReference,
67
  ): moduleClsOrDynamic is DynamicModule {
68
    return !!(moduleClsOrDynamic as DynamicModule).module;
67✔
69
  }
70
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc