@mnaoumov/obsidian-lib 10.11.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/components/all-windows-status-bar-item-component/package.json +6 -0
- package/components/shared-component-pool-component/package.json +6 -0
- package/components/worker-component/package.json +6 -0
- package/components/worker-pool-component/package.json +6 -0
- package/components/workspace-layout-state-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +477 -285
- package/dist/lib/cjs/__merged.d.cts +26 -10
- package/dist/lib/cjs/anchored-suggest.cjs +1 -1
- package/dist/lib/cjs/app.cjs +2 -2
- package/dist/lib/cjs/async-with-notice.cjs +4 -4
- package/dist/lib/cjs/attachment-path.cjs +9 -9
- package/dist/lib/cjs/attachment-path.d.cts +3 -3
- package/dist/lib/cjs/attachment-unit-folder.cjs +2 -2
- package/dist/lib/cjs/backlink-index.cjs +5 -5
- package/dist/lib/cjs/backlink.cjs +7 -7
- package/dist/lib/cjs/bases-view-registrar.cjs +1 -1
- package/dist/lib/cjs/broken-link-candidates.cjs +1 -1
- package/dist/lib/cjs/bug-report-diagnostics.cjs +222 -0
- package/dist/lib/cjs/bug-report-diagnostics.d.cts +186 -0
- package/dist/lib/cjs/bug-report.cjs +38 -12
- package/dist/lib/cjs/bug-report.d.cts +65 -0
- package/dist/lib/cjs/bulk-operation-progress.cjs +1 -1
- package/dist/lib/cjs/bulk-operation.cjs +2 -2
- package/dist/lib/cjs/callout.cjs +6 -6
- package/dist/lib/cjs/canvas.cjs +11 -9
- package/dist/lib/cjs/canvas.d.cts +13 -0
- package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -3
- package/dist/lib/cjs/code-block-render-handoff.cjs +5 -5
- package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +4 -4
- package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +2 -2
- package/dist/lib/cjs/codemirror/index.cjs +7 -7
- package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +5 -5
- package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +2 -2
- package/dist/lib/cjs/codemirror/settings-facet.cjs +1 -1
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +17 -17
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +13 -13
- package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -2
- package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +10 -10
- package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +7 -7
- package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -3
- package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -3
- package/dist/lib/cjs/command-handlers/global-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/index.cjs +15 -15
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +95 -4
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +34 -2
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +1 -1
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -1
- package/dist/lib/cjs/community-plugins.cjs +3 -3
- package/dist/lib/cjs/components/abort-signal-component.cjs +2 -2
- package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
- package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +245 -0
- package/dist/lib/cjs/components/all-windows-status-bar-item-component.d.cts +146 -0
- package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
- package/dist/lib/cjs/components/async-events-component.cjs +1 -1
- package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +12 -12
- package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +2 -2
- package/dist/lib/cjs/components/component-ex.cjs +21 -11
- package/dist/lib/cjs/components/component-ex.d.cts +11 -0
- package/dist/lib/cjs/components/console-debug-component.cjs +2 -2
- package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -2
- package/dist/lib/cjs/components/disposable-component.cjs +2 -2
- package/dist/lib/cjs/components/embed-extensions-component.cjs +21 -4
- package/dist/lib/cjs/components/embed-extensions-component.d.cts +8 -0
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +24 -10
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.d.cts +9 -0
- package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +7 -7
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +2 -2
- package/dist/lib/cjs/components/incremental-file-index-component.cjs +4 -4
- package/dist/lib/cjs/components/index.cjs +54 -39
- package/dist/lib/cjs/components/index.d.cts +5 -0
- package/dist/lib/cjs/components/layout-ready-component.cjs +3 -3
- package/dist/lib/cjs/components/menu-event-registrar-component.cjs +2 -2
- package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
- package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
- package/dist/lib/cjs/components/plugin-gate-component.cjs +69 -36
- package/dist/lib/cjs/components/plugin-gate-component.d.cts +36 -13
- package/dist/lib/cjs/components/plugin-notice-component.cjs +39 -33
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +4 -3
- package/dist/lib/cjs/components/plugin-settings-component.cjs +119 -18
- package/dist/lib/cjs/components/plugin-settings-component.d.cts +35 -5
- package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -2
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +8 -8
- package/dist/lib/cjs/components/pointer-position-component.cjs +2 -2
- package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +3 -3
- package/dist/lib/cjs/components/registry-component.cjs +2 -2
- package/dist/lib/cjs/components/release-notes-component.cjs +6 -6
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +25 -25
- package/dist/lib/cjs/components/rmdir-guard-component.cjs +2 -2
- package/dist/lib/cjs/components/settings-facet-component.cjs +1 -1
- package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
- package/dist/lib/cjs/components/shared-component-pool-component.cjs +368 -0
- package/dist/lib/cjs/components/shared-component-pool-component.d.cts +129 -0
- package/dist/lib/cjs/components/style-sheet-component.cjs +3 -3
- package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -3
- package/dist/lib/cjs/components/templates-language-component.cjs +1 -1
- package/dist/lib/cjs/components/worker-component.cjs +363 -0
- package/dist/lib/cjs/components/worker-component.d.cts +156 -0
- package/dist/lib/cjs/components/worker-pool-component.cjs +185 -0
- package/dist/lib/cjs/components/worker-pool-component.d.cts +102 -0
- package/dist/lib/cjs/components/workspace-layout-state-component.cjs +495 -0
- package/dist/lib/cjs/components/workspace-layout-state-component.d.cts +239 -0
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
- package/dist/lib/cjs/constructors/index.cjs +1 -1
- package/dist/lib/cjs/css-class.cjs +5 -1
- package/dist/lib/cjs/css-class.d.cts +16 -0
- package/dist/lib/cjs/data-handler.cjs +264 -6
- package/dist/lib/cjs/data-handler.d.cts +219 -2
- package/dist/lib/cjs/data-stores/data-store-locations.cjs +82 -24
- package/dist/lib/cjs/data-stores/data-store-locations.d.cts +15 -0
- package/dist/lib/cjs/data-stores/data-store-replica.cjs +33 -5
- package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
- package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +2 -2
- package/dist/lib/cjs/data-stores/data-store-transport.cjs +81 -8
- package/dist/lib/cjs/data-stores/data-store-transport.d.cts +30 -1
- package/dist/lib/cjs/data-stores/index.cjs +6 -6
- package/dist/lib/cjs/data-stores/local-data-store.cjs +74 -10
- package/dist/lib/cjs/data-stores/local-data-store.d.cts +58 -1
- package/dist/lib/cjs/data-stores/shared-data-store.cjs +76 -19
- package/dist/lib/cjs/data-stores/shared-data-store.d.cts +18 -1
- package/dist/lib/cjs/dataview-link.cjs +2 -2
- package/dist/lib/cjs/dataview.cjs +27 -7
- package/dist/lib/cjs/dataview.d.cts +14 -0
- package/dist/lib/cjs/debug.cjs +3 -3
- package/dist/lib/cjs/demo-vault-helper.cjs +34 -6
- package/dist/lib/cjs/demo-vault-helper.d.cts +6 -2
- package/dist/lib/cjs/desktop-bulk-operation-git.cjs +10 -10
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +13 -13
- package/dist/lib/cjs/desktop-git-runner.cjs +4 -14
- package/dist/lib/cjs/desktop-git-runner.d.cts +8 -2
- package/dist/lib/cjs/desktop-operating-system.cjs +1 -1
- package/dist/lib/cjs/desktop-request-url-stream.cjs +8 -14
- package/dist/lib/cjs/desktop-trusted-input.cjs +2 -2
- package/dist/lib/cjs/disposable.cjs +150 -0
- package/dist/lib/cjs/disposable.d.cts +39 -0
- package/dist/lib/cjs/editor-extension-registrar.cjs +1 -1
- package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -2
- package/dist/lib/cjs/editor-suggest.cjs +1 -1
- package/dist/lib/cjs/editor.cjs +6 -6
- package/dist/lib/cjs/events.cjs +2 -2
- package/dist/lib/cjs/extensions-registrar.cjs +1 -1
- package/dist/lib/cjs/feature-request.cjs +1 -1
- package/dist/lib/cjs/file-change.cjs +10 -10
- package/dist/lib/cjs/file-explorer.cjs +2 -2
- package/dist/lib/cjs/file-manager.cjs +5 -5
- package/dist/lib/cjs/file-system.cjs +10 -10
- package/dist/lib/cjs/folder-note.cjs +4 -4
- package/dist/lib/cjs/frontmatter-formatting.cjs +7 -6
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +1 -1
- package/dist/lib/cjs/frontmatter.cjs +5 -5
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/git-rename-history.cjs +1 -1
- package/dist/lib/cjs/git-rename-history.d.cts +2 -2
- package/dist/lib/cjs/hotkey.cjs +1 -1
- package/dist/lib/cjs/hover-link-source-registrar.cjs +1 -1
- package/dist/lib/cjs/html-element.cjs +2 -2
- package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -1
- package/dist/lib/cjs/i18n/default-translations.cjs +1 -1
- package/dist/lib/cjs/i18n/i18n.cjs +7 -7
- package/dist/lib/cjs/i18n/index.cjs +4 -4
- package/dist/lib/cjs/i18n/locales/en.cjs +27 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +26 -0
- package/dist/lib/cjs/i18n/locales/index.cjs +2 -2
- package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -1
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +26 -0
- package/dist/lib/cjs/index.cjs +147 -126
- package/dist/lib/cjs/index.d.cts +7 -0
- package/dist/lib/cjs/inline-token-renderer.cjs +2 -2
- package/dist/lib/cjs/is-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/library-styles.cjs +3 -3
- package/dist/lib/cjs/link-and-tag-input-suggest.cjs +2 -2
- package/dist/lib/cjs/link.cjs +76 -56
- package/dist/lib/cjs/link.d.cts +20 -14
- package/dist/lib/cjs/logger.cjs +4 -4
- package/dist/lib/cjs/loop.cjs +10 -16
- package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +17 -2
- package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +7 -0
- package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -13
- package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -2
- package/dist/lib/cjs/markdown-view.cjs +191 -3
- package/dist/lib/cjs/markdown-view.d.cts +48 -1
- package/dist/lib/cjs/markdown.cjs +12 -12
- package/dist/lib/cjs/metadata-cache.cjs +23 -23
- package/dist/lib/cjs/metadata-cache.d.cts +5 -4
- package/dist/lib/cjs/misplaced-attachment.cjs +297 -0
- package/dist/lib/cjs/misplaced-attachment.d.cts +228 -0
- package/dist/lib/cjs/mobile-app-info.cjs +1 -1
- package/dist/lib/cjs/modals/alert.cjs +4 -4
- package/dist/lib/cjs/modals/code-block-builder.cjs +7 -7
- package/dist/lib/cjs/modals/confirm.cjs +4 -4
- package/dist/lib/cjs/modals/copy-text-manually.cjs +181 -0
- package/dist/lib/cjs/modals/copy-text-manually.d.cts +38 -0
- package/dist/lib/cjs/modals/index.cjs +17 -11
- package/dist/lib/cjs/modals/index.d.cts +2 -0
- package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
- package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -3
- package/dist/lib/cjs/modals/modal.cjs +3 -3
- package/dist/lib/cjs/modals/prompt.cjs +10 -10
- package/dist/lib/cjs/modals/prompt.d.cts +1 -1
- package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +202 -0
- package/dist/lib/cjs/modals/review-bug-report-diagnostics.d.cts +30 -0
- package/dist/lib/cjs/modals/select-item.cjs +6 -6
- package/dist/lib/cjs/modals/select-option.cjs +3 -3
- package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
- package/dist/lib/cjs/note-priority.cjs +2 -2
- package/dist/lib/cjs/notebook-navigator.cjs +12 -2
- package/dist/lib/cjs/notebook-navigator.d.cts +6 -0
- package/dist/lib/cjs/obsidian-lib-state.cjs +1 -1
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +1 -1
- package/dist/lib/cjs/obsidian-settings.cjs +1 -1
- package/dist/lib/cjs/obsidian-word-characters.cjs +1 -1
- package/dist/lib/cjs/parse-link.cjs +14 -14
- package/dist/lib/cjs/path-compatibility.cjs +368 -0
- package/dist/lib/cjs/path-compatibility.d.cts +263 -0
- package/dist/lib/cjs/path-settings.cjs +3 -3
- package/dist/lib/cjs/pdf.cjs +2 -2
- package/dist/lib/cjs/plugin/index.cjs +18 -12
- package/dist/lib/cjs/plugin/index.d.cts +2 -0
- package/dist/lib/cjs/plugin/plugin-api.cjs +21 -12
- package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -1
- package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +6 -3
- package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +5 -0
- package/dist/lib/cjs/plugin/plugin-context.cjs +10 -9
- package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -1
- package/dist/lib/cjs/plugin/plugin-event-source.d.cts +4 -4
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +49 -4
- package/dist/lib/cjs/plugin/plugin-install-state.d.cts +30 -0
- package/dist/lib/cjs/plugin/plugin-instance.cjs +450 -0
- package/dist/lib/cjs/plugin/plugin-instance.d.cts +258 -0
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -1
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +6 -4
- package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +15 -15
- package/dist/lib/cjs/plugin/plugin.cjs +133 -34
- package/dist/lib/cjs/plugin/plugin.d.cts +35 -5
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +1 -1
- package/dist/lib/cjs/plugin/third-party-plugin.cjs +231 -0
- package/dist/lib/cjs/plugin/third-party-plugin.d.cts +244 -0
- package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -2
- package/dist/lib/cjs/popovers/field-popover.cjs +4 -4
- package/dist/lib/cjs/popovers/index.cjs +3 -3
- package/dist/lib/cjs/popovers/popover-anchor.cjs +1 -1
- package/dist/lib/cjs/popovers/popover.cjs +5 -5
- package/dist/lib/cjs/queue.cjs +8 -8
- package/dist/lib/cjs/react/app-context.cjs +3 -3
- package/dist/lib/cjs/react/index.cjs +1 -1
- package/dist/lib/cjs/reference-definition.cjs +1 -1
- package/dist/lib/cjs/reference.cjs +3 -3
- package/dist/lib/cjs/release-asset.cjs +5 -5
- package/dist/lib/cjs/rendered-markdown.cjs +4 -4
- package/dist/lib/cjs/request-url.cjs +4 -4
- package/dist/lib/cjs/resource-lock.cjs +46 -42
- package/dist/lib/cjs/resource-lock.d.cts +8 -7
- package/dist/lib/cjs/resource-url.cjs +3 -3
- package/dist/lib/cjs/ribbon-icon-registrar.cjs +1 -1
- package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +7 -7
- package/dist/lib/cjs/setting-components/date-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/date-time-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/email-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/file-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/folder-list-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/hotkey-component.cjs +5 -5
- package/dist/lib/cjs/setting-components/index.cjs +30 -30
- package/dist/lib/cjs/setting-components/list-component.cjs +5 -5
- package/dist/lib/cjs/setting-components/month-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/multiple-email-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/multiple-text-component.cjs +9 -6
- package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +4 -1
- package/dist/lib/cjs/setting-components/number-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/password-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -3
- package/dist/lib/cjs/setting-components/tag-list-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/telephone-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/text-based-component.cjs +1 -1
- package/dist/lib/cjs/setting-components/time-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -1
- package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/url-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/validator-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/week-component.cjs +4 -4
- package/dist/lib/cjs/setting-ex.cjs +26 -26
- package/dist/lib/cjs/setting-group-ex.cjs +2 -2
- package/dist/lib/cjs/settings-recovery.cjs +217 -0
- package/dist/lib/cjs/settings-recovery.d.cts +178 -0
- package/dist/lib/cjs/settings-tabs.cjs +5 -5
- package/dist/lib/cjs/status-bar-item-registrar.cjs +1 -1
- package/dist/lib/cjs/templater.cjs +14 -4
- package/dist/lib/cjs/templater.d.cts +6 -0
- package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -2
- package/dist/lib/cjs/transformers/index.cjs +1 -1
- package/dist/lib/cjs/trusted-input.cjs +1 -1
- package/dist/lib/cjs/validation.cjs +4 -4
- package/dist/lib/cjs/vault-delete.cjs +6 -6
- package/dist/lib/cjs/vault-transaction.cjs +5 -5
- package/dist/lib/cjs/vault.cjs +12 -12
- package/dist/lib/cjs/view-registrar.cjs +1 -1
- package/dist/lib/cjs/virtual-file.cjs +16 -14
- package/dist/lib/cjs/virtual-file.d.cts +2 -1
- package/dist/lib/cjs/wasm.cjs +119 -0
- package/dist/lib/cjs/wasm.d.cts +54 -0
- package/dist/lib/cjs/worker-protocol.cjs +209 -0
- package/dist/lib/cjs/worker-protocol.d.cts +282 -0
- package/dist/lib/cjs/workspace.cjs +1 -1
- package/dist/lib/esm/__merged.d.mts +26 -10
- package/dist/lib/esm/__merged.mjs +215 -5
- package/dist/lib/esm/app.mjs +2 -2
- package/dist/lib/esm/attachment-path.d.mts +3 -3
- package/dist/lib/esm/attachment-path.mjs +2 -2
- package/dist/lib/esm/backlink-index.mjs +2 -2
- package/dist/lib/esm/bug-report-diagnostics.d.mts +186 -0
- package/dist/lib/esm/bug-report-diagnostics.mjs +127 -0
- package/dist/lib/esm/bug-report.d.mts +65 -0
- package/dist/lib/esm/bug-report.mjs +33 -10
- package/dist/lib/esm/canvas.d.mts +13 -0
- package/dist/lib/esm/canvas.mjs +6 -5
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +13 -13
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +14 -14
- package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +7 -7
- package/dist/lib/esm/command-handlers/editor-command-handler.mjs +8 -8
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +34 -2
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +99 -3
- package/dist/lib/esm/components/all-windows-status-bar-item-component.d.mts +146 -0
- package/dist/lib/esm/components/all-windows-status-bar-item-component.mjs +154 -0
- package/dist/lib/esm/components/component-ex.d.mts +11 -0
- package/dist/lib/esm/components/component-ex.mjs +19 -6
- package/dist/lib/esm/components/disposable-component.mjs +1 -1
- package/dist/lib/esm/components/embed-extensions-component.d.mts +8 -0
- package/dist/lib/esm/components/embed-extensions-component.mjs +20 -3
- package/dist/lib/esm/components/embeddable-markdown-editor-component.d.mts +9 -0
- package/dist/lib/esm/components/embeddable-markdown-editor-component.mjs +16 -2
- package/dist/lib/esm/components/index.d.mts +5 -0
- package/dist/lib/esm/components/index.mjs +12 -2
- package/dist/lib/esm/components/plugin-gate-component.d.mts +36 -13
- package/dist/lib/esm/components/plugin-gate-component.mjs +61 -26
- package/dist/lib/esm/components/plugin-notice-component.d.mts +4 -3
- package/dist/lib/esm/components/plugin-notice-component.mjs +30 -21
- package/dist/lib/esm/components/plugin-settings-component.d.mts +35 -5
- package/dist/lib/esm/components/plugin-settings-component.mjs +105 -4
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +2 -2
- package/dist/lib/esm/components/shared-component-pool-component.d.mts +129 -0
- package/dist/lib/esm/components/shared-component-pool-component.mjs +280 -0
- package/dist/lib/esm/components/worker-component.d.mts +156 -0
- package/dist/lib/esm/components/worker-component.mjs +279 -0
- package/dist/lib/esm/components/worker-pool-component.d.mts +102 -0
- package/dist/lib/esm/components/worker-pool-component.mjs +95 -0
- package/dist/lib/esm/components/workspace-layout-state-component.d.mts +239 -0
- package/dist/lib/esm/components/workspace-layout-state-component.mjs +404 -0
- package/dist/lib/esm/css-class.d.mts +16 -0
- package/dist/lib/esm/css-class.mjs +5 -1
- package/dist/lib/esm/data-handler.d.mts +219 -2
- package/dist/lib/esm/data-handler.mjs +262 -5
- package/dist/lib/esm/data-stores/data-store-locations.d.mts +15 -0
- package/dist/lib/esm/data-stores/data-store-locations.mjs +80 -22
- package/dist/lib/esm/data-stores/data-store-replica.mjs +33 -5
- package/dist/lib/esm/data-stores/data-store-seeds.d.mts +2 -2
- package/dist/lib/esm/data-stores/data-store-seeds.mjs +4 -4
- package/dist/lib/esm/data-stores/data-store-transport.d.mts +30 -1
- package/dist/lib/esm/data-stores/data-store-transport.mjs +78 -5
- package/dist/lib/esm/data-stores/local-data-store.d.mts +58 -1
- package/dist/lib/esm/data-stores/local-data-store.mjs +71 -9
- package/dist/lib/esm/data-stores/shared-data-store.d.mts +18 -1
- package/dist/lib/esm/data-stores/shared-data-store.mjs +72 -15
- package/dist/lib/esm/dataview.d.mts +14 -0
- package/dist/lib/esm/dataview.mjs +19 -1
- package/dist/lib/esm/demo-vault-helper.d.mts +6 -2
- package/dist/lib/esm/demo-vault-helper.mjs +29 -1
- package/dist/lib/esm/desktop-demo-vault-opener.mjs +1 -1
- package/dist/lib/esm/desktop-git-runner.d.mts +8 -2
- package/dist/lib/esm/desktop-git-runner.mjs +3 -3
- package/dist/lib/esm/desktop-request-url-stream.mjs +4 -10
- package/dist/lib/esm/disposable.d.mts +39 -0
- package/dist/lib/esm/disposable.mjs +64 -0
- package/dist/lib/esm/file-system.mjs +2 -2
- package/dist/lib/esm/frontmatter-formatting.mjs +2 -1
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/git-rename-history.d.mts +2 -2
- package/dist/lib/esm/git-rename-history.mjs +1 -1
- package/dist/lib/esm/i18n/locales/en.d.mts +26 -0
- package/dist/lib/esm/i18n/locales/en.mjs +27 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +26 -0
- package/dist/lib/esm/index.d.mts +7 -0
- package/dist/lib/esm/index.mjs +15 -1
- package/dist/lib/esm/link.d.mts +20 -14
- package/dist/lib/esm/link.mjs +57 -38
- package/dist/lib/esm/loop.mjs +2 -8
- package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +7 -0
- package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +16 -1
- package/dist/lib/esm/markdown-view.d.mts +48 -1
- package/dist/lib/esm/markdown-view.mjs +192 -2
- package/dist/lib/esm/metadata-cache.d.mts +5 -4
- package/dist/lib/esm/metadata-cache.mjs +6 -6
- package/dist/lib/esm/misplaced-attachment.d.mts +228 -0
- package/dist/lib/esm/misplaced-attachment.mjs +212 -0
- package/dist/lib/esm/modals/copy-text-manually.d.mts +38 -0
- package/dist/lib/esm/modals/copy-text-manually.mjs +99 -0
- package/dist/lib/esm/modals/index.d.mts +2 -0
- package/dist/lib/esm/modals/index.mjs +5 -1
- package/dist/lib/esm/modals/prompt.d.mts +1 -1
- package/dist/lib/esm/modals/prompt.mjs +1 -1
- package/dist/lib/esm/modals/review-bug-report-diagnostics.d.mts +30 -0
- package/dist/lib/esm/modals/review-bug-report-diagnostics.mjs +120 -0
- package/dist/lib/esm/notebook-navigator.d.mts +6 -0
- package/dist/lib/esm/notebook-navigator.mjs +11 -2
- package/dist/lib/esm/parse-link.mjs +4 -4
- package/dist/lib/esm/path-compatibility.d.mts +263 -0
- package/dist/lib/esm/path-compatibility.mjs +277 -0
- package/dist/lib/esm/plugin/index.d.mts +2 -0
- package/dist/lib/esm/plugin/index.mjs +6 -2
- package/dist/lib/esm/plugin/plugin-api.d.mts +5 -1
- package/dist/lib/esm/plugin/plugin-api.mjs +13 -4
- package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +5 -0
- package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +3 -1
- package/dist/lib/esm/plugin/plugin-context.mjs +2 -1
- package/dist/lib/esm/plugin/plugin-event-source.d.mts +4 -4
- package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
- package/dist/lib/esm/plugin/plugin-install-state.d.mts +30 -0
- package/dist/lib/esm/plugin/plugin-install-state.mjs +44 -1
- package/dist/lib/esm/plugin/plugin-instance.d.mts +258 -0
- package/dist/lib/esm/plugin/plugin-instance.mjs +367 -0
- package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +6 -4
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -1
- package/dist/lib/esm/plugin/plugin.d.mts +35 -5
- package/dist/lib/esm/plugin/plugin.mjs +118 -9
- package/dist/lib/esm/plugin/third-party-plugin.d.mts +244 -0
- package/dist/lib/esm/plugin/third-party-plugin.mjs +147 -0
- package/dist/lib/esm/release-asset.mjs +1 -1
- package/dist/lib/esm/resource-lock.d.mts +8 -7
- package/dist/lib/esm/resource-lock.mjs +31 -26
- package/dist/lib/esm/setting-components/multiple-text-component.d.mts +4 -1
- package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -3
- package/dist/lib/esm/settings-recovery.d.mts +178 -0
- package/dist/lib/esm/settings-recovery.mjs +125 -0
- package/dist/lib/esm/settings-tabs.mjs +2 -2
- package/dist/lib/esm/templater.d.mts +6 -0
- package/dist/lib/esm/templater.mjs +11 -2
- package/dist/lib/esm/vault.mjs +1 -1
- package/dist/lib/esm/virtual-file.d.mts +2 -1
- package/dist/lib/esm/virtual-file.mjs +7 -5
- package/dist/lib/esm/wasm.d.mts +54 -0
- package/dist/lib/esm/wasm.mjs +30 -0
- package/dist/lib/esm/worker-protocol.d.mts +282 -0
- package/dist/lib/esm/worker-protocol.mjs +113 -0
- package/dist/styles.css +16 -1
- package/modals/copy-text-manually/package.json +6 -0
- package/modals/review-bug-report-diagnostics/package.json +6 -0
- package/package.json +10 -8
- package/plugin/plugin-instance/package.json +6 -0
- package/plugin/third-party-plugin/package.json +6 -0
|
@@ -118,9 +118,9 @@ __export(backlink_index_exports, {
|
|
|
118
118
|
iterateReferencesAffectedByRename: () => iterateReferencesAffectedByRename
|
|
119
119
|
});
|
|
120
120
|
module.exports = __toCommonJS(backlink_index_exports);
|
|
121
|
-
var import_type_guards = require(
|
|
122
|
-
var import_implementations = require(
|
|
123
|
-
var import_obsidian_lib_state = require(
|
|
121
|
+
var import_type_guards = require("@mnaoumov/typescript-lib/type-guards");
|
|
122
|
+
var import_implementations = require("@obsidian-typings/obsidian-public-latest/implementations");
|
|
123
|
+
var import_obsidian_lib_state = require("./obsidian-lib-state.cjs");
|
|
124
124
|
const MARKDOWN_SUFFIX = ".md";
|
|
125
125
|
function getIndexedBacklinksForFile(app, file) {
|
|
126
126
|
const data = getBacklinkIndexData();
|
|
@@ -178,7 +178,7 @@ function getBacklinkIndexData() {
|
|
|
178
178
|
}
|
|
179
179
|
function getCachedMetadata(app, sourcePath) {
|
|
180
180
|
const hash = app.metadataCache.fileCache[sourcePath]?.hash;
|
|
181
|
-
return hash === void 0 ?
|
|
181
|
+
return hash === void 0 ? null : app.metadataCache.metadataCache[hash] ?? null;
|
|
182
182
|
}
|
|
183
183
|
function getCacheReferences(cache) {
|
|
184
184
|
return cache ? [...cache.frontmatterLinks ?? [], ...cache.links ?? [], ...cache.embeds ?? []] : [];
|
|
@@ -258,4 +258,4 @@ function removeSource(data, sourcePath) {
|
|
|
258
258
|
getIndexedBacklinksForFile,
|
|
259
259
|
iterateReferencesAffectedByRename
|
|
260
260
|
});
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrbGluay1pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQW5zd2VycyBcIndoaWNoIHJlZmVyZW5jZXMgcmVzb2x2ZSB0byB0aGlzIGZpbGU/XCIgYnkgbG9va2luZyBvbmx5IGF0IHRoZSBub3RlcyB0aGF0IENPVUxEIGhvbGQgb25lLCBpbnN0ZWFkIG9mXG4gKiByZXNvbHZpbmcgZXZlcnkgcmVmZXJlbmNlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBPYnNpZGlhbidzIGBtZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSlgIGlzIG5vdCBhbiBpbmRleCBsb29rdXAuIFJlYWQgb3V0IG9mIHRoZSAxLjE0LjIgYnVuZGxlLCBpdCBpc1xuICogYGl0ZXJhdGVBbGxSZWZzYCDigJQgZXZlcnkgYGZyb250bWF0dGVyTGlua3NgLCBgbGlua3NgIGFuZCBgZW1iZWRzYCBlbnRyeSBvZiBldmVyeSBjYWNoZWQgbm90ZSwgcGx1cyBldmVyeVxuICogcmVmZXJlbmNlIGVhY2ggYGxpbmtVcGRhdGVyc2AgZW50cnkgKHRoZSBjYW52YXMgb25lKSByZXBvcnRzIOKAlCB3aXRoIG9uZSBgZ2V0Rmlyc3RMaW5rcGF0aERlc3RgIHBlciByZWZlcmVuY2UsXG4gKiBrZWVwaW5nIHRob3NlIHRoYXQgcmVzb2x2ZSB0byBgZmlsZWAuIFRoYXQgaXMgfjExNSBtcyBhdCAxMDBrIHJlZmVyZW5jZXMgYW5kIH4zMjAgbXMgYXQgMjUwaywgcGFpZCBvbmNlIHBlciBmaWxlXG4gKiBieSBldmVyeSBwZXItZmlsZSBiYWNrbGluayBsb29rdXAsIHNvIGEgMTAwMC1ub3RlIGZvbGRlciByZW5hbWUgaW4gYSA1MGstbm90ZSB2YXVsdCB0b29rIDkyNCBzLlxuICpcbiAqIFdoYXQgbWFrZXMgYSBuYXJyb3dlciBhbnN3ZXIgZXhhY3QgaXMgYSBwcm9wZXJ0eSBvZiBPYnNpZGlhbidzIGBnZXRMaW5rcGF0aERlc3RgOiBldmVyeSBicmFuY2ggb2YgaXQgY2FuIG9ubHlcbiAqIHJldHVybiBhIGZpbGUgd2hvc2UgbG93ZXJjYXNlZCBuYW1lIGlzIHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgdGhlIGxpbmtwYXRoLCBvciB0aGF0IHNlZ21lbnQgcGx1c1xuICogYC5tZGAuIFRoZSBvbmUgZXhjZXB0aW9uIGlzIHRoZSBlbXB0eSBsaW5rcGF0aCAoYFtbI0hlYWRpbmddXWApLCB3aGljaCByZXR1cm5zIHRoZSBzb3VyY2Ugbm90ZSBpdHNlbGYuIFNvIGFcbiAqIG5vdGUgY2FuIGhvbGQgYSByZWZlcmVuY2UgdG8gYGZpbGVgIG9ubHkgaWYgaXQgaG9sZHMgYSByZWZlcmVuY2Ugd2hvc2UgbGFzdCBzZWdtZW50IG1hdGNoZXMgb25lIG9mIGBmaWxlYCdzXG4gKiBuYW1lIGtleXMsIG9yIGlmIGl0IElTIGBmaWxlYC4gVGhpcyBtb2R1bGUgaW5kZXhlcyBub3RlcyBieSB0aG9zZSBzZWdtZW50cywgdGFrZXMgdGhlIGNhbmRpZGF0ZXMgZm9yIGBmaWxlYCxcbiAqIGFuZCBydW5zIE9ic2lkaWFuJ3Mgb3duIHByZWRpY2F0ZSDigJQgYGdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmtwYXRoLCBzb3VyY2UpID09PSBmaWxlYCDigJQgb3ZlciB0aGUgY2FuZGlkYXRlcydcbiAqIHJlZmVyZW5jZXMgb25seS4gVGhlIGNhbmRpZGF0ZXMgYXJlIGEgc3VwZXJzZXQgb2YgdGhlIHJlYWwgYmFja2xpbmtzIGFuZCB0aGUgcHJlZGljYXRlIGlzIHRoZSBzYW1lIG9uZSwgc29cbiAqIHRoZSBhbnN3ZXIgaXMgdGhlIG9uZSB0aGUgZnVsbCB3YWxrIGdpdmVzLCBhIGZpbGUgcmVnaXN0ZXJlZCBhdCBhIG5vbi1leGlzdGluZyBwYXRoIGluY2x1ZGVkLiBPbmx5IHRoZSBPUkRFUlxuICogb2YgdGhlIG5vdGVzIGluIHRoZSBhbnN3ZXIgZGlmZmVyczogdGhlIGZpbGUgaXRzZWxmIGZpcnN0LCB0aGVuIHRoZSBjYW5kaWRhdGVzIGluIGluZGV4IG9yZGVyLlxuICpcbiAqIFRoZSBpbmRleCBpcyBrZXB0IGZyZXNoIHdpdGhvdXQgbGlzdGVuaW5nIHRvIGFueXRoaW5nLiBgbWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVgIG1hcHMgYSBub3RlIHRvIHRoZSBoYXNoIG9mXG4gKiBpdHMgY29udGVudCwgYW5kIHRoZSByZWZlcmVuY2VzIGFyZSBhIGZ1bmN0aW9uIG9mIHRoYXQgaGFzaCwgc28gZWFjaCBxdWVyeSBjb21wYXJlcyBldmVyeSBub3RlJ3MgaGFzaFxuICogYWdhaW5zdCB0aGUgb25lIGl0IHdhcyBpbmRleGVkIGF0IGFuZCByZS1yZWFkcyBvbmx5IHRoZSBub3RlcyB0aGF0IGNoYW5nZWQuIFRoYXQgaXMgb25lIHByb3BlcnR5IGNvbXBhcmlzb25cbiAqIHBlciBub3RlIGFuZCBubyByZXNvbHV0aW9uIGF0IGFsbCwgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHNjYW4gT2JzaWRpYW4gaXRzZWxmIHJ1bnMgb24gZXZlcnkgcmVuYW1lXG4gKiAoYHVwZGF0ZVJlbGF0ZWRMaW5rc2ApLiBEZXBlbmRpbmcgb24gbm8gZXZlbnQgYWxzbyBtZWFucyBkZXBlbmRpbmcgb24gbm8gZXZlbnQgT1JERVIsIHdoaWNoIG1hdHRlcnMgYmVjYXVzZVxuICogcmVuYW1lIGhhbmRsZXJzIHF1ZXJ5IGZyb20gaW5zaWRlIHRoZSB2YXVsdCBgcmVuYW1lYCBldmVudC5cbiAqXG4gKiBUaGVyZSBpcyBvbmUgaW5kZXggcGVyIHJlbmRlcmVyIHJlYWxtLCBoZWxkIGluIHRoZSByZWFsbS1nbG9iYWwgc2hhcmVkLXN0YXRlIGJhZywgc28gZXZlcnkgcGx1Z2luIGJ1bmRsaW5nIHRoaXMgbGlicmFyeVxuICogc2hhcmVzIGl0IHJhdGhlciB0aGFuIGVhY2ggYnVpbGRpbmcgaXRzIG93bi4gV2hhdCBpcyBzdG9yZWQgdGhlcmUgaXMgcGxhaW4gZGF0YSByZWFkIHN0cnVjdHVyYWxseSAobWFwcyBhbmRcbiAqIHNldHMsIG5ldmVyIGEgY2xhc3MgaW5zdGFuY2UpLCBiZWNhdXNlIHRoZSBiYWcgY3Jvc3NlcyBjb3BpZXMgb2YgdGhpcyBsaWJyYXJ5IGF0IGRpZmZlcmVudCB2ZXJzaW9ucy4gVGhlIGtleVxuICogY2FycmllcyBhIHZlcnNpb246IGEgY2hhbmdlIHRvIHdoYXQgYSBrZXkgTUVBTlMgKGhvdyBhIG5hbWUga2V5IGlzIGRlcml2ZWQpIG11c3QgbW92ZSB0byBhIG5ldyBrZXksIHNvIGFuIG9sZGVyXG4gKiBjb3B5IG5ldmVyIHJlYWRzIGFuIGluZGV4IGJ1aWx0IGJ5IGRpZmZlcmVudCBydWxlcy5cbiAqXG4gKiBUaGUgYGxpbmtVcGRhdGVyc2Agc2lkZSBpcyBzdGlsbCB3YWxrZWQgaW4gZnVsbCBvbiBldmVyeSBxdWVyeS4gSW4gMS4xNC4yIHRoZSBvbmx5IHVwZGF0ZXIgaXMgdGhlIGNhbnZhc1xuICogb25lLCB3aG9zZSByZWZlcmVuY2VzIGxpdmUgaW4gdGhlIGNhbnZhcyBpbmRleCByYXRoZXIgdGhhbiBpbiBgZmlsZUNhY2hlYCwgc28gdGhlcmUgaXMgbm8gaGFzaCB0byBrZXkgdGhlbVxuICogYnk7IGEgdmF1bHQncyBjYW52YXNlcyBob2xkIGEgc21hbGwgZnJhY3Rpb24gb2YgaXRzIHJlZmVyZW5jZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IEN1c3RvbUFycmF5RGljdEltcGwgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuTGliU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGNhbGxiYWNrIE9ic2lkaWFuJ3MgYG1ldGFkYXRhQ2FjaGUuaXRlcmF0ZUFsbFJlZnNgIHRha2VzLlxuICovXG5leHBvcnQgdHlwZSBJdGVyYXRlUmVmZXJlbmNlc0NhbGxiYWNrID0gUGFyYW1ldGVyczxBcHBbJ21ldGFkYXRhQ2FjaGUnXVsnaXRlcmF0ZUFsbFJlZnMnXT5bMF07XG5cbmludGVyZmFjZSBCYWNrbGlua0luZGV4RGF0YSB7XG4gIHJlYWRvbmx5IGluZGV4ZWRIYXNoZXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IG5hbWVLZXlTb3VyY2VQYXRoczogTWFwPHN0cmluZywgU2V0PHN0cmluZz4+O1xuICByZWFkb25seSBzb3VyY2VQYXRoTmFtZUtleXM6IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+Pjtcbn1cblxuY29uc3QgTUFSS0RPV05fU1VGRklYID0gJy5tZCc7XG5cbi8qKlxuICogVGhlIHNhbWUgYW5zd2VyIGFzIGBhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlKGZpbGUpYCAoT2JzaWRpYW4ncyBvd24sIHVucGF0Y2hlZCksIGZyb20gdGhlIGNhbmRpZGF0ZVxuICogbm90ZXMgb25seS4gU2VlIHRoZSBmaWxlIGhlYWRlciBmb3Igd2h5IHRoZSBhbnN3ZXIgaXMgZXhhY3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHdob3NlIGJhY2tsaW5rcyB0byBmaW5kLiBJdCBtYXkgYmUgYSBub24tZXhpc3RpbmcgZmlsZSByZWdpc3RlcmVkIGZvciB0aGUgcXVlcnkuXG4gKiBAcmV0dXJucyBUaGUgcmVmZXJlbmNlcyB0aGF0IHJlc29sdmUgdG8gYGZpbGVgLCBrZXllZCBieSB0aGUgcGF0aCBvZiB0aGUgbm90ZSBvciBjYW52YXMgaG9sZGluZyB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUoYXBwOiBBcHAsIGZpbGU6IFRGaWxlKTogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4ge1xuICBjb25zdCBkYXRhID0gZ2V0QmFja2xpbmtJbmRleERhdGEoKTtcbiAgcmVmcmVzaChhcHAsIGRhdGEpO1xuXG4gIGNvbnN0IG1ldGFkYXRhQ2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZTtcbiAgY29uc3QgYmFja2xpbmtzID0gbmV3IEN1c3RvbUFycmF5RGljdEltcGw8UmVmZXJlbmNlPigpO1xuXG4gIC8vIFRoZSBmaWxlIGl0c2VsZiBpcyBhIGNhbmRpZGF0ZSBmb3IgaXRzIG93biBgW1sjSGVhZGluZ11dYCByZWZlcmVuY2VzLCB3aG9zZSBlbXB0eSBsaW5rcGF0aCBuYW1lcyBubyBzZWdtZW50LlxuICBjb25zdCBjYW5kaWRhdGVTb3VyY2VQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPihbZmlsZS5wYXRoXSk7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBnZXRUYXJnZXROYW1lS2V5cyhmaWxlLm5hbWUpKSB7XG4gICAgZm9yIChjb25zdCBzb3VyY2VQYXRoIG9mIGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSA/PyBbXSkge1xuICAgICAgY2FuZGlkYXRlU291cmNlUGF0aHMuYWRkKHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBjYW5kaWRhdGVTb3VyY2VQYXRocykge1xuICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldENhY2hlUmVmZXJlbmNlcyhnZXRDYWNoZWRNZXRhZGF0YShhcHAsIHNvdXJjZVBhdGgpKSkge1xuICAgICAgY29sbGVjdChzb3VyY2VQYXRoLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgbGlua1VwZGF0ZXIgb2YgT2JqZWN0LnZhbHVlcyhtZXRhZGF0YUNhY2hlLmxpbmtVcGRhdGVycykpIHtcbiAgICBsaW5rVXBkYXRlcj8uaXRlcmF0ZVJlZmVyZW5jZXMoY29sbGVjdCk7XG4gIH1cblxuICByZXR1cm4gYmFja2xpbmtzO1xuXG4gIGZ1bmN0aW9uIGNvbGxlY3Qoc291cmNlUGF0aDogc3RyaW5nLCByZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHZvaWQge1xuICAgIGlmIChtZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGdldExpbmtwYXRoKHJlZmVyZW5jZS5saW5rKSwgc291cmNlUGF0aCkgPT09IGZpbGUpIHtcbiAgICAgIGJhY2tsaW5rcy5hZGQoc291cmNlUGF0aCwgcmVmZXJlbmNlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWaXNpdHMgdGhlIHJlZmVyZW5jZXMgYGFwcC5tZXRhZGF0YUNhY2hlLml0ZXJhdGVBbGxSZWZzYCB3b3VsZCB2aXNpdCwgbWludXMgZXZlcnkgcmVmZXJlbmNlIHdob3NlIHJlc29sdXRpb25cbiAqIGNhbm5vdCBjaGFuZ2Ugd2hlbiBgZmlsZWAgaXMgcmVuYW1lZCB0byBgbmV3UGF0aGAuXG4gKlxuICogT2JzaWRpYW4ncyBgRmlsZU1hbmFnZXIucnVuQXN5bmNMaW5rVXBkYXRlYCByZXNvbHZlcyBFVkVSWSByZWZlcmVuY2UgaW4gdGhlIHZhdWx0IGJlZm9yZSBlYWNoIHJlbmFtZSwgdG8gZGlmZlxuICogdGhlIHJlc29sdXRpb25zIGFmdGVyd2FyZHMgaW4gYHVwZGF0ZUFsbExpbmtzYDsgdGhhdCBpcyB0aGUgd2hvbGUgY29zdCBvZiBhIHJlbmFtZSBpbiBhIGxhcmdlIHZhdWx0LiBBIHJlZmVyZW5jZVxuICogY2FuIHJlc29sdmUgdG8gYGZpbGVgIG9ubHkgaWYgaXRzIGxpbmtwYXRoJ3MgbGFzdCBzZWdtZW50IG1hdGNoZXMgYGZpbGVgJ3MgbmFtZSBiZWZvcmUgdGhlIHJlbmFtZSBvciBpdHMgbmFtZVxuICogYWZ0ZXIgaXQgKHNlZSB0aGUgZmlsZSBoZWFkZXIpLCBhbmQgYSByZWZlcmVuY2UgdGhhdCByZXNvbHZlcyB0byBuZWl0aGVyIGtlZXBzIHJlc29sdmluZyB0byB3aGF0ZXZlciBpdCBkaWQuIFNvXG4gKiB0aGUgcmVmZXJlbmNlcyB0aGF0IGNhbiBjaGFuZ2UgYXJlIHRob3NlIG9mIHRoZSBpbmRleCdzIGNhbmRpZGF0ZXMgZm9yIGJvdGggbmFtZXMsIHBsdXMgdGhlIHJlZmVyZW5jZXMgaGVsZCBieVxuICogYGZpbGVgIGl0c2VsZiwgd2hvc2UgcmVsYXRpdmUgbGlua3MgcmVzb2x2ZSBmcm9tIGl0cyBuZXcgZm9sZGVyIGFmdGVyd2FyZHMuIGBsaW5rVXBkYXRlcnNgIHJlZmVyZW5jZXMgYXJlIHdhbGtlZFxuICogaW4gZnVsbCwgYXMgaW4ge0BsaW5rIGdldEluZGV4ZWRCYWNrbGlua3NGb3JGaWxlfS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgYmVpbmcgcmVuYW1lZCwgc3RpbGwgYXQgaXRzIG9sZCBwYXRoLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgcGF0aCBpdCBpcyBiZWluZyByZW5hbWVkIHRvLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gQ2FsbGVkIHdpdGggZWFjaCByZWZlcmVuY2UgYW5kIHRoZSBwYXRoIG9mIHRoZSBub3RlIGhvbGRpbmcgaXQuIFJldHVybmluZyBgdHJ1ZWAgc3RvcHMgdGhlXG4gKiAgIHdhbGsgb3ZlciB0aGF0IG5vdGUncyByZWZlcmVuY2VzLCBhcyBpbiBPYnNpZGlhbidzIG93biB3YWxrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZVJlZmVyZW5jZXNBZmZlY3RlZEJ5UmVuYW1lKFxuICBhcHA6IEFwcCxcbiAgZmlsZTogVEZpbGUsXG4gIG5ld1BhdGg6IHN0cmluZyxcbiAgY2FsbGJhY2s6IEl0ZXJhdGVSZWZlcmVuY2VzQ2FsbGJhY2tcbik6IHZvaWQge1xuICBjb25zdCBkYXRhID0gZ2V0QmFja2xpbmtJbmRleERhdGEoKTtcbiAgcmVmcmVzaChhcHAsIGRhdGEpO1xuXG4gIGNvbnN0IG5ld05hbWUgPSBuZXdQYXRoLnNsaWNlKG5ld1BhdGgubGFzdEluZGV4T2YoJy8nKSArIDEpO1xuICBjb25zdCBjYW5kaWRhdGVTb3VyY2VQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPihbZmlsZS5wYXRoXSk7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBbLi4uZ2V0VGFyZ2V0TmFtZUtleXMoZmlsZS5uYW1lKSwgLi4uZ2V0VGFyZ2V0TmFtZUtleXMobmV3TmFtZSldKSB7XG4gICAgZm9yIChjb25zdCBzb3VyY2VQYXRoIG9mIGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSA/PyBbXSkge1xuICAgICAgY2FuZGlkYXRlU291cmNlUGF0aHMuYWRkKHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBjYW5kaWRhdGVTb3VyY2VQYXRocykge1xuICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldENhY2hlUmVmZXJlbmNlcyhnZXRDYWNoZWRNZXRhZGF0YShhcHAsIHNvdXJjZVBhdGgpKSkge1xuICAgICAgaWYgKGNhbGxiYWNrKHNvdXJjZVBhdGgsIHJlZmVyZW5jZSkgPT09IHRydWUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBsaW5rVXBkYXRlciBvZiBPYmplY3QudmFsdWVzKGFwcC5tZXRhZGF0YUNhY2hlLmxpbmtVcGRhdGVycykpIHtcbiAgICBsaW5rVXBkYXRlcj8uaXRlcmF0ZVJlZmVyZW5jZXMoY2FsbGJhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJhY2tsaW5rSW5kZXhEYXRhKCk6IEJhY2tsaW5rSW5kZXhEYXRhIHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuTGliU3RhdGU8QmFja2xpbmtJbmRleERhdGE+KCdiYWNrbGlua0luZGV4VjEnLCB7XG4gICAgaW5kZXhlZEhhc2hlczogbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSxcbiAgICBuYW1lS2V5U291cmNlUGF0aHM6IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKSxcbiAgICBzb3VyY2VQYXRoTmFtZUtleXM6IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKVxuICB9KS52YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldENhY2hlZE1ldGFkYXRhKGFwcDogQXBwLCBzb3VyY2VQYXRoOiBzdHJpbmcpOiBDYWNoZWRNZXRhZGF0YSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGhhc2ggPSBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVbc291cmNlUGF0aF0/Lmhhc2g7XG4gIHJldHVybiBoYXNoID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBhcHAubWV0YWRhdGFDYWNoZS5tZXRhZGF0YUNhY2hlW2hhc2hdO1xufVxuXG4vKipcbiAqIExpc3RzIGEgY2FjaGVkIG5vdGUncyByZWZlcmVuY2VzIGluIHRoZSBvcmRlciBPYnNpZGlhbidzIG93biB3YWxrIHZpc2l0cyB0aGVtOiBgZnJvbnRtYXR0ZXJMaW5rc2AsIHRoZW5cbiAqIGBsaW5rc2AsIHRoZW4gYGVtYmVkc2AuXG4gKlxuICogQHBhcmFtIGNhY2hlIC0gVGhlIG5vdGUncyBjYWNoZWQgbWV0YWRhdGEuXG4gKiBAcmV0dXJucyBUaGUgbm90ZSdzIHJlZmVyZW5jZXMuXG4gKi9cbmZ1bmN0aW9uIGdldENhY2hlUmVmZXJlbmNlcyhjYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCB1bmRlZmluZWQpOiBSZWZlcmVuY2VbXSB7XG4gIHJldHVybiBjYWNoZSA/IFsuLi5jYWNoZS5mcm9udG1hdHRlckxpbmtzID8/IFtdLCAuLi5jYWNoZS5saW5rcyA/PyBbXSwgLi4uY2FjaGUuZW1iZWRzID8/IFtdXSA6IFtdO1xufVxuXG4vKipcbiAqIFN0cmlwcyB0aGUgc3VicGF0aCBmcm9tIGEgbGluaywgdGhlIHdheSBPYnNpZGlhbidzIGBnZXRMaW5rcGF0aGAgZG9lcy5cbiAqXG4gKiBAcGFyYW0gbGluayAtIFRoZSBsaW5rIHRleHQsIHN1Y2ggYXMgYGZvbGRlci9Ob3RlI0hlYWRpbmdgLlxuICogQHJldHVybnMgVGhlIGxpbmtwYXRoLCBzdWNoIGFzIGBmb2xkZXIvTm90ZWAuXG4gKi9cbmZ1bmN0aW9uIGdldExpbmtwYXRoKGxpbms6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGhhc2hJbmRleCA9IGxpbmsuaW5kZXhPZignIycpO1xuICByZXR1cm4gaGFzaEluZGV4ID09PSAtMSA/IGxpbmsgOiBsaW5rLnNsaWNlKDAsIGhhc2hJbmRleCk7XG59XG5cbi8qKlxuICogVGhlIGtleSBhIHJlZmVyZW5jZSBpcyBpbmRleGVkIHVuZGVyOiB0aGUgbG93ZXJjYXNlZCBsYXN0IGAvYCBzZWdtZW50IG9mIGl0cyBsaW5rcGF0aC5cbiAqXG4gKiBAcGFyYW0gbGluayAtIFRoZSByZWZlcmVuY2UncyBsaW5rIHRleHQuXG4gKiBAcmV0dXJucyBUaGUga2V5LlxuICovXG5mdW5jdGlvbiBnZXRSZWZlcmVuY2VOYW1lS2V5KGxpbms6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmtwYXRoID0gZ2V0TGlua3BhdGgobGluaykudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGxpbmtwYXRoLnNsaWNlKGxpbmtwYXRoLmxhc3RJbmRleE9mKCcvJykgKyAxKTtcbn1cblxuLyoqXG4gKiBUaGUga2V5cyB1bmRlciB3aGljaCBhIHJlZmVyZW5jZSB0byBhIGZpbGUgd2l0aCB0aGlzIG5hbWUgY2FuIGJlIGluZGV4ZWQuIGBnZXRMaW5rcGF0aERlc3RgIG1hdGNoZXMgYVxuICogc2VnbWVudCBhZ2FpbnN0IHRoZSBmaWxlJ3MgbmFtZSwgYW5kIGFnYWluc3QgdGhlIG5hbWUgd2l0aCBgLm1kYCBhcHBlbmRlZCwgc28gYSBub3RlIG5hbWVkIGBOb3RlLm1kYCBpc1xuICogcmVhY2hhYmxlIGZyb20gYm90aCBgbm90ZS5tZGAgYW5kIGBub3RlYC5cbiAqXG4gKiBAcGFyYW0gZmlsZU5hbWUgLSBUaGUgZmlsZSdzIG5hbWUsIGV4dGVuc2lvbiBpbmNsdWRlZC5cbiAqIEByZXR1cm5zIFRoZSBrZXlzLlxuICovXG5mdW5jdGlvbiBnZXRUYXJnZXROYW1lS2V5cyhmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBuYW1lS2V5ID0gZmlsZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIG5hbWVLZXkuZW5kc1dpdGgoTUFSS0RPV05fU1VGRklYKSA/IFtuYW1lS2V5LCBuYW1lS2V5LnNsaWNlKDAsIC1NQVJLRE9XTl9TVUZGSVgubGVuZ3RoKV0gOiBbbmFtZUtleV07XG59XG5cbmZ1bmN0aW9uIGluZGV4U291cmNlKGFwcDogQXBwLCBkYXRhOiBCYWNrbGlua0luZGV4RGF0YSwgc291cmNlUGF0aDogc3RyaW5nLCBoYXNoOiBzdHJpbmcpOiB2b2lkIHtcbiAgcmVtb3ZlU291cmNlKGRhdGEsIHNvdXJjZVBhdGgpO1xuICBjb25zdCBjYWNoZSA9IGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbaGFzaF07XG4gIC8qXG4gICAqIEEgbm90ZSdzIGBmaWxlQ2FjaGVgIGVudHJ5IGNhbiBjYXJyeSBpdHMgbmV3IGhhc2ggYmVmb3JlIHRoZSBtZXRhZGF0YSBmb3IgdGhhdCBoYXNoIGlzIHN0b3JlZC4gUmVjb3JkaW5nXG4gICAqIHRoZSBoYXNoIHRoZW4gd291bGQgcGluIHRoZSBub3RlIGF0IFwibm8gcmVmZXJlbmNlc1wiIHVudGlsIGl0cyBjb250ZW50IGNoYW5nZWQgYWdhaW4sIHNvIGxlYXZlIGl0XG4gICAqIHVucmVjb3JkZWQgYW5kIGxldCB0aGUgbmV4dCBxdWVyeSBsb29rIGFnYWluLlxuICAgKi9cbiAgaWYgKCFjYWNoZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5hbWVLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldENhY2hlUmVmZXJlbmNlcyhjYWNoZSkpIHtcbiAgICBuYW1lS2V5cy5hZGQoZ2V0UmVmZXJlbmNlTmFtZUtleShyZWZlcmVuY2UubGluaykpO1xuICB9XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBuYW1lS2V5cykge1xuICAgIGxldCBzb3VyY2VQYXRocyA9IGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KTtcbiAgICBpZiAoIXNvdXJjZVBhdGhzKSB7XG4gICAgICBzb3VyY2VQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuc2V0KG5hbWVLZXksIHNvdXJjZVBhdGhzKTtcbiAgICB9XG4gICAgc291cmNlUGF0aHMuYWRkKHNvdXJjZVBhdGgpO1xuICB9XG4gIGRhdGEuc291cmNlUGF0aE5hbWVLZXlzLnNldChzb3VyY2VQYXRoLCBuYW1lS2V5cyk7XG4gIGRhdGEuaW5kZXhlZEhhc2hlcy5zZXQoc291cmNlUGF0aCwgaGFzaCk7XG59XG5cbi8qKlxuICogQnJpbmdzIHRoZSBpbmRleCBpbiBsaW5lIHdpdGggYG1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlYC4gSXQgcnVucyBvbiBldmVyeSBxdWVyeSwgc28gaXQgaXMgb25lIHBhc3Mgb3ZlclxuICogYGZpbGVDYWNoZWAgd2l0aCBubyBhbGxvY2F0aW9uIHBlciBub3RlIChhIHJlbmFtZSBpbiBhIGxhcmdlIHZhdWx0IHF1ZXJpZXMgc2V2ZXJhbCB0aW1lcyksIGFuZCB0aGUgcGFzcyBvdmVyIHRoZVxuICogaW5kZXggdGhhdCBmaW5kcyBub3RlcyBnb25lIGZyb20gYGZpbGVDYWNoZWAgcnVucyBvbmx5IHdoZW4gdGhhdCBmaXJzdCBwYXNzIGRpZCBub3Qgc2VlIGV2ZXJ5IGluZGV4ZWQgbm90ZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGluZGV4LlxuICovXG5mdW5jdGlvbiByZWZyZXNoKGFwcDogQXBwLCBkYXRhOiBCYWNrbGlua0luZGV4RGF0YSk6IHZvaWQge1xuICBjb25zdCBmaWxlQ2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGU7XG4gIGNvbnN0IGluZGV4ZWRDb3VudEJlZm9yZSA9IGRhdGEuaW5kZXhlZEhhc2hlcy5zaXplO1xuICBsZXQgc2VlbkluZGV4ZWRDb3VudCA9IDA7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGd1YXJkLWZvci1pbiAtLSBgT2JqZWN0Lmhhc093bmAgYmVsb3cgaXMgdGhlIGd1YXJkOyBgZm9yLi4uaW5gIGF2b2lkcyBhbiBlbnRyeSBhcnJheSBwZXIgbm90ZS5cbiAgZm9yIChjb25zdCBzb3VyY2VQYXRoIGluIGZpbGVDYWNoZSkge1xuICAgIGNvbnN0IGVudHJ5ID0gT2JqZWN0Lmhhc093bihmaWxlQ2FjaGUsIHNvdXJjZVBhdGgpID8gZmlsZUNhY2hlW3NvdXJjZVBhdGhdIDogdW5kZWZpbmVkO1xuICAgIGlmICghZW50cnkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBpbmRleGVkSGFzaCA9IGRhdGEuaW5kZXhlZEhhc2hlcy5nZXQoc291cmNlUGF0aCk7XG4gICAgaWYgKGluZGV4ZWRIYXNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlZW5JbmRleGVkQ291bnQrKztcbiAgICB9XG4gICAgaWYgKGluZGV4ZWRIYXNoICE9PSBlbnRyeS5oYXNoKSB7XG4gICAgICBpbmRleFNvdXJjZShhcHAsIGRhdGEsIHNvdXJjZVBhdGgsIGVudHJ5Lmhhc2gpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzZWVuSW5kZXhlZENvdW50ID09PSBpbmRleGVkQ291bnRCZWZvcmUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IHNvdXJjZVBhdGggb2YgZGF0YS5zb3VyY2VQYXRoTmFtZUtleXMua2V5cygpKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKGZpbGVDYWNoZSwgc291cmNlUGF0aCkpIHtcbiAgICAgIHJlbW92ZVNvdXJjZShkYXRhLCBzb3VyY2VQYXRoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlU291cmNlKGRhdGE6IEJhY2tsaW5rSW5kZXhEYXRhLCBzb3VyY2VQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgZm9yIChjb25zdCBuYW1lS2V5IG9mIGRhdGEuc291cmNlUGF0aE5hbWVLZXlzLmdldChzb3VyY2VQYXRoKSA/PyBbXSkge1xuICAgIGNvbnN0IHNvdXJjZVBhdGhzID0gZW5zdXJlTm9uTnVsbGFibGUoZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuZ2V0KG5hbWVLZXkpKTtcbiAgICBzb3VyY2VQYXRocy5kZWxldGUoc291cmNlUGF0aCk7XG4gICAgaWYgKHNvdXJjZVBhdGhzLnNpemUgPT09IDApIHtcbiAgICAgIGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmRlbGV0ZShuYW1lS2V5KTtcbiAgICB9XG4gIH1cbiAgZGF0YS5zb3VyY2VQYXRoTmFtZUtleXMuZGVsZXRlKHNvdXJjZVBhdGgpO1xuICBkYXRhLmluZGV4ZWRIYXNoZXMuZGVsZXRlKHNvdXJjZVBhdGgpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnREEseUJBQWtDO0FBQ2xDLDZCQUFvQztBQUVwQyxnQ0FBb0M7QUFhcEMsTUFBTSxrQkFBa0I7QUFVakIsU0FBUywyQkFBMkIsS0FBVSxNQUF5QztBQUM1RixRQUFNLE9BQU8scUJBQXFCO0FBQ2xDLFVBQVEsS0FBSyxJQUFJO0FBRWpCLFFBQU0sZ0JBQWdCLElBQUk7QUFDMUIsUUFBTSxZQUFZLElBQUksMkNBQStCO0FBR3JELFFBQU0sdUJBQXVCLG9CQUFJLElBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztBQUN4RCxhQUFXLFdBQVcsa0JBQWtCLEtBQUss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
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrbGluay1pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQW5zd2VycyBcIndoaWNoIHJlZmVyZW5jZXMgcmVzb2x2ZSB0byB0aGlzIGZpbGU/XCIgYnkgbG9va2luZyBvbmx5IGF0IHRoZSBub3RlcyB0aGF0IENPVUxEIGhvbGQgb25lLCBpbnN0ZWFkIG9mXG4gKiByZXNvbHZpbmcgZXZlcnkgcmVmZXJlbmNlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBPYnNpZGlhbidzIGBtZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSlgIGlzIG5vdCBhbiBpbmRleCBsb29rdXAuIFJlYWQgb3V0IG9mIHRoZSAxLjE0LjIgYnVuZGxlLCBpdCBpc1xuICogYGl0ZXJhdGVBbGxSZWZzYCDigJQgZXZlcnkgYGZyb250bWF0dGVyTGlua3NgLCBgbGlua3NgIGFuZCBgZW1iZWRzYCBlbnRyeSBvZiBldmVyeSBjYWNoZWQgbm90ZSwgcGx1cyBldmVyeVxuICogcmVmZXJlbmNlIGVhY2ggYGxpbmtVcGRhdGVyc2AgZW50cnkgKHRoZSBjYW52YXMgb25lKSByZXBvcnRzIOKAlCB3aXRoIG9uZSBgZ2V0Rmlyc3RMaW5rcGF0aERlc3RgIHBlciByZWZlcmVuY2UsXG4gKiBrZWVwaW5nIHRob3NlIHRoYXQgcmVzb2x2ZSB0byBgZmlsZWAuIFRoYXQgaXMgfjExNSBtcyBhdCAxMDBrIHJlZmVyZW5jZXMgYW5kIH4zMjAgbXMgYXQgMjUwaywgcGFpZCBvbmNlIHBlciBmaWxlXG4gKiBieSBldmVyeSBwZXItZmlsZSBiYWNrbGluayBsb29rdXAsIHNvIGEgMTAwMC1ub3RlIGZvbGRlciByZW5hbWUgaW4gYSA1MGstbm90ZSB2YXVsdCB0b29rIDkyNCBzLlxuICpcbiAqIFdoYXQgbWFrZXMgYSBuYXJyb3dlciBhbnN3ZXIgZXhhY3QgaXMgYSBwcm9wZXJ0eSBvZiBPYnNpZGlhbidzIGBnZXRMaW5rcGF0aERlc3RgOiBldmVyeSBicmFuY2ggb2YgaXQgY2FuIG9ubHlcbiAqIHJldHVybiBhIGZpbGUgd2hvc2UgbG93ZXJjYXNlZCBuYW1lIGlzIHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgdGhlIGxpbmtwYXRoLCBvciB0aGF0IHNlZ21lbnQgcGx1c1xuICogYC5tZGAuIFRoZSBvbmUgZXhjZXB0aW9uIGlzIHRoZSBlbXB0eSBsaW5rcGF0aCAoYFtbI0hlYWRpbmddXWApLCB3aGljaCByZXR1cm5zIHRoZSBzb3VyY2Ugbm90ZSBpdHNlbGYuIFNvIGFcbiAqIG5vdGUgY2FuIGhvbGQgYSByZWZlcmVuY2UgdG8gYGZpbGVgIG9ubHkgaWYgaXQgaG9sZHMgYSByZWZlcmVuY2Ugd2hvc2UgbGFzdCBzZWdtZW50IG1hdGNoZXMgb25lIG9mIGBmaWxlYCdzXG4gKiBuYW1lIGtleXMsIG9yIGlmIGl0IElTIGBmaWxlYC4gVGhpcyBtb2R1bGUgaW5kZXhlcyBub3RlcyBieSB0aG9zZSBzZWdtZW50cywgdGFrZXMgdGhlIGNhbmRpZGF0ZXMgZm9yIGBmaWxlYCxcbiAqIGFuZCBydW5zIE9ic2lkaWFuJ3Mgb3duIHByZWRpY2F0ZSDigJQgYGdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmtwYXRoLCBzb3VyY2UpID09PSBmaWxlYCDigJQgb3ZlciB0aGUgY2FuZGlkYXRlcydcbiAqIHJlZmVyZW5jZXMgb25seS4gVGhlIGNhbmRpZGF0ZXMgYXJlIGEgc3VwZXJzZXQgb2YgdGhlIHJlYWwgYmFja2xpbmtzIGFuZCB0aGUgcHJlZGljYXRlIGlzIHRoZSBzYW1lIG9uZSwgc29cbiAqIHRoZSBhbnN3ZXIgaXMgdGhlIG9uZSB0aGUgZnVsbCB3YWxrIGdpdmVzLCBhIGZpbGUgcmVnaXN0ZXJlZCBhdCBhIG5vbi1leGlzdGluZyBwYXRoIGluY2x1ZGVkLiBPbmx5IHRoZSBPUkRFUlxuICogb2YgdGhlIG5vdGVzIGluIHRoZSBhbnN3ZXIgZGlmZmVyczogdGhlIGZpbGUgaXRzZWxmIGZpcnN0LCB0aGVuIHRoZSBjYW5kaWRhdGVzIGluIGluZGV4IG9yZGVyLlxuICpcbiAqIFRoZSBpbmRleCBpcyBrZXB0IGZyZXNoIHdpdGhvdXQgbGlzdGVuaW5nIHRvIGFueXRoaW5nLiBgbWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVgIG1hcHMgYSBub3RlIHRvIHRoZSBoYXNoIG9mXG4gKiBpdHMgY29udGVudCwgYW5kIHRoZSByZWZlcmVuY2VzIGFyZSBhIGZ1bmN0aW9uIG9mIHRoYXQgaGFzaCwgc28gZWFjaCBxdWVyeSBjb21wYXJlcyBldmVyeSBub3RlJ3MgaGFzaFxuICogYWdhaW5zdCB0aGUgb25lIGl0IHdhcyBpbmRleGVkIGF0IGFuZCByZS1yZWFkcyBvbmx5IHRoZSBub3RlcyB0aGF0IGNoYW5nZWQuIFRoYXQgaXMgb25lIHByb3BlcnR5IGNvbXBhcmlzb25cbiAqIHBlciBub3RlIGFuZCBubyByZXNvbHV0aW9uIGF0IGFsbCwgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHNjYW4gT2JzaWRpYW4gaXRzZWxmIHJ1bnMgb24gZXZlcnkgcmVuYW1lXG4gKiAoYHVwZGF0ZVJlbGF0ZWRMaW5rc2ApLiBEZXBlbmRpbmcgb24gbm8gZXZlbnQgYWxzbyBtZWFucyBkZXBlbmRpbmcgb24gbm8gZXZlbnQgT1JERVIsIHdoaWNoIG1hdHRlcnMgYmVjYXVzZVxuICogcmVuYW1lIGhhbmRsZXJzIHF1ZXJ5IGZyb20gaW5zaWRlIHRoZSB2YXVsdCBgcmVuYW1lYCBldmVudC5cbiAqXG4gKiBUaGVyZSBpcyBvbmUgaW5kZXggcGVyIHJlbmRlcmVyIHJlYWxtLCBoZWxkIGluIHRoZSByZWFsbS1nbG9iYWwgc2hhcmVkLXN0YXRlIGJhZywgc28gZXZlcnkgcGx1Z2luIGJ1bmRsaW5nIHRoaXMgbGlicmFyeVxuICogc2hhcmVzIGl0IHJhdGhlciB0aGFuIGVhY2ggYnVpbGRpbmcgaXRzIG93bi4gV2hhdCBpcyBzdG9yZWQgdGhlcmUgaXMgcGxhaW4gZGF0YSByZWFkIHN0cnVjdHVyYWxseSAobWFwcyBhbmRcbiAqIHNldHMsIG5ldmVyIGEgY2xhc3MgaW5zdGFuY2UpLCBiZWNhdXNlIHRoZSBiYWcgY3Jvc3NlcyBjb3BpZXMgb2YgdGhpcyBsaWJyYXJ5IGF0IGRpZmZlcmVudCB2ZXJzaW9ucy4gVGhlIGtleVxuICogY2FycmllcyBhIHZlcnNpb246IGEgY2hhbmdlIHRvIHdoYXQgYSBrZXkgTUVBTlMgKGhvdyBhIG5hbWUga2V5IGlzIGRlcml2ZWQpIG11c3QgbW92ZSB0byBhIG5ldyBrZXksIHNvIGFuIG9sZGVyXG4gKiBjb3B5IG5ldmVyIHJlYWRzIGFuIGluZGV4IGJ1aWx0IGJ5IGRpZmZlcmVudCBydWxlcy5cbiAqXG4gKiBUaGUgYGxpbmtVcGRhdGVyc2Agc2lkZSBpcyBzdGlsbCB3YWxrZWQgaW4gZnVsbCBvbiBldmVyeSBxdWVyeS4gSW4gMS4xNC4yIHRoZSBvbmx5IHVwZGF0ZXIgaXMgdGhlIGNhbnZhc1xuICogb25lLCB3aG9zZSByZWZlcmVuY2VzIGxpdmUgaW4gdGhlIGNhbnZhcyBpbmRleCByYXRoZXIgdGhhbiBpbiBgZmlsZUNhY2hlYCwgc28gdGhlcmUgaXMgbm8gaGFzaCB0byBrZXkgdGhlbVxuICogYnk7IGEgdmF1bHQncyBjYW52YXNlcyBob2xkIGEgc21hbGwgZnJhY3Rpb24gb2YgaXRzIHJlZmVyZW5jZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IEN1c3RvbUFycmF5RGljdEltcGwgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuTGliU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGNhbGxiYWNrIE9ic2lkaWFuJ3MgYG1ldGFkYXRhQ2FjaGUuaXRlcmF0ZUFsbFJlZnNgIHRha2VzLlxuICovXG5leHBvcnQgdHlwZSBJdGVyYXRlUmVmZXJlbmNlc0NhbGxiYWNrID0gUGFyYW1ldGVyczxBcHBbJ21ldGFkYXRhQ2FjaGUnXVsnaXRlcmF0ZUFsbFJlZnMnXT5bMF07XG5cbmludGVyZmFjZSBCYWNrbGlua0luZGV4RGF0YSB7XG4gIHJlYWRvbmx5IGluZGV4ZWRIYXNoZXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IG5hbWVLZXlTb3VyY2VQYXRoczogTWFwPHN0cmluZywgU2V0PHN0cmluZz4+O1xuICByZWFkb25seSBzb3VyY2VQYXRoTmFtZUtleXM6IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+Pjtcbn1cblxuY29uc3QgTUFSS0RPV05fU1VGRklYID0gJy5tZCc7XG5cbi8qKlxuICogVGhlIHNhbWUgYW5zd2VyIGFzIGBhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlKGZpbGUpYCAoT2JzaWRpYW4ncyBvd24sIHVucGF0Y2hlZCksIGZyb20gdGhlIGNhbmRpZGF0ZVxuICogbm90ZXMgb25seS4gU2VlIHRoZSBmaWxlIGhlYWRlciBmb3Igd2h5IHRoZSBhbnN3ZXIgaXMgZXhhY3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHdob3NlIGJhY2tsaW5rcyB0byBmaW5kLiBJdCBtYXkgYmUgYSBub24tZXhpc3RpbmcgZmlsZSByZWdpc3RlcmVkIGZvciB0aGUgcXVlcnkuXG4gKiBAcmV0dXJucyBUaGUgcmVmZXJlbmNlcyB0aGF0IHJlc29sdmUgdG8gYGZpbGVgLCBrZXllZCBieSB0aGUgcGF0aCBvZiB0aGUgbm90ZSBvciBjYW52YXMgaG9sZGluZyB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUoYXBwOiBBcHAsIGZpbGU6IFRGaWxlKTogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4ge1xuICBjb25zdCBkYXRhID0gZ2V0QmFja2xpbmtJbmRleERhdGEoKTtcbiAgcmVmcmVzaChhcHAsIGRhdGEpO1xuXG4gIGNvbnN0IG1ldGFkYXRhQ2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZTtcbiAgY29uc3QgYmFja2xpbmtzID0gbmV3IEN1c3RvbUFycmF5RGljdEltcGw8UmVmZXJlbmNlPigpO1xuXG4gIC8vIFRoZSBmaWxlIGl0c2VsZiBpcyBhIGNhbmRpZGF0ZSBmb3IgaXRzIG93biBgW1sjSGVhZGluZ11dYCByZWZlcmVuY2VzLCB3aG9zZSBlbXB0eSBsaW5rcGF0aCBuYW1lcyBubyBzZWdtZW50LlxuICBjb25zdCBjYW5kaWRhdGVTb3VyY2VQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPihbZmlsZS5wYXRoXSk7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBnZXRUYXJnZXROYW1lS2V5cyhmaWxlLm5hbWUpKSB7XG4gICAgZm9yIChjb25zdCBzb3VyY2VQYXRoIG9mIGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSA/PyBbXSkge1xuICAgICAgY2FuZGlkYXRlU291cmNlUGF0aHMuYWRkKHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBjYW5kaWRhdGVTb3VyY2VQYXRocykge1xuICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldENhY2hlUmVmZXJlbmNlcyhnZXRDYWNoZWRNZXRhZGF0YShhcHAsIHNvdXJjZVBhdGgpKSkge1xuICAgICAgY29sbGVjdChzb3VyY2VQYXRoLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgbGlua1VwZGF0ZXIgb2YgT2JqZWN0LnZhbHVlcyhtZXRhZGF0YUNhY2hlLmxpbmtVcGRhdGVycykpIHtcbiAgICBsaW5rVXBkYXRlcj8uaXRlcmF0ZVJlZmVyZW5jZXMoY29sbGVjdCk7XG4gIH1cblxuICByZXR1cm4gYmFja2xpbmtzO1xuXG4gIGZ1bmN0aW9uIGNvbGxlY3Qoc291cmNlUGF0aDogc3RyaW5nLCByZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHZvaWQge1xuICAgIGlmIChtZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGdldExpbmtwYXRoKHJlZmVyZW5jZS5saW5rKSwgc291cmNlUGF0aCkgPT09IGZpbGUpIHtcbiAgICAgIGJhY2tsaW5rcy5hZGQoc291cmNlUGF0aCwgcmVmZXJlbmNlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWaXNpdHMgdGhlIHJlZmVyZW5jZXMgYGFwcC5tZXRhZGF0YUNhY2hlLml0ZXJhdGVBbGxSZWZzYCB3b3VsZCB2aXNpdCwgbWludXMgZXZlcnkgcmVmZXJlbmNlIHdob3NlIHJlc29sdXRpb25cbiAqIGNhbm5vdCBjaGFuZ2Ugd2hlbiBgZmlsZWAgaXMgcmVuYW1lZCB0byBgbmV3UGF0aGAuXG4gKlxuICogT2JzaWRpYW4ncyBgRmlsZU1hbmFnZXIucnVuQXN5bmNMaW5rVXBkYXRlYCByZXNvbHZlcyBFVkVSWSByZWZlcmVuY2UgaW4gdGhlIHZhdWx0IGJlZm9yZSBlYWNoIHJlbmFtZSwgdG8gZGlmZlxuICogdGhlIHJlc29sdXRpb25zIGFmdGVyd2FyZHMgaW4gYHVwZGF0ZUFsbExpbmtzYDsgdGhhdCBpcyB0aGUgd2hvbGUgY29zdCBvZiBhIHJlbmFtZSBpbiBhIGxhcmdlIHZhdWx0LiBBIHJlZmVyZW5jZVxuICogY2FuIHJlc29sdmUgdG8gYGZpbGVgIG9ubHkgaWYgaXRzIGxpbmtwYXRoJ3MgbGFzdCBzZWdtZW50IG1hdGNoZXMgYGZpbGVgJ3MgbmFtZSBiZWZvcmUgdGhlIHJlbmFtZSBvciBpdHMgbmFtZVxuICogYWZ0ZXIgaXQgKHNlZSB0aGUgZmlsZSBoZWFkZXIpLCBhbmQgYSByZWZlcmVuY2UgdGhhdCByZXNvbHZlcyB0byBuZWl0aGVyIGtlZXBzIHJlc29sdmluZyB0byB3aGF0ZXZlciBpdCBkaWQuIFNvXG4gKiB0aGUgcmVmZXJlbmNlcyB0aGF0IGNhbiBjaGFuZ2UgYXJlIHRob3NlIG9mIHRoZSBpbmRleCdzIGNhbmRpZGF0ZXMgZm9yIGJvdGggbmFtZXMsIHBsdXMgdGhlIHJlZmVyZW5jZXMgaGVsZCBieVxuICogYGZpbGVgIGl0c2VsZiwgd2hvc2UgcmVsYXRpdmUgbGlua3MgcmVzb2x2ZSBmcm9tIGl0cyBuZXcgZm9sZGVyIGFmdGVyd2FyZHMuIGBsaW5rVXBkYXRlcnNgIHJlZmVyZW5jZXMgYXJlIHdhbGtlZFxuICogaW4gZnVsbCwgYXMgaW4ge0BsaW5rIGdldEluZGV4ZWRCYWNrbGlua3NGb3JGaWxlfS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgYmVpbmcgcmVuYW1lZCwgc3RpbGwgYXQgaXRzIG9sZCBwYXRoLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgcGF0aCBpdCBpcyBiZWluZyByZW5hbWVkIHRvLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gQ2FsbGVkIHdpdGggZWFjaCByZWZlcmVuY2UgYW5kIHRoZSBwYXRoIG9mIHRoZSBub3RlIGhvbGRpbmcgaXQuIFJldHVybmluZyBgdHJ1ZWAgc3RvcHMgdGhlXG4gKiAgIHdhbGsgb3ZlciB0aGF0IG5vdGUncyByZWZlcmVuY2VzLCBhcyBpbiBPYnNpZGlhbidzIG93biB3YWxrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZVJlZmVyZW5jZXNBZmZlY3RlZEJ5UmVuYW1lKFxuICBhcHA6IEFwcCxcbiAgZmlsZTogVEZpbGUsXG4gIG5ld1BhdGg6IHN0cmluZyxcbiAgY2FsbGJhY2s6IEl0ZXJhdGVSZWZlcmVuY2VzQ2FsbGJhY2tcbik6IHZvaWQge1xuICBjb25zdCBkYXRhID0gZ2V0QmFja2xpbmtJbmRleERhdGEoKTtcbiAgcmVmcmVzaChhcHAsIGRhdGEpO1xuXG4gIGNvbnN0IG5ld05hbWUgPSBuZXdQYXRoLnNsaWNlKG5ld1BhdGgubGFzdEluZGV4T2YoJy8nKSArIDEpO1xuICBjb25zdCBjYW5kaWRhdGVTb3VyY2VQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPihbZmlsZS5wYXRoXSk7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBbLi4uZ2V0VGFyZ2V0TmFtZUtleXMoZmlsZS5uYW1lKSwgLi4uZ2V0VGFyZ2V0TmFtZUtleXMobmV3TmFtZSldKSB7XG4gICAgZm9yIChjb25zdCBzb3VyY2VQYXRoIG9mIGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSA/PyBbXSkge1xuICAgICAgY2FuZGlkYXRlU291cmNlUGF0aHMuYWRkKHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBjYW5kaWRhdGVTb3VyY2VQYXRocykge1xuICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldENhY2hlUmVmZXJlbmNlcyhnZXRDYWNoZWRNZXRhZGF0YShhcHAsIHNvdXJjZVBhdGgpKSkge1xuICAgICAgaWYgKGNhbGxiYWNrKHNvdXJjZVBhdGgsIHJlZmVyZW5jZSkgPT09IHRydWUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBsaW5rVXBkYXRlciBvZiBPYmplY3QudmFsdWVzKGFwcC5tZXRhZGF0YUNhY2hlLmxpbmtVcGRhdGVycykpIHtcbiAgICBsaW5rVXBkYXRlcj8uaXRlcmF0ZVJlZmVyZW5jZXMoY2FsbGJhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJhY2tsaW5rSW5kZXhEYXRhKCk6IEJhY2tsaW5rSW5kZXhEYXRhIHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuTGliU3RhdGU8QmFja2xpbmtJbmRleERhdGE+KCdiYWNrbGlua0luZGV4VjEnLCB7XG4gICAgaW5kZXhlZEhhc2hlczogbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSxcbiAgICBuYW1lS2V5U291cmNlUGF0aHM6IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKSxcbiAgICBzb3VyY2VQYXRoTmFtZUtleXM6IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKVxuICB9KS52YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldENhY2hlZE1ldGFkYXRhKGFwcDogQXBwLCBzb3VyY2VQYXRoOiBzdHJpbmcpOiBDYWNoZWRNZXRhZGF0YSB8IG51bGwge1xuICBjb25zdCBoYXNoID0gYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW3NvdXJjZVBhdGhdPy5oYXNoO1xuICByZXR1cm4gaGFzaCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbaGFzaF0gPz8gbnVsbDtcbn1cblxuLyoqXG4gKiBMaXN0cyBhIGNhY2hlZCBub3RlJ3MgcmVmZXJlbmNlcyBpbiB0aGUgb3JkZXIgT2JzaWRpYW4ncyBvd24gd2FsayB2aXNpdHMgdGhlbTogYGZyb250bWF0dGVyTGlua3NgLCB0aGVuXG4gKiBgbGlua3NgLCB0aGVuIGBlbWJlZHNgLlxuICpcbiAqIEBwYXJhbSBjYWNoZSAtIFRoZSBub3RlJ3MgY2FjaGVkIG1ldGFkYXRhLlxuICogQHJldHVybnMgVGhlIG5vdGUncyByZWZlcmVuY2VzLlxuICovXG5mdW5jdGlvbiBnZXRDYWNoZVJlZmVyZW5jZXMoY2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbCk6IFJlZmVyZW5jZVtdIHtcbiAgcmV0dXJuIGNhY2hlID8gWy4uLmNhY2hlLmZyb250bWF0dGVyTGlua3MgPz8gW10sIC4uLmNhY2hlLmxpbmtzID8/IFtdLCAuLi5jYWNoZS5lbWJlZHMgPz8gW11dIDogW107XG59XG5cbi8qKlxuICogU3RyaXBzIHRoZSBzdWJwYXRoIGZyb20gYSBsaW5rLCB0aGUgd2F5IE9ic2lkaWFuJ3MgYGdldExpbmtwYXRoYCBkb2VzLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIGxpbmsgdGV4dCwgc3VjaCBhcyBgZm9sZGVyL05vdGUjSGVhZGluZ2AuXG4gKiBAcmV0dXJucyBUaGUgbGlua3BhdGgsIHN1Y2ggYXMgYGZvbGRlci9Ob3RlYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TGlua3BhdGgobGluazogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaGFzaEluZGV4ID0gbGluay5pbmRleE9mKCcjJyk7XG4gIHJldHVybiBoYXNoSW5kZXggPT09IC0xID8gbGluayA6IGxpbmsuc2xpY2UoMCwgaGFzaEluZGV4KTtcbn1cblxuLyoqXG4gKiBUaGUga2V5IGEgcmVmZXJlbmNlIGlzIGluZGV4ZWQgdW5kZXI6IHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgaXRzIGxpbmtwYXRoLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIHJlZmVyZW5jZSdzIGxpbmsgdGV4dC5cbiAqIEByZXR1cm5zIFRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIGdldFJlZmVyZW5jZU5hbWVLZXkobGluazogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGlua3BhdGggPSBnZXRMaW5rcGF0aChsaW5rKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbGlua3BhdGguc2xpY2UobGlua3BhdGgubGFzdEluZGV4T2YoJy8nKSArIDEpO1xufVxuXG4vKipcbiAqIFRoZSBrZXlzIHVuZGVyIHdoaWNoIGEgcmVmZXJlbmNlIHRvIGEgZmlsZSB3aXRoIHRoaXMgbmFtZSBjYW4gYmUgaW5kZXhlZC4gYGdldExpbmtwYXRoRGVzdGAgbWF0Y2hlcyBhXG4gKiBzZWdtZW50IGFnYWluc3QgdGhlIGZpbGUncyBuYW1lLCBhbmQgYWdhaW5zdCB0aGUgbmFtZSB3aXRoIGAubWRgIGFwcGVuZGVkLCBzbyBhIG5vdGUgbmFtZWQgYE5vdGUubWRgIGlzXG4gKiByZWFjaGFibGUgZnJvbSBib3RoIGBub3RlLm1kYCBhbmQgYG5vdGVgLlxuICpcbiAqIEBwYXJhbSBmaWxlTmFtZSAtIFRoZSBmaWxlJ3MgbmFtZSwgZXh0ZW5zaW9uIGluY2x1ZGVkLlxuICogQHJldHVybnMgVGhlIGtleXMuXG4gKi9cbmZ1bmN0aW9uIGdldFRhcmdldE5hbWVLZXlzKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IG5hbWVLZXkgPSBmaWxlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbmFtZUtleS5lbmRzV2l0aChNQVJLRE9XTl9TVUZGSVgpID8gW25hbWVLZXksIG5hbWVLZXkuc2xpY2UoMCwgLU1BUktET1dOX1NVRkZJWC5sZW5ndGgpXSA6IFtuYW1lS2V5XTtcbn1cblxuZnVuY3Rpb24gaW5kZXhTb3VyY2UoYXBwOiBBcHAsIGRhdGE6IEJhY2tsaW5rSW5kZXhEYXRhLCBzb3VyY2VQYXRoOiBzdHJpbmcsIGhhc2g6IHN0cmluZyk6IHZvaWQge1xuICByZW1vdmVTb3VyY2UoZGF0YSwgc291cmNlUGF0aCk7XG4gIGNvbnN0IGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZVtoYXNoXTtcbiAgLypcbiAgICogQSBub3RlJ3MgYGZpbGVDYWNoZWAgZW50cnkgY2FuIGNhcnJ5IGl0cyBuZXcgaGFzaCBiZWZvcmUgdGhlIG1ldGFkYXRhIGZvciB0aGF0IGhhc2ggaXMgc3RvcmVkLiBSZWNvcmRpbmdcbiAgICogdGhlIGhhc2ggdGhlbiB3b3VsZCBwaW4gdGhlIG5vdGUgYXQgXCJubyByZWZlcmVuY2VzXCIgdW50aWwgaXRzIGNvbnRlbnQgY2hhbmdlZCBhZ2Fpbiwgc28gbGVhdmUgaXRcbiAgICogdW5yZWNvcmRlZCBhbmQgbGV0IHRoZSBuZXh0IHF1ZXJ5IGxvb2sgYWdhaW4uXG4gICAqL1xuICBpZiAoIWNhY2hlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbmFtZUtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgZ2V0Q2FjaGVSZWZlcmVuY2VzKGNhY2hlKSkge1xuICAgIG5hbWVLZXlzLmFkZChnZXRSZWZlcmVuY2VOYW1lS2V5KHJlZmVyZW5jZS5saW5rKSk7XG4gIH1cbiAgZm9yIChjb25zdCBuYW1lS2V5IG9mIG5hbWVLZXlzKSB7XG4gICAgbGV0IHNvdXJjZVBhdGhzID0gZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuZ2V0KG5hbWVLZXkpO1xuICAgIGlmICghc291cmNlUGF0aHMpIHtcbiAgICAgIHNvdXJjZVBhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICBkYXRhLm5hbWVLZXlTb3VyY2VQYXRocy5zZXQobmFtZUtleSwgc291cmNlUGF0aHMpO1xuICAgIH1cbiAgICBzb3VyY2VQYXRocy5hZGQoc291cmNlUGF0aCk7XG4gIH1cbiAgZGF0YS5zb3VyY2VQYXRoTmFtZUtleXMuc2V0KHNvdXJjZVBhdGgsIG5hbWVLZXlzKTtcbiAgZGF0YS5pbmRleGVkSGFzaGVzLnNldChzb3VyY2VQYXRoLCBoYXNoKTtcbn1cblxuLyoqXG4gKiBCcmluZ3MgdGhlIGluZGV4IGluIGxpbmUgd2l0aCBgbWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVgLiBJdCBydW5zIG9uIGV2ZXJ5IHF1ZXJ5LCBzbyBpdCBpcyBvbmUgcGFzcyBvdmVyXG4gKiBgZmlsZUNhY2hlYCB3aXRoIG5vIGFsbG9jYXRpb24gcGVyIG5vdGUgKGEgcmVuYW1lIGluIGEgbGFyZ2UgdmF1bHQgcXVlcmllcyBzZXZlcmFsIHRpbWVzKSwgYW5kIHRoZSBwYXNzIG92ZXIgdGhlXG4gKiBpbmRleCB0aGF0IGZpbmRzIG5vdGVzIGdvbmUgZnJvbSBgZmlsZUNhY2hlYCBydW5zIG9ubHkgd2hlbiB0aGF0IGZpcnN0IHBhc3MgZGlkIG5vdCBzZWUgZXZlcnkgaW5kZXhlZCBub3RlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGRhdGEgLSBUaGUgaW5kZXguXG4gKi9cbmZ1bmN0aW9uIHJlZnJlc2goYXBwOiBBcHAsIGRhdGE6IEJhY2tsaW5rSW5kZXhEYXRhKTogdm9pZCB7XG4gIGNvbnN0IGZpbGVDYWNoZSA9IGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZTtcbiAgY29uc3QgaW5kZXhlZENvdW50QmVmb3JlID0gZGF0YS5pbmRleGVkSGFzaGVzLnNpemU7XG4gIGxldCBzZWVuSW5kZXhlZENvdW50ID0gMDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ3VhcmQtZm9yLWluIC0tIGBPYmplY3QuaGFzT3duYCBiZWxvdyBpcyB0aGUgZ3VhcmQ7IGBmb3IuLi5pbmAgYXZvaWRzIGFuIGVudHJ5IGFycmF5IHBlciBub3RlLlxuICBmb3IgKGNvbnN0IHNvdXJjZVBhdGggaW4gZmlsZUNhY2hlKSB7XG4gICAgY29uc3QgZW50cnkgPSBPYmplY3QuaGFzT3duKGZpbGVDYWNoZSwgc291cmNlUGF0aCkgPyBmaWxlQ2FjaGVbc291cmNlUGF0aF0gOiB1bmRlZmluZWQ7XG4gICAgaWYgKCFlbnRyeSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ZWRIYXNoID0gZGF0YS5pbmRleGVkSGFzaGVzLmdldChzb3VyY2VQYXRoKTtcbiAgICBpZiAoaW5kZXhlZEhhc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VlbkluZGV4ZWRDb3VudCsrO1xuICAgIH1cbiAgICBpZiAoaW5kZXhlZEhhc2ggIT09IGVudHJ5Lmhhc2gpIHtcbiAgICAgIGluZGV4U291cmNlKGFwcCwgZGF0YSwgc291cmNlUGF0aCwgZW50cnkuaGFzaCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNlZW5JbmRleGVkQ291bnQgPT09IGluZGV4ZWRDb3VudEJlZm9yZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBkYXRhLnNvdXJjZVBhdGhOYW1lS2V5cy5rZXlzKCkpIHtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24oZmlsZUNhY2hlLCBzb3VyY2VQYXRoKSkge1xuICAgICAgcmVtb3ZlU291cmNlKGRhdGEsIHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVTb3VyY2UoZGF0YTogQmFja2xpbmtJbmRleERhdGEsIHNvdXJjZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBmb3IgKGNvbnN0IG5hbWVLZXkgb2YgZGF0YS5zb3VyY2VQYXRoTmFtZUtleXMuZ2V0KHNvdXJjZVBhdGgpID8/IFtdKSB7XG4gICAgY29uc3Qgc291cmNlUGF0aHMgPSBlbnN1cmVOb25OdWxsYWJsZShkYXRhLm5hbWVLZXlTb3VyY2VQYXRocy5nZXQobmFtZUtleSkpO1xuICAgIHNvdXJjZVBhdGhzLmRlbGV0ZShzb3VyY2VQYXRoKTtcbiAgICBpZiAoc291cmNlUGF0aHMuc2l6ZSA9PT0gMCkge1xuICAgICAgZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuZGVsZXRlKG5hbWVLZXkpO1xuICAgIH1cbiAgfVxuICBkYXRhLnNvdXJjZVBhdGhOYW1lS2V5cy5kZWxldGUoc291cmNlUGF0aCk7XG4gIGRhdGEuaW5kZXhlZEhhc2hlcy5kZWxldGUoc291cmNlUGF0aCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdEQSx5QkFBa0M7QUFDbEMsNkJBQW9DO0FBRXBDLGdDQUFvQztBQWFwQyxNQUFNLGtCQUFrQjtBQVVqQixTQUFTLDJCQUEyQixLQUFVLE1BQXlDO0FBQzVGLFFBQU0sT0FBTyxxQkFBcUI7QUFDbEMsVUFBUSxLQUFLLElBQUk7QUFFakIsUUFBTSxnQkFBZ0IsSUFBSTtBQUMxQixRQUFNLFlBQVksSUFBSSwyQ0FBK0I7QUFHckQsUUFBTSx1QkFBdUIsb0JBQUksSUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ3hELGFBQVcsV0FBVyxrQkFBa0IsS0FBSyxJQUFJLEdB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
|
|
@@ -119,13 +119,13 @@ __export(backlink_exports, {
|
|
|
119
119
|
renderDelayedBacklinksForFolder: () => renderDelayedBacklinksForFolder
|
|
120
120
|
});
|
|
121
121
|
module.exports = __toCommonJS(backlink_exports);
|
|
122
|
-
var import_type_guards = require(
|
|
123
|
-
var import_callout = require(
|
|
124
|
-
var import_dataview_link = require(
|
|
125
|
-
var import_dataview = require(
|
|
126
|
-
var import_file_system = require(
|
|
127
|
-
var import_link = require(
|
|
128
|
-
var import_metadata_cache = require(
|
|
122
|
+
var import_type_guards = require("@mnaoumov/typescript-lib/type-guards");
|
|
123
|
+
var import_callout = require("./callout.cjs");
|
|
124
|
+
var import_dataview_link = require("./dataview-link.cjs");
|
|
125
|
+
var import_dataview = require("./dataview.cjs");
|
|
126
|
+
var import_file_system = require("./file-system.cjs");
|
|
127
|
+
var import_link = require("./link.cjs");
|
|
128
|
+
var import_metadata_cache = require("./metadata-cache.cjs");
|
|
129
129
|
async function renderBacklinksTable(dv, pathOrFiles) {
|
|
130
130
|
pathOrFiles ??= [];
|
|
131
131
|
const files = pathOrFiles.flatMap((abstractFileOrPath) => {
|
|
@@ -117,7 +117,7 @@ __export(bases_view_registrar_exports, {
|
|
|
117
117
|
PluginBasesViewRegistrar: () => PluginBasesViewRegistrar
|
|
118
118
|
});
|
|
119
119
|
module.exports = __toCommonJS(bases_view_registrar_exports);
|
|
120
|
-
var import_obsidian = require(
|
|
120
|
+
var import_obsidian = require("obsidian");
|
|
121
121
|
class PluginBasesViewRegistrar {
|
|
122
122
|
/**
|
|
123
123
|
* Creates a new instance of the {@link PluginBasesViewRegistrar} class.
|
|
@@ -120,7 +120,7 @@ __export(broken_link_candidates_exports, {
|
|
|
120
120
|
getPathMapping: () => getPathMapping
|
|
121
121
|
});
|
|
122
122
|
module.exports = __toCommonJS(broken_link_candidates_exports);
|
|
123
|
-
var import_type_guards = require(
|
|
123
|
+
var import_type_guards = require("@mnaoumov/typescript-lib/type-guards");
|
|
124
124
|
var BrokenLinkEvidenceKind = /* @__PURE__ */ ((BrokenLinkEvidenceKind2) => {
|
|
125
125
|
BrokenLinkEvidenceKind2["Alias"] = "Alias";
|
|
126
126
|
BrokenLinkEvidenceKind2["CaseChange"] = "CaseChange";
|
|
@@ -0,0 +1,222 @@
|
|
|
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
|
+
(function patchObsidianRequire() {
|
|
6
|
+
const originalRequire = require;
|
|
7
|
+
if (!originalRequire || originalRequire.__isPatched) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
require = Object.assign(
|
|
11
|
+
(id) => requirePatched(id),
|
|
12
|
+
originalRequire,
|
|
13
|
+
{
|
|
14
|
+
__isPatched: true
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
function extractDefault($module) {
|
|
18
|
+
return $module && $module.__esModule && "default" in $module ? $module.default : $module;
|
|
19
|
+
}
|
|
20
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
|
|
21
|
+
"@codemirror/autocomplete",
|
|
22
|
+
"@codemirror/collab",
|
|
23
|
+
"@codemirror/commands",
|
|
24
|
+
"@codemirror/language",
|
|
25
|
+
"@codemirror/lint",
|
|
26
|
+
"@codemirror/search",
|
|
27
|
+
"@codemirror/state",
|
|
28
|
+
"@codemirror/text",
|
|
29
|
+
"@codemirror/view",
|
|
30
|
+
"@lezer/common",
|
|
31
|
+
"@lezer/highlight",
|
|
32
|
+
"@lezer/lr",
|
|
33
|
+
"obsidian"
|
|
34
|
+
]);
|
|
35
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
|
|
36
|
+
"@codemirror/closebrackets",
|
|
37
|
+
"@codemirror/comment",
|
|
38
|
+
"@codemirror/fold",
|
|
39
|
+
"@codemirror/gutter",
|
|
40
|
+
"@codemirror/highlight",
|
|
41
|
+
"@codemirror/history",
|
|
42
|
+
"@codemirror/matchbrackets",
|
|
43
|
+
"@codemirror/panel",
|
|
44
|
+
"@codemirror/rangeset",
|
|
45
|
+
"@codemirror/rectangular-selection",
|
|
46
|
+
"@codemirror/stream-parser",
|
|
47
|
+
"@codemirror/tooltip"
|
|
48
|
+
]);
|
|
49
|
+
function requirePatched(id) {
|
|
50
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
51
|
+
return originalRequire?.(id);
|
|
52
|
+
}
|
|
53
|
+
const app = globalThis.app;
|
|
54
|
+
if (app?.isMobile) {
|
|
55
|
+
if (id === "process" || id === "node:process") {
|
|
56
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
57
|
+
return process;
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
const $module = originalRequire?.(id);
|
|
61
|
+
if ($module) {
|
|
62
|
+
return extractDefault($module);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
66
|
+
return {};
|
|
67
|
+
}
|
|
68
|
+
})();
|
|
69
|
+
|
|
70
|
+
"use strict";
|
|
71
|
+
var __defProp = Object.defineProperty;
|
|
72
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
73
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
74
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
75
|
+
var __export = (target, all) => {
|
|
76
|
+
for (var name in all)
|
|
77
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
78
|
+
};
|
|
79
|
+
var __copyProps = (to, from, except, desc) => {
|
|
80
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
81
|
+
for (let key of __getOwnPropNames(from))
|
|
82
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
83
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
84
|
+
}
|
|
85
|
+
return to;
|
|
86
|
+
};
|
|
87
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
88
|
+
var bug_report_diagnostics_exports = {};
|
|
89
|
+
__export(bug_report_diagnostics_exports, {
|
|
90
|
+
BugReportLogBuffer: () => BugReportLogBuffer,
|
|
91
|
+
DEFAULT_BUG_REPORT_LOG_MAX_ENTRIES: () => DEFAULT_BUG_REPORT_LOG_MAX_ENTRIES,
|
|
92
|
+
DEFAULT_BUG_REPORT_LOG_MAX_ENTRY_LENGTH: () => DEFAULT_BUG_REPORT_LOG_MAX_ENTRY_LENGTH,
|
|
93
|
+
REDACTED_VALUE: () => REDACTED_VALUE,
|
|
94
|
+
createSettingsDiagnosticSection: () => createSettingsDiagnosticSection,
|
|
95
|
+
formatBugReportDiagnostics: () => formatBugReportDiagnostics,
|
|
96
|
+
getMarkdownFence: () => getMarkdownFence,
|
|
97
|
+
redactSettings: () => redactSettings
|
|
98
|
+
});
|
|
99
|
+
module.exports = __toCommonJS(bug_report_diagnostics_exports);
|
|
100
|
+
const REDACTED_VALUE = "[redacted]";
|
|
101
|
+
const DEFAULT_BUG_REPORT_LOG_MAX_ENTRIES = 200;
|
|
102
|
+
const DEFAULT_BUG_REPORT_LOG_MAX_ENTRY_LENGTH = 2e3;
|
|
103
|
+
const JSON_INDENT = 2;
|
|
104
|
+
const MIN_FENCE_LENGTH = 3;
|
|
105
|
+
const TRUNCATION_MARKER = " [truncated]";
|
|
106
|
+
class BugReportLogBuffer {
|
|
107
|
+
entries = [];
|
|
108
|
+
maxEntries;
|
|
109
|
+
maxEntryLength;
|
|
110
|
+
now;
|
|
111
|
+
/**
|
|
112
|
+
* Constructs a new instance.
|
|
113
|
+
*
|
|
114
|
+
* @param options - Constructor options.
|
|
115
|
+
*/
|
|
116
|
+
constructor(options = {}) {
|
|
117
|
+
this.maxEntries = Math.max(1, Math.floor(options.maxEntries ?? DEFAULT_BUG_REPORT_LOG_MAX_ENTRIES));
|
|
118
|
+
this.maxEntryLength = Math.max(1, Math.floor(options.maxEntryLength ?? DEFAULT_BUG_REPORT_LOG_MAX_ENTRY_LENGTH));
|
|
119
|
+
this.now = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Adds an entry, stamped with the current time.
|
|
123
|
+
*
|
|
124
|
+
* @param message - The entry's text.
|
|
125
|
+
*/
|
|
126
|
+
add(message) {
|
|
127
|
+
const text = message.length > this.maxEntryLength ? message.slice(0, this.maxEntryLength) + TRUNCATION_MARKER : message;
|
|
128
|
+
this.entries.push(`${this.now().toISOString()} ${text}`);
|
|
129
|
+
if (this.entries.length > this.maxEntries) {
|
|
130
|
+
this.entries.splice(0, this.entries.length - this.maxEntries);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Removes every entry.
|
|
135
|
+
*/
|
|
136
|
+
clear() {
|
|
137
|
+
this.entries.length = 0;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Gets the entries, oldest first.
|
|
141
|
+
*
|
|
142
|
+
* @returns The entries.
|
|
143
|
+
*/
|
|
144
|
+
getEntries() {
|
|
145
|
+
return [...this.entries];
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Builds a potentially private diagnostic section holding the entries.
|
|
149
|
+
*
|
|
150
|
+
* @param options - The options.
|
|
151
|
+
* @returns The section.
|
|
152
|
+
*/
|
|
153
|
+
toSection(options = {}) {
|
|
154
|
+
return {
|
|
155
|
+
content: this.entries.length === 0 ? "(no log entries)" : this.entries.join("\n"),
|
|
156
|
+
id: options.id ?? "logs",
|
|
157
|
+
isPotentiallyPrivate: true,
|
|
158
|
+
title: options.title ?? "Logs"
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function createSettingsDiagnosticSection(params) {
|
|
163
|
+
return {
|
|
164
|
+
content: JSON.stringify(redactSettings(params.settings, params.secretKeys ?? []), null, JSON_INDENT) ?? "undefined",
|
|
165
|
+
id: params.id ?? "settings",
|
|
166
|
+
isPotentiallyPrivate: true,
|
|
167
|
+
title: params.title ?? "Plugin settings"
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function formatBugReportDiagnostics(sections) {
|
|
171
|
+
return sections.map((section) => {
|
|
172
|
+
const fence = getMarkdownFence(section.content);
|
|
173
|
+
return `### ${section.title}
|
|
174
|
+
|
|
175
|
+
${fence}
|
|
176
|
+
${section.content}
|
|
177
|
+
${fence}`;
|
|
178
|
+
}).join("\n\n");
|
|
179
|
+
}
|
|
180
|
+
function getMarkdownFence(content) {
|
|
181
|
+
let longestRun = 0;
|
|
182
|
+
for (const match of content.matchAll(/`+/g)) {
|
|
183
|
+
longestRun = Math.max(longestRun, match[0].length);
|
|
184
|
+
}
|
|
185
|
+
return "`".repeat(Math.max(MIN_FENCE_LENGTH, longestRun + 1));
|
|
186
|
+
}
|
|
187
|
+
function redactSettings(settings, secretKeys) {
|
|
188
|
+
const lowerCaseSecretKeys = new Set(secretKeys.map((key) => key.toLowerCase()));
|
|
189
|
+
return redactValue(settings, lowerCaseSecretKeys, /* @__PURE__ */ new WeakSet());
|
|
190
|
+
}
|
|
191
|
+
function redactValue(value, lowerCaseSecretKeys, seen) {
|
|
192
|
+
if (typeof value !== "object" || value === null) {
|
|
193
|
+
return value;
|
|
194
|
+
}
|
|
195
|
+
if (seen.has(value)) {
|
|
196
|
+
return "[circular]";
|
|
197
|
+
}
|
|
198
|
+
seen.add(value);
|
|
199
|
+
if (Array.isArray(value)) {
|
|
200
|
+
const result2 = value.map((item) => redactValue(item, lowerCaseSecretKeys, seen));
|
|
201
|
+
seen.delete(value);
|
|
202
|
+
return result2;
|
|
203
|
+
}
|
|
204
|
+
const result = {};
|
|
205
|
+
for (const [key, child] of Object.entries(value)) {
|
|
206
|
+
result[key] = lowerCaseSecretKeys.has(key.toLowerCase()) ? REDACTED_VALUE : redactValue(child, lowerCaseSecretKeys, seen);
|
|
207
|
+
}
|
|
208
|
+
seen.delete(value);
|
|
209
|
+
return result;
|
|
210
|
+
}
|
|
211
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
212
|
+
0 && (module.exports = {
|
|
213
|
+
BugReportLogBuffer,
|
|
214
|
+
DEFAULT_BUG_REPORT_LOG_MAX_ENTRIES,
|
|
215
|
+
DEFAULT_BUG_REPORT_LOG_MAX_ENTRY_LENGTH,
|
|
216
|
+
REDACTED_VALUE,
|
|
217
|
+
createSettingsDiagnosticSection,
|
|
218
|
+
formatBugReportDiagnostics,
|
|
219
|
+
getMarkdownFence,
|
|
220
|
+
redactSettings
|
|
221
|
+
});
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWctcmVwb3J0LWRpYWdub3N0aWNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBPcHRpb25hbCBkaWFnbm9zdGljcyBhIHBsdWdpbiBjYW4gYXR0YWNoIHRvIGEgYnVnIHJlcG9ydDogc2VjdGlvbnMgb2YgdGV4dCB0aGUgdXNlciByZXZpZXdzIGJlZm9yZVxuICogYW55dGhpbmcgbGVhdmVzIE9ic2lkaWFuLCBhIGJvdW5kZWQgbG9nIGJ1ZmZlciwgYW5kIHJlZGFjdGlvbiBvZiBhIHBsdWdpbidzIG93biBzZXR0aW5ncy5cbiAqXG4gKiBOb3RoaW5nIGhlcmUgcmVhZHMgbG9ncyBvciBzZXR0aW5ncyBieSBpdHNlbGYuIEEgbG9nIGJ1ZmZlciBob2xkcyBvbmx5IHdoYXQgdGhlIHBsdWdpbiB3cm90ZSB0byBpdCBzaW5jZVxuICogdGhlIGJ1ZmZlciB3YXMgY3JlYXRlZCwgbmV2ZXIgdGhlIGNvbnNvbGUncyBoaXN0b3J5LCBhbmQgYSBzZXR0aW5ncyBzZWN0aW9uIGhvbGRzIG9ubHkgdGhlIG9iamVjdCB0aGVcbiAqIHBsdWdpbiBoYW5kcyBvdmVyLiBSZWRhY3Rpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBjYWxsZXItZGVjbGFyZWQga2V5czsgaXQgaXMgbm90IGEgcHJvbWlzZSB0byBmaW5kXG4gKiBldmVyeSBzZWNyZXQsIHdoaWNoIGlzIHdoeSBldmVyeSBzZWN0aW9uIGlzIHNob3duIHRvIHRoZSB1c2VyLCBhbmQgYSBwb3RlbnRpYWxseSBwcml2YXRlIG9uZSBpcyBsZWZ0XG4gKiBvdXQgdW5sZXNzIHRoZSB1c2VyIGluY2x1ZGVzIGl0LlxuICovXG5cbi8qKlxuICogQSBzZWN0aW9uIG9mIGRpYWdub3N0aWNzIGZvciBhIGJ1ZyByZXBvcnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVnUmVwb3J0RGlhZ25vc3RpY1NlY3Rpb24ge1xuICAvKipcbiAgICogVGhlIHNlY3Rpb24ncyB0ZXh0LCBzaG93biB0byB0aGUgdXNlciBhbmQgc2VudCBhcyB3cml0dGVuLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YWJsZSBpZCwgdW5pcXVlIGFtb25nIHRoZSBzZWN0aW9ucyBvZiBvbmUgcmVwb3J0LlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2VjdGlvbiBjYW4gaG9sZCBwcml2YXRlIGRhdGEsIHN1Y2ggYXMgbG9ncyBvciBzZXR0aW5ncy4gQSBwb3RlbnRpYWxseSBwcml2YXRlIHNlY3Rpb24gaXNcbiAgICogbGVmdCBvdXQgb2YgdGhlIHJlcG9ydCB1bmxlc3MgdGhlIHVzZXIgaW5jbHVkZXMgaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzUG90ZW50aWFsbHlQcml2YXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNlY3Rpb24ncyB0aXRsZS5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uc3RydWN0b3IgcGFyYW1ldGVycyBmb3Ige0BsaW5rIEJ1Z1JlcG9ydExvZ0J1ZmZlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVnUmVwb3J0TG9nQnVmZmVyQ29uc3RydWN0b3JPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtb3N0IGVudHJpZXMga2VwdC4gT2xkZXIgZW50cmllcyBhcmUgZHJvcHBlZCBmaXJzdC5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIERFRkFVTFRfQlVHX1JFUE9SVF9MT0dfTUFYX0VOVFJJRVN9XG4gICAqL1xuICByZWFkb25seSBtYXhFbnRyaWVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCBjaGFyYWN0ZXJzIGtlcHQgb2Ygb25lIGVudHJ5LiBBIGxvbmdlciBlbnRyeSBpcyBjdXQsIGFuZCBzYXlzIHNvLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7QGxpbmsgREVGQVVMVF9CVUdfUkVQT1JUX0xPR19NQVhfRU5UUllfTEVOR1RIfVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4RW50cnlMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgdGltZS4gRm9yIHRlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgKCkgPT4gbmV3IERhdGUoKWBcbiAgICovXG4gIHJlYWRvbmx5IG5vdz86ICgpID0+IERhdGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEJ1Z1JlcG9ydExvZ0J1ZmZlci50b1NlY3Rpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Z1JlcG9ydExvZ0J1ZmZlclRvU2VjdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHNlY3Rpb24ncyBpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYCdsb2dzJ2BcbiAgICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdGlvbidzIHRpdGxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ0xvZ3MnYFxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNyZWF0ZVNldHRpbmdzRGlhZ25vc3RpY1NlY3Rpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHRpbmdzRGlhZ25vc3RpY1NlY3Rpb25QYXJhbXMge1xuICAvKipcbiAgICogVGhlIHNlY3Rpb24ncyBpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYCdzZXR0aW5ncydgXG4gICAqL1xuICByZWFkb25seSBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGtleXMgd2hvc2UgdmFsdWVzIGFyZSByZXBsYWNlZCB3aXRoIHtAbGluayBSRURBQ1RFRF9WQUxVRX0sIGF0IGFueSBkZXB0aCwgY29tcGFyZWQgd2l0aG91dCBjYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0S2V5cz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3J0aW5nIHBsdWdpbidzIG93biBzZXR0aW5ncywgc3VjaCBhcyBpdHMgYGRhdGEuanNvbmAuXG4gICAqL1xuICByZWFkb25seSBzZXR0aW5nczogdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIHNlY3Rpb24ncyB0aXRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCdQbHVnaW4gc2V0dGluZ3MnYFxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHZhbHVlIHRoYXQgcmVwbGFjZXMgYSByZWRhY3RlZCBzZXR0aW5nLlxuICovXG5leHBvcnQgY29uc3QgUkVEQUNURURfVkFMVUUgPSAnW3JlZGFjdGVkXSc7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgbnVtYmVyIG9mIGVudHJpZXMgYSB7QGxpbmsgQnVnUmVwb3J0TG9nQnVmZmVyfSBrZWVwcy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQlVHX1JFUE9SVF9MT0dfTUFYX0VOVFJJRVMgPSAyMDA7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYSB7QGxpbmsgQnVnUmVwb3J0TG9nQnVmZmVyfSBrZWVwcyBvZiBvbmUgZW50cnkuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JVR19SRVBPUlRfTE9HX01BWF9FTlRSWV9MRU5HVEggPSAyMDAwO1xuXG5jb25zdCBKU09OX0lOREVOVCA9IDI7XG5jb25zdCBNSU5fRkVOQ0VfTEVOR1RIID0gMztcbmNvbnN0IFRSVU5DQVRJT05fTUFSS0VSID0gJyBbdHJ1bmNhdGVkXSc7XG5cbi8qKlxuICogQSBib3VuZGVkIGJ1ZmZlciBvZiBsb2cgZW50cmllcyBhIHBsdWdpbiB3cml0ZXMgZm9yIGl0cyBidWcgcmVwb3J0cy4gSXQga2VlcHMgb25seSB3aGF0IHRoZSBwbHVnaW4gYWRkc1xuICogYWZ0ZXIgY3JlYXRpbmcgaXQsIGF0IG1vc3Qge0BsaW5rIEJ1Z1JlcG9ydExvZ0J1ZmZlckNvbnN0cnVjdG9yT3B0aW9ucy5tYXhFbnRyaWVzfSBlbnRyaWVzLCBlYWNoIGN1dCB0b1xuICoge0BsaW5rIEJ1Z1JlcG9ydExvZ0J1ZmZlckNvbnN0cnVjdG9yT3B0aW9ucy5tYXhFbnRyeUxlbmd0aH0gY2hhcmFjdGVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJ1Z1JlcG9ydExvZ0J1ZmZlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50cmllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXhFbnRyaWVzOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4RW50cnlMZW5ndGg6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBub3c6ICgpID0+IERhdGU7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uc3RydWN0b3Igb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBCdWdSZXBvcnRMb2dCdWZmZXJDb25zdHJ1Y3Rvck9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMubWF4RW50cmllcyA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3Iob3B0aW9ucy5tYXhFbnRyaWVzID8/IERFRkFVTFRfQlVHX1JFUE9SVF9MT0dfTUFYX0VOVFJJRVMpKTtcbiAgICB0aGlzLm1heEVudHJ5TGVuZ3RoID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihvcHRpb25zLm1heEVudHJ5TGVuZ3RoID8/IERFRkFVTFRfQlVHX1JFUE9SVF9MT0dfTUFYX0VOVFJZX0xFTkdUSCkpO1xuICAgIHRoaXMubm93ID0gb3B0aW9ucy5ub3cgPz8gKCgpOiBEYXRlID0+IG5ldyBEYXRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZW50cnksIHN0YW1wZWQgd2l0aCB0aGUgY3VycmVudCB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBlbnRyeSdzIHRleHQuXG4gICAqL1xuICBwdWJsaWMgYWRkKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRleHQgPSBtZXNzYWdlLmxlbmd0aCA+IHRoaXMubWF4RW50cnlMZW5ndGhcbiAgICAgID8gbWVzc2FnZS5zbGljZSgwLCB0aGlzLm1heEVudHJ5TGVuZ3RoKSArIFRSVU5DQVRJT05fTUFSS0VSXG4gICAgICA6IG1lc3NhZ2U7XG4gICAgdGhpcy5lbnRyaWVzLnB1c2goYCR7dGhpcy5ub3coKS50b0lTT1N0cmluZygpfSAke3RleHR9YCk7XG4gICAgaWYgKHRoaXMuZW50cmllcy5sZW5ndGggPiB0aGlzLm1heEVudHJpZXMpIHtcbiAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoMCwgdGhpcy5lbnRyaWVzLmxlbmd0aCAtIHRoaXMubWF4RW50cmllcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgZXZlcnkgZW50cnkuXG4gICAqL1xuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5lbnRyaWVzLmxlbmd0aCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZW50cmllcywgb2xkZXN0IGZpcnN0LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZW50cmllcy5cbiAgICovXG4gIHB1YmxpYyBnZXRFbnRyaWVzKCk6IHJlYWRvbmx5IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuZW50cmllc107XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgcG90ZW50aWFsbHkgcHJpdmF0ZSBkaWFnbm9zdGljIHNlY3Rpb24gaG9sZGluZyB0aGUgZW50cmllcy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucy5cbiAgICogQHJldHVybnMgVGhlIHNlY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgdG9TZWN0aW9uKG9wdGlvbnM6IEJ1Z1JlcG9ydExvZ0J1ZmZlclRvU2VjdGlvbk9wdGlvbnMgPSB7fSk6IEJ1Z1JlcG9ydERpYWdub3N0aWNTZWN0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogdGhpcy5lbnRyaWVzLmxlbmd0aCA9PT0gMCA/ICcobm8gbG9nIGVudHJpZXMpJyA6IHRoaXMuZW50cmllcy5qb2luKCdcXG4nKSxcbiAgICAgIGlkOiBvcHRpb25zLmlkID8/ICdsb2dzJyxcbiAgICAgIGlzUG90ZW50aWFsbHlQcml2YXRlOiB0cnVlLFxuICAgICAgdGl0bGU6IG9wdGlvbnMudGl0bGUgPz8gJ0xvZ3MnXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIHBvdGVudGlhbGx5IHByaXZhdGUgZGlhZ25vc3RpYyBzZWN0aW9uIGhvbGRpbmcgdGhlIHBsdWdpbidzIHNldHRpbmdzIGFzIEpTT04sIHdpdGggdGhlIHZhbHVlc1xuICogb2Yge0BsaW5rIENyZWF0ZVNldHRpbmdzRGlhZ25vc3RpY1NlY3Rpb25QYXJhbXMuc2VjcmV0S2V5c30gcmVkYWN0ZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHNlY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR0aW5nc0RpYWdub3N0aWNTZWN0aW9uKHBhcmFtczogQ3JlYXRlU2V0dGluZ3NEaWFnbm9zdGljU2VjdGlvblBhcmFtcyk6IEJ1Z1JlcG9ydERpYWdub3N0aWNTZWN0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICBjb250ZW50OiBKU09OLnN0cmluZ2lmeShyZWRhY3RTZXR0aW5ncyhwYXJhbXMuc2V0dGluZ3MsIHBhcmFtcy5zZWNyZXRLZXlzID8/IFtdKSwgbnVsbCwgSlNPTl9JTkRFTlQpID8/ICd1bmRlZmluZWQnLFxuICAgIGlkOiBwYXJhbXMuaWQgPz8gJ3NldHRpbmdzJyxcbiAgICBpc1BvdGVudGlhbGx5UHJpdmF0ZTogdHJ1ZSxcbiAgICB0aXRsZTogcGFyYW1zLnRpdGxlID8/ICdQbHVnaW4gc2V0dGluZ3MnXG4gIH07XG59XG5cbi8qKlxuICogUmVuZGVycyBkaWFnbm9zdGljIHNlY3Rpb25zIGFzIE1hcmtkb3duOiBhIGxldmVsLTMgaGVhZGluZyBhbmQgYSBmZW5jZWQgY29kZSBibG9jayBwZXIgc2VjdGlvbi4gVGhlXG4gKiBmZW5jZSBpcyBsb25nZXIgdGhhbiBhbnkgcnVuIG9mIGJhY2t0aWNrcyBpbiB0aGUgY29udGVudCwgc28gbm8gY29udGVudCBjYW4gY2xvc2UgaXQuXG4gKlxuICogQHBhcmFtIHNlY3Rpb25zIC0gVGhlIHNlY3Rpb25zLlxuICogQHJldHVybnMgVGhlIE1hcmtkb3duLCBvciBhbiBlbXB0eSBzdHJpbmcgd2hlbiB0aGVyZSBhcmUgbm8gc2VjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCdWdSZXBvcnREaWFnbm9zdGljcyhzZWN0aW9uczogcmVhZG9ubHkgQnVnUmVwb3J0RGlhZ25vc3RpY1NlY3Rpb25bXSk6IHN0cmluZyB7XG4gIHJldHVybiBzZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcbiAgICBjb25zdCBmZW5jZSA9IGdldE1hcmtkb3duRmVuY2Uoc2VjdGlvbi5jb250ZW50KTtcbiAgICByZXR1cm4gYCMjIyAke3NlY3Rpb24udGl0bGV9XFxuXFxuJHtmZW5jZX1cXG4ke3NlY3Rpb24uY29udGVudH1cXG4ke2ZlbmNlfWA7XG4gIH0pLmpvaW4oJ1xcblxcbicpO1xufVxuXG4vKipcbiAqIEdldHMgYSBNYXJrZG93biBjb2RlIGZlbmNlIHRoYXQgdGhlIGdpdmVuIGNvbnRlbnQgY2Fubm90IGNsb3NlLlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbnRlbnQgdG8gZmVuY2UuXG4gKiBAcmV0dXJucyBBIHJ1biBvZiBiYWNrdGlja3MgbG9uZ2VyIHRoYW4gdGhlIGxvbmdlc3QgcnVuIGluIHRoZSBjb250ZW50LCBhbmQgYXQgbGVhc3QgdGhyZWUgbG9uZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmVuY2UoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IGxvbmdlc3RSdW4gPSAwO1xuICBmb3IgKGNvbnN0IG1hdGNoIG9mIGNvbnRlbnQubWF0Y2hBbGwoL2ArL2cpKSB7XG4gICAgbG9uZ2VzdFJ1biA9IE1hdGgubWF4KGxvbmdlc3RSdW4sIG1hdGNoWzBdLmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuICdgJy5yZXBlYXQoTWF0aC5tYXgoTUlOX0ZFTkNFX0xFTkdUSCwgbG9uZ2VzdFJ1biArIDEpKTtcbn1cblxuLyoqXG4gKiBDb3BpZXMgc2V0dGluZ3MsIHJlcGxhY2luZyB0aGUgdmFsdWUgb2YgZXZlcnkga2V5IGluIGBzZWNyZXRLZXlzYCwgYXQgYW55IGRlcHRoIGFuZCBjb21wYXJlZCB3aXRob3V0XG4gKiBjYXNlLCB3aXRoIHtAbGluayBSRURBQ1RFRF9WQUxVRX0uIFRoZSBvcmlnaW5hbCBpcyBub3QgY2hhbmdlZC5cbiAqXG4gKiBAcGFyYW0gc2V0dGluZ3MgLSBUaGUgc2V0dGluZ3MuXG4gKiBAcGFyYW0gc2VjcmV0S2V5cyAtIFRoZSBrZXlzIHRvIHJlZGFjdC5cbiAqIEByZXR1cm5zIFRoZSByZWRhY3RlZCBjb3B5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkYWN0U2V0dGluZ3Moc2V0dGluZ3M6IHVua25vd24sIHNlY3JldEtleXM6IHJlYWRvbmx5IHN0cmluZ1tdKTogdW5rbm93biB7XG4gIGNvbnN0IGxvd2VyQ2FzZVNlY3JldEtleXMgPSBuZXcgU2V0KHNlY3JldEtleXMubWFwKChrZXkpID0+IGtleS50b0xvd2VyQ2FzZSgpKSk7XG4gIHJldHVybiByZWRhY3RWYWx1ZShzZXR0aW5ncywgbG93ZXJDYXNlU2VjcmV0S2V5cywgbmV3IFdlYWtTZXQoKSk7XG59XG5cbmZ1bmN0aW9uIHJlZGFjdFZhbHVlKHZhbHVlOiB1bmtub3duLCBsb3dlckNhc2VTZWNyZXRLZXlzOiBSZWFkb25seVNldDxzdHJpbmc+LCBzZWVuOiBXZWFrU2V0PG9iamVjdD4pOiB1bmtub3duIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBpZiAoc2Vlbi5oYXModmFsdWUpKSB7XG4gICAgcmV0dXJuICdbY2lyY3VsYXJdJztcbiAgfVxuICBzZWVuLmFkZCh2YWx1ZSk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsdWUubWFwKChpdGVtOiB1bmtub3duKSA9PiByZWRhY3RWYWx1ZShpdGVtLCBsb3dlckNhc2VTZWNyZXRLZXlzLCBzZWVuKSk7XG4gICAgc2Vlbi5kZWxldGUodmFsdWUpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgY2hpbGRdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlKSkge1xuICAgIHJlc3VsdFtrZXldID0gbG93ZXJDYXNlU2VjcmV0S2V5cy5oYXMoa2V5LnRvTG93ZXJDYXNlKCkpID8gUkVEQUNURURfVkFMVUUgOiByZWRhY3RWYWx1ZShjaGlsZCwgbG93ZXJDYXNlU2VjcmV0S2V5cywgc2Vlbik7XG4gIH1cbiAgc2Vlbi5kZWxldGUodmFsdWUpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzSE8sTUFBTSxpQkFBaUI7QUFLdkIsTUFBTSxxQ0FBcUM7QUFLM0MsTUFBTSwwQ0FBMEM7QUFFdkQsTUFBTSxjQUFjO0FBQ3BCLE1BQU0sbUJBQW1CO0FB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
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/// <reference path="./library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Optional diagnostics a plugin can attach to a bug report: sections of text the user reviews before
|
|
6
|
+
* anything leaves Obsidian, a bounded log buffer, and redaction of a plugin's own settings.
|
|
7
|
+
*
|
|
8
|
+
* Nothing here reads logs or settings by itself. A log buffer holds only what the plugin wrote to it since
|
|
9
|
+
* the buffer was created, never the console's history, and a settings section holds only the object the
|
|
10
|
+
* plugin hands over. Redaction replaces the values of caller-declared keys; it is not a promise to find
|
|
11
|
+
* every secret, which is why every section is shown to the user, and a potentially private one is left
|
|
12
|
+
* out unless the user includes it.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* A section of diagnostics for a bug report.
|
|
16
|
+
*/
|
|
17
|
+
export interface BugReportDiagnosticSection {
|
|
18
|
+
/**
|
|
19
|
+
* The section's text, shown to the user and sent as written.
|
|
20
|
+
*/
|
|
21
|
+
readonly content: string;
|
|
22
|
+
/**
|
|
23
|
+
* A stable id, unique among the sections of one report.
|
|
24
|
+
*/
|
|
25
|
+
readonly id: string;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the section can hold private data, such as logs or settings. A potentially private section is
|
|
28
|
+
* left out of the report unless the user includes it.
|
|
29
|
+
*
|
|
30
|
+
* @default `false`
|
|
31
|
+
*/
|
|
32
|
+
readonly isPotentiallyPrivate?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* The section's title.
|
|
35
|
+
*/
|
|
36
|
+
readonly title: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Constructor parameters for {@link BugReportLogBuffer}.
|
|
40
|
+
*/
|
|
41
|
+
export interface BugReportLogBufferConstructorOptions {
|
|
42
|
+
/**
|
|
43
|
+
* The most entries kept. Older entries are dropped first.
|
|
44
|
+
*
|
|
45
|
+
* @default {@link DEFAULT_BUG_REPORT_LOG_MAX_ENTRIES}
|
|
46
|
+
*/
|
|
47
|
+
readonly maxEntries?: number;
|
|
48
|
+
/**
|
|
49
|
+
* The most characters kept of one entry. A longer entry is cut, and says so.
|
|
50
|
+
*
|
|
51
|
+
* @default {@link DEFAULT_BUG_REPORT_LOG_MAX_ENTRY_LENGTH}
|
|
52
|
+
*/
|
|
53
|
+
readonly maxEntryLength?: number;
|
|
54
|
+
/**
|
|
55
|
+
* Gets the current time. For tests.
|
|
56
|
+
*
|
|
57
|
+
* @default `() => new Date()`
|
|
58
|
+
*/
|
|
59
|
+
readonly now?: () => Date;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Parameters for {@link BugReportLogBuffer.toSection}.
|
|
63
|
+
*/
|
|
64
|
+
export interface BugReportLogBufferToSectionOptions {
|
|
65
|
+
/**
|
|
66
|
+
* The section's id.
|
|
67
|
+
*
|
|
68
|
+
* @default `'logs'`
|
|
69
|
+
*/
|
|
70
|
+
readonly id?: string;
|
|
71
|
+
/**
|
|
72
|
+
* The section's title.
|
|
73
|
+
*
|
|
74
|
+
* @default `'Logs'`
|
|
75
|
+
*/
|
|
76
|
+
readonly title?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Parameters for {@link createSettingsDiagnosticSection}.
|
|
80
|
+
*/
|
|
81
|
+
export interface CreateSettingsDiagnosticSectionParams {
|
|
82
|
+
/**
|
|
83
|
+
* The section's id.
|
|
84
|
+
*
|
|
85
|
+
* @default `'settings'`
|
|
86
|
+
*/
|
|
87
|
+
readonly id?: string;
|
|
88
|
+
/**
|
|
89
|
+
* The keys whose values are replaced with {@link REDACTED_VALUE}, at any depth, compared without case.
|
|
90
|
+
*/
|
|
91
|
+
readonly secretKeys?: readonly string[];
|
|
92
|
+
/**
|
|
93
|
+
* The reporting plugin's own settings, such as its `data.json`.
|
|
94
|
+
*/
|
|
95
|
+
readonly settings: unknown;
|
|
96
|
+
/**
|
|
97
|
+
* The section's title.
|
|
98
|
+
*
|
|
99
|
+
* @default `'Plugin settings'`
|
|
100
|
+
*/
|
|
101
|
+
readonly title?: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The value that replaces a redacted setting.
|
|
105
|
+
*/
|
|
106
|
+
export declare const REDACTED_VALUE = "[redacted]";
|
|
107
|
+
/**
|
|
108
|
+
* The default number of entries a {@link BugReportLogBuffer} keeps.
|
|
109
|
+
*/
|
|
110
|
+
export declare const DEFAULT_BUG_REPORT_LOG_MAX_ENTRIES = 200;
|
|
111
|
+
/**
|
|
112
|
+
* The default number of characters a {@link BugReportLogBuffer} keeps of one entry.
|
|
113
|
+
*/
|
|
114
|
+
export declare const DEFAULT_BUG_REPORT_LOG_MAX_ENTRY_LENGTH = 2000;
|
|
115
|
+
/**
|
|
116
|
+
* A bounded buffer of log entries a plugin writes for its bug reports. It keeps only what the plugin adds
|
|
117
|
+
* after creating it, at most {@link BugReportLogBufferConstructorOptions.maxEntries} entries, each cut to
|
|
118
|
+
* {@link BugReportLogBufferConstructorOptions.maxEntryLength} characters.
|
|
119
|
+
*/
|
|
120
|
+
export declare class BugReportLogBuffer {
|
|
121
|
+
private readonly entries;
|
|
122
|
+
private readonly maxEntries;
|
|
123
|
+
private readonly maxEntryLength;
|
|
124
|
+
private readonly now;
|
|
125
|
+
/**
|
|
126
|
+
* Constructs a new instance.
|
|
127
|
+
*
|
|
128
|
+
* @param options - Constructor options.
|
|
129
|
+
*/
|
|
130
|
+
constructor(options?: BugReportLogBufferConstructorOptions);
|
|
131
|
+
/**
|
|
132
|
+
* Adds an entry, stamped with the current time.
|
|
133
|
+
*
|
|
134
|
+
* @param message - The entry's text.
|
|
135
|
+
*/
|
|
136
|
+
add(message: string): void;
|
|
137
|
+
/**
|
|
138
|
+
* Removes every entry.
|
|
139
|
+
*/
|
|
140
|
+
clear(): void;
|
|
141
|
+
/**
|
|
142
|
+
* Gets the entries, oldest first.
|
|
143
|
+
*
|
|
144
|
+
* @returns The entries.
|
|
145
|
+
*/
|
|
146
|
+
getEntries(): readonly string[];
|
|
147
|
+
/**
|
|
148
|
+
* Builds a potentially private diagnostic section holding the entries.
|
|
149
|
+
*
|
|
150
|
+
* @param options - The options.
|
|
151
|
+
* @returns The section.
|
|
152
|
+
*/
|
|
153
|
+
toSection(options?: BugReportLogBufferToSectionOptions): BugReportDiagnosticSection;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Builds a potentially private diagnostic section holding the plugin's settings as JSON, with the values
|
|
157
|
+
* of {@link CreateSettingsDiagnosticSectionParams.secretKeys} redacted.
|
|
158
|
+
*
|
|
159
|
+
* @param params - The parameters.
|
|
160
|
+
* @returns The section.
|
|
161
|
+
*/
|
|
162
|
+
export declare function createSettingsDiagnosticSection(params: CreateSettingsDiagnosticSectionParams): BugReportDiagnosticSection;
|
|
163
|
+
/**
|
|
164
|
+
* Renders diagnostic sections as Markdown: a level-3 heading and a fenced code block per section. The
|
|
165
|
+
* fence is longer than any run of backticks in the content, so no content can close it.
|
|
166
|
+
*
|
|
167
|
+
* @param sections - The sections.
|
|
168
|
+
* @returns The Markdown, or an empty string when there are no sections.
|
|
169
|
+
*/
|
|
170
|
+
export declare function formatBugReportDiagnostics(sections: readonly BugReportDiagnosticSection[]): string;
|
|
171
|
+
/**
|
|
172
|
+
* Gets a Markdown code fence that the given content cannot close.
|
|
173
|
+
*
|
|
174
|
+
* @param content - The content to fence.
|
|
175
|
+
* @returns A run of backticks longer than the longest run in the content, and at least three long.
|
|
176
|
+
*/
|
|
177
|
+
export declare function getMarkdownFence(content: string): string;
|
|
178
|
+
/**
|
|
179
|
+
* Copies settings, replacing the value of every key in `secretKeys`, at any depth and compared without
|
|
180
|
+
* case, with {@link REDACTED_VALUE}. The original is not changed.
|
|
181
|
+
*
|
|
182
|
+
* @param settings - The settings.
|
|
183
|
+
* @param secretKeys - The keys to redact.
|
|
184
|
+
* @returns The redacted copy.
|
|
185
|
+
*/
|
|
186
|
+
export declare function redactSettings(settings: unknown, secretKeys: readonly string[]): unknown;
|