obsidian-dev-utils 3.28.1 → 3.29.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/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 3.29.0
4
+
5
+ - Ensure file's folder created
6
+ - Add `getOrCreateFile`/`getOrCreateFolder`
7
+
8
+ ## 3.28.2
9
+
10
+ - Refactor
11
+
3
12
  ## 3.28.1
4
13
 
5
14
  - Avoid extra dot
@@ -30,7 +30,6 @@ __export(AttachmentPath_exports, {
30
30
  getAvailablePathForAttachments: () => getAvailablePathForAttachments
31
31
  });
32
32
  module.exports = __toCommonJS(AttachmentPath_exports);
33
- var import_obsidian = require('obsidian');
34
33
  var import_implementations = require('obsidian-typings/implementations');
35
34
  var import_Path = require('../Path.cjs');
36
35
  var import_String = require('../String.cjs');
@@ -75,7 +74,7 @@ async function getAvailablePathForAttachments(app, filename, extension, file, sk
75
74
  }
76
75
  attachmentFolderPath = (0, import_String.normalize)(normalizeSlashes(attachmentFolderPath));
77
76
  filename = (0, import_String.normalize)(normalizeSlashes(filename));
78
- let folder = (0, import_FileSystem.getAbstractFileOrNull)(app, attachmentFolderPath, true);
77
+ let folder = (0, import_FileSystem.getFolderOrNull)(app, attachmentFolderPath, true);
79
78
  if (!folder && relativePath) {
80
79
  if (!skipFolderCreation) {
81
80
  folder = await app.vault.createFolder(attachmentFolderPath);
@@ -83,11 +82,8 @@ async function getAvailablePathForAttachments(app, filename, extension, file, sk
83
82
  folder = (0, import_implementations.createTFolderInstance)(app.vault, attachmentFolderPath);
84
83
  }
85
84
  }
86
- if (folder instanceof import_obsidian.TFolder) {
87
- return app.vault.getAvailablePath(folder.getParentPrefix() + filename, extension);
88
- } else {
89
- return app.vault.getAvailablePath(filename, extension);
90
- }
85
+ const prefix = folder?.getParentPrefix() ?? "";
86
+ return app.vault.getAvailablePath(prefix + filename, extension);
91
87
  }
92
88
  function normalizeSlashes(path) {
93
89
  path = path.replace(/([\\/])+/g, "/");
@@ -100,4 +96,4 @@ function normalizeSlashes(path) {
100
96
  getAttachmentFolderPath,
101
97
  getAvailablePathForAttachments
102
98
  });
