| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| function keyIsFolder(key) { |
| return key ? !!key.match(/\/$/) : false; |
| } |
| |
| function keyPartsForKey(key) { |
| if (!key) { |
| return null; |
| } |
| var isFolder = keyIsFolder(key); |
| var parts = key.split('/'); |
| if (isFolder) { |
| parts.pop(); |
| } |
| return parts.length > 1 ? parts : null; |
| } |
| |
| function parentKeyForKey(key) { |
| var parts = keyPartsForKey(key); |
| if (!parts) { |
| return null; |
| } |
| return parts.slice(0, -1).join('/') + '/'; |
| } |
| |
| function keyWithoutParentKey(key) { |
| return key ? key.replace(parentKeyForKey(key), '') : null; |
| } |
| |
| function ancestorKeysForKey(key) { |
| var ancestors = [], |
| parentKey = parentKeyForKey(key); |
| |
| while (parentKey) { |
| ancestors.unshift(parentKey); |
| parentKey = parentKeyForKey(parentKey); |
| } |
| |
| return ancestors; |
| } |
| |
| export default { |
| keyIsFolder, |
| keyPartsForKey, |
| parentKeyForKey, |
| keyWithoutParentKey, |
| ancestorKeysForKey, |
| }; |