@bounded-sh/client 0.0.97 → 0.0.99
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/dist/auth/bounded-widget-modal.d.ts +7 -2
- package/dist/auth/oidc-auth.d.ts +1 -1
- package/dist/auth/session-provider.d.ts +1 -0
- package/dist/auth/turnkey-auth.d.ts +7 -1
- package/dist/auth/turnkey-signer-bridge.d.ts +8 -5
- package/dist/auth/turnkey-signer-frame.d.ts +4 -1
- package/dist/auth/turnkey-wallet-context.d.ts +24 -0
- package/dist/auth/turnkey-wallet-widget.d.ts +2 -0
- package/dist/builds/client.d.ts +5 -2
- package/dist/builds/types.d.ts +108 -1
- package/dist/{email-auth-provider-SqE5H8jv.js → email-auth-provider-62OK5X30.js} +2 -2
- package/dist/{email-auth-provider-SqE5H8jv.js.map → email-auth-provider-62OK5X30.js.map} +1 -1
- package/dist/{email-auth-provider-DbBN1MXS.mjs → email-auth-provider-BKYVi3dl.mjs} +2 -2
- package/dist/{email-auth-provider-CiPAD3vz.mjs.map → email-auth-provider-BKYVi3dl.mjs.map} +1 -1
- package/dist/{email-auth-provider-CiPAD3vz.mjs → email-auth-provider-CIRbOSM3.mjs} +2 -2
- package/dist/{email-auth-provider-DbBN1MXS.mjs.map → email-auth-provider-CIRbOSM3.mjs.map} +1 -1
- package/dist/{email-auth-provider-BhYzRN0r.js → email-auth-provider-Cpj8hIFu.js} +2 -2
- package/dist/{email-auth-provider-BhYzRN0r.js.map → email-auth-provider-Cpj8hIFu.js.map} +1 -1
- package/dist/{guest-auth-provider-BiM35KHb.js → guest-auth-provider-0PjGFGDm.js} +2 -2
- package/dist/{guest-auth-provider-BiM35KHb.js.map → guest-auth-provider-0PjGFGDm.js.map} +1 -1
- package/dist/{guest-auth-provider-JE0zdREA.js → guest-auth-provider-B6dJixRm.js} +2 -2
- package/dist/{guest-auth-provider-JE0zdREA.js.map → guest-auth-provider-B6dJixRm.js.map} +1 -1
- package/dist/{guest-auth-provider-Dtsq4QaY.mjs → guest-auth-provider-C23vWrOT.mjs} +2 -2
- package/dist/{guest-auth-provider-KCalcsKu.mjs.map → guest-auth-provider-C23vWrOT.mjs.map} +1 -1
- package/dist/{guest-auth-provider-KCalcsKu.mjs → guest-auth-provider-E7Fg7-E2.mjs} +2 -2
- package/dist/{guest-auth-provider-Dtsq4QaY.mjs.map → guest-auth-provider-E7Fg7-E2.mjs.map} +1 -1
- package/dist/{index-Bb7I-AoO.js → index-BrU_tGd-.js} +1159 -600
- package/dist/index-BrU_tGd-.js.map +1 -0
- package/dist/{index-C01Q7k1A.mjs → index-l5E4pjpt.mjs} +1156 -601
- package/dist/index-l5E4pjpt.mjs.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{index.native-BZOWS_sR.js → index.native-CllNqdoy.js} +442 -81
- package/dist/index.native-CllNqdoy.js.map +1 -0
- package/dist/{index.native-gVbAsohv.mjs → index.native-r1I-9E8e.mjs} +442 -81
- package/dist/index.native-r1I-9E8e.mjs.map +1 -0
- package/dist/index.native.js +1 -1
- package/dist/index.native.mjs +1 -1
- package/dist/{injected-evm-wallet-provider-C3MwUTRd.js → injected-evm-wallet-provider-BXM8TfS3.js} +2 -2
- package/dist/{injected-evm-wallet-provider-C3MwUTRd.js.map → injected-evm-wallet-provider-BXM8TfS3.js.map} +1 -1
- package/dist/{injected-evm-wallet-provider-DIMM0HdQ.mjs → injected-evm-wallet-provider-BmDPRV5L.mjs} +2 -2
- package/dist/{injected-evm-wallet-provider-DIMM0HdQ.mjs.map → injected-evm-wallet-provider-BmDPRV5L.mjs.map} +1 -1
- package/dist/{injected-evm-wallet-provider-ZrxW8UES.js → injected-evm-wallet-provider-CO_aC4TY.js} +2 -2
- package/dist/{injected-evm-wallet-provider-ZrxW8UES.js.map → injected-evm-wallet-provider-CO_aC4TY.js.map} +1 -1
- package/dist/{injected-evm-wallet-provider-K0j697jt.mjs → injected-evm-wallet-provider-CkhN5u3d.mjs} +2 -2
- package/dist/{injected-evm-wallet-provider-K0j697jt.mjs.map → injected-evm-wallet-provider-CkhN5u3d.mjs.map} +1 -1
- package/dist/{injected-wallet-provider-CDl-az6P.js → injected-wallet-provider-B9eU7t8o.js} +2 -2
- package/dist/{injected-wallet-provider-CDl-az6P.js.map → injected-wallet-provider-B9eU7t8o.js.map} +1 -1
- package/dist/{injected-wallet-provider-CG3oKdp_.js → injected-wallet-provider-Bi_mB_q3.js} +2 -2
- package/dist/{injected-wallet-provider-CG3oKdp_.js.map → injected-wallet-provider-Bi_mB_q3.js.map} +1 -1
- package/dist/{injected-wallet-provider-DH8yLpyf.mjs → injected-wallet-provider-BlSdRbgq.mjs} +2 -2
- package/dist/{injected-wallet-provider-DH8yLpyf.mjs.map → injected-wallet-provider-BlSdRbgq.mjs.map} +1 -1
- package/dist/{injected-wallet-provider-DCaT1pKl.mjs → injected-wallet-provider-yl51pLBa.mjs} +2 -2
- package/dist/{injected-wallet-provider-DCaT1pKl.mjs.map → injected-wallet-provider-yl51pLBa.mjs.map} +1 -1
- package/dist/services/broadcast.d.ts +28 -0
- package/dist/services/session.d.ts +28 -0
- package/package.json +7 -3
- package/dist/bounded-widget-modal-C0Z7gmxH.mjs +0 -31
- package/dist/bounded-widget-modal-C0Z7gmxH.mjs.map +0 -1
- package/dist/bounded-widget-modal-s0PL86Y-.js +0 -33
- package/dist/bounded-widget-modal-s0PL86Y-.js.map +0 -1
- package/dist/index-Bb7I-AoO.js.map +0 -1
- package/dist/index-C01Q7k1A.mjs.map +0 -1
- package/dist/index.native-BZOWS_sR.js.map +0 -1
- package/dist/index.native-gVbAsohv.mjs.map +0 -1
|
@@ -7,6 +7,7 @@ export interface BoundedModal {
|
|
|
7
7
|
iframe: HTMLIFrameElement | null;
|
|
8
8
|
iframeOrigin: string;
|
|
9
9
|
iframeReady: boolean;
|
|
10
|
+
iframeContext: string;
|
|
10
11
|
onBackdrop: (() => void) | null;
|
|
11
12
|
onIframeMessage: ((d: Record<string, unknown>) => void) | null;
|
|
12
13
|
chain: Promise<unknown>;
|
|
@@ -29,7 +30,7 @@ export declare function fitPanelToContent(m: BoundedModal): void;
|
|
|
29
30
|
/** Switch the modal into NATIVE-content mode: detach any iframe, mount `node`. */
|
|
30
31
|
export declare function mountContent(m: BoundedModal, node: HTMLElement): void;
|
|
31
32
|
/** Get (or lazily create) the warm iframe for signer/hosted-page mode. */
|
|
32
|
-
export declare function ensureIframe(m: BoundedModal, url: string, origin: string): HTMLIFrameElement;
|
|
33
|
+
export declare function ensureIframe(m: BoundedModal, url: string, origin: string, context?: string): HTMLIFrameElement;
|
|
33
34
|
/**
|
|
34
35
|
* Destroy the warm signer iframe if one is currently mounted for `origin`, and report
|
|
35
36
|
* whether there was one. Logout needs this: a signing session can live in that document's
|
|
@@ -41,7 +42,11 @@ export declare function ensureIframe(m: BoundedModal, url: string, origin: strin
|
|
|
41
42
|
* Deliberately does NOT call getModal(): that would BUILD a modal just to tear it down, on
|
|
42
43
|
* every logout of every app, most of which never mounted one.
|
|
43
44
|
*/
|
|
44
|
-
export declare function detachWarmSignerIframe(origin
|
|
45
|
+
export declare function detachWarmSignerIframe(origin?: string): boolean;
|
|
46
|
+
/** A removed frame cannot still supply its in-memory signing session. */
|
|
47
|
+
export declare function hasWarmSignerFrame(context: string): boolean;
|
|
45
48
|
export declare function detachIframe(m: BoundedModal): void;
|
|
46
49
|
export declare function ensureFonts(): void;
|
|
47
50
|
export { hasDOM };
|
|
51
|
+
/** Tag the already mounted login document without moving or navigating it. */
|
|
52
|
+
export declare function bindWarmSignerFrame(frame: HTMLIFrameElement, context: string): void;
|
package/dist/auth/oidc-auth.d.ts
CHANGED
|
@@ -79,7 +79,7 @@ export declare function establishInlineSession(data: {
|
|
|
79
79
|
access_token?: string;
|
|
80
80
|
refreshToken?: string;
|
|
81
81
|
bounded_refresh_token?: string;
|
|
82
|
-
}): Promise<User>;
|
|
82
|
+
}, beforeCommit?: () => void, beforeStore?: () => void): Promise<User>;
|
|
83
83
|
export declare function inlineAuthEndpoint(): Promise<{
|
|
84
84
|
base: string;
|
|
85
85
|
appId: string;
|
|
@@ -20,6 +20,7 @@ export declare function adoptSessionProvider(opts: {
|
|
|
20
20
|
* marker for singleton providers that are not rebuilt from config. */
|
|
21
21
|
configKey: string;
|
|
22
22
|
user?: User | null;
|
|
23
|
+
beforeCommit?: () => void;
|
|
23
24
|
}): Promise<User | null>;
|
|
24
25
|
/**
|
|
25
26
|
* REPAIR, not establishment: rebuild the provider pointers from the init config
|
|
@@ -2,13 +2,19 @@ import type { User } from '@bounded-sh/core';
|
|
|
2
2
|
export interface TurnkeyEmailLoginHandle {
|
|
3
3
|
/** The email the code was sent to (echo, for the widget's "code sent to ..." line). */
|
|
4
4
|
email: string;
|
|
5
|
+
/**
|
|
6
|
+
* App-scoped wallets: the signer document the signing bridge mounts AFTER login. The login
|
|
7
|
+
* code itself is never typed there (BSA-2026-004); `run()` always drives the Bounded OTP frame.
|
|
8
|
+
*/
|
|
9
|
+
frameUrl?: string;
|
|
10
|
+
signerOrigin?: string;
|
|
5
11
|
/**
|
|
6
12
|
* Drive the login through the Bounded OTP frame mounted at `iframe`. The frame renders the code
|
|
7
13
|
* input, seals the code with a frame-generated key registered against the ceremony, verifies it
|
|
8
14
|
* server-side, and hands back the app session, which this establishes inline. Resolves with the
|
|
9
15
|
* signed-in User. Rejects with a user-safe Error if the frame cannot start or reports a failure.
|
|
10
16
|
*/
|
|
11
|
-
run(iframe: HTMLIFrameElement): Promise<User>;
|
|
17
|
+
run(iframe: HTMLIFrameElement, signal?: AbortSignal): Promise<User>;
|
|
12
18
|
}
|
|
13
19
|
/**
|
|
14
20
|
* Begin authMode:"turnkey" login: ask Turnkey to email a one-time code to `email`, and open a
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { SolanaV1Transaction } from '@bounded-sh/core';
|
|
2
2
|
import type { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
3
|
+
import { walletSessionState } from './turnkey-wallet-context';
|
|
4
|
+
export declare function getTurnkeyWalletSessionState(): Promise<ReturnType<typeof walletSessionState>>;
|
|
3
5
|
export interface TurnkeySignResult {
|
|
4
6
|
/** 64-byte ed25519 signature. */
|
|
5
7
|
signature: Uint8Array;
|
|
@@ -21,7 +23,7 @@ export interface TurnkeyWallet {
|
|
|
21
23
|
* an unswept session is account-bound and unusable without a live authorization,
|
|
22
24
|
* it just costs its owner nothing and a stranger nothing.
|
|
23
25
|
*/
|
|
24
|
-
export declare function clearTurnkeySigningSession(): Promise<void>;
|
|
26
|
+
export declare function clearTurnkeySigningSession(idToken?: string | null): Promise<void>;
|
|
25
27
|
export declare function hasTurnkeyWallet(): boolean;
|
|
26
28
|
/**
|
|
27
29
|
* Get-or-create the user's non-custodial Turnkey wallet, resolving with its stable
|
|
@@ -44,10 +46,9 @@ export declare function getOrCreateTurnkeyWallet(): Promise<TurnkeyWallet>;
|
|
|
44
46
|
*/
|
|
45
47
|
export declare function openTurnkeyKeyExport(): Promise<void>;
|
|
46
48
|
/**
|
|
47
|
-
* Open the Bounded Turnkey
|
|
48
|
-
* user's
|
|
49
|
-
*
|
|
50
|
-
* browser blocks the popup.
|
|
49
|
+
* Open the Bounded Turnkey approval card and sign `message` (raw bytes) with the
|
|
50
|
+
* user's Turnkey wallet, resolving with the ed25519 signature and wallet address.
|
|
51
|
+
* Call from a user gesture so a deliberate browser fallback can open if needed.
|
|
51
52
|
*
|
|
52
53
|
* The signer shows an approve card (wallet address, requesting origin, Approve /
|
|
53
54
|
* Cancel). With a live 24-hour signing session (normally established by the login
|
|
@@ -66,3 +67,5 @@ export declare function signTransactionV1WithTurnkey(transaction: SolanaV1Transa
|
|
|
66
67
|
export declare function signMessageWithTurnkey(message: string): Promise<string>;
|
|
67
68
|
export declare function signTransactionWithTurnkey<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;
|
|
68
69
|
export declare function signAndSubmitTransactionWithTurnkey(transaction: Transaction | VersionedTransaction, feePayer?: PublicKey): Promise<string>;
|
|
70
|
+
/** Save this trusted URL to recover the wallet even after the app is deleted. */
|
|
71
|
+
export declare function getTurnkeyWalletRecoveryUrl(): Promise<string>;
|
|
@@ -8,4 +8,7 @@ export interface SignerFrameHandle {
|
|
|
8
8
|
dispose(): void;
|
|
9
9
|
}
|
|
10
10
|
/** Mount the hidden signer frame. Callers MUST dispose() when done. */
|
|
11
|
-
export declare function openHiddenSignerFrame(
|
|
11
|
+
export declare function openHiddenSignerFrame(page?: {
|
|
12
|
+
url: string;
|
|
13
|
+
origin: string;
|
|
14
|
+
}): Promise<SignerFrameHandle>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Client routing from issuer-produced session claims. The server verifies authority. */
|
|
2
|
+
export interface TurnkeyWalletContext {
|
|
3
|
+
scope: 'legacy' | 'app';
|
|
4
|
+
appId: string;
|
|
5
|
+
userId: string;
|
|
6
|
+
address: string;
|
|
7
|
+
base: string;
|
|
8
|
+
url: string;
|
|
9
|
+
origin: string;
|
|
10
|
+
key: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function walletContextFromClaims(claims: Record<string, unknown>, baseUrl: string, expectedAppId: string, tenantOrigin: string): TurnkeyWalletContext;
|
|
13
|
+
export declare function invalidatePendingWalletLogin(): void;
|
|
14
|
+
export declare function walletOperationGuard(): () => void;
|
|
15
|
+
export declare function walletLoginGuard(signal?: AbortSignal): () => void;
|
|
16
|
+
export type WalletSessionState = {
|
|
17
|
+
status: 'ready';
|
|
18
|
+
expiresAt: number;
|
|
19
|
+
} | {
|
|
20
|
+
status: 'verification-required';
|
|
21
|
+
reason?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function setWalletSessionState(key: string, state: WalletSessionState): void;
|
|
24
|
+
export declare function walletSessionState(key: string): WalletSessionState;
|
package/dist/builds/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuildCancelResponse, BuildDelegatedReviewCapabilityResponse, BuildEventsResponse, BuildGateDecisionResponse, BuildGetResponse, BuildListResponse, BuildReviewAudience, BuildReviewCapabilityRefreshResponse, BuildsApiErrorDetails, BuildSubmitResponse, BuildTopupResponse } from './types';
|
|
1
|
+
import type { BuildCancelResponse, BuildDelegatedReviewCapabilityResponse, BuildDesignFeedback, BuildEventsResponse, BuildGateDecisionResponse, BuildGetResponse, BuildListResponse, BuildReviewAudience, BuildReviewCapabilityRefreshResponse, BuildsApiErrorDetails, BuildSubmitResponse, BuildTopupResponse } from './types';
|
|
2
2
|
type BuildIdempotencyOptions = {
|
|
3
3
|
/** Caller-minted wire key (1-256 characters), passed through unchanged. */
|
|
4
4
|
idempotencyKey: string;
|
|
@@ -62,8 +62,11 @@ export declare function uploadInput(appId: string, options: {
|
|
|
62
62
|
* replace a caller-minted `idempotencyKey` and survives refresh replays.
|
|
63
63
|
*/
|
|
64
64
|
export type BuildGateDecisionOptions = {
|
|
65
|
-
|
|
65
|
+
/** `request_changes` answers a design review only, and needs a note or feedback that asks for a change. */
|
|
66
|
+
decision: 'approve' | 'reject' | 'request_changes';
|
|
66
67
|
note?: string;
|
|
68
|
+
/** Structured answer to a design review, sent beside `note`. */
|
|
69
|
+
feedback?: BuildDesignFeedback;
|
|
67
70
|
} & BuildIdempotencyOptions;
|
|
68
71
|
/**
|
|
69
72
|
* Exact owner-rendered approval review capability plus one durable
|
package/dist/builds/types.d.ts
CHANGED
|
@@ -60,6 +60,86 @@ export type BuildDelegatedReviewCapabilityView = BuildDelegatedReviewCapabilityB
|
|
|
60
60
|
state: 'decided';
|
|
61
61
|
decision: 'approve' | 'reject';
|
|
62
62
|
});
|
|
63
|
+
/** One choice a single-choice design question offers. */
|
|
64
|
+
export interface BuildRunDesignQuestionOption {
|
|
65
|
+
id: string;
|
|
66
|
+
label: string;
|
|
67
|
+
/** Short supporting detail for the choice. */
|
|
68
|
+
hint?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A design assumption the owner can confirm or change. `single` offers 2-4
|
|
72
|
+
* options and `current` names the one the prototype already shows; `text`
|
|
73
|
+
* asks for a short free answer and carries no options.
|
|
74
|
+
*/
|
|
75
|
+
export interface BuildRunDesignQuestion {
|
|
76
|
+
/** Unique within its round. */
|
|
77
|
+
id: string;
|
|
78
|
+
/** Short topic, such as "Layout". */
|
|
79
|
+
label: string;
|
|
80
|
+
/** The question itself, one line. */
|
|
81
|
+
prompt: string;
|
|
82
|
+
kind: 'single' | 'text';
|
|
83
|
+
options?: BuildRunDesignQuestionOption[];
|
|
84
|
+
/** The option id the prototype already implements. */
|
|
85
|
+
current?: string;
|
|
86
|
+
/** The design surface this question is about, when it is about one. */
|
|
87
|
+
surfaceId?: string;
|
|
88
|
+
}
|
|
89
|
+
/** One design round the owner has seen. */
|
|
90
|
+
export interface BuildRunDesignRound {
|
|
91
|
+
round: number;
|
|
92
|
+
prototypeUrl?: string;
|
|
93
|
+
shots: number;
|
|
94
|
+
/** Screenshots of the round's served prototype, one per viewport. */
|
|
95
|
+
renders?: Array<{
|
|
96
|
+
viewport: string;
|
|
97
|
+
url: string;
|
|
98
|
+
}>;
|
|
99
|
+
/** The questions that round asked. */
|
|
100
|
+
questions?: BuildRunDesignQuestion[];
|
|
101
|
+
/**
|
|
102
|
+
* How the round's design review was decided. Known decisions are approve,
|
|
103
|
+
* request_changes, cancel, reject, skip and retry; `summary` is the first
|
|
104
|
+
* line of the decision note.
|
|
105
|
+
*/
|
|
106
|
+
decision?: {
|
|
107
|
+
decision: string;
|
|
108
|
+
summary?: string;
|
|
109
|
+
decidedAt: string;
|
|
110
|
+
};
|
|
111
|
+
/** The previous round's requested changes could not be applied, so this round shows that prototype again. */
|
|
112
|
+
revisionFailed?: boolean;
|
|
113
|
+
}
|
|
114
|
+
/** The owner's design view of a design-first run: the prototype, every round seen, and the open design decision while
|
|
115
|
+
* the build waits on it (absent once decided). */
|
|
116
|
+
export interface BuildRunDesignView {
|
|
117
|
+
medium?: string;
|
|
118
|
+
galleryUrl?: string;
|
|
119
|
+
galleryReady?: boolean;
|
|
120
|
+
prototypeUrl?: string;
|
|
121
|
+
rendered?: boolean;
|
|
122
|
+
review?: 'human' | 'auto';
|
|
123
|
+
palette?: string;
|
|
124
|
+
typography?: string;
|
|
125
|
+
mood?: string;
|
|
126
|
+
surfaces?: Array<{
|
|
127
|
+
id: string;
|
|
128
|
+
title: string;
|
|
129
|
+
}>;
|
|
130
|
+
/** One-line summary of the round on screen. */
|
|
131
|
+
summary?: string;
|
|
132
|
+
/** The on-screen round's questions. Show them only while `gate` is open. */
|
|
133
|
+
questions?: BuildRunDesignQuestion[];
|
|
134
|
+
round?: number;
|
|
135
|
+
maxRounds?: number;
|
|
136
|
+
rounds?: BuildRunDesignRound[];
|
|
137
|
+
gate?: {
|
|
138
|
+
gateId: string;
|
|
139
|
+
allowedDecisions: string[];
|
|
140
|
+
expiresAt: string | null;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
63
143
|
/** Additive wire:1 build projection returned by developer-api. */
|
|
64
144
|
export interface BuildRunClientView {
|
|
65
145
|
runId: string;
|
|
@@ -99,6 +179,8 @@ export interface BuildRunClientView {
|
|
|
99
179
|
aiMicroUsd: number;
|
|
100
180
|
infraMicroUsd: number;
|
|
101
181
|
};
|
|
182
|
+
/** Owner-only design view: what an owner needs to answer a design review. */
|
|
183
|
+
design?: BuildRunDesignView;
|
|
102
184
|
createdAtMs: number;
|
|
103
185
|
updatedAtMs: number;
|
|
104
186
|
}
|
|
@@ -176,9 +258,34 @@ export interface BuildGateDecisionResponse {
|
|
|
176
258
|
runId: string;
|
|
177
259
|
targetAppId: string;
|
|
178
260
|
gateId: string;
|
|
179
|
-
decision: 'approve' | 'reject';
|
|
261
|
+
decision: 'approve' | 'reject' | 'request_changes';
|
|
180
262
|
state: string;
|
|
181
263
|
}
|
|
264
|
+
/** One answer to a design question: `optionId` for a `single` question, `text` for a `text` question. */
|
|
265
|
+
export interface BuildDesignAnswer {
|
|
266
|
+
questionId: string;
|
|
267
|
+
optionId?: string;
|
|
268
|
+
text?: string;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Structured design review feedback. The builder validates it: answers must
|
|
272
|
+
* name the open round's questions, and confirming only the options the
|
|
273
|
+
* prototype already shows is not a requested change.
|
|
274
|
+
*/
|
|
275
|
+
export interface BuildDesignFeedback {
|
|
276
|
+
text?: string;
|
|
277
|
+
answers?: BuildDesignAnswer[];
|
|
278
|
+
/** Notes on specific design surfaces, by surface id. */
|
|
279
|
+
surfaces?: Array<{
|
|
280
|
+
id: string;
|
|
281
|
+
note: string;
|
|
282
|
+
}>;
|
|
283
|
+
/** Reference links for the designer. */
|
|
284
|
+
attachments?: Array<{
|
|
285
|
+
url: string;
|
|
286
|
+
name?: string;
|
|
287
|
+
}>;
|
|
288
|
+
}
|
|
182
289
|
export interface BuildDelegatedReviewCapabilityResponse {
|
|
183
290
|
wire: 1;
|
|
184
291
|
capability: BuildDelegatedReviewCapabilityView;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var core = require('@bounded-sh/core');
|
|
4
|
-
var index = require('./index-
|
|
4
|
+
var index = require('./index-BrU_tGd-.js');
|
|
5
5
|
require('react');
|
|
6
6
|
|
|
7
7
|
// Web uses localStorage (WebSessionManager); React Native uses the configured
|
|
@@ -96,4 +96,4 @@ const emailProviderSingleton = new EmailAuthProvider();
|
|
|
96
96
|
|
|
97
97
|
exports.EmailAuthProvider = EmailAuthProvider;
|
|
98
98
|
exports.emailProviderSingleton = emailProviderSingleton;
|
|
99
|
-
//# sourceMappingURL=email-auth-provider-
|
|
99
|
+
//# sourceMappingURL=email-auth-provider-62OK5X30.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-auth-provider-
|
|
1
|
+
{"version":3,"file":"email-auth-provider-62OK5X30.js","sources":["../.rollup-tmp/auth/providers/email-auth-provider.js"],"sourcesContent":["import { getActiveSessionManager } from '@bounded-sh/core';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, signTransactionV1WithTurnkey, } from '../turnkey-signer-bridge';\n// Web uses localStorage (WebSessionManager); React Native uses the configured\n// ReactNativeSessionManager. getActiveSessionManager() picks the right one by\n// whether the RN manager was configured (NOT `typeof window`, which is truthy on\n// RN too and would wrongly route to localStorage). Same selector the core\n// request path uses, so hosted Bounded Auth sessions persist + authenticate on BOTH.\nconst sessionManager = getActiveSessionManager;\nconst NO_WALLET = 'This session has no Turnkey wallet. Sign in again to provision the default ' +\n 'embedded wallet, or check whether the app explicitly sets auth.wallets:false.';\n// ---------------------------------------------------------------------------\n// token / session helpers\n// ---------------------------------------------------------------------------\nfunction decodeJwt(token) {\n try {\n let b64 = token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad === 2)\n b64 += '==';\n else if (pad === 3)\n b64 += '=';\n // getPlatform().atob is RN-safe (global atob is undefined on Hermes/JSC).\n return JSON.parse(getPlatform().atob(b64));\n }\n catch (_a) {\n return {};\n }\n}\nfunction userFromIdToken(idToken, fallbackEmail) {\n const c = decodeJwt(idToken);\n const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n const email = (c.email || fallbackEmail || null);\n return {\n id,\n address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n evmAddress: null,\n email,\n provider: emailProviderSingleton,\n };\n}\n// ---------------------------------------------------------------------------\n// provider\n// ---------------------------------------------------------------------------\nexport class EmailAuthProvider {\n async login() {\n throw new Error('login() no longer opens inline email OTP. Use loginWithRedirect({ redirectUri }) ' +\n 'or loginWithPopup({ redirectUri }) for hosted Bounded Auth.');\n }\n async restoreSession() {\n const sm = sessionManager();\n const session = await sm.getSession();\n if (!session)\n return null;\n const idToken = sm.getIdToken();\n if (!idToken)\n return null;\n const user = userFromIdToken(idToken);\n setCurrentUser(user);\n return user;\n }\n async logout() {\n await sessionManager().clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signMessageWithTurnkey(message);\n }\n async signTransaction(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionWithTurnkey(transaction);\n }\n async signTransactionV1(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionV1WithTurnkey(transaction);\n }\n /** The hosted Turnkey signer decodes SIMD-0385 v1 messages, so v1 is advertised alongside legacy and v0. */\n supportedTransactionVersions() {\n return hasTurnkeyWallet() ? ['legacy', 0, 1] : ['legacy', 0];\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n }\n async getNativeMethods() { return {}; }\n}\nconst emailProviderSingleton = new EmailAuthProvider();\nexport { emailProviderSingleton };\n"],"names":["getActiveSessionManager","getPlatform","setCurrentUser","hasTurnkeyWallet","signMessageWithTurnkey","signTransactionWithTurnkey","signTransactionV1WithTurnkey","signAndSubmitTransactionWithTurnkey"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getActiveSessionManager } from '@bounded-sh/core';
|
|
2
|
-
import { s as setCurrentUser, h as hasTurnkeyWallet, a as signMessageWithTurnkey, b as signTransactionWithTurnkey, c as signTransactionV1WithTurnkey, d as signAndSubmitTransactionWithTurnkey, g as getPlatform } from './index-
|
|
2
|
+
import { s as setCurrentUser, h as hasTurnkeyWallet, a as signMessageWithTurnkey, b as signTransactionWithTurnkey, c as signTransactionV1WithTurnkey, d as signAndSubmitTransactionWithTurnkey, g as getPlatform } from './index-l5E4pjpt.mjs';
|
|
3
3
|
import 'react';
|
|
4
4
|
|
|
5
5
|
// Web uses localStorage (WebSessionManager); React Native uses the configured
|
|
@@ -93,4 +93,4 @@ class EmailAuthProvider {
|
|
|
93
93
|
const emailProviderSingleton = new EmailAuthProvider();
|
|
94
94
|
|
|
95
95
|
export { EmailAuthProvider, emailProviderSingleton };
|
|
96
|
-
//# sourceMappingURL=email-auth-provider-
|
|
96
|
+
//# sourceMappingURL=email-auth-provider-BKYVi3dl.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-auth-provider-
|
|
1
|
+
{"version":3,"file":"email-auth-provider-BKYVi3dl.mjs","sources":["../.rollup-tmp/auth/providers/email-auth-provider.js"],"sourcesContent":["import { getActiveSessionManager } from '@bounded-sh/core';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, signTransactionV1WithTurnkey, } from '../turnkey-signer-bridge';\n// Web uses localStorage (WebSessionManager); React Native uses the configured\n// ReactNativeSessionManager. getActiveSessionManager() picks the right one by\n// whether the RN manager was configured (NOT `typeof window`, which is truthy on\n// RN too and would wrongly route to localStorage). Same selector the core\n// request path uses, so hosted Bounded Auth sessions persist + authenticate on BOTH.\nconst sessionManager = getActiveSessionManager;\nconst NO_WALLET = 'This session has no Turnkey wallet. Sign in again to provision the default ' +\n 'embedded wallet, or check whether the app explicitly sets auth.wallets:false.';\n// ---------------------------------------------------------------------------\n// token / session helpers\n// ---------------------------------------------------------------------------\nfunction decodeJwt(token) {\n try {\n let b64 = token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad === 2)\n b64 += '==';\n else if (pad === 3)\n b64 += '=';\n // getPlatform().atob is RN-safe (global atob is undefined on Hermes/JSC).\n return JSON.parse(getPlatform().atob(b64));\n }\n catch (_a) {\n return {};\n }\n}\nfunction userFromIdToken(idToken, fallbackEmail) {\n const c = decodeJwt(idToken);\n const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n const email = (c.email || fallbackEmail || null);\n return {\n id,\n address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n evmAddress: null,\n email,\n provider: emailProviderSingleton,\n };\n}\n// ---------------------------------------------------------------------------\n// provider\n// ---------------------------------------------------------------------------\nexport class EmailAuthProvider {\n async login() {\n throw new Error('login() no longer opens inline email OTP. Use loginWithRedirect({ redirectUri }) ' +\n 'or loginWithPopup({ redirectUri }) for hosted Bounded Auth.');\n }\n async restoreSession() {\n const sm = sessionManager();\n const session = await sm.getSession();\n if (!session)\n return null;\n const idToken = sm.getIdToken();\n if (!idToken)\n return null;\n const user = userFromIdToken(idToken);\n setCurrentUser(user);\n return user;\n }\n async logout() {\n await sessionManager().clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signMessageWithTurnkey(message);\n }\n async signTransaction(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionWithTurnkey(transaction);\n }\n async signTransactionV1(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionV1WithTurnkey(transaction);\n }\n /** The hosted Turnkey signer decodes SIMD-0385 v1 messages, so v1 is advertised alongside legacy and v0. */\n supportedTransactionVersions() {\n return hasTurnkeyWallet() ? ['legacy', 0, 1] : ['legacy', 0];\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n }\n async getNativeMethods() { return {}; }\n}\nconst emailProviderSingleton = new EmailAuthProvider();\nexport { emailProviderSingleton };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getActiveSessionManager } from '@bounded-sh/core';
|
|
2
|
-
import { s as setCurrentUser, h as hasTurnkeyWallet, a as signMessageWithTurnkey, b as signTransactionWithTurnkey, c as signTransactionV1WithTurnkey, d as signAndSubmitTransactionWithTurnkey, g as getPlatform } from './index.native-
|
|
2
|
+
import { s as setCurrentUser, h as hasTurnkeyWallet, a as signMessageWithTurnkey, b as signTransactionWithTurnkey, c as signTransactionV1WithTurnkey, d as signAndSubmitTransactionWithTurnkey, g as getPlatform } from './index.native-r1I-9E8e.mjs';
|
|
3
3
|
import 'react';
|
|
4
4
|
|
|
5
5
|
// Web uses localStorage (WebSessionManager); React Native uses the configured
|
|
@@ -93,4 +93,4 @@ class EmailAuthProvider {
|
|
|
93
93
|
const emailProviderSingleton = new EmailAuthProvider();
|
|
94
94
|
|
|
95
95
|
export { EmailAuthProvider, emailProviderSingleton };
|
|
96
|
-
//# sourceMappingURL=email-auth-provider-
|
|
96
|
+
//# sourceMappingURL=email-auth-provider-CIRbOSM3.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-auth-provider-
|
|
1
|
+
{"version":3,"file":"email-auth-provider-CIRbOSM3.mjs","sources":["../.rollup-tmp/auth/providers/email-auth-provider.js"],"sourcesContent":["import { getActiveSessionManager } from '@bounded-sh/core';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, signTransactionV1WithTurnkey, } from '../turnkey-signer-bridge';\n// Web uses localStorage (WebSessionManager); React Native uses the configured\n// ReactNativeSessionManager. getActiveSessionManager() picks the right one by\n// whether the RN manager was configured (NOT `typeof window`, which is truthy on\n// RN too and would wrongly route to localStorage). Same selector the core\n// request path uses, so hosted Bounded Auth sessions persist + authenticate on BOTH.\nconst sessionManager = getActiveSessionManager;\nconst NO_WALLET = 'This session has no Turnkey wallet. Sign in again to provision the default ' +\n 'embedded wallet, or check whether the app explicitly sets auth.wallets:false.';\n// ---------------------------------------------------------------------------\n// token / session helpers\n// ---------------------------------------------------------------------------\nfunction decodeJwt(token) {\n try {\n let b64 = token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad === 2)\n b64 += '==';\n else if (pad === 3)\n b64 += '=';\n // getPlatform().atob is RN-safe (global atob is undefined on Hermes/JSC).\n return JSON.parse(getPlatform().atob(b64));\n }\n catch (_a) {\n return {};\n }\n}\nfunction userFromIdToken(idToken, fallbackEmail) {\n const c = decodeJwt(idToken);\n const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n const email = (c.email || fallbackEmail || null);\n return {\n id,\n address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n evmAddress: null,\n email,\n provider: emailProviderSingleton,\n };\n}\n// ---------------------------------------------------------------------------\n// provider\n// ---------------------------------------------------------------------------\nexport class EmailAuthProvider {\n async login() {\n throw new Error('login() no longer opens inline email OTP. Use loginWithRedirect({ redirectUri }) ' +\n 'or loginWithPopup({ redirectUri }) for hosted Bounded Auth.');\n }\n async restoreSession() {\n const sm = sessionManager();\n const session = await sm.getSession();\n if (!session)\n return null;\n const idToken = sm.getIdToken();\n if (!idToken)\n return null;\n const user = userFromIdToken(idToken);\n setCurrentUser(user);\n return user;\n }\n async logout() {\n await sessionManager().clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signMessageWithTurnkey(message);\n }\n async signTransaction(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionWithTurnkey(transaction);\n }\n async signTransactionV1(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionV1WithTurnkey(transaction);\n }\n /** The hosted Turnkey signer decodes SIMD-0385 v1 messages, so v1 is advertised alongside legacy and v0. */\n supportedTransactionVersions() {\n return hasTurnkeyWallet() ? ['legacy', 0, 1] : ['legacy', 0];\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n }\n async getNativeMethods() { return {}; }\n}\nconst emailProviderSingleton = new EmailAuthProvider();\nexport { emailProviderSingleton };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var core = require('@bounded-sh/core');
|
|
4
|
-
var index_native = require('./index.native-
|
|
4
|
+
var index_native = require('./index.native-CllNqdoy.js');
|
|
5
5
|
require('react');
|
|
6
6
|
|
|
7
7
|
// Web uses localStorage (WebSessionManager); React Native uses the configured
|
|
@@ -96,4 +96,4 @@ const emailProviderSingleton = new EmailAuthProvider();
|
|
|
96
96
|
|
|
97
97
|
exports.EmailAuthProvider = EmailAuthProvider;
|
|
98
98
|
exports.emailProviderSingleton = emailProviderSingleton;
|
|
99
|
-
//# sourceMappingURL=email-auth-provider-
|
|
99
|
+
//# sourceMappingURL=email-auth-provider-Cpj8hIFu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-auth-provider-
|
|
1
|
+
{"version":3,"file":"email-auth-provider-Cpj8hIFu.js","sources":["../.rollup-tmp/auth/providers/email-auth-provider.js"],"sourcesContent":["import { getActiveSessionManager } from '@bounded-sh/core';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, signTransactionV1WithTurnkey, } from '../turnkey-signer-bridge';\n// Web uses localStorage (WebSessionManager); React Native uses the configured\n// ReactNativeSessionManager. getActiveSessionManager() picks the right one by\n// whether the RN manager was configured (NOT `typeof window`, which is truthy on\n// RN too and would wrongly route to localStorage). Same selector the core\n// request path uses, so hosted Bounded Auth sessions persist + authenticate on BOTH.\nconst sessionManager = getActiveSessionManager;\nconst NO_WALLET = 'This session has no Turnkey wallet. Sign in again to provision the default ' +\n 'embedded wallet, or check whether the app explicitly sets auth.wallets:false.';\n// ---------------------------------------------------------------------------\n// token / session helpers\n// ---------------------------------------------------------------------------\nfunction decodeJwt(token) {\n try {\n let b64 = token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad === 2)\n b64 += '==';\n else if (pad === 3)\n b64 += '=';\n // getPlatform().atob is RN-safe (global atob is undefined on Hermes/JSC).\n return JSON.parse(getPlatform().atob(b64));\n }\n catch (_a) {\n return {};\n }\n}\nfunction userFromIdToken(idToken, fallbackEmail) {\n const c = decodeJwt(idToken);\n const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n const email = (c.email || fallbackEmail || null);\n return {\n id,\n address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n evmAddress: null,\n email,\n provider: emailProviderSingleton,\n };\n}\n// ---------------------------------------------------------------------------\n// provider\n// ---------------------------------------------------------------------------\nexport class EmailAuthProvider {\n async login() {\n throw new Error('login() no longer opens inline email OTP. Use loginWithRedirect({ redirectUri }) ' +\n 'or loginWithPopup({ redirectUri }) for hosted Bounded Auth.');\n }\n async restoreSession() {\n const sm = sessionManager();\n const session = await sm.getSession();\n if (!session)\n return null;\n const idToken = sm.getIdToken();\n if (!idToken)\n return null;\n const user = userFromIdToken(idToken);\n setCurrentUser(user);\n return user;\n }\n async logout() {\n await sessionManager().clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signMessageWithTurnkey(message);\n }\n async signTransaction(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionWithTurnkey(transaction);\n }\n async signTransactionV1(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionV1WithTurnkey(transaction);\n }\n /** The hosted Turnkey signer decodes SIMD-0385 v1 messages, so v1 is advertised alongside legacy and v0. */\n supportedTransactionVersions() {\n return hasTurnkeyWallet() ? ['legacy', 0, 1] : ['legacy', 0];\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n }\n async getNativeMethods() { return {}; }\n}\nconst emailProviderSingleton = new EmailAuthProvider();\nexport { emailProviderSingleton };\n"],"names":["getActiveSessionManager","getPlatform","setCurrentUser","hasTurnkeyWallet","signMessageWithTurnkey","signTransactionWithTurnkey","signTransactionV1WithTurnkey","signAndSubmitTransactionWithTurnkey"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var core = require('@bounded-sh/core');
|
|
4
|
-
var index_native = require('./index.native-
|
|
4
|
+
var index_native = require('./index.native-CllNqdoy.js');
|
|
5
5
|
require('react');
|
|
6
6
|
|
|
7
7
|
// guest-keystore.ts — durable per-device keypair for anonymous ("guest") auth.
|
|
@@ -334,4 +334,4 @@ class GuestAuthProvider {
|
|
|
334
334
|
}
|
|
335
335
|
|
|
336
336
|
exports.GuestAuthProvider = GuestAuthProvider;
|
|
337
|
-
//# sourceMappingURL=guest-auth-provider-
|
|
337
|
+
//# sourceMappingURL=guest-auth-provider-0PjGFGDm.js.map
|