@flashbacktech/flashbackclient 0.0.46 → 0.0.48
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/dist/api/client.d.ts +24 -5
- package/dist/api/client.js +59 -101
- package/dist/api/interfaces.d.ts +7 -1
- package/dist/api/types/storage.d.ts +16 -0
- package/package.json +1 -1
package/dist/api/client.d.ts
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { CreateUnitRequest, CreateUnitResponse, CreateRepoRequest, CreateRepoResponse, CreateRepoKeyRequest, CreateRepoKeyResponse, GetUnitsResponse, GetReposResponse, GetRepoKeysResponse } from './types/storage';
|
|
1
|
+
import { CreateUnitRequest, CreateUnitResponse, CreateRepoRequest, CreateRepoResponse, CreateRepoKeyRequest, CreateRepoKeyResponse, GetUnitsResponse, GetReposResponse, GetRepoKeysResponse, UpdateUnitRequest, UpdateUnitResponse, ActionResponse, UpdateRepoRequest, UpdateRepoResponse, UpdateRepoKeyRequest, UpdateRepoKeyResponse } from './types/storage';
|
|
2
2
|
import { IApiClient, ProviderType } from './interfaces';
|
|
3
|
+
import { OAuth2ResponseDTO, RefreshTokenResponse } from './types/auth';
|
|
4
|
+
interface ErrorResponse {
|
|
5
|
+
message?: string;
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}
|
|
8
|
+
export declare class HttpError extends Error {
|
|
9
|
+
status: number;
|
|
10
|
+
statusText: string;
|
|
11
|
+
data: ErrorResponse;
|
|
12
|
+
constructor(status: number, statusText: string, data: ErrorResponse);
|
|
13
|
+
}
|
|
3
14
|
export declare class ApiClient implements IApiClient {
|
|
4
15
|
private baseURL;
|
|
5
16
|
private headers;
|
|
6
17
|
constructor(baseURL?: string);
|
|
7
18
|
setAuthToken: (token: string | null) => void;
|
|
8
19
|
authenticate: (token: string, provider: ProviderType) => Promise<any>;
|
|
9
|
-
exchangeCode: (code: string, provider: ProviderType) => Promise<
|
|
10
|
-
private exchangeGoogleCode;
|
|
20
|
+
exchangeCode: (code: string, provider: ProviderType) => Promise<OAuth2ResponseDTO>;
|
|
11
21
|
private exchangeGithubCode;
|
|
12
22
|
private exchangeWeb3StellarCode;
|
|
13
23
|
/**
|
|
@@ -16,15 +26,24 @@ export declare class ApiClient implements IApiClient {
|
|
|
16
26
|
* @param provider - The provider to refresh the token for
|
|
17
27
|
* @returns The refreshed token
|
|
18
28
|
*/
|
|
19
|
-
refreshToken: (refreshToken: string, provider: ProviderType) => Promise<
|
|
29
|
+
refreshToken: (refreshToken: string, provider: ProviderType) => Promise<RefreshTokenResponse>;
|
|
20
30
|
private authenticateWeb3Stellar;
|
|
31
|
+
private makeRequest;
|
|
21
32
|
private authenticateGoogle;
|
|
22
33
|
private authenticateGithub;
|
|
23
|
-
private
|
|
34
|
+
private refreshGoogleToken;
|
|
35
|
+
private exchangeGoogleCode;
|
|
24
36
|
createStorageUnit: (data: CreateUnitRequest) => Promise<CreateUnitResponse>;
|
|
25
37
|
getStorageUnits: () => Promise<GetUnitsResponse>;
|
|
38
|
+
updateStorageUnit: (unitId: string, data: UpdateUnitRequest) => Promise<UpdateUnitResponse>;
|
|
39
|
+
deleteStorageUnit: (unitId: string) => Promise<ActionResponse>;
|
|
26
40
|
createRepo: (data: CreateRepoRequest) => Promise<CreateRepoResponse>;
|
|
27
41
|
getRepos: () => Promise<GetReposResponse>;
|
|
42
|
+
updateRepo: (repoId: string, data: UpdateRepoRequest) => Promise<UpdateRepoResponse>;
|
|
43
|
+
deleteRepo: (repoId: string) => Promise<ActionResponse>;
|
|
28
44
|
createRepoKey: (data: CreateRepoKeyRequest) => Promise<CreateRepoKeyResponse>;
|
|
29
45
|
getRepoKeys: (repoId: string) => Promise<GetRepoKeysResponse>;
|
|
46
|
+
updateRepoKey: (repoId: string, data: UpdateRepoKeyRequest) => Promise<UpdateRepoKeyResponse>;
|
|
47
|
+
deleteRepoKey: (repoId: string, keyId: string) => Promise<ActionResponse>;
|
|
30
48
|
}
|
|
49
|
+
export {};
|
package/dist/api/client.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApiClient = void 0;
|
|
3
|
+
exports.ApiClient = exports.HttpError = void 0;
|
|
4
4
|
const interfaces_1 = require("./interfaces");
|
|
5
|
+
class HttpError extends Error {
|
|
6
|
+
constructor(status, statusText, data) {
|
|
7
|
+
super(`HTTP Error ${status}: ${statusText}`);
|
|
8
|
+
this.status = status;
|
|
9
|
+
this.statusText = statusText;
|
|
10
|
+
this.data = data;
|
|
11
|
+
this.name = 'HttpError'; // This helps in instanceof checks
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.HttpError = HttpError;
|
|
5
15
|
class ApiClient {
|
|
6
16
|
constructor(baseURL = 'https://api.flashback.tech') {
|
|
7
17
|
this.setAuthToken = (token) => {
|
|
@@ -42,18 +52,6 @@ class ApiClient {
|
|
|
42
52
|
throw new Error(`Unsupported provider: ${provider}`);
|
|
43
53
|
}
|
|
44
54
|
};
|
|
45
|
-
this.exchangeGoogleCode = async (code) => {
|
|
46
|
-
const response = await fetch(`${this.baseURL}/auth/google/exchange`, {
|
|
47
|
-
method: 'POST',
|
|
48
|
-
headers: this.headers,
|
|
49
|
-
body: JSON.stringify({ code }),
|
|
50
|
-
});
|
|
51
|
-
if (!response.ok) {
|
|
52
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
53
|
-
}
|
|
54
|
-
const ret = await response.json();
|
|
55
|
-
return ret;
|
|
56
|
-
};
|
|
57
55
|
this.exchangeGithubCode = async (code) => {
|
|
58
56
|
throw new Error('Not implemented');
|
|
59
57
|
};
|
|
@@ -69,7 +67,7 @@ class ApiClient {
|
|
|
69
67
|
this.refreshToken = async (refreshToken, provider) => {
|
|
70
68
|
switch (provider) {
|
|
71
69
|
case interfaces_1.ProviderType.GOOGLE:
|
|
72
|
-
return this.
|
|
70
|
+
return this.refreshGoogleToken(refreshToken);
|
|
73
71
|
case interfaces_1.ProviderType.GITHUB:
|
|
74
72
|
// TODO: Implement refresh token for Github
|
|
75
73
|
throw new Error('Not implemented');
|
|
@@ -80,112 +78,72 @@ class ApiClient {
|
|
|
80
78
|
this.authenticateWeb3Stellar = async (token) => {
|
|
81
79
|
throw new Error('Not implemented');
|
|
82
80
|
};
|
|
83
|
-
this.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
method: 'POST',
|
|
81
|
+
this.makeRequest = async (path, method, data) => {
|
|
82
|
+
const options = {
|
|
83
|
+
method,
|
|
87
84
|
headers: this.headers,
|
|
88
|
-
body: JSON.stringify(
|
|
89
|
-
}
|
|
85
|
+
body: data ? JSON.stringify(data) : null,
|
|
86
|
+
};
|
|
87
|
+
const response = await fetch(`${this.baseURL}/${path}`, options);
|
|
88
|
+
const responseData = await response.json();
|
|
90
89
|
if (!response.ok) {
|
|
91
|
-
throw new
|
|
90
|
+
throw new HttpError(response.status, response.statusText, responseData);
|
|
92
91
|
}
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
return responseData;
|
|
93
|
+
};
|
|
94
|
+
////// Auth API
|
|
95
|
+
this.authenticateGoogle = async (token) => {
|
|
96
|
+
this.setAuthToken(token);
|
|
97
|
+
return this.makeRequest('auth/google', 'POST', { token });
|
|
95
98
|
};
|
|
96
99
|
this.authenticateGithub = async (code) => {
|
|
97
100
|
this.setAuthToken(code);
|
|
98
|
-
|
|
99
|
-
method: 'POST',
|
|
100
|
-
headers: this.headers,
|
|
101
|
-
body: JSON.stringify({ code }),
|
|
102
|
-
});
|
|
103
|
-
if (!response.ok) {
|
|
104
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
105
|
-
}
|
|
106
|
-
const ret = await response.json();
|
|
107
|
-
return ret;
|
|
101
|
+
return this.makeRequest('auth/github', 'POST', { code });
|
|
108
102
|
};
|
|
109
|
-
this.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
});
|
|
115
|
-
if (!response.ok) {
|
|
116
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
117
|
-
}
|
|
118
|
-
const ret = await response.json();
|
|
119
|
-
return ret;
|
|
103
|
+
this.refreshGoogleToken = async (refreshToken) => {
|
|
104
|
+
return this.makeRequest('auth/google/refresh', 'POST', { refresh_token: refreshToken });
|
|
105
|
+
};
|
|
106
|
+
this.exchangeGoogleCode = async (code) => {
|
|
107
|
+
return this.makeRequest('auth/google/exchange', 'POST', { code });
|
|
120
108
|
};
|
|
109
|
+
////// Units API
|
|
121
110
|
this.createStorageUnit = async (data) => {
|
|
122
|
-
|
|
123
|
-
method: 'POST',
|
|
124
|
-
headers: this.headers,
|
|
125
|
-
body: JSON.stringify(data),
|
|
126
|
-
});
|
|
127
|
-
if (!response.ok) {
|
|
128
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
129
|
-
}
|
|
130
|
-
const ret = await response.json();
|
|
131
|
-
return ret;
|
|
111
|
+
return this.makeRequest('unit', 'POST', data);
|
|
132
112
|
};
|
|
133
113
|
this.getStorageUnits = async () => {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
const ret = await response.json();
|
|
142
|
-
return ret;
|
|
114
|
+
return this.makeRequest('unit', 'GET', null);
|
|
115
|
+
};
|
|
116
|
+
this.updateStorageUnit = async (unitId, data) => {
|
|
117
|
+
return this.makeRequest(`unit/${unitId}`, 'PUT', data);
|
|
118
|
+
};
|
|
119
|
+
this.deleteStorageUnit = async (unitId) => {
|
|
120
|
+
return this.makeRequest(`unit/${unitId}`, 'DELETE', null);
|
|
143
121
|
};
|
|
122
|
+
////// Repos API
|
|
144
123
|
this.createRepo = async (data) => {
|
|
145
|
-
|
|
146
|
-
method: 'POST',
|
|
147
|
-
headers: this.headers,
|
|
148
|
-
body: JSON.stringify(data),
|
|
149
|
-
});
|
|
150
|
-
if (!response.ok) {
|
|
151
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
152
|
-
}
|
|
153
|
-
const ret = await response.json();
|
|
154
|
-
return ret;
|
|
124
|
+
return this.makeRequest('repo', 'POST', data);
|
|
155
125
|
};
|
|
156
126
|
this.getRepos = async () => {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
const ret = await response.json();
|
|
165
|
-
return ret;
|
|
127
|
+
return this.makeRequest('repo', 'GET', null);
|
|
128
|
+
};
|
|
129
|
+
this.updateRepo = async (repoId, data) => {
|
|
130
|
+
return this.makeRequest(`repo/${repoId}`, 'PUT', data);
|
|
131
|
+
};
|
|
132
|
+
this.deleteRepo = async (repoId) => {
|
|
133
|
+
return this.makeRequest(`repo/${repoId}`, 'DELETE', null);
|
|
166
134
|
};
|
|
135
|
+
////// Keys API
|
|
167
136
|
this.createRepoKey = async (data) => {
|
|
168
|
-
|
|
169
|
-
method: 'POST',
|
|
170
|
-
headers: this.headers,
|
|
171
|
-
body: JSON.stringify(data),
|
|
172
|
-
});
|
|
173
|
-
if (!response.ok) {
|
|
174
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
175
|
-
}
|
|
176
|
-
const ret = await response.json();
|
|
177
|
-
return ret;
|
|
137
|
+
return this.makeRequest(`repo/${data.repoId}/apikey`, 'POST', data);
|
|
178
138
|
};
|
|
179
139
|
this.getRepoKeys = async (repoId) => {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
const ret = await response.json();
|
|
188
|
-
return ret;
|
|
140
|
+
return this.makeRequest(`repo/${repoId}/apikey`, 'GET', null);
|
|
141
|
+
};
|
|
142
|
+
this.updateRepoKey = async (repoId, data) => {
|
|
143
|
+
return this.makeRequest(`repo/${repoId}/apikey`, 'PUT', data);
|
|
144
|
+
};
|
|
145
|
+
this.deleteRepoKey = async (repoId, keyId) => {
|
|
146
|
+
return this.makeRequest(`repo/${repoId}/apikey/${keyId}`, 'DELETE', null);
|
|
189
147
|
};
|
|
190
148
|
this.baseURL = baseURL;
|
|
191
149
|
this.headers = {
|
package/dist/api/interfaces.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CreateUnitRequest, CreateUnitResponse, CreateRepoRequest, CreateRepoResponse, CreateRepoKeyRequest, CreateRepoKeyResponse, GetUnitsResponse, GetReposResponse, GetRepoKeysResponse } from "./types/storage";
|
|
1
|
+
import { CreateUnitRequest, CreateUnitResponse, CreateRepoRequest, CreateRepoResponse, CreateRepoKeyRequest, CreateRepoKeyResponse, GetUnitsResponse, GetReposResponse, GetRepoKeysResponse, UpdateUnitRequest, UpdateUnitResponse, ActionResponse, UpdateRepoResponse, UpdateRepoRequest, UpdateRepoKeyRequest, UpdateRepoKeyResponse } from "./types/storage";
|
|
2
2
|
export declare enum ProviderType {
|
|
3
3
|
GOOGLE = "GOOGLE",
|
|
4
4
|
GITHUB = "GITHUB",
|
|
@@ -8,8 +8,14 @@ export interface IApiClient {
|
|
|
8
8
|
authenticate(token: string, provider: ProviderType): Promise<any>;
|
|
9
9
|
createStorageUnit(data: CreateUnitRequest): Promise<CreateUnitResponse>;
|
|
10
10
|
getStorageUnits(): Promise<GetUnitsResponse>;
|
|
11
|
+
updateStorageUnit(unitId: string, data: UpdateUnitRequest): Promise<UpdateUnitResponse>;
|
|
12
|
+
deleteStorageUnit(unitId: string): Promise<ActionResponse>;
|
|
11
13
|
createRepo(data: CreateRepoRequest): Promise<CreateRepoResponse>;
|
|
12
14
|
getRepos(): Promise<GetReposResponse>;
|
|
15
|
+
updateRepo(repoId: string, data: UpdateRepoRequest): Promise<UpdateRepoResponse>;
|
|
16
|
+
deleteRepo(repoId: string): Promise<ActionResponse>;
|
|
13
17
|
createRepoKey(data: CreateRepoKeyRequest): Promise<CreateRepoKeyResponse>;
|
|
14
18
|
getRepoKeys(repoId: string): Promise<GetRepoKeysResponse>;
|
|
19
|
+
updateRepoKey(repoId: string, data: UpdateRepoKeyRequest): Promise<UpdateRepoKeyResponse>;
|
|
20
|
+
deleteRepoKey(repoId: string, keyId: string): Promise<ActionResponse>;
|
|
15
21
|
}
|
|
@@ -12,6 +12,10 @@ export declare enum ModeType {
|
|
|
12
12
|
NORMAL = "NORMAL",
|
|
13
13
|
MIRROR = "MIRROR"
|
|
14
14
|
}
|
|
15
|
+
export interface ActionResponse {
|
|
16
|
+
success: boolean;
|
|
17
|
+
message?: string;
|
|
18
|
+
}
|
|
15
19
|
export interface CreateUnitRequest {
|
|
16
20
|
name: string;
|
|
17
21
|
bucket: string;
|
|
@@ -21,10 +25,14 @@ export interface CreateUnitRequest {
|
|
|
21
25
|
endpoint?: string;
|
|
22
26
|
regionId?: string;
|
|
23
27
|
}
|
|
28
|
+
export interface UpdateUnitRequest extends CreateUnitRequest {
|
|
29
|
+
}
|
|
24
30
|
export interface CreateUnitResponse {
|
|
25
31
|
success: boolean;
|
|
26
32
|
unitId: string;
|
|
27
33
|
}
|
|
34
|
+
export interface UpdateUnitResponse extends CreateUnitResponse {
|
|
35
|
+
}
|
|
28
36
|
export interface RepoUnitInfo {
|
|
29
37
|
id: string;
|
|
30
38
|
folder: string;
|
|
@@ -39,6 +47,10 @@ export interface CreateRepoResponse {
|
|
|
39
47
|
success: boolean;
|
|
40
48
|
repoId: string;
|
|
41
49
|
}
|
|
50
|
+
export interface UpdateRepoRequest extends CreateRepoRequest {
|
|
51
|
+
}
|
|
52
|
+
export interface UpdateRepoResponse extends CreateRepoResponse {
|
|
53
|
+
}
|
|
42
54
|
export interface CreateRepoKeyRequest {
|
|
43
55
|
repoId: string;
|
|
44
56
|
name: string;
|
|
@@ -50,6 +62,10 @@ export interface CreateRepoKeyResponse {
|
|
|
50
62
|
key: string;
|
|
51
63
|
secret: string;
|
|
52
64
|
}
|
|
65
|
+
export interface UpdateRepoKeyRequest extends CreateRepoKeyRequest {
|
|
66
|
+
}
|
|
67
|
+
export interface UpdateRepoKeyResponse extends CreateRepoKeyResponse {
|
|
68
|
+
}
|
|
53
69
|
export interface StorageRepo {
|
|
54
70
|
id: string;
|
|
55
71
|
name: string;
|