@ereo/auth 0.1.29 → 0.1.31

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.
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAmC,MAAM,YAAY,CAAC;AAMnG,6CAA6C;AAC7C,MAAM,WAAW,IAAI;IACnB,cAAc;IACd,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,uBAAuB;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAwB;AACxB,MAAM,WAAW,OAAO;IACtB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,yBAAyB;IACzB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,4BAA4B;AAC5B,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;IAC9B,kCAAkC;IAClC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACtE,wDAAwD;IACxD,mBAAmB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACjE,kDAAkD;IAClD,cAAc,CAAC,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;CACrG;AAED,4BAA4B;AAC5B,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1D,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gCAAgC;AAChC,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,kCAAkC;IAClC,SAAS,CAAC,EAAE;QACV,qCAAqC;QACrC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QACpE,iCAAiC;QACjC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QACrE,gCAAgC;QAChC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAChD,iCAAiC;QACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACvD,kDAAkD;QAClD,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,UAAU,CAAC;YAAC,IAAI,CAAC,EAAE,IAAI,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;QAC1G,kDAAkD;QAClD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,UAAU,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;KAC3F,CAAC;IACF,2BAA2B;IAC3B,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;QACrC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,iBAAiB;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,+BAA+B;IAC/B,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrF,4BAA4B;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,qCAAqC;IACrC,eAAe,EAAE,MAAM,OAAO,CAAC;IAC/B,6BAA6B;IAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,yCAAyC;IACzC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IACzC,yCAAyC;IACzC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAC1C,2BAA2B;IAC3B,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC3B,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvC,0BAA0B;IAC1B,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC9C,+CAA+C;IAC/C,eAAe,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACtC;AA0RD,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAkX3D;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,CAAC,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH,GAAG,OAAO,CAAC,WAAW,CAAC,CAoBvB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAMnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,WAAW,CAAC,CAkBvB;AAMD;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW,CAMxD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAG9D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAGxD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,OAAO,EAAE,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC/H,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7B,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAcjG;AAMD;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAYR;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC3D,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,20 @@
1
1
  // @bun
2
2
  // src/providers/index.ts
