@agent-relay/github-primitive 4.0.9 → 4.0.40

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.
Files changed (65) hide show
  1. package/dist/actions/branches.d.ts +13 -0
  2. package/dist/actions/branches.d.ts.map +1 -0
  3. package/dist/actions/branches.js +59 -0
  4. package/dist/actions/branches.js.map +1 -0
  5. package/dist/actions/commits.d.ts +15 -0
  6. package/dist/actions/commits.d.ts.map +1 -0
  7. package/dist/actions/commits.js +71 -0
  8. package/dist/actions/commits.js.map +1 -0
  9. package/dist/actions/files.d.ts +40 -0
  10. package/dist/actions/files.d.ts.map +1 -0
  11. package/dist/actions/files.js +133 -0
  12. package/dist/actions/files.js.map +1 -0
  13. package/dist/actions/issues.d.ts +29 -0
  14. package/dist/actions/issues.d.ts.map +1 -0
  15. package/dist/actions/issues.js +120 -0
  16. package/dist/actions/issues.js.map +1 -0
  17. package/dist/actions/pulls.d.ts +40 -0
  18. package/dist/actions/pulls.d.ts.map +1 -0
  19. package/dist/actions/pulls.js +169 -0
  20. package/dist/actions/pulls.js.map +1 -0
  21. package/dist/actions/repos.d.ts +18 -0
  22. package/dist/actions/repos.d.ts.map +1 -0
  23. package/dist/actions/repos.js +70 -0
  24. package/dist/actions/repos.js.map +1 -0
  25. package/dist/actions/users.d.ts +13 -0
  26. package/dist/actions/users.d.ts.map +1 -0
  27. package/dist/actions/users.js +51 -0
  28. package/dist/actions/users.js.map +1 -0
  29. package/dist/actions/utils.d.ts +39 -0
  30. package/dist/actions/utils.d.ts.map +1 -0
  31. package/dist/actions/utils.js +173 -0
  32. package/dist/actions/utils.js.map +1 -0
  33. package/dist/adapter.d.ts +49 -0
  34. package/dist/adapter.d.ts.map +1 -0
  35. package/dist/adapter.js +493 -0
  36. package/dist/adapter.js.map +1 -0
  37. package/dist/client.d.ts +149 -0
  38. package/dist/client.d.ts.map +1 -0
  39. package/dist/client.js +254 -0
  40. package/dist/client.js.map +1 -0
  41. package/dist/cloud-runtime.d.ts +31 -0
  42. package/dist/cloud-runtime.d.ts.map +1 -0
  43. package/dist/cloud-runtime.js +202 -0
  44. package/dist/cloud-runtime.js.map +1 -0
  45. package/dist/constants.d.ts +8 -0
  46. package/dist/constants.d.ts.map +1 -0
  47. package/dist/constants.js +8 -0
  48. package/dist/constants.js.map +1 -0
  49. package/dist/index.d.ts +15 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +15 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/local-runtime.d.ts +46 -0
  54. package/dist/local-runtime.d.ts.map +1 -0
  55. package/dist/local-runtime.js +225 -0
  56. package/dist/local-runtime.js.map +1 -0
  57. package/dist/types.d.ts +513 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +50 -0
  60. package/dist/types.js.map +1 -0
  61. package/dist/workflow-step.d.ts +79 -0
  62. package/dist/workflow-step.d.ts.map +1 -0
  63. package/dist/workflow-step.js +459 -0
  64. package/dist/workflow-step.js.map +1 -0
  65. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,493 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ import { createBranch as createBranchAction, listBranches as listBranchesAction, } from './actions/branches.js';
