@calimero-network/mero-js 2.0.0-beta.1 → 2.0.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.
Files changed (204) hide show
  1. package/README.md +358 -341
  2. package/dist/admin-api/admin-client.d.ts +90 -0
  3. package/dist/admin-api/admin-client.d.ts.map +1 -0
  4. package/dist/admin-api/admin-client.js +302 -0
  5. package/dist/admin-api/admin-client.js.map +1 -0
  6. package/dist/admin-api/admin-factory.d.ts +8 -0
  7. package/dist/admin-api/admin-factory.d.ts.map +1 -0
  8. package/dist/admin-api/admin-factory.js +42 -0
  9. package/dist/admin-api/admin-factory.js.map +1 -0
  10. package/dist/admin-api/admin-types.d.ts +497 -0
  11. package/dist/admin-api/admin-types.d.ts.map +1 -0
  12. package/dist/admin-api/admin-types.js +4 -0
  13. package/dist/admin-api/admin-types.js.map +1 -0
  14. package/dist/admin-api/index.d.ts +4 -0
  15. package/dist/admin-api/index.d.ts.map +1 -0
  16. package/dist/admin-api/index.js +5 -0
  17. package/dist/admin-api/index.js.map +1 -0
  18. package/dist/auth/index.d.ts +26 -0
  19. package/dist/auth/index.d.ts.map +1 -0
  20. package/dist/auth/index.js +51 -0
  21. package/dist/auth/index.js.map +1 -0
  22. package/dist/auth-api/auth-client.d.ts +34 -0
  23. package/dist/auth-api/auth-client.d.ts.map +1 -0
  24. package/dist/auth-api/auth-client.js +112 -0
  25. package/dist/auth-api/auth-client.js.map +1 -0
  26. package/dist/auth-api/auth-factory.d.ts +8 -0
  27. package/dist/auth-api/auth-factory.d.ts.map +1 -0
  28. package/dist/auth-api/auth-factory.js +42 -0
  29. package/dist/auth-api/auth-factory.js.map +1 -0
  30. package/dist/auth-api/auth-types.d.ts +127 -0
  31. package/dist/auth-api/auth-types.d.ts.map +1 -0
  32. package/dist/auth-api/auth-types.js +3 -0
  33. package/dist/auth-api/auth-types.js.map +1 -0
  34. package/dist/auth-api/index.d.ts +4 -0
  35. package/dist/auth-api/index.d.ts.map +1 -0
  36. package/dist/auth-api/index.js +5 -0
  37. package/dist/auth-api/index.js.map +1 -0
  38. package/dist/cloud/cloud-client.d.ts +20 -0
  39. package/dist/cloud/cloud-client.d.ts.map +1 -0
  40. package/dist/cloud/cloud-client.js +26 -0
  41. package/dist/cloud/cloud-client.js.map +1 -0
  42. package/dist/cloud/index.d.ts +3 -0
  43. package/dist/cloud/index.d.ts.map +1 -0
  44. package/dist/cloud/index.js +2 -0
  45. package/dist/cloud/index.js.map +1 -0
  46. package/dist/events/index.d.ts +5 -0
  47. package/dist/events/index.d.ts.map +1 -0
  48. package/dist/events/index.js +3 -0
  49. package/dist/events/index.js.map +1 -0
  50. package/dist/events/sse.d.ts +41 -0
  51. package/dist/events/sse.d.ts.map +1 -0
  52. package/dist/events/sse.js +237 -0
  53. package/dist/events/sse.js.map +1 -0
  54. package/dist/events/ws.d.ts +42 -0
  55. package/dist/events/ws.d.ts.map +1 -0
  56. package/dist/events/ws.js +178 -0
  57. package/dist/events/ws.js.map +1 -0
  58. package/dist/http-client/api-response.d.ts +16 -0
  59. package/dist/http-client/api-response.d.ts.map +1 -0
  60. package/dist/http-client/api-response.js +2 -0
  61. package/dist/http-client/api-response.js.map +1 -0
  62. package/dist/http-client/index.d.ts +1 -1
  63. package/dist/http-client/index.d.ts.map +1 -1
  64. package/dist/http-client/index.js +1 -2
  65. package/dist/http-client/index.js.map +1 -1
  66. package/dist/http-client/web-client.d.ts +3 -3
  67. package/dist/http-client/web-client.d.ts.map +1 -1
  68. package/dist/http-client/web-client.js +6 -18
  69. package/dist/http-client/web-client.js.map +1 -1
  70. package/dist/index.browser.mjs +2 -1
  71. package/dist/index.browser.mjs.map +4 -4
  72. package/dist/index.cjs +1033 -1415
  73. package/dist/index.cjs.map +4 -4
  74. package/dist/index.d.ts +12 -8
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +15 -7
  77. package/dist/index.js.map +1 -1
  78. package/dist/index.mjs +1032 -1420
  79. package/dist/index.mjs.map +4 -4
  80. package/dist/mero-js.d.ts +44 -189
  81. package/dist/mero-js.d.ts.map +1 -1
  82. package/dist/mero-js.js +139 -314
  83. package/dist/mero-js.js.map +1 -1
  84. package/dist/rpc/index.d.ts +22 -0
  85. package/dist/rpc/index.d.ts.map +1 -0
  86. package/dist/rpc/index.js +38 -0
  87. package/dist/rpc/index.js.map +1 -0
  88. package/dist/token-store/index.d.ts +20 -0
  89. package/dist/token-store/index.d.ts.map +1 -0
  90. package/dist/token-store/index.js +62 -0
  91. package/dist/token-store/index.js.map +1 -0
  92. package/package.json +7 -42
  93. package/dist/api/admin/aliases.d.ts +0 -54
  94. package/dist/api/admin/aliases.d.ts.map +0 -1
  95. package/dist/api/admin/aliases.js +0 -43
  96. package/dist/api/admin/aliases.js.map +0 -1
  97. package/dist/api/admin/applications.d.ts +0 -52
  98. package/dist/api/admin/applications.d.ts.map +0 -1
  99. package/dist/api/admin/applications.js +0 -31
  100. package/dist/api/admin/applications.js.map +0 -1
  101. package/dist/api/admin/blobs.d.ts +0 -24
  102. package/dist/api/admin/blobs.d.ts.map +0 -1
  103. package/dist/api/admin/blobs.js +0 -58
  104. package/dist/api/admin/blobs.js.map +0 -1
  105. package/dist/api/admin/capabilities.d.ts +0 -26
  106. package/dist/api/admin/capabilities.d.ts.map +0 -1
  107. package/dist/api/admin/capabilities.js +0 -13
  108. package/dist/api/admin/capabilities.js.map +0 -1
  109. package/dist/api/admin/client.d.ts +0 -63
  110. package/dist/api/admin/client.d.ts.map +0 -1
  111. package/dist/api/admin/client.js +0 -103
  112. package/dist/api/admin/client.js.map +0 -1
  113. package/dist/api/admin/contexts.d.ts +0 -110
  114. package/dist/api/admin/contexts.d.ts.map +0 -1
  115. package/dist/api/admin/contexts.js +0 -61
  116. package/dist/api/admin/contexts.js.map +0 -1
  117. package/dist/api/admin/factory.d.ts +0 -4
  118. package/dist/api/admin/factory.d.ts.map +0 -1
  119. package/dist/api/admin/factory.js +0 -5
  120. package/dist/api/admin/factory.js.map +0 -1
  121. package/dist/api/admin/identity.d.ts +0 -10
  122. package/dist/api/admin/identity.d.ts.map +0 -1
  123. package/dist/api/admin/identity.js +0 -10
  124. package/dist/api/admin/identity.js.map +0 -1
  125. package/dist/api/admin/index.d.ts +0 -23
  126. package/dist/api/admin/index.d.ts.map +0 -1
  127. package/dist/api/admin/index.js +0 -26
  128. package/dist/api/admin/index.js.map +0 -1
  129. package/dist/api/admin/network.d.ts +0 -10
  130. package/dist/api/admin/network.d.ts.map +0 -1
  131. package/dist/api/admin/network.js +0 -9
  132. package/dist/api/admin/network.js.map +0 -1
  133. package/dist/api/admin/proposals.d.ts +0 -49
  134. package/dist/api/admin/proposals.d.ts.map +0 -1
  135. package/dist/api/admin/proposals.js +0 -34
  136. package/dist/api/admin/proposals.js.map +0 -1
  137. package/dist/api/admin/public.d.ts +0 -15
  138. package/dist/api/admin/public.d.ts.map +0 -1
  139. package/dist/api/admin/public.js +0 -18
  140. package/dist/api/admin/public.js.map +0 -1
  141. package/dist/api/admin/tee.d.ts +0 -74
  142. package/dist/api/admin/tee.d.ts.map +0 -1
  143. package/dist/api/admin/tee.js +0 -16
  144. package/dist/api/admin/tee.js.map +0 -1
  145. package/dist/api/auth/client.d.ts +0 -55
  146. package/dist/api/auth/client.d.ts.map +0 -1
  147. package/dist/api/auth/client.js +0 -127
  148. package/dist/api/auth/client.js.map +0 -1
  149. package/dist/api/auth/factory.d.ts +0 -4
  150. package/dist/api/auth/factory.d.ts.map +0 -1
  151. package/dist/api/auth/factory.js +0 -5
  152. package/dist/api/auth/factory.js.map +0 -1
  153. package/dist/api/auth/index.d.ts +0 -4
  154. package/dist/api/auth/index.d.ts.map +0 -1
  155. package/dist/api/auth/index.js +0 -4
  156. package/dist/api/auth/index.js.map +0 -1
  157. package/dist/api/auth/types.d.ts +0 -94
  158. package/dist/api/auth/types.d.ts.map +0 -1
  159. package/dist/api/auth/types.js +0 -4
  160. package/dist/api/auth/types.js.map +0 -1
  161. package/dist/api/index.d.ts +0 -15
  162. package/dist/api/index.d.ts.map +0 -1
  163. package/dist/api/index.js +0 -18
  164. package/dist/api/index.js.map +0 -1
  165. package/dist/api/rpc/client.d.ts +0 -76
  166. package/dist/api/rpc/client.d.ts.map +0 -1
  167. package/dist/api/rpc/client.js +0 -126
  168. package/dist/api/rpc/client.js.map +0 -1
  169. package/dist/api/rpc/index.d.ts +0 -3
  170. package/dist/api/rpc/index.d.ts.map +0 -1
  171. package/dist/api/rpc/index.js +0 -2
  172. package/dist/api/rpc/index.js.map +0 -1
  173. package/dist/api/rpc/types.d.ts +0 -74
  174. package/dist/api/rpc/types.d.ts.map +0 -1
  175. package/dist/api/rpc/types.js +0 -6
  176. package/dist/api/rpc/types.js.map +0 -1
  177. package/dist/api/sse/client.d.ts +0 -76
  178. package/dist/api/sse/client.d.ts.map +0 -1
  179. package/dist/api/sse/client.js +0 -203
  180. package/dist/api/sse/client.js.map +0 -1
  181. package/dist/api/sse/index.d.ts +0 -4
  182. package/dist/api/sse/index.d.ts.map +0 -1
  183. package/dist/api/sse/index.js +0 -2
  184. package/dist/api/sse/index.js.map +0 -1
  185. package/dist/api/sse/types.d.ts +0 -35
  186. package/dist/api/sse/types.d.ts.map +0 -1
  187. package/dist/api/sse/types.js +0 -6
  188. package/dist/api/sse/types.js.map +0 -1
  189. package/dist/api/utils.d.ts +0 -68
  190. package/dist/api/utils.d.ts.map +0 -1
  191. package/dist/api/utils.js +0 -83
  192. package/dist/api/utils.js.map +0 -1
  193. package/dist/api/ws/client.d.ts +0 -72
  194. package/dist/api/ws/client.d.ts.map +0 -1
  195. package/dist/api/ws/client.js +0 -202
  196. package/dist/api/ws/client.js.map +0 -1
  197. package/dist/api/ws/index.d.ts +0 -4
  198. package/dist/api/ws/index.d.ts.map +0 -1
  199. package/dist/api/ws/index.js +0 -2
  200. package/dist/api/ws/index.js.map +0 -1
  201. package/dist/api/ws/types.d.ts +0 -32
  202. package/dist/api/ws/types.d.ts.map +0 -1
  203. package/dist/api/ws/types.js +0 -6
  204. package/dist/api/ws/types.js.map +0 -1
