@human.tech/waap-sdk 2.0.0 → 2.1.0-staging-fb27bb
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/CHANGELOG.md +23 -0
- package/README.md +167 -216
- package/dist/WaaPError-C5nPcaKk.d.mts +168 -0
- package/dist/WaaPError-XLgIXUgh.d.ts +168 -0
- package/dist/WalletConnect-BTT6LtUu.d.mts +33 -0
- package/dist/WalletConnect-BTT6LtUu.d.ts +33 -0
- package/dist/WalletConnect-Deg7_JmH.mjs +4 -0
- package/dist/WalletConnect-G-lbqknM.js +4 -0
- package/dist/asyncSigning-B0KrmKk7.js +1 -0
- package/dist/asyncSigning-CzqBbYDP.mjs +1 -0
- package/dist/esm-B4jz8Emb.mjs +1 -0
- package/dist/esm-D5fDQenf.js +1 -0
- package/dist/evm-Ch-aWWat.js +1 -0
- package/dist/evm-DHVrAmEw.mjs +1 -0
- package/dist/evm.d.mts +7 -0
- package/dist/evm.d.ts +7 -0
- package/dist/evm.js +1 -0
- package/dist/evm.mjs +1 -0
- package/dist/index-CMSufeMa.d.ts +775 -0
- package/dist/index-CdKntlzX.d.mts +775 -0
- package/dist/index.d.mts +239 -933
- package/dist/index.d.ts +239 -933
- package/dist/index.js +1 -2191
- package/dist/index.mjs +1 -2162
- package/dist/initializerContext-0oKHzvQG.d.ts +21 -0
- package/dist/initializerContext-C39PUnGi.d.mts +21 -0
- package/dist/react.d.mts +2 -0
- package/dist/react.d.ts +2 -0
- package/dist/react.js +1 -0
- package/dist/react.mjs +1 -0
- package/dist/register-4Afr2Jx8.js +1 -0
- package/dist/register-CBlzg5ln.d.ts +107 -0
- package/dist/register-CNgjA0yl.mjs +1 -0
- package/dist/register-CxsUwgKJ.d.ts +282 -0
- package/dist/register-DIZnKDHF.mjs +1 -0
- package/dist/register-LmdJdvzn.d.mts +282 -0
- package/dist/register-QjrsOe7r.d.mts +107 -0
- package/dist/register-ozKwGWOb.js +1 -0
- package/dist/solana.d.mts +5 -0
- package/dist/solana.d.ts +5 -0
- package/dist/solana.js +1 -0
- package/dist/solana.mjs +1 -0
- package/dist/sui.d.mts +5 -0
- package/dist/sui.d.ts +5 -0
- package/dist/sui.js +1 -0
- package/dist/sui.mjs +1 -0
- package/dist/types-DexmJNke.d.mts +397 -0
- package/dist/types-DexmJNke.d.ts +397 -0
- package/dist/ui-16QpbEyG.js +1 -0
- package/dist/ui-BAYRtDQg.mjs +1 -0
- package/dist/useWaapAuth-BrqAhAn2.d.ts +246 -0
- package/dist/useWaapAuth-C5I7QqyW.d.mts +246 -0
- package/dist/useWaapAuth-DHIeb4yc.mjs +1 -0
- package/dist/useWaapAuth-Z_ONicYr.js +1 -0
- package/dist/walletconnect.d.mts +2 -0
- package/dist/walletconnect.d.ts +2 -0
- package/dist/walletconnect.js +1 -0
- package/dist/walletconnect.mjs +1 -0
- package/package.json +53 -18
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { s as RequestArguments } from "./types-DexmJNke.js";
|
|
2
|
+
import { d as WaaPSquidStatus } from "./index-CMSufeMa.js";
|
|
3
|
+
//#region ../silk-interface-core/dist/esm/types/asyncSigning.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Types for async transaction feature.
|
|
6
|
+
*
|
|
7
|
+
* When async transactions are enabled, signing happens synchronously (the
|
|
8
|
+
* promise waits for the signed artifact), but broadcasting and confirmation
|
|
9
|
+
* happen in the background.
|
|
10
|
+
*
|
|
11
|
+
* - For eth_sendTransaction: promise resolves with the deterministic hash of
|
|
12
|
+
* the signed transaction, then broadcasting/confirmation continue in the
|
|
13
|
+
* background with events.
|
|
14
|
+
* - For personal_sign, eth_signTypedData_v4, eth_signTransaction: promise resolves
|
|
15
|
+
* with the signature directly. No events needed.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Event types emitted during async transaction lifecycle.
|
|
19
|
+
* Only relevant for eth_sendTransaction — other signing methods resolve synchronously.
|
|
20
|
+
*/
|
|
21
|
+
type AsyncEventType = 'waap_sign_pending' | 'waap_2fa_required' | 'waap_sign_complete' | 'waap_sign_failed' | 'waap_tx_pending' | 'waap_tx_confirmed' | 'waap_tx_failed';
|
|
22
|
+
/** Runtime-safe event names for SDK consumers. */
|
|
23
|
+
declare const WAAP_EVENTS: {
|
|
24
|
+
readonly signPending: 'waap_sign_pending';
|
|
25
|
+
readonly twoFactorRequired: 'waap_2fa_required';
|
|
26
|
+
readonly signComplete: 'waap_sign_complete';
|
|
27
|
+
readonly signFailed: 'waap_sign_failed';
|
|
28
|
+
readonly txPending: 'waap_tx_pending';
|
|
29
|
+
readonly txConfirmed: 'waap_tx_confirmed';
|
|
30
|
+
readonly txFailed: 'waap_tx_failed';
|
|
31
|
+
readonly squidPending: 'waap_squid_pending';
|
|
32
|
+
readonly squidReady: 'waap_squid_ready';
|
|
33
|
+
readonly squidFailed: 'waap_squid_failed';
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Emitted when signing completes and transaction is ready for broadcasting.
|
|
37
|
+
* Contains the signature and serialized signed transaction.
|
|
38
|
+
* Only emitted for eth_sendTransaction.
|
|
39
|
+
*/
|
|
40
|
+
interface AsyncSignCompleteEvent {
|
|
41
|
+
/** Stable correlation ID returned by the async request response. */
|
|
42
|
+
txHash: string;
|
|
43
|
+
/** @deprecated Alias for `txHash`, retained for legacy consumers. */
|
|
44
|
+
pendingTxId?: string;
|
|
45
|
+
signature: string;
|
|
46
|
+
serializedTx: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Emitted when transaction has been broadcast and is pending confirmation.
|
|
50
|
+
* Only emitted for eth_sendTransaction.
|
|
51
|
+
*/
|
|
52
|
+
interface AsyncTxPendingEvent {
|
|
53
|
+
/** Stable correlation ID returned by the async request response. */
|
|
54
|
+
txHash: string;
|
|
55
|
+
/** @deprecated Alias for `txHash`, retained for legacy consumers. */
|
|
56
|
+
pendingTxId?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Emitted when transaction is confirmed on-chain.
|
|
60
|
+
* Only emitted for eth_sendTransaction.
|
|
61
|
+
*/
|
|
62
|
+
interface AsyncTxConfirmedEvent {
|
|
63
|
+
/** Stable correlation ID returned by the async request response. */
|
|
64
|
+
txHash: string;
|
|
65
|
+
/** @deprecated Alias for `txHash`, retained for legacy consumers. */
|
|
66
|
+
pendingTxId?: string;
|
|
67
|
+
receipt: {
|
|
68
|
+
blockNumber: number;
|
|
69
|
+
blockHash: string;
|
|
70
|
+
transactionHash: string;
|
|
71
|
+
status: 'success' | 'reverted';
|
|
72
|
+
gasUsed: bigint;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Emitted when an error occurs during broadcast or confirmation.
|
|
77
|
+
* Only emitted for eth_sendTransaction.
|
|
78
|
+
*/
|
|
79
|
+
interface AsyncTxFailedEvent {
|
|
80
|
+
/** Stable correlation ID returned by the async request response. */
|
|
81
|
+
txHash: string;
|
|
82
|
+
/** @deprecated Alias for `txHash`, retained for legacy consumers. */
|
|
83
|
+
pendingTxId?: string;
|
|
84
|
+
error: string;
|
|
85
|
+
stage: 'broadcast' | 'confirmation';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Union type for all async transaction events
|
|
89
|
+
*/
|
|
90
|
+
type AsyncEvent = AsyncSignCompleteEvent | AsyncTxPendingEvent | AsyncTxConfirmedEvent | AsyncTxFailedEvent;
|
|
91
|
+
/**
|
|
92
|
+
* Options passed from SDK to iframe with transaction requests.
|
|
93
|
+
* `async` enables async transaction mode where eth_sendTransaction
|
|
94
|
+
* resolves with the signed transaction hash immediately after signing, while
|
|
95
|
+
* broadcasting continues in the background.
|
|
96
|
+
*/
|
|
97
|
+
interface SilkOptions {
|
|
98
|
+
async: boolean;
|
|
99
|
+
/** @deprecated Use `async` instead. */
|
|
100
|
+
asyncSigning?: boolean;
|
|
101
|
+
}
|
|
102
|
+
/** @deprecated No longer emitted in v2. Signing now completes before the promise resolves. */
|
|
103
|
+
interface AsyncSignPendingEvent {
|
|
104
|
+
pendingTxId: string;
|
|
105
|
+
txRequest?: {
|
|
106
|
+
to?: string;
|
|
107
|
+
from?: string;
|
|
108
|
+
value?: string;
|
|
109
|
+
data?: string;
|
|
110
|
+
chainId?: number;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/** @deprecated No longer emitted in v2. */
|
|
114
|
+
interface Async2faRequiredEvent {
|
|
115
|
+
pendingTxId: string;
|
|
116
|
+
}
|
|
117
|
+
/** @deprecated No longer emitted in v2. Signing errors reject the promise directly. */
|
|
118
|
+
interface AsyncSignFailedEvent {
|
|
119
|
+
pendingTxId: string;
|
|
120
|
+
error: string;
|
|
121
|
+
}
|
|
122
|
+
interface AsyncTxResponse {
|
|
123
|
+
pendingTxId: string;
|
|
124
|
+
status: 'pending';
|
|
125
|
+
}
|
|
126
|
+
//#endregion
|
|
127
|
+
//#region src/hooks/useWaapTransaction.d.ts
|
|
128
|
+
/**
|
|
129
|
+
* Transaction state tracked by the hook.
|
|
130
|
+
* Keyed by the signed transaction hash returned from an async send.
|
|
131
|
+
*/
|
|
132
|
+
interface TxState {
|
|
133
|
+
status: 'signed' | 'tx_pending' | 'confirmed' | 'failed';
|
|
134
|
+
txHash: string;
|
|
135
|
+
/** @deprecated Alias for `txHash`, retained for legacy event consumers. */
|
|
136
|
+
pendingTxId?: string;
|
|
137
|
+
signature?: string;
|
|
138
|
+
serializedTx?: string;
|
|
139
|
+
receipt?: AsyncTxConfirmedEvent['receipt'];
|
|
140
|
+
error?: string;
|
|
141
|
+
stage?: AsyncTxFailedEvent['stage'];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Options for useWaapTransaction hook
|
|
145
|
+
*/
|
|
146
|
+
interface UseWaapTransactionOptions {
|
|
147
|
+
onSigned?: (event: AsyncSignCompleteEvent) => void;
|
|
148
|
+
onTxPending?: (event: AsyncTxPendingEvent) => void;
|
|
149
|
+
onConfirmed?: (event: AsyncTxConfirmedEvent) => void;
|
|
150
|
+
onFailed?: (event: AsyncTxFailedEvent) => void;
|
|
151
|
+
/** @deprecated No longer emitted in v2. */
|
|
152
|
+
onPending?: (event: any) => void;
|
|
153
|
+
/** @deprecated No longer emitted in v2. */
|
|
154
|
+
on2faRequired?: (event: any) => void;
|
|
155
|
+
/** @deprecated Use `onFailed` instead. */
|
|
156
|
+
onSignFailed?: (event: any) => void;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Return type for useWaapTransaction hook
|
|
160
|
+
*/
|
|
161
|
+
interface UseWaapTransactionReturn {
|
|
162
|
+
/**
|
|
163
|
+
* Send a transaction using eth_sendTransaction.
|
|
164
|
+
* When asyncTxs is enabled, resolves with the signed transaction hash after
|
|
165
|
+
* signing. Broadcasting continues in the background with events.
|
|
166
|
+
*/
|
|
167
|
+
sendTransaction: (txRequest: RequestArguments['params']) => Promise<string>;
|
|
168
|
+
/**
|
|
169
|
+
* Sign a transaction without broadcasting using eth_signTransaction.
|
|
170
|
+
* Always resolves with the signature directly.
|
|
171
|
+
*/
|
|
172
|
+
signTransaction: (txRequest: RequestArguments['params']) => Promise<string>;
|
|
173
|
+
/**
|
|
174
|
+
* Map of signed transaction hashes to their current state
|
|
175
|
+
*/
|
|
176
|
+
pendingTransactions: Map<string, TxState>;
|
|
177
|
+
/**
|
|
178
|
+
* Whether there are any pending transactions
|
|
179
|
+
*/
|
|
180
|
+
isAnyPending: boolean;
|
|
181
|
+
}
|
|
182
|
+
type TransactionProvider = {
|
|
183
|
+
request: (args: RequestArguments) => Promise<unknown>;
|
|
184
|
+
on: (event: string, listener: (...args: any[]) => void) => unknown;
|
|
185
|
+
removeListener?: (event: string, listener: (...args: any[]) => void) => unknown;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* React hook for handling async transactions with WaaP SDK.
|
|
189
|
+
*
|
|
190
|
+
* When `asyncTxs` is enabled (via `initWaaP({ asyncTxs: true })` or per-request `{ async: true }`):
|
|
191
|
+
* - `eth_sendTransaction` resolves with the signed transaction hash
|
|
192
|
+
* after signing
|
|
193
|
+
* - Broadcasting and confirmation happen in the background with events
|
|
194
|
+
* - Use the callbacks to track transaction lifecycle
|
|
195
|
+
*
|
|
196
|
+
* Other signing methods (`personal_sign`, `eth_signTypedData_v4`, `eth_signTransaction`)
|
|
197
|
+
* always resolve with the signature directly — no events needed.
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```tsx
|
|
201
|
+
* const { sendTransaction, pendingTransactions, isAnyPending } = useWaapTransaction({
|
|
202
|
+
* onSigned: ({ txHash }) => console.log('Signed:', txHash),
|
|
203
|
+
* onTxPending: ({ txHash }) => console.log('Broadcasting:', txHash),
|
|
204
|
+
* onConfirmed: ({ txHash, receipt }) => console.log('Confirmed:', txHash),
|
|
205
|
+
* onFailed: ({ txHash, error }) => console.error('Failed:', txHash, error)
|
|
206
|
+
* });
|
|
207
|
+
*
|
|
208
|
+
* const handleSend = async () => {
|
|
209
|
+
* const txHash = await sendTransaction([{ to: '0x...', value: '0x...' }]);
|
|
210
|
+
* console.log('Signed:', txHash);
|
|
211
|
+
* };
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
declare function useWaapTransaction(providerOrOptions?: TransactionProvider | UseWaapTransactionOptions, explicitOptions?: UseWaapTransactionOptions): UseWaapTransactionReturn;
|
|
215
|
+
//#endregion
|
|
216
|
+
//#region src/hooks/useWaapAuth.d.ts
|
|
217
|
+
/** Return type for useWaapAuth hook. */
|
|
218
|
+
interface UseWaapAuthReturn {
|
|
219
|
+
/** True once connect event fires (wallet is ready to use). */
|
|
220
|
+
isConnected: boolean;
|
|
221
|
+
/** True while LITE onboarding is in progress. */
|
|
222
|
+
isPending: boolean;
|
|
223
|
+
/** True when LITE onboarding initialized successfully. */
|
|
224
|
+
squidReady: boolean;
|
|
225
|
+
/** Error message if LITE onboarding failed (wallet falls back to standard mode). */
|
|
226
|
+
error: string | null;
|
|
227
|
+
/** Current EVM address (lite address once onboarding succeeded, standard otherwise). */
|
|
228
|
+
address: string | null;
|
|
229
|
+
/** Lite Sui address once onboarding succeeded, else null. */
|
|
230
|
+
suiAddress: string | null;
|
|
231
|
+
/** Lite Solana address once onboarding succeeded, else null. */
|
|
232
|
+
solanaAddress: string | null;
|
|
233
|
+
/** Public lifecycle; the legacy readiness booleans above derive from it. */
|
|
234
|
+
squidStatus: WaaPSquidStatus;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* React hook for tracking the multichain LITE ("Squid" brand) onboarding
|
|
238
|
+
* state. Pass `initWaaPSquid().session` (or an individual chain facade).
|
|
239
|
+
*/
|
|
240
|
+
declare function useWaapAuth(provider: {
|
|
241
|
+
on: (event: string, listener: (...args: any[]) => void) => any;
|
|
242
|
+
removeListener: (event: string, listener: (...args: any[]) => void) => any;
|
|
243
|
+
getSquidStatus?: () => WaaPSquidStatus;
|
|
244
|
+
} | null): UseWaapAuthReturn;
|
|
245
|
+
//#endregion
|
|
246
|
+
export { WAAP_EVENTS as _, useWaapTransaction as a, AsyncEventType as c, AsyncSignPendingEvent as d, AsyncTxConfirmedEvent as f, SilkOptions as g, AsyncTxResponse as h, UseWaapTransactionReturn as i, AsyncSignCompleteEvent as l, AsyncTxPendingEvent as m, TxState as n, Async2faRequiredEvent as o, AsyncTxFailedEvent as p, UseWaapTransactionOptions as r, AsyncEvent as s, useWaapAuth as t, AsyncSignFailedEvent as u };
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { s as RequestArguments } from "./types-DexmJNke.mjs";
|
|
2
|
+
import { d as WaaPSquidStatus } from "./index-CdKntlzX.mjs";
|
|
3
|
+
//#region ../silk-interface-core/dist/esm/types/asyncSigning.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Types for async transaction feature.
|
|
6
|
+
*
|
|
7
|
+
* When async transactions are enabled, signing happens synchronously (the
|
|
8
|
+
* promise waits for the signed artifact), but broadcasting and confirmation
|
|
9
|
+
* happen in the background.
|
|
10
|
+
*
|
|
11
|
+
* - For eth_sendTransaction: promise resolves with the deterministic hash of
|
|
12
|
+
* the signed transaction, then broadcasting/confirmation continue in the
|
|
13
|
+
* background with events.
|
|
14
|
+
* - For personal_sign, eth_signTypedData_v4, eth_signTransaction: promise resolves
|
|
15
|
+
* with the signature directly. No events needed.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Event types emitted during async transaction lifecycle.
|
|
19
|
+
* Only relevant for eth_sendTransaction — other signing methods resolve synchronously.
|
|
20
|
+
*/
|
|
21
|
+
type AsyncEventType = 'waap_sign_pending' | 'waap_2fa_required' | 'waap_sign_complete' | 'waap_sign_failed' | 'waap_tx_pending' | 'waap_tx_confirmed' | 'waap_tx_failed';
|
|
22
|
+
/** Runtime-safe event names for SDK consumers. */
|
|
23
|
+
declare const WAAP_EVENTS: {
|
|
24
|
+
readonly signPending: 'waap_sign_pending';
|
|
25
|
+
readonly twoFactorRequired: 'waap_2fa_required';
|
|
26
|
+
readonly signComplete: 'waap_sign_complete';
|
|
27
|
+
readonly signFailed: 'waap_sign_failed';
|
|
28
|
+
readonly txPending: 'waap_tx_pending';
|
|
29
|
+
readonly txConfirmed: 'waap_tx_confirmed';
|
|
30
|
+
readonly txFailed: 'waap_tx_failed';
|
|
31
|
+
readonly squidPending: 'waap_squid_pending';
|
|
32
|
+
readonly squidReady: 'waap_squid_ready';
|
|
33
|
+
readonly squidFailed: 'waap_squid_failed';
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Emitted when signing completes and transaction is ready for broadcasting.
|
|
37
|
+
* Contains the signature and serialized signed transaction.
|
|
38
|
+
* Only emitted for eth_sendTransaction.
|
|
39
|
+
*/
|
|
40
|
+
interface AsyncSignCompleteEvent {
|
|
41
|
+
/** Stable correlation ID returned by the async request response. */
|
|
42
|
+
txHash: string;
|
|
43
|
+
/** @deprecated Alias for `txHash`, retained for legacy consumers. */
|
|
44
|
+
pendingTxId?: string;
|
|
45
|
+
signature: string;
|
|
46
|
+
serializedTx: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Emitted when transaction has been broadcast and is pending confirmation.
|
|
50
|
+
* Only emitted for eth_sendTransaction.
|
|
51
|
+
*/
|
|
52
|
+
interface AsyncTxPendingEvent {
|
|
53
|
+
/** Stable correlation ID returned by the async request response. */
|
|
54
|
+
txHash: string;
|
|
55
|
+
/** @deprecated Alias for `txHash`, retained for legacy consumers. */
|
|
56
|
+
pendingTxId?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Emitted when transaction is confirmed on-chain.
|
|
60
|
+
* Only emitted for eth_sendTransaction.
|
|
61
|
+
*/
|
|
62
|
+
interface AsyncTxConfirmedEvent {
|
|
63
|
+
/** Stable correlation ID returned by the async request response. */
|
|
64
|
+
txHash: string;
|
|
65
|
+
/** @deprecated Alias for `txHash`, retained for legacy consumers. */
|
|
66
|
+
pendingTxId?: string;
|
|
67
|
+
receipt: {
|
|
68
|
+
blockNumber: number;
|
|
69
|
+
blockHash: string;
|
|
70
|
+
transactionHash: string;
|
|
71
|
+
status: 'success' | 'reverted';
|
|
72
|
+
gasUsed: bigint;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Emitted when an error occurs during broadcast or confirmation.
|
|
77
|
+
* Only emitted for eth_sendTransaction.
|
|
78
|
+
*/
|
|
79
|
+
interface AsyncTxFailedEvent {
|
|
80
|
+
/** Stable correlation ID returned by the async request response. */
|
|
81
|
+
txHash: string;
|
|
82
|
+
/** @deprecated Alias for `txHash`, retained for legacy consumers. */
|
|
83
|
+
pendingTxId?: string;
|
|
84
|
+
error: string;
|
|
85
|
+
stage: 'broadcast' | 'confirmation';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Union type for all async transaction events
|
|
89
|
+
*/
|
|
90
|
+
type AsyncEvent = AsyncSignCompleteEvent | AsyncTxPendingEvent | AsyncTxConfirmedEvent | AsyncTxFailedEvent;
|
|
91
|
+
/**
|
|
92
|
+
* Options passed from SDK to iframe with transaction requests.
|
|
93
|
+
* `async` enables async transaction mode where eth_sendTransaction
|
|
94
|
+
* resolves with the signed transaction hash immediately after signing, while
|
|
95
|
+
* broadcasting continues in the background.
|
|
96
|
+
*/
|
|
97
|
+
interface SilkOptions {
|
|
98
|
+
async: boolean;
|
|
99
|
+
/** @deprecated Use `async` instead. */
|
|
100
|
+
asyncSigning?: boolean;
|
|
101
|
+
}
|
|
102
|
+
/** @deprecated No longer emitted in v2. Signing now completes before the promise resolves. */
|
|
103
|
+
interface AsyncSignPendingEvent {
|
|
104
|
+
pendingTxId: string;
|
|
105
|
+
txRequest?: {
|
|
106
|
+
to?: string;
|
|
107
|
+
from?: string;
|
|
108
|
+
value?: string;
|
|
109
|
+
data?: string;
|
|
110
|
+
chainId?: number;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/** @deprecated No longer emitted in v2. */
|
|
114
|
+
interface Async2faRequiredEvent {
|
|
115
|
+
pendingTxId: string;
|
|
116
|
+
}
|
|
117
|
+
/** @deprecated No longer emitted in v2. Signing errors reject the promise directly. */
|
|
118
|
+
interface AsyncSignFailedEvent {
|
|
119
|
+
pendingTxId: string;
|
|
120
|
+
error: string;
|
|
121
|
+
}
|
|
122
|
+
interface AsyncTxResponse {
|
|
123
|
+
pendingTxId: string;
|
|
124
|
+
status: 'pending';
|
|
125
|
+
}
|
|
126
|
+
//#endregion
|
|
127
|
+
//#region src/hooks/useWaapTransaction.d.ts
|
|
128
|
+
/**
|
|
129
|
+
* Transaction state tracked by the hook.
|
|
130
|
+
* Keyed by the signed transaction hash returned from an async send.
|
|
131
|
+
*/
|
|
132
|
+
interface TxState {
|
|
133
|
+
status: 'signed' | 'tx_pending' | 'confirmed' | 'failed';
|
|
134
|
+
txHash: string;
|
|
135
|
+
/** @deprecated Alias for `txHash`, retained for legacy event consumers. */
|
|
136
|
+
pendingTxId?: string;
|
|
137
|
+
signature?: string;
|
|
138
|
+
serializedTx?: string;
|
|
139
|
+
receipt?: AsyncTxConfirmedEvent['receipt'];
|
|
140
|
+
error?: string;
|
|
141
|
+
stage?: AsyncTxFailedEvent['stage'];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Options for useWaapTransaction hook
|
|
145
|
+
*/
|
|
146
|
+
interface UseWaapTransactionOptions {
|
|
147
|
+
onSigned?: (event: AsyncSignCompleteEvent) => void;
|
|
148
|
+
onTxPending?: (event: AsyncTxPendingEvent) => void;
|
|
149
|
+
onConfirmed?: (event: AsyncTxConfirmedEvent) => void;
|
|
150
|
+
onFailed?: (event: AsyncTxFailedEvent) => void;
|
|
151
|
+
/** @deprecated No longer emitted in v2. */
|
|
152
|
+
onPending?: (event: any) => void;
|
|
153
|
+
/** @deprecated No longer emitted in v2. */
|
|
154
|
+
on2faRequired?: (event: any) => void;
|
|
155
|
+
/** @deprecated Use `onFailed` instead. */
|
|
156
|
+
onSignFailed?: (event: any) => void;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Return type for useWaapTransaction hook
|
|
160
|
+
*/
|
|
161
|
+
interface UseWaapTransactionReturn {
|
|
162
|
+
/**
|
|
163
|
+
* Send a transaction using eth_sendTransaction.
|
|
164
|
+
* When asyncTxs is enabled, resolves with the signed transaction hash after
|
|
165
|
+
* signing. Broadcasting continues in the background with events.
|
|
166
|
+
*/
|
|
167
|
+
sendTransaction: (txRequest: RequestArguments['params']) => Promise<string>;
|
|
168
|
+
/**
|
|
169
|
+
* Sign a transaction without broadcasting using eth_signTransaction.
|
|
170
|
+
* Always resolves with the signature directly.
|
|
171
|
+
*/
|
|
172
|
+
signTransaction: (txRequest: RequestArguments['params']) => Promise<string>;
|
|
173
|
+
/**
|
|
174
|
+
* Map of signed transaction hashes to their current state
|
|
175
|
+
*/
|
|
176
|
+
pendingTransactions: Map<string, TxState>;
|
|
177
|
+
/**
|
|
178
|
+
* Whether there are any pending transactions
|
|
179
|
+
*/
|
|
180
|
+
isAnyPending: boolean;
|
|
181
|
+
}
|
|
182
|
+
type TransactionProvider = {
|
|
183
|
+
request: (args: RequestArguments) => Promise<unknown>;
|
|
184
|
+
on: (event: string, listener: (...args: any[]) => void) => unknown;
|
|
185
|
+
removeListener?: (event: string, listener: (...args: any[]) => void) => unknown;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* React hook for handling async transactions with WaaP SDK.
|
|
189
|
+
*
|
|
190
|
+
* When `asyncTxs` is enabled (via `initWaaP({ asyncTxs: true })` or per-request `{ async: true }`):
|
|
191
|
+
* - `eth_sendTransaction` resolves with the signed transaction hash
|
|
192
|
+
* after signing
|
|
193
|
+
* - Broadcasting and confirmation happen in the background with events
|
|
194
|
+
* - Use the callbacks to track transaction lifecycle
|
|
195
|
+
*
|
|
196
|
+
* Other signing methods (`personal_sign`, `eth_signTypedData_v4`, `eth_signTransaction`)
|
|
197
|
+
* always resolve with the signature directly — no events needed.
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```tsx
|
|
201
|
+
* const { sendTransaction, pendingTransactions, isAnyPending } = useWaapTransaction({
|
|
202
|
+
* onSigned: ({ txHash }) => console.log('Signed:', txHash),
|
|
203
|
+
* onTxPending: ({ txHash }) => console.log('Broadcasting:', txHash),
|
|
204
|
+
* onConfirmed: ({ txHash, receipt }) => console.log('Confirmed:', txHash),
|
|
205
|
+
* onFailed: ({ txHash, error }) => console.error('Failed:', txHash, error)
|
|
206
|
+
* });
|
|
207
|
+
*
|
|
208
|
+
* const handleSend = async () => {
|
|
209
|
+
* const txHash = await sendTransaction([{ to: '0x...', value: '0x...' }]);
|
|
210
|
+
* console.log('Signed:', txHash);
|
|
211
|
+
* };
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
declare function useWaapTransaction(providerOrOptions?: TransactionProvider | UseWaapTransactionOptions, explicitOptions?: UseWaapTransactionOptions): UseWaapTransactionReturn;
|
|
215
|
+
//#endregion
|
|
216
|
+
//#region src/hooks/useWaapAuth.d.ts
|
|
217
|
+
/** Return type for useWaapAuth hook. */
|
|
218
|
+
interface UseWaapAuthReturn {
|
|
219
|
+
/** True once connect event fires (wallet is ready to use). */
|
|
220
|
+
isConnected: boolean;
|
|
221
|
+
/** True while LITE onboarding is in progress. */
|
|
222
|
+
isPending: boolean;
|
|
223
|
+
/** True when LITE onboarding initialized successfully. */
|
|
224
|
+
squidReady: boolean;
|
|
225
|
+
/** Error message if LITE onboarding failed (wallet falls back to standard mode). */
|
|
226
|
+
error: string | null;
|
|
227
|
+
/** Current EVM address (lite address once onboarding succeeded, standard otherwise). */
|
|
228
|
+
address: string | null;
|
|
229
|
+
/** Lite Sui address once onboarding succeeded, else null. */
|
|
230
|
+
suiAddress: string | null;
|
|
231
|
+
/** Lite Solana address once onboarding succeeded, else null. */
|
|
232
|
+
solanaAddress: string | null;
|
|
233
|
+
/** Public lifecycle; the legacy readiness booleans above derive from it. */
|
|
234
|
+
squidStatus: WaaPSquidStatus;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* React hook for tracking the multichain LITE ("Squid" brand) onboarding
|
|
238
|
+
* state. Pass `initWaaPSquid().session` (or an individual chain facade).
|
|
239
|
+
*/
|
|
240
|
+
declare function useWaapAuth(provider: {
|
|
241
|
+
on: (event: string, listener: (...args: any[]) => void) => any;
|
|
242
|
+
removeListener: (event: string, listener: (...args: any[]) => void) => any;
|
|
243
|
+
getSquidStatus?: () => WaaPSquidStatus;
|
|
244
|
+
} | null): UseWaapAuthReturn;
|
|
245
|
+
//#endregion
|
|
246
|
+
export { WAAP_EVENTS as _, useWaapTransaction as a, AsyncEventType as c, AsyncSignPendingEvent as d, AsyncTxConfirmedEvent as f, SilkOptions as g, AsyncTxResponse as h, UseWaapTransactionReturn as i, AsyncSignCompleteEvent as l, AsyncTxPendingEvent as m, TxState as n, Async2faRequiredEvent as o, AsyncTxFailedEvent as p, UseWaapTransactionOptions as r, AsyncEvent as s, useWaapAuth as t, AsyncSignFailedEvent as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./esm-B4jz8Emb.mjs";import{t as e}from"./asyncSigning-CzqBbYDP.mjs";import{useCallback as t,useEffect as n,useRef as r,useState as i}from"react";function a(e,a){let o=e&&`request`in e?e:void 0,s=o?a:e,[c,l]=i(new Map),u=r(s);return n(()=>{u.current=s},[s]),n(()=>{let e=o||window.waap||window.silk;if(!e){console.warn(`[useWaapTransaction] WaaP provider not found. Make sure initWaaP() was called.`);return}let t=e=>{l(t=>{let n=new Map(t);return n.set(e.txHash,{status:`signed`,txHash:e.txHash,pendingTxId:e.pendingTxId,signature:e.signature,serializedTx:e.serializedTx}),n}),u.current?.onSigned?.(e)},n=e=>{l(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`tx_pending`,txHash:e.txHash,pendingTxId:e.pendingTxId}),n}),u.current?.onTxPending?.(e)},r=e=>{l(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`confirmed`,txHash:e.txHash,pendingTxId:e.pendingTxId,receipt:e.receipt}),n}),u.current?.onConfirmed?.(e)},i=e=>{l(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`failed`,txHash:e.txHash,pendingTxId:e.pendingTxId,error:e.error,stage:e.stage}),n}),u.current?.onFailed?.(e)};return e.on(`waap_sign_complete`,t),e.on(`waap_tx_pending`,n),e.on(`waap_tx_confirmed`,r),e.on(`waap_tx_failed`,i),()=>{e.removeListener?.(`waap_sign_complete`,t),e.removeListener?.(`waap_tx_pending`,n),e.removeListener?.(`waap_tx_confirmed`,r),e.removeListener?.(`waap_tx_failed`,i)}},[o]),{sendTransaction:t(async e=>{let t=o||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return await t.request({method:`eth_sendTransaction`,params:e})},[o]),signTransaction:t(async e=>{let t=o||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return t.request({method:`eth_signTransaction`,params:e})},[o]),pendingTransactions:c,isAnyPending:Array.from(c.values()).some(e=>e.status===`signed`||e.status===`tx_pending`)}}const o=()=>({state:`absent`}),s=(e,t)=>e?.getSquidStatus?.()??t;function c(t){let[r,a]=i(!1),[c,l]=i(()=>s(t,o())),[u,d]=i(null),[f,p]=i(null),[m,h]=i(null);return n(()=>{if(!t)return;let n=e=>{let n=s(t,e);return l(n),n};n(o());let r=e=>{let t=e.transactionDigest;n({state:t?`awaiting-network`:`provisioning`,...t?{operationId:t,transactionDigest:t}:{},...e.message?{message:e.message}:{}})},i=e=>{n({state:`active`}).state===`active`&&(d(e.evm),p(e.sui??null),h(e.solana??null))},c=e=>{n({state:`failed`,message:e.error})},u=()=>a(!0),f=e=>{d(e.length>0?e[0]:null)},m=()=>{a(!1),l(o()),d(null),p(null),h(null)};return t.on(e.squidPending,r),t.on(e.squidReady,i),t.on(e.squidFailed,c),t.on(`connect`,u),t.on(`accountsChanged`,f),t.on(`disconnect`,m),()=>{t.removeListener(e.squidPending,r),t.removeListener(e.squidReady,i),t.removeListener(e.squidFailed,c),t.removeListener(`connect`,u),t.removeListener(`accountsChanged`,f),t.removeListener(`disconnect`,m)}},[t]),{isConnected:r,isPending:c.state===`provisioning`||c.state===`awaiting-network`,squidReady:c.state===`active`,error:c.state===`failed`?c.message??null:null,address:u,suiAddress:f,solanaAddress:m,squidStatus:c}}export{a as n,c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require("./esm-D5fDQenf.js");const e=require("./asyncSigning-B0KrmKk7.js");let t=require("react");function n(e,n){let r=e&&`request`in e?e:void 0,i=r?n:e,[a,o]=(0,t.useState)(new Map),s=(0,t.useRef)(i);return(0,t.useEffect)(()=>{s.current=i},[i]),(0,t.useEffect)(()=>{let e=r||window.waap||window.silk;if(!e){console.warn(`[useWaapTransaction] WaaP provider not found. Make sure initWaaP() was called.`);return}let t=e=>{o(t=>{let n=new Map(t);return n.set(e.txHash,{status:`signed`,txHash:e.txHash,pendingTxId:e.pendingTxId,signature:e.signature,serializedTx:e.serializedTx}),n}),s.current?.onSigned?.(e)},n=e=>{o(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`tx_pending`,txHash:e.txHash,pendingTxId:e.pendingTxId}),n}),s.current?.onTxPending?.(e)},i=e=>{o(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`confirmed`,txHash:e.txHash,pendingTxId:e.pendingTxId,receipt:e.receipt}),n}),s.current?.onConfirmed?.(e)},a=e=>{o(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`failed`,txHash:e.txHash,pendingTxId:e.pendingTxId,error:e.error,stage:e.stage}),n}),s.current?.onFailed?.(e)};return e.on(`waap_sign_complete`,t),e.on(`waap_tx_pending`,n),e.on(`waap_tx_confirmed`,i),e.on(`waap_tx_failed`,a),()=>{e.removeListener?.(`waap_sign_complete`,t),e.removeListener?.(`waap_tx_pending`,n),e.removeListener?.(`waap_tx_confirmed`,i),e.removeListener?.(`waap_tx_failed`,a)}},[r]),{sendTransaction:(0,t.useCallback)(async e=>{let t=r||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return await t.request({method:`eth_sendTransaction`,params:e})},[r]),signTransaction:(0,t.useCallback)(async e=>{let t=r||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return t.request({method:`eth_signTransaction`,params:e})},[r]),pendingTransactions:a,isAnyPending:Array.from(a.values()).some(e=>e.status===`signed`||e.status===`tx_pending`)}}const r=()=>({state:`absent`}),i=(e,t)=>e?.getSquidStatus?.()??t;function a(n){let[a,o]=(0,t.useState)(!1),[s,c]=(0,t.useState)(()=>i(n,r())),[l,u]=(0,t.useState)(null),[d,f]=(0,t.useState)(null),[p,m]=(0,t.useState)(null);return(0,t.useEffect)(()=>{if(!n)return;let t=e=>{let t=i(n,e);return c(t),t};t(r());let a=e=>{let n=e.transactionDigest;t({state:n?`awaiting-network`:`provisioning`,...n?{operationId:n,transactionDigest:n}:{},...e.message?{message:e.message}:{}})},s=e=>{t({state:`active`}).state===`active`&&(u(e.evm),f(e.sui??null),m(e.solana??null))},l=e=>{t({state:`failed`,message:e.error})},d=()=>o(!0),p=e=>{u(e.length>0?e[0]:null)},h=()=>{o(!1),c(r()),u(null),f(null),m(null)};return n.on(e.t.squidPending,a),n.on(e.t.squidReady,s),n.on(e.t.squidFailed,l),n.on(`connect`,d),n.on(`accountsChanged`,p),n.on(`disconnect`,h),()=>{n.removeListener(e.t.squidPending,a),n.removeListener(e.t.squidReady,s),n.removeListener(e.t.squidFailed,l),n.removeListener(`connect`,d),n.removeListener(`accountsChanged`,p),n.removeListener(`disconnect`,h)}},[n]),{isConnected:a,isPending:s.state===`provisioning`||s.state===`awaiting-network`,squidReady:s.state===`active`,error:s.state===`failed`?s.message??null:null,address:l,suiAddress:d,solanaAddress:p,squidStatus:s}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./WalletConnect-G-lbqknM.js");exports.SilkWalletConnect=e.t,exports.WaaPWalletConnect=e.t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./WalletConnect-Deg7_JmH.mjs";export{e as SilkWalletConnect,e as WaaPWalletConnect};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@human.tech/waap-sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0-staging-fb27bb",
|
|
4
4
|
"description": "SDK for interacting with WaaP",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -8,12 +8,45 @@
|
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
9
|
"require": "./dist/index.js",
|
|
10
10
|
"import": "./dist/index.mjs"
|
|
11
|
+
},
|
|
12
|
+
"./evm": {
|
|
13
|
+
"types": "./dist/evm.d.ts",
|
|
14
|
+
"require": "./dist/evm.js",
|
|
15
|
+
"import": "./dist/evm.mjs"
|
|
16
|
+
},
|
|
17
|
+
"./sui": {
|
|
18
|
+
"types": "./dist/sui.d.ts",
|
|
19
|
+
"require": "./dist/sui.js",
|
|
20
|
+
"import": "./dist/sui.mjs"
|
|
21
|
+
},
|
|
22
|
+
"./solana": {
|
|
23
|
+
"types": "./dist/solana.d.ts",
|
|
24
|
+
"require": "./dist/solana.js",
|
|
25
|
+
"import": "./dist/solana.mjs"
|
|
26
|
+
},
|
|
27
|
+
"./react": {
|
|
28
|
+
"types": "./dist/react.d.ts",
|
|
29
|
+
"require": "./dist/react.js",
|
|
30
|
+
"import": "./dist/react.mjs"
|
|
31
|
+
},
|
|
32
|
+
"./walletconnect": {
|
|
33
|
+
"types": "./dist/walletconnect.d.ts",
|
|
34
|
+
"require": "./dist/walletconnect.js",
|
|
35
|
+
"import": "./dist/walletconnect.mjs"
|
|
11
36
|
}
|
|
12
37
|
},
|
|
13
38
|
"main": "./dist/index.js",
|
|
14
39
|
"module": "./dist/index.mjs",
|
|
40
|
+
"sideEffects": [
|
|
41
|
+
"**/WaapComponent.*"
|
|
42
|
+
],
|
|
15
43
|
"author": "",
|
|
16
44
|
"license": "",
|
|
45
|
+
"repository": {
|
|
46
|
+
"type": "git",
|
|
47
|
+
"url": "git+https://github.com/holonym-foundation/silk.git",
|
|
48
|
+
"directory": "packages/waap-sdk"
|
|
49
|
+
},
|
|
17
50
|
"private": false,
|
|
18
51
|
"publishConfig": {
|
|
19
52
|
"access": "public"
|
|
@@ -31,8 +64,14 @@
|
|
|
31
64
|
"@types/events": "^3.0.0",
|
|
32
65
|
"@types/node": "18.15.11",
|
|
33
66
|
"@types/react": "^18.0.0",
|
|
34
|
-
"
|
|
35
|
-
"typescript": "
|
|
67
|
+
"@types/react-dom": "^18.0.0",
|
|
68
|
+
"@typescript/native": "npm:typescript@^7.0.2",
|
|
69
|
+
"jsdom": "^22.0.0",
|
|
70
|
+
"react": "18.3.1",
|
|
71
|
+
"react-dom": "^18.0.0",
|
|
72
|
+
"tsdown": "^0.22.4",
|
|
73
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
74
|
+
"vitest": "^4.1.10"
|
|
36
75
|
},
|
|
37
76
|
"peerDependencies": {
|
|
38
77
|
"react": ">=16.8.0"
|
|
@@ -43,23 +82,19 @@
|
|
|
43
82
|
}
|
|
44
83
|
},
|
|
45
84
|
"dependencies": {
|
|
46
|
-
"@
|
|
47
|
-
"@mysten/
|
|
48
|
-
"@
|
|
49
|
-
"@reown/appkit": "
|
|
50
|
-
"@
|
|
85
|
+
"@mysten/sui": "2.17.0",
|
|
86
|
+
"@mysten/wallet-standard": "0.20.3",
|
|
87
|
+
"@reown/appkit": "1.8.22",
|
|
88
|
+
"@reown/appkit-adapter-ethers": "1.8.22",
|
|
89
|
+
"@wallet-standard/wallet": "1.1.1",
|
|
51
90
|
"ethers": "^6.16.0",
|
|
52
|
-
"events": "^3.3.0"
|
|
53
|
-
"pino-pretty": "^10.2.0",
|
|
54
|
-
"zod": "^3.21.4",
|
|
55
|
-
"zod-validation-error": "^1.3.0",
|
|
56
|
-
"@human.tech/waap-constants": "1.0.0",
|
|
57
|
-
"@human.tech/waap-interface-core": "1.0.0"
|
|
91
|
+
"events": "^3.3.0"
|
|
58
92
|
},
|
|
59
93
|
"scripts": {
|
|
60
|
-
"build": "
|
|
61
|
-
"build-to-publish": "NODE_ENV=production
|
|
62
|
-
"
|
|
63
|
-
"
|
|
94
|
+
"build": "tsdown --config-loader native",
|
|
95
|
+
"build-to-publish": "NODE_ENV=production tsdown --config-loader native",
|
|
96
|
+
"dev": "tsdown --config-loader native --watch",
|
|
97
|
+
"test": "vitest run && pnpm test:types",
|
|
98
|
+
"test:types": "pnpm build && pnpm exec tsc --noEmit -p tsconfig.public-api.json"
|
|
64
99
|
}
|
|
65
100
|
}
|