@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.
- package/README.md +341 -319
- package/dist/api/admin/aliases.d.ts +54 -0
- package/dist/api/admin/aliases.d.ts.map +1 -0
- package/dist/api/admin/aliases.js +43 -0
- package/dist/api/admin/aliases.js.map +1 -0
- package/dist/api/admin/applications.d.ts +52 -0
- package/dist/api/admin/applications.d.ts.map +1 -0
- package/dist/api/admin/applications.js +31 -0
- package/dist/api/admin/applications.js.map +1 -0
- package/dist/api/admin/blobs.d.ts +24 -0
- package/dist/api/admin/blobs.d.ts.map +1 -0
- package/dist/api/admin/blobs.js +58 -0
- package/dist/api/admin/blobs.js.map +1 -0
- package/dist/api/admin/capabilities.d.ts +26 -0
- package/dist/api/admin/capabilities.d.ts.map +1 -0
- package/dist/api/admin/capabilities.js +13 -0
- package/dist/api/admin/capabilities.js.map +1 -0
- package/dist/api/admin/client.d.ts +63 -0
- package/dist/api/admin/client.d.ts.map +1 -0
- package/dist/api/admin/client.js +103 -0
- package/dist/api/admin/client.js.map +1 -0
- package/dist/api/admin/contexts.d.ts +110 -0
- package/dist/api/admin/contexts.d.ts.map +1 -0
- package/dist/api/admin/contexts.js +61 -0
- package/dist/api/admin/contexts.js.map +1 -0
- package/dist/api/admin/factory.d.ts +4 -0
- package/dist/api/admin/factory.d.ts.map +1 -0
- package/dist/api/admin/factory.js +5 -0
- package/dist/api/admin/factory.js.map +1 -0
- package/dist/api/admin/identity.d.ts +10 -0
- package/dist/api/admin/identity.d.ts.map +1 -0
- package/dist/api/admin/identity.js +10 -0
- package/dist/api/admin/identity.js.map +1 -0
- package/dist/api/admin/index.d.ts +23 -0
- package/dist/api/admin/index.d.ts.map +1 -0
- package/dist/api/admin/index.js +26 -0
- package/dist/api/admin/index.js.map +1 -0
- package/dist/api/admin/network.d.ts +10 -0
- package/dist/api/admin/network.d.ts.map +1 -0
- package/dist/api/admin/network.js +9 -0
- package/dist/api/admin/network.js.map +1 -0
- package/dist/api/admin/proposals.d.ts +49 -0
- package/dist/api/admin/proposals.d.ts.map +1 -0
- package/dist/api/admin/proposals.js +34 -0
- package/dist/api/admin/proposals.js.map +1 -0
- package/dist/api/admin/public.d.ts +15 -0
- package/dist/api/admin/public.d.ts.map +1 -0
- package/dist/api/admin/public.js +18 -0
- package/dist/api/admin/public.js.map +1 -0
- package/dist/api/admin/tee.d.ts +74 -0
- package/dist/api/admin/tee.d.ts.map +1 -0
- package/dist/api/admin/tee.js +16 -0
- package/dist/api/admin/tee.js.map +1 -0
- package/dist/api/auth/client.d.ts +55 -0
- package/dist/api/auth/client.d.ts.map +1 -0
- package/dist/api/auth/client.js +127 -0
- package/dist/api/auth/client.js.map +1 -0
- package/dist/api/auth/factory.d.ts +4 -0
- package/dist/api/auth/factory.d.ts.map +1 -0
- package/dist/api/auth/factory.js +5 -0
- package/dist/api/auth/factory.js.map +1 -0
- package/dist/api/auth/index.d.ts +4 -0
- package/dist/api/auth/index.d.ts.map +1 -0
- package/dist/api/auth/index.js +4 -0
- package/dist/api/auth/index.js.map +1 -0
- package/dist/api/auth/types.d.ts +94 -0
- package/dist/api/auth/types.d.ts.map +1 -0
- package/dist/api/auth/types.js +4 -0
- package/dist/api/auth/types.js.map +1 -0
- package/dist/api/index.d.ts +15 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +18 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/rpc/client.d.ts +76 -0
- package/dist/api/rpc/client.d.ts.map +1 -0
- package/dist/api/rpc/client.js +126 -0
- package/dist/api/rpc/client.js.map +1 -0
- package/dist/api/rpc/index.d.ts +3 -0
- package/dist/api/rpc/index.d.ts.map +1 -0
- package/dist/api/rpc/index.js +2 -0
- package/dist/api/rpc/index.js.map +1 -0
- package/dist/api/rpc/types.d.ts +74 -0
- package/dist/api/rpc/types.d.ts.map +1 -0
- package/dist/api/rpc/types.js +6 -0
- package/dist/api/rpc/types.js.map +1 -0
- package/dist/api/sse/client.d.ts +76 -0
- package/dist/api/sse/client.d.ts.map +1 -0
- package/dist/api/sse/client.js +203 -0
- package/dist/api/sse/client.js.map +1 -0
- package/dist/api/sse/index.d.ts +4 -0
- package/dist/api/sse/index.d.ts.map +1 -0
- package/dist/api/sse/index.js +2 -0
- package/dist/api/sse/index.js.map +1 -0
- package/dist/api/sse/types.d.ts +35 -0
- package/dist/api/sse/types.d.ts.map +1 -0
- package/dist/api/sse/types.js +6 -0
- package/dist/api/sse/types.js.map +1 -0
- package/dist/api/utils.d.ts +68 -0
- package/dist/api/utils.d.ts.map +1 -0
- package/dist/api/utils.js +83 -0
- package/dist/api/utils.js.map +1 -0
- package/dist/api/ws/client.d.ts +72 -0
- package/dist/api/ws/client.d.ts.map +1 -0
- package/dist/api/ws/client.js +202 -0
- package/dist/api/ws/client.js.map +1 -0
- package/dist/api/ws/index.d.ts +4 -0
- package/dist/api/ws/index.d.ts.map +1 -0
- package/dist/api/ws/index.js +2 -0
- package/dist/api/ws/index.js.map +1 -0
- package/dist/api/ws/types.d.ts +32 -0
- package/dist/api/ws/types.d.ts.map +1 -0
- package/dist/api/ws/types.js +6 -0
- package/dist/api/ws/types.js.map +1 -0
- package/dist/http-client/http-factory.d.ts +18 -0
- package/dist/http-client/http-factory.d.ts.map +1 -1
- package/dist/http-client/http-factory.js +2 -0
- package/dist/http-client/http-factory.js.map +1 -1
- package/dist/http-client/http-types.d.ts +6 -0
- package/dist/http-client/http-types.d.ts.map +1 -1
- package/dist/http-client/index.d.ts +1 -1
- package/dist/http-client/index.d.ts.map +1 -1
- package/dist/http-client/index.js +2 -1
- package/dist/http-client/index.js.map +1 -1
- package/dist/http-client/web-client.d.ts +5 -3
- package/dist/http-client/web-client.d.ts.map +1 -1
- package/dist/http-client/web-client.js +142 -59
- package/dist/http-client/web-client.js.map +1 -1
- package/dist/index.browser.mjs +1 -1
- package/dist/index.browser.mjs.map +4 -4
- package/dist/index.cjs +1669 -341
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1675 -341
- package/dist/index.mjs.map +4 -4
- package/dist/mero-js.d.ts +198 -7
- package/dist/mero-js.d.ts.map +1 -1
- package/dist/mero-js.js +329 -38
- package/dist/mero-js.js.map +1 -1
- package/package.json +42 -7
- package/dist/admin-api/admin-client.d.ts +0 -38
- package/dist/admin-api/admin-client.d.ts.map +0 -1
- package/dist/admin-api/admin-client.js +0 -104
- package/dist/admin-api/admin-client.js.map +0 -1
- package/dist/admin-api/admin-factory.d.ts +0 -8
- package/dist/admin-api/admin-factory.d.ts.map +0 -1
- package/dist/admin-api/admin-factory.js +0 -42
- package/dist/admin-api/admin-factory.js.map +0 -1
- package/dist/admin-api/admin-types.d.ts +0 -213
- package/dist/admin-api/admin-types.d.ts.map +0 -1
- package/dist/admin-api/admin-types.js +0 -3
- package/dist/admin-api/admin-types.js.map +0 -1
- package/dist/admin-api/index.d.ts +0 -4
- package/dist/admin-api/index.d.ts.map +0 -1
- package/dist/admin-api/index.js +0 -5
- package/dist/admin-api/index.js.map +0 -1
- package/dist/auth-api/auth-client.d.ts +0 -34
- package/dist/auth-api/auth-client.d.ts.map +0 -1
- package/dist/auth-api/auth-client.js +0 -112
- package/dist/auth-api/auth-client.js.map +0 -1
- package/dist/auth-api/auth-factory.d.ts +0 -8
- package/dist/auth-api/auth-factory.d.ts.map +0 -1
- package/dist/auth-api/auth-factory.js +0 -42
- package/dist/auth-api/auth-factory.js.map +0 -1
- package/dist/auth-api/auth-types.d.ts +0 -127
- package/dist/auth-api/auth-types.d.ts.map +0 -1
- package/dist/auth-api/auth-types.js +0 -3
- package/dist/auth-api/auth-types.js.map +0 -1
- package/dist/auth-api/index.d.ts +0 -4
- package/dist/auth-api/index.d.ts.map +0 -1
- package/dist/auth-api/index.js +0 -5
- package/dist/auth-api/index.js.map +0 -1
- package/dist/http-client/api-response.d.ts +0 -16
- package/dist/http-client/api-response.d.ts.map +0 -1
- package/dist/http-client/api-response.js +0 -2
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/rpc/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|