@secrecy/lib 1.0.0-dev.39 → 1.0.0-dev.42
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/BaseClient.d.ts +33 -53
- package/dist/BaseClient.js +886 -2093
- package/dist/PopupTools.js +20 -21
- package/dist/ZeusThunder.js +50 -84
- package/dist/cache.d.ts +2 -3
- package/dist/cache.js +4 -5
- package/dist/client/admin/index.js +77 -165
- package/dist/client/convert/file.d.ts +3 -3
- package/dist/client/convert/file.js +18 -23
- package/dist/client/convert/mail.js +13 -13
- package/dist/client/convert/node.d.ts +9 -0
- package/dist/client/convert/node.js +101 -0
- package/dist/client/helpers.js +41 -41
- package/dist/client/index.d.ts +63 -74
- package/dist/client/index.js +2727 -5759
- package/dist/client/storage.js +7 -7
- package/dist/client/types/File.d.ts +6 -13
- package/dist/client/types/File.js +1 -1
- package/dist/client/types/Inputs.d.ts +2 -7
- package/dist/client/types/Inputs.js +1 -1
- package/dist/client/types/Node.d.ts +49 -0
- package/dist/client/types/Node.js +3 -0
- package/dist/client/types/UserAppNotifications.d.ts +1 -1
- package/dist/client/types/UserAppNotifications.js +1 -1
- package/dist/client/types/UserAppSettings.js +1 -1
- package/dist/client/types/index.d.ts +7 -13
- package/dist/client/types/index.js +2 -4
- package/dist/client/types/selectors.d.ts +476 -0
- package/dist/client/types/selectors.js +125 -0
- package/dist/crypto/file.js +122 -203
- package/dist/crypto/index.js +14 -12
- package/dist/error.js +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +2 -34
- package/dist/minify/index.js +7 -7
- package/dist/minify/lz4.js +87 -93
- package/dist/sodium.js +3 -25
- package/dist/utils/store-buddy.js +11 -15
- package/dist/utils/time.js +4 -12
- package/dist/{utils.d.ts → utils/utils.d.ts} +0 -0
- package/dist/utils/utils.js +57 -0
- package/dist/worker/__mock__/sodium.worker.js +35 -32
- package/dist/worker/md5.js +21 -39
- package/dist/worker/sodium.js +95 -130
- package/dist/worker/workerCodes.js +3 -3
- package/dist/zeus/const.d.ts +5 -0
- package/dist/zeus/const.js +303 -1360
- package/dist/zeus/index.d.ts +1805 -1817
- package/dist/zeus/index.js +542 -434
- package/package.json +40 -39
- package/dist/client/convert/folder.d.ts +0 -8
- package/dist/client/convert/folder.js +0 -264
- package/dist/client/convert/vFile.d.ts +0 -5
- package/dist/client/convert/vFile.js +0 -164
- package/dist/client/types/FilesOnUsersOnApplications.d.ts +0 -9
- package/dist/client/types/FilesOnUsersOnApplications.js +0 -3
- package/dist/client/types/Folder.d.ts +0 -68
- package/dist/client/types/Folder.js +0 -7
- package/dist/client/types/VFile.d.ts +0 -62
- package/dist/client/types/VFile.js +0 -4
- package/dist/client/types/queries.d.ts +0 -535
- package/dist/client/types/queries.js +0 -192
- package/dist/utils.js +0 -188
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
|
-
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
|
|
4
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
|
-
|
|
6
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
7
|
-
|
|
8
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
|
-
|
|
10
1
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
11
2
|
import { storeBuddy } from "../../utils/store-buddy.js";
|
|
12
3
|
import { BaseClient } from "../../BaseClient.js";
|
|
13
|
-
|
|
4
|
+
const userSelector = {
|
|
14
5
|
id: true,
|
|
15
6
|
firstname: true,
|
|
16
7
|
lastname: true,
|
|
@@ -21,173 +12,94 @@ var userSelector = {
|
|
|
21
12
|
deletedAt: true,
|
|
22
13
|
lastLogin: true
|
|
23
14
|
};
|
|
24
|
-
export
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"...on ErrorAccessDenied": {
|
|
47
|
-
__typename: true,
|
|
48
|
-
message: true
|
|
49
|
-
},
|
|
50
|
-
"...on UserListResponse": {
|
|
51
|
-
__typename: true,
|
|
52
|
-
userList: userSelector
|
|
53
|
-
}
|
|
54
|
-
}]
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
case 2:
|
|
58
|
-
_yield$this$client = _context.sent;
|
|
59
|
-
userList = _yield$this$client.userList;
|
|
60
|
-
|
|
61
|
-
if (userList) {
|
|
62
|
-
_context.next = 6;
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return _context.abrupt("return", null);
|
|
67
|
-
|
|
68
|
-
case 6:
|
|
69
|
-
if (!(userList.__typename === "ErrorAccessDenied")) {
|
|
70
|
-
_context.next = 8;
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return _context.abrupt("return", userList);
|
|
75
|
-
|
|
76
|
-
case 8:
|
|
77
|
-
result = userList.userList.map(function (user) {
|
|
78
|
-
return _objectSpread(_objectSpread({}, user), {}, {
|
|
79
|
-
lastLogin: new Date(user.lastLogin),
|
|
80
|
-
deletedAt: user.deletedAt ? new Date(user.deletedAt) : null
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
return _context.abrupt("return", {
|
|
84
|
-
__typename: "SuccessResponse",
|
|
85
|
-
data: result
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
case 10:
|
|
89
|
-
case "end":
|
|
90
|
-
return _context.stop();
|
|
91
|
-
}
|
|
15
|
+
export class AdminSecrecyClient extends BaseClient {
|
|
16
|
+
async userList(search) {
|
|
17
|
+
const {
|
|
18
|
+
userList
|
|
19
|
+
} = await this.client("query", {
|
|
20
|
+
scalars: {
|
|
21
|
+
DateTime: {
|
|
22
|
+
decode: e => new Date(e),
|
|
23
|
+
encode: e => e.toISOString()
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
})({
|
|
27
|
+
userList: [{
|
|
28
|
+
search
|
|
29
|
+
}, {
|
|
30
|
+
"...on ErrorAccessDenied": {
|
|
31
|
+
__typename: true,
|
|
32
|
+
message: true
|
|
33
|
+
},
|
|
34
|
+
"...on UserListResponse": {
|
|
35
|
+
__typename: true,
|
|
36
|
+
userList: userSelector
|
|
92
37
|
}
|
|
93
|
-
}
|
|
94
|
-
})
|
|
38
|
+
}]
|
|
39
|
+
});
|
|
95
40
|
|
|
96
|
-
|
|
97
|
-
return
|
|
41
|
+
if (!userList) {
|
|
42
|
+
return null;
|
|
98
43
|
}
|
|
99
44
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
_proto.changeUserPlan = /*#__PURE__*/function () {
|
|
104
|
-
var _changeUserPlan = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(userId, plan) {
|
|
105
|
-
var _yield$this$client2, changeUserPlan;
|
|
106
|
-
|
|
107
|
-
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
108
|
-
while (1) {
|
|
109
|
-
switch (_context2.prev = _context2.next) {
|
|
110
|
-
case 0:
|
|
111
|
-
_context2.next = 2;
|
|
112
|
-
return this.client("mutation")({
|
|
113
|
-
changeUserPlan: [{
|
|
114
|
-
userId: userId,
|
|
115
|
-
plan: plan
|
|
116
|
-
}, {
|
|
117
|
-
"...on ErrorAccessDenied": {
|
|
118
|
-
__typename: true,
|
|
119
|
-
message: true
|
|
120
|
-
},
|
|
121
|
-
"...on ChangeUserPlanResponse": {
|
|
122
|
-
__typename: true,
|
|
123
|
-
changeUserPlan: userSelector
|
|
124
|
-
}
|
|
125
|
-
}]
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
case 2:
|
|
129
|
-
_yield$this$client2 = _context2.sent;
|
|
130
|
-
changeUserPlan = _yield$this$client2.changeUserPlan;
|
|
131
|
-
|
|
132
|
-
if (changeUserPlan) {
|
|
133
|
-
_context2.next = 6;
|
|
134
|
-
break;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
return _context2.abrupt("return", null);
|
|
138
|
-
|
|
139
|
-
case 6:
|
|
140
|
-
if (!(changeUserPlan.__typename === "ErrorAccessDenied")) {
|
|
141
|
-
_context2.next = 8;
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return _context2.abrupt("return", changeUserPlan);
|
|
45
|
+
if (userList.__typename === "ErrorAccessDenied") {
|
|
46
|
+
return userList;
|
|
47
|
+
}
|
|
146
48
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
49
|
+
return {
|
|
50
|
+
__typename: "SuccessResponse",
|
|
51
|
+
data: userList.userList
|
|
52
|
+
};
|
|
53
|
+
}
|
|
152
54
|
|
|
153
|
-
|
|
55
|
+
async changeUserPlan(userId, plan) {
|
|
56
|
+
const {
|
|
57
|
+
changeUserPlan
|
|
58
|
+
} = await this.client("mutation", {
|
|
59
|
+
scalars: {
|
|
60
|
+
DateTime: {
|
|
61
|
+
decode: e => new Date(e),
|
|
62
|
+
encode: e => e.toISOString()
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
})({
|
|
66
|
+
changeUserPlan: [{
|
|
67
|
+
userId,
|
|
68
|
+
plan
|
|
69
|
+
}, {
|
|
70
|
+
"...on ErrorAccessDenied": {
|
|
71
|
+
__typename: true,
|
|
72
|
+
message: true
|
|
73
|
+
},
|
|
74
|
+
"...on ChangeUserPlanResponse": {
|
|
75
|
+
__typename: true,
|
|
76
|
+
changeUserPlan: userSelector
|
|
77
|
+
}
|
|
78
|
+
}]
|
|
79
|
+
});
|
|
154
80
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
data: {
|
|
159
|
-
deletedAt: changeUserPlan.changeUserPlan.deletedAt ? new Date(changeUserPlan.changeUserPlan.deletedAt) : null,
|
|
160
|
-
lastLogin: new Date(changeUserPlan.changeUserPlan.lastLogin),
|
|
161
|
-
email: changeUserPlan.changeUserPlan.email,
|
|
162
|
-
firstname: changeUserPlan.changeUserPlan.firstname,
|
|
163
|
-
id: changeUserPlan.changeUserPlan.id,
|
|
164
|
-
lang: changeUserPlan.changeUserPlan.lang,
|
|
165
|
-
lastname: changeUserPlan.changeUserPlan.lastname,
|
|
166
|
-
phone: changeUserPlan.changeUserPlan.phone,
|
|
167
|
-
role: changeUserPlan.changeUserPlan.role
|
|
168
|
-
}
|
|
169
|
-
});
|
|
81
|
+
if (!changeUserPlan) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
170
84
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}, _callee2, this);
|
|
177
|
-
}));
|
|
85
|
+
if (changeUserPlan.__typename === "ErrorAccessDenied") {
|
|
86
|
+
return changeUserPlan;
|
|
87
|
+
}
|
|
178
88
|
|
|
179
|
-
|
|
180
|
-
return
|
|
89
|
+
if (!changeUserPlan.changeUserPlan) {
|
|
90
|
+
return null;
|
|
181
91
|
}
|
|
182
92
|
|
|
183
|
-
return
|
|
184
|
-
|
|
93
|
+
return {
|
|
94
|
+
__typename: "SuccessResponse",
|
|
95
|
+
data: changeUserPlan.changeUserPlan
|
|
96
|
+
};
|
|
97
|
+
}
|
|
185
98
|
|
|
186
|
-
|
|
187
|
-
}(BaseClient);
|
|
99
|
+
}
|
|
188
100
|
export function getSecrecyAdminClient(env, session) {
|
|
189
|
-
|
|
190
|
-
|
|
101
|
+
const userSession = storeBuddy("secrecy.user_session", session).init("");
|
|
102
|
+
const uaSession = userSession.load();
|
|
191
103
|
|
|
192
104
|
if (uaSession === "") {
|
|
193
105
|
return null;
|
|
@@ -195,4 +107,4 @@ export function getSecrecyAdminClient(env, session) {
|
|
|
195
107
|
|
|
196
108
|
return new AdminSecrecyClient(uaSession, env);
|
|
197
109
|
}
|
|
198
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvYWRtaW4vaW5kZXgudHMiXSwibmFtZXMiOlsic3RvcmVCdWRkeSIsIkJhc2VDbGllbnQiLCJ1c2VyU2VsZWN0b3IiLCJpZCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibGFuZyIsImVtYWlsIiwicGhvbmUiLCJyb2xlIiwiZGVsZXRlZEF0IiwibGFzdExvZ2luIiwiQWRtaW5TZWNyZWN5Q2xpZW50IiwidXNlckxpc3QiLCJzZWFyY2giLCJjbGllbnQiLCJfX3R5cGVuYW1lIiwibWVzc2FnZSIsInJlc3VsdCIsIm1hcCIsInVzZXIiLCJEYXRlIiwiZGF0YSIsImNoYW5nZVVzZXJQbGFuIiwidXNlcklkIiwicGxhbiIsImdldFNlY3JlY3lBZG1pbkNsaWVudCIsImVudiIsInNlc3Npb24iLCJ1c2VyU2Vzc2lvbiIsImluaXQiLCJ1YVNlc3Npb24iLCJsb2FkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQU9BLFNBQVNBLFVBQVQsUUFBMkIsNEJBQTNCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixxQkFBM0I7QUF3QkEsSUFBTUMsWUFBWSxHQUFHO0FBQ25CQyxFQUFBQSxFQUFFLEVBQUUsSUFEZTtBQUVuQkMsRUFBQUEsU0FBUyxFQUFFLElBRlE7QUFHbkJDLEVBQUFBLFFBQVEsRUFBRSxJQUhTO0FBSW5CQyxFQUFBQSxJQUFJLEVBQUUsSUFKYTtBQUtuQkMsRUFBQUEsS0FBSyxFQUFFLElBTFk7QUFNbkJDLEVBQUFBLEtBQUssRUFBRSxJQU5ZO0FBT25CQyxFQUFBQSxJQUFJLEVBQUUsSUFQYTtBQVFuQkMsRUFBQUEsU0FBUyxFQUFFLElBUlE7QUFTbkJDLEVBQUFBLFNBQVMsRUFBRTtBQVRRLENBQXJCO0FBWUEsV0FBYUMsa0JBQWI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7O0FBQUEsU0FDUUMsUUFEUjtBQUFBLDZFQUNFLGlCQUNFQyxNQURGO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFB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S0pKLGtCQUFBQSxLQUFLLEVBQUVnQixjQUFjLENBQUNBLGNBQWYsQ0FBOEJoQixLQUxqQztBQU1KSCxrQkFBQUEsU0FBUyxFQUFFbUIsY0FBYyxDQUFDQSxjQUFmLENBQThCbkIsU0FOckM7QUFPSkQsa0JBQUFBLEVBQUUsRUFBRW9CLGNBQWMsQ0FBQ0EsY0FBZixDQUE4QnBCLEVBUDlCO0FBUUpHLGtCQUFBQSxJQUFJLEVBQUVpQixjQUFjLENBQUNBLGNBQWYsQ0FBOEJqQixJQVJoQztBQVNKRCxrQkFBQUEsUUFBUSxFQUFFa0IsY0FBYyxDQUFDQSxjQUFmLENBQThCbEIsUUFUcEM7QUFVSkcsa0JBQUFBLEtBQUssRUFBRWUsY0FBYyxDQUFDQSxjQUFmLENBQThCZixLQVZqQztBQVdKQyxrQkFBQUEsSUFBSSxFQUFFYyxjQUFjLENBQUNBLGNBQWYsQ0FBOEJkO0FBWGhDO0FBRkQsZUFuQ1Q7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0ExQ0Y7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQSxFQUF3Q1IsVUFBeEM7QUFnR0EsT0FBTyxTQUFTeUIscUJBQVQsQ0FDTEMsR0FESyxFQUVMQyxPQUZLLEVBR3NCO0FBQzNCLE1BQU1DLFdBQVcsR0FBRzdCLFVBQVUseUJBQWlDNEIsT0FBakMsQ0FBVixDQUFvREUsSUFBcEQsQ0FDbEIsRUFEa0IsQ0FBcEI7QUFHQSxNQUFNQyxTQUFTLEdBQUdGLFdBQVcsQ0FBQ0csSUFBWixFQUFsQjs7QUFDQSxNQUFJRCxTQUFTLEtBQUssRUFBbEIsRUFBc0I7QUFDcEIsV0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBTyxJQUFJbkIsa0JBQUosQ0FBdUJtQixTQUF2QixFQUFrQ0osR0FBbEMsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgdHlwZSB7XG4gIFBsYW5LaW5kLFxuICBTZWNyZWN5RW52LFxuICBTdWNjZXNzUmVzcG9uc2UsXG4gIFVzZXJcbn0gZnJvbSBcIi4uLy4uL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzdG9yZUJ1ZGR5IH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0b3JlLWJ1ZGR5LmpzXCI7XG5pbXBvcnQgeyBCYXNlQ2xpZW50IH0gZnJvbSBcIi4uLy4uL0Jhc2VDbGllbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgRXJyb3JBY2Nlc3NEZW5pZWQgfSBmcm9tIFwiLi4vLi4vZXJyb3IuanNcIjtcblxuLyogVE9ET1xuLSBxdWVyeSBwb3VyIGxpc3RlciBsZXMgdXNlcnMgYXZlYyBwYWdpbmF0aW9uIGV0IGlucHV0IG9wdGlvbm5lbCBcInNlYXJjaFwiIGV0IGJvb2xlYW4gcG91ciBmaWx0cmVyIGxlcyBiYW5zXG4tIG11dGF0aW9uIGNoYW5nZXIgbGUgcGxhbiBkJ3VuIHVzZXIgKHNhbnMgcGF5ZXIgZHUgY291cClcbi0gcXVlcnkgcG91ciByZW52b3llciBsZXMgYXBwcyBkJ3VuIHVzZXJcbi0gcXVlcnkgcG91ciBkb25uZXIgbGVzIGxpbWl0ZXMgZCd1biB1c2VyXG4tIHF1ZXJ5IHBvdXIgZG9ubmVyIGxlcyByZXBvcnRzIGQndW4gdXNlclxuLSBtdXRhdGlvbiBwb3VyIGJhbiB1biB1c2VyXG4tIHF1ZXJ5IHBvdXIgZ2V0IGxlcyBiYW5zIGQndW4gdXNlclxuLSBtdXRhdGlvbiBwb3VyIGRlbGV0ZSB1biB1c2VyIChkw6lqw6AgZXhpc3RhbnQ/KVxuLSBtdXRhdGlvbiBjaGFuZ2VyIGxlIHJvbGUgZHUgdXNlciAodXNlci9hZG1pbilcbi0gbXV0YXRpb24gcG91ciBkw6ljbyB1bmUgb3UgZGVzIHNlc3Npb25zIG1ldGEgb3UgYXBwIGQndW4gdXNlclxuLSBxdWVyeSBhZmZpY2hlciBsZXMgc2Vzc2lvbnMgbWV0YSBvdSBhcHAgZCd1biB1c2VyXG4tIHF1ZXJ5IHBvdXIgYWZmaWNoZXIgZGVzIGluZm9zIHN1ciBsZSBjbG91ZCBkJ3VuIHVzZXJcbi0gbXV0YXRpb24gcG91ciBkZWxldGUsIHJlc3RvcmUsIGRlbGV0ZSB0cmFzaCwgZGFucyBsZSBjbG91ZCBkJ3VuIHVzZXJcbi0gcXVlcnkgcG91ciBhZmZpY2hlciBsZXMgaW5mb3Mgc3VyIGxlcyBtYWlscyBkJ3VuIHVzZXJcbi0gbXV0YXRpb24gcG91ciBkZWxldGUsIHJlc3RvcmUsIGRlbGV0ZSB0cmFzaCwgZGFucyBsZXMgbWFpbHMgZCd1biB1c2VyXG4tIHF1ZXJ5IHBvdXIgYWZmaWNoZXIgbGVzIGxpbWl0ZXMgbWF4IGV0IGFjdHVlbHMgZCd1biB1c2VyXG4tIHF1ZXJ5IGRlIHN0YXRzP1xuKi9cblxuZXhwb3J0IHR5cGUgVXNlckFkbWluUGFuZWwgPSBVc2VyPHsgd2l0aFB1YmxpY0tleTogZmFsc2UgfT47XG5jb25zdCB1c2VyU2VsZWN0b3IgPSB7XG4gIGlkOiB0cnVlLFxuICBmaXJzdG5hbWU6IHRydWUsXG4gIGxhc3RuYW1lOiB0cnVlLFxuICBsYW5nOiB0cnVlLFxuICBlbWFpbDogdHJ1ZSxcbiAgcGhvbmU6IHRydWUsXG4gIHJvbGU6IHRydWUsXG4gIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgbGFzdExvZ2luOiB0cnVlXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY2xhc3MgQWRtaW5TZWNyZWN5Q2xpZW50IGV4dGVuZHMgQmFzZUNsaWVudCB7XG4gIGFzeW5jIHVzZXJMaXN0KFxuICAgIHNlYXJjaD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VXNlckFkbWluUGFuZWxbXT4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IHVzZXJMaXN0IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHVzZXJMaXN0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2hcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gVXNlckxpc3RSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgdXNlckxpc3Q6IHVzZXJTZWxlY3RvclxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1c2VyTGlzdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVzZXJMaXN0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIHVzZXJMaXN0O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHVzZXJMaXN0LnVzZXJMaXN0Lm1hcCh1c2VyID0+ICh7XG4gICAgICAuLi51c2VyLFxuICAgICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1c2VyLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVzZXIuZGVsZXRlZEF0ID8gbmV3IERhdGUodXNlci5kZWxldGVkQXQpIDogbnVsbFxuICAgIH0pKTtcblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogcmVzdWx0XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGNoYW5nZVVzZXJQbGFuKFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIHBsYW46IFBsYW5LaW5kXG4gICk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPFVzZXJBZG1pblBhbmVsPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgY2hhbmdlVXNlclBsYW4gfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgY2hhbmdlVXNlclBsYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICBwbGFuXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIENoYW5nZVVzZXJQbGFuUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGNoYW5nZVVzZXJQbGFuOiB1c2VyU2VsZWN0b3JcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghY2hhbmdlVXNlclBsYW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VVc2VyUGxhbi5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBjaGFuZ2VVc2VyUGxhbjtcbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZVVzZXJQbGFuLmNoYW5nZVVzZXJQbGFuKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGVsZXRlZEF0OiBjaGFuZ2VVc2VyUGxhbi5jaGFuZ2VVc2VyUGxhbi5kZWxldGVkQXRcbiAgICAgICAgICA/IG5ldyBEYXRlKGNoYW5nZVVzZXJQbGFuLmNoYW5nZVVzZXJQbGFuLmRlbGV0ZWRBdClcbiAgICAgICAgICA6IG51bGwsXG4gICAgICAgIGxhc3RMb2dpbjogbmV3IERhdGUoY2hhbmdlVXNlclBsYW4uY2hhbmdlVXNlclBsYW4ubGFzdExvZ2luKSxcbiAgICAgICAgZW1haWw6IGNoYW5nZVVzZXJQbGFuLmNoYW5nZVVzZXJQbGFuLmVtYWlsLFxuICAgICAgICBmaXJzdG5hbWU6IGNoYW5nZVVzZXJQbGFuLmNoYW5nZVVzZXJQbGFuLmZpcnN0bmFtZSxcbiAgICAgICAgaWQ6IGNoYW5nZVVzZXJQbGFuLmNoYW5nZVVzZXJQbGFuLmlkLFxuICAgICAgICBsYW5nOiBjaGFuZ2VVc2VyUGxhbi5jaGFuZ2VVc2VyUGxhbi5sYW5nLFxuICAgICAgICBsYXN0bmFtZTogY2hhbmdlVXNlclBsYW4uY2hhbmdlVXNlclBsYW4ubGFzdG5hbWUsXG4gICAgICAgIHBob25lOiBjaGFuZ2VVc2VyUGxhbi5jaGFuZ2VVc2VyUGxhbi5waG9uZSxcbiAgICAgICAgcm9sZTogY2hhbmdlVXNlclBsYW4uY2hhbmdlVXNlclBsYW4ucm9sZVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlY3JlY3lBZG1pbkNsaWVudChcbiAgZW52OiBTZWNyZWN5RW52LFxuICBzZXNzaW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZFxuKTogQWRtaW5TZWNyZWN5Q2xpZW50IHwgbnVsbCB7XG4gIGNvbnN0IHVzZXJTZXNzaW9uID0gc3RvcmVCdWRkeTxzdHJpbmc+KGBzZWNyZWN5LnVzZXJfc2Vzc2lvbmAsIHNlc3Npb24pLmluaXQoXG4gICAgXCJcIlxuICApO1xuICBjb25zdCB1YVNlc3Npb24gPSB1c2VyU2Vzc2lvbi5sb2FkKCk7XG4gIGlmICh1YVNlc3Npb24gPT09IFwiXCIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBuZXcgQWRtaW5TZWNyZWN5Q2xpZW50KHVhU2Vzc2lvbiwgZW52KTtcbn1cbiJdfQ==
|
|
110
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdG9yZUJ1ZGR5IiwiQmFzZUNsaWVudCIsInVzZXJTZWxlY3RvciIsImlkIiwiZmlyc3RuYW1lIiwibGFzdG5hbWUiLCJsYW5nIiwiZW1haWwiLCJwaG9uZSIsInJvbGUiLCJkZWxldGVkQXQiLCJsYXN0TG9naW4iLCJBZG1pblNlY3JlY3lDbGllbnQiLCJ1c2VyTGlzdCIsInNlYXJjaCIsImNsaWVudCIsInNjYWxhcnMiLCJEYXRlVGltZSIsImRlY29kZSIsImUiLCJEYXRlIiwiZW5jb2RlIiwidG9JU09TdHJpbmciLCJfX3R5cGVuYW1lIiwibWVzc2FnZSIsImRhdGEiLCJjaGFuZ2VVc2VyUGxhbiIsInVzZXJJZCIsInBsYW4iLCJnZXRTZWNyZWN5QWRtaW5DbGllbnQiLCJlbnYiLCJzZXNzaW9uIiwidXNlclNlc3Npb24iLCJpbml0IiwidWFTZXNzaW9uIiwibG9hZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvYWRtaW4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgdHlwZSB7XG4gIFBsYW5LaW5kLFxuICBTZWNyZWN5RW52LFxuICBTdWNjZXNzUmVzcG9uc2UsXG4gIFVzZXJcbn0gZnJvbSBcIi4uLy4uL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzdG9yZUJ1ZGR5IH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0b3JlLWJ1ZGR5LmpzXCI7XG5pbXBvcnQgeyBCYXNlQ2xpZW50IH0gZnJvbSBcIi4uLy4uL0Jhc2VDbGllbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgRXJyb3JBY2Nlc3NEZW5pZWQgfSBmcm9tIFwiLi4vLi4vZXJyb3IuanNcIjtcblxuLyogVE9ET1xuLSBxdWVyeSBwb3VyIGxpc3RlciBsZXMgdXNlcnMgYXZlYyBwYWdpbmF0aW9uIGV0IGlucHV0IG9wdGlvbm5lbCBcInNlYXJjaFwiIGV0IGJvb2xlYW4gcG91ciBmaWx0cmVyIGxlcyBiYW5zXG4tIG11dGF0aW9uIGNoYW5nZXIgbGUgcGxhbiBkJ3VuIHVzZXIgKHNhbnMgcGF5ZXIgZHUgY291cClcbi0gcXVlcnkgcG91ciByZW52b3llciBsZXMgYXBwcyBkJ3VuIHVzZXJcbi0gcXVlcnkgcG91ciBkb25uZXIgbGVzIGxpbWl0ZXMgZCd1biB1c2VyXG4tIHF1ZXJ5IHBvdXIgZG9ubmVyIGxlcyByZXBvcnRzIGQndW4gdXNlclxuLSBtdXRhdGlvbiBwb3VyIGJhbiB1biB1c2VyXG4tIHF1ZXJ5IHBvdXIgZ2V0IGxlcyBiYW5zIGQndW4gdXNlclxuLSBtdXRhdGlvbiBwb3VyIGRlbGV0ZSB1biB1c2VyIChkw6lqw6AgZXhpc3RhbnQ/KVxuLSBtdXRhdGlvbiBjaGFuZ2VyIGxlIHJvbGUgZHUgdXNlciAodXNlci9hZG1pbilcbi0gbXV0YXRpb24gcG91ciBkw6ljbyB1bmUgb3UgZGVzIHNlc3Npb25zIG1ldGEgb3UgYXBwIGQndW4gdXNlclxuLSBxdWVyeSBhZmZpY2hlciBsZXMgc2Vzc2lvbnMgbWV0YSBvdSBhcHAgZCd1biB1c2VyXG4tIHF1ZXJ5IHBvdXIgYWZmaWNoZXIgZGVzIGluZm9zIHN1ciBsZSBjbG91ZCBkJ3VuIHVzZXJcbi0gbXV0YXRpb24gcG91ciBkZWxldGUsIHJlc3RvcmUsIGRlbGV0ZSB0cmFzaCwgZGFucyBsZSBjbG91ZCBkJ3VuIHVzZXJcbi0gcXVlcnkgcG91ciBhZmZpY2hlciBsZXMgaW5mb3Mgc3VyIGxlcyBtYWlscyBkJ3VuIHVzZXJcbi0gbXV0YXRpb24gcG91ciBkZWxldGUsIHJlc3RvcmUsIGRlbGV0ZSB0cmFzaCwgZGFucyBsZXMgbWFpbHMgZCd1biB1c2VyXG4tIHF1ZXJ5IHBvdXIgYWZmaWNoZXIgbGVzIGxpbWl0ZXMgbWF4IGV0IGFjdHVlbHMgZCd1biB1c2VyXG4tIHF1ZXJ5IGRlIHN0YXRzP1xuKi9cblxuZXhwb3J0IHR5cGUgVXNlckFkbWluUGFuZWwgPSBVc2VyPHsgd2l0aFB1YmxpY0tleTogZmFsc2UgfT47XG5jb25zdCB1c2VyU2VsZWN0b3IgPSB7XG4gIGlkOiB0cnVlLFxuICBmaXJzdG5hbWU6IHRydWUsXG4gIGxhc3RuYW1lOiB0cnVlLFxuICBsYW5nOiB0cnVlLFxuICBlbWFpbDogdHJ1ZSxcbiAgcGhvbmU6IHRydWUsXG4gIHJvbGU6IHRydWUsXG4gIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgbGFzdExvZ2luOiB0cnVlXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY2xhc3MgQWRtaW5TZWNyZWN5Q2xpZW50IGV4dGVuZHMgQmFzZUNsaWVudCB7XG4gIGFzeW5jIHVzZXJMaXN0KFxuICAgIHNlYXJjaD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VXNlckFkbWluUGFuZWxbXT4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IHVzZXJMaXN0IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgdXNlckxpc3Q6IFtcbiAgICAgICAge1xuICAgICAgICAgIHNlYXJjaFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVc2VyTGlzdFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICB1c2VyTGlzdDogdXNlclNlbGVjdG9yXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXJMaXN0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodXNlckxpc3QuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gdXNlckxpc3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiB1c2VyTGlzdC51c2VyTGlzdFxuICAgIH07XG4gIH1cblxuICBhc3luYyBjaGFuZ2VVc2VyUGxhbihcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICBwbGFuOiBQbGFuS2luZFxuICApOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxVc2VyQWRtaW5QYW5lbD4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGNoYW5nZVVzZXJQbGFuIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgY2hhbmdlVXNlclBsYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICBwbGFuXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIENoYW5nZVVzZXJQbGFuUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGNoYW5nZVVzZXJQbGFuOiB1c2VyU2VsZWN0b3JcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghY2hhbmdlVXNlclBsYW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VVc2VyUGxhbi5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBjaGFuZ2VVc2VyUGxhbjtcbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZVVzZXJQbGFuLmNoYW5nZVVzZXJQbGFuKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGNoYW5nZVVzZXJQbGFuLmNoYW5nZVVzZXJQbGFuXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VjcmVjeUFkbWluQ2xpZW50KFxuICBlbnY6IFNlY3JlY3lFbnYsXG4gIHNlc3Npb24/OiBib29sZWFuIHwgdW5kZWZpbmVkXG4pOiBBZG1pblNlY3JlY3lDbGllbnQgfCBudWxsIHtcbiAgY29uc3QgdXNlclNlc3Npb24gPSBzdG9yZUJ1ZGR5PHN0cmluZz4oYHNlY3JlY3kudXNlcl9zZXNzaW9uYCwgc2Vzc2lvbikuaW5pdChcbiAgICBcIlwiXG4gICk7XG4gIGNvbnN0IHVhU2Vzc2lvbiA9IHVzZXJTZXNzaW9uLmxvYWQoKTtcbiAgaWYgKHVhU2Vzc2lvbiA9PT0gXCJcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBBZG1pblNlY3JlY3lDbGllbnQodWFTZXNzaW9uLCBlbnYpO1xufVxuIl0sIm1hcHBp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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { KeyPair } from "../../crypto/index.js";
|
|
2
|
-
import type { GQLFile, InternalFile,
|
|
2
|
+
import type { GQLFile, InternalFile, FileMetadata } from "../types/index.js";
|
|
3
3
|
export declare function gqlFileToInternal(gql: GQLFile, keyPair: KeyPair): InternalFile;
|
|
4
|
-
export declare function internalFileToFile(internal: InternalFile):
|
|
5
|
-
export declare function gqlFileToExternal(gql: GQLFile, keyPair: KeyPair):
|
|
4
|
+
export declare function internalFileToFile(internal: InternalFile): FileMetadata;
|
|
5
|
+
export declare function gqlFileToExternal(gql: GQLFile, keyPair: KeyPair): FileMetadata;
|
|
@@ -1,39 +1,34 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
-
|
|
5
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
|
-
|
|
7
1
|
import { filesCache } from "../../cache.js";
|
|
8
2
|
import { decryptCryptoBox } from "../../crypto/index.js";
|
|
9
3
|
import { sodium } from "../../sodium.js";
|
|
10
4
|
export function gqlFileToInternal(gql, keyPair) {
|
|
11
|
-
|
|
5
|
+
if (!gql.access || !gql.access.sharedBy.keyPair) {
|
|
6
|
+
throw "File " + gql.id + " doesn't have access";
|
|
7
|
+
}
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
const file = {
|
|
10
|
+
id: gql.id,
|
|
11
|
+
md5: gql.md5,
|
|
12
|
+
md5Encrypted: gql.md5Encrypted,
|
|
14
13
|
createdAt: new Date(gql.createdAt),
|
|
15
14
|
size: BigInt(gql.size),
|
|
16
15
|
sizeBefore: BigInt(gql.sizeBefore),
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if ((_gql$user = gql.user) != null && _gql$user.userApp.keyPair) {
|
|
21
|
-
file.user = _objectSpread(_objectSpread({}, gql.user), {}, {
|
|
22
|
-
key: sodium.to_hex(decryptCryptoBox(sodium.from_hex(gql.user.key), gql.user.userApp.keyPair.pub, keyPair.privateKey))
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
|
|
16
|
+
key: sodium.to_hex(decryptCryptoBox(sodium.from_hex(gql.access.key), gql.access.sharedBy.keyPair.pub, keyPair.privateKey))
|
|
17
|
+
};
|
|
26
18
|
filesCache.set(file.id, file);
|
|
27
19
|
return file;
|
|
28
20
|
}
|
|
29
21
|
export function internalFileToFile(internal) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
22
|
+
return {
|
|
23
|
+
id: internal.id,
|
|
24
|
+
md5: internal.md5,
|
|
25
|
+
md5Encrypted: internal.md5Encrypted,
|
|
26
|
+
createdAt: internal.createdAt,
|
|
27
|
+
size: internal.size,
|
|
28
|
+
sizeBefore: internal.sizeBefore
|
|
29
|
+
};
|
|
35
30
|
}
|
|
36
31
|
export function gqlFileToExternal(gql, keyPair) {
|
|
37
32
|
return internalFileToFile(gqlFileToInternal(gql, keyPair));
|
|
38
33
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWxlc0NhY2hlIiwiZGVjcnlwdENyeXB0b0JveCIsInNvZGl1bSIsImdxbEZpbGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsInNoYXJlZEJ5IiwiaWQiLCJmaWxlIiwibWQ1IiwibWQ1RW5jcnlwdGVkIiwiY3JlYXRlZEF0IiwiRGF0ZSIsInNpemUiLCJCaWdJbnQiLCJzaXplQmVmb3JlIiwia2V5IiwidG9faGV4IiwiZnJvbV9oZXgiLCJwdWIiLCJwcml2YXRlS2V5Iiwic2V0IiwiaW50ZXJuYWxGaWxlVG9GaWxlIiwiaW50ZXJuYWwiLCJncWxGaWxlVG9FeHRlcm5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVzQ2FjaGUgfSBmcm9tIFwiLi4vLi4vY2FjaGUuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzb2RpdW0gfSBmcm9tIFwiLi4vLi4vc29kaXVtLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdRTEZpbGUsIEludGVybmFsRmlsZSwgRmlsZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBncWxGaWxlVG9JbnRlcm5hbChcbiAgZ3FsOiBHUUxGaWxlLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBJbnRlcm5hbEZpbGUge1xuICBpZiAoIWdxbC5hY2Nlc3MgfHwgIWdxbC5hY2Nlc3Muc2hhcmVkQnkua2V5UGFpcikge1xuICAgIHRocm93IGBGaWxlICR7Z3FsLmlkfSBkb2Vzbid0IGhhdmUgYWNjZXNzYDtcbiAgfVxuXG4gIGNvbnN0IGZpbGU6IEludGVybmFsRmlsZSA9IHtcbiAgICBpZDogZ3FsLmlkLFxuICAgIG1kNTogZ3FsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGdxbC5tZDVFbmNyeXB0ZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShncWwuY3JlYXRlZEF0IGFzIHN0cmluZyksXG4gICAgc2l6ZTogQmlnSW50KGdxbC5zaXplIGFzIHN0cmluZyksXG4gICAgc2l6ZUJlZm9yZTogQmlnSW50KGdxbC5zaXplQmVmb3JlIGFzIHN0cmluZyksXG4gICAga2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgZGVjcnlwdENyeXB0b0JveChcbiAgICAgICAgc29kaXVtLmZyb21faGV4KGdxbC5hY2Nlc3Mua2V5KSxcbiAgICAgICAgZ3FsLmFjY2Vzcy5zaGFyZWRCeS5rZXlQYWlyLnB1YixcbiAgICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgICApXG4gICAgKVxuICB9O1xuXG4gIGZpbGVzQ2FjaGUuc2V0KGZpbGUuaWQsIGZpbGUpO1xuICByZXR1cm4gZmlsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsRmlsZVRvRmlsZShpbnRlcm5hbDogSW50ZXJuYWxGaWxlKTogRmlsZU1ldGFkYXRhIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogaW50ZXJuYWwuaWQsXG4gICAgbWQ1OiBpbnRlcm5hbC5tZDUsXG4gICAgbWQ1RW5jcnlwdGVkOiBpbnRlcm5hbC5tZDVFbmNyeXB0ZWQsXG4gICAgY3JlYXRlZEF0OiBpbnRlcm5hbC5jcmVhdGVkQXQsXG4gICAgc2l6ZTogaW50ZXJuYWwuc2l6ZSxcbiAgICBzaXplQmVmb3JlOiBpbnRlcm5hbC5zaXplQmVmb3JlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncWxGaWxlVG9FeHRlcm5hbChcbiAgZ3FsOiBHUUxGaWxlLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBGaWxlTWV0YWRhdGEge1xuICByZXR1cm4gaW50ZXJuYWxGaWxlVG9GaWxlKGdxbEZpbGVUb0ludGVybmFsKGdxbCwga2V5UGFpcikpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxVQUFULFFBQTJCLGdCQUEzQjtBQUVBLFNBQVNDLGdCQUFULFFBQWlDLHVCQUFqQztBQUNBLFNBQVNDLE1BQVQsUUFBdUIsaUJBQXZCO0FBR0EsT0FBTyxTQUFTQyxpQkFBVCxDQUNMQyxHQURLLEVBRUxDLE9BRkssRUFHUztFQUNkLElBQUksQ0FBQ0QsR0FBRyxDQUFDRSxNQUFMLElBQWUsQ0FBQ0YsR0FBRyxDQUFDRSxNQUFKLENBQVdDLFFBQVgsQ0FBb0JGLE9BQXhDLEVBQWlEO0lBQy9DLGdCQUFjRCxHQUFHLENBQUNJLEVBQWxCO0VBQ0Q7O0VBRUQsTUFBTUMsSUFBa0IsR0FBRztJQUN6QkQsRUFBRSxFQUFFSixHQUFHLENBQUNJLEVBRGlCO0lBRXpCRSxHQUFHLEVBQUVOLEdBQUcsQ0FBQ00sR0FGZ0I7SUFHekJDLFlBQVksRUFBRVAsR0FBRyxDQUFDTyxZQUhPO0lBSXpCQyxTQUFTLEVBQUUsSUFBSUMsSUFBSixDQUFTVCxHQUFHLENBQUNRLFNBQWIsQ0FKYztJQUt6QkUsSUFBSSxFQUFFQyxNQUFNLENBQUNYLEdBQUcsQ0FBQ1UsSUFBTCxDQUxhO0lBTXpCRSxVQUFVLEVBQUVELE1BQU0sQ0FBQ1gsR0FBRyxDQUFDWSxVQUFMLENBTk87SUFPekJDLEdBQUcsRUFBRWYsTUFBTSxDQUFDZ0IsTUFBUCxDQUNIakIsZ0JBQWdCLENBQ2RDLE1BQU0sQ0FBQ2lCLFFBQVAsQ0FBZ0JmLEdBQUcsQ0FBQ0UsTUFBSixDQUFXVyxHQUEzQixDQURjLEVBRWRiLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxRQUFYLENBQW9CRixPQUFwQixDQUE0QmUsR0FGZCxFQUdkZixPQUFPLENBQUNnQixVQUhNLENBRGI7RUFQb0IsQ0FBM0I7RUFnQkFyQixVQUFVLENBQUNzQixHQUFYLENBQWViLElBQUksQ0FBQ0QsRUFBcEIsRUFBd0JDLElBQXhCO0VBQ0EsT0FBT0EsSUFBUDtBQUNEO0FBRUQsT0FBTyxTQUFTYyxrQkFBVCxDQUE0QkMsUUFBNUIsRUFBa0U7RUFDdkUsT0FBTztJQUNMaEIsRUFBRSxFQUFFZ0IsUUFBUSxDQUFDaEIsRUFEUjtJQUVMRSxHQUFHLEVBQUVjLFFBQVEsQ0FBQ2QsR0FGVDtJQUdMQyxZQUFZLEVBQUVhLFFBQVEsQ0FBQ2IsWUFIbEI7SUFJTEMsU0FBUyxFQUFFWSxRQUFRLENBQUNaLFNBSmY7SUFLTEUsSUFBSSxFQUFFVSxRQUFRLENBQUNWLElBTFY7SUFNTEUsVUFBVSxFQUFFUSxRQUFRLENBQUNSO0VBTmhCLENBQVA7QUFRRDtBQUVELE9BQU8sU0FBU1MsaUJBQVQsQ0FDTHJCLEdBREssRUFFTEMsT0FGSyxFQUdTO0VBQ2QsT0FBT2tCLGtCQUFrQixDQUFDcEIsaUJBQWlCLENBQUNDLEdBQUQsRUFBTUMsT0FBTixDQUFsQixDQUF6QjtBQUNEIn0=
|
|
@@ -6,26 +6,26 @@ export function convertInternalMailToExternal(data, keys) {
|
|
|
6
6
|
data.type = "draft";
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
const mI = data.type === "draft" ? data.mailIntegrityDraft : data.mailIntegrity;
|
|
10
10
|
|
|
11
11
|
if (!mI) {
|
|
12
12
|
return null;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
body
|
|
20
|
-
subject
|
|
15
|
+
const pubKey = data.type === "received" ? data.sender.publicKey : keys.publicKey;
|
|
16
|
+
const body = sodium.to_string(decryptCryptoBox(sodium.from_hex(data.body), pubKey, keys.privateKey));
|
|
17
|
+
const subject = sodium.to_string(decryptCryptoBox(sodium.from_hex(data.subject), pubKey, keys.privateKey));
|
|
18
|
+
const hash = sodium.crypto_generichash(sodium.crypto_generichash_BYTES, JSON.stringify({
|
|
19
|
+
body,
|
|
20
|
+
subject
|
|
21
21
|
}), mI.hashKey, "hex");
|
|
22
22
|
return {
|
|
23
23
|
type: data.type,
|
|
24
24
|
id: data.id,
|
|
25
25
|
mailIntegrityId: mI.id,
|
|
26
26
|
replyTo: (_mI$replyTo = mI.replyTo) == null ? void 0 : _mI$replyTo.id,
|
|
27
|
-
body
|
|
28
|
-
subject
|
|
27
|
+
body,
|
|
28
|
+
subject,
|
|
29
29
|
createdAt: new Date(data.createdAt),
|
|
30
30
|
deletedAt: data.deletedAt ? new Date(data.deletedAt) : null,
|
|
31
31
|
openedAt: data.openedAt ? new Date(data.openedAt) : null,
|
|
@@ -33,14 +33,14 @@ export function convertInternalMailToExternal(data, keys) {
|
|
|
33
33
|
temporaryRecipients: mI.temporaryRecipients,
|
|
34
34
|
recipients: data.type === "draft" ? mI.recipients : data.recipients,
|
|
35
35
|
sender: data.sender,
|
|
36
|
-
files: data.files.map(
|
|
37
|
-
|
|
36
|
+
files: data.files.map(f => {
|
|
37
|
+
const name = sodium.to_string(decryptCryptoBox(sodium.from_hex(f.filename), pubKey, keys.privateKey));
|
|
38
38
|
return {
|
|
39
39
|
id: f.file.id,
|
|
40
|
-
name
|
|
40
|
+
name,
|
|
41
41
|
key: f.fileKey
|
|
42
42
|
};
|
|
43
43
|
})
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzb2RpdW0iLCJkZWNyeXB0Q3J5cHRvQm94IiwiY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwiLCJkYXRhIiwia2V5cyIsIm1haWxJbnRlZ3JpdHlEcmFmdCIsInR5cGUiLCJtSSIsIm1haWxJbnRlZ3JpdHkiLCJwdWJLZXkiLCJzZW5kZXIiLCJwdWJsaWNLZXkiLCJib2R5IiwidG9fc3RyaW5nIiwiZnJvbV9oZXgiLCJwcml2YXRlS2V5Iiwic3ViamVjdCIsImhhc2giLCJjcnlwdG9fZ2VuZXJpY2hhc2giLCJjcnlwdG9fZ2VuZXJpY2hhc2hfQllURVMiLCJKU09OIiwic3RyaW5naWZ5IiwiaGFzaEtleSIsImlkIiwibWFpbEludGVncml0eUlkIiwicmVwbHlUbyIsImNyZWF0ZWRBdCIsIkRhdGUiLCJkZWxldGVkQXQiLCJvcGVuZWRBdCIsImlzQWx0ZXJlZCIsInRlbXBvcmFyeVJlY2lwaWVudHMiLCJyZWNpcGllbnRzIiwiZmlsZXMiLCJtYXAiLCJmIiwibmFtZSIsImZpbGVuYW1lIiwiZmlsZSIsImtleSIsImZpbGVLZXkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L2NvbnZlcnQvbWFpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEtleVBhaXIgfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTWFpbCwgTWFpbCB9IGZyb20gXCIuLi90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgc29kaXVtLCBkZWNyeXB0Q3J5cHRvQm94IH0gZnJvbSBcIi4uLy4uL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SW50ZXJuYWxNYWlsVG9FeHRlcm5hbChcbiAgZGF0YTogSW50ZXJuYWxNYWlsLFxuICBrZXlzOiBLZXlQYWlyXG4pOiBNYWlsIHwgbnVsbCB7XG4gIGlmIChkYXRhLm1haWxJbnRlZ3JpdHlEcmFmdCkge1xuICAgIGRhdGEudHlwZSA9IFwiZHJhZnRcIjtcbiAgfVxuXG4gIGNvbnN0IG1JID1cbiAgICBkYXRhLnR5cGUgPT09IFwiZHJhZnRcIiA/IGRhdGEubWFpbEludGVncml0eURyYWZ0IDogZGF0YS5tYWlsSW50ZWdyaXR5O1xuXG4gIGlmICghbUkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHB1YktleSA9XG4gICAgZGF0YS50eXBlID09PSBcInJlY2VpdmVkXCIgPyBkYXRhLnNlbmRlci5wdWJsaWNLZXkgOiBrZXlzLnB1YmxpY0tleTtcblxuICBjb25zdCBib2R5ID0gc29kaXVtLnRvX3N0cmluZyhcbiAgICBkZWNyeXB0Q3J5cHRvQm94KHNvZGl1bS5mcm9tX2hleChkYXRhLmJvZHkpLCBwdWJLZXksIGtleXMucHJpdmF0ZUtleSlcbiAgKTtcblxuICBjb25zdCBzdWJqZWN0ID0gc29kaXVtLnRvX3N0cmluZyhcbiAgICBkZWNyeXB0Q3J5cHRvQm94KHNvZGl1bS5mcm9tX2hleChkYXRhLnN1YmplY3QpLCBwdWJLZXksIGtleXMucHJpdmF0ZUtleSlcbiAgKTtcblxuICBjb25zdCBoYXNoID0gc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaChcbiAgICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoX0JZVEVTLFxuICAgIEpTT04uc3RyaW5naWZ5KHsgYm9keSwgc3ViamVjdCB9KSxcbiAgICBtSS5oYXNoS2V5LFxuICAgIFwiaGV4XCJcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICBpZDogZGF0YS5pZCxcbiAgICBtYWlsSW50ZWdyaXR5SWQ6IG1JLmlkLFxuICAgIHJlcGx5VG86IG1JLnJlcGx5VG8/LmlkLFxuICAgIGJvZHksXG4gICAgc3ViamVjdCxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKGRhdGEuY3JlYXRlZEF0KSxcbiAgICBkZWxldGVkQXQ6IGRhdGEuZGVsZXRlZEF0ID8gbmV3IERhdGUoZGF0YS5kZWxldGVkQXQpIDogbnVsbCxcbiAgICBvcGVuZWRBdDogZGF0YS5vcGVuZWRBdCA/IG5ldyBEYXRlKGRhdGEub3BlbmVkQXQpIDogbnVsbCxcbiAgICBpc0FsdGVyZWQ6IGhhc2ggIT09IG1JLmhhc2gsXG4gICAgdGVtcG9yYXJ5UmVjaXBpZW50czogbUkudGVtcG9yYXJ5UmVjaXBpZW50cyxcbiAgICByZWNpcGllbnRzOiBkYXRhLnR5cGUgPT09IFwiZHJhZnRcIiA/IG1JLnJlY2lwaWVudHMgOiBkYXRhLnJlY2lwaWVudHMsXG4gICAgc2VuZGVyOiBkYXRhLnNlbmRlcixcbiAgICBmaWxlczogZGF0YS5maWxlcy5tYXAoZiA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gc29kaXVtLnRvX3N0cmluZyhcbiAgICAgICAgZGVjcnlwdENyeXB0b0JveChzb2RpdW0uZnJvbV9oZXgoZi5maWxlbmFtZSksIHB1YktleSwga2V5cy5wcml2YXRlS2V5KVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGYuZmlsZS5pZCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAga2V5OiBmLmZpbGVLZXlcbiAgICAgIH07XG4gICAgfSlcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsTUFBVCxFQUFpQkMsZ0JBQWpCLFFBQXlDLGdCQUF6QztBQUVBLE9BQU8sU0FBU0MsNkJBQVQsQ0FDTEMsSUFESyxFQUVMQyxJQUZLLEVBR1E7RUFBQTs7RUFDYixJQUFJRCxJQUFJLENBQUNFLGtCQUFULEVBQTZCO0lBQzNCRixJQUFJLENBQUNHLElBQUwsR0FBWSxPQUFaO0VBQ0Q7O0VBRUQsTUFBTUMsRUFBRSxHQUNOSixJQUFJLENBQUNHLElBQUwsS0FBYyxPQUFkLEdBQXdCSCxJQUFJLENBQUNFLGtCQUE3QixHQUFrREYsSUFBSSxDQUFDSyxhQUR6RDs7RUFHQSxJQUFJLENBQUNELEVBQUwsRUFBUztJQUNQLE9BQU8sSUFBUDtFQUNEOztFQUVELE1BQU1FLE1BQU0sR0FDVk4sSUFBSSxDQUFDRyxJQUFMLEtBQWMsVUFBZCxHQUEyQkgsSUFB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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KeyPair } from "../../crypto/index.js";
|
|
2
|
+
import type { Node } from "../types/index.js";
|
|
3
|
+
import type { GQLNode, InternalNode, GQLNodeFull, InternalNodeFull, NodeFull } from "../types/index.js";
|
|
4
|
+
export declare function gqlNodeToInternal(gql: GQLNode, keyPair: KeyPair): Promise<InternalNode>;
|
|
5
|
+
export declare function gqlNodeFullToInternalFull(gql: GQLNodeFull, keyPair: KeyPair): Promise<InternalNodeFull>;
|
|
6
|
+
export declare function internalNodeToNode(internal: InternalNode): Node;
|
|
7
|
+
export declare function internalNodeFullToNodeFull(internal: InternalNodeFull): NodeFull;
|
|
8
|
+
export declare function gqlNodeToExternalNodeFull(gql: GQLNodeFull, keyPair: KeyPair): Promise<NodeFull>;
|
|
9
|
+
export declare function gqlNodeToExternal(gql: GQLNode, keyPair: KeyPair): Promise<Node>;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
|
|
3
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
+
|
|
5
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
|
+
|
|
7
|
+
import { sodium } from "../../sodium.js";
|
|
8
|
+
import { decryptCryptoBox } from "../../crypto/index.js";
|
|
9
|
+
import { nodesCache } from "../../cache.js";
|
|
10
|
+
import { decryptSecretstream } from "../../crypto/file.js";
|
|
11
|
+
import { gqlFileToInternal, internalFileToFile } from "./file.js";
|
|
12
|
+
export async function gqlNodeToInternal(gql, keyPair) {
|
|
13
|
+
if (!gql.access) {
|
|
14
|
+
throw "Can't access Node " + gql.id;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const internal = {
|
|
18
|
+
id: gql.id,
|
|
19
|
+
type: gql.type,
|
|
20
|
+
access: gql.access,
|
|
21
|
+
name: gql.name,
|
|
22
|
+
isFavorite: gql.isFavorite,
|
|
23
|
+
breadcrumb: gql.breadcrumb,
|
|
24
|
+
createdBy: gql.createdBy.user,
|
|
25
|
+
createdAt: new Date(gql.createdAt),
|
|
26
|
+
updatedAt: new Date(gql.updatedAt),
|
|
27
|
+
deletedAt: gql.deletedAt ? new Date(gql.deletedAt) : null,
|
|
28
|
+
users: gql.accesses.map(u => [u.userApp.user, u.rights]),
|
|
29
|
+
history: gql.history.map(f => gqlFileToInternal(f, keyPair))
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
if (gql.current) {
|
|
33
|
+
internal.current = gqlFileToInternal(gql.current, keyPair);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
internal.access = _objectSpread({}, gql.access);
|
|
37
|
+
|
|
38
|
+
if (gql.access.nameKey) {
|
|
39
|
+
if (!gql.access.sharedBy.keyPair) {
|
|
40
|
+
throw new Error("Can't find keyPair for access");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const key = decryptCryptoBox(sodium.from_hex(gql.access.nameKey), gql.createdBy.user.publicKey, keyPair.privateKey);
|
|
44
|
+
internal.name = sodium.to_string(await decryptSecretstream(key, sodium.from_hex(internal.name)));
|
|
45
|
+
internal.access.nameKey = sodium.to_hex(key);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
for (const b of internal.breadcrumb) {
|
|
49
|
+
if (!b.nameKey) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const key = decryptCryptoBox(sodium.from_hex(b.nameKey), b.pubKey, keyPair.privateKey);
|
|
54
|
+
b.nameKey = sodium.to_hex(key);
|
|
55
|
+
b.name = sodium.to_string(await decryptSecretstream(key, sodium.from_hex(b.name)));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
nodesCache.set(internal.id, internal);
|
|
59
|
+
return internal;
|
|
60
|
+
}
|
|
61
|
+
export async function gqlNodeFullToInternalFull(gql, keyPair) {
|
|
62
|
+
const f = await gqlNodeToInternal(gql, keyPair);
|
|
63
|
+
return _objectSpread(_objectSpread({}, f), {}, {
|
|
64
|
+
parent: gql.parent ? await gqlNodeToInternal(gql.parent, keyPair) : null,
|
|
65
|
+
children: await Promise.all(gql.children.map(s => gqlNodeToInternal(s, keyPair)))
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function internalNodeToNode(internal) {
|
|
69
|
+
var _node$access;
|
|
70
|
+
|
|
71
|
+
const node = _objectSpread(_objectSpread({}, internal), {}, {
|
|
72
|
+
access: internal.access ? _objectSpread({}, internal.access) : undefined,
|
|
73
|
+
history: internal.history.map(f => internalFileToFile(f))
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
if (internal.current) {
|
|
77
|
+
node.current = internalFileToFile(internal.current);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
for (const b of node.breadcrumb) {
|
|
81
|
+
// @ts-ignore
|
|
82
|
+
delete b.pubKey;
|
|
83
|
+
} // @ts-ignore
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
(_node$access = node.access) == null ? true : delete _node$access.nameKey;
|
|
87
|
+
return node;
|
|
88
|
+
}
|
|
89
|
+
export function internalNodeFullToNodeFull(internal) {
|
|
90
|
+
return _objectSpread(_objectSpread({}, internalNodeToNode(internal)), {}, {
|
|
91
|
+
parent: internal.parent ? internalNodeToNode(internal.parent) : null,
|
|
92
|
+
children: internal.children.map(internalNodeToNode)
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
export async function gqlNodeToExternalNodeFull(gql, keyPair) {
|
|
96
|
+
return internalNodeFullToNodeFull(await gqlNodeFullToInternalFull(gql, keyPair));
|
|
97
|
+
}
|
|
98
|
+
export async function gqlNodeToExternal(gql, keyPair) {
|
|
99
|
+
return internalNodeToNode(await gqlNodeToInternal(gql, keyPair));
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzb2RpdW0iLCJkZWNyeXB0Q3J5cHRvQm94Iiwibm9kZXNDYWNoZSIsImRlY3J5cHRTZWNyZXRzdHJlYW0iLCJncWxGaWxlVG9JbnRlcm5hbCIsImludGVybmFsRmlsZVRvRmlsZSIsImdxbE5vZGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsImlkIiwiaW50ZXJuYWwiLCJ0eXBlIiwibmFtZSIsImlzRmF2b3JpdGUiLCJicmVhZGNydW1iIiwiY3JlYXRlZEJ5IiwidXNlciIsImNyZWF0ZWRBdCIsIkRhdGUiLCJ1cGRhdGVkQXQiLCJkZWxldGVkQXQiLCJ1c2VycyIsImFjY2Vzc2VzIiwibWFwIiwidSIsInVzZXJBcHAiLCJyaWdodHMiLCJoaXN0b3J5IiwiZiIsImN1cnJlbnQiLCJuYW1lS2V5Iiwic2hhcmVkQnkiLCJFcnJvciIsImtleSIsImZyb21faGV4IiwicHVibGljS2V5IiwicHJpdmF0ZUtleSIsInRvX3N0cmluZyIsInRvX2hleCIsImIiLCJwdWJLZXkiLCJzZXQiLCJncWxOb2RlRnVsbFRvSW50ZXJuYWxGdWxsIiwicGFyZW50IiwiY2hpbGRyZW4iLCJQcm9taXNlIiwiYWxsIiwicyIsImludGVybmFsTm9kZVRvTm9kZSIsIm5vZGUiLCJ1bmRlZmluZWQiLCJpbnRlcm5hbE5vZGVGdWxsVG9Ob2RlRnVsbCIsImdxbE5vZGVUb0V4dGVybmFsTm9kZUZ1bGwiLCJncWxOb2RlVG9FeHRlcm5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC9ub2RlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNvZGl1bSB9IGZyb20gXCIuLi8uLi9zb2RpdW0uanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IE5vZGUgfSBmcm9tIFwiLi4vdHlwZXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgR1FMTm9kZSxcbiAgSW50ZXJuYWxOb2RlLFxuICBHUUxOb2RlRnVsbCxcbiAgSW50ZXJuYWxOb2RlRnVsbCxcbiAgTm9kZUZ1bGxcbn0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBub2Rlc0NhY2hlIH0gZnJvbSBcIi4uLy4uL2NhY2hlLmpzXCI7XG5pbXBvcnQgeyBkZWNyeXB0U2VjcmV0c3RyZWFtIH0gZnJvbSBcIi4uLy4uL2NyeXB0by9maWxlLmpzXCI7XG5pbXBvcnQgeyBncWxGaWxlVG9JbnRlcm5hbCwgaW50ZXJuYWxGaWxlVG9GaWxlIH0gZnJvbSBcIi4vZmlsZS5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3FsTm9kZVRvSW50ZXJuYWwoXG4gIGdxbDogR1FMTm9kZSxcbiAga2V5UGFpcjogS2V5UGFpclxuKTogUHJvbWlzZTxJbnRlcm5hbE5vZGU+IHtcbiAgaWYgKCFncWwuYWNjZXNzKSB7XG4gICAgdGhyb3cgYENhbid0IGFjY2VzcyBOb2RlICR7Z3FsLmlkfWA7XG4gIH1cblxuICBjb25zdCBpbnRlcm5hbDogSW50ZXJuYWxOb2RlID0ge1xuICAgIGlkOiBncWwuaWQsXG4gICAgdHlwZTogZ3FsLnR5cGUsXG4gICAgYWNjZXNzOiBncWwuYWNjZXNzLFxuICAgIG5hbWU6IGdxbC5uYW1lLFxuICAgIGlzRmF2b3JpdGU6IGdxbC5pc0Zhdm9yaXRlLFxuICAgIGJyZWFkY3J1bWI6IGdxbC5icmVhZGNydW1iLFxuICAgIGNyZWF0ZWRCeTogZ3FsLmNyZWF0ZWRCeS51c2VyLFxuICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoZ3FsLmNyZWF0ZWRBdCBhcyBzdHJpbmcpLFxuICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoZ3FsLnVwZGF0ZWRBdCBhcyBzdHJpbmcpLFxuICAgIGRlbGV0ZWRBdDogZ3FsLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKGdxbC5kZWxldGVkQXQgYXMgc3RyaW5nKSA6IG51bGwsXG4gICAgdXNlcnM6IGdxbC5hY2Nlc3Nlcy5tYXAodSA9PiBbdS51c2VyQXBwLnVzZXIsIHUucmlnaHRzXSksXG4gICAgaGlzdG9yeTogZ3FsLmhpc3RvcnkubWFwKGYgPT4gZ3FsRmlsZVRvSW50ZXJuYWwoZiwga2V5UGFpcikpXG4gIH07XG5cbiAgaWYgKGdxbC5jdXJyZW50KSB7XG4gICAgaW50ZXJuYWwuY3VycmVudCA9IGdxbEZpbGVUb0ludGVybmFsKGdxbC5jdXJyZW50LCBrZXlQYWlyKTtcbiAgfVxuXG4gIGludGVybmFsLmFjY2VzcyA9IHsgLi4uZ3FsLmFjY2VzcyB9O1xuXG4gIGlmIChncWwuYWNjZXNzLm5hbWVLZXkpIHtcbiAgICBpZiAoIWdxbC5hY2Nlc3Muc2hhcmVkQnkua2V5UGFpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIGtleVBhaXIgZm9yIGFjY2Vzc2ApO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBkZWNyeXB0Q3J5cHRvQm94KFxuICAgICAgc29kaXVtLmZyb21faGV4KGdxbC5hY2Nlc3MubmFtZUtleSksXG4gICAgICBncWwuY3JlYXRlZEJ5LnVzZXIucHVibGljS2V5LFxuICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgKTtcbiAgICBpbnRlcm5hbC5uYW1lID0gc29kaXVtLnRvX3N0cmluZyhcbiAgICAgIGF3YWl0IGRlY3J5cHRTZWNyZXRzdHJlYW0oa2V5LCBzb2RpdW0uZnJvbV9oZXgoaW50ZXJuYWwubmFtZSkpXG4gICAgKTtcblxuICAgIGludGVybmFsLmFjY2Vzcy5uYW1lS2V5ID0gc29kaXVtLnRvX2hleChrZXkpO1xuICB9XG5cbiAgZm9yIChjb25zdCBiIG9mIGludGVybmFsLmJyZWFkY3J1bWIpIHtcbiAgICBpZiAoIWIubmFtZUtleSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IGRlY3J5cHRDcnlwdG9Cb3goXG4gICAgICBzb2RpdW0uZnJvbV9oZXgoYi5uYW1lS2V5KSxcbiAgICAgIGIucHViS2V5LFxuICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgKTtcbiAgICBiLm5hbWVLZXkgPSBzb2RpdW0udG9faGV4KGtleSk7XG5cbiAgICBiLm5hbWUgPSBzb2RpdW0udG9fc3RyaW5nKFxuICAgICAgYXdhaXQgZGVjcnlwdFNlY3JldHN0cmVhbShrZXksIHNvZGl1bS5mcm9tX2hleChiLm5hbWUpKVxuICAgICk7XG4gIH1cblxuICBub2Rlc0NhY2hlLnNldChpbnRlcm5hbC5pZCwgaW50ZXJuYWwpO1xuICByZXR1cm4gaW50ZXJuYWw7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBncWxOb2RlRnVsbFRvSW50ZXJuYWxGdWxsKFxuICBncWw6IEdRTE5vZGVGdWxsLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBQcm9taXNlPEludGVybmFsTm9kZUZ1bGw+IHtcbiAgY29uc3QgZiA9IGF3YWl0IGdxbE5vZGVUb0ludGVybmFsKGdxbCwga2V5UGFpcik7XG4gIHJldHVybiB7XG4gICAgLi4uZixcbiAgICBwYXJlbnQ6IGdxbC5wYXJlbnQgPyBhd2FpdCBncWxOb2RlVG9JbnRlcm5hbChncWwucGFyZW50LCBrZXlQYWlyKSA6IG51bGwsXG4gICAgY2hpbGRyZW46IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZ3FsLmNoaWxkcmVuLm1hcChzID0+IGdxbE5vZGVUb0ludGVybmFsKHMsIGtleVBhaXIpKVxuICAgIClcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsTm9kZVRvTm9kZShpbnRlcm5hbDogSW50ZXJuYWxOb2RlKTogTm9kZSB7XG4gIGNvbnN0IG5vZGU6IE5vZGUgPSB7XG4gICAgLi4uaW50ZXJuYWwsXG4gICAgYWNjZXNzOiBpbnRlcm5hbC5hY2Nlc3MgPyB7IC4uLmludGVybmFsLmFjY2VzcyB9IDogdW5kZWZpbmVkLFxuICAgIGhpc3Rvcnk6IGludGVybmFsLmhpc3RvcnkubWFwKGYgPT4gaW50ZXJuYWxGaWxlVG9GaWxlKGYpKVxuICB9O1xuXG4gIGlmIChpbnRlcm5hbC5jdXJyZW50KSB7XG4gICAgbm9kZS5jdXJyZW50ID0gaW50ZXJuYWxGaWxlVG9GaWxlKGludGVybmFsLmN1cnJlbnQpO1xuICB9XG5cbiAgZm9yIChjb25zdCBiIG9mIG5vZGUuYnJlYWRjcnVtYikge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBkZWxldGUgYi5wdWJLZXk7XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICBkZWxldGUgbm9kZS5hY2Nlc3M/Lm5hbWVLZXk7XG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuYWxOb2RlRnVsbFRvTm9kZUZ1bGwoXG4gIGludGVybmFsOiBJbnRlcm5hbE5vZGVGdWxsXG4pOiBOb2RlRnVsbCB7XG4gIHJldHVybiB7XG4gICAgLi4uaW50ZXJuYWxOb2RlVG9Ob2RlKGludGVybmFsKSxcbiAgICBwYXJlbnQ6IGludGVybmFsLnBhcmVudCA/IGludGVybmFsTm9kZVRvTm9kZShpbnRlcm5hbC5wYXJlbnQpIDogbnVsbCxcbiAgICBjaGlsZHJlbjogaW50ZXJuYWwuY2hpbGRyZW4ubWFwKGludGVybmFsTm9kZVRvTm9kZSlcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdxbE5vZGVUb0V4dGVybmFsTm9kZUZ1bGwoXG4gIGdxbDogR1FMTm9kZUZ1bGwsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IFByb21pc2U8Tm9kZUZ1bGw+IHtcbiAgcmV0dXJuIGludGVybmFsTm9kZUZ1bGxUb05vZGVGdWxsKFxuICAgIGF3YWl0IGdxbE5vZGVGdWxsVG9JbnRlcm5hbEZ1bGwoZ3FsLCBrZXlQYWlyKVxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3FsTm9kZVRvRXh0ZXJuYWwoXG4gIGdxbDogR1FMTm9kZSxcbiAga2V5UGFpcjogS2V5UGFpclxuKTogUHJvbWlzZTxOb2RlPiB7XG4gIHJldHVybiBpbnRlcm5hbE5vZGVUb05vZGUoYXdhaXQgZ3Fs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
|