@rool-dev/sdk 0.12.5 → 2.0.0-dev.0745af4

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 (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +63 -951
  3. package/assets/rool-logo.svg +5 -0
  4. package/assets/rool-wordmark-dark.svg +7 -0
  5. package/assets/rool-wordmark.svg +7 -0
  6. package/dist/agents.d.ts +143 -0
  7. package/dist/agents.d.ts.map +1 -0
  8. package/dist/agents.js +583 -0
  9. package/dist/agents.js.map +1 -0
  10. package/dist/auth-base.d.ts +43 -88
  11. package/dist/auth-base.d.ts.map +1 -1
  12. package/dist/auth-base.js +178 -302
  13. package/dist/auth-base.js.map +1 -1
  14. package/dist/auth-browser.d.ts +7 -25
  15. package/dist/auth-browser.d.ts.map +1 -1
  16. package/dist/auth-browser.js +45 -82
  17. package/dist/auth-browser.js.map +1 -1
  18. package/dist/auth-native.d.ts +9 -56
  19. package/dist/auth-native.d.ts.map +1 -1
  20. package/dist/auth-native.js +88 -177
  21. package/dist/auth-native.js.map +1 -1
  22. package/dist/auth-node.d.ts +32 -36
  23. package/dist/auth-node.d.ts.map +1 -1
  24. package/dist/auth-node.js +338 -265
  25. package/dist/auth-node.js.map +1 -1
  26. package/dist/auth-url.d.ts +6 -0
  27. package/dist/auth-url.d.ts.map +1 -0
  28. package/dist/auth-url.js +30 -0
  29. package/dist/auth-url.js.map +1 -0
  30. package/dist/client.d.ts +37 -290
  31. package/dist/client.d.ts.map +1 -1
  32. package/dist/client.js +331 -635
  33. package/dist/client.js.map +1 -1
  34. package/dist/events.d.ts +40 -0
  35. package/dist/events.d.ts.map +1 -0
  36. package/dist/events.js +175 -0
  37. package/dist/events.js.map +1 -0
  38. package/dist/files.d.ts +176 -0
  39. package/dist/files.d.ts.map +1 -0
  40. package/dist/files.js +857 -0
  41. package/dist/files.js.map +1 -0
  42. package/dist/index.d.ts +16 -19
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +7 -20
  45. package/dist/index.js.map +1 -1
  46. package/dist/machine.d.ts +51 -0
  47. package/dist/machine.d.ts.map +1 -0
  48. package/dist/machine.js +142 -0
  49. package/dist/machine.js.map +1 -0
  50. package/dist/problem.d.ts +11 -0
  51. package/dist/problem.d.ts.map +1 -0
  52. package/dist/problem.js +20 -0
  53. package/dist/problem.js.map +1 -0
  54. package/dist/structured.d.ts +84 -0
  55. package/dist/structured.d.ts.map +1 -0
  56. package/dist/structured.js +405 -0
  57. package/dist/structured.js.map +1 -0
  58. package/dist/types.d.ts +133 -520
  59. package/dist/types.d.ts.map +1 -1
  60. package/package.json +24 -22
  61. package/dist/auth.d.ts +0 -99
  62. package/dist/auth.d.ts.map +0 -1
  63. package/dist/auth.js +0 -217
  64. package/dist/auth.js.map +0 -1
  65. package/dist/client-info.d.ts +0 -18
  66. package/dist/client-info.d.ts.map +0 -1
  67. package/dist/client-info.js +0 -25
  68. package/dist/client-info.js.map +0 -1
  69. package/dist/event-emitter.d.ts +0 -45
  70. package/dist/event-emitter.d.ts.map +0 -1
  71. package/dist/event-emitter.js +0 -86
  72. package/dist/event-emitter.js.map +0 -1
  73. package/dist/graphql.d.ts +0 -90
  74. package/dist/graphql.d.ts.map +0 -1
  75. package/dist/graphql.js +0 -471
  76. package/dist/graphql.js.map +0 -1
  77. package/dist/logger.d.ts +0 -13
  78. package/dist/logger.d.ts.map +0 -1
  79. package/dist/logger.js +0 -17
  80. package/dist/logger.js.map +0 -1
  81. package/dist/path.d.ts +0 -6
  82. package/dist/path.d.ts.map +0 -1
  83. package/dist/path.js +0 -47
  84. package/dist/path.js.map +0 -1
  85. package/dist/reroute.d.ts +0 -22
  86. package/dist/reroute.d.ts.map +0 -1
  87. package/dist/reroute.js +0 -70
  88. package/dist/reroute.js.map +0 -1
  89. package/dist/rest.d.ts +0 -54
  90. package/dist/rest.d.ts.map +0 -1
  91. package/dist/rest.js +0 -171
  92. package/dist/rest.js.map +0 -1
  93. package/dist/router.d.ts +0 -20
  94. package/dist/router.d.ts.map +0 -1
  95. package/dist/router.js +0 -54
  96. package/dist/router.js.map +0 -1
  97. package/dist/space-session.d.ts +0 -30
  98. package/dist/space-session.d.ts.map +0 -1
  99. package/dist/space-session.js +0 -83
  100. package/dist/space-session.js.map +0 -1
  101. package/dist/space.d.ts +0 -161
  102. package/dist/space.d.ts.map +0 -1
  103. package/dist/space.js +0 -618
  104. package/dist/space.js.map +0 -1
  105. package/dist/subscription.d.ts +0 -36
  106. package/dist/subscription.d.ts.map +0 -1
  107. package/dist/subscription.js +0 -419
  108. package/dist/subscription.js.map +0 -1
  109. package/dist/webdav.d.ts +0 -171
  110. package/dist/webdav.d.ts.map +0 -1
  111. package/dist/webdav.js +0 -481
  112. package/dist/webdav.js.map +0 -1
@@ -1,101 +1,56 @@
1
- import type { AuthProvider, AuthTokens, AuthUser } from './types.js';
2
- import { type Logger } from './logger.js';
3
- export interface BaseTokenAuthConfig {
4
- /** Auth URL (e.g. https://rool.dev/auth). Injected by RoolClient if omitted. */
5
- authUrl?: string;
6
- /** Injected by RoolClient if omitted. */
7
- logger?: Logger;
8
- /** Injected by RoolClient if omitted, so auth-state reaches client events. */
9
- onAuthStateChanged?: (authenticated: boolean) => void;
1
+ import { type AuthEndpointConfig } from "./auth-url.js";
2
+ import type { RoolAuth, RoolRequestTokens } from "./types.js";
3
+ export interface TokenAuthConfig extends AuthEndpointConfig {
4
+ fetch?: typeof globalThis.fetch;
10
5
  }
11
- export declare abstract class BaseTokenAuthProvider implements AuthProvider {
12
- protected logger: Logger;
13
- private _authUrl;
14
- private _onAuthStateChanged;
6
+ export interface AuthTokenResponse {
7
+ id_token?: unknown;
8
+ refresh_token?: unknown;
9
+ rool_token?: unknown;
10
+ expires_in?: unknown;
11
+ }
12
+ export type EmailChangeErrorCode = "missing_token" | "invalid_token" | "missing_email" | "invalid_email" | "account_not_found" | "account_suspended" | "same_email" | "email_in_use" | "send_failed" | "internal_error";
13
+ export declare class EmailChangeError extends Error {
14
+ readonly code: EmailChangeErrorCode;
15
+ constructor(code: EmailChangeErrorCode, message: string);
16
+ }
17
+ export declare abstract class TokenAuth implements RoolAuth {
18
+ private readonly authUrl;
19
+ private readonly fetchRequest;
20
+ private readonly listeners;
15
21
  private refreshPromise;
16
- private refreshTimeoutId;
17
- private boundVisibilityHandler;
18
- constructor(config?: BaseTokenAuthConfig);
19
- setAuthUrl(url: string): void;
20
- setLogger(logger: Logger): void;
21
- setAuthStateChangedHandler(handler: (authenticated: boolean) => void): void;
22
- abstract initialize(): boolean;
23
- abstract login(appName: string, params?: Record<string, string>): Promise<void> | void;
24
- abstract signup(appName: string, params?: Record<string, string>): Promise<void> | void;
25
- /**
26
- * Check if user is currently authenticated.
27
- *
28
- * This reports identity (do we hold credentials), NOT server reachability.
29
- * It deliberately does not perform a network refresh: a backend outage must
30
- * not read as "logged out". A genuinely invalid/expired refresh token
31
- * surfaces later as a 401 on first real use, which clears tokens and fires
32
- * onAuthStateChanged(false) — the only path that ends the session.
33
- */
22
+ constructor(config?: TokenAuthConfig);
23
+ abstract initialize(): Promise<boolean>;
24
+ abstract login(appName: string, params?: Record<string, string>): Promise<void>;
25
+ abstract signup(appName: string, params?: Record<string, string>): Promise<void>;
34
26
  isAuthenticated(): Promise<boolean>;
35
- /**
36
- * Get current access token and rool token, refreshing if expired.
37
- * Returns undefined if not authenticated.
38
- */
39
- getTokens(): Promise<{
40
- accessToken: string;
41
- roolToken: string;
42
- } | undefined>;
43
- /**
44
- * Get auth identity decoded from JWT token.
45
- */
46
- getAuthUser(): AuthUser;
47
- /**
48
- * Complete an email verification flow. Exchanges a verify JWT (from the
49
- * verification email link) for a fresh token set and signs the user in.
50
- */
27
+ readonly getTokens: () => Promise<RoolRequestTokens | undefined>;
28
+ readonly logout: () => Promise<void>;
29
+ onAuthStateChanged(listener: (authenticated: boolean) => void): () => void;
51
30
  verify(token: string): Promise<boolean>;
52
- replaceTokens(tokens: AuthTokens): void;
53
- /**
54
- * Logout - clear all tokens and state.
55
- */
56
- logout(): void;
57
- /**
58
- * Destroy auth manager - clear refresh timers and listeners.
59
- */
60
- destroy(): void;
61
- /** Auth URL without trailing slash */
31
+ setPassword(password: string): Promise<void>;
32
+ requestEmailChange(newEmail: string): Promise<void>;
62
33
  protected get authBaseUrl(): string;
63
- protected notifyAuthState(authenticated: boolean): void;
64
- /** Persist a fresh token set and (re)arm the background refresh timer. */
65
- protected acceptTokens(accessToken: string, refreshToken: string | null, roolToken: string | null, expiresAt: number): void;
66
- /** Arm auto-refresh + visibility re-scheduling. Call from initialize(). */
67
- protected initBase(): void;
68
- /**
69
- * Overridable hook: clear subclass-owned transient state on logout/cancel
70
- * (e.g. an in-flight OAuth `state` or PKCE verifier). No-op by default.
71
- */
34
+ protected fetchAuth(path: string, init: RequestInit): Promise<Response>;
35
+ protected acceptTokenResponse(data: AuthTokenResponse, fallback?: {
36
+ refreshToken?: string | null;
37
+ roolToken?: string | null;
38
+ }): boolean;
39
+ protected emitAuthState(authenticated: boolean): void;
72
40
  protected clearTransientState(): void;
73
- protected get storagePrefix(): string;
74
- /** Build a storage key scoped to this auth endpoint. */
75
41
  protected keyFor(name: string): string;
76
- protected get storageKeys(): {
77
- readonly access: `${string}access_token`;
78
- readonly refresh: `${string}refresh_token`;
79
- readonly rool: `${string}rool_token`;
80
- readonly expiresAt: `${string}token_expires_at`;
81
- };
82
42
  protected readString(key: string): string | null;
83
43
  protected writeString(key: string, value: string): void;
84
44
  protected removeString(key: string): void;
85
- protected scheduleTokenRefresh(): void;
86
- protected writeTokens(accessToken: string | null, refreshToken: string | null, expiresAt: number | null): void;
87
- protected writeRoolToken(token: string | null): void;
88
- protected clearTokens(): void;
89
- protected readAccessToken(): string | null;
90
- protected readRoolToken(): string;
91
- protected readExpiresAt(): number | null;
92
- /**
93
- * Get a short hash of the auth URL for scoping storage by endpoint.
94
- */
45
+ private get storageKeys();
95
46
  private get endpointHash();
96
- private tryRefreshToken;
97
- private listenForVisibility;
98
- private cancelScheduledRefresh;
99
- private decodeAuthUser;
47
+ private readAccessToken;
48
+ private readRoolToken;
49
+ private readExpiresAt;
50
+ private writeTokens;
51
+ private writeOrRemove;
52
+ private clearTokens;
53
+ private refresh;
54
+ private performRefresh;
100
55
  }
101
56
  //# sourceMappingURL=auth-base.d.ts.map
@@ -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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"}