@authon/js 0.1.6 → 0.1.7

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.js CHANGED
@@ -339,6 +339,7 @@ var ModalRenderer = class {
339
339
  // src/session.ts
340
340
  var SessionManager = class {
341
341
  accessToken = null;
342
+ refreshToken = null;
342
343
  user = null;
343
344
  refreshTimer = null;
344
345
  apiUrl;
@@ -355,11 +356,15 @@ var SessionManager = class {
355
356
  }
356
357
  setSession(tokens) {
357
358
  this.accessToken = tokens.accessToken;
359
+ this.refreshToken = tokens.refreshToken;
358
360
  this.user = tokens.user;
359
- this.scheduleRefresh(tokens.expiresIn);
361
+ if (tokens.expiresIn && tokens.expiresIn > 0) {
362
+ this.scheduleRefresh(tokens.expiresIn);
363
+ }
360
364
  }
361
365
  clearSession() {
362
366
  this.accessToken = null;
367
+ this.refreshToken = null;
363
368
  this.user = null;
364
369
  if (this.refreshTimer) {
365
370
  clearTimeout(this.refreshTimer);
@@ -368,10 +373,14 @@ var SessionManager = class {
368
373
  }
369
374
  scheduleRefresh(expiresIn) {
370
375
  if (this.refreshTimer) clearTimeout(this.refreshTimer);
371
- const refreshIn = Math.max((expiresIn - 60) * 1e3, 5e3);
376
+ const refreshIn = Math.max((expiresIn - 60) * 1e3, 3e4);
372
377
  this.refreshTimer = setTimeout(() => this.refresh(), refreshIn);
373
378
  }
374
379
  async refresh() {
380
+ if (!this.refreshToken) {
381
+ this.clearSession();
382
+ return null;
383
+ }
375
384
  try {
376
385
  const res = await fetch(`${this.apiUrl}/v1/auth/token/refresh`, {
377
386
  method: "POST",
@@ -379,7 +388,8 @@ var SessionManager = class {
379
388
  "Content-Type": "application/json",
380
389
  "x-api-key": this.publishableKey
381
390
  },
382
- credentials: "include"
391
+ credentials: "include",
392
+ body: JSON.stringify({ refreshToken: this.refreshToken })
383
393
  });
384
394
  if (!res.ok) {
385
395
  this.clearSession();
@@ -544,7 +554,10 @@ var Authon = class {
544
554
  const handler = async (e) => {
545
555
  if (e.data?.type === "authon-oauth-callback") {
546
556
  window.removeEventListener("message", handler);
547
- popup?.close();
557
+ try {
558
+ popup?.close();
559
+ } catch {
560
+ }
548
561
  try {
549
562
  const tokens = await this.apiPost("/v1/auth/oauth/callback", {
550
563
  code: e.data.code,
package/dist/index.mjs CHANGED
@@ -312,6 +312,7 @@ var ModalRenderer = class {
312
312
  // src/session.ts
313
313
  var SessionManager = class {
314
314
  accessToken = null;
315
+ refreshToken = null;
315
316
  user = null;
316
317
  refreshTimer = null;
317
318
  apiUrl;
@@ -328,11 +329,15 @@ var SessionManager = class {
328
329
  }
329
330
  setSession(tokens) {
330
331
  this.accessToken = tokens.accessToken;
332
+ this.refreshToken = tokens.refreshToken;
331
333
  this.user = tokens.user;
332
- this.scheduleRefresh(tokens.expiresIn);
334
+ if (tokens.expiresIn && tokens.expiresIn > 0) {
335
+ this.scheduleRefresh(tokens.expiresIn);
336
+ }
333
337
  }
334
338
  clearSession() {
335
339
  this.accessToken = null;
340
+ this.refreshToken = null;
336
341
  this.user = null;
337
342
  if (this.refreshTimer) {
338
343
  clearTimeout(this.refreshTimer);
@@ -341,10 +346,14 @@ var SessionManager = class {
341
346
  }
342
347
  scheduleRefresh(expiresIn) {
343
348
  if (this.refreshTimer) clearTimeout(this.refreshTimer);
344
- const refreshIn = Math.max((expiresIn - 60) * 1e3, 5e3);
349
+ const refreshIn = Math.max((expiresIn - 60) * 1e3, 3e4);
345
350
  this.refreshTimer = setTimeout(() => this.refresh(), refreshIn);
346
351
  }
347
352
  async refresh() {
353
+ if (!this.refreshToken) {
354
+ this.clearSession();
355
+ return null;
356
+ }
348
357
  try {
349
358
  const res = await fetch(`${this.apiUrl}/v1/auth/token/refresh`, {
350
359
  method: "POST",
@@ -352,7 +361,8 @@ var SessionManager = class {
352
361
  "Content-Type": "application/json",
353
362
  "x-api-key": this.publishableKey
354
363
  },
355
- credentials: "include"
364
+ credentials: "include",
365
+ body: JSON.stringify({ refreshToken: this.refreshToken })
356
366
  });
357
367
  if (!res.ok) {
358
368
  this.clearSession();
@@ -517,7 +527,10 @@ var Authon = class {
517
527
  const handler = async (e) => {
518
528
  if (e.data?.type === "authon-oauth-callback") {
519
529
  window.removeEventListener("message", handler);
520
- popup?.close();
530
+ try {
531
+ popup?.close();
532
+ } catch {
533
+ }
521
534
  try {
522
535
  const tokens = await this.apiPost("/v1/auth/oauth/callback", {
523
536
  code: e.data.code,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@authon/js",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "Authon core SDK — ShadowDOM login modal for any app",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",