@rool-dev/sdk 0.12.5 → 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 +434 -786
  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 -302
  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 -36
  19. package/dist/auth-node.d.ts.map +1 -1
  20. package/dist/auth-node.js +338 -265
  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 -290
  27. package/dist/client.d.ts.map +1 -1
  28. package/dist/client.js +275 -637
  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 -19
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +7 -20
  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 -99
  58. package/dist/auth.d.ts.map +0 -1
  59. package/dist/auth.js +0 -217
  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 -471
  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,191 +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}`);
100
- 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);
63
+ if (!response.ok)
108
64
  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');
65
+ const data = await readTokenResponse(response);
66
+ if (!data || !this.acceptTokenResponse(data))
115
67
  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
- // Notify only on a real transition, so concurrent 401-driven logouts
130
- // (parallel in-flight requests) emit a single sign-out.
131
- const wasAuthenticated = this.readAccessToken() !== null;
132
- this.clearTokens();
133
- this.clearTransientState();
134
- this.cancelScheduledRefresh();
135
- if (wasAuthenticated)
136
- this.notifyAuthState(false);
137
- }
138
- /**
139
- * Destroy auth manager - clear refresh timers and listeners.
140
- */
141
- destroy() {
142
- this.cancelScheduledRefresh();
143
- if (this.boundVisibilityHandler) {
144
- document.removeEventListener('visibilitychange', this.boundVisibilityHandler);
145
- 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);
146
111
  }
112
+ throw new Error(`email-change failed: ${response.status}`);
147
113
  }
148
- // ===========================================================================
149
- // Protected helpers for subclasses
150
- // ===========================================================================
151
- /** Auth URL without trailing slash */
152
114
  get authBaseUrl() {
153
- return this._authUrl;
115
+ return this.authUrl;
154
116
  }
155
- notifyAuthState(authenticated) {
156
- this._onAuthStateChanged(authenticated);
117
+ fetchAuth(path, init) {
118
+ return this.fetchRequest(`${this.authUrl}${path}`, init);
157
119
  }
158
- /** Persist a fresh token set and (re)arm the background refresh timer. */
159
- acceptTokens(accessToken, refreshToken, roolToken, expiresAt) {
160
- this.writeTokens(accessToken, refreshToken, expiresAt);
161
- this.writeRoolToken(roolToken);
162
- 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;
163
138
  }
164
- /** Arm auto-refresh + visibility re-scheduling. Call from initialize(). */
165
- initBase() {
166
- this.scheduleTokenRefresh();
167
- this.listenForVisibility();
139
+ emitAuthState(authenticated) {
140
+ for (const listener of this.listeners)
141
+ listener(authenticated);
168
142
  }
169
- /**
170
- * Overridable hook: clear subclass-owned transient state on logout/cancel
171
- * (e.g. an in-flight OAuth `state` or PKCE verifier). No-op by default.
172
- */
173
143
  clearTransientState() { }
174
- get storagePrefix() {
175
- return `${DEFAULT_STORAGE_PREFIX}${this.endpointHash}_`;
176
- }
177
- /** Build a storage key scoped to this auth endpoint. */
178
144
  keyFor(name) {
179
- return `${this.storagePrefix}${name}`;
180
- }
181
- get storageKeys() {
182
- const prefix = this.storagePrefix;
183
- return {
184
- access: `${prefix}access_token`,
185
- refresh: `${prefix}refresh_token`,
186
- rool: `${prefix}rool_token`,
187
- expiresAt: `${prefix}token_expires_at`,
188
- };
145
+ return `${STORAGE_PREFIX}${this.endpointHash}_${name}`;
189
146
  }
190
147
  readString(key) {
191
148
  try {
@@ -200,7 +157,7 @@ export class BaseTokenAuthProvider {
200
157
  localStorage.setItem(key, value);
201
158
  }
202
159
  catch {
203
- // Ignore storage restrictions
160
+ // Storage can be unavailable in restricted browser contexts.
204
161
  }
205
162
  }
206
163
  removeString(key) {
@@ -208,178 +165,97 @@ export class BaseTokenAuthProvider {
208
165
  localStorage.removeItem(key);
209
166
  }
210
167
  catch {
211
- // Ignore storage restrictions
212
- }
213
- }
214
- scheduleTokenRefresh() {
215
- this.cancelScheduledRefresh();
216
- const expiresAt = this.readExpiresAt();
217
- if (!expiresAt)
218
- return;
219
- const refreshAt = expiresAt - REFRESH_BUFFER_MS;
220
- const delay = refreshAt - Date.now();
221
- if (delay <= 0) {
222
- // Already needs refresh
223
- void this.tryRefreshToken();
224
- }
225
- else {
226
- this.refreshTimeoutId = setTimeout(() => {
227
- void this.tryRefreshToken();
228
- }, delay);
168
+ // Storage can be unavailable in restricted browser contexts.
229
169
  }
230
170
  }
231
- writeTokens(accessToken, refreshToken, expiresAt) {
232
- if (accessToken) {
233
- localStorage.setItem(this.storageKeys.access, accessToken);
234
- }
235
- else {
236
- localStorage.removeItem(this.storageKeys.access);
237
- }
238
- if (refreshToken) {
239
- localStorage.setItem(this.storageKeys.refresh, refreshToken);
240
- }
241
- else {
242
- localStorage.removeItem(this.storageKeys.refresh);
243
- }
244
- if (expiresAt !== null && Number.isFinite(expiresAt)) {
245
- localStorage.setItem(this.storageKeys.expiresAt, Math.floor(expiresAt).toString());
246
- }
247
- else {
248
- localStorage.removeItem(this.storageKeys.expiresAt);
249
- }
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
+ };
250
178
  }
251
- writeRoolToken(token) {
252
- if (token) {
253
- localStorage.setItem(this.storageKeys.rool, token);
254
- }
255
- else {
256
- 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);
257
183
  }
258
- }
259
- clearTokens() {
260
- this.writeTokens(null, null, null);
261
- this.writeRoolToken(null);
184
+ return (hash >>> 0).toString(16).padStart(8, "0");
262
185
  }
263
186
  readAccessToken() {
264
- return localStorage.getItem(this.storageKeys.access);
187
+ return this.readString(this.storageKeys.access);
265
188
  }
266
189
  readRoolToken() {
267
- return localStorage.getItem(this.storageKeys.rool) ?? '';
190
+ return this.readString(this.storageKeys.rool) ?? "";
268
191
  }
269
192
  readExpiresAt() {
270
- const raw = localStorage.getItem(this.storageKeys.expiresAt);
271
- if (!raw)
272
- return null;
273
- const parsed = Number.parseInt(raw, 10);
274
- return Number.isFinite(parsed) ? parsed : null;
193
+ const value = Number(this.readString(this.storageKeys.expiresAt));
194
+ return Number.isFinite(value) && value > 0 ? value : null;
275
195
  }
276
- // ===========================================================================
277
- // Private
278
- // ===========================================================================
279
- /**
280
- * Get a short hash of the auth URL for scoping storage by endpoint.
281
- */
282
- get endpointHash() {
283
- const url = this.authBaseUrl;
284
- // Simple djb2 hash
285
- let hash = 5381;
286
- for (let i = 0; i < url.length; i++) {
287
- hash = ((hash << 5) + hash) ^ url.charCodeAt(i);
288
- }
289
- 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());
201
+ }
202
+ writeOrRemove(key, value) {
203
+ if (value)
204
+ this.writeString(key, value);
205
+ else
206
+ this.removeString(key);
290
207
  }
291
- async tryRefreshToken() {
292
- // Deduplicate concurrent refresh attempts
293
- if (this.refreshPromise) {
208
+ clearTokens() {
209
+ this.writeTokens(null, null, null, null);
210
+ }
211
+ async refresh() {
212
+ if (this.refreshPromise)
294
213
  return this.refreshPromise;
295
- }
296
- const refreshToken = localStorage.getItem(this.storageKeys.refresh);
214
+ const refreshToken = this.readString(this.storageKeys.refresh);
297
215
  if (!refreshToken)
298
216
  return false;
299
- const roolToken = localStorage.getItem(this.storageKeys.rool);
300
- this.refreshPromise = (async () => {
301
- let response;
302
- try {
303
- response = await fetch(`${this.authBaseUrl}/refresh`, {
304
- method: 'POST',
305
- headers: { 'Content-Type': 'application/json' },
306
- body: JSON.stringify({
307
- refresh_token: refreshToken,
308
- rool_token: roolToken,
309
- }),
310
- });
311
- }
312
- catch (error) {
313
- // Network error - don't clear tokens, might work next time
314
- this.logger.warn('[RoolClient] Token refresh network error:', error);
315
- return false;
316
- }
317
- // 400/401 = refresh token is invalid, clear everything
318
- if (response.status === 400 || response.status === 401) {
319
- this.logger.warn('[RoolClient] Refresh token invalid, clearing credentials');
320
- this.clearTokens();
321
- this.notifyAuthState(false);
322
- return false;
323
- }
324
- // Other HTTP errors - don't clear tokens, might be transient
325
- if (!response.ok) {
326
- this.logger.warn(`[RoolClient] Token refresh failed: ${response.status} ${response.statusText}`);
327
- return false;
328
- }
329
- // Success - parse and store new tokens
330
- try {
331
- const data = await response.json();
332
- const accessToken = data.id_token ?? null;
333
- const nextRefreshToken = data.refresh_token ?? refreshToken;
334
- const expiresAt = data.expires_in ? Date.now() + data.expires_in * 1000 : NaN;
335
- if (!accessToken || !Number.isFinite(expiresAt)) {
336
- this.logger.error('[RoolClient] Refresh response missing id_token or expires_in');
337
- return false;
338
- }
339
- this.writeTokens(accessToken, nextRefreshToken, expiresAt);
340
- this.writeRoolToken(data.rool_token ?? null);
341
- this.scheduleTokenRefresh();
342
- return true;
343
- }
344
- catch (error) {
345
- this.logger.error('[RoolClient] Failed to parse refresh response:', error);
346
- return false;
347
- }
348
- })().finally(() => {
217
+ const roolToken = this.readString(this.storageKeys.rool);
218
+ this.refreshPromise = this.performRefresh(refreshToken, roolToken).finally(() => {
349
219
  this.refreshPromise = null;
350
220
  });
351
221
  return this.refreshPromise;
352
222
  }
353
- listenForVisibility() {
354
- if (typeof document === 'undefined')
355
- return;
356
- if (this.boundVisibilityHandler)
357
- return;
358
- this.boundVisibilityHandler = () => {
359
- if (document.visibilityState === 'visible') {
360
- this.scheduleTokenRefresh();
361
- }
362
- };
363
- document.addEventListener('visibilitychange', this.boundVisibilityHandler);
364
- }
365
- cancelScheduledRefresh() {
366
- if (this.refreshTimeoutId !== null) {
367
- clearTimeout(this.refreshTimeoutId);
368
- this.refreshTimeoutId = null;
369
- }
370
- }
371
- decodeAuthUser(accessToken) {
223
+ async performRefresh(refreshToken, roolToken) {
224
+ let response;
372
225
  try {
373
- const payload = JSON.parse(atob(accessToken.split('.')[1]));
374
- return {
375
- email: payload.email || null,
376
- name: payload.name || null,
377
- };
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
+ });
378
234
  }
379
235
  catch (error) {
380
- this.logger.error('[RoolClient] Failed to decode token:', error);
381
- 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;
382
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;
383
259
  }
384
260
  }
385
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":"AAAA,OAAO,EAAE,cAAc,EAA2B,MAAM,eAAe,CAAC;AAGxE,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACzC,MAAM,cAAc,GAAG,OAAO,CAAC;AAyB/B,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAE9B;IADX,YACW,IAA0B,EACnC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,SAAI,GAAJ,IAAI,CAAsB;QAInC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAgB,SAAS;IACZ,OAAO,CAAS;IAChB,YAAY,CAA0B;IACtC,SAAS,GAAG,IAAI,GAAG,EAAoC,CAAC;IACjE,cAAc,GAA4B,IAAI,CAAC;IAEvD,YAAY,SAA0B,EAAE;QACtC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxE,CAAC;IAYD,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC;IACzC,CAAC;IAEQ,SAAS,GAAG,KAAK,IAA4C,EAAE;QACtE,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,YAAY,GAChB,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,SAAS,GAAG,iBAAiB,CAAC;QACpE,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC9C,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW;gBAAE,OAAO,SAAS,CAAC;QACrC,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;IAC1D,CAAC,CAAC;IAEO,MAAM,GAAG,KAAK,IAAmB,EAAE;QAC1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,gBAAgB;YAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,kBAAkB,CAAC,QAA0C;QAC3D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;gBACpD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAE/B,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,CAAC,WAAW,EAAE;aAC9C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CACJ,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,IAAI,EAAE,aAAa,KAAK,QAAQ,CAAC;QAChE,MAAM,QAAQ,GACZ,IAAI;YACJ,eAAe;YACf,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,CAAC,WAAW,EAAE;aAC9C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,EAAE;YAAE,OAAO;QAExB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAG7C,CAAC;QACT,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,gBAAgB,CACxB,IAAI,CAAC,KAA6B,EAClC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAC3B,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAc,WAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAES,SAAS,CAAC,IAAY,EAAE,IAAiB;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAES,mBAAmB,CAC3B,IAAuB,EACvB,WAAwE,EAAE;QAE1E,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IACE,OAAO,WAAW,KAAK,QAAQ;YAC/B,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,SAAS,IAAI,CAAC,EACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,YAAY,GAChB,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ;YACpC,CAAC,CAAC,IAAI,CAAC,aAAa;YACpB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;QACtC,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;YACjC,CAAC,CAAC,IAAI,CAAC,UAAU;YACjB,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI;gBACxB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,CACd,WAAW,EACX,YAAY,EACZ,SAAS,EACT,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAC9B,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAES,aAAa,CAAC,aAAsB;QAC5C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;IAES,mBAAmB,KAAU,CAAC;IAE9B,MAAM,CAAC,IAAY;QAC3B,OAAO,GAAG,cAAc,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;IACzD,CAAC;IAES,UAAU,CAAC,GAAW;QAC9B,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAES,WAAW,CAAC,GAAW,EAAE,KAAa;QAC9C,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAES,YAAY,CAAC,GAAW;QAChC,IAAI,CAAC;YACH,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAED,IAAY,WAAW;QACrB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YACnC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YACrC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC/B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;SAClC,CAAC;IACb,CAAC;IAED,IAAY,YAAY;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAEO,aAAa;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAEO,aAAa;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IAEO,WAAW,CACjB,WAA0B,EAC1B,YAA2B,EAC3B,SAAwB,EACxB,SAAwB;QAExB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAChB,IAAI,CAAC,WAAW,CAAC,SAAS,EAC1B,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAC7D,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,GAAW,EAAE,KAAoB;QACrD,IAAI,KAAK;YAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;YACnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC;QAEpD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,OAAO,CACxE,GAAG,EAAE;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC,CACF,CAAC;QACF,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,YAAoB,EACpB,SAAwB;QAExB,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,aAAa,EAAE,YAAY;oBAC3B,UAAU,EAAE,SAAS;iBACtB,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAE/B,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,CACL,CAAC,CAAC,IAAI;YACN,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;gBAC7B,YAAY;gBACZ,SAAS;aACV,CAAC,CACH,CAAC;IACJ,CAAC;CACF;AAED,KAAK,UAAU,iBAAiB,CAC9B,QAAkB;IAElB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}