@venturialstd/gitlab
v0.0.14
Published
GitLab API Venturial
Downloads
1,439
Keywords
Readme
@venturialstd/gitlab
A lightweight NestJS SDK for GitLab, developed by Venturial, that allows you to interact with GitLab projects, merge requests, and repository files. Designed to be used by directly instantiating a client with custom configuration, without depending on a global module. Ideal for projects under the Venturial organization.
Features
- Retrieve open merge requests for a GitLab project.
- Fetch merge request diffs.
- Get the contents of a repository file.
- Fully compatible with NestJS HttpModule and provider injection.
- No hard dependencies on a settings module—you provide the host and token dynamically.
Installation
npm install @venturialstd/gitlab
# or
yarn add @venturialstd/gitlabBasic Usage
1. Provide settings dynamically
You can create a client anywhere in your project and pass the host and token:
import { Injectable } from "@nestjs/common";
import { GitlabClient, GitlabProjectService } from "@venturialstd/gitlab";
import { HttpService } from "@nestjs/axios";
@Injectable()
export class GitlabClientProvider {
private client: GitlabClient;
private projectService: GitlabProjectService;
constructor(private readonly httpService: HttpService) {}
private async getClient(host: string, token: string) {
if (!this.client) {
this.client = new GitlabClient(this.httpService, { host, token });
}
return this.client;
}
async getProjectService() {
if (!this.projectService)
this.projectService = new GitlabProjectService(await this.getClient());
return this.projectService;
}
}2. Using the client in your service
import { Injectable } from "@nestjs/common";
import { GitlabClientProvider } from "./gitlab-client.provider";
import { GitlabClient } from "@venturialstd/gitlab-sdk";
@Injectable()
export class HarveyGitlabService {
constructor(private readonly gitlabClientProvider: GitlabClientProvider) {}
async reviewMergeRequest(projectName: string) {
const gitlabProjectService =
await this.gitlabClientProvider.getProjectService();
const mergeRequests =
await gitlabProjectService.getMergeRequests(projectId);
return mergeRequests;
}
}API
GitlabClient | GitlabProjectService
| Method | Parameters | Description |
| ------------------------------------------------------------ | ---------------------------------------------------- | -------------------------------------------- |
| getMergeRequests(projectId: string) | projectId | Returns a list of open merge requests |
| getMergeRequestDiff(projectId: string, mrId: string) | projectId, mrId | Returns the raw diff of a merge request |
| getFile(projectId: string, filePath: string, ref?: string) | projectId, filePath, optional ref (default "main") | Returns the raw content of a repository file |
Notes
- Requires
@nestjs/axiosandrxjsas peer dependencies. - Works with both GitLab.com and self-hosted GitLab instances.
- Perfect for projects where settings are loaded dynamically or from a database.
- Developed and maintained by Venturial for their internal and client projects.
License
MIT