3
+ var DEFAULT_TIMEOUT = 1e4;
4
+ async function fetchWithTimeout(url, init = {}, timeoutMs = DEFAULT_TIMEOUT) {
5
+ const controller = new AbortController;
6
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
7
+ try {
8
+ return await fetch(url, { ...init, signal: controller.signal });
9
+ } catch (error) {
10
+ if (error instanceof DOMException && error.name === "AbortError") {
11
+ throw new Error(`OAuth request to ${url} timed out after ${timeoutMs}ms`);
12
+ }
13
+ throw error;
14
+ } finally {
15
+ clearTimeout(timer);
16
+ }
17
+ }
3
18
  function credentials(config) {
4
19
  return {
5
20
  id: config.id || "credentials",
@@ -9,6 +24,7 @@ function credentials(config) {
9
24
  };
10
25
  }
11
26
  function github(config) {
27
+ const oauthFetch = (url, init) => fetchWithTimeout(url, init, config.timeout);
12
28
  const baseUrl = config.enterprise?.baseUrl || "https://github.com";
13
29
  const apiBaseUrl = config.enterprise?.baseUrl ? `${config.enterprise.baseUrl}/api/v3` : "https://api.github.com";
14
30
  const authorizationUrl = config.authorizationUrl || `${baseUrl}/login/oauth/authorize`;
@@ -26,7 +42,7 @@ function github(config) {
26
42
  const code = credentials2.code;
27
43
  if (!code)
28
44
  return null;
29
- const tokenResponse = await fetch(tokenUrl, {
45
+ const tokenResponse = await oauthFetch(tokenUrl, {
30
46
  method: "POST",
31
47
  headers: {
32
48
  Accept: "application/json",
@@ -42,7 +58,7 @@ function github(config) {
42
58
  const tokenData = await tokenResponse.json();
43
59
  if (!tokenData.access_token)
44
60
  return null;
45
- const userResponse = await fetch(userInfoUrl, {
61
+ const userResponse = await oauthFetch(userInfoUrl, {
46
62
  headers: {
47
63
  Authorization: `token ${tokenData.access_token}`,
48
64
  "User-Agent": "EreoJS-Auth",
@@ -52,7 +68,7 @@ function github(config) {
52
68
  const user = await userResponse.json();
53
69
  let email = user.email;
54
70
  if (!email) {
55
- const emailsResponse = await fetch(`${apiBaseUrl}/user/emails`, {
71
+ const emailsResponse = await oauthFetch(`${apiBaseUrl}/user/emails`, {
56
72
  headers: {
57
73
  Authorization: `token ${tokenData.access_token}`,
58
74
  "User-Agent": "EreoJS-Auth",
@@ -82,7 +98,7 @@ function github(config) {
82
98
  },
83
99
  async handleCallback(params) {
84
100
  const { code, redirectUri } = params;
85
- const tokenResponse = await fetch(tokenUrl, {
101
+ const tokenResponse = await oauthFetch(tokenUrl, {
86
102
  method: "POST",
87
103
  headers: {
88
104
  Accept: "application/json",
@@ -98,7 +114,7 @@ function github(config) {
98
114
  const tokenData = await tokenResponse.json();
99
115
  if (!tokenData.access_token)
100
116
  return null;
101
- const userResponse = await fetch(userInfoUrl, {
117
+ const userResponse = await oauthFetch(userInfoUrl, {
102
118
  headers: {
103
119
  Authorization: `token ${tokenData.access_token}`,
104
120
  "User-Agent": "EreoJS-Auth",
@@ -108,7 +124,7 @@ function github(config) {
108
124
  const user = await userResponse.json();
109
125
  let email = user.email;
110
126
  if (!email) {
111
- const emailsResponse = await fetch(`${apiBaseUrl}/user/emails`, {
127
+ const emailsResponse = await oauthFetch(`${apiBaseUrl}/user/emails`, {
112
128
  headers: {
113
129
  Authorization: `token ${tokenData.access_token}`,
114
130
  "User-Agent": "EreoJS-Auth",
@@ -130,6 +146,7 @@ function github(config) {
130
146
  };
131
147
  }
132
148
  function google(config) {
149
+ const oauthFetch = (url, init) => fetchWithTimeout(url, init, config.timeout);
133
150
  const authorizationUrl = config.authorizationUrl || "https://accounts.google.com/o/oauth2/v2/auth";
134
151
  const tokenUrl = config.tokenUrl || "https://oauth2.googleapis.com/token";
135
152
  const userInfoUrl = config.userInfoUrl || "https://www.googleapis.com/oauth2/v2/userinfo";
@@ -145,7 +162,7 @@ function google(config) {
145
162
  const code = credentials2.code;
146
163
  if (!code)
147
164
  return null;
148
- const tokenResponse = await fetch(tokenUrl, {
165
+ const tokenResponse = await oauthFetch(tokenUrl, {
149
166
  method: "POST",
150
167
  headers: {
151
168
  "Content-Type": "application/x-www-form-urlencoded"
@@ -161,7 +178,7 @@ function google(config) {
161
178
  const tokenData = await tokenResponse.json();
162
179
  if (!tokenData.access_token)
163
180
  return null;
164
- const userResponse = await fetch(`${userInfoUrl}?access_token=${tokenData.access_token}`);
181
+ const userResponse = await oauthFetch(`${userInfoUrl}?access_token=${tokenData.access_token}`);
165
182
  const user = await userResponse.json();
166
183
  if (config.hostedDomain && user.hd !== config.hostedDomain) {
167
184
  return null;
@@ -191,7 +208,7 @@ function google(config) {
191
208
  },
192
209
  async handleCallback(params) {
193
210
  const { code, redirectUri } = params;
194
- const tokenResponse = await fetch(tokenUrl, {
211
+ const tokenResponse = await oauthFetch(tokenUrl, {
195
212
  method: "POST",
196
213
  headers: {
197
214
  "Content-Type": "application/x-www-form-urlencoded"
@@ -207,7 +224,7 @@ function google(config) {
207
224
  const tokenData = await tokenResponse.json();
208
225
  if (!tokenData.access_token)
209
226
  return null;
210
- const userResponse = await fetch(`${userInfoUrl}?access_token=${tokenData.access_token}`);
227
+ const userResponse = await oauthFetch(`${userInfoUrl}?access_token=${tokenData.access_token}`);
211
228
  const user = await userResponse.json();
212
229
  if (config.hostedDomain && user.hd !== config.hostedDomain) {
213
230
  return null;
@@ -223,6 +240,7 @@ function google(config) {
223
240
  };
224
241
  }
225
242
  function discord(config) {
243
+ const oauthFetch = (url, init) => fetchWithTimeout(url, init, config.timeout);
226
244
  const authorizationUrl = config.authorizationUrl || "https://discord.com/api/oauth2/authorize";
227
245
  const tokenUrl = config.tokenUrl || "https://discord.com/api/oauth2/token";
228
246
  const userInfoUrl = config.userInfoUrl || "https://discord.com/api/users/@me";
@@ -238,7 +256,7 @@ function discord(config) {
238
256
  const code = credentials2.code;
239
257
  if (!code)
240
258
  return null;
241
- const tokenResponse = await fetch(tokenUrl, {
259
+ const tokenResponse = await oauthFetch(tokenUrl, {
242
260
  method: "POST",
243
261
  headers: {
244
262
  "Content-Type": "application/x-www-form-urlencoded"
@@ -254,14 +272,14 @@ function discord(config) {
254
272
  const tokenData = await tokenResponse.json();
255
273
  if (!tokenData.access_token)
256
274
  return null;
257
- const userResponse = await fetch(userInfoUrl, {
275
+ const userResponse = await oauthFetch(userInfoUrl, {
258
276
  headers: {
259
277
  Authorization: `Bearer ${tokenData.access_token}`
260
278
  }
261
279
  });
262
280
  const user = await userResponse.json();
263
281
  if (config.guildId) {
264
- const guildsResponse = await fetch("https://discord.com/api/users/@me/guilds", {
282
+ const guildsResponse = await oauthFetch("https://discord.com/api/users/@me/guilds", {
265
283
  headers: {
266
284
  Authorization: `Bearer ${tokenData.access_token}`
267
285
  }
@@ -292,7 +310,7 @@ function discord(config) {
292
310
  },
293
311
  async handleCallback(params) {
294
312
  const { code, redirectUri } = params;
295
- const tokenResponse = await fetch(tokenUrl, {
313
+ const tokenResponse = await oauthFetch(tokenUrl, {
296
314
  method: "POST",
297
315
  headers: {
298
316
  "Content-Type": "application/x-www-form-urlencoded"
@@ -308,14 +326,14 @@ function discord(config) {
308
326
  const tokenData = await tokenResponse.json();
309
327
  if (!tokenData.access_token)
310
328
  return null;
311
- const userResponse = await fetch(userInfoUrl, {
329
+ const userResponse = await oauthFetch(userInfoUrl, {
312
330
  headers: {
313
331
  Authorization: `Bearer ${tokenData.access_token}`
314
332
  }
315
333
  });
316
334
  const user = await userResponse.json();
317
335
  if (config.guildId) {
318
- const guildsResponse = await fetch("https://discord.com/api/users/@me/guilds", {
336
+ const guildsResponse = await oauthFetch("https://discord.com/api/users/@me/guilds", {
319
337
  headers: {
320
338
  Authorization: `Bearer ${tokenData.access_token}`
321
339
  }
@@ -337,6 +355,7 @@ function discord(config) {
337
355
  };
338
356
  }
339
357
  function oauth(config) {
358
+ const oauthFetch = (url, init) => fetchWithTimeout(url, init, config.timeout);
340
359
  const scope = config.scope || [];
341
360
  return {
342
361
  id: config.id,
@@ -349,7 +368,7 @@ function oauth(config) {
349
368
  const code = credentials2.code;
350
369
  if (!code || !config.tokenUrl)
351
370
  return null;
352
- const tokenResponse = await fetch(config.tokenUrl, {
371
+ const tokenResponse = await oauthFetch(config.tokenUrl, {
353
372
  method: "POST",
354
373
  headers: {
355
374
  "Content-Type": "application/x-www-form-urlencoded"
@@ -369,7 +388,7 @@ function oauth(config) {
369
388
  if (!userInfoUrl) {
370
389
  return null;
371
390
  }
372
- const userResponse = await fetch(userInfoUrl, {
391
+ const userResponse = await oauthFetch(userInfoUrl, {
373
392
  headers: {
374
393
  Authorization: `Bearer ${tokenData.access_token}`
375
394
  }
@@ -404,7 +423,7 @@ function oauth(config) {
404
423
  if (!config.tokenUrl) {
405
424
  throw new Error(`Token URL not configured for provider: ${config.id}`);
406
425
  }
407
- const tokenResponse = await fetch(config.tokenUrl, {
426
+ const tokenResponse = await oauthFetch(config.tokenUrl, {
408
427
  method: "POST",
409
428
  headers: {
410
429
  "Content-Type": "application/x-www-form-urlencoded"
@@ -424,7 +443,7 @@ function oauth(config) {
424
443
  if (!userInfoUrl) {
425
444
  return null;
426
445
  }
427
- const userResponse = await fetch(userInfoUrl, {
446
+ const userResponse = await oauthFetch(userInfoUrl, {
428
447
  headers: {
429
448
  Authorization: `Bearer ${tokenData.access_token}`
430
449
  }
@@ -992,6 +1011,7 @@ function getOAuthUrl(context, providerId, redirectUri) {
992
1011
  throw new Error(`OAuth provider not found or not configured: ${providerId}`);
993
1012
  }
994
1013
  const state = base64UrlEncode(crypto.getRandomValues(new Uint8Array(32)));
1014
+ context.set("__oauth_state", state);
995
1015
  return provider.getAuthorizationUrl(state, redirectUri);
996
1016
  }
997
1017
  async function handleOAuthCallback(context, providerId, params) {
@@ -1001,6 +1021,11 @@ async function handleOAuthCallback(context, providerId, params) {
1001
1021
  if (!provider || provider.type !== "oauth" || !provider.handleCallback) {
1002
1022
  throw new Error(`OAuth provider not found or not configured: ${providerId}`);
1003
1023
  }
1024
+ const storedState = context.get("__oauth_state");
1025
+ if (!storedState || storedState !== params.state) {
1026
+ throw new Error("OAuth state mismatch: possible CSRF attack");
1027
+ }
1028
+ context.set("__oauth_state", undefined);
1004
1029
  const user = await provider.handleCallback(params);
1005
1030
  if (!user) {
1006
1031
  throw new Error("OAuth authentication failed");
@@ -29,6 +29,8 @@ export interface OAuthConfig {
29
29
  tokenUrl?: string;
30
30
  /** User info URL */
31
31
  userInfoUrl?: string;
32
+ /** Timeout in milliseconds for OAuth HTTP requests (default: 10000) */
33
+ timeout?: number;
32
34
  }
33
35
  /** GitHub OAuth configuration */
34
36
  export interface GitHubConfig extends OAuthConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,20 @@
1
1
  // @bun
2
2
  // src/providers/index.ts
3
+ var DEFAULT_TIMEOUT = 1e4;
4
+ async function fetchWithTimeout(url, init = {}, timeoutMs = DEFAULT_TIMEOUT) {
5
+ const controller = new AbortController;
6
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
7
+ try {
8
+ return await fetch(url, { ...init, signal: controller.signal });
9
+ } catch (error) {
10
+ if (error instanceof DOMException && error.name === "AbortError") {
11
+ throw new Error(`OAuth request to ${url} timed out after ${timeoutMs}ms`);
12
+ }
13
+ throw error;
14
+ } finally {
15
+ clearTimeout(timer);
16
+ }
17
+ }
3
18
  function credentials(config) {
4
19
  return {
5
20
  id: config.id || "credentials",
@@ -9,6 +24,7 @@ function credentials(config) {
9
24
  };
10
25
  }
11
26
  function github(config) {
27
+ const oauthFetch = (url, init) => fetchWithTimeout(url, init, config.timeout);
12
28
  const baseUrl = config.enterprise?.baseUrl || "https://github.com";
13
29
  const apiBaseUrl = config.enterprise?.baseUrl ? `${config.enterprise.baseUrl}/api/v3` : "https://api.github.com";
14
30
  const authorizationUrl = config.authorizationUrl || `${baseUrl}/login/oauth/authorize`;
@@ -26,7 +42,7 @@ function github(config) {
26
42
  const code = credentials2.code;
27
43
  if (!code)
28
44
  return null;
29
- const tokenResponse = await fetch(tokenUrl, {
45
+ const tokenResponse = await oauthFetch(tokenUrl, {
30
46
  method: "POST",
31
47
  headers: {
32
48
  Accept: "application/json",
@@ -42,7 +58,7 @@ function github(config) {
42
58
  const tokenData = await tokenResponse.json();
43
59
  if (!tokenData.access_token)
44
60
  return null;
45
- const userResponse = await fetch(userInfoUrl, {
61
+ const userResponse = await oauthFetch(userInfoUrl, {
46
62
  headers: {
47
63
  Authorization: `token ${tokenData.access_token}`,
48
64
  "User-Agent": "EreoJS-Auth",
@@ -52,7 +68,7 @@ function github(config) {
52
68
  const user = await userResponse.json();
53
69
  let email = user.email;
54
70
  if (!email) {
55
- const emailsResponse = await fetch(`${apiBaseUrl}/user/emails`, {
71
+ const emailsResponse = await oauthFetch(`${apiBaseUrl}/user/emails`, {
56
72
  headers: {
57
73
  Authorization: `token ${tokenData.access_token}`,
58
74
  "User-Agent": "EreoJS-Auth",
@@ -82,7 +98,7 @@ function github(config) {
82
98
  },
83
99
  async handleCallback(params) {
84
100
  const { code, redirectUri } = params;
85
- const tokenResponse = await fetch(tokenUrl, {
101
+ const tokenResponse = await oauthFetch(tokenUrl, {
86
102
  method: "POST",
87
103
  headers: {
88
104
  Accept: "application/json",
@@ -98,7 +114,7 @@ function github(config) {
98
114
  const tokenData = await tokenResponse.json();
99
115
  if (!tokenData.access_token)
100
116
  return null;
101
- const userResponse = await fetch(userInfoUrl, {
117
+ const userResponse = await oauthFetch(userInfoUrl, {
102
118
  headers: {
103
119
  Authorization: `token ${tokenData.access_token}`,
104
120
  "User-Agent": "EreoJS-Auth",
@@ -108,7 +124,7 @@ function github(config) {
108
124
  const user = await userResponse.json();
109
125
  let email = user.email;
110
126
  if (!email) {
111
- const emailsResponse = await fetch(`${apiBaseUrl}/user/emails`, {
127
+ const emailsResponse = await oauthFetch(`${apiBaseUrl}/user/emails`, {
112
128
  headers: {
113
129
  Authorization: `token ${tokenData.access_token}`,
114
130
  "User-Agent": "EreoJS-Auth",
@@ -130,6 +146,7 @@ function github(config) {
130
146
  };
131
147
  }
132
148
  function google(config) {
149
+ const oauthFetch = (url, init) => fetchWithTimeout(url, init, config.timeout);
133
150
  const authorizationUrl = config.authorizationUrl || "https://accounts.google.com/o/oauth2/v2/auth";
134
151
  const tokenUrl = config.tokenUrl || "https://oauth2.googleapis.com/token";
135
152
  const userInfoUrl = config.userInfoUrl || "https://www.googleapis.com/oauth2/v2/userinfo";
@@ -145,7 +162,7 @@ function google(config) {
145
162
  const code = credentials2.code;
146
163
  if (!code)
147
164
  return null;
148
- const tokenResponse = await fetch(tokenUrl, {
165
+ const tokenResponse = await oauthFetch(tokenUrl, {
149
166
  method: "POST",
150
167
  headers: {
151
168
  "Content-Type": "application/x-www-form-urlencoded"
@@ -161,7 +178,7 @@ function google(config) {
161
178
  const tokenData = await tokenResponse.json();
162
179
  if (!tokenData.access_token)
163
180
  return null;
164
- const userResponse = await fetch(`${userInfoUrl}?access_token=${tokenData.access_token}`);
181
+ const userResponse = await oauthFetch(`${userInfoUrl}?access_token=${tokenData.access_token}`);
165
182
  const user = await userResponse.json();
166
183
  if (config.hostedDomain && user.hd !== config.hostedDomain) {
167
184
  return null;
@@ -191,7 +208,7 @@ function google(config) {
191
208
  },
192
209
  async handleCallback(params) {
193
210
  const { code, redirectUri } = params;
194
- const tokenResponse = await fetch(tokenUrl, {
211
+ const tokenResponse = await oauthFetch(tokenUrl, {
195
212
  method: "POST",
196
213
  headers: {
197
214
  "Content-Type": "application/x-www-form-urlencoded"
@@ -207,7 +224,7 @@ function google(config) {
207
224
  const tokenData = await tokenResponse.json();
208
225
  if (!tokenData.access_token)
209
226
  return null;
210
- const userResponse = await fetch(`${userInfoUrl}?access_token=${tokenData.access_token}`);
227
+ const userResponse = await oauthFetch(`${userInfoUrl}?access_token=${tokenData.access_token}`);
211
228
  const user = await userResponse.json();
212
229
  if (config.hostedDomain && user.hd !== config.hostedDomain) {
213
230
  return null;
@@ -223,6 +240,7 @@ function google(config) {
223
240
  };
224
241
  }
225
242
  function discord(config) {
243
+ const oauthFetch = (url, init) => fetchWithTimeout(url, init, config.timeout);
226
244
  const authorizationUrl = config.authorizationUrl || "https://discord.com/api/oauth2/authorize";
227
245
  const tokenUrl = config.tokenUrl || "https://discord.com/api/oauth2/token";
228
246
  const userInfoUrl = config.userInfoUrl || "https://discord.com/api/users/@me";
@@ -238,7 +256,7 @@ function discord(config) {
238
256
  const code = credentials2.code;
239
257
  if (!code)
240
258
  return null;
241
- const tokenResponse = await fetch(tokenUrl, {
259
+ const tokenResponse = await oauthFetch(tokenUrl, {
242
260
  method: "POST",
243
261
  headers: {
244
262
  "Content-Type": "application/x-www-form-urlencoded"
@@ -254,14 +272,14 @@ function discord(config) {
254
272
  const tokenData = await tokenResponse.json();
255
273
  if (!tokenData.access_token)
256
274
  return null;
257
- const userResponse = await fetch(userInfoUrl, {
275
+ const userResponse = await oauthFetch(userInfoUrl, {
258
276
  headers: {
259
277
  Authorization: `Bearer ${tokenData.access_token}`
260
278
  }
261
279
  });
262
280
  const user = await userResponse.json();
263
281
  if (config.guildId) {
264
- const guildsResponse = await fetch("https://discord.com/api/users/@me/guilds", {
282
+ const guildsResponse = await oauthFetch("https://discord.com/api/users/@me/guilds", {
265
283
  headers: {
266
284
  Authorization: `Bearer ${tokenData.access_token}`
267
285
  }
@@ -292,7 +310,7 @@ function discord(config) {
292
310
  },
293
311
  async handleCallback(params) {
294
312
  const { code, redirectUri } = params;
295
- const tokenResponse = await fetch(tokenUrl, {
313
+ const tokenResponse = await oauthFetch(tokenUrl, {
296
314
  method: "POST",
297
315
  headers: {
298
316
  "Content-Type": "application/x-www-form-urlencoded"
@@ -308,14 +326,14 @@ function discord(config) {
308
326
  const tokenData = await tokenResponse.json();
309
327
  if (!tokenData.access_token)
310
328
  return null;
311
- const userResponse = await fetch(userInfoUrl, {
329
+ const userResponse = await oauthFetch(userInfoUrl, {
312
330
  headers: {
313
331
  Authorization: `Bearer ${tokenData.access_token}`
314
332
  }
315
333
  });
316
334
  const user = await userResponse.json();
317
335
  if (config.guildId) {
318
- const guildsResponse = await fetch("https://discord.com/api/users/@me/guilds", {
336
+ const guildsResponse = await oauthFetch("https://discord.com/api/users/@me/guilds", {
319
337
  headers: {
320
338
  Authorization: `Bearer ${tokenData.access_token}`
321
339
  }
@@ -337,6 +355,7 @@ function discord(config) {
337
355
  };
338
356
  }
339
357
  function oauth(config) {
358
+ const oauthFetch = (url, init) => fetchWithTimeout(url, init, config.timeout);
340
359
  const scope = config.scope || [];
341
360
  return {
342
361
  id: config.id,
@@ -349,7 +368,7 @@ function oauth(config) {
349
368
  const code = credentials2.code;
350
369
  if (!code || !config.tokenUrl)
351
370
  return null;
352
- const tokenResponse = await fetch(config.tokenUrl, {
371
+ const tokenResponse = await oauthFetch(config.tokenUrl, {
353
372
  method: "POST",
354
373
  headers: {
355
374
  "Content-Type": "application/x-www-form-urlencoded"
@@ -369,7 +388,7 @@ function oauth(config) {
369
388
  if (!userInfoUrl) {
370
389
  return null;
371
390
  }
372
- const userResponse = await fetch(userInfoUrl, {
391
+ const userResponse = await oauthFetch(userInfoUrl, {
373
392
  headers: {
374
393
  Authorization: `Bearer ${tokenData.access_token}`
375
394
  }
@@ -404,7 +423,7 @@ function oauth(config) {
404
423
  if (!config.tokenUrl) {
405
424
  throw new Error(`Token URL not configured for provider: ${config.id}`);
406
425
  }
407
- const tokenResponse = await fetch(config.tokenUrl, {
426
+ const tokenResponse = await oauthFetch(config.tokenUrl, {
408
427
  method: "POST",
409
428
  headers: {
410
429
  "Content-Type": "application/x-www-form-urlencoded"
@@ -424,7 +443,7 @@ function oauth(config) {
424
443
  if (!userInfoUrl) {
425
444
  return null;
426
445
  }
427
- const userResponse = await fetch(userInfoUrl, {
446
+ const userResponse = await oauthFetch(userInfoUrl, {
428
447
  headers: {
429
448
  Authorization: `Bearer ${tokenData.access_token}`
430
449
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ereo/auth",
3
- "version": "0.1.29",
3
+ "version": "0.1.31",
4
4
  "license": "MIT",
5
5
  "author": "Ereo Team",
6
6
  "homepage": "https://ereo.dev",
@@ -37,8 +37,8 @@
37
37
  "typecheck": "tsc --noEmit"
38
38
  },
39
39
  "dependencies": {
40
- "@ereo/core": "^0.1.29",
41
- "@ereo/router": "^0.1.29"
40
+ "@ereo/core": "^0.1.31",
41
+ "@ereo/router": "^0.1.31"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/bun": "^1.1.0",