@pawabase/client 0.0.0-stage → 0.1.0
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/README.md +313 -2
- package/dist/cjs/admin.d.ts +187 -0
- package/dist/cjs/admin.d.ts.map +1 -0
- package/dist/cjs/admin.js +235 -0
- package/dist/cjs/admin.js.map +1 -0
- package/dist/cjs/auth.d.ts +448 -0
- package/dist/cjs/auth.d.ts.map +1 -0
- package/dist/cjs/auth.js +1016 -0
- package/dist/cjs/auth.js.map +1 -0
- package/dist/cjs/client.d.ts +103 -0
- package/dist/cjs/client.d.ts.map +1 -0
- package/dist/cjs/client.js +144 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/data.d.ts +220 -0
- package/dist/cjs/data.d.ts.map +1 -0
- package/dist/cjs/data.js +490 -0
- package/dist/cjs/data.js.map +1 -0
- package/dist/cjs/errors.d.ts +167 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +316 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/files.d.ts +80 -0
- package/dist/cjs/files.d.ts.map +1 -0
- package/dist/cjs/files.js +167 -0
- package/dist/cjs/files.js.map +1 -0
- package/dist/cjs/functions.d.ts +66 -0
- package/dist/cjs/functions.d.ts.map +1 -0
- package/dist/cjs/functions.js +109 -0
- package/dist/cjs/functions.js.map +1 -0
- package/dist/cjs/http.d.ts +101 -0
- package/dist/cjs/http.d.ts.map +1 -0
- package/dist/cjs/http.js +249 -0
- package/dist/cjs/http.js.map +1 -0
- package/dist/cjs/index.d.ts +22 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +45 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/manage/access.d.ts +136 -0
- package/dist/cjs/manage/access.d.ts.map +1 -0
- package/dist/cjs/manage/access.js +162 -0
- package/dist/cjs/manage/access.js.map +1 -0
- package/dist/cjs/manage/automation.d.ts +106 -0
- package/dist/cjs/manage/automation.d.ts.map +1 -0
- package/dist/cjs/manage/automation.js +144 -0
- package/dist/cjs/manage/automation.js.map +1 -0
- package/dist/cjs/manage/base.d.ts +52 -0
- package/dist/cjs/manage/base.d.ts.map +1 -0
- package/dist/cjs/manage/base.js +69 -0
- package/dist/cjs/manage/base.js.map +1 -0
- package/dist/cjs/manage/data.d.ts +100 -0
- package/dist/cjs/manage/data.d.ts.map +1 -0
- package/dist/cjs/manage/data.js +141 -0
- package/dist/cjs/manage/data.js.map +1 -0
- package/dist/cjs/manage/files.d.ts +45 -0
- package/dist/cjs/manage/files.d.ts.map +1 -0
- package/dist/cjs/manage/files.js +73 -0
- package/dist/cjs/manage/files.js.map +1 -0
- package/dist/cjs/manage/functions.d.ts +48 -0
- package/dist/cjs/manage/functions.d.ts.map +1 -0
- package/dist/cjs/manage/functions.js +61 -0
- package/dist/cjs/manage/functions.js.map +1 -0
- package/dist/cjs/manage/index.d.ts +76 -0
- package/dist/cjs/manage/index.d.ts.map +1 -0
- package/dist/cjs/manage/index.js +134 -0
- package/dist/cjs/manage/index.js.map +1 -0
- package/dist/cjs/manage/lifecycle.d.ts +128 -0
- package/dist/cjs/manage/lifecycle.d.ts.map +1 -0
- package/dist/cjs/manage/lifecycle.js +167 -0
- package/dist/cjs/manage/lifecycle.js.map +1 -0
- package/dist/cjs/manage/mail.d.ts +16 -0
- package/dist/cjs/manage/mail.d.ts.map +1 -0
- package/dist/cjs/manage/mail.js +24 -0
- package/dist/cjs/manage/mail.js.map +1 -0
- package/dist/cjs/manage/observe.d.ts +149 -0
- package/dist/cjs/manage/observe.d.ts.map +1 -0
- package/dist/cjs/manage/observe.js +168 -0
- package/dist/cjs/manage/observe.js.map +1 -0
- package/dist/cjs/manage/realtime.d.ts +52 -0
- package/dist/cjs/manage/realtime.d.ts.map +1 -0
- package/dist/cjs/manage/realtime.js +71 -0
- package/dist/cjs/manage/realtime.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/realtime.d.ts +207 -0
- package/dist/cjs/realtime.d.ts.map +1 -0
- package/dist/cjs/realtime.js +704 -0
- package/dist/cjs/realtime.js.map +1 -0
- package/dist/cjs/session-store.d.ts +16 -0
- package/dist/cjs/session-store.d.ts.map +1 -0
- package/dist/cjs/session-store.js +37 -0
- package/dist/cjs/session-store.js.map +1 -0
- package/dist/cjs/typegen.d.ts +26 -0
- package/dist/cjs/typegen.d.ts.map +1 -0
- package/dist/cjs/typegen.js +167 -0
- package/dist/cjs/typegen.js.map +1 -0
- package/dist/cjs/types.d.ts +178 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +4 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/util.d.ts +27 -0
- package/dist/cjs/util.d.ts.map +1 -0
- package/dist/cjs/util.js +115 -0
- package/dist/cjs/util.js.map +1 -0
- package/dist/cjs/version.d.ts +2 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +5 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/admin.d.ts +187 -0
- package/dist/esm/admin.d.ts.map +1 -0
- package/dist/esm/admin.js +222 -0
- package/dist/esm/admin.js.map +1 -0
- package/dist/esm/auth.d.ts +448 -0
- package/dist/esm/auth.d.ts.map +1 -0
- package/dist/esm/auth.js +1012 -0
- package/dist/esm/auth.js.map +1 -0
- package/dist/esm/cli/gen-types.d.ts +2 -0
- package/dist/esm/cli/gen-types.d.ts.map +1 -0
- package/dist/esm/cli/gen-types.js +100 -0
- package/dist/esm/cli/gen-types.js.map +1 -0
- package/dist/esm/client.d.ts +103 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +139 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/data.d.ts +220 -0
- package/dist/esm/data.d.ts.map +1 -0
- package/dist/esm/data.js +485 -0
- package/dist/esm/data.js.map +1 -0
- package/dist/esm/errors.d.ts +167 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +293 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/files.d.ts +80 -0
- package/dist/esm/files.d.ts.map +1 -0
- package/dist/esm/files.js +162 -0
- package/dist/esm/files.js.map +1 -0
- package/dist/esm/functions.d.ts +66 -0
- package/dist/esm/functions.d.ts.map +1 -0
- package/dist/esm/functions.js +103 -0
- package/dist/esm/functions.js.map +1 -0
- package/dist/esm/http.d.ts +101 -0
- package/dist/esm/http.d.ts.map +1 -0
- package/dist/esm/http.js +245 -0
- package/dist/esm/http.js.map +1 -0
- package/dist/esm/index.d.ts +22 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/manage/access.d.ts +136 -0
- package/dist/esm/manage/access.d.ts.map +1 -0
- package/dist/esm/manage/access.js +155 -0
- package/dist/esm/manage/access.js.map +1 -0
- package/dist/esm/manage/automation.d.ts +106 -0
- package/dist/esm/manage/automation.d.ts.map +1 -0
- package/dist/esm/manage/automation.js +134 -0
- package/dist/esm/manage/automation.js.map +1 -0
- package/dist/esm/manage/base.d.ts +52 -0
- package/dist/esm/manage/base.d.ts.map +1 -0
- package/dist/esm/manage/base.js +63 -0
- package/dist/esm/manage/base.js.map +1 -0
- package/dist/esm/manage/data.d.ts +100 -0
- package/dist/esm/manage/data.d.ts.map +1 -0
- package/dist/esm/manage/data.js +130 -0
- package/dist/esm/manage/data.js.map +1 -0
- package/dist/esm/manage/files.d.ts +45 -0
- package/dist/esm/manage/files.d.ts.map +1 -0
- package/dist/esm/manage/files.js +68 -0
- package/dist/esm/manage/files.js.map +1 -0
- package/dist/esm/manage/functions.d.ts +48 -0
- package/dist/esm/manage/functions.d.ts.map +1 -0
- package/dist/esm/manage/functions.js +57 -0
- package/dist/esm/manage/functions.js.map +1 -0
- package/dist/esm/manage/index.d.ts +76 -0
- package/dist/esm/manage/index.d.ts.map +1 -0
- package/dist/esm/manage/index.js +115 -0
- package/dist/esm/manage/index.js.map +1 -0
- package/dist/esm/manage/lifecycle.d.ts +128 -0
- package/dist/esm/manage/lifecycle.d.ts.map +1 -0
- package/dist/esm/manage/lifecycle.js +161 -0
- package/dist/esm/manage/lifecycle.js.map +1 -0
- package/dist/esm/manage/mail.d.ts +16 -0
- package/dist/esm/manage/mail.d.ts.map +1 -0
- package/dist/esm/manage/mail.js +19 -0
- package/dist/esm/manage/mail.js.map +1 -0
- package/dist/esm/manage/observe.d.ts +149 -0
- package/dist/esm/manage/observe.d.ts.map +1 -0
- package/dist/esm/manage/observe.js +161 -0
- package/dist/esm/manage/observe.js.map +1 -0
- package/dist/esm/manage/realtime.d.ts +52 -0
- package/dist/esm/manage/realtime.d.ts.map +1 -0
- package/dist/esm/manage/realtime.js +66 -0
- package/dist/esm/manage/realtime.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/realtime.d.ts +207 -0
- package/dist/esm/realtime.d.ts.map +1 -0
- package/dist/esm/realtime.js +699 -0
- package/dist/esm/realtime.js.map +1 -0
- package/dist/esm/session-store.d.ts +16 -0
- package/dist/esm/session-store.d.ts.map +1 -0
- package/dist/esm/session-store.js +32 -0
- package/dist/esm/session-store.js.map +1 -0
- package/dist/esm/typegen.d.ts +26 -0
- package/dist/esm/typegen.d.ts.map +1 -0
- package/dist/esm/typegen.js +163 -0
- package/dist/esm/typegen.js.map +1 -0
- package/dist/esm/types.d.ts +178 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +3 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/util.d.ts +27 -0
- package/dist/esm/util.d.ts.map +1 -0
- package/dist/esm/util.js +102 -0
- package/dist/esm/util.js.map +1 -0
- package/dist/esm/version.d.ts +2 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/version.js.map +1 -0
- package/package.json +84 -4
- package/src/admin.ts +311 -0
- package/src/auth.ts +1180 -0
- package/src/cli/gen-types.ts +105 -0
- package/src/client.ts +189 -0
- package/src/data.ts +576 -0
- package/src/errors.ts +330 -0
- package/src/files.ts +208 -0
- package/src/functions.ts +131 -0
- package/src/http.ts +354 -0
- package/src/index.ts +56 -0
- package/src/manage/access.ts +206 -0
- package/src/manage/automation.ts +162 -0
- package/src/manage/base.ts +83 -0
- package/src/manage/data.ts +159 -0
- package/src/manage/files.ts +79 -0
- package/src/manage/functions.ts +69 -0
- package/src/manage/index.ts +132 -0
- package/src/manage/lifecycle.ts +208 -0
- package/src/manage/mail.ts +22 -0
- package/src/manage/observe.ts +226 -0
- package/src/manage/realtime.ts +95 -0
- package/src/realtime.ts +765 -0
- package/src/session-store.ts +36 -0
- package/src/typegen.ts +192 -0
- package/src/types.ts +195 -0
- package/src/util.ts +114 -0
- package/src/version.ts +1 -0
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import type { HttpClient, TokenProvider } from "./http.js";
|
|
2
|
+
import { type SessionStorage } from "./session-store.js";
|
|
3
|
+
import type { AuthSettings, Identity, Invitation, MfaEnrollment, MfaStatus, OrgMember, OrgRole, Organization, Session, SessionInfo, SignInEvent, Team, User } from "./types.js";
|
|
4
|
+
export type AuthChangeEvent = "INITIAL_SESSION" | "SIGNED_IN" | "SIGNED_OUT" | "TOKEN_REFRESHED" | "USER_UPDATED";
|
|
5
|
+
export type AuthListener = (event: AuthChangeEvent, session: Session | null) => unknown;
|
|
6
|
+
export interface AuthOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Where the session lives. Default: `localStorage` in a browser, memory elsewhere.
|
|
9
|
+
* Pass your own (React Native's AsyncStorage, a cookie jar…) with `getItem`/`setItem`/`removeItem`.
|
|
10
|
+
*/
|
|
11
|
+
storage?: SessionStorage;
|
|
12
|
+
/** Key under which the session is stored. Default: derived from the URL and API key. */
|
|
13
|
+
storageKey?: string;
|
|
14
|
+
/** Keep the session between page loads. Default `true`. `false` keeps it in memory only. */
|
|
15
|
+
persistSession?: boolean;
|
|
16
|
+
/** Refresh the access token shortly before it expires. Default `true`. */
|
|
17
|
+
autoRefreshToken?: boolean;
|
|
18
|
+
/** Seconds before expiry at which the token counts as expiring. Default `60`. */
|
|
19
|
+
refreshMarginSeconds?: number;
|
|
20
|
+
/** Read tokens a social sign-in left in the URL fragment. Default `true` in browsers. */
|
|
21
|
+
detectSessionInUrl?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export type SignInResult = {
|
|
24
|
+
status: "signed_in";
|
|
25
|
+
session: Session;
|
|
26
|
+
} | {
|
|
27
|
+
status: "mfa_required";
|
|
28
|
+
mfaToken: string;
|
|
29
|
+
factors: string[];
|
|
30
|
+
/** Finish the sign-in with an authenticator or recovery code. */
|
|
31
|
+
verify: (code: string) => Promise<Session>;
|
|
32
|
+
};
|
|
33
|
+
export interface SignUpResult {
|
|
34
|
+
user: User;
|
|
35
|
+
/** `null` when the address must be confirmed first. */
|
|
36
|
+
session: Session | null;
|
|
37
|
+
verificationRequired: boolean;
|
|
38
|
+
}
|
|
39
|
+
export type UrlSessionResult = {
|
|
40
|
+
status: "signed_in";
|
|
41
|
+
session: Session;
|
|
42
|
+
} | {
|
|
43
|
+
status: "mfa_required";
|
|
44
|
+
mfaToken: string;
|
|
45
|
+
verify: (code: string) => Promise<Session>;
|
|
46
|
+
} | {
|
|
47
|
+
status: "linked";
|
|
48
|
+
provider: string;
|
|
49
|
+
} | {
|
|
50
|
+
status: "error";
|
|
51
|
+
error: string;
|
|
52
|
+
} | {
|
|
53
|
+
status: "none";
|
|
54
|
+
};
|
|
55
|
+
export interface UpdateUserInput {
|
|
56
|
+
name?: string;
|
|
57
|
+
avatar_url?: string;
|
|
58
|
+
/** Merged into `user_metadata`. */
|
|
59
|
+
data?: Record<string, unknown>;
|
|
60
|
+
password?: string;
|
|
61
|
+
/** Required when changing the password of an account that has one. */
|
|
62
|
+
current_password?: string;
|
|
63
|
+
/** Starts an email change: a confirmation link goes to the new address. */
|
|
64
|
+
email?: string;
|
|
65
|
+
}
|
|
66
|
+
interface WireSession extends Omit<Session, "user" | "expires_at"> {
|
|
67
|
+
user?: User;
|
|
68
|
+
expires_at?: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Sign-in, session lifecycle and everything about the signed-in person.
|
|
72
|
+
*
|
|
73
|
+
* The session is kept in storage, refreshed before it expires, and refreshed only
|
|
74
|
+
* once at a time: Akountz rotates refresh tokens and treats a reused one as theft,
|
|
75
|
+
* so two refreshes racing (two requests, or two tabs) would sign the user out.
|
|
76
|
+
* Concurrent callers share one refresh; across tabs the Web Locks API serialises it.
|
|
77
|
+
*/
|
|
78
|
+
export declare class AuthClient implements TokenProvider {
|
|
79
|
+
private readonly http;
|
|
80
|
+
private readonly options;
|
|
81
|
+
private session;
|
|
82
|
+
private readonly listeners;
|
|
83
|
+
private readonly storage;
|
|
84
|
+
private readonly persist;
|
|
85
|
+
private readonly storageKey;
|
|
86
|
+
private readonly autoRefresh;
|
|
87
|
+
private readonly margin;
|
|
88
|
+
private timer;
|
|
89
|
+
private inflight;
|
|
90
|
+
private readonly ready;
|
|
91
|
+
private disposers;
|
|
92
|
+
private disposed;
|
|
93
|
+
readonly mfa: AuthMfa;
|
|
94
|
+
readonly sessions: AuthSessions;
|
|
95
|
+
readonly orgs: AuthOrgs;
|
|
96
|
+
/** Browsers and apps the user has signed in from. */
|
|
97
|
+
readonly devices: AuthDevices;
|
|
98
|
+
/** Keys a user makes for themselves to call the API as themselves. */
|
|
99
|
+
readonly apiKeys: AuthApiKeys;
|
|
100
|
+
/** Passkeys (WebAuthn): register one, sign in with one. */
|
|
101
|
+
readonly passkeys: AuthPasskeys;
|
|
102
|
+
constructor(http: HttpClient, options?: AuthOptions & {
|
|
103
|
+
project?: string | undefined;
|
|
104
|
+
environment?: string | undefined;
|
|
105
|
+
});
|
|
106
|
+
private initialize;
|
|
107
|
+
/** Resolves once the stored session has been read. Everything else awaits it for you. */
|
|
108
|
+
initialized(): Promise<void>;
|
|
109
|
+
/** Stop timers and listeners. Call when discarding a client (tests, hot reload). */
|
|
110
|
+
dispose(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Be told about sign-ins, sign-outs and refreshes (also from other tabs).
|
|
113
|
+
* The listener is called once, soon, with `INITIAL_SESSION`.
|
|
114
|
+
*/
|
|
115
|
+
onAuthStateChange(listener: AuthListener): {
|
|
116
|
+
unsubscribe: () => void;
|
|
117
|
+
};
|
|
118
|
+
private emit;
|
|
119
|
+
private call;
|
|
120
|
+
/**
|
|
121
|
+
* The current session, refreshed first when it is about to expire. `null` when signed out.
|
|
122
|
+
* Throws only if the token has already expired and refreshing failed for a reason that
|
|
123
|
+
* may pass (offline, a server error).
|
|
124
|
+
*/
|
|
125
|
+
getSession(): Promise<Session | null>;
|
|
126
|
+
/** The access token to send as a bearer, or `null`. */
|
|
127
|
+
getAccessToken(): Promise<string | null>;
|
|
128
|
+
/** The signed-in user as last known, without a request. */
|
|
129
|
+
getCachedUser(): Promise<User | null>;
|
|
130
|
+
/** Called by the transport after a `401`: refresh once, unless someone already did. */
|
|
131
|
+
onUnauthorized(failed: string): Promise<string | null>;
|
|
132
|
+
private expiring;
|
|
133
|
+
/**
|
|
134
|
+
* Adopt a session you obtained elsewhere (a server-side rendered page's cookies,
|
|
135
|
+
* a mobile deep link). Both tokens are required; the user is fetched with them.
|
|
136
|
+
*/
|
|
137
|
+
setSession(tokens: {
|
|
138
|
+
access_token: string;
|
|
139
|
+
refresh_token: string;
|
|
140
|
+
}): Promise<Session>;
|
|
141
|
+
private store;
|
|
142
|
+
private schedule;
|
|
143
|
+
private watchOtherTabs;
|
|
144
|
+
/** Exchange the refresh token for a new session. Concurrent calls share one exchange. */
|
|
145
|
+
refreshSession(options?: {
|
|
146
|
+
org?: string | null;
|
|
147
|
+
}): Promise<Session>;
|
|
148
|
+
private exclusive;
|
|
149
|
+
private doRefresh;
|
|
150
|
+
/** What this environment offers: sign-up, magic links, MFA, providers, password rules. */
|
|
151
|
+
settings(): Promise<AuthSettings>;
|
|
152
|
+
/**
|
|
153
|
+
* Create an account. When the project requires email confirmation the result has no
|
|
154
|
+
* session (`verificationRequired` is `true`); otherwise the user is signed in.
|
|
155
|
+
*/
|
|
156
|
+
signUp(input: {
|
|
157
|
+
email: string;
|
|
158
|
+
password: string;
|
|
159
|
+
username?: string;
|
|
160
|
+
name?: string;
|
|
161
|
+
/** Initial `user_metadata`. */
|
|
162
|
+
data?: Record<string, unknown>;
|
|
163
|
+
/** Where the confirmation link sends the user. Must be an allowed redirect URL. */
|
|
164
|
+
redirectTo?: string;
|
|
165
|
+
}): Promise<SignUpResult>;
|
|
166
|
+
/**
|
|
167
|
+
* Sign in with email and password. When the account has MFA the result is
|
|
168
|
+
* `{ status: "mfa_required" }`; call its `verify(code)` to finish.
|
|
169
|
+
*/
|
|
170
|
+
signInWithPassword(input: {
|
|
171
|
+
email: string;
|
|
172
|
+
password: string;
|
|
173
|
+
org?: string;
|
|
174
|
+
}): Promise<SignInResult>;
|
|
175
|
+
private challenge;
|
|
176
|
+
/** Finish an MFA sign-in with an authenticator code or a recovery code. */
|
|
177
|
+
verifyMfa(input: {
|
|
178
|
+
mfaToken: string;
|
|
179
|
+
code: string;
|
|
180
|
+
org?: string;
|
|
181
|
+
}): Promise<Session>;
|
|
182
|
+
/** Email a one-time sign-in link. Always resolves the same way, so it does not reveal whether an account exists. */
|
|
183
|
+
signInWithMagicLink(input: {
|
|
184
|
+
email: string;
|
|
185
|
+
redirectTo?: string;
|
|
186
|
+
createUser?: boolean;
|
|
187
|
+
}): Promise<void>;
|
|
188
|
+
/** Exchange the token from a magic-link email for a session. */
|
|
189
|
+
verifyMagicLink(token: string): Promise<SignInResult>;
|
|
190
|
+
/** Keep a session the server just issued and announce it. */
|
|
191
|
+
private adopt;
|
|
192
|
+
/**
|
|
193
|
+
* Start a guest session: an account with no email or password, for someone who has not signed up yet. Turn it into a real account with
|
|
194
|
+
* {@link upgradeAnonymous}, keeping everything the guest created. The environment must allow guest sign-in.
|
|
195
|
+
*/
|
|
196
|
+
signInAnonymously(): Promise<Session>;
|
|
197
|
+
/** Turn the signed-in guest into a full account. A verification email is sent. */
|
|
198
|
+
upgradeAnonymous(input: {
|
|
199
|
+
email: string;
|
|
200
|
+
password?: string;
|
|
201
|
+
name?: string;
|
|
202
|
+
redirectTo?: string;
|
|
203
|
+
}): Promise<{
|
|
204
|
+
user: User;
|
|
205
|
+
verification_sent: boolean;
|
|
206
|
+
}>;
|
|
207
|
+
/** Email a short sign-in code. The answer is the same whether or not the address has an account. */
|
|
208
|
+
sendEmailCode(input: {
|
|
209
|
+
email: string;
|
|
210
|
+
createUser?: boolean;
|
|
211
|
+
}): Promise<void>;
|
|
212
|
+
/** Sign in with the code from {@link sendEmailCode}. An account with a second factor answers `mfa_required`. */
|
|
213
|
+
verifyEmailCode(input: {
|
|
214
|
+
email: string;
|
|
215
|
+
code: string;
|
|
216
|
+
}): Promise<SignInResult>;
|
|
217
|
+
/** The public keys that verify integration tokens ({@link issueToken}), for a server that checks them. */
|
|
218
|
+
jwks(): Promise<{
|
|
219
|
+
keys: Array<Record<string, unknown>>;
|
|
220
|
+
}>;
|
|
221
|
+
/**
|
|
222
|
+
* Exchange the signed-in session for a short-lived token for another service, shaped by a token profile you defined in Studio.
|
|
223
|
+
*/
|
|
224
|
+
issueToken(profile: string): Promise<IssuedToken>;
|
|
225
|
+
/** Where to send the browser for a social sign-in. Needs `environment` in the client options (or a signed-in session, which names it). */
|
|
226
|
+
signInWithOAuthUrl(provider: string, options?: {
|
|
227
|
+
redirectTo?: string;
|
|
228
|
+
}): string;
|
|
229
|
+
/** Trade the `code` a sign-in redirect carried for a session (pass the verifier of a PKCE `code_challenge` if the sign-in began with one). */
|
|
230
|
+
exchangeCode(code: string, codeVerifier?: string): Promise<Session>;
|
|
231
|
+
/** Redirect the browser to a provider. After the round trip, {@link getSessionFromUrl} (run automatically) picks the session up. */
|
|
232
|
+
signInWithOAuth(provider: string, options?: {
|
|
233
|
+
redirectTo?: string;
|
|
234
|
+
}): void;
|
|
235
|
+
private scope;
|
|
236
|
+
/**
|
|
237
|
+
* Read what a social sign-in left in the URL fragment (`#access_token=…`), store the
|
|
238
|
+
* session, and clean the URL. Called automatically in browsers; call it yourself in
|
|
239
|
+
* a mobile deep-link handler.
|
|
240
|
+
*/
|
|
241
|
+
getSessionFromUrl(url?: string): Promise<UrlSessionResult>;
|
|
242
|
+
/**
|
|
243
|
+
* Sign out. `local` (default) ends this session, `others` every other one, `global` all of them.
|
|
244
|
+
* The local session is always cleared, even when the server cannot be reached.
|
|
245
|
+
*/
|
|
246
|
+
signOut(options?: {
|
|
247
|
+
scope?: "local" | "global" | "others";
|
|
248
|
+
}): Promise<void>;
|
|
249
|
+
/** The user, fresh from the server (and the session's cached copy is updated). */
|
|
250
|
+
getUser(): Promise<User>;
|
|
251
|
+
/** Update the profile, password or (with confirmation) email. */
|
|
252
|
+
updateUser(input: UpdateUserInput): Promise<User>;
|
|
253
|
+
/** Send the confirmation email again. Always resolves the same way. */
|
|
254
|
+
resendVerification(input: {
|
|
255
|
+
email: string;
|
|
256
|
+
redirectTo?: string;
|
|
257
|
+
}): Promise<void>;
|
|
258
|
+
/** Confirm an address with the token from the email. Signs the user in. */
|
|
259
|
+
verifyEmail(token: string): Promise<Session>;
|
|
260
|
+
/** Confirm a new address with the token from the email. */
|
|
261
|
+
confirmEmailChange(token: string): Promise<void>;
|
|
262
|
+
/** Email a password reset link. Always resolves the same way. */
|
|
263
|
+
requestPasswordReset(input: {
|
|
264
|
+
email: string;
|
|
265
|
+
redirectTo?: string;
|
|
266
|
+
}): Promise<void>;
|
|
267
|
+
/** Set a new password with the token from the reset email. Every other session is ended and this one is signed in. */
|
|
268
|
+
resetPassword(input: {
|
|
269
|
+
token: string;
|
|
270
|
+
password: string;
|
|
271
|
+
}): Promise<Session>;
|
|
272
|
+
/** A URL that links a provider to the signed-in account when the browser visits it. */
|
|
273
|
+
linkIdentityUrl(provider: string, options?: {
|
|
274
|
+
redirectTo?: string;
|
|
275
|
+
}): Promise<string>;
|
|
276
|
+
unlinkIdentity(identityId: number): Promise<void>;
|
|
277
|
+
identities(): Promise<Identity[]>;
|
|
278
|
+
/** Issue tokens for another organization the user belongs to (or `null` for none). */
|
|
279
|
+
switchOrg(slug: string | null): Promise<Session>;
|
|
280
|
+
/** Wait `ms` (abortable). Handy in tests. */
|
|
281
|
+
protected pause(ms: number): Promise<void>;
|
|
282
|
+
}
|
|
283
|
+
declare class AuthMfa {
|
|
284
|
+
private readonly http;
|
|
285
|
+
private readonly refresh;
|
|
286
|
+
constructor(http: HttpClient, refresh: () => Promise<Session>);
|
|
287
|
+
status(): Promise<MfaStatus>;
|
|
288
|
+
/** Start enrolling an authenticator app. Show `otpauth_uri` as a QR code, then call {@link verifyEnrollment}. */
|
|
289
|
+
enroll(): Promise<MfaEnrollment>;
|
|
290
|
+
/** Confirm enrolment with a first code. Returns one-time recovery codes: show them once. */
|
|
291
|
+
verifyEnrollment(code: string): Promise<{
|
|
292
|
+
enabled: boolean;
|
|
293
|
+
recovery_codes: string[];
|
|
294
|
+
}>;
|
|
295
|
+
/** Start using emailed codes as a factor (a code is sent to the account's address). */
|
|
296
|
+
enrollEmail(): Promise<unknown>;
|
|
297
|
+
/** Send the emailed code for a sign-in that is waiting on MFA. */
|
|
298
|
+
challenge(mfaToken: string): Promise<unknown>;
|
|
299
|
+
/** When the environment requires MFA, a sign-in is held until a factor is set up: start it (`totp` or `email`). */
|
|
300
|
+
startSetup(input: {
|
|
301
|
+
mfaToken: string;
|
|
302
|
+
method: "totp" | "email";
|
|
303
|
+
}): Promise<unknown>;
|
|
304
|
+
/** Finish the required setup with a first code: the response carries the session and the recovery codes. */
|
|
305
|
+
completeSetup(input: {
|
|
306
|
+
mfaToken: string;
|
|
307
|
+
code: string;
|
|
308
|
+
org?: string;
|
|
309
|
+
}): Promise<{
|
|
310
|
+
recovery_codes?: string[];
|
|
311
|
+
access_token?: string;
|
|
312
|
+
}>;
|
|
313
|
+
disable(code: string): Promise<{
|
|
314
|
+
enabled: boolean;
|
|
315
|
+
}>;
|
|
316
|
+
/** Replace the recovery codes. Needs a current authenticator code. */
|
|
317
|
+
regenerateRecoveryCodes(code: string): Promise<{
|
|
318
|
+
recovery_codes: string[];
|
|
319
|
+
}>;
|
|
320
|
+
}
|
|
321
|
+
export interface IssuedToken {
|
|
322
|
+
token: string;
|
|
323
|
+
token_type: string;
|
|
324
|
+
expires_in: number;
|
|
325
|
+
expires_at: number;
|
|
326
|
+
audience: string;
|
|
327
|
+
}
|
|
328
|
+
export interface Passkey {
|
|
329
|
+
id: string;
|
|
330
|
+
name: string;
|
|
331
|
+
device_type: string;
|
|
332
|
+
backed_up: boolean;
|
|
333
|
+
transports: string[];
|
|
334
|
+
created_at: string;
|
|
335
|
+
last_used_at: string | null;
|
|
336
|
+
}
|
|
337
|
+
/** What the server asks the device to do, and the ticket that ties the answer back to the request. */
|
|
338
|
+
export interface PasskeyChallenge {
|
|
339
|
+
ticket: string;
|
|
340
|
+
options: Record<string, unknown>;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Passkeys. In a browser, {@link register} and {@link signIn} do the whole ceremony. Anywhere else (a native app, a test), use the
|
|
344
|
+
* `request…` and `finish…` pairs: hand `options` to the platform's WebAuthn, and send what it returns (already encoded as the
|
|
345
|
+
* server expects) back with the `ticket`.
|
|
346
|
+
*/
|
|
347
|
+
declare class AuthPasskeys {
|
|
348
|
+
private readonly http;
|
|
349
|
+
private readonly adopt;
|
|
350
|
+
constructor(http: HttpClient, adopt: (wire: WireSession) => Promise<Session>);
|
|
351
|
+
list(): Promise<Passkey[]>;
|
|
352
|
+
remove(passkeyId: string): Promise<void>;
|
|
353
|
+
/** Begin adding a passkey to the signed-in account. */
|
|
354
|
+
requestRegistration(): Promise<PasskeyChallenge>;
|
|
355
|
+
/** Finish adding a passkey with the credential the device made. */
|
|
356
|
+
finishRegistration(input: {
|
|
357
|
+
ticket: string;
|
|
358
|
+
credential: Record<string, unknown>;
|
|
359
|
+
name?: string;
|
|
360
|
+
}): Promise<{
|
|
361
|
+
passkey: Passkey;
|
|
362
|
+
}>;
|
|
363
|
+
/** Begin signing in with a passkey. With an email, only that account's passkeys are offered. */
|
|
364
|
+
requestSignIn(input?: {
|
|
365
|
+
email?: string;
|
|
366
|
+
}): Promise<PasskeyChallenge>;
|
|
367
|
+
/** Finish signing in with the credential the device made. */
|
|
368
|
+
finishSignIn(input: {
|
|
369
|
+
ticket: string;
|
|
370
|
+
credential: Record<string, unknown>;
|
|
371
|
+
}): Promise<Session>;
|
|
372
|
+
/** In a browser: ask the device to make a passkey and add it to the signed-in account. */
|
|
373
|
+
register(input?: {
|
|
374
|
+
name?: string;
|
|
375
|
+
}): Promise<Passkey>;
|
|
376
|
+
/** In a browser: ask the device for a passkey and sign in with it. */
|
|
377
|
+
signIn(input?: {
|
|
378
|
+
email?: string;
|
|
379
|
+
}): Promise<Session>;
|
|
380
|
+
}
|
|
381
|
+
declare class AuthSessions {
|
|
382
|
+
private readonly http;
|
|
383
|
+
constructor(http: HttpClient);
|
|
384
|
+
list(): Promise<SessionInfo[]>;
|
|
385
|
+
/** Sign one session out (a lost phone, another browser). */
|
|
386
|
+
revoke(sessionId: string): Promise<void>;
|
|
387
|
+
/** Recent sign-in activity for the account. */
|
|
388
|
+
history(): Promise<SignInEvent[]>;
|
|
389
|
+
}
|
|
390
|
+
declare class AuthDevices {
|
|
391
|
+
private readonly http;
|
|
392
|
+
constructor(http: HttpClient);
|
|
393
|
+
list(): Promise<Array<Record<string, unknown>>>;
|
|
394
|
+
forget(deviceId: string): Promise<void>;
|
|
395
|
+
}
|
|
396
|
+
declare class AuthApiKeys {
|
|
397
|
+
private readonly http;
|
|
398
|
+
constructor(http: HttpClient);
|
|
399
|
+
list(): Promise<Array<Record<string, unknown>>>;
|
|
400
|
+
/** Make a key. The secret is in the answer once and never again. */
|
|
401
|
+
create(input: {
|
|
402
|
+
name: string;
|
|
403
|
+
scopes?: string[];
|
|
404
|
+
expiresInDays?: number;
|
|
405
|
+
org?: string;
|
|
406
|
+
}): Promise<{
|
|
407
|
+
secret?: string;
|
|
408
|
+
} & Record<string, unknown>>;
|
|
409
|
+
revoke(keyId: string): Promise<void>;
|
|
410
|
+
}
|
|
411
|
+
declare class AuthOrgs {
|
|
412
|
+
private readonly http;
|
|
413
|
+
constructor(http: HttpClient);
|
|
414
|
+
private base;
|
|
415
|
+
list(): Promise<Organization[]>;
|
|
416
|
+
create(input: {
|
|
417
|
+
slug: string;
|
|
418
|
+
name: string;
|
|
419
|
+
metadata?: Record<string, unknown>;
|
|
420
|
+
}): Promise<Organization>;
|
|
421
|
+
get(slug: string): Promise<Organization>;
|
|
422
|
+
update(slug: string, input: {
|
|
423
|
+
name?: string;
|
|
424
|
+
metadata?: Record<string, unknown>;
|
|
425
|
+
}): Promise<Organization>;
|
|
426
|
+
delete(slug: string): Promise<void>;
|
|
427
|
+
members(slug: string): Promise<OrgMember[]>;
|
|
428
|
+
setMemberRole(slug: string, userId: string, role: OrgRole): Promise<unknown>;
|
|
429
|
+
removeMember(slug: string, userId: string): Promise<void>;
|
|
430
|
+
invite(slug: string, input: {
|
|
431
|
+
email: string;
|
|
432
|
+
role?: OrgRole;
|
|
433
|
+
redirectTo?: string;
|
|
434
|
+
}): Promise<Invitation>;
|
|
435
|
+
invitations(slug: string): Promise<Invitation[]>;
|
|
436
|
+
revokeInvitation(slug: string, invitationId: number): Promise<void>;
|
|
437
|
+
/** Accept an invitation with the token from the email. The user must be signed in. */
|
|
438
|
+
acceptInvitation(token: string): Promise<unknown>;
|
|
439
|
+
teams(slug: string): Promise<Team[]>;
|
|
440
|
+
createTeam(slug: string, input: {
|
|
441
|
+
slug: string;
|
|
442
|
+
name: string;
|
|
443
|
+
}): Promise<Team>;
|
|
444
|
+
addTeamMember(slug: string, team: string, userId: string): Promise<void>;
|
|
445
|
+
removeTeamMember(slug: string, team: string, userId: string): Promise<void>;
|
|
446
|
+
}
|
|
447
|
+
export type { AuthMfa, AuthSessions, AuthOrgs };
|
|
448
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"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"}
|