4
+ import { createCommit as createCommitAction, listCommits as listCommitsAction } from './actions/commits.js';
5
+ import { createFile as createFileAction, deleteFile as deleteFileAction, listFiles as listFilesAction, readFile as readFileAction, updateFile as updateFileAction, } from './actions/files.js';
6
+ import { createIssue as createIssueAction, listIssues as listIssuesAction, updateIssue as updateIssueAction, } from './actions/issues.js';
7
+ import { createPR as createPRAction, getPR as getPRAction, listPRs as listPRsAction, mergePR as mergePRAction, updatePR as updatePRAction, } from './actions/pulls.js';
8
+ import { getRepo as getRepoAction, listRepos as listReposAction } from './actions/repos.js';
9
+ import { getUser as getUserAction, listOrganizations as listOrganizationsAction } from './actions/users.js';
10
+ import { nonEmpty, trimTrailingSlash } from './actions/utils.js';
11
+ import { DEFAULT_GH_PATH, DEFAULT_MAX_RETRIES, DEFAULT_NANGO_BASE_URL, DEFAULT_NANGO_PROVIDER_CONFIG_KEY, DEFAULT_RELAY_CLOUD_GITHUB_PROXY_ENDPOINT, DEFAULT_TIMEOUT, DEFAULT_USER_AGENT, } from './constants.js';
12
+ import { GitHubAction, GitHubApiError, GitHubClientInterface, } from './types.js';
13
+ const execFileAsync = promisify(execFile);
14
+ export function normalizeGitHubRuntimeConfig(config = {}) {
15
+ const env = config.env ?? process.env;
16
+ const nango = config.nango ?? {};
17
+ const relayCloud = config.relayCloud ?? {};
18
+ return {
19
+ ...config,
20
+ runtime: config.runtime ?? 'auto',
21
+ ghPath: nonEmpty(config.ghPath) ?? nonEmpty(env.GH_PATH) ?? DEFAULT_GH_PATH,
22
+ cwd: config.cwd,
23
+ env,
24
+ timeout: config.timeout ?? DEFAULT_TIMEOUT,
25
+ retryOnRateLimit: config.retryOnRateLimit ?? true,
26
+ maxRetries: config.maxRetries ?? DEFAULT_MAX_RETRIES,
27
+ userAgent: config.userAgent ?? DEFAULT_USER_AGENT,
28
+ fetch: config.fetch,
29
+ nango: {
30
+ connectionId: nonEmpty(nango.connectionId) ??
31
+ nonEmpty(env.NANGO_GITHUB_CONNECTION_ID) ??
32
+ nonEmpty(env.GITHUB_NANGO_CONNECTION_ID) ??
33
+ nonEmpty(env.NANGO_CONNECTION_ID),
34
+ providerConfigKey: nonEmpty(nango.providerConfigKey) ??
35
+ nonEmpty(env.NANGO_GITHUB_PROVIDER_CONFIG_KEY) ??
36
+ nonEmpty(env.GITHUB_NANGO_PROVIDER_CONFIG_KEY) ??
37
+ nonEmpty(env.NANGO_PROVIDER_CONFIG_KEY) ??
38
+ DEFAULT_NANGO_PROVIDER_CONFIG_KEY,
39
+ secretKey: nonEmpty(nango.secretKey) ?? nonEmpty(env.NANGO_SECRET_KEY),
40
+ baseUrl: trimTrailingSlash(nonEmpty(nango.baseUrl) ?? nonEmpty(env.NANGO_HOST)) ?? DEFAULT_NANGO_BASE_URL,
41
+ },
42
+ relayCloud: {
43
+ apiUrl: trimTrailingSlash(nonEmpty(relayCloud.apiUrl) ?? nonEmpty(env.RELAY_CLOUD_API_URL) ?? nonEmpty(env.CLOUD_API_URL)) ?? undefined,
44
+ accessToken: nonEmpty(relayCloud.accessToken) ??
45
+ nonEmpty(env.RELAY_CLOUD_API_TOKEN) ??
46
+ nonEmpty(env.CLOUD_API_ACCESS_TOKEN) ??
47
+ nonEmpty(env.WORKSPACE_TOKEN),
48
+ workspaceId: nonEmpty(relayCloud.workspaceId) ?? nonEmpty(env.WORKSPACE_ID),
49
+ workspaceToken: nonEmpty(relayCloud.workspaceToken) ?? nonEmpty(env.WORKSPACE_TOKEN),
50
+ endpoint: nonEmpty(relayCloud.endpoint) ??
51
+ nonEmpty(env.RELAY_CLOUD_GITHUB_PROXY_ENDPOINT) ??
52
+ DEFAULT_RELAY_CLOUD_GITHUB_PROXY_ENDPOINT,
53
+ },
54
+ };
55
+ }
56
+ export class GitHubRuntimeDetector {
57
+ static async detect(config = {}) {
58
+ const normalized = normalizeGitHubRuntimeConfig(config);
59
+ const [local, cloud] = await Promise.all([
60
+ this.testRuntime('local', normalized),
61
+ this.testRuntime('cloud', normalized),
62
+ ]);
63
+ const requestedRuntime = normalized.runtime;
64
+ if (requestedRuntime === 'local' || requestedRuntime === 'cloud') {
65
+ const selected = requestedRuntime === 'local' ? local : cloud;
66
+ return detectionResult({
67
+ runtime: requestedRuntime,
68
+ requestedRuntime,
69
+ source: 'config',
70
+ selected,
71
+ local,
72
+ cloud,
73
+ reason: selected.available
74
+ ? `Runtime explicitly configured as ${requestedRuntime}.`
75
+ : `Runtime explicitly configured as ${requestedRuntime}, but availability check failed: ${selected.reason}`,
76
+ });
77
+ }
78
+ if (hasNangoConfig(normalized)) {
79
+ return detectionResult({
80
+ runtime: 'cloud',
81
+ requestedRuntime,
82
+ source: 'nango',
83
+ selected: cloud,
84
+ local,
85
+ cloud,
86
+ reason: cloud.available
87
+ ? 'Using cloud runtime because Nango configuration is available.'
88
+ : `Cloud runtime selected from Nango configuration, but availability check failed: ${cloud.reason}`,
89
+ });
90
+ }
91
+ if (hasCloudEnvironment(normalized.env)) {
92
+ if (cloud.available) {
93
+ return detectionResult({
94
+ runtime: 'cloud',
95
+ requestedRuntime,
96
+ source: 'environment',
97
+ selected: cloud,
98
+ local,
99
+ cloud,
100
+ reason: 'Using cloud runtime because a cloud workspace or deployment environment was detected.',
101
+ });
102
+ }
103
+ if (local.available) {
104
+ return detectionResult({
105
+ runtime: 'local',
106
+ requestedRuntime,
107
+ source: 'gh-cli',
108
+ selected: local,
109
+ local,
110
+ cloud,
111
+ reason: 'Cloud environment was detected, but cloud credentials were unavailable; using local gh CLI.',
112
+ });
113
+ }
114
+ }
115
+ if (local.available) {
116
+ return detectionResult({
117
+ runtime: 'local',
118
+ requestedRuntime,
119
+ source: 'gh-cli',
120
+ selected: local,
121
+ local,
122
+ cloud,
123
+ reason: 'Using local runtime because gh CLI is available.',
124
+ });
125
+ }
126
+ return detectionResult({
127
+ runtime: 'cloud',
128
+ requestedRuntime,
129
+ source: 'fallback',
130
+ selected: cloud,
131
+ local,
132
+ cloud,
133
+ reason: cloud.available
134
+ ? 'Using cloud runtime because local gh CLI was unavailable.'
135
+ : 'Falling back to cloud runtime because local gh CLI was unavailable; cloud credentials may still be required.',
136
+ });
137
+ }
138
+ static async testRuntime(runtime, config = {}) {
139
+ const normalized = normalizeGitHubRuntimeConfig(config);
140
+ if (runtime === 'local') {
141
+ return testLocalRuntime(normalized);
142
+ }
143
+ return testCloudRuntime(normalized);
144
+ }
145
+ static async detectRuntime(config = {}) {
146
+ const result = await this.detect(config);
147
+ return result.runtime;
148
+ }
149
+ }
150
+ export class BaseGitHubAdapter extends GitHubClientInterface {
151
+ retryUsed = false;
152
+ constructor(config = {}) {
153
+ super(normalizeGitHubRuntimeConfig(config));
154
+ }
155
+ async executeAction(action, params) {
156
+ const startedAt = Date.now();
157
+ this.retryUsed = false;
158
+ try {
159
+ const data = (await this.dispatchAction(action, params));
160
+ return {
161
+ success: true,
162
+ output: stringifyOutput(data),
163
+ data,
164
+ metadata: {
165
+ runtime: this.getRuntime(),
166
+ executionTime: Date.now() - startedAt,
167
+ retried: this.retryUsed,
168
+ },
169
+ };
170
+ }
171
+ catch (error) {
172
+ return {
173
+ success: false,
174
+ output: '',
175
+ error: errorMessage(error),
176
+ metadata: {
177
+ runtime: this.getRuntime(),
178
+ executionTime: Date.now() - startedAt,
179
+ retried: this.retryUsed,
180
+ },
181
+ };
182
+ }
183
+ }
184
+ async listRepositories(params = {}) {
185
+ return listReposAction(this, params);
186
+ }
187
+ async getRepository(params) {
188
+ return getRepoAction(this, params.owner, params.repo);
189
+ }
190
+ async listIssues(params) {
191
+ const { owner, repo, ...options } = params;
192
+ return listIssuesAction(this, owner, repo, options);
193
+ }
194
+ async createIssue(params) {
195
+ const { owner, repo, title, body, ...options } = params;
196
+ return createIssueAction(this, owner, repo, title, body, options);
197
+ }
198
+ async updateIssue(params) {
199
+ const { owner, repo, issueNumber, ...updates } = params;
200
+ return updateIssueAction(this, owner, repo, issueNumber, updates);
201
+ }
202
+ async closeIssue(params) {
203
+ return updateIssueAction(this, params.owner, params.repo, params.issueNumber, {
204
+ state: 'closed',
205
+ });
206
+ }
207
+ async listPullRequests(params) {
208
+ const { owner, repo, ...options } = params;
209
+ return listPRsAction(this, owner, repo, options);
210
+ }
211
+ async getPullRequest(params) {
212
+ return getPRAction(this, params.owner, params.repo, params.pullNumber);
213
+ }
214
+ async createPullRequest(params) {
215
+ const { owner, repo, title, body, base, head, ...options } = params;
216
+ return createPRAction(this, owner, repo, title, body, base, head, options);
217
+ }
218
+ async updatePullRequest(params) {
219
+ const { owner, repo, pullNumber, ...updates } = params;
220
+ return updatePRAction(this, owner, repo, pullNumber, updates);
221
+ }
222
+ async mergePullRequest(params) {
223
+ const { owner, repo, pullNumber, ...options } = params;
224
+ return mergePRAction(this, owner, repo, pullNumber, options);
225
+ }
226
+ async listFiles(params) {
227
+ const { owner, repo, path, ...options } = params;
228
+ return listFilesAction(this, owner, repo, path, options);
229
+ }
230
+ async readFile(params) {
231
+ return readFileAction(this, params.owner, params.repo, params.path, params.ref);
232
+ }
233
+ async createFile(params) {
234
+ const { owner, repo, path, content, message, ...options } = params;
235
+ return createFileAction(this, owner, repo, path, content, message, options);
236
+ }
237
+ async updateFile(params) {
238
+ const { owner, repo, path, content, message, sha, ...options } = params;
239
+ return updateFileAction(this, owner, repo, path, content, message, sha, options);
240
+ }
241
+ async deleteFile(params) {
242
+ const { owner, repo, path, sha, message, ...options } = params;
243
+ return deleteFileAction(this, owner, repo, path, sha, message, options);
244
+ }
245
+ async listBranches(params) {
246
+ return listBranchesAction(this, params.owner, params.repo);
247
+ }
248
+ async createBranch(params) {
249
+ return createBranchAction(this, params);
250
+ }
251
+ async listCommits(params) {
252
+ return listCommitsAction(this, params);
253
+ }
254
+ async createCommit(params) {
255
+ return createCommitAction(this, params);
256
+ }
257
+ async getUser(params) {
258
+ return getUserAction(this, params);
259
+ }
260
+ async listOrganizations(params) {
261
+ return listOrganizationsAction(this, params);
262
+ }
263
+ async executeWithRetries(operation) {
264
+ const maxRetries = this.config.retryOnRateLimit ? this.config.maxRetries : 0;
265
+ let attempt = 0;
266
+ while (true) {
267
+ try {
268
+ return await operation();
269
+ }
270
+ catch (error) {
271
+ if (attempt >= maxRetries || !this.isRetryableError(error)) {
272
+ throw error;
273
+ }
274
+ attempt += 1;
275
+ this.retryUsed = true;
276
+ await delay(this.retryDelayMs(attempt, error));
277
+ }
278
+ }
279
+ }
280
+ isRetryableError(error) {
281
+ const status = statusFromError(error);
282
+ return status === 403 || status === 429 || (typeof status === 'number' && status >= 500);
283
+ }
284
+ retryDelayMs(attempt, error) {
285
+ const reset = resetHeaderFromError(error);
286
+ if (reset) {
287
+ const resetMs = Number(reset) * 1000;
288
+ if (Number.isFinite(resetMs) && resetMs > Date.now()) {
289
+ return Math.min(resetMs - Date.now(), 60_000);
290
+ }
291
+ }
292
+ return Math.min(500 * 2 ** (attempt - 1), 10_000);
293
+ }
294
+ async dispatchAction(action, params) {
295
+ switch (action) {
296
+ case GitHubAction.ListRepos:
297
+ return this.listRepositories(params);
298
+ case GitHubAction.GetRepo:
299
+ return this.getRepository(params);
300
+ case GitHubAction.ListIssues:
301
+ return this.listIssues(params);
302
+ case GitHubAction.CreateIssue:
303
+ return this.createIssue(params);
304
+ case GitHubAction.UpdateIssue:
305
+ return this.updateIssue(params);
306
+ case GitHubAction.CloseIssue:
307
+ return this.closeIssue(params);
308
+ case GitHubAction.ListPRs:
309
+ return this.listPullRequests(params);
310
+ case GitHubAction.GetPR:
311
+ return this.getPullRequest(params);
312
+ case GitHubAction.CreatePR:
313
+ return this.createPullRequest(params);
314
+ case GitHubAction.UpdatePR:
315
+ return this.updatePullRequest(params);
316
+ case GitHubAction.MergePR:
317
+ return this.mergePullRequest(params);
318
+ case GitHubAction.ListFiles:
319
+ return this.listFiles(params);
320
+ case GitHubAction.ReadFile:
321
+ return this.readFile(params);
322
+ case GitHubAction.CreateFile:
323
+ return this.createFile(params);
324
+ case GitHubAction.UpdateFile:
325
+ return this.updateFile(params);
326
+ case GitHubAction.DeleteFile:
327
+ return this.deleteFile(params);
328
+ case GitHubAction.CreateBranch:
329
+ return this.createBranch(params);
330
+ case GitHubAction.ListBranches:
331
+ return this.listBranches(params);
332
+ case GitHubAction.ListCommits:
333
+ return this.listCommits(params);
334
+ case GitHubAction.CreateCommit:
335
+ return this.createCommit(params);
336
+ case GitHubAction.GetUser:
337
+ return this.getUser(params);
338
+ case GitHubAction.ListOrganizations:
339
+ return this.listOrganizations(params);
340
+ default:
341
+ throw new Error(`Unsupported GitHub action: ${String(action)}`);
342
+ }
343
+ }
344
+ }
345
+ export class GitHubAdapterFactory {
346
+ static async create(config = {}) {
347
+ const detection = await GitHubRuntimeDetector.detect(config);
348
+ const runtimeConfig = {
349
+ ...config,
350
+ runtime: detection.runtime,
351
+ };
352
+ if (detection.runtime === 'local') {
353
+ const { GhCliClient } = await import('./local-runtime.js');
354
+ return new GhCliClient(runtimeConfig);
355
+ }
356
+ const { NangoClient } = await import('./cloud-runtime.js');
357
+ return new NangoClient(runtimeConfig);
358
+ }
359
+ static detect(config = {}) {
360
+ return GitHubRuntimeDetector.detect(config);
361
+ }
362
+ static detectRuntime(config = {}) {
363
+ return GitHubRuntimeDetector.detectRuntime(config);
364
+ }
365
+ static testRuntime(runtime, config = {}) {
366
+ return GitHubRuntimeDetector.testRuntime(runtime, config);
367
+ }
368
+ }
369
+ export const GitHubClientFactory = GitHubAdapterFactory;
370
+ export function detectGitHubRuntime(config = {}) {
371
+ return GitHubRuntimeDetector.detect(config);
372
+ }
373
+ export function createGitHubAdapter(config = {}) {
374
+ return GitHubAdapterFactory.create(config);
375
+ }
376
+ async function testLocalRuntime(config) {
377
+ try {
378
+ const { stdout } = await execFileAsync(config.ghPath, ['--version'], {
379
+ cwd: config.cwd,
380
+ env: config.env,
381
+ timeout: Math.min(config.timeout, 5_000),
382
+ maxBuffer: 1024 * 1024,
383
+ });
384
+ const version = String(stdout).split('\n')[0]?.trim();
385
+ return {
386
+ runtime: 'local',
387
+ available: true,
388
+ reason: version ? `gh CLI available: ${version}` : 'gh CLI available.',
389
+ details: version ? { version } : undefined,
390
+ };
391
+ }
392
+ catch (error) {
393
+ return {
394
+ runtime: 'local',
395
+ available: false,
396
+ reason: `gh CLI was not available at "${config.ghPath}".`,
397
+ error: errorMessage(error),
398
+ };
399
+ }
400
+ }
401
+ async function testCloudRuntime(config) {
402
+ if (hasNangoConfig(config)) {
403
+ return {
404
+ runtime: 'cloud',
405
+ available: true,
406
+ reason: 'Nango configuration is available.',
407
+ details: {
408
+ providerConfigKey: config.nango.providerConfigKey ?? DEFAULT_NANGO_PROVIDER_CONFIG_KEY,
409
+ hasConnectionId: Boolean(config.nango.connectionId),
410
+ },
411
+ };
412
+ }
413
+ if (hasRelayCloudConfig(config)) {
414
+ return {
415
+ runtime: 'cloud',
416
+ available: true,
417
+ reason: 'Relay cloud API configuration is available.',
418
+ details: {
419
+ endpoint: config.relayCloud.endpoint ?? DEFAULT_RELAY_CLOUD_GITHUB_PROXY_ENDPOINT,
420
+ hasWorkspaceId: Boolean(config.relayCloud.workspaceId),
421
+ },
422
+ };
423
+ }
424
+ return {
425
+ runtime: 'cloud',
426
+ available: false,
427
+ reason: 'No Nango or relay-cloud GitHub proxy configuration was found.',
428
+ };
429
+ }
430
+ function detectionResult(input) {
431
+ return {
432
+ runtime: input.runtime,
433
+ requestedRuntime: input.requestedRuntime,
434
+ source: input.source,
435
+ available: input.selected.available,
436
+ reason: input.reason,
437
+ checkedAt: new Date().toISOString(),
438
+ local: input.local,
439
+ cloud: input.cloud,
440
+ };
441
+ }
442
+ function hasNangoConfig(config) {
443
+ return Boolean(config.nango.secretKey);
444
+ }
445
+ function hasRelayCloudConfig(config) {
446
+ return Boolean(config.relayCloud.apiUrl && config.relayCloud.accessToken);
447
+ }
448
+ function hasCloudEnvironment(env) {
449
+ return Boolean(env.WORKSPACE_ID ||
450
+ env.CLOUD_API_URL ||
451
+ env.VERCEL ||
452
+ env.RAILWAY_ENVIRONMENT ||
453
+ env.FLY_APP_NAME ||
454
+ env.AWS_REGION ||
455
+ env.GOOGLE_CLOUD_PROJECT ||
456
+ env.NODE_ENV === 'production');
457
+ }
458
+ function statusFromError(error) {
459
+ if (error instanceof GitHubApiError) {
460
+ return error.status;
461
+ }
462
+ if (typeof error === 'object' && error !== null && 'status' in error) {
463
+ const status = error.status;
464
+ return typeof status === 'number' ? status : undefined;
465
+ }
466
+ return undefined;
467
+ }
468
+ function resetHeaderFromError(error) {
469
+ const headers = error instanceof GitHubApiError
470
+ ? error.responseHeaders
471
+ : typeof error === 'object' && error !== null && 'responseHeaders' in error
472
+ ? error.responseHeaders
473
+ : undefined;
474
+ return headers?.['x-ratelimit-reset'] ?? headers?.['X-RateLimit-Reset'];
475
+ }
476
+ function stringifyOutput(value) {
477
+ if (typeof value === 'string') {
478
+ return value;
479
+ }
480
+ if (typeof value === 'undefined') {
481
+ return '';
482
+ }
483
+ return JSON.stringify(value);
484
+ }
485
+ function errorMessage(error) {
486
+ return error instanceof Error ? error.message : String(error);
487
+ }
488
+ function delay(ms) {
489
+ return new Promise((resolve) => {
490
+ setTimeout(resolve, ms);
491
+ });
492
+ }
493
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}