obsidian-dev-utils 3.13.0 → 3.14.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 +5 -0
- package/dist/lib/obsidian/FrontMatter.cjs +6 -6
- package/dist/lib/obsidian/FrontMatter.d.ts +4 -4
- package/dist/lib/obsidian/RenameDeleteHandler.cjs +10 -4
- package/dist/lib/obsidian/RenameDeleteHandler.d.ts +11 -2
- package/dist/lib/obsidian/Vault.cjs +17 -17
- package/dist/lib/obsidian/Vault.d.ts +6 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -26,8 +26,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
26
26
|
var FrontMatter_exports = {};
|
27
27
|
__export(FrontMatter_exports, {
|
28
28
|
addAlias: () => addAlias,
|
29
|
-
|
30
|
-
|
29
|
+
deleteAlias: () => deleteAlias,
|
30
|
+
processFrontMatter: () => processFrontMatter
|
31
31
|
});
|
32
32
|
module.exports = __toCommonJS(FrontMatter_exports);
|
33
33
|
var import_js_yaml = require('js-yaml');
|
@@ -107,7 +107,7 @@ async function addAlias(app, pathOrFile, alias) {
|
|
107
107
|
}
|
108
108
|
});
|
109
109
|
}
|
110
|
-
async function
|
110
|
+
async function deleteAlias(app, pathOrFile, alias) {
|
111
111
|
if (!alias) {
|
112
112
|
return;
|
113
113
|
}
|
@@ -124,7 +124,7 @@ async function removeAlias(app, pathOrFile, alias) {
|
|
124
124
|
// Annotate the CommonJS export names for ESM import in node:
|
125
125
|
0 && (module.exports = {
|
126
126
|
addAlias,
|
127
|
-
|
128
|
-
|
127
|
+
deleteAlias,
|
128
|
+
processFrontMatter
|
129
129
|
});
|
130
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0Zyb250TWF0dGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzWydpbXBvcnQubWV0YS51cmwnXSA/PyAoKCk9PntpZih0eXBlb2YgX19maWxlbmFtZSE9PVwic3RyaW5nXCIpe3JldHVybiBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKX1yZXR1cm4gcmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSl9KSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBGcm9udE1hdHRlclxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgYW5kIG1hbmFnaW5nIFlBTUwgZnJvbnQgbWF0dGVyIGluIE9ic2lkaWFuIG5vdGVzLlxuICovXG5cbmltcG9ydCB7XG4gIERFRkFVTFRfU0NIRU1BLFxuICBkdW1wLFxuICBsb2FkLFxuICBUeXBlXG59IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUHJvbWlzZSB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IHRocm93RXhwcmVzc2lvbiB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vVEZpbGUudHMnO1xuaW1wb3J0IHsgZ2V0RmlsZSB9IGZyb20gJy4vVEZpbGUudHMnO1xuaW1wb3J0IHsgcHJvY2Vzc1dpdGhSZXRyeSB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZyb250IG1hdHRlciBvZiBhbiBPYnNpZGlhbiBmaWxlLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9oZWxwLm9ic2lkaWFuLm1kL0VkaXRpbmcrYW5kK2Zvcm1hdHRpbmcvUHJvcGVydGllcyNEZWZhdWx0K3Byb3BlcnRpZXN9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5Gcm9udE1hdHRlciB7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBhbGlhc2VzIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIGFsaWFzZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgQ1NTIGNsYXNzZXMgdG8gYXBwbHkgdG8gdGhlIG5vdGUuXG4gICAqL1xuICBjc3NjbGFzc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIHRhZ3MgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgdGFncz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZyb250IG1hdHRlciBmb3IgcHVibGlzaGluZyBpbiBPYnNpZGlhbi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vaGVscC5vYnNpZGlhbi5tZC9FZGl0aW5nK2FuZCtmb3JtYXR0aW5nL1Byb3BlcnRpZXMjUHJvcGVydGllcytmb3IrT2JzaWRpYW4rUHVibGlzaH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhblB1Ymxpc2hGcm9udE1hdHRlciB7XG4gIC8qKlxuICAgKiBUaGUgY292ZXIgaW1hZ2UgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgY292ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGltYWdlIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIGltYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVybWFuZW50IGxpbmsgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgcGVybWFsaW5rPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBub3RlIGlzIHB1Ymxpc2hlZC5cbiAgICovXG4gIHB1Ymxpc2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGNvbWJpbmVkIGZyb250IG1hdHRlciBvZiBhIGRvY3VtZW50LlxuICogSXQgaXMgYSB1bmlvbiBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLCBPYnNpZGlhbiBmcm9udCBtYXR0ZXIsIGFuZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMuXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250TWF0dGVyIC0gVGhlIHR5cGUgb2YgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tYmluZWRGcm9udE1hdHRlcjxDdXN0b21Gcm9udE1hdHRlcj4gPSBDdXN0b21Gcm9udE1hdHRlciAmIE9ic2lkaWFuRnJvbnRNYXR0ZXIgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuY29uc3QgVElNRVNUQU1QX1RZUEUgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogKGRhdGE6IHVua25vd24pOiBib29sZWFuID0+IGRhdGEgIT0gbnVsbCxcbiAgY29uc3RydWN0OiAoZGF0YTogdW5rbm93bik6IHN0cmluZyA9PiBTdHJpbmcoZGF0YSksXG4gIHJlcHJlc2VudDogKGRhdGE6IG9iamVjdCk6IHVua25vd24gPT4gZGF0YVxufSk7XG5cbmNvbnN0IE5PX1RJTUVTVEFNUFNfWUFNTF9TQ0hFTUEgPSBERUZBVUxUX1NDSEVNQS5leHRlbmQoe1xuICBleHBsaWNpdDogW1RJTUVTVEFNUF9UWVBFXVxufSk7XG5cbmNvbnN0IEZST05UX01BVFRFUl9SRUdfRVhQID0gL14tLS1cXHI/XFxuKCg/Oi58XFxyP1xcbikqPylcXHI/XFxuPy0tLSg/Olxccj9cXG58JCkoKD86LnxcXHI/XFxuKSopLztcblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIGZyb250IG1hdHRlciBvZiBhIGdpdmVuIGZpbGUsIGFsbG93aW5nIG1vZGlmaWNhdGlvbnMgdmlhIGEgcHJvdmlkZWQgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udE1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgVEZpbGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbm90ZS5cbiAqIEBwYXJhbSBmcm9udE1hdHRlckZuIC0gQSBmdW5jdGlvbiB0aGF0IG1vZGlmaWVzIHRoZSBmcm9udCBtYXR0ZXIuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmcm9udCBtYXR0ZXIgaGFzIGJlZW4gcHJvY2Vzc2VkIGFuZCBzYXZlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NGcm9udE1hdHRlcjxDdXN0b21Gcm9udE1hdHRlciA9IHVua25vd24+KGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBmcm9udE1hdHRlckZuOiAoZnJvbnRNYXR0ZXI6IENvbWJpbmVkRnJvbnRNYXR0ZXI8Q3VzdG9tRnJvbnRNYXR0ZXI+KSA9PiBNYXliZVByb21pc2U8dm9pZD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlKTtcblxuICBhd2FpdCBwcm9jZXNzV2l0aFJldHJ5KGFwcCwgZmlsZSwgYXN5bmMgKGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXRjaCA9IEZST05UX01BVFRFUl9SRUdfRVhQLmV4ZWMoY29udGVudCk7XG4gICAgbGV0IGZyb250TWF0dGVyU3RyOiBzdHJpbmc7XG4gICAgbGV0IG1haW5Db250ZW50OiBzdHJpbmc7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBmcm9udE1hdHRlclN0ciA9IG1hdGNoWzFdID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0Zyb250IG1hdHRlciBtYXRjaCBpcyBudWxsJykpO1xuICAgICAgbWFpbkNvbnRlbnQgPSBtYXRjaFsyXSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdGcm9udCBtYXR0ZXIgbWF0Y2ggaXMgbnVsbCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnJvbnRNYXR0ZXJTdHIgPSAnJztcbiAgICAgIG1haW5Db250ZW50ID0gY29udGVudDtcbiAgICB9XG5cbiAgICBpZiAoIW1haW5Db250ZW50KSB7XG4gICAgICBtYWluQ29udGVudCA9ICdcXG4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYWluQ29udGVudCA9ICdcXG4nICsgbWFpbkNvbnRlbnQudHJpbSgpICsgJ1xcbic7XG4gICAgfVxuXG4gICAgY29uc3QgZnJvbnRNYXR0ZXIgPSAobG9hZChmcm9udE1hdHRlclN0ciwgeyBzY2hlbWE6IE5PX1RJTUVTVEFNUFNfWUFNTF9TQ0hFTUEgfSkgPz8ge30pIGFzIENvbWJpbmVkRnJvbnRNYXR0ZXI8Q3VzdG9tRnJvbnRNYXR0ZXI+O1xuICAgIGF3YWl0IGZyb250TWF0dGVyRm4oZnJvbnRNYXR0ZXIpO1xuICAgIGxldCBuZXdGcm9udE1hdHRlclN0ciA9IGR1bXAoZnJvbnRNYXR0ZXIsIHtcbiAgICAgIGxpbmVXaWR0aDogLTEsXG4gICAgICBxdW90aW5nVHlwZTogJ1wiJyxcbiAgICAgIHNjaGVtYTogTk9fVElNRVNUQU1QU19ZQU1MX1NDSEVNQVxuICAgIH0pO1xuICAgIGlmIChuZXdGcm9udE1hdHRlclN0ciA9PT0gJ3t9XFxuJykge1xuICAgICAgbmV3RnJvbnRNYXR0ZXJTdHIgPSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBuZXdDb250ZW50ID0gYC0tLVxuJHtuZXdGcm9udE1hdHRlclN0cn0tLS1cbiR7bWFpbkNvbnRlbnR9YDtcblxuICAgIHJldHVybiBuZXdDb250ZW50O1xuICB9KTtcbn1cblxuLyoqXG4gKiBBZGRzIGFuIGFsaWFzIHRvIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBmaWxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIFRGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5vdGUuXG4gKiBAcGFyYW0gYWxpYXMgLSBUaGUgYWxpYXMgdG8gYWRkLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYWxpYXMgaGFzIGJlZW4gYWRkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRBbGlhcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgYWxpYXM/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmIChhbGlhcyA9PT0gZmlsZS5iYXNlbmFtZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3NGcm9udE1hdHRlcihhcHAsIHBhdGhPckZpbGUsIChmcm9udE1hdHRlcikgPT4ge1xuICAgIGlmICghZnJvbnRNYXR0ZXIuYWxpYXNlcykge1xuICAgICAgZnJvbnRNYXR0ZXIuYWxpYXNlcyA9IFtdO1xuICAgIH1cblxuICAgIGlmICghZnJvbnRNYXR0ZXIuYWxpYXNlcy5pbmNsdWRlcyhhbGlhcykpIHtcbiAgICAgIGZyb250TWF0dGVyLmFsaWFzZXMucHVzaChhbGlhcyk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFuIGFsaWFzIGZyb20gdGhlIGZyb250IG1hdHRlciBvZiBhIGdpdmVuIGZpbGUgaWYgaXQgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBub3RlLlxuICogQHBhcmFtIGFsaWFzIC0gVGhlIGFsaWFzIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFsaWFzIGhhcyBiZWVuIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVBbGlhcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgYWxpYXM/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3NGcm9udE1hdHRlcihhcHAsIHBhdGhPckZpbGUsIChmcm9udE1hdHRlcikgPT4ge1xuICAgIGlmICghZnJvbnRNYXR0ZXIuYWxpYXNlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZyb250TWF0dGVyLmFsaWFzZXMgPSBmcm9udE1hdHRlci5hbGlhc2VzLmZpbHRlcigoYSkgPT4gYSAhPSBhbGlhcyk7XG5cbiAgICBpZiAoZnJvbnRNYXR0ZXIuYWxpYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGRlbGV0ZSBmcm9udE1hdHRlci5hbGlhc2VzO1xuICAgIH1cbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxxQkFLTztBQUNQLHNCQUFvQjtBQUdwQixtQkFBZ0M7QUFFaEMsbUJBQXdCO0FBQ3hCLG1CQUFpQztBQXZCakMsSUFBSSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxNQUFJO0FBQUMsTUFBRyxP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
|
130
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0Zyb250TWF0dGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzWydpbXBvcnQubWV0YS51cmwnXSA/PyAoKCk9PntpZih0eXBlb2YgX19maWxlbmFtZSE9PVwic3RyaW5nXCIpe3JldHVybiBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKX1yZXR1cm4gcmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSl9KSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBGcm9udE1hdHRlclxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgYW5kIG1hbmFnaW5nIFlBTUwgZnJvbnQgbWF0dGVyIGluIE9ic2lkaWFuIG5vdGVzLlxuICovXG5cbmltcG9ydCB7XG4gIERFRkFVTFRfU0NIRU1BLFxuICBkdW1wLFxuICBsb2FkLFxuICBUeXBlXG59IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUHJvbWlzZSB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IHRocm93RXhwcmVzc2lvbiB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vVEZpbGUudHMnO1xuaW1wb3J0IHsgZ2V0RmlsZSB9IGZyb20gJy4vVEZpbGUudHMnO1xuaW1wb3J0IHsgcHJvY2Vzc1dpdGhSZXRyeSB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZyb250IG1hdHRlciBvZiBhbiBPYnNpZGlhbiBmaWxlLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9oZWxwLm9ic2lkaWFuLm1kL0VkaXRpbmcrYW5kK2Zvcm1hdHRpbmcvUHJvcGVydGllcyNEZWZhdWx0K3Byb3BlcnRpZXN9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5Gcm9udE1hdHRlciB7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBhbGlhc2VzIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIGFsaWFzZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgQ1NTIGNsYXNzZXMgdG8gYXBwbHkgdG8gdGhlIG5vdGUuXG4gICAqL1xuICBjc3NjbGFzc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIHRhZ3MgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgdGFncz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZyb250IG1hdHRlciBmb3IgcHVibGlzaGluZyBpbiBPYnNpZGlhbi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vaGVscC5vYnNpZGlhbi5tZC9FZGl0aW5nK2FuZCtmb3JtYXR0aW5nL1Byb3BlcnRpZXMjUHJvcGVydGllcytmb3IrT2JzaWRpYW4rUHVibGlzaH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhblB1Ymxpc2hGcm9udE1hdHRlciB7XG4gIC8qKlxuICAgKiBUaGUgY292ZXIgaW1hZ2UgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgY292ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIG5vdGUuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGltYWdlIGZvciB0aGUgbm90ZS5cbiAgICovXG4gIGltYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVybWFuZW50IGxpbmsgZm9yIHRoZSBub3RlLlxuICAgKi9cbiAgcGVybWFsaW5rPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBub3RlIGlzIHB1Ymxpc2hlZC5cbiAgICovXG4gIHB1Ymxpc2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGNvbWJpbmVkIGZyb250IG1hdHRlciBvZiBhIGRvY3VtZW50LlxuICogSXQgaXMgYSB1bmlvbiBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLCBPYnNpZGlhbiBmcm9udCBtYXR0ZXIsIGFuZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMuXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250TWF0dGVyIC0gVGhlIHR5cGUgb2YgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tYmluZWRGcm9udE1hdHRlcjxDdXN0b21Gcm9udE1hdHRlcj4gPSBDdXN0b21Gcm9udE1hdHRlciAmIE9ic2lkaWFuRnJvbnRNYXR0ZXIgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuY29uc3QgVElNRVNUQU1QX1RZUEUgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogKGRhdGE6IHVua25vd24pOiBib29sZWFuID0+IGRhdGEgIT0gbnVsbCxcbiAgY29uc3RydWN0OiAoZGF0YTogdW5rbm93bik6IHN0cmluZyA9PiBTdHJpbmcoZGF0YSksXG4gIHJlcHJlc2VudDogKGRhdGE6IG9iamVjdCk6IHVua25vd24gPT4gZGF0YVxufSk7XG5cbmNvbnN0IE5PX1RJTUVTVEFNUFNfWUFNTF9TQ0hFTUEgPSBERUZBVUxUX1NDSEVNQS5leHRlbmQoe1xuICBleHBsaWNpdDogW1RJTUVTVEFNUF9UWVBFXVxufSk7XG5cbmNvbnN0IEZST05UX01BVFRFUl9SRUdfRVhQID0gL14tLS1cXHI/XFxuKCg/Oi58XFxyP1xcbikqPylcXHI/XFxuPy0tLSg/Olxccj9cXG58JCkoKD86LnxcXHI/XFxuKSopLztcblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIGZyb250IG1hdHRlciBvZiBhIGdpdmVuIGZpbGUsIGFsbG93aW5nIG1vZGlmaWNhdGlvbnMgdmlhIGEgcHJvdmlkZWQgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udE1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgVEZpbGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbm90ZS5cbiAqIEBwYXJhbSBmcm9udE1hdHRlckZuIC0gQSBmdW5jdGlvbiB0aGF0IG1vZGlmaWVzIHRoZSBmcm9udCBtYXR0ZXIuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmcm9udCBtYXR0ZXIgaGFzIGJlZW4gcHJvY2Vzc2VkIGFuZCBzYXZlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NGcm9udE1hdHRlcjxDdXN0b21Gcm9udE1hdHRlciA9IHVua25vd24+KGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBmcm9udE1hdHRlckZuOiAoZnJvbnRNYXR0ZXI6IENvbWJpbmVkRnJvbnRNYXR0ZXI8Q3VzdG9tRnJvbnRNYXR0ZXI+KSA9PiBNYXliZVByb21pc2U8dm9pZD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlKTtcblxuICBhd2FpdCBwcm9jZXNzV2l0aFJldHJ5KGFwcCwgZmlsZSwgYXN5bmMgKGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBtYXRjaCA9IEZST05UX01BVFRFUl9SRUdfRVhQLmV4ZWMoY29udGVudCk7XG4gICAgbGV0IGZyb250TWF0dGVyU3RyOiBzdHJpbmc7XG4gICAgbGV0IG1haW5Db250ZW50OiBzdHJpbmc7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBmcm9udE1hdHRlclN0ciA9IG1hdGNoWzFdID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0Zyb250IG1hdHRlciBtYXRjaCBpcyBudWxsJykpO1xuICAgICAgbWFpbkNvbnRlbnQgPSBtYXRjaFsyXSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdGcm9udCBtYXR0ZXIgbWF0Y2ggaXMgbnVsbCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnJvbnRNYXR0ZXJTdHIgPSAnJztcbiAgICAgIG1haW5Db250ZW50ID0gY29udGVudDtcbiAgICB9XG5cbiAgICBpZiAoIW1haW5Db250ZW50KSB7XG4gICAgICBtYWluQ29udGVudCA9ICdcXG4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYWluQ29udGVudCA9ICdcXG4nICsgbWFpbkNvbnRlbnQudHJpbSgpICsgJ1xcbic7XG4gICAgfVxuXG4gICAgY29uc3QgZnJvbnRNYXR0ZXIgPSAobG9hZChmcm9udE1hdHRlclN0ciwgeyBzY2hlbWE6IE5PX1RJTUVTVEFNUFNfWUFNTF9TQ0hFTUEgfSkgPz8ge30pIGFzIENvbWJpbmVkRnJvbnRNYXR0ZXI8Q3VzdG9tRnJvbnRNYXR0ZXI+O1xuICAgIGF3YWl0IGZyb250TWF0dGVyRm4oZnJvbnRNYXR0ZXIpO1xuICAgIGxldCBuZXdGcm9udE1hdHRlclN0ciA9IGR1bXAoZnJvbnRNYXR0ZXIsIHtcbiAgICAgIGxpbmVXaWR0aDogLTEsXG4gICAgICBxdW90aW5nVHlwZTogJ1wiJyxcbiAgICAgIHNjaGVtYTogTk9fVElNRVNUQU1QU19ZQU1MX1NDSEVNQVxuICAgIH0pO1xuICAgIGlmIChuZXdGcm9udE1hdHRlclN0ciA9PT0gJ3t9XFxuJykge1xuICAgICAgbmV3RnJvbnRNYXR0ZXJTdHIgPSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBuZXdDb250ZW50ID0gYC0tLVxuJHtuZXdGcm9udE1hdHRlclN0cn0tLS1cbiR7bWFpbkNvbnRlbnR9YDtcblxuICAgIHJldHVybiBuZXdDb250ZW50O1xuICB9KTtcbn1cblxuLyoqXG4gKiBBZGRzIGFuIGFsaWFzIHRvIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBmaWxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIFRGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5vdGUuXG4gKiBAcGFyYW0gYWxpYXMgLSBUaGUgYWxpYXMgdG8gYWRkLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYWxpYXMgaGFzIGJlZW4gYWRkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRBbGlhcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgYWxpYXM/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmIChhbGlhcyA9PT0gZmlsZS5iYXNlbmFtZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3NGcm9udE1hdHRlcihhcHAsIHBhdGhPckZpbGUsIChmcm9udE1hdHRlcikgPT4ge1xuICAgIGlmICghZnJvbnRNYXR0ZXIuYWxpYXNlcykge1xuICAgICAgZnJvbnRNYXR0ZXIuYWxpYXNlcyA9IFtdO1xuICAgIH1cblxuICAgIGlmICghZnJvbnRNYXR0ZXIuYWxpYXNlcy5pbmNsdWRlcyhhbGlhcykpIHtcbiAgICAgIGZyb250TWF0dGVyLmFsaWFzZXMucHVzaChhbGlhcyk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBEZWxldGVzIGFuIGFsaWFzIGZyb20gdGhlIGZyb250IG1hdHRlciBvZiBhIGdpdmVuIGZpbGUgaWYgaXQgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBub3RlLlxuICogQHBhcmFtIGFsaWFzIC0gVGhlIGFsaWFzIHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFsaWFzIGhhcyBiZWVuIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVBbGlhcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgYWxpYXM/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3NGcm9udE1hdHRlcihhcHAsIHBhdGhPckZpbGUsIChmcm9udE1hdHRlcikgPT4ge1xuICAgIGlmICghZnJvbnRNYXR0ZXIuYWxpYXNlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZyb250TWF0dGVyLmFsaWFzZXMgPSBmcm9udE1hdHRlci5hbGlhc2VzLmZpbHRlcigoYSkgPT4gYSAhPSBhbGlhcyk7XG5cbiAgICBpZiAoZnJvbnRNYXR0ZXIuYWxpYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGRlbGV0ZSBmcm9udE1hdHRlci5hbGlhc2VzO1xuICAgIH1cbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxxQkFLTztBQUNQLHNCQUFvQjtBQUdwQixtQkFBZ0M7QUFFaEMsbUJBQXdCO0FBQ3hCLG1CQUFpQztBQXZCakMsSUFBSSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxNQUFJO0FBQUMsTUFBRyxP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
|
@@ -75,11 +75,11 @@ export declare function processFrontMatter<CustomFrontMatter = unknown>(app: App
|
|
75
75
|
*/
|
76
76
|
export declare function addAlias(app: App, pathOrFile: PathOrFile, alias?: string): Promise<void>;
|
77
77
|
/**
|
78
|
-
*
|
78
|
+
* Deletes an alias from the front matter of a given file if it exists.
|
79
79
|
*
|
80
80
|
* @param app - The Obsidian app instance.
|
81
81
|
* @param pathOrFile - The path or TFile object representing the note.
|
82
|
-
* @param alias - The alias to
|
83
|
-
* @returns A promise that resolves when the alias has been
|
82
|
+
* @param alias - The alias to delete.
|
83
|
+
* @returns A promise that resolves when the alias has been deleted.
|
84
84
|
*/
|
85
|
-
export declare function
|
85
|
+
export declare function deleteAlias(app: App, pathOrFile: PathOrFile, alias?: string): Promise<void>;
|
@@ -123,8 +123,14 @@ class RenameDeleteHandler {
|
|
123
123
|
if (this.renamingPaths.has(file.path)) {
|
124
124
|
return;
|
125
125
|
}
|
126
|
-
const
|
127
|
-
|
126
|
+
const attachmentFolderPath = await (0, import_AttachmentPath.getAttachmentFolderPath)(this.app, file.path);
|
127
|
+
const attachmentFolder = this.app.vault.getFolderByPath(attachmentFolderPath);
|
128
|
+
if (!attachmentFolder) {
|
129
|
+
return;
|
130
|
+
}
|
131
|
+
if (this.settingsBuilder().shouldDeleteOrphanAttachments || attachmentFolder.children.length === 0) {
|
132
|
+
await (0, import_Vault.deleteFolderSafe)(this.app, attachmentFolderPath, file.path);
|
133
|
+
}
|
128
134
|
}
|
129
135
|
async fillRenameMap(file, oldPath, renameMap) {
|
130
136
|
renameMap.set(oldPath, file.path);
|
@@ -204,7 +210,7 @@ class RenameDeleteHandler {
|
|
204
210
|
}
|
205
211
|
}
|
206
212
|
if (this.settingsBuilder().shouldDeleteEmptyFolders) {
|
207
|
-
await (0, import_Vault.
|
213
|
+
await (0, import_Vault.deleteEmptyFolderHierarchy)(this.app, oldFolder);
|
208
214
|
}
|
209
215
|
}
|
210
216
|
oldFile = (0, import_implementations.createTFileInstance)(this.app.vault, oldPath);
|
@@ -298,4 +304,4 @@ class RenameDeleteHandler {
|
|
298
304
|
0 && (module.exports = {
|
299
305
|
registerRenameDeleteHandlers
|
300
306
|
});
|
301
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/ICgoKT0+e2lmKHR5cGVvZiBfX2ZpbGVuYW1lIT09XCJzdHJpbmdcIil7cmV0dXJuIG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpfXJldHVybiByZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKX0pKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBBcHAsXG4gIFRGaWxlLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9jYW52YXMuanMnO1xuaW1wb3J0IHsgY3JlYXRlVEZpbGVJbnN0YW5jZSB9IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQgeyB0b0pzb24gfSBmcm9tICcuLi9PYmplY3QudHMnO1xuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pbixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4vQXR0YWNobWVudFBhdGgudHMnO1xuaW1wb3J0IHtcbiAgZXh0cmFjdExpbmtGaWxlLFxuICB1cGRhdGVMaW5rLFxuICB1cGRhdGVMaW5rc0luRmlsZVxufSBmcm9tICcuL0xpbmsudHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlLFxuICBnZXRDYWNoZVNhZmVcbn0gZnJvbSAnLi9NZXRhZGF0YUNhY2hlLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL1RBYnN0cmFjdEZpbGUudHMnO1xuaW1wb3J0IHtcbiAgYXBwbHlGaWxlQ2hhbmdlcyxcbiAgY3JlYXRlRm9sZGVyU2FmZSxcbiAgcHJvY2Vzc1dpdGhSZXRyeSxcbiAgcmVtb3ZlRW1wdHlGb2xkZXJIaWVyYXJjaHksXG4gIHJlbW92ZUZvbGRlclNhZmVcbn0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbmludGVyZmFjZSBTcGVjaWFsUmVuYW1lIHtcbiAgb2xkUGF0aDogc3RyaW5nO1xuICBuZXdQYXRoOiBzdHJpbmc7XG4gIHRlbXBQYXRoOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3Mge1xuICBzaG91bGREZWxldGVFbXB0eUZvbGRlcnM6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSByZW5hbWUvZGVsZXRlIGhhbmRsZXJzLlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gaW5zdGFuY2UuXG4gKiBAcGFyYW0gc2V0dGluZ3NCdWlsZGVyIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHNldHRpbmdzIGZvciB0aGUgcmVuYW1lIGRlbGV0ZSBoYW5kbGVyLlxuICogQHJldHVybnMgdm9pZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJSZW5hbWVEZWxldGVIYW5kbGVycyhwbHVnaW46IFBsdWdpbiwgc2V0dGluZ3NCdWlsZGVyOiAoKSA9PiBSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3MpOiB2b2lkIHtcbiAgY29uc3QgYXBwID0gcGx1Z2luLmFwcDtcbiAgY29uc3QgcmVuYW1lRGVsZXRlSGFuZGxlciA9IG5ldyBSZW5hbWVEZWxldGVIYW5kbGVyKGFwcCwgc2V0dGluZ3NCdWlsZGVyKTtcbiAgcGx1Z2luLnJlZ2lzdGVyRXZlbnQoXG4gICAgYXBwLnZhdWx0Lm9uKCdkZWxldGUnLCAoZmlsZSkgPT4ge1xuICAgICAgaW52b2tlQXN5bmNTYWZlbHkocmVuYW1lRGVsZXRlSGFuZGxlci5oYW5kbGVEZWxldGUoZmlsZSkpO1xuICAgIH0pXG4gICk7XG5cbiAgcGx1Z2luLnJlZ2lzdGVyRXZlbnQoXG4gICAgYXBwLnZhdWx0Lm9uKCdyZW5hbWUnLCAoZmlsZSwgb2xkUGF0aCkgPT4ge1xuICAgICAgaW52b2tlQXN5bmNTYWZlbHkocmVuYW1lRGVsZXRlSGFuZGxlci5oYW5kbGVSZW5hbWUoZmlsZSwgb2xkUGF0aCkpO1xuICAgIH0pXG4gICk7XG59XG5cbmNsYXNzIFJlbmFtZURlbGV0ZUhhbmRsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCwgcHJpdmF0ZSBzZXR0aW5nc0J1aWxkZXI6ICgpID0+IFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncykgeyB9XG5cbiAgcHJpdmF0ZSByZW5hbWluZ1BhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgc3BlY2lhbFJlbmFtZXM6IFNwZWNpYWxSZW5hbWVbXSA9IFtdO1xuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVSZW5hbWUoZmlsZTogVEFic3RyYWN0RmlsZSwgb2xkUGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5kZWJ1ZyhgSGFuZGxlIFJlbmFtZSAke29sZFBhdGh9IC0+ICR7ZmlsZS5wYXRofWApO1xuXG4gICAgaWYgKHRoaXMucmVuYW1pbmdQYXRocy5oYXMob2xkUGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIShmaWxlIGluc3RhbmNlb2YgVEZpbGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3BlY2lhbFJlbmFtZSA9IHRoaXMuc3BlY2lhbFJlbmFtZXMuZmluZCgoeCkgPT4geC5vbGRQYXRoID09PSBmaWxlLnBhdGgpO1xuICAgIGlmIChzcGVjaWFsUmVuYW1lKSB7XG4gICAgICBhd2FpdCB0aGlzLmFwcC52YXVsdC5yZW5hbWUoZmlsZSwgc3BlY2lhbFJlbmFtZS50ZW1wUGF0aCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUgJiYgb2xkUGF0aC50b0xvd2VyQ2FzZSgpID09PSBmaWxlLnBhdGgudG9Mb3dlckNhc2UoKSAmJiBkaXJuYW1lKG9sZFBhdGgpID09PSBkaXJuYW1lKGZpbGUucGF0aCkpIHtcbiAgICAgIHRoaXMuc3BlY2lhbFJlbmFtZXMucHVzaCh7XG4gICAgICAgIG9sZFBhdGgsXG4gICAgICAgIG5ld1BhdGg6IGZpbGUucGF0aCxcbiAgICAgICAgdGVtcFBhdGg6IGpvaW4oZmlsZS5wYXJlbnQ/LnBhdGggPz8gJycsICdfX3RlbXBfXycgKyBmaWxlLm5hbWUpXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQucmVuYW1lKGZpbGUsIG9sZFBhdGgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbiAgICBjb25zdCB1cGRhdGVBbGxMaW5rcyA9IHRoaXMuYXBwLmZpbGVNYW5hZ2VyLnVwZGF0ZUFsbExpbmtzO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmFwcC5maWxlTWFuYWdlci51cGRhdGVBbGxMaW5rcyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVuYW1lTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICAgIGF3YWl0IHRoaXMuZmlsbFJlbmFtZU1hcChmaWxlLCBvbGRQYXRoLCByZW5hbWVNYXApO1xuICAgICAgZm9yIChjb25zdCBvbGRQYXRoIG9mIHJlbmFtZU1hcC5rZXlzKCkpIHtcbiAgICAgICAgdGhpcy5yZW5hbWluZ1BhdGhzLmFkZChvbGRQYXRoKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBbb2xkUGF0aDIsIG5ld1BhdGgyXSBvZiByZW5hbWVNYXAuZW50cmllcygpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc1JlbmFtZShvbGRQYXRoMiwgbmV3UGF0aDIsIHJlbmFtZU1hcCk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc1JlbmFtZShvbGRQYXRoLCBmaWxlLnBhdGgsIHJlbmFtZU1hcCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucmVuYW1pbmdQYXRocy5kZWxldGUob2xkUGF0aCk7XG4gICAgICB0aGlzLmFwcC5maWxlTWFuYWdlci51cGRhdGVBbGxMaW5rcyA9IHVwZGF0ZUFsbExpbmtzO1xuXG4gICAgICBjb25zdCBzcGVjaWFsUmVuYW1lID0gdGhpcy5zcGVjaWFsUmVuYW1lcy5maW5kKCh4KSA9PiB4LnRlbXBQYXRoID09PSBmaWxlLnBhdGgpO1xuICAgICAgaWYgKHNwZWNpYWxSZW5hbWUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQucmVuYW1lKGZpbGUsIHNwZWNpYWxSZW5hbWUubmV3UGF0aCk7XG4gICAgICAgIHRoaXMuc3BlY2lhbFJlbmFtZXMucmVtb3ZlKHNwZWNpYWxSZW5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVEZWxldGUoZmlsZTogVEFic3RyYWN0RmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUuZGVidWcoYEhhbmRsZSBEZWxldGUgJHtmaWxlLnBhdGh9YCk7XG4gICAgaWYgKCFpc05vdGUoZmlsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZW5hbWluZ1BhdGhzLmhhcyhmaWxlLnBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHRoaXMuYXBwLCBmaWxlLnBhdGgpO1xuICAgIGF3YWl0IHJlbW92ZUZvbGRlclNhZmUodGhpcy5hcHAsIGF0dGFjaG1lbnRGb2xkZXIsIGZpbGUucGF0aCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZpbGxSZW5hbWVNYXAoZmlsZTogVEZpbGUsIG9sZFBhdGg6IHN0cmluZywgcmVuYW1lTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmVuYW1lTWFwLnNldChvbGRQYXRoLCBmaWxlLnBhdGgpO1xuXG4gICAgaWYgKCFpc05vdGUoZmlsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHRoaXMuYXBwLCBvbGRQYXRoKTtcbiAgICBjb25zdCBuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHRoaXMuYXBwLCBmaWxlLnBhdGgpO1xuICAgIGNvbnN0IGR1bW15T2xkQXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh0aGlzLmFwcCwgam9pbihkaXJuYW1lKG9sZFBhdGgpLCAnRFVNTVlfRklMRS5tZCcpKTtcblxuICAgIGNvbnN0IG9sZEF0dGFjaG1lbnRGb2xkZXIgPSB0aGlzLmFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgob2xkQXR0YWNobWVudEZvbGRlclBhdGgpO1xuXG4gICAgaWYgKCFvbGRBdHRhY2htZW50Rm9sZGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSBuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkcmVuOiBURmlsZVtdID0gW107XG5cbiAgICBpZiAob2xkQXR0YWNobWVudEZvbGRlclBhdGggPT09IGR1bW15T2xkQXR0YWNobWVudEZvbGRlclBhdGgpIHtcbiAgICAgIGNvbnN0IGNhY2hlID0gYXdhaXQgZ2V0Q2FjaGVTYWZlKHRoaXMuYXBwLCBmaWxlKTtcbiAgICAgIGlmICghY2FjaGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBsaW5rIG9mIGdldEFsbExpbmtzKGNhY2hlKSkge1xuICAgICAgICBjb25zdCBhdHRhY2htZW50RmlsZSA9IGV4dHJhY3RMaW5rRmlsZSh0aGlzLmFwcCwgbGluaywgb2xkUGF0aCk7XG4gICAgICAgIGlmICghYXR0YWNobWVudEZpbGUpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhdHRhY2htZW50RmlsZS5wYXRoLnN0YXJ0c1dpdGgob2xkQXR0YWNobWVudEZvbGRlclBhdGgpKSB7XG4gICAgICAgICAgY29uc3QgYmFja2xpbmtzID0gYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUodGhpcy5hcHAsIGF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgICBpZiAoYmFja2xpbmtzLmtleXMoKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goYXR0YWNobWVudEZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBWYXVsdC5yZWN1cnNlQ2hpbGRyZW4ob2xkQXR0YWNobWVudEZvbGRlciwgKGNoaWxkKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGlmIChpc05vdGUoY2hpbGQpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUob2xkQXR0YWNobWVudEZvbGRlclBhdGgsIGNoaWxkLnBhdGgpO1xuICAgICAgY29uc3QgbmV3RGlyID0gam9pbihuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCwgZGlybmFtZShyZWxhdGl2ZVBhdGgpKTtcbiAgICAgIGxldCBuZXdDaGlsZFBhdGggPSBqb2luKG5ld0RpciwgY2hpbGQubmFtZSk7XG4gICAgICBpZiAoY2hpbGQucGF0aCAhPT0gbmV3Q2hpbGRQYXRoKSB7XG4gICAgICAgIG5ld0NoaWxkUGF0aCA9IHRoaXMuYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihuZXdEaXIsIGNoaWxkLmJhc2VuYW1lKSwgY2hpbGQuZXh0ZW5zaW9uKTtcbiAgICAgICAgcmVuYW1lTWFwLnNldChjaGlsZC5wYXRoLCBuZXdDaGlsZFBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1JlbmFtZShvbGRQYXRoOiBzdHJpbmcsIG5ld1BhdGg6IHN0cmluZywgcmVuYW1lTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IG9sZEZpbGU6IFRGaWxlIHwgbnVsbCA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgb2xkRmlsZSA9IHRoaXMuYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgob2xkUGF0aCk7XG4gICAgICBsZXQgbmV3RmlsZSA9IHRoaXMuYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgobmV3UGF0aCk7XG5cbiAgICAgIGlmIChvbGRGaWxlKSB7XG4gICAgICAgIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUodGhpcy5hcHAsIGRpcm5hbWUobmV3UGF0aCkpO1xuICAgICAgICBjb25zdCBvbGRGb2xkZXIgPSBvbGRGaWxlLnBhcmVudDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAobmV3RmlsZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKG5ld0ZpbGUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBpZiAodGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG5ld1BhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCB0aGlzLmFwcC52YXVsdC5yZW5hbWUob2xkRmlsZSwgbmV3UGF0aCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChuZXdQYXRoKSB8fCB0aGlzLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgob2xkUGF0aCkpIHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzQnVpbGRlcigpLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycykge1xuICAgICAgICAgIGF3YWl0IHJlbW92ZUVtcHR5Rm9sZGVySGllcmFyY2h5KHRoaXMuYXBwLCBvbGRGb2xkZXIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG9sZEZpbGUgPSBjcmVhdGVURmlsZUluc3RhbmNlKHRoaXMuYXBwLnZhdWx0LCBvbGRQYXRoKTtcbiAgICAgIG5ld0ZpbGUgPSB0aGlzLmFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKG5ld1BhdGgpO1xuXG4gICAgICBpZiAoIW9sZEZpbGUuZGVsZXRlZCB8fCAhbmV3RmlsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCByZW5hbWUgJHtvbGRQYXRofSB0byAke25ld1BhdGh9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJhY2tsaW5rcyA9IGF3YWl0IHRoaXMuZ2V0QmFja2xpbmtzKG9sZEZpbGUsIG5ld0ZpbGUpO1xuXG4gICAgICBmb3IgKGNvbnN0IHBhcmVudE5vdGVQYXRoIG9mIGJhY2tsaW5rcy5rZXlzKCkpIHtcbiAgICAgICAgbGV0IHBhcmVudE5vdGUgPSB0aGlzLmFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKHBhcmVudE5vdGVQYXRoKTtcbiAgICAgICAgaWYgKCFwYXJlbnROb3RlKSB7XG4gICAgICAgICAgY29uc3QgbmV3UGFyZW50Tm90ZVBhdGggPSByZW5hbWVNYXAuZ2V0KHBhcmVudE5vdGVQYXRoKTtcbiAgICAgICAgICBpZiAobmV3UGFyZW50Tm90ZVBhdGgpIHtcbiAgICAgICAgICAgIHBhcmVudE5vdGUgPSB0aGlzLmFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKG5ld1BhcmVudE5vdGVQYXRoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBhcmVudE5vdGUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFBhcmVudCBub3RlIG5vdCBmb3VuZDogJHtwYXJlbnROb3RlUGF0aH1gKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGFwcGx5RmlsZUNoYW5nZXModGhpcy5hcHAsIHBhcmVudE5vdGUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoIW9sZEZpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbGlua3NcbiAgICAgICAgICAgID0gKGF3YWl0IHRoaXMuZ2V0QmFja2xpbmtzKG9sZEZpbGUsIG5ld0ZpbGUpKS5nZXQocGFyZW50Tm90ZVBhdGgpID8/IFtdO1xuICAgICAgICAgIGNvbnN0IGNoYW5nZXMgPSBbXTtcblxuICAgICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgc3RhcnRJbmRleDogbGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQsXG4gICAgICAgICAgICAgIGVuZEluZGV4OiBsaW5rLnBvc2l0aW9uLmVuZC5vZmZzZXQsXG4gICAgICAgICAgICAgIG9sZENvbnRlbnQ6IGxpbmsub3JpZ2luYWwsXG4gICAgICAgICAgICAgIG5ld0NvbnRlbnQ6IHVwZGF0ZUxpbmsoe1xuICAgICAgICAgICAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICAgICAgICAgICAgbGluayxcbiAgICAgICAgICAgICAgICBwYXRoT3JGaWxlOiBuZXdGaWxlLFxuICAgICAgICAgICAgICAgIG9sZFBhdGhPckZpbGU6IG9sZFBhdGgsXG4gICAgICAgICAgICAgICAgc291cmNlUGF0aE9yRmlsZTogcGFyZW50Tm90ZSxcbiAgICAgICAgICAgICAgICByZW5hbWVNYXBcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjaGFuZ2VzO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzQ2FudmFzRmlsZShuZXdGaWxlKSkge1xuICAgICAgICBhd2FpdCBwcm9jZXNzV2l0aFJldHJ5KHRoaXMuYXBwLCBuZXdGaWxlLCAoY29udGVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhbnZhc0RhdGEgPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIENhbnZhc0RhdGE7XG4gICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIGNhbnZhc0RhdGEubm9kZXMpIHtcbiAgICAgICAgICAgIGlmIChub2RlLnR5cGUgIT09ICdmaWxlJykge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5ld1BhdGggPSByZW5hbWVNYXAuZ2V0KG5vZGUuZmlsZSk7XG4gICAgICAgICAgICBpZiAoIW5ld1BhdGgpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBub2RlLmZpbGUgPSBuZXdQYXRoO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdG9Kc29uKGNhbnZhc0RhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNNYXJrZG93bkZpbGUobmV3RmlsZSkpIHtcbiAgICAgICAgYXdhaXQgdXBkYXRlTGlua3NJbkZpbGUoe1xuICAgICAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICAgICAgcGF0aE9yRmlsZTogbmV3RmlsZSxcbiAgICAgICAgICBvbGRQYXRoT3JGaWxlOiBvbGRQYXRoLFxuICAgICAgICAgIHJlbmFtZU1hcFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5yZW5hbWluZ1BhdGhzLmRlbGV0ZShvbGRQYXRoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEJhY2tsaW5rcyhvbGRGaWxlOiBURmlsZSwgbmV3RmlsZTogVEZpbGUgfCBudWxsKTogUHJvbWlzZTxNYXA8c3RyaW5nLCBSZWZlcmVuY2VDYWNoZVtdPj4ge1xuICAgIGNvbnN0IGJhY2tsaW5rcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWZlcmVuY2VDYWNoZVtdPigpO1xuICAgIGNvbnN0IG9sZExpbmtzID0gYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUodGhpcy5hcHAsIG9sZEZpbGUpO1xuICAgIGZvciAoY29uc3QgcGF0aCBvZiBvbGRMaW5rcy5rZXlzKCkpIHtcbiAgICAgIGJhY2tsaW5rcy5zZXQocGF0aCwgb2xkTGlua3MuZ2V0KHBhdGgpID8/IFtdKTtcbiAgICB9XG5cbiAgICBpZiAoIW5ld0ZpbGUpIHtcbiAgICAgIHJldHVybiBiYWNrbGlua3M7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3TGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZSh0aGlzLmFwcCwgbmV3RmlsZSk7XG5cbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgbmV3TGlua3Mua2V5cygpKSB7XG4gICAgICBjb25zdCBsaW5rcyA9IGJhY2tsaW5rcy5nZXQocGF0aCkgPz8gW107XG4gICAgICBsaW5rcy5wdXNoKC4uLm5ld0xpbmtzLmdldChwYXRoKSA/PyBbXSk7XG4gICAgICBiYWNrbGlua3Muc2V0KHBhdGgsIGxpbmtzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFja2xpbmtzO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLHNCQUlPO0FBRVAsNkJBQW9DO0FBRXBDLG1CQUFrQztBQUNsQyxvQkFBdUI7QUFDdkIsa0JBSU87QUFDUCw0QkFBd0M7QUFDeEMsa0JBSU87QUFDUCwyQkFJTztBQUNQLDJCQUlPO0FBQ1AsbUJBTU87QUFoRFAsSUFBSSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxNQUFJO0FBQUMsTUFBRyxPQUFPLGVBQWEsVUFBUztBQUFDLFdBQU8sSUFBSSxJQUFJLE9BQU8sU0FBUyxJQUFJO0FBQUEsRUFBQztBQUFDLFNBQU8sUUFBUSxVQUFVLEVBQUUsY0FBYyxVQUFVO0FBQUMsR0FBRztBQUM1TCxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBNkRPLFNBQVMsNkJBQTZCLFFBQWdCLGlCQUEwRDtBQUNySCxRQUFNLE1BQU0sT0FBTztBQUNuQixRQUFNLHNCQUFzQixJQUFJLG9CQUFvQixLQUFLLGVBQWU7QUFDeEUsU0FBTztBQUFBLElBQ0wsSUFB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U0FBUyxNQUFNO0FBQUEsY0FDaEMsVUFBVSxLQUFLLFNBQVMsSUFBSTtBQUFBLGNBQzVCLFlBQVksS0FBSztBQUFBLGNBQ2pCLGdCQUFZLHdCQUFXO0FBQUEsZ0JBQ3JCLEtBQUssS0FBSztBQUFBLGdCQUNWO0FBQUEsZ0JBQ0EsWUFBWTtBQUFBLGdCQUNaLGVBQWU7QUFBQSxnQkFDZixrQkFBa0I7QUFBQSxnQkFDbEI7QUFBQSxjQUNGLENBQUM7QUFBQSxZQUNILENBQUM7QUFBQSxVQUNIO0FBRUEsaUJBQU87QUFBQSxRQUNULENBQUM7QUFBQSxNQUNIO0FBRUEsY0FBSSxtQ0FBYSxPQUFPLEdBQUc7QUFDekIsa0JBQU0sK0JBQWlCLEtBQUssS0FBSyxTQUFTLENBQUMsWUFBWTtBQUNyRCxnQkFBTSxhQUFhLEtBQUssTUFBTSxPQUFPO0FBQ3JDLHFCQUFXLFFBQVEsV0FBVyxPQUFPO0FBQ25DLGdCQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCO0FBQUEsWUFDRjtBQUNBLGtCQUFNQyxXQUFVLFVBQVUsSUFBSSxLQUFLLElBQUk7QUFDdkMsZ0JBQUksQ0FBQ0EsVUFBUztBQUNaO0FBQUEsWUFDRjtBQUNBLGlCQUFLLE9BQU9BO0FBQUEsVUFDZDtBQUNBLHFCQUFPLHNCQUFPLFVBQVU7QUFBQSxRQUMxQixDQUFDO0FBQUEsTUFDSCxlQUFXLHFDQUFlLE9BQU8sR0FBRztBQUNsQyxrQkFBTSwrQkFBa0I7QUFBQSxVQUN0QixLQUFLLEtBQUs7QUFBQSxVQUNWLFlBQVk7QUFBQSxVQUNaLGVBQWU7QUFBQSxVQUNmO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0YsVUFBRTtBQUNBLFdBQUssY0FBYyxPQUFPLE9BQU87QUFBQSxJQUNuQztBQUFBLEVBQ0Y7QUFBQSxFQUVBLE1BQWMsYUFBYSxTQUFnQixTQUErRDtBQUN4RyxVQUFNLFlBQVksb0JBQUksSUFBOEI7QUFDcEQsVUFBTSxXQUFXLFVBQU0sOENBQXdCLEtBQUssS0FBSyxPQUFPO0FBQ2hFLGVBQVcsUUFBUSxTQUFTLEtBQUssR0FBRztBQUNsQyxnQkFBVSxJQUFJLE1BQU0sU0FBUyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUM7QUFBQSxJQUM5QztBQUVBLFFBQUksQ0FBQyxTQUFTO0FBQ1osYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLFdBQVcsVUFBTSw4Q0FBd0IsS0FBSyxLQUFLLE9BQU87QUFFaEUsZUFBVyxRQUFRLFNBQVMsS0FBSyxHQUFHO0FBQ2xDLFlBQU0sUUFBUSxVQUFVLElBQUksSUFBSSxLQUFLLENBQUM7QUFDdEMsWUFBTSxLQUFLLEdBQUcsU0FBUyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUM7QUFDdEMsZ0JBQVUsSUFBSSxNQUFNLEtBQUs7QUFBQSxJQUMzQjtBQUVBLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbIm9sZFBhdGgiLCAic3BlY2lhbFJlbmFtZSIsICJuZXdQYXRoIl0KfQo=
|
307
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/ICgoKT0+e2lmKHR5cGVvZiBfX2ZpbGVuYW1lIT09XCJzdHJpbmdcIil7cmV0dXJuIG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpfXJldHVybiByZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKX0pKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBBcHAsXG4gIFRGaWxlLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9jYW52YXMuanMnO1xuaW1wb3J0IHsgY3JlYXRlVEZpbGVJbnN0YW5jZSB9IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQgeyB0b0pzb24gfSBmcm9tICcuLi9PYmplY3QudHMnO1xuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pbixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4vQXR0YWNobWVudFBhdGgudHMnO1xuaW1wb3J0IHtcbiAgZXh0cmFjdExpbmtGaWxlLFxuICB1cGRhdGVMaW5rLFxuICB1cGRhdGVMaW5rc0luRmlsZVxufSBmcm9tICcuL0xpbmsudHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlLFxuICBnZXRDYWNoZVNhZmVcbn0gZnJvbSAnLi9NZXRhZGF0YUNhY2hlLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL1RBYnN0cmFjdEZpbGUudHMnO1xuaW1wb3J0IHtcbiAgYXBwbHlGaWxlQ2hhbmdlcyxcbiAgY3JlYXRlRm9sZGVyU2FmZSxcbiAgZGVsZXRlRW1wdHlGb2xkZXJIaWVyYXJjaHksXG4gIGRlbGV0ZUZvbGRlclNhZmUsXG4gIHByb2Nlc3NXaXRoUmV0cnlcbn0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbmludGVyZmFjZSBTcGVjaWFsUmVuYW1lIHtcbiAgb2xkUGF0aDogc3RyaW5nO1xuICBuZXdQYXRoOiBzdHJpbmc7XG4gIHRlbXBQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2V0dGluZ3MgZm9yIHRoZSByZW5hbWUvZGVsZXRlIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIGVtcHR5IGZvbGRlcnMuXG4gICAqL1xuICBzaG91bGREZWxldGVFbXB0eUZvbGRlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIG9ycGhhbiBhdHRhY2htZW50cyBhZnRlciBhIGRlbGV0ZS5cbiAgICovXG4gIHNob3VsZERlbGV0ZU9ycGhhbkF0dGFjaG1lbnRzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVycy5cbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIGluc3RhbmNlLlxuICogQHBhcmFtIHNldHRpbmdzQnVpbGRlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZXR0aW5ncyBmb3IgdGhlIHJlbmFtZSBkZWxldGUgaGFuZGxlci5cbiAqIEByZXR1cm5zIHZvaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUmVuYW1lRGVsZXRlSGFuZGxlcnMocGx1Z2luOiBQbHVnaW4sIHNldHRpbmdzQnVpbGRlcjogKCkgPT4gUmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzKTogdm9pZCB7XG4gIGNvbnN0IGFwcCA9IHBsdWdpbi5hcHA7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXIgPSBuZXcgUmVuYW1lRGVsZXRlSGFuZGxlcihhcHAsIHNldHRpbmdzQnVpbGRlcik7XG4gIHBsdWdpbi5yZWdpc3RlckV2ZW50KFxuICAgIGFwcC52YXVsdC5vbignZGVsZXRlJywgKGZpbGUpID0+IHtcbiAgICAgIGludm9rZUFzeW5jU2FmZWx5KHJlbmFtZURlbGV0ZUhhbmRsZXIuaGFuZGxlRGVsZXRlKGZpbGUpKTtcbiAgICB9KVxuICApO1xuXG4gIHBsdWdpbi5yZWdpc3RlckV2ZW50KFxuICAgIGFwcC52YXVsdC5vbigncmVuYW1lJywgKGZpbGUsIG9sZFBhdGgpID0+IHtcbiAgICAgIGludm9rZUFzeW5jU2FmZWx5KHJlbmFtZURlbGV0ZUhhbmRsZXIuaGFuZGxlUmVuYW1lKGZpbGUsIG9sZFBhdGgpKTtcbiAgICB9KVxuICApO1xufVxuXG5jbGFzcyBSZW5hbWVEZWxldGVIYW5kbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwOiBBcHAsIHByaXZhdGUgc2V0dGluZ3NCdWlsZGVyOiAoKSA9PiBSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3MpIHsgfVxuXG4gIHByaXZhdGUgcmVuYW1pbmdQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBwcml2YXRlIHNwZWNpYWxSZW5hbWVzOiBTcGVjaWFsUmVuYW1lW10gPSBbXTtcblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlUmVuYW1lKGZpbGU6IFRBYnN0cmFjdEZpbGUsIG9sZFBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUuZGVidWcoYEhhbmRsZSBSZW5hbWUgJHtvbGRQYXRofSAtPiAke2ZpbGUucGF0aH1gKTtcblxuICAgIGlmICh0aGlzLnJlbmFtaW5nUGF0aHMuaGFzKG9sZFBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNwZWNpYWxSZW5hbWUgPSB0aGlzLnNwZWNpYWxSZW5hbWVzLmZpbmQoKHgpID0+IHgub2xkUGF0aCA9PT0gZmlsZS5wYXRoKTtcbiAgICBpZiAoc3BlY2lhbFJlbmFtZSkge1xuICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQucmVuYW1lKGZpbGUsIHNwZWNpYWxSZW5hbWUudGVtcFBhdGgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlICYmIG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gZmlsZS5wYXRoLnRvTG93ZXJDYXNlKCkgJiYgZGlybmFtZShvbGRQYXRoKSA9PT0gZGlybmFtZShmaWxlLnBhdGgpKSB7XG4gICAgICB0aGlzLnNwZWNpYWxSZW5hbWVzLnB1c2goe1xuICAgICAgICBvbGRQYXRoLFxuICAgICAgICBuZXdQYXRoOiBmaWxlLnBhdGgsXG4gICAgICAgIHRlbXBQYXRoOiBqb2luKGZpbGUucGFyZW50Py5wYXRoID8/ICcnLCAnX190ZW1wX18nICsgZmlsZS5uYW1lKVxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHRoaXMuYXBwLnZhdWx0LnJlbmFtZShmaWxlLCBvbGRQYXRoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG4gICAgY29uc3QgdXBkYXRlQWxsTGlua3MgPSB0aGlzLmFwcC5maWxlTWFuYWdlci51cGRhdGVBbGxMaW5rcztcbiAgICB0cnkge1xuICAgICAgdGhpcy5hcHAuZmlsZU1hbmFnZXIudXBkYXRlQWxsTGlua3MgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlbmFtZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgICBhd2FpdCB0aGlzLmZpbGxSZW5hbWVNYXAoZmlsZSwgb2xkUGF0aCwgcmVuYW1lTWFwKTtcbiAgICAgIGZvciAoY29uc3Qgb2xkUGF0aCBvZiByZW5hbWVNYXAua2V5cygpKSB7XG4gICAgICAgIHRoaXMucmVuYW1pbmdQYXRocy5hZGQob2xkUGF0aCk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgW29sZFBhdGgyLCBuZXdQYXRoMl0gb2YgcmVuYW1lTWFwLmVudHJpZXMoKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3NSZW5hbWUob2xkUGF0aDIsIG5ld1BhdGgyLCByZW5hbWVNYXApO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3NSZW5hbWUob2xkUGF0aCwgZmlsZS5wYXRoLCByZW5hbWVNYXApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlbmFtaW5nUGF0aHMuZGVsZXRlKG9sZFBhdGgpO1xuICAgICAgdGhpcy5hcHAuZmlsZU1hbmFnZXIudXBkYXRlQWxsTGlua3MgPSB1cGRhdGVBbGxMaW5rcztcblxuICAgICAgY29uc3Qgc3BlY2lhbFJlbmFtZSA9IHRoaXMuc3BlY2lhbFJlbmFtZXMuZmluZCgoeCkgPT4geC50ZW1wUGF0aCA9PT0gZmlsZS5wYXRoKTtcbiAgICAgIGlmIChzcGVjaWFsUmVuYW1lKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBwLnZhdWx0LnJlbmFtZShmaWxlLCBzcGVjaWFsUmVuYW1lLm5ld1BhdGgpO1xuICAgICAgICB0aGlzLnNwZWNpYWxSZW5hbWVzLnJlbW92ZShzcGVjaWFsUmVuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRGVsZXRlKGZpbGU6IFRBYnN0cmFjdEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmRlYnVnKGBIYW5kbGUgRGVsZXRlICR7ZmlsZS5wYXRofWApO1xuICAgIGlmICghaXNOb3RlKGZpbGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVuYW1pbmdQYXRocy5oYXMoZmlsZS5wYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgodGhpcy5hcHAsIGZpbGUucGF0aCk7XG4gICAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IHRoaXMuYXBwLnZhdWx0LmdldEZvbGRlckJ5UGF0aChhdHRhY2htZW50Rm9sZGVyUGF0aCk7XG5cbiAgICBpZiAoIWF0dGFjaG1lbnRGb2xkZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXR0aW5nc0J1aWxkZXIoKS5zaG91bGREZWxldGVPcnBoYW5BdHRhY2htZW50cyB8fCBhdHRhY2htZW50Rm9sZGVyLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXdhaXQgZGVsZXRlRm9sZGVyU2FmZSh0aGlzLmFwcCwgYXR0YWNobWVudEZvbGRlclBhdGgsIGZpbGUucGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaWxsUmVuYW1lTWFwKGZpbGU6IFRGaWxlLCBvbGRQYXRoOiBzdHJpbmcsIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJlbmFtZU1hcC5zZXQob2xkUGF0aCwgZmlsZS5wYXRoKTtcblxuICAgIGlmICghaXNOb3RlKGZpbGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkQXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh0aGlzLmFwcCwgb2xkUGF0aCk7XG4gICAgY29uc3QgbmV3QXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh0aGlzLmFwcCwgZmlsZS5wYXRoKTtcbiAgICBjb25zdCBkdW1teU9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgodGhpcy5hcHAsIGpvaW4oZGlybmFtZShvbGRQYXRoKSwgJ0RVTU1ZX0ZJTEUubWQnKSk7XG5cbiAgICBjb25zdCBvbGRBdHRhY2htZW50Rm9sZGVyID0gdGhpcy5hcHAudmF1bHQuZ2V0Rm9sZGVyQnlQYXRoKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKTtcblxuICAgIGlmICghb2xkQXR0YWNobWVudEZvbGRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gbmV3QXR0YWNobWVudEZvbGRlclBhdGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjaGlsZHJlbjogVEZpbGVbXSA9IFtdO1xuXG4gICAgaWYgKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSBkdW1teU9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKSB7XG4gICAgICBjb25zdCBjYWNoZSA9IGF3YWl0IGdldENhY2hlU2FmZSh0aGlzLmFwcCwgZmlsZSk7XG4gICAgICBpZiAoIWNhY2hlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgbGluayBvZiBnZXRBbGxMaW5rcyhjYWNoZSkpIHtcbiAgICAgICAgY29uc3QgYXR0YWNobWVudEZpbGUgPSBleHRyYWN0TGlua0ZpbGUodGhpcy5hcHAsIGxpbmssIG9sZFBhdGgpO1xuICAgICAgICBpZiAoIWF0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXR0YWNobWVudEZpbGUucGF0aC5zdGFydHNXaXRoKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKSkge1xuICAgICAgICAgIGNvbnN0IGJhY2tsaW5rcyA9IGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKHRoaXMuYXBwLCBhdHRhY2htZW50RmlsZSk7XG4gICAgICAgICAgaWYgKGJhY2tsaW5rcy5rZXlzKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKG9sZEF0dGFjaG1lbnRGb2xkZXIsIChjaGlsZCkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICBpZiAoaXNOb3RlKGNoaWxkKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoLCBjaGlsZC5wYXRoKTtcbiAgICAgIGNvbnN0IG5ld0RpciA9IGpvaW4obmV3QXR0YWNobWVudEZvbGRlclBhdGgsIGRpcm5hbWUocmVsYXRpdmVQYXRoKSk7XG4gICAgICBsZXQgbmV3Q2hpbGRQYXRoID0gam9pbihuZXdEaXIsIGNoaWxkLm5hbWUpO1xuICAgICAgaWYgKGNoaWxkLnBhdGggIT09IG5ld0NoaWxkUGF0aCkge1xuICAgICAgICBuZXdDaGlsZFBhdGggPSB0aGlzLmFwcC52YXVsdC5nZXRBdmFpbGFibGVQYXRoKGpvaW4obmV3RGlyLCBjaGlsZC5iYXNlbmFtZSksIGNoaWxkLmV4dGVuc2lvbik7XG4gICAgICAgIHJlbmFtZU1hcC5zZXQoY2hpbGQucGF0aCwgbmV3Q2hpbGRQYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NSZW5hbWUob2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcsIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBvbGRGaWxlOiBURmlsZSB8IG51bGwgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIG9sZEZpbGUgPSB0aGlzLmFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKG9sZFBhdGgpO1xuICAgICAgbGV0IG5ld0ZpbGUgPSB0aGlzLmFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKG5ld1BhdGgpO1xuXG4gICAgICBpZiAob2xkRmlsZSkge1xuICAgICAgICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKHRoaXMuYXBwLCBkaXJuYW1lKG5ld1BhdGgpKTtcbiAgICAgICAgY29uc3Qgb2xkRm9sZGVyID0gb2xkRmlsZS5wYXJlbnQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKG5ld0ZpbGUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShuZXdGaWxlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChuZXdQYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQucmVuYW1lKG9sZEZpbGUsIG5ld1BhdGgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgobmV3UGF0aCkgfHwgdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG9sZFBhdGgpKSB7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc0J1aWxkZXIoKS5zaG91bGREZWxldGVFbXB0eUZvbGRlcnMpIHtcbiAgICAgICAgICBhd2FpdCBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeSh0aGlzLmFwcCwgb2xkRm9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvbGRGaWxlID0gY3JlYXRlVEZpbGVJbnN0YW5jZSh0aGlzLmFwcC52YXVsdCwgb2xkUGF0aCk7XG4gICAgICBuZXdGaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChuZXdQYXRoKTtcblxuICAgICAgaWYgKCFvbGRGaWxlLmRlbGV0ZWQgfHwgIW5ld0ZpbGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgcmVuYW1lICR7b2xkUGF0aH0gdG8gJHtuZXdQYXRofWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiYWNrbGlua3MgPSBhd2FpdCB0aGlzLmdldEJhY2tsaW5rcyhvbGRGaWxlLCBuZXdGaWxlKTtcblxuICAgICAgZm9yIChjb25zdCBwYXJlbnROb3RlUGF0aCBvZiBiYWNrbGlua3Mua2V5cygpKSB7XG4gICAgICAgIGxldCBwYXJlbnROb3RlID0gdGhpcy5hcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXJlbnROb3RlUGF0aCk7XG4gICAgICAgIGlmICghcGFyZW50Tm90ZSkge1xuICAgICAgICAgIGNvbnN0IG5ld1BhcmVudE5vdGVQYXRoID0gcmVuYW1lTWFwLmdldChwYXJlbnROb3RlUGF0aCk7XG4gICAgICAgICAgaWYgKG5ld1BhcmVudE5vdGVQYXRoKSB7XG4gICAgICAgICAgICBwYXJlbnROb3RlID0gdGhpcy5hcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChuZXdQYXJlbnROb3RlUGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwYXJlbnROb3RlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBQYXJlbnQgbm90ZSBub3QgZm91bmQ6ICR7cGFyZW50Tm90ZVBhdGh9YCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBhcHBseUZpbGVDaGFuZ2VzKHRoaXMuYXBwLCBwYXJlbnROb3RlLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKCFvbGRGaWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGxpbmtzXG4gICAgICAgICAgICA9IChhd2FpdCB0aGlzLmdldEJhY2tsaW5rcyhvbGRGaWxlLCBuZXdGaWxlKSkuZ2V0KHBhcmVudE5vdGVQYXRoKSA/PyBbXTtcbiAgICAgICAgICBjb25zdCBjaGFuZ2VzID0gW107XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgICAgIHN0YXJ0SW5kZXg6IGxpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0LFxuICAgICAgICAgICAgICBlbmRJbmRleDogbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0LFxuICAgICAgICAgICAgICBvbGRDb250ZW50OiBsaW5rLm9yaWdpbmFsLFxuICAgICAgICAgICAgICBuZXdDb250ZW50OiB1cGRhdGVMaW5rKHtcbiAgICAgICAgICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICAgICAgICAgIGxpbmssXG4gICAgICAgICAgICAgICAgcGF0aE9yRmlsZTogbmV3RmlsZSxcbiAgICAgICAgICAgICAgICBvbGRQYXRoT3JGaWxlOiBvbGRQYXRoLFxuICAgICAgICAgICAgICAgIHNvdXJjZVBhdGhPckZpbGU6IHBhcmVudE5vdGUsXG4gICAgICAgICAgICAgICAgcmVuYW1lTWFwXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hhbmdlcztcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0NhbnZhc0ZpbGUobmV3RmlsZSkpIHtcbiAgICAgICAgYXdhaXQgcHJvY2Vzc1dpdGhSZXRyeSh0aGlzLmFwcCwgbmV3RmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBjYW52YXNEYXRhID0gSlNPTi5wYXJzZShjb250ZW50KSBhcyBDYW52YXNEYXRhO1xuICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBjYW52YXNEYXRhLm5vZGVzKSB7XG4gICAgICAgICAgICBpZiAobm9kZS50eXBlICE9PSAnZmlsZScpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXdQYXRoID0gcmVuYW1lTWFwLmdldChub2RlLmZpbGUpO1xuICAgICAgICAgICAgaWYgKCFuZXdQYXRoKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZS5maWxlID0gbmV3UGF0aDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRvSnNvbihjYW52YXNEYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzTWFya2Rvd25GaWxlKG5ld0ZpbGUpKSB7XG4gICAgICAgIGF3YWl0IHVwZGF0ZUxpbmtzSW5GaWxlKHtcbiAgICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICAgIHBhdGhPckZpbGU6IG5ld0ZpbGUsXG4gICAgICAgICAgb2xkUGF0aE9yRmlsZTogb2xkUGF0aCxcbiAgICAgICAgICByZW5hbWVNYXBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucmVuYW1pbmdQYXRocy5kZWxldGUob2xkUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRCYWNrbGlua3Mob2xkRmlsZTogVEZpbGUsIG5ld0ZpbGU6IFRGaWxlIHwgbnVsbCk6IFByb21pc2U8TWFwPHN0cmluZywgUmVmZXJlbmNlQ2FjaGVbXT4+IHtcbiAgICBjb25zdCBiYWNrbGlua3MgPSBuZXcgTWFwPHN0cmluZywgUmVmZXJlbmNlQ2FjaGVbXT4oKTtcbiAgICBjb25zdCBvbGRMaW5rcyA9IGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKHRoaXMuYXBwLCBvbGRGaWxlKTtcbiAgICBmb3IgKGNvbnN0IHBhdGggb2Ygb2xkTGlua3Mua2V5cygpKSB7XG4gICAgICBiYWNrbGlua3Muc2V0KHBhdGgsIG9sZExpbmtzLmdldChwYXRoKSA/PyBbXSk7XG4gICAgfVxuXG4gICAgaWYgKCFuZXdGaWxlKSB7XG4gICAgICByZXR1cm4gYmFja2xpbmtzO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0xpbmtzID0gYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUodGhpcy5hcHAsIG5ld0ZpbGUpO1xuXG4gICAgZm9yIChjb25zdCBwYXRoIG9mIG5ld0xpbmtzLmtleXMoKSkge1xuICAgICAgY29uc3QgbGlua3MgPSBiYWNrbGlua3MuZ2V0KHBhdGgpID8/IFtdO1xuICAgICAgbGlua3MucHVzaCguLi5uZXdMaW5rcy5nZXQocGF0aCkgPz8gW10pO1xuICAgICAgYmFja2xpbmtzLnNldChwYXRoLCBsaW5rcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhY2tsaW5rcztcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7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
|
@@ -1,6 +1,16 @@
|
|
1
1
|
import type { Plugin } from 'obsidian';
|
2
|
-
|
2
|
+
/**
|
3
|
+
* Settings for the rename/delete handler.
|
4
|
+
*/
|
5
|
+
export interface RenameDeleteHandlerSettings {
|
6
|
+
/**
|
7
|
+
* Whether to delete empty folders.
|
8
|
+
*/
|
3
9
|
shouldDeleteEmptyFolders: boolean;
|
10
|
+
/**
|
11
|
+
* Whether to delete orphan attachments after a delete.
|
12
|
+
*/
|
13
|
+
shouldDeleteOrphanAttachments: boolean;
|
4
14
|
}
|
5
15
|
/**
|
6
16
|
* Registers the rename/delete handlers.
|
@@ -9,4 +19,3 @@ interface RenameDeleteHandlerSettings {
|
|
9
19
|
* @returns void
|
10
20
|
*/
|
11
21
|
export declare function registerRenameDeleteHandlers(plugin: Plugin, settingsBuilder: () => RenameDeleteHandlerSettings): void;
|
12
|
-
export {};
|
@@ -29,10 +29,10 @@ __export(Vault_exports, {
|
|
29
29
|
createFolderSafe: () => createFolderSafe,
|
30
30
|
createTempFile: () => createTempFile,
|
31
31
|
createTempFolder: () => createTempFolder,
|
32
|
+
deleteEmptyFolderHierarchy: () => deleteEmptyFolderHierarchy,
|
33
|
+
deleteFolderSafe: () => deleteFolderSafe,
|
32
34
|
getMarkdownFilesSorted: () => getMarkdownFilesSorted,
|
33
35
|
processWithRetry: () => processWithRetry,
|
34
|
-
removeEmptyFolderHierarchy: () => removeEmptyFolderHierarchy,
|
35
|
-
removeFolderSafe: () => removeFolderSafe,
|
36
36
|
safeList: () => safeList
|
37
37
|
});
|
38
38
|
module.exports = __toCommonJS(Vault_exports);
|
@@ -133,48 +133,48 @@ async function applyFileChanges(app, pathOrFile, changesProvider, retryOptions =
|
|
133
133
|
return newContent;
|
134
134
|
}, overriddenOptions);
|
135
135
|
}
|
136
|
-
async function
|
136
|
+
async function deleteFolderSafe(app, folderPath, deletedNotePath, shouldReportUsedAttachments) {
|
137
137
|
const folder = app.vault.getFolderByPath(folderPath);
|
138
138
|
if (!folder) {
|
139
139
|
return false;
|
140
140
|
}
|
141
|
-
let
|
141
|
+
let canDelete = true;
|
142
142
|
for (const child of folder.children) {
|
143
143
|
if (child instanceof import_obsidian.TFile) {
|
144
144
|
const backlinks = await (0, import_MetadataCache.getBacklinksForFileSafe)(app, child);
|
145
|
-
if (
|
146
|
-
backlinks.removeKey(
|
145
|
+
if (deletedNotePath) {
|
146
|
+
backlinks.removeKey(deletedNotePath);
|
147
147
|
}
|
148
148
|
if (backlinks.count() !== 0) {
|
149
149
|
if (shouldReportUsedAttachments) {
|
150
150
|
new import_obsidian.Notice(`Attachment ${child.path} is still used by other notes. It will not be deleted.`);
|
151
151
|
}
|
152
|
-
|
152
|
+
canDelete = false;
|
153
153
|
} else {
|
154
154
|
try {
|
155
155
|
await app.fileManager.trashFile(child);
|
156
156
|
} catch (e) {
|
157
157
|
if (await app.vault.adapter.exists(child.path)) {
|
158
158
|
(0, import_Error.printError)(new Error(`Failed to delete ${child.path}`, { cause: e }));
|
159
|
-
|
159
|
+
canDelete = false;
|
160
160
|
}
|
161
161
|
}
|
162
162
|
}
|
163
163
|
} else if (child instanceof import_obsidian.TFolder) {
|
164
|
-
|
164
|
+
canDelete &&= await deleteFolderSafe(app, child.path, deletedNotePath, shouldReportUsedAttachments);
|
165
165
|
}
|
166
166
|
}
|
167
|
-
if (
|
167
|
+
if (canDelete) {
|
168
168
|
try {
|
169
169
|
await app.fileManager.trashFile(folder);
|
170
170
|
} catch (e) {
|
171
171
|
if (await app.vault.adapter.exists(folder.path)) {
|
172
172
|
(0, import_Error.printError)(new Error(`Failed to delete ${folder.path}`, { cause: e }));
|
173
|
-
|
173
|
+
canDelete = false;
|
174
174
|
}
|
175
175
|
}
|
176
176
|
}
|
177
|
-
return
|
177
|
+
return canDelete;
|
178
178
|
}
|
179
179
|
async function createFolderSafe(app, path) {
|
180
180
|
if (await app.vault.adapter.exists(path)) {
|
@@ -204,14 +204,14 @@ async function safeList(app, path) {
|
|
204
204
|
return EMPTY;
|
205
205
|
}
|
206
206
|
}
|
207
|
-
async function
|
207
|
+
async function deleteEmptyFolderHierarchy(app, pathOrFolder) {
|
208
208
|
let folder = (0, import_TFolder.getFolderOrNull)(app, pathOrFolder);
|
209
209
|
while (folder) {
|
210
210
|
if (folder.children.length > 0) {
|
211
211
|
return;
|
212
212
|
}
|
213
213
|
const parent = folder.parent;
|
214
|
-
await
|
214
|
+
await deleteFolderSafe(app, folder.path);
|
215
215
|
folder = parent;
|
216
216
|
}
|
217
217
|
}
|
@@ -261,10 +261,10 @@ async function createTempFolder(app, path) {
|
|
261
261
|
createFolderSafe,
|
262
262
|
createTempFile,
|
263
263
|
createTempFolder,
|
264
|
+
deleteEmptyFolderHierarchy,
|
265
|
+
deleteFolderSafe,
|
264
266
|
getMarkdownFilesSorted,
|
265
267
|
processWithRetry,
|
266
|
-
removeEmptyFolderHierarchy,
|
267
|
-
removeFolderSafe,
|
268
268
|
safeList
|
269
269
|
});
|
270
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzWydpbXBvcnQubWV0YS51cmwnXSA/PyAoKCk9PntpZih0eXBlb2YgX19maWxlbmFtZSE9PVwic3RyaW5nXCIpe3JldHVybiBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKX1yZXR1cm4gcmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSl9KSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBWYXVsdFxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgT2JzaWRpYW4gVmF1bHQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBMaXN0ZWRGaWxlcyB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7XG4gIEFwcCxcbiAgTm90aWNlLFxuICBURmlsZSxcbiAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dCB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7XG4gIHByaW50RXJyb3IsXG4gIHRocm93RXhwcmVzc2lvblxufSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tICcuLi9PYmplY3QudHMnO1xuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlIH0gZnJvbSAnLi9NZXRhZGF0YUNhY2hlLnRzJztcbmltcG9ydCB7IGdldFBhdGggfSBmcm9tICcuL1RBYnN0cmFjdEZpbGUudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9URmlsZS50cyc7XG5pbXBvcnQgeyBnZXRGaWxlIH0gZnJvbSAnLi9URmlsZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZvbGRlciB9IGZyb20gJy4vVEZvbGRlci50cyc7XG5pbXBvcnQgeyBnZXRGb2xkZXJPck51bGwgfSBmcm9tICcuL1RGb2xkZXIudHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBmaWxlIGNoYW5nZSBpbiB0aGUgVmF1bHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIGNoYW5nZSBpbiB0aGUgZmlsZSBjb250ZW50LlxuICAgKi9cbiAgc3RhcnRJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kIGluZGV4IG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbGUgY29udGVudC5cbiAgICovXG4gIGVuZEluZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgY29udGVudCB0aGF0IHdpbGwgYmUgcmVwbGFjZWQuXG4gICAqL1xuICBvbGRDb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgY29udGVudCB0byByZXBsYWNlIHRoZSBvbGQgY29udGVudC5cbiAgICovXG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgZmlsZSB3aXRoIHJldHJ5IGxvZ2ljLCB1cGRhdGluZyBpdHMgY29udGVudCBiYXNlZCBvbiBhIHByb3ZpZGVkIHZhbHVlIG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UsIHR5cGljYWxseSB1c2VkIGZvciBhY2Nlc3NpbmcgdGhlIHZhdWx0LlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGJlIHByb2Nlc3NlZC4gSXQgY2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGF0aCBvciBhIGZpbGUgb2JqZWN0LlxuICogQHBhcmFtIG5ld0NvbnRlbnRQcm92aWRlciAtIEEgdmFsdWUgcHJvdmlkZXIgdGhhdCByZXR1cm5zIHRoZSBuZXcgY29udGVudCBiYXNlZCBvbiB0aGUgb2xkIGNvbnRlbnQgb2YgdGhlIGZpbGUuXG4gKiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBvbGQgY29udGVudCBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQuXG4gKiBJZiBmdW5jdGlvbiBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIHJldHVybiBgbnVsbGAgaWYgdGhlIHByb2Nlc3Mgc2hvdWxkIGJlIHJldHJpZWQuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwuIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgcmV0cnlpbmcgdGhlIHByb2Nlc3MuIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBvcHRpb25zIHdpbGwgYmUgdXNlZC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICpcbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJvY2VzcyBmYWlscyBhZnRlciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiByZXRyaWVzIG9yIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzV2l0aFJldHJ5KGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBuZXdDb250ZW50UHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8c3RyaW5nIHwgbnVsbCwgW3N0cmluZ10+LCByZXRyeU9wdGlvbnM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGNvbnN0IERFRkFVTFRfUkVUUllfT1BUSU9OUzogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IDYwMDAwIH07XG4gIGNvbnN0IG92ZXJyaWRkZW5PcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ucmV0cnlPcHRpb25zIH07XG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5yZWFkKGZpbGUucGF0aCk7XG4gICAgY29uc3QgbmV3Q29udGVudCA9IGF3YWl0IHJlc29sdmVWYWx1ZShuZXdDb250ZW50UHJvdmlkZXIsIG9sZENvbnRlbnQpO1xuICAgIGlmIChuZXdDb250ZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQgIT09IG9sZENvbnRlbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDb250ZW50IGhhcyBjaGFuZ2VkIHNpbmNlIGl0IHdhcyByZWFkLiBSZXRyeWluZy4uLicsIHtcbiAgICAgICAgICBwYXRoOiBmaWxlLnBhdGgsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnRcbiAgICAgICAgfSk7XG4gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdDb250ZW50O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH0sIG92ZXJyaWRkZW5PcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hlcmUgdGhlIGZpbGUgY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxuICogQHBhcmFtIHJldHJ5T3B0aW9ucyAtIE9wdGlvbmFsIHNldHRpbmdzIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgb3BlcmF0aW9uIHNob3VsZCByZXRyeSBvbiBmYWlsdXJlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUZpbGVDaGFuZ2VzKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBjaGFuZ2VzUHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8RmlsZUNoYW5nZVtdPiwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgdGltZW91dEluTWlsbGlzZWNvbmRzOiA2MDAwMCB9O1xuICBjb25zdCBvdmVycmlkZGVuT3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLnJldHJ5T3B0aW9ucyB9O1xuICBhd2FpdCBwcm9jZXNzV2l0aFJldHJ5KGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGNvbnRlbnQpID0+IHtcbiAgICBsZXQgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIpO1xuXG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IGNvbnRlbnQuc2xpY2UoY2hhbmdlLnN0YXJ0SW5kZXgsIGNoYW5nZS5lbmRJbmRleCk7XG4gICAgICBpZiAoYWN0dWFsQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIHN0YXJ0SW5kZXg6IGNoYW5nZS5zdGFydEluZGV4LFxuICAgICAgICAgIGVuZEluZGV4OiBjaGFuZ2UuZW5kSW5kZXgsXG4gICAgICAgICAgcGF0aDogZ2V0UGF0aChwYXRoT3JGaWxlKSxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIGFjdHVhbENvbnRlbnRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0SW5kZXggLSBiLnN0YXJ0SW5kZXgpO1xuXG4gICAgLy8gQlVHOiBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYnVnLWR1cGxpY2F0ZWQtbGlua3MtaW4tbWV0YWRhdGFjYWNoZS1pbnNpZGUtZm9vdG5vdGVzLzg1NTUxXG4gICAgY2hhbmdlcyA9IGNoYW5nZXMuZmlsdGVyKChjaGFuZ2UsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XG4gICAgfSk7XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYW5nZSA9IGNoYW5nZXNbaV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQ2hhbmdlIG5vdCBmb3VuZCcpKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzQ2hhbmdlID0gY2hhbmdlc1tpIC0gMV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignUHJldmlvdXMgY2hhbmdlIG5vdCBmb3VuZCcpKTtcbiAgICAgIGlmIChwcmV2aW91c0NoYW5nZS5lbmRJbmRleCA+IGNoYW5nZS5zdGFydEluZGV4KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignT3ZlcmxhcHBpbmcgY2hhbmdlcycsIHtcbiAgICAgICAgICBwcmV2aW91c0NoYW5nZSxcbiAgICAgICAgICBjaGFuZ2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBuZXdDb250ZW50ID0gJyc7XG4gICAgbGV0IGxhc3RJbmRleCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4LCBjaGFuZ2Uuc3RhcnRJbmRleCk7XG4gICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgbGFzdEluZGV4ID0gY2hhbmdlLmVuZEluZGV4O1xuICAgIH1cblxuICAgIG5ld0NvbnRlbnQgKz0gY29udGVudC5zbGljZShsYXN0SW5kZXgpO1xuICAgIHJldHVybiBuZXdDb250ZW50O1xuICB9LCBvdmVycmlkZGVuT3B0aW9ucyk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhIGZvbGRlciBhbmQgaXRzIGNvbnRlbnRzIHNhZmVseSBmcm9tIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGZvbGRlclBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGJlIHJlbW92ZWQuXG4gKiBAcGFyYW0gcmVtb3ZlZE5vdGVQYXRoIC0gT3B0aW9uYWwuIFRoZSBwYXRoIG9mIHRoZSBub3RlIHRoYXQgdHJpZ2dlcmVkIHRoZSByZW1vdmFsLlxuICogQHBhcmFtIHNob3VsZFJlcG9ydFVzZWRBdHRhY2htZW50cyAtIE9wdGlvbmFsLiBJZiBgdHJ1ZWAsIGEgbm90aWNlIHdpbGwgYmUgc2hvd24gZm9yIGVhY2ggYXR0YWNobWVudCB0aGF0IGlzIHN0aWxsIHVzZWQgYnkgb3RoZXIgbm90ZXMuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByZW1vdmFsIHdhcyBzdWNjZXNzZnVsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVtb3ZlRm9sZGVyU2FmZShhcHA6IEFwcCwgZm9sZGVyUGF0aDogc3RyaW5nLCByZW1vdmVkTm90ZVBhdGg/OiBzdHJpbmcsIHNob3VsZFJlcG9ydFVzZWRBdHRhY2htZW50cz86IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgZm9sZGVyID0gYXBwLnZhdWx0LmdldEZvbGRlckJ5UGF0aChmb2xkZXJQYXRoKTtcblxuICBpZiAoIWZvbGRlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCBjYW5SZW1vdmUgPSB0cnVlO1xuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgZm9sZGVyLmNoaWxkcmVuKSB7XG4gICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgIGNvbnN0IGJhY2tsaW5rcyA9IGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKGFwcCwgY2hpbGQpO1xuICAgICAgaWYgKHJlbW92ZWROb3RlUGF0aCkge1xuICAgICAgICBiYWNrbGlua3MucmVtb3ZlS2V5KHJlbW92ZWROb3RlUGF0aCk7XG4gICAgICB9XG4gICAgICBpZiAoYmFja2xpbmtzLmNvdW50KCkgIT09IDApIHtcbiAgICAgICAgaWYgKHNob3VsZFJlcG9ydFVzZWRBdHRhY2htZW50cykge1xuICAgICAgICAgIG5ldyBOb3RpY2UoYEF0dGFjaG1lbnQgJHtjaGlsZC5wYXRofSBpcyBzdGlsbCB1c2VkIGJ5IG90aGVyIG5vdGVzLiBJdCB3aWxsIG5vdCBiZSBkZWxldGVkLmApO1xuICAgICAgICB9XG4gICAgICAgIGNhblJlbW92ZSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGNoaWxkKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoY2hpbGQucGF0aCkpIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gZGVsZXRlICR7Y2hpbGQucGF0aH1gLCB7IGNhdXNlOiBlIH0pKTtcbiAgICAgICAgICAgIGNhblJlbW92ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hpbGQgaW5zdGFuY2VvZiBURm9sZGVyKSB7XG4gICAgICBjYW5SZW1vdmUgJiY9IGF3YWl0IHJlbW92ZUZvbGRlclNhZmUoYXBwLCBjaGlsZC5wYXRoLCByZW1vdmVkTm90ZVBhdGgsIHNob3VsZFJlcG9ydFVzZWRBdHRhY2htZW50cyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNhblJlbW92ZSkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZvbGRlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhmb2xkZXIucGF0aCkpIHtcbiAgICAgICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWxldGUgJHtmb2xkZXIucGF0aH1gLCB7IGNhdXNlOiBlIH0pKTtcbiAgICAgICAgY2FuUmVtb3ZlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNhblJlbW92ZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgd2FzIGNyZWF0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLm1rZGlyKHBhdGgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBTYWZlbHkgbGlzdHMgdGhlIGZpbGVzIGFuZCBmb2xkZXJzIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gbGlzdCBmaWxlcyBhbmQgZm9sZGVycyBmcm9tLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBgTGlzdGVkRmlsZXNgIG9iamVjdCBjb250YWluaW5nIHRoZSBsaXN0ZWQgZmlsZXMgYW5kIGZvbGRlcnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYWZlTGlzdChhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxMaXN0ZWRGaWxlcz4ge1xuICBjb25zdCBFTVBUWSA9IHsgZmlsZXM6IFtdLCBmb2xkZXJzOiBbXSB9O1xuICBpZiAoIShhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSkge1xuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmxpc3QocGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGVtcHR5IGZvbGRlciBoaWVyYXJjaHkgc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIGZvbGRlciB0byBzdGFydCByZW1vdmluZyBlbXB0eSBoaWVyYXJjaHkgZnJvbS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVtcHR5IGhpZXJhcmNoeSBpcyByZW1vdmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVtb3ZlRW1wdHlGb2xkZXJIaWVyYXJjaHkoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyIHwgbnVsbCk6IFByb21pc2U8dm9pZD4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyKTtcblxuICB3aGlsZSAoZm9sZGVyKSB7XG4gICAgaWYgKGZvbGRlci5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGZvbGRlci5wYXJlbnQ7XG4gICAgYXdhaXQgcmVtb3ZlRm9sZGVyU2FmZShhcHAsIGZvbGRlci5wYXRoKTtcbiAgICBmb2xkZXIgPSBwYXJlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBhbmQgYWxsIGl0cyBjcmVhdGVkIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZW1wRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmaWxlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGF0aCk7XG4gIGlmIChmaWxlKSB7XG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBkaXJuYW1lKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdGaWxlIG5vdCBmb3VuZCcpKTtcblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZpbGUpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmb2xkZXIgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmb2xkZXIgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmb2xkZXIgPSBhcHAudmF1bHQuZ2V0Rm9sZGVyQnlQYXRoKHBhdGgpO1xuICBpZiAoZm9sZGVyKSB7XG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZGlyUGF0aCA9IGRpcm5hbWUocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBkaXJQYXRoKTtcblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIGRpcm5hbWUocGF0aCkpO1xuXG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXRoKTtcblxuICBmb2xkZXIgPSBhcHAudmF1bHQuZ2V0Rm9sZGVyQnlQYXRoKHBhdGgpID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0ZvbGRlciBub3QgZm91bmQnKSk7XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZvbGRlci5kZWxldGVkKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZvbGRlcik7XG4gICAgfVxuICAgIGF3YWl0IGZvbGRlckNsZWFudXAoKTtcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLHNCQUtPO0FBR1AsbUJBQWlDO0FBQ2pDLG1CQUdPO0FBQ1Asb0JBQTBCO0FBQzFCLGtCQUF3QjtBQUV4QiwyQkFBNkI7QUFDN0IsMkJBQXdDO0FBQ3hDLDJCQUF3QjtBQUV4QixtQkFBd0I7QUFFeEIscUJBQWdDO0FBbENoQyxJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUk7QUFBQyxNQUFHLE9BQU8sZUFBYSxVQUFTO0FBQUMsV0FBTyxJQUFJLElBQUksT0FBTyxTQUFTLElBQUk7QUFBQSxFQUFDO0FBQUMsU0FBTyxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVU7QUFBQyxHQUFHO0FBQzVMLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUE4RE8sU0FBUyx1QkFBdUIsS0FBbUI7QUFDeEQsU0FBTyxJQUFJLE1BQU0saUJBQWlCLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFFLElBQUksQ0FBQztBQUNqRjtBQWdCQSxlQUFzQixpQkFBaUIsS0FBVSxZQUF3QixvQkFBNEQsZUFBc0MsQ0FBQyxHQUFrQjtBQUM1TCxRQUFNLFdBQU8sc0JBQVEsS0FBSyxVQUFVO0FBQ3BDLFFBQU0sd0JBQStDLEVBQUUsdUJBQXVCLElBQU07QUFDcEYsUUFBTSxvQkFBMkMs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
|
270
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzWydpbXBvcnQubWV0YS51cmwnXSA/PyAoKCk9PntpZih0eXBlb2YgX19maWxlbmFtZSE9PVwic3RyaW5nXCIpe3JldHVybiBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKX1yZXR1cm4gcmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSl9KSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBWYXVsdFxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgT2JzaWRpYW4gVmF1bHQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBMaXN0ZWRGaWxlcyB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7XG4gIEFwcCxcbiAgTm90aWNlLFxuICBURmlsZSxcbiAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dCB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7XG4gIHByaW50RXJyb3IsXG4gIHRocm93RXhwcmVzc2lvblxufSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tICcuLi9PYmplY3QudHMnO1xuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlIH0gZnJvbSAnLi9NZXRhZGF0YUNhY2hlLnRzJztcbmltcG9ydCB7IGdldFBhdGggfSBmcm9tICcuL1RBYnN0cmFjdEZpbGUudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9URmlsZS50cyc7XG5pbXBvcnQgeyBnZXRGaWxlIH0gZnJvbSAnLi9URmlsZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZvbGRlciB9IGZyb20gJy4vVEZvbGRlci50cyc7XG5pbXBvcnQgeyBnZXRGb2xkZXJPck51bGwgfSBmcm9tICcuL1RGb2xkZXIudHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBmaWxlIGNoYW5nZSBpbiB0aGUgVmF1bHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIGNoYW5nZSBpbiB0aGUgZmlsZSBjb250ZW50LlxuICAgKi9cbiAgc3RhcnRJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kIGluZGV4IG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbGUgY29udGVudC5cbiAgICovXG4gIGVuZEluZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgY29udGVudCB0aGF0IHdpbGwgYmUgcmVwbGFjZWQuXG4gICAqL1xuICBvbGRDb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgY29udGVudCB0byByZXBsYWNlIHRoZSBvbGQgY29udGVudC5cbiAgICovXG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgTWFya2Rvd24gZmlsZXMgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQoYXBwOiBBcHApOiBURmlsZVtdIHtcbiAgcmV0dXJuIGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkuc29ydCgoYSwgYikgPT4gYS5wYXRoLmxvY2FsZUNvbXBhcmUoYi5wYXRoKSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgZmlsZSB3aXRoIHJldHJ5IGxvZ2ljLCB1cGRhdGluZyBpdHMgY29udGVudCBiYXNlZCBvbiBhIHByb3ZpZGVkIHZhbHVlIG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UsIHR5cGljYWxseSB1c2VkIGZvciBhY2Nlc3NpbmcgdGhlIHZhdWx0LlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGJlIHByb2Nlc3NlZC4gSXQgY2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGF0aCBvciBhIGZpbGUgb2JqZWN0LlxuICogQHBhcmFtIG5ld0NvbnRlbnRQcm92aWRlciAtIEEgdmFsdWUgcHJvdmlkZXIgdGhhdCByZXR1cm5zIHRoZSBuZXcgY29udGVudCBiYXNlZCBvbiB0aGUgb2xkIGNvbnRlbnQgb2YgdGhlIGZpbGUuXG4gKiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBvbGQgY29udGVudCBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQuXG4gKiBJZiBmdW5jdGlvbiBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIHJldHVybiBgbnVsbGAgaWYgdGhlIHByb2Nlc3Mgc2hvdWxkIGJlIHJldHJpZWQuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwuIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgcmV0cnlpbmcgdGhlIHByb2Nlc3MuIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBvcHRpb25zIHdpbGwgYmUgdXNlZC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICpcbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJvY2VzcyBmYWlscyBhZnRlciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiByZXRyaWVzIG9yIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzV2l0aFJldHJ5KGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBuZXdDb250ZW50UHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8c3RyaW5nIHwgbnVsbCwgW3N0cmluZ10+LCByZXRyeU9wdGlvbnM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGNvbnN0IERFRkFVTFRfUkVUUllfT1BUSU9OUzogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IDYwMDAwIH07XG4gIGNvbnN0IG92ZXJyaWRkZW5PcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ucmV0cnlPcHRpb25zIH07XG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5yZWFkKGZpbGUucGF0aCk7XG4gICAgY29uc3QgbmV3Q29udGVudCA9IGF3YWl0IHJlc29sdmVWYWx1ZShuZXdDb250ZW50UHJvdmlkZXIsIG9sZENvbnRlbnQpO1xuICAgIGlmIChuZXdDb250ZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQgIT09IG9sZENvbnRlbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDb250ZW50IGhhcyBjaGFuZ2VkIHNpbmNlIGl0IHdhcyByZWFkLiBSZXRyeWluZy4uLicsIHtcbiAgICAgICAgICBwYXRoOiBmaWxlLnBhdGgsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IGNvbnRlbnRcbiAgICAgICAgfSk7XG4gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdDb250ZW50O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH0sIG92ZXJyaWRkZW5PcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hlcmUgdGhlIGZpbGUgY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxuICogQHBhcmFtIHJldHJ5T3B0aW9ucyAtIE9wdGlvbmFsIHNldHRpbmdzIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgb3BlcmF0aW9uIHNob3VsZCByZXRyeSBvbiBmYWlsdXJlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUZpbGVDaGFuZ2VzKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBjaGFuZ2VzUHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8RmlsZUNoYW5nZVtdPiwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgdGltZW91dEluTWlsbGlzZWNvbmRzOiA2MDAwMCB9O1xuICBjb25zdCBvdmVycmlkZGVuT3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLnJldHJ5T3B0aW9ucyB9O1xuICBhd2FpdCBwcm9jZXNzV2l0aFJldHJ5KGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGNvbnRlbnQpID0+IHtcbiAgICBsZXQgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIpO1xuXG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IGNvbnRlbnQuc2xpY2UoY2hhbmdlLnN0YXJ0SW5kZXgsIGNoYW5nZS5lbmRJbmRleCk7XG4gICAgICBpZiAoYWN0dWFsQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIHN0YXJ0SW5kZXg6IGNoYW5nZS5zdGFydEluZGV4LFxuICAgICAgICAgIGVuZEluZGV4OiBjaGFuZ2UuZW5kSW5kZXgsXG4gICAgICAgICAgcGF0aDogZ2V0UGF0aChwYXRoT3JGaWxlKSxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIGFjdHVhbENvbnRlbnRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0SW5kZXggLSBiLnN0YXJ0SW5kZXgpO1xuXG4gICAgLy8gQlVHOiBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYnVnLWR1cGxpY2F0ZWQtbGlua3MtaW4tbWV0YWRhdGFjYWNoZS1pbnNpZGUtZm9vdG5vdGVzLzg1NTUxXG4gICAgY2hhbmdlcyA9IGNoYW5nZXMuZmlsdGVyKChjaGFuZ2UsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XG4gICAgfSk7XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYW5nZSA9IGNoYW5nZXNbaV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQ2hhbmdlIG5vdCBmb3VuZCcpKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzQ2hhbmdlID0gY2hhbmdlc1tpIC0gMV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignUHJldmlvdXMgY2hhbmdlIG5vdCBmb3VuZCcpKTtcbiAgICAgIGlmIChwcmV2aW91c0NoYW5nZS5lbmRJbmRleCA+IGNoYW5nZS5zdGFydEluZGV4KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignT3ZlcmxhcHBpbmcgY2hhbmdlcycsIHtcbiAgICAgICAgICBwcmV2aW91c0NoYW5nZSxcbiAgICAgICAgICBjaGFuZ2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBuZXdDb250ZW50ID0gJyc7XG4gICAgbGV0IGxhc3RJbmRleCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4LCBjaGFuZ2Uuc3RhcnRJbmRleCk7XG4gICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgbGFzdEluZGV4ID0gY2hhbmdlLmVuZEluZGV4O1xuICAgIH1cblxuICAgIG5ld0NvbnRlbnQgKz0gY29udGVudC5zbGljZShsYXN0SW5kZXgpO1xuICAgIHJldHVybiBuZXdDb250ZW50O1xuICB9LCBvdmVycmlkZGVuT3B0aW9ucyk7XG59XG5cbi8qKlxuICogRGVsZXRlcyBhIGZvbGRlciBhbmQgaXRzIGNvbnRlbnRzIHNhZmVseSBmcm9tIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGZvbGRlclBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGJlIGRlbGV0ZWQuXG4gKiBAcGFyYW0gZGVsZXRlZE5vdGVQYXRoIC0gT3B0aW9uYWwuIFRoZSBwYXRoIG9mIHRoZSBub3RlIHRoYXQgdHJpZ2dlcmVkIHRoZSByZW1vdmFsLlxuICogQHBhcmFtIHNob3VsZFJlcG9ydFVzZWRBdHRhY2htZW50cyAtIE9wdGlvbmFsLiBJZiBgdHJ1ZWAsIGEgbm90aWNlIHdpbGwgYmUgc2hvd24gZm9yIGVhY2ggYXR0YWNobWVudCB0aGF0IGlzIHN0aWxsIHVzZWQgYnkgb3RoZXIgbm90ZXMuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByZW1vdmFsIHdhcyBzdWNjZXNzZnVsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgZm9sZGVyUGF0aDogc3RyaW5nLCBkZWxldGVkTm90ZVBhdGg/OiBzdHJpbmcsIHNob3VsZFJlcG9ydFVzZWRBdHRhY2htZW50cz86IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgZm9sZGVyID0gYXBwLnZhdWx0LmdldEZvbGRlckJ5UGF0aChmb2xkZXJQYXRoKTtcblxuICBpZiAoIWZvbGRlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCBjYW5EZWxldGUgPSB0cnVlO1xuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgZm9sZGVyLmNoaWxkcmVuKSB7XG4gICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgIGNvbnN0IGJhY2tsaW5rcyA9IGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKGFwcCwgY2hpbGQpO1xuICAgICAgaWYgKGRlbGV0ZWROb3RlUGF0aCkge1xuICAgICAgICBiYWNrbGlua3MucmVtb3ZlS2V5KGRlbGV0ZWROb3RlUGF0aCk7XG4gICAgICB9XG4gICAgICBpZiAoYmFja2xpbmtzLmNvdW50KCkgIT09IDApIHtcbiAgICAgICAgaWYgKHNob3VsZFJlcG9ydFVzZWRBdHRhY2htZW50cykge1xuICAgICAgICAgIG5ldyBOb3RpY2UoYEF0dGFjaG1lbnQgJHtjaGlsZC5wYXRofSBpcyBzdGlsbCB1c2VkIGJ5IG90aGVyIG5vdGVzLiBJdCB3aWxsIG5vdCBiZSBkZWxldGVkLmApO1xuICAgICAgICB9XG4gICAgICAgIGNhbkRlbGV0ZSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGNoaWxkKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoY2hpbGQucGF0aCkpIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gZGVsZXRlICR7Y2hpbGQucGF0aH1gLCB7IGNhdXNlOiBlIH0pKTtcbiAgICAgICAgICAgIGNhbkRlbGV0ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hpbGQgaW5zdGFuY2VvZiBURm9sZGVyKSB7XG4gICAgICBjYW5EZWxldGUgJiY9IGF3YWl0IGRlbGV0ZUZvbGRlclNhZmUoYXBwLCBjaGlsZC5wYXRoLCBkZWxldGVkTm90ZVBhdGgsIHNob3VsZFJlcG9ydFVzZWRBdHRhY2htZW50cyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNhbkRlbGV0ZSkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZvbGRlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhmb2xkZXIucGF0aCkpIHtcbiAgICAgICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWxldGUgJHtmb2xkZXIucGF0aH1gLCB7IGNhdXNlOiBlIH0pKTtcbiAgICAgICAgY2FuRGVsZXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNhbkRlbGV0ZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9sZGVyIHNhZmVseSBpbiB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmb2xkZXIgd2FzIGNyZWF0ZWQuXG4gKiBAdGhyb3dzIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjcmVhdGluZyB0aGUgZm9sZGVyIGFuZCBpdCBzdGlsbCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU2FmZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLm1rZGlyKHBhdGgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBTYWZlbHkgbGlzdHMgdGhlIGZpbGVzIGFuZCBmb2xkZXJzIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gbGlzdCBmaWxlcyBhbmQgZm9sZGVycyBmcm9tLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBgTGlzdGVkRmlsZXNgIG9iamVjdCBjb250YWluaW5nIHRoZSBsaXN0ZWQgZmlsZXMgYW5kIGZvbGRlcnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYWZlTGlzdChhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxMaXN0ZWRGaWxlcz4ge1xuICBjb25zdCBFTVBUWSA9IHsgZmlsZXM6IFtdLCBmb2xkZXJzOiBbXSB9O1xuICBpZiAoIShhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSkge1xuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmxpc3QocGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGVtcHR5IGZvbGRlciBoaWVyYXJjaHkgc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIGZvbGRlciB0byBzdGFydCByZW1vdmluZyBlbXB0eSBoaWVyYXJjaHkgZnJvbS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVtcHR5IGhpZXJhcmNoeSBpcyBkZWxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlRW1wdHlGb2xkZXJIaWVyYXJjaHkoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyIHwgbnVsbCk6IFByb21pc2U8dm9pZD4ge1xuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgcGF0aE9yRm9sZGVyKTtcblxuICB3aGlsZSAoZm9sZGVyKSB7XG4gICAgaWYgKGZvbGRlci5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGZvbGRlci5wYXJlbnQ7XG4gICAgYXdhaXQgZGVsZXRlRm9sZGVyU2FmZShhcHAsIGZvbGRlci5wYXRoKTtcbiAgICBmb2xkZXIgPSBwYXJlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBhbmQgYWxsIGl0cyBjcmVhdGVkIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZW1wRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmaWxlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGF0aCk7XG4gIGlmIChmaWxlKSB7XG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBkaXJuYW1lKHBhdGgpKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUocGF0aCwgJycpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKHBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdGaWxlIG5vdCBmb3VuZCcpKTtcblxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZpbGUpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmb2xkZXIgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmb2xkZXIgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmb2xkZXIgPSBhcHAudmF1bHQuZ2V0Rm9sZGVyQnlQYXRoKHBhdGgpO1xuICBpZiAoZm9sZGVyKSB7XG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZGlyUGF0aCA9IGRpcm5hbWUocGF0aCk7XG4gIGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBkaXJQYXRoKTtcblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIGRpcm5hbWUocGF0aCkpO1xuXG4gIGF3YWl0IGNyZWF0ZUZvbGRlclNhZmUoYXBwLCBwYXRoKTtcblxuICBmb2xkZXIgPSBhcHAudmF1bHQuZ2V0Rm9sZGVyQnlQYXRoKHBhdGgpID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0ZvbGRlciBub3QgZm91bmQnKSk7XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZvbGRlci5kZWxldGVkKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZvbGRlcik7XG4gICAgfVxuICAgIGF3YWl0IGZvbGRlckNsZWFudXAoKTtcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLHNCQUtPO0FBR1AsbUJBQWlDO0FBQ2pDLG1CQUdPO0FBQ1Asb0JBQTBCO0FBQzFCLGtCQUF3QjtBQUV4QiwyQkFBNkI7QUFDN0IsMkJBQXdDO0FBQ3hDLDJCQUF3QjtBQUV4QixtQkFBd0I7QUFFeEIscUJBQWdDO0FBbENoQyxJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUk7QUFBQyxNQUFHLE9BQU8sZUFBYSxVQUFTO0FBQUMsV0FBTyxJQUFJLElBQUksT0FBTyxTQUFTLElBQUk7QUFBQSxFQUFDO0FBQUMsU0FBTyxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVU7QUFBQyxHQUFHO0FBQzVMLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUE4RE8sU0FBUyx1QkFBdUIsS0FBbUI7QUFDeEQsU0FBTyxJQUFJLE1BQU0saUJBQWlCLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFFLElBQUksQ0FBQztBQUNqRjtBQWdCQSxlQUFzQixpQkFBaUIsS0FBVSxZQUF3QixvQkFBNEQsZUFBc0MsQ0FBQyxHQUFrQjtBQUM1TCxRQUFNLFdBQU8sc0JBQVEsS0FBSyxVQUFVO0FBQ3BDLFFBQU0sd0JBQStDLEVBQUUsdUJBQXVCLElBQU07QUFDcEYsUUFBTSxvQkFBMkMs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
|
@@ -63,15 +63,15 @@ export declare function processWithRetry(app: App, pathOrFile: PathOrFile, newCo
|
|
63
63
|
*/
|
64
64
|
export declare function applyFileChanges(app: App, pathOrFile: PathOrFile, changesProvider: ValueProvider<FileChange[]>, retryOptions?: Partial<RetryOptions>): Promise<void>;
|
65
65
|
/**
|
66
|
-
*
|
66
|
+
* Deletes a folder and its contents safely from the vault.
|
67
67
|
*
|
68
68
|
* @param app - The Obsidian application instance.
|
69
|
-
* @param folderPath - The path of the folder to be
|
70
|
-
* @param
|
69
|
+
* @param folderPath - The path of the folder to be deleted.
|
70
|
+
* @param deletedNotePath - Optional. The path of the note that triggered the removal.
|
71
71
|
* @param shouldReportUsedAttachments - Optional. If `true`, a notice will be shown for each attachment that is still used by other notes.
|
72
72
|
* @returns A promise that resolves to a boolean indicating whether the removal was successful.
|
73
73
|
*/
|
74
|
-
export declare function
|
74
|
+
export declare function deleteFolderSafe(app: App, folderPath: string, deletedNotePath?: string, shouldReportUsedAttachments?: boolean): Promise<boolean>;
|
75
75
|
/**
|
76
76
|
* Creates a folder safely in the specified path.
|
77
77
|
*
|
@@ -94,9 +94,9 @@ export declare function safeList(app: App, path: string): Promise<ListedFiles>;
|
|
94
94
|
*
|
95
95
|
* @param app - The application instance.
|
96
96
|
* @param pathOrFolder - The folder to start removing empty hierarchy from.
|
97
|
-
* @returns A promise that resolves when the empty hierarchy is
|
97
|
+
* @returns A promise that resolves when the empty hierarchy is deleted.
|
98
98
|
*/
|
99
|
-
export declare function
|
99
|
+
export declare function deleteEmptyFolderHierarchy(app: App, pathOrFolder: PathOrFolder | null): Promise<void>;
|
100
100
|
/**
|
101
101
|
* Creates a temporary file in the vault with parent folders if needed.
|
102
102
|
* @param app - The application instance.
|
package/package.json
CHANGED