@gitbeaker/core
Version:
Core API implementation of the GitLab API
1,696 lines (1,694 loc) • 196 kB
JavaScript
import { BaseResource } from '@gitbeaker/requester-utils';
import { camelizeKeys, decamelizeKeys } from 'xcase';
import QS, { parse } from 'qs';
// src/resources/Agents.ts
function appendFormFromObject(object) {
const form = new FormData();
Object.entries(object).forEach(([k, v]) => {
if (v == null) return;
if (Array.isArray(v)) form.append(k, v[0], v[1]);
else form.append(k, v);
});
return form;
}
var RawPathSegment = class {
value;
constructor(value) {
this.value = value;
}
toString() {
return this.value;
}
};
function endpoint(strings, ...values) {
return values.reduce((result, value, index) => {
const encodedValue = value instanceof RawPathSegment ? value.value : encodeURIComponent(String(value));
return result + encodedValue + strings[index + 1];
}, strings[0]);
}
function parseLinkHeader(linkString) {
const output = {};
const regex = /<([^>]+)>; rel="([^"]+)"/g;
let m;
while (m = regex.exec(linkString)) {
const [, v, k] = m;
output[k] = v;
}
return output;
}
function reformatObjectOptions(obj, prefixKey, decamelizeValues = false) {
const formatted = decamelizeValues ? decamelizeKeys(obj) : obj;
return QS.stringify({ [prefixKey]: formatted }, { encode: false }).split("&").reduce((acc, cur) => {
const [key, val] = cur.split(/=(.*)/);
acc[key] = val;
return acc;
}, {});
}
function packageResponse(response, showExpanded) {
return showExpanded ? {
data: response.body,
status: response.status,
headers: response.headers
} : response.body;
}
function getStream(response, showExpanded) {
return packageResponse(response, showExpanded);
}
function getSingle(camelize, response, showExpanded) {
const { status, headers } = response;
let { body } = response;
if (camelize) body = camelizeKeys(body);
return packageResponse({ body, status, headers }, showExpanded);
}
async function getManyMore(camelize, getFn, endpoint2, response, requestOptions, acc) {
const { sudo, showExpanded, maxPages, pagination, page, perPage, idAfter, orderBy, sort } = requestOptions;
if (camelize) response.body = camelizeKeys(response?.body);
const newAcc = [...acc || [], ...response.body];
const withinBounds = maxPages && perPage ? newAcc.length / +perPage < maxPages : true;
const { next = "" } = parseLinkHeader(response.headers.link);
if (!(page && (acc || []).length === 0) && next && withinBounds) {
const parsedQueryString = parse(next.split("?")[1]);
const qs = { ...camelizeKeys(parsedQueryString) };
const newOpts = {
...qs,
maxPages,
sudo,
showExpanded
};
const nextResponse = await getFn(endpoint2, {
searchParams: qs,
sudo
});
return getManyMore(camelize, getFn, endpoint2, nextResponse, newOpts, newAcc);
}
if (!showExpanded) return newAcc;
const paginationInfo = pagination === "keyset" ? {
idAfter: idAfter ? +idAfter : null,
perPage: perPage ? +perPage : null,
orderBy,
sort
} : {
total: parseInt(response.headers["x-total"], 10),
next: parseInt(response.headers["x-next-page"], 10) || null,
current: parseInt(response.headers["x-page"], 10) || 1,
previous: parseInt(response.headers["x-prev-page"], 10) || null,
perPage: parseInt(response.headers["x-per-page"], 10),
totalPages: parseInt(response.headers["x-total-pages"], 10)
};
return {
data: newAcc,
paginationInfo
};
}
function get() {
return async (service, endpoint2, options) => {
const { asStream, sudo, showExpanded, maxPages, ...searchParams } = options || {};
const signal = service.queryTimeout ? AbortSignal.timeout(service.queryTimeout) : void 0;
const response = await service.requester.get(endpoint2, {
searchParams,
sudo,
asStream,
signal
});
const camelizeResponseBody = service.camelize || false;
if (asStream) return getStream(response, showExpanded);
if (!Array.isArray(response.body))
return getSingle(
camelizeResponseBody,
response,
showExpanded
);
const reqOpts = {
sudo,
showExpanded,
maxPages,
...searchParams
};
return getManyMore(
camelizeResponseBody,
(ep, op) => service.requester.get(ep, { ...op, signal }),
endpoint2,
response,
reqOpts
);
};
}
function post() {
return async (service, endpoint2, { searchParams, isForm, sudo, showExpanded, ...options } = {}) => {
const body = isForm ? appendFormFromObject(options) : options;
const response = await service.requester.post(endpoint2, {
searchParams,
body,
sudo,
signal: service.queryTimeout ? AbortSignal.timeout(service.queryTimeout) : void 0
});
if (service.camelize) response.body = camelizeKeys(response.body);
return packageResponse(response, showExpanded);
};
}
function put() {
return async (service, endpoint2, { searchParams, isForm, sudo, showExpanded, ...options } = {}) => {
const body = isForm ? appendFormFromObject(options) : options;
const response = await service.requester.put(endpoint2, {
body,
searchParams,
sudo,
signal: service.queryTimeout ? AbortSignal.timeout(service.queryTimeout) : void 0
});
if (service.camelize) response.body = camelizeKeys(response.body);
return packageResponse(response, showExpanded);
};
}
function patch() {
return async (service, endpoint2, { searchParams, isForm, sudo, showExpanded, ...options } = {}) => {
const body = isForm ? appendFormFromObject(options) : options;
const response = await service.requester.patch(endpoint2, {
body,
searchParams,
sudo,
signal: service.queryTimeout ? AbortSignal.timeout(service.queryTimeout) : void 0
});
if (service.camelize) response.body = camelizeKeys(response.body);
return packageResponse(response, showExpanded);
};
}
function del() {
return async (service, endpoint2, { sudo, showExpanded, searchParams, ...options } = {}) => {
const response = await service.requester.delete(endpoint2, {
body: options,
searchParams,
sudo,
signal: service.queryTimeout ? AbortSignal.timeout(service.queryTimeout) : void 0
});
return packageResponse(response, showExpanded);
};
}
var RequestHelper = {
post,
put,
patch,
get,
del
};
// src/resources/Agents.ts
var Agents = class extends BaseResource {
all(projectId, options) {
return RequestHelper.get()(
this,
endpoint`projects/${projectId}/cluster_agents`,
options
);
}
allTokens(projectId, agentId, options) {
return RequestHelper.get()(
this,
endpoint`projects/${projectId}/cluster_agents/${agentId}/tokens`,
options
);
}
createToken(projectId, agentId, name, options) {
return RequestHelper.get()(
this,
endpoint`projects/${projectId}/cluster_agents/${agentId}/tokens`,
{
name,
...options
}
);
}
show(projectId, agentId, options) {
return RequestHelper.get()(
this,
endpoint`projects/${projectId}/cluster_agents/${agentId}`,
options
);
}
showToken(projectId, agentId, tokenId, options) {
return RequestHelper.get()(
this,
endpoint`projects/${projectId}/cluster_agents/${agentId}/tokens/${tokenId}`,
options
);
}
register(projectId, name, options) {
return RequestHelper.post()(
this,
endpoint`projects/${projectId}/cluster_agents`,
{
name,
...options
}
);
}
removeToken(projectId, agentId, tokenId, options) {
return RequestHelper.del()(
this,
endpoint`projects/${projectId}/cluster_agents/${agentId}/tokens/${tokenId}`,
options
);
}
unregister(projectId, agentId, options) {
return RequestHelper.del()(
this,
endpoint`projects/${projectId}/cluster_agents/${agentId}`,
options
);
}
};
var AlertManagement = class extends BaseResource {
allMetricImages(projectId, alertIId, options) {
return RequestHelper.get()(
this,
endpoint`projects/${projectId}/alert_management_alerts/${alertIId}/metric_images`,
options
);
}
editMetricImage(projectId, alertIId, imageId, options) {
return RequestHelper.put()(
this,
endpoint`projects/${projectId}/alert_management_alerts/${alertIId}/metric_images/${imageId}`,
options
);
}
removeMetricImage(projectId, alertIId, imageId, options) {
return RequestHelper.del()(
this,
endpoint`projects/${projectId}/alert_management_alerts/${alertIId}/metric_images/${imageId}`,
options
);
}
uploadMetricImage(projectId, alertIId, metricImage, options) {
return RequestHelper.post()(
this,
endpoint`projects/${projectId}/alert_management_alerts/${alertIId}/metric_images`,
{
isForm: true,
file: [metricImage.content, metricImage.filename],
...options
}
);
}
};
var ApplicationAppearance = class extends BaseResource {
show(options) {
return RequestHelper.get()(
this,
"application/appearence",
options
);
}
edit({
logo,
pwaIcon,
...options
} = {}) {
if (logo || pwaIcon) {
const opts = {
...options,
isForm: true
};
if (logo) opts.logo = [logo.content, logo.filename];
if (pwaIcon) opts.pwaIcon = [pwaIcon.content, pwaIcon.filename];
return RequestHelper.put()(this, "application/appearence", opts);
}
return RequestHelper.put()(
this,
"application/appearence",
options
);
}
};
var ApplicationPlanLimits = class extends BaseResource {
show(options) {
return RequestHelper.get()(
this,
"application/plan_limits",
options
);
}
edit(planName, options = {}) {
const {
ciPipelineSize,
ciActiveJobs,
ciActivePipelines,
ciProjectSubscriptions,
ciPipelineSchedules,
ciNeedsSizeLimit,
ciRegisteredGroupRunners,
ciRegisteredProjectRunners,
conanMaxFileSize,
genericPackagesMaxFileSize,
helmMaxFileSize,
mavenMaxFileSize,
npmMaxFileSize,
nugetMaxFileSize,
pypiMaxFileSize,
terraformModuleMaxFileSize,
storageSizeLimit,
...opts
} = options;
return RequestHelper.put()(this, "application/plan_limits", {
...opts,
searchParams: {
planName,
ciPipelineSize,
ciActiveJobs,
ciActivePipelines,
ciProjectSubscriptions,
ciPipelineSchedules,
ciNeedsSizeLimit,
ciRegisteredGroupRunners,
ciRegisteredProjectRunners,
conanMaxFileSize,
genericPackagesMaxFileSize,
helmMaxFileSize,
mavenMaxFileSize,
npmMaxFileSize,
nugetMaxFileSize,
pypiMaxFileSize,
terraformModuleMaxFileSize,
storageSizeLimit
}
});
}
};
var ApplicationSettings = class extends BaseResource {
show(options) {
return RequestHelper.get()(this, "application/settings", options);
}
edit(options) {
return RequestHelper.put()(this, "application/settings", options);
}
};
var ApplicationStatistics = class extends BaseResource {
show(options) {
return RequestHelper.get()(this, "application/statistics", options);
}
};
var Applications = class extends BaseResource {
all(options) {
return RequestHelper.get()(this, "applications", options);
}
create(name, redirectUri, scopes, options) {
return RequestHelper.post()(this, "applications", {
name,
redirectUri,
scopes,
...options
});
}
remove(applicationId, options) {
return RequestHelper.del()(this, `applications/${applicationId}`, options);
}
};
function url({
projectId,
groupId
} = {}) {
let prefix = "";
if (projectId) prefix = endpoint`projects/${projectId}/`;
else if (groupId) prefix = endpoint`groups/${groupId}/`;
return `${prefix}audit_events`;
}
var AuditEvents = class extends BaseResource {
all({
projectId,
groupId,
...options
} = {}) {
const uri = url({ projectId, groupId });
return RequestHelper.get()(
this,
uri,
options
);
}
show(auditEventId, {
projectId,
groupId,
...options
} = {}) {
const uri = url({ projectId, groupId });
return RequestHelper.get()(this, `${uri}/${auditEventId}`, options);
}
};
var Avatar = class extends BaseResource {
show(email, options) {
return RequestHelper.get()(this, "avatar", { email, ...options });
}
};
var BroadcastMessages = class extends BaseResource {
all(options) {
return RequestHelper.get()(this, "broadcast_messages", options);
}
create(options) {
return RequestHelper.post()(this, "broadcast_messages", options);
}
edit(broadcastMessageId, options) {
return RequestHelper.put()(
this,
`broadcast_messages/${broadcastMessageId}`,
options
);
}
remove(broadcastMessageId, options) {
return RequestHelper.del()(this, `broadcast_messages/${broadcastMessageId}`, options);
}
show(broadcastMessageId, options) {
return RequestHelper.get()(
this,
`broadcast_messages/${broadcastMessageId}`,
options
);
}
};
var CodeSuggestions = class extends BaseResource {
createAccessToken(options) {
return RequestHelper.post()(this, "code_suggestions/tokens", options);
}
generateCompletion(options) {
return RequestHelper.post()(
this,
"code_suggestions/completions",
options
);
}
};
var Composer = class extends BaseResource {
create(projectId, options) {
return RequestHelper.post()(
this,
endpoint`projects/${projectId}/packages/composer`,
options
);
}
download(projectId, packageName, sha, options) {
return RequestHelper.get()(
this,
endpoint`projects/${projectId}/packages/composer/archives/${packageName}`,
{
searchParams: { sha },
...options
}
);
}
showMetadata(groupId, packageName, options) {
let url12;
if (options && options.sha) {
url12 = endpoint`groups/${groupId}/-/packages/composer/${packageName}$${options.sha}`;
} else {
url12 = endpoint`groups/${groupId}/-/packages/composer/p2/${packageName}`;
}
return RequestHelper.get()(this, url12, options);
}
showPackages(groupId, sha, options) {
return RequestHelper.get()(
this,
endpoint`groups/${groupId}/-/packages/composer/p/${sha}`,
options
);
}
showBaseRepository(groupId, options) {
const clonedService = { ...this };
if (options && options.composerVersion === "2") {
clonedService.headers["User-Agent"] = "Composer/2";
}
return RequestHelper.get()(
clonedService,
endpoint`groups/${groupId}/-/packages/composer/packages`,
options
);
}
};
function url2(projectId) {
return projectId ? endpoint`projects/${projectId}/packages/conan/v1` : "packages/conan/v1";
}
var Conan = class extends BaseResource {
authenticate({
projectId,
...options
} = {}) {
return RequestHelper.get()(this, `${url2(projectId)}/users/authenticate`, options);
}
checkCredentials({
projectId,
...options
} = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(this, `${prefix}/users/check_credentials`, options);
}
downloadPackageFile(packageName, packageVersion, packageUsername, packageChannel, conanPackageReference, recipeRevision, packageRevision, filename, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/${recipeRevision}/package/${conanPackageReference}/${packageRevision}/${filename}`,
options
);
}
downloadRecipeFile(packageName, packageVersion, packageUsername, packageChannel, recipeRevision, filename, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/${recipeRevision}/export/${filename}`,
options
);
}
showPackageUploadUrls(packageName, packageVersion, packageUsername, packageChannel, conanPackageReference, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/packages/${conanPackageReference}/upload_urls`,
options
);
}
showPackageDownloadUrls(packageName, packageVersion, packageUsername, packageChannel, conanPackageReference, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/packages/${conanPackageReference}/download_urls`,
options
);
}
showPackageManifest(packageName, packageVersion, packageUsername, packageChannel, conanPackageReference, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/packages/${conanPackageReference}/digest`,
options
);
}
showPackageSnapshot(packageName, packageVersion, packageUsername, packageChannel, conanPackageReference, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/packages/${conanPackageReference}`,
options
);
}
ping({
projectId,
...options
} = {}) {
return RequestHelper.post()(this, `${url2(projectId)}/ping`, options);
}
showRecipeUploadUrls(packageName, packageVersion, packageUsername, packageChannel, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/upload_urls`,
options
);
}
showRecipeDownloadUrls(packageName, packageVersion, packageUsername, packageChannel, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/download_urls`,
options
);
}
showRecipeManifest(packageName, packageVersion, packageUsername, packageChannel, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/digest`,
options
);
}
showRecipeSnapshot(packageName, packageVersion, packageUsername, packageChannel, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}`,
options
);
}
removePackageFile(packageName, packageVersion, packageUsername, packageChannel, { projectId, ...options } = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(
this,
`${prefix}/conans/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}`,
options
);
}
search({
projectId,
...options
} = {}) {
const prefix = url2(projectId);
return RequestHelper.get()(this, `${prefix}/conans/search`, options);
}
uploadPackageFile(packageFile, packageName, packageVersion, packageUsername, packageChannel, conanPackageReference, recipeRevision, packageRevision, options) {
const prefix = url2();
return RequestHelper.get()(
this,
`${prefix}/files/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/${recipeRevision}/package/${conanPackageReference}/${packageRevision}/${packageFile.filename}`,
{
isForm: true,
...options,
file: [packageFile.content, packageFile.filename]
}
);
}
uploadRecipeFile(packageFile, packageName, packageVersion, packageUsername, packageChannel, recipeRevision, options) {
const prefix = url2();
return RequestHelper.get()(
this,
`${prefix}/files/${packageName}/${packageVersion}/${packageUsername}/${packageChannel}/${recipeRevision}/export/${packageFile.filename}`,
{
isForm: true,
...options,
file: [packageFile.content, packageFile.filename]
}
);
}
};
var DashboardAnnotations = class extends BaseResource {
create(dashboardPath, startingAt, description, {
environmentId,
clusterId,
...options
} = {}) {
let url12;
if (environmentId) url12 = endpoint`environments/${environmentId}/metrics_dashboard/annotations`;
else if (clusterId) url12 = endpoint`clusters/${clusterId}/metrics_dashboard/annotations`;
else
throw new Error(
"Missing required argument. Please supply a environmentId or a cluserId in the options parameter."
);
return RequestHelper.post()(this, url12, {
dashboardPath,
startingAt,
description,
...options
});
}
};
function url3({
projectId,
groupId
} = {}) {
if (projectId) return endpoint`/projects/${projectId}/packages/debian`;
if (groupId) return endpoint`/groups/${groupId}/-/packages/debian`;
throw new Error(
"Missing required argument. Please supply a projectId or a groupId in the options parameter"
);
}
var Debian = class extends BaseResource {
downloadBinaryFileIndex(distribution, component, architecture, {
projectId,
groupId,
...options
}) {
const prefix = url3({
projectId,
groupId
});
return RequestHelper.get()(
this,
`${prefix}/dists/${distribution}/${component}/binary-${architecture}/Packages`,
options
);
}
downloadDistributionReleaseFile(distribution, {
projectId,
groupId,
...options
}) {
const prefix = url3({
projectId,
groupId
});
return RequestHelper.get()(
this,
`${prefix}/dists/${distribution}/Release`,
options
);
}
downloadSignedDistributionReleaseFile(distribution, {
projectId,
groupId,
...options
}) {
const prefix = url3({
projectId,
groupId
});
return RequestHelper.get()(
this,
`${prefix}/dists/${distribution}/InRelease`,
options
);
}
downloadReleaseFileSignature(distribution, {
projectId,
groupId,
...options
}) {
const prefix = url3({
projectId,
groupId
});
return RequestHelper.get()(
this,
`${prefix}/dists/${distribution}/Release.gpg`,
options
);
}
downloadPackageFile(projectId, distribution, letter, packageName, packageVersion, filename, options) {
return RequestHelper.get()(
this,
endpoint`projects/${projectId}/packages/debian/pool/${distribution}/${letter}/${packageName}/${packageVersion}/${filename}`,
options
);
}
uploadPackageFile(projectId, packageFile, options) {
return RequestHelper.put()(
this,
endpoint`projects/${projectId}/packages/debian/${packageFile.filename}`,
{
isForm: true,
...options,
file: [packageFile.content, packageFile.filename]
}
);
}
};
var DependencyProxy = class extends BaseResource {
remove(groupId, options) {
return RequestHelper.post()(this, `groups/${groupId}/dependency_proxy/cache`, options);
}
};
var DeployKeys = class extends BaseResource {
all({
projectId,
userId,
...options
} = {}) {
let url12;
if (projectId) {
url12 = endpoint`projects/${projectId}/deploy_keys`;
} else if (userId) {
url12 = endpoint`users/${userId}/project_deploy_keys`;
} else {
url12 = "deploy_keys";
}
return RequestHelper.get()(this, url12, options);
}
create(projectId, title, key, options) {
return RequestHelper.post()(
this,
endpoint`projects/${projectId}/deploy_keys`,
{
title,
key,
...options
}
);
}
edit(projectId, keyId, options) {
return RequestHelper.put()(
this,
endpoint`projects/${projectId}/deploy_keys/${keyId}`,
options
);
}
enable(projectId, keyId, options) {
return RequestHelper.post()(
this,
endpoint`projects/${projectId}/deploy_keys/${keyId}/enable`,
options
);
}
remove(projectId, keyId, options) {
return RequestHelper.del()(this, endpoint`projects/${projectId}/deploy_keys/${keyId}`, options);
}
show(projectId, keyId, options) {
return RequestHelper.get()(
this,
endpoint`projects/${projectId}/deploy_keys/${keyId}`,
options
);
}
};
var DeployTokens = class extends BaseResource {
all({
projectId,
groupId,
...options
} = {}) {
let url12;
if (projectId) url12 = endpoint`projects/${projectId}/deploy_tokens`;
else if (groupId) url12 = endpoint`groups/${groupId}/deploy_tokens`;
else url12 = "deploy_tokens";
return RequestHelper.get()(this, url12, options);
}
create(name, scopes, {
projectId,
groupId,
...options
} = {}) {
let url12;
if (projectId) url12 = endpoint`projects/${projectId}/deploy_tokens`;
else if (groupId) url12 = endpoint`groups/${groupId}/deploy_tokens`;
else {
throw new Error(
"Missing required argument. Please supply a projectId or a groupId in the options parameter."
);
}
return RequestHelper.post()(this, url12, {
name,
scopes,
...options
});
}
remove(tokenId, {
projectId,
groupId,
...options
} = {}) {
let url12;
if (projectId) url12 = endpoint`projects/${projectId}/deploy_tokens/${tokenId}`;
else if (groupId) url12 = endpoint`groups/${groupId}/deploy_tokens/${tokenId}`;
else {
throw new Error(
"Missing required argument. Please supply a projectId or a groupId in the options parameter."
);
}
return RequestHelper.del()(this, url12, options);
}
show(tokenId, {
projectId,
groupId,
...options
} = {}) {
let url12;
if (projectId) url12 = endpoint`projects/${projectId}/deploy_tokens/${tokenId}`;
else if (groupId) url12 = endpoint`groups/${groupId}/deploy_tokens/${tokenId}`;
else {
throw new Error(
"Missing required argument. Please supply a projectId or a groupId in the options parameter."
);
}
return RequestHelper.get()(
this,
url12,
options
);
}
};
var ResourceAccessRequests = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/access_requests`,
options
);
}
request(resourceId, options) {
return RequestHelper.post()(
this,
endpoint`${resourceId}/access_requests`,
options
);
}
approve(resourceId, userId, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/access_requests/${userId}/approve`,
options
);
}
deny(resourceId, userId, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/access_requests/${userId}`, options);
}
};
var ResourceAccessTokens = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/access_tokens`,
options
);
}
create(resourceId, name, scopes, expiresAt, options) {
return RequestHelper.post()(
this,
endpoint`${resourceId}/access_tokens`,
{
name,
scopes,
expiresAt,
...options
}
);
}
revoke(resourceId, tokenId, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/access_tokens/${tokenId}`, options);
}
rotate(resourceId, tokenId, options) {
return RequestHelper.post()(
this,
endpoint`${resourceId}/access_tokens/${tokenId}/rotate`,
options
);
}
show(resourceId, tokenId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/access_tokens/${tokenId}`,
options
);
}
};
function url4(resourceId, resourceType2, resourceId2, awardId) {
const [rId, rId2] = [resourceId, resourceId2].map(encodeURIComponent);
const output = [rId, resourceType2, rId2];
output.push("award_emoji");
if (awardId) output.push(awardId);
return output.join("/");
}
var ResourceAwardEmojis = class extends BaseResource {
resourceType2;
constructor(resourceType1, resourceType2, options) {
super({ prefixUrl: resourceType1, ...options });
this.resourceType2 = resourceType2;
}
all(resourceId, resourceIId, options) {
return RequestHelper.get()(
this,
url4(resourceId, this.resourceType2, resourceIId),
options
);
}
award(resourceId, resourceIId, name, options) {
return RequestHelper.post()(
this,
url4(resourceId, this.resourceType2, resourceIId),
{
name,
...options
}
);
}
remove(resourceId, resourceIId, awardId, options) {
return RequestHelper.del()(
this,
url4(resourceId, this.resourceType2, resourceIId, awardId),
options
);
}
show(resourceId, resourceIId, awardId, options) {
return RequestHelper.get()(
this,
url4(resourceId, this.resourceType2, resourceIId, awardId),
options
);
}
};
function url5(resourceId, resourceType2, resourceId2, noteId, awardId) {
const [rId, rId2] = [resourceId, resourceId2].map(encodeURIComponent);
const output = [rId, resourceType2, rId2];
output.push("notes");
output.push(noteId);
output.push("award_emoji");
if (awardId) output.push(awardId);
return output.join("/");
}
var ResourceNoteAwardEmojis = class extends BaseResource {
resourceType;
constructor(resourceType, options) {
super({ prefixUrl: "projects", ...options });
this.resourceType = resourceType;
}
all(projectId, resourceIId, noteId, options) {
return RequestHelper.get()(
this,
url5(projectId, this.resourceType, resourceIId, noteId),
options
);
}
award(projectId, resourceIId, noteId, name, options) {
return RequestHelper.post()(
this,
url5(projectId, this.resourceType, resourceIId, noteId),
{
name,
...options
}
);
}
remove(projectId, resourceIId, noteId, awardId, options) {
return RequestHelper.del()(
this,
url5(projectId, this.resourceType, resourceIId, noteId, awardId),
options
);
}
show(projectId, resourceIId, noteId, awardId, options) {
return RequestHelper.get()(
this,
url5(projectId, this.resourceType, resourceIId, noteId, awardId),
options
);
}
};
var ResourceBadges = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
add(resourceId, linkUrl, imageUrl, options) {
return RequestHelper.post()(this, endpoint`${resourceId}/badges`, {
linkUrl,
imageUrl,
...options
});
}
all(resourceId, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/badges`, options);
}
edit(resourceId, badgeId, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/badges/${badgeId}`,
options
);
}
preview(resourceId, linkUrl, imageUrl, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/badges/render`, {
linkUrl,
imageUrl,
...options
});
}
remove(resourceId, badgeId, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/badges/${badgeId}`, options);
}
show(resourceId, badgeId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/badges/${badgeId}`,
options
);
}
};
var ResourceCustomAttributes = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/custom_attributes`,
options
);
}
remove(resourceId, customAttributeId, options) {
return RequestHelper.del()(
this,
endpoint`${resourceId}/custom_attributes/${customAttributeId}`,
options
);
}
set(resourceId, customAttributeId, value, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/custom_attributes/${customAttributeId}`,
{
value,
...options
}
);
}
show(resourceId, customAttributeId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/custom_attributes/${customAttributeId}`,
options
);
}
};
var ResourceDORA4Metrics = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, metric, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/dora/metrics`, {
metric,
...options
});
}
};
var ResourceDiscussions = class extends BaseResource {
resource2Type;
constructor(resourceType, resource2Type, options) {
super({ prefixUrl: resourceType, ...options });
this.resource2Type = resource2Type;
}
addNote(resourceId, resource2Id, discussionId, noteId, body, options) {
return RequestHelper.post()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/discussions/${discussionId}/notes`,
{ ...options, body, noteId }
);
}
all(resourceId, resource2Id, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/discussions`,
options
);
}
create(resourceId, resource2Id, body, {
position,
...options
} = {}) {
const opts = { ...options, body };
if (position) {
Object.assign(opts, reformatObjectOptions(position, "position", true));
opts.isForm = true;
}
return RequestHelper.post()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/discussions`,
opts
);
}
editNote(resourceId, resource2Id, discussionId, noteId, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/discussions/${discussionId}/notes/${noteId}`,
options
);
}
removeNote(resourceId, resource2Id, discussionId, noteId, options) {
return RequestHelper.del()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/discussions/${discussionId}/notes/${noteId}`,
options
);
}
show(resourceId, resource2Id, discussionId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/discussions/${discussionId}`,
options
);
}
};
var ResourceIssueBoards = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/boards`, options);
}
allLists(resourceId, boardId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/boards/${boardId}/lists`,
options
);
}
create(resourceId, name, options) {
return RequestHelper.post()(this, endpoint`${resourceId}/boards`, {
name,
...options
});
}
createList(resourceId, boardId, options) {
return RequestHelper.post()(
this,
endpoint`${resourceId}/boards/${boardId}/lists`,
options
);
}
edit(resourceId, boardId, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/boards/${boardId}`,
options
);
}
editList(resourceId, boardId, listId, position, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/boards/${boardId}/lists/${listId}`,
{
position,
...options
}
);
}
remove(resourceId, boardId, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/boards/${boardId}`, options);
}
removeList(resourceId, boardId, listId, options) {
return RequestHelper.del()(
this,
endpoint`${resourceId}/boards/${boardId}/lists/${listId}`,
options
);
}
show(resourceId, boardId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/boards/${boardId}`,
options
);
}
showList(resourceId, boardId, listId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/boards/${boardId}/lists/${listId}`,
options
);
}
};
var ResourceLabels = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/labels`, options);
}
create(resourceId, labelName, color, options) {
return RequestHelper.post()(this, endpoint`${resourceId}/labels`, {
name: labelName,
color,
...options
});
}
edit(resourceId, labelId, options) {
if (!options?.newName && !options?.color)
throw new Error(
"Missing required argument. Please supply a color or a newName in the options parameter."
);
return RequestHelper.put()(
this,
endpoint`${resourceId}/labels/${labelId}`,
options
);
}
promote(resourceId, labelId, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/labels/${labelId}/promote`,
options
);
}
remove(resourceId, labelId, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/labels/${labelId}`, options);
}
show(resourceId, labelId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/labels/${labelId}`,
options
);
}
subscribe(resourceId, labelId, options) {
return RequestHelper.post()(
this,
endpoint`${resourceId}/issues/${labelId}/subscribe`,
options
);
}
unsubscribe(resourceId, labelId, options) {
return RequestHelper.post()(
this,
endpoint`${resourceId}/issues/${labelId}/unsubscribe`,
options
);
}
};
var ResourceMarkdownUploads = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/uploads`,
options
);
}
download(resourceId, uploadIdOrSecret, filename, options) {
if (filename && typeof filename === "string") {
return RequestHelper.get()(
this,
endpoint`${resourceId}/uploads/${uploadIdOrSecret}/${filename}`,
options
);
}
return RequestHelper.get()(
this,
endpoint`${resourceId}/uploads/${uploadIdOrSecret}`,
options
);
}
remove(resourceId, uploadIdOrSecret, filename, options) {
if (filename && typeof filename === "string") {
return RequestHelper.del()(
this,
endpoint`${resourceId}/uploads/${uploadIdOrSecret}/${filename}`,
options
);
}
return RequestHelper.del()(this, endpoint`${resourceId}/uploads/${uploadIdOrSecret}`, options);
}
};
var ResourceMembers = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
add(resourceId, accessLevel, options) {
return RequestHelper.post()(this, endpoint`${resourceId}/members`, {
accessLevel,
...options
});
}
all(resourceId, {
includeInherited,
...options
} = {}) {
let url12 = endpoint`${resourceId}/members`;
if (includeInherited) url12 += "/all";
return RequestHelper.get()(this, url12, options);
}
edit(resourceId, userId, accessLevel, options) {
return RequestHelper.put()(this, endpoint`${resourceId}/members/${userId}`, {
accessLevel,
...options
});
}
show(resourceId, userId, { includeInherited, ...options } = {}) {
const [rId, uId] = [resourceId, userId].map(encodeURIComponent);
const url12 = [rId, "members"];
if (includeInherited) url12.push("all");
url12.push(uId);
return RequestHelper.get()(this, url12.join("/"), options);
}
remove(resourceId, userId, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/members/${userId}`, options);
}
};
var ResourceMilestones = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/milestones`,
options
);
}
allAssignedIssues(resourceId, milestoneId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/milestones/${milestoneId}/issues`,
options
);
}
allAssignedMergeRequests(resourceId, milestoneId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/milestones/${milestoneId}/merge_requests`,
options
);
}
allBurndownChartEvents(resourceId, milestoneId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/milestones/${milestoneId}/burndown_events`,
options
);
}
create(resourceId, title, options) {
return RequestHelper.post()(this, endpoint`${resourceId}/milestones`, {
title,
...options
});
}
edit(resourceId, milestoneId, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/milestones/${milestoneId}`,
options
);
}
remove(resourceId, milestoneId, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/milestones/${milestoneId}`, options);
}
show(resourceId, milestoneId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/milestones/${milestoneId}`,
options
);
}
};
var ResourceNotes = class extends BaseResource {
resource2Type;
constructor(resourceType, resource2Type, options) {
super({ prefixUrl: resourceType, ...options });
this.resource2Type = resource2Type;
}
all(resourceId, resource2Id, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/notes`,
options
);
}
create(resourceId, resource2Id, body, options) {
return RequestHelper.post()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/notes`,
{
body,
...options
}
);
}
edit(resourceId, resource2Id, noteId, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/notes/${noteId}`,
options
);
}
remove(resourceId, resource2Id, noteId, options) {
return RequestHelper.del()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/notes/${noteId}`,
options
);
}
show(resourceId, resource2Id, noteId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/${this.resource2Type}/${resource2Id}/notes/${noteId}`,
options
);
}
};
var ResourceTemplates = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: ["templates", resourceType].join("/"), ...options });
}
all(options) {
process.emitWarning(
'This API will be deprecated as of Gitlabs v5 API. Please make the switch to "ProjectTemplates".',
"DeprecationWarning"
);
return RequestHelper.get()(this, "", options);
}
show(key, options) {
process.emitWarning(
'This API will be deprecated as of Gitlabs v5 API. Please make the switch to "ProjectTemplates".',
"DeprecationWarning"
);
return RequestHelper.get()(this, encodeURIComponent(key), options);
}
};
var ResourceVariables = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/variables`, options);
}
create(resourceId, key, value, options) {
return RequestHelper.post()(this, endpoint`${resourceId}/variables`, {
key,
value,
...options
});
}
edit(resourceId, key, value, options) {
return RequestHelper.put()(this, endpoint`${resourceId}/variables/${key}`, {
value,
...options
});
}
show(resourceId, key, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/variables/${key}`,
options
);
}
remove(resourceId, key, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/variables/${key}`, options);
}
};
var ResourceWikis = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
all(resourceId, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/wikis`, options);
}
create(resourceId, content, title, options) {
return RequestHelper.post()(this, endpoint`${resourceId}/wikis`, {
content,
title,
...options
});
}
edit(resourceId, slug, options) {
return RequestHelper.put()(this, endpoint`${resourceId}/wikis/${slug}`, options);
}
remove(resourceId, slug, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/wikis/${slug}`, options);
}
show(resourceId, slug, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/wikis/${slug}`, options);
}
uploadAttachment(resourceId, file, options) {
return RequestHelper.post()(
this,
endpoint`${resourceId}/wikis/attachments`,
{
...options,
isForm: true,
file: [file.content, file.filename]
}
);
}
};
var ResourceHooks = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
add(resourceId, url12, options) {
return RequestHelper.post()(this, endpoint`${resourceId}/hooks`, {
url: url12,
...options
});
}
all(resourceId, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/hooks`, options);
}
edit(resourceId, hookId, url12, options) {
return RequestHelper.put()(this, endpoint`${resourceId}/hooks/${hookId}`, {
url: url12,
...options
});
}
remove(resourceId, hookId, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/hooks/${hookId}`, options);
}
show(resourceId, hookId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/hooks/${hookId}`,
options
);
}
};
var ResourcePushRules = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
create(resourceId, options) {
return RequestHelper.post()(this, endpoint`${resourceId}/push_rule`, options);
}
edit(resourceId, options) {
return RequestHelper.put()(this, endpoint`${resourceId}/push_rule`, options);
}
remove(resourceId, options) {
return RequestHelper.del()(this, endpoint`${resourceId}/push_rule`, options);
}
show(resourceId, options) {
return RequestHelper.get()(this, endpoint`${resourceId}/push_rule`, options);
}
};
var ResourceRepositoryStorageMoves = class extends BaseResource {
resourceType;
resourceTypeSingular;
constructor(resourceType, options) {
super(options);
this.resourceType = resourceType;
this.resourceTypeSingular = resourceType.substring(0, resourceType.length - 1);
}
all(options) {
const resourceId = options?.[`${this.resourceTypeSingular}Id`];
const url12 = resourceId ? endpoint`${this.resourceType}/${resourceId}/repository_storage_moves` : `${this.resourceTypeSingular}_repository_storage_moves`;
return RequestHelper.get()(this, url12, options);
}
show(repositoryStorageId, options) {
const resourceId = options?.[`${this.resourceTypeSingular}Id`];
const url12 = resourceId ? endpoint`${this.resourceType}/${resourceId}/repository_storage_moves` : `${this.resourceTypeSingular}_repository_storage_moves`;
return RequestHelper.get()(
this,
`${url12}/${repositoryStorageId}`,
options
);
}
schedule(sourceStorageName, options) {
const resourceId = options?.[`${this.resourceTypeSingular}Id`];
const url12 = resourceId ? endpoint`${this.resourceType}/${resourceId}/repository_storage_moves` : `${this.resourceTypeSingular}_repository_storage_moves`;
return RequestHelper.post()(this, url12, {
sourceStorageName,
...options
});
}
};
var ResourceInvitations = class extends BaseResource {
constructor(resourceType, options) {
super({ prefixUrl: resourceType, ...options });
}
add(resourceId, accessLevel, options) {
if (!options?.email && !options?.userId)
throw new Error(
"Missing required argument. Please supply a email or a userId in the options parameter."
);
return RequestHelper.post()(this, endpoint`${resourceId}/invitations`, {
accessLevel,
...options
});
}
all(resourceId, options) {
return RequestHelper.get()(
this,
endpoint`${resourceId}/invitations`,
options
);
}
edit(resourceId, email, options) {
return RequestHelper.put()(
this,
endpoint`${resourceId}/invitations/${email}`,
options
);
}
rem