skir 1.1.26 → 1.1.27

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,16 +57,33 @@ export async function downloadPackage(packageId, version, githubToken) {
57
57
  },
58
58
  };
59
59
  }
60
+ async function fetchWithRetry(url, headers, maxRetries = 3) {
61
+ let lastResponse;
62
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
63
+ const response = await fetch(url, { headers });
64
+ if (response.status !== 403 && response.status !== 429) {
65
+ return response;
66
+ }
67
+ lastResponse = response;
68
+ if (attempt === maxRetries) {
69
+ break;
70
+ }
71
+ const retryAfter = response.headers.get("Retry-After");
72
+ const waitMs = retryAfter
73
+ ? parseInt(retryAfter, 10) * 1000
74
+ : 1000 * 2 ** attempt;
75
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
76
+ }
77
+ return lastResponse;
78
+ }
60
79
  async function getGithubTree(repo, version, githubToken) {
61
80
  const url = `https://api.github.com/repos/${repo}/git/trees/${version}?recursive=1`;
62
- const response = await fetch(url, { headers: makeHeaders(githubToken) });
81
+ const response = await fetchWithRetry(url, makeHeaders(githubToken));
63
82
  if (!response.ok) {
64
83
  if (response.status === 404) {
65
84
  // Check if the repo exists or if it's the tag that's missing
66
85
  const repoCheckUrl = `https://api.github.com/repos/${repo}`;
67
- const repoResponse = await fetch(repoCheckUrl, {
68
- headers: makeHeaders(githubToken),
69
- });
86
+ const repoResponse = await fetchWithRetry(repoCheckUrl, makeHeaders(githubToken));
70
87
  if (repoResponse.ok) {
71
88
  // Repo exists, so the tag is missing
72
89
  return {
@@ -94,7 +111,7 @@ async function getGithubTree(repo, version, githubToken) {
94
111
  }
95
112
  async function downloadFileContent(repo, sha, githubToken) {
96
113
  const url = `https://api.github.com/repos/${repo}/git/blobs/${sha}`;
97
- const response = await fetch(url, { headers: makeHeaders(githubToken) });
114
+ const response = await fetchWithRetry(url, makeHeaders(githubToken));
98
115
  if (!response.ok) {
99
116
  throw new Error(`Failed to download file: ${response.status} ${response.statusText}`);
100
117
  }
@@ -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.1.26",
3
+ "version": "1.1.27",
4
4
  "description": "",
5
5
  "homepage": "https://skir.build/",
6
6
  "bugs": {
@@ -85,21 +85,46 @@ export async function downloadPackage(
85
85
  };
86
86
  }
87
87
 
88
+ async function fetchWithRetry(
89
+ url: string,
90
+ headers: Record<string, string>,
91
+ maxRetries = 3,
92
+ ): Promise<Response> {
93
+ let lastResponse: Response | undefined;
94
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
95
+ const response = await fetch(url, { headers });
96
+ if (response.status !== 403 && response.status !== 429) {
97
+ return response;
98
+ }
99
+ lastResponse = response;
100
+ if (attempt === maxRetries) {
101
+ break;
102
+ }
103
+ const retryAfter = response.headers.get("Retry-After");
104
+ const waitMs = retryAfter
105
+ ? parseInt(retryAfter, 10) * 1000
106
+ : 1000 * 2 ** attempt;
107
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
108
+ }
109
+ return lastResponse!;
110
+ }
111
+
88
112
  async function getGithubTree(
89
113
  repo: string,
90
114
  version: string,
91
115
  githubToken?: string,
92
116
  ): Promise<GithubTreeResult> {
93
117
  const url = `https://api.github.com/repos/${repo}/git/trees/${version}?recursive=1`;
94
- const response = await fetch(url, { headers: makeHeaders(githubToken) });
118
+ const response = await fetchWithRetry(url, makeHeaders(githubToken));
95
119
 
96
120
  if (!response.ok) {
97
121
  if (response.status === 404) {
98
122
  // Check if the repo exists or if it's the tag that's missing
99
123
  const repoCheckUrl = `https://api.github.com/repos/${repo}`;
100
- const repoResponse = await fetch(repoCheckUrl, {
101
- headers: makeHeaders(githubToken),
102
- });
124
+ const repoResponse = await fetchWithRetry(
125
+ repoCheckUrl,
126
+ makeHeaders(githubToken),
127
+ );
103
128
 
104
129
  if (repoResponse.ok) {
105
130
  // Repo exists, so the tag is missing
@@ -134,7 +159,7 @@ async function downloadFileContent(
134
159
  githubToken?: string,
135
160
  ): Promise<string> {
136
161
  const url = `https://api.github.com/repos/${repo}/git/blobs/${sha}`;
137
- const response = await fetch(url, { headers: makeHeaders(githubToken) });
162
+ const response = await fetchWithRetry(url, makeHeaders(githubToken));
138
163
 
139
164
  if (!response.ok) {
140
165
  throw new Error(