@secrecy/lib 1.0.0 → 1.1.0
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/LICENSE +1 -1
- package/dist/BaseClient.d.ts +29 -177
- package/dist/BaseClient.js +114 -732
- package/dist/PopupTools.d.ts +4 -4
- package/dist/PopupTools.js +24 -41
- package/dist/ZeusThunder.js +3 -17
- package/dist/cache.js +1 -1
- package/dist/client/SecrecyAppClient.d.ts +17 -0
- package/dist/client/SecrecyAppClient.js +226 -0
- package/dist/client/SecrecyCloudClient.d.ts +89 -0
- package/dist/client/SecrecyCloudClient.js +1405 -0
- package/dist/client/SecrecyDbClient.d.ts +21 -0
- package/dist/client/SecrecyDbClient.js +177 -0
- package/dist/client/SecrecyMailClient.d.ts +42 -0
- package/dist/client/SecrecyMailClient.js +1022 -0
- package/dist/client/SecrecyPayClient.d.ts +28 -0
- package/dist/client/SecrecyPayClient.js +68 -0
- package/dist/client/SecrecyWalletClient.d.ts +30 -0
- package/dist/client/SecrecyWalletClient.js +73 -0
- package/dist/client/convert/file.js +2 -3
- package/dist/client/convert/mail.d.ts +2 -2
- package/dist/client/convert/mail.js +7 -11
- package/dist/client/convert/node.js +19 -33
- package/dist/client/helpers.d.ts +9 -4
- package/dist/client/helpers.js +30 -25
- package/dist/client/index.d.ts +15 -145
- package/dist/client/index.js +16 -3176
- package/dist/client/storage.js +4 -4
- package/dist/client/types/File.d.ts +3 -3
- package/dist/client/types/Inputs.d.ts +4 -4
- package/dist/client/types/Node.d.ts +21 -14
- package/dist/client/types/Node.js +1 -1
- package/dist/client/types/UserAppNotifications.d.ts +1 -1
- package/dist/client/types/UserAppSettings.d.ts +2 -3
- package/dist/client/types/UserAppSettings.js +1 -1
- package/dist/client/types/index.d.ts +23 -51
- package/dist/client/types/index.js +1 -1
- package/dist/client/types/selectors.d.ts +51 -127
- package/dist/client/types/selectors.js +21 -11
- package/dist/crypto/file.d.ts +2 -2
- package/dist/crypto/file.js +19 -34
- package/dist/crypto/index.js +1 -3
- package/dist/error.d.ts +5 -2
- package/dist/error.js +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.js +4 -4
- package/dist/minify/index.js +2 -7
- package/dist/minify/lz4.js +79 -167
- package/dist/sodium.js +1 -1
- package/dist/utils/store-buddy.d.ts +1 -1
- package/dist/utils/store-buddy.js +1 -8
- package/dist/utils/time.js +1 -3
- package/dist/utils/utils.js +1 -11
- package/dist/worker/md5.js +1 -2
- package/dist/worker/sodium.js +16 -18
- package/dist/worker/workerCodes.js +255 -3
- package/dist/zeus/const.js +587 -31
- package/dist/zeus/index.d.ts +5014 -631
- package/dist/zeus/index.js +213 -255
- package/package.json +64 -61
- package/dist/client/admin/index.d.ts +0 -11
- package/dist/client/admin/index.js +0 -110
- package/dist/worker/__mock__/sodium.worker.d.ts +0 -19
- package/dist/worker/__mock__/sodium.worker.js +0 -49
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import _classPrivateFieldLooseBase from "@babel/runtime/helpers/classPrivateFieldLooseBase";
|
|
2
|
+
import _classPrivateFieldLooseKey from "@babel/runtime/helpers/classPrivateFieldLooseKey";
|
|
3
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
4
|
+
|
|
5
|
+
import { decode } from "jsonwebtoken";
|
|
6
|
+
import { getStorage } from "./storage.js";
|
|
7
|
+
var _thunder = /*#__PURE__*/_classPrivateFieldLooseKey("thunder");
|
|
8
|
+
export class SecrecyAppClient {
|
|
9
|
+
// #client: SecrecyClient;
|
|
10
|
+
|
|
11
|
+
// #keys: KeyPair;
|
|
12
|
+
|
|
13
|
+
constructor(uaJwt, _client, _keys, thunder) {
|
|
14
|
+
Object.defineProperty(this, _thunder, {
|
|
15
|
+
writable: true,
|
|
16
|
+
value: void 0
|
|
17
|
+
});
|
|
18
|
+
this.jwt = uaJwt;
|
|
19
|
+
this.jwtDecoded = decode(uaJwt);
|
|
20
|
+
// this.#client = client;
|
|
21
|
+
// this.#keys = keys;
|
|
22
|
+
_classPrivateFieldLooseBase(this, _thunder)[_thunder] = thunder;
|
|
23
|
+
}
|
|
24
|
+
get userId() {
|
|
25
|
+
return this.jwtDecoded.sub ?? "";
|
|
26
|
+
}
|
|
27
|
+
async getJwt() {
|
|
28
|
+
// TODO useful?
|
|
29
|
+
// if (this.jwtDecoded.exp && this.jwtDecoded.exp * 1000 < Date.now()) {
|
|
30
|
+
// return this.jwt;
|
|
31
|
+
// }
|
|
32
|
+
|
|
33
|
+
const {
|
|
34
|
+
getJwt
|
|
35
|
+
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("query")({
|
|
36
|
+
getJwt: [{
|
|
37
|
+
includeEmail: !!this.jwtDecoded.email
|
|
38
|
+
}, {
|
|
39
|
+
"...on ErrorAccessDenied": {
|
|
40
|
+
__typename: true,
|
|
41
|
+
message: true
|
|
42
|
+
},
|
|
43
|
+
"...on JwtResponse": {
|
|
44
|
+
__typename: true,
|
|
45
|
+
jwt: true
|
|
46
|
+
}
|
|
47
|
+
}]
|
|
48
|
+
});
|
|
49
|
+
if (!getJwt) {
|
|
50
|
+
return this.jwt;
|
|
51
|
+
}
|
|
52
|
+
if (getJwt.__typename === "ErrorAccessDenied") {
|
|
53
|
+
throw new Error(getJwt.message);
|
|
54
|
+
}
|
|
55
|
+
this.jwt = getJwt.jwt;
|
|
56
|
+
this.jwtDecoded = decode(getJwt.jwt);
|
|
57
|
+
const sessionStorage = getStorage(true);
|
|
58
|
+
const localStorage = getStorage(false);
|
|
59
|
+
const sessionJwt = sessionStorage.jwt.load();
|
|
60
|
+
const localJwt = localStorage.jwt.load();
|
|
61
|
+
if (sessionJwt) {
|
|
62
|
+
sessionStorage.jwt.save(getJwt.jwt);
|
|
63
|
+
}
|
|
64
|
+
if (localJwt) {
|
|
65
|
+
localStorage.jwt.save(getJwt.jwt);
|
|
66
|
+
}
|
|
67
|
+
return getJwt.jwt;
|
|
68
|
+
}
|
|
69
|
+
async updateNotifications(notifications) {
|
|
70
|
+
const {
|
|
71
|
+
updateAppNotifications
|
|
72
|
+
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("mutation", {
|
|
73
|
+
scalars: {
|
|
74
|
+
DateTime: {
|
|
75
|
+
decode: e => new Date(e),
|
|
76
|
+
encode: e => e.toISOString()
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
})({
|
|
80
|
+
updateAppNotifications: [notifications, {
|
|
81
|
+
"...on ErrorAccessDenied": {
|
|
82
|
+
__typename: true,
|
|
83
|
+
message: true
|
|
84
|
+
},
|
|
85
|
+
"...on UpdateAppNotificationsResponse": {
|
|
86
|
+
__typename: true,
|
|
87
|
+
updateAppNotifications: {
|
|
88
|
+
enableAll: true,
|
|
89
|
+
mail: true,
|
|
90
|
+
cloud: true,
|
|
91
|
+
disableAllUntil: true
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}]
|
|
95
|
+
});
|
|
96
|
+
if (!updateAppNotifications) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
if (updateAppNotifications.__typename === "ErrorAccessDenied") {
|
|
100
|
+
return updateAppNotifications;
|
|
101
|
+
}
|
|
102
|
+
if (!updateAppNotifications.updateAppNotifications) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
__typename: "SuccessResponse",
|
|
107
|
+
data: updateAppNotifications.updateAppNotifications
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
async notifications() {
|
|
111
|
+
const {
|
|
112
|
+
appNotifications
|
|
113
|
+
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("query", {
|
|
114
|
+
scalars: {
|
|
115
|
+
DateTime: {
|
|
116
|
+
decode: e => new Date(e),
|
|
117
|
+
encode: e => e.toISOString()
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
})({
|
|
121
|
+
appNotifications: {
|
|
122
|
+
"...on ErrorAccessDenied": {
|
|
123
|
+
__typename: true,
|
|
124
|
+
message: true
|
|
125
|
+
},
|
|
126
|
+
"...on ErrorNotFound": {
|
|
127
|
+
__typename: true,
|
|
128
|
+
message: true
|
|
129
|
+
},
|
|
130
|
+
"...on UserAppNotifications": {
|
|
131
|
+
__typename: true,
|
|
132
|
+
enableAll: true,
|
|
133
|
+
mail: true,
|
|
134
|
+
cloud: true,
|
|
135
|
+
disableAllUntil: true
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
if (!appNotifications) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
if (appNotifications.__typename === "ErrorAccessDenied") {
|
|
143
|
+
return appNotifications;
|
|
144
|
+
}
|
|
145
|
+
if (appNotifications.__typename === "ErrorNotFound") {
|
|
146
|
+
return appNotifications;
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
__typename: "SuccessResponse",
|
|
150
|
+
data: appNotifications
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
async settings() {
|
|
154
|
+
const {
|
|
155
|
+
user
|
|
156
|
+
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("query")({
|
|
157
|
+
user: [{}, {
|
|
158
|
+
"...on ErrorNotFound": {
|
|
159
|
+
__typename: true,
|
|
160
|
+
message: true
|
|
161
|
+
},
|
|
162
|
+
"...on UserResponse": {
|
|
163
|
+
__typename: true,
|
|
164
|
+
user: {
|
|
165
|
+
appSettings: {
|
|
166
|
+
cloudNodeDaysForDelete: true,
|
|
167
|
+
historyFileDaysForDelete: true,
|
|
168
|
+
historyMaxFileCount: true
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}]
|
|
173
|
+
});
|
|
174
|
+
if (!user) {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
if (user.__typename === "ErrorNotFound") {
|
|
178
|
+
return user;
|
|
179
|
+
}
|
|
180
|
+
if (!user.user?.appSettings) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
__typename: "SuccessResponse",
|
|
185
|
+
data: user.user.appSettings
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
async updateSettings(settings) {
|
|
189
|
+
const {
|
|
190
|
+
updateAppSettings
|
|
191
|
+
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("mutation")({
|
|
192
|
+
updateAppSettings: [settings, {
|
|
193
|
+
"...on ErrorAccessDenied": {
|
|
194
|
+
__typename: true,
|
|
195
|
+
message: true
|
|
196
|
+
},
|
|
197
|
+
"...on ErrorBasic": {
|
|
198
|
+
__typename: true,
|
|
199
|
+
message: true
|
|
200
|
+
},
|
|
201
|
+
"...on UpdateAppSettingsResponse": {
|
|
202
|
+
__typename: true,
|
|
203
|
+
updateAppSettings: {
|
|
204
|
+
cloudNodeDaysForDelete: true,
|
|
205
|
+
historyFileDaysForDelete: true,
|
|
206
|
+
historyMaxFileCount: true
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}]
|
|
210
|
+
});
|
|
211
|
+
if (!updateAppSettings) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
if (updateAppSettings.__typename === "ErrorAccessDenied") {
|
|
215
|
+
return updateAppSettings;
|
|
216
|
+
}
|
|
217
|
+
if (updateAppSettings.__typename === "ErrorBasic") {
|
|
218
|
+
return updateAppSettings;
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
__typename: "SuccessResponse",
|
|
222
|
+
data: updateAppSettings.updateAppSettings
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWNvZGUiLCJnZXRTdG9yYWdlIiwiU2VjcmVjeUFwcENsaWVudCIsImNvbnN0cnVjdG9yIiwidWFKd3QiLCJfY2xpZW50IiwiX2tleXMiLCJ0aHVuZGVyIiwiand0Iiwiand0RGVjb2RlZCIsInVzZXJJZCIsInN1YiIsImdldEp3dCIsImluY2x1ZGVFbWFpbCIsImVtYWlsIiwiX190eXBlbmFtZSIsIm1lc3NhZ2UiLCJFcnJvciIsInNlc3Npb25TdG9yYWdlIiwibG9jYWxTdG9yYWdlIiwic2Vzc2lvbkp3dCIsImxvYWQiLCJsb2NhbEp3dCIsInNhdmUiLCJ1cGRhdGVOb3RpZmljYXRpb25zIiwibm90aWZpY2F0aW9ucyIsInVwZGF0ZUFwcE5vdGlmaWNhdGlvbnMiLCJzY2FsYXJzIiwiRGF0ZVRpbWUiLCJlIiwiRGF0ZSIsImVuY29kZSIsInRvSVNPU3RyaW5nIiwiZW5hYmxlQWxsIiwibWFpbCIsImNsb3VkIiwiZGlzYWJsZUFsbFVudGlsIiwiZGF0YSIsImFwcE5vdGlmaWNhdGlvbnMiLCJzZXR0aW5ncyIsInVzZXIiLCJhcHBTZXR0aW5ncyIsImNsb3VkTm9kZURheXNGb3JEZWxldGUiLCJoaXN0b3J5RmlsZURheXNGb3JEZWxldGUiLCJoaXN0b3J5TWF4RmlsZUNvdW50IiwidXBkYXRlU2V0dGluZ3MiLCJ1cGRhdGVBcHBTZXR0aW5ncyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvU2VjcmVjeUFwcENsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmltcG9ydCB0eXBlIHtcbiAgU2VjcmVjeUNsaWVudCxcbiAgU3VjY2Vzc1Jlc3BvbnNlLFxuICBVc2VyQXBwTm90aWZpY2F0aW9ucyxcbiAgVXNlckFwcFNldHRpbmdzXG59IGZyb20gXCIuLi9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBLZXlQYWlyIH0gZnJvbSBcIi4uL2NyeXB0by9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBFcnJvckFjY2Vzc0RlbmllZCwgRXJyb3JCYXNpYywgRXJyb3JOb3RGb3VuZCB9IGZyb20gXCIuLi9lcnJvci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUaHVuZGVyIH0gZnJvbSBcIi4uL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgSnd0UGF5bG9hZCB9IGZyb20gXCJqc29ud2VidG9rZW5cIjtcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gXCJqc29ud2VidG9rZW5cIjtcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiLi9zdG9yYWdlLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBTZWNyZWN5QXBwQ2xpZW50IHtcbiAgand0OiBzdHJpbmc7XG5cbiAgand0RGVjb2RlZDogSnd0UGF5bG9hZDtcblxuICAvLyAjY2xpZW50OiBTZWNyZWN5Q2xpZW50O1xuXG4gIC8vICNrZXlzOiBLZXlQYWlyO1xuXG4gICN0aHVuZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB1YUp3dDogc3RyaW5nLFxuICAgIF9jbGllbnQ6IFNlY3JlY3lDbGllbnQsXG4gICAgX2tleXM6IEtleVBhaXIsXG4gICAgdGh1bmRlcjogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj5cbiAgKSB7XG4gICAgdGhpcy5qd3QgPSB1YUp3dDtcbiAgICB0aGlzLmp3dERlY29kZWQgPSBkZWNvZGUodWFKd3QpIGFzIEp3dFBheWxvYWQ7XG4gICAgLy8gdGhpcy4jY2xpZW50ID0gY2xpZW50O1xuICAgIC8vIHRoaXMuI2tleXMgPSBrZXlzO1xuICAgIHRoaXMuI3RodW5kZXIgPSB0aHVuZGVyO1xuICB9XG5cbiAgZ2V0IHVzZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmp3dERlY29kZWQuc3ViID8/IFwiXCI7XG4gIH1cblxuICBhc3luYyBnZXRKd3QoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBUT0RPIHVzZWZ1bD9cbiAgICAvLyBpZiAodGhpcy5qd3REZWNvZGVkLmV4cCAmJiB0aGlzLmp3dERlY29kZWQuZXhwICogMTAwMCA8IERhdGUubm93KCkpIHtcbiAgICAvLyAgIHJldHVybiB0aGlzLmp3dDtcbiAgICAvLyB9XG5cbiAgICBjb25zdCB7IGdldEp3dCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIpKHtcbiAgICAgIGdldEp3dDogW1xuICAgICAgICB7XG4gICAgICAgICAgaW5jbHVkZUVtYWlsOiAhIXRoaXMuand0RGVjb2RlZC5lbWFpbFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBKd3RSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgand0OiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWdldEp3dCkge1xuICAgICAgcmV0dXJuIHRoaXMuand0O1xuICAgIH1cblxuICAgIGlmIChnZXRKd3QuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZ2V0Snd0Lm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHRoaXMuand0ID0gZ2V0Snd0Lmp3dDtcbiAgICB0aGlzLmp3dERlY29kZWQgPSBkZWNvZGUoZ2V0Snd0Lmp3dCkgYXMgSnd0UGF5bG9hZDtcblxuICAgIGNvbnN0IHNlc3Npb25TdG9yYWdlID0gZ2V0U3RvcmFnZSh0cnVlKTtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2UgPSBnZXRTdG9yYWdlKGZhbHNlKTtcblxuICAgIGNvbnN0IHNlc3Npb25Kd3QgPSBzZXNzaW9uU3RvcmFnZS5qd3QubG9hZCgpO1xuICAgIGNvbnN0IGxvY2FsSnd0ID0gbG9jYWxTdG9yYWdlLmp3dC5sb2FkKCk7XG5cbiAgICBpZiAoc2Vzc2lvbkp3dCkge1xuICAgICAgc2Vzc2lvblN0b3JhZ2Uuand0LnNhdmUoZ2V0Snd0Lmp3dCk7XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsSnd0KSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuand0LnNhdmUoZ2V0Snd0Lmp3dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldEp3dC5qd3Q7XG4gIH1cblxuICBhc3luYyB1cGRhdGVOb3RpZmljYXRpb25zKFxuICAgIG5vdGlmaWNhdGlvbnM6IFBhcnRpYWw8VXNlckFwcE5vdGlmaWNhdGlvbnM+XG4gICk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPFVzZXJBcHBOb3RpZmljYXRpb25zPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgdXBkYXRlQXBwTm90aWZpY2F0aW9ucyB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcIm11dGF0aW9uXCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgdXBkYXRlQXBwTm90aWZpY2F0aW9uczogW1xuICAgICAgICBub3RpZmljYXRpb25zLFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVcGRhdGVBcHBOb3RpZmljYXRpb25zUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVwZGF0ZUFwcE5vdGlmaWNhdGlvbnM6IHtcbiAgICAgICAgICAgICAgZW5hYmxlQWxsOiB0cnVlLFxuICAgICAgICAgICAgICBtYWlsOiB0cnVlLFxuICAgICAgICAgICAgICBjbG91ZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZGlzYWJsZUFsbFVudGlsOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZUFwcE5vdGlmaWNhdGlvbnMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1cGRhdGVBcHBOb3RpZmljYXRpb25zLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIHVwZGF0ZUFwcE5vdGlmaWNhdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKCF1cGRhdGVBcHBOb3RpZmljYXRpb25zLnVwZGF0ZUFwcE5vdGlmaWNhdGlvbnMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogdXBkYXRlQXBwTm90aWZpY2F0aW9ucy51cGRhdGVBcHBOb3RpZmljYXRpb25zXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIG5vdGlmaWNhdGlvbnMoKTogUHJvbWlzZTxcbiAgICB8IFN1Y2Nlc3NSZXNwb25zZTxVc2VyQXBwTm90aWZpY2F0aW9ucz5cbiAgICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gICAgfCBFcnJvck5vdEZvdW5kXG4gICAgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgYXBwTm90aWZpY2F0aW9ucyB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgYXBwTm90aWZpY2F0aW9uczoge1xuICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBVc2VyQXBwTm90aWZpY2F0aW9uc1wiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBlbmFibGVBbGw6IHRydWUsXG4gICAgICAgICAgbWFpbDogdHJ1ZSxcbiAgICAgICAgICBjbG91ZDogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlQWxsVW50aWw6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFhcHBOb3RpZmljYXRpb25zKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoYXBwTm90aWZpY2F0aW9ucy5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBhcHBOb3RpZmljYXRpb25zO1xuICAgIH1cblxuICAgIGlmIChhcHBOb3RpZmljYXRpb25zLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gYXBwTm90aWZpY2F0aW9ucztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGFwcE5vdGlmaWNhdGlvbnNcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc2V0dGluZ3MoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8VXNlckFwcFNldHRpbmdzPiB8IEVycm9yTm90Rm91bmQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIpKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gVXNlclJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgICAgIGFwcFNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgY2xvdWROb2RlRGF5c0ZvckRlbGV0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoaXN0b3J5RmlsZURheXNGb3JEZWxldGU6IHRydWUsXG4gICAgICAgICAgICAgICAgaGlzdG9yeU1heEZpbGVDb3VudDogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1c2VyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gdXNlcjtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXIudXNlcj8uYXBwU2V0dGluZ3MpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogdXNlci51c2VyLmFwcFNldHRpbmdzXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVNldHRpbmdzKFxuICAgIHNldHRpbmdzOiBQYXJ0aWFsPFVzZXJBcHBTZXR0aW5ncz5cbiAgKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8VXNlckFwcFNldHRpbmdzPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JCYXNpYyB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyB1cGRhdGVBcHBTZXR0aW5ncyB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcIm11dGF0aW9uXCIpKHtcbiAgICAgIHVwZGF0ZUFwcFNldHRpbmdzOiBbXG4gICAgICAgIHNldHRpbmdzLFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFVwZGF0ZUFwcFNldHRpbmdzUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVwZGF0ZUFwcFNldHRpbmdzOiB7XG4gICAgICAgICAgICAgIGNsb3VkTm9kZURheXNGb3JEZWxldGU6IHRydWUsXG4gICAgICAgICAgICAgIGhpc3RvcnlGaWxlRGF5c0ZvckRlbGV0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgaGlzdG9yeU1heEZpbGVDb3VudDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGRhdGVBcHBTZXR0aW5ncykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZUFwcFNldHRpbmdzLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIHVwZGF0ZUFwcFNldHRpbmdzO1xuICAgIH1cblxuICAgIGlmICh1cGRhdGVBcHBTZXR0aW5ncy5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIHVwZGF0ZUFwcFNldHRpbmdzO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogdXBkYXRlQXBwU2V0dGluZ3MudXBkYXRlQXBwU2V0dGluZ3NcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBV0EsU0FBU0EsTUFBTSxRQUFRLGNBQWM7QUFDckMsU0FBU0MsVUFBVSxRQUFRLGNBQWM7QUFBQztBQUUxQyxPQUFPLE1BQU1DLGdCQUFnQixDQUFDO0VBSzVCOztFQUVBOztFQUlBQyxXQUFXLENBQ1RDLEtBQWEsRUFDYkMsT0FBc0IsRUFDdEJDLEtBQWMsRUFDZEMsT0FBbUMsRUFDbkM7SUFBQTtNQUFBO01BQUE7SUFBQTtJQUNBLElBQUksQ0FBQ0MsR0FBRyxHQUFHSixLQUFLO0lBQ2hCLElBQUksQ0FBQ0ssVUFBVSxHQUFHVCxNQUFNLENBQUNJLEtBQUssQ0FBZTtJQUM3QztJQUNBO0lBQ0EsZ0NBQUksd0JBQVlHLE9BQU87RUFDekI7RUFFQSxJQUFJRyxNQUFNLEdBQVc7SUFDbkIsT0FBTyxJQUFJLENBQUNELFVBQVUsQ0FBQ0UsR0FBRyxJQUFJLEVBQUU7RUFDbEM7RUFFQSxNQUFNQyxNQUFNLEdBQW9CO0lBQzlCO0lBQ0E7SUFDQTtJQUNBOztJQUVBLE1BQU07TUFBRUE7SUFBTyxDQUFDLEdBQUcs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
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { DownloadProgress, ProgressCallback, SecrecyClient, SuccessResponse } from "../index.js";
|
|
2
|
+
import type { KeyPair } from "../crypto/index.js";
|
|
3
|
+
import type { ErrorAccessDenied, ErrorBasic, ErrorLimit, ErrorNotExist, ErrorNotFound } from "../error.js";
|
|
4
|
+
import type { NodeType, Rights, Thunder } from "../zeus/index.js";
|
|
5
|
+
import type { FileMetadata, Node, NodeFull } from "./types/index.js";
|
|
6
|
+
export declare class SecrecyCloudClient {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(client: SecrecyClient, keys: KeyPair, thunder: ReturnType<typeof Thunder>);
|
|
9
|
+
addFileToHistory({ fileId, nodeId }: {
|
|
10
|
+
fileId: string;
|
|
11
|
+
nodeId: string;
|
|
12
|
+
}): Promise<SuccessResponse<Node> | ErrorAccessDenied | ErrorNotExist | null>;
|
|
13
|
+
uploadFile({ file, encryptProgress, uploadProgress, signal }: {
|
|
14
|
+
file: globalThis.File | Uint8Array;
|
|
15
|
+
encryptProgress?: ProgressCallback;
|
|
16
|
+
uploadProgress?: ProgressCallback;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
}): Promise<SuccessResponse<string> | ErrorAccessDenied | ErrorLimit | ErrorNotFound | null>;
|
|
19
|
+
uploadFileInCloud({ file, name, nodeId, encryptProgress, uploadProgress, signal }: {
|
|
20
|
+
file: globalThis.File | Uint8Array;
|
|
21
|
+
name: string;
|
|
22
|
+
nodeId?: string;
|
|
23
|
+
encryptProgress?: ProgressCallback;
|
|
24
|
+
uploadProgress?: ProgressCallback;
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
}): Promise<SuccessResponse<NodeFull> | ErrorAccessDenied | ErrorLimit | ErrorNotFound | ErrorBasic | ErrorNotExist | null>;
|
|
27
|
+
deletedNodes(): Promise<SuccessResponse<Node[]> | ErrorAccessDenied | null>;
|
|
28
|
+
sharedNodes(): Promise<SuccessResponse<Node[]> | ErrorAccessDenied | null>;
|
|
29
|
+
nodesSharedWithMe(type?: NodeType | null | undefined): Promise<SuccessResponse<Node[]> | ErrorAccessDenied | null>;
|
|
30
|
+
deleteNodeSharing({ nodeId, userId }: {
|
|
31
|
+
nodeId: string;
|
|
32
|
+
userId: string;
|
|
33
|
+
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null>;
|
|
34
|
+
duplicateNode({ nodeId, folderId, customName }: {
|
|
35
|
+
nodeId: string;
|
|
36
|
+
folderId?: string | null | undefined;
|
|
37
|
+
customName?: string | null | undefined;
|
|
38
|
+
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied | ErrorNotFound | null>;
|
|
39
|
+
deleteNodeCloudTrash({ ids }: {
|
|
40
|
+
ids: Array<string>;
|
|
41
|
+
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null>;
|
|
42
|
+
createFolder({ name, parentFolderId }: {
|
|
43
|
+
name: string;
|
|
44
|
+
parentFolderId?: string | null;
|
|
45
|
+
}): Promise<SuccessResponse<NodeFull> | ErrorAccessDenied | ErrorNotExist | null>;
|
|
46
|
+
node({ id, deleted }?: {
|
|
47
|
+
id?: string | null | undefined;
|
|
48
|
+
deleted?: boolean | null | undefined;
|
|
49
|
+
}): Promise<SuccessResponse<NodeFull> | ErrorAccessDenied | null>;
|
|
50
|
+
fileMetadata({ id }: {
|
|
51
|
+
id: string;
|
|
52
|
+
}): Promise<SuccessResponse<FileMetadata> | ErrorAccessDenied | null>;
|
|
53
|
+
shareNode({ nodeId, userId, rights }: {
|
|
54
|
+
nodeId: string;
|
|
55
|
+
userId: string;
|
|
56
|
+
rights: Rights;
|
|
57
|
+
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied | ErrorNotFound | null>;
|
|
58
|
+
updateNode({ nodeId, name, isFavorite, deletedAt }: {
|
|
59
|
+
nodeId: string;
|
|
60
|
+
name?: string | null | undefined;
|
|
61
|
+
isFavorite?: boolean | null | undefined;
|
|
62
|
+
deletedAt?: Date | null | undefined;
|
|
63
|
+
}): Promise<SuccessResponse<NodeFull> | ErrorAccessDenied | ErrorNotExist | null>;
|
|
64
|
+
fileContent({ fileId, onDownloadProgress, progressDecrypt, signal }: {
|
|
65
|
+
fileId: string;
|
|
66
|
+
onDownloadProgress?: (progress: DownloadProgress) => void;
|
|
67
|
+
progressDecrypt?: ProgressCallback;
|
|
68
|
+
signal?: AbortSignal;
|
|
69
|
+
}): Promise<SuccessResponse<Uint8Array> | ErrorAccessDenied | ErrorBasic | null>;
|
|
70
|
+
deleteFile({ fileId, nodeId }: {
|
|
71
|
+
fileId: string;
|
|
72
|
+
nodeId: string;
|
|
73
|
+
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied | ErrorNotExist | null>;
|
|
74
|
+
deleteNode({ nodeId }: {
|
|
75
|
+
nodeId: string;
|
|
76
|
+
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null>;
|
|
77
|
+
emptyTrash(): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null>;
|
|
78
|
+
recoverNode(id: string): Promise<SuccessResponse<boolean> | ErrorAccessDenied | ErrorNotExist | null>;
|
|
79
|
+
moveNodes({ nodeIds, parentNodeId }: {
|
|
80
|
+
nodeIds: string[];
|
|
81
|
+
parentNodeId?: string | null | undefined;
|
|
82
|
+
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null>;
|
|
83
|
+
saveInCloud({ fileId, name, nodeId }: {
|
|
84
|
+
fileId: string;
|
|
85
|
+
name: string;
|
|
86
|
+
nodeId?: string;
|
|
87
|
+
}): Promise<SuccessResponse<NodeFull> | ErrorAccessDenied | ErrorBasic | ErrorLimit | ErrorNotFound | ErrorNotExist | null>;
|
|
88
|
+
private perNode;
|
|
89
|
+
}
|