obsidian-dev-utils 49.0.3 → 51.0.1
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 +22 -0
- package/README.md +14 -3
- package/Transformers/Transformer/package.json +3 -3
- package/Transformers/date-transformer/package.json +6 -0
- package/Transformers/duration-transformer/package.json +6 -0
- package/Transformers/group-transformer/package.json +6 -0
- package/Transformers/index/package.json +3 -3
- package/Transformers/map-transformer/package.json +6 -0
- package/Transformers/package.json +3 -3
- package/Transformers/set-transformer/package.json +6 -0
- package/Transformers/skip-private-property-transformer/package.json +6 -0
- package/Transformers/two-way-map-transformer/package.json +6 -0
- package/Transformers/typed-transformer/package.json +6 -0
- package/codemirror/state-field-spec/package.json +6 -0
- package/dist/.markdownlint-cli2.mts +2 -2
- package/dist/eslint.config.mts +1 -1
- package/dist/lib/cjs/abort-controller.cjs +212 -0
- package/dist/lib/cjs/array.cjs +169 -0
- package/dist/lib/cjs/async-events.cjs +319 -0
- package/dist/lib/cjs/async.cjs +469 -0
- package/dist/lib/cjs/async.d.cts +326 -0
- package/dist/lib/cjs/blob.cjs +204 -0
- package/dist/lib/cjs/blob.d.cts +41 -0
- package/dist/lib/cjs/codemirror/index.cjs +4 -4
- package/dist/lib/cjs/codemirror/index.d.cts +1 -1
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +120 -0
- package/dist/lib/cjs/css-class.cjs +169 -0
- package/dist/lib/cjs/debug-controller.cjs +120 -0
- package/dist/lib/cjs/debug.cjs +270 -0
- package/dist/lib/cjs/debug.d.cts +47 -0
- package/dist/lib/cjs/enum.cjs +140 -0
- package/dist/lib/cjs/error.cjs +245 -0
- package/dist/lib/cjs/function.cjs +151 -0
- package/dist/lib/cjs/html-element.cjs +288 -0
- package/dist/lib/cjs/html-element.d.cts +122 -0
- package/dist/lib/cjs/index.cjs +69 -69
- package/dist/lib/cjs/index.d.cts +22 -22
- package/dist/lib/cjs/library.cjs +138 -0
- package/dist/lib/cjs/object-utils.cjs +554 -0
- package/dist/lib/cjs/object-utils.d.cts +255 -0
- package/dist/lib/cjs/obsidian/@types/i18next.d.cts +2 -2
- package/dist/lib/cjs/obsidian/app.cjs +170 -0
- package/dist/lib/cjs/obsidian/async-with-notice.cjs +200 -0
- package/dist/lib/cjs/obsidian/async-with-notice.d.cts +82 -0
- package/dist/lib/cjs/obsidian/attachment-path.cjs +234 -0
- package/dist/lib/cjs/obsidian/attachment-path.d.cts +181 -0
- package/dist/lib/cjs/obsidian/backlink.cjs +206 -0
- package/dist/lib/cjs/obsidian/backlink.d.cts +61 -0
- package/dist/lib/cjs/obsidian/callout.cjs +203 -0
- package/dist/lib/cjs/obsidian/callout.d.cts +61 -0
- package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +120 -0
- package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.cjs +436 -0
- package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.d.cts +264 -0
- package/dist/lib/cjs/obsidian/commands/command-base.cjs +252 -0
- package/dist/lib/cjs/obsidian/commands/editor-command-base.cjs +278 -0
- package/dist/lib/cjs/obsidian/commands/editor-command-base.d.cts +139 -0
- package/dist/lib/cjs/obsidian/commands/file-command-base.cjs +338 -0
- package/dist/lib/cjs/obsidian/commands/file-command-base.d.cts +191 -0
- package/dist/lib/cjs/obsidian/commands/folder-command-base.cjs +330 -0
- package/dist/lib/cjs/obsidian/commands/folder-command-base.d.cts +184 -0
- package/dist/lib/cjs/obsidian/commands/index.cjs +157 -0
- package/dist/lib/cjs/obsidian/commands/index.d.cts +6 -0
- package/dist/lib/cjs/obsidian/commands/non-editor-command-base.cjs +152 -0
- package/dist/lib/cjs/obsidian/commands/non-editor-command-base.d.cts +34 -0
- package/dist/lib/cjs/obsidian/components/async-events-component.cjs +149 -0
- package/dist/lib/cjs/obsidian/components/async-events-component.d.cts +25 -0
- package/dist/lib/cjs/obsidian/components/index.cjs +145 -0
- package/dist/lib/cjs/obsidian/components/index.d.cts +2 -0
- package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +205 -0
- package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.d.cts +69 -0
- package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +352 -0
- package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.d.cts +118 -0
- package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +165 -0
- package/dist/lib/cjs/obsidian/components/setting-components/date-component.d.cts +37 -0
- package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +165 -0
- package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.d.cts +37 -0
- package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +176 -0
- package/dist/lib/cjs/obsidian/components/setting-components/email-component.d.cts +48 -0
- package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +168 -0
- package/dist/lib/cjs/obsidian/components/setting-components/file-component.d.cts +42 -0
- package/dist/lib/cjs/obsidian/components/setting-components/index.cjs +217 -0
- package/dist/lib/cjs/obsidian/components/setting-components/index.d.cts +26 -0
- package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +173 -0
- package/dist/lib/cjs/obsidian/components/setting-components/month-component.d.cts +50 -0
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +237 -0
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.d.cts +87 -0
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +162 -0
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.d.cts +37 -0
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +169 -0
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.d.cts +42 -0
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +250 -0
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.d.cts +98 -0
- package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +186 -0
- package/dist/lib/cjs/obsidian/components/setting-components/number-component.d.cts +55 -0
- package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +162 -0
- package/dist/lib/cjs/obsidian/components/setting-components/password-component.d.cts +37 -0
- package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +149 -0
- package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +176 -0
- package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.d.cts +50 -0
- package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +161 -0
- package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +170 -0
- package/dist/lib/cjs/obsidian/components/setting-components/time-component.d.cts +37 -0
- package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +206 -0
- package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.d.cts +69 -0
- package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +243 -0
- package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.d.cts +89 -0
- package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +245 -0
- package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.d.cts +90 -0
- package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +164 -0
- package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.d.cts +34 -0
- package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +220 -0
- package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.d.cts +85 -0
- package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +176 -0
- package/dist/lib/cjs/obsidian/components/setting-components/url-component.d.cts +48 -0
- package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +220 -0
- package/dist/lib/cjs/obsidian/components/setting-components/validator-component.d.cts +22 -0
- package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +120 -0
- package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +173 -0
- package/dist/lib/cjs/obsidian/components/setting-components/week-component.d.cts +50 -0
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +169 -0
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +19 -0
- package/dist/lib/cjs/obsidian/constructors/index.cjs +142 -0
- package/dist/lib/cjs/obsidian/constructors/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/dataview-link.cjs +144 -0
- package/dist/lib/cjs/obsidian/dataview-link.d.cts +24 -0
- package/dist/lib/cjs/obsidian/dataview.cjs +353 -0
- package/dist/lib/cjs/obsidian/dataview.d.cts +214 -0
- package/dist/lib/cjs/obsidian/editor.cjs +162 -0
- package/dist/lib/cjs/obsidian/file-change.cjs +473 -0
- package/dist/lib/cjs/obsidian/file-change.d.cts +119 -0
- package/dist/lib/cjs/obsidian/file-manager.cjs +193 -0
- package/dist/lib/cjs/obsidian/file-manager.d.cts +40 -0
- package/dist/lib/cjs/obsidian/file-system.cjs +406 -0
- package/dist/lib/cjs/obsidian/file-system.d.cts +279 -0
- package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +151 -0
- package/dist/lib/cjs/obsidian/frontmatter.cjs +149 -0
- package/dist/lib/cjs/obsidian/frontmatter.d.cts +74 -0
- package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.cjs +121 -0
- package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.d.cts +31 -0
- package/dist/lib/cjs/obsidian/i18n/default-translations-base.cjs +121 -0
- package/dist/lib/cjs/obsidian/i18n/default-translations-base.d.cts +25 -0
- package/dist/lib/cjs/obsidian/i18n/i18n.cjs +3 -3
- package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +1 -1
- package/dist/lib/cjs/obsidian/i18n/index.cjs +7 -7
- package/dist/lib/cjs/obsidian/i18n/index.d.cts +2 -2
- package/dist/lib/cjs/obsidian/i18n/locales/translationsMap.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/locales/translationsMap.d.cts +1 -1
- package/dist/lib/cjs/obsidian/index.cjs +123 -120
- package/dist/lib/cjs/obsidian/index.d.cts +40 -39
- package/dist/lib/cjs/obsidian/link.cjs +887 -0
- package/dist/lib/cjs/obsidian/link.d.cts +716 -0
- package/dist/lib/cjs/obsidian/logger.cjs +174 -0
- package/dist/lib/cjs/obsidian/loop.cjs +225 -0
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +362 -0
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +107 -0
- package/dist/lib/cjs/obsidian/markdown-view.cjs +140 -0
- package/dist/lib/cjs/obsidian/markdown.cjs +251 -0
- package/dist/lib/cjs/obsidian/markdown.d.cts +79 -0
- package/dist/lib/cjs/obsidian/metadata-cache.cjs +367 -0
- package/dist/lib/cjs/obsidian/metadata-cache.d.cts +137 -0
- package/dist/lib/cjs/obsidian/modals/alert.cjs +166 -0
- package/dist/lib/cjs/obsidian/modals/confirm.cjs +175 -0
- package/dist/lib/cjs/obsidian/modals/index.cjs +154 -0
- package/dist/lib/cjs/obsidian/modals/index.d.cts +5 -0
- package/dist/lib/cjs/obsidian/modals/modal-base.cjs +158 -0
- package/dist/lib/cjs/obsidian/modals/modal-base.d.cts +42 -0
- package/dist/lib/cjs/obsidian/modals/prompt.cjs +210 -0
- package/dist/lib/cjs/obsidian/modals/prompt.d.cts +53 -0
- package/dist/lib/cjs/obsidian/modals/select-item.cjs +170 -0
- package/dist/lib/cjs/obsidian/modals/select-item.d.cts +43 -0
- package/dist/lib/cjs/obsidian/monkey-around.cjs +173 -0
- package/dist/lib/cjs/obsidian/obsidian-settings.cjs +139 -0
- package/dist/lib/cjs/obsidian/pdf.cjs +162 -0
- package/dist/lib/cjs/obsidian/plugin/index.cjs +169 -0
- package/dist/lib/cjs/obsidian/plugin/index.d.cts +10 -0
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +179 -0
- package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +235 -0
- package/dist/lib/cjs/obsidian/plugin/path-settings.d.cts +43 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-base.cjs +453 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-base.d.cts +200 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +165 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +145 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.cjs +483 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.d.cts +186 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.cjs +401 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.d.cts +148 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.cjs +120 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.d.cts +25 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-types-base.cjs +120 -0
- package/dist/lib/cjs/obsidian/plugin/plugin-types-base.d.cts +87 -0
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +146 -0
- package/dist/lib/cjs/obsidian/queue.cjs +201 -0
- package/dist/lib/cjs/obsidian/react/app-context.cjs +140 -0
- package/dist/lib/cjs/obsidian/react/index.cjs +142 -0
- package/dist/lib/cjs/obsidian/react/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/reference.cjs +177 -0
- package/dist/lib/cjs/obsidian/reference.d.cts +82 -0
- package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +837 -0
- package/dist/lib/cjs/obsidian/resource-url.cjs +139 -0
- package/dist/lib/cjs/obsidian/setting-ex.cjs +361 -0
- package/dist/lib/cjs/obsidian/setting-ex.d.cts +182 -0
- package/dist/lib/cjs/obsidian/setting-group-ex.cjs +154 -0
- package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +25 -0
- package/dist/lib/cjs/obsidian/validation.cjs +159 -0
- package/dist/lib/cjs/obsidian/vault-delete.cjs +171 -0
- package/dist/lib/cjs/obsidian/vault-delete.d.cts +18 -0
- package/dist/lib/cjs/obsidian/vault.cjs +540 -0
- package/dist/lib/cjs/obsidian/vault.d.cts +261 -0
- package/dist/lib/cjs/obsidian/workspace.cjs +143 -0
- package/dist/lib/cjs/path.cjs +221 -0
- package/dist/lib/cjs/reg-exp.cjs +255 -0
- package/dist/lib/cjs/script-utils/build.cjs +179 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/changeExtensionPlugin.cjs +164 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copyToObsidianPluginsFolderPlugin.cjs +196 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/customEsbuildOptionsPlugin.cjs +139 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +220 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fixEsmPlugin.cjs +145 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fixSourceMapsPlugin.cjs +171 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +169 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.d.cts +10 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +286 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +89 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocessPlugin.cjs +298 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/renameCssPlugin.cjs +148 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelteWrapperPlugin.cjs +172 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +142 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild.d.cts +10 -0
- package/dist/lib/cjs/script-utils/bundlers/index.cjs +145 -0
- package/dist/lib/cjs/script-utils/bundlers/index.d.cts +2 -0
- package/dist/lib/cjs/script-utils/cli-utils.cjs +264 -0
- package/dist/lib/cjs/script-utils/cli-utils.d.cts +76 -0
- package/dist/lib/cjs/script-utils/code-generator.cjs +139 -0
- package/dist/lib/cjs/script-utils/exec.cjs +214 -0
- package/dist/lib/cjs/script-utils/exec.d.cts +84 -0
- package/dist/lib/cjs/script-utils/formatters/dprint.cjs +164 -0
- package/dist/lib/cjs/script-utils/formatters/index.cjs +142 -0
- package/dist/lib/cjs/script-utils/formatters/index.d.cts +1 -0
- package/dist/lib/cjs/script-utils/fs.cjs +181 -0
- package/dist/lib/cjs/script-utils/fs.d.cts +75 -0
- package/dist/lib/cjs/script-utils/index.cjs +193 -0
- package/dist/lib/cjs/script-utils/index.d.cts +18 -0
- package/dist/lib/cjs/script-utils/json.cjs +179 -0
- package/dist/lib/cjs/script-utils/json.d.cts +65 -0
- package/dist/lib/cjs/script-utils/linters/cspell.cjs +135 -0
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +599 -0
- package/dist/lib/cjs/script-utils/linters/eslint.cjs +175 -0
- package/dist/lib/cjs/script-utils/linters/index.cjs +154 -0
- package/dist/lib/cjs/script-utils/linters/index.d.cts +5 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +172 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +10 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +206 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +11 -0
- package/dist/lib/cjs/script-utils/node-modules.cjs +207 -0
- package/dist/lib/cjs/script-utils/npm-publish.cjs +143 -0
- package/dist/lib/cjs/script-utils/npm-run.cjs +151 -0
- package/dist/lib/cjs/script-utils/npm.cjs +234 -0
- package/dist/lib/cjs/script-utils/npm.d.cts +149 -0
- package/dist/lib/cjs/script-utils/obsidian-cli.cjs +139 -0
- package/dist/lib/cjs/script-utils/obsidian-cli.d.cts +23 -0
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +178 -0
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +100 -0
- package/dist/lib/cjs/script-utils/root.cjs +184 -0
- package/dist/lib/cjs/script-utils/root.d.cts +68 -0
- package/dist/lib/cjs/script-utils/test-runners/index.cjs +142 -0
- package/dist/lib/cjs/script-utils/test-runners/index.d.cts +1 -0
- package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +145 -0
- package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +23 -0
- package/dist/lib/cjs/script-utils/version.cjs +477 -0
- package/dist/lib/cjs/script-utils/version.d.cts +176 -0
- package/dist/lib/cjs/string.cjs +333 -0
- package/dist/lib/cjs/string.d.cts +186 -0
- package/dist/lib/cjs/transformers/date-transformer.cjs +169 -0
- package/dist/lib/cjs/transformers/date-transformer.d.cts +38 -0
- package/dist/lib/cjs/transformers/duration-transformer.cjs +171 -0
- package/dist/lib/cjs/transformers/duration-transformer.d.cts +38 -0
- package/dist/lib/cjs/transformers/group-transformer.cjs +215 -0
- package/dist/lib/cjs/transformers/group-transformer.d.cts +69 -0
- package/dist/lib/cjs/transformers/index.cjs +166 -0
- package/dist/lib/cjs/transformers/index.d.cts +9 -0
- package/dist/lib/cjs/transformers/map-transformer.cjs +169 -0
- package/dist/lib/cjs/transformers/map-transformer.d.cts +40 -0
- package/dist/lib/cjs/transformers/set-transformer.cjs +169 -0
- package/dist/lib/cjs/transformers/set-transformer.d.cts +38 -0
- package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +167 -0
- package/dist/lib/cjs/transformers/skip-private-property-transformer.d.cts +35 -0
- package/dist/lib/cjs/transformers/transformer.cjs +210 -0
- package/dist/lib/cjs/transformers/transformer.d.cts +69 -0
- package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +170 -0
- package/dist/lib/cjs/transformers/two-way-map-transformer.d.cts +41 -0
- package/dist/lib/cjs/transformers/typed-transformer.cjs +134 -0
- package/dist/lib/cjs/transformers/typed-transformer.d.cts +38 -0
- package/dist/lib/cjs/two-way-map.cjs +248 -0
- package/dist/lib/cjs/type-guards.cjs +156 -0
- package/dist/lib/cjs/type.cjs +142 -0
- package/dist/lib/cjs/value-provider.cjs +143 -0
- package/dist/lib/esm/abort-controller.mjs +101 -0
- package/dist/lib/esm/array.mjs +61 -0
- package/dist/lib/esm/async-events.mjs +213 -0
- package/dist/lib/esm/async.d.mts +326 -0
- package/dist/lib/esm/async.mjs +354 -0
- package/dist/lib/esm/blob.d.mts +41 -0
- package/dist/lib/esm/blob.mjs +94 -0
- package/dist/lib/esm/codemirror/index.d.mts +1 -1
- package/dist/lib/esm/codemirror/index.mjs +3 -3
- package/dist/lib/esm/css-class.mjs +63 -0
- package/dist/lib/esm/debug.d.mts +47 -0
- package/dist/lib/esm/debug.mjs +152 -0
- package/dist/lib/esm/enum.mjs +33 -0
- package/dist/lib/esm/error.mjs +131 -0
- package/dist/lib/esm/function.mjs +42 -0
- package/dist/lib/esm/html-element.d.mts +122 -0
- package/dist/lib/esm/html-element.mjs +171 -0
- package/dist/lib/esm/index.d.mts +22 -22
- package/dist/lib/esm/index.mjs +46 -46
- package/dist/lib/esm/library.mjs +30 -0
- package/dist/lib/esm/object-utils.d.mts +255 -0
- package/dist/lib/esm/object-utils.mjs +435 -0
- package/dist/lib/esm/obsidian/@types/i18next.d.mts +2 -2
- package/dist/lib/esm/obsidian/app.mjs +62 -0
- package/dist/lib/esm/obsidian/async-with-notice.d.mts +82 -0
- package/dist/lib/esm/obsidian/async-with-notice.mjs +96 -0
- package/dist/lib/esm/obsidian/attachment-path.d.mts +181 -0
- package/dist/lib/esm/obsidian/attachment-path.mjs +139 -0
- package/dist/lib/esm/obsidian/backlink.d.mts +61 -0
- package/dist/lib/esm/obsidian/backlink.mjs +103 -0
- package/dist/lib/esm/obsidian/callout.d.mts +61 -0
- package/dist/lib/esm/obsidian/callout.mjs +95 -0
- package/dist/lib/esm/obsidian/commands/abstract-file-command-base.d.mts +264 -0
- package/dist/lib/esm/obsidian/commands/abstract-file-command-base.mjs +326 -0
- package/dist/lib/esm/obsidian/commands/command-base.mjs +145 -0
- package/dist/lib/esm/obsidian/commands/editor-command-base.d.mts +139 -0
- package/dist/lib/esm/obsidian/commands/editor-command-base.mjs +174 -0
- package/dist/lib/esm/obsidian/commands/file-command-base.d.mts +191 -0
- package/dist/lib/esm/obsidian/commands/file-command-base.mjs +237 -0
- package/dist/lib/esm/obsidian/commands/folder-command-base.d.mts +184 -0
- package/dist/lib/esm/obsidian/commands/folder-command-base.mjs +229 -0
- package/dist/lib/esm/obsidian/commands/index.d.mts +6 -0
- package/dist/lib/esm/obsidian/commands/index.mjs +36 -0
- package/dist/lib/esm/obsidian/commands/non-editor-command-base.d.mts +34 -0
- package/dist/lib/esm/obsidian/commands/non-editor-command-base.mjs +46 -0
- package/dist/lib/esm/obsidian/components/async-events-component.d.mts +25 -0
- package/dist/lib/esm/obsidian/components/async-events-component.mjs +42 -0
- package/dist/lib/esm/obsidian/components/index.d.mts +2 -0
- package/dist/lib/esm/obsidian/components/index.mjs +28 -0
- package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.d.mts +69 -0
- package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +99 -0
- package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.d.mts +118 -0
- package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +252 -0
- package/dist/lib/esm/obsidian/components/setting-components/date-component.d.mts +37 -0
- package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +59 -0
- package/dist/lib/esm/obsidian/components/setting-components/date-time-component.d.mts +37 -0
- package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +59 -0
- package/dist/lib/esm/obsidian/components/setting-components/email-component.d.mts +48 -0
- package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +70 -0
- package/dist/lib/esm/obsidian/components/setting-components/file-component.d.mts +42 -0
- package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +62 -0
- package/dist/lib/esm/obsidian/components/setting-components/index.d.mts +26 -0
- package/dist/lib/esm/obsidian/components/setting-components/index.mjs +76 -0
- package/dist/lib/esm/obsidian/components/setting-components/month-component.d.mts +50 -0
- package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +67 -0
- package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.d.mts +87 -0
- package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +134 -0
- package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.d.mts +37 -0
- package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +56 -0
- package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.d.mts +42 -0
- package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +63 -0
- package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.d.mts +98 -0
- package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +147 -0
- package/dist/lib/esm/obsidian/components/setting-components/number-component.d.mts +55 -0
- package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +80 -0
- package/dist/lib/esm/obsidian/components/setting-components/password-component.d.mts +37 -0
- package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +56 -0
- package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +43 -0
- package/dist/lib/esm/obsidian/components/setting-components/telephone-component.d.mts +50 -0
- package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +70 -0
- package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +55 -0
- package/dist/lib/esm/obsidian/components/setting-components/time-component.d.mts +37 -0
- package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +64 -0
- package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.d.mts +69 -0
- package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +100 -0
- package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.d.mts +89 -0
- package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +140 -0
- package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.d.mts +90 -0
- package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +139 -0
- package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.d.mts +34 -0
- package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +58 -0
- package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.d.mts +85 -0
- package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +117 -0
- package/dist/lib/esm/obsidian/components/setting-components/url-component.d.mts +48 -0
- package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +70 -0
- package/dist/lib/esm/obsidian/components/setting-components/validator-component.d.mts +22 -0
- package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +123 -0
- package/dist/lib/esm/obsidian/components/setting-components/week-component.d.mts +50 -0
- package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +67 -0
- package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.d.mts +19 -0
- package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +63 -0
- package/dist/lib/esm/obsidian/constructors/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/constructors/index.mjs +26 -0
- package/dist/lib/esm/obsidian/dataview-link.d.mts +24 -0
- package/dist/lib/esm/obsidian/dataview-link.mjs +41 -0
- package/dist/lib/esm/obsidian/dataview.d.mts +214 -0
- package/dist/lib/esm/obsidian/dataview.mjs +245 -0
- package/dist/lib/esm/obsidian/editor.mjs +58 -0
- package/dist/lib/esm/obsidian/file-change.d.mts +119 -0
- package/dist/lib/esm/obsidian/file-change.mjs +378 -0
- package/dist/lib/esm/obsidian/file-manager.d.mts +40 -0
- package/dist/lib/esm/obsidian/file-manager.mjs +92 -0
- package/dist/lib/esm/obsidian/file-system.d.mts +279 -0
- package/dist/lib/esm/obsidian/file-system.mjs +283 -0
- package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +44 -0
- package/dist/lib/esm/obsidian/frontmatter.d.mts +74 -0
- package/dist/lib/esm/obsidian/frontmatter.mjs +46 -0
- package/dist/lib/esm/obsidian/i18n/custom-type-options-base.d.mts +31 -0
- package/dist/lib/esm/obsidian/i18n/custom-type-options-base.mjs +23 -0
- package/dist/lib/esm/obsidian/i18n/default-translations-base.d.mts +25 -0
- package/dist/lib/esm/obsidian/i18n/default-translations-base.mjs +23 -0
- package/dist/lib/esm/obsidian/i18n/i18n.d.mts +1 -1
- package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -2
- package/dist/lib/esm/obsidian/i18n/index.d.mts +2 -2
- package/dist/lib/esm/obsidian/i18n/index.mjs +5 -5
- package/dist/lib/esm/obsidian/i18n/locales/translationsMap.d.mts +1 -1
- package/dist/lib/esm/obsidian/i18n/locales/translationsMap.mjs +1 -1
- package/dist/lib/esm/obsidian/index.d.mts +40 -39
- package/dist/lib/esm/obsidian/index.mjs +82 -80
- package/dist/lib/esm/obsidian/link.d.mts +716 -0
- package/dist/lib/esm/obsidian/link.mjs +789 -0
- package/dist/lib/esm/obsidian/logger.mjs +71 -0
- package/dist/lib/esm/obsidian/loop.mjs +127 -0
- package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +107 -0
- package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +262 -0
- package/dist/lib/esm/obsidian/markdown-view.mjs +34 -0
- package/dist/lib/esm/obsidian/markdown.d.mts +79 -0
- package/dist/lib/esm/obsidian/markdown.mjs +150 -0
- package/dist/lib/esm/obsidian/metadata-cache.d.mts +137 -0
- package/dist/lib/esm/obsidian/metadata-cache.mjs +266 -0
- package/dist/lib/esm/obsidian/modals/alert.mjs +63 -0
- package/dist/lib/esm/obsidian/modals/confirm.mjs +72 -0
- package/dist/lib/esm/obsidian/modals/index.d.mts +5 -0
- package/dist/lib/esm/obsidian/modals/index.mjs +34 -0
- package/dist/lib/esm/obsidian/modals/modal-base.d.mts +42 -0
- package/dist/lib/esm/obsidian/modals/modal-base.mjs +51 -0
- package/dist/lib/esm/obsidian/modals/prompt.d.mts +53 -0
- package/dist/lib/esm/obsidian/modals/prompt.mjs +113 -0
- package/dist/lib/esm/obsidian/modals/select-item.d.mts +43 -0
- package/dist/lib/esm/obsidian/modals/select-item.mjs +64 -0
- package/dist/lib/esm/obsidian/monkey-around.mjs +64 -0
- package/dist/lib/esm/obsidian/obsidian-settings.mjs +32 -0
- package/dist/lib/esm/obsidian/pdf.mjs +56 -0
- package/dist/lib/esm/obsidian/plugin/index.d.mts +10 -0
- package/dist/lib/esm/obsidian/plugin/index.mjs +44 -0
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +73 -0
- package/dist/lib/esm/obsidian/plugin/path-settings.d.mts +43 -0
- package/dist/lib/esm/obsidian/plugin/path-settings.mjs +133 -0
- package/dist/lib/esm/obsidian/plugin/plugin-base.d.mts +200 -0
- package/dist/lib/esm/obsidian/plugin/plugin-base.mjs +363 -0
- package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +67 -0
- package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +37 -0
- package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.d.mts +186 -0
- package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.mjs +383 -0
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.d.mts +148 -0
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.mjs +304 -0
- package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.d.mts +25 -0
- package/dist/lib/esm/obsidian/plugin/plugin-types-base.d.mts +87 -0
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +39 -0
- package/dist/lib/esm/obsidian/queue.mjs +99 -0
- package/dist/lib/esm/obsidian/react/app-context.mjs +36 -0
- package/dist/lib/esm/obsidian/react/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/react/index.mjs +26 -0
- package/dist/lib/esm/obsidian/reference.d.mts +82 -0
- package/dist/lib/esm/obsidian/reference.mjs +70 -0
- package/dist/lib/esm/obsidian/rename-delete-handler.mjs +774 -0
- package/dist/lib/esm/obsidian/resource-url.mjs +33 -0
- package/dist/lib/esm/obsidian/setting-ex.d.mts +182 -0
- package/dist/lib/esm/obsidian/setting-ex.mjs +258 -0
- package/dist/lib/esm/obsidian/setting-group-ex.d.mts +25 -0
- package/dist/lib/esm/obsidian/setting-group-ex.mjs +48 -0
- package/dist/lib/esm/obsidian/validation.mjs +48 -0
- package/dist/lib/esm/obsidian/vault-delete.d.mts +18 -0
- package/dist/lib/esm/obsidian/vault-delete.mjs +73 -0
- package/dist/lib/esm/obsidian/vault.d.mts +261 -0
- package/dist/lib/esm/obsidian/vault.mjs +440 -0
- package/dist/lib/esm/obsidian/workspace.mjs +36 -0
- package/dist/lib/esm/path.mjs +90 -0
- package/dist/lib/esm/reg-exp.mjs +144 -0
- package/dist/lib/esm/script-utils/build.mjs +76 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/changeExtensionPlugin.mjs +58 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copyToObsidianPluginsFolderPlugin.mjs +99 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/customEsbuildOptionsPlugin.mjs +33 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +109 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fixEsmPlugin.mjs +39 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fixSourceMapsPlugin.mjs +69 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.d.mts +10 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.mjs +44 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +89 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +174 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocessPlugin.mjs +185 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/renameCssPlugin.mjs +45 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelteWrapperPlugin.mjs +56 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild.d.mts +10 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +38 -0
- package/dist/lib/esm/script-utils/bundlers/index.d.mts +2 -0
- package/dist/lib/esm/script-utils/bundlers/index.mjs +28 -0
- package/dist/lib/esm/script-utils/cli-utils.d.mts +76 -0
- package/dist/lib/esm/script-utils/cli-utils.mjs +156 -0
- package/dist/lib/esm/script-utils/code-generator.mjs +33 -0
- package/dist/lib/esm/script-utils/exec.d.mts +84 -0
- package/dist/lib/esm/script-utils/exec.mjs +111 -0
- package/dist/lib/esm/script-utils/formatters/dprint.mjs +52 -0
- package/dist/lib/esm/script-utils/formatters/index.d.mts +1 -0
- package/dist/lib/esm/script-utils/formatters/index.mjs +26 -0
- package/dist/lib/esm/script-utils/fs.d.mts +75 -0
- package/dist/lib/esm/script-utils/fs.mjs +78 -0
- package/dist/lib/esm/script-utils/index.d.mts +18 -0
- package/dist/lib/esm/script-utils/index.mjs +60 -0
- package/dist/lib/esm/script-utils/json.d.mts +65 -0
- package/dist/lib/esm/script-utils/json.mjs +74 -0
- package/dist/lib/esm/script-utils/linters/cspell.mjs +29 -0
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +485 -0
- package/dist/lib/esm/script-utils/linters/eslint.mjs +66 -0
- package/dist/lib/esm/script-utils/linters/index.d.mts +5 -0
- package/dist/lib/esm/script-utils/linters/index.mjs +34 -0
- package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +10 -0
- package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +56 -0
- package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +11 -0
- package/dist/lib/esm/script-utils/linters/markdownlint.mjs +98 -0
- package/dist/lib/esm/script-utils/node-modules.mjs +92 -0
- package/dist/lib/esm/script-utils/npm-publish.mjs +44 -0
- package/dist/lib/esm/script-utils/npm-run.mjs +44 -0
- package/dist/lib/esm/script-utils/npm.d.mts +149 -0
- package/dist/lib/esm/script-utils/npm.mjs +120 -0
- package/dist/lib/esm/script-utils/obsidian-cli.d.mts +23 -0
- package/dist/lib/esm/script-utils/obsidian-cli.mjs +33 -0
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +100 -0
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +72 -0
- package/dist/lib/esm/script-utils/root.d.mts +68 -0
- package/dist/lib/esm/script-utils/root.mjs +80 -0
- package/dist/lib/esm/script-utils/test-runners/index.d.mts +1 -0
- package/dist/lib/esm/script-utils/test-runners/index.mjs +26 -0
- package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +23 -0
- package/dist/lib/esm/script-utils/test-runners/vitest.mjs +37 -0
- package/dist/lib/esm/script-utils/version.d.mts +176 -0
- package/dist/lib/esm/script-utils/version.mjs +380 -0
- package/dist/lib/esm/string.d.mts +186 -0
- package/dist/lib/esm/string.mjs +211 -0
- package/dist/lib/esm/transformers/date-transformer.d.mts +38 -0
- package/dist/lib/esm/transformers/date-transformer.mjs +63 -0
- package/dist/lib/esm/transformers/duration-transformer.d.mts +38 -0
- package/dist/lib/esm/transformers/duration-transformer.mjs +65 -0
- package/dist/lib/esm/transformers/group-transformer.d.mts +69 -0
- package/dist/lib/esm/transformers/group-transformer.mjs +112 -0
- package/dist/lib/esm/transformers/index.d.mts +9 -0
- package/dist/lib/esm/transformers/index.mjs +42 -0
- package/dist/lib/esm/transformers/map-transformer.d.mts +40 -0
- package/dist/lib/esm/transformers/map-transformer.mjs +63 -0
- package/dist/lib/esm/transformers/set-transformer.d.mts +38 -0
- package/dist/lib/esm/transformers/set-transformer.mjs +63 -0
- package/dist/lib/esm/transformers/skip-private-property-transformer.d.mts +35 -0
- package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +61 -0
- package/dist/lib/esm/transformers/transformer.d.mts +69 -0
- package/dist/lib/esm/transformers/transformer.mjs +104 -0
- package/dist/lib/esm/transformers/two-way-map-transformer.d.mts +41 -0
- package/dist/lib/esm/transformers/two-way-map-transformer.mjs +64 -0
- package/dist/lib/esm/transformers/typed-transformer.d.mts +38 -0
- package/dist/lib/esm/transformers/typed-transformer.mjs +28 -0
- package/dist/lib/esm/two-way-map.mjs +142 -0
- package/dist/lib/esm/type-guards.mjs +47 -0
- package/dist/lib/esm/type.mjs +36 -0
- package/dist/lib/esm/value-provider.mjs +37 -0
- package/dist/scripts/default/build-clean.ts +1 -1
- package/dist/scripts/default/build-compile-svelte.ts +1 -1
- package/dist/scripts/default/build-compile-typescript.ts +1 -1
- package/dist/scripts/default/build-compile.ts +1 -1
- package/dist/scripts/default/build-static.ts +1 -1
- package/dist/scripts/default/build.ts +2 -2
- package/dist/scripts/default/dev.ts +2 -2
- package/dist/scripts/default/format-check.ts +1 -1
- package/dist/scripts/default/format.ts +1 -1
- package/dist/scripts/default/lint-fix.ts +1 -1
- package/dist/scripts/default/lint.ts +1 -1
- package/dist/scripts/default/publish.ts +1 -1
- package/dist/scripts/default/spellcheck.ts +1 -1
- package/dist/scripts/default/version.ts +1 -1
- package/dist/scripts/examples/build.customPlugin.ts +3 -3
- package/dist/scripts/examples/build.svelteConditions.ts +2 -2
- package/dist/scripts/examples/eslint.config.extend.mts +1 -1
- package/dist/scripts/examples/format.prettier.ts +4 -4
- package/obsidian/@types/Dataview/api/data-array/package.json +1 -1
- package/obsidian/@types/Dataview/api/extensions/package.json +1 -1
- package/obsidian/@types/Dataview/api/inline-api/package.json +1 -1
- package/obsidian/@types/Dataview/api/plugin-api/package.json +1 -1
- package/obsidian/@types/Dataview/api/result/package.json +1 -1
- package/obsidian/@types/Dataview/data-import/common/package.json +1 -1
- package/obsidian/@types/Dataview/data-import/csv/package.json +1 -1
- package/obsidian/@types/Dataview/data-import/inline-field/package.json +1 -1
- package/obsidian/@types/Dataview/data-import/markdown-file/package.json +1 -1
- package/obsidian/@types/Dataview/data-import/persister/package.json +1 -1
- package/obsidian/@types/Dataview/data-import/web-worker/import-entry/package.json +1 -1
- package/obsidian/@types/Dataview/data-import/web-worker/import-impl/package.json +1 -1
- package/obsidian/@types/Dataview/data-import/web-worker/import-manager/package.json +1 -1
- package/obsidian/@types/Dataview/data-index/index/package.json +1 -1
- package/obsidian/@types/Dataview/data-index/package.json +1 -1
- package/obsidian/@types/Dataview/data-index/resolver/package.json +1 -1
- package/obsidian/@types/Dataview/data-index/source/package.json +1 -1
- package/obsidian/@types/Dataview/data-model/markdown/package.json +1 -1
- package/obsidian/@types/Dataview/data-model/serialized/markdown/package.json +1 -1
- package/obsidian/@types/Dataview/data-model/transferable/package.json +1 -1
- package/obsidian/@types/Dataview/data-model/value/package.json +1 -1
- package/obsidian/@types/Dataview/expression/binaryop/package.json +1 -1
- package/obsidian/@types/Dataview/expression/context/package.json +1 -1
- package/obsidian/@types/Dataview/expression/field/package.json +1 -1
- package/obsidian/@types/Dataview/expression/functions/package.json +1 -1
- package/obsidian/@types/Dataview/expression/parse/package.json +1 -1
- package/obsidian/@types/Dataview/index/package.json +1 -1
- package/obsidian/@types/Dataview/main/package.json +1 -1
- package/obsidian/@types/Dataview/package.json +1 -1
- package/obsidian/@types/Dataview/query/engine/package.json +1 -1
- package/obsidian/@types/Dataview/query/parse/package.json +1 -1
- package/obsidian/@types/Dataview/query/query/package.json +1 -1
- package/obsidian/@types/Dataview/settings/package.json +1 -1
- package/obsidian/@types/Dataview/typings/obsidian-ex/package.json +1 -1
- package/obsidian/@types/Dataview/typings/workers/package.json +1 -1
- package/obsidian/@types/Dataview/ui/export/markdown/package.json +1 -1
- package/obsidian/@types/Dataview/ui/lp-render/package.json +1 -1
- package/obsidian/@types/Dataview/ui/markdown/package.json +1 -1
- package/obsidian/@types/Dataview/ui/refreshable-view/package.json +1 -1
- package/obsidian/@types/Dataview/ui/render/package.json +1 -1
- package/obsidian/@types/Dataview/ui/views/calendar-view/package.json +1 -1
- package/obsidian/@types/Dataview/ui/views/inline-field-live-preview/package.json +1 -1
- package/obsidian/@types/Dataview/ui/views/inline-view/package.json +1 -1
- package/obsidian/@types/Dataview/ui/views/js-view/package.json +1 -1
- package/obsidian/@types/Dataview/ui/views/list-view/package.json +1 -1
- package/obsidian/@types/Dataview/ui/views/table-view/package.json +1 -1
- package/obsidian/@types/Dataview/ui/views/task-view/package.json +1 -1
- package/obsidian/@types/Dataview/util/hash/package.json +1 -1
- package/obsidian/@types/Dataview/util/locale/package.json +1 -1
- package/obsidian/@types/Dataview/util/media/package.json +1 -1
- package/obsidian/@types/Dataview/util/normalize/package.json +1 -1
- package/obsidian/App/package.json +3 -3
- package/obsidian/Backlink/package.json +3 -3
- package/obsidian/Callout/package.json +3 -3
- package/obsidian/Commands/abstract-file-command-base/package.json +6 -0
- package/obsidian/Commands/command-base/package.json +6 -0
- package/obsidian/Commands/editor-command-base/package.json +6 -0
- package/obsidian/Commands/file-command-base/package.json +6 -0
- package/obsidian/Commands/folder-command-base/package.json +6 -0
- package/obsidian/Commands/index/package.json +3 -3
- package/obsidian/Commands/non-editor-command-base/package.json +6 -0
- package/obsidian/Commands/package.json +3 -3
- package/obsidian/Components/async-events-component/package.json +6 -0
- package/obsidian/Components/index/package.json +3 -3
- package/obsidian/Components/package.json +3 -3
- package/obsidian/Components/setting-components/checkbox-component/package.json +6 -0
- package/obsidian/Components/setting-components/code-highlighter-component/package.json +6 -0
- package/obsidian/Components/setting-components/date-component/package.json +6 -0
- package/obsidian/Components/setting-components/date-time-component/package.json +6 -0
- package/obsidian/Components/setting-components/email-component/package.json +6 -0
- package/obsidian/Components/setting-components/file-component/package.json +6 -0
- package/obsidian/Components/setting-components/index/package.json +6 -0
- package/obsidian/Components/setting-components/month-component/package.json +6 -0
- package/obsidian/Components/setting-components/multiple-dropdown-component/package.json +6 -0
- package/obsidian/Components/setting-components/multiple-email-component/package.json +6 -0
- package/obsidian/Components/setting-components/multiple-file-component/package.json +6 -0
- package/obsidian/Components/setting-components/multiple-text-component/package.json +6 -0
- package/obsidian/Components/setting-components/number-component/package.json +6 -0
- package/obsidian/Components/setting-components/package.json +6 -0
- package/obsidian/Components/setting-components/password-component/package.json +6 -0
- package/obsidian/Components/setting-components/setting-component-wrapper/package.json +6 -0
- package/obsidian/Components/setting-components/telephone-component/package.json +6 -0
- package/obsidian/Components/setting-components/text-based-component/package.json +6 -0
- package/obsidian/Components/setting-components/time-component/package.json +6 -0
- package/obsidian/Components/setting-components/tri-state-checkbox-component/package.json +6 -0
- package/obsidian/Components/setting-components/typed-dropdown-component/package.json +6 -0
- package/obsidian/Components/setting-components/typed-multiple-dropdown-component/package.json +6 -0
- package/obsidian/Components/setting-components/typed-range-text-component/package.json +6 -0
- package/obsidian/Components/setting-components/typed-text-component/package.json +6 -0
- package/obsidian/Components/setting-components/url-component/package.json +6 -0
- package/obsidian/Components/setting-components/validator-component/package.json +6 -0
- package/obsidian/Components/setting-components/value-component-with-change-tracking/package.json +6 -0
- package/obsidian/Components/setting-components/week-component/package.json +6 -0
- package/obsidian/Dataview/package.json +3 -3
- package/obsidian/Editor/package.json +3 -3
- package/obsidian/Frontmatter/package.json +3 -3
- package/obsidian/Link/package.json +3 -3
- package/obsidian/Logger/package.json +3 -3
- package/obsidian/Loop/package.json +3 -3
- package/obsidian/Markdown/package.json +3 -3
- package/obsidian/Modals/Alert/package.json +3 -3
- package/obsidian/Modals/Confirm/package.json +3 -3
- package/obsidian/Modals/Prompt/package.json +3 -3
- package/obsidian/Modals/index/package.json +3 -3
- package/obsidian/Modals/modal-base/package.json +6 -0
- package/obsidian/Modals/package.json +3 -3
- package/obsidian/Modals/select-item/package.json +6 -0
- package/obsidian/Pdf/package.json +3 -3
- package/obsidian/Plugin/Plugin/package.json +3 -3
- package/obsidian/Plugin/index/package.json +3 -3
- package/obsidian/Plugin/obsidian-plugin-repo-paths/package.json +6 -0
- package/obsidian/Plugin/package.json +3 -3
- package/obsidian/Plugin/path-settings/package.json +6 -0
- package/obsidian/Plugin/plugin-base/package.json +6 -0
- package/obsidian/Plugin/plugin-context/package.json +6 -0
- package/obsidian/Plugin/plugin-id/package.json +6 -0
- package/obsidian/Plugin/plugin-settings-manager-base/package.json +6 -0
- package/obsidian/Plugin/plugin-settings-tab-base/package.json +6 -0
- package/obsidian/Plugin/plugin-settings-wrapper/package.json +6 -0
- package/obsidian/Plugin/plugin-types-base/package.json +6 -0
- package/obsidian/Queue/package.json +3 -3
- package/obsidian/React/app-context/package.json +6 -0
- package/obsidian/React/index/package.json +3 -3
- package/obsidian/React/package.json +3 -3
- package/obsidian/Reference/package.json +3 -3
- package/obsidian/Validation/package.json +3 -3
- package/obsidian/Vault/package.json +3 -3
- package/obsidian/Workspace/package.json +3 -3
- package/obsidian/async-with-notice/package.json +6 -0
- package/obsidian/attachment-path/package.json +6 -0
- package/obsidian/code-block-markdown-information/package.json +6 -0
- package/obsidian/constructors/getDomEventsHandlersConstructor/package.json +6 -0
- package/obsidian/constructors/index/package.json +6 -0
- package/obsidian/constructors/package.json +6 -0
- package/obsidian/dataview-link/package.json +6 -0
- package/obsidian/file-change/package.json +6 -0
- package/obsidian/file-manager/package.json +6 -0
- package/obsidian/file-system/package.json +6 -0
- package/obsidian/frontmatter-link-cache-with-offsets/package.json +6 -0
- package/obsidian/i18n/custom-type-options-base/package.json +6 -0
- package/obsidian/i18n/default-translations-base/package.json +6 -0
- package/obsidian/markdown-code-block-processor/package.json +6 -0
- package/obsidian/markdown-view/package.json +6 -0
- package/obsidian/metadata-cache/package.json +6 -0
- package/obsidian/monkey-around/package.json +6 -0
- package/obsidian/obsidian-settings/package.json +6 -0
- package/obsidian/rename-delete-handler/package.json +6 -0
- package/obsidian/resource-url/package.json +6 -0
- package/obsidian/setting-ex/package.json +6 -0
- package/obsidian/setting-group-ex/package.json +6 -0
- package/obsidian/vault-delete/package.json +6 -0
- package/package.json +307 -228
- package/script-utils/build/package.json +6 -0
- package/script-utils/bundlers/esbuild/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/changeExtensionPlugin/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/copyToObsidianPluginsFolderPlugin/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/customEsbuildOptionsPlugin/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/dependency/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/fixEsmPlugin/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/fixSourceMapsPlugin/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/index/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/preprocessPlugin/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/renameCssPlugin/package.json +6 -0
- package/script-utils/bundlers/esbuild-impl/svelteWrapperPlugin/package.json +6 -0
- package/script-utils/bundlers/index/package.json +6 -0
- package/script-utils/bundlers/package.json +6 -0
- package/script-utils/cli-utils/package.json +6 -0
- package/script-utils/code-generator/package.json +6 -0
- package/script-utils/exec/package.json +6 -0
- package/script-utils/formatters/dprint/package.json +6 -0
- package/script-utils/formatters/index/package.json +6 -0
- package/script-utils/formatters/package.json +6 -0
- package/script-utils/fs/package.json +6 -0
- package/script-utils/index/package.json +6 -0
- package/script-utils/json/package.json +6 -0
- package/script-utils/linters/cspell/package.json +6 -0
- package/script-utils/linters/eslint/package.json +6 -0
- package/script-utils/linters/eslint-config/package.json +6 -0
- package/script-utils/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs/package.json +4 -0
- package/script-utils/linters/eslint-types/@types/@guardian__eslint-plugin-tsdoc-required/package.json +4 -0
- package/script-utils/linters/eslint-types/@types/eslint-plugin-modules-newlines/package.json +4 -0
- package/script-utils/linters/eslint-types/@types/eslint-plugin-verify-tsdoc/package.json +4 -0
- package/script-utils/linters/index/package.json +6 -0
- package/script-utils/linters/markdownlint/package.json +6 -0
- package/script-utils/linters/markdownlint-cli2-config/package.json +6 -0
- package/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema/package.json +4 -0
- package/script-utils/linters/package.json +6 -0
- package/script-utils/node-modules/package.json +6 -0
- package/script-utils/npm/package.json +6 -0
- package/script-utils/npm-publish/package.json +6 -0
- package/script-utils/npm-run/package.json +6 -0
- package/script-utils/obsidian-cli/package.json +6 -0
- package/script-utils/obsidian-dev-utils-repo-paths/package.json +6 -0
- package/script-utils/package.json +6 -0
- package/script-utils/root/package.json +6 -0
- package/script-utils/test-runners/index/package.json +6 -0
- package/script-utils/test-runners/package.json +6 -0
- package/script-utils/test-runners/vitest/package.json +6 -0
- package/script-utils/version/package.json +6 -0
- package/ScriptUtils/CliUtils/package.json +0 -6
- package/ScriptUtils/CodeGenerator/package.json +0 -6
- package/ScriptUtils/ESLint/@types/@eslint-community__eslint-plugin-eslint-comments__configs/package.json +0 -4
- package/ScriptUtils/ESLint/@types/@guardian__eslint-plugin-tsdoc-required/package.json +0 -4
- package/ScriptUtils/ESLint/@types/eslint-plugin-modules-newlines/package.json +0 -4
- package/ScriptUtils/ESLint/@types/eslint-plugin-verify-tsdoc/package.json +0 -4
- package/ScriptUtils/ESLint/ESLint/package.json +0 -6
- package/ScriptUtils/ESLint/eslint.config/package.json +0 -6
- package/ScriptUtils/ESLint/index/package.json +0 -6
- package/ScriptUtils/ESLint/package.json +0 -6
- package/ScriptUtils/Exec/package.json +0 -6
- package/ScriptUtils/Fs/package.json +0 -6
- package/ScriptUtils/JSON/package.json +0 -6
- package/ScriptUtils/NodeModules/package.json +0 -6
- package/ScriptUtils/Npm/package.json +0 -6
- package/ScriptUtils/NpmPublish/package.json +0 -6
- package/ScriptUtils/NpmRun/package.json +0 -6
- package/ScriptUtils/ObsidianDevUtilsRepoPaths/package.json +0 -6
- package/ScriptUtils/Root/package.json +0 -6
- package/ScriptUtils/build/package.json +0 -6
- package/ScriptUtils/cli/package.json +0 -6
- package/ScriptUtils/esbuild/Dependency/package.json +0 -6
- package/ScriptUtils/esbuild/ObsidianPluginBuilder/package.json +0 -6
- package/ScriptUtils/esbuild/changeExtensionPlugin/package.json +0 -6
- package/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin/package.json +0 -6
- package/ScriptUtils/esbuild/customEsbuildOptionsPlugin/package.json +0 -6
- package/ScriptUtils/esbuild/fixEsmPlugin/package.json +0 -6
- package/ScriptUtils/esbuild/fixSourceMapsPlugin/package.json +0 -6
- package/ScriptUtils/esbuild/index/package.json +0 -6
- package/ScriptUtils/esbuild/package.json +0 -6
- package/ScriptUtils/esbuild/preprocessPlugin/package.json +0 -6
- package/ScriptUtils/esbuild/renameCssPlugin/package.json +0 -6
- package/ScriptUtils/esbuild/svelteWrapperPlugin/package.json +0 -6
- package/ScriptUtils/format/package.json +0 -6
- package/ScriptUtils/index/package.json +0 -6
- package/ScriptUtils/markdownlint/@types/markdownlint-cli2-config-schema/package.json +0 -4
- package/ScriptUtils/markdownlint/index/package.json +0 -6
- package/ScriptUtils/markdownlint/markdownlint/package.json +0 -6
- package/ScriptUtils/markdownlint/markdownlint-cli2-config/package.json +0 -6
- package/ScriptUtils/markdownlint/package.json +0 -6
- package/ScriptUtils/package.json +0 -6
- package/ScriptUtils/spellcheck/package.json +0 -6
- package/ScriptUtils/version/package.json +0 -6
- package/Transformers/DateTransformer/package.json +0 -6
- package/Transformers/DurationTransformer/package.json +0 -6
- package/Transformers/GroupTransformer/package.json +0 -6
- package/Transformers/MapTransformer/package.json +0 -6
- package/Transformers/SetTransformer/package.json +0 -6
- package/Transformers/SkipPrivatePropertyTransformer/package.json +0 -6
- package/Transformers/TwoWayMapTransformer/package.json +0 -6
- package/Transformers/TypedTransformer/package.json +0 -6
- package/codemirror/StateFieldSpec/package.json +0 -6
- package/dist/bin/cli.cjs +0 -3
- package/dist/lib/cjs/AbortController.cjs +0 -212
- package/dist/lib/cjs/Array.cjs +0 -169
- package/dist/lib/cjs/Async.cjs +0 -469
- package/dist/lib/cjs/Async.d.cts +0 -326
- package/dist/lib/cjs/AsyncEvents.cjs +0 -319
- package/dist/lib/cjs/Blob.cjs +0 -204
- package/dist/lib/cjs/Blob.d.cts +0 -41
- package/dist/lib/cjs/CssClass.cjs +0 -169
- package/dist/lib/cjs/Debug.cjs +0 -270
- package/dist/lib/cjs/Debug.d.cts +0 -47
- package/dist/lib/cjs/DebugController.cjs +0 -120
- package/dist/lib/cjs/Enum.cjs +0 -140
- package/dist/lib/cjs/Error.cjs +0 -245
- package/dist/lib/cjs/Function.cjs +0 -151
- package/dist/lib/cjs/HTMLElement.cjs +0 -288
- package/dist/lib/cjs/HTMLElement.d.cts +0 -122
- package/dist/lib/cjs/Library.cjs +0 -138
- package/dist/lib/cjs/ObjectUtils.cjs +0 -554
- package/dist/lib/cjs/ObjectUtils.d.cts +0 -255
- package/dist/lib/cjs/Path.cjs +0 -221
- package/dist/lib/cjs/RegExp.cjs +0 -255
- package/dist/lib/cjs/ScriptUtils/CliUtils.cjs +0 -256
- package/dist/lib/cjs/ScriptUtils/CliUtils.d.cts +0 -72
- package/dist/lib/cjs/ScriptUtils/CodeGenerator.cjs +0 -139
- package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.cjs +0 -175
- package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.cjs +0 -599
- package/dist/lib/cjs/ScriptUtils/ESLint/index.cjs +0 -145
- package/dist/lib/cjs/ScriptUtils/ESLint/index.d.cts +0 -2
- package/dist/lib/cjs/ScriptUtils/Exec.cjs +0 -214
- package/dist/lib/cjs/ScriptUtils/Exec.d.cts +0 -84
- package/dist/lib/cjs/ScriptUtils/Fs.cjs +0 -181
- package/dist/lib/cjs/ScriptUtils/Fs.d.cts +0 -75
- package/dist/lib/cjs/ScriptUtils/JSON.cjs +0 -179
- package/dist/lib/cjs/ScriptUtils/JSON.d.cts +0 -65
- package/dist/lib/cjs/ScriptUtils/NodeModules.cjs +0 -207
- package/dist/lib/cjs/ScriptUtils/Npm.cjs +0 -234
- package/dist/lib/cjs/ScriptUtils/Npm.d.cts +0 -149
- package/dist/lib/cjs/ScriptUtils/NpmPublish.cjs +0 -143
- package/dist/lib/cjs/ScriptUtils/NpmRun.cjs +0 -151
- package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.cjs +0 -178
- package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.d.cts +0 -100
- package/dist/lib/cjs/ScriptUtils/Root.cjs +0 -184
- package/dist/lib/cjs/ScriptUtils/Root.d.cts +0 -68
- package/dist/lib/cjs/ScriptUtils/build.cjs +0 -179
- package/dist/lib/cjs/ScriptUtils/cli.cjs +0 -207
- package/dist/lib/cjs/ScriptUtils/cli.d.cts +0 -15
- package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +0 -220
- package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +0 -275
- package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts +0 -58
- package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.cjs +0 -164
- package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +0 -169
- package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.cjs +0 -139
- package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.cjs +0 -145
- package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +0 -171
- package/dist/lib/cjs/ScriptUtils/esbuild/index.cjs +0 -169
- package/dist/lib/cjs/ScriptUtils/esbuild/index.d.cts +0 -10
- package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +0 -298
- package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.cjs +0 -148
- package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.cjs +0 -172
- package/dist/lib/cjs/ScriptUtils/format.cjs +0 -164
- package/dist/lib/cjs/ScriptUtils/index.cjs +0 -196
- package/dist/lib/cjs/ScriptUtils/index.d.cts +0 -19
- package/dist/lib/cjs/ScriptUtils/markdownlint/index.cjs +0 -145
- package/dist/lib/cjs/ScriptUtils/markdownlint/index.d.cts +0 -2
- package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint-cli2-config.cjs +0 -172
- package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint-cli2-config.d.cts +0 -10
- package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint.cjs +0 -206
- package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint.d.cts +0 -11
- package/dist/lib/cjs/ScriptUtils/spellcheck.cjs +0 -135
- package/dist/lib/cjs/ScriptUtils/version.cjs +0 -484
- package/dist/lib/cjs/ScriptUtils/version.d.cts +0 -167
- package/dist/lib/cjs/String.cjs +0 -333
- package/dist/lib/cjs/String.d.cts +0 -186
- package/dist/lib/cjs/Transformers/DateTransformer.cjs +0 -169
- package/dist/lib/cjs/Transformers/DateTransformer.d.cts +0 -38
- package/dist/lib/cjs/Transformers/DurationTransformer.cjs +0 -171
- package/dist/lib/cjs/Transformers/DurationTransformer.d.cts +0 -38
- package/dist/lib/cjs/Transformers/GroupTransformer.cjs +0 -215
- package/dist/lib/cjs/Transformers/GroupTransformer.d.cts +0 -69
- package/dist/lib/cjs/Transformers/MapTransformer.cjs +0 -169
- package/dist/lib/cjs/Transformers/MapTransformer.d.cts +0 -40
- package/dist/lib/cjs/Transformers/SetTransformer.cjs +0 -169
- package/dist/lib/cjs/Transformers/SetTransformer.d.cts +0 -38
- package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.cjs +0 -167
- package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.d.cts +0 -35
- package/dist/lib/cjs/Transformers/Transformer.cjs +0 -210
- package/dist/lib/cjs/Transformers/Transformer.d.cts +0 -69
- package/dist/lib/cjs/Transformers/TwoWayMapTransformer.cjs +0 -170
- package/dist/lib/cjs/Transformers/TwoWayMapTransformer.d.cts +0 -41
- package/dist/lib/cjs/Transformers/TypedTransformer.cjs +0 -134
- package/dist/lib/cjs/Transformers/TypedTransformer.d.cts +0 -38
- package/dist/lib/cjs/Transformers/index.cjs +0 -166
- package/dist/lib/cjs/Transformers/index.d.cts +0 -9
- package/dist/lib/cjs/TwoWayMap.cjs +0 -248
- package/dist/lib/cjs/Type.cjs +0 -142
- package/dist/lib/cjs/TypeGuards.cjs +0 -156
- package/dist/lib/cjs/ValueProvider.cjs +0 -143
- package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +0 -120
- package/dist/lib/cjs/obsidian/App.cjs +0 -170
- package/dist/lib/cjs/obsidian/AsyncWithNotice.cjs +0 -200
- package/dist/lib/cjs/obsidian/AsyncWithNotice.d.cts +0 -82
- package/dist/lib/cjs/obsidian/AttachmentPath.cjs +0 -234
- package/dist/lib/cjs/obsidian/AttachmentPath.d.cts +0 -181
- package/dist/lib/cjs/obsidian/Backlink.cjs +0 -206
- package/dist/lib/cjs/obsidian/Backlink.d.cts +0 -61
- package/dist/lib/cjs/obsidian/Callout.cjs +0 -203
- package/dist/lib/cjs/obsidian/Callout.d.cts +0 -61
- package/dist/lib/cjs/obsidian/CodeBlockMarkdownInformation.cjs +0 -120
- package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.cjs +0 -436
- package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.d.cts +0 -264
- package/dist/lib/cjs/obsidian/Commands/CommandBase.cjs +0 -252
- package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.cjs +0 -278
- package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.d.cts +0 -139
- package/dist/lib/cjs/obsidian/Commands/FileCommandBase.cjs +0 -338
- package/dist/lib/cjs/obsidian/Commands/FileCommandBase.d.cts +0 -191
- package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.cjs +0 -330
- package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.d.cts +0 -184
- package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.cjs +0 -152
- package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.d.cts +0 -34
- package/dist/lib/cjs/obsidian/Commands/index.cjs +0 -157
- package/dist/lib/cjs/obsidian/Commands/index.d.cts +0 -6
- package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.cjs +0 -149
- package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.d.cts +0 -25
- package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.cjs +0 -205
- package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.d.cts +0 -69
- package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.cjs +0 -352
- package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.cts +0 -118
- package/dist/lib/cjs/obsidian/Components/SettingComponents/DateComponent.cjs +0 -165
- package/dist/lib/cjs/obsidian/Components/SettingComponents/DateComponent.d.cts +0 -37
- package/dist/lib/cjs/obsidian/Components/SettingComponents/DateTimeComponent.cjs +0 -165
- package/dist/lib/cjs/obsidian/Components/SettingComponents/DateTimeComponent.d.cts +0 -37
- package/dist/lib/cjs/obsidian/Components/SettingComponents/EmailComponent.cjs +0 -176
- package/dist/lib/cjs/obsidian/Components/SettingComponents/EmailComponent.d.cts +0 -48
- package/dist/lib/cjs/obsidian/Components/SettingComponents/FileComponent.cjs +0 -168
- package/dist/lib/cjs/obsidian/Components/SettingComponents/FileComponent.d.cts +0 -42
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MonthComponent.cjs +0 -173
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MonthComponent.d.cts +0 -50
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.cjs +0 -237
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.cts +0 -87
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleEmailComponent.cjs +0 -162
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleEmailComponent.d.cts +0 -37
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleFileComponent.cjs +0 -169
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleFileComponent.d.cts +0 -42
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.cjs +0 -250
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.d.cts +0 -98
- package/dist/lib/cjs/obsidian/Components/SettingComponents/NumberComponent.cjs +0 -186
- package/dist/lib/cjs/obsidian/Components/SettingComponents/NumberComponent.d.cts +0 -55
- package/dist/lib/cjs/obsidian/Components/SettingComponents/PasswordComponent.cjs +0 -162
- package/dist/lib/cjs/obsidian/Components/SettingComponents/PasswordComponent.d.cts +0 -37
- package/dist/lib/cjs/obsidian/Components/SettingComponents/SettingComponentWrapper.cjs +0 -149
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TelephoneComponent.cjs +0 -176
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TelephoneComponent.d.cts +0 -50
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TextBasedComponent.cjs +0 -161
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TimeComponent.cjs +0 -170
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TimeComponent.d.cts +0 -37
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.cjs +0 -206
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.d.cts +0 -69
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.cjs +0 -243
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.d.cts +0 -89
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.cjs +0 -245
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.cts +0 -90
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedRangeTextComponent.cjs +0 -164
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedRangeTextComponent.d.cts +0 -34
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.cjs +0 -220
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.d.cts +0 -85
- package/dist/lib/cjs/obsidian/Components/SettingComponents/UrlComponent.cjs +0 -176
- package/dist/lib/cjs/obsidian/Components/SettingComponents/UrlComponent.d.cts +0 -48
- package/dist/lib/cjs/obsidian/Components/SettingComponents/ValidatorComponent.cjs +0 -220
- package/dist/lib/cjs/obsidian/Components/SettingComponents/ValidatorComponent.d.cts +0 -22
- package/dist/lib/cjs/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking.cjs +0 -120
- package/dist/lib/cjs/obsidian/Components/SettingComponents/WeekComponent.cjs +0 -173
- package/dist/lib/cjs/obsidian/Components/SettingComponents/WeekComponent.d.cts +0 -50
- package/dist/lib/cjs/obsidian/Components/SettingComponents/index.cjs +0 -217
- package/dist/lib/cjs/obsidian/Components/SettingComponents/index.d.cts +0 -26
- package/dist/lib/cjs/obsidian/Components/index.cjs +0 -145
- package/dist/lib/cjs/obsidian/Components/index.d.cts +0 -2
- package/dist/lib/cjs/obsidian/Dataview.cjs +0 -353
- package/dist/lib/cjs/obsidian/Dataview.d.cts +0 -214
- package/dist/lib/cjs/obsidian/DataviewLink.cjs +0 -144
- package/dist/lib/cjs/obsidian/DataviewLink.d.cts +0 -24
- package/dist/lib/cjs/obsidian/Editor.cjs +0 -162
- package/dist/lib/cjs/obsidian/FileChange.cjs +0 -473
- package/dist/lib/cjs/obsidian/FileChange.d.cts +0 -119
- package/dist/lib/cjs/obsidian/FileManager.cjs +0 -193
- package/dist/lib/cjs/obsidian/FileManager.d.cts +0 -40
- package/dist/lib/cjs/obsidian/FileSystem.cjs +0 -406
- package/dist/lib/cjs/obsidian/FileSystem.d.cts +0 -279
- package/dist/lib/cjs/obsidian/Frontmatter.cjs +0 -149
- package/dist/lib/cjs/obsidian/Frontmatter.d.cts +0 -74
- package/dist/lib/cjs/obsidian/FrontmatterLinkCacheWithOffsets.cjs +0 -151
- package/dist/lib/cjs/obsidian/Link.cjs +0 -887
- package/dist/lib/cjs/obsidian/Link.d.cts +0 -716
- package/dist/lib/cjs/obsidian/Logger.cjs +0 -174
- package/dist/lib/cjs/obsidian/Loop.cjs +0 -225
- package/dist/lib/cjs/obsidian/Markdown.cjs +0 -285
- package/dist/lib/cjs/obsidian/Markdown.d.cts +0 -79
- package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +0 -362
- package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.d.cts +0 -107
- package/dist/lib/cjs/obsidian/MarkdownView.cjs +0 -140
- package/dist/lib/cjs/obsidian/MetadataCache.cjs +0 -367
- package/dist/lib/cjs/obsidian/MetadataCache.d.cts +0 -137
- package/dist/lib/cjs/obsidian/Modals/Alert.cjs +0 -166
- package/dist/lib/cjs/obsidian/Modals/Confirm.cjs +0 -175
- package/dist/lib/cjs/obsidian/Modals/ModalBase.cjs +0 -158
- package/dist/lib/cjs/obsidian/Modals/ModalBase.d.cts +0 -42
- package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +0 -210
- package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +0 -53
- package/dist/lib/cjs/obsidian/Modals/SelectItem.cjs +0 -170
- package/dist/lib/cjs/obsidian/Modals/SelectItem.d.cts +0 -43
- package/dist/lib/cjs/obsidian/Modals/index.cjs +0 -154
- package/dist/lib/cjs/obsidian/Modals/index.d.cts +0 -5
- package/dist/lib/cjs/obsidian/MonkeyAround.cjs +0 -173
- package/dist/lib/cjs/obsidian/ObsidianSettings.cjs +0 -139
- package/dist/lib/cjs/obsidian/Pdf.cjs +0 -162
- package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +0 -179
- package/dist/lib/cjs/obsidian/Plugin/PathSettings.cjs +0 -235
- package/dist/lib/cjs/obsidian/Plugin/PathSettings.d.cts +0 -43
- package/dist/lib/cjs/obsidian/Plugin/Plugin.cjs +0 -146
- package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +0 -453
- package/dist/lib/cjs/obsidian/Plugin/PluginBase.d.cts +0 -200
- package/dist/lib/cjs/obsidian/Plugin/PluginContext.cjs +0 -165
- package/dist/lib/cjs/obsidian/Plugin/PluginId.cjs +0 -145
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +0 -483
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +0 -186
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +0 -401
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +0 -148
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.cjs +0 -120
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.d.cts +0 -25
- package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.cjs +0 -120
- package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.d.cts +0 -87
- package/dist/lib/cjs/obsidian/Plugin/index.cjs +0 -169
- package/dist/lib/cjs/obsidian/Plugin/index.d.cts +0 -10
- package/dist/lib/cjs/obsidian/Queue.cjs +0 -201
- package/dist/lib/cjs/obsidian/React/AppContext.cjs +0 -140
- package/dist/lib/cjs/obsidian/React/index.cjs +0 -142
- package/dist/lib/cjs/obsidian/React/index.d.cts +0 -1
- package/dist/lib/cjs/obsidian/Reference.cjs +0 -177
- package/dist/lib/cjs/obsidian/Reference.d.cts +0 -82
- package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +0 -837
- package/dist/lib/cjs/obsidian/ResourceUrl.cjs +0 -139
- package/dist/lib/cjs/obsidian/SettingEx.cjs +0 -361
- package/dist/lib/cjs/obsidian/SettingEx.d.cts +0 -182
- package/dist/lib/cjs/obsidian/SettingGroupEx.cjs +0 -154
- package/dist/lib/cjs/obsidian/SettingGroupEx.d.cts +0 -25
- package/dist/lib/cjs/obsidian/Validation.cjs +0 -159
- package/dist/lib/cjs/obsidian/Vault.cjs +0 -499
- package/dist/lib/cjs/obsidian/Vault.d.cts +0 -237
- package/dist/lib/cjs/obsidian/VaultEx.cjs +0 -198
- package/dist/lib/cjs/obsidian/VaultEx.d.cts +0 -36
- package/dist/lib/cjs/obsidian/Workspace.cjs +0 -143
- package/dist/lib/cjs/obsidian/i18n/CustomTypeOptionsBase.cjs +0 -121
- package/dist/lib/cjs/obsidian/i18n/CustomTypeOptionsBase.d.cts +0 -31
- package/dist/lib/cjs/obsidian/i18n/DefaultTranslationsBase.cjs +0 -121
- package/dist/lib/cjs/obsidian/i18n/DefaultTranslationsBase.d.cts +0 -25
- package/dist/lib/esm/AbortController.mjs +0 -101
- package/dist/lib/esm/Array.mjs +0 -61
- package/dist/lib/esm/Async.d.mts +0 -326
- package/dist/lib/esm/Async.mjs +0 -354
- package/dist/lib/esm/AsyncEvents.mjs +0 -213
- package/dist/lib/esm/Blob.d.mts +0 -41
- package/dist/lib/esm/Blob.mjs +0 -94
- package/dist/lib/esm/CssClass.mjs +0 -63
- package/dist/lib/esm/Debug.d.mts +0 -47
- package/dist/lib/esm/Debug.mjs +0 -152
- package/dist/lib/esm/Enum.mjs +0 -33
- package/dist/lib/esm/Error.mjs +0 -131
- package/dist/lib/esm/Function.mjs +0 -42
- package/dist/lib/esm/HTMLElement.d.mts +0 -122
- package/dist/lib/esm/HTMLElement.mjs +0 -171
- package/dist/lib/esm/Library.mjs +0 -30
- package/dist/lib/esm/ObjectUtils.d.mts +0 -255
- package/dist/lib/esm/ObjectUtils.mjs +0 -435
- package/dist/lib/esm/Path.mjs +0 -90
- package/dist/lib/esm/RegExp.mjs +0 -144
- package/dist/lib/esm/ScriptUtils/CliUtils.d.mts +0 -72
- package/dist/lib/esm/ScriptUtils/CliUtils.mjs +0 -148
- package/dist/lib/esm/ScriptUtils/CodeGenerator.mjs +0 -33
- package/dist/lib/esm/ScriptUtils/ESLint/ESLint.mjs +0 -66
- package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.mjs +0 -485
- package/dist/lib/esm/ScriptUtils/ESLint/index.d.mts +0 -2
- package/dist/lib/esm/ScriptUtils/ESLint/index.mjs +0 -28
- package/dist/lib/esm/ScriptUtils/Exec.d.mts +0 -84
- package/dist/lib/esm/ScriptUtils/Exec.mjs +0 -111
- package/dist/lib/esm/ScriptUtils/Fs.d.mts +0 -75
- package/dist/lib/esm/ScriptUtils/Fs.mjs +0 -78
- package/dist/lib/esm/ScriptUtils/JSON.d.mts +0 -65
- package/dist/lib/esm/ScriptUtils/JSON.mjs +0 -74
- package/dist/lib/esm/ScriptUtils/NodeModules.mjs +0 -92
- package/dist/lib/esm/ScriptUtils/Npm.d.mts +0 -149
- package/dist/lib/esm/ScriptUtils/Npm.mjs +0 -120
- package/dist/lib/esm/ScriptUtils/NpmPublish.mjs +0 -44
- package/dist/lib/esm/ScriptUtils/NpmRun.mjs +0 -44
- package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.d.mts +0 -100
- package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.mjs +0 -72
- package/dist/lib/esm/ScriptUtils/Root.d.mts +0 -68
- package/dist/lib/esm/ScriptUtils/Root.mjs +0 -80
- package/dist/lib/esm/ScriptUtils/build.mjs +0 -76
- package/dist/lib/esm/ScriptUtils/cli.d.mts +0 -15
- package/dist/lib/esm/ScriptUtils/cli.mjs +0 -107
- package/dist/lib/esm/ScriptUtils/esbuild/Dependency.mjs +0 -109
- package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +0 -58
- package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +0 -165
- package/dist/lib/esm/ScriptUtils/esbuild/changeExtensionPlugin.mjs +0 -58
- package/dist/lib/esm/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.mjs +0 -71
- package/dist/lib/esm/ScriptUtils/esbuild/customEsbuildOptionsPlugin.mjs +0 -33
- package/dist/lib/esm/ScriptUtils/esbuild/fixEsmPlugin.mjs +0 -39
- package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.mjs +0 -69
- package/dist/lib/esm/ScriptUtils/esbuild/index.d.mts +0 -10
- package/dist/lib/esm/ScriptUtils/esbuild/index.mjs +0 -44
- package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +0 -185
- package/dist/lib/esm/ScriptUtils/esbuild/renameCssPlugin.mjs +0 -45
- package/dist/lib/esm/ScriptUtils/esbuild/svelteWrapperPlugin.mjs +0 -56
- package/dist/lib/esm/ScriptUtils/format.mjs +0 -52
- package/dist/lib/esm/ScriptUtils/index.d.mts +0 -19
- package/dist/lib/esm/ScriptUtils/index.mjs +0 -62
- package/dist/lib/esm/ScriptUtils/markdownlint/index.d.mts +0 -2
- package/dist/lib/esm/ScriptUtils/markdownlint/index.mjs +0 -28
- package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint-cli2-config.d.mts +0 -10
- package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint-cli2-config.mjs +0 -56
- package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint.d.mts +0 -11
- package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint.mjs +0 -98
- package/dist/lib/esm/ScriptUtils/spellcheck.mjs +0 -29
- package/dist/lib/esm/ScriptUtils/version.d.mts +0 -167
- package/dist/lib/esm/ScriptUtils/version.mjs +0 -384
- package/dist/lib/esm/String.d.mts +0 -186
- package/dist/lib/esm/String.mjs +0 -211
- package/dist/lib/esm/Transformers/DateTransformer.d.mts +0 -38
- package/dist/lib/esm/Transformers/DateTransformer.mjs +0 -63
- package/dist/lib/esm/Transformers/DurationTransformer.d.mts +0 -38
- package/dist/lib/esm/Transformers/DurationTransformer.mjs +0 -65
- package/dist/lib/esm/Transformers/GroupTransformer.d.mts +0 -69
- package/dist/lib/esm/Transformers/GroupTransformer.mjs +0 -112
- package/dist/lib/esm/Transformers/MapTransformer.d.mts +0 -40
- package/dist/lib/esm/Transformers/MapTransformer.mjs +0 -63
- package/dist/lib/esm/Transformers/SetTransformer.d.mts +0 -38
- package/dist/lib/esm/Transformers/SetTransformer.mjs +0 -63
- package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.d.mts +0 -35
- package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.mjs +0 -61
- package/dist/lib/esm/Transformers/Transformer.d.mts +0 -69
- package/dist/lib/esm/Transformers/Transformer.mjs +0 -104
- package/dist/lib/esm/Transformers/TwoWayMapTransformer.d.mts +0 -41
- package/dist/lib/esm/Transformers/TwoWayMapTransformer.mjs +0 -64
- package/dist/lib/esm/Transformers/TypedTransformer.d.mts +0 -38
- package/dist/lib/esm/Transformers/TypedTransformer.mjs +0 -28
- package/dist/lib/esm/Transformers/index.d.mts +0 -9
- package/dist/lib/esm/Transformers/index.mjs +0 -42
- package/dist/lib/esm/TwoWayMap.mjs +0 -142
- package/dist/lib/esm/Type.mjs +0 -36
- package/dist/lib/esm/TypeGuards.mjs +0 -47
- package/dist/lib/esm/ValueProvider.mjs +0 -37
- package/dist/lib/esm/obsidian/App.mjs +0 -62
- package/dist/lib/esm/obsidian/AsyncWithNotice.d.mts +0 -82
- package/dist/lib/esm/obsidian/AsyncWithNotice.mjs +0 -96
- package/dist/lib/esm/obsidian/AttachmentPath.d.mts +0 -181
- package/dist/lib/esm/obsidian/AttachmentPath.mjs +0 -139
- package/dist/lib/esm/obsidian/Backlink.d.mts +0 -61
- package/dist/lib/esm/obsidian/Backlink.mjs +0 -103
- package/dist/lib/esm/obsidian/Callout.d.mts +0 -61
- package/dist/lib/esm/obsidian/Callout.mjs +0 -95
- package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.d.mts +0 -264
- package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.mjs +0 -326
- package/dist/lib/esm/obsidian/Commands/CommandBase.mjs +0 -145
- package/dist/lib/esm/obsidian/Commands/EditorCommandBase.d.mts +0 -139
- package/dist/lib/esm/obsidian/Commands/EditorCommandBase.mjs +0 -174
- package/dist/lib/esm/obsidian/Commands/FileCommandBase.d.mts +0 -191
- package/dist/lib/esm/obsidian/Commands/FileCommandBase.mjs +0 -237
- package/dist/lib/esm/obsidian/Commands/FolderCommandBase.d.mts +0 -184
- package/dist/lib/esm/obsidian/Commands/FolderCommandBase.mjs +0 -229
- package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.d.mts +0 -34
- package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.mjs +0 -46
- package/dist/lib/esm/obsidian/Commands/index.d.mts +0 -6
- package/dist/lib/esm/obsidian/Commands/index.mjs +0 -36
- package/dist/lib/esm/obsidian/Components/AsyncEventsComponent.d.mts +0 -25
- package/dist/lib/esm/obsidian/Components/AsyncEventsComponent.mjs +0 -42
- package/dist/lib/esm/obsidian/Components/SettingComponents/CheckboxComponent.d.mts +0 -69
- package/dist/lib/esm/obsidian/Components/SettingComponents/CheckboxComponent.mjs +0 -99
- package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.mts +0 -118
- package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.mjs +0 -252
- package/dist/lib/esm/obsidian/Components/SettingComponents/DateComponent.d.mts +0 -37
- package/dist/lib/esm/obsidian/Components/SettingComponents/DateComponent.mjs +0 -59
- package/dist/lib/esm/obsidian/Components/SettingComponents/DateTimeComponent.d.mts +0 -37
- package/dist/lib/esm/obsidian/Components/SettingComponents/DateTimeComponent.mjs +0 -59
- package/dist/lib/esm/obsidian/Components/SettingComponents/EmailComponent.d.mts +0 -48
- package/dist/lib/esm/obsidian/Components/SettingComponents/EmailComponent.mjs +0 -70
- package/dist/lib/esm/obsidian/Components/SettingComponents/FileComponent.d.mts +0 -42
- package/dist/lib/esm/obsidian/Components/SettingComponents/FileComponent.mjs +0 -62
- package/dist/lib/esm/obsidian/Components/SettingComponents/MonthComponent.d.mts +0 -50
- package/dist/lib/esm/obsidian/Components/SettingComponents/MonthComponent.mjs +0 -67
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.mts +0 -87
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.mjs +0 -134
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleEmailComponent.d.mts +0 -37
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleEmailComponent.mjs +0 -56
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleFileComponent.d.mts +0 -42
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleFileComponent.mjs +0 -63
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.d.mts +0 -98
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.mjs +0 -147
- package/dist/lib/esm/obsidian/Components/SettingComponents/NumberComponent.d.mts +0 -55
- package/dist/lib/esm/obsidian/Components/SettingComponents/NumberComponent.mjs +0 -80
- package/dist/lib/esm/obsidian/Components/SettingComponents/PasswordComponent.d.mts +0 -37
- package/dist/lib/esm/obsidian/Components/SettingComponents/PasswordComponent.mjs +0 -56
- package/dist/lib/esm/obsidian/Components/SettingComponents/SettingComponentWrapper.mjs +0 -43
- package/dist/lib/esm/obsidian/Components/SettingComponents/TelephoneComponent.d.mts +0 -50
- package/dist/lib/esm/obsidian/Components/SettingComponents/TelephoneComponent.mjs +0 -70
- package/dist/lib/esm/obsidian/Components/SettingComponents/TextBasedComponent.mjs +0 -55
- package/dist/lib/esm/obsidian/Components/SettingComponents/TimeComponent.d.mts +0 -37
- package/dist/lib/esm/obsidian/Components/SettingComponents/TimeComponent.mjs +0 -64
- package/dist/lib/esm/obsidian/Components/SettingComponents/TriStateCheckboxComponent.d.mts +0 -69
- package/dist/lib/esm/obsidian/Components/SettingComponents/TriStateCheckboxComponent.mjs +0 -100
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.d.mts +0 -89
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.mjs +0 -140
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.mts +0 -90
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.mjs +0 -139
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedRangeTextComponent.d.mts +0 -34
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedRangeTextComponent.mjs +0 -58
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedTextComponent.d.mts +0 -85
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedTextComponent.mjs +0 -117
- package/dist/lib/esm/obsidian/Components/SettingComponents/UrlComponent.d.mts +0 -48
- package/dist/lib/esm/obsidian/Components/SettingComponents/UrlComponent.mjs +0 -70
- package/dist/lib/esm/obsidian/Components/SettingComponents/ValidatorComponent.d.mts +0 -22
- package/dist/lib/esm/obsidian/Components/SettingComponents/ValidatorComponent.mjs +0 -123
- package/dist/lib/esm/obsidian/Components/SettingComponents/WeekComponent.d.mts +0 -50
- package/dist/lib/esm/obsidian/Components/SettingComponents/WeekComponent.mjs +0 -67
- package/dist/lib/esm/obsidian/Components/SettingComponents/index.d.mts +0 -26
- package/dist/lib/esm/obsidian/Components/SettingComponents/index.mjs +0 -76
- package/dist/lib/esm/obsidian/Components/index.d.mts +0 -2
- package/dist/lib/esm/obsidian/Components/index.mjs +0 -28
- package/dist/lib/esm/obsidian/Dataview.d.mts +0 -214
- package/dist/lib/esm/obsidian/Dataview.mjs +0 -245
- package/dist/lib/esm/obsidian/DataviewLink.d.mts +0 -24
- package/dist/lib/esm/obsidian/DataviewLink.mjs +0 -41
- package/dist/lib/esm/obsidian/Editor.mjs +0 -58
- package/dist/lib/esm/obsidian/FileChange.d.mts +0 -119
- package/dist/lib/esm/obsidian/FileChange.mjs +0 -378
- package/dist/lib/esm/obsidian/FileManager.d.mts +0 -40
- package/dist/lib/esm/obsidian/FileManager.mjs +0 -92
- package/dist/lib/esm/obsidian/FileSystem.d.mts +0 -279
- package/dist/lib/esm/obsidian/FileSystem.mjs +0 -283
- package/dist/lib/esm/obsidian/Frontmatter.d.mts +0 -74
- package/dist/lib/esm/obsidian/Frontmatter.mjs +0 -46
- package/dist/lib/esm/obsidian/FrontmatterLinkCacheWithOffsets.mjs +0 -44
- package/dist/lib/esm/obsidian/Link.d.mts +0 -716
- package/dist/lib/esm/obsidian/Link.mjs +0 -789
- package/dist/lib/esm/obsidian/Logger.mjs +0 -71
- package/dist/lib/esm/obsidian/Loop.mjs +0 -127
- package/dist/lib/esm/obsidian/Markdown.d.mts +0 -79
- package/dist/lib/esm/obsidian/Markdown.mjs +0 -184
- package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.d.mts +0 -107
- package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +0 -262
- package/dist/lib/esm/obsidian/MarkdownView.mjs +0 -34
- package/dist/lib/esm/obsidian/MetadataCache.d.mts +0 -137
- package/dist/lib/esm/obsidian/MetadataCache.mjs +0 -266
- package/dist/lib/esm/obsidian/Modals/Alert.mjs +0 -63
- package/dist/lib/esm/obsidian/Modals/Confirm.mjs +0 -72
- package/dist/lib/esm/obsidian/Modals/ModalBase.d.mts +0 -42
- package/dist/lib/esm/obsidian/Modals/ModalBase.mjs +0 -51
- package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +0 -53
- package/dist/lib/esm/obsidian/Modals/Prompt.mjs +0 -113
- package/dist/lib/esm/obsidian/Modals/SelectItem.d.mts +0 -43
- package/dist/lib/esm/obsidian/Modals/SelectItem.mjs +0 -64
- package/dist/lib/esm/obsidian/Modals/index.d.mts +0 -5
- package/dist/lib/esm/obsidian/Modals/index.mjs +0 -34
- package/dist/lib/esm/obsidian/MonkeyAround.mjs +0 -64
- package/dist/lib/esm/obsidian/ObsidianSettings.mjs +0 -32
- package/dist/lib/esm/obsidian/Pdf.mjs +0 -56
- package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.mjs +0 -73
- package/dist/lib/esm/obsidian/Plugin/PathSettings.d.mts +0 -43
- package/dist/lib/esm/obsidian/Plugin/PathSettings.mjs +0 -133
- package/dist/lib/esm/obsidian/Plugin/Plugin.mjs +0 -39
- package/dist/lib/esm/obsidian/Plugin/PluginBase.d.mts +0 -200
- package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +0 -363
- package/dist/lib/esm/obsidian/Plugin/PluginContext.mjs +0 -67
- package/dist/lib/esm/obsidian/Plugin/PluginId.mjs +0 -37
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +0 -186
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +0 -383
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +0 -148
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +0 -304
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsWrapper.d.mts +0 -25
- package/dist/lib/esm/obsidian/Plugin/PluginTypesBase.d.mts +0 -87
- package/dist/lib/esm/obsidian/Plugin/index.d.mts +0 -10
- package/dist/lib/esm/obsidian/Plugin/index.mjs +0 -44
- package/dist/lib/esm/obsidian/Queue.mjs +0 -99
- package/dist/lib/esm/obsidian/React/AppContext.mjs +0 -36
- package/dist/lib/esm/obsidian/React/index.d.mts +0 -1
- package/dist/lib/esm/obsidian/React/index.mjs +0 -26
- package/dist/lib/esm/obsidian/Reference.d.mts +0 -82
- package/dist/lib/esm/obsidian/Reference.mjs +0 -70
- package/dist/lib/esm/obsidian/RenameDeleteHandler.mjs +0 -775
- package/dist/lib/esm/obsidian/ResourceUrl.mjs +0 -33
- package/dist/lib/esm/obsidian/SettingEx.d.mts +0 -182
- package/dist/lib/esm/obsidian/SettingEx.mjs +0 -258
- package/dist/lib/esm/obsidian/SettingGroupEx.d.mts +0 -25
- package/dist/lib/esm/obsidian/SettingGroupEx.mjs +0 -48
- package/dist/lib/esm/obsidian/Validation.mjs +0 -48
- package/dist/lib/esm/obsidian/Vault.d.mts +0 -237
- package/dist/lib/esm/obsidian/Vault.mjs +0 -402
- package/dist/lib/esm/obsidian/VaultEx.d.mts +0 -36
- package/dist/lib/esm/obsidian/VaultEx.mjs +0 -98
- package/dist/lib/esm/obsidian/Workspace.mjs +0 -36
- package/dist/lib/esm/obsidian/i18n/CustomTypeOptionsBase.d.mts +0 -31
- package/dist/lib/esm/obsidian/i18n/CustomTypeOptionsBase.mjs +0 -23
- package/dist/lib/esm/obsidian/i18n/DefaultTranslationsBase.d.mts +0 -25
- package/dist/lib/esm/obsidian/i18n/DefaultTranslationsBase.mjs +0 -23
- package/obsidian/AsyncWithNotice/package.json +0 -6
- package/obsidian/AttachmentPath/package.json +0 -6
- package/obsidian/CodeBlockMarkdownInformation/package.json +0 -6
- package/obsidian/Commands/AbstractFileCommandBase/package.json +0 -6
- package/obsidian/Commands/CommandBase/package.json +0 -6
- package/obsidian/Commands/EditorCommandBase/package.json +0 -6
- package/obsidian/Commands/FileCommandBase/package.json +0 -6
- package/obsidian/Commands/FolderCommandBase/package.json +0 -6
- package/obsidian/Commands/NonEditorCommandBase/package.json +0 -6
- package/obsidian/Components/AsyncEventsComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/CheckboxComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/CodeHighlighterComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/DateComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/DateTimeComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/EmailComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/FileComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/MonthComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/MultipleDropdownComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/MultipleEmailComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/MultipleFileComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/MultipleTextComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/NumberComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/PasswordComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/SettingComponentWrapper/package.json +0 -6
- package/obsidian/Components/SettingComponents/TelephoneComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/TextBasedComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/TimeComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/TriStateCheckboxComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/TypedDropdownComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/TypedRangeTextComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/TypedTextComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/UrlComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/ValidatorComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking/package.json +0 -6
- package/obsidian/Components/SettingComponents/WeekComponent/package.json +0 -6
- package/obsidian/Components/SettingComponents/index/package.json +0 -6
- package/obsidian/Components/SettingComponents/package.json +0 -6
- package/obsidian/DataviewLink/package.json +0 -6
- package/obsidian/FileChange/package.json +0 -6
- package/obsidian/FileManager/package.json +0 -6
- package/obsidian/FileSystem/package.json +0 -6
- package/obsidian/FrontmatterLinkCacheWithOffsets/package.json +0 -6
- package/obsidian/MarkdownCodeBlockProcessor/package.json +0 -6
- package/obsidian/MarkdownView/package.json +0 -6
- package/obsidian/MetadataCache/package.json +0 -6
- package/obsidian/Modals/ModalBase/package.json +0 -6
- package/obsidian/Modals/SelectItem/package.json +0 -6
- package/obsidian/MonkeyAround/package.json +0 -6
- package/obsidian/ObsidianSettings/package.json +0 -6
- package/obsidian/Plugin/ObsidianPluginRepoPaths/package.json +0 -6
- package/obsidian/Plugin/PathSettings/package.json +0 -6
- package/obsidian/Plugin/PluginBase/package.json +0 -6
- package/obsidian/Plugin/PluginContext/package.json +0 -6
- package/obsidian/Plugin/PluginId/package.json +0 -6
- package/obsidian/Plugin/PluginSettingsManagerBase/package.json +0 -6
- package/obsidian/Plugin/PluginSettingsTabBase/package.json +0 -6
- package/obsidian/Plugin/PluginSettingsWrapper/package.json +0 -6
- package/obsidian/Plugin/PluginTypesBase/package.json +0 -6
- package/obsidian/React/AppContext/package.json +0 -6
- package/obsidian/RenameDeleteHandler/package.json +0 -6
- package/obsidian/ResourceUrl/package.json +0 -6
- package/obsidian/SettingEx/package.json +0 -6
- package/obsidian/SettingGroupEx/package.json +0 -6
- package/obsidian/VaultEx/package.json +0 -6
- package/obsidian/i18n/CustomTypeOptionsBase/package.json +0 -6
- package/obsidian/i18n/DefaultTranslationsBase/package.json +0 -6
- /package/dist/lib/cjs/{AbortController.d.cts → abort-controller.d.cts} +0 -0
- /package/dist/lib/cjs/{Array.d.cts → array.d.cts} +0 -0
- /package/dist/lib/cjs/{AsyncEvents.d.cts → async-events.d.cts} +0 -0
- /package/dist/lib/cjs/codemirror/{StateFieldSpec.d.cts → state-field-spec.d.cts} +0 -0
- /package/dist/lib/cjs/{CssClass.d.cts → css-class.d.cts} +0 -0
- /package/dist/lib/cjs/{DebugController.d.cts → debug-controller.d.cts} +0 -0
- /package/dist/lib/cjs/{Enum.d.cts → enum.d.cts} +0 -0
- /package/dist/lib/cjs/{Error.d.cts → error.d.cts} +0 -0
- /package/dist/lib/cjs/{Function.d.cts → function.d.cts} +0 -0
- /package/dist/lib/cjs/{Library.d.cts → library.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/data-array.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/extensions.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/inline-api.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/plugin-api.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/result.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/common.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/csv.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/inline-field.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/markdown-file.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/persister.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-entry.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-impl.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-manager.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-index/index.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-index/resolver.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-index/source.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-model/markdown.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-model/serialized/markdown.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-model/transferable.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-model/value.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/binaryop.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/context.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/field.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/functions.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/parse.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/index.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/main.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/query/engine.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/query/parse.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/query/query.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/settings.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/typings/obsidian-ex.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/typings/workers.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/export/markdown.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/lp-render.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/markdown.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/refreshable-view.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/render.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/calendar-view.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/inline-field-live-preview.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/inline-view.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/js-view.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/list-view.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/table-view.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/task-view.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/util/hash.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/util/locale.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/util/media.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/util/normalize.d.cts +0 -0
- /package/dist/lib/cjs/obsidian/{App.d.cts → app.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{CodeBlockMarkdownInformation.d.cts → code-block-markdown-information.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Commands/CommandBase.d.cts → commands/command-base.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Components/SettingComponents/SettingComponentWrapper.d.cts → components/setting-components/setting-component-wrapper.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Components/SettingComponents/TextBasedComponent.d.cts → components/setting-components/text-based-component.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Components/SettingComponents/ValueComponentWithChangeTracking.d.cts → components/setting-components/value-component-with-change-tracking.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Editor.d.cts → editor.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{FrontmatterLinkCacheWithOffsets.d.cts → frontmatter-link-cache-with-offsets.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Logger.d.cts → logger.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Loop.d.cts → loop.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{MarkdownView.d.cts → markdown-view.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Modals/Alert.d.cts → modals/alert.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Modals/Confirm.d.cts → modals/confirm.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{MonkeyAround.d.cts → monkey-around.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{ObsidianSettings.d.cts → obsidian-settings.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Pdf.d.cts → pdf.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Plugin/ObsidianPluginRepoPaths.d.cts → plugin/obsidian-plugin-repo-paths.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Plugin/PluginContext.d.cts → plugin/plugin-context.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Plugin/PluginId.d.cts → plugin/plugin-id.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Plugin/Plugin.d.cts → plugin/plugin.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Queue.d.cts → queue.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{React/AppContext.d.cts → react/app-context.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{RenameDeleteHandler.d.cts → rename-delete-handler.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{ResourceUrl.d.cts → resource-url.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Validation.d.cts → validation.d.cts} +0 -0
- /package/dist/lib/cjs/obsidian/{Workspace.d.cts → workspace.d.cts} +0 -0
- /package/dist/lib/cjs/{Path.d.cts → path.d.cts} +0 -0
- /package/dist/lib/cjs/{RegExp.d.cts → reg-exp.d.cts} +0 -0
- /package/dist/lib/cjs/{ScriptUtils → script-utils}/build.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/changeExtensionPlugin.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/copyToObsidianPluginsFolderPlugin.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/customEsbuildOptionsPlugin.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/esbuild/Dependency.d.cts → script-utils/bundlers/esbuild-impl/dependency.d.cts} +0 -0
- /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/fixEsmPlugin.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/fixSourceMapsPlugin.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/preprocessPlugin.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/renameCssPlugin.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/svelteWrapperPlugin.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/CodeGenerator.d.cts → script-utils/code-generator.d.cts} +0 -0
- /package/dist/lib/cjs/{ScriptUtils/format.d.cts → script-utils/formatters/dprint.d.cts} +0 -0
- /package/dist/lib/cjs/{ScriptUtils/spellcheck.d.cts → script-utils/linters/cspell.d.cts} +0 -0
- /package/dist/lib/cjs/{ScriptUtils/ESLint/eslint.config.d.cts → script-utils/linters/eslint-config.d.cts} +0 -0
- /package/dist/lib/cjs/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/@guardian__eslint-plugin-tsdoc-required.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/eslint-plugin-modules-newlines.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/eslint-plugin-verify-tsdoc.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/ESLint/ESLint.d.cts → script-utils/linters/eslint.d.cts} +0 -0
- /package/dist/lib/cjs/{ScriptUtils/markdownlint → script-utils/linters/markdownlint-types}/@types/markdownlint-cli2-config-schema.d.cts +0 -0
- /package/dist/lib/cjs/{ScriptUtils/NodeModules.d.cts → script-utils/node-modules.d.cts} +0 -0
- /package/dist/lib/cjs/{ScriptUtils/NpmPublish.d.cts → script-utils/npm-publish.d.cts} +0 -0
- /package/dist/lib/cjs/{ScriptUtils/NpmRun.d.cts → script-utils/npm-run.d.cts} +0 -0
- /package/dist/lib/cjs/{TwoWayMap.d.cts → two-way-map.d.cts} +0 -0
- /package/dist/lib/cjs/{TypeGuards.d.cts → type-guards.d.cts} +0 -0
- /package/dist/lib/cjs/{Type.d.cts → type.d.cts} +0 -0
- /package/dist/lib/cjs/{ValueProvider.d.cts → value-provider.d.cts} +0 -0
- /package/dist/lib/esm/{AbortController.d.mts → abort-controller.d.mts} +0 -0
- /package/dist/lib/esm/{Array.d.mts → array.d.mts} +0 -0
- /package/dist/lib/esm/{AsyncEvents.d.mts → async-events.d.mts} +0 -0
- /package/dist/lib/esm/codemirror/{StateFieldSpec.d.mts → state-field-spec.d.mts} +0 -0
- /package/dist/lib/esm/{DebugController.mjs → codemirror/state-field-spec.mjs} +0 -0
- /package/dist/lib/esm/{CssClass.d.mts → css-class.d.mts} +0 -0
- /package/dist/lib/esm/{DebugController.d.mts → debug-controller.d.mts} +0 -0
- /package/dist/lib/esm/{codemirror/StateFieldSpec.mjs → debug-controller.mjs} +0 -0
- /package/dist/lib/esm/{Enum.d.mts → enum.d.mts} +0 -0
- /package/dist/lib/esm/{Error.d.mts → error.d.mts} +0 -0
- /package/dist/lib/esm/{Function.d.mts → function.d.mts} +0 -0
- /package/dist/lib/esm/{Library.d.mts → library.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/data-array.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/extensions.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/inline-api.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/plugin-api.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/result.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/common.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/csv.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/inline-field.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/markdown-file.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/persister.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-entry.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-impl.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-manager.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-index/index.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-index/resolver.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-index/source.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-model/markdown.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-model/serialized/markdown.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-model/transferable.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-model/value.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/binaryop.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/context.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/field.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/functions.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/parse.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/index.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/main.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/query/engine.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/query/parse.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/query/query.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/settings.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/typings/obsidian-ex.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/typings/workers.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/export/markdown.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/lp-render.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/markdown.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/refreshable-view.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/render.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/calendar-view.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/inline-field-live-preview.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/inline-view.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/js-view.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/list-view.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/table-view.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/task-view.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/util/hash.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/util/locale.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/util/media.d.mts +0 -0
- /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/util/normalize.d.mts +0 -0
- /package/dist/lib/esm/obsidian/{App.d.mts → app.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{CodeBlockMarkdownInformation.d.mts → code-block-markdown-information.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{CodeBlockMarkdownInformation.mjs → code-block-markdown-information.mjs} +0 -0
- /package/dist/lib/esm/obsidian/{Commands/CommandBase.d.mts → commands/command-base.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Components/SettingComponents/SettingComponentWrapper.d.mts → components/setting-components/setting-component-wrapper.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Components/SettingComponents/TextBasedComponent.d.mts → components/setting-components/text-based-component.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Components/SettingComponents/ValueComponentWithChangeTracking.d.mts → components/setting-components/value-component-with-change-tracking.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Components/SettingComponents/ValueComponentWithChangeTracking.mjs → components/setting-components/value-component-with-change-tracking.mjs} +0 -0
- /package/dist/lib/esm/obsidian/{Editor.d.mts → editor.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{FrontmatterLinkCacheWithOffsets.d.mts → frontmatter-link-cache-with-offsets.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Logger.d.mts → logger.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Loop.d.mts → loop.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{MarkdownView.d.mts → markdown-view.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Modals/Alert.d.mts → modals/alert.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Modals/Confirm.d.mts → modals/confirm.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{MonkeyAround.d.mts → monkey-around.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{ObsidianSettings.d.mts → obsidian-settings.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Pdf.d.mts → pdf.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Plugin/ObsidianPluginRepoPaths.d.mts → plugin/obsidian-plugin-repo-paths.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Plugin/PluginContext.d.mts → plugin/plugin-context.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Plugin/PluginId.d.mts → plugin/plugin-id.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Plugin/PluginSettingsWrapper.mjs → plugin/plugin-settings-wrapper.mjs} +0 -0
- /package/dist/lib/esm/obsidian/{Plugin/PluginTypesBase.mjs → plugin/plugin-types-base.mjs} +0 -0
- /package/dist/lib/esm/obsidian/{Plugin/Plugin.d.mts → plugin/plugin.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Queue.d.mts → queue.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{React/AppContext.d.mts → react/app-context.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{RenameDeleteHandler.d.mts → rename-delete-handler.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{ResourceUrl.d.mts → resource-url.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Validation.d.mts → validation.d.mts} +0 -0
- /package/dist/lib/esm/obsidian/{Workspace.d.mts → workspace.d.mts} +0 -0
- /package/dist/lib/esm/{Path.d.mts → path.d.mts} +0 -0
- /package/dist/lib/esm/{RegExp.d.mts → reg-exp.d.mts} +0 -0
- /package/dist/lib/esm/{ScriptUtils → script-utils}/build.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/changeExtensionPlugin.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/copyToObsidianPluginsFolderPlugin.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/customEsbuildOptionsPlugin.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/esbuild/Dependency.d.mts → script-utils/bundlers/esbuild-impl/dependency.d.mts} +0 -0
- /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/fixEsmPlugin.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/fixSourceMapsPlugin.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/preprocessPlugin.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/renameCssPlugin.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/svelteWrapperPlugin.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/CodeGenerator.d.mts → script-utils/code-generator.d.mts} +0 -0
- /package/dist/lib/esm/{ScriptUtils/format.d.mts → script-utils/formatters/dprint.d.mts} +0 -0
- /package/dist/lib/esm/{ScriptUtils/spellcheck.d.mts → script-utils/linters/cspell.d.mts} +0 -0
- /package/dist/lib/esm/{ScriptUtils/ESLint/eslint.config.d.mts → script-utils/linters/eslint-config.d.mts} +0 -0
- /package/dist/lib/esm/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/@guardian__eslint-plugin-tsdoc-required.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/eslint-plugin-modules-newlines.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/eslint-plugin-verify-tsdoc.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/ESLint/ESLint.d.mts → script-utils/linters/eslint.d.mts} +0 -0
- /package/dist/lib/esm/{ScriptUtils/markdownlint → script-utils/linters/markdownlint-types}/@types/markdownlint-cli2-config-schema.d.mts +0 -0
- /package/dist/lib/esm/{ScriptUtils/NodeModules.d.mts → script-utils/node-modules.d.mts} +0 -0
- /package/dist/lib/esm/{ScriptUtils/NpmPublish.d.mts → script-utils/npm-publish.d.mts} +0 -0
- /package/dist/lib/esm/{ScriptUtils/NpmRun.d.mts → script-utils/npm-run.d.mts} +0 -0
- /package/dist/lib/esm/{TwoWayMap.d.mts → two-way-map.d.mts} +0 -0
- /package/dist/lib/esm/{TypeGuards.d.mts → type-guards.d.mts} +0 -0
- /package/dist/lib/esm/{Type.d.mts → type.d.mts} +0 -0
- /package/dist/lib/esm/{ValueProvider.d.mts → value-provider.d.mts} +0 -0
|
@@ -0,0 +1,837 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function initCjs() {
|
|
7
|
+
const globalThisRecord = globalThis;
|
|
8
|
+
globalThisRecord['__name'] ??= name;
|
|
9
|
+
const originalRequire = require;
|
|
10
|
+
if (originalRequire && !originalRequire.__isPatched) {
|
|
11
|
+
// eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
|
|
12
|
+
require = Object.assign(
|
|
13
|
+
(id) => requirePatched(id),
|
|
14
|
+
originalRequire,
|
|
15
|
+
{
|
|
16
|
+
__isPatched: true
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const newFuncs = {
|
|
22
|
+
__extractDefault() {
|
|
23
|
+
return extractDefault;
|
|
24
|
+
},
|
|
25
|
+
process() {
|
|
26
|
+
const browserProcess = {
|
|
27
|
+
browser: true,
|
|
28
|
+
cwd() {
|
|
29
|
+
return '/';
|
|
30
|
+
},
|
|
31
|
+
env: {},
|
|
32
|
+
platform: 'android'
|
|
33
|
+
};
|
|
34
|
+
return browserProcess;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
for (const key of Object.keys(newFuncs)) {
|
|
39
|
+
globalThisRecord[key] ??= newFuncs[key]?.();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function name(obj) {
|
|
43
|
+
return obj;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function extractDefault(module) {
|
|
47
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
51
|
+
'obsidian',
|
|
52
|
+
'@codemirror/autocomplete',
|
|
53
|
+
'@codemirror/collab',
|
|
54
|
+
'@codemirror/commands',
|
|
55
|
+
'@codemirror/language',
|
|
56
|
+
'@codemirror/lint',
|
|
57
|
+
'@codemirror/search',
|
|
58
|
+
'@codemirror/state',
|
|
59
|
+
'@codemirror/text',
|
|
60
|
+
'@codemirror/view',
|
|
61
|
+
'@lezer/common',
|
|
62
|
+
'@lezer/lr',
|
|
63
|
+
'@lezer/highlight'];
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
67
|
+
'@codemirror/closebrackets',
|
|
68
|
+
'@codemirror/comment',
|
|
69
|
+
'@codemirror/fold',
|
|
70
|
+
'@codemirror/gutter',
|
|
71
|
+
'@codemirror/highlight',
|
|
72
|
+
'@codemirror/history',
|
|
73
|
+
'@codemirror/matchbrackets',
|
|
74
|
+
'@codemirror/panel',
|
|
75
|
+
'@codemirror/rangeset',
|
|
76
|
+
'@codemirror/rectangular-selection',
|
|
77
|
+
'@codemirror/stream-parser',
|
|
78
|
+
'@codemirror/tooltip'];
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
function requirePatched(id) {
|
|
82
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
|
|
83
|
+
return originalRequire?.(id);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
|
|
87
|
+
if (globalThis?.app?.isMobile) {
|
|
88
|
+
if (id === 'process' || id === 'node:process') {
|
|
89
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
90
|
+
return globalThis.process;
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
const module = originalRequire?.(id);
|
|
94
|
+
if (module) {
|
|
95
|
+
return extractDefault(module);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
100
|
+
return {};
|
|
101
|
+
}
|
|
102
|
+
})();
|
|
103
|
+
|
|
104
|
+
"use strict";
|
|
105
|
+
var __defProp = Object.defineProperty;
|
|
106
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
107
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
108
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
109
|
+
var __export = (target, all) => {
|
|
110
|
+
for (var name in all)
|
|
111
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
112
|
+
};
|
|
113
|
+
var __copyProps = (to, from, except, desc) => {
|
|
114
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
115
|
+
for (let key of __getOwnPropNames(from))
|
|
116
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
117
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
118
|
+
}
|
|
119
|
+
return to;
|
|
120
|
+
};
|
|
121
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
122
|
+
var rename_delete_handler_exports = {};
|
|
123
|
+
__export(rename_delete_handler_exports, {
|
|
124
|
+
EmptyFolderBehavior: () => EmptyFolderBehavior,
|
|
125
|
+
registerRenameDeleteHandlers: () => registerRenameDeleteHandlers
|
|
126
|
+
});
|
|
127
|
+
module.exports = __toCommonJS(rename_delete_handler_exports);
|
|
128
|
+
var import_i18next = require('i18next');
|
|
129
|
+
var import_obsidian = require('obsidian');
|
|
130
|
+
var import_implementations = require('obsidian-typings/implementations');
|
|
131
|
+
var import_abort_controller = require('../abort-controller.cjs');
|
|
132
|
+
var import_array = require('../array.cjs');
|
|
133
|
+
var import_debug = require('../debug.cjs');
|
|
134
|
+
var import_object_utils = require('../object-utils.cjs');
|
|
135
|
+
var import_path = require('../path.cjs');
|
|
136
|
+
var import_app = require('./app.cjs');
|
|
137
|
+
var import_attachment_path = require('./attachment-path.cjs');
|
|
138
|
+
var import_file_system = require('./file-system.cjs');
|
|
139
|
+
var import_link = require('./link.cjs');
|
|
140
|
+
var import_metadata_cache = require('./metadata-cache.cjs');
|
|
141
|
+
var import_monkey_around = require('./monkey-around.cjs');
|
|
142
|
+
var import_queue = require('./queue.cjs');
|
|
143
|
+
var import_vault_delete = require('./vault-delete.cjs');
|
|
144
|
+
var import_vault = require('./vault.cjs');
|
|
145
|
+
var EmptyFolderBehavior = /* @__PURE__ */ ((EmptyFolderBehavior2) => {
|
|
146
|
+
EmptyFolderBehavior2["Delete"] = "Delete";
|
|
147
|
+
EmptyFolderBehavior2["DeleteWithEmptyParents"] = "DeleteWithEmptyParents";
|
|
148
|
+
EmptyFolderBehavior2["Keep"] = "Keep";
|
|
149
|
+
return EmptyFolderBehavior2;
|
|
150
|
+
})(EmptyFolderBehavior || {});
|
|
151
|
+
class DeleteHandler {
|
|
152
|
+
constructor(app, file, abortSignal, settingsManager, deletedMetadataCacheMap) {
|
|
153
|
+
this.app = app;
|
|
154
|
+
this.file = file;
|
|
155
|
+
this.abortSignal = abortSignal;
|
|
156
|
+
this.settingsManager = settingsManager;
|
|
157
|
+
this.deletedMetadataCacheMap = deletedMetadataCacheMap;
|
|
158
|
+
}
|
|
159
|
+
async handle() {
|
|
160
|
+
this.abortSignal.throwIfAborted();
|
|
161
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:handleDelete")(`Handle Delete ${this.file.path}`);
|
|
162
|
+
if (!(0, import_file_system.isNote)(this.app, this.file)) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const settings = this.settingsManager.getSettings();
|
|
166
|
+
if (settings.isPathIgnored?.(this.file.path)) {
|
|
167
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:handleDelete")(`Skipping delete handler of ${this.file.path} as the path is ignored.`);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const parentFolderPaths = /* @__PURE__ */ new Set([(0, import_path.dirname)(this.file.path)]);
|
|
171
|
+
if (settings.shouldHandleDeletions) {
|
|
172
|
+
const cache = this.deletedMetadataCacheMap.get(this.file.path);
|
|
173
|
+
this.deletedMetadataCacheMap.delete(this.file.path);
|
|
174
|
+
if (cache) {
|
|
175
|
+
const links = (0, import_metadata_cache.getAllLinks)(cache);
|
|
176
|
+
for (const link of links) {
|
|
177
|
+
const attachmentFile = (0, import_link.extractLinkFile)(this.app, link, this.file.path);
|
|
178
|
+
if (!attachmentFile) {
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (this.settingsManager.isNoteEx(attachmentFile.path)) {
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
parentFolderPaths.add(attachmentFile.parent?.path ?? "");
|
|
185
|
+
await (0, import_vault_delete.deleteIfNotUsed)(this.app, attachmentFile, this.file.path, false, settings.emptyFolderBehavior !== "Keep" /* Keep */);
|
|
186
|
+
this.abortSignal.throwIfAborted();
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
parentFolderPaths.delete("");
|
|
191
|
+
await cleanupParentFolders(this.app, this.settingsManager.getSettings(), Array.from(parentFolderPaths));
|
|
192
|
+
this.abortSignal.throwIfAborted();
|
|
193
|
+
if (!settings.shouldHandleDeletions) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const attachmentFolderPath = await (0, import_attachment_path.getAttachmentFolderPath)(this.app, this.file.path, import_attachment_path.AttachmentPathContext.DeleteNote);
|
|
197
|
+
const attachmentFolder = (0, import_file_system.getFolderOrNull)(this.app, attachmentFolderPath);
|
|
198
|
+
if (!attachmentFolder) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (!await (0, import_attachment_path.hasOwnAttachmentFolder)(this.app, this.file.path, import_attachment_path.AttachmentPathContext.DeleteNote)) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
this.abortSignal.throwIfAborted();
|
|
205
|
+
await (0, import_vault_delete.deleteIfNotUsed)(this.app, attachmentFolder, this.file.path, false, settings.emptyFolderBehavior !== "Keep" /* Keep */);
|
|
206
|
+
this.abortSignal.throwIfAborted();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
class HandledRenames {
|
|
210
|
+
map = /* @__PURE__ */ new Map();
|
|
211
|
+
add(oldPath, newPath) {
|
|
212
|
+
this.map.set(this.keyToString(oldPath, newPath), { newPath, oldPath });
|
|
213
|
+
}
|
|
214
|
+
delete(oldPath, newPath) {
|
|
215
|
+
this.map.delete(this.keyToString(oldPath, newPath));
|
|
216
|
+
}
|
|
217
|
+
has(oldPath, newPath) {
|
|
218
|
+
return this.map.has(this.keyToString(oldPath, newPath));
|
|
219
|
+
}
|
|
220
|
+
keys() {
|
|
221
|
+
return this.map.values();
|
|
222
|
+
}
|
|
223
|
+
keyToString(oldPath, newPath) {
|
|
224
|
+
return `${oldPath} -> ${newPath}`;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
class MetadataDeletedHandler {
|
|
228
|
+
constructor(app, file, prevCache, settingsManager, deletedMetadataCacheMap) {
|
|
229
|
+
this.app = app;
|
|
230
|
+
this.file = file;
|
|
231
|
+
this.prevCache = prevCache;
|
|
232
|
+
this.settingsManager = settingsManager;
|
|
233
|
+
this.deletedMetadataCacheMap = deletedMetadataCacheMap;
|
|
234
|
+
}
|
|
235
|
+
handle() {
|
|
236
|
+
const settings = this.settingsManager.getSettings();
|
|
237
|
+
if (!settings.shouldHandleDeletions) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (settings.isPathIgnored?.(this.file.path)) {
|
|
241
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:handleMetadataDeleted")(`Skipping metadata delete handler of ${this.file.path} as the path is ignored.`);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
if ((0, import_file_system.isMarkdownFile)(this.app, this.file) && this.prevCache) {
|
|
245
|
+
this.deletedMetadataCacheMap.set(this.file.path, this.prevCache);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
class Registry {
|
|
250
|
+
constructor(plugin, settingsBuilder, settingsManager) {
|
|
251
|
+
this.plugin = plugin;
|
|
252
|
+
this.settingsBuilder = settingsBuilder;
|
|
253
|
+
this.settingsManager = settingsManager;
|
|
254
|
+
this.app = plugin.app;
|
|
255
|
+
this.pluginId = plugin.manifest.id;
|
|
256
|
+
this.abortSignal = plugin.abortSignal ?? (0, import_abort_controller.abortSignalNever)();
|
|
257
|
+
}
|
|
258
|
+
abortSignal;
|
|
259
|
+
app;
|
|
260
|
+
deletedMetadataCacheMap = /* @__PURE__ */ new Map();
|
|
261
|
+
handledRenames = new HandledRenames();
|
|
262
|
+
interruptedRenamesMap = /* @__PURE__ */ new Map();
|
|
263
|
+
pluginId;
|
|
264
|
+
register() {
|
|
265
|
+
const renameDeleteHandlersMap = this.settingsManager.renameDeleteHandlersMap;
|
|
266
|
+
renameDeleteHandlersMap.set(this.pluginId, this.settingsBuilder);
|
|
267
|
+
this.logRegisteredHandlers();
|
|
268
|
+
this.plugin.register(() => {
|
|
269
|
+
renameDeleteHandlersMap.delete(this.pluginId);
|
|
270
|
+
this.logRegisteredHandlers();
|
|
271
|
+
});
|
|
272
|
+
this.plugin.registerEvent(this.app.vault.on("delete", this.handleDelete.bind(this)));
|
|
273
|
+
this.plugin.registerEvent(this.app.vault.on("rename", this.handleRename.bind(this)));
|
|
274
|
+
this.plugin.registerEvent(this.app.metadataCache.on("deleted", this.handleMetadataDeleted.bind(this)));
|
|
275
|
+
(0, import_monkey_around.registerPatch)(this.plugin, this.app.fileManager, {
|
|
276
|
+
runAsyncLinkUpdate: (next) => {
|
|
277
|
+
return Object.assign((linkUpdatesHandler) => this.runAsyncLinkUpdate(next, linkUpdatesHandler), { renameDeleteHandlerPatched: true });
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
handleDelete(file) {
|
|
282
|
+
if (!this.shouldInvokeHandler()) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
(0, import_queue.addToQueue)({
|
|
286
|
+
app: this.app,
|
|
287
|
+
operationFn: (abortSignal) => new DeleteHandler(this.app, file, abortSignal, this.settingsManager, this.deletedMetadataCacheMap).handle(),
|
|
288
|
+
operationName: (0, import_i18next.t)(($) => $.obsidianDevUtils.renameDeleteHandler.handleDelete, { filePath: file.path })
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
handleMetadataDeleted(file, prevCache) {
|
|
292
|
+
if (!this.shouldInvokeHandler()) {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
new MetadataDeletedHandler(this.app, file, prevCache, this.settingsManager, this.deletedMetadataCacheMap).handle();
|
|
296
|
+
}
|
|
297
|
+
handleRename(file, oldPath) {
|
|
298
|
+
if (!this.shouldInvokeHandler()) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (!(0, import_file_system.isFile)(file)) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const newPath = file.path;
|
|
305
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:handleRename")(`Handle Rename ${oldPath} -> ${newPath}`);
|
|
306
|
+
if (this.handledRenames.has(oldPath, newPath)) {
|
|
307
|
+
this.handledRenames.delete(oldPath, newPath);
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const settings = this.settingsManager.getSettings();
|
|
311
|
+
if (!settings.shouldHandleRenames) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
if (settings.isPathIgnored?.(oldPath)) {
|
|
315
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:handleRename")(`Skipping rename handler of old path ${oldPath} as the path is ignored.`);
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
if (settings.isPathIgnored?.(newPath)) {
|
|
319
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:handleRename")(`Skipping rename handler of new path ${newPath} as the path is ignored.`);
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
const oldCache = this.app.metadataCache.getCache(oldPath) ?? this.app.metadataCache.getCache(newPath);
|
|
323
|
+
const oldPathBacklinksMap = (0, import_metadata_cache.getBacklinksForFileOrPath)(this.app, oldPath).data;
|
|
324
|
+
(0, import_queue.addToQueue)({
|
|
325
|
+
abortSignal: this.abortSignal,
|
|
326
|
+
app: this.app,
|
|
327
|
+
operationFn: (abortSignal) => new RenameHandler({
|
|
328
|
+
abortSignal,
|
|
329
|
+
app: this.app,
|
|
330
|
+
handledRenames: this.handledRenames,
|
|
331
|
+
interruptedRenamesMap: this.interruptedRenamesMap,
|
|
332
|
+
newPath,
|
|
333
|
+
oldCache,
|
|
334
|
+
oldPath,
|
|
335
|
+
oldPathBacklinksMap,
|
|
336
|
+
settingsManager: this.settingsManager
|
|
337
|
+
}).handle(),
|
|
338
|
+
operationName: (0, import_i18next.t)(($) => $.obsidianDevUtils.renameDeleteHandler.handleRename, { newPath, oldPath })
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
logRegisteredHandlers() {
|
|
342
|
+
const renameDeleteHandlersMap = this.settingsManager.renameDeleteHandlersMap;
|
|
343
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:logRegisteredHandlers")(
|
|
344
|
+
`Plugins with registered rename/delete handlers: ${JSON.stringify(Array.from(renameDeleteHandlersMap.keys()))}`
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
async runAsyncLinkUpdate(next, linkUpdatesHandler) {
|
|
348
|
+
if (next.renameDeleteHandlerPatched) {
|
|
349
|
+
await next.call(this.app.fileManager, linkUpdatesHandler);
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
await next.call(this.app.fileManager, (linkUpdates) => this.wrapLinkUpdatesHandler(linkUpdates, linkUpdatesHandler));
|
|
353
|
+
}
|
|
354
|
+
shouldInvokeHandler() {
|
|
355
|
+
const pluginId = this.plugin.manifest.id;
|
|
356
|
+
const renameDeleteHandlersMap = this.settingsManager.renameDeleteHandlersMap;
|
|
357
|
+
const mainPluginId = Array.from(renameDeleteHandlersMap.keys())[0];
|
|
358
|
+
return mainPluginId === pluginId;
|
|
359
|
+
}
|
|
360
|
+
async wrapLinkUpdatesHandler(linkUpdates, linkUpdatesHandler) {
|
|
361
|
+
let isRenameCalled = false;
|
|
362
|
+
const eventRef = this.app.vault.on("rename", () => {
|
|
363
|
+
isRenameCalled = true;
|
|
364
|
+
});
|
|
365
|
+
try {
|
|
366
|
+
await linkUpdatesHandler(linkUpdates);
|
|
367
|
+
} finally {
|
|
368
|
+
this.app.vault.offref(eventRef);
|
|
369
|
+
}
|
|
370
|
+
const settings = this.settingsManager.getSettings();
|
|
371
|
+
if (!isRenameCalled || !settings.shouldHandleRenames) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
(0, import_array.filterInPlace)(
|
|
375
|
+
linkUpdates,
|
|
376
|
+
(linkUpdate) => {
|
|
377
|
+
if (settings.isPathIgnored?.(linkUpdate.sourceFile.path)) {
|
|
378
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:runAsyncLinkUpdate")(
|
|
379
|
+
`Roll back to default link update of source file ${linkUpdate.sourceFile.path} as the path is ignored.`
|
|
380
|
+
);
|
|
381
|
+
return true;
|
|
382
|
+
}
|
|
383
|
+
if (settings.isPathIgnored?.(linkUpdate.resolvedFile.path)) {
|
|
384
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:runAsyncLinkUpdate")(
|
|
385
|
+
`Roll back to default link update of resolved file ${linkUpdate.resolvedFile.path} as the path is ignored.`
|
|
386
|
+
);
|
|
387
|
+
return true;
|
|
388
|
+
}
|
|
389
|
+
if (!this.app.internalPlugins.getEnabledPluginById(import_implementations.InternalPluginName.Canvas)) {
|
|
390
|
+
return false;
|
|
391
|
+
}
|
|
392
|
+
if (this.app.plugins.getPlugin("backlink-cache")) {
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
if (linkUpdate.sourceFile.extension === import_file_system.CANVAS_FILE_EXTENSION) {
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
if (linkUpdate.resolvedFile.extension === import_file_system.CANVAS_FILE_EXTENSION) {
|
|
399
|
+
return true;
|
|
400
|
+
}
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
403
|
+
);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
class SettingsManager {
|
|
407
|
+
constructor(app) {
|
|
408
|
+
this.app = app;
|
|
409
|
+
this.renameDeleteHandlersMap = (0, import_app.getObsidianDevUtilsState)(app, "renameDeleteHandlersMap", /* @__PURE__ */ new Map()).value;
|
|
410
|
+
}
|
|
411
|
+
renameDeleteHandlersMap;
|
|
412
|
+
getSettings() {
|
|
413
|
+
const settingsBuilders = Array.from(this.renameDeleteHandlersMap.values()).reverse();
|
|
414
|
+
const settings = {};
|
|
415
|
+
settings.isNote = (path) => (0, import_file_system.isNote)(this.app, path);
|
|
416
|
+
settings.isPathIgnored = () => false;
|
|
417
|
+
for (const settingsBuilder of settingsBuilders) {
|
|
418
|
+
const newSettings = settingsBuilder();
|
|
419
|
+
settings.shouldDeleteConflictingAttachments ||= newSettings.shouldDeleteConflictingAttachments ?? false;
|
|
420
|
+
if (newSettings.emptyFolderBehavior) {
|
|
421
|
+
settings.emptyFolderBehavior ??= newSettings.emptyFolderBehavior;
|
|
422
|
+
}
|
|
423
|
+
settings.shouldHandleDeletions ||= newSettings.shouldHandleDeletions ?? false;
|
|
424
|
+
settings.shouldHandleRenames ||= newSettings.shouldHandleRenames ?? false;
|
|
425
|
+
settings.shouldRenameAttachmentFiles ||= newSettings.shouldRenameAttachmentFiles ?? false;
|
|
426
|
+
settings.shouldRenameAttachmentFolder ||= newSettings.shouldRenameAttachmentFolder ?? false;
|
|
427
|
+
settings.shouldUpdateFileNameAliases ||= newSettings.shouldUpdateFileNameAliases ?? false;
|
|
428
|
+
const isPathIgnored = settings.isPathIgnored;
|
|
429
|
+
settings.isPathIgnored = (path) => isPathIgnored(path) || (newSettings.isPathIgnored?.(path) ?? false);
|
|
430
|
+
const currentIsNote = settings.isNote;
|
|
431
|
+
settings.isNote = (path) => currentIsNote(path) && (newSettings.isNote?.(path) ?? true);
|
|
432
|
+
}
|
|
433
|
+
settings.emptyFolderBehavior ??= "Keep" /* Keep */;
|
|
434
|
+
return settings;
|
|
435
|
+
}
|
|
436
|
+
isNoteEx(path) {
|
|
437
|
+
const settings = this.getSettings();
|
|
438
|
+
return settings.isNote?.(path) ?? false;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
class RenameHandler {
|
|
442
|
+
abortSignal;
|
|
443
|
+
app;
|
|
444
|
+
handledRenames;
|
|
445
|
+
interruptedCombinedBacklinksMap;
|
|
446
|
+
interruptedRenamesMap;
|
|
447
|
+
newPath;
|
|
448
|
+
oldCache;
|
|
449
|
+
oldPath;
|
|
450
|
+
oldPathBacklinksMap;
|
|
451
|
+
oldPathLinks;
|
|
452
|
+
settingsManager;
|
|
453
|
+
constructor(params) {
|
|
454
|
+
this.app = params.app;
|
|
455
|
+
this.oldPath = params.oldPath;
|
|
456
|
+
this.newPath = params.newPath;
|
|
457
|
+
this.oldPathBacklinksMap = params.oldPathBacklinksMap;
|
|
458
|
+
this.oldCache = params.oldCache;
|
|
459
|
+
this.abortSignal = params.abortSignal;
|
|
460
|
+
this.settingsManager = params.settingsManager;
|
|
461
|
+
this.interruptedRenamesMap = params.interruptedRenamesMap;
|
|
462
|
+
this.oldPathLinks = this.oldCache ? (0, import_metadata_cache.getAllLinks)(this.oldCache) : [];
|
|
463
|
+
this.handledRenames = params.handledRenames;
|
|
464
|
+
this.interruptedCombinedBacklinksMap = params.interruptedCombinedBacklinksMap ?? /* @__PURE__ */ new Map();
|
|
465
|
+
}
|
|
466
|
+
async handle() {
|
|
467
|
+
if (this.oldPath === this.newPath) {
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
this.abortSignal.throwIfAborted();
|
|
471
|
+
await this.continueInterruptedRenames();
|
|
472
|
+
this.abortSignal.throwIfAborted();
|
|
473
|
+
await this.refreshLinks();
|
|
474
|
+
this.abortSignal.throwIfAborted();
|
|
475
|
+
if (await this.handleCaseCollision()) {
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
this.abortSignal.throwIfAborted();
|
|
479
|
+
const renamedFilePaths = (0, import_app.getObsidianDevUtilsState)(this.app, "renamedFilePaths", /* @__PURE__ */ new Set()).value;
|
|
480
|
+
const renamedLinks = (0, import_app.getObsidianDevUtilsState)(this.app, "renamedLinkPaths", /* @__PURE__ */ new Set()).value;
|
|
481
|
+
try {
|
|
482
|
+
const renameMap = new RenameMap({
|
|
483
|
+
abortSignal: this.abortSignal,
|
|
484
|
+
app: this.app,
|
|
485
|
+
newPath: this.newPath,
|
|
486
|
+
oldCache: this.oldCache,
|
|
487
|
+
oldPath: this.oldPath,
|
|
488
|
+
settingsManager: this.settingsManager
|
|
489
|
+
});
|
|
490
|
+
await renameMap.fill();
|
|
491
|
+
this.abortSignal.throwIfAborted();
|
|
492
|
+
const combinedBacklinksMap = /* @__PURE__ */ new Map();
|
|
493
|
+
renameMap.initOriginalLinksMap(combinedBacklinksMap);
|
|
494
|
+
renameMap.initBacklinksMap(this.oldPathBacklinksMap, combinedBacklinksMap, this.oldPath);
|
|
495
|
+
for (const attachmentOldPath of renameMap.keys()) {
|
|
496
|
+
if (attachmentOldPath === this.oldPath) {
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
const attachmentOldPathBacklinksMap = (await (0, import_metadata_cache.getBacklinksForFileSafe)(this.app, attachmentOldPath)).data;
|
|
500
|
+
this.abortSignal.throwIfAborted();
|
|
501
|
+
renameMap.initBacklinksMap(attachmentOldPathBacklinksMap, combinedBacklinksMap, attachmentOldPath);
|
|
502
|
+
}
|
|
503
|
+
const parentFolderPaths = /* @__PURE__ */ new Set();
|
|
504
|
+
for (const [oldAttachmentPath, newAttachmentPath] of renameMap.entries()) {
|
|
505
|
+
if (oldAttachmentPath !== this.oldPath) {
|
|
506
|
+
const fixedNewAttachmentPath = await this.renameHandled(oldAttachmentPath, newAttachmentPath);
|
|
507
|
+
this.abortSignal.throwIfAborted();
|
|
508
|
+
renameMap.set(oldAttachmentPath, fixedNewAttachmentPath);
|
|
509
|
+
}
|
|
510
|
+
if (!this.settingsManager.isNoteEx(oldAttachmentPath)) {
|
|
511
|
+
parentFolderPaths.add((0, import_path.dirname)(oldAttachmentPath));
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
await cleanupParentFolders(this.app, this.settingsManager.getSettings(), Array.from(parentFolderPaths));
|
|
515
|
+
this.abortSignal.throwIfAborted();
|
|
516
|
+
const settings = this.settingsManager.getSettings();
|
|
517
|
+
for (const [newBacklinkPath, linkJsonToPathMap] of Array.from(combinedBacklinksMap.entries()).concat(
|
|
518
|
+
Array.from(this.interruptedCombinedBacklinksMap.entries())
|
|
519
|
+
)) {
|
|
520
|
+
let linkIndex = 0;
|
|
521
|
+
await (0, import_link.editLinks)(this.app, newBacklinkPath, (link) => {
|
|
522
|
+
linkIndex++;
|
|
523
|
+
const oldAttachmentPath = linkJsonToPathMap.get((0, import_object_utils.toJson)(link));
|
|
524
|
+
if (!oldAttachmentPath) {
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
const newAttachmentPath = renameMap.get(oldAttachmentPath) ?? oldAttachmentPath;
|
|
528
|
+
renamedFilePaths.add(newBacklinkPath);
|
|
529
|
+
renamedLinks.add(`${newBacklinkPath}//${String(linkIndex)}`);
|
|
530
|
+
return (0, import_link.updateLink)((0, import_object_utils.normalizeOptionalProperties)({
|
|
531
|
+
app: this.app,
|
|
532
|
+
link,
|
|
533
|
+
newSourcePathOrFile: newBacklinkPath,
|
|
534
|
+
newTargetPathOrFile: newAttachmentPath,
|
|
535
|
+
oldTargetPathOrFile: oldAttachmentPath,
|
|
536
|
+
shouldUpdateFileNameAlias: settings.shouldUpdateFileNameAliases
|
|
537
|
+
}));
|
|
538
|
+
}, {
|
|
539
|
+
shouldFailOnMissingFile: false
|
|
540
|
+
});
|
|
541
|
+
this.abortSignal.throwIfAborted();
|
|
542
|
+
}
|
|
543
|
+
if ((0, import_file_system.isNote)(this.app, this.newPath)) {
|
|
544
|
+
await (0, import_link.updateLinksInFile)((0, import_object_utils.normalizeOptionalProperties)({
|
|
545
|
+
app: this.app,
|
|
546
|
+
newSourcePathOrFile: this.newPath,
|
|
547
|
+
oldSourcePathOrFile: this.oldPath,
|
|
548
|
+
shouldFailOnMissingFile: false,
|
|
549
|
+
shouldUpdateFileNameAlias: settings.shouldUpdateFileNameAliases
|
|
550
|
+
}));
|
|
551
|
+
this.abortSignal.throwIfAborted();
|
|
552
|
+
}
|
|
553
|
+
if (!(0, import_file_system.getFileOrNull)(this.app, this.newPath)) {
|
|
554
|
+
let interruptedRenames = this.interruptedRenamesMap.get(this.newPath);
|
|
555
|
+
if (!interruptedRenames) {
|
|
556
|
+
interruptedRenames = [];
|
|
557
|
+
this.interruptedRenamesMap.set(this.newPath, interruptedRenames);
|
|
558
|
+
}
|
|
559
|
+
interruptedRenames.push({
|
|
560
|
+
combinedBacklinksMap,
|
|
561
|
+
oldPath: this.oldPath
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
} finally {
|
|
565
|
+
const orphanKeys = Array.from(this.handledRenames.keys());
|
|
566
|
+
(0, import_queue.addToQueue)({
|
|
567
|
+
abortSignal: this.abortSignal,
|
|
568
|
+
app: this.app,
|
|
569
|
+
operationFn: () => {
|
|
570
|
+
for (const orphanKey of orphanKeys) {
|
|
571
|
+
this.handledRenames.delete(orphanKey.oldPath, orphanKey.newPath);
|
|
572
|
+
}
|
|
573
|
+
if (renamedLinks.size === 0) {
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
576
|
+
new import_obsidian.Notice((0, import_i18next.t)(($) => $.obsidianDevUtils.renameDeleteHandler.updatedLinks, { filesCount: renamedFilePaths.size, linksCount: renamedLinks.size }));
|
|
577
|
+
renamedFilePaths.clear();
|
|
578
|
+
renamedLinks.clear();
|
|
579
|
+
},
|
|
580
|
+
operationName: (0, import_i18next.t)(($) => $.obsidianDevUtils.renameDeleteHandler.handleOrphanedRenames)
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
async continueInterruptedRenames() {
|
|
585
|
+
const interruptedRenames = this.interruptedRenamesMap.get(this.oldPath);
|
|
586
|
+
if (interruptedRenames) {
|
|
587
|
+
this.interruptedRenamesMap.delete(this.oldPath);
|
|
588
|
+
for (const interruptedRename of interruptedRenames) {
|
|
589
|
+
await new RenameHandler({
|
|
590
|
+
abortSignal: this.abortSignal,
|
|
591
|
+
app: this.app,
|
|
592
|
+
handledRenames: this.handledRenames,
|
|
593
|
+
interruptedCombinedBacklinksMap: interruptedRename.combinedBacklinksMap,
|
|
594
|
+
interruptedRenamesMap: this.interruptedRenamesMap,
|
|
595
|
+
newPath: this.newPath,
|
|
596
|
+
oldCache: this.oldCache,
|
|
597
|
+
oldPath: interruptedRename.oldPath,
|
|
598
|
+
oldPathBacklinksMap: this.oldPathBacklinksMap,
|
|
599
|
+
settingsManager: this.settingsManager
|
|
600
|
+
}).handle();
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
async handleCaseCollision() {
|
|
605
|
+
if (!this.app.vault.adapter.insensitive || this.oldPath.toLowerCase() !== this.newPath.toLowerCase()) {
|
|
606
|
+
return false;
|
|
607
|
+
}
|
|
608
|
+
const tempPath = (0, import_path.join)((0, import_path.dirname)(this.newPath), `__temp__${(0, import_path.basename)(this.newPath)}`);
|
|
609
|
+
await this.renameHandled(this.newPath, tempPath);
|
|
610
|
+
await new RenameHandler({
|
|
611
|
+
abortSignal: this.abortSignal,
|
|
612
|
+
app: this.app,
|
|
613
|
+
handledRenames: this.handledRenames,
|
|
614
|
+
interruptedRenamesMap: this.interruptedRenamesMap,
|
|
615
|
+
newPath: tempPath,
|
|
616
|
+
oldCache: this.oldCache,
|
|
617
|
+
oldPath: this.oldPath,
|
|
618
|
+
oldPathBacklinksMap: this.oldPathBacklinksMap,
|
|
619
|
+
settingsManager: this.settingsManager
|
|
620
|
+
}).handle();
|
|
621
|
+
await this.app.fileManager.renameFile((0, import_file_system.getFile)(this.app, tempPath), this.newPath);
|
|
622
|
+
return true;
|
|
623
|
+
}
|
|
624
|
+
async refreshLinks() {
|
|
625
|
+
const cache = this.app.metadataCache.getCache(this.oldPath) ?? this.app.metadataCache.getCache(this.newPath);
|
|
626
|
+
const oldPathLinksRefreshed = cache ? (0, import_metadata_cache.getAllLinks)(cache) : [];
|
|
627
|
+
const fakeOldFile = (0, import_file_system.getFile)(this.app, this.oldPath, true);
|
|
628
|
+
let oldPathBacklinksMapRefreshed = /* @__PURE__ */ new Map();
|
|
629
|
+
await (0, import_metadata_cache.tempRegisterFilesAndRun)(this.app, [fakeOldFile], async () => {
|
|
630
|
+
oldPathBacklinksMapRefreshed = (await (0, import_metadata_cache.getBacklinksForFileSafe)(this.app, fakeOldFile)).data;
|
|
631
|
+
});
|
|
632
|
+
for (const link of oldPathLinksRefreshed) {
|
|
633
|
+
if (this.oldPathLinks.includes(link)) {
|
|
634
|
+
continue;
|
|
635
|
+
}
|
|
636
|
+
this.oldPathLinks.push(link);
|
|
637
|
+
}
|
|
638
|
+
for (const [backlinkPath, refreshedLinks] of oldPathBacklinksMapRefreshed.entries()) {
|
|
639
|
+
let oldLinks = this.oldPathBacklinksMap.get(backlinkPath);
|
|
640
|
+
if (!oldLinks) {
|
|
641
|
+
oldLinks = [];
|
|
642
|
+
this.oldPathBacklinksMap.set(backlinkPath, oldLinks);
|
|
643
|
+
}
|
|
644
|
+
for (const link of refreshedLinks) {
|
|
645
|
+
if (oldLinks.includes(link)) {
|
|
646
|
+
continue;
|
|
647
|
+
}
|
|
648
|
+
oldLinks.push(link);
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
async renameHandled(oldPath, newPath) {
|
|
653
|
+
newPath = (0, import_vault.getSafeRenamePath)(this.app, oldPath, newPath);
|
|
654
|
+
if (oldPath === newPath) {
|
|
655
|
+
return newPath;
|
|
656
|
+
}
|
|
657
|
+
this.handledRenames.add(oldPath, newPath);
|
|
658
|
+
newPath = await (0, import_vault.renameSafe)(this.app, oldPath, newPath);
|
|
659
|
+
return newPath;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
class RenameMap {
|
|
663
|
+
abortSignal;
|
|
664
|
+
app;
|
|
665
|
+
map = /* @__PURE__ */ new Map();
|
|
666
|
+
newPath;
|
|
667
|
+
oldCache;
|
|
668
|
+
oldPath;
|
|
669
|
+
oldPathLinks;
|
|
670
|
+
settingsManager;
|
|
671
|
+
constructor(params) {
|
|
672
|
+
this.abortSignal = params.abortSignal;
|
|
673
|
+
this.app = params.app;
|
|
674
|
+
this.settingsManager = params.settingsManager;
|
|
675
|
+
this.oldCache = params.oldCache;
|
|
676
|
+
this.oldPath = params.oldPath;
|
|
677
|
+
this.newPath = params.newPath;
|
|
678
|
+
this.oldPathLinks = this.oldCache ? (0, import_metadata_cache.getAllLinks)(this.oldCache) : [];
|
|
679
|
+
}
|
|
680
|
+
entries() {
|
|
681
|
+
return this.map.entries();
|
|
682
|
+
}
|
|
683
|
+
async fill() {
|
|
684
|
+
this.abortSignal.throwIfAborted();
|
|
685
|
+
this.map.set(this.oldPath, this.newPath);
|
|
686
|
+
if (!(0, import_file_system.isNote)(this.app, this.oldPath)) {
|
|
687
|
+
return;
|
|
688
|
+
}
|
|
689
|
+
const settings = this.settingsManager.getSettings();
|
|
690
|
+
const oldFile = (0, import_file_system.getFile)(this.app, this.oldPath, true);
|
|
691
|
+
let oldAttachmentFolderPath = "";
|
|
692
|
+
await (0, import_metadata_cache.tempRegisterFilesAndRunAsync)(this.app, [oldFile], async () => {
|
|
693
|
+
const shouldFakeOldPathCache = this.oldCache && oldFile.deleted;
|
|
694
|
+
if (shouldFakeOldPathCache) {
|
|
695
|
+
(0, import_metadata_cache.registerFileCacheForNonExistingFile)(this.app, oldFile, this.oldCache);
|
|
696
|
+
}
|
|
697
|
+
try {
|
|
698
|
+
oldAttachmentFolderPath = await (0, import_attachment_path.getAttachmentFolderPath)(this.app, this.oldPath, import_attachment_path.AttachmentPathContext.RenameNote);
|
|
699
|
+
} finally {
|
|
700
|
+
if (shouldFakeOldPathCache) {
|
|
701
|
+
(0, import_metadata_cache.unregisterFileCacheForNonExistingFile)(this.app, oldFile);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
});
|
|
705
|
+
const newAttachmentFolderPath = settings.shouldRenameAttachmentFolder ? await (0, import_attachment_path.getAttachmentFolderPath)(this.app, this.newPath, import_attachment_path.AttachmentPathContext.RenameNote) : oldAttachmentFolderPath;
|
|
706
|
+
const isOldAttachmentFolderAtRoot = oldAttachmentFolderPath === "/";
|
|
707
|
+
const oldAttachmentFolder = (0, import_file_system.getFolderOrNull)(this.app, oldAttachmentFolderPath);
|
|
708
|
+
if (!oldAttachmentFolder) {
|
|
709
|
+
return;
|
|
710
|
+
}
|
|
711
|
+
if (oldAttachmentFolderPath === newAttachmentFolderPath && !settings.shouldRenameAttachmentFiles) {
|
|
712
|
+
return;
|
|
713
|
+
}
|
|
714
|
+
const oldAttachmentFiles = [];
|
|
715
|
+
if (await (0, import_attachment_path.hasOwnAttachmentFolder)(this.app, this.oldPath, import_attachment_path.AttachmentPathContext.RenameNote)) {
|
|
716
|
+
import_obsidian.Vault.recurseChildren(oldAttachmentFolder, (oldAttachmentFile) => {
|
|
717
|
+
this.abortSignal.throwIfAborted();
|
|
718
|
+
if ((0, import_file_system.isFile)(oldAttachmentFile)) {
|
|
719
|
+
oldAttachmentFiles.push(oldAttachmentFile);
|
|
720
|
+
}
|
|
721
|
+
});
|
|
722
|
+
} else {
|
|
723
|
+
for (const oldPathLink of this.oldPathLinks) {
|
|
724
|
+
this.abortSignal.throwIfAborted();
|
|
725
|
+
const oldAttachmentFile = (0, import_link.extractLinkFile)(this.app, oldPathLink, this.oldPath);
|
|
726
|
+
if (!oldAttachmentFile) {
|
|
727
|
+
continue;
|
|
728
|
+
}
|
|
729
|
+
if (isOldAttachmentFolderAtRoot || oldAttachmentFile.path.startsWith(oldAttachmentFolderPath)) {
|
|
730
|
+
const oldAttachmentBacklinks = await (0, import_metadata_cache.getBacklinksForFileSafe)(this.app, oldAttachmentFile);
|
|
731
|
+
this.abortSignal.throwIfAborted();
|
|
732
|
+
const keys = new Set(oldAttachmentBacklinks.keys());
|
|
733
|
+
keys.delete(this.oldPath);
|
|
734
|
+
keys.delete(this.newPath);
|
|
735
|
+
if (keys.size === 0) {
|
|
736
|
+
oldAttachmentFiles.push(oldAttachmentFile);
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
for (const oldAttachmentFile of oldAttachmentFiles) {
|
|
742
|
+
this.abortSignal.throwIfAborted();
|
|
743
|
+
if (this.settingsManager.isNoteEx(oldAttachmentFile.path)) {
|
|
744
|
+
continue;
|
|
745
|
+
}
|
|
746
|
+
let newAttachmentFilePath;
|
|
747
|
+
if (settings.shouldRenameAttachmentFiles) {
|
|
748
|
+
newAttachmentFilePath = await (0, import_attachment_path.getAttachmentFilePath)({
|
|
749
|
+
app: this.app,
|
|
750
|
+
context: import_attachment_path.AttachmentPathContext.RenameNote,
|
|
751
|
+
notePathOrFile: this.newPath,
|
|
752
|
+
oldAttachmentPathOrFile: oldAttachmentFile,
|
|
753
|
+
oldNotePathOrFile: this.oldPath,
|
|
754
|
+
shouldSkipDuplicateCheck: true
|
|
755
|
+
});
|
|
756
|
+
this.abortSignal.throwIfAborted();
|
|
757
|
+
} else {
|
|
758
|
+
const relativePath = isOldAttachmentFolderAtRoot ? oldAttachmentFile.path : (0, import_path.relative)(oldAttachmentFolderPath, oldAttachmentFile.path);
|
|
759
|
+
const newFolder = (0, import_path.join)(newAttachmentFolderPath, (0, import_path.dirname)(relativePath));
|
|
760
|
+
newAttachmentFilePath = (0, import_path.join)(newFolder, oldAttachmentFile.name);
|
|
761
|
+
}
|
|
762
|
+
if (oldAttachmentFile.path === newAttachmentFilePath) {
|
|
763
|
+
continue;
|
|
764
|
+
}
|
|
765
|
+
if (settings.shouldDeleteConflictingAttachments) {
|
|
766
|
+
const newAttachmentFile = (0, import_file_system.getFileOrNull)(this.app, newAttachmentFilePath);
|
|
767
|
+
if (newAttachmentFile) {
|
|
768
|
+
(0, import_debug.getLibDebugger)("RenameDeleteHandler:fillRenameMap")(`Removing conflicting attachment ${newAttachmentFile.path}.`);
|
|
769
|
+
await (0, import_vault.trashSafe)(this.app, newAttachmentFile);
|
|
770
|
+
this.abortSignal.throwIfAborted();
|
|
771
|
+
}
|
|
772
|
+
} else {
|
|
773
|
+
const dir = (0, import_path.dirname)(newAttachmentFilePath);
|
|
774
|
+
const ext = (0, import_path.extname)(newAttachmentFilePath);
|
|
775
|
+
const baseName = (0, import_path.basename)(newAttachmentFilePath, ext);
|
|
776
|
+
newAttachmentFilePath = this.app.vault.getAvailablePath((0, import_path.join)(dir, baseName), ext.slice(1));
|
|
777
|
+
}
|
|
778
|
+
this.map.set(oldAttachmentFile.path, newAttachmentFilePath);
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
get(oldPath) {
|
|
782
|
+
return this.map.get(oldPath);
|
|
783
|
+
}
|
|
784
|
+
initBacklinksMap(singleBacklinksMap, combinedBacklinksMap, path) {
|
|
785
|
+
for (const [backlinkPath, links] of singleBacklinksMap.entries()) {
|
|
786
|
+
const newBacklinkPath = this.map.get(backlinkPath) ?? backlinkPath;
|
|
787
|
+
const linkJsonToPathMap = combinedBacklinksMap.get(newBacklinkPath) ?? /* @__PURE__ */ new Map();
|
|
788
|
+
combinedBacklinksMap.set(newBacklinkPath, linkJsonToPathMap);
|
|
789
|
+
for (const link of links) {
|
|
790
|
+
linkJsonToPathMap.set((0, import_object_utils.toJson)(link), path);
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
initOriginalLinksMap(combinedBacklinksMap) {
|
|
795
|
+
for (const oldPathLink of this.oldPathLinks) {
|
|
796
|
+
const oldAttachmentFile = (0, import_link.extractLinkFile)(this.app, oldPathLink, this.oldPath);
|
|
797
|
+
if (!oldAttachmentFile) {
|
|
798
|
+
continue;
|
|
799
|
+
}
|
|
800
|
+
const backlinksMap = /* @__PURE__ */ new Map();
|
|
801
|
+
backlinksMap.set(this.newPath, [oldPathLink]);
|
|
802
|
+
this.initBacklinksMap(backlinksMap, combinedBacklinksMap, oldAttachmentFile.path);
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
keys() {
|
|
806
|
+
return this.map.keys();
|
|
807
|
+
}
|
|
808
|
+
set(oldPath, newPath) {
|
|
809
|
+
this.map.set(oldPath, newPath);
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
function registerRenameDeleteHandlers(plugin, settingsBuilder) {
|
|
813
|
+
new Registry(plugin, settingsBuilder, new SettingsManager(plugin.app)).register();
|
|
814
|
+
}
|
|
815
|
+
async function cleanupParentFolders(app, settings, parentFolderPaths) {
|
|
816
|
+
if (settings.emptyFolderBehavior === "Keep" /* Keep */) {
|
|
817
|
+
return;
|
|
818
|
+
}
|
|
819
|
+
for (const parentFolderPath of parentFolderPaths) {
|
|
820
|
+
switch (settings.emptyFolderBehavior) {
|
|
821
|
+
case "Delete" /* Delete */:
|
|
822
|
+
await (0, import_vault.deleteEmptyFolder)(app, parentFolderPath);
|
|
823
|
+
break;
|
|
824
|
+
case "DeleteWithEmptyParents" /* DeleteWithEmptyParents */:
|
|
825
|
+
await (0, import_vault.deleteEmptyFolderHierarchy)(app, parentFolderPath);
|
|
826
|
+
break;
|
|
827
|
+
default:
|
|
828
|
+
break;
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
833
|
+
0 && (module.exports = {
|
|
834
|
+
EmptyFolderBehavior,
|
|
835
|
+
registerRenameDeleteHandlers
|
|
836
|
+
});
|
|
837
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3JlbmFtZS1kZWxldGUtaGFuZGxlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgcmVuYW1lIGFuZCBkZWxldGUgZXZlbnRzIGluIE9ic2lkaWFuLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWVwbHkgY291cGxlZCB0byBPYnNpZGlhbiBydW50aW1lOyByZXF1aXJlcyBydW5uaW5nIHZhdWx0IGZvciBtZWFuaW5nZnVsIHRlc3RpbmcuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgRmlsZU1hbmFnZXIsXG4gIFBsdWdpbixcbiAgUmVmZXJlbmNlLFxuICBUQWJzdHJhY3RGaWxlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7XG4gIExpbmtVcGRhdGUsXG4gIExpbmtVcGRhdGVzSGFuZGxlclxufSBmcm9tICdvYnNpZGlhbi10eXBpbmdzJztcblxuaW1wb3J0IHsgdCB9IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHtcbiAgTm90aWNlLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBJbnRlcm5hbFBsdWdpbk5hbWUgfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgVXBkYXRlTGlua1BhcmFtcyxcbiAgVXBkYXRlTGlua3NJbkZpbGVQYXJhbXNcbn0gZnJvbSAnLi9saW5rLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxOZXZlciB9IGZyb20gJy4uL2Fib3J0LWNvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgZmlsdGVySW5QbGFjZSB9IGZyb20gJy4uL2FycmF5LnRzJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzLFxuICB0b0pzb25cbn0gZnJvbSAnLi4vb2JqZWN0LXV0aWxzLnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luLFxuICByZWxhdGl2ZVxufSBmcm9tICcuLi9wYXRoLnRzJztcbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vYXBwLnRzJztcbmltcG9ydCB7XG4gIEF0dGFjaG1lbnRQYXRoQ29udGV4dCxcbiAgZ2V0QXR0YWNobWVudEZpbGVQYXRoLFxuICBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCxcbiAgaGFzT3duQXR0YWNobWVudEZvbGRlclxufSBmcm9tICcuL2F0dGFjaG1lbnQtcGF0aC50cyc7XG5pbXBvcnQge1xuICBDQU5WQVNfRklMRV9FWFRFTlNJT04sXG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgaXNGaWxlLFxuICBpc01hcmtkb3duRmlsZSxcbiAgaXNOb3RlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgZWRpdExpbmtzLFxuICBleHRyYWN0TGlua0ZpbGUsXG4gIHVwZGF0ZUxpbmssXG4gIHVwZGF0ZUxpbmtzSW5GaWxlXG59IGZyb20gJy4vbGluay50cyc7XG5pbXBvcnQge1xuICBnZXRBbGxMaW5rcyxcbiAgZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aCxcbiAgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUsXG4gIHJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlLFxuICB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bixcbiAgdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW5Bc3luYyxcbiAgdW5yZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZVxufSBmcm9tICcuL21ldGFkYXRhLWNhY2hlLnRzJztcbmltcG9ydCB7IHJlZ2lzdGVyUGF0Y2ggfSBmcm9tICcuL21vbmtleS1hcm91bmQudHMnO1xuaW1wb3J0IHsgYWRkVG9RdWV1ZSB9IGZyb20gJy4vcXVldWUudHMnO1xuaW1wb3J0IHsgZGVsZXRlSWZOb3RVc2VkIH0gZnJvbSAnLi92YXVsdC1kZWxldGUudHMnO1xuaW1wb3J0IHtcbiAgZGVsZXRlRW1wdHlGb2xkZXIsXG4gIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5LFxuICBnZXRTYWZlUmVuYW1lUGF0aCxcbiAgcmVuYW1lU2FmZSxcbiAgdHJhc2hTYWZlXG59IGZyb20gJy4vdmF1bHQudHMnO1xuXG4vKipcbiAqIEEgYmVoYXZpb3Igb2YgdGhlIHJlbmFtZS9kZWxldGUgaGFuZGxlciB3aGVuIGRlbGV0aW5nIGVtcHR5IGZvbGRlcnMuXG4gKi9cbmV4cG9ydCBlbnVtIEVtcHR5Rm9sZGVyQmVoYXZpb3Ige1xuICAvKipcbiAgICogRGVsZXRlIHRoZSBlbXB0eSBmb2xkZXIuXG4gICAqL1xuICBEZWxldGUgPSAnRGVsZXRlJyxcblxuICAvKipcbiAgICogRGVsZXRlIHRoZSBlbXB0eSBmb2xkZXIgYW5kIGFsbCBpdHMgZW1wdHkgcGFyZW50cy5cbiAgICovXG4gIERlbGV0ZVdpdGhFbXB0eVBhcmVudHMgPSAnRGVsZXRlV2l0aEVtcHR5UGFyZW50cycsXG5cbiAgLyoqXG4gICAqIEtlZXAgdGhlIGVtcHR5IGZvbGRlci5cbiAgICovXG4gIEtlZXAgPSAnS2VlcCdcbn1cblxuLyoqXG4gKiBTZXR0aW5ncyBmb3IgdGhlIHJlbmFtZS9kZWxldGUgaGFuZGxlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3Mge1xuICAvKipcbiAgICogQSBiZWhhdmlvciBvZiB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVyIHdoZW4gZGVsZXRpbmcgZW1wdHkgZm9sZGVycy5cbiAgICovXG4gIGVtcHR5Rm9sZGVyQmVoYXZpb3I6IEVtcHR5Rm9sZGVyQmVoYXZpb3I7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBhdGggaXMgYSBub3RlLlxuICAgKi9cbiAgaXNOb3RlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaWdub3JlIHRoZSBwYXRoLlxuICAgKi9cbiAgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlbGV0ZSBjb25mbGljdGluZyBhdHRhY2htZW50cy5cbiAgICovXG4gIHNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaGFuZGxlIGRlbGV0aW9ucy5cbiAgICovXG4gIHNob3VsZEhhbmRsZURlbGV0aW9uczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBoYW5kbGUgcmVuYW1lcy5cbiAgICovXG4gIHNob3VsZEhhbmRsZVJlbmFtZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVuYW1lIGF0dGFjaG1lbnQgZmlsZXMgd2hlbiBhIG5vdGUgaXMgcmVuYW1lZC5cbiAgICovXG4gIHNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW5hbWUgYXR0YWNobWVudCBmb2xkZXIgd2hlbiBhIG5vdGUgaXMgcmVuYW1lZC5cbiAgICovXG4gIHNob3VsZFJlbmFtZUF0dGFjaG1lbnRGb2xkZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIGZpbGUgbmFtZSBhbGlhc2VzIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRVcGRhdGVGaWxlTmFtZUFsaWFzZXM6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBBYm9ydGFibGVQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG5pbnRlcmZhY2UgSGFuZGxlZFJlbmFtZUtleSB7XG4gIG5ld1BhdGg6IHN0cmluZztcbiAgb2xkUGF0aDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSW50ZXJydXB0ZWRSZW5hbWUge1xuICBjb21iaW5lZEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj47XG4gIG9sZFBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJlbmFtZUhhbmRsZXJQYXJhbXMge1xuICByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuICByZWFkb25seSBoYW5kbGVkUmVuYW1lczogSGFuZGxlZFJlbmFtZXM7XG4gIHJlYWRvbmx5IGludGVycnVwdGVkQ29tYmluZWRCYWNrbGlua3NNYXA/OiBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PjtcbiAgcmVhZG9ubHkgaW50ZXJydXB0ZWRSZW5hbWVzTWFwOiBNYXA8c3RyaW5nLCBJbnRlcnJ1cHRlZFJlbmFtZVtdPjtcbiAgcmVhZG9ubHkgbmV3UGF0aDogc3RyaW5nO1xuICByZWFkb25seSBvbGRDYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsO1xuICByZWFkb25seSBvbGRQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9sZFBhdGhCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIFJlZmVyZW5jZVtdPjtcbiAgcmVhZG9ubHkgc2V0dGluZ3NNYW5hZ2VyOiBTZXR0aW5nc01hbmFnZXI7XG59XG5cbmludGVyZmFjZSBSZW5hbWVNYXBQYXJhbXMge1xuICByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuICByZWFkb25seSBuZXdQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9sZENhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGw7XG4gIHJlYWRvbmx5IG9sZFBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgc2V0dGluZ3NNYW5hZ2VyOiBTZXR0aW5nc01hbmFnZXI7XG59XG5cbnR5cGUgUnVuQXN5bmNMaW5rVXBkYXRlRm4gPSB7IHJlbmFtZURlbGV0ZUhhbmRsZXJQYXRjaGVkPzogYm9vbGVhbiB9ICYgRmlsZU1hbmFnZXJbJ3J1bkFzeW5jTGlua1VwZGF0ZSddO1xuXG5jbGFzcyBEZWxldGVIYW5kbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHAsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlOiBUQWJzdHJhY3RGaWxlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3NNYW5hZ2VyOiBTZXR0aW5nc01hbmFnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWxldGVkTWV0YWRhdGFDYWNoZU1hcDogTWFwPHN0cmluZywgQ2FjaGVkTWV0YWRhdGE+XG4gICkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgZ2V0TGliRGVidWdnZXIoJ1JlbmFtZURlbGV0ZUhhbmRsZXI6aGFuZGxlRGVsZXRlJykoYEhhbmRsZSBEZWxldGUgJHt0aGlzLmZpbGUucGF0aH1gKTtcbiAgICBpZiAoIWlzTm90ZSh0aGlzLmFwcCwgdGhpcy5maWxlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5nc01hbmFnZXIuZ2V0U2V0dGluZ3MoKTtcblxuICAgIGlmIChzZXR0aW5ncy5pc1BhdGhJZ25vcmVkPy4odGhpcy5maWxlLnBhdGgpKSB7XG4gICAgICBnZXRMaWJEZWJ1Z2dlcignUmVuYW1lRGVsZXRlSGFuZGxlcjpoYW5kbGVEZWxldGUnKShgU2tpcHBpbmcgZGVsZXRlIGhhbmRsZXIgb2YgJHt0aGlzLmZpbGUucGF0aH0gYXMgdGhlIHBhdGggaXMgaWdub3JlZC5gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRGb2xkZXJQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPihbZGlybmFtZSh0aGlzLmZpbGUucGF0aCldKTtcblxuICAgIGlmIChzZXR0aW5ncy5zaG91bGRIYW5kbGVEZWxldGlvbnMpIHtcbiAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5kZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5nZXQodGhpcy5maWxlLnBhdGgpO1xuICAgICAgdGhpcy5kZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5kZWxldGUodGhpcy5maWxlLnBhdGgpO1xuICAgICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gZ2V0QWxsTGlua3MoY2FjaGUpO1xuXG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKHRoaXMuYXBwLCBsaW5rLCB0aGlzLmZpbGUucGF0aCk7XG4gICAgICAgICAgaWYgKCFhdHRhY2htZW50RmlsZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3NNYW5hZ2VyLmlzTm90ZUV4KGF0dGFjaG1lbnRGaWxlLnBhdGgpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXJlbnRGb2xkZXJQYXRocy5hZGQoYXR0YWNobWVudEZpbGUucGFyZW50Py5wYXRoID8/ICcnKTtcbiAgICAgICAgICBhd2FpdCBkZWxldGVJZk5vdFVzZWQodGhpcy5hcHAsIGF0dGFjaG1lbnRGaWxlLCB0aGlzLmZpbGUucGF0aCwgZmFsc2UsIHNldHRpbmdzLmVtcHR5Rm9sZGVyQmVoYXZpb3IgIT09IEVtcHR5Rm9sZGVyQmVoYXZpb3IuS2VlcCk7XG4gICAgICAgICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFyZW50Rm9sZGVyUGF0aHMuZGVsZXRlKCcnKTtcbiAgICBhd2FpdCBjbGVhbnVwUGFyZW50Rm9sZGVycyh0aGlzLmFwcCwgdGhpcy5zZXR0aW5nc01hbmFnZXIuZ2V0U2V0dGluZ3MoKSwgQXJyYXkuZnJvbShwYXJlbnRGb2xkZXJQYXRocykpO1xuICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgIGlmICghc2V0dGluZ3Muc2hvdWxkSGFuZGxlRGVsZXRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh0aGlzLmFwcCwgdGhpcy5maWxlLnBhdGgsIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5EZWxldGVOb3RlKTtcbiAgICBjb25zdCBhdHRhY2htZW50Rm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKHRoaXMuYXBwLCBhdHRhY2htZW50Rm9sZGVyUGF0aCk7XG5cbiAgICBpZiAoIWF0dGFjaG1lbnRGb2xkZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWF3YWl0IGhhc093bkF0dGFjaG1lbnRGb2xkZXIodGhpcy5hcHAsIHRoaXMuZmlsZS5wYXRoLCBBdHRhY2htZW50UGF0aENvbnRleHQuRGVsZXRlTm90ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBhd2FpdCBkZWxldGVJZk5vdFVzZWQodGhpcy5hcHAsIGF0dGFjaG1lbnRGb2xkZXIsIHRoaXMuZmlsZS5wYXRoLCBmYWxzZSwgc2V0dGluZ3MuZW1wdHlGb2xkZXJCZWhhdmlvciAhPT0gRW1wdHlGb2xkZXJCZWhhdmlvci5LZWVwKTtcbiAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIH1cbn1cblxuY2xhc3MgSGFuZGxlZFJlbmFtZXMge1xuICBwcml2YXRlIHJlYWRvbmx5IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBIYW5kbGVkUmVuYW1lS2V5PigpO1xuXG4gIHB1YmxpYyBhZGQob2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5zZXQodGhpcy5rZXlUb1N0cmluZyhvbGRQYXRoLCBuZXdQYXRoKSwgeyBuZXdQYXRoLCBvbGRQYXRoIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShvbGRQYXRoOiBzdHJpbmcsIG5ld1BhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubWFwLmRlbGV0ZSh0aGlzLmtleVRvU3RyaW5nKG9sZFBhdGgsIG5ld1BhdGgpKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXMob2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYXAuaGFzKHRoaXMua2V5VG9TdHJpbmcob2xkUGF0aCwgbmV3UGF0aCkpO1xuICB9XG5cbiAgcHVibGljIGtleXMoKTogSXRlcmFibGVJdGVyYXRvcjxIYW5kbGVkUmVuYW1lS2V5PiB7XG4gICAgcmV0dXJuIHRoaXMubWFwLnZhbHVlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBrZXlUb1N0cmluZyhvbGRQYXRoOiBzdHJpbmcsIG5ld1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke29sZFBhdGh9IC0+ICR7bmV3UGF0aH1gO1xuICB9XG59XG5cbmNsYXNzIE1ldGFkYXRhRGVsZXRlZEhhbmRsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbGU6IFRBYnN0cmFjdEZpbGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmV2Q2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzTWFuYWdlcjogU2V0dGluZ3NNYW5hZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVsZXRlZE1ldGFkYXRhQ2FjaGVNYXA6IE1hcDxzdHJpbmcsIENhY2hlZE1ldGFkYXRhPlxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUoKTogdm9pZCB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzTWFuYWdlci5nZXRTZXR0aW5ncygpO1xuXG4gICAgaWYgKCFzZXR0aW5ncy5zaG91bGRIYW5kbGVEZWxldGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKHRoaXMuZmlsZS5wYXRoKSkge1xuICAgICAgZ2V0TGliRGVidWdnZXIoJ1JlbmFtZURlbGV0ZUhhbmRsZXI6aGFuZGxlTWV0YWRhdGFEZWxldGVkJykoYFNraXBwaW5nIG1ldGFkYXRhIGRlbGV0ZSBoYW5kbGVyIG9mICR7dGhpcy5maWxlLnBhdGh9IGFzIHRoZSBwYXRoIGlzIGlnbm9yZWQuYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzTWFya2Rvd25GaWxlKHRoaXMuYXBwLCB0aGlzLmZpbGUpICYmIHRoaXMucHJldkNhY2hlKSB7XG4gICAgICB0aGlzLmRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwLnNldCh0aGlzLmZpbGUucGF0aCwgdGhpcy5wcmV2Q2FjaGUpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBSZWdpc3RyeSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlZE1ldGFkYXRhPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZWRSZW5hbWVzID0gbmV3IEhhbmRsZWRSZW5hbWVzKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJydXB0ZWRSZW5hbWVzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEludGVycnVwdGVkUmVuYW1lW10+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW46IEFib3J0YWJsZVBsdWdpbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzQnVpbGRlcjogKCkgPT4gUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3NNYW5hZ2VyOiBTZXR0aW5nc01hbmFnZXJcbiAgKSB7XG4gICAgdGhpcy5hcHAgPSBwbHVnaW4uYXBwO1xuICAgIHRoaXMucGx1Z2luSWQgPSBwbHVnaW4ubWFuaWZlc3QuaWQ7XG4gICAgdGhpcy5hYm9ydFNpZ25hbCA9IHBsdWdpbi5hYm9ydFNpZ25hbCA/PyBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAgPSB0aGlzLnNldHRpbmdzTWFuYWdlci5yZW5hbWVEZWxldGVIYW5kbGVyc01hcDtcblxuICAgIHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwLnNldCh0aGlzLnBsdWdpbklkLCB0aGlzLnNldHRpbmdzQnVpbGRlcik7XG4gICAgdGhpcy5sb2dSZWdpc3RlcmVkSGFuZGxlcnMoKTtcblxuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwLmRlbGV0ZSh0aGlzLnBsdWdpbklkKTtcbiAgICAgIHRoaXMubG9nUmVnaXN0ZXJlZEhhbmRsZXJzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLnZhdWx0Lm9uKCdkZWxldGUnLCB0aGlzLmhhbmRsZURlbGV0ZS5iaW5kKHRoaXMpKSk7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC52YXVsdC5vbigncmVuYW1lJywgdGhpcy5oYW5kbGVSZW5hbWUuYmluZCh0aGlzKSkpO1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRXZlbnQodGhpcy5hcHAubWV0YWRhdGFDYWNoZS5vbignZGVsZXRlZCcsIHRoaXMuaGFuZGxlTWV0YWRhdGFEZWxldGVkLmJpbmQodGhpcykpKTtcblxuICAgIHJlZ2lzdGVyUGF0Y2godGhpcy5wbHVnaW4sIHRoaXMuYXBwLmZpbGVNYW5hZ2VyLCB7XG4gICAgICBydW5Bc3luY0xpbmtVcGRhdGU6IChuZXh0OiBSdW5Bc3luY0xpbmtVcGRhdGVGbik6IFJ1bkFzeW5jTGlua1VwZGF0ZUZuID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oKGxpbmtVcGRhdGVzSGFuZGxlcikgPT4gdGhpcy5ydW5Bc3luY0xpbmtVcGRhdGUobmV4dCwgbGlua1VwZGF0ZXNIYW5kbGVyKSwgeyByZW5hbWVEZWxldGVIYW5kbGVyUGF0Y2hlZDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRGVsZXRlKGZpbGU6IFRBYnN0cmFjdEZpbGUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkSW52b2tlSGFuZGxlcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFkZFRvUXVldWUoe1xuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIG9wZXJhdGlvbkZuOiAoYWJvcnRTaWduYWwpID0+IG5ldyBEZWxldGVIYW5kbGVyKHRoaXMuYXBwLCBmaWxlLCBhYm9ydFNpZ25hbCwgdGhpcy5zZXR0aW5nc01hbmFnZXIsIHRoaXMuZGVsZXRlZE1ldGFkYXRhQ2FjaGVNYXApLmhhbmRsZSgpLFxuICAgICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnJlbmFtZURlbGV0ZUhhbmRsZXIuaGFuZGxlRGVsZXRlLCB7IGZpbGVQYXRoOiBmaWxlLnBhdGggfSlcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWV0YWRhdGFEZWxldGVkKGZpbGU6IFRBYnN0cmFjdEZpbGUsIHByZXZDYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZEludm9rZUhhbmRsZXIoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBuZXcgTWV0YWRhdGFEZWxldGVkSGFuZGxlcih0aGlzLmFwcCwgZmlsZSwgcHJldkNhY2hlLCB0aGlzLnNldHRpbmdzTWFuYWdlciwgdGhpcy5kZWxldGVkTWV0YWRhdGFDYWNoZU1hcCkuaGFuZGxlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJlbmFtZShmaWxlOiBUQWJzdHJhY3RGaWxlLCBvbGRQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkSW52b2tlSGFuZGxlcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc0ZpbGUoZmlsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdQYXRoID0gZmlsZS5wYXRoO1xuXG4gICAgZ2V0TGliRGVidWdnZXIoJ1JlbmFtZURlbGV0ZUhhbmRsZXI6aGFuZGxlUmVuYW1lJykoYEhhbmRsZSBSZW5hbWUgJHtvbGRQYXRofSAtPiAke25ld1BhdGh9YCk7XG4gICAgaWYgKHRoaXMuaGFuZGxlZFJlbmFtZXMuaGFzKG9sZFBhdGgsIG5ld1BhdGgpKSB7XG4gICAgICB0aGlzLmhhbmRsZWRSZW5hbWVzLmRlbGV0ZShvbGRQYXRoLCBuZXdQYXRoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3NNYW5hZ2VyLmdldFNldHRpbmdzKCk7XG4gICAgaWYgKCFzZXR0aW5ncy5zaG91bGRIYW5kbGVSZW5hbWVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzLmlzUGF0aElnbm9yZWQ/LihvbGRQYXRoKSkge1xuICAgICAgZ2V0TGliRGVidWdnZXIoJ1JlbmFtZURlbGV0ZUhhbmRsZXI6aGFuZGxlUmVuYW1lJykoYFNraXBwaW5nIHJlbmFtZSBoYW5kbGVyIG9mIG9sZCBwYXRoICR7b2xkUGF0aH0gYXMgdGhlIHBhdGggaXMgaWdub3JlZC5gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKG5ld1BhdGgpKSB7XG4gICAgICBnZXRMaWJEZWJ1Z2dlcignUmVuYW1lRGVsZXRlSGFuZGxlcjpoYW5kbGVSZW5hbWUnKShgU2tpcHBpbmcgcmVuYW1lIGhhbmRsZXIgb2YgbmV3IHBhdGggJHtuZXdQYXRofSBhcyB0aGUgcGF0aCBpcyBpZ25vcmVkLmApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9sZENhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZShvbGRQYXRoKSA/PyB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldENhY2hlKG5ld1BhdGgpO1xuICAgIGNvbnN0IG9sZFBhdGhCYWNrbGlua3NNYXAgPSBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRoKHRoaXMuYXBwLCBvbGRQYXRoKS5kYXRhO1xuICAgIGFkZFRvUXVldWUoe1xuICAgICAgYWJvcnRTaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgb3BlcmF0aW9uRm46IChhYm9ydFNpZ25hbCkgPT5cbiAgICAgICAgbmV3IFJlbmFtZUhhbmRsZXIoe1xuICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICAgICAgaGFuZGxlZFJlbmFtZXM6IHRoaXMuaGFuZGxlZFJlbmFtZXMsXG4gICAgICAgICAgaW50ZXJydXB0ZWRSZW5hbWVzTWFwOiB0aGlzLmludGVycnVwdGVkUmVuYW1lc01hcCxcbiAgICAgICAgICBuZXdQYXRoLFxuICAgICAgICAgIG9sZENhY2hlLFxuICAgICAgICAgIG9sZFBhdGgsXG4gICAgICAgICAgb2xkUGF0aEJhY2tsaW5rc01hcCxcbiAgICAgICAgICBzZXR0aW5nc01hbmFnZXI6IHRoaXMuc2V0dGluZ3NNYW5hZ2VyXG4gICAgICAgIH0pLmhhbmRsZSgpLFxuICAgICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnJlbmFtZURlbGV0ZUhhbmRsZXIuaGFuZGxlUmVuYW1lLCB7IG5ld1BhdGgsIG9sZFBhdGggfSlcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nUmVnaXN0ZXJlZEhhbmRsZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gdGhpcy5zZXR0aW5nc01hbmFnZXIucmVuYW1lRGVsZXRlSGFuZGxlcnNNYXA7XG4gICAgZ2V0TGliRGVidWdnZXIoJ1JlbmFtZURlbGV0ZUhhbmRsZXI6bG9nUmVnaXN0ZXJlZEhhbmRsZXJzJykoXG4gICAgICBgUGx1Z2lucyB3aXRoIHJlZ2lzdGVyZWQgcmVuYW1lL2RlbGV0ZSBoYW5kbGVyczogJHtKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwLmtleXMoKSkpfWBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5Bc3luY0xpbmtVcGRhdGUobmV4dDogUnVuQXN5bmNMaW5rVXBkYXRlRm4sIGxpbmtVcGRhdGVzSGFuZGxlcjogTGlua1VwZGF0ZXNIYW5kbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKG5leHQucmVuYW1lRGVsZXRlSGFuZGxlclBhdGNoZWQpIHtcbiAgICAgIGF3YWl0IG5leHQuY2FsbCh0aGlzLmFwcC5maWxlTWFuYWdlciwgbGlua1VwZGF0ZXNIYW5kbGVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgbmV4dC5jYWxsKHRoaXMuYXBwLmZpbGVNYW5hZ2VyLCAobGlua1VwZGF0ZXMpID0+IHRoaXMud3JhcExpbmtVcGRhdGVzSGFuZGxlcihsaW5rVXBkYXRlcywgbGlua1VwZGF0ZXNIYW5kbGVyKSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEludm9rZUhhbmRsZXIoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGx1Z2luSWQgPSB0aGlzLnBsdWdpbi5tYW5pZmVzdC5pZDtcblxuICAgIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gdGhpcy5zZXR0aW5nc01hbmFnZXIucmVuYW1lRGVsZXRlSGFuZGxlcnNNYXA7XG4gICAgY29uc3QgbWFpblBsdWdpbklkID0gQXJyYXkuZnJvbShyZW5hbWVEZWxldGVIYW5kbGVyc01hcC5rZXlzKCkpWzBdO1xuICAgIHJldHVybiBtYWluUGx1Z2luSWQgPT09IHBsdWdpbklkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3cmFwTGlua1VwZGF0ZXNIYW5kbGVyKGxpbmtVcGRhdGVzOiBMaW5rVXBkYXRlW10sIGxpbmtVcGRhdGVzSGFuZGxlcjogTGlua1VwZGF0ZXNIYW5kbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGlzUmVuYW1lQ2FsbGVkID0gZmFsc2U7XG4gICAgY29uc3QgZXZlbnRSZWYgPSB0aGlzLmFwcC52YXVsdC5vbigncmVuYW1lJywgKCkgPT4ge1xuICAgICAgaXNSZW5hbWVDYWxsZWQgPSB0cnVlO1xuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBsaW5rVXBkYXRlc0hhbmRsZXIobGlua1VwZGF0ZXMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmFwcC52YXVsdC5vZmZyZWYoZXZlbnRSZWYpO1xuICAgIH1cbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3NNYW5hZ2VyLmdldFNldHRpbmdzKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gSXQgbWlnaHQgY2hhbmdlZCBpbiBgcmVuYW1lYCBldmVudCBoYW5kbGVyLiBFU0xpbnQgbWlzdGFrZW5seSBkb2VzIG5vdCByZWNvZ25pemUgaXQuXG4gICAgaWYgKCFpc1JlbmFtZUNhbGxlZCB8fCAhc2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZpbHRlckluUGxhY2UoXG4gICAgICBsaW5rVXBkYXRlcyxcbiAgICAgIChsaW5rVXBkYXRlKSA9PiB7XG4gICAgICAgIGlmIChzZXR0aW5ncy5pc1BhdGhJZ25vcmVkPy4obGlua1VwZGF0ZS5zb3VyY2VGaWxlLnBhdGgpKSB7XG4gICAgICAgICAgZ2V0TGliRGVidWdnZXIoJ1JlbmFtZURlbGV0ZUhhbmRsZXI6cnVuQXN5bmNMaW5rVXBkYXRlJykoXG4gICAgICAgICAgICBgUm9sbCBiYWNrIHRvIGRlZmF1bHQgbGluayB1cGRhdGUgb2Ygc291cmNlIGZpbGUgJHtsaW5rVXBkYXRlLnNvdXJjZUZpbGUucGF0aH0gYXMgdGhlIHBhdGggaXMgaWdub3JlZC5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZXR0aW5ncy5pc1BhdGhJZ25vcmVkPy4obGlua1VwZGF0ZS5yZXNvbHZlZEZpbGUucGF0aCkpIHtcbiAgICAgICAgICBnZXRMaWJEZWJ1Z2dlcignUmVuYW1lRGVsZXRlSGFuZGxlcjpydW5Bc3luY0xpbmtVcGRhdGUnKShcbiAgICAgICAgICAgIGBSb2xsIGJhY2sgdG8gZGVmYXVsdCBsaW5rIHVwZGF0ZSBvZiByZXNvbHZlZCBmaWxlICR7bGlua1VwZGF0ZS5yZXNvbHZlZEZpbGUucGF0aH0gYXMgdGhlIHBhdGggaXMgaWdub3JlZC5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5hcHAuaW50ZXJuYWxQbHVnaW5zLmdldEVuYWJsZWRQbHVnaW5CeUlkKEludGVybmFsUGx1Z2luTmFtZS5DYW52YXMpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKCdiYWNrbGluay1jYWNoZScpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpbmtVcGRhdGUuc291cmNlRmlsZS5leHRlbnNpb24gPT09IENBTlZBU19GSUxFX0VYVEVOU0lPTikge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpbmtVcGRhdGUucmVzb2x2ZWRGaWxlLmV4dGVuc2lvbiA9PT0gQ0FOVkFTX0ZJTEVfRVhURU5TSU9OKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuXG5jbGFzcyBTZXR0aW5nc01hbmFnZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXA6IE1hcDxzdHJpbmcsICgpID0+IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPj47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHApIHtcbiAgICB0aGlzLnJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID1cbiAgICAgIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZShhcHAsICdyZW5hbWVEZWxldGVIYW5kbGVyc01hcCcsIG5ldyBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+KCkpLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldFNldHRpbmdzKCk6IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPiB7XG4gICAgY29uc3Qgc2V0dGluZ3NCdWlsZGVycyA9IEFycmF5LmZyb20odGhpcy5yZW5hbWVEZWxldGVIYW5kbGVyc01hcC52YWx1ZXMoKSkucmV2ZXJzZSgpO1xuXG4gICAgY29uc3Qgc2V0dGluZ3M6IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPiA9IHt9O1xuICAgIHNldHRpbmdzLmlzTm90ZSA9IChwYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IGlzTm90ZSh0aGlzLmFwcCwgcGF0aCk7XG4gICAgc2V0dGluZ3MuaXNQYXRoSWdub3JlZCA9ICgpOiBib29sZWFuID0+IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBzZXR0aW5nc0J1aWxkZXIgb2Ygc2V0dGluZ3NCdWlsZGVycykge1xuICAgICAgY29uc3QgbmV3U2V0dGluZ3MgPSBzZXR0aW5nc0J1aWxkZXIoKTtcbiAgICAgIHNldHRpbmdzLnNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHMgfHw9IG5ld1NldHRpbmdzLnNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHMgPz8gZmFsc2U7XG4gICAgICBpZiAobmV3U2V0dGluZ3MuZW1wdHlGb2xkZXJCZWhhdmlvcikge1xuICAgICAgICBzZXR0aW5ncy5lbXB0eUZvbGRlckJlaGF2aW9yID8/PSBuZXdTZXR0aW5ncy5lbXB0eUZvbGRlckJlaGF2aW9yO1xuICAgICAgfVxuICAgICAgc2V0dGluZ3Muc2hvdWxkSGFuZGxlRGVsZXRpb25zIHx8PSBuZXdTZXR0aW5ncy5zaG91bGRIYW5kbGVEZWxldGlvbnMgPz8gZmFsc2U7XG4gICAgICBzZXR0aW5ncy5zaG91bGRIYW5kbGVSZW5hbWVzIHx8PSBuZXdTZXR0aW5ncy5zaG91bGRIYW5kbGVSZW5hbWVzID8/IGZhbHNlO1xuICAgICAgc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzIHx8PSBuZXdTZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXMgPz8gZmFsc2U7XG4gICAgICBzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyIHx8PSBuZXdTZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyID8/IGZhbHNlO1xuICAgICAgc2V0dGluZ3Muc2hvdWxkVXBkYXRlRmlsZU5hbWVBbGlhc2VzIHx8PSBuZXdTZXR0aW5ncy5zaG91bGRVcGRhdGVGaWxlTmFtZUFsaWFzZXMgPz8gZmFsc2U7XG4gICAgICBjb25zdCBpc1BhdGhJZ25vcmVkID0gc2V0dGluZ3MuaXNQYXRoSWdub3JlZDtcbiAgICAgIHNldHRpbmdzLmlzUGF0aElnbm9yZWQgPSAocGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiBpc1BhdGhJZ25vcmVkKHBhdGgpIHx8IChuZXdTZXR0aW5ncy5pc1BhdGhJZ25vcmVkPy4ocGF0aCkgPz8gZmFsc2UpO1xuICAgICAgY29uc3QgY3VycmVudElzTm90ZSA9IHNldHRpbmdzLmlzTm90ZTtcbiAgICAgIHNldHRpbmdzLmlzTm90ZSA9IChwYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IGN1cnJlbnRJc05vdGUocGF0aCkgJiYgKG5ld1NldHRpbmdzLmlzTm90ZT8uKHBhdGgpID8/IHRydWUpO1xuICAgIH1cblxuICAgIHNldHRpbmdzLmVtcHR5Rm9sZGVyQmVoYXZpb3IgPz89IEVtcHR5Rm9sZGVyQmVoYXZpb3IuS2VlcDtcbiAgICByZXR1cm4gc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgaXNOb3RlRXgocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmdldFNldHRpbmdzKCk7XG4gICAgcmV0dXJuIHNldHRpbmdzLmlzTm90ZT8uKHBhdGgpID8/IGZhbHNlO1xuICB9XG59XG5cbmNsYXNzIFJlbmFtZUhhbmRsZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcDtcbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVkUmVuYW1lczogSGFuZGxlZFJlbmFtZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJydXB0ZWRDb21iaW5lZEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj47XG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJydXB0ZWRSZW5hbWVzTWFwOiBNYXA8c3RyaW5nLCBJbnRlcnJ1cHRlZFJlbmFtZVtdPjtcbiAgcHJpdmF0ZSByZWFkb25seSBuZXdQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgb2xkQ2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbGRQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgb2xkUGF0aEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgUmVmZXJlbmNlW10+O1xuICBwcml2YXRlIHJlYWRvbmx5IG9sZFBhdGhMaW5rczogUmVmZXJlbmNlW107XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3NNYW5hZ2VyOiBTZXR0aW5nc01hbmFnZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUmVuYW1lSGFuZGxlclBhcmFtcykge1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLm9sZFBhdGggPSBwYXJhbXMub2xkUGF0aDtcbiAgICB0aGlzLm5ld1BhdGggPSBwYXJhbXMubmV3UGF0aDtcbiAgICB0aGlzLm9sZFBhdGhCYWNrbGlua3NNYXAgPSBwYXJhbXMub2xkUGF0aEJhY2tsaW5rc01hcDtcbiAgICB0aGlzLm9sZENhY2hlID0gcGFyYW1zLm9sZENhY2hlO1xuICAgIHRoaXMuYWJvcnRTaWduYWwgPSBwYXJhbXMuYWJvcnRTaWduYWw7XG4gICAgdGhpcy5zZXR0aW5nc01hbmFnZXIgPSBwYXJhbXMuc2V0dGluZ3NNYW5hZ2VyO1xuICAgIHRoaXMuaW50ZXJydXB0ZWRSZW5hbWVzTWFwID0gcGFyYW1zLmludGVycnVwdGVkUmVuYW1lc01hcDtcbiAgICB0aGlzLm9sZFBhdGhMaW5rcyA9IHRoaXMub2xkQ2FjaGUgPyBnZXRBbGxMaW5rcyh0aGlzLm9sZENhY2hlKSA6IFtdO1xuICAgIHRoaXMuaGFuZGxlZFJlbmFtZXMgPSBwYXJhbXMuaGFuZGxlZFJlbmFtZXM7XG4gICAgdGhpcy5pbnRlcnJ1cHRlZENvbWJpbmVkQmFja2xpbmtzTWFwID0gcGFyYW1zLmludGVycnVwdGVkQ29tYmluZWRCYWNrbGlua3NNYXAgPz8gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm9sZFBhdGggPT09IHRoaXMubmV3UGF0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgYXdhaXQgdGhpcy5jb250aW51ZUludGVycnVwdGVkUmVuYW1lcygpO1xuICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBhd2FpdCB0aGlzLnJlZnJlc2hMaW5rcygpO1xuICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBpZiAoYXdhaXQgdGhpcy5oYW5kbGVDYXNlQ29sbGlzaW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBjb25zdCByZW5hbWVkRmlsZVBhdGhzID0gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlKHRoaXMuYXBwLCAncmVuYW1lZEZpbGVQYXRocycsIG5ldyBTZXQ8c3RyaW5nPigpKS52YWx1ZTtcbiAgICBjb25zdCByZW5hbWVkTGlua3MgPSBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUodGhpcy5hcHAsICdyZW5hbWVkTGlua1BhdGhzJywgbmV3IFNldDxzdHJpbmc+KCkpLnZhbHVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlbmFtZU1hcCA9IG5ldyBSZW5hbWVNYXAoe1xuICAgICAgICBhYm9ydFNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgbmV3UGF0aDogdGhpcy5uZXdQYXRoLFxuICAgICAgICBvbGRDYWNoZTogdGhpcy5vbGRDYWNoZSxcbiAgICAgICAgb2xkUGF0aDogdGhpcy5vbGRQYXRoLFxuICAgICAgICBzZXR0aW5nc01hbmFnZXI6IHRoaXMuc2V0dGluZ3NNYW5hZ2VyXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHJlbmFtZU1hcC5maWxsKCk7XG4gICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgIGNvbnN0IGNvbWJpbmVkQmFja2xpbmtzTWFwID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+KCk7XG4gICAgICByZW5hbWVNYXAuaW5pdE9yaWdpbmFsTGlua3NNYXAoY29tYmluZWRCYWNrbGlua3NNYXApO1xuICAgICAgcmVuYW1lTWFwLmluaXRCYWNrbGlua3NNYXAodGhpcy5vbGRQYXRoQmFja2xpbmtzTWFwLCBjb21iaW5lZEJhY2tsaW5rc01hcCwgdGhpcy5vbGRQYXRoKTtcblxuICAgICAgZm9yIChjb25zdCBhdHRhY2htZW50T2xkUGF0aCBvZiByZW5hbWVNYXAua2V5cygpKSB7XG4gICAgICAgIGlmIChhdHRhY2htZW50T2xkUGF0aCA9PT0gdGhpcy5vbGRQYXRoKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXR0YWNobWVudE9sZFBhdGhCYWNrbGlua3NNYXAgPSAoYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUodGhpcy5hcHAsIGF0dGFjaG1lbnRPbGRQYXRoKSkuZGF0YTtcbiAgICAgICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICByZW5hbWVNYXAuaW5pdEJhY2tsaW5rc01hcChhdHRhY2htZW50T2xkUGF0aEJhY2tsaW5rc01hcCwgY29tYmluZWRCYWNrbGlua3NNYXAsIGF0dGFjaG1lbnRPbGRQYXRoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFyZW50Rm9sZGVyUGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgZm9yIChjb25zdCBbb2xkQXR0YWNobWVudFBhdGgsIG5ld0F0dGFjaG1lbnRQYXRoXSBvZiByZW5hbWVNYXAuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChvbGRBdHRhY2htZW50UGF0aCAhPT0gdGhpcy5vbGRQYXRoKSB7XG4gICAgICAgICAgY29uc3QgZml4ZWROZXdBdHRhY2htZW50UGF0aCA9IGF3YWl0IHRoaXMucmVuYW1lSGFuZGxlZChvbGRBdHRhY2htZW50UGF0aCwgbmV3QXR0YWNobWVudFBhdGgpO1xuICAgICAgICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgICByZW5hbWVNYXAuc2V0KG9sZEF0dGFjaG1lbnRQYXRoLCBmaXhlZE5ld0F0dGFjaG1lbnRQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2V0dGluZ3NNYW5hZ2VyLmlzTm90ZUV4KG9sZEF0dGFjaG1lbnRQYXRoKSkge1xuICAgICAgICAgIHBhcmVudEZvbGRlclBhdGhzLmFkZChkaXJuYW1lKG9sZEF0dGFjaG1lbnRQYXRoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgY2xlYW51cFBhcmVudEZvbGRlcnModGhpcy5hcHAsIHRoaXMuc2V0dGluZ3NNYW5hZ2VyLmdldFNldHRpbmdzKCksIEFycmF5LmZyb20ocGFyZW50Rm9sZGVyUGF0aHMpKTtcbiAgICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5nc01hbmFnZXIuZ2V0U2V0dGluZ3MoKTtcblxuICAgICAgZm9yIChcbiAgICAgICAgY29uc3QgW25ld0JhY2tsaW5rUGF0aCwgbGlua0pzb25Ub1BhdGhNYXBdIG9mIEFycmF5LmZyb20oY29tYmluZWRCYWNrbGlua3NNYXAuZW50cmllcygpKS5jb25jYXQoXG4gICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLmludGVycnVwdGVkQ29tYmluZWRCYWNrbGlua3NNYXAuZW50cmllcygpKVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgbGV0IGxpbmtJbmRleCA9IDA7XG4gICAgICAgIGF3YWl0IGVkaXRMaW5rcyh0aGlzLmFwcCwgbmV3QmFja2xpbmtQYXRoLCAobGluaykgPT4ge1xuICAgICAgICAgIGxpbmtJbmRleCsrO1xuICAgICAgICAgIGNvbnN0IG9sZEF0dGFjaG1lbnRQYXRoID0gbGlua0pzb25Ub1BhdGhNYXAuZ2V0KHRvSnNvbihsaW5rKSk7XG4gICAgICAgICAgaWYgKCFvbGRBdHRhY2htZW50UGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5ld0F0dGFjaG1lbnRQYXRoID0gcmVuYW1lTWFwLmdldChvbGRBdHRhY2htZW50UGF0aCkgPz8gb2xkQXR0YWNobWVudFBhdGg7XG5cbiAgICAgICAgICByZW5hbWVkRmlsZVBhdGhzLmFkZChuZXdCYWNrbGlua1BhdGgpO1xuICAgICAgICAgIHJlbmFtZWRMaW5rcy5hZGQoYCR7bmV3QmFja2xpbmtQYXRofS8vJHtTdHJpbmcobGlua0luZGV4KX1gKTtcblxuICAgICAgICAgIHJldHVybiB1cGRhdGVMaW5rKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxVcGRhdGVMaW5rUGFyYW1zPih7XG4gICAgICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICAgICAgbGluayxcbiAgICAgICAgICAgIG5ld1NvdXJjZVBhdGhPckZpbGU6IG5ld0JhY2tsaW5rUGF0aCxcbiAgICAgICAgICAgIG5ld1RhcmdldFBhdGhPckZpbGU6IG5ld0F0dGFjaG1lbnRQYXRoLFxuICAgICAgICAgICAgb2xkVGFyZ2V0UGF0aE9yRmlsZTogb2xkQXR0YWNobWVudFBhdGgsXG4gICAgICAgICAgICBzaG91bGRVcGRhdGVGaWxlTmFtZUFsaWFzOiBzZXR0aW5ncy5zaG91bGRVcGRhdGVGaWxlTmFtZUFsaWFzZXNcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBzaG91bGRGYWlsT25NaXNzaW5nRmlsZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTm90ZSh0aGlzLmFwcCwgdGhpcy5uZXdQYXRoKSkge1xuICAgICAgICBhd2FpdCB1cGRhdGVMaW5rc0luRmlsZShub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VXBkYXRlTGlua3NJbkZpbGVQYXJhbXM+KHtcbiAgICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICAgIG5ld1NvdXJjZVBhdGhPckZpbGU6IHRoaXMubmV3UGF0aCxcbiAgICAgICAgICBvbGRTb3VyY2VQYXRoT3JGaWxlOiB0aGlzLm9sZFBhdGgsXG4gICAgICAgICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IGZhbHNlLFxuICAgICAgICAgIHNob3VsZFVwZGF0ZUZpbGVOYW1lQWxpYXM6IHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVOYW1lQWxpYXNlc1xuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFnZXRGaWxlT3JOdWxsKHRoaXMuYXBwLCB0aGlzLm5ld1BhdGgpKSB7XG4gICAgICAgIGxldCBpbnRlcnJ1cHRlZFJlbmFtZXMgPSB0aGlzLmludGVycnVwdGVkUmVuYW1lc01hcC5nZXQodGhpcy5uZXdQYXRoKTtcbiAgICAgICAgaWYgKCFpbnRlcnJ1cHRlZFJlbmFtZXMpIHtcbiAgICAgICAgICBpbnRlcnJ1cHRlZFJlbmFtZXMgPSBbXTtcbiAgICAgICAgICB0aGlzLmludGVycnVwdGVkUmVuYW1lc01hcC5zZXQodGhpcy5uZXdQYXRoLCBpbnRlcnJ1cHRlZFJlbmFtZXMpO1xuICAgICAgICB9XG4gICAgICAgIGludGVycnVwdGVkUmVuYW1lcy5wdXNoKHtcbiAgICAgICAgICBjb21iaW5lZEJhY2tsaW5rc01hcCxcbiAgICAgICAgICBvbGRQYXRoOiB0aGlzLm9sZFBhdGhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGNvbnN0IG9ycGhhbktleXMgPSBBcnJheS5mcm9tKHRoaXMuaGFuZGxlZFJlbmFtZXMua2V5cygpKTtcbiAgICAgIGFkZFRvUXVldWUoe1xuICAgICAgICBhYm9ydFNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgb3BlcmF0aW9uRm46ICgpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG9ycGhhbktleSBvZiBvcnBoYW5LZXlzKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZWRSZW5hbWVzLmRlbGV0ZShvcnBoYW5LZXkub2xkUGF0aCwgb3JwaGFuS2V5Lm5ld1BhdGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZW5hbWVkTGlua3Muc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXcgTm90aWNlKHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5yZW5hbWVEZWxldGVIYW5kbGVyLnVwZGF0ZWRMaW5rcywgeyBmaWxlc0NvdW50OiByZW5hbWVkRmlsZVBhdGhzLnNpemUsIGxpbmtzQ291bnQ6IHJlbmFtZWRMaW5rcy5zaXplIH0pKTtcbiAgICAgICAgICByZW5hbWVkRmlsZVBhdGhzLmNsZWFyKCk7XG4gICAgICAgICAgcmVuYW1lZExpbmtzLmNsZWFyKCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5yZW5hbWVEZWxldGVIYW5kbGVyLmhhbmRsZU9ycGhhbmVkUmVuYW1lcylcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udGludWVJbnRlcnJ1cHRlZFJlbmFtZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW50ZXJydXB0ZWRSZW5hbWVzID0gdGhpcy5pbnRlcnJ1cHRlZFJlbmFtZXNNYXAuZ2V0KHRoaXMub2xkUGF0aCk7XG4gICAgaWYgKGludGVycnVwdGVkUmVuYW1lcykge1xuICAgICAgdGhpcy5pbnRlcnJ1cHRlZFJlbmFtZXNNYXAuZGVsZXRlKHRoaXMub2xkUGF0aCk7XG4gICAgICBmb3IgKGNvbnN0IGludGVycnVwdGVkUmVuYW1lIG9mIGludGVycnVwdGVkUmVuYW1lcykge1xuICAgICAgICBhd2FpdCBuZXcgUmVuYW1lSGFuZGxlcih7XG4gICAgICAgICAgYWJvcnRTaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgICBoYW5kbGVkUmVuYW1lczogdGhpcy5oYW5kbGVkUmVuYW1lcyxcbiAgICAgICAgICBpbnRlcnJ1cHRlZENvbWJpbmVkQmFja2xpbmtzTWFwOiBpbnRlcnJ1cHRlZFJlbmFtZS5jb21iaW5lZEJhY2tsaW5rc01hcCxcbiAgICAgICAgICBpbnRlcnJ1cHRlZFJlbmFtZXNNYXA6IHRoaXMuaW50ZXJydXB0ZWRSZW5hbWVzTWFwLFxuICAgICAgICAgIG5ld1BhdGg6IHRoaXMubmV3UGF0aCxcbiAgICAgICAgICBvbGRDYWNoZTogdGhpcy5vbGRDYWNoZSxcbiAgICAgICAgICBvbGRQYXRoOiBpbnRlcnJ1cHRlZFJlbmFtZS5vbGRQYXRoLFxuICAgICAgICAgIG9sZFBhdGhCYWNrbGlua3NNYXA6IHRoaXMub2xkUGF0aEJhY2tsaW5rc01hcCxcbiAgICAgICAgICBzZXR0aW5nc01hbmFnZXI6IHRoaXMuc2V0dGluZ3NNYW5hZ2VyXG4gICAgICAgIH0pLmhhbmRsZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlQ2FzZUNvbGxpc2lvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUgfHwgdGhpcy5vbGRQYXRoLnRvTG93ZXJDYXNlKCkgIT09IHRoaXMubmV3UGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdGVtcFBhdGggPSBqb2luKGRpcm5hbWUodGhpcy5uZXdQYXRoKSwgYF9fdGVtcF9fJHtiYXNlbmFtZSh0aGlzLm5ld1BhdGgpfWApO1xuICAgIGF3YWl0IHRoaXMucmVuYW1lSGFuZGxlZCh0aGlzLm5ld1BhdGgsIHRlbXBQYXRoKTtcblxuICAgIGF3YWl0IG5ldyBSZW5hbWVIYW5kbGVyKHtcbiAgICAgIGFib3J0U2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsLFxuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIGhhbmRsZWRSZW5hbWVzOiB0aGlzLmhhbmRsZWRSZW5hbWVzLFxuICAgICAgaW50ZXJydXB0ZWRSZW5hbWVzTWFwOiB0aGlzLmludGVycnVwdGVkUmVuYW1lc01hcCxcbiAgICAgIG5ld1BhdGg6IHRlbXBQYXRoLFxuICAgICAgb2xkQ2FjaGU6IHRoaXMub2xkQ2FjaGUsXG4gICAgICBvbGRQYXRoOiB0aGlzLm9sZFBhdGgsXG4gICAgICBvbGRQYXRoQmFja2xpbmtzTWFwOiB0aGlzLm9sZFBhdGhCYWNrbGlua3NNYXAsXG4gICAgICBzZXR0aW5nc01hbmFnZXI6IHRoaXMuc2V0dGluZ3NNYW5hZ2VyXG4gICAgfSkuaGFuZGxlKCk7XG5cbiAgICBhd2FpdCB0aGlzLmFwcC5maWxlTWFuYWdlci5yZW5hbWVGaWxlKGdldEZpbGUodGhpcy5hcHAsIHRlbXBQYXRoKSwgdGhpcy5uZXdQYXRoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaExpbmtzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZSh0aGlzLm9sZFBhdGgpID8/IHRoaXMuYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Q2FjaGUodGhpcy5uZXdQYXRoKTtcbiAgICBjb25zdCBvbGRQYXRoTGlua3NSZWZyZXNoZWQgPSBjYWNoZSA/IGdldEFsbExpbmtzKGNhY2hlKSA6IFtdO1xuICAgIGNvbnN0IGZha2VPbGRGaWxlID0gZ2V0RmlsZSh0aGlzLmFwcCwgdGhpcy5vbGRQYXRoLCB0cnVlKTtcbiAgICBsZXQgb2xkUGF0aEJhY2tsaW5rc01hcFJlZnJlc2hlZCA9IG5ldyBNYXA8c3RyaW5nLCBSZWZlcmVuY2VbXT4oKTtcbiAgICBhd2FpdCB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bih0aGlzLmFwcCwgW2Zha2VPbGRGaWxlXSwgYXN5bmMgKCkgPT4ge1xuICAgICAgb2xkUGF0aEJhY2tsaW5rc01hcFJlZnJlc2hlZCA9IChhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZSh0aGlzLmFwcCwgZmFrZU9sZEZpbGUpKS5kYXRhO1xuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBsaW5rIG9mIG9sZFBhdGhMaW5rc1JlZnJlc2hlZCkge1xuICAgICAgaWYgKHRoaXMub2xkUGF0aExpbmtzLmluY2x1ZGVzKGxpbmspKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5vbGRQYXRoTGlua3MucHVzaChsaW5rKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtiYWNrbGlua1BhdGgsIHJlZnJlc2hlZExpbmtzXSBvZiBvbGRQYXRoQmFja2xpbmtzTWFwUmVmcmVzaGVkLmVudHJpZXMoKSkge1xuICAgICAgbGV0IG9sZExpbmtzID0gdGhpcy5vbGRQYXRoQmFja2xpbmtzTWFwLmdldChiYWNrbGlua1BhdGgpO1xuICAgICAgaWYgKCFvbGRMaW5rcykge1xuICAgICAgICBvbGRMaW5rcyA9IFtdO1xuICAgICAgICB0aGlzLm9sZFBhdGhCYWNrbGlua3NNYXAuc2V0KGJhY2tsaW5rUGF0aCwgb2xkTGlua3MpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgcmVmcmVzaGVkTGlua3MpIHtcbiAgICAgICAgaWYgKG9sZExpbmtzLmluY2x1ZGVzKGxpbmspKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb2xkTGlua3MucHVzaChsaW5rKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlbmFtZUhhbmRsZWQob2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIG5ld1BhdGggPSBnZXRTYWZlUmVuYW1lUGF0aCh0aGlzLmFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG4gICAgaWYgKG9sZFBhdGggPT09IG5ld1BhdGgpIHtcbiAgICAgIHJldHVybiBuZXdQYXRoO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZWRSZW5hbWVzLmFkZChvbGRQYXRoLCBuZXdQYXRoKTtcbiAgICBuZXdQYXRoID0gYXdhaXQgcmVuYW1lU2FmZSh0aGlzLmFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cbn1cblxuY2xhc3MgUmVuYW1lTWFwIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZXdQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgb2xkQ2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbGRQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgb2xkUGF0aExpbmtzOiBSZWZlcmVuY2VbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nc01hbmFnZXI6IFNldHRpbmdzTWFuYWdlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBSZW5hbWVNYXBQYXJhbXMpIHtcbiAgICB0aGlzLmFib3J0U2lnbmFsID0gcGFyYW1zLmFib3J0U2lnbmFsO1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLnNldHRpbmdzTWFuYWdlciA9IHBhcmFtcy5zZXR0aW5nc01hbmFnZXI7XG4gICAgdGhpcy5vbGRDYWNoZSA9IHBhcmFtcy5vbGRDYWNoZTtcbiAgICB0aGlzLm9sZFBhdGggPSBwYXJhbXMub2xkUGF0aDtcbiAgICB0aGlzLm5ld1BhdGggPSBwYXJhbXMubmV3UGF0aDtcbiAgICB0aGlzLm9sZFBhdGhMaW5rcyA9IHRoaXMub2xkQ2FjaGUgPyBnZXRBbGxMaW5rcyh0aGlzLm9sZENhY2hlKSA6IFtdO1xuICB9XG5cbiAgcHVibGljIGVudHJpZXMoKTogSXRlcmFibGVJdGVyYXRvcjxbc3RyaW5nLCBzdHJpbmddPiB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmVudHJpZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmaWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICB0aGlzLm1hcC5zZXQodGhpcy5vbGRQYXRoLCB0aGlzLm5ld1BhdGgpO1xuXG4gICAgaWYgKCFpc05vdGUodGhpcy5hcHAsIHRoaXMub2xkUGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3NNYW5hZ2VyLmdldFNldHRpbmdzKCk7XG5cbiAgICBjb25zdCBvbGRGaWxlID0gZ2V0RmlsZSh0aGlzLmFwcCwgdGhpcy5vbGRQYXRoLCB0cnVlKTtcbiAgICBsZXQgb2xkQXR0YWNobWVudEZvbGRlclBhdGggPSAnJztcbiAgICBhd2FpdCB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bkFzeW5jKHRoaXMuYXBwLCBbb2xkRmlsZV0sIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNob3VsZEZha2VPbGRQYXRoQ2FjaGUgPSB0aGlzLm9sZENhY2hlICYmIG9sZEZpbGUuZGVsZXRlZDtcbiAgICAgIGlmIChzaG91bGRGYWtlT2xkUGF0aENhY2hlKSB7XG4gICAgICAgIHJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlKHRoaXMuYXBwLCBvbGRGaWxlLCB0aGlzLm9sZENhY2hlKTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgb2xkQXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh0aGlzLmFwcCwgdGhpcy5vbGRQYXRoLCBBdHRhY2htZW50UGF0aENvbnRleHQuUmVuYW1lTm90ZSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoc2hvdWxkRmFrZU9sZFBhdGhDYWNoZSkge1xuICAgICAgICAgIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUodGhpcy5hcHAsIG9sZEZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCA9IHNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGb2xkZXJcbiAgICAgID8gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgodGhpcy5hcHAsIHRoaXMubmV3UGF0aCwgQXR0YWNobWVudFBhdGhDb250ZXh0LlJlbmFtZU5vdGUpXG4gICAgICA6IG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoO1xuXG4gICAgY29uc3QgaXNPbGRBdHRhY2htZW50Rm9sZGVyQXRSb290ID0gb2xkQXR0YWNobWVudEZvbGRlclBhdGggPT09ICcvJztcblxuICAgIGNvbnN0IG9sZEF0dGFjaG1lbnRGb2xkZXIgPSBnZXRGb2xkZXJPck51bGwodGhpcy5hcHAsIG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKTtcblxuICAgIGlmICghb2xkQXR0YWNobWVudEZvbGRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gbmV3QXR0YWNobWVudEZvbGRlclBhdGggJiYgIXNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9sZEF0dGFjaG1lbnRGaWxlczogVEZpbGVbXSA9IFtdO1xuXG4gICAgaWYgKGF3YWl0IGhhc093bkF0dGFjaG1lbnRGb2xkZXIodGhpcy5hcHAsIHRoaXMub2xkUGF0aCwgQXR0YWNobWVudFBhdGhDb250ZXh0LlJlbmFtZU5vdGUpKSB7XG4gICAgICBWYXVsdC5yZWN1cnNlQ2hpbGRyZW4ob2xkQXR0YWNobWVudEZvbGRlciwgKG9sZEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgaWYgKGlzRmlsZShvbGRBdHRhY2htZW50RmlsZSkpIHtcbiAgICAgICAgICBvbGRBdHRhY2htZW50RmlsZXMucHVzaChvbGRBdHRhY2htZW50RmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IG9sZFBhdGhMaW5rIG9mIHRoaXMub2xkUGF0aExpbmtzKSB7XG4gICAgICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgY29uc3Qgb2xkQXR0YWNobWVudEZpbGUgPSBleHRyYWN0TGlua0ZpbGUodGhpcy5hcHAsIG9sZFBhdGhMaW5rLCB0aGlzLm9sZFBhdGgpO1xuICAgICAgICBpZiAoIW9sZEF0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNPbGRBdHRhY2htZW50Rm9sZGVyQXRSb290IHx8IG9sZEF0dGFjaG1lbnRGaWxlLnBhdGguc3RhcnRzV2l0aChvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCkpIHtcbiAgICAgICAgICBjb25zdCBvbGRBdHRhY2htZW50QmFja2xpbmtzID0gYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUodGhpcy5hcHAsIG9sZEF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQ8c3RyaW5nPihvbGRBdHRhY2htZW50QmFja2xpbmtzLmtleXMoKSk7XG4gICAgICAgICAga2V5cy5kZWxldGUodGhpcy5vbGRQYXRoKTtcbiAgICAgICAgICBrZXlzLmRlbGV0ZSh0aGlzLm5ld1BhdGgpO1xuICAgICAgICAgIGlmIChrZXlzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIG9sZEF0dGFjaG1lbnRGaWxlcy5wdXNoKG9sZEF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG9sZEF0dGFjaG1lbnRGaWxlIG9mIG9sZEF0dGFjaG1lbnRGaWxlcykge1xuICAgICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgaWYgKHRoaXMuc2V0dGluZ3NNYW5hZ2VyLmlzTm90ZUV4KG9sZEF0dGFjaG1lbnRGaWxlLnBhdGgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgbmV3QXR0YWNobWVudEZpbGVQYXRoOiBzdHJpbmc7XG4gICAgICBpZiAoc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzKSB7XG4gICAgICAgIG5ld0F0dGFjaG1lbnRGaWxlUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGaWxlUGF0aCh7XG4gICAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgICBjb250ZXh0OiBBdHRhY2htZW50UGF0aENvbnRleHQuUmVuYW1lTm90ZSxcbiAgICAgICAgICBub3RlUGF0aE9yRmlsZTogdGhpcy5uZXdQYXRoLFxuICAgICAgICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBvbGRBdHRhY2htZW50RmlsZSxcbiAgICAgICAgICBvbGROb3RlUGF0aE9yRmlsZTogdGhpcy5vbGRQYXRoLFxuICAgICAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gaXNPbGRBdHRhY2htZW50Rm9sZGVyQXRSb290ID8gb2xkQXR0YWNobWVudEZpbGUucGF0aCA6IHJlbGF0aXZlKG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoLCBvbGRBdHRhY2htZW50RmlsZS5wYXRoKTtcbiAgICAgICAgY29uc3QgbmV3Rm9sZGVyID0gam9pbihuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCwgZGlybmFtZShyZWxhdGl2ZVBhdGgpKTtcbiAgICAgICAgbmV3QXR0YWNobWVudEZpbGVQYXRoID0gam9pbihuZXdGb2xkZXIsIG9sZEF0dGFjaG1lbnRGaWxlLm5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAob2xkQXR0YWNobWVudEZpbGUucGF0aCA9PT0gbmV3QXR0YWNobWVudEZpbGVQYXRoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNldHRpbmdzLnNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHMpIHtcbiAgICAgICAgY29uc3QgbmV3QXR0YWNobWVudEZpbGUgPSBnZXRGaWxlT3JOdWxsKHRoaXMuYXBwLCBuZXdBdHRhY2htZW50RmlsZVBhdGgpO1xuICAgICAgICBpZiAobmV3QXR0YWNobWVudEZpbGUpIHtcbiAgICAgICAgICBnZXRMaWJEZWJ1Z2dlcignUmVuYW1lRGVsZXRlSGFuZGxlcjpmaWxsUmVuYW1lTWFwJykoYFJlbW92aW5nIGNvbmZsaWN0aW5nIGF0dGFjaG1lbnQgJHtuZXdBdHRhY2htZW50RmlsZS5wYXRofS5gKTtcbiAgICAgICAgICBhd2FpdCB0cmFzaFNhZmUodGhpcy5hcHAsIG5ld0F0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRpciA9IGRpcm5hbWUobmV3QXR0YWNobWVudEZpbGVQYXRoKTtcbiAgICAgICAgY29uc3QgZXh0ID0gZXh0bmFtZShuZXdBdHRhY2htZW50RmlsZVBhdGgpO1xuICAgICAgICBjb25zdCBiYXNlTmFtZSA9IGJhc2VuYW1lKG5ld0F0dGFjaG1lbnRGaWxlUGF0aCwgZXh0KTtcbiAgICAgICAgbmV3QXR0YWNobWVudEZpbGVQYXRoID0gdGhpcy5hcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKGRpciwgYmFzZU5hbWUpLCBleHQuc2xpY2UoMSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5tYXAuc2V0KG9sZEF0dGFjaG1lbnRGaWxlLnBhdGgsIG5ld0F0dGFjaG1lbnRGaWxlUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldChvbGRQYXRoOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm1hcC5nZXQob2xkUGF0aCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdEJhY2tsaW5rc01hcChcbiAgICBzaW5nbGVCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIFJlZmVyZW5jZVtdPixcbiAgICBjb21iaW5lZEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj4sXG4gICAgcGF0aDogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgW2JhY2tsaW5rUGF0aCwgbGlua3NdIG9mIHNpbmdsZUJhY2tsaW5rc01hcC5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IG5ld0JhY2tsaW5rUGF0aCA9IHRoaXMubWFwLmdldChiYWNrbGlua1BhdGgpID8/IGJhY2tsaW5rUGF0aDtcbiAgICAgIGNvbnN0IGxpbmtKc29uVG9QYXRoTWFwID0gY29tYmluZWRCYWNrbGlua3NNYXAuZ2V0KG5ld0JhY2tsaW5rUGF0aCkgPz8gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICAgIGNvbWJpbmVkQmFja2xpbmtzTWFwLnNldChuZXdCYWNrbGlua1BhdGgsIGxpbmtKc29uVG9QYXRoTWFwKTtcbiAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgICBsaW5rSnNvblRvUGF0aE1hcC5zZXQodG9Kc29uKGxpbmspLCBwYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5pdE9yaWdpbmFsTGlua3NNYXAoY29tYmluZWRCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBvbGRQYXRoTGluayBvZiB0aGlzLm9sZFBhdGhMaW5rcykge1xuICAgICAgY29uc3Qgb2xkQXR0YWNobWVudEZpbGUgPSBleHRyYWN0TGlua0ZpbGUodGhpcy5hcHAsIG9sZFBhdGhMaW5rLCB0aGlzLm9sZFBhdGgpO1xuICAgICAgaWYgKCFvbGRBdHRhY2htZW50RmlsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJhY2tsaW5rc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZWZlcmVuY2VbXT4oKTtcbiAgICAgIGJhY2tsaW5rc01hcC5zZXQodGhpcy5uZXdQYXRoLCBbb2xkUGF0aExpbmtdKTtcbiAgICAgIHRoaXMuaW5pdEJhY2tsaW5rc01hcChiYWNrbGlua3NNYXAsIGNvbWJpbmVkQmFja2xpbmtzTWFwLCBvbGRBdHRhY2htZW50RmlsZS5wYXRoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMga2V5cygpOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLm1hcC5rZXlzKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0KG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5tYXAuc2V0KG9sZFBhdGgsIG5ld1BhdGgpO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSByZW5hbWUvZGVsZXRlIGhhbmRsZXJzLlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIGluc3RhbmNlLlxuICogQHBhcmFtIHNldHRpbmdzQnVpbGRlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZXR0aW5ncyBmb3IgdGhlIHJlbmFtZSBkZWxldGUgaGFuZGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUmVuYW1lRGVsZXRlSGFuZGxlcnMocGx1Z2luOiBBYm9ydGFibGVQbHVnaW4sIHNldHRpbmdzQnVpbGRlcjogKCkgPT4gUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+KTogdm9pZCB7XG4gIG5ldyBSZWdpc3RyeShwbHVnaW4sIHNldHRpbmdzQnVpbGRlciwgbmV3IFNldHRpbmdzTWFuYWdlcihwbHVnaW4uYXBwKSkucmVnaXN0ZXIoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW51cFBhcmVudEZvbGRlcnMoYXBwOiBBcHAsIHNldHRpbmdzOiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4sIHBhcmVudEZvbGRlclBhdGhzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoc2V0dGluZ3MuZW1wdHlGb2xkZXJCZWhhdmlvciA9PT0gRW1wdHlGb2xkZXJCZWhhdmlvci5LZWVwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAoY29uc3QgcGFyZW50Rm9sZGVyUGF0aCBvZiBwYXJlbnRGb2xkZXJQYXRocykge1xuICAgIHN3aXRjaCAoc2V0dGluZ3MuZW1wdHlGb2xkZXJCZWhhdmlvcikge1xuICAgICAgY2FzZSBFbXB0eUZvbGRlckJlaGF2aW9yLkRlbGV0ZTpcbiAgICAgICAgYXdhaXQgZGVsZXRlRW1wdHlGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVtcHR5Rm9sZGVyQmVoYXZpb3IuRGVsZXRlV2l0aEVtcHR5UGFyZW50czpcbiAgICAgICAgYXdhaXQgZGVsZXRlRW1wdHlGb2xkZXJIaWVyYXJjaHkoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQkEscUJBQWtCO0FBQ2xCLHNCQUdPO0FBQ1AsNkJBQW1DO0FBT25DLDhCQUFpQztBQUNqQyxtQkFBOEI7QUFDOUIsbUJBQStCO0FBQy9CLDBCQUdPO0FBQ1Asa0JBTU87QUFDUCxpQkFBeUM7QUFDekMsNkJBS087QUFDUCx5QkFRTztBQUNQLGtCQUtPO0FBQ1AsNEJBUU87QUFDUCwyQkFBOEI7QUFDOUIsbUJBQTJCO0FBQzNCLDBCQUFnQztBQUNoQyxtQkFNTztBQUtBLElBQUssc0JBQUwsa0JBQUtBLHlCQUFMO0FBSUwsRUFBQUEscUJBQUEsWUFBUztBQUtULEVB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TUFDTTtBQUNOLGVBQVcsQ0FBQyxjQUFjLEtBQUssS0FBSyxtQkFBbUIsUUFBUSxHQUFHO0FBQ2hFLFlBQU0sa0JBQWtCLEtBQUssSUFBSSxJQUFJLFlBQVksS0FBSztBQUN0RCxZQUFNLG9CQUFvQixxQkFBcUIsSUFBSSxlQUFlLEtBQUssb0JBQUksSUFBb0I7QUFDL0YsMkJBQXFCLElBQUksaUJBQWlCLGlCQUFpQjtBQUMzRCxpQkFBVyxRQUFRLE9BQU87QUFDeEIsMEJBQWtCLFFBQUksNEJBQU8sSUFBSSxHQUFHLElBQUk7QUFBQSxNQUMxQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFFTyxxQkFBcUIsc0JBQThEO0FBQ3hGLGVBQVcsZUFBZSxLQUFLLGNBQWM7QUFDM0MsWUFBTSx3QkFBb0IsNkJBQWdCLEtBQUssS0FBSyxhQUFhLEtBQUssT0FBTztBQUM3RSxVQUFJLENBQUMsbUJBQW1CO0FBQ3RCO0FBQUEsTUFDRjtBQUNBLFlBQU0sZUFBZSxvQkFBSSxJQUF5QjtBQUNsRCxtQkFBYSxJQUFJLEtBQUssU0FBUyxDQUFDLFdBQVcsQ0FBQztBQUM1QyxXQUFLLGlCQUFpQixjQUFjLHNCQUFzQixrQkFBa0IsSUFBSTtBQUFBLElBQ2xGO0FBQUEsRUFDRjtBQUFBLEVBRU8sT0FBaUM7QUFDdEMsV0FBTyxLQUFLLElBQUksS0FBSztBQUFBLEVBQ3ZCO0FBQUEsRUFFTyxJQUFJLFNBQWlCLFNBQXVCO0FBQ2pELFNBQUssSUFBSSxJQUFJLFNBQVMsT0FBTztBQUFBLEVBQy9CO0FBQ0Y7QUFRTyxTQUFTLDZCQUE2QixRQUF5QixpQkFBbUU7QUFDdkksTUFBSSxTQUFTLFFBQVEsaUJBQWlCLElBQUksZ0JBQWdCLE9BQU8sR0FBRyxDQUFDLEVBQUUsU0FBUztBQUNsRjtBQUVBLGVBQWUscUJBQXFCLEtBQVUsVUFBZ0QsbUJBQTRDO0FBQ3hJLE1BQUksU0FBUyx3QkFBd0IsbUJBQTBCO0FBQzdEO0FBQUEsRUFDRjtBQUNBLGFBQVcsb0JBQW9CLG1CQUFtQjtBQUNoRCxZQUFRLFNBQVMscUJBQXFCO0FBQUEsTUFDcEMsS0FBSztBQUNILGtCQUFNLGdDQUFrQixLQUFLLGdCQUFnQjtBQUM3QztBQUFBLE1BQ0YsS0FBSztBQUNILGtCQUFNLHlDQUEyQixLQUFLLGdCQUFnQjtBQUN0RDtBQUFBLE1BQ0Y7QUFDRTtBQUFBLElBQ0o7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbIkVtcHR5Rm9sZGVyQmVoYXZpb3IiXQp9Cg==
|