UNPKG

@gitbeaker/core

Version:

Core API implementation of the GitLab API

1,696 lines (1,694 loc) 196 kB
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