@keeper-security/keeper-sdk-javascript 0.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.
Files changed (173) hide show
  1. package/dist/auth/ConsoleAuthUI.d.ts +10 -0
  2. package/dist/auth/ConsoleAuthUI.js +152 -0
  3. package/dist/auth/ConsoleAuthUI.js.map +1 -0
  4. package/dist/auth/ConsoleLogin.d.ts +8 -0
  5. package/dist/auth/ConsoleLogin.js +266 -0
  6. package/dist/auth/ConsoleLogin.js.map +1 -0
  7. package/dist/auth/SessionManager.d.ts +66 -0
  8. package/dist/auth/SessionManager.js +211 -0
  9. package/dist/auth/SessionManager.js.map +1 -0
  10. package/dist/index.d.ts +17 -0
  11. package/dist/index.js +61 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/records/RecordOperations.d.ts +79 -0
  14. package/dist/records/RecordOperations.js +346 -0
  15. package/dist/records/RecordOperations.js.map +1 -0
  16. package/dist/records/RecordUtils.d.ts +36 -0
  17. package/dist/records/RecordUtils.js +224 -0
  18. package/dist/records/RecordUtils.js.map +1 -0
  19. package/dist/sharing/Sharing.d.ts +27 -0
  20. package/dist/sharing/Sharing.js +125 -0
  21. package/dist/sharing/Sharing.js.map +1 -0
  22. package/dist/src/auth/ConsoleAuthUI.d.ts +10 -0
  23. package/dist/src/auth/ConsoleAuthUI.js +161 -0
  24. package/dist/src/auth/ConsoleAuthUI.js.map +1 -0
  25. package/dist/src/auth/ConsoleLogin.d.ts +8 -0
  26. package/dist/src/auth/ConsoleLogin.js +311 -0
  27. package/dist/src/auth/ConsoleLogin.js.map +1 -0
  28. package/dist/src/auth/SessionManager.d.ts +67 -0
  29. package/dist/src/auth/SessionManager.js +212 -0
  30. package/dist/src/auth/SessionManager.js.map +1 -0
  31. package/dist/src/folders/FolderManager.d.ts +57 -0
  32. package/dist/src/folders/FolderManager.js +108 -0
  33. package/dist/src/folders/FolderManager.js.map +1 -0
  34. package/dist/src/folders/addFolder.d.ts +32 -0
  35. package/dist/src/folders/addFolder.js +207 -0
  36. package/dist/src/folders/addFolder.js.map +1 -0
  37. package/dist/src/folders/changeDirectory.d.ts +19 -0
  38. package/dist/src/folders/changeDirectory.js +171 -0
  39. package/dist/src/folders/changeDirectory.js.map +1 -0
  40. package/dist/src/folders/deleteFolder.d.ts +17 -0
  41. package/dist/src/folders/deleteFolder.js +237 -0
  42. package/dist/src/folders/deleteFolder.js.map +1 -0
  43. package/dist/src/folders/folderHelpers.d.ts +48 -0
  44. package/dist/src/folders/folderHelpers.js +100 -0
  45. package/dist/src/folders/folderHelpers.js.map +1 -0
  46. package/dist/src/folders/folderTree.d.ts +29 -0
  47. package/dist/src/folders/folderTree.js +250 -0
  48. package/dist/src/folders/folderTree.js.map +1 -0
  49. package/dist/src/folders/getFolder.d.ts +56 -0
  50. package/dist/src/folders/getFolder.js +143 -0
  51. package/dist/src/folders/getFolder.js.map +1 -0
  52. package/dist/src/folders/listFolder.d.ts +48 -0
  53. package/dist/src/folders/listFolder.js +276 -0
  54. package/dist/src/folders/listFolder.js.map +1 -0
  55. package/dist/src/folders/updateFolder.d.ts +31 -0
  56. package/dist/src/folders/updateFolder.js +137 -0
  57. package/dist/src/folders/updateFolder.js.map +1 -0
  58. package/dist/src/index.d.ts +49 -0
  59. package/dist/src/index.js +151 -0
  60. package/dist/src/index.js.map +1 -0
  61. package/dist/src/records/RecordOperations.d.ts +80 -0
  62. package/dist/src/records/RecordOperations.js +356 -0
  63. package/dist/src/records/RecordOperations.js.map +1 -0
  64. package/dist/src/records/RecordUtils.d.ts +37 -0
  65. package/dist/src/records/RecordUtils.js +263 -0
  66. package/dist/src/records/RecordUtils.js.map +1 -0
  67. package/dist/src/records/Totp.d.ts +14 -0
  68. package/dist/src/records/Totp.js +111 -0
  69. package/dist/src/records/Totp.js.map +1 -0
  70. package/dist/src/sharedFolders/SharedFolderManager.d.ts +20 -0
  71. package/dist/src/sharedFolders/SharedFolderManager.js +33 -0
  72. package/dist/src/sharedFolders/SharedFolderManager.js.map +1 -0
  73. package/dist/src/sharedFolders/listSharedFolders.d.ts +29 -0
  74. package/dist/src/sharedFolders/listSharedFolders.js +127 -0
  75. package/dist/src/sharedFolders/listSharedFolders.js.map +1 -0
  76. package/dist/src/sharedFolders/shareFolder.d.ts +36 -0
  77. package/dist/src/sharedFolders/shareFolder.js +352 -0
  78. package/dist/src/sharedFolders/shareFolder.js.map +1 -0
  79. package/dist/src/sharing/Sharing.d.ts +50 -0
  80. package/dist/src/sharing/Sharing.js +195 -0
  81. package/dist/src/sharing/Sharing.js.map +1 -0
  82. package/dist/src/storage/InMemoryStorage.d.ts +24 -0
  83. package/dist/src/storage/InMemoryStorage.js +139 -0
  84. package/dist/src/storage/InMemoryStorage.js.map +1 -0
  85. package/dist/src/teams/TeamManager.d.ts +17 -0
  86. package/dist/src/teams/TeamManager.js +38 -0
  87. package/dist/src/teams/TeamManager.js.map +1 -0
  88. package/dist/src/teams/enterpriseData.d.ts +106 -0
  89. package/dist/src/teams/enterpriseData.js +319 -0
  90. package/dist/src/teams/enterpriseData.js.map +1 -0
  91. package/dist/src/teams/listTeams.d.ts +42 -0
  92. package/dist/src/teams/listTeams.js +308 -0
  93. package/dist/src/teams/listTeams.js.map +1 -0
  94. package/dist/src/teams/viewTeam.d.ts +35 -0
  95. package/dist/src/teams/viewTeam.js +177 -0
  96. package/dist/src/teams/viewTeam.js.map +1 -0
  97. package/dist/src/utils/Logger.d.ts +28 -0
  98. package/dist/src/utils/Logger.js +62 -0
  99. package/dist/src/utils/Logger.js.map +1 -0
  100. package/dist/src/utils/constants.d.ts +50 -0
  101. package/dist/src/utils/constants.js +64 -0
  102. package/dist/src/utils/constants.js.map +1 -0
  103. package/dist/src/utils/errors.d.ts +10 -0
  104. package/dist/src/utils/errors.js +117 -0
  105. package/dist/src/utils/errors.js.map +1 -0
  106. package/dist/src/utils/guards.d.ts +7 -0
  107. package/dist/src/utils/guards.js +29 -0
  108. package/dist/src/utils/guards.js.map +1 -0
  109. package/dist/src/utils/index.d.ts +7 -0
  110. package/dist/src/utils/index.js +39 -0
  111. package/dist/src/utils/index.js.map +1 -0
  112. package/dist/src/utils/patterns.d.ts +9 -0
  113. package/dist/src/utils/patterns.js +20 -0
  114. package/dist/src/utils/patterns.js.map +1 -0
  115. package/dist/src/utils/types.d.ts +12 -0
  116. package/dist/src/utils/types.js +3 -0
  117. package/dist/src/utils/types.js.map +1 -0
  118. package/dist/src/vault/KeeperVault.d.ts +116 -0
  119. package/dist/src/vault/KeeperVault.js +443 -0
  120. package/dist/src/vault/KeeperVault.js.map +1 -0
  121. package/dist/storage/InMemoryStorage.d.ts +24 -0
  122. package/dist/storage/InMemoryStorage.js +132 -0
  123. package/dist/storage/InMemoryStorage.js.map +1 -0
  124. package/dist/utils/Logger.d.ts +28 -0
  125. package/dist/utils/Logger.js +62 -0
  126. package/dist/utils/Logger.js.map +1 -0
  127. package/dist/utils/constants.d.ts +26 -0
  128. package/dist/utils/constants.js +37 -0
  129. package/dist/utils/constants.js.map +1 -0
  130. package/dist/utils/errors.d.ts +10 -0
  131. package/dist/utils/errors.js +117 -0
  132. package/dist/utils/errors.js.map +1 -0
  133. package/dist/utils/index.d.ts +4 -0
  134. package/dist/utils/index.js +22 -0
  135. package/dist/utils/index.js.map +1 -0
  136. package/dist/vault/KeeperVault.d.ts +72 -0
  137. package/dist/vault/KeeperVault.js +338 -0
  138. package/dist/vault/KeeperVault.js.map +1 -0
  139. package/package.json +32 -0
  140. package/src/auth/ConsoleAuthUI.ts +169 -0
  141. package/src/auth/ConsoleLogin.ts +351 -0
  142. package/src/auth/SessionManager.ts +293 -0
  143. package/src/folders/FolderManager.ts +174 -0
  144. package/src/folders/addFolder.ts +294 -0
  145. package/src/folders/changeDirectory.ts +217 -0
  146. package/src/folders/deleteFolder.ts +293 -0
  147. package/src/folders/folderHelpers.ts +99 -0
  148. package/src/folders/folderTree.ts +321 -0
  149. package/src/folders/getFolder.ts +234 -0
  150. package/src/folders/listFolder.ts +358 -0
  151. package/src/folders/updateFolder.ts +210 -0
  152. package/src/index.ts +242 -0
  153. package/src/records/RecordOperations.ts +549 -0
  154. package/src/records/RecordUtils.ts +282 -0
  155. package/src/records/Totp.ts +119 -0
  156. package/src/sharedFolders/SharedFolderManager.ts +57 -0
  157. package/src/sharedFolders/listSharedFolders.ts +173 -0
  158. package/src/sharedFolders/shareFolder.ts +457 -0
  159. package/src/sharing/Sharing.ts +282 -0
  160. package/src/storage/InMemoryStorage.ts +163 -0
  161. package/src/teams/TeamManager.ts +61 -0
  162. package/src/teams/enterpriseData.ts +453 -0
  163. package/src/teams/listTeams.ts +373 -0
  164. package/src/teams/viewTeam.ts +248 -0
  165. package/src/utils/Logger.ts +71 -0
  166. package/src/utils/constants.ts +63 -0
  167. package/src/utils/errors.ts +108 -0
  168. package/src/utils/guards.ts +24 -0
  169. package/src/utils/index.ts +22 -0
  170. package/src/utils/patterns.ts +20 -0
  171. package/src/utils/types.ts +11 -0
  172. package/src/vault/KeeperVault.ts +612 -0
  173. package/tsconfig.json +16 -0
