@sparkvault/sdk-mobile 0.1.3
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 +186 -0
- package/dist/auth.d.ts +74 -0
- package/dist/auth.js +515 -0
- package/dist/auth.js.map +1 -0
- package/dist/billing.d.ts +21 -0
- package/dist/billing.js +10 -0
- package/dist/billing.js.map +1 -0
- package/dist/client.d.ts +27 -0
- package/dist/client.js +36 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +39 -0
- package/dist/config.js +69 -0
- package/dist/config.js.map +1 -0
- package/dist/encoding.d.ts +7 -0
- package/dist/encoding.js +113 -0
- package/dist/encoding.js.map +1 -0
- package/dist/entropy.d.ts +18 -0
- package/dist/entropy.js +35 -0
- package/dist/entropy.js.map +1 -0
- package/dist/errors.d.ts +46 -0
- package/dist/errors.js +72 -0
- package/dist/errors.js.map +1 -0
- package/dist/folders.d.ts +15 -0
- package/dist/folders.js +54 -0
- package/dist/folders.js.map +1 -0
- package/dist/health.d.ts +19 -0
- package/dist/health.js +60 -0
- package/dist/health.js.map +1 -0
- package/dist/http.d.ts +45 -0
- package/dist/http.js +351 -0
- package/dist/http.js.map +1 -0
- package/dist/identity-dialog.d.ts +19 -0
- package/dist/identity-dialog.js +656 -0
- package/dist/identity-dialog.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/ingots.d.ts +99 -0
- package/dist/ingots.js +365 -0
- package/dist/ingots.js.map +1 -0
- package/dist/mutex.d.ts +6 -0
- package/dist/mutex.js +20 -0
- package/dist/mutex.js.map +1 -0
- package/dist/push-tokens.d.ts +12 -0
- package/dist/push-tokens.js +15 -0
- package/dist/push-tokens.js.map +1 -0
- package/dist/sparks.d.ts +39 -0
- package/dist/sparks.js +32 -0
- package/dist/sparks.js.map +1 -0
- package/dist/tus.d.ts +24 -0
- package/dist/tus.js +202 -0
- package/dist/tus.js.map +1 -0
- package/dist/types.d.ts +406 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +5 -0
- package/dist/validation.js +45 -0
- package/dist/validation.js.map +1 -0
- package/dist/vaults.d.ts +94 -0
- package/dist/vaults.js +106 -0
- package/dist/vaults.js.map +1 -0
- package/package.json +58 -0
- package/src/auth.ts +707 -0
- package/src/billing.ts +30 -0
- package/src/client.ts +51 -0
- package/src/config.ts +123 -0
- package/src/encoding.ts +150 -0
- package/src/entropy.ts +56 -0
- package/src/errors.ts +110 -0
- package/src/folders.ts +76 -0
- package/src/health.ts +81 -0
- package/src/http.ts +429 -0
- package/src/identity-dialog.tsx +955 -0
- package/src/index.ts +103 -0
- package/src/ingots.ts +593 -0
- package/src/mutex.ts +26 -0
- package/src/push-tokens.ts +26 -0
- package/src/sparks.ts +73 -0
- package/src/tus.ts +280 -0
- package/src/types.ts +487 -0
- package/src/validation.ts +49 -0
- package/src/vaults.ts +271 -0
package/src/vaults.ts
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import type { MobileHttpClient } from './http.js';
|
|
2
|
+
import type {
|
|
3
|
+
CreateVaultRequest,
|
|
4
|
+
CreateVaultResponse,
|
|
5
|
+
ListVaultsResponse,
|
|
6
|
+
UnsealVaultRequest,
|
|
7
|
+
UnsealVaultResponse,
|
|
8
|
+
UpdateVaultRequest,
|
|
9
|
+
UpdateVaultResponse,
|
|
10
|
+
Vault,
|
|
11
|
+
} from './types.js';
|
|
12
|
+
import { validateVaultId } from './validation.js';
|
|
13
|
+
|
|
14
|
+
export interface SharingConfig {
|
|
15
|
+
vault_id: string;
|
|
16
|
+
public_sharing_enabled: boolean;
|
|
17
|
+
all_ingots_public: boolean;
|
|
18
|
+
session_length_seconds: number | null;
|
|
19
|
+
enabled_at: number | null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export class MobileVaultsClient {
|
|
23
|
+
private readonly http: MobileHttpClient;
|
|
24
|
+
|
|
25
|
+
constructor(http: MobileHttpClient) {
|
|
26
|
+
this.http = http;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async create(request: CreateVaultRequest): Promise<CreateVaultResponse> {
|
|
30
|
+
const response = await this.http.post<CreateVaultResponse>('/vaults', request);
|
|
31
|
+
return response.data;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async list(options?: {
|
|
35
|
+
status?: 'sealed' | 'unsealed';
|
|
36
|
+
limit?: number;
|
|
37
|
+
cursor?: string;
|
|
38
|
+
}): Promise<ListVaultsResponse> {
|
|
39
|
+
const params = new URLSearchParams();
|
|
40
|
+
if (options?.status) params.append('status', options.status);
|
|
41
|
+
if (options?.limit) params.append('limit', options.limit.toString());
|
|
42
|
+
if (options?.cursor) params.append('cursor', options.cursor);
|
|
43
|
+
|
|
44
|
+
const query = params.toString();
|
|
45
|
+
const response = await this.http.get<ListVaultsResponse>(query ? `/vaults?${query}` : '/vaults');
|
|
46
|
+
return response.data;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async get(vaultId: string): Promise<Vault> {
|
|
50
|
+
validateVaultId(vaultId);
|
|
51
|
+
const response = await this.http.get<Vault>(`/vaults/${vaultId}`);
|
|
52
|
+
return response.data;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async update(vaultId: string, request: UpdateVaultRequest): Promise<UpdateVaultResponse> {
|
|
56
|
+
validateVaultId(vaultId);
|
|
57
|
+
const response = await this.http.put<UpdateVaultResponse>(`/vaults/${vaultId}`, request);
|
|
58
|
+
return response.data;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async delete(vaultId: string): Promise<void> {
|
|
62
|
+
validateVaultId(vaultId);
|
|
63
|
+
await this.http.delete(`/vaults/${vaultId}`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async unseal(vaultId: string, request: UnsealVaultRequest): Promise<UnsealVaultResponse> {
|
|
67
|
+
validateVaultId(vaultId);
|
|
68
|
+
const response = await this.http.post<UnsealVaultResponse>(`/vaults/${vaultId}/unseal`, request);
|
|
69
|
+
return response.data;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async seal(vaultId: string): Promise<void> {
|
|
73
|
+
validateVaultId(vaultId);
|
|
74
|
+
await this.http.post(`/vaults/${vaultId}/seal`);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async getSharingConfig(vaultId: string): Promise<SharingConfig> {
|
|
78
|
+
validateVaultId(vaultId);
|
|
79
|
+
const response = await this.http.get<SharingConfig>(`/vaults/${vaultId}/sharing`);
|
|
80
|
+
return response.data;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
async enableSharing(
|
|
84
|
+
vaultId: string,
|
|
85
|
+
vmk: string,
|
|
86
|
+
options?: {
|
|
87
|
+
all_ingots_public?: boolean;
|
|
88
|
+
session_length_seconds?: number;
|
|
89
|
+
}
|
|
90
|
+
): Promise<{
|
|
91
|
+
vault_id: string;
|
|
92
|
+
public_sharing_enabled: boolean;
|
|
93
|
+
all_ingots_public: boolean;
|
|
94
|
+
session_length_seconds: number;
|
|
95
|
+
enabled_at: number;
|
|
96
|
+
}> {
|
|
97
|
+
validateVaultId(vaultId);
|
|
98
|
+
const response = await this.http.post<{
|
|
99
|
+
vault_id: string;
|
|
100
|
+
public_sharing_enabled: boolean;
|
|
101
|
+
all_ingots_public: boolean;
|
|
102
|
+
session_length_seconds: number;
|
|
103
|
+
enabled_at: number;
|
|
104
|
+
}>(`/vaults/${vaultId}/sharing/enable`, {
|
|
105
|
+
vmk,
|
|
106
|
+
all_ingots_public: options?.all_ingots_public,
|
|
107
|
+
session_length_seconds: options?.session_length_seconds,
|
|
108
|
+
});
|
|
109
|
+
return response.data;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async disableSharing(vaultId: string): Promise<{
|
|
113
|
+
vault_id: string;
|
|
114
|
+
public_sharing_enabled: false;
|
|
115
|
+
disabled_at: number;
|
|
116
|
+
shares_revoked: number;
|
|
117
|
+
}> {
|
|
118
|
+
validateVaultId(vaultId);
|
|
119
|
+
const response = await this.http.post<{
|
|
120
|
+
vault_id: string;
|
|
121
|
+
public_sharing_enabled: false;
|
|
122
|
+
disabled_at: number;
|
|
123
|
+
shares_revoked: number;
|
|
124
|
+
}>(`/vaults/${vaultId}/sharing/disable`);
|
|
125
|
+
return response.data;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async updateSharingConfig(
|
|
129
|
+
vaultId: string,
|
|
130
|
+
config: {
|
|
131
|
+
all_ingots_public?: boolean;
|
|
132
|
+
session_length_seconds?: number;
|
|
133
|
+
}
|
|
134
|
+
): Promise<{
|
|
135
|
+
vault_id: string;
|
|
136
|
+
public_sharing_enabled: boolean;
|
|
137
|
+
all_ingots_public: boolean;
|
|
138
|
+
session_length_seconds: number;
|
|
139
|
+
updated_at: number;
|
|
140
|
+
}> {
|
|
141
|
+
validateVaultId(vaultId);
|
|
142
|
+
const response = await this.http.put<{
|
|
143
|
+
vault_id: string;
|
|
144
|
+
public_sharing_enabled: boolean;
|
|
145
|
+
all_ingots_public: boolean;
|
|
146
|
+
session_length_seconds: number;
|
|
147
|
+
updated_at: number;
|
|
148
|
+
}>(`/vaults/${vaultId}/sharing`, config);
|
|
149
|
+
return response.data;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async getAccessLogRetention(vaultId: string): Promise<{
|
|
153
|
+
vault_id: string;
|
|
154
|
+
access_log_retention_seconds: number;
|
|
155
|
+
}> {
|
|
156
|
+
validateVaultId(vaultId);
|
|
157
|
+
const response = await this.http.get<{
|
|
158
|
+
vault_id: string;
|
|
159
|
+
access_log_retention_seconds: number;
|
|
160
|
+
}>(`/vaults/${vaultId}/access-log-retention`);
|
|
161
|
+
return response.data;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
async updateAccessLogRetention(
|
|
165
|
+
vaultId: string,
|
|
166
|
+
retentionSeconds: number
|
|
167
|
+
): Promise<{
|
|
168
|
+
vault_id: string;
|
|
169
|
+
access_log_retention_seconds: number;
|
|
170
|
+
updated_at: number;
|
|
171
|
+
}> {
|
|
172
|
+
validateVaultId(vaultId);
|
|
173
|
+
const response = await this.http.put<{
|
|
174
|
+
vault_id: string;
|
|
175
|
+
access_log_retention_seconds: number;
|
|
176
|
+
updated_at: number;
|
|
177
|
+
}>(`/vaults/${vaultId}/access-log-retention`, {
|
|
178
|
+
access_log_retention_seconds: retentionSeconds,
|
|
179
|
+
});
|
|
180
|
+
return response.data;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
async getUploadConfig(vaultId: string): Promise<{
|
|
184
|
+
vault_id: string;
|
|
185
|
+
public_upload_enabled: boolean;
|
|
186
|
+
upload_url: string | null;
|
|
187
|
+
max_size_bytes: number | null;
|
|
188
|
+
notification_email: string | null;
|
|
189
|
+
enabled_at: number | null;
|
|
190
|
+
}> {
|
|
191
|
+
validateVaultId(vaultId);
|
|
192
|
+
const response = await this.http.get<{
|
|
193
|
+
vault_id: string;
|
|
194
|
+
public_upload_enabled: boolean;
|
|
195
|
+
upload_url: string | null;
|
|
196
|
+
max_size_bytes: number | null;
|
|
197
|
+
notification_email: string | null;
|
|
198
|
+
enabled_at: number | null;
|
|
199
|
+
}>(`/vaults/${vaultId}/upload`);
|
|
200
|
+
return response.data;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
async enableUpload(
|
|
204
|
+
vaultId: string,
|
|
205
|
+
vmk: string | null,
|
|
206
|
+
options?: {
|
|
207
|
+
max_size_bytes?: number;
|
|
208
|
+
notification_email?: string;
|
|
209
|
+
}
|
|
210
|
+
): Promise<{
|
|
211
|
+
vault_id: string;
|
|
212
|
+
public_upload_enabled: boolean;
|
|
213
|
+
upload_url: string;
|
|
214
|
+
max_size_bytes: number;
|
|
215
|
+
notification_email: string | null;
|
|
216
|
+
enabled_at: number;
|
|
217
|
+
}> {
|
|
218
|
+
validateVaultId(vaultId);
|
|
219
|
+
const response = await this.http.post<{
|
|
220
|
+
vault_id: string;
|
|
221
|
+
public_upload_enabled: boolean;
|
|
222
|
+
upload_url: string;
|
|
223
|
+
max_size_bytes: number;
|
|
224
|
+
notification_email: string | null;
|
|
225
|
+
enabled_at: number;
|
|
226
|
+
}>(`/vaults/${vaultId}/upload/enable`, {
|
|
227
|
+
vmk,
|
|
228
|
+
max_size_bytes: options?.max_size_bytes ?? null,
|
|
229
|
+
notification_email: options?.notification_email ?? null,
|
|
230
|
+
});
|
|
231
|
+
return response.data;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
async disableUpload(vaultId: string): Promise<{
|
|
235
|
+
vault_id: string;
|
|
236
|
+
public_upload_enabled: false;
|
|
237
|
+
disabled_at: number;
|
|
238
|
+
}> {
|
|
239
|
+
validateVaultId(vaultId);
|
|
240
|
+
const response = await this.http.post<{
|
|
241
|
+
vault_id: string;
|
|
242
|
+
public_upload_enabled: false;
|
|
243
|
+
disabled_at: number;
|
|
244
|
+
}>(`/vaults/${vaultId}/upload/disable`);
|
|
245
|
+
return response.data;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
async updateUploadConfig(
|
|
249
|
+
vaultId: string,
|
|
250
|
+
config: {
|
|
251
|
+
max_size_bytes?: number;
|
|
252
|
+
notification_email?: string | null;
|
|
253
|
+
}
|
|
254
|
+
): Promise<{
|
|
255
|
+
vault_id: string;
|
|
256
|
+
public_upload_enabled: boolean;
|
|
257
|
+
max_size_bytes: number;
|
|
258
|
+
notification_email: string | null;
|
|
259
|
+
updated_at: number;
|
|
260
|
+
}> {
|
|
261
|
+
validateVaultId(vaultId);
|
|
262
|
+
const response = await this.http.put<{
|
|
263
|
+
vault_id: string;
|
|
264
|
+
public_upload_enabled: boolean;
|
|
265
|
+
max_size_bytes: number;
|
|
266
|
+
notification_email: string | null;
|
|
267
|
+
updated_at: number;
|
|
268
|
+
}>(`/vaults/${vaultId}/upload`, config);
|
|
269
|
+
return response.data;
|
|
270
|
+
}
|
|
271
|
+
}
|