103
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0F0dGFjaG1lbnRQYXRoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzWydpbXBvcnQubWV0YS51cmwnXSA/PyAoKCk9PntpZih0eXBlb2YgX19maWxlbmFtZSE9PVwic3RyaW5nXCIpe3JldHVybiBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKX1yZXR1cm4gcmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSl9KSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBBdHRhY2htZW50UGF0aFxuICogUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBhdHRhY2htZW50IHBhdGhzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IFRGb2xkZXIgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBjcmVhdGVURmlsZUluc3RhbmNlLFxuICBjcmVhdGVURm9sZGVySW5zdGFuY2UsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZXh0bmFtZVxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7XG4gIG5vcm1hbGl6ZSxcbiAgdHJpbVN0YXJ0XG59IGZyb20gJy4uL1N0cmluZy50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWJzdHJhY3RGaWxlT3JOdWxsLFxuICBnZXRQYXRoXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZvciBhIGdpdmVuIG5vdGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBub3RlUGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHA6IEFwcCwgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gcGFyZW50Rm9sZGVyUGF0aChhd2FpdCBnZXRBdHRhY2htZW50RmlsZVBhdGgoYXBwLCAnRFVNTVlfRklMRS5wZGYnLCBub3RlUGF0aE9yRmlsZSkpO1xufVxuXG4vKipcbiAqIElzIG92ZXJyaWRkZW4gd3JhcHBlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZFdyYXBwZXIge1xuICAvKipcbiAgICogSXMgZXh0ZW5kZWQuXG4gICAqL1xuICBpc0V4dGVuZGVkOiB0cnVlO1xufVxuXG4vKipcbiAqIEdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRm4gPSAoZmlsZW5hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcsIGZpbGU6IFRBYnN0cmFjdEZpbGUgfCBudWxsLCBza2lwRm9sZGVyQ3JlYXRpb24/OiBib29sZWFuKSA9PiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmaWxlIHBhdGggZm9yIGFuIGF0dGFjaG1lbnQgd2l0aGluIGEgbm90ZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGF0dGFjaG1lbnRQYXRoT3JGaWxlIC0gVGhlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gKiBAcGFyYW0gbm90ZVBhdGhPckZpbGUgLSBUaGUgcGF0aCBvZiB0aGUgbm90ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBmaWxlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50RmlsZVBhdGgoYXBwOiBBcHAsIGF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGF0dGFjaG1lbnRQYXRoID0gZ2V0UGF0aChhdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IG5vdGVQYXRoID0gZ2V0UGF0aChub3RlUGF0aE9yRmlsZSk7XG4gIGNvbnN0IG5vdGUgPSBjcmVhdGVURmlsZUluc3RhbmNlKGFwcC52YXVsdCwgbm90ZVBhdGgpO1xuICBjb25zdCBleHQgPSBleHRuYW1lKGF0dGFjaG1lbnRQYXRoKTtcbiAgY29uc3QgZmlsZU5hbWUgPSBiYXNlbmFtZShhdHRhY2htZW50UGF0aCwgZXh0KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG4gIGNvbnN0IGludGVybmFsRm4gPSBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzO1xuICBpZiAoKGludGVybmFsRm4gYXMgUGFydGlhbDxFeHRlbmRlZFdyYXBwZXI+KS5pc0V4dGVuZGVkKSB7XG4gICAgcmV0dXJuIChpbnRlcm5hbEZuIGFzIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRm4pKGZpbGVOYW1lLCBleHQuc2xpY2UoMSksIG5vdGUsIHRydWUpO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyhhcHAsIGZpbGVOYW1lLCBleHQuc2xpY2UoMSksIG5vdGUsIHRydWUpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlbmFtZSAtIE5hbWUgb2YgdGhlIGZpbGUuXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gRXh0ZW5zaW9uIG9mIHRoZSBmaWxlLlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBhdHRhY2ggdG8uXG4gKiBAcGFyYW0gc2tpcEZvbGRlckNyZWF0aW9uIC0gU2hvdWxkIGZvbGRlciBjcmVhdGlvbiBiZSBza2lwcGVkP1xuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyhhcHA6IEFwcCwgZmlsZW5hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcsIGZpbGU6IFRBYnN0cmFjdEZpbGUgfCBudWxsLCBza2lwRm9sZGVyQ3JlYXRpb246IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBsZXQgYXR0YWNobWVudEZvbGRlclBhdGggPSBhcHAudmF1bHQuZ2V0Q29uZmlnKCdhdHRhY2htZW50Rm9sZGVyUGF0aCcpIGFzIHN0cmluZztcbiAgY29uc3QgaXNDdXJyZW50Rm9sZGVyID0gYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuJyB8fCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gJy4vJztcbiAgbGV0IHJlbGF0aXZlUGF0aCA9IG51bGw7XG5cbiAgaWYgKGF0dGFjaG1lbnRGb2xkZXJQYXRoLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICByZWxhdGl2ZVBhdGggPSB0cmltU3RhcnQoYXR0YWNobWVudEZvbGRlclBhdGgsICcuLycpO1xuICB9XG5cbiAgaWYgKGlzQ3VycmVudEZvbGRlcikge1xuICAgIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gZmlsZSA/IGZpbGUucGFyZW50Py5wYXRoID8/ICcnIDogJyc7XG4gIH0gZWxzZSBpZiAocmVsYXRpdmVQYXRoKSB7XG4gICAgYXR0YWNobWVudEZvbGRlclBhdGggPSAoZmlsZSA/IGZpbGUucGFyZW50Py5nZXRQYXJlbnRQcmVmaXgoKSA/PyAnJyA6ICcnKSArIHJlbGF0aXZlUGF0aDtcbiAgfVxuXG4gIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gbm9ybWFsaXplKG5vcm1hbGl6ZVNsYXNoZXMoYXR0YWNobWVudEZvbGRlclBhdGgpKTtcbiAgZmlsZW5hbWUgPSBub3JtYWxpemUobm9ybWFsaXplU2xhc2hlcyhmaWxlbmFtZSkpO1xuXG4gIGxldCBmb2xkZXIgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBhdHRhY2htZW50Rm9sZGVyUGF0aCwgdHJ1ZSk7XG5cbiAgaWYgKCFmb2xkZXIgJiYgcmVsYXRpdmVQYXRoKSB7XG4gICAgaWYgKCFza2lwRm9sZGVyQ3JlYXRpb24pIHtcbiAgICAgIGZvbGRlciA9IGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIoYXR0YWNobWVudEZvbGRlclBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb2xkZXIgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwLnZhdWx0LCBhdHRhY2htZW50Rm9sZGVyUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZvbGRlciBpbnN0YW5jZW9mIFRGb2xkZXIpIHtcbiAgICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoZm9sZGVyLmdldFBhcmVudFByZWZpeCgpICsgZmlsZW5hbWUsIGV4dGVuc2lvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFwcC52YXVsdC5nZXRBdmFpbGFibGVQYXRoKGZpbGVuYW1lLCBleHRlbnNpb24pO1xuICB9XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGggYnkgY29tYmluaW5nIG11bHRpcGxlIHNsYXNoZXMgaW50byBhIHNpbmdsZSBzbGFzaCBhbmQgcmVtb3ZpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcy5cbiAqIEBwYXJhbSBwYXRoIC0gUGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTbGFzaGVzKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHBhdGggPSBwYXRoLnJlcGxhY2UoLyhbXFxcXC9dKSsvZywgJy8nKTtcbiAgcGF0aCA9IHBhdGgucmVwbGFjZSgvKF5cXC8rfFxcLyskKS9nLCAnJyk7XG4gIHJldHVybiBwYXRoIHx8ICcvJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBLHNCQUF3QjtBQUN4Qiw2QkFJTztBQUVQLGtCQUdPO0FBQ1Asb0JBR087QUFFUCx3QkFHTztBQWxDUCxJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUk7QUFBQyxNQUFHLE9BQU8sZUFBYSxVQUFTO0FBQUMsV0FBTyxJQUFJLElBQUksT0FBTyxTQUFTLElBQUk7QUFBQSxFQUFDO0FBQUMsU0FBTyxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVU7QUFBQyxHQUFHO0FBQzVMLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFzQ0EsZUFBc0Isd0JBQXdCLEtBQVUsZ0JBQTZDO0FBQ25HLGFBQU8seUNBQWlCLE1BQU0sc0JBQXNCLEtBQUssa0JBQWtCLGNBQWMsQ0FBQztBQUM1RjtBQXlCQSxlQUFzQixzQkFBc0IsS0FBVSxzQkFBa0MsZ0JBQTZDO0FBQ25JLFFBQU0scUJBQWlCLDJCQUFRLG9CQUFvQjtBQUNuRCxRQUFNLGVBQVcsMkJBQVEsY0FBYztBQUN2QyxRQUFNLFdBQU8sNENBQW9CLElBQUksT0FBTyxRQUFRO0FBQ3BELFFBQU0sVUFBTSxxQkFBUSxjQUFjO0FBQ2xDLFFBQU0sZUFBVyxzQkFBUyxnQkFBZ0IsR0FBRztBQUc3QyxRQUFNLGFBQWEsSUFBSSxNQUFNO0FBQzdCLE1BQUssV0FBd0MsWUFBWTtBQUN2RCxXQUFRLFdBQXdELFVBQVUsSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUk7QUFBQSxFQUNwRztBQUVBLFNBQU8sTUFBTSwrQkFBK0IsS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJO0FBQ3JGO0FBV0EsZUFBc0IsK0JBQStCLEtBQVUsVUFBa0IsV0FBbUIsTUFBNEIsb0JBQThDO0FBQzVLLE1BQUksdUJBQXVCLElBQUksTUFBTSxVQUFVLHNCQUFzQjtBQUNyRSxRQUFNLGtCQUFrQix5QkFBeUIsT0FBTyx5QkFBeUI7QUFDakYsTUFBSSxlQUFlO0FBRW5CLE1BQUkscUJBQXFCLFdBQVcsSUFBSSxHQUFHO0FBQ3pDLHVCQUFlLHlCQUFVLHNCQUFzQixJQUFJO0FBQUEsRUFDckQ7QUFFQSxNQUFJLGlCQUFpQjtBQUNuQiwyQkFBdUIsT0FBTyxLQUFLLFFBQVEsUUFBUSxLQUFLO0FBQUEsRUFDMUQsV0FBVyxjQUFjO0FBQ3ZCLDRCQUF3QixPQUFPLEtBQUssUUFBUSxnQkFBZ0IsS0FBSyxLQUFLLE1BQU07QUFBQSxFQUM5RTtBQUVBLDZCQUF1Qix5QkFBVSxpQkFBaUIsb0JBQW9CLENBQUM7QUFDdkUsaUJBQVcseUJBQVUsaUJBQWlCLFFBQVEsQ0FBQztBQUUvQyxNQUFJLGFBQVMseUNBQXNCLEtBQUssc0JBQXNCLElBQUk7QUFFbEUsTUFBSSxDQUFDLFVBQVUsY0FBYztBQUMzQixRQUFJLENBQUMsb0JBQW9CO0FBQ3ZCLGVBQVMsTUFBTSxJQUFJLE1BQU0sYUFBYSxvQkFBb0I7QUFBQSxJQUM1RCxPQUFPO0FBQ0wsbUJBQVMsOENBQXNCLElBQUksT0FBTyxvQkFBb0I7QUFBQSxJQUNoRTtBQUFBLEVBQ0Y7QUFFQSxNQUFJLGtCQUFrQix5QkFBUztBQUM3QixXQUFPLElBQUksTUFBTSxpQkFBaUIsT0FBTyxnQkFBZ0IsSUFBSSxVQUFVLFNBQVM7QUFBQSxFQUNsRixPQUFPO0FBQ0wsV0FBTyxJQUFJLE1BQU0saUJBQWlCLFVBQVUsU0FBUztBQUFBLEVBQ3ZEO0FBQ0Y7QUFPQSxTQUFTLGlCQUFpQixNQUFzQjtBQUM5QyxTQUFPLEtBQUssUUFBUSxhQUFhLEdBQUc7QUFDcEMsU0FBTyxLQUFLLFFBQVEsZ0JBQWdCLEVBQUU7QUFDdEMsU0FBTyxRQUFRO0FBQ2pCOyIsCiAgIm5hbWVzIjogW10KfQo=
99
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0F0dGFjaG1lbnRQYXRoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzWydpbXBvcnQubWV0YS51cmwnXSA/PyAoKCk9PntpZih0eXBlb2YgX19maWxlbmFtZSE9PVwic3RyaW5nXCIpe3JldHVybiBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKX1yZXR1cm4gcmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSl9KSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBBdHRhY2htZW50UGF0aFxuICogUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBhdHRhY2htZW50IHBhdGhzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBjcmVhdGVURmlsZUluc3RhbmNlLFxuICBjcmVhdGVURm9sZGVySW5zdGFuY2UsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZXh0bmFtZVxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7XG4gIG5vcm1hbGl6ZSxcbiAgdHJpbVN0YXJ0XG59IGZyb20gJy4uL1N0cmluZy50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZvciBhIGdpdmVuIG5vdGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBub3RlUGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHA6IEFwcCwgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gcGFyZW50Rm9sZGVyUGF0aChhd2FpdCBnZXRBdHRhY2htZW50RmlsZVBhdGgoYXBwLCAnRFVNTVlfRklMRS5wZGYnLCBub3RlUGF0aE9yRmlsZSkpO1xufVxuXG4vKipcbiAqIElzIG92ZXJyaWRkZW4gd3JhcHBlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZFdyYXBwZXIge1xuICAvKipcbiAgICogSXMgZXh0ZW5kZWQuXG4gICAqL1xuICBpc0V4dGVuZGVkOiB0cnVlO1xufVxuXG4vKipcbiAqIEdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRm4gPSAoZmlsZW5hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcsIGZpbGU6IFRGaWxlIHwgbnVsbCwgc2tpcEZvbGRlckNyZWF0aW9uPzogYm9vbGVhbikgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZmlsZSBwYXRoIGZvciBhbiBhdHRhY2htZW50IHdpdGhpbiBhIG5vdGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBhdHRhY2htZW50UGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICogQHBhcmFtIG5vdGVQYXRoT3JGaWxlIC0gVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZpbGVQYXRoKGFwcDogQXBwLCBhdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBhdHRhY2htZW50UGF0aCA9IGdldFBhdGgoYXR0YWNobWVudFBhdGhPckZpbGUpO1xuICBjb25zdCBub3RlUGF0aCA9IGdldFBhdGgobm90ZVBhdGhPckZpbGUpO1xuICBjb25zdCBub3RlID0gY3JlYXRlVEZpbGVJbnN0YW5jZShhcHAudmF1bHQsIG5vdGVQYXRoKTtcbiAgY29uc3QgZXh0ID0gZXh0bmFtZShhdHRhY2htZW50UGF0aCk7XG4gIGNvbnN0IGZpbGVOYW1lID0gYmFzZW5hbWUoYXR0YWNobWVudFBhdGgsIGV4dCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuICBjb25zdCBpbnRlcm5hbEZuID0gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cztcbiAgaWYgKChpbnRlcm5hbEZuIGFzIFBhcnRpYWw8RXh0ZW5kZWRXcmFwcGVyPikuaXNFeHRlbmRlZCkge1xuICAgIHJldHVybiAoaW50ZXJuYWxGbiBhcyBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZuKShmaWxlTmFtZSwgZXh0LnNsaWNlKDEpLCBub3RlLCB0cnVlKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMoYXBwLCBmaWxlTmFtZSwgZXh0LnNsaWNlKDEpLCBub3RlLCB0cnVlKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZW5hbWUgLSBOYW1lIG9mIHRoZSBmaWxlLlxuICogQHBhcmFtIGV4dGVuc2lvbiAtIEV4dGVuc2lvbiBvZiB0aGUgZmlsZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gYXR0YWNoIHRvLlxuICogQHBhcmFtIHNraXBGb2xkZXJDcmVhdGlvbiAtIFNob3VsZCBmb2xkZXIgY3JlYXRpb24gYmUgc2tpcHBlZD9cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMoYXBwOiBBcHAsIGZpbGVuYW1lOiBzdHJpbmcsIGV4dGVuc2lvbjogc3RyaW5nLCBmaWxlOiBURmlsZSB8IG51bGwsIHNraXBGb2xkZXJDcmVhdGlvbjogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGxldCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IGFwcC52YXVsdC5nZXRDb25maWcoJ2F0dGFjaG1lbnRGb2xkZXJQYXRoJykgYXMgc3RyaW5nO1xuICBjb25zdCBpc0N1cnJlbnRGb2xkZXIgPSBhdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gJy4nIHx8IGF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSAnLi8nO1xuICBsZXQgcmVsYXRpdmVQYXRoID0gbnVsbDtcblxuICBpZiAoYXR0YWNobWVudEZvbGRlclBhdGguc3RhcnRzV2l0aCgnLi8nKSkge1xuICAgIHJlbGF0aXZlUGF0aCA9IHRyaW1TdGFydChhdHRhY2htZW50Rm9sZGVyUGF0aCwgJy4vJyk7XG4gIH1cblxuICBpZiAoaXNDdXJyZW50Rm9sZGVyKSB7XG4gICAgYXR0YWNobWVudEZvbGRlclBhdGggPSBmaWxlID8gZmlsZS5wYXJlbnQ/LnBhdGggPz8gJycgOiAnJztcbiAgfSBlbHNlIGlmIChyZWxhdGl2ZVBhdGgpIHtcbiAgICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IChmaWxlID8gZmlsZS5wYXJlbnQ/LmdldFBhcmVudFByZWZpeCgpID8/ICcnIDogJycpICsgcmVsYXRpdmVQYXRoO1xuICB9XG5cbiAgYXR0YWNobWVudEZvbGRlclBhdGggPSBub3JtYWxpemUobm9ybWFsaXplU2xhc2hlcyhhdHRhY2htZW50Rm9sZGVyUGF0aCkpO1xuICBmaWxlbmFtZSA9IG5vcm1hbGl6ZShub3JtYWxpemVTbGFzaGVzKGZpbGVuYW1lKSk7XG5cbiAgbGV0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGF0dGFjaG1lbnRGb2xkZXJQYXRoLCB0cnVlKTtcblxuICBpZiAoIWZvbGRlciAmJiByZWxhdGl2ZVBhdGgpIHtcbiAgICBpZiAoIXNraXBGb2xkZXJDcmVhdGlvbikge1xuICAgICAgZm9sZGVyID0gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihhdHRhY2htZW50Rm9sZGVyUGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvbGRlciA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHAudmF1bHQsIGF0dGFjaG1lbnRGb2xkZXJQYXRoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBwcmVmaXggPSBmb2xkZXI/LmdldFBhcmVudFByZWZpeCgpID8/ICcnO1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgocHJlZml4ICsgZmlsZW5hbWUsIGV4dGVuc2lvbik7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGggYnkgY29tYmluaW5nIG11bHRpcGxlIHNsYXNoZXMgaW50byBhIHNpbmdsZSBzbGFzaCBhbmQgcmVtb3ZpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcy5cbiAqIEBwYXJhbSBwYXRoIC0gUGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTbGFzaGVzKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHBhdGggPSBwYXRoLnJlcGxhY2UoLyhbXFxcXC9dKSsvZywgJy8nKTtcbiAgcGF0aCA9IHBhdGgucmVwbGFjZSgvKF5cXC8rfFxcLyskKS9nLCAnJyk7XG4gIHJldHVybiBwYXRoIHx8ICcvJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBLDZCQUlPO0FBRVAsa0JBR087QUFDUCxvQkFHTztBQUVQLHdCQUdPO0FBakNQLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSTtBQUFDLE1BQUcsT0FBTyxlQUFhLFVBQVM7QUFBQyxXQUFPLElBQUksSUFBSSxPQUFPLFNBQVMsSUFBSTtBQUFBLEVBQUM7QUFBQyxTQUFPLFFBQVEsVUFBVSxFQUFFLGNBQWMsVUFBVTtBQUFDLEdBQUc7QUFDNUwsSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQXFDQSxlQUFzQix3QkFBd0IsS0FBVSxnQkFBNkM7QUFDbkcsYUFBTyx5Q0FBaUIsTUFBTSxzQkFBc0IsS0FBSyxrQkFBa0IsY0FBYyxDQUFDO0FBQzVGO0FBeUJBLGVBQXNCLHNCQUFzQixLQUFVLHNCQUFrQyxnQkFBNkM7QUFDbkksUUFBTSxxQkFBaUIsMkJBQVEsb0JBQW9CO0FBQ25ELFFBQU0sZUFBVywyQkFBUSxjQUFjO0FBQ3ZDLFFBQU0sV0FBTyw0Q0FBb0IsSUFBSSxPQUFPLFFBQVE7QUFDcEQsUUFBTSxVQUFNLHFCQUFRLGNBQWM7QUFDbEMsUUFBTSxlQUFXLHNCQUFTLGdCQUFnQixHQUFHO0FBRzdDLFFBQU0sYUFBYSxJQUFJLE1BQU07QUFDN0IsTUFBSyxXQUF3QyxZQUFZO0FBQ3ZELFdBQVEsV0FBd0QsVUFBVSxJQUFJLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSTtBQUFBLEVBQ3BHO0FBRUEsU0FBTyxNQUFNLCtCQUErQixLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUk7QUFDckY7QUFXQSxlQUFzQiwrQkFBK0IsS0FBVSxVQUFrQixXQUFtQixNQUFvQixvQkFBOEM7QUFDcEssTUFBSSx1QkFBdUIsSUFBSSxNQUFNLFVBQVUsc0JBQXNCO0FBQ3JFLFFBQU0sa0JBQWtCLHlCQUF5QixPQUFPLHlCQUF5QjtBQUNqRixNQUFJLGVBQWU7QUFFbkIsTUFBSSxxQkFBcUIsV0FBVyxJQUFJLEdBQUc7QUFDekMsdUJBQWUseUJBQVUsc0JBQXNCLElBQUk7QUFBQSxFQUNyRDtBQUVBLE1BQUksaUJBQWlCO0FBQ25CLDJCQUF1QixPQUFPLEtBQUssUUFBUSxRQUFRLEtBQUs7QUFBQSxFQUMxRCxXQUFXLGNBQWM7QUFDdkIsNEJBQXdCLE9BQU8sS0FBSyxRQUFRLGdCQUFnQixLQUFLLEtBQUssTUFBTTtBQUFBLEVBQzlFO0FBRUEsNkJBQXVCLHlCQUFVLGlCQUFpQixvQkFBb0IsQ0FBQztBQUN2RSxpQkFBVyx5QkFBVSxpQkFBaUIsUUFBUSxDQUFDO0FBRS9DLE1BQUksYUFBUyxtQ0FBZ0IsS0FBSyxzQkFBc0IsSUFBSTtBQUU1RCxNQUFJLENBQUMsVUFBVSxjQUFjO0FBQzNCLFFBQUksQ0FBQyxvQkFBb0I7QUFDdkIsZUFBUyxNQUFNLElBQUksTUFBTSxhQUFhLG9CQUFvQjtBQUFBLElBQzVELE9BQU87QUFDTCxtQkFBUyw4Q0FBc0IsSUFBSSxPQUFPLG9CQUFvQjtBQUFBLElBQ2hFO0FBQUEsRUFDRjtBQUVBLFFBQU0sU0FBUyxRQUFRLGdCQUFnQixLQUFLO0FBQzVDLFNBQU8sSUFBSSxNQUFNLGlCQUFpQixTQUFTLFVBQVUsU0FBUztBQUNoRTtBQU9BLFNBQVMsaUJBQWlCLE1BQXNCO0FBQzlDLFNBQU8sS0FBSyxRQUFRLGFBQWEsR0FBRztBQUNwQyxTQUFPLEtBQUssUUFBUSxnQkFBZ0IsRUFBRTtBQUN0QyxTQUFPLFFBQVE7QUFDakI7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -2,7 +2,7 @@
2
2
  * @packageDocumentation AttachmentPath