@@ -0,0 +1,346 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moveRecord = exports.getRecordHistory = exports.deleteRecord = exports.updateRecord = exports.addRecord = void 0;
4
+ const keeperapi_1 = require("@keeper-security/keeperapi");
5
+ const utils_1 = require("../utils");
6
+ const RecordUtils_1 = require("./RecordUtils");
7
+ var FolderType;
8
+ (function (FolderType) {
9
+ FolderType["UserFolder"] = "user_folder";
10
+ FolderType["SharedFolder"] = "shared_folder";
11
+ FolderType["SharedFolderFolder"] = "shared_folder_folder";
12
+ })(FolderType || (FolderType = {}));
13
+ var ObjectType;
14
+ (function (ObjectType) {
15
+ ObjectType["Record"] = "record";
16
+ })(ObjectType || (ObjectType = {}));
17
+ var DeleteResolution;
18
+ (function (DeleteResolution) {
19
+ DeleteResolution["Unlink"] = "unlink";
20
+ })(DeleteResolution || (DeleteResolution = {}));
21
+ var ResultCode;
22
+ (function (ResultCode) {
23
+ ResultCode["Success"] = "success";
24
+ ResultCode["OK"] = "OK";
25
+ })(ResultCode || (ResultCode = {}));
26
+ const MIN_RECORD_PAD_BYTES = 384;
27
+ const PAD_BLOCK_SIZE = 16;
28
+ function getPaddedJsonBytes(data) {
29
+ const json = JSON.stringify(data);
30
+ const paddedLength = Math.ceil(Math.max(MIN_RECORD_PAD_BYTES, json.length) / PAD_BLOCK_SIZE) * PAD_BLOCK_SIZE;
31
+ const padded = json.padEnd(paddedLength, ' ');
32
+ return new TextEncoder().encode(padded);
33
+ }
34
+ async function addRecord(auth, input) {
35
+ var _a;
36
+ if (!input.data.title || !input.data.title.trim()) {
37
+ throw new utils_1.KeeperSdkError('Record title is required.', 'missing_record_title');
38
+ }
39
+ if (input.version === 3 && !((_a = input.data.type) === null || _a === void 0 ? void 0 : _a.trim())) {
40
+ throw new utils_1.KeeperSdkError('Record type is required for v3 records.', 'missing_record_type');
41
+ }
42
+ if (input.version === 2) {
43
+ return addPasswordRecord(auth, input.data, input.folderUid);
44
+ }
45
+ return addTypedRecord(auth, input.data, input.folderUid);
46
+ }
47
+ exports.addRecord = addRecord;
48
+ async function addPasswordRecord(auth, data, folderUid) {
49
+ const recordUidBytes = (0, keeperapi_1.generateUidBytes)();
50
+ const recordKey = (0, keeperapi_1.generateEncryptionKey)();
51
+ const recordUid = (0, keeperapi_1.webSafe64FromBytes)(recordUidBytes);
52
+ const recordDataJson = JSON.stringify({
53
+ title: data.title || '',
54
+ secret1: data.login || '',
55
+ secret2: data.password || '',
56
+ link: data.url || '',
57
+ notes: data.notes || '',
58
+ custom: (data.custom || []).map((c) => ({
59
+ name: c.name,
60
+ value: c.value,
61
+ type: c.type || 'text',
62
+ })),
63
+ });
64
+ const extraJson = JSON.stringify({});
65
+ const dataBytes = new TextEncoder().encode(recordDataJson);
66
+ const extraBytes = new TextEncoder().encode(extraJson);
67
+ const encryptedData = await keeperapi_1.platform.aesCbcEncrypt(dataBytes, recordKey, true);
68
+ const encryptedExtra = await keeperapi_1.platform.aesCbcEncrypt(extraBytes, recordKey, true);
69
+ const encryptedRecordKey = await keeperapi_1.platform.aesCbcEncrypt(recordKey, auth.dataKey, true);
70
+ const cmd = (0, keeperapi_1.recordAddCommand)({
71
+ record_uid: recordUid,
72
+ record_key: (0, keeperapi_1.webSafe64FromBytes)(encryptedRecordKey),
73
+ record_type: 'password',
74
+ folder_type: FolderType.UserFolder,
75
+ how_long_ago: 0,
76
+ folder_uid: folderUid || '',
77
+ folder_key: '',
78
+ data: (0, keeperapi_1.webSafe64FromBytes)(encryptedData),
79
+ extra: (0, keeperapi_1.webSafe64FromBytes)(encryptedExtra),
80
+ non_shared_data: '',
81
+ file_ids: [],
82
+ });
83
+ const response = await auth.executeRestCommand(cmd);
84
+ return {
85
+ recordUid,
86
+ success: response.result_code === ResultCode.Success,
87
+ status: response.result_code,
88
+ };
89
+ }
90
+ async function addTypedRecord(auth, data, folderUid) {
91
+ var _a;
92
+ const recordUidBytes = (0, keeperapi_1.generateUidBytes)();
93
+ const recordKey = (0, keeperapi_1.generateEncryptionKey)();
94
+ const recordUid = (0, keeperapi_1.webSafe64FromBytes)(recordUidBytes);
95
+ const recordPayload = {
96
+ type: data.type,
97
+ title: data.title,
98
+ fields: data.fields || [],
99
+ custom: data.custom || [],
100
+ notes: data.notes || '',
101
+ };
102
+ const dataBytes = getPaddedJsonBytes(recordPayload);
103
+ const encryptedData = await keeperapi_1.platform.aesGcmEncrypt(dataBytes, recordKey);
104
+ const encryptedRecordKey = await keeperapi_1.platform.aesGcmEncrypt(recordKey, auth.dataKey);
105
+ const recordAdd = {
106
+ recordUid: recordUidBytes,
107
+ recordKey: encryptedRecordKey,
108
+ clientModifiedTime: Date.now(),
109
+ data: encryptedData,
110
+ folderType: keeperapi_1.Records.RecordFolderType.user_folder,
111
+ };
112
+ if (folderUid) {
113
+ recordAdd.folderUid = (0, keeperapi_1.normal64Bytes)(folderUid);
114
+ }
115
+ const request = {
116
+ records: [recordAdd],
117
+ clientTime: Date.now(),
118
+ };
119
+ const msg = (0, keeperapi_1.recordsAddMessage)(request);
120
+ const response = await auth.executeRest(msg);
121
+ const recordStatus = (_a = response.records) === null || _a === void 0 ? void 0 : _a[0];
122
+ const success = (recordStatus === null || recordStatus === void 0 ? void 0 : recordStatus.status) === keeperapi_1.Records.RecordModifyResult.RS_SUCCESS ||
123
+ !(recordStatus === null || recordStatus === void 0 ? void 0 : recordStatus.status);
124
+ return {
125
+ recordUid,
126
+ success,
127
+ status: (recordStatus === null || recordStatus === void 0 ? void 0 : recordStatus.status) != null
128
+ ? keeperapi_1.Records.RecordModifyResult[recordStatus.status]
129
+ : ResultCode.OK,
130
+ };
131
+ }
132
+ async function updateRecord(auth, recordUid, data, revision, recordKey) {
133
+ var _a, _b;
134
+ if (!data.title || !data.title.trim()) {
135
+ throw new utils_1.KeeperSdkError('Record title is required.', 'missing_record_title');
136
+ }
137
+ if (!((_a = data.type) === null || _a === void 0 ? void 0 : _a.trim())) {
138
+ throw new utils_1.KeeperSdkError('Record type is required.', 'missing_record_type');
139
+ }
140
+ const recordUidBytes = (0, keeperapi_1.normal64Bytes)(recordUid);
141
+ const recordPayload = {
142
+ type: data.type,
143
+ title: data.title,
144
+ fields: data.fields || [],
145
+ custom: data.custom || [],
146
+ notes: data.notes || '',
147
+ };
148
+ const dataBytes = getPaddedJsonBytes(recordPayload);
149
+ const encryptedData = await keeperapi_1.platform.aesGcmEncrypt(dataBytes, recordKey);
150
+ const recordUpdate = {
151
+ recordUid: recordUidBytes,
152
+ clientModifiedTime: Date.now(),
153
+ revision,
154
+ data: encryptedData,
155
+ };
156
+ const request = {
157
+ records: [recordUpdate],
158
+ clientTime: Date.now(),
159
+ };
160
+ const msg = (0, keeperapi_1.recordsUpdateMessage)(request);
161
+ const response = await auth.executeRest(msg);
162
+ const recordStatus = (_b = response.records) === null || _b === void 0 ? void 0 : _b[0];
163
+ const success = (recordStatus === null || recordStatus === void 0 ? void 0 : recordStatus.status) === keeperapi_1.Records.RecordModifyResult.RS_SUCCESS ||
164
+ !(recordStatus === null || recordStatus === void 0 ? void 0 : recordStatus.status);
165
+ return {
166
+ recordUid,
167
+ success,
168
+ status: (recordStatus === null || recordStatus === void 0 ? void 0 : recordStatus.status) != null
169
+ ? keeperapi_1.Records.RecordModifyResult[recordStatus.status]
170
+ : ResultCode.OK,
171
+ };
172
+ }
173
+ exports.updateRecord = updateRecord;
174
+ async function deleteRecord(auth, recordUid) {
175
+ var _a;
176
+ const preDeleteRequest = {
177
+ objects: [
178
+ {
179
+ object_uid: recordUid,
180
+ object_type: ObjectType.Record,
181
+ from_uid: '',
182
+ from_type: FolderType.UserFolder,
183
+ delete_resolution: DeleteResolution.Unlink,
184
+ },
185
+ ],
186
+ };
187
+ let preDeleteResponse;
188
+ try {
189
+ const preDeleteCmd = (0, keeperapi_1.recordPreDeleteCommand)(preDeleteRequest);
190
+ preDeleteResponse = await auth.executeRestCommand(preDeleteCmd);
191
+ }
192
+ catch (err) {
193
+ return { recordUid, success: false, message: (0, utils_1.extractErrorMessage)(err) };
194
+ }
195
+ const token = (_a = preDeleteResponse === null || preDeleteResponse === void 0 ? void 0 : preDeleteResponse.pre_delete_response) === null || _a === void 0 ? void 0 : _a.pre_delete_token;
196
+ if (!token) {
197
+ return {
198
+ recordUid,
199
+ success: false,
200
+ message: (preDeleteResponse === null || preDeleteResponse === void 0 ? void 0 : preDeleteResponse.message) || (preDeleteResponse === null || preDeleteResponse === void 0 ? void 0 : preDeleteResponse.result_code) || 'pre_delete failed: no token',
201
+ };
202
+ }
203
+ try {
204
+ const deleteCmd = (0, keeperapi_1.recordDeleteCommand)({ pre_delete_token: token });
205
+ await auth.executeRestCommand(deleteCmd);
206
+ }
207
+ catch (err) {
208
+ return { recordUid, success: false, message: (0, utils_1.extractErrorMessage)(err) };
209
+ }
210
+ return { recordUid, success: true, message: ResultCode.Success };
211
+ }
212
+ exports.deleteRecord = deleteRecord;
213
+ async function getRecordHistory(auth, recordUid, recordKey) {
214
+ const cmd = (0, keeperapi_1.getRecordHistoryCommand)({
215
+ record_uid: recordUid,
216
+ client_time: Date.now(),
217
+ });
218
+ let response;
219
+ try {
220
+ response = await auth.executeRestCommand(cmd);
221
+ }
222
+ catch (err) {
223
+ throw utils_1.KeeperSdkError.from(err);
224
+ }
225
+ const rawHistory = response.history || [];
226
+ const history = [];
227
+ for (const entry of rawHistory) {
228
+ let decryptedData = null;
229
+ if (entry.data) {
230
+ try {
231
+ const dataBytes = (0, keeperapi_1.normal64Bytes)(entry.data);
232
+ const version = entry.version || 0;
233
+ let decrypted;
234
+ if (version <= RecordUtils_1.RecordVersion.Legacy) {
235
+ decrypted = await keeperapi_1.platform.aesCbcDecrypt(dataBytes, recordKey, true);
236
+ }
237
+ else {
238
+ decrypted = await keeperapi_1.platform.aesGcmDecrypt(dataBytes, recordKey);
239
+ }
240
+ decryptedData = JSON.parse(keeperapi_1.platform.bytesToString(decrypted));
241
+ }
242
+ catch (err) {
243
+ utils_1.logger.debug(`Failed to decrypt history revision ${entry.revision}:`, (0, utils_1.extractErrorMessage)(err));
244
+ decryptedData = null;
245
+ }
246
+ }
247
+ history.push({
248
+ revision: entry.revision,
249
+ version: entry.version,
250
+ userName: entry.user_name || '',
251
+ clientModifiedTime: entry.client_modified_time || 0,
252
+ data: decryptedData,
253
+ });
254
+ }
255
+ return { recordUid, history };
256
+ }
257
+ exports.getRecordHistory = getRecordHistory;
258
+ function resolveFolder(uid, storage) {
259
+ if (!uid) {
260
+ return { uid: '', folderType: FolderType.UserFolder, scopeUid: '' };
261
+ }
262
+ if (storage.getByUid(FolderType.UserFolder, uid)) {
263
+ return { uid, folderType: FolderType.UserFolder, scopeUid: '' };
264
+ }
265
+ if (storage.getByUid(FolderType.SharedFolder, uid)) {
266
+ return { uid, folderType: FolderType.SharedFolder, scopeUid: uid };
267
+ }
268
+ const sfFolder = storage.getByUid(FolderType.SharedFolderFolder, uid);
269
+ if (sfFolder) {
270
+ return { uid, folderType: FolderType.SharedFolderFolder, scopeUid: sfFolder.sharedFolderUid };
271
+ }
272
+ return { uid, folderType: FolderType.UserFolder, scopeUid: '' };
273
+ }
274
+ function findRecordSourceFolder(recordUid, storage) {
275
+ const sfRecords = storage.getAll('shared_folder_record');
276
+ const sfr = sfRecords.find((r) => r.recordUid === recordUid);
277
+ if (sfr) {
278
+ return { folderUid: sfr.sharedFolderUid, folderType: FolderType.SharedFolder };
279
+ }
280
+ return { folderUid: '', folderType: FolderType.UserFolder };
281
+ }
282
+ async function moveRecord(auth, storage, input) {
283
+ const { recordUid, dstFolderUid, link = false, canEdit, canShare, } = input;
284
+ const dst = resolveFolder(dstFolderUid, storage);
285
+ let src;
286
+ if (input.srcFolderUid !== undefined) {
287
+ src = resolveFolder(input.srcFolderUid, storage);
288
+ }
289
+ else {
290
+ const found = findRecordSourceFolder(recordUid, storage);
291
+ src = resolveFolder(found.folderUid, storage);
292
+ }
293
+ const moveObj = {
294
+ uid: recordUid,
295
+ type: ObjectType.Record,
296
+ cascade: false,
297
+ from_type: src.folderType,
298
+ from_uid: src.uid || undefined,
299
+ can_edit: canEdit,
300
+ can_reshare: canShare,
301
+ };
302
+ const transitionKeys = [];
303
+ if (src.scopeUid !== dst.scopeUid) {
304
+ const recordKey = await storage.getKeyBytes(recordUid);
305
+ if (!recordKey) {
306
+ return { recordUid, success: false, message: 'Record key not found' };
307
+ }
308
+ let dstKey;
309
+ if (dst.scopeUid) {
310
+ dstKey = await storage.getKeyBytes(dst.scopeUid);
311
+ }
312
+ else {
313
+ dstKey = auth.dataKey;
314
+ }
315
+ if (!dstKey) {
316
+ return { recordUid, success: false, message: 'Destination folder key not found' };
317
+ }
318
+ const record = storage.getByUid(ObjectType.Record, recordUid);
319
+ const version = (record === null || record === void 0 ? void 0 : record.version) || RecordUtils_1.RecordVersion.Typed;
320
+ let encryptedKey;
321
+ if (version >= RecordUtils_1.RecordVersion.Typed) {
322
+ encryptedKey = await keeperapi_1.platform.aesGcmEncrypt(recordKey, dstKey);
323
+ }
324
+ else {
325
+ encryptedKey = await keeperapi_1.platform.aesCbcEncrypt(recordKey, dstKey, true);
326
+ }
327
+ transitionKeys.push({ uid: recordUid, key: (0, keeperapi_1.webSafe64FromBytes)(encryptedKey) });
328
+ }
329
+ const request = {
330
+ to_type: dst.folderType,
331
+ to_uid: dst.uid || undefined,
332
+ link,
333
+ move: [moveObj],
334
+ transition_keys: transitionKeys,
335
+ };
336
+ try {
337
+ const cmd = (0, keeperapi_1.moveCommand)(request);
338
+ await auth.executeRestCommand(cmd);
339
+ }
340
+ catch (err) {
341
+ return { recordUid, success: false, message: (0, utils_1.extractErrorMessage)(err) };
342
+ }
343
+ return { recordUid, success: true, message: 'Record moved successfully' };
344
+ }
345
+ exports.moveRecord = moveRecord;
346
+ //# sourceMappingURL=RecordOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordOperations.js","sourceRoot":"","sources":["../../src/records/RecordOperations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { DRecord } from '@keeper-security/keeperapi';
2
+ export declare enum RecordVersion {
3
+ Legacy = 2,
4
+ Typed = 3
5
+ }
6
+ type RecordField = {
7
+ type: string;
8
+ value: any[];
9
+ label?: string;
10
+ required?: boolean;
11
+ privacyScreen?: boolean;
12
+ enforceGeneration?: boolean;
13
+ complexity?: {
14
+ length?: number;
15
+ caps?: number;
16
+ lowercase?: number;
17
+ digits?: number;
18
+ special?: number;
19
+ };
20
+ };
21
+ export declare function getRecordTitle(record: DRecord): string;
22
+ export declare function getRecordType(record: DRecord): string;
23
+ export declare function getRecordFields(record: DRecord): RecordField[];
24
+ export type RecordSummary = {
25
+ login?: string;
26
+ password?: string;
27
+ url?: string;
28
+ fields: RecordField[];
29
+ };
30
+ export declare function getRecordSummary(record: DRecord): RecordSummary;
31
+ export declare function getRecordPassword(record: DRecord): string | undefined;
32
+ export declare function getRecordLogin(record: DRecord): string | undefined;
33
+ export declare function getRecordUrl(record: DRecord): string | undefined;
34
+ export declare function searchRecords(records: DRecord[], criteria: string): DRecord[];
35
+ export declare function formatRecord(record: DRecord, showDetails?: boolean): string;
36
+ export {};
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatRecord = exports.searchRecords = exports.getRecordUrl = exports.getRecordLogin = exports.getRecordPassword = exports.getRecordSummary = exports.getRecordFields = exports.getRecordType = exports.getRecordTitle = exports.RecordVersion = void 0;
4
+ var FieldType;
5
+ (function (FieldType) {
6
+ FieldType["Login"] = "login";
7
+ FieldType["Password"] = "password";
8
+ FieldType["Url"] = "url";
9
+ FieldType["Note"] = "note";
10
+ FieldType["Text"] = "text";
11
+ })(FieldType || (FieldType = {}));
12
+ var RecordVersion;
13
+ (function (RecordVersion) {
14
+ RecordVersion[RecordVersion["Legacy"] = 2] = "Legacy";
15
+ RecordVersion[RecordVersion["Typed"] = 3] = "Typed";
16
+ })(RecordVersion = exports.RecordVersion || (exports.RecordVersion = {}));
17
+ function getLegacyExtraFields(record) {
18
+ const raw = record.extra;
19
+ if (raw == null)
20
+ return [];
21
+ let extra;
22
+ if (typeof raw === 'string') {
23
+ try {
24
+ extra = JSON.parse(raw);
25
+ }
26
+ catch (_a) {
27
+ return [];
28
+ }
29
+ }
30
+ else if (typeof raw === 'object') {
31
+ extra = raw;
32
+ }
33
+ else {
34
+ return [];
35
+ }
36
+ if (!Array.isArray(extra.fields))
37
+ return [];
38
+ const out = [];
39
+ for (const f of extra.fields) {
40
+ out.push({
41
+ type: f.type || FieldType.Text,
42
+ value: Array.isArray(f.value) ? f.value : f.value != null ? [f.value] : [],
43
+ label: f.label,
44
+ });
45
+ }
46
+ return out;
47
+ }
48
+ function getRecordTitle(record) {
49
+ if (!record.data)
50
+ return '(no data)';
51
+ if (typeof record.data === 'string') {
52
+ try {
53
+ const parsed = JSON.parse(record.data);
54
+ return parsed.title || '(untitled)';
55
+ }
56
+ catch (_err) {
57
+ return '(parse error)';
58
+ }
59
+ }
60
+ return record.data.title || '(untitled)';
61
+ }
62
+ exports.getRecordTitle = getRecordTitle;
63
+ function getRecordType(record) {
64
+ if (record.version <= RecordVersion.Legacy)
65
+ return 'legacy';
66
+ if (!record.data)
67
+ return 'unknown';
68
+ return record.data.type || 'unknown';
69
+ }
70
+ exports.getRecordType = getRecordType;
71
+ function getRecordFields(record) {
72
+ if (!record.data)
73
+ return [];
74
+ if (record.version <= RecordVersion.Legacy) {
75
+ const fields = [];
76
+ const d = record.data;
77
+ if (d.secret1)
78
+ fields.push({ type: FieldType.Login, value: [d.secret1] });
79
+ if (d.secret2)
80
+ fields.push({ type: FieldType.Password, value: [d.secret2] });
81
+ if (d.link)
82
+ fields.push({ type: FieldType.Url, value: [d.link] });
83
+ if (d.notes)
84
+ fields.push({ type: FieldType.Note, value: [d.notes] });
85
+ const extraFields = getLegacyExtraFields(record);
86
+ fields.push(...extraFields);
87
+ return fields;
88
+ }
89
+ const fields = [];
90
+ if (Array.isArray(record.data.fields)) {
91
+ for (const f of record.data.fields) {
92
+ fields.push({
93
+ type: f.type || FieldType.Text,
94
+ value: Array.isArray(f.value) ? f.value : [f.value],
95
+ label: f.label,
96
+ required: f.required,
97
+ privacyScreen: f.privacyScreen,
98
+ enforceGeneration: f.enforceGeneration,
99
+ complexity: f.complexity,
100
+ });
101
+ }
102
+ }
103
+ if (Array.isArray(record.data.custom)) {
104
+ for (const f of record.data.custom) {
105
+ fields.push({
106
+ type: f.type || FieldType.Text,
107
+ value: Array.isArray(f.value) ? f.value : [f.value],
108
+ label: f.label,
109
+ required: f.required,
110
+ privacyScreen: f.privacyScreen,
111
+ enforceGeneration: f.enforceGeneration,
112
+ complexity: f.complexity,
113
+ });
114
+ }
115
+ }
116
+ return fields;
117
+ }
118
+ exports.getRecordFields = getRecordFields;
119
+ function getRecordSummary(record) {
120
+ var _a, _b, _c;
121
+ const fields = getRecordFields(record);
122
+ if (record.version <= RecordVersion.Legacy) {
123
+ return {
124
+ login: (_a = record.data) === null || _a === void 0 ? void 0 : _a.secret1,
125
+ password: (_b = record.data) === null || _b === void 0 ? void 0 : _b.secret2,
126
+ url: (_c = record.data) === null || _c === void 0 ? void 0 : _c.link,
127
+ fields,
128
+ };
129
+ }
130
+ let login;
131
+ let password;
132
+ let url;
133
+ for (const f of fields) {
134
+ if (!login && f.type === FieldType.Login && f.value.length > 0) {
135
+ login = String(f.value[0]);
136
+ }
137
+ else if (!password && f.type === FieldType.Password && f.value.length > 0) {
138
+ password = String(f.value[0]);
139
+ }
140
+ else if (!url && f.type === FieldType.Url && f.value.length > 0) {
141
+ const val = f.value[0];
142
+ url = typeof val === 'string' ? val : (val === null || val === void 0 ? void 0 : val.value) || (val === null || val === void 0 ? void 0 : val.url);
143
+ }
144
+ }
145
+ return { login, password, url, fields };
146
+ }
147
+ exports.getRecordSummary = getRecordSummary;
148
+ function getRecordPassword(record) {
149
+ return getRecordSummary(record).password;
150
+ }
151
+ exports.getRecordPassword = getRecordPassword;
152
+ function getRecordLogin(record) {
153
+ return getRecordSummary(record).login;
154
+ }
155
+ exports.getRecordLogin = getRecordLogin;
156
+ function getRecordUrl(record) {
157
+ return getRecordSummary(record).url;
158
+ }
159
+ exports.getRecordUrl = getRecordUrl;
160
+ const wordCache = new WeakMap();
161
+ function searchRecords(records, criteria) {
162
+ if (!criteria.trim())
163
+ return records;
164
+ const searchWords = criteria.toLowerCase().split(/\s+/);
165
+ return records.filter((record) => {
166
+ let words = wordCache.get(record);
167
+ if (!words) {
168
+ words = collectRecordWords(record);
169
+ wordCache.set(record, words);
170
+ }
171
+ return searchWords.every((sw) => words.some((w) => w.includes(sw)));
172
+ });
173
+ }
174
+ exports.searchRecords = searchRecords;
175
+ function collectRecordWords(record) {
176
+ const words = [];
177
+ const title = getRecordTitle(record);
178
+ if (title)
179
+ words.push(...title.toLowerCase().split(/\s+/));
180
+ for (const field of getRecordFields(record)) {
181
+ if (field.label)
182
+ words.push(field.label.toLowerCase());
183
+ for (const v of field.value) {
184
+ if (typeof v === 'string') {
185
+ words.push(...v.toLowerCase().split(/\s+/));
186
+ }
187
+ else if (v && typeof v === 'object') {
188
+ for (const val of Object.values(v)) {
189
+ if (typeof val === 'string') {
190
+ words.push(...val.toLowerCase().split(/\s+/));
191
+ }
192
+ }
193
+ }
194
+ }
195
+ }
196
+ words.push(record.uid);
197
+ return words;
198
+ }
199
+ function formatRecord(record, showDetails = false) {
200
+ const title = getRecordTitle(record);
201
+ const type = getRecordType(record);
202
+ const summary = getRecordSummary(record);
203
+ const lines = [];
204
+ lines.push('-'.repeat(50));
205
+ lines.push(`Title: ${title}`);
206
+ lines.push(`Record UID: ${record.uid}`);
207
+ lines.push(`Record Type: ${type}`);
208
+ if (summary.login)
209
+ lines.push(`Username: ${summary.login}`);
210
+ if (summary.url)
211
+ lines.push(`URL: ${summary.url}`);
212
+ if (showDetails) {
213
+ for (const field of summary.fields) {
214
+ if (field.type === FieldType.Login || field.type === FieldType.Url)
215
+ continue;
216
+ const label = field.label || field.type;
217
+ const value = field.type === FieldType.Password ? '********' : field.value.join(', ');
218
+ lines.push(`${label}: ${value}`);
219
+ }
220
+ }
221
+ return lines.join('\n');
222
+ }
223
+ exports.formatRecord = formatRecord;
224
+ //# sourceMappingURL=RecordUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordUtils.js","sourceRoot":"","sources":["../../src/records/RecordUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { Auth } from '@keeper-security/keeperapi';
2
+ export type ShareRecordInput = {
3
+ recordUid: string;
4
+ email: string;
5
+ canEdit?: boolean;
6
+ canShare?: boolean;
7
+ };
8
+ export type ShareRecordResult = {
9
+ recordUid: string;
10
+ email: string;
11
+ success: boolean;
12
+ status: string;
13
+ message: string;
14
+ };
15
+ export type RemoveShareInput = {
16
+ recordUid: string;
17
+ email: string;
18
+ };
19
+ export type RemoveShareResult = {
20
+ recordUid: string;
21
+ email: string;
22
+ success: boolean;
23
+ status: string;
24
+ message: string;
25
+ };
26
+ export declare function shareRecord(auth: Auth, recordKey: Uint8Array, input: ShareRecordInput): Promise<ShareRecordResult>;
27
+ export declare function removeRecordShare(auth: Auth, input: RemoveShareInput): Promise<RemoveShareResult>;