nj-request-scope
TypeScript icon, indicating that this package has built-in type declarations

1.0.8 • Public • Published

nj-request-scope

Performant request scope dependency injection for NestJS framework using express server

Description

nj-request-scope library solves NestJs request-scope dependency injection problems:

This solution is based on the build-in javascript Proxy design pattern. For every request, only the proxy's target object is changed to the new request-scope instance instead of creating all injection chain objects.

Installation

npm install nj-request-scope

nj-request-scope was tested with NestJs 8.x & 9.x

Usage

To use nj-request-scope in NestJS module you have to add import of RequestScopeModule in the module class decorator:

import { RequestScopeModule } from 'nj-request-scope';

@Module({
    imports: [RequestScopeModule],
})

Next, there are two ways of using nj-request-scope.

  1. Inject express request object into class constructor with NJRS_REQUEST token:
import { NJRS_REQUEST } from 'nj-request-scope';
[...]
constructor(@Inject(NJRS_REQUEST) private readonly request: Request) {}
  1. Change class inject scope to request-scope with @RequestScope() decorator:
import { RequestScope } from 'nj-request-scope';

@Injectable()
@RequestScope()
export class RequestScopeService {

Limitations

Proxy handler implements only most common methods:

  • get
  • has
  • set
  • getPrototypeOf
  • getOwnPropertyDescriptor
  • ownKeys

If you need other methods implemented please feel free to contribute. ProxyHandler implementation

Example project

https://github.com/kugacz/nj-request-scope-example

License

nj-request-scope is MIT licensed.

Readme

Keywords

Package Sidebar

Install

npm i nj-request-scope

Weekly Downloads

2,321

Version

1.0.8

License

MIT

Unpacked Size

16.3 kB

Total Files

21

Last publish

Collaborators

  • kugacz