@calimero-network/mero-js 1.0.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/admin-api/admin-client.d.ts +29 -27
  2. package/dist/admin-api/admin-client.d.ts.map +1 -1
  3. package/dist/admin-api/admin-client.js +70 -58
  4. package/dist/admin-api/admin-client.js.map +1 -1
  5. package/dist/admin-api/admin-types.d.ts +57 -159
  6. package/dist/admin-api/admin-types.d.ts.map +1 -1
  7. package/dist/admin-api/admin-types.js +1 -1
  8. package/dist/admin-api/admin-types.js.map +1 -1
  9. package/dist/auth/index.d.ts +26 -0
  10. package/dist/auth/index.d.ts.map +1 -0
  11. package/dist/auth/index.js +51 -0
  12. package/dist/auth/index.js.map +1 -0
  13. package/dist/events/index.d.ts +5 -0
  14. package/dist/events/index.d.ts.map +1 -0
  15. package/dist/events/index.js +3 -0
  16. package/dist/events/index.js.map +1 -0
  17. package/dist/events/sse.d.ts +41 -0
  18. package/dist/events/sse.d.ts.map +1 -0
  19. package/dist/events/sse.js +237 -0
  20. package/dist/events/sse.js.map +1 -0
  21. package/dist/events/ws.d.ts +42 -0
  22. package/dist/events/ws.d.ts.map +1 -0
  23. package/dist/events/ws.js +178 -0
  24. package/dist/events/ws.js.map +1 -0
  25. package/dist/http-client/http-factory.d.ts +18 -0
  26. package/dist/http-client/http-factory.d.ts.map +1 -1
  27. package/dist/http-client/http-factory.js +2 -0
  28. package/dist/http-client/http-factory.js.map +1 -1
  29. package/dist/http-client/http-types.d.ts +6 -0
  30. package/dist/http-client/http-types.d.ts.map +1 -1
  31. package/dist/http-client/web-client.d.ts +2 -0
  32. package/dist/http-client/web-client.d.ts.map +1 -1
  33. package/dist/http-client/web-client.js +129 -58
  34. package/dist/http-client/web-client.js.map +1 -1
  35. package/dist/index.browser.mjs +2 -1
  36. package/dist/index.browser.mjs.map +4 -4
  37. package/dist/index.cjs +784 -148
  38. package/dist/index.cjs.map +4 -4
  39. package/dist/index.d.ts +8 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +8 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/index.mjs +784 -148
  44. package/dist/index.mjs.map +4 -4
  45. package/dist/mero-js.d.ts +47 -1
  46. package/dist/mero-js.d.ts.map +1 -1
  47. package/dist/mero-js.js +132 -16
  48. package/dist/mero-js.js.map +1 -1
  49. package/dist/rpc/index.d.ts +21 -0
  50. package/dist/rpc/index.d.ts.map +1 -0
  51. package/dist/rpc/index.js +39 -0
  52. package/dist/rpc/index.js.map +1 -0
  53. package/dist/token-store/index.d.ts +20 -0
  54. package/dist/token-store/index.d.ts.map +1 -0
  55. package/dist/token-store/index.js +62 -0
  56. package/dist/token-store/index.js.map +1 -0
  57. package/package.json +1 -1
package/dist/mero-js.js CHANGED
@@ -1,6 +1,30 @@
1
1
  import { createBrowserHttpClient } from './http-client';
2
2
  import { createAuthApiClientFromHttpClient } from './auth-api';
3
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
+ }
4
28
  /**
5
29
  * Main MeroJs SDK class that manages all API clients and authentication
6
30
  */
