@sparkvault/sdk-mobile 1.0.5 → 3.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 +6 -5
- package/dist/account.d.ts +31 -0
- package/dist/account.js +106 -0
- package/dist/account.js.map +1 -0
- package/dist/client.d.ts +4 -2
- package/dist/client.js +5 -3
- package/dist/client.js.map +1 -1
- package/dist/identity-dialog.js +7 -7
- package/dist/identity-dialog.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ingots.d.ts +52 -3
- package/dist/ingots.js +48 -30
- package/dist/ingots.js.map +1 -1
- package/dist/{auth.d.ts → products/identity.d.ts} +13 -35
- package/dist/{auth.js → products/identity.js} +42 -160
- package/dist/products/identity.js.map +1 -0
- package/dist/products/index.d.ts +12 -0
- package/dist/products/index.js +13 -0
- package/dist/products/index.js.map +1 -0
- package/dist/sparks.d.ts +21 -0
- package/dist/sparks.js +30 -0
- package/dist/sparks.js.map +1 -1
- package/dist/types.d.ts +39 -10
- package/package.json +1 -1
- package/src/account.ts +152 -0
- package/src/client.ts +7 -4
- package/src/identity-dialog.tsx +7 -7
- package/src/index.ts +11 -2
- package/src/ingots.ts +97 -48
- package/src/{auth.ts → products/identity.ts} +50 -218
- package/src/products/index.ts +17 -0
- package/src/sparks.ts +49 -0
- package/src/types.ts +44 -11
- package/dist/auth.js.map +0 -1
|
@@ -1,37 +1,30 @@
|
|
|
1
|
-
import { identityUrl, type ResolvedMobileConfig } from '
|
|
2
|
-
import { base64UrlToBytes, base64UrlToUtf8, utf8ToBytes } from '
|
|
3
|
-
import { SparkVaultAuthenticationError, SparkVaultMobileError, SparkVaultValidationError } from '
|
|
4
|
-
import type { MobileHttpClient } from './http.js';
|
|
1
|
+
import { identityUrl, type ResolvedMobileConfig } from '../config.js';
|
|
2
|
+
import { base64UrlToBytes, base64UrlToUtf8, utf8ToBytes } from '../encoding.js';
|
|
3
|
+
import { SparkVaultAuthenticationError, SparkVaultMobileError, SparkVaultValidationError } from '../errors.js';
|
|
5
4
|
import type {
|
|
6
5
|
ApiErrorBody,
|
|
7
6
|
BackupSendResponse,
|
|
8
7
|
BackupVerifyResponse,
|
|
9
8
|
Recommendation,
|
|
10
9
|
RecommendationKey,
|
|
11
|
-
CompleteSignupRequest,
|
|
12
|
-
CompleteSignupResponse,
|
|
13
10
|
IdentityConfig,
|
|
14
11
|
IdentityJwks,
|
|
15
12
|
VerifiedIdentityType,
|
|
16
13
|
IdentityTokenClaims,
|
|
17
14
|
IdentityType,
|
|
18
15
|
IdentityVerifyResult,
|
|
19
|
-
IdentitySessionResponse,
|
|
20
16
|
PasskeyAuthChallenge,
|
|
21
17
|
PasskeyCredential,
|
|
22
18
|
PasskeyRegisterChallenge,
|
|
23
19
|
PasskeySession,
|
|
24
20
|
PasskeyStatus,
|
|
25
|
-
PinVerifyRequest,
|
|
26
|
-
PinVerifyResponse,
|
|
27
21
|
RequestPinRequest,
|
|
28
22
|
RequestPinResponse,
|
|
29
23
|
SendTotpRequest,
|
|
30
|
-
SparkVaultAccount,
|
|
31
24
|
SparkVaultUser,
|
|
32
25
|
SubmitSecondFactorRequest,
|
|
33
26
|
VerifyTotpRequest,
|
|
34
|
-
} from '
|
|
27
|
+
} from '../types.js';
|
|
35
28
|
import nacl from 'tweetnacl';
|
|
36
29
|
|
|
37
30
|
/** Raw snake_case recommendation as the API returns it. */
|
|
@@ -95,16 +88,20 @@ interface JwtHeader {
|
|
|
95
88
|
|
|
96
89
|
const JWKS_CACHE_TTL_MS = 10 * 60 * 1000;
|
|
97
90
|
|
|
98
|
-
|
|
91
|
+
/**
|
|
92
|
+
* Identity Product client: TOTP/passkey verification and login, JWKS/JWT
|
|
93
|
+
* verification, second-factor submission, and post-login backup/recommendation
|
|
94
|
+
* flows. Everything here hits the Identity Product endpoint or verifies tokens
|
|
95
|
+
* locally; it never creates a SparkVault Core session (that is `account`).
|
|
96
|
+
*/
|
|
97
|
+
export class MobileIdentityClient {
|
|
99
98
|
private readonly config: ResolvedMobileConfig;
|
|
100
|
-
private readonly http: MobileHttpClient;
|
|
101
99
|
private configCache: Promise<IdentityConfig> | null = null;
|
|
102
100
|
private jwksCache: Promise<IdentityJwks> | null = null;
|
|
103
101
|
private jwksCachedAt = 0;
|
|
104
102
|
|
|
105
|
-
constructor(config: ResolvedMobileConfig
|
|
103
|
+
constructor(config: ResolvedMobileConfig) {
|
|
106
104
|
this.config = config;
|
|
107
|
-
this.http = http;
|
|
108
105
|
}
|
|
109
106
|
|
|
110
107
|
getJwksUri(): string {
|
|
@@ -304,27 +301,6 @@ export class MobileAuthClient {
|
|
|
304
301
|
});
|
|
305
302
|
}
|
|
306
303
|
|
|
307
|
-
async verifyPin(request: PinVerifyRequest): Promise<PinVerifyResponse> {
|
|
308
|
-
const verifyResult = await this.verifyTotpWithRetryErrors(request);
|
|
309
|
-
|
|
310
|
-
// PIN accepted, but 2FA is required. Return a pending result so the caller
|
|
311
|
-
// can collect a second factor and call completeSecondFactorPin().
|
|
312
|
-
if (verifyResult.second_factor_required && verifyResult.ticket) {
|
|
313
|
-
return {
|
|
314
|
-
verified: false,
|
|
315
|
-
second_factor_required: true,
|
|
316
|
-
ticket: verifyResult.ticket,
|
|
317
|
-
methods: verifyResult.methods ?? ['authenticator'],
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
if (!verifyResult.verified || !verifyResult.token) {
|
|
322
|
-
this.throwVerificationFailure(verifyResult);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
return this.exchangeIdentityToken(verifyResult.token);
|
|
326
|
-
}
|
|
327
|
-
|
|
328
304
|
/**
|
|
329
305
|
* Surface a failed primary-factor verification. When the backend returns a
|
|
330
306
|
* retry kindling, it is grafted onto the error's `data` so the caller can
|
|
@@ -374,16 +350,6 @@ export class MobileAuthClient {
|
|
|
374
350
|
});
|
|
375
351
|
}
|
|
376
352
|
|
|
377
|
-
/**
|
|
378
|
-
* Complete a 2FA-pending app login (from verifyPin's pending response):
|
|
379
|
-
* submit the second factor, then exchange the identity token for an app
|
|
380
|
-
* session.
|
|
381
|
-
*/
|
|
382
|
-
async completeSecondFactorPin(request: SubmitSecondFactorRequest): Promise<PinVerifyResponse> {
|
|
383
|
-
const result = await this.submitSecondFactor(request);
|
|
384
|
-
return this.exchangeIdentityToken(result.token);
|
|
385
|
-
}
|
|
386
|
-
|
|
387
353
|
/** Build the typed error verifyTotp throws when a second factor is required. */
|
|
388
354
|
private secondFactorError(ticket: string, methods?: string[]): SparkVaultMobileError {
|
|
389
355
|
const error = new SparkVaultMobileError('Two-step verification required.', {
|
|
@@ -398,34 +364,6 @@ export class MobileAuthClient {
|
|
|
398
364
|
return error;
|
|
399
365
|
}
|
|
400
366
|
|
|
401
|
-
async completeSignup(
|
|
402
|
-
signupToken: string,
|
|
403
|
-
request: CompleteSignupRequest
|
|
404
|
-
): Promise<CompleteSignupResponse> {
|
|
405
|
-
const response = await this.http.post<CompleteSignupResponse>(
|
|
406
|
-
'/auth/complete-signup',
|
|
407
|
-
request,
|
|
408
|
-
{
|
|
409
|
-
skipAuth: true,
|
|
410
|
-
headers: { Authorization: `Bearer ${signupToken}` },
|
|
411
|
-
}
|
|
412
|
-
);
|
|
413
|
-
|
|
414
|
-
await this.storeSession(response.data);
|
|
415
|
-
return response.data;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
async signup(params: {
|
|
419
|
-
signup_token: string;
|
|
420
|
-
organization_name: string;
|
|
421
|
-
full_name?: string;
|
|
422
|
-
}): Promise<CompleteSignupResponse> {
|
|
423
|
-
return this.completeSignup(params.signup_token, {
|
|
424
|
-
organization_name: params.organization_name,
|
|
425
|
-
full_name: params.full_name,
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
|
|
429
367
|
async checkPasskeyStatus(identity: string, identityType?: IdentityType): Promise<{ hasPasskey: boolean }> {
|
|
430
368
|
try {
|
|
431
369
|
const result = await this.postIdentity<{ has_passkey: boolean }>(
|
|
@@ -464,14 +402,6 @@ export class MobileAuthClient {
|
|
|
464
402
|
});
|
|
465
403
|
}
|
|
466
404
|
|
|
467
|
-
async verifyPasskeyAuth(
|
|
468
|
-
credential: PasskeyCredential,
|
|
469
|
-
session: PasskeySession
|
|
470
|
-
): Promise<PinVerifyResponse> {
|
|
471
|
-
const result = await this.completePasskeyAuthentication(credential, session);
|
|
472
|
-
return this.exchangeIdentityToken(result.token);
|
|
473
|
-
}
|
|
474
|
-
|
|
475
405
|
async getPasskeyRegisterOptions(params: {
|
|
476
406
|
identity?: string;
|
|
477
407
|
identityType?: IdentityType;
|
|
@@ -529,102 +459,49 @@ export class MobileAuthClient {
|
|
|
529
459
|
return { has_passkey: hasPasskey };
|
|
530
460
|
}
|
|
531
461
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
async updateProfile(updates: { name?: string }): Promise<SparkVaultUser> {
|
|
541
|
-
const response = await this.http.put<SparkVaultUser>('/profile', updates);
|
|
542
|
-
if (this.config.tokenStorage.setUser) {
|
|
543
|
-
await this.config.tokenStorage.setUser(response.data);
|
|
544
|
-
}
|
|
545
|
-
return response.data;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
async getAccount(): Promise<SparkVaultAccount> {
|
|
549
|
-
const response = await this.http.get<SparkVaultAccount>('/account');
|
|
550
|
-
if (this.config.tokenStorage.setAccount) {
|
|
551
|
-
await this.config.tokenStorage.setAccount(response.data);
|
|
552
|
-
}
|
|
553
|
-
return response.data;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
async revokeRefreshToken(refreshToken?: string): Promise<void> {
|
|
557
|
-
const token = refreshToken ?? await this.config.tokenStorage.getRefreshToken();
|
|
558
|
-
if (!token) return;
|
|
559
|
-
|
|
560
|
-
await this.http.post('/auth/logout', { refresh_token: token }).catch(err => {
|
|
561
|
-
this.config.logger.warn('Logout API call failed', { error: String(err) });
|
|
462
|
+
/**
|
|
463
|
+
* Skip a post-login recommendation, suppressing it server-side for 30 days.
|
|
464
|
+
* Authorized by the login's verification token. Best-effort.
|
|
465
|
+
*/
|
|
466
|
+
async dismissRecommendation(params: { verificationToken: string; key: RecommendationKey }): Promise<void> {
|
|
467
|
+
await this.postIdentity('/recommendations/dismiss', {
|
|
468
|
+
verification_token: params.verificationToken,
|
|
469
|
+
key: params.key
|
|
562
470
|
});
|
|
563
471
|
}
|
|
564
472
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
await this.storeSession(session);
|
|
584
|
-
return {
|
|
585
|
-
access_token: session.access_token,
|
|
586
|
-
refresh_token: session.refresh_token,
|
|
587
|
-
token_type: session.token_type ?? 'Bearer',
|
|
588
|
-
expires_in: session.expires_in ?? 3600,
|
|
589
|
-
user: session.user,
|
|
590
|
-
};
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
return {
|
|
594
|
-
verified: true,
|
|
595
|
-
needs_signup_info: true,
|
|
596
|
-
signup_token: session.access_token,
|
|
597
|
-
expires_at: Math.floor(Date.now() / 1000) + (session.expires_in ?? 3600),
|
|
598
|
-
};
|
|
473
|
+
/**
|
|
474
|
+
* Post-login: send a one-time code to a new backup identifier (the inverse of
|
|
475
|
+
* the one just logged in with), authorized by the login's verification token.
|
|
476
|
+
* Returns a pending-attach `session_id`, or `already_verified` when the
|
|
477
|
+
* identifier is already on the identity.
|
|
478
|
+
*/
|
|
479
|
+
async sendBackupVerification(params: {
|
|
480
|
+
verificationToken: string;
|
|
481
|
+
type: IdentityType;
|
|
482
|
+
value: string;
|
|
483
|
+
method?: 'email' | 'sms' | 'voice';
|
|
484
|
+
}): Promise<BackupSendResponse> {
|
|
485
|
+
return this.postIdentity<BackupSendResponse>('/backup-verification/send', {
|
|
486
|
+
verification_token: params.verificationToken,
|
|
487
|
+
type: params.type,
|
|
488
|
+
value: params.value,
|
|
489
|
+
...(params.method ? { method: params.method } : {}),
|
|
490
|
+
});
|
|
599
491
|
}
|
|
600
492
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
} else {
|
|
614
|
-
await Promise.all([
|
|
615
|
-
this.config.tokenStorage.setAccessToken(session.access_token),
|
|
616
|
-
this.config.tokenStorage.setRefreshToken(session.refresh_token),
|
|
617
|
-
]);
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
const writes: Promise<void>[] = [];
|
|
621
|
-
if (session.user && this.config.tokenStorage.setUser) {
|
|
622
|
-
writes.push(this.config.tokenStorage.setUser(session.user));
|
|
623
|
-
}
|
|
624
|
-
if (session.account && this.config.tokenStorage.setAccount) {
|
|
625
|
-
writes.push(this.config.tokenStorage.setAccount(session.account));
|
|
626
|
-
}
|
|
627
|
-
await Promise.all(writes);
|
|
493
|
+
/**
|
|
494
|
+
* Confirm the backup-identifier code and attach it to the identity. An
|
|
495
|
+
* identifier already owned by another identity throws (409 `backup_conflict`).
|
|
496
|
+
*/
|
|
497
|
+
async verifyBackupVerification(params: {
|
|
498
|
+
sessionId: string;
|
|
499
|
+
code: string;
|
|
500
|
+
}): Promise<BackupVerifyResponse> {
|
|
501
|
+
return this.postIdentity<BackupVerifyResponse>('/backup-verification/verify', {
|
|
502
|
+
session_id: params.sessionId,
|
|
503
|
+
code: params.code,
|
|
504
|
+
});
|
|
628
505
|
}
|
|
629
506
|
|
|
630
507
|
private async verifyTotpWithRetryErrors(request: VerifyTotpRequest): Promise<IdentityVerificationResponse> {
|
|
@@ -688,51 +565,6 @@ export class MobileAuthClient {
|
|
|
688
565
|
};
|
|
689
566
|
}
|
|
690
567
|
|
|
691
|
-
/**
|
|
692
|
-
* Skip a post-login recommendation, suppressing it server-side for 30 days.
|
|
693
|
-
* Authorized by the login's verification token. Best-effort.
|
|
694
|
-
*/
|
|
695
|
-
async dismissRecommendation(params: { verificationToken: string; key: RecommendationKey }): Promise<void> {
|
|
696
|
-
await this.postIdentity('/recommendations/dismiss', {
|
|
697
|
-
verification_token: params.verificationToken,
|
|
698
|
-
key: params.key
|
|
699
|
-
});
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
/**
|
|
703
|
-
* Post-login: send a one-time code to a new backup identifier (the inverse of
|
|
704
|
-
* the one just logged in with), authorized by the login's verification token.
|
|
705
|
-
* Returns a pending-attach `session_id`, or `already_verified` when the
|
|
706
|
-
* identifier is already on the identity.
|
|
707
|
-
*/
|
|
708
|
-
async sendBackupVerification(params: {
|
|
709
|
-
verificationToken: string;
|
|
710
|
-
type: IdentityType;
|
|
711
|
-
value: string;
|
|
712
|
-
method?: 'email' | 'sms' | 'voice';
|
|
713
|
-
}): Promise<BackupSendResponse> {
|
|
714
|
-
return this.postIdentity<BackupSendResponse>('/backup-verification/send', {
|
|
715
|
-
verification_token: params.verificationToken,
|
|
716
|
-
type: params.type,
|
|
717
|
-
value: params.value,
|
|
718
|
-
...(params.method ? { method: params.method } : {}),
|
|
719
|
-
});
|
|
720
|
-
}
|
|
721
|
-
|
|
722
|
-
/**
|
|
723
|
-
* Confirm the backup-identifier code and attach it to the identity. An
|
|
724
|
-
* identifier already owned by another identity throws (409 `backup_conflict`).
|
|
725
|
-
*/
|
|
726
|
-
async verifyBackupVerification(params: {
|
|
727
|
-
sessionId: string;
|
|
728
|
-
code: string;
|
|
729
|
-
}): Promise<BackupVerifyResponse> {
|
|
730
|
-
return this.postIdentity<BackupVerifyResponse>('/backup-verification/verify', {
|
|
731
|
-
session_id: params.sessionId,
|
|
732
|
-
code: params.code,
|
|
733
|
-
});
|
|
734
|
-
}
|
|
735
|
-
|
|
736
568
|
private decodeIdentityTokenClaims(token: string): IdentityTokenClaims {
|
|
737
569
|
const parts = token.split('.');
|
|
738
570
|
if (parts.length !== 3) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ResolvedMobileConfig } from '../config.js';
|
|
2
|
+
import { MobileIdentityClient } from './identity.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Umbrella for SparkVault Product clients. Each product is a discrete,
|
|
6
|
+
* independently versioned surface; today that is `identity`, with room for
|
|
7
|
+
* additional products (e.g. structured ingots) to be mounted here later.
|
|
8
|
+
*/
|
|
9
|
+
export class MobileProductsClient {
|
|
10
|
+
readonly identity: MobileIdentityClient;
|
|
11
|
+
|
|
12
|
+
constructor(config: ResolvedMobileConfig) {
|
|
13
|
+
this.identity = new MobileIdentityClient(config);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { MobileIdentityClient };
|
package/src/sparks.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MobileHttpClient } from './http.js';
|
|
2
|
+
import type { ShareSparkResponse, SparkShareStatus, UnshareSparkResponse } from './types.js';
|
|
2
3
|
|
|
3
4
|
export interface Spark {
|
|
4
5
|
spark_id: string;
|
|
@@ -37,6 +38,15 @@ export interface CreateSparkResponse {
|
|
|
37
38
|
spark_id: string;
|
|
38
39
|
}
|
|
39
40
|
|
|
41
|
+
export interface ShareSparkOptions {
|
|
42
|
+
/** Link visibility. Defaults to public server-side. */
|
|
43
|
+
visibility?: 'public' | 'authenticated' | 'invite_only';
|
|
44
|
+
/** For invite_only visibility: identities granted access (server allows max 1). */
|
|
45
|
+
invites?: string[];
|
|
46
|
+
/** Link expiration TTL in seconds (server minimum 60, capped at the spark's own expiry). */
|
|
47
|
+
expiresInSeconds?: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
40
50
|
export class MobileSparksClient {
|
|
41
51
|
private readonly http: MobileHttpClient;
|
|
42
52
|
|
|
@@ -70,4 +80,43 @@ export class MobileSparksClient {
|
|
|
70
80
|
});
|
|
71
81
|
return response.data;
|
|
72
82
|
}
|
|
83
|
+
|
|
84
|
+
/** Burn a spark before its natural expiry. An already-burned spark resolves (the server returns 204); a missing spark rejects with a 404. */
|
|
85
|
+
async delete(sparkId: string): Promise<void> {
|
|
86
|
+
await this.http.delete(`/sparks/${encodeURIComponent(sparkId)}`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Create (or return the existing) public SparkLink for a spark, yielding a
|
|
91
|
+
* shareable `https://x.sv/...` URL. Only active, non-expired sparks can be
|
|
92
|
+
* shared.
|
|
93
|
+
*/
|
|
94
|
+
async share(sparkId: string, options: ShareSparkOptions = {}): Promise<ShareSparkResponse> {
|
|
95
|
+
const body: Record<string, unknown> = {};
|
|
96
|
+
if (options.visibility) body.visibility = options.visibility;
|
|
97
|
+
if (options.invites) body.invites = options.invites;
|
|
98
|
+
if (options.expiresInSeconds !== undefined) body.expires_in_seconds = options.expiresInSeconds;
|
|
99
|
+
|
|
100
|
+
const response = await this.http.patch<ShareSparkResponse>(
|
|
101
|
+
`/sparks/${encodeURIComponent(sparkId)}/share`,
|
|
102
|
+
body
|
|
103
|
+
);
|
|
104
|
+
return response.data;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/** Current sharing status for a spark. `shared` is false when no SparkLink exists. */
|
|
108
|
+
async getShare(sparkId: string): Promise<SparkShareStatus> {
|
|
109
|
+
const response = await this.http.get<SparkShareStatus>(
|
|
110
|
+
`/sparks/${encodeURIComponent(sparkId)}/share`
|
|
111
|
+
);
|
|
112
|
+
return response.data;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** Revoke a spark's SparkLink. Resolves whether or not a link existed. */
|
|
116
|
+
async unshare(sparkId: string): Promise<UnshareSparkResponse> {
|
|
117
|
+
const response = await this.http.delete<UnshareSparkResponse>(
|
|
118
|
+
`/sparks/${encodeURIComponent(sparkId)}/share`
|
|
119
|
+
);
|
|
120
|
+
return response.data;
|
|
121
|
+
}
|
|
73
122
|
}
|
package/src/types.ts
CHANGED
|
@@ -243,13 +243,6 @@ export interface RequestPinResponse {
|
|
|
243
243
|
is_signup: boolean;
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
export interface PinVerifyRequest {
|
|
247
|
-
kindling: string;
|
|
248
|
-
pin: string;
|
|
249
|
-
recipient: string;
|
|
250
|
-
organization_name?: string;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
246
|
export interface PinVerifyLoginResponse {
|
|
254
247
|
access_token: string;
|
|
255
248
|
refresh_token: string;
|
|
@@ -266,9 +259,10 @@ export interface PinVerifySignupPendingResponse {
|
|
|
266
259
|
}
|
|
267
260
|
|
|
268
261
|
/**
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
262
|
+
* Variant of the Core exchange result indicating the account has 2FA enabled:
|
|
263
|
+
* the caller must collect a second factor via
|
|
264
|
+
* `products.identity.submitSecondFactor({ ticket, code })` and re-exchange the
|
|
265
|
+
* resulting Identity token via `account.exchangeIdentityToken`.
|
|
272
266
|
*/
|
|
273
267
|
export interface PinVerifySecondFactorPendingResponse {
|
|
274
268
|
verified: false;
|
|
@@ -476,7 +470,7 @@ export interface IngotSharingConfig {
|
|
|
476
470
|
export interface IngotInvite {
|
|
477
471
|
invite_id: string;
|
|
478
472
|
identity: string;
|
|
479
|
-
identity_type: 'email';
|
|
473
|
+
identity_type: 'email' | 'phone';
|
|
480
474
|
created_at: number;
|
|
481
475
|
}
|
|
482
476
|
|
|
@@ -604,3 +598,42 @@ export interface DebugLogger {
|
|
|
604
598
|
export interface UploadProgressCallback {
|
|
605
599
|
(bytesUploaded: number, bytesTotal: number): void;
|
|
606
600
|
}
|
|
601
|
+
|
|
602
|
+
/** Result of sharing a spark — the created (or already-existing) SparkLink. */
|
|
603
|
+
export interface ShareSparkResponse {
|
|
604
|
+
shared: true;
|
|
605
|
+
/** Public `https://x.sv/{code}` URL for the SparkLink. */
|
|
606
|
+
share_url: string;
|
|
607
|
+
link_code: string;
|
|
608
|
+
visibility: string;
|
|
609
|
+
invites?: string[];
|
|
610
|
+
expires_at?: number;
|
|
611
|
+
created_at?: number;
|
|
612
|
+
/** True when a SparkLink already existed and was returned as-is. */
|
|
613
|
+
already_shared?: boolean;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
/** Sharing status for a spark. */
|
|
617
|
+
export type SparkShareStatus =
|
|
618
|
+
| {
|
|
619
|
+
shared: false;
|
|
620
|
+
spark_id: string;
|
|
621
|
+
}
|
|
622
|
+
| {
|
|
623
|
+
shared: true;
|
|
624
|
+
spark_id: string;
|
|
625
|
+
share_url: string;
|
|
626
|
+
link_code: string;
|
|
627
|
+
visibility: string;
|
|
628
|
+
invites: string[];
|
|
629
|
+
/** Single-use lifecycle: 'active' → 'consumed' (opened once) | 'revoked'. */
|
|
630
|
+
status: string;
|
|
631
|
+
expires_at?: number;
|
|
632
|
+
created_at?: number;
|
|
633
|
+
};
|
|
634
|
+
|
|
635
|
+
/** Result of unsharing a spark (deleting its SparkLink). */
|
|
636
|
+
export interface UnshareSparkResponse {
|
|
637
|
+
shared: false;
|
|
638
|
+
message: string;
|
|
639
|
+
}
|
package/dist/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|