@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.
Files changed (178) hide show
  1. package/README.md +341 -319
  2. package/dist/api/admin/aliases.d.ts +54 -0
  3. package/dist/api/admin/aliases.d.ts.map +1 -0
  4. package/dist/api/admin/aliases.js +43 -0
  5. package/dist/api/admin/aliases.js.map +1 -0
  6. package/dist/api/admin/applications.d.ts +52 -0
  7. package/dist/api/admin/applications.d.ts.map +1 -0
  8. package/dist/api/admin/applications.js +31 -0
  9. package/dist/api/admin/applications.js.map +1 -0
  10. package/dist/api/admin/blobs.d.ts +24 -0
  11. package/dist/api/admin/blobs.d.ts.map +1 -0
  12. package/dist/api/admin/blobs.js +58 -0
  13. package/dist/api/admin/blobs.js.map +1 -0
  14. package/dist/api/admin/capabilities.d.ts +26 -0
  15. package/dist/api/admin/capabilities.d.ts.map +1 -0
  16. package/dist/api/admin/capabilities.js +13 -0
  17. package/dist/api/admin/capabilities.js.map +1 -0
  18. package/dist/api/admin/client.d.ts +63 -0
  19. package/dist/api/admin/client.d.ts.map +1 -0
  20. package/dist/api/admin/client.js +103 -0
  21. package/dist/api/admin/client.js.map +1 -0
  22. package/dist/api/admin/contexts.d.ts +110 -0
  23. package/dist/api/admin/contexts.d.ts.map +1 -0
  24. package/dist/api/admin/contexts.js +61 -0
  25. package/dist/api/admin/contexts.js.map +1 -0
  26. package/dist/api/admin/factory.d.ts +4 -0
  27. package/dist/api/admin/factory.d.ts.map +1 -0
  28. package/dist/api/admin/factory.js +5 -0
  29. package/dist/api/admin/factory.js.map +1 -0
  30. package/dist/api/admin/identity.d.ts +10 -0
  31. package/dist/api/admin/identity.d.ts.map +1 -0
  32. package/dist/api/admin/identity.js +10 -0
  33. package/dist/api/admin/identity.js.map +1 -0
  34. package/dist/api/admin/index.d.ts +23 -0
  35. package/dist/api/admin/index.d.ts.map +1 -0
  36. package/dist/api/admin/index.js +26 -0
  37. package/dist/api/admin/index.js.map +1 -0
  38. package/dist/api/admin/network.d.ts +10 -0
  39. package/dist/api/admin/network.d.ts.map +1 -0
  40. package/dist/api/admin/network.js +9 -0
  41. package/dist/api/admin/network.js.map +1 -0
  42. package/dist/api/admin/proposals.d.ts +49 -0
  43. package/dist/api/admin/proposals.d.ts.map +1 -0
  44. package/dist/api/admin/proposals.js +34 -0
  45. package/dist/api/admin/proposals.js.map +1 -0
  46. package/dist/api/admin/public.d.ts +15 -0
  47. package/dist/api/admin/public.d.ts.map +1 -0
  48. package/dist/api/admin/public.js +18 -0
  49. package/dist/api/admin/public.js.map +1 -0
  50. package/dist/api/admin/tee.d.ts +74 -0
  51. package/dist/api/admin/tee.d.ts.map +1 -0
  52. package/dist/api/admin/tee.js +16 -0
  53. package/dist/api/admin/tee.js.map +1 -0
  54. package/dist/api/auth/client.d.ts +55 -0
  55. package/dist/api/auth/client.d.ts.map +1 -0
  56. package/dist/api/auth/client.js +127 -0
  57. package/dist/api/auth/client.js.map +1 -0
  58. package/dist/api/auth/factory.d.ts +4 -0
  59. package/dist/api/auth/factory.d.ts.map +1 -0
  60. package/dist/api/auth/factory.js +5 -0
  61. package/dist/api/auth/factory.js.map +1 -0
  62. package/dist/api/auth/index.d.ts +4 -0
  63. package/dist/api/auth/index.d.ts.map +1 -0
  64. package/dist/api/auth/index.js +4 -0
  65. package/dist/api/auth/index.js.map +1 -0
  66. package/dist/api/auth/types.d.ts +94 -0
  67. package/dist/api/auth/types.d.ts.map +1 -0
  68. package/dist/api/auth/types.js +4 -0
  69. package/dist/api/auth/types.js.map +1 -0
  70. package/dist/api/index.d.ts +15 -0
  71. package/dist/api/index.d.ts.map +1 -0
  72. package/dist/api/index.js +18 -0
  73. package/dist/api/index.js.map +1 -0
  74. package/dist/api/rpc/client.d.ts +76 -0
  75. package/dist/api/rpc/client.d.ts.map +1 -0
  76. package/dist/api/rpc/client.js +126 -0
  77. package/dist/api/rpc/client.js.map +1 -0
  78. package/dist/api/rpc/index.d.ts +3 -0
  79. package/dist/api/rpc/index.d.ts.map +1 -0
  80. package/dist/api/rpc/index.js +2 -0
  81. package/dist/api/rpc/index.js.map +1 -0
  82. package/dist/api/rpc/types.d.ts +74 -0
  83. package/dist/api/rpc/types.d.ts.map +1 -0
  84. package/dist/api/rpc/types.js +6 -0
  85. package/dist/api/rpc/types.js.map +1 -0
  86. package/dist/api/sse/client.d.ts +76 -0
  87. package/dist/api/sse/client.d.ts.map +1 -0
  88. package/dist/api/sse/client.js +203 -0
  89. package/dist/api/sse/client.js.map +1 -0
  90. package/dist/api/sse/index.d.ts +4 -0
  91. package/dist/api/sse/index.d.ts.map +1 -0
  92. package/dist/api/sse/index.js +2 -0
  93. package/dist/api/sse/index.js.map +1 -0
  94. package/dist/api/sse/types.d.ts +35 -0
  95. package/dist/api/sse/types.d.ts.map +1 -0
  96. package/dist/api/sse/types.js +6 -0
  97. package/dist/api/sse/types.js.map +1 -0
  98. package/dist/api/utils.d.ts +68 -0
  99. package/dist/api/utils.d.ts.map +1 -0
  100. package/dist/api/utils.js +83 -0
  101. package/dist/api/utils.js.map +1 -0
  102. package/dist/api/ws/client.d.ts +72 -0
  103. package/dist/api/ws/client.d.ts.map +1 -0
  104. package/dist/api/ws/client.js +202 -0
  105. package/dist/api/ws/client.js.map +1 -0
  106. package/dist/api/ws/index.d.ts +4 -0
  107. package/dist/api/ws/index.d.ts.map +1 -0
  108. package/dist/api/ws/index.js +2 -0
  109. package/dist/api/ws/index.js.map +1 -0
  110. package/dist/api/ws/types.d.ts +32 -0
  111. package/dist/api/ws/types.d.ts.map +1 -0
  112. package/dist/api/ws/types.js +6 -0
  113. package/dist/api/ws/types.js.map +1 -0
  114. package/dist/http-client/http-factory.d.ts +18 -0
  115. package/dist/http-client/http-factory.d.ts.map +1 -1
  116. package/dist/http-client/http-factory.js +2 -0
  117. package/dist/http-client/http-factory.js.map +1 -1
  118. package/dist/http-client/http-types.d.ts +6 -0
  119. package/dist/http-client/http-types.d.ts.map +1 -1
  120. package/dist/http-client/index.d.ts +1 -1
  121. package/dist/http-client/index.d.ts.map +1 -1
  122. package/dist/http-client/index.js +2 -1
  123. package/dist/http-client/index.js.map +1 -1
  124. package/dist/http-client/web-client.d.ts +5 -3
  125. package/dist/http-client/web-client.d.ts.map +1 -1
  126. package/dist/http-client/web-client.js +142 -59
  127. package/dist/http-client/web-client.js.map +1 -1
  128. package/dist/index.browser.mjs +1 -1
  129. package/dist/index.browser.mjs.map +4 -4
  130. package/dist/index.cjs +1669 -341
  131. package/dist/index.cjs.map +4 -4
  132. package/dist/index.d.ts +8 -3
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +7 -5
  135. package/dist/index.js.map +1 -1
  136. package/dist/index.mjs +1675 -341
  137. package/dist/index.mjs.map +4 -4
  138. package/dist/mero-js.d.ts +198 -7
  139. package/dist/mero-js.d.ts.map +1 -1
  140. package/dist/mero-js.js +329 -38
  141. package/dist/mero-js.js.map +1 -1
  142. package/package.json +42 -7
  143. package/dist/admin-api/admin-client.d.ts +0 -38
  144. package/dist/admin-api/admin-client.d.ts.map +0 -1
  145. package/dist/admin-api/admin-client.js +0 -104
  146. package/dist/admin-api/admin-client.js.map +0 -1
  147. package/dist/admin-api/admin-factory.d.ts +0 -8
  148. package/dist/admin-api/admin-factory.d.ts.map +0 -1
  149. package/dist/admin-api/admin-factory.js +0 -42
  150. package/dist/admin-api/admin-factory.js.map +0 -1
  151. package/dist/admin-api/admin-types.d.ts +0 -213
  152. package/dist/admin-api/admin-types.d.ts.map +0 -1
  153. package/dist/admin-api/admin-types.js +0 -3
  154. package/dist/admin-api/admin-types.js.map +0 -1
  155. package/dist/admin-api/index.d.ts +0 -4
  156. package/dist/admin-api/index.d.ts.map +0 -1
  157. package/dist/admin-api/index.js +0 -5
  158. package/dist/admin-api/index.js.map +0 -1
  159. package/dist/auth-api/auth-client.d.ts +0 -34
  160. package/dist/auth-api/auth-client.d.ts.map +0 -1
  161. package/dist/auth-api/auth-client.js +0 -112
  162. package/dist/auth-api/auth-client.js.map +0 -1
  163. package/dist/auth-api/auth-factory.d.ts +0 -8
  164. package/dist/auth-api/auth-factory.d.ts.map +0 -1
  165. package/dist/auth-api/auth-factory.js +0 -42
  166. package/dist/auth-api/auth-factory.js.map +0 -1
  167. package/dist/auth-api/auth-types.d.ts +0 -127
  168. package/dist/auth-api/auth-types.d.ts.map +0 -1
  169. package/dist/auth-api/auth-types.js +0 -3
  170. package/dist/auth-api/auth-types.js.map +0 -1
  171. package/dist/auth-api/index.d.ts +0 -4
  172. package/dist/auth-api/index.d.ts.map +0 -1
  173. package/dist/auth-api/index.js +0 -5
  174. package/dist/auth-api/index.js.map +0 -1
  175. package/dist/http-client/api-response.d.ts +0 -16
  176. package/dist/http-client/api-response.d.ts.map +0 -1
  177. package/dist/http-client/api-response.js +0 -2
  178. package/dist/http-client/api-response.js.map +0 -1
