@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
@@ -0,0 +1,127 @@
1
+ import { unwrap } from '../utils';
2
+ export class AuthApiClient {
3
+ constructor(httpClient, config) {
4
+ this.httpClient = httpClient;
5
+ // Auto-detect embedded mode if not specified
6
+ // Embedded: baseUrl matches admin API base URL (or not specified, default to embedded)
7
+ // Proxied: baseUrl is different (external service)
8
+ this.embedded = config.embedded ?? true; // Default to embedded
9
+ }
10
+ getAuthPath(path) {
11
+ if (this.embedded) {
12
+ // Embedded mode: use /auth/ prefix (relative to HttpClient's baseUrl)
13
+ return `/auth${path}`;
14
+ }
15
+ // Proxied mode: paths are relative to the external auth service
16
+ // The HttpClient should have the external baseUrl set
17
+ return path;
18
+ }
19
+ // Public endpoints
20
+ async getLogin() {
21
+ return this.httpClient.get(this.getAuthPath('/login'), {
22
+ parse: 'text',
23
+ });
24
+ }
25
+ async getChallenge() {
26
+ return unwrap(this.httpClient.get(this.getAuthPath('/challenge')));
27
+ }
28
+ async getToken(request) {
29
+ return unwrap(this.httpClient.post(this.getAuthPath('/token'), request));
30
+ }
31
+ async refreshToken(request) {
32
+ return unwrap(this.httpClient.post(this.getAuthPath('/refresh'), request));
33
+ }
34
+ async getProviders() {
35
+ return unwrap(this.httpClient.get(this.getAuthPath('/providers')));
36
+ }
37
+ async getIdentity() {
38
+ return unwrap(this.httpClient.get(this.getAuthPath('/identity')));
39
+ }
40
+ /**
41
+ * Validate a JWT token.
42
+ *
43
+ * Note: The server returns an empty string "" on success with auth info in headers
44
+ * (X-Auth-User, X-Auth-Permissions). If no error is thrown, the token is valid.
45
+ */
46
+ async validateToken(request) {
47
+ const response = await this.httpClient.post(this.getAuthPath('/validate'), request);
48
+ // Handle raw response (empty string = valid) vs structured response
49
+ if (response.data === '' || response.data === undefined || response.data === null) {
50
+ // Server returned empty string on success
51
+ return { valid: true };
52
+ }
53
+ if (typeof response.data === 'object' && 'valid' in response.data) {
54
+ // Server returned structured response
55
+ return response.data;
56
+ }
57
+ // Fallback: if we got here without error, token is valid
58
+ return { valid: true };
59
+ }
60
+ /**
61
+ * Validate a JWT token using GET with Authorization header.
62
+ *
63
+ * Note: The server returns an empty string "" on success with auth info in headers
64
+ * (X-Auth-User, X-Auth-Permissions). If no error is thrown, the token is valid.
65
+ */
66
+ async validateTokenGet(token) {
67
+ const response = await this.httpClient.get(this.getAuthPath('/validate'), {
68
+ headers: {
69
+ Authorization: `Bearer ${token}`,
70
+ },
71
+ });
72
+ // Handle raw response (empty string = valid) vs structured response
73
+ if (response.data === '' || response.data === undefined || response.data === null) {
74
+ return { valid: true };
75
+ }
76
+ if (typeof response.data === 'object' && 'valid' in response.data) {
77
+ return response.data;
78
+ }
79
+ return { valid: true };
80
+ }
81
+ async getHealth() {
82
+ return unwrap(this.httpClient.get(this.getAuthPath('/health')));
83
+ }
84
+ async getCallback(callbackUrl) {
85
+ const params = callbackUrl
86
+ ? `?callback-url=${encodeURIComponent(callbackUrl)}`
87
+ : '';
88
+ return this.httpClient.get(this.getAuthPath(`/callback${params}`), {
89
+ parse: 'text',
90
+ });
91
+ }
92
+ // Protected endpoints (require JWT token)
93
+ async revokeToken() {
94
+ return unwrap(this.httpClient.post(this.getAuthPath('/admin/revoke'), {}));
95
+ }
96
+ async listRootKeys() {
97
+ return unwrap(this.httpClient.get(this.getAuthPath('/admin/keys')));
98
+ }
99
+ async createRootKey(request) {
100
+ return unwrap(this.httpClient.post(this.getAuthPath('/admin/keys'), request));
101
+ }
102
+ async deleteRootKey(keyId) {
103
+ return unwrap(this.httpClient.delete(this.getAuthPath(`/admin/keys/${keyId}`)));
104
+ }
105
+ async listClientKeys() {
106
+ return unwrap(this.httpClient.get(this.getAuthPath('/admin/keys/clients')));
107
+ }
108
+ async generateClientKey(request) {
109
+ return unwrap(this.httpClient.post(this.getAuthPath('/admin/client-key'), request));
110
+ }
111
+ async deleteClientKey(keyId, clientId) {
112
+ return unwrap(this.httpClient.delete(this.getAuthPath(`/admin/keys/${keyId}/clients/${clientId}`)));
113
+ }
114
+ async getKeyPermissions(keyId) {
115
+ return unwrap(this.httpClient.get(this.getAuthPath(`/admin/keys/${keyId}/permissions`)));
116
+ }
117
+ async updateKeyPermissions(keyId, request) {
118
+ return unwrap(this.httpClient.put(this.getAuthPath(`/admin/keys/${keyId}/permissions`), request));
119
+ }
120
+ async getProtectedIdentity() {
121
+ return unwrap(this.httpClient.get(this.getAuthPath('/admin/identity')));
122
+ }
123
+ async getMetrics() {
124
+ return unwrap(this.httpClient.get(this.getAuthPath('/admin/metrics')));
125
+ }
126
+ }
127
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/auth/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAA2B,MAAM,UAAU,CAAC;AAgB3D,MAAM,OAAO,aAAa;IAGxB,YACU,UAAsB,EAC9B,MAA2B;QADnB,eAAU,GAAV,UAAU,CAAY;QAG9B,6CAA6C;QAC7C,uFAAuF;QACvF,mDAAmD;QACnD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,sBAAsB;IACjE,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,sEAAsE;YACtE,OAAO,QAAQ,IAAI,EAAE,CAAC;SACvB;QACD,gEAAgE;QAChE,sDAAsD;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAS,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;YAC7D,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAC/B,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,OAA+B;QAE/B,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAC1B,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,OAAkC;QAElC,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAC5B,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAC/B,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAC9B,CACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CACjB,OAAqC;QAErC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAEzC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QAE1C,oEAAoE;QACpE,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;YACjF,0CAA0C;YAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SACxB;QACD,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjE,sCAAsC;YACtC,OAAO,QAAQ,CAAC,IAAqC,CAAC;SACvD;QACD,yDAAyD;QACzD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAExC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;YAC/B,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;SACF,CAAC,CAAC;QAEH,oEAAoE;QACpE,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;YACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SACxB;QACD,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjE,OAAO,QAAQ,CAAC,IAAqC,CAAC;SACvD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAC5B,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,WAAoB;QACpC,MAAM,MAAM,GAAG,WAAW;YACxB,CAAC,CAAC,iBAAiB,kBAAkB,CAAC,WAAW,CAAC,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,WAAW,CAAC,YAAY,MAAM,EAAE,CAAC,EACtC;YACE,KAAK,EAAE,MAAM;SACd,CACF,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,WAAW;QACf,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EACjC,EAAE,CACH,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAChC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,OAAmC;QAEnC,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAC/B,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,MAAM,CACpB,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,EAAE,CAAC,CACzC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,CACxC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,OAAuC;QAEvC,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,EACrC,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAa,EACb,QAAgB;QAEhB,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,MAAM,CACpB,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,YAAY,QAAQ,EAAE,CAAC,CAC7D,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,KAAa;QAEb,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,cAAc,CAAC,CACrD,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,KAAa,EACb,OAA0C;QAE1C,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,cAAc,CAAC,EACpD,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CACpC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,MAAM,CACX,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CACnC,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import { HttpClient } from '../../http-client';
2
+ import { AuthApiClient, AuthApiClientConfig } from './client';
3
+ export declare function createAuthApiClient(httpClient: HttpClient, config: AuthApiClientConfig): AuthApiClient;
4
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/api/auth/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE9D,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAEf"}
@@ -0,0 +1,5 @@
1
+ import { AuthApiClient } from './client';
2
+ export function createAuthApiClient(httpClient, config) {
3
+ return new AuthApiClient(httpClient, config);
4
+ }
5
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/api/auth/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAuB,MAAM,UAAU,CAAC;AAE9D,MAAM,UAAU,mBAAmB,CACjC,UAAsB,EACtB,MAA2B;IAE3B,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './client';
3
+ export * from './factory';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './client';
3
+ export * from './factory';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,94 @@
1
+ export interface AuthChallengeResponse {
2
+ challenge: string;
3
+ nonce: string;
4
+ }
5
+ export type AuthMethod = 'near_wallet' | 'user_password' | 'eth_wallet' | 'starknet_wallet' | 'icp_wallet';
6
+ export interface AuthTokenRequest {
7
+ auth_method: AuthMethod;
8
+ public_key: string;
9
+ client_name: string;
10
+ timestamp: number;
11
+ provider_data: Record<string, unknown>;
12
+ permissions?: string[];
13
+ }
14
+ export interface AuthTokenResponse {
15
+ access_token: string;
16
+ refresh_token: string;
17
+ expires_in: number;
18
+ }
19
+ export interface RefreshTokenRequest {
20
+ access_token: string;
21
+ refresh_token: string;
22
+ }
23
+ export interface AuthProvider {
24
+ id: string;
25
+ name: string;
26
+ enabled: boolean;
27
+ }
28
+ export interface AuthProvidersResponse {
29
+ providers: AuthProvider[];
30
+ count?: number;
31
+ }
32
+ export interface AuthIdentityResponse {
33
+ service: string;
34
+ version: string;
35
+ identity: string;
36
+ }
37
+ export interface TokenValidationRequest {
38
+ token: string;
39
+ }
40
+ export interface TokenValidationResponse {
41
+ valid: boolean;
42
+ claims?: Record<string, unknown> | null;
43
+ }
44
+ export type TokenValidationRawResponse = string;
45
+ export interface RevokeTokenResponse {
46
+ revoked: boolean;
47
+ }
48
+ export interface RootKey {
49
+ keyId: string;
50
+ publicKey: string;
51
+ clientName: string;
52
+ createdAt: string;
53
+ permissions: string[];
54
+ }
55
+ export type ListRootKeysResponse = RootKey[];
56
+ export interface CreateRootKeyRequest {
57
+ publicKey: string;
58
+ clientName: string;
59
+ permissions?: string[];
60
+ }
61
+ export type CreateRootKeyResponse = RootKey;
62
+ export interface DeleteRootKeyResponse {
63
+ deleted: boolean;
64
+ }
65
+ export interface ClientKey {
66
+ keyId: string;
67
+ rootKeyId: string;
68
+ contextId: string | null;
69
+ contextIdentity: string | null;
70
+ permissions: string[];
71
+ createdAt: string;
72
+ }
73
+ export type ListClientKeysResponse = ClientKey[];
74
+ export interface GenerateClientKeyRequest {
75
+ contextId: string;
76
+ contextIdentity: string;
77
+ permissions: string[];
78
+ }
79
+ export type GenerateClientKeyResponse = ClientKey;
80
+ export interface DeleteClientKeyResponse {
81
+ deleted: boolean;
82
+ }
83
+ export type GetKeyPermissionsResponse = string[];
84
+ export interface UpdateKeyPermissionsRequest {
85
+ permissions: string[];
86
+ }
87
+ export type UpdateKeyPermissionsResponse = string[];
88
+ export interface AuthMetricsResponse {
89
+ [key: string]: Record<string, unknown>;
90
+ }
91
+ export interface HealthResponse {
92
+ status: string;
93
+ }
94
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/auth/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // Types matching OpenAPI spec exactly
2
+ // All responses are wrapped in { data: ... }
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/auth/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6CAA6C"}
@@ -0,0 +1,15 @@
1
+ export * as AdminApi from './admin';
2
+ export { AdminApiClient, createAdminApiClient } from './admin';
3
+ export * as AuthApi from './auth';
4
+ export { AuthApiClient, createAuthApiClient } from './auth';
5
+ export * as RpcApi from './rpc';
6
+ export { RpcClient, JsonRpcError } from './rpc';
7
+ export type { ExecuteParams, ExecuteResult, ExecutionRequest, JsonRpcRequest, JsonRpcResponse, } from './rpc';
8
+ export * as WsApi from './ws';
9
+ export { WebSocketClient } from './ws';
10
+ export type { WebSocketClientOptions, WebSocketEvent, WebSocketRequest, WebSocketResponse, } from './ws';
11
+ export * as SseApi from './sse';
12
+ export { SseClient } from './sse';
13
+ export type { SseClientOptions, SseEvent, SseSubscriptionRequest, SseSubscriptionResponse, } from './sse';
14
+ export * from './utils';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAG/D,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAG5D,OAAO,KAAK,MAAM,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAChD,YAAY,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,KAAK,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,MAAM,CAAC;AAGd,OAAO,KAAK,MAAM,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,OAAO,CAAC;AAGf,cAAc,SAAS,CAAC"}
@@ -0,0 +1,18 @@
1
+ // Export admin API
2
+ export * as AdminApi from './admin';
3
+ export { AdminApiClient, createAdminApiClient } from './admin';
4
+ // Export auth API
5
+ export * as AuthApi from './auth';
6
+ export { AuthApiClient, createAuthApiClient } from './auth';
7
+ // Export RPC API (JSON-RPC for executing queries/mutations)
8
+ export * as RpcApi from './rpc';
9
+ export { RpcClient, JsonRpcError } from './rpc';
10
+ // Export WebSocket client (real-time event subscriptions)
11
+ export * as WsApi from './ws';
12
+ export { WebSocketClient } from './ws';
13
+ // Export SSE client (Server-Sent Events for real-time streaming)
14
+ export * as SseApi from './sse';
15
+ export { SseClient } from './sse';
16
+ // Export shared utilities
17
+ export * from './utils';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/D,kBAAkB;AAClB,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAE5D,4DAA4D;AAC5D,OAAO,KAAK,MAAM,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAShD,0DAA0D;AAC1D,OAAO,KAAK,KAAK,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAQvC,iEAAiE;AACjE,OAAO,KAAK,MAAM,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQlC,0BAA0B;AAC1B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * JSON-RPC Client
3
+ *
4
+ * Handles execution of queries and mutations on Calimero contexts
5
+ * via the /jsonrpc endpoint.
6
+ */
7
+ import { HttpClient } from '../../http-client';
8
+ import type { ExecuteParams, ExecuteResult, JsonRpcId } from './types';
9
+ /**
10
+ * Error thrown when JSON-RPC execution fails
11
+ */
12
+ export declare class JsonRpcError extends Error {
13
+ readonly type: string;
14
+ readonly data?: string | Record<string, unknown> | undefined;
15
+ readonly requestId?: JsonRpcId | undefined;
16
+ constructor(type: string, data?: string | Record<string, unknown> | undefined, requestId?: JsonRpcId | undefined);
17
+ }
18
+ /**
19
+ * JSON-RPC Client for executing queries and mutations
20
+ */
21
+ export declare class RpcClient {
22
+ private httpClient;
23
+ private readonly path;
24
+ constructor(httpClient: HttpClient);
25
+ /**
26
+ * Generate a random request ID
27
+ */
28
+ private generateRequestId;
29
+ /**
30
+ * Execute a method on a context
31
+ *
32
+ * @param params - Execution parameters
33
+ * @returns The execution result
34
+ * @throws JsonRpcError if execution fails
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // Query (view) operation
39
+ * const result = await rpc.execute({
40
+ * contextId: 'ctx_123',
41
+ * method: 'get',
42
+ * args: { key: 'myKey' },
43
+ * executorPublicKey: 'ed25519:...',
44
+ * });
45
+ * console.log(result.output); // "myValue"
46
+ *
47
+ * // Mutate operation
48
+ * await rpc.execute({
49
+ * contextId: 'ctx_123',
50
+ * method: 'set',
51
+ * args: { key: 'myKey', value: 'myValue' },
52
+ * executorPublicKey: 'ed25519:...',
53
+ * });
54
+ * ```
55
+ */
56
+ execute<T = unknown>(params: ExecuteParams): Promise<ExecuteResult<T>>;
57
+ /**
58
+ * Execute a query (view) method - convenience wrapper
59
+ *
60
+ * @param contextId - Context ID
61
+ * @param method - Method name
62
+ * @param args - Method arguments
63
+ * @param executorPublicKey - Executor's public key
64
+ */
65
+ query<T = unknown>(contextId: string, method: string, args: Record<string, unknown>, executorPublicKey: string): Promise<T | null>;
66
+ /**
67
+ * Execute a mutate method - convenience wrapper
68
+ *
69
+ * @param contextId - Context ID
70
+ * @param method - Method name
71
+ * @param args - Method arguments
72
+ * @param executorPublicKey - Executor's public key
73
+ */
74
+ mutate<T = unknown>(contextId: string, method: string, args: Record<string, unknown>, executorPublicKey: string): Promise<T | null>;
75
+ }
76
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/rpc/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAGV,aAAa,EACb,aAAa,EACb,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAEnB,IAAI,EAAE,MAAM;aACZ,IAAI,CAAC;aACL,SAAS,CAAC;gBAFV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,8CAAkC,EACvC,SAAS,CAAC,uBAAW;CAWxC;AAED;;GAEG;AACH,qBAAa,SAAS;IAGR,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;gBAEf,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IA2C5E;;;;;;;OAOG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUpB;;;;;;;OAOG;IACG,MAAM,CAAC,CAAC,GAAG,OAAO,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CASrB"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * JSON-RPC Client
3
+ *
4
+ * Handles execution of queries and mutations on Calimero contexts
5
+ * via the /jsonrpc endpoint.
6
+ */
7
+ /**
8
+ * Error thrown when JSON-RPC execution fails
9
+ */
10
+ export class JsonRpcError extends Error {
11
+ constructor(type, data, requestId) {
12
+ const message = typeof data === 'string'
13
+ ? data
14
+ : data?.message
15
+ ? String(data.message)
16
+ : type;
17
+ super(message);
18
+ this.type = type;
19
+ this.data = data;
20
+ this.requestId = requestId;
21
+ this.name = 'JsonRpcError';
22
+ }
23
+ }
24
+ /**
25
+ * JSON-RPC Client for executing queries and mutations
26
+ */
27
+ export class RpcClient {
28
+ constructor(httpClient) {
29
+ this.httpClient = httpClient;
30
+ this.path = '/jsonrpc';
31
+ }
32
+ /**
33
+ * Generate a random request ID
34
+ */
35
+ generateRequestId() {
36
+ return Math.floor(Math.random() * Math.pow(2, 32));
37
+ }
38
+ /**
39
+ * Execute a method on a context
40
+ *
41
+ * @param params - Execution parameters
42
+ * @returns The execution result
43
+ * @throws JsonRpcError if execution fails
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * // Query (view) operation
48
+ * const result = await rpc.execute({
49
+ * contextId: 'ctx_123',
50
+ * method: 'get',
51
+ * args: { key: 'myKey' },
52
+ * executorPublicKey: 'ed25519:...',
53
+ * });
54
+ * console.log(result.output); // "myValue"
55
+ *
56
+ * // Mutate operation
57
+ * await rpc.execute({
58
+ * contextId: 'ctx_123',
59
+ * method: 'set',
60
+ * args: { key: 'myKey', value: 'myValue' },
61
+ * executorPublicKey: 'ed25519:...',
62
+ * });
63
+ * ```
64
+ */
65
+ async execute(params) {
66
+ const requestId = this.generateRequestId();
67
+ const request = {
68
+ jsonrpc: '2.0',
69
+ id: requestId,
70
+ method: 'execute',
71
+ params: {
72
+ contextId: params.contextId,
73
+ method: params.method,
74
+ argsJson: params.args,
75
+ executorPublicKey: params.executorPublicKey,
76
+ substitute: params.substitute ?? [],
77
+ },
78
+ };
79
+ const response = await this.httpClient.post(this.path, request);
80
+ // Validate response ID matches request ID
81
+ if (response.id !== requestId) {
82
+ throw new JsonRpcError('MismatchedRequestIdError', `Expected request ID ${requestId}, got ${response.id}`, response.id);
83
+ }
84
+ // Check for error response
85
+ if (response.error) {
86
+ throw new JsonRpcError(response.error.type, response.error.data, response.id);
87
+ }
88
+ // Return result
89
+ return response.result ?? { output: null };
90
+ }
91
+ /**
92
+ * Execute a query (view) method - convenience wrapper
93
+ *
94
+ * @param contextId - Context ID
95
+ * @param method - Method name
96
+ * @param args - Method arguments
97
+ * @param executorPublicKey - Executor's public key
98
+ */
99
+ async query(contextId, method, args, executorPublicKey) {
100
+ const result = await this.execute({
101
+ contextId,
102
+ method,
103
+ args,
104
+ executorPublicKey,
105
+ });
106
+ return result.output;
107
+ }
108
+ /**
109
+ * Execute a mutate method - convenience wrapper
110
+ *
111
+ * @param contextId - Context ID
112
+ * @param method - Method name
113
+ * @param args - Method arguments
114
+ * @param executorPublicKey - Executor's public key
115
+ */
116
+ async mutate(contextId, method, args, executorPublicKey) {
117
+ const result = await this.execute({
118
+ contextId,
119
+ method,
120
+ args,
121
+ executorPublicKey,
122
+ });
123
+ return result.output;
124
+ }
125
+ }
126
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/rpc/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { RpcClient, JsonRpcError } from './client';
2
+ export type { ExecuteParams, ExecuteResult, ExecutionRequest, ExecutionResult, JsonRpcError as JsonRpcErrorType, JsonRpcId, JsonRpcRequest, JsonRpcResponse, JsonRpcVersion, } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,IAAI,gBAAgB,EAChC,SAAS,EACT,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RpcClient, JsonRpcError } from './client';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * JSON-RPC Types
3
+ * Based on OpenAPI spec: /jsonrpc endpoint
4
+ */
5
+ export type JsonRpcVersion = '2.0';
6
+ export type JsonRpcId = string | number | null;
7
+ /**
8
+ * Request to execute a method on a context
9
+ */
10
+ export interface ExecutionRequest {
11
+ /** Context ID to execute on */
12
+ contextId: string;
13
+ /** Method name to execute (e.g., 'set', 'get') */
14
+ method: string;
15
+ /** Method arguments as JSON object */
16
+ argsJson: Record<string, unknown>;
17
+ /** Public key of the executor */
18
+ executorPublicKey: string;
19
+ /** Alias substitutions (optional) */
20
+ substitute?: Array<Record<string, unknown>>;
21
+ }
22
+ /**
23
+ * JSON-RPC request wrapper
24
+ */
25
+ export interface JsonRpcRequest {
26
+ jsonrpc: JsonRpcVersion;
27
+ id: JsonRpcId;
28
+ method: 'execute';
29
+ params: ExecutionRequest;
30
+ }
31
+ /**
32
+ * Successful execution result
33
+ */
34
+ export interface ExecutionResult<T = unknown> {
35
+ output: T | null;
36
+ }
37
+ /**
38
+ * JSON-RPC error object
39
+ */
40
+ export interface JsonRpcError {
41
+ type: string;
42
+ data?: string | Record<string, unknown>;
43
+ }
44
+ /**
45
+ * JSON-RPC response wrapper
46
+ */
47
+ export interface JsonRpcResponse<T = unknown> {
48
+ jsonrpc: JsonRpcVersion;
49
+ id: JsonRpcId;
50
+ result?: ExecutionResult<T>;
51
+ error?: JsonRpcError;
52
+ }
53
+ /**
54
+ * Simplified execute request for the client API
55
+ */
56
+ export interface ExecuteParams {
57
+ /** Context ID to execute on */
58
+ contextId: string;
59
+ /** Method name to execute */
60
+ method: string;
61
+ /** Method arguments */
62
+ args: Record<string, unknown>;
63
+ /** Public key of the executor */
64
+ executorPublicKey: string;
65
+ /** Alias substitutions (optional) */
66
+ substitute?: Array<Record<string, unknown>>;
67
+ }
68
+ /**
69
+ * Execute result with typed output
70
+ */
71
+ export interface ExecuteResult<T = unknown> {
72
+ output: T | null;
73
+ }
74
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/rpc/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC;AACnC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,iCAAiC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,iCAAiC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;CAClB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * JSON-RPC Types
3
+ * Based on OpenAPI spec: /jsonrpc endpoint
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/rpc/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}