@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,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":";;;AACA,0DAOmC;AAGnC,oCAAyE;AACzE,6CAAyC;AACzC,uDAAgG;AAChG,mDAAkF;AAmClF,SAAS,oBAAoB,CAAC,OAAwB,EAAE,SAAwB;IAC5E,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,EAAE,EAAE;QACxC,OAAO,EAAE,IAAI,EAAE,gCAAgB,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,CAAA;KACtE;IACD,IAAI,OAAO,CAAC,QAAQ,CAAc,0BAAU,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;QACjE,OAAO,EAAE,IAAI,EAAE,gCAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,CAAA;KACrE;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAgB,0BAAU,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACxF,IAAI,YAAY,EAAE;QACd,OAAO,EAAE,IAAI,EAAE,gCAAgB,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC,GAAG,EAAE,CAAA;KACnF;IACD,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAsB,0BAAU,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAA;IAC1G,IAAI,kBAAkB,EAAE;QACpB,OAAO;YACH,IAAI,EAAE,gCAAgB,CAAC,kBAAkB;YACzC,cAAc,EAAE,kBAAkB,CAAC,eAAe;SACrD,CAAA;KACJ;IACD,MAAM,IAAI,sBAAc,CAAC,kBAAkB,SAAS,aAAa,EAAE,kBAAkB,CAAC,CAAA;AAC1F,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAqB,EAAE,cAAuB;IACvE,IAAI,cAAc,EAAE;QAChB,IAAI,MAAM,CAAC,IAAI,KAAK,gCAAgB,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,gCAAgB,CAAC,WAAW,EAAE;YAC7F,MAAM,IAAI,sBAAc,CACpB,8DAA8D,EAC9D,sBAAsB,CACzB,CAAA;SACJ;QACD,OAAO,0BAAU,CAAC,YAAY,CAAA;KACjC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,gCAAgB,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,gCAAgB,CAAC,UAAU,EAAE;QAC7F,OAAO,0BAAU,CAAC,UAAU,CAAA;KAC/B;IACD,OAAO,0BAAU,CAAC,kBAAkB,CAAA;AACxC,CAAC;AAED,KAAK,UAAU,4BAA4B,CACvC,IAAU,EACV,OAAwB,EACxB,UAAyB,EACzB,cAA6B;IAE7B,IAAI,UAAU,KAAK,0BAAU,CAAC,kBAAkB,EAAE;QAC9C,IAAI,CAAC,cAAc,EAAE;YACjB,MAAM,IAAI,sBAAc,CAAC,4CAA4C,EAAE,6BAA6B,CAAC,CAAA;SACxG;QACD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;QACjE,IAAI,CAAC,eAAe,EAAE;YAClB,MAAM,IAAI,sBAAc,CACpB,2EAA2E,EAC3E,2BAA2B,CAC9B,CAAA;SACJ;QACD,OAAO,eAAe,CAAA;KACzB;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;QACf,MAAM,IAAI,sBAAc,CAAC,mDAAmD,EAAE,kBAAkB,CAAC,CAAA;KACpG;IACD,OAAO,IAAI,CAAC,OAAO,CAAA;AACvB,CAAC;AAED,KAAK,UAAU,wBAAwB,CACnC,OAAwB,EACxB,SAAwB,EACxB,IAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAU,EAAC,OAAO,EAAE;QACrC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACrD,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,KAAK;KACrB,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC/B,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;IAC3C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;QACjC,IAAI,MAAM,CAAC,GAAG,KAAK,WAAW;YAAE,OAAO,MAAM,CAAC,GAAG,CAAA;QACjD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;YAAE,OAAO,MAAM,CAAC,GAAG,CAAA;QACzD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,GAAG,CAAA;KACxE;IACD,OAAO,SAAS,CAAA;AACpB,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAAwB,EAAE,KAAqB;;IACvF,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,EAAE,CAAA;IACrC,IAAI,CAAC,IAAI,EAAE;QACP,MAAM,IAAI,sBAAc,CAAC,8BAA8B,EAAE,sBAAsB,CAAC,CAAA;KACnF;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAA;IAClG,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAEvD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,KAAK,IAAI,CAAA;IAC9C,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAExD,MAAM,SAAS,GAAG,IAAA,uBAAW,GAAE,CAAA;IAC/B,MAAM,SAAS,GAAG,IAAA,iCAAqB,GAAE,CAAA;IAEzC,MAAM,WAAW,GAAG,UAAU,KAAK,0BAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAA;IAE/F,MAAM,aAAa,GAAG,MAAM,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IAEhG,MAAM,OAAO,GAAqB;QAC9B,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,UAAU;QACvB,GAAG,EAAE,MAAM,IAAA,6BAAiB,EAAC,SAAS,EAAE,aAAa,CAAC;QACtD,IAAI,EAAE,MAAM,IAAA,mCAAuB,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC;QACrE,IAAI,EAAE,KAAK;KACd,CAAA;IAED,IAAI,SAAS,EAAE;QACX,OAAO,CAAC,UAAU,GAAG,SAAS,CAAA;KACjC;IACD,IAAI,UAAU,KAAK,0BAAU,CAAC,kBAAkB,IAAI,WAAW,EAAE;QAC7D,OAAO,CAAC,iBAAiB,GAAG,WAAW,CAAA;KAC1C;IAED,IAAI,UAAU,KAAK,0BAAU,CAAC,YAAY,EAAE;QACxC,OAAO,CAAC,IAAI,GAAG,MAAM,IAAA,6BAAiB,EAAC,oBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAA;QAC/E,OAAO,CAAC,YAAY,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAA;QAC/E,OAAO,CAAC,cAAc,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAA;QACrF,OAAO,CAAC,QAAQ,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;QACnE,OAAO,CAAC,SAAS,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAA;KACzE;IAED,IAAI;QACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAA,4BAAgB,EAAC,OAAO,CAAC,CAAC,CAAA;QACzE,MAAM,SAAS,GACX,QAAQ,CAAC,MAAM,KAAK,kCAAkB,CAAC,OAAO,IAAI,QAAQ,CAAC,WAAW,KAAK,kCAAkB,CAAC,OAAO,CAAA;QACzG,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,MAAM,GACR,QAAQ,CAAC,OAAO;gBAChB,QAAQ,CAAC,WAAW;gBACpB,0BAA0B,IAAI,UAAU,SAAS,UAAU,UAAU,8CAA8C,CAAA;YACvH,OAAO;gBACH,SAAS;gBACT,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,MAAM;aAClB,CAAA;SACJ;QACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;KACtC;IAAC,OAAO,GAAG,EAAE;QACV,OAAO;YACH,SAAS;YACT,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,0BAA0B,IAAI,UAAU,SAAS,UAAU,UAAU,MAAM,IAAA,2BAAmB,EAAC,GAAG,CAAC,EAAE;SACjH,CAAA;KACJ;AACL,CAAC;AAjED,8BAiEC;AAEM,KAAK,UAAU,KAAK,CACvB,IAAU,EACV,OAAwB,EACxB,OAA2B,EAC3B,IAAY,EACZ,UAAwB,EAAE;IAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,CAAC,OAAO,EAAE;QACV,MAAM,IAAI,sBAAc,CAAC,8BAA8B,EAAE,sBAAsB,CAAC,CAAA;KACnF;IAED,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE;QAC5C,MAAM,IAAI,sBAAc,CAAC,yDAAyD,EAAE,sBAAsB,CAAC,CAAA;KAC9G;IAED,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,gCAAc,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACzF,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;QACnB,MAAM,IAAI,sBAAc,CAAC,WAAW,OAAO,mBAAmB,EAAE,uBAAuB,CAAC,CAAA;KAC3F;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAA;IAC1C,IAAI,WAAW,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAA;IAC9E,IAAI,aAAa,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAA;IACpF,IAAI,QAAQ,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAA;IACrE,IAAI,OAAO,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;IAClE,IAAI,QAAQ,EAAE;QACV,WAAW,GAAG,IAAI,CAAA;QAClB,aAAa,GAAG,IAAI,CAAA;QACpB,QAAQ,GAAG,IAAI,CAAA;QACf,OAAO,GAAG,IAAI,CAAA;KACjB;IAED,MAAM,QAAQ,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC;SAC1C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SAChC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG,CAAC,CAAA;IAE3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,MAAM,IAAI,sBAAc,CAAC,WAAW,OAAO,mBAAmB,EAAE,uBAAuB,CAAC,CAAA;KAC3F;IAED,IAAI,aAAa,GAAkB,OAAO,CAAA;IAC1C,IAAI,UAAU,GAAoB;QAC9B,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,SAAS;KACrB,CAAA;IAED,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;QACtC,MAAM,aAAa,GAAG,YAAY,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QAC1D,MAAM,gBAAgB,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;QACxF,IAAI,gBAAgB,EAAE;YAClB,IAAI,aAAa,EAAE;gBACf,MAAM,IAAI,sBAAc,CAAC,WAAW,OAAO,mBAAmB,EAAE,uBAAuB,CAAC,CAAA;aAC3F;YACD,aAAa,GAAG,gBAAgB,CAAA;YAChC,SAAQ;SACX;QAED,MAAM,oBAAoB,GAAG,aAAa,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAA;QAE3E,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAClE,IACI,oBAAoB;YACpB,aAAa,CAAC,IAAI,KAAK,gCAAgB,CAAC,UAAU;YAClD,aAAa,CAAC,IAAI,KAAK,gCAAgB,CAAC,WAAW,EACrD;YACE,MAAM,IAAI,sBAAc,CACpB,6DAA6D,EAC7D,8BAA8B,CACjC,CAAA;SACJ;QAED,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE;YACxC,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,aAAa;YACxB,cAAc,EAAE,oBAAoB;YACpC,WAAW,EAAE,aAAa,IAAI,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YAC5E,aAAa,EAAE,aAAa,IAAI,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YAChF,QAAQ,EAAE,aAAa,IAAI,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACtE,OAAO,EAAE,aAAa,IAAI,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SACvE,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACrB,OAAO;gBACH,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,UAAU,CAAC,OAAO;aAC9B,CAAA;SACJ;QACD,aAAa,GAAG,UAAU,CAAC,SAAS,CAAA;KACvC;IAED,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC7D,CAAC;AA/FD,sBA+FC"}
@@ -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>;