UNPKG

15.7 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5var core = require('@gitbeaker/core');
6var requesterUtils = require('@gitbeaker/requester-utils');
7var Got = require('got');
8var xcase = require('xcase');
9var delay = require('delay');
10
11function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
13var Got__default = /*#__PURE__*/_interopDefaultLegacy(Got);
14var delay__default = /*#__PURE__*/_interopDefaultLegacy(delay);
15
16/*! *****************************************************************************
17Copyright (c) Microsoft Corporation.
18
19Permission to use, copy, modify, and/or distribute this software for any
20purpose with or without fee is hereby granted.
21
22THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
23REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
24AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
25INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
26LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
27OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
28PERFORMANCE OF THIS SOFTWARE.
29***************************************************************************** */
30
31var __assign = function() {
32 __assign = Object.assign || function __assign(t) {
33 for (var s, i = 1, n = arguments.length; i < n; i++) {
34 s = arguments[i];
35 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
36 }
37 return t;
38 };
39 return __assign.apply(this, arguments);
40};
41
42function __awaiter(thisArg, _arguments, P, generator) {
43 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
44 return new (P || (P = Promise))(function (resolve, reject) {
45 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
46 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
47 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
48 step((generator = generator.apply(thisArg, _arguments || [])).next());
49 });
50}
51
52function __generator(thisArg, body) {
53 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
54 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
55 function verb(n) { return function (v) { return step([n, v]); }; }
56 function step(op) {
57 if (f) throw new TypeError("Generator is already executing.");
58 while (_) try {
59 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
60 if (y = 0, t) op = [op[0] & 2, t.value];
61 switch (op[0]) {
62 case 0: case 1: t = op; break;
63 case 4: _.label++; return { value: op[1], done: false };
64 case 5: _.label++; y = op[1]; op = [0]; continue;
65 case 7: op = _.ops.pop(); _.trys.pop(); continue;
66 default:
67 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
68 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
69 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
70 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
71 if (t[2]) _.ops.pop();
72 _.trys.pop(); continue;
73 }
74 op = body.call(thisArg, _);
75 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
76 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
77 }
78}
79
80function defaultOptionsHandler(resourceOptions, _a) {
81 var _b = _a === void 0 ? {} : _a, body = _b.body, query = _b.query, sudo = _b.sudo, method = _b.method;
82 var options = requesterUtils.defaultOptionsHandler(resourceOptions, { body: body, query: query, sudo: sudo, method: method });
83 // FIXME: Not the best comparison, but...it will have to do for now.
84 if (typeof body === 'object' && body.constructor.name !== 'FormData') {
85 options.json = xcase.decamelizeKeys(body);
86 delete options.body;
87 }
88 if (resourceOptions.url.includes('https') &&
89 resourceOptions.rejectUnauthorized != null &&
90 resourceOptions.rejectUnauthorized === false) {
91 options.https = {
92 rejectUnauthorized: resourceOptions.rejectUnauthorized,
93 };
94 }
95 return options;
96}
97function processBody(_a) {
98 var rawBody = _a.rawBody, headers = _a.headers;
99 // Split to remove potential charset info from the content type
100 var contentType = (headers['content-type'] || '').split(';')[0].trim();
101 if (contentType === 'application/json') {
102 return rawBody.length === 0 ? {} : JSON.parse(rawBody.toString());
103 }
104 if (contentType.startsWith('text/')) {
105 return rawBody.toString();
106 }
107 return Buffer.from(rawBody);
108}
109function handler(endpoint, options) {
110 return __awaiter(this, void 0, void 0, function () {
111 var retryCodes, maxRetries, response, i, waitTime, e_1, output, statusCode, headers, body;
112 return __generator(this, function (_a) {
113 switch (_a.label) {
114 case 0:
115 retryCodes = [429, 502];
116 maxRetries = 10;
117 i = 0;
118 _a.label = 1;
119 case 1:
120 if (!(i < maxRetries)) return [3 /*break*/, 9];
121 waitTime = Math.pow(2, i) * 0.1;
122 _a.label = 2;
123 case 2:
124 _a.trys.push([2, 4, , 8]);
125 if (options.method === 'stream') {
126 return [2 /*return*/, Got__default['default'](endpoint, __assign(__assign({}, options), { method: 'get', isStream: true }))];
127 }
128 return [4 /*yield*/, Got__default['default'](endpoint, options)];
129 case 3:
130 response = _a.sent(); // eslint-disable-line
131 return [3 /*break*/, 9];
132 case 4:
133 e_1 = _a.sent();
134 if (!e_1.response) return [3 /*break*/, 7];
135 if (!retryCodes.includes(e_1.response.statusCode)) return [3 /*break*/, 6];
136 return [4 /*yield*/, delay__default['default'](waitTime)];
137 case 5:
138 _a.sent(); // eslint-disable-line
139 return [3 /*break*/, 8]; // eslint-disable-line
140 case 6:
141 if (typeof e_1.response.body === 'string' && e_1.response.body.length > 0) {
142 try {
143 output = JSON.parse(e_1.response.body);
144 e_1.description = output.error || output.message;
145 }
146 catch (err) {
147 e_1.description = e_1.response.body;
148 }
149 }
150 _a.label = 7;
151 case 7: throw e_1;
152 case 8:
153 i += 1;
154 return [3 /*break*/, 1];
155 case 9:
156 statusCode = response.statusCode, headers = response.headers;
157 body = processBody(response);
158 return [2 /*return*/, { body: body, headers: headers, status: statusCode }];
159 }
160 });
161 });
162}
163var requesterFn = requesterUtils.createRequesterFn(defaultOptionsHandler, handler);
164
165var API = requesterUtils.presetResourceArguments(core.Resources, { requesterFn: requesterFn });
166var // Groups
167Groups = API.Groups, GroupAccessRequests = API.GroupAccessRequests, GroupBadges = API.GroupBadges, GroupCustomAttributes = API.GroupCustomAttributes, GroupIssueBoards = API.GroupIssueBoards, GroupMembers = API.GroupMembers, GroupMilestones = API.GroupMilestones, GroupRunners = API.GroupRunners, GroupVariables = API.GroupVariables, GroupLabels = API.GroupLabels, GroupDeployTokens = API.GroupDeployTokens, Epics = API.Epics, EpicIssues = API.EpicIssues, EpicNotes = API.EpicNotes, EpicDiscussions = API.EpicDiscussions,
168// Users
169Users = API.Users, UserCustomAttributes = API.UserCustomAttributes, UserEmails = API.UserEmails, UserImpersonationTokens = API.UserImpersonationTokens, UserSSHKeys = API.UserSSHKeys, UserGPGKeys = API.UserGPGKeys,
170// Projects
171Branches = API.Branches, Commits = API.Commits, CommitDiscussions = API.CommitDiscussions, ContainerRegistry = API.ContainerRegistry, Deployments = API.Deployments, DeployKeys = API.DeployKeys, Environments = API.Environments, FreezePeriods = API.FreezePeriods, Issues = API.Issues, IssuesStatistics = API.IssuesStatistics, IssueNotes = API.IssueNotes, IssueNoteAwardEmojis = API.IssueNoteAwardEmojis, IssueDiscussions = API.IssueDiscussions, IssueAwardEmojis = API.IssueAwardEmojis, Jobs = API.Jobs, Labels = API.Labels, MergeRequests = API.MergeRequests, MergeRequestApprovals = API.MergeRequestApprovals, MergeRequestAwardEmojis = API.MergeRequestAwardEmojis, MergeRequestDiscussions = API.MergeRequestDiscussions, MergeRequestNotes = API.MergeRequestNotes, Packages = API.Packages, PackageRegistry = API.PackageRegistry, Pipelines = API.Pipelines, PipelineSchedules = API.PipelineSchedules, PipelineScheduleVariables = API.PipelineScheduleVariables, Projects = API.Projects, ProjectAccessRequests = API.ProjectAccessRequests, ProjectBadges = API.ProjectBadges, ProjectCustomAttributes = API.ProjectCustomAttributes, ProjectImportExport = API.ProjectImportExport, ProjectIssueBoards = API.ProjectIssueBoards, ProjectHooks = API.ProjectHooks, ProjectMembers = API.ProjectMembers, ProjectMilestones = API.ProjectMilestones, ProjectSnippets = API.ProjectSnippets, ProjectSnippetNotes = API.ProjectSnippetNotes, ProjectSnippetDiscussions = API.ProjectSnippetDiscussions, ProjectSnippetAwardEmojis = API.ProjectSnippetAwardEmojis, ProtectedBranches = API.ProtectedBranches, ProtectedTags = API.ProtectedTags, ProjectVariables = API.ProjectVariables, ProjectDeployTokens = API.ProjectDeployTokens, PushRules = API.PushRules, Releases = API.Releases, ReleaseLinks = API.ReleaseLinks, Repositories = API.Repositories, RepositoryFiles = API.RepositoryFiles, RepositorySubmodules = API.RepositorySubmodules, Runners = API.Runners, Services = API.Services, Tags = API.Tags, Todos = API.Todos, Triggers = API.Triggers, VulnerabilityFindings = API.VulnerabilityFindings,
172// Genral
173ApplicationSettings = API.ApplicationSettings, BroadcastMessages = API.BroadcastMessages, Events = API.Events, FeatureFlags = API.FeatureFlags, GeoNodes = API.GeoNodes, GitignoreTemplates = API.GitignoreTemplates, GitLabCIYMLTemplates = API.GitLabCIYMLTemplates, Keys = API.Keys, License = API.License, LicenseTemplates = API.LicenseTemplates, Lint = API.Lint, Namespaces = API.Namespaces, NotificationSettings = API.NotificationSettings, Markdown = API.Markdown, PagesDomains = API.PagesDomains, Search = API.Search, SidekiqMetrics = API.SidekiqMetrics, Snippets = API.Snippets, SystemHooks = API.SystemHooks, Version = API.Version, Wikis = API.Wikis, Gitlab = API.Gitlab;
174
175Object.defineProperty(exports, 'Types', {
176 enumerable: true,
177 get: function () {
178 return core.Types;
179 }
180});
181exports.ApplicationSettings = ApplicationSettings;
182exports.Branches = Branches;
183exports.BroadcastMessages = BroadcastMessages;
184exports.CommitDiscussions = CommitDiscussions;
185exports.Commits = Commits;
186exports.ContainerRegistry = ContainerRegistry;
187exports.DeployKeys = DeployKeys;
188exports.Deployments = Deployments;
189exports.Environments = Environments;
190exports.EpicDiscussions = EpicDiscussions;
191exports.EpicIssues = EpicIssues;
192exports.EpicNotes = EpicNotes;
193exports.Epics = Epics;
194exports.Events = Events;
195exports.FeatureFlags = FeatureFlags;
196exports.FreezePeriods = FreezePeriods;
197exports.GeoNodes = GeoNodes;
198exports.GitLabCIYMLTemplates = GitLabCIYMLTemplates;
199exports.GitignoreTemplates = GitignoreTemplates;
200exports.Gitlab = Gitlab;
201exports.GroupAccessRequests = GroupAccessRequests;
202exports.GroupBadges = GroupBadges;
203exports.GroupCustomAttributes = GroupCustomAttributes;
204exports.GroupDeployTokens = GroupDeployTokens;
205exports.GroupIssueBoards = GroupIssueBoards;
206exports.GroupLabels = GroupLabels;
207exports.GroupMembers = GroupMembers;
208exports.GroupMilestones = GroupMilestones;
209exports.GroupRunners = GroupRunners;
210exports.GroupVariables = GroupVariables;
211exports.Groups = Groups;
212exports.IssueAwardEmojis = IssueAwardEmojis;
213exports.IssueDiscussions = IssueDiscussions;
214exports.IssueNoteAwardEmojis = IssueNoteAwardEmojis;
215exports.IssueNotes = IssueNotes;
216exports.Issues = Issues;
217exports.IssuesStatistics = IssuesStatistics;
218exports.Jobs = Jobs;
219exports.Keys = Keys;
220exports.Labels = Labels;
221exports.License = License;
222exports.LicenseTemplates = LicenseTemplates;
223exports.Lint = Lint;
224exports.Markdown = Markdown;
225exports.MergeRequestApprovals = MergeRequestApprovals;
226exports.MergeRequestAwardEmojis = MergeRequestAwardEmojis;
227exports.MergeRequestDiscussions = MergeRequestDiscussions;
228exports.MergeRequestNotes = MergeRequestNotes;
229exports.MergeRequests = MergeRequests;
230exports.Namespaces = Namespaces;
231exports.NotificationSettings = NotificationSettings;
232exports.PackageRegistry = PackageRegistry;
233exports.Packages = Packages;
234exports.PagesDomains = PagesDomains;
235exports.PipelineScheduleVariables = PipelineScheduleVariables;
236exports.PipelineSchedules = PipelineSchedules;
237exports.Pipelines = Pipelines;
238exports.ProjectAccessRequests = ProjectAccessRequests;
239exports.ProjectBadges = ProjectBadges;
240exports.ProjectCustomAttributes = ProjectCustomAttributes;
241exports.ProjectDeployTokens = ProjectDeployTokens;
242exports.ProjectHooks = ProjectHooks;
243exports.ProjectImportExport = ProjectImportExport;
244exports.ProjectIssueBoards = ProjectIssueBoards;
245exports.ProjectMembers = ProjectMembers;
246exports.ProjectMilestones = ProjectMilestones;
247exports.ProjectSnippetAwardEmojis = ProjectSnippetAwardEmojis;
248exports.ProjectSnippetDiscussions = ProjectSnippetDiscussions;
249exports.ProjectSnippetNotes = ProjectSnippetNotes;
250exports.ProjectSnippets = ProjectSnippets;
251exports.ProjectVariables = ProjectVariables;
252exports.Projects = Projects;
253exports.ProtectedBranches = ProtectedBranches;
254exports.ProtectedTags = ProtectedTags;
255exports.PushRules = PushRules;
256exports.ReleaseLinks = ReleaseLinks;
257exports.Releases = Releases;
258exports.Repositories = Repositories;
259exports.RepositoryFiles = RepositoryFiles;
260exports.RepositorySubmodules = RepositorySubmodules;
261exports.Runners = Runners;
262exports.Search = Search;
263exports.Services = Services;
264exports.SidekiqMetrics = SidekiqMetrics;
265exports.Snippets = Snippets;
266exports.SystemHooks = SystemHooks;
267exports.Tags = Tags;
268exports.Todos = Todos;
269exports.Triggers = Triggers;
270exports.UserCustomAttributes = UserCustomAttributes;
271exports.UserEmails = UserEmails;
272exports.UserGPGKeys = UserGPGKeys;
273exports.UserImpersonationTokens = UserImpersonationTokens;
274exports.UserSSHKeys = UserSSHKeys;
275exports.Users = Users;
276exports.Version = Version;
277exports.VulnerabilityFindings = VulnerabilityFindings;
278exports.Wikis = Wikis;
279//# sourceMappingURL=index.js.map