@calimero-network/mero-js 1.1.0 → 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 (172) 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/index.d.ts +1 -1
  115. package/dist/http-client/index.d.ts.map +1 -1
  116. package/dist/http-client/index.js +2 -1
  117. package/dist/http-client/index.js.map +1 -1
  118. package/dist/http-client/web-client.d.ts +3 -3
  119. package/dist/http-client/web-client.d.ts.map +1 -1
  120. package/dist/http-client/web-client.js +16 -6
  121. package/dist/http-client/web-client.js.map +1 -1
  122. package/dist/index.browser.mjs +1 -1
  123. package/dist/index.browser.mjs.map +4 -4
  124. package/dist/index.cjs +1590 -281
  125. package/dist/index.cjs.map +4 -4
  126. package/dist/index.d.ts +8 -3
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +7 -5
  129. package/dist/index.js.map +1 -1
  130. package/dist/index.mjs +1596 -281
  131. package/dist/index.mjs.map +4 -4
  132. package/dist/mero-js.d.ts +198 -7
  133. package/dist/mero-js.d.ts.map +1 -1
  134. package/dist/mero-js.js +329 -38
  135. package/dist/mero-js.js.map +1 -1
  136. package/package.json +42 -7
  137. package/dist/admin-api/admin-client.d.ts +0 -38
  138. package/dist/admin-api/admin-client.d.ts.map +0 -1
  139. package/dist/admin-api/admin-client.js +0 -104
  140. package/dist/admin-api/admin-client.js.map +0 -1
  141. package/dist/admin-api/admin-factory.d.ts +0 -8
  142. package/dist/admin-api/admin-factory.d.ts.map +0 -1
  143. package/dist/admin-api/admin-factory.js +0 -42
  144. package/dist/admin-api/admin-factory.js.map +0 -1
  145. package/dist/admin-api/admin-types.d.ts +0 -213
  146. package/dist/admin-api/admin-types.d.ts.map +0 -1
  147. package/dist/admin-api/admin-types.js +0 -3
  148. package/dist/admin-api/admin-types.js.map +0 -1
  149. package/dist/admin-api/index.d.ts +0 -4
  150. package/dist/admin-api/index.d.ts.map +0 -1
  151. package/dist/admin-api/index.js +0 -5
  152. package/dist/admin-api/index.js.map +0 -1
  153. package/dist/auth-api/auth-client.d.ts +0 -34
  154. package/dist/auth-api/auth-client.d.ts.map +0 -1
  155. package/dist/auth-api/auth-client.js +0 -112
  156. package/dist/auth-api/auth-client.js.map +0 -1
  157. package/dist/auth-api/auth-factory.d.ts +0 -8
  158. package/dist/auth-api/auth-factory.d.ts.map +0 -1
  159. package/dist/auth-api/auth-factory.js +0 -42
  160. package/dist/auth-api/auth-factory.js.map +0 -1
  161. package/dist/auth-api/auth-types.d.ts +0 -127
  162. package/dist/auth-api/auth-types.d.ts.map +0 -1
  163. package/dist/auth-api/auth-types.js +0 -3
  164. package/dist/auth-api/auth-types.js.map +0 -1
  165. package/dist/auth-api/index.d.ts +0 -4
  166. package/dist/auth-api/index.d.ts.map +0 -1
  167. package/dist/auth-api/index.js +0 -5
  168. package/dist/auth-api/index.js.map +0 -1
  169. package/dist/http-client/api-response.d.ts +0 -16
  170. package/dist/http-client/api-response.d.ts.map +0 -1
  171. package/dist/http-client/api-response.js +0 -2
  172. package/dist/http-client/api-response.js.map +0 -1