package/dist/mero-js.d.ts CHANGED
@@ -1,8 +1,15 @@
1
- import type { AuthApiClient } from './auth-api';
2
- import type { AdminApiClient } from './admin-api';
1
+ import { RpcClient } from './api/rpc';
2
+ import { WebSocketClient } from './api/ws';
3
+ import { SseClient } from './api/sse';
4
+ import type { AuthApiClient } from './api/auth';
5
+ import type { AdminApiClient } from './api/admin';
6
+ import type { WebSocketClientOptions } from './api/ws';
7
+ import type { SseClientOptions } from './api/sse';
3
8
  export interface MeroJsConfig {
4
9
  /** Base URL for the Calimero node */
5
10
  baseUrl: string;
11
+ /** Auth service base URL (for proxied mode). If not specified, uses baseUrl (embedded mode) */
12
+ authBaseUrl?: string;
6
13
  /** Initial credentials for authentication */
7
14
  credentials?: {
8
15
  username: string;
@@ -12,6 +19,63 @@ export interface MeroJsConfig {
12
19
  timeoutMs?: number;
13
20
  /** Request credentials mode for fetch (omit, same-origin, include) */
14
21
  requestCredentials?: RequestCredentials;
22
+ /**
23
+ * Optional token storage for persistence across sessions.
24
+ * If not provided, tokens are stored in-memory only.
25
+ *
26
+ * @example Browser localStorage
27
+ * ```typescript
28
+ * const mero = new MeroJs({
29
+ * baseUrl: 'http://localhost:3000',
30
+ * tokenStorage: {
31
+ * async get() {
32
+ * const data = localStorage.getItem('mero-token');
33
+ * return data ? JSON.parse(data) : null;
34
+ * },
35
+ * async set(token) {
36
+ * localStorage.setItem('mero-token', JSON.stringify(token));
37
+ * },
38
+ * async clear() {
39
+ * localStorage.removeItem('mero-token');
40
+ * },
41
+ * },
42
+ * });
43
+ * ```
44
+ *
45
+ * @example React Native AsyncStorage
46
+ * ```typescript
47
+ * import AsyncStorage from '@react-native-async-storage/async-storage';
48
+ *
49
+ * const mero = new MeroJs({
50
+ * baseUrl: 'http://localhost:3000',
51
+ * tokenStorage: {
52
+ * async get() {
53
+ * const data = await AsyncStorage.getItem('mero-token');
54
+ * return data ? JSON.parse(data) : null;
55
+ * },
56
+ * async set(token) {
57
+ * await AsyncStorage.setItem('mero-token', JSON.stringify(token));
58
+ * },
59
+ * async clear() {
60
+ * await AsyncStorage.removeItem('mero-token');
61
+ * },
62
+ * },
63
+ * });
64
+ * ```
65
+ */
66
+ tokenStorage?: TokenStorage;
67
+ }
68
+ /**
69
+ * Interface for custom token storage implementations.
70
+ * Allows persistence of tokens across sessions in any environment.
71
+ */
72
+ export interface TokenStorage {
73
+ /** Get the stored token data */
74
+ get(): Promise<TokenData | null>;
75
+ /** Store the token data */
76
+ set(token: TokenData): Promise<void>;
77
+ /** Clear the stored token data */
78
+ clear(): Promise<void>;
15
79
  }
16
80
  export interface TokenData {
17
81
  access_token: string;
@@ -26,9 +90,26 @@ export declare class MeroJs {
26
90
  private httpClient;
27
91
  private authClient;
28
92
  private adminClient;
93
+ private rpcClient;
29
94
  private tokenData;
30
95
  private refreshPromise;
96
+ private tokenStorage;
31
97
  constructor(config: MeroJsConfig);
98
+ /**
99
+ * Initialize the SDK by loading tokens from storage (if provided).
100
+ * Call this after construction if using tokenStorage.
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const mero = new MeroJs({ baseUrl: '...', tokenStorage: myStorage });
105
+ * await mero.init(); // Load stored tokens
106
+ *
107
+ * if (!mero.isAuthenticated()) {
108
+ * await mero.authenticate({ username: '...', password: '...' });
109
+ * }
110
+ * ```
111
+ */
112
+ init(): Promise<void>;
32
113
  /**
33
114
  * Get the Auth API client
34
115
  */
@@ -37,6 +118,37 @@ export declare class MeroJs {
37
118
  * Get the Admin API client
38
119
  */
39
120
  get admin(): AdminApiClient;
121
+ /**
122
+ * Get the RPC client for executing queries and mutations
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * // Execute a query
127
+ * const result = await meroJs.rpc.query(
128
+ * 'context-id',
129
+ * 'get',
130
+ * { key: 'myKey' },
131
+ * 'ed25519:executor-public-key'
132
+ * );
133
+ *
134
+ * // Execute a mutation
135
+ * await meroJs.rpc.mutate(
136
+ * 'context-id',
137
+ * 'set',
138
+ * { key: 'myKey', value: 'myValue' },
139
+ * 'ed25519:executor-public-key'
140
+ * );
141
+ *
142
+ * // Or use the generic execute method
143
+ * const result = await meroJs.rpc.execute({
144
+ * contextId: 'context-id',
145
+ * method: 'set',
146
+ * args: { key: 'myKey', value: 'myValue' },
147
+ * executorPublicKey: 'ed25519:...',
148
+ * });
149
+ * ```
150
+ */
151
+ get rpc(): RpcClient;
40
152
  /**
41
153
  * Authenticate with the provided credentials
42
154
  * This will create the root key on first use
@@ -46,21 +158,37 @@ export declare class MeroJs {
46
158
  password: string;
47
159
  }): Promise<TokenData>;
48
160
  /**
49
- * Get a valid token, refreshing if necessary
161
+ * Get a valid token, refreshing if necessary.
162
+ * This is called automatically by the HTTP client.
163
+ *
164
+ * Note: The HTTP client also handles 401 errors with automatic refresh,
165
+ * so this preemptive check is an optimization to avoid unnecessary 401s.
50
166
  */
51
167
  private getValidToken;
52
168
  /**
53
- * Refresh the access token using the refresh token
169
+ * Refresh the access token using the refresh token.
170
+ * Called automatically when token is about to expire or on 401.
171
+ *
172
+ * @deprecated Use performTokenRefresh instead - this is kept for compatibility
54
173
  */
55
174
  private refreshToken;
56
175
  /**
57
- * Perform the actual token refresh
176
+ * Perform the actual token refresh.
177
+ * This is used by both preemptive refresh and HTTP client's 401 handler.
178
+ *
179
+ * Uses a shared promise to prevent multiple simultaneous refresh attempts,
180
+ * even when called from multiple sources (preemptive check, HTTP 401 handler, etc.)
58
181
  */
59
182
  private performTokenRefresh;
60
183
  /**
61
- * Clear the current token
184
+ * Internal: Actually perform the refresh request.
185
+ * Called only from performTokenRefresh() which manages the deduplication.
62
186
  */
63
- clearToken(): void;
187
+ private doTokenRefresh;
188
+ /**
189
+ * Clear the current token from memory and storage
190
+ */
191
+ clearToken(): Promise<void>;
64
192
  /**
65
193
  * Check if the SDK is authenticated
66
194
  */
@@ -69,6 +197,69 @@ export declare class MeroJs {
69
197
  * Get the current token data (for debugging)
70
198
  */
71
199
  getTokenData(): TokenData | null;
200
+ /**
201
+ * Manually set the token data.
202
+ * Use this when handling authentication externally (e.g., OAuth flows).
203
+ *
204
+ * @param tokenData - The token data to set, or null to clear
205
+ * @example
206
+ * ```typescript
207
+ * // After receiving tokens from external auth flow
208
+ * await meroJs.setToken({
209
+ * access_token: 'eyJ...',
210
+ * refresh_token: 'eyJ...',
211
+ * expires_at: Date.now() + 3600000,
212
+ * });
213
+ * ```
214
+ */
215
+ setToken(tokenData: TokenData | null): Promise<void>;
216
+ /**
217
+ * Create a WebSocket client for real-time event subscriptions
218
+ *
219
+ * @param options - Optional WebSocket client options to override defaults
220
+ * @returns A new WebSocketClient instance
221
+ *
222
+ * @example
223
+ * ```typescript
224
+ * const ws = meroJs.createWebSocket();
225
+ * await ws.connect();
226
+ *
227
+ * ws.onEvent((event) => {
228
+ * console.log('Received event:', event);
229
+ * });
230
+ *
231
+ * await ws.subscribe(['context-id-1', 'context-id-2']);
232
+ *
233
+ * // Later...
234
+ * ws.disconnect();
235
+ * ```
236
+ */
237
+ createWebSocket(options?: Partial<Omit<WebSocketClientOptions, 'baseUrl' | 'getAuthToken'>>): WebSocketClient;
238
+ /**
239
+ * Create an SSE client for server-sent event streaming
240
+ *
241
+ * @param options - Optional SSE client options to override defaults
242
+ * @returns A new SseClient instance
243
+ *
244
+ * @example
245
+ * ```typescript
246
+ * const sse = meroJs.createSse();
247
+ * const sessionId = await sse.connect();
248
+ *
249
+ * sse.onEvent((event) => {
250
+ * console.log('Received event:', event);
251
+ * });
252
+ *
253
+ * await sse.subscribe(['context-id-1', 'context-id-2']);
254
+ *
255
+ * // Get session info
256
+ * const session = await sse.getSession();
257
+ *
258
+ * // Later...
259
+ * sse.disconnect();
260
+ * ```
261
+ */
262
+ createSse(options?: Partial<Omit<SseClientOptions, 'baseUrl' | 'httpClient' | 'getAuthToken'>>): SseClient;
72
263
  }
73
264
  /**
74
265
  * Create a new MeroJs SDK instance
@@ -1 +1 @@
1
- {"version":3,"file":"mero-js.d.ts","sourceRoot":"","sources":["../src/mero-js.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,WAAW,CAAC,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAmC;gBAE7C,MAAM,EAAE,YAAY;IAyChC;;OAEG;IACH,IAAI,IAAI,IAAI,aAAa,CAExB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,cAAc,CAE1B;IAED;;;OAGG;IACG,YAAY,CAAC,WAAW,CAAC,EAAE;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,SAAS,CAAC;IAmCtB;;OAEG;YACW,aAAa;IAc3B;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,mBAAmB;IA2BjC;;OAEG;IACI,UAAU,IAAI,IAAI;IAIzB;;OAEG;IACI,eAAe,IAAI,OAAO;IAIjC;;OAEG;IACI,YAAY,IAAI,SAAS,GAAG,IAAI;CAGxC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEzD"}
1
+ {"version":3,"file":"mero-js.d.ts","sourceRoot":"","sources":["../src/mero-js.ts"],"names":[],"mappings":"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"}