package/dist/mero-js.js CHANGED
@@ -1,9 +1,30 @@
1
1
  import { createBrowserHttpClient } from './http-client';
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';
2
+ import { createAuthApiClientFromHttpClient } from './auth-api';
3
+ import { createAdminApiClientFromHttpClient } from './admin-api';
4
+ import { parseAuthCallback, buildAuthLoginUrl } from './auth';
5
+ import { RpcClient } from './rpc';
6
+ import { SseClient } from './events/sse';
7
+ import { WsClient } from './events/ws';
8
+ /** Try to extract `exp` (seconds) from a JWT, return ms timestamp or fallback. */
9
+ function expiresAtFromJwt(token, fallbackMs) {
10
+ try {
11
+ const parts = token.split('.');
12
+ if (parts.length === 3) {
13
+ // JWT uses base64url encoding: replace -/_ with +// and add padding
14
+ let b64 = parts[1].replace(/-/g, '+').replace(/_/g, '/');
15
+ while (b64.length % 4)
16
+ b64 += '=';
17
+ const payload = JSON.parse(atob(b64));
18
+ if (typeof payload.exp === 'number') {
19
+ return payload.exp * 1000;
20
+ }
21
+ }
22
+ }
23
+ catch {
24
+ // not a JWT or can't parse
25
+ }
26
+ return fallbackMs;
27
+ }
7
28
  /**
8
29
  * Main MeroJs SDK class that manages all API clients and authentication
9
30
  */