@@ -0,0 +1,202 @@
1
+ /**
2
+ * WebSocket Client
3
+ *
4
+ * Real-time event subscriptions via WebSocket.
5
+ * Events are pushed from server to client.
6
+ * For queries/mutations, use the JSON-RPC endpoint.
7
+ */
8
+ export class WebSocketClient {
9
+ constructor(options) {
10
+ this.ws = null;
11
+ this.requestId = 0;
12
+ this.pendingRequests = new Map();
13
+ this.eventHandlers = [];
14
+ this.errorHandlers = [];
15
+ this.closeHandlers = [];
16
+ this.reconnectAttempts = 0;
17
+ this.subscribedContexts = new Set();
18
+ this.options = {
19
+ autoReconnect: true,
20
+ reconnectDelay: 1000,
21
+ maxReconnectAttempts: 5,
22
+ getAuthToken: async () => null,
23
+ ...options,
24
+ };
25
+ }
26
+ /**
27
+ * Connect to the WebSocket server
28
+ */
29
+ async connect() {
30
+ if (this.ws?.readyState === WebSocket.OPEN) {
31
+ return;
32
+ }
33
+ const wsUrl = this.options.baseUrl
34
+ .replace(/^http:/, 'ws:')
35
+ .replace(/^https:/, 'wss:')
36
+ .replace(/\/$/, '') + '/ws';
37
+ const token = await this.options.getAuthToken();
38
+ return new Promise((resolve, reject) => {
39
+ // Note: Browser WebSocket doesn't support custom headers
40
+ // Token is passed via query param or subprotocol
41
+ const url = token ? `${wsUrl}?token=${encodeURIComponent(token)}` : wsUrl;
42
+ this.ws = new WebSocket(url);
43
+ this.ws.onopen = () => {
44
+ this.reconnectAttempts = 0;
45
+ resolve();
46
+ };
47
+ this.ws.onerror = (_event) => {
48
+ const error = new Error('WebSocket error');
49
+ this.errorHandlers.forEach(h => h(error));
50
+ reject(error);
51
+ };
52
+ this.ws.onclose = (event) => {
53
+ this.closeHandlers.forEach(h => h(event.code, event.reason));
54
+ this.handleDisconnect();
55
+ };
56
+ this.ws.onmessage = (event) => {
57
+ this.handleMessage(event.data);
58
+ };
59
+ });
60
+ }
61
+ /**
62
+ * Disconnect from the WebSocket server
63
+ */
64
+ disconnect() {
65
+ this.options.autoReconnect = false;
66
+ this.ws?.close();
67
+ this.ws = null;
68
+ this.subscribedContexts.clear();
69
+ }
70
+ /**
71
+ * Subscribe to context events
72
+ */
73
+ async subscribe(contextIds) {
74
+ const response = await this.send({
75
+ id: ++this.requestId,
76
+ method: 'subscribe',
77
+ params: { contextIds },
78
+ });
79
+ if (!response.error) {
80
+ contextIds.forEach(id => this.subscribedContexts.add(id));
81
+ }
82
+ return response;
83
+ }
84
+ /**
85
+ * Unsubscribe from context events
86
+ */
87
+ async unsubscribe(contextIds) {
88
+ const response = await this.send({
89
+ id: ++this.requestId,
90
+ method: 'unsubscribe',
91
+ params: { contextIds },
92
+ });
93
+ if (!response.error) {
94
+ contextIds.forEach(id => this.subscribedContexts.delete(id));
95
+ }
96
+ return response;
97
+ }
98
+ /**
99
+ * Add event handler
100
+ */
101
+ onEvent(handler) {
102
+ this.eventHandlers.push(handler);
103
+ return () => {
104
+ this.eventHandlers = this.eventHandlers.filter(h => h !== handler);
105
+ };
106
+ }
107
+ /**
108
+ * Add error handler
109
+ */
110
+ onError(handler) {
111
+ this.errorHandlers.push(handler);
112
+ return () => {
113
+ this.errorHandlers = this.errorHandlers.filter(h => h !== handler);
114
+ };
115
+ }
116
+ /**
117
+ * Add close handler
118
+ */
119
+ onClose(handler) {
120
+ this.closeHandlers.push(handler);
121
+ return () => {
122
+ this.closeHandlers = this.closeHandlers.filter(h => h !== handler);
123
+ };
124
+ }
125
+ /**
126
+ * Check if connected
127
+ */
128
+ isConnected() {
129
+ return this.ws?.readyState === WebSocket.OPEN;
130
+ }
131
+ /**
132
+ * Get subscribed context IDs
133
+ */
134
+ getSubscribedContexts() {
135
+ return Array.from(this.subscribedContexts);
136
+ }
137
+ async send(request) {
138
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
139
+ throw new Error('WebSocket not connected');
140
+ }
141
+ return new Promise((resolve, reject) => {
142
+ const id = request.id;
143
+ if (id !== null) {
144
+ this.pendingRequests.set(id, { resolve, reject });
145
+ }
146
+ this.ws.send(JSON.stringify(request));
147
+ // Timeout after 30 seconds
148
+ setTimeout(() => {
149
+ if (id !== null && this.pendingRequests.has(id)) {
150
+ this.pendingRequests.delete(id);
151
+ reject(new Error('WebSocket request timeout'));
152
+ }
153
+ }, 30000);
154
+ });
155
+ }
156
+ handleMessage(data) {
157
+ try {
158
+ const message = JSON.parse(data);
159
+ // Check if it's a response to a request
160
+ if (message.id !== undefined && this.pendingRequests.has(message.id)) {
161
+ const { resolve } = this.pendingRequests.get(message.id);
162
+ this.pendingRequests.delete(message.id);
163
+ resolve(message);
164
+ return;
165
+ }
166
+ // Otherwise it's an event
167
+ const event = {
168
+ contextId: message.contextId || message.context_id,
169
+ type: message.type || message.event,
170
+ data: message.data || message.payload,
171
+ };
172
+ this.eventHandlers.forEach(h => h(event));
173
+ }
174
+ catch (error) {
175
+ this.errorHandlers.forEach(h => h(error instanceof Error ? error : new Error(String(error))));
176
+ }
177
+ }
178
+ handleDisconnect() {
179
+ if (!this.options.autoReconnect) {
180
+ return;
181
+ }
182
+ if (this.reconnectAttempts >= this.options.maxReconnectAttempts) {
183
+ this.errorHandlers.forEach(h => h(new Error('Max reconnect attempts reached')));
184
+ return;
185
+ }
186
+ this.reconnectAttempts++;
187
+ const delay = this.options.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);
188
+ setTimeout(async () => {
189
+ try {
190
+ await this.connect();
191
+ // Resubscribe to previous contexts
192
+ if (this.subscribedContexts.size > 0) {
193
+ await this.subscribe(Array.from(this.subscribedContexts));
194
+ }
195
+ }
196
+ catch {
197
+ // Will retry via handleDisconnect
198
+ }
199
+ }, delay);
200
+ }
201
+ }
202
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/ws/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { WebSocketClient } from './client';
2
+ export type { WebSocketClientOptions, } from './client';
3
+ export type { SubscribeParams, UnsubscribeParams, WebSocketRequest, WebSocketResponse, WebSocketEvent, WebSocketEventHandler, WebSocketErrorHandler, WebSocketCloseHandler, } from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/ws/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EACV,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { WebSocketClient } from './client';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/ws/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * WebSocket Types
3
+ * Based on OpenAPI spec: /ws endpoint
4
+ */
5
+ export interface SubscribeParams {
6
+ contextIds: string[];
7
+ }
8
+ export interface UnsubscribeParams {
9
+ contextIds: string[];
10
+ }
11
+ export interface WebSocketRequest {
12
+ id: number | null;
13
+ method: 'subscribe' | 'unsubscribe';
14
+ params: SubscribeParams | UnsubscribeParams;
15
+ }
16
+ export interface WebSocketResponse {
17
+ id: number | null;
18
+ result?: unknown;
19
+ error?: {
20
+ type: string;
21
+ data?: string | Record<string, unknown>;
22
+ };
23
+ }
24
+ export interface WebSocketEvent {
25
+ contextId: string;
26
+ type: string;
27
+ data: unknown;
28
+ }
29
+ export type WebSocketEventHandler = (event: WebSocketEvent) => void;
30
+ export type WebSocketErrorHandler = (error: Error) => void;
31
+ export type WebSocketCloseHandler = (code: number, reason: string) => void;
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/ws/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;IACpC,MAAM,EAAE,eAAe,GAAG,iBAAiB,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACzC,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AACpE,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAC3D,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * WebSocket Types
3
+ * Based on OpenAPI spec: /ws endpoint
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/ws/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,5 +1,5 @@
1
1
  export * from './http-types';
