Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

nest-gitlab

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nest-gitlab

A gitbeaker wrapper for NestJS framework

  • 3.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-66.67%
Maintainers
1
Weekly downloads
 
Created
Source

Nest Logo

A gitbeaker wrapper for NestJS framework.

NPM Version Travis build Package License

Description

Gitlab API library module for Nest.

Installation

npm install --save nest-gitlab @gitbeaker/node

Compatibility

gitbeakernest-gitlab
node-gitlab (former gitbeaker)1.x
19.0.0 ~ 23.5.02.x
23.6.0 ~3.x

Quick Start

Import GitlabModule and configure it with the same initiating options as the gitbeaker package.

import { GitlabModule } from 'nest-gitlab';

@Module({
  imports: [
    GitlabModule.forRoot({
      // options
    }),
  ],
})
export class AppModule {}

Afterward, the gitlab instance will be ready to be injected across the entire project using the gitlab injection token.

import { Controller, Inject } from '@nestjs/common';
import { GitlabInstance } from 'nest-gitlab';

@Controller('cats')
export class CatsController {
  constructor(@Inject('gitlab') private readonly gitlab: GitlabInstance) { }
}

You could also use the InjectGitlabInstance decorator to inject gitlab instance.

import { Controller, Inject } from '@nestjs/common';
import { GitlabInstance, InjectGitlabInstance } from 'nest-gitlab';

@Controller('cats')
export class CatsController {
  constructor(@InjectGitlabInstance() private readonly gitlab: GitlabInstance) { }

  @Get('/projects')
  public async getProjects() {
    return await this.gitlab.Projects.all();
  }
}

Async Configuration

You might want to asynchronously pass your module options. In such case, use the forRootAsync() method. The option object could be returned by useFactory method:

import { Module } from '@nestjs/common';
import { GitlabModule } from 'nest-gitlab';

@Module({
  imports: [
    GitlabModule.forRootAsync({
      imports: [ConfigModule],
      useFactory: async (config: ConfigService) => {
        // return options
      },
      inject: [ConfigService],
    }),
  ],
})
export class AppModule {}

Bundle Support

gitbeaker provides bundle feature which is a export for importing and instantiating all related API's of a specific resource at once. In order to use this feature, you could use the InjectBundleRef decorator combined with forFeature method:

import { GitlabModule } from 'nest-gitlab';

@Module({
  imports: [
    GitlabModule.forRoot({
      // options
    }),
  ],
})
export class AppModule {}
import { Module } from '@nestjs/common';
import { BundleType, GitlabModule } from 'nest-gitlab';

@Module({
  imports: [
    GitlabModule.forFeature([BundleType.Projects]),
  ],
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}

BundleType could be Projects, Users, or Groups.

import { Controller, Inject } from '@nestjs/common';
import { BundleType, GitlabInstance, InjectBundleRef, ProjectsBundleRef } from 'nest-gitlab';

@Controller('cats')
export class CatsController {
  constructor(@InjectBundleRef(BundleType.Projects) private readonly pbr: ProjectsBundleRef) { }

  @Get('/projects')
  public async getProjects() {
    return await this.pbr.Projects.all();
  }
}

Multiple GitLab Instances

In some cases, your projects may require multiple GitLab instances. This can be achieved by naming the gitlab instances:

import { Module } from '@nestjs/common';
import { GitlabModule } from 'nest-gitlab';

@Module({
  imports: [
    GitlabModule.forRootAsync({
      name: 'ins1',
      imports: [ConfigModule],
      useFactory: async (config: ConfigService) => {
        // return options
      },
      inject: [ConfigService],
    }),
    GitlabModule.forRoot({
      name: 'ins2',
      // options
    }),
  ],
})
export class AppModule {}
import { Module } from '@nestjs/common';
import { BundleType, GitlabModule } from 'nest-gitlab';

@Module({
  imports: [
    GitlabModule.forFeature([BundleType.Projects], 'ins1'),
  ],
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}
import { Controller, Inject } from '@nestjs/common';
import { BundleType, GitlabInstance, InjectBundleRef, InjectGitlabInstance, ProjectsBundleRef } from 'nest-gitlab';

@Controller('cats')
export class CatsController {
  constructor(@InjectBundleRef(BundleType.Projects, 'ins1') private readonly pbr1: ProjectsBundleRef,
              @InjectGitlabInstance('ins2') private readonly gitlab2: GitlabInstance) { }
}

License

MIT

Keywords

FAQs

Package last updated on 27 Jan 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc