@gitbeaker/rest 0.0.0-canary-20260118165457

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs ADDED
@@ -0,0 +1,286 @@
1
+ import * as CORE from '@gitbeaker/core';
2
+ import { createRequesterFn, presetResourceArguments, getMatchingRateLimiter, GitbeakerTimeoutError, GitbeakerRetryError, GitbeakerRequestError } from '@gitbeaker/requester-utils';
3
+ export { GitbeakerRequestError, GitbeakerRetryError, GitbeakerTimeoutError } from '@gitbeaker/requester-utils';
4
+
5
+ // src/index.ts
6
+ async function processBody(response) {
7
+ const contentType = (response.headers.get("content-type") || "").split(";")[0].trim();
8
+ if (contentType === "application/json") {
9
+ return response.json().then((v) => v || {});
10
+ }
11
+ if (contentType.startsWith("text/")) {
12
+ return response.text().then((t) => t || "");
13
+ }
14
+ return response.blob();
15
+ }
16
+ function delay(ms) {
17
+ return new Promise((resolve) => {
18
+ setTimeout(resolve, ms);
19
+ });
20
+ }
21
+ async function parseResponse(response, asStream = false) {
22
+ const { status, headers: rawHeaders } = response;
23
+ const headers = Object.fromEntries(rawHeaders.entries());
24
+ let body;
25
+ if (asStream) {
26
+ body = response.body;
27
+ } else {
28
+ body = status === 204 ? null : await processBody(response);
29
+ }
30
+ return { body, headers, status };
31
+ }
32
+ async function throwFailedRequestError(request, response) {
33
+ const content = await response.text();
34
+ const contentType = response.headers.get("Content-Type");
35
+ let description;
36
+ if (contentType?.includes("application/json")) {
37
+ const output = JSON.parse(content);
38
+ const contentProperty = output?.error || output?.message || "";
39
+ description = typeof contentProperty === "string" ? contentProperty : JSON.stringify(contentProperty);
40
+ } else {
41
+ description = content;
42
+ }
43
+ throw new GitbeakerRequestError(description, {
44
+ cause: {
45
+ description,
46
+ request,
47
+ response
48
+ }
49
+ });
50
+ }
51
+ function getConditionalMode(endpoint) {
52
+ if (endpoint.includes("repository/archive")) return "same-origin";
53
+ return void 0;
54
+ }
55
+ async function defaultRequestHandler(endpoint, options) {
56
+ const retryCodes = [429, 502];
57
+ const maxRetries = 10;
58
+ const { rateLimiters, agent, asStream, prefixUrl, searchParams, method, ...opts } = options || {};
59
+ const rateLimit = getMatchingRateLimiter(endpoint, rateLimiters, method);
60
+ let lastStatus;
61
+ let baseUrl;
62
+ if (prefixUrl) baseUrl = prefixUrl.endsWith("/") ? prefixUrl : `${prefixUrl}/`;
63
+ const url = new URL(endpoint, baseUrl);
64
+ url.search = searchParams || "";
65
+ const mode = getConditionalMode(endpoint);
66
+ for (let i = 0; i < maxRetries; i += 1) {
67
+ const request = new Request(url, { ...opts, method, mode });
68
+ const fetchArgs = [request];
69
+ if (agent) fetchArgs.push({ dispatcher: agent });
70
+ await rateLimit();
71
+ const response = await fetch(...fetchArgs).catch((e) => {
72
+ if (e.name === "TimeoutError" || e.name === "AbortError") {
73
+ throw new GitbeakerTimeoutError("Query timeout was reached");
74
+ }
75
+ throw e;
76
+ });
77
+ if (response.ok) return parseResponse(response, asStream);
78
+ if (!retryCodes.includes(response.status)) await throwFailedRequestError(request, response);
79
+ lastStatus = response.status;
80
+ await delay(2 ** i * 250);
81
+ continue;
82
+ }
83
+ throw new GitbeakerRetryError(
84
+ `Could not successfully complete this request after ${maxRetries} retries, last status code: ${lastStatus}. ${lastStatus === 429 ? "Check the applicable rate limits for this endpoint" : "Verify the status of the endpoint"}.`
85
+ );
86
+ }
87
+ var requesterFn = createRequesterFn(
88
+ (_, reqo) => Promise.resolve(reqo),
89
+ defaultRequestHandler
90
+ );
91
+ var { AccessLevel, ...Resources } = CORE;
92
+ var API = presetResourceArguments(Resources, { requesterFn });
93
+ var { Agents } = API;
94
+ var { AlertManagement } = API;
95
+ var { ApplicationAppearance } = API;
96
+ var { ApplicationPlanLimits } = API;
97
+ var { Applications } = API;
98
+ var { ApplicationSettings } = API;
99
+ var { ApplicationStatistics } = API;
100
+ var { AuditEvents } = API;
101
+ var { Avatar } = API;
102
+ var { Branches } = API;
103
+ var { BroadcastMessages } = API;
104
+ var { CodeSuggestions } = API;
105
+ var { CommitDiscussions } = API;
106
+ var { Commits } = API;
107
+ var { Composer } = API;
108
+ var { Conan } = API;
109
+ var { ContainerRegistry } = API;
110
+ var { DashboardAnnotations } = API;
111
+ var { Debian } = API;
112
+ var { DependencyProxy } = API;
113
+ var { DeployKeys } = API;
114
+ var { DeployTokens } = API;
115
+ var { Deployments } = API;
116
+ var { DockerfileTemplates } = API;
117
+ var { Environments } = API;
118
+ var { EpicAwardEmojis } = API;
119
+ var { EpicDiscussions } = API;
120
+ var { EpicIssues } = API;
121
+ var { EpicLabelEvents } = API;
122
+ var { EpicLinks } = API;
123
+ var { EpicNotes } = API;
124
+ var { Epics } = API;
125
+ var { ErrorTrackingClientKeys } = API;
126
+ var { ErrorTrackingSettings } = API;
127
+ var { Events } = API;
128
+ var { Experiments } = API;
129
+ var { ExternalStatusChecks } = API;
130
+ var { FeatureFlags } = API;
131
+ var { FeatureFlagUserLists } = API;
132
+ var { FreezePeriods } = API;
133
+ var { GeoNodes } = API;
134
+ var { GeoSites } = API;
135
+ var { GitignoreTemplates } = API;
136
+ var { GitLabCIYMLTemplates } = API;
137
+ var { GitlabPages } = API;
138
+ var { GoProxy } = API;
139
+ var { GroupAccessRequests } = API;
140
+ var { GroupAccessTokens } = API;
141
+ var { GroupActivityAnalytics } = API;
142
+ var { GroupBadges } = API;
143
+ var { GroupCustomAttributes } = API;
144
+ var { GroupDORA4Metrics } = API;
145
+ var { GroupEpicBoards } = API;
146
+ var { GroupHooks } = API;
147
+ var { GroupImportExports } = API;
148
+ var { GroupInvitations } = API;
149
+ var { GroupIssueBoards } = API;
150
+ var { GroupIterations } = API;
151
+ var { GroupLabels } = API;
152
+ var { GroupLDAPLinks } = API;
153
+ var { GroupMarkdownUploads } = API;
154
+ var { GroupMemberRoles } = API;
155
+ var { GroupMembers } = API;
156
+ var { GroupMilestones } = API;
157
+ var { GroupProtectedEnvironments } = API;
158
+ var { GroupPushRules } = API;
159
+ var { GroupRelationExports } = API;
160
+ var { GroupReleases } = API;
161
+ var { GroupRepositoryStorageMoves } = API;
162
+ var { Groups } = API;
163
+ var { GroupSAMLIdentities } = API;
164
+ var { GroupSAMLLinks } = API;
165
+ var { GroupSCIMIdentities } = API;
166
+ var { GroupServiceAccounts } = API;
167
+ var { GroupVariables } = API;
168
+ var { GroupWikis } = API;
169
+ var { Helm } = API;
170
+ var { Import } = API;
171
+ var { InstanceLevelCICDVariables } = API;
172
+ var { Integrations } = API;
173
+ var { IssueAwardEmojis } = API;
174
+ var { IssueDiscussions } = API;
175
+ var { IssueIterationEvents } = API;
176
+ var { IssueLabelEvents } = API;
177
+ var { IssueLinks } = API;
178
+ var { IssueMilestoneEvents } = API;
179
+ var { IssueNoteAwardEmojis } = API;
180
+ var { IssueNotes } = API;
181
+ var { Issues } = API;
182
+ var { IssuesStatistics } = API;
183
+ var { IssueStateEvents } = API;
184
+ var { IssueWeightEvents } = API;
185
+ var { JobArtifacts } = API;
186
+ var { Jobs } = API;
187
+ var { Keys } = API;
188
+ var { License } = API;
189
+ var { LicenseTemplates } = API;
190
+ var { LinkedEpics } = API;
191
+ var { Lint } = API;
192
+ var { Markdown } = API;
193
+ var { Maven } = API;
194
+ var { MergeRequestApprovals } = API;
195
+ var { MergeRequestAwardEmojis } = API;
196
+ var { MergeRequestContextCommits } = API;
197
+ var { MergeRequestDiscussions } = API;
198
+ var { MergeRequestDraftNotes } = API;
199
+ var { MergeRequestLabelEvents } = API;
200
+ var { MergeRequestMilestoneEvents } = API;
201
+ var { MergeRequestNoteAwardEmojis } = API;
202
+ var { MergeRequestNotes } = API;
203
+ var { MergeRequests } = API;
204
+ var { MergeTrains } = API;
205
+ var { Metadata } = API;
206
+ var { Migrations } = API;
207
+ var { Namespaces } = API;
208
+ var { NotificationSettings } = API;
209
+ var { NPM } = API;
210
+ var { NuGet } = API;
211
+ var { PackageRegistry } = API;
212
+ var { Packages } = API;
213
+ var { PagesDomains } = API;
214
+ var { PersonalAccessTokens } = API;
215
+ var { PipelineSchedules } = API;
216
+ var { PipelineScheduleVariables } = API;
217
+ var { Pipelines } = API;
218
+ var { PipelineTriggerTokens } = API;
219
+ var { ProductAnalytics } = API;
220
+ var { ProjectAccessRequests } = API;
221
+ var { ProjectAccessTokens } = API;
222
+ var { ProjectAliases } = API;
223
+ var { ProjectBadges } = API;
224
+ var { ProjectCustomAttributes } = API;
225
+ var { ProjectDORA4Metrics } = API;
226
+ var { ProjectHooks } = API;
227
+ var { ProjectImportExports } = API;
228
+ var { ProjectInvitations } = API;
229
+ var { ProjectIssueBoards } = API;
230
+ var { ProjectIterations } = API;
231
+ var { ProjectJobTokenScopes } = API;
232
+ var { ProjectLabels } = API;
233
+ var { ProjectMarkdownUploads } = API;
234
+ var { ProjectMembers } = API;
235
+ var { ProjectMilestones } = API;
236
+ var { ProjectProtectedEnvironments } = API;
237
+ var { ProjectPushRules } = API;
238
+ var { ProjectRelationsExport } = API;
239
+ var { ProjectReleases } = API;
240
+ var { ProjectRemoteMirrors } = API;
241
+ var { ProjectRepositoryStorageMoves } = API;
242
+ var { Projects } = API;
243
+ var { ProjectSnippetAwardEmojis } = API;
244
+ var { ProjectSnippetDiscussions } = API;
245
+ var { ProjectSnippetNotes } = API;
246
+ var { ProjectSnippets } = API;
247
+ var { ProjectStatistics } = API;
248
+ var { ProjectTemplates } = API;
249
+ var { ProjectTerraformState } = API;
250
+ var { ProjectVariables } = API;
251
+ var { ProjectVulnerabilities } = API;
252
+ var { ProjectWikis } = API;
253
+ var { ProtectedBranches } = API;
254
+ var { ProtectedTags } = API;
255
+ var { PyPI } = API;
256
+ var { ReleaseLinks } = API;
257
+ var { Repositories } = API;
258
+ var { RepositoryFiles } = API;
259
+ var { RepositorySubmodules } = API;
260
+ var { ResourceGroups } = API;
261
+ var { RubyGems } = API;
262
+ var { Runners } = API;
263
+ var { Search } = API;
264
+ var { SearchAdmin } = API;
265
+ var { SecureFiles } = API;
266
+ var { ServiceAccounts } = API;
267
+ var { ServiceData } = API;
268
+ var { SidekiqMetrics } = API;
269
+ var { SidekiqQueues } = API;
270
+ var { SnippetRepositoryStorageMoves } = API;
271
+ var { Snippets } = API;
272
+ var { Suggestions } = API;
273
+ var { SystemHooks } = API;
274
+ var { Tags } = API;
275
+ var { TodoLists } = API;
276
+ var { Topics } = API;
277
+ var { UserCustomAttributes } = API;
278
+ var { UserEmails } = API;
279
+ var { UserGPGKeys } = API;
280
+ var { UserImpersonationTokens } = API;
281
+ var { Users } = API;
282
+ var { UserSSHKeys } = API;
283
+ var { UserStarredMetricsDashboard } = API;
284
+ var { Gitlab } = API;
285
+
286
+ export { AccessLevel, Agents, AlertManagement, ApplicationAppearance, ApplicationPlanLimits, ApplicationSettings, ApplicationStatistics, Applications, AuditEvents, Avatar, Branches, BroadcastMessages, CodeSuggestions, CommitDiscussions, Commits, Composer, Conan, ContainerRegistry, DashboardAnnotations, Debian, DependencyProxy, DeployKeys, DeployTokens, Deployments, DockerfileTemplates, Environments, EpicAwardEmojis, EpicDiscussions, EpicIssues, EpicLabelEvents, EpicLinks, EpicNotes, Epics, ErrorTrackingClientKeys, ErrorTrackingSettings, Events, Experiments, ExternalStatusChecks, FeatureFlagUserLists, FeatureFlags, FreezePeriods, GeoNodes, GeoSites, GitLabCIYMLTemplates, GitignoreTemplates, Gitlab, GitlabPages, GoProxy, GroupAccessRequests, GroupAccessTokens, GroupActivityAnalytics, GroupBadges, GroupCustomAttributes, GroupDORA4Metrics, GroupEpicBoards, GroupHooks, GroupImportExports, GroupInvitations, GroupIssueBoards, GroupIterations, GroupLDAPLinks, GroupLabels, GroupMarkdownUploads, GroupMemberRoles, GroupMembers, GroupMilestones, GroupProtectedEnvironments, GroupPushRules, GroupRelationExports, GroupReleases, GroupRepositoryStorageMoves, GroupSAMLIdentities, GroupSAMLLinks, GroupSCIMIdentities, GroupServiceAccounts, GroupVariables, GroupWikis, Groups, Helm, Import, InstanceLevelCICDVariables, Integrations, IssueAwardEmojis, IssueDiscussions, IssueIterationEvents, IssueLabelEvents, IssueLinks, IssueMilestoneEvents, IssueNoteAwardEmojis, IssueNotes, IssueStateEvents, IssueWeightEvents, Issues, IssuesStatistics, JobArtifacts, Jobs, Keys, License, LicenseTemplates, LinkedEpics, Lint, Markdown, Maven, MergeRequestApprovals, MergeRequestAwardEmojis, MergeRequestContextCommits, MergeRequestDiscussions, MergeRequestDraftNotes, MergeRequestLabelEvents, MergeRequestMilestoneEvents, MergeRequestNoteAwardEmojis, MergeRequestNotes, MergeRequests, MergeTrains, Metadata, Migrations, NPM, Namespaces, NotificationSettings, NuGet, PackageRegistry, Packages, PagesDomains, PersonalAccessTokens, PipelineScheduleVariables, PipelineSchedules, PipelineTriggerTokens, Pipelines, ProductAnalytics, ProjectAccessRequests, ProjectAccessTokens, ProjectAliases, ProjectBadges, ProjectCustomAttributes, ProjectDORA4Metrics, ProjectHooks, ProjectImportExports, ProjectInvitations, ProjectIssueBoards, ProjectIterations, ProjectJobTokenScopes, ProjectLabels, ProjectMarkdownUploads, ProjectMembers, ProjectMilestones, ProjectProtectedEnvironments, ProjectPushRules, ProjectRelationsExport, ProjectReleases, ProjectRemoteMirrors, ProjectRepositoryStorageMoves, ProjectSnippetAwardEmojis, ProjectSnippetDiscussions, ProjectSnippetNotes, ProjectSnippets, ProjectStatistics, ProjectTemplates, ProjectTerraformState, ProjectVariables, ProjectVulnerabilities, ProjectWikis, Projects, ProtectedBranches, ProtectedTags, PyPI, ReleaseLinks, Repositories, RepositoryFiles, RepositorySubmodules, ResourceGroups, RubyGems, Runners, Search, SearchAdmin, SecureFiles, ServiceAccounts, ServiceData, SidekiqMetrics, SidekiqQueues, SnippetRepositoryStorageMoves, Snippets, Suggestions, SystemHooks, Tags, TodoLists, Topics, UserCustomAttributes, UserEmails, UserGPGKeys, UserImpersonationTokens, UserSSHKeys, UserStarredMetricsDashboard, Users };
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@gitbeaker/rest",
3
+ "version": "0.0.0-canary-20260118165457",
4
+ "description": "Cross Platform implementation of the GitLab API",
5
+ "license": "MIT",
6
+ "engines": {
7
+ "node": ">=18.20.0"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/jdalrymple/gitbeaker",
12
+ "directory": "packages/rest"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/jdalrymple/gitbeaker/issues"
16
+ },
17
+ "homepage": "https://github.com/jdalrymple/gitbeaker#readme",
18
+ "author": {
19
+ "name": "Justin Dalrymple"
20
+ },
21
+ "keywords": [
22
+ "gitlab",
23
+ "api",
24
+ "rest",
25
+ "browser",
26
+ "gitbeaker"
27
+ ],
28
+ "types": "./dist/index.d.ts",
29
+ "exports": {
30
+ ".": {
31
+ "import": {
32
+ "types": "./dist/index.d.mts",
33
+ "default": "./dist/index.mjs"
34
+ },
35
+ "require": {
36
+ "types": "./dist/index.d.ts",
37
+ "default": "./dist/index.js"
38
+ }
39
+ }
40
+ },
41
+ "files": [
42
+ "dist"
43
+ ],
44
+ "scripts": {
45
+ "build": "tsup src/index.ts --format esm,cjs --dts --treeshake",
46
+ "test:types": "tsc",
47
+ "test:e2e:browser": "playwright test --project=e2e",
48
+ "test:e2e:nodejs": "jest --maxWorkers=50% test/e2e/nodejs",
49
+ "test:e2e": "yarn test:e2e:browser && yarn test:e2e:nodejs",
50
+ "test:integration:browser": "playwright test --project=integration",
51
+ "test:integration": "yarn test:integration:browser",
52
+ "test:unit": "jest --maxWorkers=50% test/unit",
53
+ "lint": "eslint '**/{src,test,scripts}/**/*.ts'",
54
+ "lint:fix": "yarn lint --fix"
55
+ },
56
+ "dependencies": {
57
+ "@gitbeaker/core": "0.0.0-canary-20260118165457",
58
+ "@gitbeaker/requester-utils": "0.0.0-canary-20260118165457"
59
+ },
60
+ "devDependencies": {
61
+ "@playwright/test": "^1.56.1",
62
+ "@types/node": "^24.10.1",
63
+ "tsup": "^8.5.1",
64
+ "typescript": "^5.9.3"
65
+ }
66
+ }