@@ -11,91 +32,58 @@ export class MeroJs {
11
32
  constructor(config) {
12
33
  this.tokenData = null;
13
34
  this.refreshPromise = null;
14
- this.tokenStorage = null;
35
+ this.rpcClient = null;
36
+ this.sseClient = null;
37
+ this.wsClient = null;
38
+ this.wsWarned = false;
15
39
  this.config = {
16
40
  timeoutMs: 10000,
17
41
  ...config,
18
42
  };
19
- this.tokenStorage = config.tokenStorage || null;
43
+ this.tokenStore = config.tokenStore ?? null;
44
+ // Restore tokens from store if available
45
+ if (this.tokenStore) {
46
+ this.tokenData = this.tokenStore.getTokens();
47
+ }
20
48
  // Create HTTP client with token management
21
49
  // For Tauri, explicitly set credentials to 'omit' to avoid network errors
22
50
  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
27
51
  this.httpClient = createBrowserHttpClient({
28
52
  baseUrl: this.config.baseUrl,
29
53
  getAuthToken: async () => {
30
54
  const token = await this.getValidToken();
31
55
  return token?.access_token || '';
32
56
  },
33
- // Wire up automatic token refresh on 401
34
57
  refreshToken: async () => {
35
58
  const refreshed = await this.performTokenRefresh();
36
59
  return refreshed.access_token;
37
60
  },
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);
61
+ onTokenRefresh: async (newToken) => {
62
+ if (this.tokenData) {
63
+ this.tokenData.access_token = newToken;
64
+ this.tokenStore?.setTokens(this.tokenData);
43
65
  }
44
66
  },
45
67
  timeoutMs: this.config.timeoutMs,
46
68
  credentials: this.config.requestCredentials ?? (isTauri ? 'omit' : undefined),
47
69
  });
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,
70
+ // Create API clients
71
+ this.authClient = createAuthApiClientFromHttpClient(this.httpClient, {
72
+ baseUrl: this.config.baseUrl,
53
73
  getAuthToken: async () => {
54
74
  const token = await this.getValidToken();
55
75
  return token?.access_token || '';
56
76
  },
57
- // NO refreshToken callback - auth endpoints handle their own auth
58
- // Wiring refreshToken here would cause infinite loops when refresh fails
59
77
  timeoutMs: this.config.timeoutMs,
60
- credentials: this.config.requestCredentials ?? (isTauri ? 'omit' : undefined),
61
78
  });
62
- // Create API clients
63
- this.authClient = createAuthApiClient(authHttpClient, {
64
- baseUrl: authBaseUrl,
65
- embedded: isEmbedded,
79
+ this.adminClient = createAdminApiClientFromHttpClient(this.httpClient, {
80
+ baseUrl: this.config.baseUrl,
81
+ getAuthToken: async () => {
82
+ const token = await this.getValidToken();
83
+ return token?.access_token || '';
84
+ },
85
+ timeoutMs: this.config.timeoutMs,
66
86
  });
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
- }
99
87
  }
100
88
  /**
101
89
  * Get the Auth API client
@@ -110,38 +98,49 @@ export class MeroJs {
110
98
  return this.adminClient;
111
99
  }
112
100
  /**
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
- * ```
101
+ * Get the RPC client (lazy initialized)
141
102
  */
142
103
  get rpc() {
104
+ if (!this.rpcClient) {
105
+ this.rpcClient = new RpcClient({ httpClient: this.httpClient });
106
+ }
143
107
  return this.rpcClient;
144
108
  }
109
+ /**
110
+ * Get the SSE event client (lazy initialized)
111
+ */
112
+ get events() {
113
+ if (!this.sseClient) {
114
+ this.sseClient = new SseClient({
115
+ baseUrl: this.config.baseUrl,
116
+ getAuthToken: async () => {
117
+ const token = await this.getValidToken();
118
+ return token?.access_token || '';
119
+ },
120
+ });
121
+ }
122
+ return this.sseClient;
123
+ }
124
+ /**
125
+ * Get the WebSocket event client (lazy initialized).
126
+ * @experimental Use `events` (SSE) for production. WsClient is experimental.
127
+ */
128
+ get ws() {
129
+ if (!this.wsWarned) {
130
+ this.wsWarned = true;
131
+ console.warn('[mero-js] WsClient is experimental. Use mero.events (SSE) for production.');
132
+ }
133
+ if (!this.wsClient) {
134
+ this.wsClient = new WsClient({
135
+ baseUrl: this.config.baseUrl,
136
+ getAuthToken: async () => {
137
+ const token = await this.getValidToken();
138
+ return token?.access_token || '';
139
+ },
140
+ });
141
+ }
142
+ return this.wsClient;
143
+ }
145
144
  /**
146
145
  * Authenticate with the provided credentials
147
146
  * This will create the root key on first use
@@ -152,7 +151,6 @@ export class MeroJs {
152
151
  throw new Error('No credentials provided for authentication');
153
152
  }
154
153
  try {
155
- // Note: Auth API expects snake_case, not camelCase (despite OpenAPI spec showing camelCase)
156
154
  const requestBody = {
157
155
  auth_method: 'user_password',
158
156
  public_key: creds.username,
@@ -164,95 +162,41 @@ export class MeroJs {
164
162
  password: creds.password,
165
163
  },
166
164
  };
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
- }
165
+ const response = await this.authClient.generateTokens(requestBody);
166
+ const accessToken = response.data.access_token;
180
167
  this.tokenData = {
181
- access_token: response.access_token,
182
- refresh_token: response.refresh_token,
183
- expires_at: expiresAt,
168
+ access_token: accessToken,
169
+ refresh_token: response.data.refresh_token,
170
+ expires_at: expiresAtFromJwt(accessToken, Date.now() + 3600000),
184
171
  };
185
- // Persist to storage if provided
186
- if (this.tokenStorage) {
187
- await this.tokenStorage.set(this.tokenData);
188
- }
172
+ this.tokenStore?.setTokens(this.tokenData);
189
173
  return this.tokenData;
190
174
  }
191
175
  catch (error) {
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}`);
176
+ throw new Error(`Authentication failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
204
177
  }
205
178
  }
206
179
  /**
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.
180
+ * Get a valid token. Returns the current token as-is.
181
+ * The server rejects refresh attempts while the access token is still valid,
182
+ * so we never proactively refresh. Instead, the WebHttpClient handles 401
183
+ * responses reactively via the refreshToken transport hook.
212
184
  */
213
185
  async getValidToken() {
214
- console.log('[mero-js] getValidToken called, tokenData:', this.tokenData ? 'EXISTS' : 'NULL');
215
- if (!this.tokenData) {
216
- console.log('[mero-js] No tokenData, returning null');
217
- return null;
218
- }
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');
226
- return await this.refreshToken();
227
- }
228
- console.log('[mero-js] Token valid, returning tokenData');
229
186
  return this.tokenData;
230
187
  }
