@rool-dev/sdk 0.12.4 → 2.0.0-dev.4adc2c2

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 (108) hide show
  1. package/README.md +436 -761
  2. package/dist/agents.d.ts +130 -0
  3. package/dist/agents.d.ts.map +1 -0
  4. package/dist/agents.js +348 -0
  5. package/dist/agents.js.map +1 -0
  6. package/dist/auth-base.d.ts +43 -88
  7. package/dist/auth-base.d.ts.map +1 -1
  8. package/dist/auth-base.js +178 -298
  9. package/dist/auth-base.js.map +1 -1
  10. package/dist/auth-browser.d.ts +7 -25
  11. package/dist/auth-browser.d.ts.map +1 -1
  12. package/dist/auth-browser.js +45 -82
  13. package/dist/auth-browser.js.map +1 -1
  14. package/dist/auth-native.d.ts +9 -56
  15. package/dist/auth-native.d.ts.map +1 -1
  16. package/dist/auth-native.js +88 -177
  17. package/dist/auth-native.js.map +1 -1
  18. package/dist/auth-node.d.ts +32 -32
  19. package/dist/auth-node.d.ts.map +1 -1
  20. package/dist/auth-node.js +339 -255
  21. package/dist/auth-node.js.map +1 -1
  22. package/dist/auth-url.d.ts +6 -0
  23. package/dist/auth-url.d.ts.map +1 -0
  24. package/dist/auth-url.js +30 -0
  25. package/dist/auth-url.js.map +1 -0
  26. package/dist/client.d.ts +35 -277
  27. package/dist/client.d.ts.map +1 -1
  28. package/dist/client.js +275 -620
  29. package/dist/client.js.map +1 -1
  30. package/dist/events.d.ts +40 -0
  31. package/dist/events.d.ts.map +1 -0
  32. package/dist/events.js +175 -0
  33. package/dist/events.js.map +1 -0
  34. package/dist/files.d.ts +170 -0
  35. package/dist/files.d.ts.map +1 -0
  36. package/dist/files.js +846 -0
  37. package/dist/files.js.map +1 -0
  38. package/dist/index.d.ts +16 -17
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +7 -19
  41. package/dist/index.js.map +1 -1
  42. package/dist/machine.d.ts +49 -0
  43. package/dist/machine.d.ts.map +1 -0
  44. package/dist/machine.js +142 -0
  45. package/dist/machine.js.map +1 -0
  46. package/dist/problem.d.ts +11 -0
  47. package/dist/problem.d.ts.map +1 -0
  48. package/dist/problem.js +20 -0
  49. package/dist/problem.js.map +1 -0
  50. package/dist/structured.d.ts +84 -0
  51. package/dist/structured.d.ts.map +1 -0
  52. package/dist/structured.js +405 -0
  53. package/dist/structured.js.map +1 -0
  54. package/dist/types.d.ts +119 -520
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +11 -16
  57. package/dist/auth.d.ts +0 -85
  58. package/dist/auth.d.ts.map +0 -1
  59. package/dist/auth.js +0 -181
  60. package/dist/auth.js.map +0 -1
  61. package/dist/client-info.d.ts +0 -18
  62. package/dist/client-info.d.ts.map +0 -1
  63. package/dist/client-info.js +0 -25
  64. package/dist/client-info.js.map +0 -1
  65. package/dist/event-emitter.d.ts +0 -45
  66. package/dist/event-emitter.d.ts.map +0 -1
  67. package/dist/event-emitter.js +0 -86
  68. package/dist/event-emitter.js.map +0 -1
  69. package/dist/graphql.d.ts +0 -90
  70. package/dist/graphql.d.ts.map +0 -1
  71. package/dist/graphql.js +0 -463
  72. package/dist/graphql.js.map +0 -1
  73. package/dist/logger.d.ts +0 -13
  74. package/dist/logger.d.ts.map +0 -1
  75. package/dist/logger.js +0 -17
  76. package/dist/logger.js.map +0 -1
  77. package/dist/path.d.ts +0 -6
  78. package/dist/path.d.ts.map +0 -1
  79. package/dist/path.js +0 -47
  80. package/dist/path.js.map +0 -1
  81. package/dist/reroute.d.ts +0 -22
  82. package/dist/reroute.d.ts.map +0 -1
  83. package/dist/reroute.js +0 -70
  84. package/dist/reroute.js.map +0 -1
  85. package/dist/rest.d.ts +0 -54
  86. package/dist/rest.d.ts.map +0 -1
  87. package/dist/rest.js +0 -171
  88. package/dist/rest.js.map +0 -1
  89. package/dist/router.d.ts +0 -20
  90. package/dist/router.d.ts.map +0 -1
  91. package/dist/router.js +0 -54
  92. package/dist/router.js.map +0 -1
  93. package/dist/space-session.d.ts +0 -30
  94. package/dist/space-session.d.ts.map +0 -1
  95. package/dist/space-session.js +0 -83
  96. package/dist/space-session.js.map +0 -1
  97. package/dist/space.d.ts +0 -161
  98. package/dist/space.d.ts.map +0 -1
  99. package/dist/space.js +0 -618
  100. package/dist/space.js.map +0 -1
  101. package/dist/subscription.d.ts +0 -36
  102. package/dist/subscription.d.ts.map +0 -1
  103. package/dist/subscription.js +0 -419
  104. package/dist/subscription.js.map +0 -1
  105. package/dist/webdav.d.ts +0 -171
  106. package/dist/webdav.d.ts.map +0 -1
  107. package/dist/webdav.js +0 -481
  108. package/dist/webdav.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"auth-base.d.ts","sourceRoot":"","sources":["../src/auth-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-base.d.ts","sourceRoot":"","sources":["../src/auth-base.ts"],"names":[],"mappings":"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"}
