@calimero-network/mero-js 1.0.2 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +341 -319
- package/dist/api/admin/aliases.d.ts +54 -0
- package/dist/api/admin/aliases.d.ts.map +1 -0
- package/dist/api/admin/aliases.js +43 -0
- package/dist/api/admin/aliases.js.map +1 -0
- package/dist/api/admin/applications.d.ts +52 -0
- package/dist/api/admin/applications.d.ts.map +1 -0
- package/dist/api/admin/applications.js +31 -0
- package/dist/api/admin/applications.js.map +1 -0
- package/dist/api/admin/blobs.d.ts +24 -0
- package/dist/api/admin/blobs.d.ts.map +1 -0
- package/dist/api/admin/blobs.js +58 -0
- package/dist/api/admin/blobs.js.map +1 -0
- package/dist/api/admin/capabilities.d.ts +26 -0
- package/dist/api/admin/capabilities.d.ts.map +1 -0
- package/dist/api/admin/capabilities.js +13 -0
- package/dist/api/admin/capabilities.js.map +1 -0
- package/dist/api/admin/client.d.ts +63 -0
- package/dist/api/admin/client.d.ts.map +1 -0
- package/dist/api/admin/client.js +103 -0
- package/dist/api/admin/client.js.map +1 -0
- package/dist/api/admin/contexts.d.ts +110 -0
- package/dist/api/admin/contexts.d.ts.map +1 -0
- package/dist/api/admin/contexts.js +61 -0
- package/dist/api/admin/contexts.js.map +1 -0
- package/dist/api/admin/factory.d.ts +4 -0
- package/dist/api/admin/factory.d.ts.map +1 -0
- package/dist/api/admin/factory.js +5 -0
- package/dist/api/admin/factory.js.map +1 -0
- package/dist/api/admin/identity.d.ts +10 -0
- package/dist/api/admin/identity.d.ts.map +1 -0
- package/dist/api/admin/identity.js +10 -0
- package/dist/api/admin/identity.js.map +1 -0
- package/dist/api/admin/index.d.ts +23 -0
- package/dist/api/admin/index.d.ts.map +1 -0
- package/dist/api/admin/index.js +26 -0
- package/dist/api/admin/index.js.map +1 -0
- package/dist/api/admin/network.d.ts +10 -0
- package/dist/api/admin/network.d.ts.map +1 -0
- package/dist/api/admin/network.js +9 -0
- package/dist/api/admin/network.js.map +1 -0
- package/dist/api/admin/proposals.d.ts +49 -0
- package/dist/api/admin/proposals.d.ts.map +1 -0
- package/dist/api/admin/proposals.js +34 -0
- package/dist/api/admin/proposals.js.map +1 -0
- package/dist/api/admin/public.d.ts +15 -0
- package/dist/api/admin/public.d.ts.map +1 -0
- package/dist/api/admin/public.js +18 -0
- package/dist/api/admin/public.js.map +1 -0
- package/dist/api/admin/tee.d.ts +74 -0
- package/dist/api/admin/tee.d.ts.map +1 -0
- package/dist/api/admin/tee.js +16 -0
- package/dist/api/admin/tee.js.map +1 -0
- package/dist/api/auth/client.d.ts +55 -0
- package/dist/api/auth/client.d.ts.map +1 -0
- package/dist/api/auth/client.js +127 -0
- package/dist/api/auth/client.js.map +1 -0
- package/dist/api/auth/factory.d.ts +4 -0
- package/dist/api/auth/factory.d.ts.map +1 -0
- package/dist/api/auth/factory.js +5 -0
- package/dist/api/auth/factory.js.map +1 -0
- package/dist/api/auth/index.d.ts +4 -0
- package/dist/api/auth/index.d.ts.map +1 -0
- package/dist/api/auth/index.js +4 -0
- package/dist/api/auth/index.js.map +1 -0
- package/dist/api/auth/types.d.ts +94 -0
- package/dist/api/auth/types.d.ts.map +1 -0
- package/dist/api/auth/types.js +4 -0
- package/dist/api/auth/types.js.map +1 -0
- package/dist/api/index.d.ts +15 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +18 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/rpc/client.d.ts +76 -0
- package/dist/api/rpc/client.d.ts.map +1 -0
- package/dist/api/rpc/client.js +126 -0
- package/dist/api/rpc/client.js.map +1 -0
- package/dist/api/rpc/index.d.ts +3 -0
- package/dist/api/rpc/index.d.ts.map +1 -0
- package/dist/api/rpc/index.js +2 -0
- package/dist/api/rpc/index.js.map +1 -0
- package/dist/api/rpc/types.d.ts +74 -0
- package/dist/api/rpc/types.d.ts.map +1 -0
- package/dist/api/rpc/types.js +6 -0
- package/dist/api/rpc/types.js.map +1 -0
- package/dist/api/sse/client.d.ts +76 -0
- package/dist/api/sse/client.d.ts.map +1 -0
- package/dist/api/sse/client.js +203 -0
- package/dist/api/sse/client.js.map +1 -0
- package/dist/api/sse/index.d.ts +4 -0
- package/dist/api/sse/index.d.ts.map +1 -0
- package/dist/api/sse/index.js +2 -0
- package/dist/api/sse/index.js.map +1 -0
- package/dist/api/sse/types.d.ts +35 -0
- package/dist/api/sse/types.d.ts.map +1 -0
- package/dist/api/sse/types.js +6 -0
- package/dist/api/sse/types.js.map +1 -0
- package/dist/api/utils.d.ts +68 -0
- package/dist/api/utils.d.ts.map +1 -0
- package/dist/api/utils.js +83 -0
- package/dist/api/utils.js.map +1 -0
- package/dist/api/ws/client.d.ts +72 -0
- package/dist/api/ws/client.d.ts.map +1 -0
- package/dist/api/ws/client.js +202 -0
- package/dist/api/ws/client.js.map +1 -0
- package/dist/api/ws/index.d.ts +4 -0
- package/dist/api/ws/index.d.ts.map +1 -0
- package/dist/api/ws/index.js +2 -0
- package/dist/api/ws/index.js.map +1 -0
- package/dist/api/ws/types.d.ts +32 -0
- package/dist/api/ws/types.d.ts.map +1 -0
- package/dist/api/ws/types.js +6 -0
- package/dist/api/ws/types.js.map +1 -0
- package/dist/http-client/http-factory.d.ts +18 -0
- package/dist/http-client/http-factory.d.ts.map +1 -1
- package/dist/http-client/http-factory.js +2 -0
- package/dist/http-client/http-factory.js.map +1 -1
- package/dist/http-client/http-types.d.ts +6 -0
- package/dist/http-client/http-types.d.ts.map +1 -1
- package/dist/http-client/index.d.ts +1 -1
- package/dist/http-client/index.d.ts.map +1 -1
- package/dist/http-client/index.js +2 -1
- package/dist/http-client/index.js.map +1 -1
- package/dist/http-client/web-client.d.ts +5 -3
- package/dist/http-client/web-client.d.ts.map +1 -1
- package/dist/http-client/web-client.js +142 -59
- package/dist/http-client/web-client.js.map +1 -1
- package/dist/index.browser.mjs +1 -1
- package/dist/index.browser.mjs.map +4 -4
- package/dist/index.cjs +1669 -341
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1675 -341
- package/dist/index.mjs.map +4 -4
- package/dist/mero-js.d.ts +198 -7
- package/dist/mero-js.d.ts.map +1 -1
- package/dist/mero-js.js +329 -38
- package/dist/mero-js.js.map +1 -1
- package/package.json +42 -7
- package/dist/admin-api/admin-client.d.ts +0 -38
- package/dist/admin-api/admin-client.d.ts.map +0 -1
- package/dist/admin-api/admin-client.js +0 -104
- package/dist/admin-api/admin-client.js.map +0 -1
- package/dist/admin-api/admin-factory.d.ts +0 -8
- package/dist/admin-api/admin-factory.d.ts.map +0 -1
- package/dist/admin-api/admin-factory.js +0 -42
- package/dist/admin-api/admin-factory.js.map +0 -1
- package/dist/admin-api/admin-types.d.ts +0 -213
- package/dist/admin-api/admin-types.d.ts.map +0 -1
- package/dist/admin-api/admin-types.js +0 -3
- package/dist/admin-api/admin-types.js.map +0 -1
- package/dist/admin-api/index.d.ts +0 -4
- package/dist/admin-api/index.d.ts.map +0 -1
- package/dist/admin-api/index.js +0 -5
- package/dist/admin-api/index.js.map +0 -1
- package/dist/auth-api/auth-client.d.ts +0 -34
- package/dist/auth-api/auth-client.d.ts.map +0 -1
- package/dist/auth-api/auth-client.js +0 -112
- package/dist/auth-api/auth-client.js.map +0 -1
- package/dist/auth-api/auth-factory.d.ts +0 -8
- package/dist/auth-api/auth-factory.d.ts.map +0 -1
- package/dist/auth-api/auth-factory.js +0 -42
- package/dist/auth-api/auth-factory.js.map +0 -1
- package/dist/auth-api/auth-types.d.ts +0 -127
- package/dist/auth-api/auth-types.d.ts.map +0 -1
- package/dist/auth-api/auth-types.js +0 -3
- package/dist/auth-api/auth-types.js.map +0 -1
- package/dist/auth-api/index.d.ts +0 -4
- package/dist/auth-api/index.d.ts.map +0 -1
- package/dist/auth-api/index.js +0 -5
- package/dist/auth-api/index.js.map +0 -1
- package/dist/http-client/api-response.d.ts +0 -16
- package/dist/http-client/api-response.d.ts.map +0 -1
- package/dist/http-client/api-response.js +0 -2
- package/dist/http-client/api-response.js.map +0 -1
package/dist/mero-js.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { createBrowserHttpClient } from './http-client';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { createAuthApiClient } from './api/auth';
|
|
3
|
+
import { createAdminApiClient } from './api/admin';
|
|
4
|
+
import { RpcClient } from './api/rpc';
|
|
5
|
+
import { WebSocketClient } from './api/ws';
|
|
6
|
+
import { SseClient } from './api/sse';
|
|
4
7
|
/**
|
|
5
8
|
* Main MeroJs SDK class that manages all API clients and authentication
|
|
6
9
|
*/
|
|
@@ -8,40 +11,91 @@ export class MeroJs {
|
|
|
8
11
|
constructor(config) {
|
|
9
12
|
this.tokenData = null;
|
|
10
13
|
this.refreshPromise = null;
|
|
14
|
+
this.tokenStorage = null;
|
|
11
15
|
this.config = {
|
|
12
16
|
timeoutMs: 10000,
|
|
13
17
|
...config,
|
|
14
18
|
};
|
|
19
|
+
this.tokenStorage = config.tokenStorage || null;
|
|
15
20
|
// Create HTTP client with token management
|
|
16
21
|
// For Tauri, explicitly set credentials to 'omit' to avoid network errors
|
|
17
22
|
const isTauri = typeof window !== 'undefined' && '__TAURI_INTERNALS__' in window;
|
|
23
|
+
// Determine auth base URL and whether we need separate HTTP clients
|
|
24
|
+
const authBaseUrl = this.config.authBaseUrl ?? this.config.baseUrl;
|
|
25
|
+
const isEmbedded = authBaseUrl === this.config.baseUrl;
|
|
26
|
+
// Create admin HTTP client (always uses baseUrl) with automatic 401 refresh
|
|
18
27
|
this.httpClient = createBrowserHttpClient({
|
|
19
28
|
baseUrl: this.config.baseUrl,
|
|
20
29
|
getAuthToken: async () => {
|
|
21
30
|
const token = await this.getValidToken();
|
|
22
31
|
return token?.access_token || '';
|
|
23
32
|
},
|
|
33
|
+
// Wire up automatic token refresh on 401
|
|
34
|
+
refreshToken: async () => {
|
|
35
|
+
const refreshed = await this.performTokenRefresh();
|
|
36
|
+
return refreshed.access_token;
|
|
37
|
+
},
|
|
38
|
+
onTokenRefresh: async (_newToken) => {
|
|
39
|
+
// Token is already updated in performTokenRefresh, but we need
|
|
40
|
+
// to ensure storage is updated if provided
|
|
41
|
+
if (this.tokenData && this.tokenStorage) {
|
|
42
|
+
await this.tokenStorage.set(this.tokenData);
|
|
43
|
+
}
|
|
44
|
+
},
|
|
24
45
|
timeoutMs: this.config.timeoutMs,
|
|
25
46
|
credentials: this.config.requestCredentials ?? (isTauri ? 'omit' : undefined),
|
|
26
47
|
});
|
|
27
|
-
// Create
|
|
28
|
-
|
|
29
|
-
|
|
48
|
+
// Create auth HTTP client (uses authBaseUrl when different from baseUrl)
|
|
49
|
+
// IMPORTANT: Auth client does NOT have refreshToken wired up to prevent infinite loops
|
|
50
|
+
// when the refresh endpoint itself returns 401
|
|
51
|
+
const authHttpClient = createBrowserHttpClient({
|
|
52
|
+
baseUrl: authBaseUrl,
|
|
30
53
|
getAuthToken: async () => {
|
|
31
54
|
const token = await this.getValidToken();
|
|
32
55
|
return token?.access_token || '';
|
|
33
56
|
},
|
|
57
|
+
// NO refreshToken callback - auth endpoints handle their own auth
|
|
58
|
+
// Wiring refreshToken here would cause infinite loops when refresh fails
|
|
34
59
|
timeoutMs: this.config.timeoutMs,
|
|
60
|
+
credentials: this.config.requestCredentials ?? (isTauri ? 'omit' : undefined),
|
|
35
61
|
});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return token?.access_token || '';
|
|
41
|
-
},
|
|
42
|
-
timeoutMs: this.config.timeoutMs,
|
|
62
|
+
// Create API clients
|
|
63
|
+
this.authClient = createAuthApiClient(authHttpClient, {
|
|
64
|
+
baseUrl: authBaseUrl,
|
|
65
|
+
embedded: isEmbedded,
|
|
43
66
|
});
|
|
44
|
-
|
|
67
|
+
this.adminClient = createAdminApiClient(this.httpClient);
|
|
68
|
+
// Create RPC client for executing queries/mutations
|
|
69
|
+
this.rpcClient = new RpcClient(this.httpClient);
|
|
70
|
+
// Token management is in-memory by default, or uses provided storage
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Initialize the SDK by loading tokens from storage (if provided).
|
|
74
|
+
* Call this after construction if using tokenStorage.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const mero = new MeroJs({ baseUrl: '...', tokenStorage: myStorage });
|
|
79
|
+
* await mero.init(); // Load stored tokens
|
|
80
|
+
*
|
|
81
|
+
* if (!mero.isAuthenticated()) {
|
|
82
|
+
* await mero.authenticate({ username: '...', password: '...' });
|
|
83
|
+
* }
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
async init() {
|
|
87
|
+
console.log('[mero-js] init() called, tokenStorage:', this.tokenStorage ? 'EXISTS' : 'NULL');
|
|
88
|
+
if (this.tokenStorage) {
|
|
89
|
+
const storedToken = await this.tokenStorage.get();
|
|
90
|
+
console.log('[mero-js] init() storedToken:', storedToken ? 'LOADED' : 'NULL');
|
|
91
|
+
if (storedToken) {
|
|
92
|
+
this.tokenData = storedToken;
|
|
93
|
+
console.log('[mero-js] init() tokenData set, expires_at:', storedToken.expires_at);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.log('[mero-js] init() no tokenStorage configured');
|
|
98
|
+
}
|
|
45
99
|
}
|
|
46
100
|
/**
|
|
47
101
|
* Get the Auth API client
|
|
@@ -55,6 +109,39 @@ export class MeroJs {
|
|
|
55
109
|
get admin() {
|
|
56
110
|
return this.adminClient;
|
|
57
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Get the RPC client for executing queries and mutations
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* // Execute a query
|
|
118
|
+
* const result = await meroJs.rpc.query(
|
|
119
|
+
* 'context-id',
|
|
120
|
+
* 'get',
|
|
121
|
+
* { key: 'myKey' },
|
|
122
|
+
* 'ed25519:executor-public-key'
|
|
123
|
+
* );
|
|
124
|
+
*
|
|
125
|
+
* // Execute a mutation
|
|
126
|
+
* await meroJs.rpc.mutate(
|
|
127
|
+
* 'context-id',
|
|
128
|
+
* 'set',
|
|
129
|
+
* { key: 'myKey', value: 'myValue' },
|
|
130
|
+
* 'ed25519:executor-public-key'
|
|
131
|
+
* );
|
|
132
|
+
*
|
|
133
|
+
* // Or use the generic execute method
|
|
134
|
+
* const result = await meroJs.rpc.execute({
|
|
135
|
+
* contextId: 'context-id',
|
|
136
|
+
* method: 'set',
|
|
137
|
+
* args: { key: 'myKey', value: 'myValue' },
|
|
138
|
+
* executorPublicKey: 'ed25519:...',
|
|
139
|
+
* });
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
get rpc() {
|
|
143
|
+
return this.rpcClient;
|
|
144
|
+
}
|
|
58
145
|
/**
|
|
59
146
|
* Authenticate with the provided credentials
|
|
60
147
|
* This will create the root key on first use
|
|
@@ -65,6 +152,7 @@ export class MeroJs {
|
|
|
65
152
|
throw new Error('No credentials provided for authentication');
|
|
66
153
|
}
|
|
67
154
|
try {
|
|
155
|
+
// Note: Auth API expects snake_case, not camelCase (despite OpenAPI spec showing camelCase)
|
|
68
156
|
const requestBody = {
|
|
69
157
|
auth_method: 'user_password',
|
|
70
158
|
public_key: creds.username,
|
|
@@ -76,44 +164,95 @@ export class MeroJs {
|
|
|
76
164
|
password: creds.password,
|
|
77
165
|
},
|
|
78
166
|
};
|
|
79
|
-
const response = await this.authClient.
|
|
167
|
+
const response = await this.authClient.getToken(requestBody);
|
|
168
|
+
// Extract expiry from JWT (more reliable than response.expires_in)
|
|
169
|
+
let expiresAt;
|
|
170
|
+
try {
|
|
171
|
+
const payload = JSON.parse(atob(response.access_token.split('.')[1]));
|
|
172
|
+
expiresAt = payload.exp * 1000; // JWT exp is in seconds, convert to ms
|
|
173
|
+
console.log('[mero-js] Extracted exp from JWT:', payload.exp, '-> expires_at:', expiresAt);
|
|
174
|
+
}
|
|
175
|
+
catch (e) {
|
|
176
|
+
// Fallback to response.expires_in if JWT parsing fails
|
|
177
|
+
expiresAt = Date.now() + (response.expires_in || 3600) * 1000;
|
|
178
|
+
console.warn('[mero-js] Failed to parse JWT, using expires_in fallback:', expiresAt);
|
|
179
|
+
}
|
|
80
180
|
this.tokenData = {
|
|
81
|
-
access_token: response.
|
|
82
|
-
refresh_token: response.
|
|
83
|
-
expires_at:
|
|
181
|
+
access_token: response.access_token,
|
|
182
|
+
refresh_token: response.refresh_token,
|
|
183
|
+
expires_at: expiresAt,
|
|
84
184
|
};
|
|
185
|
+
// Persist to storage if provided
|
|
186
|
+
if (this.tokenStorage) {
|
|
187
|
+
await this.tokenStorage.set(this.tokenData);
|
|
188
|
+
}
|
|
85
189
|
return this.tokenData;
|
|
86
190
|
}
|
|
87
191
|
catch (error) {
|
|
88
|
-
|
|
192
|
+
// Include HTTP error details if available
|
|
193
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
194
|
+
const httpStatus = error && typeof error === 'object' && 'status' in error
|
|
195
|
+
? `HTTP ${String(error.status)}`
|
|
196
|
+
: '';
|
|
197
|
+
const httpStatusText = error && typeof error === 'object' && 'statusText' in error
|
|
198
|
+
? ` ${String(error.statusText)}`
|
|
199
|
+
: '';
|
|
200
|
+
const bodyText = error && typeof error === 'object' && 'bodyText' in error
|
|
201
|
+
? `: ${String(error.bodyText)}`
|
|
202
|
+
: '';
|
|
203
|
+
throw new Error(`Authentication failed: ${httpStatus}${httpStatusText}${bodyText || errorMessage}`);
|
|
89
204
|
}
|
|
90
205
|
}
|
|
91
206
|
/**
|
|
92
|
-
* Get a valid token, refreshing if necessary
|
|
207
|
+
* Get a valid token, refreshing if necessary.
|
|
208
|
+
* This is called automatically by the HTTP client.
|
|
209
|
+
*
|
|
210
|
+
* Note: The HTTP client also handles 401 errors with automatic refresh,
|
|
211
|
+
* so this preemptive check is an optimization to avoid unnecessary 401s.
|
|
93
212
|
*/
|
|
94
213
|
async getValidToken() {
|
|
214
|
+
console.log('[mero-js] getValidToken called, tokenData:', this.tokenData ? 'EXISTS' : 'NULL');
|
|
95
215
|
if (!this.tokenData) {
|
|
216
|
+
console.log('[mero-js] No tokenData, returning null');
|
|
96
217
|
return null;
|
|
97
218
|
}
|
|
98
|
-
// Check if token is expired
|
|
99
|
-
const
|
|
100
|
-
|
|
219
|
+
// Check if token is actually expired
|
|
220
|
+
const now = Date.now();
|
|
221
|
+
const expiresAt = this.tokenData.expires_at;
|
|
222
|
+
const isExpired = now >= expiresAt;
|
|
223
|
+
console.log('[mero-js] Token check: now=', now, 'expires_at=', expiresAt, 'isExpired=', isExpired);
|
|
224
|
+
if (isExpired) {
|
|
225
|
+
console.log('[mero-js] Token expired, attempting preemptive refresh');
|
|
101
226
|
return await this.refreshToken();
|
|
102
227
|
}
|
|
228
|
+
console.log('[mero-js] Token valid, returning tokenData');
|
|
103
229
|
return this.tokenData;
|
|
104
230
|
}
|
|
105
231
|
/**
|
|
106
|
-
* Refresh the access token using the refresh token
|
|
232
|
+
* Refresh the access token using the refresh token.
|
|
233
|
+
* Called automatically when token is about to expire or on 401.
|
|
234
|
+
*
|
|
235
|
+
* @deprecated Use performTokenRefresh instead - this is kept for compatibility
|
|
107
236
|
*/
|
|
108
237
|
async refreshToken() {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
238
|
+
return this.performTokenRefresh();
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Perform the actual token refresh.
|
|
242
|
+
* This is used by both preemptive refresh and HTTP client's 401 handler.
|
|
243
|
+
*
|
|
244
|
+
* Uses a shared promise to prevent multiple simultaneous refresh attempts,
|
|
245
|
+
* even when called from multiple sources (preemptive check, HTTP 401 handler, etc.)
|
|
246
|
+
*/
|
|
247
|
+
async performTokenRefresh() {
|
|
112
248
|
// Prevent multiple simultaneous refresh attempts
|
|
249
|
+
// This is critical for avoiding 100+ refresh requests when multiple 401s come in
|
|
113
250
|
if (this.refreshPromise) {
|
|
251
|
+
console.log('[mero-js] Refresh already in progress, waiting for existing promise');
|
|
114
252
|
return this.refreshPromise;
|
|
115
253
|
}
|
|
116
|
-
|
|
254
|
+
console.log('[mero-js] Starting new refresh attempt');
|
|
255
|
+
this.refreshPromise = this.doTokenRefresh();
|
|
117
256
|
try {
|
|
118
257
|
const newToken = await this.refreshPromise;
|
|
119
258
|
return newToken;
|
|
@@ -123,35 +262,101 @@ export class MeroJs {
|
|
|
123
262
|
}
|
|
124
263
|
}
|
|
125
264
|
/**
|
|
126
|
-
*
|
|
265
|
+
* Internal: Actually perform the refresh request.
|
|
266
|
+
* Called only from performTokenRefresh() which manages the deduplication.
|
|
127
267
|
*/
|
|
128
|
-
async
|
|
268
|
+
async doTokenRefresh() {
|
|
269
|
+
console.log('[mero-js doTokenRefresh] STARTING refresh...');
|
|
270
|
+
console.log('[mero-js doTokenRefresh] tokenData exists:', !!this.tokenData);
|
|
271
|
+
console.log('[mero-js doTokenRefresh] access_token exists:', !!this.tokenData?.access_token);
|
|
272
|
+
console.log('[mero-js doTokenRefresh] refresh_token exists:', !!this.tokenData?.refresh_token);
|
|
129
273
|
if (!this.tokenData?.refresh_token) {
|
|
130
274
|
throw new Error('No refresh token available');
|
|
131
275
|
}
|
|
276
|
+
if (!this.tokenData?.access_token) {
|
|
277
|
+
throw new Error('No access token available for refresh (server requires both tokens)');
|
|
278
|
+
}
|
|
132
279
|
try {
|
|
133
|
-
|
|
280
|
+
// Server requires BOTH access_token and refresh_token (snake_case)
|
|
281
|
+
const refreshPayload = {
|
|
134
282
|
access_token: this.tokenData.access_token,
|
|
135
283
|
refresh_token: this.tokenData.refresh_token,
|
|
136
|
-
}
|
|
284
|
+
};
|
|
285
|
+
console.log('[mero-js doTokenRefresh] Payload keys:', Object.keys(refreshPayload));
|
|
286
|
+
console.log('[mero-js doTokenRefresh] access_token length:', refreshPayload.access_token?.length);
|
|
287
|
+
console.log('[mero-js doTokenRefresh] refresh_token length:', refreshPayload.refresh_token?.length);
|
|
288
|
+
const response = await this.authClient.refreshToken(refreshPayload);
|
|
289
|
+
// Extract expiry from JWT (more reliable than response.expires_in)
|
|
290
|
+
let expiresAt;
|
|
291
|
+
try {
|
|
292
|
+
const payload = JSON.parse(atob(response.access_token.split('.')[1]));
|
|
293
|
+
expiresAt = payload.exp * 1000; // JWT exp is in seconds, convert to ms
|
|
294
|
+
console.log('[mero-js] Extracted exp from JWT:', payload.exp, '-> expires_at:', expiresAt);
|
|
295
|
+
}
|
|
296
|
+
catch (e) {
|
|
297
|
+
// Fallback to response.expires_in if JWT parsing fails
|
|
298
|
+
expiresAt = Date.now() + (response.expires_in || 3600) * 1000;
|
|
299
|
+
console.warn('[mero-js] Failed to parse JWT, using expires_in fallback:', expiresAt);
|
|
300
|
+
}
|
|
137
301
|
this.tokenData = {
|
|
138
|
-
access_token: response.
|
|
139
|
-
refresh_token: response.
|
|
140
|
-
expires_at:
|
|
302
|
+
access_token: response.access_token,
|
|
303
|
+
refresh_token: response.refresh_token,
|
|
304
|
+
expires_at: expiresAt,
|
|
141
305
|
};
|
|
306
|
+
// Persist to storage if provided
|
|
307
|
+
if (this.tokenStorage) {
|
|
308
|
+
await this.tokenStorage.set(this.tokenData);
|
|
309
|
+
}
|
|
142
310
|
return this.tokenData;
|
|
143
311
|
}
|
|
144
312
|
catch (error) {
|
|
145
|
-
|
|
146
|
-
|
|
313
|
+
console.error('[mero-js] Token refresh failed:', error);
|
|
314
|
+
// Check if it's an HTTP error with status code
|
|
315
|
+
const httpError = error;
|
|
316
|
+
const status = httpError?.status;
|
|
317
|
+
const errorBody = httpError?.body || httpError?.message || '';
|
|
318
|
+
if (status) {
|
|
319
|
+
console.error('[mero-js] Refresh error status:', status);
|
|
320
|
+
console.error('[mero-js] Refresh error body:', errorBody);
|
|
321
|
+
}
|
|
322
|
+
// Special case: server says "Access token still valid"
|
|
323
|
+
// This means the token IS valid but some other endpoint returned 401
|
|
324
|
+
// Don't clear tokens, don't retry - something else is wrong
|
|
325
|
+
if (errorBody.includes('still valid') || errorBody.includes('token valid')) {
|
|
326
|
+
console.warn('[mero-js] Server says token is still valid - NOT clearing tokens');
|
|
327
|
+
console.warn('[mero-js] This usually means the 401 came from a different issue (wrong endpoint, missing header, etc.)');
|
|
328
|
+
// Create a special error that the HTTP client won't retry
|
|
329
|
+
const tokenValidError = new Error('Token is valid but request failed. Check Authorization header.');
|
|
330
|
+
tokenValidError.tokenStillValid = true;
|
|
331
|
+
throw tokenValidError;
|
|
332
|
+
}
|
|
333
|
+
// On ANY 4XX error, tokens are invalid - clear them and require re-auth
|
|
334
|
+
// This handles: 400 (bad request), 401 (unauthorized), 403 (forbidden), etc.
|
|
335
|
+
if (status && status >= 400 && status < 500) {
|
|
336
|
+
console.warn('[mero-js] Refresh failed with 4XX - clearing tokens, user must re-authenticate');
|
|
337
|
+
await this.clearToken();
|
|
338
|
+
throw new Error(`Session expired. Please log in again. (${status})`);
|
|
339
|
+
}
|
|
340
|
+
// On 5XX errors, don't clear tokens - might be transient server issue
|
|
341
|
+
// User can retry later
|
|
342
|
+
if (status && status >= 500) {
|
|
343
|
+
console.warn('[mero-js] Refresh failed with 5XX - server error, keeping tokens');
|
|
344
|
+
throw new Error(`Server error during refresh. Please try again later. (${status})`);
|
|
345
|
+
}
|
|
346
|
+
// Unknown error - clear tokens to be safe
|
|
347
|
+
console.warn('[mero-js] Refresh failed with unknown error - clearing tokens');
|
|
348
|
+
await this.clearToken();
|
|
147
349
|
throw new Error(`Token refresh failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
148
350
|
}
|
|
149
351
|
}
|
|
150
352
|
/**
|
|
151
|
-
* Clear the current token
|
|
353
|
+
* Clear the current token from memory and storage
|
|
152
354
|
*/
|
|
153
|
-
clearToken() {
|
|
355
|
+
async clearToken() {
|
|
154
356
|
this.tokenData = null;
|
|
357
|
+
if (this.tokenStorage) {
|
|
358
|
+
await this.tokenStorage.clear();
|
|
359
|
+
}
|
|
155
360
|
}
|
|
156
361
|
/**
|
|
157
362
|
* Check if the SDK is authenticated
|
|
@@ -165,6 +370,92 @@ export class MeroJs {
|
|
|
165
370
|
getTokenData() {
|
|
166
371
|
return this.tokenData;
|
|
167
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* Manually set the token data.
|
|
375
|
+
* Use this when handling authentication externally (e.g., OAuth flows).
|
|
376
|
+
*
|
|
377
|
+
* @param tokenData - The token data to set, or null to clear
|
|
378
|
+
* @example
|
|
379
|
+
* ```typescript
|
|
380
|
+
* // After receiving tokens from external auth flow
|
|
381
|
+
* await meroJs.setToken({
|
|
382
|
+
* access_token: 'eyJ...',
|
|
383
|
+
* refresh_token: 'eyJ...',
|
|
384
|
+
* expires_at: Date.now() + 3600000,
|
|
385
|
+
* });
|
|
386
|
+
* ```
|
|
387
|
+
*/
|
|
388
|
+
async setToken(tokenData) {
|
|
389
|
+
this.tokenData = tokenData;
|
|
390
|
+
if (this.tokenStorage) {
|
|
391
|
+
if (tokenData) {
|
|
392
|
+
await this.tokenStorage.set(tokenData);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
await this.tokenStorage.clear();
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Create a WebSocket client for real-time event subscriptions
|
|
401
|
+
*
|
|
402
|
+
* @param options - Optional WebSocket client options to override defaults
|
|
403
|
+
* @returns A new WebSocketClient instance
|
|
404
|
+
*
|
|
405
|
+
* @example
|
|
406
|
+
* ```typescript
|
|
407
|
+
* const ws = meroJs.createWebSocket();
|
|
408
|
+
* await ws.connect();
|
|
409
|
+
*
|
|
410
|
+
* ws.onEvent((event) => {
|
|
411
|
+
* console.log('Received event:', event);
|
|
412
|
+
* });
|
|
413
|
+
*
|
|
414
|
+
* await ws.subscribe(['context-id-1', 'context-id-2']);
|
|
415
|
+
*
|
|
416
|
+
* // Later...
|
|
417
|
+
* ws.disconnect();
|
|
418
|
+
* ```
|
|
419
|
+
*/
|
|
420
|
+
createWebSocket(options) {
|
|
421
|
+
return new WebSocketClient({
|
|
422
|
+
baseUrl: this.config.baseUrl,
|
|
423
|
+
getAuthToken: async () => this.tokenData?.access_token || null,
|
|
424
|
+
...options,
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Create an SSE client for server-sent event streaming
|
|
429
|
+
*
|
|
430
|
+
* @param options - Optional SSE client options to override defaults
|
|
431
|
+
* @returns A new SseClient instance
|
|
432
|
+
*
|
|
433
|
+
* @example
|
|
434
|
+
* ```typescript
|
|
435
|
+
* const sse = meroJs.createSse();
|
|
436
|
+
* const sessionId = await sse.connect();
|
|
437
|
+
*
|
|
438
|
+
* sse.onEvent((event) => {
|
|
439
|
+
* console.log('Received event:', event);
|
|
440
|
+
* });
|
|
441
|
+
*
|
|
442
|
+
* await sse.subscribe(['context-id-1', 'context-id-2']);
|
|
443
|
+
*
|
|
444
|
+
* // Get session info
|
|
445
|
+
* const session = await sse.getSession();
|
|
446
|
+
*
|
|
447
|
+
* // Later...
|
|
448
|
+
* sse.disconnect();
|
|
449
|
+
* ```
|
|
450
|
+
*/
|
|
451
|
+
createSse(options) {
|
|
452
|
+
return new SseClient({
|
|
453
|
+
baseUrl: this.config.baseUrl,
|
|
454
|
+
httpClient: this.httpClient,
|
|
455
|
+
getAuthToken: async () => this.tokenData?.access_token || null,
|
|
456
|
+
...options,
|
|
457
|
+
});
|
|
458
|
+
}
|
|
168
459
|
}
|
|
169
460
|
/**
|
|
170
461
|
* Create a new MeroJs SDK instance
|
package/dist/mero-js.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mero-js.js","sourceRoot":"","sources":["../src/mero-js.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mero-js.js","sourceRoot":"","sources":["../src/mero-js.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@calimero-network/mero-js",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-beta.1",
|
|
4
4
|
"description": "Pure JavaScript SDK for Calimero",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -10,13 +10,42 @@
|
|
|
10
10
|
"import": "./dist/index.mjs",
|
|
11
11
|
"require": "./dist/index.cjs",
|
|
12
12
|
"default": "./dist/index.mjs"
|
|
13
|
+
},
|
|
14
|
+
"./http-client": {
|
|
15
|
+
"types": "./dist/http-client/index.d.ts",
|
|
16
|
+
"import": "./dist/http-client/index.js",
|
|
17
|
+
"default": "./dist/http-client/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./api/admin": {
|
|
20
|
+
"types": "./dist/api/admin/index.d.ts",
|
|
21
|
+
"import": "./dist/api/admin/index.js",
|
|
22
|
+
"default": "./dist/api/admin/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./api/auth": {
|
|
25
|
+
"types": "./dist/api/auth/index.d.ts",
|
|
26
|
+
"import": "./dist/api/auth/index.js",
|
|
27
|
+
"default": "./dist/api/auth/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./api/rpc": {
|
|
30
|
+
"types": "./dist/api/rpc/index.d.ts",
|
|
31
|
+
"import": "./dist/api/rpc/index.js",
|
|
32
|
+
"default": "./dist/api/rpc/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./api/ws": {
|
|
35
|
+
"types": "./dist/api/ws/index.d.ts",
|
|
36
|
+
"import": "./dist/api/ws/index.js",
|
|
37
|
+
"default": "./dist/api/ws/index.js"
|
|
38
|
+
},
|
|
39
|
+
"./api/sse": {
|
|
40
|
+
"types": "./dist/api/sse/index.d.ts",
|
|
41
|
+
"import": "./dist/api/sse/index.js",
|
|
42
|
+
"default": "./dist/api/sse/index.js"
|
|
13
43
|
}
|
|
14
44
|
},
|
|
15
45
|
"main": "./dist/index.cjs",
|
|
16
46
|
"module": "./dist/index.mjs",
|
|
17
47
|
"types": "./dist/index.d.ts",
|
|
18
48
|
"sideEffects": false,
|
|
19
|
-
"dependencies": {},
|
|
20
49
|
"devDependencies": {
|
|
21
50
|
"@semantic-release/changelog": "^6.0.3",
|
|
22
51
|
"@semantic-release/commit-analyzer": "^13.0.0",
|
|
@@ -25,26 +54,32 @@
|
|
|
25
54
|
"@semantic-release/github": "^9.2.6",
|
|
26
55
|
"@semantic-release/npm": "^12.0.1",
|
|
27
56
|
"@semantic-release/release-notes-generator": "^12.1.0",
|
|
28
|
-
"conventional-changelog-conventionalcommits": "^7.0.0",
|
|
29
57
|
"@types/node": "^18.19.34",
|
|
30
58
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
31
59
|
"@typescript-eslint/parser": "^5.62.0",
|
|
60
|
+
"conventional-changelog-conventionalcommits": "^7.0.0",
|
|
32
61
|
"esbuild": "^0.25.8",
|
|
33
62
|
"eslint": "^8.57.0",
|
|
63
|
+
"js-yaml": "4",
|
|
64
|
+
"msw": "^2.12.7",
|
|
65
|
+
"openapi-types": "^12.1.3",
|
|
34
66
|
"rimraf": "^3.0.0",
|
|
35
67
|
"semantic-release": "^24.2.9",
|
|
68
|
+
"tsx": "^4.21.0",
|
|
36
69
|
"typescript": "^4.9.5",
|
|
37
70
|
"vitest": "^2.0.0"
|
|
38
71
|
},
|
|
39
72
|
"scripts": {
|
|
40
|
-
"build": "tsc && esbuild src/index.ts --bundle --platform=neutral --target=es2020 --format=esm --outfile=dist/index.mjs --sourcemap && esbuild src/index.ts --bundle --platform=neutral --target=es2020 --format=cjs --outfile=dist/index.cjs --sourcemap && esbuild src/index.ts --bundle --platform=browser --target=es2020 --format=esm --outfile=dist/index.browser.mjs --sourcemap --minify",
|
|
73
|
+
"build": "tsc -p tsconfig.build.json && esbuild src/index.ts --bundle --platform=neutral --target=es2020 --format=esm --outfile=dist/index.mjs --sourcemap && esbuild src/index.ts --bundle --platform=neutral --target=es2020 --format=cjs --outfile=dist/index.cjs --sourcemap && esbuild src/index.ts --bundle --platform=browser --target=es2020 --format=esm --outfile=dist/index.browser.mjs --sourcemap --minify",
|
|
41
74
|
"test": "vitest run --passWithNoTests",
|
|
42
75
|
"test:unit": "vitest run --config vitest.config.ts",
|
|
76
|
+
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
43
77
|
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
78
|
+
"test:e2e:smoke": "vitest run --config vitest.e2e.config.ts tests/e2e/smoke.test.ts",
|
|
79
|
+
"test:e2e:full": "vitest run --config vitest.e2e.config.ts tests/e2e/admin-api.test.ts tests/e2e/auth-api.test.ts",
|
|
44
80
|
"test:e2e:watch": "vitest --config vitest.e2e.config.ts",
|
|
45
|
-
"test:
|
|
46
|
-
"
|
|
47
|
-
"test:e2e:examples": "vitest run --config vitest.e2e.config.ts tests/e2e/examples.test.ts",
|
|
81
|
+
"test:all": "pnpm test:unit && pnpm test:integration && pnpm test:e2e:smoke",
|
|
82
|
+
"generate:msw": "node scripts/generate-msw-handlers.mjs",
|
|
48
83
|
"lint": "eslint .",
|
|
49
84
|
"lint:fix": "eslint . --fix",
|
|
50
85
|
"eslint": "eslint .",
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '../http-client';
|
|
2
|
-
import { HealthStatus, AdminAuthStatus, InstallApplicationRequest, InstallDevApplicationRequest, InstallApplicationResponse, UninstallApplicationResponse, ListApplicationsResponse, GetApplicationResponse, CreateContextRequest, CreateContextResponse, DeleteContextResponse, ListContextsResponse, GetContextResponse, UploadBlobRequest, UploadBlobResponse, DeleteBlobResponse, ListBlobsResponse, GetBlobResponse, CreateAliasRequest, CreateAliasResponse, DeleteAliasResponse, ListAliasesResponse, GetAliasResponse, GetNetworkPeersResponse, GetNetworkStatsResponse, GetNetworkConfigResponse, UpdateNetworkConfigRequest, UpdateNetworkConfigResponse, GetSystemInfoResponse, GetSystemLogsResponse, GetSystemMetricsResponse, RestartSystemResponse, ShutdownSystemResponse } from './admin-types';
|
|
3
|
-
export declare class AdminApiClient {
|
|
4
|
-
private httpClient;
|
|
5
|
-
constructor(httpClient: HttpClient);
|
|
6
|
-
healthCheck(): Promise<HealthStatus>;
|
|
7
|
-
isAuthed(): Promise<AdminAuthStatus>;
|
|
8
|
-
installApplication(request: InstallApplicationRequest): Promise<InstallApplicationResponse>;
|
|
9
|
-
installDevApplication(request: InstallDevApplicationRequest): Promise<InstallApplicationResponse>;
|
|
10
|
-
uninstallApplication(appId: string): Promise<UninstallApplicationResponse>;
|
|
11
|
-
listApplications(): Promise<ListApplicationsResponse>;
|
|
12
|
-
getApplication(appId: string): Promise<GetApplicationResponse>;
|
|
13
|
-
createContext(request: CreateContextRequest): Promise<CreateContextResponse>;
|
|
14
|
-
deleteContext(contextId: string): Promise<DeleteContextResponse>;
|
|
15
|
-
getContexts(): Promise<ListContextsResponse>;
|
|
16
|
-
getContext(contextId: string): Promise<GetContextResponse>;
|
|
17
|
-
uploadBlob(request: UploadBlobRequest): Promise<UploadBlobResponse>;
|
|
18
|
-
deleteBlob(blobId: string): Promise<DeleteBlobResponse>;
|
|
19
|
-
listBlobs(): Promise<ListBlobsResponse>;
|
|
20
|
-
getBlob(blobId: string): Promise<GetBlobResponse>;
|
|
21
|
-
createAlias(request: CreateAliasRequest): Promise<CreateAliasResponse>;
|
|
22
|
-
deleteAlias(aliasId: string): Promise<DeleteAliasResponse>;
|
|
23
|
-
listAliases(): Promise<ListAliasesResponse>;
|
|
24
|
-
getAlias(aliasId: string): Promise<GetAliasResponse>;
|
|
25
|
-
getNetworkPeers(): Promise<GetNetworkPeersResponse>;
|
|
26
|
-
getNetworkStats(): Promise<GetNetworkStatsResponse>;
|
|
27
|
-
getNetworkConfig(): Promise<GetNetworkConfigResponse>;
|
|
28
|
-
updateNetworkConfig(request: UpdateNetworkConfigRequest): Promise<UpdateNetworkConfigResponse>;
|
|
29
|
-
getPeersCount(): Promise<{
|
|
30
|
-
count: number;
|
|
31
|
-
}>;
|
|
32
|
-
getSystemInfo(): Promise<GetSystemInfoResponse>;
|
|
33
|
-
getSystemLogs(): Promise<GetSystemLogsResponse>;
|
|
34
|
-
getSystemMetrics(): Promise<GetSystemMetricsResponse>;
|
|
35
|
-
restartSystem(): Promise<RestartSystemResponse>;
|
|
36
|
-
shutdownSystem(): Promise<ShutdownSystemResponse>;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=admin-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin-client.d.ts","sourceRoot":"","sources":["../../src/admin-api/admin-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAIL,YAAY,EACZ,eAAe,EAGf,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,EAGtB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAGlB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAGf,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAGhB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAG3B,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AAEvB,qBAAa,cAAc;IACb,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAGpC,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IASpC,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC;IAKpC,kBAAkB,CACtB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,0BAA0B,CAAC;IAOhC,qBAAqB,CACzB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,0BAA0B,CAAC;IAOhC,oBAAoB,CACxB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,4BAA4B,CAAC;IAMlC,gBAAgB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAIrD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAO9D,aAAa,CACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAMhE,WAAW,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAI5C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK1D,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAInE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIvD,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAIvC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKjD,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAItE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI1D,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI3C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKpD,eAAe,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAInD,eAAe,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAInD,gBAAgB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAIrD,mBAAmB,CACvB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,2BAA2B,CAAC;IAOjC,aAAa,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAK3C,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAI/C,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAI/C,gBAAgB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAIrD,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAI/C,cAAc,IAAI,OAAO,CAAC,sBAAsB,CAAC;CAGxD"}
|