231
188
  /**
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
189
+ * Refresh the access token using the refresh token
236
190
  */
237
191
  async refreshToken() {
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() {
192
+ if (!this.tokenData?.refresh_token) {
193
+ throw new Error('No refresh token available');
194
+ }
248
195
  // Prevent multiple simultaneous refresh attempts
249
- // This is critical for avoiding 100+ refresh requests when multiple 401s come in
250
196
  if (this.refreshPromise) {
251
- console.log('[mero-js] Refresh already in progress, waiting for existing promise');
252
197
  return this.refreshPromise;
253
198
  }
254
- console.log('[mero-js] Starting new refresh attempt');
255
- this.refreshPromise = this.doTokenRefresh();
199
+ this.refreshPromise = this.performTokenRefresh();
256
200
  try {
257
201
  const newToken = await this.refreshPromise;
258
202
  return newToken;
@@ -262,101 +206,39 @@ export class MeroJs {
262
206
  }
263
207
  }
264
208
  /**
265
- * Internal: Actually perform the refresh request.
266
- * Called only from performTokenRefresh() which manages the deduplication.
209
+ * Perform the actual token refresh
267
210
  */
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);
211
+ async performTokenRefresh() {
273
212
  if (!this.tokenData?.refresh_token) {
274
213
  throw new Error('No refresh token available');
275
214
  }
276
- if (!this.tokenData?.access_token) {
277
- throw new Error('No access token available for refresh (server requires both tokens)');
278
- }
279
215
  try {
280
- // Server requires BOTH access_token and refresh_token (snake_case)
281
- const refreshPayload = {
216
+ const response = await this.authClient.refreshToken({
282
217
  access_token: this.tokenData.access_token,
283
218
  refresh_token: this.tokenData.refresh_token,
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
- }
219
+ });
220
+ const accessToken = response.data.access_token;
301
221
  this.tokenData = {
302
- access_token: response.access_token,
303
- refresh_token: response.refresh_token,
304
- expires_at: expiresAt,
222
+ access_token: accessToken,
223
+ refresh_token: response.data.refresh_token,
224
+ expires_at: expiresAtFromJwt(accessToken, Date.now() + 3600000),
305
225
  };
306
- // Persist to storage if provided
307
- if (this.tokenStorage) {
308
- await this.tokenStorage.set(this.tokenData);
309
- }
226
+ this.tokenStore?.setTokens(this.tokenData);
310
227
  return this.tokenData;
311
228
  }
312
229
  catch (error) {
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();
230
+ // Don't clear tokens on refresh failure — the access token may still be
231
+ // valid (server rejects refresh while access token hasn't expired yet).
232
+ // Let the caller handle the error.
349
233
  throw new Error(`Token refresh failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
350
234
  }
351
235
  }
352
236
  /**
353
- * Clear the current token from memory and storage
237
+ * Clear the current token
354
238
  */
355
- async clearToken() {
239
+ clearToken() {
356
240
  this.tokenData = null;
357
- if (this.tokenStorage) {
358
- await this.tokenStorage.clear();
359
- }
241
+ this.tokenStore?.clear();
360
242
  }
361
243
  /**
362
244
  * Check if the SDK is authenticated
@@ -364,6 +246,16 @@ export class MeroJs {
364
246
  isAuthenticated() {
365
247
  return this.tokenData !== null;
366
248
  }
249
+ /**
250
+ * Set token data directly (e.g., from auth callback).
251
+ * If `expires_at` is missing or 0, attempts to parse the JWT exp claim,
252
+ * falling back to 1 hour from now.
253
+ */
254
+ setTokenData(data) {
255
+ const expiresAt = data.expires_at || expiresAtFromJwt(data.access_token, Date.now() + 3600000);
256
+ this.tokenData = { ...data, expires_at: expiresAt };
257
+ this.tokenStore?.setTokens(this.tokenData);
258
+ }
367
259
  /**
368
260
  * Get the current token data (for debugging)
369
261
  */
@@ -371,90 +263,23 @@ export class MeroJs {
371
263
  return this.tokenData;
372
264
  }
373
265
  /**
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
- * ```
266
+ * Close all event connections and clean up resources
387
267
  */
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
- }
268
+ close() {
269
+ this.sseClient?.close();
270
+ this.wsClient?.close();
398
271
  }
399
272
  /**
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
- * ```
273
+ * Parse an auth callback URL hash fragment (static utility)
419
274
  */
420
- createWebSocket(options) {
421
- return new WebSocketClient({
422
- baseUrl: this.config.baseUrl,
423
- getAuthToken: async () => this.tokenData?.access_token || null,
424
- ...options,
425
- });
275
+ static parseAuthCallback(url) {
276
+ return parseAuthCallback(url);
426
277
  }
427
278
  /**
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
- * ```
279
+ * Build an auth login URL (static utility)
450
280
  */
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
- });
281
+ static buildAuthLoginUrl(nodeUrl, opts) {
282
+ return buildAuthLoginUrl(nodeUrl, opts);
458
283
  }
459
284
  }
460
285
  /**
@@ -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":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAKjE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAwBvC,kFAAkF;AAClF,SAAS,gBAAgB,CAAC,KAAa,EAAE,UAAkB;IACzD,IAAI;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,oEAAoE;YACpE,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACzD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,IAAI,GAAG,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACnC,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;aAC3B;SACF;KACF;IAAC,MAAM;QACN,2BAA2B;KAC5B;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,MAAM;IAajB,YAAY,MAAoB;QARxB,cAAS,GAAqB,IAAI,CAAC;QACnC,mBAAc,GAA8B,IAAI,CAAC;QAEjD,cAAS,GAAqB,IAAI,CAAC;QACnC,cAAS,GAAqB,IAAI,CAAC;QACnC,aAAQ,GAAoB,IAAI,CAAC;QACjC,aAAQ,GAAG,KAAK,CAAC;QAGvB,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,KAAK;YAChB,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;QAE5C,yCAAyC;QACzC,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;SAC9C;QAED,2CAA2C;QAC3C,0EAA0E;QAC1E,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,qBAAqB,IAAI,MAAM,CAAC;QACjF,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC;YACxC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,YAAY,EAAE,KAAK,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBACzC,OAAO,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;YACnC,CAAC;YACD,YAAY,EAAE,KAAK,IAAI,EAAE;gBACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACnD,OAAO,SAAS,CAAC,YAAY,CAAC;YAChC,CAAC;YACD,cAAc,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;gBACzC,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC;oBACvC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAC5C;YACH,CAAC;YACD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;SAC9E,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,UAAU,GAAG,iCAAiC,CAAC,IAAI,CAAC,UAAU,EAAE;YACnE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,YAAY,EAAE,KAAK,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBACzC,OAAO,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;YACnC,CAAC;YACD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,kCAAkC,CAAC,IAAI,CAAC,UAAU,EAAE;YACrE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,YAAY,EAAE,KAAK,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBACzC,OAAO,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;YACnC,CAAC;YACD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACjC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACjE;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;gBAC7B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,YAAY,EAAE,KAAK,IAAI,EAAE;oBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;oBACzC,OAAO,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;gBACnC,CAAC;aACF,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,IAAI,EAAE;QACJ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;SAC3F;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC;gBAC3B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,YAAY,EAAE,KAAK,IAAI,EAAE;oBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;oBACzC,OAAO,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;gBACnC,CAAC;aACF,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,WAGlB;QACC,MAAM,KAAK,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;SAC/D;QAED,IAAI;YACF,MAAM,WAAW,GAAG;gBAClB,WAAW,EAAE,eAAe;gBAC5B,UAAU,EAAE,KAAK,CAAC,QAAQ;gBAC1B,WAAW,EAAE,aAAa;gBAC1B,WAAW,EAAE,CAAC,OAAO,CAAC;gBACtB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBACxC,aAAa,EAAE;oBACb,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB;aACF,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAEnE,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG;gBACf,YAAY,EAAE,WAAW;gBACzB,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa;gBAC1C,UAAU,EAAE,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAQ,CAAC;aACjE,CAAC;YAEF,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE3C,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CACb,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACrF,CAAC;SACH;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QAED,iDAAiD;QACjD,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjD,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YAC3C,OAAO,QAAQ,CAAC;SACjB;gBAAS;YACR,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5B;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QAED,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBAClD,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY;gBACzC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;aAC5C,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG;gBACf,YAAY,EAAE,WAAW;gBACzB,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa;gBAC1C,UAAU,EAAE,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAQ,CAAC;aACjE,CAAC;YAEF,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE3C,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QAAC,OAAO,KAAK,EAAE;YACd,wEAAwE;YACxE,wEAAwE;YACxE,mCAAmC;YACnC,MAAM,IAAI,KAAK,CACb,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACpF,CAAC;SACH;IACH,CAAC;IAED;;OAEG;IACI,UAAU;QACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,IAAe;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAQ,CAAC,CAAC;QAChG,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAW;QAClC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAe,EAAE,IAAsB;QAC9D,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { HttpClient } from '../http-client';
2
+ export interface ExecuteParams {
3
+ contextId: string;
4
+ method: string;
5
+ argsJson?: Record<string, unknown>;
6
+ /** @deprecated No longer used by the server. Ignored if provided. */
7
+ executorPublicKey?: string;
8
+ }
9
+ export declare class RpcError extends Error {
10
+ code: number;
11
+ type?: string;
12
+ data?: unknown;
13
+ constructor(code: number, message: string, data?: unknown, type?: string);
14
+ }
15
+ export declare class RpcClient {
16
+ private httpClient;
17
+ constructor(opts: {
18
+ httpClient: HttpClient;
19
+ });
20
+ execute<T = unknown>(params: ExecuteParams): Promise<T>;
21
+ }
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM;CAOzE;AAmBD,qBAAa,SAAS;IACpB,OAAO,CAAC,UAAU,CAAa;gBAEnB,IAAI,EAAE;QAAE,UAAU,EAAE,UAAU,CAAA;KAAE;IAItC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;CA8B9D"}