@@ -8,10 +32,19 @@ export class MeroJs {
8
32
  constructor(config) {
9
33
  this.tokenData = null;
10
34
  this.refreshPromise = null;
35
+ this.rpcClient = null;
36
+ this.sseClient = null;
37
+ this.wsClient = null;
38
+ this.wsWarned = false;
11
39
  this.config = {
12
40
  timeoutMs: 10000,
13
41
  ...config,
14
42
  };
43
+ this.tokenStore = config.tokenStore ?? null;
44
+ // Restore tokens from store if available
45
+ if (this.tokenStore) {
46
+ this.tokenData = this.tokenStore.getTokens();
47
+ }
15
48
  // Create HTTP client with token management
16
49
  // For Tauri, explicitly set credentials to 'omit' to avoid network errors
17
50
  const isTauri = typeof window !== 'undefined' && '__TAURI_INTERNALS__' in window;
@@ -21,6 +54,16 @@ export class MeroJs {
21
54
  const token = await this.getValidToken();
22
55
  return token?.access_token || '';
23
56
  },
57
+ refreshToken: async () => {
58
+ const refreshed = await this.performTokenRefresh();
59
+ return refreshed.access_token;
60
+ },
61
+ onTokenRefresh: async (newToken) => {
62
+ if (this.tokenData) {
63
+ this.tokenData.access_token = newToken;
64
+ this.tokenStore?.setTokens(this.tokenData);
65
+ }
66
+ },
24
67
  timeoutMs: this.config.timeoutMs,
25
68
  credentials: this.config.requestCredentials ?? (isTauri ? 'omit' : undefined),
26
69
  });
@@ -41,7 +84,6 @@ export class MeroJs {
41
84
  },
42
85
  timeoutMs: this.config.timeoutMs,
43
86
  });
44
- // Token management is in-memory only
45
87
  }
46
88
  /**
47
89
  * Get the Auth API client
@@ -55,6 +97,50 @@ export class MeroJs {
55
97
  get admin() {
56
98
  return this.adminClient;
57
99
  }
100
+ /**
101
+ * Get the RPC client (lazy initialized)
102
+ */
103
+ get rpc() {
104
+ if (!this.rpcClient) {
105
+ this.rpcClient = new RpcClient({ httpClient: this.httpClient });
106
+ }
107
+ return this.rpcClient;
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
+ }
58
144
  /**
59
145
  * Authenticate with the provided credentials
60
146
  * This will create the root key on first use
@@ -77,11 +163,13 @@ export class MeroJs {
77
163
  },
78
164
  };
79
165
  const response = await this.authClient.generateTokens(requestBody);
166
+ const accessToken = response.data.access_token;
80
167
  this.tokenData = {
81
- access_token: response.data.access_token,
168
+ access_token: accessToken,
82
169
  refresh_token: response.data.refresh_token,
83
- expires_at: Date.now() + 24 * 60 * 60 * 1000, // Default to 24 hours
170
+ expires_at: expiresAtFromJwt(accessToken, Date.now() + 3600000),
84
171
  };
172
+ this.tokenStore?.setTokens(this.tokenData);
85
173
  return this.tokenData;
86
174
  }
87
175
  catch (error) {
@@ -89,17 +177,12 @@ export class MeroJs {
89
177
  }
90
178
  }
91
179
  /**
92
- * Get a valid token, refreshing if necessary
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.
93
184
  */
94
185
  async getValidToken() {
95
- if (!this.tokenData) {
96
- return null;
97
- }
98
- // Check if token is expired (with 5 minute buffer)
99
- const bufferTime = 5 * 60 * 1000; // 5 minutes
100
- if (Date.now() >= this.tokenData.expires_at - bufferTime) {
101
- return await this.refreshToken();
102
- }
103
186
  return this.tokenData;
104
187
  }
105
188
  /**
@@ -134,16 +217,19 @@ export class MeroJs {
134
217
  access_token: this.tokenData.access_token,
135
218
  refresh_token: this.tokenData.refresh_token,
136
219
  });
220
+ const accessToken = response.data.access_token;
137
221
  this.tokenData = {
138
- access_token: response.data.access_token,
222
+ access_token: accessToken,
139
223
  refresh_token: response.data.refresh_token,
140
- expires_at: Date.now() + 24 * 60 * 60 * 1000, // Default to 24 hours
224
+ expires_at: expiresAtFromJwt(accessToken, Date.now() + 3600000),
141
225
  };
226
+ this.tokenStore?.setTokens(this.tokenData);
142
227
  return this.tokenData;
143
228
  }
144
229
  catch (error) {
145
- // If refresh fails, clear the token and require re-authentication
146
- 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.
147
233
  throw new Error(`Token refresh failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
148
234
  }
149
235
  }
@@ -152,6 +238,7 @@ export class MeroJs {
152
238
  */
153
239
  clearToken() {
154
240
  this.tokenData = null;
241
+ this.tokenStore?.clear();
155
242
  }