3
3
  * Provides utility functions for working with attachment paths.
4
4
  */
5
- import type { App, TAbstractFile } from 'obsidian';
5
+ import type { App, TFile } from 'obsidian';
6
6
  import type { PathOrFile } from './FileSystem.ts';
7
7
  /**
8
8
  * Retrieves the attachment folder path for a given note.
@@ -24,7 +24,7 @@ export interface ExtendedWrapper {
24
24
  /**
25
25
  * Get available path for attachments function.
26
26
  */
27
- export type GetAvailablePathForAttachmentsExtendedFn = (filename: string, extension: string, file: TAbstractFile | null, skipFolderCreation?: boolean) => Promise<string>;
27
+ export type GetAvailablePathForAttachmentsExtendedFn = (filename: string, extension: string, file: TFile | null, skipFolderCreation?: boolean) => Promise<string>;
28
28
  /**
29
29
  * Retrieves the file path for an attachment within a note.
30
30
  *
@@ -43,4 +43,4 @@ export declare function getAttachmentFilePath(app: App, attachmentPathOrFile: Pa
43
43
  * @param skipFolderCreation - Should folder creation be skipped?
44
44
  * @returns A promise that resolves to the available path for attachments.
45
45
  */
46
- export declare function getAvailablePathForAttachments(app: App, filename: string, extension: string, file: TAbstractFile | null, skipFolderCreation: boolean): Promise<string>;
46
+ export declare function getAvailablePathForAttachments(app: App, filename: string, extension: string, file: TFile | null, skipFolderCreation: boolean): Promise<string>;
@@ -35,6 +35,8 @@ __export(FileSystem_exports, {
35
35
  getFolder: () => getFolder,
36
36
  getFolderOrNull: () => getFolderOrNull,
37
37
  getMarkdownFiles: () => getMarkdownFiles,
38
+ getOrCreateFile: () => getOrCreateFile,
39
+ getOrCreateFolder: () => getOrCreateFolder,
38
40
  getPath: () => getPath,
39
41
  isCanvasFile: () => isCanvasFile,
40
42
  isFile: () => isFile,
@@ -164,6 +166,22 @@ function trimMarkdownExtension(file) {
164
166
  function getPath(pathOrFile) {
165
167
  return pathOrFile instanceof import_obsidian.TAbstractFile ? pathOrFile.path : pathOrFile;
166
168
  }
169
+ async function getOrCreateFile(app, path) {
170
+ const file = getFileOrNull(app, path);
171
+ if (file) {
172
+ return file;
173
+ }
174
+ const folderPath = (0, import_implementations.parentFolderPath)(path);
175
+ await getOrCreateFolder(app, folderPath);
176
+ return await app.vault.create(path, "");
177
+ }
178
+ async function getOrCreateFolder(app, path) {
179
+ const folder = getFolderOrNull(app, path);
180
+ if (folder) {
181
+ return folder;
182
+ }
183
+ return await app.vault.createFolder(path);
184
+ }
167
185
  // Annotate the CommonJS export names for ESM import in node:
168
186
  0 && (module.exports = {
169
187
  CANVAS_FILE_EXTENSION,
@@ -176,6 +194,8 @@ function getPath(pathOrFile) {
176
194
  getFolder,
177
195
  getFolderOrNull,
178
196
  getMarkdownFiles,
197
+ getOrCreateFile,
198
+ getOrCreateFolder,
179
199
  getPath,
180
200
  isCanvasFile,
181
201
  isFile,
@@ -184,4 +204,4 @@ function getPath(pathOrFile) {
184
204
  isNote,
185
205
  trimMarkdownExtension
186
206
  });
187
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVTeXN0ZW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/ICgoKT0+e2lmKHR5cGVvZiBfX2ZpbGVuYW1lIT09XCJzdHJpbmdcIil7cmV0dXJuIG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpfXJldHVybiByZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKX0pKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIEZpbGVTeXN0ZW1cbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggVEFic3RyYWN0RmlsZSwgVEZpbGUsIGFuZCBURm9sZGVyIGluc3RhbmNlcyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQge1xuICBBcHAsXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFRGaWxlLFxuICBURm9sZGVyLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBjcmVhdGVURmlsZUluc3RhbmNlLFxuICBjcmVhdGVURm9sZGVySW5zdGFuY2Vcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgeyBleHRuYW1lIH0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyB0cmltRW5kIH0gZnJvbSAnLi4vU3RyaW5nLnRzJztcblxuLyoqXG4gKiBUaGUgZmlsZSBleHRlbnNpb24gZm9yIE1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgTUFSS0RPV05fRklMRV9FWFRFTlNJT04gPSAnbWQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZpbGUgZXh0ZW5zaW9uIGZvciBjYW52YXMgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5WQVNfRklMRV9FWFRFTlNJT04gPSAnY2FudmFzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcGF0aCBvciBhbiBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JBYnN0cmFjdEZpbGUgPSBzdHJpbmcgfCBUQWJzdHJhY3RGaWxlO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXRoIG9yIGEgZmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0aE9yRmlsZSA9IHN0cmluZyB8IFRGaWxlO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXRoIG9yIGFuIGluc3RhbmNlIG9mIFRGb2xkZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZvbGRlciA9IHN0cmluZyB8IFRGb2xkZXI7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZSB0aGUgVEFic3RyYWN0RmlsZSBmb3IuXG4gKiBAcGFyYW0gaW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJzdHJhY3RGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUsIGluc2Vuc2l0aXZlPzogYm9vbGVhbik6IFRBYnN0cmFjdEZpbGUge1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSwgaW5zZW5zaXRpdmUpO1xuICBpZiAoIWZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEFic3RyYWN0IGZpbGUgbm90IGZvdW5kOiAke3BhdGhPckZpbGUgYXMgc3RyaW5nfWApO1xuICB9XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGluc3RhbmNlIG9mIFRBYnN0cmFjdEZpbGUgb3IgbnVsbCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBhYnN0cmFjdCBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gaW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlIHwgbnVsbCwgaW5zZW5zaXRpdmU/OiBib29sZWFuKTogVEFic3RyYWN0RmlsZSB8IG51bGwge1xuICBpZiAocGF0aE9yRmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHBhdGhPckZpbGUgPT09ICcuJyB8fCBwYXRoT3JGaWxlID09PSAnJykge1xuICAgIHJldHVybiBhcHAudmF1bHQuZ2V0Um9vdCgpO1xuICB9XG5cbiAgaWYgKHBhdGhPckZpbGUgaW5zdGFuY2VvZiBUQWJzdHJhY3RGaWxlKSB7XG4gICAgcmV0dXJuIHBhdGhPckZpbGU7XG4gIH1cblxuICBpZiAoaW5zZW5zaXRpdmUpIHtcbiAgICByZXR1cm4gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aEluc2Vuc2l0aXZlKHBhdGhPckZpbGUpO1xuICB9XG5cbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGF0aE9yRmlsZSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgVEZpbGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmV0cmlldmUgdGhlIFRGaWxlIG9iamVjdCBmb3IuXG4gKiBAcGFyYW0gYWxsb3dOb25FeGlzdGluZyAtIFdoZXRoZXIgdG8gYWxsb3cgdGhlIGZpbGUgdG8gbm90IGV4aXN0LlxuICogIElmIGB0cnVlYCwgYSBuZXcgVEZpbGUgb2JqZWN0IGlzIGNyZWF0ZWQgZm9yIHRoZSBwcm92aWRlZCBwYXRoLlxuICogIElmIGBmYWxzZWAsIGFuIGVycm9yIGlzIHRocm93biBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKiBAcGFyYW0gaW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBURmlsZSBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBhbGxvd05vbkV4aXN0aW5nPzogYm9vbGVhbiwgaW5zZW5zaXRpdmU/OiBib29sZWFuKTogVEZpbGUge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlLCBpbnNlbnNpdGl2ZSk7XG4gIGlmICghZmlsZSkge1xuICAgIGlmIChhbGxvd05vbkV4aXN0aW5nKSB7XG4gICAgICBmaWxlID0gY3JlYXRlVEZpbGVJbnN0YW5jZShhcHAudmF1bHQsIHBhdGhPckZpbGUgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtwYXRoT3JGaWxlIGFzIHN0cmluZ31gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBURmlsZSBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqIElmIHRoZSBwcm92aWRlZCBhcmd1bWVudCBpcyBhbHJlYWR5IGEgVEZpbGUgb2JqZWN0LCBpdCBpcyByZXR1cm5lZCBhcyBpcy5cbiAqIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGFwcCdzIHZhdWx0IHRvIHJldHJpZXZlIHRoZSBURmlsZSBvYmplY3QgYnkgaXRzIHBhdGguXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgVEZpbGUgb2JqZWN0LlxuICogQHBhcmFtIGluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgVEZpbGUgb2JqZWN0IGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVPck51bGwoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUgfCBudWxsLCBpbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURmlsZSB8IG51bGwge1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSwgaW5zZW5zaXRpdmUpO1xuICBpZiAoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgVEZvbGRlciBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFwcCBhbmQgcGF0aE9yRm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciBpZGVudGlmaWVyLlxuICogQHBhcmFtIGFsbG93Tm9uRXhpc3RpbmcgLSBXaGV0aGVyIHRvIGFsbG93IHRoZSBmb2xkZXIgdG8gbm90IGV4aXN0LlxuICogIElmIGB0cnVlYCwgYSBuZXcgVEZvbGRlciBvYmplY3QgaXMgY3JlYXRlZCBmb3IgdGhlIHByb3ZpZGVkIHBhdGguXG4gKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmb2xkZXIgaXMgbm90IGZvdW5kLlxuICogQHBhcmFtIGluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgcmV0cmlldmVkIFRGb2xkZXIgb2JqZWN0LlxuICogQHRocm93cyBJZiB0aGUgZm9sZGVyIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIGFsbG93Tm9uRXhpc3Rpbmc/OiBib29sZWFuLCBpbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURm9sZGVyIHtcbiAgbGV0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIHBhdGhPckZvbGRlciwgaW5zZW5zaXRpdmUpO1xuICBpZiAoIWZvbGRlcikge1xuICAgIGlmIChhbGxvd05vbkV4aXN0aW5nKSB7XG4gICAgICBmb2xkZXIgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwLnZhdWx0LCBwYXRoT3JGb2xkZXIgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb2xkZXIgbm90IGZvdW5kOiAke3BhdGhPckZvbGRlciBhcyBzdHJpbmd9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZvbGRlcjtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBURm9sZGVyIG9iamVjdCBvciBudWxsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byByZXRyaWV2ZSB0aGUgVEZvbGRlciBmcm9tLlxuICogQHBhcmFtIGluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgVEZvbGRlciBvYmplY3QgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlciB8IG51bGwsIGluc2Vuc2l0aXZlPzogYm9vbGVhbik6IFRGb2xkZXIgfCBudWxsIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpbnNlbnNpdGl2ZSk7XG4gIGlmIChmb2xkZXIgaW5zdGFuY2VvZiBURm9sZGVyKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgVEZpbGUgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzIHdpdGhpbiBhIHNwZWNpZmllZCBmb2xkZXIgb3IgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gcmV0cmlldmUgdGhlIG1hcmtkb3duIGZpbGVzIGZyb20uXG4gKiBAcGFyYW0gaXNSZWN1cnNpdmUgLSBPcHRpb25hbC4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBtYXJrZG93biBmaWxlcyB3aXRoaW4gc3ViZm9sZGVycy4gRGVmYXVsdCBpcyBmYWxzZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIFRGaWxlIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXMoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyLCBpc1JlY3Vyc2l2ZT86IGJvb2xlYW4pOiBURmlsZVtdIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0Rm9sZGVyKGFwcCwgcGF0aE9yRm9sZGVyKTtcblxuICBsZXQgbWFya2Rvd25GaWxlczogVEZpbGVbXSA9IFtdO1xuXG4gIGlmICghaXNSZWN1cnNpdmUpIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoZmlsZSkpIGFzIFRGaWxlW107XG4gIH0gZWxzZSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFic3RyYWN0RmlsZSkpIHtcbiAgICAgICAgbWFya2Rvd25GaWxlcy5wdXNoKGFic3RyYWN0RmlsZSBhcyBURmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBtYXJrZG93bkZpbGVzID0gbWFya2Rvd25GaWxlcy5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbiAgcmV0dXJuIG1hcmtkb3duRmlsZXM7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIFRGaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIFRGaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWxlKGZpbGU6IFRBYnN0cmFjdEZpbGUgfCBudWxsKTogZmlsZSBpcyBURmlsZSB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEZpbGU7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZpbGUgaXMgYSBmb2xkZXIsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGb2xkZXIoZmlsZTogVEFic3RyYWN0RmlsZSB8IG51bGwpOiBmaWxlIGlzIFRGb2xkZXIge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGb2xkZXI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgbm90ZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgbm90ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90ZShmaWxlOiBUQWJzdHJhY3RGaWxlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNNYXJrZG93bkZpbGUoZmlsZSkgfHwgaXNDYW52YXNGaWxlKGZpbGUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBNYXJrZG93biBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNYXJrZG93bkZpbGUocGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24ocGF0aE9yRmlsZSwgTUFSS0RPV05fRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgY2FudmFzIGZpbGUgb3Igbm90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDYW52YXNGaWxlKHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSB8IG51bGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uKHBhdGhPckZpbGUsIENBTlZBU19GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBwYXRoIG9yIGZpbGUgaGFzIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byBjaGVjay5cbiAqIEBwYXJhbSBleHRlbnNpb24gLSBUaGUgZXh0ZW5zaW9uIHRvIGNvbXBhcmUgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIG9yIGZpbGUgaGFzIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRXh0ZW5zaW9uKHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSB8IG51bGwsIGV4dGVuc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChwYXRoT3JGaWxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBleHRuYW1lKGdldFBhdGgocGF0aE9yRmlsZSkpLnRvTG93ZXJDYXNlKCkuc2xpY2UoMSkgPT09IGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbSB0aGUgZmlsZSBwYXRoIGlmIHRoZSBmaWxlIGlzIGEgbWFya2Rvd24gZmlsZS5cbiAqIElmIHRoZSBmaWxlIGlzIG5vdCBhIG1hcmtkb3duIGZpbGUsIHRoZSBvcmlnaW5hbCBmaWxlIHBhdGggaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byB0cmltIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIHBhdGggd2l0aCB0aGUgbWFya2Rvd24gZXh0ZW5zaW9uIHRyaW1tZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTWFya2Rvd25FeHRlbnNpb24oZmlsZTogVEFic3RyYWN0RmlsZSk6IHN0cmluZyB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoZmlsZSkpIHtcbiAgICByZXR1cm4gZmlsZS5wYXRoO1xuICB9XG5cbiAgcmV0dXJuIHRyaW1FbmQoZmlsZS5wYXRoLCAnLicgKyBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGF0aCBvZiB0aGUgZ2l2ZW4gYHBhdGhPckZpbGVgLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqIEByZXR1cm5zIFRoZSBwYXRoIG9mIHRoZSBgcGF0aE9yRmlsZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoKHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoT3JGaWxlIGluc3RhbmNlb2YgVEFic3RyYWN0RmlsZSA/IHBhdGhPckZpbGUucGF0aCA6IHBhdGhPckZpbGU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0Esc0JBTU87QUFDUCw2QkFHTztBQUVQLGtCQUF3QjtBQUN4QixvQkFBd0I7QUF4QnhCLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSTtBQUFDLE1BQUcsT0FBTyxlQUFhLFVBQVM7QUFBQyxXQUFPLElBQUksSUFBSSxPQUFPLFNBQVMsSUFBSTtBQUFBLEVBQUM7QUFBQyxTQUFPLFFBQVEsVUFBVSxFQUFFLGNBQWMsVUFBVTtBQUFDLEdBQUc7QUFDNUwsSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQXdCTyxNQUFNLDBCQUEwQjtBQUtoQyxNQUFNLHdCQUF3QjtBQTBCOUIsU0FBUyxn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
207
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVTeXN0ZW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/ICgoKT0+e2lmKHR5cGVvZiBfX2ZpbGVuYW1lIT09XCJzdHJpbmdcIil7cmV0dXJuIG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpfXJldHVybiByZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKX0pKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIEZpbGVTeXN0ZW1cbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggVEFic3RyYWN0RmlsZSwgVEZpbGUsIGFuZCBURm9sZGVyIGluc3RhbmNlcyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQge1xuICBBcHAsXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFRGaWxlLFxuICBURm9sZGVyLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBjcmVhdGVURmlsZUluc3RhbmNlLFxuICBjcmVhdGVURm9sZGVySW5zdGFuY2UsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgeyBleHRuYW1lIH0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyB0cmltRW5kIH0gZnJvbSAnLi4vU3RyaW5nLnRzJztcblxuLyoqXG4gKiBUaGUgZmlsZSBleHRlbnNpb24gZm9yIE1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgTUFSS0RPV05fRklMRV9FWFRFTlNJT04gPSAnbWQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZpbGUgZXh0ZW5zaW9uIGZvciBjYW52YXMgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5WQVNfRklMRV9FWFRFTlNJT04gPSAnY2FudmFzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcGF0aCBvciBhbiBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JBYnN0cmFjdEZpbGUgPSBzdHJpbmcgfCBUQWJzdHJhY3RGaWxlO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXRoIG9yIGEgZmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0aE9yRmlsZSA9IHN0cmluZyB8IFRGaWxlO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXRoIG9yIGFuIGluc3RhbmNlIG9mIFRGb2xkZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZvbGRlciA9IHN0cmluZyB8IFRGb2xkZXI7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZSB0aGUgVEFic3RyYWN0RmlsZSBmb3IuXG4gKiBAcGFyYW0gaW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJzdHJhY3RGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUsIGluc2Vuc2l0aXZlPzogYm9vbGVhbik6IFRBYnN0cmFjdEZpbGUge1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSwgaW5zZW5zaXRpdmUpO1xuICBpZiAoIWZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEFic3RyYWN0IGZpbGUgbm90IGZvdW5kOiAke3BhdGhPckZpbGUgYXMgc3RyaW5nfWApO1xuICB9XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGluc3RhbmNlIG9mIFRBYnN0cmFjdEZpbGUgb3IgbnVsbCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBhYnN0cmFjdCBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gaW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlIHwgbnVsbCwgaW5zZW5zaXRpdmU/OiBib29sZWFuKTogVEFic3RyYWN0RmlsZSB8IG51bGwge1xuICBpZiAocGF0aE9yRmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHBhdGhPckZpbGUgPT09ICcuJyB8fCBwYXRoT3JGaWxlID09PSAnJykge1xuICAgIHJldHVybiBhcHAudmF1bHQuZ2V0Um9vdCgpO1xuICB9XG5cbiAgaWYgKHBhdGhPckZpbGUgaW5zdGFuY2VvZiBUQWJzdHJhY3RGaWxlKSB7XG4gICAgcmV0dXJuIHBhdGhPckZpbGU7XG4gIH1cblxuICBpZiAoaW5zZW5zaXRpdmUpIHtcbiAgICByZXR1cm4gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aEluc2Vuc2l0aXZlKHBhdGhPckZpbGUpO1xuICB9XG5cbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGF0aE9yRmlsZSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgVEZpbGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmV0cmlldmUgdGhlIFRGaWxlIG9iamVjdCBmb3IuXG4gKiBAcGFyYW0gYWxsb3dOb25FeGlzdGluZyAtIFdoZXRoZXIgdG8gYWxsb3cgdGhlIGZpbGUgdG8gbm90IGV4aXN0LlxuICogIElmIGB0cnVlYCwgYSBuZXcgVEZpbGUgb2JqZWN0IGlzIGNyZWF0ZWQgZm9yIHRoZSBwcm92aWRlZCBwYXRoLlxuICogIElmIGBmYWxzZWAsIGFuIGVycm9yIGlzIHRocm93biBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKiBAcGFyYW0gaW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBURmlsZSBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBhbGxvd05vbkV4aXN0aW5nPzogYm9vbGVhbiwgaW5zZW5zaXRpdmU/OiBib29sZWFuKTogVEZpbGUge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlLCBpbnNlbnNpdGl2ZSk7XG4gIGlmICghZmlsZSkge1xuICAgIGlmIChhbGxvd05vbkV4aXN0aW5nKSB7XG4gICAgICBmaWxlID0gY3JlYXRlVEZpbGVJbnN0YW5jZShhcHAudmF1bHQsIHBhdGhPckZpbGUgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtwYXRoT3JGaWxlIGFzIHN0cmluZ31gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBURmlsZSBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqIElmIHRoZSBwcm92aWRlZCBhcmd1bWVudCBpcyBhbHJlYWR5IGEgVEZpbGUgb2JqZWN0LCBpdCBpcyByZXR1cm5lZCBhcyBpcy5cbiAqIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGFwcCdzIHZhdWx0IHRvIHJldHJpZXZlIHRoZSBURmlsZSBvYmplY3QgYnkgaXRzIHBhdGguXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgVEZpbGUgb2JqZWN0LlxuICogQHBhcmFtIGluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgVEZpbGUgb2JqZWN0IGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVPck51bGwoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUgfCBudWxsLCBpbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURmlsZSB8IG51bGwge1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSwgaW5zZW5zaXRpdmUpO1xuICBpZiAoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgVEZvbGRlciBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFwcCBhbmQgcGF0aE9yRm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciBpZGVudGlmaWVyLlxuICogQHBhcmFtIGFsbG93Tm9uRXhpc3RpbmcgLSBXaGV0aGVyIHRvIGFsbG93IHRoZSBmb2xkZXIgdG8gbm90IGV4aXN0LlxuICogIElmIGB0cnVlYCwgYSBuZXcgVEZvbGRlciBvYmplY3QgaXMgY3JlYXRlZCBmb3IgdGhlIHByb3ZpZGVkIHBhdGguXG4gKiAgSWYgYGZhbHNlYCwgYW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBmb2xkZXIgaXMgbm90IGZvdW5kLlxuICogQHBhcmFtIGluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgcmV0cmlldmVkIFRGb2xkZXIgb2JqZWN0LlxuICogQHRocm93cyBJZiB0aGUgZm9sZGVyIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIGFsbG93Tm9uRXhpc3Rpbmc/OiBib29sZWFuLCBpbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURm9sZGVyIHtcbiAgbGV0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIHBhdGhPckZvbGRlciwgaW5zZW5zaXRpdmUpO1xuICBpZiAoIWZvbGRlcikge1xuICAgIGlmIChhbGxvd05vbkV4aXN0aW5nKSB7XG4gICAgICBmb2xkZXIgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwLnZhdWx0LCBwYXRoT3JGb2xkZXIgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb2xkZXIgbm90IGZvdW5kOiAke3BhdGhPckZvbGRlciBhcyBzdHJpbmd9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZvbGRlcjtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBURm9sZGVyIG9iamVjdCBvciBudWxsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byByZXRyaWV2ZSB0aGUgVEZvbGRlciBmcm9tLlxuICogQHBhcmFtIGluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgVEZvbGRlciBvYmplY3QgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlciB8IG51bGwsIGluc2Vuc2l0aXZlPzogYm9vbGVhbik6IFRGb2xkZXIgfCBudWxsIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyLCBpbnNlbnNpdGl2ZSk7XG4gIGlmIChmb2xkZXIgaW5zdGFuY2VvZiBURm9sZGVyKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgVEZpbGUgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzIHdpdGhpbiBhIHNwZWNpZmllZCBmb2xkZXIgb3IgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gcmV0cmlldmUgdGhlIG1hcmtkb3duIGZpbGVzIGZyb20uXG4gKiBAcGFyYW0gaXNSZWN1cnNpdmUgLSBPcHRpb25hbC4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBtYXJrZG93biBmaWxlcyB3aXRoaW4gc3ViZm9sZGVycy4gRGVmYXVsdCBpcyBmYWxzZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIFRGaWxlIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXMoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyLCBpc1JlY3Vyc2l2ZT86IGJvb2xlYW4pOiBURmlsZVtdIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0Rm9sZGVyKGFwcCwgcGF0aE9yRm9sZGVyKTtcblxuICBsZXQgbWFya2Rvd25GaWxlczogVEZpbGVbXSA9IFtdO1xuXG4gIGlmICghaXNSZWN1cnNpdmUpIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoZmlsZSkpIGFzIFRGaWxlW107XG4gIH0gZWxzZSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFic3RyYWN0RmlsZSkpIHtcbiAgICAgICAgbWFya2Rvd25GaWxlcy5wdXNoKGFic3RyYWN0RmlsZSBhcyBURmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBtYXJrZG93bkZpbGVzID0gbWFya2Rvd25GaWxlcy5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbiAgcmV0dXJuIG1hcmtkb3duRmlsZXM7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIFRGaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIFRGaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWxlKGZpbGU6IFRBYnN0cmFjdEZpbGUgfCBudWxsKTogZmlsZSBpcyBURmlsZSB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEZpbGU7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZpbGUgaXMgYSBmb2xkZXIsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGb2xkZXIoZmlsZTogVEFic3RyYWN0RmlsZSB8IG51bGwpOiBmaWxlIGlzIFRGb2xkZXIge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGb2xkZXI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgbm90ZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgbm90ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90ZShmaWxlOiBUQWJzdHJhY3RGaWxlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNNYXJrZG93bkZpbGUoZmlsZSkgfHwgaXNDYW52YXNGaWxlKGZpbGUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBNYXJrZG93biBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNYXJrZG93bkZpbGUocGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24ocGF0aE9yRmlsZSwgTUFSS0RPV05fRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGEgY2FudmFzIGZpbGUgb3Igbm90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDYW52YXNGaWxlKHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSB8IG51bGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uKHBhdGhPckZpbGUsIENBTlZBU19GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBwYXRoIG9yIGZpbGUgaGFzIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byBjaGVjay5cbiAqIEBwYXJhbSBleHRlbnNpb24gLSBUaGUgZXh0ZW5zaW9uIHRvIGNvbXBhcmUgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIG9yIGZpbGUgaGFzIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRXh0ZW5zaW9uKHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSB8IG51bGwsIGV4dGVuc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChwYXRoT3JGaWxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBleHRuYW1lKGdldFBhdGgocGF0aE9yRmlsZSkpLnRvTG93ZXJDYXNlKCkuc2xpY2UoMSkgPT09IGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbSB0aGUgZmlsZSBwYXRoIGlmIHRoZSBmaWxlIGlzIGEgbWFya2Rvd24gZmlsZS5cbiAqIElmIHRoZSBmaWxlIGlzIG5vdCBhIG1hcmtkb3duIGZpbGUsIHRoZSBvcmlnaW5hbCBmaWxlIHBhdGggaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byB0cmltIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIHBhdGggd2l0aCB0aGUgbWFya2Rvd24gZXh0ZW5zaW9uIHRyaW1tZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTWFya2Rvd25FeHRlbnNpb24oZmlsZTogVEFic3RyYWN0RmlsZSk6IHN0cmluZyB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoZmlsZSkpIHtcbiAgICByZXR1cm4gZmlsZS5wYXRoO1xuICB9XG5cbiAgcmV0dXJuIHRyaW1FbmQoZmlsZS5wYXRoLCAnLicgKyBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGF0aCBvZiB0aGUgZ2l2ZW4gYHBhdGhPckZpbGVgLlxuICpcbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqIEByZXR1cm5zIFRoZSBwYXRoIG9mIHRoZSBgcGF0aE9yRmlsZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoKHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoT3JGaWxlIGluc3RhbmNlb2YgVEFic3RyYWN0RmlsZSA/IHBhdGhPckZpbGUucGF0aCA6IHBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBURmlsZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgVEZpbGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZmlsZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGaWxlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFRGaWxlPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aCk7XG4gIGlmIChmaWxlKSB7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICBjb25zdCBmb2xkZXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChwYXRoKTtcbiAgYXdhaXQgZ2V0T3JDcmVhdGVGb2xkZXIoYXBwLCBmb2xkZXJQYXRoKTtcblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBURm9sZGVyIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgY3JlYXRlcyBhIG5ldyBvbmUgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gcmV0cmlldmUgb3IgY3JlYXRlLlxuICogQHJldHVybnMgVGhlIFRGb2xkZXIgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZvbGRlcj4ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0Esc0JBTU87QUFDUCw2QkFJTztBQUVQLGtCQUF3QjtBQUN4QixvQkFBd0I7QUF6QnhCLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSTtBQUFDLE1BQUcsT0FBTyxlQUFhLFVBQVM7QUFBQyxXQUFPLElBQUksSUFBSSxPQUFPLFNBQVMs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
@@ -153,3 +153,19 @@ export declare function trimMarkdownExtension(file: TAbstractFile): string;
153
153
  * @returns The path of the `pathOrFile`.
154
154
  */
155
155
  export declare function getPath(pathOrFile: PathOrAbstractFile): string;
156
+ /**
157
+ * Retrieves the TFile object for the given path or creates a new one if it does not exist.
158
+ *
159
+ * @param app - The Obsidian App instance.
160
+ * @param path - The path of the file to retrieve or create.
161
+ * @returns The TFile object representing the file
162
+ */
163
+ export declare function getOrCreateFile(app: App, path: string): Promise<TFile>;
164
+ /**
165
+ * Retrieves the TFolder object for the given path or creates a new one if it does not exist.
166
+ *
167
+ * @param app - The Obsidian App instance.
168
+ * @param path - The path of the folder to retrieve or create.
169
+ * @returns The TFolder object representing the folder.
170
+ */
171
+ export declare function getOrCreateFolder(app: App, path: string): Promise<TFolder>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-dev-utils",
3
- "version": "3.28.1",
3
+ "version": "3.29.0",
4
4
  "description": "This is the collection of useful functions that you can use for your Obsidian plugin development",
5
5
  "main": "./dist/lib/index.cjs",
6
6
  "types": "./dist/lib/index.d.ts",