package/dist/auth-base.js CHANGED
@@ -1,187 +1,148 @@
1
- // =============================================================================
2
- // Base token auth provider
3
- // Shared machinery for browser-style providers: endpoint-scoped localStorage
4
- // token storage, expiry-aware getTokens with deduplicated background refresh,
5
- // visibility-driven re-scheduling, and JWT identity decode.
6
- //
7
- // Subclasses implement only how a session STARTS (login/signup) and how the
8
- // callback arrives — BrowserAuthProvider via a URL fragment,
9
- // NativePkceAuthProvider via a deep link + code exchange. Everything after the
10
- // tokens land (storage, refresh, decode) is shared here.
11
- // =============================================================================
12
- import { defaultLogger } from './logger.js';
13
- const REFRESH_BUFFER_MS = 15 * 60 * 1000; // Refresh 15 minutes before expiry
14
- const DEFAULT_STORAGE_PREFIX = 'rool_';
15
- export class BaseTokenAuthProvider {
16
- logger;
17
- _authUrl;
18
- _onAuthStateChanged;
1
+ import { resolveAuthUrl } from "./auth-url.js";
2
+ const REFRESH_BUFFER_MS = 15 * 60 * 1000;
3
+ const STORAGE_PREFIX = "rool_";
4
+ export class EmailChangeError extends Error {
5
+ code;
6
+ constructor(code, message) {
7
+ super(message);
8
+ this.code = code;
9
+ this.name = "EmailChangeError";
10
+ }
11
+ }
12
+ export class TokenAuth {
13
+ authUrl;
14
+ fetchRequest;
15
+ listeners = new Set();
19
16
  refreshPromise = null;
20
- refreshTimeoutId = null;
21
- boundVisibilityHandler = null;
22
17
  constructor(config = {}) {
23
- this._authUrl = (config.authUrl ?? '').replace(/\/+$/, '');
24
- this.logger = config.logger ?? defaultLogger;
25
- this._onAuthStateChanged = config.onAuthStateChanged ?? (() => { });
26
- }
27
- // Injection hooks — RoolClient's AuthManager calls these for providers it
28
- // didn't construct itself, so a custom provider gets the resolved auth URL,
29
- // logger, and a handler that bridges auth-state to client events.
30
- setAuthUrl(url) {
31
- this._authUrl = url.replace(/\/+$/, '');
32
- }
33
- setLogger(logger) {
34
- this.logger = logger;
35
- }
36
- setAuthStateChangedHandler(handler) {
37
- this._onAuthStateChanged = handler;
18
+ this.authUrl = resolveAuthUrl(config);
19
+ this.fetchRequest = config.fetch ?? globalThis.fetch.bind(globalThis);
38
20
  }
39
- /**
40
- * Check if user is currently authenticated.
41
- *
42
- * This reports identity (do we hold credentials), NOT server reachability.
43
- * It deliberately does not perform a network refresh: a backend outage must
44
- * not read as "logged out". A genuinely invalid/expired refresh token
45
- * surfaces later as a 401 on first real use, which clears tokens and fires
46
- * onAuthStateChanged(false) — the only path that ends the session.
47
- */
48
21
  async isAuthenticated() {
49
22
  return this.readAccessToken() !== null;
50
23
  }
51
- /**
52
- * Get current access token and rool token, refreshing if expired.
53
- * Returns undefined if not authenticated.
54
- */
55
- async getTokens() {
56
- const accessToken = this.readAccessToken();
24
+ getTokens = async () => {
25
+ let accessToken = this.readAccessToken();
57
26
  if (!accessToken)
58
27
  return undefined;
59
- // Token expired or about to expire - try refresh
60
28
  const expiresAt = this.readExpiresAt();
61
- if (expiresAt && Date.now() >= expiresAt - REFRESH_BUFFER_MS) {
62
- const refreshed = await this.tryRefreshToken();
63
- if (!refreshed)
29
+ const needsRefresh = expiresAt !== null && Date.now() >= expiresAt - REFRESH_BUFFER_MS;
30
+ if (needsRefresh) {
31
+ if (!(await this.refresh()))
64
32
  return undefined;
65
- const refreshedToken = this.readAccessToken();
66
- if (!refreshedToken)
33
+ accessToken = this.readAccessToken();
34
+ if (!accessToken)
67
35
  return undefined;
68
- return { accessToken: refreshedToken, roolToken: this.readRoolToken() };
69
36
  }
70
37
  return { accessToken, roolToken: this.readRoolToken() };
38
+ };
39
+ logout = async () => {
40
+ const wasAuthenticated = this.readAccessToken() !== null;
41
+ this.clearTokens();
42
+ this.clearTransientState();
43
+ if (wasAuthenticated)
44
+ this.emitAuthState(false);
45
+ };
46
+ onAuthStateChanged(listener) {
47
+ this.listeners.add(listener);
48
+ return () => this.listeners.delete(listener);
71
49
  }
72
- /**
73
- * Get auth identity decoded from JWT token.
74
- */
75
- getAuthUser() {
76
- const accessToken = this.readAccessToken();
77
- if (!accessToken)
78
- return { email: null, name: null };
79
- return this.decodeAuthUser(accessToken);
80
- }
81
- /**
82
- * Complete an email verification flow. Exchanges a verify JWT (from the
83
- * verification email link) for a fresh token set and signs the user in.
84
- */
85
50
  async verify(token) {
86
51
  let response;
87
52
  try {
88
- response = await fetch(`${this.authBaseUrl}/verify-and-signin`, {
89
- method: 'POST',
90
- headers: { 'Content-Type': 'application/json' },
53
+ response = await this.fetchAuth("/verify-and-signin", {
54
+ method: "POST",
55
+ headers: { "Content-Type": "application/json" },
91
56
  body: JSON.stringify({ token }),
92
57
  });
93
58
  }
94
59
  catch (error) {
95
- this.logger.error('[RoolClient] verify network error:', error);
60
+ console.error("[RoolAuth] verify network error:", error);
96
61
  return false;
97
62
  }
98
- if (!response.ok) {
99
- this.logger.warn(`[RoolClient] verify failed: ${response.status}`);
63
+ if (!response.ok)
100
64
  return false;
101
- }
102
- let data;
103
- try {
104
- data = await response.json();
105
- }
106
- catch (error) {
107
- this.logger.error('[RoolClient] verify response parse error:', error);
65
+ const data = await readTokenResponse(response);
66
+ if (!data || !this.acceptTokenResponse(data))
108
67
  return false;
109
- }
110
- const idToken = data.id_token ?? null;
111
- const refreshToken = data.refresh_token ?? null;
112
- const expiresAt = data.expires_in ? Date.now() + data.expires_in * 1000 : NaN;
113
- if (!idToken || !Number.isFinite(expiresAt)) {
114
- this.logger.error('[RoolClient] verify response missing id_token or expires_in');
115
- return false;
116
- }
117
- this.acceptTokens(idToken, refreshToken, data.rool_token ?? null, expiresAt);
118
- this.notifyAuthState(true);
68
+ this.emitAuthState(true);
119
69
  return true;
120
70
  }
121
- replaceTokens(tokens) {
122
- this.writeTokens(tokens.accessToken, tokens.refreshToken, tokens.expiresAt);
123
- this.scheduleTokenRefresh();
124
- }
125
- /**
126
- * Logout - clear all tokens and state.
127
- */
128
- logout() {
129
- this.clearTokens();
130
- this.clearTransientState();
131
- this.cancelScheduledRefresh();
132
- this.notifyAuthState(false);
133
- }
134
- /**
135
- * Destroy auth manager - clear refresh timers and listeners.
136
- */
137
- destroy() {
138
- this.cancelScheduledRefresh();
139
- if (this.boundVisibilityHandler) {
140
- document.removeEventListener('visibilitychange', this.boundVisibilityHandler);
141
- this.boundVisibilityHandler = null;
71
+ async setPassword(password) {
72
+ const tokens = await this.getTokens();
73
+ if (!tokens)
74
+ throw new Error("Not authenticated");
75
+ const response = await this.fetchAuth("/set-password", {
76
+ method: "POST",
77
+ headers: {
78
+ "Content-Type": "application/json",
79
+ Authorization: `Bearer ${tokens.accessToken}`,
80
+ },
81
+ body: JSON.stringify({ password }),
82
+ });
83
+ const data = (await response.json().catch(() => null));
84
+ if (!response.ok) {
85
+ throw new Error(data?.error ?? `set-password failed: ${response.status}`);
86
+ }
87
+ const hasRefreshToken = typeof data?.refresh_token === "string";
88
+ const accepted = data &&
89
+ hasRefreshToken &&
90
+ this.acceptTokenResponse(data, { roolToken: tokens.roolToken });
91
+ if (!accepted)
92
+ await this.logout();
93
+ }
94
+ async requestEmailChange(newEmail) {
95
+ const tokens = await this.getTokens();
96
+ if (!tokens)
97
+ throw new Error("Not authenticated");
98
+ const response = await this.fetchAuth("/email-change", {
99
+ method: "POST",
100
+ headers: {
101
+ "Content-Type": "application/json",
102
+ Authorization: `Bearer ${tokens.accessToken}`,
103
+ },
104
+ body: JSON.stringify({ new_email: newEmail }),
105
+ });
106
+ if (response.ok)
107
+ return;
108
+ const data = (await response.json().catch(() => null));
109
+ if (data?.error) {
110
+ throw new EmailChangeError(data.error, data.message ?? data.error);
142
111
  }
112
+ throw new Error(`email-change failed: ${response.status}`);
143
113
  }
144
- // ===========================================================================
145
- // Protected helpers for subclasses
146
- // ===========================================================================
147
- /** Auth URL without trailing slash */
148
114
  get authBaseUrl() {
149
- return this._authUrl;
115
+ return this.authUrl;
150
116
  }
151
- notifyAuthState(authenticated) {
152
- this._onAuthStateChanged(authenticated);
117
+ fetchAuth(path, init) {
118
+ return this.fetchRequest(`${this.authUrl}${path}`, init);
153
119
  }
154
- /** Persist a fresh token set and (re)arm the background refresh timer. */
155
- acceptTokens(accessToken, refreshToken, roolToken, expiresAt) {
156
- this.writeTokens(accessToken, refreshToken, expiresAt);
157
- this.writeRoolToken(roolToken);
158
- this.scheduleTokenRefresh();
120
+ acceptTokenResponse(data, fallback = {}) {
121
+ const accessToken = data.id_token;
122
+ const expiresIn = Number(data.expires_in);
123
+ if (typeof accessToken !== "string" ||
124
+ !Number.isFinite(expiresIn) ||
125
+ expiresIn <= 0) {
126
+ return false;
127
+ }
128
+ const refreshToken = typeof data.refresh_token === "string"
129
+ ? data.refresh_token
130
+ : (fallback.refreshToken ?? null);
131
+ const roolToken = typeof data.rool_token === "string"
132
+ ? data.rool_token
133
+ : data.rool_token === null
134
+ ? null
135
+ : (fallback.roolToken ?? null);
136
+ this.writeTokens(accessToken, refreshToken, roolToken, Date.now() + expiresIn * 1000);
137
+ return true;
159
138
  }
160
- /** Arm auto-refresh + visibility re-scheduling. Call from initialize(). */
161
- initBase() {
162
- this.scheduleTokenRefresh();
163
- this.listenForVisibility();
139
+ emitAuthState(authenticated) {
140
+ for (const listener of this.listeners)
141
+ listener(authenticated);
164
142
  }
165
- /**
166
- * Overridable hook: clear subclass-owned transient state on logout/cancel
167
- * (e.g. an in-flight OAuth `state` or PKCE verifier). No-op by default.
168
- */
169
143
  clearTransientState() { }
170
- get storagePrefix() {
171
- return `${DEFAULT_STORAGE_PREFIX}${this.endpointHash}_`;
172
- }
173
- /** Build a storage key scoped to this auth endpoint. */
174
144
  keyFor(name) {
175
- return `${this.storagePrefix}${name}`;
176
- }
177
- get storageKeys() {
178
- const prefix = this.storagePrefix;
179
- return {
180
- access: `${prefix}access_token`,
181
- refresh: `${prefix}refresh_token`,
182
- rool: `${prefix}rool_token`,
183
- expiresAt: `${prefix}token_expires_at`,
184
- };
145
+ return `${STORAGE_PREFIX}${this.endpointHash}_${name}`;
185
146
  }
186
147
  readString(key) {
187
148
  try {
@@ -196,7 +157,7 @@ export class BaseTokenAuthProvider {
196
157
  localStorage.setItem(key, value);
197
158
  }
198
159
  catch {
199
- // Ignore storage restrictions
160
+ // Storage can be unavailable in restricted browser contexts.
200
161
  }
201
162
  }
202
163
  removeString(key) {
@@ -204,178 +165,97 @@ export class BaseTokenAuthProvider {
204
165
  localStorage.removeItem(key);
205
166
  }
206
167
  catch {
207
- // Ignore storage restrictions
208
- }
209
- }
210
- scheduleTokenRefresh() {
211
- this.cancelScheduledRefresh();
212
- const expiresAt = this.readExpiresAt();
213
- if (!expiresAt)
214
- return;
215
- const refreshAt = expiresAt - REFRESH_BUFFER_MS;
216
- const delay = refreshAt - Date.now();
217
- if (delay <= 0) {
218
- // Already needs refresh
219
- void this.tryRefreshToken();
220
- }
221
- else {
222
- this.refreshTimeoutId = setTimeout(() => {
223
- void this.tryRefreshToken();
224
- }, delay);
168
+ // Storage can be unavailable in restricted browser contexts.
225
169
  }
226
170
  }
227
- writeTokens(accessToken, refreshToken, expiresAt) {
228
- if (accessToken) {
229
- localStorage.setItem(this.storageKeys.access, accessToken);
230
- }
231
- else {
232
- localStorage.removeItem(this.storageKeys.access);
233
- }
234
- if (refreshToken) {
235
- localStorage.setItem(this.storageKeys.refresh, refreshToken);
236
- }
237
- else {
238
- localStorage.removeItem(this.storageKeys.refresh);
239
- }
240
- if (expiresAt !== null && Number.isFinite(expiresAt)) {
241
- localStorage.setItem(this.storageKeys.expiresAt, Math.floor(expiresAt).toString());
242
- }
243
- else {
244
- localStorage.removeItem(this.storageKeys.expiresAt);
245
- }
171
+ get storageKeys() {
172
+ return {
173
+ access: this.keyFor("access_token"),
174
+ refresh: this.keyFor("refresh_token"),
175
+ rool: this.keyFor("rool_token"),
176
+ expiresAt: this.keyFor("token_expires_at"),
177
+ };
246
178
  }
247
- writeRoolToken(token) {
248
- if (token) {
249
- localStorage.setItem(this.storageKeys.rool, token);
250
- }
251
- else {
252
- localStorage.removeItem(this.storageKeys.rool);
179
+ get endpointHash() {
180
+ let hash = 5381;
181
+ for (const character of this.authUrl) {
182
+ hash = ((hash << 5) + hash) ^ character.charCodeAt(0);
253
183
  }
254
- }
255
- clearTokens() {
256
- this.writeTokens(null, null, null);
257
- this.writeRoolToken(null);
184
+ return (hash >>> 0).toString(16).padStart(8, "0");
258
185
  }
259
186
  readAccessToken() {
260
- return localStorage.getItem(this.storageKeys.access);
187
+ return this.readString(this.storageKeys.access);
261
188
  }
262
189
  readRoolToken() {
263
- return localStorage.getItem(this.storageKeys.rool) ?? '';
190
+ return this.readString(this.storageKeys.rool) ?? "";
264
191
  }
265
192
  readExpiresAt() {
266
- const raw = localStorage.getItem(this.storageKeys.expiresAt);
267
- if (!raw)
268
- return null;
269
- const parsed = Number.parseInt(raw, 10);
270
- return Number.isFinite(parsed) ? parsed : null;
193
+ const value = Number(this.readString(this.storageKeys.expiresAt));
194
+ return Number.isFinite(value) && value > 0 ? value : null;
271
195
  }
272
- // ===========================================================================
273
- // Private
274
- // ===========================================================================
275
- /**
276
- * Get a short hash of the auth URL for scoping storage by endpoint.
277
- */
278
- get endpointHash() {
279
- const url = this.authBaseUrl;
280
- // Simple djb2 hash
281
- let hash = 5381;
282
- for (let i = 0; i < url.length; i++) {
283
- hash = ((hash << 5) + hash) ^ url.charCodeAt(i);
284
- }
285
- return (hash >>> 0).toString(16).padStart(8, '0');
196
+ writeTokens(accessToken, refreshToken, roolToken, expiresAt) {
197
+ this.writeOrRemove(this.storageKeys.access, accessToken);
198
+ this.writeOrRemove(this.storageKeys.refresh, refreshToken);
199
+ this.writeOrRemove(this.storageKeys.rool, roolToken);
200
+ this.writeOrRemove(this.storageKeys.expiresAt, expiresAt === null ? null : Math.floor(expiresAt).toString());
286
201
  }
287
- async tryRefreshToken() {
288
- // Deduplicate concurrent refresh attempts
289
- if (this.refreshPromise) {
202
+ writeOrRemove(key, value) {
203
+ if (value)
204
+ this.writeString(key, value);
205
+ else
206
+ this.removeString(key);
207
+ }
208
+ clearTokens() {
209
+ this.writeTokens(null, null, null, null);
210
+ }
211
+ async refresh() {
212
+ if (this.refreshPromise)
290
213
  return this.refreshPromise;
291
- }
292
- const refreshToken = localStorage.getItem(this.storageKeys.refresh);
214
+ const refreshToken = this.readString(this.storageKeys.refresh);
293
215
  if (!refreshToken)
294
216
  return false;
295
- const roolToken = localStorage.getItem(this.storageKeys.rool);
296
- this.refreshPromise = (async () => {
297
- let response;
298
- try {
299
- response = await fetch(`${this.authBaseUrl}/refresh`, {
300
- method: 'POST',
301
- headers: { 'Content-Type': 'application/json' },
302
- body: JSON.stringify({
303
- refresh_token: refreshToken,
304
- rool_token: roolToken,
305
- }),
306
- });
307
- }
308
- catch (error) {
309
- // Network error - don't clear tokens, might work next time
310
- this.logger.warn('[RoolClient] Token refresh network error:', error);
311
- return false;
312
- }
313
- // 400/401 = refresh token is invalid, clear everything
314
- if (response.status === 400 || response.status === 401) {
315
- this.logger.warn('[RoolClient] Refresh token invalid, clearing credentials');
316
- this.clearTokens();
317
- this.notifyAuthState(false);
318
- return false;
319
- }
320
- // Other HTTP errors - don't clear tokens, might be transient
321
- if (!response.ok) {
322
- this.logger.warn(`[RoolClient] Token refresh failed: ${response.status} ${response.statusText}`);
323
- return false;
324
- }
325
- // Success - parse and store new tokens
326
- try {
327
- const data = await response.json();
328
- const accessToken = data.id_token ?? null;
329
- const nextRefreshToken = data.refresh_token ?? refreshToken;
330
- const expiresAt = data.expires_in ? Date.now() + data.expires_in * 1000 : NaN;
331
- if (!accessToken || !Number.isFinite(expiresAt)) {
332
- this.logger.error('[RoolClient] Refresh response missing id_token or expires_in');
333
- return false;
334
- }
335
- this.writeTokens(accessToken, nextRefreshToken, expiresAt);
336
- this.writeRoolToken(data.rool_token ?? null);
337
- this.scheduleTokenRefresh();
338
- return true;
339
- }
340
- catch (error) {
341
- this.logger.error('[RoolClient] Failed to parse refresh response:', error);
342
- return false;
343
- }
344
- })().finally(() => {
217
+ const roolToken = this.readString(this.storageKeys.rool);
218
+ this.refreshPromise = this.performRefresh(refreshToken, roolToken).finally(() => {
345
219
  this.refreshPromise = null;
346
220
  });
347
221
  return this.refreshPromise;
348
222
  }
349
- listenForVisibility() {
350
- if (typeof document === 'undefined')
351
- return;
352
- if (this.boundVisibilityHandler)
353
- return;
354
- this.boundVisibilityHandler = () => {
355
- if (document.visibilityState === 'visible') {
356
- this.scheduleTokenRefresh();
357
- }
358
- };
359
- document.addEventListener('visibilitychange', this.boundVisibilityHandler);
360
- }
361
- cancelScheduledRefresh() {
362
- if (this.refreshTimeoutId !== null) {
363
- clearTimeout(this.refreshTimeoutId);
364
- this.refreshTimeoutId = null;
365
- }
366
- }
367
- decodeAuthUser(accessToken) {
223
+ async performRefresh(refreshToken, roolToken) {
224
+ let response;
368
225
  try {
369
- const payload = JSON.parse(atob(accessToken.split('.')[1]));
370
- return {
371
- email: payload.email || null,
372
- name: payload.name || null,
373
- };
226
+ response = await this.fetchAuth("/refresh", {
227
+ method: "POST",
228
+ headers: { "Content-Type": "application/json" },
229
+ body: JSON.stringify({
230
+ refresh_token: refreshToken,
231
+ rool_token: roolToken,
232
+ }),
233
+ });
374
234
  }
375
235
  catch (error) {
376
- this.logger.error('[RoolClient] Failed to decode token:', error);
377
- return { email: null, name: null };
236
+ console.warn("[RoolAuth] Token refresh network error:", error);
237
+ return false;
238
+ }
239
+ if (response.status === 400 || response.status === 401) {
240
+ await this.logout();
241
+ return false;
378
242
  }
243
+ if (!response.ok)
244
+ return false;
245
+ const data = await readTokenResponse(response);
246
+ return (!!data &&
247
+ this.acceptTokenResponse(data, {
248
+ refreshToken,
249
+ roolToken,
250
+ }));
251
+ }
252
+ }
253
+ async function readTokenResponse(response) {
254
+ try {
255
+ return (await response.json());
256
+ }
257
+ catch {
258
+ return null;
379
259
  }
380
260
  }
381
261
  //# sourceMappingURL=auth-base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-base.js","sourceRoot":"","sources":["../src/auth-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-base.js","sourceRoot":"","sources":["../src/auth-base.ts"],"names":[],"mappings":"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"}