2
- export * from './api-response';
2
+ export * from '../types/api-response';
3
3
  export { WebHttpClient, HTTPError } from './web-client';
4
4
  export { createHttpClient, createBrowserHttpClient, createNodeHttpClient, createUniversalHttpClient, } from './http-factory';
5
5
  export { withRetry, createRetryableMethod } from './retry';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http-client/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http-client/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAE7B,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  // HTTP client types and interfaces
2
2
  export * from './http-types';
3
- export * from './api-response';
3
+ // Re-export response types from canonical location
4
+ export * from '../types/api-response';
4
5
  // Web Standards HTTP client implementation
5
6
  export { WebHttpClient, HTTPError } from './web-client';
6
7
  // Factory functions for easy client creation
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http-client/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAE/B,2CAA2C;AAC3C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAExD,6CAA6C;AAC7C,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,sBAAsB;AACtB,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG3D,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http-client/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,cAAc,cAAc,CAAC;AAC7B,mDAAmD;AACnD,cAAc,uBAAuB,CAAC;AAEtC,2CAA2C;AAC3C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAExD,6CAA6C;AAC7C,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,sBAAsB;AACtB,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG3D,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -4,9 +4,9 @@ export declare class HTTPError extends Error {
4
4
  statusText: string;
5
5
  url: string;
6
6
  headers: Headers;
7
- bodyText?: string;
8
- name: "HTTPError";
9
- constructor(status: number, statusText: string, url: string, headers: Headers, bodyText?: string);
7
+ bodyText?: string | undefined;
8
+ readonly name: "HTTPError";
9
+ constructor(status: number, statusText: string, url: string, headers: Headers, bodyText?: string | undefined);
10
10
  toJSON(): {
11
11
  status: number;
12
12
  statusText: string;
@@ -1 +1 @@
1
- {"version":3,"file":"web-client.d.ts","sourceRoot":"","sources":["../../src/http-client/web-client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EAEf,MAAM,cAAc,CAAC;AAItB,qBAAa,SAAU,SAAQ,KAAK;IAIzB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM;IAClB,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,OAAO;IAChB,QAAQ,CAAC,EAAE,MAAM;IAP1B,IAAI,cAAwB;gBAGnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,MAAM;IAK1B,MAAM,IAAI;QACR,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;CASF;AAYD,qBAAa,aAAc,YAAW,UAAU;IAMlC,OAAO,CAAC,SAAS;IAJ7B,OAAO,CAAC,mBAAmB,CAAgC;IAE3D,OAAO,CAAC,qBAAqB,CAA8B;gBAEvC,SAAS,EAAE,SAAS;IAElC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIvD,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAYP,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAYP,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D,KAAK,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAYP,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAYzD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;YAInD,WAAW;IA6NzB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,iBAAiB;YAmBX,YAAY;YAqCZ,aAAa;YAmBb,WAAW;CAQ1B"}
1
+ {"version":3,"file":"web-client.d.ts","sourceRoot":"","sources":["../../src/http-client/web-client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EAEf,MAAM,cAAc,CAAC;AAItB,qBAAa,SAAU,SAAQ,KAAK;IAIzB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM;IAClB,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,OAAO;IAChB,QAAQ,CAAC;IAPlB,SAAkB,IAAI,cAAwB;gBAGrC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,oBAAQ;IAK1B,MAAM,IAAI;QACR,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;CASF;AAYD,qBAAa,aAAc,YAAW,UAAU;IAMlC,OAAO,CAAC,SAAS;IAJ7B,OAAO,CAAC,mBAAmB,CAAgC;IAE3D,OAAO,CAAC,qBAAqB,CAA8B;gBAEvC,SAAS,EAAE,SAAS;IAElC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIvD,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAkBP,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAYP,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D,KAAK,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC;IAYP,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAYzD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;YAInD,WAAW;IAkOzB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,iBAAiB;YAmBX,YAAY;YAqCZ,aAAa;YAmBb,WAAW;CAQ1B"}
@@ -41,10 +41,16 @@ export class WebHttpClient {
41
41
  return this.request(path, { ...init, method: 'GET' });
42
42
  }
43
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
+ }
44
50
  return this.request(path, {
45
51
  ...init,
46
52
  method: 'POST',
47
- body: body ? JSON.stringify(body) : undefined,
53
+ body: jsonBody,
48
54
  headers: {
49
55
  'Content-Type': 'application/json',
50
56
  ...init?.headers,
@@ -180,16 +186,19 @@ export class WebHttpClient {
180
186
  if (!response.ok) {
181
187
  const bodyText = await this.getBodyText(response);
182
188
  const httpError = new HTTPError(response.status, response.statusText, url, response.headers, bodyText);
183
- // Handle 401 with token_expired - attempt automatic token refresh
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)
184
192
  // Don't retry if user aborted the request
185
193
  const userAborted = init?.signal?.aborted === true;
186
- if (response.status === 401 &&
194
+ const hasAuthError = response.headers.get('x-auth-error');
195
+ const shouldAttemptRefresh = response.status === 401 &&
187
196
  this.transport.refreshToken &&
188
- response.headers.get('x-auth-error') === 'token_expired' &&
189
197
  retryCount < MAX_RETRY_ATTEMPTS &&
190
198
  !isStreamBody && // Can't retry with stream bodies
191
- !userAborted // Don't retry if user aborted
192
- ) {
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 });
193
202
  try {
194
203
  // Use cached refresh promise if one is in progress (prevents race conditions)
195
204
  let refreshPromise = this.refreshTokenPromise;
@@ -250,6 +259,7 @@ export class WebHttpClient {
250
259
  // Clear caches on error
251
260
  this.refreshTokenPromise = null;
252
261
  this.onTokenRefreshPromise = null;
262
+ console.log('[mero-js] Token refresh failed:', refreshError);
253
263
  // Configuration errors (missing onTokenRefresh) should be thrown as-is
254
264
  if (refreshError instanceof Error && refreshError.message.includes('onTokenRefresh')) {
255
265
  throw refreshError;
@@ -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 x(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=i=>{s.abort(i.target.reason);for(let l of e)l.removeEventListener("abort",r)};for(let i of e){if(i.aborted)return AbortSignal.abort(i.reason);i.addEventListener("abort",r,{once:!0})}return s.signal}function S(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 d=class extends Error{constructor(t,s,r,i,l){super(`HTTP ${t} ${s}`);this.status=t;this.statusText=s;this.url=r;this.headers=i;this.bodyText=l;this.name="HTTPError"}toJSON(){return{status:this.status,statusText:this.statusText,url:this.url,headers:D(this.headers),bodyText:this.bodyText}}};function D(n){let e={};return n.forEach((t,s)=>{e[s]=t}),e}var C=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){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:D(s.headers),status:s.status}}async request(e,t){return this.makeRequest(e,t)}async makeRequest(e,t,s=0,r){let l=this.buildUrl(e),k=r??Date.now(),v=this.createAbortSignal(t),u=await this.buildHeaders(t?.headers),p;u instanceof Headers?(p={},u.forEach((o,T)=>{p[T]=o})):p=u;let a={method:t?.method||"GET",headers:p},f=t?.body instanceof ReadableStream||typeof t?.body=="object"&&t?.body!==null&&"getReader"in t.body&&!(t.body instanceof Blob);(t?.body!==void 0&&!f||t?.body!==void 0&&f&&s===0)&&(a.body=t.body);let g;if(s>0&&r!==void 0){let o=t?.timeoutMs||this.transport.timeoutMs;if(o){let T=Date.now()-k,R=Math.max(0,o-T);g=this.createAbortSignal({...t,timeoutMs:R})}else g=this.createAbortSignal(t)}else g=v;g&&(a.signal=g),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 o=await this.transport.fetch(l,a);if(!o.ok){let T=await this.getBodyText(o),R=new d(o.status,o.statusText,l,o.headers,T),G=t?.signal?.aborted===!0;if(o.status===401&&this.transport.refreshToken&&o.headers.get("x-auth-error")==="token_expired"&&s<1&&!f&&!G)try{let h=this.refreshTokenPromise;h||(h=this.transport.refreshToken(),this.refreshTokenPromise=h);let H=await h;if(!H||H.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 w=this.onTokenRefreshPromise;w||(w=this.transport.onTokenRefresh(H),this.onTokenRefreshPromise=w),await w,this.refreshTokenPromise=null,this.onTokenRefreshPromise=null;let q=t?.timeoutMs||this.transport.timeoutMs;if(q&&r!==void 0){let B=Date.now()-k;if(q-B<=0)throw R}return this.makeRequest(e,t,s+1,k)}catch(h){throw this.refreshTokenPromise=null,this.onTokenRefreshPromise=null,h instanceof Error&&h.message.includes("onTokenRefresh")?h:R}throw R}return this.parseResponse(o,t?.parse)}catch(o){throw o instanceof d||o instanceof Error&&o.message.includes("onTokenRefresh")?o:new d(0,"Network Error",l,new Headers,o instanceof Error?o.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(S(s)),t.length>0?x(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,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 E(n){return new C(n)}function P(n){let e={fetch:(t,s)=>globalThis.fetch(t,s),baseUrl:n.baseUrl,getAuthToken:n.getAuthToken,onTokenRefresh:n.onTokenRefresh,refreshToken:n.refreshToken,defaultHeaders:n.defaultHeaders,timeoutMs:n.timeoutMs,credentials:n.credentials,defaultAbortSignal:n.defaultAbortSignal};return E(e)}function M(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,i)=>globalThis.fetch(r,i):(r,i)=>e(r,i),baseUrl:n.baseUrl,getAuthToken:n.getAuthToken,onTokenRefresh:n.onTokenRefresh,refreshToken:n.refreshToken,defaultHeaders:n.defaultHeaders,timeoutMs:n.timeoutMs,credentials:n.credentials,defaultAbortSignal:n.defaultAbortSignal};return E(s)}function I(n){return typeof window<"u"?P(n):M(n)}function K(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 i=r.status;return i>=500||i===429}return s==="TypeError"}function L(n){let t=250*Math.pow(2,n-1),s=(Math.random()-.5)*.4*t;return Math.max(0,t+s)}async function _(n,e={}){let{attempts:t=3}=e,s;for(let r=1;r<=t;r++)try{return await n(r)}catch(i){if(s=i,!K(s,t-r))throw s;let l=L(r),u=s.headers?.get?.("Retry-After");if(u){let p=parseInt(u,10);if(!isNaN(p))l=Math.max(l,p*1e3);else{let a=new Date(u);if(!isNaN(a.getTime())){let f=Math.max(0,a.getTime()-Date.now());l=Math.max(l,Math.min(f,6e4))}}}await new Promise(p=>setTimeout(p,l))}throw s||new Error("Retry failed without error")}function $(n,e={}){return async(...t)=>_(()=>n(...t),e)}var c=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 y=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 ie(n){let e=new y;return new c(e)}function ae(n){let e=new y;return new c(e)}function le(n){let e=new y;return new c(e)}function N(n,e){return new c(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 A=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 ce(n){let e=new A;return new m(e)}function me(n){let e=new A;return new m(e)}function de(n){let e=new A;return new m(e)}function U(n,e){return new m(n)}var b=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=P({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=N(this.httpClient,{baseUrl:this.config.baseUrl,getAuthToken:async()=>(await this.getValidToken())?.access_token||"",timeoutMs:this.config.timeoutMs}),this.adminClient=U(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 O(n){return new b(n)}export{m as AdminApiClient,c as AuthApiClient,d as HTTPError,b as MeroJs,C as WebHttpClient,x as combineSignals,de as createAdminApiClient,U as createAdminApiClientFromHttpClient,le as createAuthApiClient,N as createAuthApiClientFromHttpClient,ce as createBrowserAdminApiClient,ie as createBrowserAuthApiClient,P as createBrowserHttpClient,E as createHttpClient,O as createMeroJs,me as createNodeAdminApiClient,ae as createNodeAuthApiClient,M as createNodeHttpClient,$ as createRetryableMethod,S as createTimeoutSignal,I as createUniversalHttpClient,_ 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