@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.
- package/dist/auth/ConsoleAuthUI.d.ts +10 -0
- package/dist/auth/ConsoleAuthUI.js +152 -0
- package/dist/auth/ConsoleAuthUI.js.map +1 -0
- package/dist/auth/ConsoleLogin.d.ts +8 -0
- package/dist/auth/ConsoleLogin.js +266 -0
- package/dist/auth/ConsoleLogin.js.map +1 -0
- package/dist/auth/SessionManager.d.ts +66 -0
- package/dist/auth/SessionManager.js +211 -0
- package/dist/auth/SessionManager.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/records/RecordOperations.d.ts +79 -0
- package/dist/records/RecordOperations.js +346 -0
- package/dist/records/RecordOperations.js.map +1 -0
- package/dist/records/RecordUtils.d.ts +36 -0
- package/dist/records/RecordUtils.js +224 -0
- package/dist/records/RecordUtils.js.map +1 -0
- package/dist/sharing/Sharing.d.ts +27 -0
- package/dist/sharing/Sharing.js +125 -0
- package/dist/sharing/Sharing.js.map +1 -0
- package/dist/src/auth/ConsoleAuthUI.d.ts +10 -0
- package/dist/src/auth/ConsoleAuthUI.js +161 -0
- package/dist/src/auth/ConsoleAuthUI.js.map +1 -0
- package/dist/src/auth/ConsoleLogin.d.ts +8 -0
- package/dist/src/auth/ConsoleLogin.js +311 -0
- package/dist/src/auth/ConsoleLogin.js.map +1 -0
- package/dist/src/auth/SessionManager.d.ts +67 -0
- package/dist/src/auth/SessionManager.js +212 -0
- package/dist/src/auth/SessionManager.js.map +1 -0
- package/dist/src/folders/FolderManager.d.ts +57 -0
- package/dist/src/folders/FolderManager.js +108 -0
- package/dist/src/folders/FolderManager.js.map +1 -0
- package/dist/src/folders/addFolder.d.ts +32 -0
- package/dist/src/folders/addFolder.js +207 -0
- package/dist/src/folders/addFolder.js.map +1 -0
- package/dist/src/folders/changeDirectory.d.ts +19 -0
- package/dist/src/folders/changeDirectory.js +171 -0
- package/dist/src/folders/changeDirectory.js.map +1 -0
- package/dist/src/folders/deleteFolder.d.ts +17 -0
- package/dist/src/folders/deleteFolder.js +237 -0
- package/dist/src/folders/deleteFolder.js.map +1 -0
- package/dist/src/folders/folderHelpers.d.ts +48 -0
- package/dist/src/folders/folderHelpers.js +100 -0
- package/dist/src/folders/folderHelpers.js.map +1 -0
- package/dist/src/folders/folderTree.d.ts +29 -0
- package/dist/src/folders/folderTree.js +250 -0
- package/dist/src/folders/folderTree.js.map +1 -0
- package/dist/src/folders/getFolder.d.ts +56 -0
- package/dist/src/folders/getFolder.js +143 -0
- package/dist/src/folders/getFolder.js.map +1 -0
- package/dist/src/folders/listFolder.d.ts +48 -0
- package/dist/src/folders/listFolder.js +276 -0
- package/dist/src/folders/listFolder.js.map +1 -0
- package/dist/src/folders/updateFolder.d.ts +31 -0
- package/dist/src/folders/updateFolder.js +137 -0
- package/dist/src/folders/updateFolder.js.map +1 -0
- package/dist/src/index.d.ts +49 -0
- package/dist/src/index.js +151 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/records/RecordOperations.d.ts +80 -0
- package/dist/src/records/RecordOperations.js +356 -0
- package/dist/src/records/RecordOperations.js.map +1 -0
- package/dist/src/records/RecordUtils.d.ts +37 -0
- package/dist/src/records/RecordUtils.js +263 -0
- package/dist/src/records/RecordUtils.js.map +1 -0
- package/dist/src/records/Totp.d.ts +14 -0
- package/dist/src/records/Totp.js +111 -0
- package/dist/src/records/Totp.js.map +1 -0
- package/dist/src/sharedFolders/SharedFolderManager.d.ts +20 -0
- package/dist/src/sharedFolders/SharedFolderManager.js +33 -0
- package/dist/src/sharedFolders/SharedFolderManager.js.map +1 -0
- package/dist/src/sharedFolders/listSharedFolders.d.ts +29 -0
- package/dist/src/sharedFolders/listSharedFolders.js +127 -0
- package/dist/src/sharedFolders/listSharedFolders.js.map +1 -0
- package/dist/src/sharedFolders/shareFolder.d.ts +36 -0
- package/dist/src/sharedFolders/shareFolder.js +352 -0
- package/dist/src/sharedFolders/shareFolder.js.map +1 -0
- package/dist/src/sharing/Sharing.d.ts +50 -0
- package/dist/src/sharing/Sharing.js +195 -0
- package/dist/src/sharing/Sharing.js.map +1 -0
- package/dist/src/storage/InMemoryStorage.d.ts +24 -0
- package/dist/src/storage/InMemoryStorage.js +139 -0
- package/dist/src/storage/InMemoryStorage.js.map +1 -0
- package/dist/src/teams/TeamManager.d.ts +17 -0
- package/dist/src/teams/TeamManager.js +38 -0
- package/dist/src/teams/TeamManager.js.map +1 -0
- package/dist/src/teams/enterpriseData.d.ts +106 -0
- package/dist/src/teams/enterpriseData.js +319 -0
- package/dist/src/teams/enterpriseData.js.map +1 -0
- package/dist/src/teams/listTeams.d.ts +42 -0
- package/dist/src/teams/listTeams.js +308 -0
- package/dist/src/teams/listTeams.js.map +1 -0
- package/dist/src/teams/viewTeam.d.ts +35 -0
- package/dist/src/teams/viewTeam.js +177 -0
- package/dist/src/teams/viewTeam.js.map +1 -0
- package/dist/src/utils/Logger.d.ts +28 -0
- package/dist/src/utils/Logger.js +62 -0
- package/dist/src/utils/Logger.js.map +1 -0
- package/dist/src/utils/constants.d.ts +50 -0
- package/dist/src/utils/constants.js +64 -0
- package/dist/src/utils/constants.js.map +1 -0
- package/dist/src/utils/errors.d.ts +10 -0
- package/dist/src/utils/errors.js +117 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/guards.d.ts +7 -0
- package/dist/src/utils/guards.js +29 -0
- package/dist/src/utils/guards.js.map +1 -0
- package/dist/src/utils/index.d.ts +7 -0
- package/dist/src/utils/index.js +39 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/patterns.d.ts +9 -0
- package/dist/src/utils/patterns.js +20 -0
- package/dist/src/utils/patterns.js.map +1 -0
- package/dist/src/utils/types.d.ts +12 -0
- package/dist/src/utils/types.js +3 -0
- package/dist/src/utils/types.js.map +1 -0
- package/dist/src/vault/KeeperVault.d.ts +116 -0
- package/dist/src/vault/KeeperVault.js +443 -0
- package/dist/src/vault/KeeperVault.js.map +1 -0
- package/dist/storage/InMemoryStorage.d.ts +24 -0
- package/dist/storage/InMemoryStorage.js +132 -0
- package/dist/storage/InMemoryStorage.js.map +1 -0
- package/dist/utils/Logger.d.ts +28 -0
- package/dist/utils/Logger.js +62 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/constants.d.ts +26 -0
- package/dist/utils/constants.js +37 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errors.d.ts +10 -0
- package/dist/utils/errors.js +117 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +22 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/vault/KeeperVault.d.ts +72 -0
- package/dist/vault/KeeperVault.js +338 -0
- package/dist/vault/KeeperVault.js.map +1 -0
- package/package.json +32 -0
- package/src/auth/ConsoleAuthUI.ts +169 -0
- package/src/auth/ConsoleLogin.ts +351 -0
- package/src/auth/SessionManager.ts +293 -0
- package/src/folders/FolderManager.ts +174 -0
- package/src/folders/addFolder.ts +294 -0
- package/src/folders/changeDirectory.ts +217 -0
- package/src/folders/deleteFolder.ts +293 -0
- package/src/folders/folderHelpers.ts +99 -0
- package/src/folders/folderTree.ts +321 -0
- package/src/folders/getFolder.ts +234 -0
- package/src/folders/listFolder.ts +358 -0
- package/src/folders/updateFolder.ts +210 -0
- package/src/index.ts +242 -0
- package/src/records/RecordOperations.ts +549 -0
- package/src/records/RecordUtils.ts +282 -0
- package/src/records/Totp.ts +119 -0
- package/src/sharedFolders/SharedFolderManager.ts +57 -0
- package/src/sharedFolders/listSharedFolders.ts +173 -0
- package/src/sharedFolders/shareFolder.ts +457 -0
- package/src/sharing/Sharing.ts +282 -0
- package/src/storage/InMemoryStorage.ts +163 -0
- package/src/teams/TeamManager.ts +61 -0
- package/src/teams/enterpriseData.ts +453 -0
- package/src/teams/listTeams.ts +373 -0
- package/src/teams/viewTeam.ts +248 -0
- package/src/utils/Logger.ts +71 -0
- package/src/utils/constants.ts +63 -0
- package/src/utils/errors.ts +108 -0
- package/src/utils/guards.ts +24 -0
- package/src/utils/index.ts +22 -0
- package/src/utils/patterns.ts +20 -0
- package/src/utils/types.ts +11 -0
- package/src/vault/KeeperVault.ts +612 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mkdir = exports.addFolder = void 0;
|
|
4
|
+
const keeperapi_1 = require("@keeper-security/keeperapi");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const listFolder_1 = require("./listFolder");
|
|
7
|
+
const changeDirectory_1 = require("./changeDirectory");
|
|
8
|
+
const folderHelpers_1 = require("./folderHelpers");
|
|
9
|
+
function resolveParentContext(storage, parentUid) {
|
|
10
|
+
if (parentUid === null || parentUid === '') {
|
|
11
|
+
return { kind: folderHelpers_1.ParentFolderKind.VirtualRoot, sharedScopeUid: null };
|
|
12
|
+
}
|
|
13
|
+
if (storage.getByUid(folderHelpers_1.FolderKind.UserFolder, parentUid)) {
|
|
14
|
+
return { kind: folderHelpers_1.ParentFolderKind.UserFolder, sharedScopeUid: null };
|
|
15
|
+
}
|
|
16
|
+
const sharedFolder = storage.getByUid(folderHelpers_1.FolderKind.SharedFolder, parentUid);
|
|
17
|
+
if (sharedFolder) {
|
|
18
|
+
return { kind: folderHelpers_1.ParentFolderKind.SharedFolder, sharedScopeUid: sharedFolder.uid };
|
|
19
|
+
}
|
|
20
|
+
const sharedFolderFolder = storage.getByUid(folderHelpers_1.FolderKind.SharedFolderFolder, parentUid);
|
|
21
|
+
if (sharedFolderFolder) {
|
|
22
|
+
return {
|
|
23
|
+
kind: folderHelpers_1.ParentFolderKind.SharedFolderFolder,
|
|
24
|
+
sharedScopeUid: sharedFolderFolder.sharedFolderUid,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
throw new utils_1.KeeperSdkError(`Parent folder "${parentUid}" not found`, 'folder_not_found');
|
|
28
|
+
}
|
|
29
|
+
function decideNewFolderType(parent, isSharedFolder) {
|
|
30
|
+
if (isSharedFolder) {
|
|
31
|
+
if (parent.kind !== folderHelpers_1.ParentFolderKind.UserFolder && parent.kind !== folderHelpers_1.ParentFolderKind.VirtualRoot) {
|
|
32
|
+
throw new utils_1.KeeperSdkError('Shared folders cannot be nested inside other shared folders.', 'shared_folder_nested');
|
|
33
|
+
}
|
|
34
|
+
return folderHelpers_1.FolderKind.SharedFolder;
|
|
35
|
+
}
|
|
36
|
+
if (parent.kind === folderHelpers_1.ParentFolderKind.VirtualRoot || parent.kind === folderHelpers_1.ParentFolderKind.UserFolder) {
|
|
37
|
+
return folderHelpers_1.FolderKind.UserFolder;
|
|
38
|
+
}
|
|
39
|
+
return folderHelpers_1.FolderKind.SharedFolderFolder;
|
|
40
|
+
}
|
|
41
|
+
async function getEncryptionKeyForNewFolder(auth, storage, folderType, sharedScopeUid) {
|
|
42
|
+
if (folderType === folderHelpers_1.FolderKind.SharedFolderFolder) {
|
|
43
|
+
if (!sharedScopeUid) {
|
|
44
|
+
throw new utils_1.KeeperSdkError('Shared folder scope could not be resolved.', 'shared_folder_scope_missing');
|
|
45
|
+
}
|
|
46
|
+
const sharedFolderKey = await storage.getKeyBytes(sharedScopeUid);
|
|
47
|
+
if (!sharedFolderKey) {
|
|
48
|
+
throw new utils_1.KeeperSdkError('Shared folder encryption key not available. Sync the vault and try again.', 'shared_folder_key_missing');
|
|
49
|
+
}
|
|
50
|
+
return sharedFolderKey;
|
|
51
|
+
}
|
|
52
|
+
if (!auth.dataKey) {
|
|
53
|
+
throw new utils_1.KeeperSdkError('Data key not available. Ensure you are logged in.', 'data_key_missing');
|
|
54
|
+
}
|
|
55
|
+
return auth.dataKey;
|
|
56
|
+
}
|
|
57
|
+
async function findChildFolderUidByName(storage, parentUid, name) {
|
|
58
|
+
const result = await (0, listFolder_1.listFolder)(storage, {
|
|
59
|
+
folderUid: parentUid === null ? undefined : parentUid,
|
|
60
|
+
showFolders: true,
|
|
61
|
+
showRecords: false,
|
|
62
|
+
});
|
|
63
|
+
const trimmedName = name.trim();
|
|
64
|
+
const lowerName = trimmedName.toLowerCase();
|
|
65
|
+
for (const folder of result.folders) {
|
|
66
|
+
if (folder.uid === trimmedName)
|
|
67
|
+
return folder.uid;
|
|
68
|
+
if (folder.name.trim() === trimmedName)
|
|
69
|
+
return folder.uid;
|
|
70
|
+
if (folder.name.trim().toLowerCase() === lowerName)
|
|
71
|
+
return folder.uid;
|
|
72
|
+
}
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
async function addFolder(auth, storage, input) {
|
|
76
|
+
var _a;
|
|
77
|
+
const name = (_a = input.folderName) === null || _a === void 0 ? void 0 : _a.trim();
|
|
78
|
+
if (!name) {
|
|
79
|
+
throw new utils_1.KeeperSdkError('Folder name cannot be empty.', 'folder_name_required');
|
|
80
|
+
}
|
|
81
|
+
const parentUid = input.parentUid === undefined || input.parentUid === '' ? null : input.parentUid;
|
|
82
|
+
const parent = resolveParentContext(storage, parentUid);
|
|
83
|
+
const isShared = input.isSharedFolder === true;
|
|
84
|
+
const folderType = decideNewFolderType(parent, isShared);
|
|
85
|
+
const folderUid = (0, keeperapi_1.generateUid)();
|
|
86
|
+
const folderKey = (0, keeperapi_1.generateEncryptionKey)();
|
|
87
|
+
const sharedScope = folderType === folderHelpers_1.FolderKind.SharedFolderFolder ? parent.sharedScopeUid : null;
|
|
88
|
+
const encryptionKey = await getEncryptionKeyForNewFolder(auth, storage, folderType, sharedScope);
|
|
89
|
+
const request = {
|
|
90
|
+
folder_uid: folderUid,
|
|
91
|
+
folder_type: folderType,
|
|
92
|
+
key: await (0, keeperapi_1.encryptForStorage)(folderKey, encryptionKey),
|
|
93
|
+
data: await (0, keeperapi_1.encryptObjectForStorage)({ name, title: name }, folderKey),
|
|
94
|
+
link: false,
|
|
95
|
+
};
|
|
96
|
+
if (parentUid) {
|
|
97
|
+
request.parent_uid = parentUid;
|
|
98
|
+
}
|
|
99
|
+
if (folderType === folderHelpers_1.FolderKind.SharedFolderFolder && sharedScope) {
|
|
100
|
+
request.shared_folder_uid = sharedScope;
|
|
101
|
+
}
|
|
102
|
+
if (folderType === folderHelpers_1.FolderKind.SharedFolder) {
|
|
103
|
+
request.name = await (0, keeperapi_1.encryptForStorage)(keeperapi_1.platform.stringToBytes(name), folderKey);
|
|
104
|
+
request.manage_users = (0, utils_1.isBoolean)(input.manageUsers) ? input.manageUsers : false;
|
|
105
|
+
request.manage_records = (0, utils_1.isBoolean)(input.manageRecords) ? input.manageRecords : false;
|
|
106
|
+
request.can_edit = (0, utils_1.isBoolean)(input.canEdit) ? input.canEdit : false;
|
|
107
|
+
request.can_share = (0, utils_1.isBoolean)(input.canShare) ? input.canShare : false;
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const response = await auth.executeRestCommand((0, keeperapi_1.folderAddCommand)(request));
|
|
111
|
+
const succeeded = response.result === folderHelpers_1.FolderResultStatus.Success || response.result_code === folderHelpers_1.FolderResultStatus.Success;
|
|
112
|
+
if (!succeeded) {
|
|
113
|
+
const reason = response.message ||
|
|
114
|
+
response.result_code ||
|
|
115
|
+
`folder_add failed for "${name}" (uid=${folderUid}, type=${folderType}): server returned no message or result_code`;
|
|
116
|
+
return {
|
|
117
|
+
folderUid,
|
|
118
|
+
success: false,
|
|
119
|
+
message: reason,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return { folderUid, success: true };
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
return {
|
|
126
|
+
folderUid,
|
|
127
|
+
success: false,
|
|
128
|
+
message: `folder_add failed for "${name}" (uid=${folderUid}, type=${folderType}): ${(0, utils_1.extractErrorMessage)(err)}`,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.addFolder = addFolder;
|
|
133
|
+
async function mkdir(auth, storage, session, path, options = {}) {
|
|
134
|
+
const trimmed = path.trim();
|
|
135
|
+
if (!trimmed) {
|
|
136
|
+
throw new utils_1.KeeperSdkError('Folder path cannot be empty.', 'folder_path_required');
|
|
137
|
+
}
|
|
138
|
+
if (options.sharedFolder && options.userFolder) {
|
|
139
|
+
throw new utils_1.KeeperSdkError('Use only one of sharedFolder (-sf) or userFolder (-uf).', 'mkdir_flags_conflict');
|
|
140
|
+
}
|
|
141
|
+
const { folderUid: baseUid, remaining } = await (0, changeDirectory_1.tryResolvePath)(storage, session, trimmed);
|
|
142
|
+
if (!remaining.trim()) {
|
|
143
|
+
throw new utils_1.KeeperSdkError(`Folder "${trimmed}" already exists.`, 'folder_already_exists');
|
|
144
|
+
}
|
|
145
|
+
const grantAll = options.grantAll === true;
|
|
146
|
+
let manageUsers = (0, utils_1.isBoolean)(options.manageUsers) ? options.manageUsers : false;
|
|
147
|
+
let manageRecords = (0, utils_1.isBoolean)(options.manageRecords) ? options.manageRecords : false;
|
|
148
|
+
let canShare = (0, utils_1.isBoolean)(options.canShare) ? options.canShare : false;
|
|
149
|
+
let canEdit = (0, utils_1.isBoolean)(options.canEdit) ? options.canEdit : false;
|
|
150
|
+
if (grantAll) {
|
|
151
|
+
manageUsers = true;
|
|
152
|
+
manageRecords = true;
|
|
153
|
+
canShare = true;
|
|
154
|
+
canEdit = true;
|
|
155
|
+
}
|
|
156
|
+
const segments = (0, changeDirectory_1.splitPathComponents)(remaining)
|
|
157
|
+
.map((segment) => segment.trim())
|
|
158
|
+
.filter((segment) => segment !== '' && segment !== '.');
|
|
159
|
+
if (segments.length === 0) {
|
|
160
|
+
throw new utils_1.KeeperSdkError(`Folder "${trimmed}" already exists.`, 'folder_already_exists');
|
|
161
|
+
}
|
|
162
|
+
let currentParent = baseUid;
|
|
163
|
+
let lastResult = {
|
|
164
|
+
folderUid: '',
|
|
165
|
+
success: false,
|
|
166
|
+
message: 'not run',
|
|
167
|
+
};
|
|
168
|
+
for (let segmentIndex = 0; segmentIndex < segments.length; segmentIndex++) {
|
|
169
|
+
const segment = segments[segmentIndex];
|
|
170
|
+
const isLastSegment = segmentIndex === segments.length - 1;
|
|
171
|
+
const existingChildUid = await findChildFolderUidByName(storage, currentParent, segment);
|
|
172
|
+
if (existingChildUid) {
|
|
173
|
+
if (isLastSegment) {
|
|
174
|
+
throw new utils_1.KeeperSdkError(`Folder "${segment}" already exists.`, 'folder_already_exists');
|
|
175
|
+
}
|
|
176
|
+
currentParent = existingChildUid;
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const createAsSharedFolder = isLastSegment && options.sharedFolder === true;
|
|
180
|
+
const parentContext = resolveParentContext(storage, currentParent);
|
|
181
|
+
if (createAsSharedFolder &&
|
|
182
|
+
parentContext.kind !== folderHelpers_1.ParentFolderKind.UserFolder &&
|
|
183
|
+
parentContext.kind !== folderHelpers_1.ParentFolderKind.VirtualRoot) {
|
|
184
|
+
throw new utils_1.KeeperSdkError('Shared folders can only be created under a personal folder.', 'shared_folder_invalid_parent');
|
|
185
|
+
}
|
|
186
|
+
lastResult = await addFolder(auth, storage, {
|
|
187
|
+
folderName: segment,
|
|
188
|
+
parentUid: currentParent,
|
|
189
|
+
isSharedFolder: createAsSharedFolder,
|
|
190
|
+
manageUsers: isLastSegment && createAsSharedFolder ? manageUsers : undefined,
|
|
191
|
+
manageRecords: isLastSegment && createAsSharedFolder ? manageRecords : undefined,
|
|
192
|
+
canShare: isLastSegment && createAsSharedFolder ? canShare : undefined,
|
|
193
|
+
canEdit: isLastSegment && createAsSharedFolder ? canEdit : undefined,
|
|
194
|
+
});
|
|
195
|
+
if (!lastResult.success) {
|
|
196
|
+
return {
|
|
197
|
+
folderUid: lastResult.folderUid,
|
|
198
|
+
success: false,
|
|
199
|
+
message: lastResult.message,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
currentParent = lastResult.folderUid;
|
|
203
|
+
}
|
|
204
|
+
return { folderUid: lastResult.folderUid, success: true };
|
|
205
|
+
}
|
|
206
|
+
exports.mkdir = mkdir;
|
|
207
|
+
//# sourceMappingURL=addFolder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addFolder.js","sourceRoot":"","sources":["../../../src/folders/addFolder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InMemoryStorage } from '../storage/InMemoryStorage';
|
|
2
|
+
export type VaultFolderSession = {
|
|
3
|
+
currentFolderUid: string | null;
|
|
4
|
+
};
|
|
5
|
+
export type ChangeDirectoryResult = {
|
|
6
|
+
folderUid: string | null;
|
|
7
|
+
name: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function createVaultFolderSession(): VaultFolderSession;
|
|
10
|
+
export declare function findParentFolderUid(storage: InMemoryStorage, folderUid: string): Promise<string | null>;
|
|
11
|
+
export declare function splitPathComponents(path: string): string[];
|
|
12
|
+
export type TryResolvePathResult = {
|
|
13
|
+
folderUid: string | null;
|
|
14
|
+
remaining: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function tryResolvePath(storage: InMemoryStorage, session: VaultFolderSession, path: string): Promise<TryResolvePathResult>;
|
|
17
|
+
export declare function resolveSingleFolder(storage: InMemoryStorage, session: VaultFolderSession, folderName: string): Promise<ChangeDirectoryResult>;
|
|
18
|
+
export declare function changeDirectory(storage: InMemoryStorage, session: VaultFolderSession, path: string): Promise<ChangeDirectoryResult>;
|
|
19
|
+
export declare function getWorkingFolderDisplayName(storage: InMemoryStorage, currentFolderUid: string | null): string;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getWorkingFolderDisplayName = exports.changeDirectory = exports.resolveSingleFolder = exports.tryResolvePath = exports.splitPathComponents = exports.findParentFolderUid = exports.createVaultFolderSession = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const listFolder_1 = require("./listFolder");
|
|
6
|
+
const folderHelpers_1 = require("./folderHelpers");
|
|
7
|
+
const VAULT_ROOT_DISPLAY_NAME = 'My Vault';
|
|
8
|
+
const ESCAPED_SEPARATOR_PLACEHOLDER = '\x00';
|
|
9
|
+
function createVaultFolderSession() {
|
|
10
|
+
return { currentFolderUid: null };
|
|
11
|
+
}
|
|
12
|
+
exports.createVaultFolderSession = createVaultFolderSession;
|
|
13
|
+
function getFolderEntryByUid(storage, uid) {
|
|
14
|
+
const userFolder = storage.getByUid(folderHelpers_1.FolderKind.UserFolder, uid);
|
|
15
|
+
if (userFolder) {
|
|
16
|
+
return { uid: userFolder.uid, name: (0, folderHelpers_1.userFolderName)(userFolder), folderKind: folderHelpers_1.FolderKind.UserFolder };
|
|
17
|
+
}
|
|
18
|
+
const sharedFolder = storage.getByUid(folderHelpers_1.FolderKind.SharedFolder, uid);
|
|
19
|
+
if (sharedFolder) {
|
|
20
|
+
return {
|
|
21
|
+
uid: sharedFolder.uid,
|
|
22
|
+
name: (0, folderHelpers_1.sharedFolderName)(sharedFolder),
|
|
23
|
+
folderKind: folderHelpers_1.FolderKind.SharedFolder,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const sharedFolderFolder = storage.getByUid(folderHelpers_1.FolderKind.SharedFolderFolder, uid);
|
|
27
|
+
if (sharedFolderFolder) {
|
|
28
|
+
return {
|
|
29
|
+
uid: sharedFolderFolder.uid,
|
|
30
|
+
name: (0, folderHelpers_1.sharedFolderFolderName)(sharedFolderFolder),
|
|
31
|
+
folderKind: folderHelpers_1.FolderKind.SharedFolderFolder,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
async function findParentFolderUid(storage, folderUid) {
|
|
37
|
+
const rootFolderUids = new Set((await (0, listFolder_1.listRootUserFolders)(storage)).map((folder) => folder.uid));
|
|
38
|
+
if (rootFolderUids.has(folderUid))
|
|
39
|
+
return null;
|
|
40
|
+
const parentKinds = [
|
|
41
|
+
folderHelpers_1.FolderKind.UserFolder,
|
|
42
|
+
folderHelpers_1.FolderKind.SharedFolder,
|
|
43
|
+
folderHelpers_1.FolderKind.SharedFolderFolder,
|
|
44
|
+
folderHelpers_1.VaultObjectKind.Team,
|
|
45
|
+
];
|
|
46
|
+
for (const kind of parentKinds) {
|
|
47
|
+
for (const candidate of storage.getAll(kind)) {
|
|
48
|
+
const candidateUid = candidate.uid;
|
|
49
|
+
const dependencies = (await storage.getDependencies(candidateUid)) || [];
|
|
50
|
+
for (const dependency of dependencies) {
|
|
51
|
+
if (dependency.uid !== folderUid)
|
|
52
|
+
continue;
|
|
53
|
+
if (dependency.kind === folderHelpers_1.FolderKind.UserFolder ||
|
|
54
|
+
dependency.kind === folderHelpers_1.FolderKind.SharedFolder ||
|
|
55
|
+
dependency.kind === folderHelpers_1.FolderKind.SharedFolderFolder) {
|
|
56
|
+
return candidateUid;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
exports.findParentFolderUid = findParentFolderUid;
|
|
64
|
+
async function listFolderChildrenForCd(storage, parentUid) {
|
|
65
|
+
const result = await (0, listFolder_1.listFolder)(storage, {
|
|
66
|
+
folderUid: parentUid === null ? undefined : parentUid,
|
|
67
|
+
showFolders: true,
|
|
68
|
+
showRecords: false,
|
|
69
|
+
});
|
|
70
|
+
return result.folders;
|
|
71
|
+
}
|
|
72
|
+
function findChildFolder(children, component) {
|
|
73
|
+
const trimmedComponent = component.trim();
|
|
74
|
+
if (!trimmedComponent)
|
|
75
|
+
return undefined;
|
|
76
|
+
const matchByUid = children.find((child) => child.uid === trimmedComponent);
|
|
77
|
+
if (matchByUid)
|
|
78
|
+
return matchByUid;
|
|
79
|
+
const exactNameMatch = children.find((child) => child.name.trim() === trimmedComponent);
|
|
80
|
+
if (exactNameMatch)
|
|
81
|
+
return exactNameMatch;
|
|
82
|
+
const lowerComponent = trimmedComponent.toLowerCase();
|
|
83
|
+
return children.find((child) => child.name.trim().toLowerCase() === lowerComponent);
|
|
84
|
+
}
|
|
85
|
+
function splitPathComponents(path) {
|
|
86
|
+
const escaped = path.replace(/\/\//g, ESCAPED_SEPARATOR_PLACEHOLDER);
|
|
87
|
+
return escaped.split('/').map((segment) => segment.replace(/\x00/g, '/'));
|
|
88
|
+
}
|
|
89
|
+
exports.splitPathComponents = splitPathComponents;
|
|
90
|
+
async function tryResolvePath(storage, session, path) {
|
|
91
|
+
const trimmed = path.trim();
|
|
92
|
+
if (!trimmed) {
|
|
93
|
+
return { folderUid: session.currentFolderUid, remaining: '' };
|
|
94
|
+
}
|
|
95
|
+
const direct = getFolderEntryByUid(storage, trimmed);
|
|
96
|
+
if (direct) {
|
|
97
|
+
return { folderUid: direct.uid, remaining: '' };
|
|
98
|
+
}
|
|
99
|
+
const absolute = trimmed.startsWith('/') && !trimmed.startsWith('//');
|
|
100
|
+
const pathToWalk = absolute ? trimmed.slice(1) : trimmed;
|
|
101
|
+
const components = splitPathComponents(pathToWalk);
|
|
102
|
+
let folderUid = absolute ? null : session.currentFolderUid || null;
|
|
103
|
+
if (!absolute && folderUid !== null) {
|
|
104
|
+
if (!getFolderEntryByUid(storage, folderUid)) {
|
|
105
|
+
folderUid = null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
let componentIndex = 0;
|
|
109
|
+
while (componentIndex < components.length) {
|
|
110
|
+
const component = components[componentIndex];
|
|
111
|
+
componentIndex++;
|
|
112
|
+
if (component === '' || component === '.') {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (component === '..') {
|
|
116
|
+
if (folderUid === null) {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
folderUid = await findParentFolderUid(storage, folderUid);
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const children = await listFolderChildrenForCd(storage, folderUid);
|
|
123
|
+
const match = findChildFolder(children, component);
|
|
124
|
+
if (match) {
|
|
125
|
+
folderUid = match.uid;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const remaining = [component, ...components.slice(componentIndex)].join('/');
|
|
129
|
+
return { folderUid, remaining };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return { folderUid, remaining: '' };
|
|
133
|
+
}
|
|
134
|
+
exports.tryResolvePath = tryResolvePath;
|
|
135
|
+
async function resolveSingleFolder(storage, session, folderName) {
|
|
136
|
+
const trimmed = folderName.trim();
|
|
137
|
+
if (!trimmed) {
|
|
138
|
+
throw new utils_1.KeeperSdkError('Folder cannot be empty.', 'folder_required');
|
|
139
|
+
}
|
|
140
|
+
const direct = getFolderEntryByUid(storage, trimmed);
|
|
141
|
+
if (direct) {
|
|
142
|
+
return { folderUid: direct.uid, name: direct.name };
|
|
143
|
+
}
|
|
144
|
+
const { folderUid, remaining } = await tryResolvePath(storage, session, trimmed);
|
|
145
|
+
if (remaining) {
|
|
146
|
+
throw new utils_1.KeeperSdkError(`Folder "${folderName}" not found`, 'folder_not_found');
|
|
147
|
+
}
|
|
148
|
+
if (folderUid === null) {
|
|
149
|
+
return { folderUid: null, name: VAULT_ROOT_DISPLAY_NAME };
|
|
150
|
+
}
|
|
151
|
+
const entry = getFolderEntryByUid(storage, folderUid);
|
|
152
|
+
if (!entry) {
|
|
153
|
+
throw new utils_1.KeeperSdkError(`Folder "${folderName}" not found`, 'folder_not_found');
|
|
154
|
+
}
|
|
155
|
+
return { folderUid: entry.uid, name: entry.name };
|
|
156
|
+
}
|
|
157
|
+
exports.resolveSingleFolder = resolveSingleFolder;
|
|
158
|
+
async function changeDirectory(storage, session, path) {
|
|
159
|
+
const resolved = await resolveSingleFolder(storage, session, path);
|
|
160
|
+
session.currentFolderUid = resolved.folderUid;
|
|
161
|
+
return resolved;
|
|
162
|
+
}
|
|
163
|
+
exports.changeDirectory = changeDirectory;
|
|
164
|
+
function getWorkingFolderDisplayName(storage, currentFolderUid) {
|
|
165
|
+
if (currentFolderUid === null)
|
|
166
|
+
return VAULT_ROOT_DISPLAY_NAME;
|
|
167
|
+
const entry = getFolderEntryByUid(storage, currentFolderUid);
|
|
168
|
+
return (entry === null || entry === void 0 ? void 0 : entry.name) || VAULT_ROOT_DISPLAY_NAME;
|
|
169
|
+
}
|
|
170
|
+
exports.getWorkingFolderDisplayName = getWorkingFolderDisplayName;
|
|
171
|
+
//# sourceMappingURL=changeDirectory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeDirectory.js","sourceRoot":"","sources":["../../../src/folders/changeDirectory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Auth, DeleteObject } from '@keeper-security/keeperapi';
|
|
2
|
+
import { InMemoryStorage } from '../storage/InMemoryStorage';
|
|
3
|
+
import { type VaultFolderSession } from './changeDirectory';
|
|
4
|
+
export type DeleteFolderResult = {
|
|
5
|
+
success: boolean;
|
|
6
|
+
message?: string;
|
|
7
|
+
cancelled?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type RmdirOptions = {
|
|
10
|
+
force?: boolean;
|
|
11
|
+
quiet?: boolean;
|
|
12
|
+
confirm?: (summary: string) => boolean | Promise<boolean>;
|
|
13
|
+
};
|
|
14
|
+
export declare function buildFolderDeleteObject(storage: InMemoryStorage, folderUid: string): Promise<DeleteObject | null>;
|
|
15
|
+
export declare function deleteFolder(auth: Auth, storage: InMemoryStorage, folderRefs: string[], confirm?: (summary: string) => boolean | Promise<boolean>): Promise<DeleteFolderResult>;
|
|
16
|
+
export declare function resolveRmdirPatternsToFolderUids(storage: InMemoryStorage, session: VaultFolderSession, pattern: string): Promise<Set<string>>;
|
|
17
|
+
export declare function rmdir(auth: Auth, storage: InMemoryStorage, session: VaultFolderSession, patterns: string[], options?: RmdirOptions): Promise<DeleteFolderResult>;
|