ic-siwa 0.1.2 → 0.2.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/dist/candid/ic_siwa_provider.d.ts +86 -11
- package/dist/candid/ic_siwa_provider.d.ts.map +1 -1
- package/dist/candid/ic_siwa_provider.js +20 -28
- package/dist/candid/ic_siwa_provider.js.map +1 -1
- package/dist/client.d.ts +29 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +126 -43
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/storage.d.ts +18 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +55 -6
- package/dist/storage.js.map +1 -1
- package/package.json +3 -3
- package/src/astro/LoginButton.astro +4 -0
|
@@ -7,13 +7,17 @@ import type { Principal } from '@dfinity/principal';
|
|
|
7
7
|
import type { ActorMethod } from '@dfinity/agent';
|
|
8
8
|
export interface DebugInfo {
|
|
9
9
|
'uri': string;
|
|
10
|
+
'signature_map_count': bigint;
|
|
11
|
+
'auth_sessions_count': bigint;
|
|
10
12
|
'domain': string;
|
|
11
13
|
'delegation_targets_count': bigint;
|
|
12
14
|
'chain_id': bigint;
|
|
13
15
|
'allowed_domains': Array<string>;
|
|
14
16
|
'allowed_domains_count': bigint;
|
|
17
|
+
'login_sessions_count': bigint;
|
|
15
18
|
'rate_limit_total': number;
|
|
16
19
|
'rate_limit_per_address': number;
|
|
20
|
+
'prepared_delegations_count': bigint;
|
|
17
21
|
'session_expiration_ns': bigint;
|
|
18
22
|
'rate_limit_window_seconds': bigint;
|
|
19
23
|
'delegation_targets': Array<Principal>;
|
|
@@ -35,6 +39,7 @@ export interface InitArgs {
|
|
|
35
39
|
'delegation_targets': [] | [Array<Principal>];
|
|
36
40
|
'debug': [] | [boolean];
|
|
37
41
|
'session_expiration_time': bigint;
|
|
42
|
+
'login_expiration_time': [] | [bigint];
|
|
38
43
|
}
|
|
39
44
|
export interface LoginResponse {
|
|
40
45
|
'user_principal': Principal;
|
|
@@ -72,21 +77,26 @@ export type Result_2 = {
|
|
|
72
77
|
'Err': string;
|
|
73
78
|
};
|
|
74
79
|
export type Result_3 = {
|
|
75
|
-
'Ok':
|
|
80
|
+
'Ok': bigint;
|
|
76
81
|
} | {
|
|
77
82
|
'Err': string;
|
|
78
83
|
};
|
|
79
84
|
export type Result_4 = {
|
|
80
|
-
'Ok':
|
|
85
|
+
'Ok': SignedDelegation;
|
|
81
86
|
} | {
|
|
82
87
|
'Err': string;
|
|
83
88
|
};
|
|
84
89
|
export type Result_5 = {
|
|
85
|
-
'Ok':
|
|
90
|
+
'Ok': LoginResponse;
|
|
86
91
|
} | {
|
|
87
92
|
'Err': string;
|
|
88
93
|
};
|
|
89
94
|
export type Result_6 = {
|
|
95
|
+
'Ok': null;
|
|
96
|
+
} | {
|
|
97
|
+
'Err': string;
|
|
98
|
+
};
|
|
99
|
+
export type Result_7 = {
|
|
90
100
|
'Ok': PrepareLoginResponse;
|
|
91
101
|
} | {
|
|
92
102
|
'Err': string;
|
|
@@ -97,10 +107,12 @@ export interface SignedDelegation {
|
|
|
97
107
|
}
|
|
98
108
|
export interface _SERVICE {
|
|
99
109
|
/**
|
|
100
|
-
* Get debug diagnostics (
|
|
110
|
+
* Get debug diagnostics (restricted to canister controllers)
|
|
101
111
|
*
|
|
102
112
|
* Returns configuration and state information for debugging.
|
|
103
|
-
*
|
|
113
|
+
* Only callable by canister controllers for security.
|
|
114
|
+
* This is an update call so that caller identity is consensus-verified
|
|
115
|
+
* (query calls cannot reliably enforce access control on the IC).
|
|
104
116
|
*/
|
|
105
117
|
'debug_info': ActorMethod<[], Result>;
|
|
106
118
|
/**
|
|
@@ -115,6 +127,19 @@ export interface _SERVICE {
|
|
|
115
127
|
* Get ICP principal for Avalanche address
|
|
116
128
|
*/
|
|
117
129
|
'get_principal': ActorMethod<[string], Result_2>;
|
|
130
|
+
/**
|
|
131
|
+
* Purge identity mappings from stable memory in bounded batches (controller-only)
|
|
132
|
+
*
|
|
133
|
+
* Removes up to 1000 address-to-principal and principal-to-address mappings
|
|
134
|
+
* per call to stay within IC instruction limits. Call repeatedly until the
|
|
135
|
+
* return value is 0 to purge all mappings. Mappings will be re-populated on
|
|
136
|
+
* next login for each address.
|
|
137
|
+
*
|
|
138
|
+
* # Returns
|
|
139
|
+
* * `Ok(count)` - Number of mappings removed in this call (0 = done)
|
|
140
|
+
* * `Err(String)` - Error if not a controller
|
|
141
|
+
*/
|
|
142
|
+
'purge_identity_mappings': ActorMethod<[], Result_3>;
|
|
118
143
|
/**
|
|
119
144
|
* Get delegation for authenticated principal
|
|
120
145
|
*
|
|
@@ -135,7 +160,7 @@ export interface _SERVICE {
|
|
|
135
160
|
string,
|
|
136
161
|
Uint8Array | number[],
|
|
137
162
|
bigint
|
|
138
|
-
],
|
|
163
|
+
], Result_4>;
|
|
139
164
|
/**
|
|
140
165
|
* Complete SIWA login with signed message
|
|
141
166
|
*
|
|
@@ -148,7 +173,43 @@ export interface _SERVICE {
|
|
|
148
173
|
* * `Ok(LoginResponse)` - The derived principal and session expiration
|
|
149
174
|
* * `Err(String)` - Error if signature is invalid or session expired
|
|
150
175
|
*/
|
|
151
|
-
'siwa_login': ActorMethod<[string, string, Uint8Array | number[]],
|
|
176
|
+
'siwa_login': ActorMethod<[string, string, Uint8Array | number[]], Result_5>;
|
|
177
|
+
/**
|
|
178
|
+
* Combined login and prepare_delegation in a single update call
|
|
179
|
+
*
|
|
180
|
+
* This reduces the login flow from 2 update calls + 1 query to
|
|
181
|
+
* 1 update call + 1 query, saving ~2 seconds of consensus latency.
|
|
182
|
+
*
|
|
183
|
+
* # Arguments
|
|
184
|
+
* * `signature` - Hex-encoded signature from the user's wallet
|
|
185
|
+
* * `address` - The Avalanche address that signed the message
|
|
186
|
+
* * `session_key` - The session public key to bind to this authentication
|
|
187
|
+
*
|
|
188
|
+
* # Returns
|
|
189
|
+
* * `Ok(LoginResponse)` - The derived principal and session expiration
|
|
190
|
+
* * `Err(String)` - Error if signature is invalid or session expired
|
|
191
|
+
*/
|
|
192
|
+
'siwa_login_and_prepare': ActorMethod<[
|
|
193
|
+
string,
|
|
194
|
+
string,
|
|
195
|
+
Uint8Array | number[]
|
|
196
|
+
], Result_5>;
|
|
197
|
+
/**
|
|
198
|
+
* Logout - revoke a specific session
|
|
199
|
+
*
|
|
200
|
+
* The caller must be the session owner (matching derived principal) or a
|
|
201
|
+
* canister controller. This prevents unauthenticated third parties from
|
|
202
|
+
* revoking other users' sessions.
|
|
203
|
+
*
|
|
204
|
+
* # Arguments
|
|
205
|
+
* * `address` - The Avalanche address
|
|
206
|
+
* * `session_key` - The session public key from login
|
|
207
|
+
*
|
|
208
|
+
* # Returns
|
|
209
|
+
* * `Ok(())` - Session revoked
|
|
210
|
+
* * `Err(String)` - Error if session not found or caller unauthorized
|
|
211
|
+
*/
|
|
212
|
+
'siwa_logout': ActorMethod<[string, Uint8Array | number[]], Result_6>;
|
|
152
213
|
/**
|
|
153
214
|
* Prepare a delegation for an authenticated session
|
|
154
215
|
*
|
|
@@ -161,14 +222,14 @@ export interface _SERVICE {
|
|
|
161
222
|
* * `expiration` - Requested expiration timestamp (may be capped)
|
|
162
223
|
*
|
|
163
224
|
* # Returns
|
|
164
|
-
* * `Ok(
|
|
225
|
+
* * `Ok(u64)` - The final capped expiration timestamp in nanoseconds
|
|
165
226
|
* * `Err(String)` - Error if not authenticated or expired
|
|
166
227
|
*/
|
|
167
228
|
'siwa_prepare_delegation': ActorMethod<[
|
|
168
229
|
string,
|
|
169
230
|
Uint8Array | number[],
|
|
170
231
|
bigint
|
|
171
|
-
],
|
|
232
|
+
], Result_3>;
|
|
172
233
|
/**
|
|
173
234
|
* Prepare a SIWA login message for signing (simple version)
|
|
174
235
|
*
|
|
@@ -182,7 +243,7 @@ export interface _SERVICE {
|
|
|
182
243
|
* * `Ok(PrepareLoginResponse)` - The message to sign, nonce, and expiration
|
|
183
244
|
* * `Err(String)` - Error description if address is invalid
|
|
184
245
|
*/
|
|
185
|
-
'siwa_prepare_login': ActorMethod<[string],
|
|
246
|
+
'siwa_prepare_login': ActorMethod<[string], Result_7>;
|
|
186
247
|
/**
|
|
187
248
|
* Prepare a SIWA login message with custom domain/uri (multi-tenant version)
|
|
188
249
|
*
|
|
@@ -203,7 +264,21 @@ export interface _SERVICE {
|
|
|
203
264
|
*/
|
|
204
265
|
'siwa_prepare_login_with_options': ActorMethod<[
|
|
205
266
|
PrepareLoginRequest
|
|
206
|
-
],
|
|
267
|
+
], Result_7>;
|
|
268
|
+
/**
|
|
269
|
+
* Revoke all sessions for an address (controller-only)
|
|
270
|
+
*
|
|
271
|
+
* Emergency endpoint to revoke all active sessions for a given address.
|
|
272
|
+
* Only callable by canister controllers.
|
|
273
|
+
*
|
|
274
|
+
* # Arguments
|
|
275
|
+
* * `address` - The Avalanche address to revoke sessions for
|
|
276
|
+
*
|
|
277
|
+
* # Returns
|
|
278
|
+
* * `Ok(count)` - Number of sessions revoked
|
|
279
|
+
* * `Err(String)` - Error if not a controller
|
|
280
|
+
*/
|
|
281
|
+
'siwa_revoke_all': ActorMethod<[string], Result_3>;
|
|
207
282
|
}
|
|
208
283
|
export declare const idlFactory: ({ IDL }: {
|
|
209
284
|
IDL: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ic_siwa_provider.d.ts","sourceRoot":"","sources":["../../src/candid/ic_siwa_provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ic_siwa_provider.d.ts","sourceRoot":"","sources":["../../src/candid/ic_siwa_provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,22 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
/**
|
|
3
2
|
* Auto-generated Candid bindings for ic_siwa_provider canister
|
|
4
3
|
* Generated from: canisters/ic_siwa_provider/ic_siwa_provider.did
|
|
5
4
|
* DO NOT EDIT MANUALLY - regenerate with: ic-siwa candid
|
|
6
5
|
*/
|
|
7
6
|
export const idlFactory = ({ IDL }) => {
|
|
8
|
-
const RateLimitArgs = IDL.Record({
|
|
9
|
-
'max_logins_total': IDL.Nat32,
|
|
10
|
-
'window_seconds': IDL.Nat64,
|
|
11
|
-
'max_logins_per_address': IDL.Nat32,
|
|
12
|
-
});
|
|
13
|
-
const InitArgs = IDL.Record({
|
|
14
|
-
'uri': IDL.Text,
|
|
15
|
-
'domain': IDL.Text,
|
|
16
|
-
'salt': IDL.Text,
|
|
17
|
-
'chain_id': IDL.Nat64,
|
|
18
|
-
'allowed_domains': IDL.Opt(IDL.Vec(IDL.Text)),
|
|
19
|
-
'allowed_canisters': IDL.Opt(IDL.Vec(IDL.Principal)),
|
|
20
|
-
'rate_limits': IDL.Opt(RateLimitArgs),
|
|
21
|
-
'delegation_targets': IDL.Opt(IDL.Vec(IDL.Principal)),
|
|
22
|
-
'debug': IDL.Opt(IDL.Bool),
|
|
23
|
-
'session_expiration_time': IDL.Nat64,
|
|
24
|
-
});
|
|
25
7
|
const DebugInfo = IDL.Record({
|
|
26
8
|
'uri': IDL.Text,
|
|
9
|
+
'signature_map_count': IDL.Nat64,
|
|
10
|
+
'auth_sessions_count': IDL.Nat64,
|
|
27
11
|
'domain': IDL.Text,
|
|
28
12
|
'delegation_targets_count': IDL.Nat64,
|
|
29
13
|
'chain_id': IDL.Nat64,
|
|
30
14
|
'allowed_domains': IDL.Vec(IDL.Text),
|
|
31
15
|
'allowed_domains_count': IDL.Nat64,
|
|
16
|
+
'login_sessions_count': IDL.Nat64,
|
|
32
17
|
'rate_limit_total': IDL.Nat32,
|
|
33
18
|
'rate_limit_per_address': IDL.Nat32,
|
|
19
|
+
'prepared_delegations_count': IDL.Nat64,
|
|
34
20
|
'session_expiration_ns': IDL.Nat64,
|
|
35
21
|
'rate_limit_window_seconds': IDL.Nat64,
|
|
36
22
|
'delegation_targets': IDL.Vec(IDL.Principal),
|
|
@@ -39,6 +25,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
39
25
|
const Result = IDL.Variant({ 'Ok': DebugInfo, 'Err': IDL.Text });
|
|
40
26
|
const Result_1 = IDL.Variant({ 'Ok': IDL.Text, 'Err': IDL.Text });
|
|
41
27
|
const Result_2 = IDL.Variant({ 'Ok': IDL.Principal, 'Err': IDL.Text });
|
|
28
|
+
const Result_3 = IDL.Variant({ 'Ok': IDL.Nat64, 'Err': IDL.Text });
|
|
42
29
|
const Delegation = IDL.Record({
|
|
43
30
|
'pubkey': IDL.Vec(IDL.Nat8),
|
|
44
31
|
'targets': IDL.Opt(IDL.Vec(IDL.Principal)),
|
|
@@ -48,20 +35,20 @@ export const idlFactory = ({ IDL }) => {
|
|
|
48
35
|
'signature': IDL.Vec(IDL.Nat8),
|
|
49
36
|
'delegation': Delegation,
|
|
50
37
|
});
|
|
51
|
-
const
|
|
38
|
+
const Result_4 = IDL.Variant({ 'Ok': SignedDelegation, 'Err': IDL.Text });
|
|
52
39
|
const LoginResponse = IDL.Record({
|
|
53
40
|
'user_principal': IDL.Principal,
|
|
54
41
|
'user_canister_pubkey': IDL.Vec(IDL.Nat8),
|
|
55
42
|
'expiration': IDL.Nat64,
|
|
56
43
|
});
|
|
57
|
-
const
|
|
58
|
-
const
|
|
44
|
+
const Result_5 = IDL.Variant({ 'Ok': LoginResponse, 'Err': IDL.Text });
|
|
45
|
+
const Result_6 = IDL.Variant({ 'Ok': IDL.Null, 'Err': IDL.Text });
|
|
59
46
|
const PrepareLoginResponse = IDL.Record({
|
|
60
47
|
'expiration': IDL.Nat64,
|
|
61
48
|
'message': IDL.Text,
|
|
62
49
|
'nonce': IDL.Text,
|
|
63
50
|
});
|
|
64
|
-
const
|
|
51
|
+
const Result_7 = IDL.Variant({
|
|
65
52
|
'Ok': PrepareLoginResponse,
|
|
66
53
|
'Err': IDL.Text,
|
|
67
54
|
});
|
|
@@ -71,15 +58,19 @@ export const idlFactory = ({ IDL }) => {
|
|
|
71
58
|
'address': IDL.Text,
|
|
72
59
|
});
|
|
73
60
|
return IDL.Service({
|
|
74
|
-
'debug_info': IDL.Func([], [Result], [
|
|
61
|
+
'debug_info': IDL.Func([], [Result], []),
|
|
75
62
|
'get_address': IDL.Func([IDL.Principal], [Result_1], ['query']),
|
|
76
63
|
'get_caller_address': IDL.Func([], [Result_1], ['query']),
|
|
77
64
|
'get_principal': IDL.Func([IDL.Text], [Result_2], ['query']),
|
|
78
|
-
'
|
|
79
|
-
'
|
|
80
|
-
'
|
|
81
|
-
'
|
|
82
|
-
'
|
|
65
|
+
'purge_identity_mappings': IDL.Func([], [Result_3], []),
|
|
66
|
+
'siwa_get_delegation': IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8), IDL.Nat64], [Result_4], ['query']),
|
|
67
|
+
'siwa_login': IDL.Func([IDL.Text, IDL.Text, IDL.Vec(IDL.Nat8)], [Result_5], []),
|
|
68
|
+
'siwa_login_and_prepare': IDL.Func([IDL.Text, IDL.Text, IDL.Vec(IDL.Nat8)], [Result_5], []),
|
|
69
|
+
'siwa_logout': IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8)], [Result_6], []),
|
|
70
|
+
'siwa_prepare_delegation': IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8), IDL.Nat64], [Result_3], []),
|
|
71
|
+
'siwa_prepare_login': IDL.Func([IDL.Text], [Result_7], []),
|
|
72
|
+
'siwa_prepare_login_with_options': IDL.Func([PrepareLoginRequest], [Result_7], []),
|
|
73
|
+
'siwa_revoke_all': IDL.Func([IDL.Text], [Result_3], []),
|
|
83
74
|
});
|
|
84
75
|
};
|
|
85
76
|
export const init = ({ IDL }) => {
|
|
@@ -99,6 +90,7 @@ export const init = ({ IDL }) => {
|
|
|
99
90
|
'delegation_targets': IDL.Opt(IDL.Vec(IDL.Principal)),
|
|
100
91
|
'debug': IDL.Opt(IDL.Bool),
|
|
101
92
|
'session_expiration_time': IDL.Nat64,
|
|
93
|
+
'login_expiration_time': IDL.Opt(IDL.Nat64),
|
|
102
94
|
});
|
|
103
95
|
return [InitArgs];
|
|
104
96
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ic_siwa_provider.js","sourceRoot":"","sources":["../../src/candid/ic_siwa_provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ic_siwa_provider.js","sourceRoot":"","sources":["../../src/candid/ic_siwa_provider.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -36,6 +36,10 @@ export declare class SiwaClient {
|
|
|
36
36
|
private refreshTimer;
|
|
37
37
|
private sessionKey;
|
|
38
38
|
constructor(options: SiwaClientOptions);
|
|
39
|
+
/**
|
|
40
|
+
* Get a canister-namespaced storage key to prevent cross-canister conflicts
|
|
41
|
+
*/
|
|
42
|
+
private storageKey;
|
|
39
43
|
/**
|
|
40
44
|
* Check if user is currently authenticated
|
|
41
45
|
*/
|
|
@@ -52,6 +56,20 @@ export declare class SiwaClient {
|
|
|
52
56
|
* Get the current Avalanche address if authenticated
|
|
53
57
|
*/
|
|
54
58
|
getAddress(): Promise<string | null>;
|
|
59
|
+
/**
|
|
60
|
+
* Check if the host is a local development environment.
|
|
61
|
+
* Uses strict hostname matching to avoid false positives
|
|
62
|
+
* (e.g. "localhost.evil.com" would NOT match).
|
|
63
|
+
*/
|
|
64
|
+
private isLocalEnvironment;
|
|
65
|
+
/**
|
|
66
|
+
* Validate an Avalanche address format (0x-prefixed, 42 hex chars)
|
|
67
|
+
*/
|
|
68
|
+
private static validateAddress;
|
|
69
|
+
/**
|
|
70
|
+
* Validate a hex-encoded signature format (0x-prefixed, 130 hex chars = 65 bytes)
|
|
71
|
+
*/
|
|
72
|
+
private static validateSignature;
|
|
55
73
|
/**
|
|
56
74
|
* Create an anonymous agent for canister calls
|
|
57
75
|
*/
|
|
@@ -98,6 +116,13 @@ export declare class SiwaClient {
|
|
|
98
116
|
* @param sessionKey - Optional session key (generated if not provided)
|
|
99
117
|
*/
|
|
100
118
|
login(signature: string, address: string, sessionKey?: Ed25519KeyIdentity): Promise<LoginResult>;
|
|
119
|
+
/**
|
|
120
|
+
* Get delegation with retry logic to handle IC certified data propagation delay.
|
|
121
|
+
*
|
|
122
|
+
* After an update call modifies certified data, a subsequent query may hit a
|
|
123
|
+
* replica that hasn't yet processed the new block. This retries with backoff.
|
|
124
|
+
*/
|
|
125
|
+
private getDelegationWithRetry;
|
|
101
126
|
/**
|
|
102
127
|
* Build delegation chain from canister response
|
|
103
128
|
*
|
|
@@ -151,6 +176,10 @@ export declare class SiwaClient {
|
|
|
151
176
|
}): Promise<LoginResult>;
|
|
152
177
|
/**
|
|
153
178
|
* Logout and clear stored identity
|
|
179
|
+
*
|
|
180
|
+
* Revokes the session on the canister (best-effort) before clearing
|
|
181
|
+
* local state. If the canister is unreachable, local logout still
|
|
182
|
+
* succeeds and the server-side session will expire naturally.
|
|
154
183
|
*/
|
|
155
184
|
logout(): Promise<void>;
|
|
156
185
|
/**
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAQ,SAAS,EAAgC,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAGL,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAU7C,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,YAAY,CAAC;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAQ,SAAS,EAAgC,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAGL,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAU7C,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAyB,KAAK,eAAe,EAAC,MAAM,WAAW,CAAC;AACvE,OAAO,KAAK,EAAC,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,UAAU,CAAmC;gBAEzC,OAAO,EAAE,iBAAiB;IAQtC;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAyCjD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAK/C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK1C;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAS9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAShC;;OAEG;YACW,oBAAoB;IAYlC;;OAEG;YACW,mBAAmB;IAQjC;;;;;;;OAOG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI3D;;;;;;;;;;;;;;;;;;;OAmBG;IACG,uBAAuB,CAC3B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IAoCzB;;;;;;OAMG;IACG,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,kBAAkB,GAC9B,OAAO,CAAC,WAAW,CAAC;IA2HvB;;;;;OAKG;YACW,sBAAsB;IA8BpC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IA6C5B;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAyHtD;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;;;;;;;;;;;;;;;;;OAmBG;IACG,eAAe,CACnB,YAAY,EAAE;QACZ,OAAO,EAAE;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC,CAAC;QAC3B,WAAW,EAAE,CAAC,IAAI,EAAE;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KAC3D,EACD,OAAO,CAAC,EAAE;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAC,GACxC,OAAO,CAAC,WAAW,CAAC;IAmBvB;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;IAoBpC;;OAEG;IACG,WAAW,CAAC,CAAC,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,CAAC,CAAC;IAWb;;OAEG;IACH,aAAa,IAAI,SAAS;IAI1B;;OAEG;IACH,OAAO,IAAI,MAAM;CAGlB"}
|
package/dist/client.js
CHANGED
|
@@ -7,7 +7,7 @@ import { Principal } from "@dfinity/principal";
|
|
|
7
7
|
import { idlFactory, } from "./candid";
|
|
8
8
|
import { SiwaError, SiwaErrorCode } from "./errors";
|
|
9
9
|
import { createSiwaIdentity, generateSessionKey, } from "./identity";
|
|
10
|
-
import {
|
|
10
|
+
import { SessionStorageProvider } from "./storage";
|
|
11
11
|
/**
|
|
12
12
|
* SIWA Client for authenticating with Avalanche wallets
|
|
13
13
|
*/
|
|
@@ -24,10 +24,16 @@ export class SiwaClient {
|
|
|
24
24
|
constructor(options) {
|
|
25
25
|
this.canisterId = Principal.fromText(options.canisterId);
|
|
26
26
|
this.host = options.host ?? "https://ic0.app";
|
|
27
|
-
this.storage = options.storage ?? new
|
|
27
|
+
this.storage = options.storage ?? new SessionStorageProvider();
|
|
28
28
|
this.autoRefresh = options.autoRefresh ?? true;
|
|
29
29
|
this.refreshThreshold = options.refreshThreshold ?? 5 * 60 * 1000; // 5 minutes
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Get a canister-namespaced storage key to prevent cross-canister conflicts
|
|
33
|
+
*/
|
|
34
|
+
storageKey(key) {
|
|
35
|
+
return `${this.canisterId.toText()}_${key}`;
|
|
36
|
+
}
|
|
31
37
|
/**
|
|
32
38
|
* Check if user is currently authenticated
|
|
33
39
|
*/
|
|
@@ -43,14 +49,17 @@ export class SiwaClient {
|
|
|
43
49
|
return this.identity;
|
|
44
50
|
}
|
|
45
51
|
// Try to restore from storage
|
|
46
|
-
const stored = await this.storage.get("
|
|
52
|
+
const stored = await this.storage.get(this.storageKey("identity"));
|
|
47
53
|
if (stored) {
|
|
48
54
|
try {
|
|
49
55
|
const data = JSON.parse(stored);
|
|
50
56
|
this.identity = await createSiwaIdentity(data);
|
|
51
|
-
|
|
57
|
+
// Use a 30-second buffer so we don't return a nearly-expired
|
|
58
|
+
// identity that would fail on the first canister call.
|
|
59
|
+
const RESTORE_BUFFER_MS = 30_000;
|
|
60
|
+
if (Date.now() + RESTORE_BUFFER_MS < this.identity.getExpiration()) {
|
|
52
61
|
// Restore session key if stored
|
|
53
|
-
const storedKey = await this.storage.get("
|
|
62
|
+
const storedKey = await this.storage.get(this.storageKey("session_key"));
|
|
54
63
|
if (storedKey) {
|
|
55
64
|
this.sessionKey = Ed25519KeyIdentity.fromJSON(storedKey);
|
|
56
65
|
}
|
|
@@ -64,8 +73,8 @@ export class SiwaClient {
|
|
|
64
73
|
catch {
|
|
65
74
|
// Invalid stored identity, clean up
|
|
66
75
|
}
|
|
67
|
-
await this.storage.remove("
|
|
68
|
-
await this.storage.remove("
|
|
76
|
+
await this.storage.remove(this.storageKey("identity"));
|
|
77
|
+
await this.storage.remove(this.storageKey("session_key"));
|
|
69
78
|
}
|
|
70
79
|
return null;
|
|
71
80
|
}
|
|
@@ -83,6 +92,40 @@ export class SiwaClient {
|
|
|
83
92
|
const identity = await this.getIdentity();
|
|
84
93
|
return identity?.getAddress() ?? null;
|
|
85
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if the host is a local development environment.
|
|
97
|
+
* Uses strict hostname matching to avoid false positives
|
|
98
|
+
* (e.g. "localhost.evil.com" would NOT match).
|
|
99
|
+
*/
|
|
100
|
+
isLocalEnvironment() {
|
|
101
|
+
try {
|
|
102
|
+
const url = new URL(this.host);
|
|
103
|
+
const hostname = url.hostname;
|
|
104
|
+
return (hostname === "localhost" ||
|
|
105
|
+
hostname === "127.0.0.1" ||
|
|
106
|
+
hostname === "::1" ||
|
|
107
|
+
hostname.endsWith(".localhost"));
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Validate an Avalanche address format (0x-prefixed, 42 hex chars)
|
|
115
|
+
*/
|
|
116
|
+
static validateAddress(address) {
|
|
117
|
+
if (!/^0x[0-9a-fA-F]{40}$/.test(address)) {
|
|
118
|
+
throw new SiwaError(SiwaErrorCode.InvalidAddress, "Address must be 0x-prefixed followed by 40 hex characters");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Validate a hex-encoded signature format (0x-prefixed, 130 hex chars = 65 bytes)
|
|
123
|
+
*/
|
|
124
|
+
static validateSignature(signature) {
|
|
125
|
+
if (!/^0x[0-9a-fA-F]{130}$/.test(signature)) {
|
|
126
|
+
throw new SiwaError(SiwaErrorCode.InvalidSignature, "Signature must be 0x-prefixed followed by 130 hex characters (65 bytes)");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
86
129
|
/**
|
|
87
130
|
* Create an anonymous agent for canister calls
|
|
88
131
|
*/
|
|
@@ -90,10 +133,7 @@ export class SiwaClient {
|
|
|
90
133
|
const agent = await HttpAgent.create({
|
|
91
134
|
host: this.host,
|
|
92
135
|
});
|
|
93
|
-
|
|
94
|
-
if (this.host.includes("localhost") ||
|
|
95
|
-
this.host.includes("127.0.0.1") ||
|
|
96
|
-
this.host.includes(".local")) {
|
|
136
|
+
if (this.isLocalEnvironment()) {
|
|
97
137
|
await agent.fetchRootKey();
|
|
98
138
|
}
|
|
99
139
|
return agent;
|
|
@@ -140,6 +180,7 @@ export class SiwaClient {
|
|
|
140
180
|
* ```
|
|
141
181
|
*/
|
|
142
182
|
async prepareLoginWithOptions(options) {
|
|
183
|
+
SiwaClient.validateAddress(options.address);
|
|
143
184
|
try {
|
|
144
185
|
const actor = await this.createProviderActor();
|
|
145
186
|
// Use the new multi-tenant endpoint if domain/uri provided
|
|
@@ -174,15 +215,18 @@ export class SiwaClient {
|
|
|
174
215
|
* @param sessionKey - Optional session key (generated if not provided)
|
|
175
216
|
*/
|
|
176
217
|
async login(signature, address, sessionKey) {
|
|
218
|
+
SiwaClient.validateAddress(address);
|
|
219
|
+
SiwaClient.validateSignature(signature);
|
|
177
220
|
try {
|
|
178
221
|
// Generate session key if not provided
|
|
179
222
|
this.sessionKey = sessionKey ?? generateSessionKey();
|
|
180
223
|
const sessionKeyDer = this.sessionKey.getPublicKey().toDer();
|
|
181
224
|
// Convert to number[] for Candid encoding (blob = vec nat8)
|
|
182
225
|
const sessionKeyBytes = Array.from(new Uint8Array(sessionKeyDer));
|
|
183
|
-
//
|
|
226
|
+
// Combined login + prepare_delegation in a single update call
|
|
227
|
+
// This saves ~2 seconds by eliminating one consensus round-trip
|
|
184
228
|
const actor = await this.createProviderActor();
|
|
185
|
-
const loginResponse = await actor.
|
|
229
|
+
const loginResponse = await actor.siwa_login_and_prepare(signature, address, sessionKeyBytes);
|
|
186
230
|
if ("Err" in loginResponse) {
|
|
187
231
|
throw new SiwaError(SiwaErrorCode.CanisterError, loginResponse.Err, loginResponse);
|
|
188
232
|
}
|
|
@@ -193,19 +237,12 @@ export class SiwaClient {
|
|
|
193
237
|
const canisterPubkeyBytes = userCanisterPubkey instanceof Uint8Array
|
|
194
238
|
? userCanisterPubkey
|
|
195
239
|
: new Uint8Array(userCanisterPubkey);
|
|
196
|
-
// Use the expiration from login response
|
|
197
|
-
const expirationNs = loginExpiration
|
|
198
|
-
|
|
199
|
-
//
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
throw new SiwaError(SiwaErrorCode.CanisterError, prepareResult.Err, prepareResult);
|
|
203
|
-
}
|
|
204
|
-
// Now get the certified delegation
|
|
205
|
-
const delegationResponse = await actor.siwa_get_delegation(address, sessionKeyBytes, expirationNs);
|
|
206
|
-
if ("Err" in delegationResponse) {
|
|
207
|
-
throw new SiwaError(SiwaErrorCode.CanisterError, delegationResponse.Err, delegationResponse);
|
|
208
|
-
}
|
|
240
|
+
// Use the expiration from login response (always present in LoginResponse)
|
|
241
|
+
const expirationNs = loginExpiration;
|
|
242
|
+
// Get the certified delegation with retry logic to handle the IC
|
|
243
|
+
// certified data propagation race (query may hit a replica that hasn't
|
|
244
|
+
// yet processed the update call's state tree commit).
|
|
245
|
+
const delegationResponse = await this.getDelegationWithRetry(actor, address, sessionKeyBytes, expirationNs);
|
|
209
246
|
// Create delegation chain from canister response
|
|
210
247
|
const { delegation: candidDelegation, signature: delegationSignature } = delegationResponse.Ok;
|
|
211
248
|
// Convert signature to proper Uint8Array if needed
|
|
@@ -232,8 +269,8 @@ export class SiwaClient {
|
|
|
232
269
|
// Create identity
|
|
233
270
|
this.identity = await createSiwaIdentity(serializedIdentity);
|
|
234
271
|
// Store identity and session key
|
|
235
|
-
await this.storage.set("
|
|
236
|
-
await this.storage.set("
|
|
272
|
+
await this.storage.set(this.storageKey("identity"), JSON.stringify(serializedIdentity));
|
|
273
|
+
await this.storage.set(this.storageKey("session_key"), JSON.stringify(this.sessionKey.toJSON()));
|
|
237
274
|
// Reset agent to use new identity
|
|
238
275
|
this.agent = null;
|
|
239
276
|
// Set up auto-refresh if enabled
|
|
@@ -253,6 +290,25 @@ export class SiwaClient {
|
|
|
253
290
|
throw SiwaError.fromCanisterError(error);
|
|
254
291
|
}
|
|
255
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Get delegation with retry logic to handle IC certified data propagation delay.
|
|
295
|
+
*
|
|
296
|
+
* After an update call modifies certified data, a subsequent query may hit a
|
|
297
|
+
* replica that hasn't yet processed the new block. This retries with backoff.
|
|
298
|
+
*/
|
|
299
|
+
async getDelegationWithRetry(actor, address, sessionKeyBytes, expirationNs, maxRetries = 3, baseDelayMs = 500) {
|
|
300
|
+
let lastError;
|
|
301
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
302
|
+
const response = await actor.siwa_get_delegation(address, sessionKeyBytes, expirationNs);
|
|
303
|
+
if ("Ok" in response) {
|
|
304
|
+
return response;
|
|
305
|
+
}
|
|
306
|
+
lastError = response.Err;
|
|
307
|
+
// Wait with linear backoff before retrying
|
|
308
|
+
await new Promise((resolve) => setTimeout(resolve, baseDelayMs * (attempt + 1)));
|
|
309
|
+
}
|
|
310
|
+
throw new SiwaError(SiwaErrorCode.CanisterError, lastError ?? "Failed to get delegation after retries");
|
|
311
|
+
}
|
|
256
312
|
/**
|
|
257
313
|
* Build delegation chain from canister response
|
|
258
314
|
*
|
|
@@ -313,19 +369,28 @@ export class SiwaClient {
|
|
|
313
369
|
[]);
|
|
314
370
|
try {
|
|
315
371
|
const actor = await this.createProviderActor();
|
|
316
|
-
//
|
|
317
|
-
|
|
372
|
+
// Request the maximum possible expiration and let the canister cap it
|
|
373
|
+
// to its configured session_expiration_time. Using the old (nearly expired)
|
|
374
|
+
// delegation's timestamp would produce an immediately-expiring delegation.
|
|
375
|
+
const requestedExpirationNs = BigInt(Number.MAX_SAFE_INTEGER) * BigInt(1_000_000);
|
|
318
376
|
// Prepare delegation first (stores in signature map for certified response)
|
|
319
|
-
const prepareResult = await actor.siwa_prepare_delegation(address, sessionKeyBytes,
|
|
377
|
+
const prepareResult = await actor.siwa_prepare_delegation(address, sessionKeyBytes, requestedExpirationNs);
|
|
320
378
|
if ("Err" in prepareResult) {
|
|
321
379
|
// Session may have expired, need to re-login
|
|
322
380
|
await this.logout();
|
|
323
381
|
return null;
|
|
324
382
|
}
|
|
325
|
-
//
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
383
|
+
// Use the canister's capped expiration (not the uncapped requested value)
|
|
384
|
+
// to ensure the expiration passed to siwa_get_delegation matches what was
|
|
385
|
+
// actually stored during prepare_delegation.
|
|
386
|
+
const cappedExpirationNs = prepareResult.Ok;
|
|
387
|
+
// Get the certified delegation with retry logic
|
|
388
|
+
let delegationResponse;
|
|
389
|
+
try {
|
|
390
|
+
delegationResponse = await this.getDelegationWithRetry(actor, address, sessionKeyBytes, cappedExpirationNs);
|
|
391
|
+
}
|
|
392
|
+
catch {
|
|
393
|
+
// Session may have expired or delegation unavailable, need to re-login
|
|
329
394
|
await this.logout();
|
|
330
395
|
return null;
|
|
331
396
|
}
|
|
@@ -334,7 +399,8 @@ export class SiwaClient {
|
|
|
334
399
|
? delegationSignature
|
|
335
400
|
: new Uint8Array(delegationSignature);
|
|
336
401
|
const delegationChain = this.buildDelegationChain(candidDelegation, signatureBytes, canisterPubkeyBytes);
|
|
337
|
-
|
|
402
|
+
// Use the canister's actual expiration from the delegation response
|
|
403
|
+
const expirationMs = Number(candidDelegation.expiration / BigInt(1_000_000));
|
|
338
404
|
const serializedIdentity = {
|
|
339
405
|
baseKey: JSON.stringify(this.sessionKey.toJSON()),
|
|
340
406
|
delegationChain: JSON.stringify(delegationChain.toJSON()),
|
|
@@ -343,7 +409,7 @@ export class SiwaClient {
|
|
|
343
409
|
canisterPubkey: serialized.canisterPubkey,
|
|
344
410
|
};
|
|
345
411
|
this.identity = await createSiwaIdentity(serializedIdentity);
|
|
346
|
-
await this.storage.set("
|
|
412
|
+
await this.storage.set(this.storageKey("identity"), JSON.stringify(serializedIdentity));
|
|
347
413
|
// Reset agent
|
|
348
414
|
this.agent = null;
|
|
349
415
|
// Reschedule refresh
|
|
@@ -421,6 +487,10 @@ export class SiwaClient {
|
|
|
421
487
|
}
|
|
422
488
|
/**
|
|
423
489
|
* Logout and clear stored identity
|
|
490
|
+
*
|
|
491
|
+
* Revokes the session on the canister (best-effort) before clearing
|
|
492
|
+
* local state. If the canister is unreachable, local logout still
|
|
493
|
+
* succeeds and the server-side session will expire naturally.
|
|
424
494
|
*/
|
|
425
495
|
async logout() {
|
|
426
496
|
// Clear refresh timer
|
|
@@ -428,11 +498,27 @@ export class SiwaClient {
|
|
|
428
498
|
clearTimeout(this.refreshTimer);
|
|
429
499
|
this.refreshTimer = null;
|
|
430
500
|
}
|
|
501
|
+
// Revoke session on the canister (best-effort, don't block on failure).
|
|
502
|
+
// Uses the authenticated agent so the caller principal matches the session
|
|
503
|
+
// owner, which is required by the canister's authorization check.
|
|
504
|
+
if (this.identity && this.sessionKey) {
|
|
505
|
+
try {
|
|
506
|
+
const address = this.identity.getAddress();
|
|
507
|
+
const sessionKeyBytes = Array.from(new Uint8Array(this.sessionKey.getPublicKey().toDer()));
|
|
508
|
+
const agent = await this.getAgent();
|
|
509
|
+
const actor = await this.createProviderActor(agent);
|
|
510
|
+
await actor.siwa_logout(address, sessionKeyBytes);
|
|
511
|
+
}
|
|
512
|
+
catch {
|
|
513
|
+
// Best-effort: canister may be unreachable or delegation already expired,
|
|
514
|
+
// session will expire naturally on the canister side
|
|
515
|
+
}
|
|
516
|
+
}
|
|
431
517
|
this.identity = null;
|
|
432
518
|
this.agent = null;
|
|
433
519
|
this.sessionKey = null;
|
|
434
|
-
await this.storage.remove("
|
|
435
|
-
await this.storage.remove("
|
|
520
|
+
await this.storage.remove(this.storageKey("identity"));
|
|
521
|
+
await this.storage.remove(this.storageKey("session_key"));
|
|
436
522
|
}
|
|
437
523
|
/**
|
|
438
524
|
* Get an HttpAgent for making authenticated calls
|
|
@@ -447,10 +533,7 @@ export class SiwaClient {
|
|
|
447
533
|
host: this.host,
|
|
448
534
|
identity: identity.getDelegationIdentity(),
|
|
449
535
|
});
|
|
450
|
-
|
|
451
|
-
if (this.host.includes("localhost") ||
|
|
452
|
-
this.host.includes("127.0.0.1") ||
|
|
453
|
-
this.host.includes(".local")) {
|
|
536
|
+
if (this.isLocalEnvironment()) {
|
|
454
537
|
await this.agent.fetchRootKey();
|
|
455
538
|
}
|
|
456
539
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAC,KAAK,EAAE,SAAS,EAAgC,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,UAAU,EACV,eAAe,EACf,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,UAAU,GAMX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAGnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAC,oBAAoB,EAAuB,MAAM,WAAW,CAAC;AAmBrE;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,UAAU,CAAY;IACtB,IAAI,CAAS;IACb,OAAO,CAAkB;IACzB,WAAW,CAAU;IACrB,gBAAgB,CAAS;IACzB,QAAQ,GAAwB,IAAI,CAAC;IACrC,KAAK,GAAqB,IAAI,CAAC;IAC/B,YAAY,GAAyC,IAAI,CAAC;IAC1D,UAAU,GAA8B,IAAI,CAAC;IAErD,YAAY,OAA0B;QACpC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,oBAAoB,EAAE,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;IACjF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,8BAA8B;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAuB,CAAC;gBACtD,IAAI,CAAC,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAE/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;oBAC/B,gCAAgC;oBAChC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;oBAC7D,IAAI,SAAS,EAAE,CAAC;wBACd,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC3D,CAAC;oBAED,iCAAiC;oBACjC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACrB,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,CAAC;oBAED,OAAO,IAAI,CAAC,QAAQ,CAAC;gBACvB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oCAAoC;YACtC,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,QAAQ,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB;QAChC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QAEH,gDAAgD;QAChD,IACE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC5B,CAAC;YACD,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,KAAiB;QACjD,MAAM,UAAU,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC,WAAW,CAAW,UAAU,EAAE;YAC7C,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,OAAO,IAAI,CAAC,uBAAuB,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,uBAAuB,CAC3B,OAA4B;QAE5B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE/C,2DAA2D;YAC3D,MAAM,QAAQ,GAAa,MAAM,KAAK,CAAC,+BAA+B,CAAC;gBACrE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9C,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;aACtC,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;gBACtB,MAAM,IAAI,SAAS,CACjB,aAAa,CAAC,aAAa,EAC3B,QAAQ,CAAC,GAAG,EACZ,QAAQ,CACT,CAAC;YACJ,CAAC;YAED,+EAA+E;YAC/E,MAAM,EAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;YAEjD,OAAO;gBACL,OAAO;gBACP,KAAK;gBACL,UAAU;aACX,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CACT,SAAiB,EACjB,OAAe,EACf,UAA+B;QAE/B,IAAI,CAAC;YACH,uCAAuC;YACvC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,kBAAkB,EAAE,CAAC;YACrD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;YAC7D,4DAA4D;YAC5D,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YAElE,kBAAkB;YAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC/C,MAAM,aAAa,GAAa,MAAM,KAAK,CAAC,UAAU,CACpD,SAAS,EACT,OAAO,EACP,eAAe,CAChB,CAAC;YAEF,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;gBAC3B,MAAM,IAAI,SAAS,CACjB,aAAa,CAAC,aAAa,EAC3B,aAAa,CAAC,GAAG,EACjB,aAAa,CACd,CAAC;YACJ,CAAC;YAED,8EAA8E;YAC9E,MAAM,EACJ,cAAc,EAAE,SAAS,EACzB,UAAU,EAAE,eAAe,EAC3B,oBAAoB,EAAE,kBAAkB,GACzC,GAAG,aAAa,CAAC,EAAE,CAAC;YAErB,kDAAkD;YAClD,wDAAwD;YACxD,MAAM,mBAAmB,GACvB,kBAAkB,YAAY,UAAU;gBACtC,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAEzC,mEAAmE;YACnE,MAAM,YAAY,GAChB,eAAe;gBACf,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAE1D,4EAA4E;YAC5E,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,uBAAuB,CACvD,OAAO,EACP,eAAe,EACf,YAAY,CACb,CAAC;YAEF,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;gBAC3B,MAAM,IAAI,SAAS,CACjB,aAAa,CAAC,aAAa,EAC3B,aAAa,CAAC,GAAG,EACjB,aAAa,CACd,CAAC;YACJ,CAAC;YAED,mCAAmC;YACnC,MAAM,kBAAkB,GAAa,MAAM,KAAK,CAAC,mBAAmB,CAClE,OAAO,EACP,eAAe,EACf,YAAY,CACb,CAAC;YAEF,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CACjB,aAAa,CAAC,aAAa,EAC3B,kBAAkB,CAAC,GAAG,EACtB,kBAAkB,CACnB,CAAC;YACJ,CAAC;YAED,iDAAiD;YACjD,MAAM,EAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,EAAC,GAClE,kBAAkB,CAAC,EAAE,CAAC;YAExB,mDAAmD;YACnD,MAAM,cAAc,GAClB,mBAAmB,YAAY,UAAU;gBACvC,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAE1C,wDAAwD;YACxD,yEAAyE;YACzE,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAC/C,gBAAgB,EAChB,cAAc,EACd,mBAAmB,CACpB,CAAC;YAEF,uCAAuC;YACvC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAE9D,6CAA6C;YAC7C,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;YAEZ,kCAAkC;YAClC,MAAM,kBAAkB,GAAuB;gBAC7C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBACjD,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;gBACzD,UAAU,EAAE,YAAY;gBACxB,OAAO;gBACP,cAAc,EAAE,iBAAiB;aAClC,CAAC;YAEF,kBAAkB;YAClB,IAAI,CAAC,QAAQ,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;YAE7D,iCAAiC;YACjC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACpB,eAAe,EACf,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CACnC,CAAC;YACF,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACpB,kBAAkB,EAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CACzC,CAAC;YAEF,kCAAkC;YAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAElB,iCAAiC;YACjC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;YAED,OAAO;gBACL,SAAS;gBACT,OAAO;gBACP,UAAU,EAAE,YAAY;aACzB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,oBAAoB,CAC1B,gBAAkC,EAClC,cAA0B,EAC1B,cAA0B;QAE1B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CACjB,aAAa,CAAC,gBAAgB,EAC9B,0BAA0B,CAC3B,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,gEAAgE;QAChE,MAAM,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,YAAY,UAAU;YAC3C,CAAC,CAAC,gBAAgB,CAAC,MAAM;YACzB,CAAC,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE9C,oDAAoD;QACpD,gDAAgD;QAChD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,0CAA0C;QACvF,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,gBAAgB,EAChB,gBAAgB,CAAC,UAAU,EAC3B,OAAO,CACR,CAAC;QAEF,2BAA2B;QAC3B,sDAAsD;QACtD,oEAAoE;QACpE,EAAE;QACF,qEAAqE;QACrE,uDAAuD;QACvD,OAAO,eAAe,CAAC,eAAe,CACpC;YACE;gBACE,UAAU;gBACV,SAAS,EAAE,cAA2B;aACvC;SACF,EACD,cAAyE,CAC1E,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtC,4DAA4D;QAC5D,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAChC,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,CACvD,CAAC;QAEF,8DAA8D;QAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;YAC/B,4DAA4D;YAC5D,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iCAAiC;QACjC,MAAM,mBAAmB,GAAG,IAAI,UAAU,CACxC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,EAAE,CACL,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE/C,qBAAqB;YACrB,MAAM,YAAY,GAChB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAE1D,4EAA4E;YAC5E,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,uBAAuB,CACvD,OAAO,EACP,eAAe,EACf,YAAY,CACb,CAAC;YAEF,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;gBAC3B,6CAA6C;gBAC7C,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,mCAAmC;YACnC,MAAM,kBAAkB,GAAa,MAAM,KAAK,CAAC,mBAAmB,CAClE,OAAO,EACP,eAAe,EACf,YAAY,CACb,CAAC;YAEF,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;gBAChC,6CAA6C;gBAC7C,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,EAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,EAAC,GAClE,kBAAkB,CAAC,EAAE,CAAC;YAExB,MAAM,cAAc,GAClB,mBAAmB,YAAY,UAAU;gBACvC,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAE1C,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAC/C,gBAAgB,EAChB,cAAc,EACd,mBAAmB,CACpB,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAE9D,MAAM,kBAAkB,GAAuB;gBAC7C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBACjD,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;gBACzD,UAAU,EAAE,YAAY;gBACxB,OAAO;gBACP,cAAc,EAAE,UAAU,CAAC,cAAc;aAC1C,CAAC;YAEF,IAAI,CAAC,QAAQ,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACpB,eAAe,EACf,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CACnC,CAAC;YAEF,cAAc;YACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAElB,qBAAqB;YACrB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;gBACvC,OAAO;gBACP,UAAU,EAAE,YAAY;aACzB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iCAAiC;YACjC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,uBAAuB;QACvB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,gBAAgB,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEzE,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;oBAClC,qDAAqD;gBACvD,CAAC,CAAC,CAAC;YACL,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,eAAe,CACnB,YAGC,EACD,OAAyC;QAEzC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;QAE7C,iDAAiD;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC;YAClD,OAAO;YACP,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,GAAG,EAAE,OAAO,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,2BAA2B;QAC3B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;YAC/C,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC,CAAC;QAEH,iBAAiB;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,sBAAsB;QACtB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;gBAClC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,EAAyB;aAClE,CAAC,CAAC;YAEH,gDAAgD;YAChD,IACE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC5B,CAAC;gBACD,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAClC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,UAA8B,EAC9B,UAAmB;QAEnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,WAAW,CAAC,UAAmB,EAAE;YAC5C,KAAK;YACL,UAAU,EACR,OAAO,UAAU,KAAK,QAAQ;gBAC5B,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAChC,CAAC,CAAC,UAAU;SACjB,CAAM,CAAC;IACV,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
export { SiwaClient, type SiwaClientOptions } from "./client";
|
|
26
26
|
export { SiwaError, SiwaErrorCode } from "./errors";
|
|
27
27
|
export { type SiwaIdentity, type SerializedIdentity, createSiwaIdentity, generateSessionKey, } from "./identity";
|
|
28
|
-
export { type StorageProvider, LocalStorageProvider, MemoryStorageProvider, } from "./storage";
|
|
28
|
+
export { type StorageProvider, LocalStorageProvider, SessionStorageProvider, MemoryStorageProvider, } from "./storage";
|
|
29
29
|
export type { PreparedLogin, LoginResult, SignedDelegation, SiwaMessage, WalletClient, PrepareLoginOptions, } from "./types";
|
|
30
30
|
export { idlFactory as siwaProviderIdlFactory, type _SERVICE as SiwaProviderService, type InitArgs as SiwaProviderInitArgs, } from "./candid";
|
|
31
|
-
export declare const VERSION = "0.
|
|
31
|
+
export declare const VERSION = "0.2.0";
|
|
32
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAC,UAAU,EAAE,KAAK,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,UAAU,IAAI,sBAAsB,EACpC,KAAK,QAAQ,IAAI,mBAAmB,EACpC,KAAK,QAAQ,IAAI,oBAAoB,GACtC,MAAM,UAAU,CAAC;AAGlB,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAC,UAAU,EAAE,KAAK,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,UAAU,IAAI,sBAAsB,EACpC,KAAK,QAAQ,IAAI,mBAAmB,EACpC,KAAK,QAAQ,IAAI,oBAAoB,GACtC,MAAM,UAAU,CAAC;AAGlB,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
export { SiwaClient } from "./client";
|
|
26
26
|
export { SiwaError, SiwaErrorCode } from "./errors";
|
|
27
27
|
export { createSiwaIdentity, generateSessionKey, } from "./identity";
|
|
28
|
-
export { LocalStorageProvider, MemoryStorageProvider, } from "./storage";
|
|
28
|
+
export { LocalStorageProvider, SessionStorageProvider, MemoryStorageProvider, } from "./storage";
|
|
29
29
|
// Candid types (for advanced usage)
|
|
30
30
|
export { idlFactory as siwaProviderIdlFactory, } from "./candid";
|
|
31
31
|
// Version
|
|
32
|
-
export const VERSION = "0.
|
|
32
|
+
export const VERSION = "0.2.0";
|
|
33
33
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAC,UAAU,EAAyB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EAGL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAUnB,oCAAoC;AACpC,OAAO,EACL,UAAU,IAAI,sBAAsB,GAGrC,MAAM,UAAU,CAAC;AAElB,UAAU;AACV,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAC,UAAU,EAAyB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EAGL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAUnB,oCAAoC;AACpC,OAAO,EACL,UAAU,IAAI,sBAAsB,GAGrC,MAAM,UAAU,CAAC;AAElB,UAAU;AACV,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -17,7 +17,25 @@ export interface StorageProvider {
|
|
|
17
17
|
*/
|
|
18
18
|
export declare class LocalStorageProvider implements StorageProvider {
|
|
19
19
|
private prefix;
|
|
20
|
+
private warned;
|
|
20
21
|
constructor(prefix?: string);
|
|
22
|
+
private warnIfUnavailable;
|
|
23
|
+
get(key: string): Promise<string | null>;
|
|
24
|
+
set(key: string, value: string): Promise<void>;
|
|
25
|
+
remove(key: string): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* SessionStorage-based storage provider (browser)
|
|
29
|
+
*
|
|
30
|
+
* Uses sessionStorage which is cleared when the browser tab is closed.
|
|
31
|
+
* This is more secure than localStorage for storing session keys since
|
|
32
|
+
* sensitive key material does not persist beyond the browser session.
|
|
33
|
+
*/
|
|
34
|
+
export declare class SessionStorageProvider implements StorageProvider {
|
|
35
|
+
private prefix;
|
|
36
|
+
private warned;
|
|
37
|
+
constructor(prefix?: string);
|
|
38
|
+
private warnIfUnavailable;
|
|
21
39
|
get(key: string): Promise<string | null>;
|
|
22
40
|
set(key: string, value: string): Promise<void>;
|
|
23
41
|
remove(key: string): Promise<void>;
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,4BAA4B;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,SAAa;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,4BAA4B;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,SAAa;IAI/B,OAAO,CAAC,iBAAiB;IAcnB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzC;AAED;;;;;;GAMG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,SAAa;IAI/B,OAAO,CAAC,iBAAiB;IAcnB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzC;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,OAAO,CAAC,OAAO,CAA6B;IAEtC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,8BAA8B;IAC9B,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/storage.js
CHANGED
|
@@ -6,28 +6,77 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export class LocalStorageProvider {
|
|
8
8
|
prefix;
|
|
9
|
+
warned = false;
|
|
9
10
|
constructor(prefix = "ic_siwa_") {
|
|
10
11
|
this.prefix = prefix;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
+
warnIfUnavailable() {
|
|
13
14
|
if (typeof localStorage === "undefined") {
|
|
14
|
-
|
|
15
|
+
if (!this.warned) {
|
|
16
|
+
console.warn("[ic-siwa] localStorage is not available. Session will not persist. " +
|
|
17
|
+
"Use MemoryStorageProvider or a custom StorageProvider for non-browser environments.");
|
|
18
|
+
this.warned = true;
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
15
21
|
}
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
async get(key) {
|
|
25
|
+
if (this.warnIfUnavailable())
|
|
26
|
+
return null;
|
|
16
27
|
return localStorage.getItem(this.prefix + key);
|
|
17
28
|
}
|
|
18
29
|
async set(key, value) {
|
|
19
|
-
if (
|
|
30
|
+
if (this.warnIfUnavailable())
|
|
20
31
|
return;
|
|
21
|
-
}
|
|
22
32
|
localStorage.setItem(this.prefix + key, value);
|
|
23
33
|
}
|
|
24
34
|
async remove(key) {
|
|
25
|
-
if (
|
|
35
|
+
if (this.warnIfUnavailable())
|
|
26
36
|
return;
|
|
27
|
-
}
|
|
28
37
|
localStorage.removeItem(this.prefix + key);
|
|
29
38
|
}
|
|
30
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* SessionStorage-based storage provider (browser)
|
|
42
|
+
*
|
|
43
|
+
* Uses sessionStorage which is cleared when the browser tab is closed.
|
|
44
|
+
* This is more secure than localStorage for storing session keys since
|
|
45
|
+
* sensitive key material does not persist beyond the browser session.
|
|
46
|
+
*/
|
|
47
|
+
export class SessionStorageProvider {
|
|
48
|
+
prefix;
|
|
49
|
+
warned = false;
|
|
50
|
+
constructor(prefix = "ic_siwa_") {
|
|
51
|
+
this.prefix = prefix;
|
|
52
|
+
}
|
|
53
|
+
warnIfUnavailable() {
|
|
54
|
+
if (typeof sessionStorage === "undefined") {
|
|
55
|
+
if (!this.warned) {
|
|
56
|
+
console.warn("[ic-siwa] sessionStorage is not available. Session will not persist. " +
|
|
57
|
+
"Use MemoryStorageProvider or a custom StorageProvider for non-browser environments.");
|
|
58
|
+
this.warned = true;
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
async get(key) {
|
|
65
|
+
if (this.warnIfUnavailable())
|
|
66
|
+
return null;
|
|
67
|
+
return sessionStorage.getItem(this.prefix + key);
|
|
68
|
+
}
|
|
69
|
+
async set(key, value) {
|
|
70
|
+
if (this.warnIfUnavailable())
|
|
71
|
+
return;
|
|
72
|
+
sessionStorage.setItem(this.prefix + key, value);
|
|
73
|
+
}
|
|
74
|
+
async remove(key) {
|
|
75
|
+
if (this.warnIfUnavailable())
|
|
76
|
+
return;
|
|
77
|
+
sessionStorage.removeItem(this.prefix + key);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
31
80
|
/**
|
|
32
81
|
* In-memory storage provider (for testing or SSR)
|
|
33
82
|
*/
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAS;IAEvB,YAAY,MAAM,GAAG,UAAU;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ic-siwa",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Sign in with Avalanche for the Internet Computer",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"@dfinity/principal": "3.4.3"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@types/bun": "1.3.
|
|
57
|
-
"eslint": "
|
|
56
|
+
"@types/bun": "1.3.9",
|
|
57
|
+
"eslint": "10.0.0",
|
|
58
58
|
"prettier": "3.8.1",
|
|
59
59
|
"typescript": "5.9.3"
|
|
60
60
|
},
|
|
@@ -303,6 +303,10 @@ const btnClasses = ["btn", variantClass, sizeClass, styleClass, className]
|
|
|
303
303
|
|
|
304
304
|
const address = accounts[0] as string;
|
|
305
305
|
|
|
306
|
+
if (!address || !address.startsWith("0x") || address.length !== 42) {
|
|
307
|
+
throw new Error("Wallet returned an invalid address. Please try again.");
|
|
308
|
+
}
|
|
309
|
+
|
|
306
310
|
// Prepare login message
|
|
307
311
|
const prepared = await client.prepareLogin(address);
|
|
308
312
|
|