obsidian-dev-utils 2.23.3 → 2.24.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,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.24.0
4
+
5
+ - Extend generateMarkdownLink
6
+
3
7
  ## 2.23.3
4
8
 
5
9
  - Fix options merging
@@ -41,12 +41,14 @@ var import_String = require("../String.cjs");
41
41
  var import_TFile = require("./TFile.cjs");
42
42
  var import_TAbstractFile = require("./TAbstractFile.cjs");
43
43
  var import_Async = require("../Async.cjs");
44
+ var import_ObsidianSettings = require("./ObsidianSettings.cjs");
44
45
  var __import_meta_url = globalThis["import.meta.url"] ?? (() => require("node:url").pathToFileURL(__filename))();
45
46
  var __process = globalThis["process"] ?? {
46
47
  "cwd": () => "/",
47
48
  "env": {},
48
49
  "platform": "android"
49
50
  };
51
+ const SPECIAL_LINK_SYMBOLS_REGEXP = /[\\\x00\x08\x0B\x0C\x0E-\x1F ]/g;
50
52
  function splitSubpath(link) {
51
53
  const SUBPATH_SEPARATOR = "#";
52
54
  const [linkPath = "", subpath] = (0, import_String.normalize)(link).split(SUBPATH_SEPARATOR);
@@ -162,38 +164,38 @@ function getAlias(options) {
162
164
  return displayText;
163
165
  }
164
166
  function generateMarkdownLink(options) {
165
- const {
166
- app,
167
- pathOrFile,
168
- sourcePathOrFile,
169
- subpath,
170
- alias,
171
- isEmbed,
172
- isWikilink,
173
- isRelative
174
- } = options;
175
- const file = (0, import_TFile.getFile)(app, pathOrFile);
176
- const useMarkdownLinks = app.vault.getConfig("useMarkdownLinks");
177
- const newLinkFormat = app.vault.getConfig("newLinkFormat");
178
- if (isWikilink !== void 0) {
179
- app.vault.setConfig("useMarkdownLinks", !isWikilink);
180
- }
181
- if (isRelative === true) {
182
- app.vault.setConfig("newLinkFormat", "relative");
167
+ const { app } = options;
168
+ const file = (0, import_TFile.getFile)(app, options.pathOrFile);
169
+ const sourcePath = (0, import_TAbstractFile.getPath)(options.sourcePathOrFile);
170
+ const subpath = options.subpath ?? "";
171
+ let alias = options.alias ?? "";
172
+ const isEmbed = options.isEmbed ?? !(0, import_TAbstractFile.isMarkdownFile)(file);
173
+ const isWikilink = options.isWikilink ?? (0, import_ObsidianSettings.shouldUseWikilinks)(app);
174
+ const useRelativePath = options.isRelative ?? (0, import_ObsidianSettings.shouldUseRelativeLinks)(app);
175
+ let linkText = file.path === sourcePath && subpath ? subpath : useRelativePath ? (0, import_Path.relative)((0, import_Path.dirname)(sourcePath), isWikilink ? (0, import_TAbstractFile.trimMarkdownExtension)(file) : file.path) + subpath : app.metadataCache.fileToLinktext(file, sourcePath, isWikilink) + subpath;
176
+ if (useRelativePath && options.useLeadingDot && !linkText.startsWith(".") && !linkText.startsWith("#")) {
177
+ linkText = "./" + linkText;
183
178
  }
184
- let link = app.fileManager.generateMarkdownLink(file, (0, import_TAbstractFile.getPath)(sourcePathOrFile), subpath, alias);
185
- app.vault.setConfig("useMarkdownLinks", useMarkdownLinks);
186
- app.vault.setConfig("newLinkFormat", newLinkFormat);
187
- const isLinkEmbed = link.startsWith("!");
188
- if (isEmbed !== void 0 && isEmbed !== isLinkEmbed) {
189
- if (isEmbed) {
190
- link = "!" + link;
179
+ if (!isWikilink) {
180
+ if (options.useAngleBrackets) {
181
+ linkText = `<${linkText}>`;
182
+ } else {
183
+ linkText = linkText.replace(SPECIAL_LINK_SYMBOLS_REGEXP, function(specialLinkSymbol) {
184
+ return encodeURIComponent(specialLinkSymbol);
185
+ });
186
+ }
187
+ if (!isEmbed) {
188
+ return `[${alias || file.basename}](${linkText})`;
191
189
  } else {
192
- link = link.slice(1);
193
- link = link.replace("[]", `[${alias || file.basename}]`);
190
+ return `![${alias}](${linkText})`;
191
+ }
192
+ } else {
193
+ if (alias && alias.toLowerCase() === linkText.toLowerCase()) {
194
+ linkText = alias;
195
+ alias = "";
194
196
  }
197
+ return (isEmbed ? "!" : "") + (alias ? `[[${linkText}|${alias}]]` : `[[${linkText}]]`);
195
198
  }
196
- return link;
197
199
  }
198
200
  async function editLinks(app, pathOrFile, linkConverter, retryOptions = {}) {
199
201
  return await (0, import_Vault.applyFileChanges)(app, pathOrFile, async () => {
@@ -227,4 +229,4 @@ async function editLinks(app, pathOrFile, linkConverter, retryOptions = {}) {
227
229
  updateLink,
228
230
  updateLinksInFile
229
231
  });
230
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0xpbmsudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbXCJpbXBvcnQubWV0YS51cmxcIl0gPz8gKCgpPT5yZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKSkoKTtcbnZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzW1wicHJvY2Vzc1wiXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBMaW5rXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIGhhbmRsaW5nIGFuZCB1cGRhdGluZyBsaW5rcyB3aXRoaW4gT2JzaWRpYW4gdmF1bHRzLiBJdCBpbmNsdWRlc1xuICogZnVuY3Rpb25zIHRvIHNwbGl0IHBhdGhzLCB1cGRhdGUgbGlua3MgaW4gZmlsZXMsIGFuZCBnZW5lcmF0ZSBtYXJrZG93biBsaW5rcyB3aXRoIHZhcmlvdXMgb3B0aW9ucy5cbiAqIFRoZSBmdW5jdGlvbnMgaW50ZWdyYXRlIHdpdGggT2JzaWRpYW4ncyBBUEkgdG8gZW5zdXJlIHRoYXQgbGlua3MgYXJlIG1hbmFnZWQgY29ycmVjdGx5IHdpdGhpbiB0aGUgdmF1bHQuXG4gKiovXG5cbmltcG9ydCB7XG4gIG5vcm1hbGl6ZVBhdGgsXG4gIHR5cGUgQXBwLFxuICB0eXBlIFJlZmVyZW5jZUNhY2hlLFxuICB0eXBlIFRGaWxlXG59IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIGdldENhY2hlU2FmZVxufSBmcm9tIFwiLi9NZXRhZGF0YUNhY2hlLnRzXCI7XG5pbXBvcnQge1xuICBhcHBseUZpbGVDaGFuZ2VzLFxuICB0eXBlIEZpbGVDaGFuZ2Vcbn0gZnJvbSBcIi4vVmF1bHQudHNcIjtcbmltcG9ydCB7IGNyZWF0ZVRGaWxlSW5zdGFuY2UgfSBmcm9tIFwib2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnNcIjtcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBleHRuYW1lXG59IGZyb20gXCIuLi9QYXRoLnRzXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vU3RyaW5nLnRzXCI7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICB0eXBlIFBhdGhPckZpbGVcbn0gZnJvbSBcIi4vVEZpbGUudHNcIjtcbmltcG9ydCB7IGdldFBhdGggfSBmcm9tIFwiLi9UQWJzdHJhY3RGaWxlLnRzXCI7XG5pbXBvcnQge1xuICB0eXBlIE1heWJlUHJvbWlzZSxcbiAgdHlwZSBSZXRyeU9wdGlvbnNcbn0gZnJvbSBcIi4uL0FzeW5jLnRzXCI7XG5cbnR5cGUgU3BsaXRTdWJwYXRoUmVzdWx0ID0ge1xuICBsaW5rUGF0aDogc3RyaW5nO1xuICBzdWJwYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFNwbGl0cyBhIGxpbmsgaW50byBpdHMgbGluayBwYXRoIGFuZCBzdWJwYXRoLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIGxpbmsgdG8gc3BsaXQuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgbGluayBwYXRoIGFuZCBzdWJwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRTdWJwYXRoKGxpbms6IHN0cmluZyk6IFNwbGl0U3VicGF0aFJlc3VsdCB7XG4gIGNvbnN0IFNVQlBBVEhfU0VQQVJBVE9SID0gXCIjXCI7XG4gIGNvbnN0IFtsaW5rUGF0aCA9IFwiXCIsIHN1YnBhdGhdID0gbm9ybWFsaXplKGxpbmspLnNwbGl0KFNVQlBBVEhfU0VQQVJBVE9SKTtcbiAgcmV0dXJuIHtcbiAgICBsaW5rUGF0aCxcbiAgICBzdWJwYXRoOiBzdWJwYXRoID8gU1VCUEFUSF9TRVBBUkFUT1IgKyBzdWJwYXRoIDogdW5kZWZpbmVkXG4gIH07XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdXBkYXRpbmcgbGlua3MgaW4gYSBmaWxlLlxuICovXG50eXBlIFVwZGF0ZUxpbmtzSW5GaWxlT3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFRoZSBvYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGZpbGUgdG8gdXBkYXRlIHRoZSBsaW5rcyBpbi5cbiAgICovXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvZiB0aGUgZmlsZS5cbiAgICovXG4gIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIG9sZCBhbmQgbmV3IHBhdGhzIGZvciByZW5hbWluZyBsaW5rcy5cbiAgICovXG4gIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmb3JjZSB0aGUgbGlua3MgdG8gYmUgaW4gTWFya2Rvd24gZm9ybWF0LlxuICAgKi9cbiAgZm9yY2VNYXJrZG93bkxpbmtzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgb25seSBlbWJlZGRlZCBsaW5rcy5cbiAgICovXG4gIGVtYmVkT25seUxpbmtzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgbGlua3MgaW4gYSBmaWxlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHVwZGF0aW5nIHRoZSBsaW5rcy5cbiAqIEByZXR1cm5zIC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGlua3MgYXJlIHVwZGF0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVMaW5rc0luRmlsZShvcHRpb25zOiBVcGRhdGVMaW5rc0luRmlsZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBwYXRoT3JGaWxlLFxuICAgIG9sZFBhdGhPckZpbGUsXG4gICAgcmVuYW1lTWFwLFxuICAgIGZvcmNlTWFya2Rvd25MaW5rcyxcbiAgICBlbWJlZE9ubHlMaW5rc1xuICB9ID0gb3B0aW9ucztcbiAgYXdhaXQgZWRpdExpbmtzKGFwcCwgcGF0aE9yRmlsZSwgKGxpbmspID0+IHtcbiAgICBjb25zdCBpc0VtYmVkTGluayA9IGxpbmsub3JpZ2luYWwuc3RhcnRzV2l0aChcIiFcIik7XG4gICAgaWYgKGVtYmVkT25seUxpbmtzICE9PSB1bmRlZmluZWQgJiYgZW1iZWRPbmx5TGlua3MgIT09IGlzRW1iZWRMaW5rKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBjb252ZXJ0TGluayhhcHAsIGxpbmssIHBhdGhPckZpbGUsIG9sZFBhdGhPckZpbGUsIHJlbmFtZU1hcCwgZm9yY2VNYXJrZG93bkxpbmtzKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBsaW5rIHRvIGEgbmV3IHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBsaW5rIC0gVGhlIHJlZmVyZW5jZSBjYWNoZSBmb3IgdGhlIGxpbmsuXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBmaWxlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb2YgdGhlIGxpbmsuXG4gKiBAcGFyYW0gcmVuYW1lTWFwIC0gQSBtYXAgb2Ygb2xkIHBhdGhzIHRvIG5ldyBwYXRocyBmb3IgcmVuYW1pbmcuXG4gKiBAcGFyYW0gZm9yY2VNYXJrZG93bkxpbmtzIC0gT3B0aW9uYWwgZmxhZyB0byBmb3JjZSBtYXJrZG93biBsaW5rcy5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgbGluay5cbiAqL1xuZnVuY3Rpb24gY29udmVydExpbmsoYXBwOiBBcHAsIGxpbms6IFJlZmVyZW5jZUNhY2hlLCBzb3VyY2U6IFBhdGhPckZpbGUsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPiwgZm9yY2VNYXJrZG93bkxpbmtzPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIG9sZFBhdGhPckZpbGUgPz89IGdldFBhdGgoc291cmNlKTtcbiAgcmV0dXJuIHVwZGF0ZUxpbmsoe1xuICAgIGFwcCxcbiAgICBsaW5rLFxuICAgIHBhdGhPckZpbGU6IGV4dHJhY3RMaW5rRmlsZShhcHAsIGxpbmssIG9sZFBhdGhPckZpbGUpLFxuICAgIG9sZFBhdGhPckZpbGUsXG4gICAgc291cmNlUGF0aE9yRmlsZTogc291cmNlLFxuICAgIHJlbmFtZU1hcCxcbiAgICBmb3JjZU1hcmtkb3duTGlua3NcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGEgbGluay5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGxpbmsgLSBUaGUgcmVmZXJlbmNlIGNhY2hlIGZvciB0aGUgbGluay5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9mIHRoZSBmaWxlLlxuICogQHJldHVybnMgVGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLCBvciBudWxsIGlmIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RMaW5rRmlsZShhcHA6IEFwcCwgbGluazogUmVmZXJlbmNlQ2FjaGUsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBURmlsZSB8IG51bGwge1xuICBjb25zdCB7IGxpbmtQYXRoIH0gPSBzcGxpdFN1YnBhdGgobGluay5saW5rKTtcbiAgcmV0dXJuIGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmtQYXRoLCBnZXRQYXRoKG9sZFBhdGhPckZpbGUpKTtcbn1cblxudHlwZSBVcGRhdGVMaW5rT3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcCxcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSBjYWNoZSBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBsaW5rOiBSZWZlcmVuY2VDYWNoZSxcblxuICAvKipcbiAgICogVGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLlxuICAgKi9cbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSB8IG51bGwsXG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvZiB0aGUgZmlsZS5cbiAgICovXG4gIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmlsZSBjb250YWluaW5nIHRoZSBsaW5rLlxuICAgKi9cbiAgc291cmNlUGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcblxuICAvKipcbiAgICogQSBtYXAgb2Ygb2xkIGFuZCBuZXcgZmlsZSBwYXRocy5cbiAgICovXG4gIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPixcblxuICAvKipcbiAgICogV2hldGhlciB0byBmb3JjZSBtYXJrZG93biBsaW5rcy5cbiAgICovXG4gIGZvcmNlTWFya2Rvd25MaW5rcz86IGJvb2xlYW4gfCB1bmRlZmluZWRcbn07XG5cbi8qKlxuICogVXBkYXRlcyBhIGxpbmsgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdXBkYXRpbmcgdGhlIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBsaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlTGluayhvcHRpb25zOiBVcGRhdGVMaW5rT3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbGluayxcbiAgICBwYXRoT3JGaWxlLFxuICAgIG9sZFBhdGhPckZpbGUsXG4gICAgc291cmNlUGF0aE9yRmlsZTogc291cmNlLFxuICAgIHJlbmFtZU1hcCxcbiAgICBmb3JjZU1hcmtkb3duTGlua3NcbiAgfSA9IG9wdGlvbnM7XG4gIGlmICghcGF0aE9yRmlsZSkge1xuICAgIHJldHVybiBsaW5rLm9yaWdpbmFsO1xuICB9XG4gIGxldCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBjb25zdCBzb3VyY2VQYXRoID0gZ2V0UGF0aChzb3VyY2UpO1xuICBjb25zdCBvbGRQYXRoID0gZ2V0UGF0aChvbGRQYXRoT3JGaWxlKTtcbiAgY29uc3QgaXNFbWJlZCA9IGxpbmsub3JpZ2luYWwuc3RhcnRzV2l0aChcIiFcIik7XG4gIGNvbnN0IGlzV2lraWxpbmsgPVxuICAgIGxpbmsub3JpZ2luYWwuaW5jbHVkZXMoXCJbW1wiKSAmJiBmb3JjZU1hcmtkb3duTGlua3MgIT09IHRydWU7XG4gIGNvbnN0IHsgc3VicGF0aCB9ID0gc3BsaXRTdWJwYXRoKGxpbmsubGluayk7XG5cbiAgY29uc3QgbmV3UGF0aCA9IHJlbmFtZU1hcC5nZXQoZmlsZS5wYXRoKTtcbiAgY29uc3QgYWxpYXMgPSBnZXRBbGlhcyh7XG4gICAgYXBwLFxuICAgIGRpc3BsYXlUZXh0OiBsaW5rLmRpc3BsYXlUZXh0LFxuICAgIGZpbGU6IHBhdGhPckZpbGUsXG4gICAgb3RoZXJQYXRoczogW29sZFBhdGgsIG5ld1BhdGhdLFxuICAgIHNvdXJjZVBhdGhcbiAgfSk7XG5cbiAgaWYgKG5ld1BhdGgpIHtcbiAgICBmaWxlID0gY3JlYXRlVEZpbGVJbnN0YW5jZShhcHAudmF1bHQsIG5ld1BhdGgpO1xuICB9XG5cbiAgY29uc3QgbmV3TGluayA9IGdlbmVyYXRlTWFya2Rvd25MaW5rKHtcbiAgICBhcHAsXG4gICAgcGF0aE9yRmlsZTogZmlsZSxcbiAgICBzb3VyY2VQYXRoT3JGaWxlOiBzb3VyY2VQYXRoLFxuICAgIHN1YnBhdGgsXG4gICAgYWxpYXMsXG4gICAgaXNFbWJlZCxcbiAgICBpc1dpa2lsaW5rXG4gIH0pO1xuICByZXR1cm4gbmV3TGluaztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBnZXR0aW5nIHRoZSBhbGlhcyBvZiBhIGxpbmsuXG4gKi9cbnR5cGUgR2V0QWxpYXNPcHRpb25zID0ge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzcGxheSB0ZXh0IG9mIHRoZSBsaW5rLlxuICAgKi9cbiAgZGlzcGxheVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSBvZiB0aGUgbGluay5cbiAgICovXG4gIGZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIE90aGVyIHBhdGhzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay5cbiAgICovXG4gIG90aGVyUGF0aHM6IChzdHJpbmcgfCB1bmRlZmluZWQpW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgcGF0aCBvZiB0aGUgbGluay5cbiAgICovXG4gIHNvdXJjZVBhdGg6IHN0cmluZztcbn07XG5cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGFsaWFzIGZvciBhIGdpdmVuIGxpbmsuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmV0cmlldmluZyB0aGUgYWxpYXMuXG4gKiBAcmV0dXJucyBUaGUgYWxpYXMgb2YgdGhlIGxpbmssIG9yIHVuZGVmaW5lZCBpZiBzaG91bGQgYmUgZGVmYXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsaWFzKG9wdGlvbnM6IEdldEFsaWFzT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgZGlzcGxheVRleHQsXG4gICAgZmlsZTogcGF0aE9yRmlsZSxcbiAgICBvdGhlclBhdGhzLFxuICAgIHNvdXJjZVBhdGhcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgaWYgKCFkaXNwbGF5VGV4dCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBjbGVhbkRpc3BsYXlUZXh0ID0gbm9ybWFsaXplUGF0aChkaXNwbGF5VGV4dC5zcGxpdChcIiA+IFwiKVswXSEpLnJlcGxhY2UoL1xcLlxcLy9nLCBcIlwiKTtcblxuICBmb3IgKGNvbnN0IHBhdGggb2YgW2ZpbGUucGF0aCwgLi4ub3RoZXJQYXRoc10pIHtcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBleHRlbnNpb24gPSBleHRuYW1lKHBhdGgpO1xuICAgIGNvbnN0IGZpbGVOYW1lV2l0aEV4dGVuc2lvbiA9IGJhc2VuYW1lKHBhdGgpO1xuICAgIGNvbnN0IGZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbiA9IGJhc2VuYW1lKHBhdGgsIGV4dGVuc2lvbik7XG4gICAgaWYgKGNsZWFuRGlzcGxheVRleHQgPT09IHBhdGggfHwgY2xlYW5EaXNwbGF5VGV4dCA9PT0gZmlsZU5hbWVXaXRoRXh0ZW5zaW9uIHx8IGNsZWFuRGlzcGxheVRleHQgPT09IGZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG9taXRNZEV4dGVuc2lvbiBvZiBbdHJ1ZSwgZmFsc2VdKSB7XG4gICAgY29uc3QgbGlua1RleHQgPSBhcHAubWV0YWRhdGFDYWNoZS5maWxlVG9MaW5rdGV4dChmaWxlLCBzb3VyY2VQYXRoLCBvbWl0TWRFeHRlbnNpb24pO1xuICAgIGlmIChjbGVhbkRpc3BsYXlUZXh0ID09PSBsaW5rVGV4dCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzcGxheVRleHQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZ2VuZXJhdGluZyBhIG1hcmtkb3duIGxpbmsuXG4gKi9cbnR5cGUgR2VuZXJhdGVNYXJrZG93bkxpbmtPcHRpb25zID0ge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwLFxuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0byBsaW5rIHRvLlxuICAgKi9cbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBwYXRoIG9mIHRoZSBsaW5rLlxuICAgKi9cbiAgc291cmNlUGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcblxuICAvKipcbiAgICogVGhlIHN1YnBhdGggb2YgdGhlIGxpbmsuXG4gICAqL1xuICBzdWJwYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXG4gIC8qKlxuICAgKiBUaGUgYWxpYXMgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgYWxpYXM/OiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBzaG91bGQgYmUgZW1iZWRkZWQuXG4gICAqL1xuICBpc0VtYmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBsaW5rIHNob3VsZCBiZSBhIHdpa2lsaW5rLlxuICAgKi9cbiAgaXNXaWtpbGluaz86IGJvb2xlYW4gfCB1bmRlZmluZWQsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBzaG91bGQgYmUgcmVsYXRpdmUuXG4gICAqL1xuICBpc1JlbGF0aXZlPzogYm9vbGVhbiB8IHVuZGVmaW5lZFxufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBtYXJrZG93biBsaW5rIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGdlbmVyYXRpbmcgdGhlIG1hcmtkb3duIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIG1hcmtkb3duIGxpbmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU1hcmtkb3duTGluayhvcHRpb25zOiBHZW5lcmF0ZU1hcmtkb3duTGlua09wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIHBhdGhPckZpbGUsXG4gICAgc291cmNlUGF0aE9yRmlsZSxcbiAgICBzdWJwYXRoLFxuICAgIGFsaWFzLFxuICAgIGlzRW1iZWQsXG4gICAgaXNXaWtpbGluayxcbiAgICBpc1JlbGF0aXZlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBjb25zdCB1c2VNYXJrZG93bkxpbmtzID0gYXBwLnZhdWx0LmdldENvbmZpZyhcInVzZU1hcmtkb3duTGlua3NcIik7XG4gIGNvbnN0IG5ld0xpbmtGb3JtYXQgPSBhcHAudmF1bHQuZ2V0Q29uZmlnKFwibmV3TGlua0Zvcm1hdFwiKTtcbiAgaWYgKGlzV2lraWxpbmsgIT09IHVuZGVmaW5lZCkge1xuICAgIGFwcC52YXVsdC5zZXRDb25maWcoXCJ1c2VNYXJrZG93bkxpbmtzXCIsICFpc1dpa2lsaW5rKTtcbiAgfVxuXG4gIGlmIChpc1JlbGF0aXZlID09PSB0cnVlKSB7XG4gICAgYXBwLnZhdWx0LnNldENvbmZpZyhcIm5ld0xpbmtGb3JtYXRcIiwgXCJyZWxhdGl2ZVwiKTtcbiAgfVxuXG4gIGxldCBsaW5rID0gYXBwLmZpbGVNYW5hZ2VyLmdlbmVyYXRlTWFya2Rvd25MaW5rKGZpbGUsIGdldFBhdGgoc291cmNlUGF0aE9yRmlsZSksIHN1YnBhdGgsIGFsaWFzKTtcblxuICBhcHAudmF1bHQuc2V0Q29uZmlnKFwidXNlTWFya2Rvd25MaW5rc1wiLCB1c2VNYXJrZG93bkxpbmtzKTtcbiAgYXBwLnZhdWx0LnNldENvbmZpZyhcIm5ld0xpbmtGb3JtYXRcIiwgbmV3TGlua0Zvcm1hdCk7XG5cbiAgY29uc3QgaXNMaW5rRW1iZWQgPSBsaW5rLnN0YXJ0c1dpdGgoXCIhXCIpO1xuXG4gIGlmIChpc0VtYmVkICE9PSB1bmRlZmluZWQgJiYgaXNFbWJlZCAhPT0gaXNMaW5rRW1iZWQpIHtcbiAgICBpZiAoaXNFbWJlZCkge1xuICAgICAgbGluayA9IFwiIVwiICsgbGluaztcbiAgICB9IGVsc2Uge1xuICAgICAgbGluayA9IGxpbmsuc2xpY2UoMSk7XG4gICAgICBsaW5rID0gbGluay5yZXBsYWNlKFwiW11cIiwgYFske2FsaWFzIHx8IGZpbGUuYmFzZW5hbWV9XWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsaW5rO1xufVxuXG4vKipcbiAqIEVkaXRzIHRoZSBsaW5rcyBpbiB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB1c2luZyB0aGUgcHJvdmlkZWQgbGluayBjb252ZXJ0ZXIgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBlZGl0IHRoZSBsaW5rcyBpbi5cbiAqIEBwYXJhbSBsaW5rQ29udmVydGVyIC0gVGhlIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgZWFjaCBsaW5rLlxuICogQHBhcmFtIHJldHJ5T3B0aW9ucyAtIE9wdGlvbmFsIG9wdGlvbnMgZm9yIHJldHJ5aW5nIHRoZSBvcGVyYXRpb24uXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBsaW5rcyBoYXZlIGJlZW4gZWRpdGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWRpdExpbmtzKFxuICBhcHA6IEFwcCxcbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcbiAgbGlua0NvbnZlcnRlcjogKGxpbms6IFJlZmVyZW5jZUNhY2hlKSA9PiBNYXliZVByb21pc2U8c3RyaW5nIHwgdm9pZD4sXG4gIHJldHJ5T3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIGF3YWl0IGFwcGx5RmlsZUNoYW5nZXMoYXBwLCBwYXRoT3JGaWxlLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCBnZXRDYWNoZVNhZmUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgICBpZiAoIWNhY2hlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlczogRmlsZUNoYW5nZVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgZ2V0QWxsTGlua3MoY2FjaGUpKSB7XG4gICAgICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgbGlua0NvbnZlcnRlcihsaW5rKTtcbiAgICAgIGlmIChuZXdDb250ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgIHN0YXJ0SW5kZXg6IGxpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0LFxuICAgICAgICBlbmRJbmRleDogbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0LFxuICAgICAgICBvbGRDb250ZW50OiBsaW5rLm9yaWdpbmFsLFxuICAgICAgICBuZXdDb250ZW50XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfSwgcmV0cnlPcHRpb25zKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLHNCQUtPO0FBQ1AsMkJBR087QUFDUCxtQkFHTztBQUNQLDZCQUFvQztBQUNwQyxrQkFHTztBQUNQLG9CQUEwQjtBQUMxQixtQkFHTztBQUNQLDJCQUF3QjtBQUN4Qixt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
232
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0xpbmsudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbXCJpbXBvcnQubWV0YS51cmxcIl0gPz8gKCgpPT5yZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKSkoKTtcbnZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzW1wicHJvY2Vzc1wiXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBMaW5rXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIGhhbmRsaW5nIGFuZCB1cGRhdGluZyBsaW5rcyB3aXRoaW4gT2JzaWRpYW4gdmF1bHRzLiBJdCBpbmNsdWRlc1xuICogZnVuY3Rpb25zIHRvIHNwbGl0IHBhdGhzLCB1cGRhdGUgbGlua3MgaW4gZmlsZXMsIGFuZCBnZW5lcmF0ZSBtYXJrZG93biBsaW5rcyB3aXRoIHZhcmlvdXMgb3B0aW9ucy5cbiAqIFRoZSBmdW5jdGlvbnMgaW50ZWdyYXRlIHdpdGggT2JzaWRpYW4ncyBBUEkgdG8gZW5zdXJlIHRoYXQgbGlua3MgYXJlIG1hbmFnZWQgY29ycmVjdGx5IHdpdGhpbiB0aGUgdmF1bHQuXG4gKiovXG5cbmltcG9ydCB7XG4gIG5vcm1hbGl6ZVBhdGgsXG4gIHR5cGUgQXBwLFxuICB0eXBlIFJlZmVyZW5jZUNhY2hlLFxuICB0eXBlIFRGaWxlXG59IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIGdldENhY2hlU2FmZVxufSBmcm9tIFwiLi9NZXRhZGF0YUNhY2hlLnRzXCI7XG5pbXBvcnQge1xuICBhcHBseUZpbGVDaGFuZ2VzLFxuICB0eXBlIEZpbGVDaGFuZ2Vcbn0gZnJvbSBcIi4vVmF1bHQudHNcIjtcbmltcG9ydCB7IGNyZWF0ZVRGaWxlSW5zdGFuY2UgfSBmcm9tIFwib2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnNcIjtcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICByZWxhdGl2ZVxufSBmcm9tIFwiLi4vUGF0aC50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL1N0cmluZy50c1wiO1xuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgdHlwZSBQYXRoT3JGaWxlXG59IGZyb20gXCIuL1RGaWxlLnRzXCI7XG5pbXBvcnQge1xuICBnZXRQYXRoLFxuICBpc01hcmtkb3duRmlsZSxcbiAgdHJpbU1hcmtkb3duRXh0ZW5zaW9uXG59IGZyb20gXCIuL1RBYnN0cmFjdEZpbGUudHNcIjtcbmltcG9ydCB7XG4gIHR5cGUgTWF5YmVQcm9taXNlLFxuICB0eXBlIFJldHJ5T3B0aW9uc1xufSBmcm9tIFwiLi4vQXN5bmMudHNcIjtcbmltcG9ydCB7XG4gIHNob3VsZFVzZVJlbGF0aXZlTGlua3MsXG4gIHNob3VsZFVzZVdpa2lsaW5rc1xufSBmcm9tIFwiLi9PYnNpZGlhblNldHRpbmdzLnRzXCI7XG5cbi8qKlxuICogUmVndWxhciBleHByZXNzaW9uIGZvciBzcGVjaWFsIGxpbmsgc3ltYm9scy5cbiAqL1xuY29uc3QgU1BFQ0lBTF9MSU5LX1NZTUJPTFNfUkVHRVhQID0gL1tcXFxcXFx4MDBcXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRiBdL2c7XG5cbnR5cGUgU3BsaXRTdWJwYXRoUmVzdWx0ID0ge1xuICBsaW5rUGF0aDogc3RyaW5nO1xuICBzdWJwYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFNwbGl0cyBhIGxpbmsgaW50byBpdHMgbGluayBwYXRoIGFuZCBzdWJwYXRoLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIGxpbmsgdG8gc3BsaXQuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgbGluayBwYXRoIGFuZCBzdWJwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRTdWJwYXRoKGxpbms6IHN0cmluZyk6IFNwbGl0U3VicGF0aFJlc3VsdCB7XG4gIGNvbnN0IFNVQlBBVEhfU0VQQVJBVE9SID0gXCIjXCI7XG4gIGNvbnN0IFtsaW5rUGF0aCA9IFwiXCIsIHN1YnBhdGhdID0gbm9ybWFsaXplKGxpbmspLnNwbGl0KFNVQlBBVEhfU0VQQVJBVE9SKTtcbiAgcmV0dXJuIHtcbiAgICBsaW5rUGF0aCxcbiAgICBzdWJwYXRoOiBzdWJwYXRoID8gU1VCUEFUSF9TRVBBUkFUT1IgKyBzdWJwYXRoIDogdW5kZWZpbmVkXG4gIH07XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdXBkYXRpbmcgbGlua3MgaW4gYSBmaWxlLlxuICovXG50eXBlIFVwZGF0ZUxpbmtzSW5GaWxlT3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFRoZSBvYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGZpbGUgdG8gdXBkYXRlIHRoZSBsaW5rcyBpbi5cbiAgICovXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvZiB0aGUgZmlsZS5cbiAgICovXG4gIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIG9sZCBhbmQgbmV3IHBhdGhzIGZvciByZW5hbWluZyBsaW5rcy5cbiAgICovXG4gIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmb3JjZSB0aGUgbGlua3MgdG8gYmUgaW4gTWFya2Rvd24gZm9ybWF0LlxuICAgKi9cbiAgZm9yY2VNYXJrZG93bkxpbmtzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgb25seSBlbWJlZGRlZCBsaW5rcy5cbiAgICovXG4gIGVtYmVkT25seUxpbmtzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgbGlua3MgaW4gYSBmaWxlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHVwZGF0aW5nIHRoZSBsaW5rcy5cbiAqIEByZXR1cm5zIC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGlua3MgYXJlIHVwZGF0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVMaW5rc0luRmlsZShvcHRpb25zOiBVcGRhdGVMaW5rc0luRmlsZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBwYXRoT3JGaWxlLFxuICAgIG9sZFBhdGhPckZpbGUsXG4gICAgcmVuYW1lTWFwLFxuICAgIGZvcmNlTWFya2Rvd25MaW5rcyxcbiAgICBlbWJlZE9ubHlMaW5rc1xuICB9ID0gb3B0aW9ucztcbiAgYXdhaXQgZWRpdExpbmtzKGFwcCwgcGF0aE9yRmlsZSwgKGxpbmspID0+IHtcbiAgICBjb25zdCBpc0VtYmVkTGluayA9IGxpbmsub3JpZ2luYWwuc3RhcnRzV2l0aChcIiFcIik7XG4gICAgaWYgKGVtYmVkT25seUxpbmtzICE9PSB1bmRlZmluZWQgJiYgZW1iZWRPbmx5TGlua3MgIT09IGlzRW1iZWRMaW5rKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBjb252ZXJ0TGluayhhcHAsIGxpbmssIHBhdGhPckZpbGUsIG9sZFBhdGhPckZpbGUsIHJlbmFtZU1hcCwgZm9yY2VNYXJrZG93bkxpbmtzKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBsaW5rIHRvIGEgbmV3IHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBsaW5rIC0gVGhlIHJlZmVyZW5jZSBjYWNoZSBmb3IgdGhlIGxpbmsuXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBmaWxlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb2YgdGhlIGxpbmsuXG4gKiBAcGFyYW0gcmVuYW1lTWFwIC0gQSBtYXAgb2Ygb2xkIHBhdGhzIHRvIG5ldyBwYXRocyBmb3IgcmVuYW1pbmcuXG4gKiBAcGFyYW0gZm9yY2VNYXJrZG93bkxpbmtzIC0gT3B0aW9uYWwgZmxhZyB0byBmb3JjZSBtYXJrZG93biBsaW5rcy5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgbGluay5cbiAqL1xuZnVuY3Rpb24gY29udmVydExpbmsoYXBwOiBBcHAsIGxpbms6IFJlZmVyZW5jZUNhY2hlLCBzb3VyY2U6IFBhdGhPckZpbGUsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPiwgZm9yY2VNYXJrZG93bkxpbmtzPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIG9sZFBhdGhPckZpbGUgPz89IGdldFBhdGgoc291cmNlKTtcbiAgcmV0dXJuIHVwZGF0ZUxpbmsoe1xuICAgIGFwcCxcbiAgICBsaW5rLFxuICAgIHBhdGhPckZpbGU6IGV4dHJhY3RMaW5rRmlsZShhcHAsIGxpbmssIG9sZFBhdGhPckZpbGUpLFxuICAgIG9sZFBhdGhPckZpbGUsXG4gICAgc291cmNlUGF0aE9yRmlsZTogc291cmNlLFxuICAgIHJlbmFtZU1hcCxcbiAgICBmb3JjZU1hcmtkb3duTGlua3NcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGEgbGluay5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGxpbmsgLSBUaGUgcmVmZXJlbmNlIGNhY2hlIGZvciB0aGUgbGluay5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9mIHRoZSBmaWxlLlxuICogQHJldHVybnMgVGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLCBvciBudWxsIGlmIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RMaW5rRmlsZShhcHA6IEFwcCwgbGluazogUmVmZXJlbmNlQ2FjaGUsIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBURmlsZSB8IG51bGwge1xuICBjb25zdCB7IGxpbmtQYXRoIH0gPSBzcGxpdFN1YnBhdGgobGluay5saW5rKTtcbiAgcmV0dXJuIGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmtQYXRoLCBnZXRQYXRoKG9sZFBhdGhPckZpbGUpKTtcbn1cblxudHlwZSBVcGRhdGVMaW5rT3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcCxcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSBjYWNoZSBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBsaW5rOiBSZWZlcmVuY2VDYWNoZSxcblxuICAvKipcbiAgICogVGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLlxuICAgKi9cbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSB8IG51bGwsXG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvZiB0aGUgZmlsZS5cbiAgICovXG4gIG9sZFBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmlsZSBjb250YWluaW5nIHRoZSBsaW5rLlxuICAgKi9cbiAgc291cmNlUGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcblxuICAvKipcbiAgICogQSBtYXAgb2Ygb2xkIGFuZCBuZXcgZmlsZSBwYXRocy5cbiAgICovXG4gIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPixcblxuICAvKipcbiAgICogV2hldGhlciB0byBmb3JjZSBtYXJrZG93biBsaW5rcy5cbiAgICovXG4gIGZvcmNlTWFya2Rvd25MaW5rcz86IGJvb2xlYW4gfCB1bmRlZmluZWRcbn07XG5cbi8qKlxuICogVXBkYXRlcyBhIGxpbmsgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdXBkYXRpbmcgdGhlIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBsaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlTGluayhvcHRpb25zOiBVcGRhdGVMaW5rT3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbGluayxcbiAgICBwYXRoT3JGaWxlLFxuICAgIG9sZFBhdGhPckZpbGUsXG4gICAgc291cmNlUGF0aE9yRmlsZTogc291cmNlLFxuICAgIHJlbmFtZU1hcCxcbiAgICBmb3JjZU1hcmtkb3duTGlua3NcbiAgfSA9IG9wdGlvbnM7XG4gIGlmICghcGF0aE9yRmlsZSkge1xuICAgIHJldHVybiBsaW5rLm9yaWdpbmFsO1xuICB9XG4gIGxldCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBjb25zdCBzb3VyY2VQYXRoID0gZ2V0UGF0aChzb3VyY2UpO1xuICBjb25zdCBvbGRQYXRoID0gZ2V0UGF0aChvbGRQYXRoT3JGaWxlKTtcbiAgY29uc3QgaXNFbWJlZCA9IGxpbmsub3JpZ2luYWwuc3RhcnRzV2l0aChcIiFcIik7XG4gIGNvbnN0IGlzV2lraWxpbmsgPVxuICAgIGxpbmsub3JpZ2luYWwuaW5jbHVkZXMoXCJbW1wiKSAmJiBmb3JjZU1hcmtkb3duTGlua3MgIT09IHRydWU7XG4gIGNvbnN0IHsgc3VicGF0aCB9ID0gc3BsaXRTdWJwYXRoKGxpbmsubGluayk7XG5cbiAgY29uc3QgbmV3UGF0aCA9IHJlbmFtZU1hcC5nZXQoZmlsZS5wYXRoKTtcbiAgY29uc3QgYWxpYXMgPSBnZXRBbGlhcyh7XG4gICAgYXBwLFxuICAgIGRpc3BsYXlUZXh0OiBsaW5rLmRpc3BsYXlUZXh0LFxuICAgIGZpbGU6IHBhdGhPckZpbGUsXG4gICAgb3RoZXJQYXRoczogW29sZFBhdGgsIG5ld1BhdGhdLFxuICAgIHNvdXJjZVBhdGhcbiAgfSk7XG5cbiAgaWYgKG5ld1BhdGgpIHtcbiAgICBmaWxlID0gY3JlYXRlVEZpbGVJbnN0YW5jZShhcHAudmF1bHQsIG5ld1BhdGgpO1xuICB9XG5cbiAgY29uc3QgbmV3TGluayA9IGdlbmVyYXRlTWFya2Rvd25MaW5rKHtcbiAgICBhcHAsXG4gICAgcGF0aE9yRmlsZTogZmlsZSxcbiAgICBzb3VyY2VQYXRoT3JGaWxlOiBzb3VyY2VQYXRoLFxuICAgIHN1YnBhdGgsXG4gICAgYWxpYXMsXG4gICAgaXNFbWJlZCxcbiAgICBpc1dpa2lsaW5rXG4gIH0pO1xuICByZXR1cm4gbmV3TGluaztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBnZXR0aW5nIHRoZSBhbGlhcyBvZiBhIGxpbmsuXG4gKi9cbnR5cGUgR2V0QWxpYXNPcHRpb25zID0ge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzcGxheSB0ZXh0IG9mIHRoZSBsaW5rLlxuICAgKi9cbiAgZGlzcGxheVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSBvZiB0aGUgbGluay5cbiAgICovXG4gIGZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIE90aGVyIHBhdGhzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay5cbiAgICovXG4gIG90aGVyUGF0aHM6IChzdHJpbmcgfCB1bmRlZmluZWQpW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgcGF0aCBvZiB0aGUgbGluay5cbiAgICovXG4gIHNvdXJjZVBhdGg6IHN0cmluZztcbn07XG5cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGFsaWFzIGZvciBhIGdpdmVuIGxpbmsuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmV0cmlldmluZyB0aGUgYWxpYXMuXG4gKiBAcmV0dXJucyBUaGUgYWxpYXMgb2YgdGhlIGxpbmssIG9yIHVuZGVmaW5lZCBpZiBzaG91bGQgYmUgZGVmYXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsaWFzKG9wdGlvbnM6IEdldEFsaWFzT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgZGlzcGxheVRleHQsXG4gICAgZmlsZTogcGF0aE9yRmlsZSxcbiAgICBvdGhlclBhdGhzLFxuICAgIHNvdXJjZVBhdGhcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgaWYgKCFkaXNwbGF5VGV4dCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBjbGVhbkRpc3BsYXlUZXh0ID0gbm9ybWFsaXplUGF0aChkaXNwbGF5VGV4dC5zcGxpdChcIiA+IFwiKVswXSEpLnJlcGxhY2UoL1xcLlxcLy9nLCBcIlwiKTtcblxuICBmb3IgKGNvbnN0IHBhdGggb2YgW2ZpbGUucGF0aCwgLi4ub3RoZXJQYXRoc10pIHtcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBleHRlbnNpb24gPSBleHRuYW1lKHBhdGgpO1xuICAgIGNvbnN0IGZpbGVOYW1lV2l0aEV4dGVuc2lvbiA9IGJhc2VuYW1lKHBhdGgpO1xuICAgIGNvbnN0IGZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbiA9IGJhc2VuYW1lKHBhdGgsIGV4dGVuc2lvbik7XG4gICAgaWYgKGNsZWFuRGlzcGxheVRleHQgPT09IHBhdGggfHwgY2xlYW5EaXNwbGF5VGV4dCA9PT0gZmlsZU5hbWVXaXRoRXh0ZW5zaW9uIHx8IGNsZWFuRGlzcGxheVRleHQgPT09IGZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG9taXRNZEV4dGVuc2lvbiBvZiBbdHJ1ZSwgZmFsc2VdKSB7XG4gICAgY29uc3QgbGlua1RleHQgPSBhcHAubWV0YWRhdGFDYWNoZS5maWxlVG9MaW5rdGV4dChmaWxlLCBzb3VyY2VQYXRoLCBvbWl0TWRFeHRlbnNpb24pO1xuICAgIGlmIChjbGVhbkRpc3BsYXlUZXh0ID09PSBsaW5rVGV4dCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzcGxheVRleHQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZ2VuZXJhdGluZyBhIG1hcmtkb3duIGxpbmsuXG4gKi9cbnR5cGUgR2VuZXJhdGVNYXJrZG93bkxpbmtPcHRpb25zID0ge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0byBsaW5rIHRvLlxuICAgKi9cbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBwYXRoIG9mIHRoZSBsaW5rLlxuICAgKi9cbiAgc291cmNlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogVGhlIHN1YnBhdGggb2YgdGhlIGxpbmsuXG4gICAqL1xuICBzdWJwYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxpYXMgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgYWxpYXM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBzaG91bGQgYmUgZW1iZWRkZWQuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBiZSBpbmZlcnJlZCBiYXNlZCBvbiB0aGUgZmlsZSB0eXBlLlxuICAgKi9cbiAgaXNFbWJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBzaG91bGQgYmUgYSB3aWtpbGluay4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGJlIGluZmVycmVkIGJhc2VkIG9uIHRoZSBPYnNpZGlhbiBzZXR0aW5ncy5cbiAgICovXG4gIGlzV2lraWxpbms/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpbmsgc2hvdWxkIGJlIHJlbGF0aXZlLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgaW5mZXJyZWQgYmFzZWQgb24gdGhlIE9ic2lkaWFuIHNldHRpbmdzLlxuICAgKi9cbiAgaXNSZWxhdGl2ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBzaG91bGQgdXNlIGEgbGVhZGluZyBkb3QuIERlZmF1bHRzIHRvIGBmYWxzZWAuIEhhcyBubyBlZmZlY3QgaWYgYGlzV2lraWxpbmtgIGlzIGB0cnVlYCBvciBgaXNSZWxhdGl2ZWAgaXMgYGZhbHNlYC5cbiAgICovXG4gIHVzZUxlYWRpbmdEb3Q/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpbmsgc2hvdWxkIHVzZSBhbmdsZSBicmFja2V0cy4gRGVmYXVsdHMgdG8gYGZhbHNlYC4gSGFzIG5vIGVmZmVjdCBpZiBgaXNXaWtpbGlua2AgaXMgYHRydWVgXG4gICAqL1xuICB1c2VBbmdsZUJyYWNrZXRzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbWFya2Rvd24gbGluayBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBtYXJrZG93biBsaW5rLlxuICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBtYXJrZG93biBsaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVNYXJrZG93bkxpbmsob3B0aW9uczogR2VuZXJhdGVNYXJrZG93bkxpbmtPcHRpb25zKTogc3RyaW5nIHtcbiAgY29uc3QgeyBhcHAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgb3B0aW9ucy5wYXRoT3JGaWxlKTtcbiAgY29uc3Qgc291cmNlUGF0aCA9IGdldFBhdGgob3B0aW9ucy5zb3VyY2VQYXRoT3JGaWxlKTtcbiAgY29uc3Qgc3VicGF0aCA9IG9wdGlvbnMuc3VicGF0aCA/PyBcIlwiO1xuICBsZXQgYWxpYXMgPSBvcHRpb25zLmFsaWFzID8/IFwiXCI7XG4gIGNvbnN0IGlzRW1iZWQgPSBvcHRpb25zLmlzRW1iZWQgPz8gIWlzTWFya2Rvd25GaWxlKGZpbGUpO1xuICBjb25zdCBpc1dpa2lsaW5rID0gb3B0aW9ucy5pc1dpa2lsaW5rID8/IHNob3VsZFVzZVdpa2lsaW5rcyhhcHApO1xuICBjb25zdCB1c2VSZWxhdGl2ZVBhdGggPSBvcHRpb25zLmlzUmVsYXRpdmUgPz8gc2hvdWxkVXNlUmVsYXRpdmVMaW5rcyhhcHApO1xuXG4gIGxldCBsaW5rVGV4dCA9IGZpbGUucGF0aCA9PT0gc291cmNlUGF0aCAmJiBzdWJwYXRoXG4gICAgPyBzdWJwYXRoXG4gICAgOiB1c2VSZWxhdGl2ZVBhdGhcbiAgICAgID8gcmVsYXRpdmUoZGlybmFtZShzb3VyY2VQYXRoKSwgaXNXaWtpbGluayA/IHRyaW1NYXJrZG93bkV4dGVuc2lvbihmaWxlKSA6IGZpbGUucGF0aCkgKyBzdWJwYXRoXG4gICAgICA6IGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVUb0xpbmt0ZXh0KGZpbGUsIHNvdXJjZVBhdGgsIGlzV2lraWxpbmspICsgc3VicGF0aDtcblxuICBpZiAodXNlUmVsYXRpdmVQYXRoICYmIG9wdGlvbnMudXNlTGVhZGluZ0RvdCAmJiAhbGlua1RleHQuc3RhcnRzV2l0aChcIi5cIikgJiYgIWxpbmtUZXh0LnN0YXJ0c1dpdGgoXCIjXCIpKSB7XG4gICAgbGlua1RleHQgPSBcIi4vXCIgKyBsaW5rVGV4dDtcbiAgfVxuXG4gIGlmICghaXNXaWtpbGluaykge1xuICAgIGlmIChvcHRpb25zLnVzZUFuZ2xlQnJhY2tldHMpIHtcbiAgICAgIGxpbmtUZXh0ID0gYDwke2xpbmtUZXh0fT5gO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5rVGV4dCA9IGxpbmtUZXh0LnJlcGxhY2UoU1BFQ0lBTF9MSU5LX1NZTUJPTFNfUkVHRVhQLCBmdW5jdGlvbiAoc3BlY2lhbExpbmtTeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzcGVjaWFsTGlua1N5bWJvbCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWlzRW1iZWQpIHtcbiAgICAgIHJldHVybiBgWyR7YWxpYXMgfHwgZmlsZS5iYXNlbmFtZX1dKCR7bGlua1RleHR9KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgIVske2FsaWFzfV0oJHtsaW5rVGV4dH0pYDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGFsaWFzICYmIGFsaWFzLnRvTG93ZXJDYXNlKCkgPT09IGxpbmtUZXh0LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGxpbmtUZXh0ID0gYWxpYXM7XG4gICAgICBhbGlhcyA9IFwiXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIChpc0VtYmVkID8gXCIhXCIgOiBcIlwiKSArIChhbGlhcyA/IGBbWyR7bGlua1RleHR9fCR7YWxpYXN9XV1gIDogYFtbJHtsaW5rVGV4dH1dXWApO1xuICB9XG59XG5cbi8qKlxuICogRWRpdHMgdGhlIGxpbmtzIGluIHRoZSBzcGVjaWZpZWQgZmlsZSBvciBwYXRoIHVzaW5nIHRoZSBwcm92aWRlZCBsaW5rIGNvbnZlcnRlciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGVkaXQgdGhlIGxpbmtzIGluLlxuICogQHBhcmFtIGxpbmtDb252ZXJ0ZXIgLSBUaGUgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBlYWNoIGxpbmsuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcmV0cnlpbmcgdGhlIG9wZXJhdGlvbi5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxpbmtzIGhhdmUgYmVlbiBlZGl0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlZGl0TGlua3MoXG4gIGFwcDogQXBwLFxuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLFxuICBsaW5rQ29udmVydGVyOiAobGluazogUmVmZXJlbmNlQ2FjaGUpID0+IE1heWJlUHJvbWlzZTxzdHJpbmcgfCB2b2lkPixcbiAgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gYXdhaXQgYXBwbHlGaWxlQ2hhbmdlcyhhcHAsIHBhdGhPckZpbGUsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjYWNoZSA9IGF3YWl0IGdldENhY2hlU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICAgIGlmICghY2FjaGUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VzOiBGaWxlQ2hhbmdlW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgbGluayBvZiBnZXRBbGxMaW5rcyhjYWNoZSkpIHtcbiAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBhd2FpdCBsaW5rQ29udmVydGVyKGxpbmspO1xuICAgICAgaWYgKG5ld0NvbnRlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgc3RhcnRJbmRleDogbGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQsXG4gICAgICAgIGVuZEluZGV4OiBsaW5rLnBvc2l0aW9uLmVuZC5vZmZzZXQsXG4gICAgICAgIG9sZENvbnRlbnQ6IGxpbmsub3JpZ2luYWwsXG4gICAgICAgIG5ld0NvbnRlbnRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9LCByZXRyeU9wdGlvbnMpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsc0JBS087QUFDUCwyQkFHTztBQUNQLG1CQUdPO0FBQ1AsNkJBQW9DO0FBQ3BDLGtCQUtPO0FBQ1Asb0JBQTBCO0FBQzFCLG1CQUdPO0FBQ1AsMkJBSU87QUFDUCxtQkFHTztBQUNQLDhCQUdPO0FBbkRQLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSSxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVUsR0FBRztBQUM3RyxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBbURBLE1BQU0sOEJBQThCO0FBYTdCLFNBQVMsYUFBYSxNQUFrQztBQUM3RCxRQUFNLG9CQUFvQjtBQUMxQixRQUFNLENBQUMsV0FBVyxJQUFJLE9BQU8sUUFBSSx5QkFBVSxJQUFJLEVBQUUsTUFBTSxpQkFBaUI7QUFDeEUsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLFNBQVMsVUFBVSxvQkFBb0IsVUFBVTtBQUFBLEVBQ25EO0FBQ0Y7QUEyQ0EsZUFBc0Isa0JBQWtCLFNBQWtEO0FBQ3hGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEs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
@@ -157,17 +157,25 @@ type GenerateMarkdownLinkOptions = {
157
157
  */
158
158
  alias?: string | undefined;
159
159
  /**
160
- * Indicates if the link should be embedded.
160
+ * Indicates if the link should be embedded. If not provided, it will be inferred based on the file type.
161
161
  */
162
162
  isEmbed?: boolean | undefined;
163
163
  /**
164
- * Indicates if the link should be a wikilink.
164
+ * Indicates if the link should be a wikilink. If not provided, it will be inferred based on the Obsidian settings.
165
165
  */
166
166
  isWikilink?: boolean | undefined;
167
167
  /**
168
- * Indicates if the link should be relative.
168
+ * Indicates if the link should be relative. If not provided, it will be inferred based on the Obsidian settings.
169
169
  */
170
170
  isRelative?: boolean | undefined;
171
+ /**
172
+ * Indicates if the link should use a leading dot. Defaults to `false`. Has no effect if `isWikilink` is `true` or `isRelative` is `false`.
173
+ */
174
+ useLeadingDot?: boolean | undefined;
175
+ /**
176
+ * Indicates if the link should use angle brackets. Defaults to `false`. Has no effect if `isWikilink` is `true`
177
+ */
178
+ useAngleBrackets?: boolean | undefined;
171
179
  };
172
180
  /**
173
181
  * Generates a markdown link based on the provided parameters.
@@ -0,0 +1,47 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ "use strict";
7
+ var __defProp = Object.defineProperty;
8
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
+ var __getOwnPropNames = Object.getOwnPropertyNames;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __export = (target, all) => {
12
+ for (var name in all)
13
+ __defProp(target, name, { get: all[name], enumerable: true });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from))
18
+ if (!__hasOwnProp.call(to, key) && key !== except)
19
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
20
+ }
21
+ return to;
22
+ };
23
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
+ var ObsidianSettings_exports = {};
25
+ __export(ObsidianSettings_exports, {
26
+ shouldUseRelativeLinks: () => shouldUseRelativeLinks,
27
+ shouldUseWikilinks: () => shouldUseWikilinks
28
+ });
29
+ module.exports = __toCommonJS(ObsidianSettings_exports);
30
+ var __import_meta_url = globalThis["import.meta.url"] ?? (() => require("node:url").pathToFileURL(__filename))();
31
+ var __process = globalThis["process"] ?? {
32
+ "cwd": () => "/",
33
+ "env": {},
34
+ "platform": "android"
35
+ };
36
+ function shouldUseWikilinks(app) {
37
+ return !app.vault.getConfig("useMarkdownLinks");
38
+ }
39
+ function shouldUseRelativeLinks(app) {
40
+ return app.vault.getConfig("newLinkFormat") === "relative";
41
+ }
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ shouldUseRelativeLinks,
45
+ shouldUseWikilinks
46
+ });
47
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL09ic2lkaWFuU2V0dGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbXCJpbXBvcnQubWV0YS51cmxcIl0gPz8gKCgpPT5yZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKSkoKTtcbnZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzW1wicHJvY2Vzc1wiXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBPYnNpZGlhbiBzZXR0aW5ncy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG4vKipcbiAqIFJldHJpZXZlcyB3aGV0aGVyIHRvIHVzZSB3aWtpbGlua3MgYmFzZWQgb24gdGhlIE9ic2lkaWFuIHNldHRpbmdzLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRvIHVzZSB3aWtpbGlua3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRVc2VXaWtpbGlua3MoYXBwOiBBcHApOiBib29sZWFuIHtcbiAgcmV0dXJuICFhcHAudmF1bHQuZ2V0Q29uZmlnKFwidXNlTWFya2Rvd25MaW5rc1wiKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgd2hldGhlciB0byB1c2UgcmVsYXRpdmUgbGlua3MgYmFzZWQgb24gdGhlIE9ic2lkaWFuIHNldHRpbmdzLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRvIHVzZSByZWxhdGl2ZSBsaW5rcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFVzZVJlbGF0aXZlTGlua3MoYXBwOiBBcHApOiBib29sZWFuIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRDb25maWcoXCJuZXdMaW5rRm9ybWF0XCIpID09PSBcInJlbGF0aXZlXCI7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSSxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVUsR0FBRztBQUM3RyxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBYU8sU0FBUyxtQkFBbUIsS0FBbUI7QUFDcEQsU0FBTyxDQUFDLElBQUksTUFBTSxVQUFVLGtCQUFrQjtBQUNoRDtBQU9PLFNBQVMsdUJBQXVCLEtBQW1CO0FBQ3hELFNBQU8sSUFBSSxNQUFNLFVBQVUsZUFBZSxNQUFNO0FBQ2xEOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * This module provides utility functions for working with Obsidian settings.
4
+ */
5
+ import type { App } from "obsidian";
6
+ /**
7
+ * Retrieves whether to use wikilinks based on the Obsidian settings.
8
+ * @param app - The Obsidian app instance.
9
+ * @returns Whether to use wikilinks.
10
+ */
11
+ export declare function shouldUseWikilinks(app: App): boolean;
12
+ /**
13
+ * Retrieves whether to use relative links based on the Obsidian settings.
14
+ * @param app - The Obsidian app instance.
15
+ * @returns Whether to use relative links.
16
+ */
17
+ export declare function shouldUseRelativeLinks(app: App): boolean;
@@ -44,6 +44,7 @@ __export(obsidian_exports, {
44
44
  MarkdownCodeBlockProcessor: () => MarkdownCodeBlockProcessor,
45
45
  MetadataCache: () => MetadataCache,
46
46
  Modal: () => Modal,
47
+ ObsidianSettings: () => ObsidianSettings,
47
48
  Plugin: () => Plugin,
48
49
  ResourceUrl: () => ResourceUrl,
49
50
  TAbstractFile: () => TAbstractFile,
@@ -63,6 +64,7 @@ var Link = __toESM(require("./Link.cjs"), 1);
63
64
  var MarkdownCodeBlockProcessor = __toESM(require("./MarkdownCodeBlockProcessor.cjs"), 1);
64
65
  var MetadataCache = __toESM(require("./MetadataCache.cjs"), 1);
65
66
  var Modal = __toESM(require("./Modal/index.cjs"), 1);
67
+ var ObsidianSettings = __toESM(require("./ObsidianSettings.cjs"), 1);
66
68
  var Plugin = __toESM(require("./Plugin/index.cjs"), 1);
67
69
  var ResourceUrl = __toESM(require("./ResourceUrl.cjs"), 1);
68
70
  var TAbstractFile = __toESM(require("./TAbstractFile.cjs"), 1);
@@ -88,6 +90,7 @@ var __process = globalThis["process"] ?? {
88
90
  MarkdownCodeBlockProcessor,
89
91
  MetadataCache,
90
92
  Modal,
93
+ ObsidianSettings,
91
94
  Plugin,
92
95
  ResourceUrl,
93
96
  TAbstractFile,
@@ -95,4 +98,4 @@ var __process = globalThis["process"] ?? {
95
98
  TFolder,
96
99
  Vault
97
100
  });
98
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzW1wiaW1wb3J0Lm1ldGEudXJsXCJdID8/ICgoKT0+cmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkpKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzIEFwcCBmcm9tIFwiLi9BcHAudHNcIjtcbmV4cG9ydCAqIGFzIEF0dGFjaG1lbnRQYXRoIGZyb20gXCIuL0F0dGFjaG1lbnRQYXRoLnRzXCI7XG5leHBvcnQgKiBhcyBCYWNrbGluayBmcm9tIFwiLi9CYWNrbGluay50c1wiO1xuZXhwb3J0ICogYXMgQ2FsbG91dCBmcm9tIFwiLi9DYWxsb3V0LnRzXCI7XG5leHBvcnQgKiBhcyBEYXRhdmlldyBmcm9tIFwiLi9EYXRhdmlldy50c1wiO1xuZXhwb3J0ICogYXMgRGF0YXZpZXdMaW5rIGZyb20gXCIuL0RhdGF2aWV3TGluay50c1wiO1xuZXhwb3J0ICogYXMgRnJvbnRNYXR0ZXIgZnJvbSBcIi4vRnJvbnRNYXR0ZXIudHNcIjtcbmV4cG9ydCAqIGFzIExpbmsgZnJvbSBcIi4vTGluay50c1wiO1xuZXhwb3J0ICogYXMgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IgZnJvbSBcIi4vTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IudHNcIjtcbmV4cG9ydCAqIGFzIE1ldGFkYXRhQ2FjaGUgZnJvbSBcIi4vTWV0YWRhdGFDYWNoZS50c1wiO1xuZXhwb3J0ICogYXMgTW9kYWwgZnJvbSBcIi4vTW9kYWwvaW5kZXgudHNcIjtcbmV4cG9ydCAqIGFzIFBsdWdpbiBmcm9tIFwiLi9QbHVnaW4vaW5kZXgudHNcIjtcbmV4cG9ydCAqIGFzIFJlc291cmNlVXJsIGZyb20gXCIuL1Jlc291cmNlVXJsLnRzXCI7XG5leHBvcnQgKiBhcyBUQWJzdHJhY3RGaWxlIGZyb20gXCIuL1RBYnN0cmFjdEZpbGUudHNcIjtcbmV4cG9ydCAqIGFzIFRGaWxlIGZyb20gXCIuL1RGaWxlLnRzXCI7XG5leHBvcnQgKiBhcyBURm9sZGVyIGZyb20gXCIuL1RGb2xkZXIudHNcIjtcbmV4cG9ydCAqIGFzIFZhdWx0IGZyb20gXCIuL1ZhdWx0LnRzXCI7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxVQUFxQjtBQUNyQixxQkFBZ0M7QUFDaEMsZUFBMEI7QUFDMUIsY0FBeUI7QUFDekIsZUFBMEI7QUFDMUIsbUJBQThCO0FBQzlCLGtCQUE2QjtBQUM3QixXQUFzQjtBQUN0QixpQ0FBNEM7QUFDNUMsb0JBQStCO0FBQy9CLFlBQXVCO0FBQ3ZCLGFBQXdCO0FBQ3hCLGtCQUE2QjtBQUM3QixvQkFBK0I7QUFDL0IsWUFBdUI7QUFDdkIsY0FBeUI7QUFDekIsWUFBdUI7QUF4QnZCLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSSxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVUsR0FBRztBQUM3RyxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkOyIsCiAgIm5hbWVzIjogW10KfQo=
101
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzW1wiaW1wb3J0Lm1ldGEudXJsXCJdID8/ICgoKT0+cmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkpKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzIEFwcCBmcm9tIFwiLi9BcHAudHNcIjtcbmV4cG9ydCAqIGFzIEF0dGFjaG1lbnRQYXRoIGZyb20gXCIuL0F0dGFjaG1lbnRQYXRoLnRzXCI7XG5leHBvcnQgKiBhcyBCYWNrbGluayBmcm9tIFwiLi9CYWNrbGluay50c1wiO1xuZXhwb3J0ICogYXMgQ2FsbG91dCBmcm9tIFwiLi9DYWxsb3V0LnRzXCI7XG5leHBvcnQgKiBhcyBEYXRhdmlldyBmcm9tIFwiLi9EYXRhdmlldy50c1wiO1xuZXhwb3J0ICogYXMgRGF0YXZpZXdMaW5rIGZyb20gXCIuL0RhdGF2aWV3TGluay50c1wiO1xuZXhwb3J0ICogYXMgRnJvbnRNYXR0ZXIgZnJvbSBcIi4vRnJvbnRNYXR0ZXIudHNcIjtcbmV4cG9ydCAqIGFzIExpbmsgZnJvbSBcIi4vTGluay50c1wiO1xuZXhwb3J0ICogYXMgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IgZnJvbSBcIi4vTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IudHNcIjtcbmV4cG9ydCAqIGFzIE1ldGFkYXRhQ2FjaGUgZnJvbSBcIi4vTWV0YWRhdGFDYWNoZS50c1wiO1xuZXhwb3J0ICogYXMgTW9kYWwgZnJvbSBcIi4vTW9kYWwvaW5kZXgudHNcIjtcbmV4cG9ydCAqIGFzIE9ic2lkaWFuU2V0dGluZ3MgZnJvbSBcIi4vT2JzaWRpYW5TZXR0aW5ncy50c1wiO1xuZXhwb3J0ICogYXMgUGx1Z2luIGZyb20gXCIuL1BsdWdpbi9pbmRleC50c1wiO1xuZXhwb3J0ICogYXMgUmVzb3VyY2VVcmwgZnJvbSBcIi4vUmVzb3VyY2VVcmwudHNcIjtcbmV4cG9ydCAqIGFzIFRBYnN0cmFjdEZpbGUgZnJvbSBcIi4vVEFic3RyYWN0RmlsZS50c1wiO1xuZXhwb3J0ICogYXMgVEZpbGUgZnJvbSBcIi4vVEZpbGUudHNcIjtcbmV4cG9ydCAqIGFzIFRGb2xkZXIgZnJvbSBcIi4vVEZvbGRlci50c1wiO1xuZXhwb3J0ICogYXMgVmF1bHQgZnJvbSBcIi4vVmF1bHQudHNcIjtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsVUFBcUI7QUFDckIscUJBQWdDO0FBQ2hDLGVBQTBCO0FBQzFCLGNBQXlCO0FBQ3pCLGVBQTBCO0FBQzFCLG1CQUE4QjtBQUM5QixrQkFBNkI7QUFDN0IsV0FBc0I7QUFDdEIsaUNBQTRDO0FBQzVDLG9CQUErQjtBQUMvQixZQUF1QjtBQUN2Qix1QkFBa0M7QUFDbEMsYUFBd0I7QUFDeEIsa0JBQTZCO0FBQzdCLG9CQUErQjtBQUMvQixZQUF1QjtBQUN2QixjQUF5QjtBQUN6QixZQUF1QjtBQXpCdkIsSUFBSSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxNQUFJLFFBQVEsVUFBVSxFQUFFLGNBQWMsVUFBVSxHQUFHO0FBQzdHLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -9,6 +9,7 @@ export * as Link from "./Link.ts";
9
9
  export * as MarkdownCodeBlockProcessor from "./MarkdownCodeBlockProcessor.ts";
10
10
  export * as MetadataCache from "./MetadataCache.ts";
11
11
  export * as Modal from "./Modal/index.ts";
12
+ export * as ObsidianSettings from "./ObsidianSettings.ts";
12
13
  export * as Plugin from "./Plugin/index.ts";
13
14
  export * as ResourceUrl from "./ResourceUrl.ts";
14
15
  export * as TAbstractFile from "./TAbstractFile.ts";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-dev-utils",
3
- "version": "2.23.3",
3
+ "version": "2.24.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",