156
243
  /**
157
244
  * Check if the SDK is authenticated
@@ -159,12 +246,41 @@ export class MeroJs {
159
246
  isAuthenticated() {
160
247
  return this.tokenData !== null;
161
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
+ }
162
259
  /**
163
260
  * Get the current token data (for debugging)
164
261
  */
165
262
  getTokenData() {
166
263
  return this.tokenData;
167
264
  }
265
+ /**
266
+ * Close all event connections and clean up resources
267
+ */
268
+ close() {
269
+ this.sseClient?.close();
270
+ this.wsClient?.close();
271
+ }
272
+ /**
273
+ * Parse an auth callback URL hash fragment (static utility)
274
+ */
275
+ static parseAuthCallback(url) {
276
+ return parseAuthCallback(url);
277
+ }
278
+ /**
279
+ * Build an auth login URL (static utility)
280
+ */
281
+ static buildAuthLoginUrl(nodeUrl, opts) {
282
+ return buildAuthLoginUrl(nodeUrl, opts);
283
+ }
168
284
  }
169
285
  /**
170
286
  * Create a new MeroJs SDK instance
@@ -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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"}
@@ -0,0 +1,21 @@
1
+ import type { HttpClient } from '../http-client';
2
+ export interface ExecuteParams {
3
+ contextId: string;
4
+ method: string;
5
+ argsJson?: Record<string, unknown>;
6
+ executorPublicKey: string;
7
+ }
8
+ export declare class RpcError extends Error {
9
+ code: number;
10
+ type?: string;
11
+ data?: unknown;
12
+ constructor(code: number, message: string, data?: unknown, type?: string);
13
+ }
14
+ export declare class RpcClient {
15
+ private httpClient;
16
+ constructor(opts: {
17
+ httpClient: HttpClient;
18
+ });
19
+ execute<T = unknown>(params: ExecuteParams): Promise<T>;
20
+ }
21
+ //# 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,iBAAiB,EAAE,MAAM,CAAC;CAC3B;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;CA+B9D"}
@@ -0,0 +1,39 @@
1
+ export class RpcError extends Error {
2
+ constructor(code, message, data, type) {
3
+ super(message);
4
+ this.name = 'RpcError';
5
+ this.code = code;
6
+ this.data = data;
7
+ this.type = type;
8
+ }
9
+ }
10
+ export class RpcClient {
11
+ constructor(opts) {
12
+ this.httpClient = opts.httpClient;
13
+ }
14
+ async execute(params) {
15
+ const body = {
16
+ jsonrpc: '2.0',
17
+ id: 1,
18
+ method: 'execute',
19
+ params: {
20
+ contextId: params.contextId,
21
+ method: params.method,
22
+ argsJson: params.argsJson ?? {},
23
+ executorPublicKey: params.executorPublicKey,
24
+ },
25
+ };
26
+ const response = await this.httpClient.post('/jsonrpc', body);
27
+ if (response.error) {
28
+ const err = response.error;
29
+ const code = err.code ?? -1;
30
+ const message = err.message ?? err.type ?? 'RPC error';
31
+ throw new RpcError(code, message, err.data, err.type);
32
+ }
33
+ if (response.result && 'output' in response.result) {
34
+ return response.result.output;
35
+ }
36
+ return response.result;
37
+ }
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rpc/index.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAKjC,YAAY,IAAY,EAAE,OAAe,EAAE,IAAc,EAAE,IAAa;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAmBD,MAAM,OAAO,SAAS;IAGpB,YAAY,IAAgC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAO,CAAc,MAAqB;QAC9C,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,CAAC;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE;gBACN,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;gBAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;aAC5C;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,UAAU,EACV,IAAI,CACL,CAAC;QAEF,IAAI,QAAQ,CAAC,KAAK,EAAE;YAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC;YACvD,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACvD;QAED,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAClD,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAW,CAAC;SACpC;QAED,OAAO,QAAQ,CAAC,MAAW,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import type { TokenData } from '../mero-js';
2
+ export interface TokenStore {
3
+ getTokens(): TokenData | null;
4
+ setTokens(data: TokenData): void;
5
+ clear(): void;
6
+ }
7
+ export declare class MemoryTokenStore implements TokenStore {
8
+ private tokens;
9
+ getTokens(): TokenData | null;
10
+ setTokens(data: TokenData): void;
11
+ clear(): void;
12
+ }
13
+ export declare class LocalStorageTokenStore implements TokenStore {
14
+ private readonly key;
15
+ constructor(key?: string);
16
+ getTokens(): TokenData | null;
17
+ setTokens(data: TokenData): void;
18
+ clear(): void;
19
+ }
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/token-store/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,UAAU;IACzB,SAAS,IAAI,SAAS,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,MAAM,CAA0B;IAExC,SAAS,IAAI,SAAS,GAAG,IAAI;IAI7B,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAIhC,KAAK,IAAI,IAAI;CAGd;AAID,qBAAa,sBAAuB,YAAW,UAAU;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,GAAG,GAAE,MAAoB;IAIrC,SAAS,IAAI,SAAS,GAAG,IAAI;IAmB7B,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAShC,KAAK,IAAI,IAAI;CAQd"}
@@ -0,0 +1,62 @@
1
+ export class MemoryTokenStore {
2
+ constructor() {
3
+ this.tokens = null;
4
+ }
5
+ getTokens() {
6
+ return this.tokens;
7
+ }
8
+ setTokens(data) {
9
+ this.tokens = data;
10
+ }
11
+ clear() {
12
+ this.tokens = null;
13
+ }
14
+ }
15
+ const STORAGE_KEY = 'mero-tokens';
16
+ export class LocalStorageTokenStore {
17
+ constructor(key = STORAGE_KEY) {
18
+ this.key = key;
19
+ }
20
+ getTokens() {
21
+ try {
22
+ if (typeof localStorage === 'undefined')
23
+ return null;
24
+ const raw = localStorage.getItem(this.key);
25
+ if (!raw)
26
+ return null;
27
+ const parsed = JSON.parse(raw);
28
+ if (parsed && parsed.access_token && parsed.refresh_token) {
29
+ return {
30
+ access_token: parsed.access_token,
31
+ refresh_token: parsed.refresh_token,
32
+ expires_at: typeof parsed.expires_at === 'number' ? parsed.expires_at : Date.now() + 3600000,
33
+ };
34
+ }
35
+ return null;
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ setTokens(data) {
42
+ try {
43
+ if (typeof localStorage === 'undefined')
44
+ return;
45
+ localStorage.setItem(this.key, JSON.stringify(data));
46
+ }
47
+ catch {
48
+ // Storage unavailable
49
+ }
50
+ }
51
+ clear() {
52
+ try {
53
+ if (typeof localStorage === 'undefined')
54
+ return;
55
+ localStorage.removeItem(this.key);
56
+ }
57
+ catch {
58
+ // Storage unavailable
59
+ }
60
+ }
61
+ }
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/token-store/index.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,gBAAgB;IAA7B;QACU,WAAM,GAAqB,IAAI,CAAC;IAa1C,CAAC;IAXC,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,IAAe;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF;AAED,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAM,OAAO,sBAAsB;IAGjC,YAAY,MAAc,WAAW;QACnC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,SAAS;QACP,IAAI;YACF,IAAI,OAAO,YAAY,KAAK,WAAW;gBAAE,OAAO,IAAI,CAAC;YACrD,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,aAAa,EAAE;gBACzD,OAAO;oBACL,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,UAAU,EAAE,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAQ;iBAC9F,CAAC;aACH;YACD,OAAO,IAAI,CAAC;SACb;QAAC,MAAM;YACN,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,SAAS,CAAC,IAAe;QACvB,IAAI;YACF,IAAI,OAAO,YAAY,KAAK,WAAW;gBAAE,OAAO;YAChD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SACtD;QAAC,MAAM;YACN,sBAAsB;SACvB;IACH,CAAC;IAED,KAAK;QACH,IAAI;YACF,IAAI,OAAO,YAAY,KAAK,WAAW;gBAAE,OAAO;YAChD,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACnC;QAAC,MAAM;YACN,sBAAsB;SACvB;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@calimero-network/mero-js",
3
- "version": "1.0.2",
3
+ "version": "1.2.0",
4
4
  "description": "Pure JavaScript SDK for Calimero",
5
5
  "type": "module",
6
6
  "exports": {