@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
@@ -1,127 +0,0 @@
1
- export { ApiResponse } from '../http-client';
2
- export interface HealthResponse {
3
- status: 'healthy' | 'unhealthy';
4
- storage: boolean;
5
- uptimeSeconds: number;
6
- }
7
- export interface IdentityResponse {
8
- service: string;
9
- version: string;
10
- authenticationMode: string;
11
- providers: string[];
12
- }
13
- export interface ProvidersResponse {
14
- providers: Array<{
15
- name: string;
16
- type: string;
17
- description: string;
18
- configured: boolean;
19
- config: Record<string, unknown>;
20
- }>;
21
- count: number;
22
- }
23
- export interface TokenRequest {
24
- auth_method: string;
25
- public_key: string;
26
- client_name: string;
27
- permissions?: string[];
28
- timestamp: number;
29
- provider_data: Record<string, unknown>;
30
- }
31
- export interface TokenResponse {
32
- data: {
33
- access_token: string;
34
- refresh_token: string;
35
- error?: string | null;
36
- };
37
- error?: string | null;
38
- }
39
- export interface RefreshTokenRequest {
40
- access_token: string;
41
- refresh_token: string;
42
- }
43
- export interface ChallengeResponse {
44
- challenge: string;
45
- expiresAt: string;
46
- }
47
- export interface MockTokenRequest {
48
- clientName: string;
49
- permissions?: string[];
50
- expiresIn?: number;
51
- }
52
- export interface RevokeTokenRequest {
53
- token: string;
54
- reason?: string;
55
- }
56
- export interface RevokeTokenResponse {
57
- success: boolean;
58
- message: string;
59
- }
60
- export interface CreateKeyRequest {
61
- name: string;
62
- permissions: string[];
63
- expiresAt?: string;
64
- }
65
- export interface CreateKeyResponse {
66
- keyId: string;
67
- name: string;
68
- permissions: string[];
69
- createdAt: string;
70
- expiresAt?: string;
71
- }
72
- export interface DeleteKeyResponse {
73
- success: boolean;
74
- message: string;
75
- }
76
- export interface RootKeysResponse {
77
- keys: Array<{
78
- key_id: string;
79
- name: string;
80
- permissions: string[];
81
- created_at: string;
82
- expires_at?: string;
83
- }>;
84
- count: number;
85
- }
86
- export interface ClientKeysResponse {
87
- clients: Array<{
88
- client_id: string;
89
- key_id: string;
90
- name: string;
91
- permissions: string[];
92
- created_at: string;
93
- last_used?: string;
94
- }>;
95
- count: number;
96
- }
97
- export interface GenerateClientKeyRequest {
98
- keyId: string;
99
- clientName: string;
100
- permissions: string[];
101
- expiresAt?: string;
102
- }
103
- export interface DeleteClientResponse {
104
- success: boolean;
105
- message: string;
106
- }
107
- export interface PermissionResponse {
108
- data: {
109
- permissions: string[];
110
- };
111
- error?: string | null;
112
- }
113
- export interface AuthStatus {
114
- status: string;
115
- authenticated: boolean;
116
- user?: {
117
- id: string;
118
- name: string;
119
- permissions: string[];
120
- };
121
- }
122
- export interface AuthApiClientConfig {
123
- baseUrl: string;
124
- getAuthToken?: () => Promise<string | undefined>;
125
- timeoutMs?: number;
126
- }
127
- //# sourceMappingURL=auth-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-types.d.ts","sourceRoot":"","sources":["../../src/auth-api/auth-types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- // Auth API Types - Generated from OpenAPI 3.0.3 specification
2
- export {};
3
- //# sourceMappingURL=auth-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-types.js","sourceRoot":"","sources":["../../src/auth-api/auth-types.ts"],"names":[],"mappings":"AAAA,8DAA8D"}
@@ -1,4 +0,0 @@
1
- export * from './auth-client';
2
- export * from './auth-types';
3
- export * from './auth-factory';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth-api/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -1,5 +0,0 @@
1
- // Auth API client
2
- export * from './auth-client';
3
- export * from './auth-types';
4
- export * from './auth-factory';
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth-api/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -1,16 +0,0 @@
1
- export type ErrorResponse = {
2
- code?: number;
3
- message: string;
4
- };
5
- export type ResponseData<D = unknown> = {
6
- data: D;
7
- error: null;
8
- } | {
9
- data: null;
10
- error: ErrorResponse;
11
- };
12
- export type ApiResponse<D = unknown> = Promise<ResponseData<D>>;
13
- export interface SuccessResponse {
14
- success: boolean;
15
- }
16
- //# sourceMappingURL=api-response.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-response.d.ts","sourceRoot":"","sources":["../../src/http-client/api-response.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAChC;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api-response.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-response.js","sourceRoot":"","sources":["../../src/http-client/api-response.ts"],"names":[],"mappings":""}