@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
@@ -32,15 +32,25 @@ function headersToRecord(headers) {
32
32
  export class WebHttpClient {
33
33
  constructor(transport) {
34
34
  this.transport = transport;
35
+ // Cache for concurrent refresh token calls to prevent race conditions
36
+ this.refreshTokenPromise = null;
37
+ // Cache for concurrent onTokenRefresh calls to prevent duplicate callbacks
38
+ this.onTokenRefreshPromise = null;
35
39
  }
36
40
  async get(path, init) {
37
41
  return this.request(path, { ...init, method: 'GET' });
38
42
  }
39
43
  async post(path, body, init) {
44
+ const jsonBody = body ? JSON.stringify(body) : undefined;
45
+ // Debug: Log the exact request body for /refresh endpoint
46
+ if (path.includes('/refresh')) {
47
+ console.log('[HTTP POST /refresh] Body being sent:', jsonBody);
48
+ console.log('[HTTP POST /refresh] Body type:', typeof body, body ? Object.keys(body) : 'undefined');
49
+ }
40
50
  return this.request(path, {
41
51
  ...init,
42
52
  method: 'POST',
43
- body: body ? JSON.stringify(body) : undefined,
53
+ body: jsonBody,
44
54
  headers: {
45
55
  'Content-Type': 'application/json',
46
56
  ...init?.headers,
@@ -86,56 +96,15 @@ export class WebHttpClient {
86
96
  async request(path, init) {
87
97
  return this.makeRequest(path, init);
88
98
  }
89
- async makeRequest(path, init) {
99
+ async makeRequest(path, init, retryCount = 0, requestStartTime) {
100
+ // Maximum retry attempts to prevent infinite loops
101
+ const MAX_RETRY_ATTEMPTS = 1;
90
102
  const url = this.buildUrl(path);
91
- // Detect Tauri - check multiple ways since __TAURI_INTERNALS__ might not be available
92
- // Also use minimal path if credentials is 'omit' (Tauri workaround)
93
- const hasTauriInternals = typeof window !== 'undefined' && '__TAURI_INTERNALS__' in window;
94
- const hasTauri = typeof window !== 'undefined' && '__TAURI__' in window;
95
- const isTauri = hasTauriInternals || hasTauri || this.transport.credentials === 'omit';
96
- // In Tauri, use absolute minimal RequestInit - just like a direct fetch call
97
- if (isTauri) {
98
- const headers = await this.buildHeaders(init?.headers);
99
- let headersObj;
100
- if (headers instanceof Headers) {
101
- headersObj = {};
102
- headers.forEach((value, key) => {
103
- headersObj[key] = value;
104
- });
105
- }
106
- else {
107
- headersObj = headers;
108
- }
109
- // Build minimal RequestInit - only what's absolutely necessary
110
- const requestInit = {};
111
- if (init?.method && init.method !== 'GET') {
112
- requestInit.method = init.method;
113
- }
114
- if (headersObj && Object.keys(headersObj).length > 0) {
115
- requestInit.headers = headersObj;
116
- }
117
- if (init?.body !== undefined && init.body !== null) {
118
- requestInit.body = init.body;
119
- }
120
- if (this.transport.credentials !== undefined) {
121
- requestInit.credentials = this.transport.credentials;
122
- }
123
- try {
124
- const response = await globalThis.fetch(url, requestInit);
125
- if (!response.ok) {
126
- const bodyText = await this.getBodyText(response);
127
- throw new HTTPError(response.status, response.statusText, url, response.headers, bodyText);
128
- }
129
- return this.parseResponse(response, init?.parse);
130
- }
131
- catch (error) {
132
- if (error instanceof HTTPError) {
133
- throw error;
134
- }
135
- throw new HTTPError(0, 'Network Error', url, new Headers(), error instanceof Error ? error.message : 'Unknown error');
136
- }
137
- }
138
- // Non-Tauri: use full implementation with signals, etc.
103
+ // Track request start time for timeout calculation (only on first attempt)
104
+ // Use per-request start time to avoid corruption from concurrent requests
105
+ const startTime = requestStartTime ?? Date.now();
106
+ // Note: Tauri proxy script now handles AbortSignal, so we can use full RequestInit
107
+ // Removed Tauri-specific minimal path - proxy script handles AbortSignal properly
139
108
  const signal = this.createAbortSignal(init);
140
109
  const headers = await this.buildHeaders(init?.headers);
141
110
  let headersObj;
@@ -152,11 +121,41 @@ export class WebHttpClient {
152
121
  method: init?.method || 'GET',
153
122
  headers: headersObj,
154
123
  };
155
- if (init?.body !== undefined) {
124
+ // Check if body is a stream (ReadableStream) that can't be reused
125
+ // Note: Blob is reusable, so it's not included here
126
+ const isStreamBody = init?.body instanceof ReadableStream ||
127
+ (typeof init?.body === 'object' && init?.body !== null && 'getReader' in init.body && !(init.body instanceof Blob));
128
+ if (init?.body !== undefined && !isStreamBody) {
129
+ requestInit.body = init.body;
130
+ }
131
+ else if (init?.body !== undefined && isStreamBody && retryCount === 0) {
132
+ // Only include stream body on first attempt - can't retry with streams
156
133
  requestInit.body = init.body;
157
134
  }
158
- if (signal) {
159
- requestInit.signal = signal;
135
+ // For retries, calculate remaining timeout to prevent timeout reset
136
+ // Track elapsed time and use remaining timeout for retry
137
+ // Note: This is calculated before the request, so it doesn't include token refresh time
138
+ // The actual remaining timeout check happens after token refresh completes
139
+ let retrySignal;
140
+ if (retryCount > 0 && requestStartTime !== undefined) {
141
+ const timeoutMs = init?.timeoutMs || this.transport.timeoutMs;
142
+ if (timeoutMs) {
143
+ // Calculate elapsed time (will be recalculated after token refresh if needed)
144
+ const elapsed = Date.now() - startTime;
145
+ const remaining = Math.max(0, timeoutMs - elapsed);
146
+ // Create signal with remaining timeout, preserving user's signal
147
+ retrySignal = this.createAbortSignal({ ...init, timeoutMs: remaining });
148
+ }
149
+ else {
150
+ // No timeout, just preserve user's signal
151
+ retrySignal = this.createAbortSignal(init);
152
+ }
153
+ }
154
+ else {
155
+ retrySignal = signal;
156
+ }
157
+ if (retrySignal) {
158
+ requestInit.signal = retrySignal;
160
159
  }
161
160
  if (this.transport.credentials !== undefined) {
162
161
  requestInit.credentials = this.transport.credentials;
@@ -186,7 +185,92 @@ export class WebHttpClient {
186
185
  const response = await this.transport.fetch(url, requestInit);
187
186
  if (!response.ok) {
188
187
  const bodyText = await this.getBodyText(response);
189
- throw new HTTPError(response.status, response.statusText, url, response.headers, bodyText);
188
+ const httpError = new HTTPError(response.status, response.statusText, url, response.headers, bodyText);
189
+ // Handle 401 - attempt automatic token refresh
190
+ // Attempt refresh on ANY 401 when we have a refresh token callback,
191
+ // not just when x-auth-error header is present (server implementations vary)
192
+ // Don't retry if user aborted the request
193
+ const userAborted = init?.signal?.aborted === true;
194
+ const hasAuthError = response.headers.get('x-auth-error');
195
+ const shouldAttemptRefresh = response.status === 401 &&
196
+ this.transport.refreshToken &&
197
+ retryCount < MAX_RETRY_ATTEMPTS &&
198
+ !isStreamBody && // Can't retry with stream bodies
199
+ !userAborted; // Don't retry if user aborted
200
+ if (shouldAttemptRefresh && this.transport.refreshToken) {
201
+ console.log('[mero-js] 401 received, attempting token refresh...', { hasAuthError });
202
+ try {
203
+ // Use cached refresh promise if one is in progress (prevents race conditions)
204
+ let refreshPromise = this.refreshTokenPromise;
205
+ if (!refreshPromise) {
206
+ refreshPromise = this.transport.refreshToken();
207
+ this.refreshTokenPromise = refreshPromise;
208
+ }
209
+ // Attempt to refresh the token
210
+ const newToken = await refreshPromise;
211
+ // Validate token - must be non-empty
212
+ if (!newToken || newToken.trim() === '') {
213
+ // Clear caches on error
214
+ this.refreshTokenPromise = null;
215
+ this.onTokenRefreshPromise = null;
216
+ throw new Error('Refresh token returned empty token');
217
+ }
218
+ // onTokenRefresh is required when refreshToken is provided
219
+ // Without it, the new token cannot be stored and getAuthToken() will return the old token
220
+ if (!this.transport.onTokenRefresh) {
221
+ // Clear caches on error
222
+ this.refreshTokenPromise = null;
223
+ this.onTokenRefreshPromise = null;
224
+ throw new Error('onTokenRefresh callback is required when refreshToken is provided. ' +
225
+ 'The callback must update the token storage so getAuthToken() returns the new token.');
226
+ }
227
+ // Use cached onTokenRefresh promise if one is in progress (prevents duplicate callbacks)
228
+ // This ensures onTokenRefresh is only called once per token refresh, even with concurrent requests
229
+ let onTokenRefreshPromise = this.onTokenRefreshPromise;
230
+ if (!onTokenRefreshPromise) {
231
+ onTokenRefreshPromise = this.transport.onTokenRefresh(newToken);
232
+ this.onTokenRefreshPromise = onTokenRefreshPromise;
233
+ }
234
+ // Update token via callback (only called once per refresh, even with concurrent requests)
235
+ // Errors from onTokenRefresh callback should be preserved (don't mask as 401)
236
+ // This helps developers debug token storage issues
237
+ await onTokenRefreshPromise;
238
+ // Clear caches after both refresh and callback complete
239
+ this.refreshTokenPromise = null;
240
+ this.onTokenRefreshPromise = null;
241
+ // Check if timeout has expired during token refresh
242
+ // If so, throw the original 401 error instead of retrying with 0ms timeout
243
+ // This prevents timeout/abort errors that obscure the root cause (expired token)
244
+ const timeoutMs = init?.timeoutMs || this.transport.timeoutMs;
245
+ if (timeoutMs && requestStartTime !== undefined) {
246
+ const elapsed = Date.now() - startTime;
247
+ const remaining = timeoutMs - elapsed;
248
+ if (remaining <= 0) {
249
+ // Timeout expired during token refresh - throw original 401 error
250
+ // This is better than retrying with 0ms timeout which would cause confusing timeout errors
251
+ throw httpError;
252
+ }
253
+ }
254
+ // Retry the request with the new token (increment retry count)
255
+ // Preserve user's abort signal and start time in retry
256
+ return this.makeRequest(path, init, retryCount + 1, startTime);
257
+ }
258
+ catch (refreshError) {
259
+ // Clear caches on error
260
+ this.refreshTokenPromise = null;
261
+ this.onTokenRefreshPromise = null;
262
+ console.log('[mero-js] Token refresh failed:', refreshError);
263
+ // Configuration errors (missing onTokenRefresh) should be thrown as-is
264
+ if (refreshError instanceof Error && refreshError.message.includes('onTokenRefresh')) {
265
+ throw refreshError;
266
+ }
267
+ // Errors from onTokenRefresh callback are already thrown above, so if we get here,
268
+ // it's either a refreshToken() failure or empty token - throw original 401
269
+ // This matches the PR description: "If refresh fails, throws the original 401 error"
270
+ throw httpError;
271
+ }
272
+ }
273
+ throw httpError;
190
274
  }
191
275
  return this.parseResponse(response, init?.parse);
192
276
  }
@@ -194,6 +278,10 @@ export class WebHttpClient {
194
278
  if (error instanceof HTTPError) {
195
279
  throw error;
196
280
  }
281
+ // Preserve configuration errors (like missing onTokenRefresh)
282
+ if (error instanceof Error && error.message.includes('onTokenRefresh')) {
283
+ throw error;
284
+ }
197
285
  throw new HTTPError(0, 'Network Error', url, new Headers(), error instanceof Error ? error.message : 'Unknown error');
198
286
  }
199
287
  }
@@ -216,11 +304,6 @@ export class WebHttpClient {
216
304
  }
217
305
  }
218
306
  createAbortSignal(init) {
219
- // Skip AbortSignal in Tauri - it causes HTTP 0 Network Error
220
- const isTauri = typeof window !== 'undefined' && '__TAURI_INTERNALS__' in window;
221
- if (isTauri) {
222
- return undefined;
223
- }
224
307
  const signals = [];
225
308
  if (this.transport.defaultAbortSignal) {
226
309
  signals.push(this.transport.defaultAbortSignal);
@@ -1 +1 @@
1
- {"version":3,"file":"web-client.js","sourceRoot":"","sources":["../../src/http-client/web-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-client.js","sourceRoot":"","sources":["../../src/http-client/web-client.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- function b(n){let e=n.filter(Boolean);if(e.length===0)return;let t=AbortSignal;if(typeof t.any=="function")try{return t.any(e)}catch{}let s=new AbortController,r=o=>{s.abort(o.target.reason);for(let u of e)u.removeEventListener("abort",r)};for(let o of e){if(o.aborted)return AbortSignal.abort(o.reason);o.addEventListener("abort",r,{once:!0})}return s.signal}function P(n){if(typeof AbortSignal.timeout=="function")return AbortSignal.timeout(n);let e=new AbortController;return setTimeout(()=>{e.abort(new DOMException("Timeout","TimeoutError"))},n),e.signal}var c=class extends Error{constructor(t,s,r,o,u){super(`HTTP ${t} ${s}`);this.status=t;this.statusText=s;this.url=r;this.headers=o;this.bodyText=u;this.name="HTTPError"}toJSON(){return{status:this.status,statusText:this.statusText,url:this.url,headers:x(this.headers),bodyText:this.bodyText}}};function x(n){let e={};return n.forEach((t,s)=>{e[s]=t}),e}var g=class{constructor(e){this.transport=e}async get(e,t){return this.request(e,{...t,method:"GET"})}async post(e,t,s){return this.request(e,{...s,method:"POST",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...s?.headers}})}async put(e,t,s){return this.request(e,{...s,method:"PUT",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...s?.headers}})}async delete(e,t){return this.request(e,{...t,method:"DELETE"})}async patch(e,t,s){return this.request(e,{...s,method:"PATCH",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...s?.headers}})}async head(e,t){let s=await this.makeRequest(e,{...t,method:"HEAD",parse:"response"});return{headers:x(s.headers),status:s.status}}async request(e,t){return this.makeRequest(e,t)}async makeRequest(e,t){let s=this.buildUrl(e),r=typeof window<"u"&&"__TAURI_INTERNALS__"in window,o=typeof window<"u"&&"__TAURI__"in window;if(r||o||this.transport.credentials==="omit"){let i=await this.buildHeaders(t?.headers),p;i instanceof Headers?(p={},i.forEach((l,k)=>{p[k]=l})):p=i;let f={};t?.method&&t.method!=="GET"&&(f.method=t.method),p&&Object.keys(p).length>0&&(f.headers=p),t?.body!==void 0&&t.body!==null&&(f.body=t.body),this.transport.credentials!==void 0&&(f.credentials=this.transport.credentials);try{let l=await globalThis.fetch(s,f);if(!l.ok){let k=await this.getBodyText(l);throw new c(l.status,l.statusText,s,l.headers,k)}return this.parseResponse(l,t?.parse)}catch(l){throw l instanceof c?l:new c(0,"Network Error",s,new Headers,l instanceof Error?l.message:"Unknown error")}}let w=this.createAbortSignal(t),C=await this.buildHeaders(t?.headers),h;C instanceof Headers?(h={},C.forEach((i,p)=>{h[p]=i})):h=C;let a={method:t?.method||"GET",headers:h};t?.body!==void 0&&(a.body=t.body),w&&(a.signal=w),this.transport.credentials!==void 0&&(a.credentials=this.transport.credentials),t?.mode!==void 0&&(a.mode=t.mode),t?.cache!==void 0&&(a.cache=t.cache),t?.redirect!==void 0&&(a.redirect=t.redirect),t?.referrer!==void 0&&(a.referrer=t.referrer),t?.referrerPolicy!==void 0&&(a.referrerPolicy=t.referrerPolicy),t?.integrity!==void 0&&(a.integrity=t.integrity),t?.keepalive!==void 0&&(a.keepalive=t.keepalive);try{let i=await this.transport.fetch(s,a);if(!i.ok){let p=await this.getBodyText(i);throw new c(i.status,i.statusText,s,i.headers,p)}return this.parseResponse(i,t?.parse)}catch(i){throw i instanceof c?i:new c(0,"Network Error",s,new Headers,i instanceof Error?i.message:"Unknown error")}}buildUrl(e){if(e.startsWith("http://")||e.startsWith("https://"))return e;let t=this.transport.baseUrl;return e.startsWith("/")?`${t.endsWith("/")?t.slice(0,-1):t}${e}`:`${t.endsWith("/")?t:`${t}/`}${e}`}createAbortSignal(e){if(typeof window<"u"&&"__TAURI_INTERNALS__"in window)return;let s=[];this.transport.defaultAbortSignal&&s.push(this.transport.defaultAbortSignal),e?.signal&&s.push(e.signal);let r=e?.timeoutMs||this.transport.timeoutMs;return r&&s.push(P(r)),s.length>0?b(s):void 0}async buildHeaders(e){let t={...this.transport.defaultHeaders};if(this.transport.getAuthToken)try{let s=await this.transport.getAuthToken();s&&s.trim()!==""&&(t.Authorization=`Bearer ${s}`)}catch{}return e&&(e instanceof Headers?e.forEach((s,r)=>{t[r]=s}):Array.isArray(e)?e.forEach(([s,r])=>{t[s]=r}):Object.assign(t,e)),t}async parseResponse(e,t){switch(t){case"text":return await e.text();case"blob":return await e.blob();case"arrayBuffer":return await e.arrayBuffer();case"response":return e;case"json":default:return await e.json()}}async getBodyText(e){try{let t=await e.text();return t.length>65536?t.slice(0,65536)+"...":t}catch{return""}}};function H(n){return new g(n)}function y(n){let e={fetch:(t,s)=>globalThis.fetch(t,s),baseUrl:n.baseUrl,getAuthToken:n.getAuthToken,onTokenRefresh:n.onTokenRefresh,defaultHeaders:n.defaultHeaders,timeoutMs:n.timeoutMs,credentials:n.credentials,defaultAbortSignal:n.defaultAbortSignal};return H(e)}function S(n){let e=n.fetch??globalThis.fetch;if(!e)throw new Error("No fetch implementation available. Please provide a fetch implementation (e.g., undici.fetch) or use Node.js 18+ which has native fetch support.");let s={fetch:e===globalThis.fetch?(r,o)=>globalThis.fetch(r,o):(r,o)=>e(r,o),baseUrl:n.baseUrl,getAuthToken:n.getAuthToken,onTokenRefresh:n.onTokenRefresh,defaultHeaders:n.defaultHeaders,timeoutMs:n.timeoutMs,credentials:n.credentials,defaultAbortSignal:n.defaultAbortSignal};return H(s)}function D(n){return typeof window<"u"?y(n):S(n)}function _(n,e){if(e<=0)return!1;let s=n?.name;if(s==="TimeoutError")return!0;if(s==="AbortError")return!1;let r=n;if("status"in r&&typeof r.status=="number"){let o=r.status;return o>=500||o===429}return s==="TypeError"}function N(n){let t=250*Math.pow(2,n-1),s=(Math.random()-.5)*.4*t;return Math.max(0,t+s)}async function E(n,e={}){let{attempts:t=3}=e,s;for(let r=1;r<=t;r++)try{return await n(r)}catch(o){if(s=o,!_(s,t-r))throw s;let u=N(r),h=s.headers?.get?.("Retry-After");if(h){let a=parseInt(h,10);if(!isNaN(a))u=Math.max(u,a*1e3);else{let i=new Date(h);if(!isNaN(i.getTime())){let p=Math.max(0,i.getTime()-Date.now());u=Math.max(u,Math.min(p,6e4))}}}await new Promise(a=>setTimeout(a,u))}throw s||new Error("Retry failed without error")}function U(n,e={}){return async(...t)=>E(()=>n(...t),e)}var d=class{constructor(e){this.httpClient=e}async getHealth(){let e=await this.httpClient.get("/auth/health");if(!e.data)throw new Error("Health response data is null");return e.data}async getIdentity(){let e=await this.httpClient.get("/admin/identity");if(!e.data)throw new Error("Identity response data is null");return e.data}async getProviders(){let e=await this.httpClient.get("/auth/providers");if(!e.data)throw new Error("Providers response data is null");return e.data}async getLoginPage(){return this.httpClient.get("/auth/login",{parse:"text"})}async generateTokens(e){return this.httpClient.post("/auth/token",e)}async refreshToken(e){return this.httpClient.post("/auth/refresh",e)}async generateMockTokens(e){return this.httpClient.post("/auth/mock-token",e)}async getChallenge(){return this.httpClient.get("/auth/challenge")}async validateToken(e){try{let t=await this.validateTokenGet(e);return{valid:t.status===200,headers:t.headers,status:t.status}}catch{return{valid:!1,headers:{},status:401}}}async validateTokenGet(e){let t=await this.httpClient.head("/auth/validate",{headers:{Authorization:`Bearer ${e}`}});return{status:t.status,headers:t.headers}}async isAuthed(){return this.httpClient.get("/auth/is-authed")}async revokeTokens(e){return this.httpClient.post("/admin/revoke",e)}async listRootKeys(){let e=await this.httpClient.get("/admin/keys");if(!e.data)throw new Error("Root keys response data is null");return e.data}async createRootKey(e){return this.httpClient.post("/admin/keys",e)}async deleteRootKey(e){return this.httpClient.delete(`/admin/keys/${e}`)}async listClientKeys(){let e=await this.httpClient.get("/admin/keys/clients");if(!e.data)throw new Error("Client keys response data is null");return e.data}async generateClientKey(e){return this.httpClient.post("/admin/client-key",e)}async deleteClientKey(e,t){return this.httpClient.delete(`/admin/keys/${e}/clients/${t}`)}async getKeyPermissions(e){return this.httpClient.get(`/admin/keys/${e}/permissions`)}async updateKeyPermissions(e,t){return this.httpClient.put(`/admin/keys/${e}/permissions`,{permissions:t})}};var T=class{async get(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async post(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async put(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async delete(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async patch(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async head(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}async request(){throw new Error("HTTP client not implemented - use createAuthApiClientFromHttpClient with a real HTTP client")}};function Y(n){let e=new T;return new d(e)}function Z(n){let e=new T;return new d(e)}function ee(n){let e=new T;return new d(e)}function q(n,e){return new d(n)}var m=class{constructor(e){this.httpClient=e}async healthCheck(){let e=await this.httpClient.get("/health");if(!e.data)throw new Error("Health response data is null");return e.data}async isAuthed(){return this.httpClient.get("/is-authed")}async installApplication(e){return this.httpClient.post("/install-application",e)}async installDevApplication(e){return this.httpClient.post("/install-dev-application",e)}async uninstallApplication(e){return this.httpClient.delete(`/applications/${e}`)}async listApplications(){return this.httpClient.get("/applications")}async getApplication(e){return this.httpClient.get(`/applications/${e}`)}async createContext(e){return this.httpClient.post("/contexts",e)}async deleteContext(e){return this.httpClient.delete(`/contexts/${e}`)}async getContexts(){return this.httpClient.get("/contexts")}async getContext(e){return this.httpClient.get(`/contexts/${e}`)}async uploadBlob(e){return this.httpClient.post("/blobs",e)}async deleteBlob(e){return this.httpClient.delete(`/blobs/${e}`)}async listBlobs(){return this.httpClient.get("/blobs")}async getBlob(e){return this.httpClient.get(`/blobs/${e}`)}async createAlias(e){return this.httpClient.post("/alias",e)}async deleteAlias(e){return this.httpClient.delete(`/alias/${e}`)}async listAliases(){return this.httpClient.get("/alias")}async getAlias(e){return this.httpClient.get(`/alias/${e}`)}async getNetworkPeers(){return this.httpClient.get("/network/peers")}async getNetworkStats(){return this.httpClient.get("/network/stats")}async getNetworkConfig(){return this.httpClient.get("/network/config")}async updateNetworkConfig(e){return this.httpClient.put("/network/config",e)}async getPeersCount(){return this.httpClient.get("/network/peers/count")}async getSystemInfo(){return this.httpClient.get("/system/info")}async getSystemLogs(){return this.httpClient.get("/system/logs")}async getSystemMetrics(){return this.httpClient.get("/system/metrics")}async restartSystem(){return this.httpClient.post("/system/restart")}async shutdownSystem(){return this.httpClient.post("/system/shutdown")}};var R=class{async get(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async post(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async put(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async delete(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async patch(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async head(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}async request(){throw new Error("HTTP client not implemented - use createAdminApiClientFromHttpClient with a real HTTP client")}};function re(n){let e=new R;return new m(e)}function ie(n){let e=new R;return new m(e)}function oe(n){let e=new R;return new m(e)}function v(n,e){return new m(n)}var A=class{constructor(e){this.tokenData=null;this.refreshPromise=null;this.config={timeoutMs:1e4,...e};let t=typeof window<"u"&&"__TAURI_INTERNALS__"in window;this.httpClient=y({baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs,credentials:this.config.requestCredentials??(t?"omit":void 0)}),this.authClient=q(this.httpClient,{baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs}),this.adminClient=v(this.httpClient,{baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs})}get auth(){return this.authClient}get admin(){return this.adminClient}async authenticate(e){let t=e||this.config.credentials;if(!t)throw new Error("No credentials provided for authentication");try{let s={auth_method:"user_password",public_key:t.username,client_name:"mero-js-sdk",permissions:["admin"],timestamp:Math.floor(Date.now()/1e3),provider_data:{username:t.username,password:t.password}},r=await this.authClient.generateTokens(s);return this.tokenData={access_token:r.data.access_token,refresh_token:r.data.refresh_token,expires_at:Date.now()+1440*60*1e3},this.tokenData}catch(s){throw new Error(`Authentication failed: ${s instanceof Error?s.message:"Unknown error"}`)}}async getValidToken(){if(!this.tokenData)return null;let e=300*1e3;return Date.now()>=this.tokenData.expires_at-e?await this.refreshToken():this.tokenData}async refreshToken(){if(!this.tokenData?.refresh_token)throw new Error("No refresh token available");if(this.refreshPromise)return this.refreshPromise;this.refreshPromise=this.performTokenRefresh();try{return await this.refreshPromise}finally{this.refreshPromise=null}}async performTokenRefresh(){if(!this.tokenData?.refresh_token)throw new Error("No refresh token available");try{let e=await this.authClient.refreshToken({access_token:this.tokenData.access_token,refresh_token:this.tokenData.refresh_token});return this.tokenData={access_token:e.data.access_token,refresh_token:e.data.refresh_token,expires_at:Date.now()+1440*60*1e3},this.tokenData}catch(e){throw this.clearToken(),new Error(`Token refresh failed: ${e instanceof Error?e.message:"Unknown error"}`)}}clearToken(){this.tokenData=null}isAuthenticated(){return this.tokenData!==null}getTokenData(){return this.tokenData}};function M(n){return new A(n)}export{m as AdminApiClient,d as AuthApiClient,c as HTTPError,A as MeroJs,g as WebHttpClient,b as combineSignals,oe as createAdminApiClient,v as createAdminApiClientFromHttpClient,ee as createAuthApiClient,q as createAuthApiClientFromHttpClient,re as createBrowserAdminApiClient,Y as createBrowserAuthApiClient,y as createBrowserHttpClient,H as createHttpClient,M as createMeroJs,ie as createNodeAdminApiClient,Z as createNodeAuthApiClient,S as createNodeHttpClient,U as createRetryableMethod,P as createTimeoutSignal,D as createUniversalHttpClient,E as withRetry};
1
+ var ae=Object.defineProperty;var O=(r,e)=>{for(var t in e)ae(r,t,{get:e[t],enumerable:!0})};function J(r){let e=r.filter(Boolean);if(e.length===0)return;let t=AbortSignal;if(typeof t.any=="function")try{return t.any(e)}catch{}let s=new AbortController,o=i=>{s.abort(i.target.reason);for(let a of e)a.removeEventListener("abort",o)};for(let i of e){if(i.aborted)return AbortSignal.abort(i.reason);i.addEventListener("abort",o,{once:!0})}return s.signal}function V(r){if(typeof AbortSignal.timeout=="function")return AbortSignal.timeout(r);let e=new AbortController;return setTimeout(()=>{e.abort(new DOMException("Timeout","TimeoutError"))},r),e.signal}var b=class extends Error{constructor(t,s,o,i,a){super(`HTTP ${t} ${s}`);this.status=t;this.statusText=s;this.url=o;this.headers=i;this.bodyText=a;this.name="HTTPError"}toJSON(){return{status:this.status,statusText:this.statusText,url:this.url,headers:Q(this.headers),bodyText:this.bodyText}}};function Q(r){let e={};return r.forEach((t,s)=>{e[s]=t}),e}var $=class{constructor(e){this.transport=e;this.refreshTokenPromise=null;this.onTokenRefreshPromise=null}async get(e,t){return this.request(e,{...t,method:"GET"})}async post(e,t,s){let o=t?JSON.stringify(t):void 0;return e.includes("/refresh")&&(console.log("[HTTP POST /refresh] Body being sent:",o),console.log("[HTTP POST /refresh] Body type:",typeof t,t?Object.keys(t):"undefined")),this.request(e,{...s,method:"POST",body:o,headers:{"Content-Type":"application/json",...s?.headers}})}async put(e,t,s){return this.request(e,{...s,method:"PUT",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...s?.headers}})}async delete(e,t){return this.request(e,{...t,method:"DELETE"})}async patch(e,t,s){return this.request(e,{...s,method:"PATCH",body:t?JSON.stringify(t):void 0,headers:{"Content-Type":"application/json",...s?.headers}})}async head(e,t){let s=await this.makeRequest(e,{...t,method:"HEAD",parse:"response"});return{headers:Q(s.headers),status:s.status}}async request(e,t){return this.makeRequest(e,t)}async makeRequest(e,t,s=0,o){let a=this.buildUrl(e),p=o??Date.now(),C=this.createAbortSignal(t),d=await this.buildHeaders(t?.headers),u;d instanceof Headers?(u={},d.forEach((l,_)=>{u[_]=l})):u=d;let c={method:t?.method||"GET",headers:u},H=t?.body instanceof ReadableStream||typeof t?.body=="object"&&t?.body!==null&&"getReader"in t.body&&!(t.body instanceof Blob);(t?.body!==void 0&&!H||t?.body!==void 0&&H&&s===0)&&(c.body=t.body);let q;if(s>0&&o!==void 0){let l=t?.timeoutMs||this.transport.timeoutMs;if(l){let _=Date.now()-p,D=Math.max(0,l-_);q=this.createAbortSignal({...t,timeoutMs:D})}else q=this.createAbortSignal(t)}else q=C;q&&(c.signal=q),this.transport.credentials!==void 0&&(c.credentials=this.transport.credentials),t?.mode!==void 0&&(c.mode=t.mode),t?.cache!==void 0&&(c.cache=t.cache),t?.redirect!==void 0&&(c.redirect=t.redirect),t?.referrer!==void 0&&(c.referrer=t.referrer),t?.referrerPolicy!==void 0&&(c.referrerPolicy=t.referrerPolicy),t?.integrity!==void 0&&(c.integrity=t.integrity),t?.keepalive!==void 0&&(c.keepalive=t.keepalive);try{let l=await this.transport.fetch(a,c);if(!l.ok){let _=await this.getBodyText(l),D=new b(l.status,l.statusText,a,l.headers,_),re=t?.signal?.aborted===!0,oe=l.headers.get("x-auth-error");if(l.status===401&&this.transport.refreshToken&&s<1&&!H&&!re&&this.transport.refreshToken){console.log("[mero-js] 401 received, attempting token refresh...",{hasAuthError:oe});try{let h=this.refreshTokenPromise;h||(h=this.transport.refreshToken(),this.refreshTokenPromise=h);let B=await h;if(!B||B.trim()==="")throw this.refreshTokenPromise=null,this.onTokenRefreshPromise=null,new Error("Refresh token returned empty token");if(!this.transport.onTokenRefresh)throw this.refreshTokenPromise=null,this.onTokenRefreshPromise=null,new Error("onTokenRefresh callback is required when refreshToken is provided. The callback must update the token storage so getAuthToken() returns the new token.");let U=this.onTokenRefreshPromise;U||(U=this.transport.onTokenRefresh(B),this.onTokenRefreshPromise=U),await U,this.refreshTokenPromise=null,this.onTokenRefreshPromise=null;let z=t?.timeoutMs||this.transport.timeoutMs;if(z&&o!==void 0){let ie=Date.now()-p;if(z-ie<=0)throw D}return this.makeRequest(e,t,s+1,p)}catch(h){throw this.refreshTokenPromise=null,this.onTokenRefreshPromise=null,console.log("[mero-js] Token refresh failed:",h),h instanceof Error&&h.message.includes("onTokenRefresh")?h:D}}throw D}return this.parseResponse(l,t?.parse)}catch(l){throw l instanceof b||l instanceof Error&&l.message.includes("onTokenRefresh")?l:new b(0,"Network Error",a,new Headers,l instanceof Error?l.message:"Unknown error")}}buildUrl(e){if(e.startsWith("http://")||e.startsWith("https://"))return e;let t=this.transport.baseUrl;return e.startsWith("/")?`${t.endsWith("/")?t.slice(0,-1):t}${e}`:`${t.endsWith("/")?t:`${t}/`}${e}`}createAbortSignal(e){let t=[];this.transport.defaultAbortSignal&&t.push(this.transport.defaultAbortSignal),e?.signal&&t.push(e.signal);let s=e?.timeoutMs||this.transport.timeoutMs;return s&&t.push(V(s)),t.length>0?J(t):void 0}async buildHeaders(e){let t={...this.transport.defaultHeaders};if(this.transport.getAuthToken)try{let s=await this.transport.getAuthToken();s&&s.trim()!==""&&(t.Authorization=`Bearer ${s}`)}catch{}return e&&(e instanceof Headers?e.forEach((s,o)=>{t[o]=s}):Array.isArray(e)?e.forEach(([s,o])=>{t[s]=o}):Object.assign(t,e)),t}async parseResponse(e,t){switch(t){case"text":return await e.text();case"blob":return await e.blob();case"arrayBuffer":return await e.arrayBuffer();case"response":return e;case"json":default:return await e.json()}}async getBodyText(e){try{let t=await e.text();return t.length>65536?t.slice(0,65536)+"...":t}catch{return""}}};function K(r){return new $(r)}function G(r){let e={fetch:(t,s)=>globalThis.fetch(t,s),baseUrl:r.baseUrl,getAuthToken:r.getAuthToken,onTokenRefresh:r.onTokenRefresh,refreshToken:r.refreshToken,defaultHeaders:r.defaultHeaders,timeoutMs:r.timeoutMs,credentials:r.credentials,defaultAbortSignal:r.defaultAbortSignal};return K(e)}function F(r){let e=r.fetch??globalThis.fetch;if(!e)throw new Error("No fetch implementation available. Please provide a fetch implementation (e.g., undici.fetch) or use Node.js 18+ which has native fetch support.");let s={fetch:e===globalThis.fetch?(o,i)=>globalThis.fetch(o,i):(o,i)=>e(o,i),baseUrl:r.baseUrl,getAuthToken:r.getAuthToken,onTokenRefresh:r.onTokenRefresh,refreshToken:r.refreshToken,defaultHeaders:r.defaultHeaders,timeoutMs:r.timeoutMs,credentials:r.credentials,defaultAbortSignal:r.defaultAbortSignal};return K(s)}function pe(r){return typeof window<"u"?G(r):F(r)}function le(r,e){if(e<=0)return!1;let s=r?.name;if(s==="TimeoutError")return!0;if(s==="AbortError")return!1;let o=r;if("status"in o&&typeof o.status=="number"){let i=o.status;return i>=500||i===429}return s==="TypeError"}function ce(r){let t=250*Math.pow(2,r-1),s=(Math.random()-.5)*.4*t;return Math.max(0,t+s)}async function X(r,e={}){let{attempts:t=3}=e,s;for(let o=1;o<=t;o++)try{return await r(o)}catch(i){if(s=i,!le(s,t-o))throw s;let a=ce(o),d=s.headers?.get?.("Retry-After");if(d){let u=parseInt(d,10);if(!isNaN(u))a=Math.max(a,u*1e3);else{let c=new Date(d);if(!isNaN(c.getTime())){let H=Math.max(0,c.getTime()-Date.now());a=Math.max(a,Math.min(H,6e4))}}}await new Promise(u=>setTimeout(u,a))}throw s||new Error("Retry failed without error")}function ue(r,e={}){return async(...t)=>X(()=>r(...t),e)}var Z={};O(Z,{AuthApiClient:()=>x,createAuthApiClient:()=>N});var j=class extends Error{constructor(e){super(e.message),this.name="ApiResponseError",this.type=e.type,this.code=e.code,this.data=e.data}};function Y(r){return typeof r=="object"&&r!==null&&"error"in r&&r.error!==null&&r.error!==void 0&&typeof r.error=="object"}async function n(r){let e=await r;if(Y(e))throw new j(e.error);if(e.data===null||e.data===void 0)throw new Error("Response data is null or undefined");return e.data}async function Ee(r){let e=await r;if(Y(e))throw new j(e.error);return e.data===null||e.data===void 0?null:e.data}var x=class{constructor(e,t){this.httpClient=e;this.embedded=t.embedded??!0}getAuthPath(e){return this.embedded?`/auth${e}`:e}async getLogin(){return this.httpClient.get(this.getAuthPath("/login"),{parse:"text"})}async getChallenge(){return n(this.httpClient.get(this.getAuthPath("/challenge")))}async getToken(e){return n(this.httpClient.post(this.getAuthPath("/token"),e))}async refreshToken(e){return n(this.httpClient.post(this.getAuthPath("/refresh"),e))}async getProviders(){return n(this.httpClient.get(this.getAuthPath("/providers")))}async getIdentity(){return n(this.httpClient.get(this.getAuthPath("/identity")))}async validateToken(e){let t=await this.httpClient.post(this.getAuthPath("/validate"),e);return t.data===""||t.data===void 0||t.data===null?{valid:!0}:typeof t.data=="object"&&"valid"in t.data?t.data:{valid:!0}}async validateTokenGet(e){let t=await this.httpClient.get(this.getAuthPath("/validate"),{headers:{Authorization:`Bearer ${e}`}});return t.data===""||t.data===void 0||t.data===null?{valid:!0}:typeof t.data=="object"&&"valid"in t.data?t.data:{valid:!0}}async getHealth(){return n(this.httpClient.get(this.getAuthPath("/health")))}async getCallback(e){let t=e?`?callback-url=${encodeURIComponent(e)}`:"";return this.httpClient.get(this.getAuthPath(`/callback${t}`),{parse:"text"})}async revokeToken(){return n(this.httpClient.post(this.getAuthPath("/admin/revoke"),{}))}async listRootKeys(){return n(this.httpClient.get(this.getAuthPath("/admin/keys")))}async createRootKey(e){return n(this.httpClient.post(this.getAuthPath("/admin/keys"),e))}async deleteRootKey(e){return n(this.httpClient.delete(this.getAuthPath(`/admin/keys/${e}`)))}async listClientKeys(){return n(this.httpClient.get(this.getAuthPath("/admin/keys/clients")))}async generateClientKey(e){return n(this.httpClient.post(this.getAuthPath("/admin/client-key"),e))}async deleteClientKey(e,t){return n(this.httpClient.delete(this.getAuthPath(`/admin/keys/${e}/clients/${t}`)))}async getKeyPermissions(e){return n(this.httpClient.get(this.getAuthPath(`/admin/keys/${e}/permissions`)))}async updateKeyPermissions(e,t){return n(this.httpClient.put(this.getAuthPath(`/admin/keys/${e}/permissions`),t))}async getProtectedIdentity(){return n(this.httpClient.get(this.getAuthPath("/admin/identity")))}async getMetrics(){return n(this.httpClient.get(this.getAuthPath("/admin/metrics")))}};function N(r,e){return new x(r,e)}var ee={};O(ee,{AdminApiClient:()=>m,AliasesApiClient:()=>I,ApplicationsApiClient:()=>k,BlobsApiClient:()=>E,CapabilitiesApiClient:()=>v,ContextsApiClient:()=>T,IdentityApiClient:()=>w,NetworkApiClient:()=>S,ProposalsApiClient:()=>P,PublicApiClient:()=>A,TeeApiClient:()=>W,createAdminApiClient:()=>M});var A=class{constructor(e){this.httpClient=e}async health(){return n(this.httpClient.get("/admin-api/health"))}async isAuthed(){return n(this.httpClient.get("/admin-api/is-authed"))}async getCertificate(){return this.httpClient.get("/admin-api/certificate",{parse:"text"})}};var k=class{constructor(e){this.httpClient=e}async installApplication(e){return n(this.httpClient.post("/admin-api/install-application",e))}async installDevApplication(e){return n(this.httpClient.post("/admin-api/install-dev-application",e))}async listApplications(){return n(this.httpClient.get("/admin-api/applications"))}async getApplication(e){return n(this.httpClient.get(`/admin-api/applications/${e}`))}async uninstallApplication(e){return n(this.httpClient.delete(`/admin-api/applications/${e}`))}async listPackages(){return n(this.httpClient.get("/admin-api/packages"))}async listVersions(e){return n(this.httpClient.get(`/admin-api/packages/${e}/versions`))}async getLatestVersion(e){return n(this.httpClient.get(`/admin-api/packages/${e}/latest`))}};var T=class{constructor(e){this.httpClient=e}async listContexts(){return n(this.httpClient.get("/admin-api/contexts"))}async createContext(e){return n(this.httpClient.post("/admin-api/contexts",e))}async getContext(e){return n(this.httpClient.get(`/admin-api/contexts/${e}`))}async deleteContext(e){return n(this.httpClient.delete(`/admin-api/contexts/${e}`))}async getContextStorage(e){return n(this.httpClient.get(`/admin-api/contexts/${e}/storage`))}async getContextIdentities(e){return n(this.httpClient.get(`/admin-api/contexts/${e}/identities`))}async getContextIdentitiesOwned(e){return n(this.httpClient.get(`/admin-api/contexts/${e}/identities-owned`))}async inviteToContext(e){return n(this.httpClient.post("/admin-api/contexts/invite",e))}async inviteToContextOpenInvitation(e){return n(this.httpClient.post("/admin-api/contexts/invite_by_open_invitation",e))}async inviteSpecializedNode(e){return n(this.httpClient.post("/admin-api/contexts/invite-specialized-node",e))}async joinContext(e){return n(this.httpClient.post("/admin-api/contexts/join",e))}async joinContextByOpenInvitation(e){return n(this.httpClient.post("/admin-api/contexts/join_by_open_invitation",e))}async updateContextApplication(e,t){return n(this.httpClient.put(`/admin-api/contexts/${e}/application`,t))}async getContextsForApplication(e){return n(this.httpClient.get(`/admin-api/contexts/for-application/${e}`))}async getContextsWithExecutorsForApplication(e){return n(this.httpClient.get(`/admin-api/contexts/with-executors/for-application/${e}`))}async getProxyContract(e){return n(this.httpClient.get(`/admin-api/contexts/${e}/proxy-contract`))}async syncContext(){return n(this.httpClient.post("/admin-api/contexts/sync",{}))}async syncContextById(e){return n(this.httpClient.post(`/admin-api/contexts/sync/${e}`,{}))}};var P=class{constructor(e){this.httpClient=e}async getProposals(e,t){return n(this.httpClient.post(`/admin-api/contexts/${e}/proposals`,t))}async getProposal(e,t){return n(this.httpClient.get(`/admin-api/contexts/${e}/proposals/${t}`))}async createAndApproveProposal(e,t){return n(this.httpClient.post(`/admin-api/contexts/${e}/proposals/create-and-approve`,t))}async approveProposal(e,t){return n(this.httpClient.post(`/admin-api/contexts/${e}/proposals/approve`,t))}async getNumberOfActiveProposals(e){return n(this.httpClient.get(`/admin-api/contexts/${e}/proposals/count`))}async getNumberOfProposalApprovals(e,t){return n(this.httpClient.get(`/admin-api/contexts/${e}/proposals/${t}/approvals/count`))}async getProposalApprovers(e,t){return n(this.httpClient.get(`/admin-api/contexts/${e}/proposals/${t}/approvals/users`))}async getContextValue(e,t){return n(this.httpClient.post(`/admin-api/contexts/${e}/proposals/get-context-value`,t))}async getContextStorageEntries(e,t){return n(this.httpClient.post(`/admin-api/contexts/${e}/proposals/context-storage-entries`,t))}};var v=class{constructor(e){this.httpClient=e}async grantPermission(e,t){return n(this.httpClient.post(`/admin-api/contexts/${e}/capabilities/grant`,t))}async revokePermission(e,t){return n(this.httpClient.post(`/admin-api/contexts/${e}/capabilities/revoke`,t))}};var w=class{constructor(e){this.httpClient=e}async generateContextIdentity(){return n(this.httpClient.post("/admin-api/identity/context",{}))}};var S=class{constructor(e){this.httpClient=e}async getPeersCount(){return this.httpClient.get("/admin-api/peers")}};var E=class{constructor(e){this.httpClient=e}async uploadBlob(e){let t=await n(this.httpClient.request("/admin-api/blobs",{method:"PUT",body:e,headers:{"Content-Type":"application/octet-stream"}}));return{blobId:t.blob_id,size:t.size,hash:t.hash??null}}async listBlobs(){return{blobs:(await n(this.httpClient.get("/admin-api/blobs"))).blobs.map(t=>({blobId:t.blob_id,size:t.size,hash:t.hash??null}))}}async getBlob(e){return this.httpClient.get(`/admin-api/blobs/${e}`,{parse:"blob"})}async getBlobInfo(e){let t=await this.httpClient.head(`/admin-api/blobs/${e}`);return{blobId:e,size:parseInt(t.headers["content-length"]||"0",10),hash:t.headers["x-blob-hash"]||null}}async deleteBlob(e){let t=await n(this.httpClient.delete(`/admin-api/blobs/${e}`));return{blobId:t.blob_id||t.blobId||e,deleted:t.deleted}}};var I=class{constructor(e){this.httpClient=e}async createContextAlias(e){return n(this.httpClient.post("/admin-api/alias/create/context",e))}async createApplicationAlias(e){return n(this.httpClient.post("/admin-api/alias/create/application",e))}async createIdentityAlias(e,t){return n(this.httpClient.post(`/admin-api/alias/create/identity/${e}`,t))}async lookupContextAlias(e){return n(this.httpClient.post(`/admin-api/alias/lookup/context/${e}`,{}))}async lookupApplicationAlias(e){return n(this.httpClient.post(`/admin-api/alias/lookup/application/${e}`,{}))}async lookupIdentityAlias(e,t){return n(this.httpClient.post(`/admin-api/alias/lookup/identity/${e}/${t}`,{}))}async listContextAliases(){return n(this.httpClient.get("/admin-api/alias/list/context"))}async listApplicationAliases(){return n(this.httpClient.get("/admin-api/alias/list/application"))}async listIdentityAliases(e){return n(this.httpClient.get(`/admin-api/alias/list/identity/${e}`))}async deleteContextAlias(e){return n(this.httpClient.post(`/admin-api/alias/delete/context/${e}`,{}))}async deleteApplicationAlias(e){return n(this.httpClient.post(`/admin-api/alias/delete/application/${e}`,{}))}async deleteIdentityAlias(e,t){return n(this.httpClient.post(`/admin-api/alias/delete/identity/${e}/${t}`,{}))}};var W=class{constructor(e){this.httpClient=e}async getTeeInfo(){return n(this.httpClient.get("/admin-api/tee/info"))}async attestTee(e){return n(this.httpClient.post("/admin-api/tee/attest",e))}async verifyTeeQuote(e){return n(this.httpClient.post("/admin-api/tee/verify-quote",e))}};var m=class{constructor(e){this.httpClient=e}get public(){return this._public||(this._public=new A(this.httpClient)),this._public}get applications(){return this._applications||(this._applications=new k(this.httpClient)),this._applications}get contexts(){return this._contexts||(this._contexts=new T(this.httpClient)),this._contexts}get proposals(){return this._proposals||(this._proposals=new P(this.httpClient)),this._proposals}get capabilities(){return this._capabilities||(this._capabilities=new v(this.httpClient)),this._capabilities}get identity(){return this._identity||(this._identity=new w(this.httpClient)),this._identity}get network(){return this._network||(this._network=new S(this.httpClient)),this._network}get blobs(){return this._blobs||(this._blobs=new E(this.httpClient)),this._blobs}get aliases(){return this._aliases||(this._aliases=new I(this.httpClient)),this._aliases}get tee(){return this._tee||(this._tee=new W(this.httpClient)),this._tee}};function M(r){return new m(r)}var te={};O(te,{JsonRpcError:()=>g,RpcClient:()=>f});var g=class extends Error{constructor(t,s,o){let i=typeof s=="string"?s:s?.message?String(s.message):t;super(i);this.type=t;this.data=s;this.requestId=o;this.name="JsonRpcError"}},f=class{constructor(e){this.httpClient=e;this.path="/jsonrpc"}generateRequestId(){return Math.floor(Math.random()*Math.pow(2,32))}async execute(e){let t=this.generateRequestId(),s={jsonrpc:"2.0",id:t,method:"execute",params:{contextId:e.contextId,method:e.method,argsJson:e.args,executorPublicKey:e.executorPublicKey,substitute:e.substitute??[]}},o=await this.httpClient.post(this.path,s);if(o.id!==t)throw new g("MismatchedRequestIdError",`Expected request ID ${t}, got ${o.id}`,o.id);if(o.error)throw new g(o.error.type,o.error.data,o.id);return o.result??{output:null}}async query(e,t,s,o){return(await this.execute({contextId:e,method:t,args:s,executorPublicKey:o})).output}async mutate(e,t,s,o){return(await this.execute({contextId:e,method:t,args:s,executorPublicKey:o})).output}};var se={};O(se,{WebSocketClient:()=>R});var R=class{constructor(e){this.ws=null;this.requestId=0;this.pendingRequests=new Map;this.eventHandlers=[];this.errorHandlers=[];this.closeHandlers=[];this.reconnectAttempts=0;this.subscribedContexts=new Set;this.options={autoReconnect:!0,reconnectDelay:1e3,maxReconnectAttempts:5,getAuthToken:async()=>null,...e}}async connect(){if(this.ws?.readyState===WebSocket.OPEN)return;let e=this.options.baseUrl.replace(/^http:/,"ws:").replace(/^https:/,"wss:").replace(/\/$/,"")+"/ws",t=await this.options.getAuthToken();return new Promise((s,o)=>{let i=t?`${e}?token=${encodeURIComponent(t)}`:e;this.ws=new WebSocket(i),this.ws.onopen=()=>{this.reconnectAttempts=0,s()},this.ws.onerror=a=>{let p=new Error("WebSocket error");this.errorHandlers.forEach(C=>C(p)),o(p)},this.ws.onclose=a=>{this.closeHandlers.forEach(p=>p(a.code,a.reason)),this.handleDisconnect()},this.ws.onmessage=a=>{this.handleMessage(a.data)}})}disconnect(){this.options.autoReconnect=!1,this.ws?.close(),this.ws=null,this.subscribedContexts.clear()}async subscribe(e){let t=await this.send({id:++this.requestId,method:"subscribe",params:{contextIds:e}});return t.error||e.forEach(s=>this.subscribedContexts.add(s)),t}async unsubscribe(e){let t=await this.send({id:++this.requestId,method:"unsubscribe",params:{contextIds:e}});return t.error||e.forEach(s=>this.subscribedContexts.delete(s)),t}onEvent(e){return this.eventHandlers.push(e),()=>{this.eventHandlers=this.eventHandlers.filter(t=>t!==e)}}onError(e){return this.errorHandlers.push(e),()=>{this.errorHandlers=this.errorHandlers.filter(t=>t!==e)}}onClose(e){return this.closeHandlers.push(e),()=>{this.closeHandlers=this.closeHandlers.filter(t=>t!==e)}}isConnected(){return this.ws?.readyState===WebSocket.OPEN}getSubscribedContexts(){return Array.from(this.subscribedContexts)}async send(e){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)throw new Error("WebSocket not connected");return new Promise((t,s)=>{let o=e.id;o!==null&&this.pendingRequests.set(o,{resolve:t,reject:s}),this.ws.send(JSON.stringify(e)),setTimeout(()=>{o!==null&&this.pendingRequests.has(o)&&(this.pendingRequests.delete(o),s(new Error("WebSocket request timeout")))},3e4)})}handleMessage(e){try{let t=JSON.parse(e);if(t.id!==void 0&&this.pendingRequests.has(t.id)){let{resolve:o}=this.pendingRequests.get(t.id);this.pendingRequests.delete(t.id),o(t);return}let s={contextId:t.contextId||t.context_id,type:t.type||t.event,data:t.data||t.payload};this.eventHandlers.forEach(o=>o(s))}catch(t){this.errorHandlers.forEach(s=>s(t instanceof Error?t:new Error(String(t))))}}handleDisconnect(){if(!this.options.autoReconnect)return;if(this.reconnectAttempts>=this.options.maxReconnectAttempts){this.errorHandlers.forEach(t=>t(new Error("Max reconnect attempts reached")));return}this.reconnectAttempts++;let e=this.options.reconnectDelay*Math.pow(2,this.reconnectAttempts-1);setTimeout(async()=>{try{await this.connect(),this.subscribedContexts.size>0&&await this.subscribe(Array.from(this.subscribedContexts))}catch{}},e)}};var ne={};O(ne,{SseClient:()=>y});var y=class{constructor(e){this.eventSource=null;this.sessionId=null;this.eventHandlers=[];this.errorHandlers=[];this.subscribedContexts=new Set;this._lastEventId=null;this.options={autoReconnect:!0,reconnectDelay:1e3,getAuthToken:async()=>null,...e}}async connect(){if(this.eventSource)throw new Error("Already connected");let e=await this.options.getAuthToken(),t=`${this.options.baseUrl}/sse`;return e&&(t+=`?token=${encodeURIComponent(e)}`),new Promise((s,o)=>{this.eventSource=new EventSource(t,{withCredentials:!0}),this.eventSource.addEventListener("connect",i=>{let a=i;try{let p=a.data;this.sessionId=typeof p=="string"&&p.startsWith("{")?JSON.parse(p).session_id||JSON.parse(p).sessionId:p,s(this.sessionId)}catch{this.sessionId=a.data,s(this.sessionId)}}),this.eventSource.onmessage=i=>{this._lastEventId=i.lastEventId;try{let a=JSON.parse(i.data),p={id:i.lastEventId,event:"message",data:a};this.eventHandlers.forEach(C=>C(p))}catch{let a={id:i.lastEventId,event:"message",data:i.data};this.eventHandlers.forEach(p=>p(a))}},this.eventSource.onerror=i=>{let a=new Error("SSE connection error");this.errorHandlers.forEach(p=>p(a)),this.eventSource?.readyState===EventSource.CLOSED&&(this.handleDisconnect(),this.sessionId||o(a))}})}disconnect(){this.options.autoReconnect=!1,this.eventSource?.close(),this.eventSource=null,this.sessionId=null,this.subscribedContexts.clear()}async subscribe(e){if(!this.sessionId)throw new Error("Not connected");let t={id:this.sessionId,method:"subscribe",params:{contextIds:e}},s=await this.options.httpClient.post("/sse/subscription",t);return s.error||e.forEach(o=>this.subscribedContexts.add(o)),s}async unsubscribe(e){if(!this.sessionId)throw new Error("Not connected");let t={id:this.sessionId,method:"unsubscribe",params:{contextIds:e}},s=await this.options.httpClient.post("/sse/subscription",t);return s.error||e.forEach(o=>this.subscribedContexts.delete(o)),s}async getSession(){if(!this.sessionId)throw new Error("Not connected");return this.options.httpClient.get(`/sse/session/${this.sessionId}`)}onEvent(e){return this.eventHandlers.push(e),()=>{this.eventHandlers=this.eventHandlers.filter(t=>t!==e)}}onError(e){return this.errorHandlers.push(e),()=>{this.errorHandlers=this.errorHandlers.filter(t=>t!==e)}}isConnected(){return this.eventSource?.readyState===EventSource.OPEN}getSessionId(){return this.sessionId}getSubscribedContexts(){return Array.from(this.subscribedContexts)}getLastEventId(){return this._lastEventId}handleDisconnect(){this.options.autoReconnect&&setTimeout(async()=>{try{await this.connect(),this.subscribedContexts.size>0&&await this.subscribe(Array.from(this.subscribedContexts))}catch{}},this.options.reconnectDelay)}};var L=class{constructor(e){this.tokenData=null;this.refreshPromise=null;this.tokenStorage=null;this.config={timeoutMs:1e4,...e},this.tokenStorage=e.tokenStorage||null;let t=typeof window<"u"&&"__TAURI_INTERNALS__"in window,s=this.config.authBaseUrl??this.config.baseUrl,o=s===this.config.baseUrl;this.httpClient=G({baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",refreshToken:async()=>(await this.performTokenRefresh()).access_token,onTokenRefresh:async a=>{this.tokenData&&this.tokenStorage&&await this.tokenStorage.set(this.tokenData)},timeoutMs:this.config.timeoutMs,credentials:this.config.requestCredentials??(t?"omit":void 0)});let i=G({baseUrl:s,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs,credentials:this.config.requestCredentials??(t?"omit":void 0)});this.authClient=N(i,{baseUrl:s,embedded:o}),this.adminClient=M(this.httpClient),this.rpcClient=new f(this.httpClient)}async init(){if(console.log("[mero-js] init() called, tokenStorage:",this.tokenStorage?"EXISTS":"NULL"),this.tokenStorage){let e=await this.tokenStorage.get();console.log("[mero-js] init() storedToken:",e?"LOADED":"NULL"),e&&(this.tokenData=e,console.log("[mero-js] init() tokenData set, expires_at:",e.expires_at))}else console.log("[mero-js] init() no tokenStorage configured")}get auth(){return this.authClient}get admin(){return this.adminClient}get rpc(){return this.rpcClient}async authenticate(e){let t=e||this.config.credentials;if(!t)throw new Error("No credentials provided for authentication");try{let s={auth_method:"user_password",public_key:t.username,client_name:"mero-js-sdk",permissions:["admin"],timestamp:Math.floor(Date.now()/1e3),provider_data:{username:t.username,password:t.password}},o=await this.authClient.getToken(s),i;try{let a=JSON.parse(atob(o.access_token.split(".")[1]));i=a.exp*1e3,console.log("[mero-js] Extracted exp from JWT:",a.exp,"-> expires_at:",i)}catch{i=Date.now()+(o.expires_in||3600)*1e3,console.warn("[mero-js] Failed to parse JWT, using expires_in fallback:",i)}return this.tokenData={access_token:o.access_token,refresh_token:o.refresh_token,expires_at:i},this.tokenStorage&&await this.tokenStorage.set(this.tokenData),this.tokenData}catch(s){let o=s instanceof Error?s.message:"Unknown error",i=s&&typeof s=="object"&&"status"in s?`HTTP ${String(s.status)}`:"",a=s&&typeof s=="object"&&"statusText"in s?` ${String(s.statusText)}`:"",p=s&&typeof s=="object"&&"bodyText"in s?`: ${String(s.bodyText)}`:"";throw new Error(`Authentication failed: ${i}${a}${p||o}`)}}async getValidToken(){if(console.log("[mero-js] getValidToken called, tokenData:",this.tokenData?"EXISTS":"NULL"),!this.tokenData)return console.log("[mero-js] No tokenData, returning null"),null;let e=Date.now(),t=this.tokenData.expires_at,s=e>=t;return console.log("[mero-js] Token check: now=",e,"expires_at=",t,"isExpired=",s),s?(console.log("[mero-js] Token expired, attempting preemptive refresh"),await this.refreshToken()):(console.log("[mero-js] Token valid, returning tokenData"),this.tokenData)}async refreshToken(){return this.performTokenRefresh()}async performTokenRefresh(){if(this.refreshPromise)return console.log("[mero-js] Refresh already in progress, waiting for existing promise"),this.refreshPromise;console.log("[mero-js] Starting new refresh attempt"),this.refreshPromise=this.doTokenRefresh();try{return await this.refreshPromise}finally{this.refreshPromise=null}}async doTokenRefresh(){if(console.log("[mero-js doTokenRefresh] STARTING refresh..."),console.log("[mero-js doTokenRefresh] tokenData exists:",!!this.tokenData),console.log("[mero-js doTokenRefresh] access_token exists:",!!this.tokenData?.access_token),console.log("[mero-js doTokenRefresh] refresh_token exists:",!!this.tokenData?.refresh_token),!this.tokenData?.refresh_token)throw new Error("No refresh token available");if(!this.tokenData?.access_token)throw new Error("No access token available for refresh (server requires both tokens)");try{let e={access_token:this.tokenData.access_token,refresh_token:this.tokenData.refresh_token};console.log("[mero-js doTokenRefresh] Payload keys:",Object.keys(e)),console.log("[mero-js doTokenRefresh] access_token length:",e.access_token?.length),console.log("[mero-js doTokenRefresh] refresh_token length:",e.refresh_token?.length);let t=await this.authClient.refreshToken(e),s;try{let o=JSON.parse(atob(t.access_token.split(".")[1]));s=o.exp*1e3,console.log("[mero-js] Extracted exp from JWT:",o.exp,"-> expires_at:",s)}catch{s=Date.now()+(t.expires_in||3600)*1e3,console.warn("[mero-js] Failed to parse JWT, using expires_in fallback:",s)}return this.tokenData={access_token:t.access_token,refresh_token:t.refresh_token,expires_at:s},this.tokenStorage&&await this.tokenStorage.set(this.tokenData),this.tokenData}catch(e){console.error("[mero-js] Token refresh failed:",e);let t=e,s=t?.status,o=t?.body||t?.message||"";if(s&&(console.error("[mero-js] Refresh error status:",s),console.error("[mero-js] Refresh error body:",o)),o.includes("still valid")||o.includes("token valid")){console.warn("[mero-js] Server says token is still valid - NOT clearing tokens"),console.warn("[mero-js] This usually means the 401 came from a different issue (wrong endpoint, missing header, etc.)");let i=new Error("Token is valid but request failed. Check Authorization header.");throw i.tokenStillValid=!0,i}throw s&&s>=400&&s<500?(console.warn("[mero-js] Refresh failed with 4XX - clearing tokens, user must re-authenticate"),await this.clearToken(),new Error(`Session expired. Please log in again. (${s})`)):s&&s>=500?(console.warn("[mero-js] Refresh failed with 5XX - server error, keeping tokens"),new Error(`Server error during refresh. Please try again later. (${s})`)):(console.warn("[mero-js] Refresh failed with unknown error - clearing tokens"),await this.clearToken(),new Error(`Token refresh failed: ${e instanceof Error?e.message:"Unknown error"}`))}}async clearToken(){this.tokenData=null,this.tokenStorage&&await this.tokenStorage.clear()}isAuthenticated(){return this.tokenData!==null}getTokenData(){return this.tokenData}async setToken(e){this.tokenData=e,this.tokenStorage&&(e?await this.tokenStorage.set(e):await this.tokenStorage.clear())}createWebSocket(e){return new R({baseUrl:this.config.baseUrl,getAuthToken:async()=>this.tokenData?.access_token||null,...e})}createSse(e){return new y({baseUrl:this.config.baseUrl,httpClient:this.httpClient,getAuthToken:async()=>this.tokenData?.access_token||null,...e})}};function he(r){return new L(r)}export{ee as AdminApi,m as AdminApiClient,j as ApiResponseError,Z as AuthApi,x as AuthApiClient,b as HTTPError,g as JsonRpcError,L as MeroJs,te as RpcApi,f as RpcClient,ne as SseApi,y as SseClient,$ as WebHttpClient,R as WebSocketClient,se as WsApi,J as combineSignals,M as createAdminApiClient,N as createAuthApiClient,G as createBrowserHttpClient,K as createHttpClient,he as createMeroJs,F as createNodeHttpClient,ue as createRetryableMethod,V as createTimeoutSignal,pe as createUniversalHttpClient,n as unwrap,Ee as unwrapOrNull,X as withRetry};
2
2
  //# sourceMappingURL=index.browser.mjs.map