@sparkvault/sdk-mobile 6.0.2 → 7.0.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 +5 -5
- package/dist/account.d.ts +4 -3
- package/dist/account.js +16 -11
- package/dist/account.js.map +1 -1
- package/dist/app-sdk/email-address.d.ts +37 -0
- package/dist/app-sdk/email-address.js +91 -0
- package/dist/app-sdk/email-address.js.map +1 -0
- package/dist/app-sdk/encoding.d.ts +64 -0
- package/dist/app-sdk/encoding.js +245 -0
- package/dist/app-sdk/encoding.js.map +1 -0
- package/dist/app-sdk/entropy-contract.d.ts +33 -0
- package/dist/app-sdk/entropy-contract.js +51 -0
- package/dist/app-sdk/entropy-contract.js.map +1 -0
- package/dist/app-sdk/filename.d.ts +93 -0
- package/dist/app-sdk/filename.js +161 -0
- package/dist/app-sdk/filename.js.map +1 -0
- package/dist/app-sdk/forge-url.d.ts +107 -0
- package/dist/app-sdk/forge-url.js +222 -0
- package/dist/app-sdk/forge-url.js.map +1 -0
- package/dist/app-sdk/ids.d.ts +48 -0
- package/dist/app-sdk/ids.js +65 -0
- package/dist/app-sdk/ids.js.map +1 -0
- package/dist/app-sdk/ingot-access-log.d.ts +29 -0
- package/dist/app-sdk/ingot-access-log.js +49 -0
- package/dist/app-sdk/ingot-access-log.js.map +1 -0
- package/dist/app-sdk/phone.d.ts +37 -0
- package/dist/app-sdk/phone.js +134 -0
- package/dist/app-sdk/phone.js.map +1 -0
- package/dist/app-sdk/platform-domains.d.ts +41 -0
- package/dist/app-sdk/platform-domains.js +82 -0
- package/dist/app-sdk/platform-domains.js.map +1 -0
- package/dist/app-sdk/request-path.d.ts +49 -0
- package/dist/app-sdk/request-path.js +81 -0
- package/dist/app-sdk/request-path.js.map +1 -0
- package/dist/app-sdk/transient.d.ts +23 -0
- package/dist/app-sdk/transient.js +29 -0
- package/dist/app-sdk/transient.js.map +1 -0
- package/dist/app-sdk/vat-refusal.d.ts +66 -0
- package/dist/app-sdk/vat-refusal.js +69 -0
- package/dist/app-sdk/vat-refusal.js.map +1 -0
- package/dist/billing.d.ts +9 -17
- package/dist/billing.js +14 -17
- package/dist/billing.js.map +1 -1
- package/dist/config.d.ts +7 -1
- package/dist/config.js +10 -17
- package/dist/config.js.map +1 -1
- package/dist/encoding.d.ts +30 -4
- package/dist/encoding.js +89 -83
- package/dist/encoding.js.map +1 -1
- package/dist/entropy.d.ts +25 -4
- package/dist/entropy.js +62 -15
- package/dist/entropy.js.map +1 -1
- package/dist/entropy.test-d.d.ts +40 -0
- package/dist/entropy.test-d.js +12 -0
- package/dist/entropy.test-d.js.map +1 -0
- package/dist/errors.d.ts +67 -17
- package/dist/errors.js +70 -27
- package/dist/errors.js.map +1 -1
- package/dist/folders.js +8 -7
- package/dist/folders.js.map +1 -1
- package/dist/http.d.ts +57 -15
- package/dist/http.js +125 -138
- package/dist/http.js.map +1 -1
- package/dist/identity-dialog.js +4 -30
- package/dist/identity-dialog.js.map +1 -1
- package/dist/identity-input.d.ts +39 -0
- package/dist/identity-input.js +59 -0
- package/dist/identity-input.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/ingots.d.ts +51 -18
- package/dist/ingots.js +132 -122
- package/dist/ingots.js.map +1 -1
- package/dist/mutex.d.ts +1 -2
- package/dist/mutex.js +0 -6
- package/dist/mutex.js.map +1 -1
- package/dist/notify.d.ts +7 -2
- package/dist/notify.js +12 -15
- package/dist/notify.js.map +1 -1
- package/dist/notify.test-d.d.ts +3 -2
- package/dist/notify.test-d.js +1 -1
- package/dist/products/identity.d.ts +5 -0
- package/dist/products/identity.js +40 -35
- package/dist/products/identity.js.map +1 -1
- package/dist/request-path.d.ts +32 -0
- package/dist/request-path.js +35 -0
- package/dist/request-path.js.map +1 -0
- package/dist/sparks.js +16 -15
- package/dist/sparks.js.map +1 -1
- package/dist/tus.d.ts +19 -2
- package/dist/tus.js +86 -35
- package/dist/tus.js.map +1 -1
- package/dist/types.d.ts +167 -15
- package/dist/users.d.ts +12 -5
- package/dist/users.js +27 -19
- package/dist/users.js.map +1 -1
- package/dist/validation.d.ts +20 -5
- package/dist/validation.js +29 -27
- package/dist/validation.js.map +1 -1
- package/dist/vaults.d.ts +34 -83
- package/dist/vaults.js +64 -44
- package/dist/vaults.js.map +1 -1
- package/dist/vaults.test-d.d.ts +22 -0
- package/dist/vaults.test-d.js +14 -0
- package/dist/vaults.test-d.js.map +1 -0
- package/package.json +4 -2
- package/src/account.ts +16 -11
- package/src/app-sdk/email-address.js +94 -0
- package/src/app-sdk/encoding.js +250 -0
- package/src/app-sdk/entropy-contract.js +56 -0
- package/src/app-sdk/filename.js +174 -0
- package/src/app-sdk/forge-url.js +224 -0
- package/src/app-sdk/ids.js +71 -0
- package/src/app-sdk/ingot-access-log.js +51 -0
- package/src/app-sdk/phone.js +139 -0
- package/src/app-sdk/platform-domains.js +99 -0
- package/src/app-sdk/request-path.js +81 -0
- package/src/app-sdk/transient.js +30 -0
- package/src/app-sdk/vat-refusal.js +74 -0
- package/src/billing.ts +16 -25
- package/src/config.ts +16 -23
- package/src/encoding.ts +91 -103
- package/src/entropy.test-d.ts +47 -0
- package/src/entropy.ts +86 -20
- package/src/errors.ts +93 -33
- package/src/folders.ts +8 -7
- package/src/http.ts +145 -150
- package/src/identity-dialog.tsx +4 -37
- package/src/identity-input.ts +70 -0
- package/src/index.ts +11 -3
- package/src/ingots.ts +173 -159
- package/src/mutex.ts +1 -8
- package/src/notify.test-d.ts +3 -1
- package/src/notify.ts +19 -17
- package/src/products/identity.ts +45 -39
- package/src/request-path.ts +45 -0
- package/src/sparks.ts +16 -13
- package/src/tus.ts +90 -37
- package/src/types.ts +165 -15
- package/src/users.ts +27 -17
- package/src/validation.ts +30 -24
- package/src/vaults.test-d.ts +29 -0
- package/src/vaults.ts +87 -153
- package/dist/platform-domains.generated.d.ts +0 -2
- package/dist/platform-domains.generated.js +0 -16
- package/dist/platform-domains.generated.js.map +0 -1
- package/src/platform-domains.generated.ts +0 -17
package/dist/http.d.ts
CHANGED
|
@@ -1,15 +1,36 @@
|
|
|
1
1
|
import type { ResolvedMobileConfig } from './config.js';
|
|
2
|
+
import { type ApiPath, type QueryParams } from './request-path.js';
|
|
2
3
|
import type { ApiMeta, ApiResponse, RateLimitInfo } from './types.js';
|
|
3
4
|
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
4
5
|
export interface RequestOptions {
|
|
5
6
|
body?: unknown;
|
|
6
7
|
headers?: Record<string, string>;
|
|
8
|
+
/** Query parameters appended to the path; empty values are left out. */
|
|
9
|
+
query?: QueryParams;
|
|
7
10
|
skipAuth?: boolean;
|
|
8
11
|
vat?: string;
|
|
9
12
|
timeoutMs?: number;
|
|
10
13
|
}
|
|
11
14
|
export type AuthEvent = 'logout' | 'token_refreshed';
|
|
12
15
|
export type AuthEventListener = (event: AuthEvent) => void;
|
|
16
|
+
/**
|
|
17
|
+
* How a token refresh ended.
|
|
18
|
+
* - `refreshed`: a new access token is stored.
|
|
19
|
+
* - `rejected`: the session is over - no refresh token is stored, or the
|
|
20
|
+
* server refused it (the stored pair is then cleared and 'logout' emitted).
|
|
21
|
+
* - `transient`: the refresh could not complete (connectivity, timeout, a
|
|
22
|
+
* 408/429/5xx answer, a token-store failure). The session stands, and
|
|
23
|
+
* `error` is what the caller surfaces: it must never read as an
|
|
24
|
+
* authentication failure, which callers treat as a rejected credential.
|
|
25
|
+
*/
|
|
26
|
+
export type RefreshOutcome = {
|
|
27
|
+
status: 'refreshed';
|
|
28
|
+
} | {
|
|
29
|
+
status: 'rejected';
|
|
30
|
+
} | {
|
|
31
|
+
status: 'transient';
|
|
32
|
+
error: unknown;
|
|
33
|
+
};
|
|
13
34
|
export declare class MobileHttpClient {
|
|
14
35
|
private readonly config;
|
|
15
36
|
private readonly authListeners;
|
|
@@ -30,29 +51,50 @@ export declare class MobileHttpClient {
|
|
|
30
51
|
private emitAuthEvent;
|
|
31
52
|
private getHeaders;
|
|
32
53
|
private parseRateLimitHeaders;
|
|
33
|
-
|
|
54
|
+
/** The SDK error for a request the fetch adapter rejected (no HTTP response). */
|
|
55
|
+
private transportError;
|
|
34
56
|
/**
|
|
35
|
-
* Single
|
|
57
|
+
* Single mapping for non-OK responses: 402s become typed gate errors
|
|
36
58
|
* (PlanRequiredError / QuotaExceededError) so the subscribe / add-on UX keys
|
|
37
59
|
* off one set of types; everything else becomes a SparkVaultMobileError
|
|
38
60
|
* carrying the server code, status, details, and meta.
|
|
39
61
|
*/
|
|
40
|
-
|
|
62
|
+
/** An error response's JSON body, or an empty one when it has none. */
|
|
63
|
+
private readErrorBody;
|
|
64
|
+
/**
|
|
65
|
+
* A 401 that names a refused vault access token is not a dead login: no
|
|
66
|
+
* refresh revives a VAT, so it is thrown as it is instead of spending the
|
|
67
|
+
* one-time refresh token.
|
|
68
|
+
*/
|
|
69
|
+
private throwIfVatRefused;
|
|
70
|
+
private httpError;
|
|
41
71
|
private makeUrl;
|
|
42
72
|
private serializeBody;
|
|
43
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Refresh the access token once; concurrent callers share the one attempt
|
|
75
|
+
* (refresh tokens rotate and are one-time-use). Never throws: every failure
|
|
76
|
+
* is an outcome.
|
|
77
|
+
*/
|
|
78
|
+
refreshAccessToken(): Promise<RefreshOutcome>;
|
|
44
79
|
private doRefreshOnce;
|
|
45
80
|
private doRefresh;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
81
|
+
/**
|
|
82
|
+
* The server refused the session: drop the stored pair and end it. The
|
|
83
|
+
* session is over whether or not the local clear lands, so 'logout' always
|
|
84
|
+
* fires and the app's teardown runs.
|
|
85
|
+
*/
|
|
86
|
+
private endRefusedSession;
|
|
87
|
+
/**
|
|
88
|
+
* Renew the session after a 401, or throw what the caller should see:
|
|
89
|
+
* SparkVaultAuthenticationError only when the session is over, otherwise
|
|
90
|
+
* the transient failure that kept the refresh from completing.
|
|
91
|
+
*/
|
|
92
|
+
private renewSession;
|
|
93
|
+
request<T>(method: HttpMethod, path: ApiPath, options?: RequestOptions): Promise<ApiResponse<T>>;
|
|
94
|
+
get<T>(path: ApiPath, options?: RequestOptions): Promise<ApiResponse<T>>;
|
|
95
|
+
post<T>(path: ApiPath, body?: unknown, options?: RequestOptions): Promise<ApiResponse<T>>;
|
|
96
|
+
put<T>(path: ApiPath, body?: unknown, options?: RequestOptions): Promise<ApiResponse<T>>;
|
|
97
|
+
patch<T>(path: ApiPath, body?: unknown, options?: RequestOptions): Promise<ApiResponse<T>>;
|
|
98
|
+
delete<T>(path: ApiPath, options?: RequestOptions): Promise<ApiResponse<T>>;
|
|
57
99
|
private defaultErrorMessage;
|
|
58
100
|
}
|
package/dist/http.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { gateErrorFromBody, SparkVaultAuthenticationError, SparkVaultMobileError, SparkVaultNetworkError, SparkVaultTimeoutError, } from './errors.js';
|
|
1
|
+
import { gateErrorFromBody, SparkVaultAuthenticationError, SparkVaultMobileError, SparkVaultNetworkError, SparkVaultTimeoutError, vatRefusalReason, } from './errors.js';
|
|
2
|
+
import { isTransientHttpStatus } from './app-sdk/transient.js';
|
|
2
3
|
import { createDedupMutex } from './mutex.js';
|
|
4
|
+
import { queryString } from './request-path.js';
|
|
3
5
|
function parseRetryAfter(headers) {
|
|
4
6
|
const retryAfter = headers.get('Retry-After');
|
|
5
7
|
if (!retryAfter)
|
|
@@ -99,14 +101,13 @@ export class MobileHttpClient {
|
|
|
99
101
|
this.config.logger.warn('Malformed rate limit headers', { limit, remaining, reset });
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
|
-
|
|
104
|
+
/** The SDK error for a request the fetch adapter rejected (no HTTP response). */
|
|
105
|
+
transportError(err) {
|
|
103
106
|
if (err instanceof SparkVaultMobileError) {
|
|
104
|
-
|
|
107
|
+
return err;
|
|
105
108
|
}
|
|
106
109
|
if (err instanceof Error && (err.name === 'AbortError' || err.name === 'TimeoutError')) {
|
|
107
|
-
|
|
108
|
-
? 'Upload timed out. Please check your connection and try again.'
|
|
109
|
-
: 'Request timed out. Please check your connection and try again.');
|
|
110
|
+
return new SparkVaultTimeoutError('Request timed out. Please check your connection and try again.');
|
|
110
111
|
}
|
|
111
112
|
// Connectivity failures arrive in two shapes depending on the injected
|
|
112
113
|
// fetch adapter: the WHATWG fetch spec rejects with a TypeError, while
|
|
@@ -114,91 +115,110 @@ export class MobileHttpClient {
|
|
|
114
115
|
// normalize to SparkVaultNetworkError or consumers misclassify an offline
|
|
115
116
|
// failure as a generic (non-retryable) error.
|
|
116
117
|
if (err instanceof TypeError || (err instanceof Error && err.name === 'NetworkError')) {
|
|
117
|
-
|
|
118
|
+
return new SparkVaultNetworkError('Network request failed. Please check your connection.');
|
|
118
119
|
}
|
|
119
|
-
|
|
120
|
+
return new SparkVaultMobileError(err instanceof Error ? err.message : 'Unknown request error');
|
|
120
121
|
}
|
|
121
122
|
/**
|
|
122
|
-
* Single
|
|
123
|
+
* Single mapping for non-OK responses: 402s become typed gate errors
|
|
123
124
|
* (PlanRequiredError / QuotaExceededError) so the subscribe / add-on UX keys
|
|
124
125
|
* off one set of types; everything else becomes a SparkVaultMobileError
|
|
125
126
|
* carrying the server code, status, details, and meta.
|
|
126
127
|
*/
|
|
127
|
-
|
|
128
|
+
/** An error response's JSON body, or an empty one when it has none. */
|
|
129
|
+
async readErrorBody(response) {
|
|
130
|
+
try {
|
|
131
|
+
return await response.json();
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
this.config.logger.debug('Failed to parse error response body', { status: response.status });
|
|
135
|
+
return {};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* A 401 that names a refused vault access token is not a dead login: no
|
|
140
|
+
* refresh revives a VAT, so it is thrown as it is instead of spending the
|
|
141
|
+
* one-time refresh token.
|
|
142
|
+
*/
|
|
143
|
+
async throwIfVatRefused(response) {
|
|
144
|
+
const error = this.httpError(response.status, await this.readErrorBody(response));
|
|
145
|
+
if (vatRefusalReason(error) !== null) {
|
|
146
|
+
throw error;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
httpError(status, errorBody) {
|
|
128
150
|
if (errorBody.meta) {
|
|
129
151
|
this.lastMeta = errorBody.meta;
|
|
130
152
|
}
|
|
131
|
-
|
|
132
|
-
if (gateError) {
|
|
133
|
-
throw gateError;
|
|
134
|
-
}
|
|
135
|
-
throw new SparkVaultMobileError(errorBody.error?.message ?? errorBody.message ?? this.defaultErrorMessage(status), {
|
|
153
|
+
return gateErrorFromBody(status, errorBody) ?? new SparkVaultMobileError(errorBody.error?.message ?? errorBody.message ?? this.defaultErrorMessage(status), {
|
|
136
154
|
code: errorBody.error?.code ?? status,
|
|
137
155
|
statusCode: status,
|
|
138
156
|
details: errorBody.error?.details,
|
|
139
157
|
meta: errorBody.meta,
|
|
140
158
|
});
|
|
141
159
|
}
|
|
142
|
-
makeUrl(
|
|
143
|
-
|
|
144
|
-
return endpoint;
|
|
145
|
-
}
|
|
146
|
-
return `${this.config.apiBaseUrl}${endpoint}`;
|
|
160
|
+
makeUrl(path, query) {
|
|
161
|
+
return `${this.config.apiBaseUrl}${path}${queryString(query)}`;
|
|
147
162
|
}
|
|
148
163
|
serializeBody(body) {
|
|
149
164
|
if (body === undefined || body === null)
|
|
150
165
|
return undefined;
|
|
151
166
|
return isJsonBody(body) ? JSON.stringify(body) : body;
|
|
152
167
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
168
|
+
/**
|
|
169
|
+
* Refresh the access token once; concurrent callers share the one attempt
|
|
170
|
+
* (refresh tokens rotate and are one-time-use). Never throws: every failure
|
|
171
|
+
* is an outcome.
|
|
172
|
+
*/
|
|
173
|
+
refreshAccessToken() {
|
|
174
|
+
return this.refreshMutex.dedupe(() => this.doRefreshOnce());
|
|
161
175
|
}
|
|
162
176
|
async doRefreshOnce() {
|
|
163
|
-
const refreshToken = await this.config.tokenStorage.getRefreshToken();
|
|
164
|
-
if (!refreshToken)
|
|
165
|
-
return false;
|
|
166
177
|
try {
|
|
178
|
+
const refreshToken = await this.config.tokenStorage.getRefreshToken();
|
|
179
|
+
if (!refreshToken)
|
|
180
|
+
return { status: 'rejected' };
|
|
167
181
|
return await this.doRefresh(refreshToken);
|
|
168
182
|
}
|
|
169
183
|
catch (err) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
184
|
+
// A token store that could not be read or written: the session was not
|
|
185
|
+
// refused, so it stands, and the store's own error is what the caller
|
|
186
|
+
// sees (as it is when the store fails before any request).
|
|
187
|
+
this.config.logger.warn('Token refresh could not use the token store', {
|
|
188
|
+
error: err instanceof Error ? err.message : String(err),
|
|
189
|
+
});
|
|
190
|
+
return { status: 'transient', error: err };
|
|
173
191
|
}
|
|
174
192
|
}
|
|
175
193
|
async doRefresh(refreshToken) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
194
|
+
let response;
|
|
195
|
+
try {
|
|
196
|
+
response = await this.config.fetch(`${this.config.apiBaseUrl}/auth/refresh`, {
|
|
197
|
+
method: 'POST',
|
|
198
|
+
headers: {
|
|
199
|
+
'Content-Type': 'application/json',
|
|
200
|
+
Accept: 'application/json',
|
|
201
|
+
'User-Agent': this.config.userAgent,
|
|
202
|
+
},
|
|
203
|
+
body: JSON.stringify({ refresh_token: refreshToken }),
|
|
204
|
+
timeoutMs: this.config.timeoutMs,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
const error = this.transportError(err);
|
|
209
|
+
this.config.logger.warn('Token refresh did not reach the API', { error: error.message });
|
|
210
|
+
return { status: 'transient', error };
|
|
211
|
+
}
|
|
186
212
|
if (!response.ok) {
|
|
187
|
-
if (response.status
|
|
188
|
-
this.config.logger.warn('Token refresh rate limited', {
|
|
189
|
-
retryAfterMs: parseRetryAfter(response.headers),
|
|
190
|
-
});
|
|
191
|
-
return false;
|
|
192
|
-
}
|
|
193
|
-
if (response.status >= 500 || response.status === 408) {
|
|
213
|
+
if (isTransientHttpStatus(response.status)) {
|
|
194
214
|
this.config.logger.warn('Token refresh failed with transient HTTP status', {
|
|
195
215
|
status: response.status,
|
|
216
|
+
retryAfterMs: parseRetryAfter(response.headers),
|
|
196
217
|
});
|
|
197
|
-
|
|
218
|
+
const errorBody = await response.json().catch(() => ({}));
|
|
219
|
+
return { status: 'transient', error: this.httpError(response.status, errorBody) };
|
|
198
220
|
}
|
|
199
|
-
|
|
200
|
-
this.emitAuthEvent('logout');
|
|
201
|
-
return false;
|
|
221
|
+
return this.endRefusedSession();
|
|
202
222
|
}
|
|
203
223
|
const body = await response.json().catch(() => ({}));
|
|
204
224
|
const data = body?.data;
|
|
@@ -207,9 +227,7 @@ export class MobileHttpClient {
|
|
|
207
227
|
hasData: Boolean(data),
|
|
208
228
|
accessTokenType: typeof data?.access_token,
|
|
209
229
|
});
|
|
210
|
-
|
|
211
|
-
this.emitAuthEvent('logout');
|
|
212
|
-
return false;
|
|
230
|
+
return this.endRefusedSession();
|
|
213
231
|
}
|
|
214
232
|
// Refresh tokens rotate and are one-time-use: persist the pair through a
|
|
215
233
|
// single adapter call when the adapter supports it, so the write can be
|
|
@@ -229,10 +247,41 @@ export class MobileHttpClient {
|
|
|
229
247
|
await this.config.tokenStorage.setAccessToken(data.access_token);
|
|
230
248
|
}
|
|
231
249
|
this.emitAuthEvent('token_refreshed');
|
|
232
|
-
return
|
|
250
|
+
return { status: 'refreshed' };
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* The server refused the session: drop the stored pair and end it. The
|
|
254
|
+
* session is over whether or not the local clear lands, so 'logout' always
|
|
255
|
+
* fires and the app's teardown runs.
|
|
256
|
+
*/
|
|
257
|
+
async endRefusedSession() {
|
|
258
|
+
try {
|
|
259
|
+
await this.config.tokenStorage.clearTokens();
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
this.config.logger.warn('Could not clear the refused session tokens', {
|
|
263
|
+
error: err instanceof Error ? err.message : String(err),
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
this.emitAuthEvent('logout');
|
|
267
|
+
return { status: 'rejected' };
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Renew the session after a 401, or throw what the caller should see:
|
|
271
|
+
* SparkVaultAuthenticationError only when the session is over, otherwise
|
|
272
|
+
* the transient failure that kept the refresh from completing.
|
|
273
|
+
*/
|
|
274
|
+
async renewSession() {
|
|
275
|
+
const outcome = await this.refreshAccessToken();
|
|
276
|
+
if (outcome.status === 'rejected') {
|
|
277
|
+
throw new SparkVaultAuthenticationError('Session expired. Please log in again.');
|
|
278
|
+
}
|
|
279
|
+
if (outcome.status === 'transient') {
|
|
280
|
+
throw outcome.error;
|
|
281
|
+
}
|
|
233
282
|
}
|
|
234
|
-
async request(method,
|
|
235
|
-
const url = this.makeUrl(
|
|
283
|
+
async request(method, path, options = {}) {
|
|
284
|
+
const url = this.makeUrl(path, options.query);
|
|
236
285
|
const timeoutMs = options.timeoutMs ?? this.config.timeoutMs;
|
|
237
286
|
const body = method === 'GET' ? undefined : this.serializeBody(options.body);
|
|
238
287
|
let headers = await this.getHeaders({ ...options, body: options.body });
|
|
@@ -241,20 +290,18 @@ export class MobileHttpClient {
|
|
|
241
290
|
response = await this.config.fetch(url, { method, headers, body, timeoutMs });
|
|
242
291
|
}
|
|
243
292
|
catch (err) {
|
|
244
|
-
this.
|
|
293
|
+
throw this.transportError(err);
|
|
245
294
|
}
|
|
246
295
|
this.parseRateLimitHeaders(response.headers);
|
|
247
296
|
if (response.status === 401 && !options.skipAuth) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
throw new SparkVaultAuthenticationError('Session expired. Please log in again.');
|
|
251
|
-
}
|
|
297
|
+
await this.throwIfVatRefused(response);
|
|
298
|
+
await this.renewSession();
|
|
252
299
|
headers = await this.getHeaders({ ...options, body: options.body });
|
|
253
300
|
try {
|
|
254
301
|
response = await this.config.fetch(url, { method, headers, body, timeoutMs });
|
|
255
302
|
}
|
|
256
303
|
catch (err) {
|
|
257
|
-
this.
|
|
304
|
+
throw this.transportError(err);
|
|
258
305
|
}
|
|
259
306
|
this.parseRateLimitHeaders(response.headers);
|
|
260
307
|
}
|
|
@@ -268,14 +315,7 @@ export class MobileHttpClient {
|
|
|
268
315
|
return { data: {}, meta: this.lastMeta ?? fallbackMeta };
|
|
269
316
|
}
|
|
270
317
|
if (!response.ok) {
|
|
271
|
-
|
|
272
|
-
try {
|
|
273
|
-
errorBody = await response.json();
|
|
274
|
-
}
|
|
275
|
-
catch {
|
|
276
|
-
this.config.logger.debug('Failed to parse error response body', { status: response.status });
|
|
277
|
-
}
|
|
278
|
-
this.throwHttpError(response.status, errorBody);
|
|
318
|
+
throw this.httpError(response.status, await this.readErrorBody(response));
|
|
279
319
|
}
|
|
280
320
|
const result = await response.json();
|
|
281
321
|
if (result.meta) {
|
|
@@ -283,73 +323,20 @@ export class MobileHttpClient {
|
|
|
283
323
|
}
|
|
284
324
|
return result;
|
|
285
325
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
const url = this.makeUrl(endpoint);
|
|
289
|
-
const timeoutMs = options.timeoutMs ?? this.config.fileTransferTimeoutMs;
|
|
290
|
-
const body = method === 'GET' ? undefined : this.serializeBody(options.body);
|
|
291
|
-
let headers = await this.getHeaders({ ...options, body: options.body });
|
|
292
|
-
let response;
|
|
293
|
-
try {
|
|
294
|
-
response = await this.config.fetch(url, {
|
|
295
|
-
method,
|
|
296
|
-
headers,
|
|
297
|
-
body,
|
|
298
|
-
timeoutMs,
|
|
299
|
-
responseType: options.responseType,
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
catch (err) {
|
|
303
|
-
this.normalizeError(err, true);
|
|
304
|
-
}
|
|
305
|
-
if (response.status === 401 && !options.skipAuth) {
|
|
306
|
-
const refreshed = await this.refreshAccessToken();
|
|
307
|
-
if (!refreshed) {
|
|
308
|
-
throw new SparkVaultAuthenticationError('Session expired. Please log in again.');
|
|
309
|
-
}
|
|
310
|
-
headers = await this.getHeaders({ ...options, body: options.body });
|
|
311
|
-
try {
|
|
312
|
-
response = await this.config.fetch(url, {
|
|
313
|
-
method,
|
|
314
|
-
headers,
|
|
315
|
-
body,
|
|
316
|
-
timeoutMs,
|
|
317
|
-
responseType: options.responseType,
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
catch (err) {
|
|
321
|
-
this.normalizeError(err, true);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
if (!response.ok) {
|
|
325
|
-
let errorBody = {};
|
|
326
|
-
try {
|
|
327
|
-
errorBody = await response.json();
|
|
328
|
-
}
|
|
329
|
-
catch {
|
|
330
|
-
this.config.logger.debug('Failed to parse raw error response body', { status: response.status });
|
|
331
|
-
}
|
|
332
|
-
this.throwHttpError(response.status, errorBody);
|
|
333
|
-
}
|
|
334
|
-
return response;
|
|
335
|
-
}
|
|
336
|
-
get(endpoint, options) {
|
|
337
|
-
return this.request('GET', endpoint, options);
|
|
338
|
-
}
|
|
339
|
-
post(endpoint, body, options) {
|
|
340
|
-
return this.request('POST', endpoint, { ...options, body });
|
|
326
|
+
get(path, options) {
|
|
327
|
+
return this.request('GET', path, options);
|
|
341
328
|
}
|
|
342
|
-
|
|
343
|
-
return this.request('
|
|
329
|
+
post(path, body, options) {
|
|
330
|
+
return this.request('POST', path, { ...options, body });
|
|
344
331
|
}
|
|
345
|
-
|
|
346
|
-
return this.request('
|
|
332
|
+
put(path, body, options) {
|
|
333
|
+
return this.request('PUT', path, { ...options, body });
|
|
347
334
|
}
|
|
348
|
-
|
|
349
|
-
return this.request('
|
|
335
|
+
patch(path, body, options) {
|
|
336
|
+
return this.request('PATCH', path, { ...options, body });
|
|
350
337
|
}
|
|
351
|
-
|
|
352
|
-
return this.request('
|
|
338
|
+
delete(path, options) {
|
|
339
|
+
return this.request('DELETE', path, options);
|
|
353
340
|
}
|
|
354
341
|
defaultErrorMessage(status) {
|
|
355
342
|
switch (status) {
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/identity-dialog.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
3
|
import { ActivityIndicator, Image, KeyboardAvoidingView, Modal, Platform, Pressable, ScrollView, StyleSheet, Text, TextInput, View, } from 'react-native';
|
|
4
|
+
import { identityKeyboardType, inferIdentityType, parseIdentity } from './identity-input.js';
|
|
4
5
|
/**
|
|
5
6
|
* Sign-in here is one-time code only. Passkeys are an Identity Product method
|
|
6
7
|
* on the web, but the native ceremony does not work in the mobile app, so the
|
|
@@ -9,8 +10,6 @@ import { ActivityIndicator, Image, KeyboardAvoidingView, Modal, Platform, Pressa
|
|
|
9
10
|
* for a host that drives the ceremony itself.
|
|
10
11
|
*/
|
|
11
12
|
const SUPPORTED_METHODS = new Set(['otp_email', 'otp_sms', 'otp_voice']);
|
|
12
|
-
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
13
|
-
const E164_PHONE_REGEX = /^\+[1-9]\d{7,14}$/;
|
|
14
13
|
export function SparkVaultIdentityDialog({ client, visible, initialIdentity, initialIdentityType, onSuccess, onCancel, onError, }) {
|
|
15
14
|
const [step, setStep] = useState('loading');
|
|
16
15
|
const [config, setConfig] = useState(null);
|
|
@@ -263,9 +262,9 @@ export function SparkVaultIdentityDialog({ client, visible, initialIdentity, ini
|
|
|
263
262
|
setIdentity(value);
|
|
264
263
|
setError('');
|
|
265
264
|
if (allowedTypes.length > 1) {
|
|
266
|
-
setIdentityType(
|
|
265
|
+
setIdentityType(inferIdentityType(value));
|
|
267
266
|
}
|
|
268
|
-
}, placeholder: identityPlaceholder(allowedTypes), placeholderTextColor: colors.placeholder, autoCapitalize: "none", autoCorrect: false, autoComplete: identityType === 'phone' ? 'tel' : 'email', keyboardType:
|
|
267
|
+
}, placeholder: identityPlaceholder(allowedTypes), placeholderTextColor: colors.placeholder, autoCapitalize: "none", autoCorrect: false, autoComplete: identityType === 'phone' ? 'tel' : 'email', keyboardType: identityKeyboardType(allowedTypes), editable: !isBusy, style: [
|
|
269
268
|
styles.input,
|
|
270
269
|
{
|
|
271
270
|
borderColor: error ? colors.error : colors.border,
|
|
@@ -316,7 +315,7 @@ function normalizeAllowedTypes(config) {
|
|
|
316
315
|
function resolveInitialIdentityType(identity, explicitType, allowedTypes) {
|
|
317
316
|
if (explicitType && allowedTypes.includes(explicitType))
|
|
318
317
|
return explicitType;
|
|
319
|
-
if (identity
|
|
318
|
+
if (inferIdentityType(identity ?? '') === 'phone' && allowedTypes.includes('phone'))
|
|
320
319
|
return 'phone';
|
|
321
320
|
return allowedTypes.includes('email') ? 'email' : 'phone';
|
|
322
321
|
}
|
|
@@ -330,31 +329,6 @@ function getMethodsForIdentity(config, identityType) {
|
|
|
330
329
|
return identityType === 'phone';
|
|
331
330
|
});
|
|
332
331
|
}
|
|
333
|
-
function parseIdentity(value, allowedTypes) {
|
|
334
|
-
const trimmed = value.trim();
|
|
335
|
-
if (!trimmed) {
|
|
336
|
-
return { ok: false, error: 'Enter an identity to continue.' };
|
|
337
|
-
}
|
|
338
|
-
const inferredType = trimmed.startsWith('+') || /^\d/.test(trimmed) ? 'phone' : 'email';
|
|
339
|
-
if (!allowedTypes.includes(inferredType)) {
|
|
340
|
-
return {
|
|
341
|
-
ok: false,
|
|
342
|
-
error: inferredType === 'phone' ? 'Phone sign-in is not enabled for this app.' : 'Email sign-in is not enabled for this app.',
|
|
343
|
-
};
|
|
344
|
-
}
|
|
345
|
-
if (inferredType === 'email') {
|
|
346
|
-
const email = trimmed.toLowerCase();
|
|
347
|
-
if (!EMAIL_REGEX.test(email) || email.length > 254) {
|
|
348
|
-
return { ok: false, error: 'Enter a valid email address.' };
|
|
349
|
-
}
|
|
350
|
-
return { ok: true, identity: email, identityType: 'email' };
|
|
351
|
-
}
|
|
352
|
-
const phone = trimmed.startsWith('+') ? trimmed.replace(/[^\d+]/g, '') : `+${trimmed.replace(/\D/g, '')}`;
|
|
353
|
-
if (!E164_PHONE_REGEX.test(phone)) {
|
|
354
|
-
return { ok: false, error: 'Enter a valid phone number in international format.' };
|
|
355
|
-
}
|
|
356
|
-
return { ok: true, identity: phone, identityType: 'phone' };
|
|
357
|
-
}
|
|
358
332
|
function toOtpMethod(method) {
|
|
359
333
|
if (method === 'otp_sms')
|
|
360
334
|
return 'sms';
|