skir 1.2.15 → 1.2.17

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.
@@ -57,7 +57,7 @@ export async function downloadPackage(packageId, version, githubToken) {
57
57
  },
58
58
  };
59
59
  }
60
- async function fetchWithRetry(url, headers, maxRetries = 3) {
60
+ async function fetchWithRetry(url, headers, maxRetries = 8) {
61
61
  let lastResponse;
62
62
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
63
63
  const response = await fetch(url, { headers });
@@ -68,11 +68,24 @@ async function fetchWithRetry(url, headers, maxRetries = 3) {
68
68
  if (attempt === maxRetries) {
69
69
  break;
70
70
  }
71
+ // Primary rate limit is fully exhausted: X-RateLimit-Remaining is 0 and a
72
+ // future reset time is known. Retrying within the cap won't help since the
73
+ // window won't reset for potentially hours. Fail fast with a clear error.
74
+ if (isPrimaryRateLimitExhausted(response)) {
75
+ break;
76
+ }
71
77
  const waitMs = getRetryWaitMs(response, attempt);
72
78
  await new Promise((resolve) => setTimeout(resolve, waitMs));
73
79
  }
74
80
  return lastResponse;
75
81
  }
82
+ function isPrimaryRateLimitExhausted(response) {
83
+ const remaining = parseHeaderInt(response.headers.get("X-RateLimit-Remaining"));
84
+ const resetEpochSeconds = parseHeaderInt(response.headers.get("X-RateLimit-Reset"));
85
+ return (remaining === 0 &&
86
+ resetEpochSeconds !== undefined &&
87
+ resetEpochSeconds > Date.now() / 1000);
88
+ }
76
89
  function getRetryWaitMs(response, attempt) {
77
90
  const retryAfterSeconds = parseHeaderInt(response.headers.get("Retry-After"));
78
91
  if (retryAfterSeconds !== undefined && retryAfterSeconds > 0) {
@@ -139,7 +152,7 @@ async function getGithubTree(repo, version, githubToken) {
139
152
  }
140
153
  }
141
154
  else {
142
- throw new Error(`Github API request failed: ${response.status} ${response.statusText}`);
155
+ throw await buildGithubApiError(response, githubToken);
143
156
  }
144
157
  }
145
158
  const githubTree = (await response.json());
@@ -152,7 +165,7 @@ async function downloadFileContent(repo, sha, githubToken) {
152
165
  const url = `https://api.github.com/repos/${repo}/git/blobs/${sha}`;
153
166
  const response = await fetchWithRetry(url, makeHeaders(githubToken));
154
167
  if (!response.ok) {
155
- throw new Error(`Failed to download file: ${response.status} ${response.statusText}`);
168
+ throw await buildGithubApiError(response, githubToken);
156
169
  }
157
170
  const data = (await response.json());
158
171
  // Github API returns base64 encoded content
@@ -253,4 +266,57 @@ function makeHeaders(githubToken) {
253
266
  return headers;
254
267
  }
255
268
  const MAX_RETRY_WAIT_MS = 60 * 1000;
269
+ async function buildGithubApiError(response, githubToken) {
270
+ const statusPrefix = `Github API request failed: ${response.status} ${response.statusText}`;
271
+ const githubMessage = await readGithubErrorMessage(response);
272
+ if (response.status === 401) {
273
+ return new Error(`${statusPrefix} (invalid or expired Github token).${formatGithubMessageSuffix(githubMessage)}`);
274
+ }
275
+ if (response.status === 403 || response.status === 429) {
276
+ const remaining = parseHeaderInt(response.headers.get("X-RateLimit-Remaining"));
277
+ const resetEpochSeconds = parseHeaderInt(response.headers.get("X-RateLimit-Reset"));
278
+ const resetIso = resetEpochSeconds !== undefined
279
+ ? new Date(resetEpochSeconds * 1000).toISOString()
280
+ : undefined;
281
+ const missingTokenHint = githubToken
282
+ ? ""
283
+ : " No Github token configured; CI jobs without GITHUB_TOKEN are limited to a much lower unauthenticated quota.";
284
+ const resetHint = remaining === 0 && resetIso ? ` Rate limit resets at ${resetIso}.` : "";
285
+ const secondaryRateLimitHint = remaining !== 0
286
+ ? " This may be a Github secondary rate limit; reduce parallel requests or add jitter between requests."
287
+ : "";
288
+ return new Error(`${statusPrefix} (Github rate limit exceeded).${missingTokenHint}${resetHint}${secondaryRateLimitHint}${formatGithubMessageSuffix(githubMessage)}`);
289
+ }
290
+ return new Error(`${statusPrefix}${formatGithubMessageSuffix(githubMessage)}`);
291
+ }
292
+ async function readGithubErrorMessage(response) {
293
+ let bodyText;
294
+ try {
295
+ bodyText = await response.text();
296
+ }
297
+ catch {
298
+ return undefined;
299
+ }
300
+ const trimmed = bodyText.trim();
301
+ if (trimmed.length === 0) {
302
+ return undefined;
303
+ }
304
+ try {
305
+ const parsed = JSON.parse(trimmed);
306
+ if (typeof parsed.message === "string" &&
307
+ parsed.message.trim().length > 0) {
308
+ return parsed.message.trim();
309
+ }
310
+ }
311
+ catch {
312
+ // Fall through to plain text message when the body is not JSON.
313
+ }
314
+ return trimmed;
315
+ }
316
+ function formatGithubMessageSuffix(message) {
317
+ if (!message) {
318
+ return "";
319
+ }
320
+ return ` Github response: ${message}`;
321
+ }
256
322
  //# sourceMappingURL=package_downloader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package_downloader.js","sourceRoot":"","sources":["../src/package_downloader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package_downloader.js","sourceRoot":"","sources":["../src/package_downloader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skir",
3
- "version": "1.2.15",
3
+ "version": "1.2.17",
4
4
  "description": "",
5
5
  "homepage": "https://skir.build/",
6
6
  "bugs": {
@@ -93,7 +93,7 @@ export async function downloadPackage(
93
93
  async function fetchWithRetry(
94
94
  url: string,
95
95
  headers: Record<string, string>,
96
- maxRetries = 3,
96
+ maxRetries = 8,
97
97
  ): Promise<Response> {
98
98
  let lastResponse: Response | undefined;
99
99
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
@@ -105,12 +105,32 @@ async function fetchWithRetry(
105
105
  if (attempt === maxRetries) {
106
106
  break;
107
107
  }
108
+ // Primary rate limit is fully exhausted: X-RateLimit-Remaining is 0 and a
109
+ // future reset time is known. Retrying within the cap won't help since the
110
+ // window won't reset for potentially hours. Fail fast with a clear error.
111
+ if (isPrimaryRateLimitExhausted(response)) {
112
+ break;
113
+ }
108
114
  const waitMs = getRetryWaitMs(response, attempt);
109
115
  await new Promise((resolve) => setTimeout(resolve, waitMs));
110
116
  }
111
117
  return lastResponse!;
112
118
  }
113
119
 
120
+ function isPrimaryRateLimitExhausted(response: Response): boolean {
121
+ const remaining = parseHeaderInt(
122
+ response.headers.get("X-RateLimit-Remaining"),
123
+ );
124
+ const resetEpochSeconds = parseHeaderInt(
125
+ response.headers.get("X-RateLimit-Reset"),
126
+ );
127
+ return (
128
+ remaining === 0 &&
129
+ resetEpochSeconds !== undefined &&
130
+ resetEpochSeconds > Date.now() / 1000
131
+ );
132
+ }
133
+
114
134
  function getRetryWaitMs(response: Response, attempt: number): number {
115
135
  const retryAfterSeconds = parseHeaderInt(response.headers.get("Retry-After"));
116
136
  if (retryAfterSeconds !== undefined && retryAfterSeconds > 0) {
@@ -203,9 +223,7 @@ async function getGithubTree(
203
223
  };
204
224
  }
205
225
  } else {
206
- throw new Error(
207
- `Github API request failed: ${response.status} ${response.statusText}`,
208
- );
226
+ throw await buildGithubApiError(response, githubToken);
209
227
  }
210
228
  }
211
229
 
@@ -225,9 +243,7 @@ async function downloadFileContent(
225
243
  const response = await fetchWithRetry(url, makeHeaders(githubToken));
226
244
 
227
245
  if (!response.ok) {
228
- throw new Error(
229
- `Failed to download file: ${response.status} ${response.statusText}`,
230
- );
246
+ throw await buildGithubApiError(response, githubToken);
231
247
  }
232
248
 
233
249
  const data = (await response.json()) as {
@@ -397,3 +413,87 @@ type GithubTreeResult =
397
413
  | DependencyError;
398
414
 
399
415
  const MAX_RETRY_WAIT_MS = 60 * 1000;
416
+
417
+ async function buildGithubApiError(
418
+ response: Response,
419
+ githubToken?: string,
420
+ ): Promise<Error> {
421
+ const statusPrefix = `Github API request failed: ${response.status} ${response.statusText}`;
422
+ const githubMessage = await readGithubErrorMessage(response);
423
+
424
+ if (response.status === 401) {
425
+ return new Error(
426
+ `${statusPrefix} (invalid or expired Github token).${formatGithubMessageSuffix(githubMessage)}`,
427
+ );
428
+ }
429
+
430
+ if (response.status === 403 || response.status === 429) {
431
+ const remaining = parseHeaderInt(
432
+ response.headers.get("X-RateLimit-Remaining"),
433
+ );
434
+ const resetEpochSeconds = parseHeaderInt(
435
+ response.headers.get("X-RateLimit-Reset"),
436
+ );
437
+ const resetIso =
438
+ resetEpochSeconds !== undefined
439
+ ? new Date(resetEpochSeconds * 1000).toISOString()
440
+ : undefined;
441
+
442
+ const missingTokenHint = githubToken
443
+ ? ""
444
+ : " No Github token configured; CI jobs without GITHUB_TOKEN are limited to a much lower unauthenticated quota.";
445
+
446
+ const resetHint =
447
+ remaining === 0 && resetIso ? ` Rate limit resets at ${resetIso}.` : "";
448
+
449
+ const secondaryRateLimitHint =
450
+ remaining !== 0
451
+ ? " This may be a Github secondary rate limit; reduce parallel requests or add jitter between requests."
452
+ : "";
453
+
454
+ return new Error(
455
+ `${statusPrefix} (Github rate limit exceeded).${missingTokenHint}${resetHint}${secondaryRateLimitHint}${formatGithubMessageSuffix(githubMessage)}`,
456
+ );
457
+ }
458
+
459
+ return new Error(
460
+ `${statusPrefix}${formatGithubMessageSuffix(githubMessage)}`,
461
+ );
462
+ }
463
+
464
+ async function readGithubErrorMessage(
465
+ response: Response,
466
+ ): Promise<string | undefined> {
467
+ let bodyText: string;
468
+ try {
469
+ bodyText = await response.text();
470
+ } catch {
471
+ return undefined;
472
+ }
473
+
474
+ const trimmed = bodyText.trim();
475
+ if (trimmed.length === 0) {
476
+ return undefined;
477
+ }
478
+
479
+ try {
480
+ const parsed = JSON.parse(trimmed) as { message?: unknown };
481
+ if (
482
+ typeof parsed.message === "string" &&
483
+ parsed.message.trim().length > 0
484
+ ) {
485
+ return parsed.message.trim();
486
+ }
487
+ } catch {
488
+ // Fall through to plain text message when the body is not JSON.
489
+ }
490
+
491
+ return trimmed;
492
+ }
493
+
494
+ function formatGithubMessageSuffix(message: string | undefined): string {
495
+ if (!message) {
496
+ return "";
497
+ }
498
+ return ` Github response: ${message}`;
499
+ }