obsidian-dev-utils 88.8.0 → 90.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/CHANGELOG.md +24 -0
- package/dist/demo-vault-helper/main.js +20 -23
- package/dist/integration-test-plugin/main.js +2229 -1734
- package/dist/lib/cjs/__merged.cjs +57 -35
- package/dist/lib/cjs/__merged.d.cts +12 -10
- package/dist/lib/cjs/abort-controller.cjs +15 -22
- package/dist/lib/cjs/array.cjs +27 -26
- package/dist/lib/cjs/array.d.cts +25 -7
- package/dist/lib/cjs/async-events.cjs +87 -91
- package/dist/lib/cjs/async-events.d.cts +50 -50
- package/dist/lib/cjs/async.cjs +80 -80
- package/dist/lib/cjs/async.d.cts +23 -23
- package/dist/lib/cjs/beeper.cjs +11 -15
- package/dist/lib/cjs/blob.cjs +14 -25
- package/dist/lib/cjs/codemirror/index.cjs +11 -15
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +11 -15
- package/dist/lib/cjs/debug-controller.cjs +11 -15
- package/dist/lib/cjs/debug.cjs +24 -32
- package/dist/lib/cjs/debug.d.cts +1 -1
- package/dist/lib/cjs/disposable.cjs +59 -43
- package/dist/lib/cjs/disposable.d.cts +27 -8
- package/dist/lib/cjs/enum.cjs +11 -15
- package/dist/lib/cjs/error.cjs +28 -33
- package/dist/lib/cjs/function.cjs +30 -34
- package/dist/lib/cjs/function.d.cts +26 -26
- package/dist/lib/cjs/generated-during-build.cjs +12 -16
- package/dist/lib/cjs/html-element.cjs +84 -89
- package/dist/lib/cjs/html-element.d.cts +15 -15
- package/dist/lib/cjs/index.cjs +11 -15
- package/dist/lib/cjs/integration-test-setup.cjs +11 -15
- package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +11 -15
- package/dist/lib/cjs/jest-setup.cjs +11 -15
- package/dist/lib/cjs/library.cjs +11 -15
- package/dist/lib/cjs/object-utils.cjs +120 -117
- package/dist/lib/cjs/object-utils.d.cts +27 -27
- package/dist/lib/cjs/obsidian/@types/dataview/data-model/value.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/expression/field.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/expression/functions.d.cts +4 -4
- package/dist/lib/cjs/obsidian/active-file-provider.cjs +11 -15
- package/dist/lib/cjs/obsidian/app.cjs +11 -15
- package/dist/lib/cjs/obsidian/async-with-notice.cjs +28 -32
- package/dist/lib/cjs/obsidian/async-with-notice.d.cts +2 -2
- package/dist/lib/cjs/obsidian/attachment-path.cjs +20 -24
- package/dist/lib/cjs/obsidian/attachment-path.d.cts +5 -5
- package/dist/lib/cjs/obsidian/backlink.cjs +12 -16
- package/dist/lib/cjs/obsidian/bases-view-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/callout.cjs +27 -26
- package/dist/lib/cjs/obsidian/callout.d.cts +9 -3
- package/dist/lib/cjs/obsidian/canvas.cjs +13 -16
- package/dist/lib/cjs/obsidian/case-insensitive-file-index.cjs +18 -20
- package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +11 -15
- package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +2 -2
- package/dist/lib/cjs/obsidian/code-block-reg-exp.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +18 -16
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +5 -0
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +54 -32
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +45 -8
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +24 -15
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +18 -0
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +26 -30
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +8 -8
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +12 -16
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +12 -16
- package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +13 -17
- package/dist/lib/cjs/obsidian/command-handlers/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/unlock-active-note-command-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/community-plugins.cjs +28 -25
- package/dist/lib/cjs/obsidian/community-plugins.d.cts +19 -5
- package/dist/lib/cjs/obsidian/components/abort-signal-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +4 -4
- package/dist/lib/cjs/obsidian/components/async-error-handler-component.cjs +13 -16
- package/dist/lib/cjs/obsidian/components/async-events-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/case-insensitive-file-index-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/component-ex.cjs +26 -28
- package/dist/lib/cjs/obsidian/components/component-ex.d.cts +3 -3
- package/dist/lib/cjs/obsidian/components/console-debug-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/components/console-debug-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/components/disposable-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/embed-extensions-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/generate-markdown-link-default-params-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/index.cjs +14 -15
- package/dist/lib/cjs/obsidian/components/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/components/layout-ready-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +29 -33
- package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +55 -55
- package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.cjs +297 -0
- package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.d.cts +139 -0
- package/dist/lib/cjs/obsidian/components/plugin-context-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +28 -31
- package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +26 -30
- package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +8 -8
- package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/pointer-position-component.cjs +13 -17
- package/dist/lib/cjs/obsidian/components/registry-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +72 -62
- package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +12 -1
- package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.cjs +16 -20
- package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.d.cts +8 -8
- package/dist/lib/cjs/obsidian/constructors/get-dom-events-handlers-constructor.cjs +14 -18
- package/dist/lib/cjs/obsidian/constructors/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/css-class.cjs +11 -15
- package/dist/lib/cjs/obsidian/data-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/dataview-link.cjs +13 -17
- package/dist/lib/cjs/obsidian/dataview.cjs +35 -41
- package/dist/lib/cjs/obsidian/dataview.d.cts +2 -2
- package/dist/lib/cjs/obsidian/demo-vault-helper.cjs +13 -17
- package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +22 -26
- package/dist/lib/cjs/obsidian/desktop-trusted-input.cjs +23 -21
- package/dist/lib/cjs/obsidian/editor-extension-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/editor-suggest-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/editor.cjs +17 -19
- package/dist/lib/cjs/obsidian/events.cjs +12 -16
- package/dist/lib/cjs/obsidian/events.d.cts +2 -2
- package/dist/lib/cjs/obsidian/extensions-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/file-change.cjs +76 -80
- package/dist/lib/cjs/obsidian/file-change.d.cts +3 -3
- package/dist/lib/cjs/obsidian/file-manager.cjs +33 -22
- package/dist/lib/cjs/obsidian/file-manager.d.cts +20 -1
- package/dist/lib/cjs/obsidian/file-system.cjs +15 -19
- package/dist/lib/cjs/obsidian/file-system.d.cts +3 -3
- package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +11 -15
- package/dist/lib/cjs/obsidian/frontmatter.cjs +15 -19
- package/dist/lib/cjs/obsidian/hover-link-source-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/html-element.cjs +13 -17
- package/dist/lib/cjs/obsidian/html-element.d.cts +2 -2
- package/dist/lib/cjs/obsidian/i18n/custom-type-options.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/default-translations.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/i18n.cjs +13 -16
- package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +7 -0
- package/dist/lib/cjs/obsidian/i18n/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +11 -15
- package/dist/lib/cjs/obsidian/index.cjs +14 -15
- package/dist/lib/cjs/obsidian/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +11 -15
- package/dist/lib/cjs/obsidian/link-update-progress.cjs +11 -15
- package/dist/lib/cjs/obsidian/link.cjs +91 -81
- package/dist/lib/cjs/obsidian/link.d.cts +22 -22
- package/dist/lib/cjs/obsidian/logger.cjs +21 -25
- package/dist/lib/cjs/obsidian/logger.d.cts +5 -5
- package/dist/lib/cjs/obsidian/loop.cjs +14 -18
- package/dist/lib/cjs/obsidian/loop.d.cts +1 -1
- package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.cjs +12 -16
- package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.d.cts +3 -3
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +35 -40
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +3 -3
- package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.cjs +12 -16
- package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.d.cts +3 -3
- package/dist/lib/cjs/obsidian/markdown-view.cjs +11 -15
- package/dist/lib/cjs/obsidian/markdown.cjs +22 -24
- package/dist/lib/cjs/obsidian/menu-event-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian/metadata-cache.cjs +16 -20
- package/dist/lib/cjs/obsidian/metadata-cache.d.cts +2 -2
- package/dist/lib/cjs/obsidian/modals/alert.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/confirm.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +28 -32
- package/dist/lib/cjs/obsidian/modals/modal.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/prompt.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/select-item.cjs +16 -20
- package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/select-option.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.cjs +26 -28
- package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.d.cts +5 -5
- package/dist/lib/cjs/obsidian/notebook-navigator.cjs +155 -0
- package/dist/lib/cjs/obsidian/notebook-navigator.d.cts +132 -0
- package/dist/lib/cjs/obsidian/obsidian-protocol-handler-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/obsidian-settings.cjs +11 -15
- package/dist/lib/cjs/obsidian/parse-link.cjs +61 -62
- package/dist/lib/cjs/obsidian/parse-link.d.cts +4 -4
- package/dist/lib/cjs/obsidian/path-settings.cjs +27 -25
- package/dist/lib/cjs/obsidian/pdf.cjs +13 -17
- package/dist/lib/cjs/obsidian/pdf.d.cts +2 -2
- package/dist/lib/cjs/obsidian/plugin/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +11 -15
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +156 -52
- package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +17 -21
- package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +2 -2
- package/dist/lib/cjs/obsidian/plugin/plugin-event-source.cjs +20 -24
- package/dist/lib/cjs/obsidian/plugin/plugin-event-source.d.cts +11 -9
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +29 -33
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +33 -16
- package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +11 -1
- package/dist/lib/cjs/obsidian/plugin-cli-handler-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/popovers/field-popover.cjs +11 -15
- package/dist/lib/cjs/obsidian/popovers/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/popovers/popover-anchor.cjs +14 -18
- package/dist/lib/cjs/obsidian/popovers/popover-anchor.d.cts +2 -2
- package/dist/lib/cjs/obsidian/popovers/popover.cjs +19 -23
- package/dist/lib/cjs/obsidian/queue.cjs +16 -20
- package/dist/lib/cjs/obsidian/queue.d.cts +2 -2
- package/dist/lib/cjs/obsidian/react/app-context.cjs +11 -15
- package/dist/lib/cjs/obsidian/react/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/reference.cjs +11 -15
- package/dist/lib/cjs/obsidian/resource-lock.cjs +157 -78
- package/dist/lib/cjs/obsidian/resource-lock.d.cts +5 -0
- package/dist/lib/cjs/obsidian/resource-url.cjs +12 -16
- package/dist/lib/cjs/obsidian/ribbon-icon-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/ribbon-icon-registrar.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/checkbox-component.cjs +18 -22
- package/dist/lib/cjs/obsidian/setting-components/checkbox-component.d.cts +5 -5
- package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.cjs +28 -31
- package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/date-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/date-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/date-time-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/date-time-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/email-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/email-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/file-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/setting-components/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/setting-components/month-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/month-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.cjs +17 -21
- package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-file-component.cjs +12 -16
- package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.cjs +15 -19
- package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/number-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/number-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/password-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/password-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.cjs +16 -20
- package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/telephone-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/telephone-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/text-based-component.cjs +16 -20
- package/dist/lib/cjs/obsidian/setting-components/text-based-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/time-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/time-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.cjs +15 -19
- package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.cjs +16 -20
- package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.cjs +18 -22
- package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-range-text-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/setting-components/typed-text-component.cjs +16 -19
- package/dist/lib/cjs/obsidian/setting-components/typed-text-component.d.cts +4 -4
- package/dist/lib/cjs/obsidian/setting-components/url-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/url-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/validator-component.cjs +45 -49
- package/dist/lib/cjs/obsidian/setting-components/validator-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.cjs +11 -15
- package/dist/lib/cjs/obsidian/setting-components/week-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/week-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-ex.cjs +76 -80
- package/dist/lib/cjs/obsidian/setting-ex.d.cts +42 -42
- package/dist/lib/cjs/obsidian/setting-group-ex.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +2 -2
- package/dist/lib/cjs/obsidian/status-bar-item-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/validation.cjs +11 -15
- package/dist/lib/cjs/obsidian/vault-delete.cjs +23 -20
- package/dist/lib/cjs/obsidian/vault-delete.d.cts +16 -2
- package/dist/lib/cjs/obsidian/vault-transaction.cjs +17 -18
- package/dist/lib/cjs/obsidian/vault.cjs +81 -63
- package/dist/lib/cjs/obsidian/vault.d.cts +32 -11
- package/dist/lib/cjs/obsidian/view-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/workspace.cjs +12 -16
- package/dist/lib/cjs/obsidian-dev-utils-state.cjs +11 -15
- package/dist/lib/cjs/path.cjs +18 -22
- package/dist/lib/cjs/path.d.cts +1 -1
- package/dist/lib/cjs/reg-exp.cjs +38 -35
- package/dist/lib/cjs/reg-exp.d.cts +4 -4
- package/dist/lib/cjs/script-utils/build.cjs +21 -25
- package/dist/lib/cjs/script-utils/build.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +24 -28
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +36 -34
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +20 -24
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +13 -17
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +16 -20
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +6 -2
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +32 -36
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/check-project-types.cjs +13 -17
- package/dist/lib/cjs/script-utils/check-project-types.d.cts +12 -4
- package/dist/lib/cjs/script-utils/cli-utils.cjs +39 -47
- package/dist/lib/cjs/script-utils/cli-utils.d.cts +6 -6
- package/dist/lib/cjs/script-utils/code-generator.cjs +11 -15
- package/dist/lib/cjs/script-utils/commitlint-config.cjs +11 -15
- package/dist/lib/cjs/script-utils/demo-vault-coverage.cjs +22 -23
- package/dist/lib/cjs/script-utils/demo-vault.cjs +11 -15
- package/dist/lib/cjs/script-utils/env-toggle.cjs +13 -17
- package/dist/lib/cjs/script-utils/exec.cjs +40 -44
- package/dist/lib/cjs/script-utils/exec.d.cts +4 -4
- package/dist/lib/cjs/script-utils/formatters/dprint.cjs +12 -16
- package/dist/lib/cjs/script-utils/formatters/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/fs.cjs +13 -17
- package/dist/lib/cjs/script-utils/git.cjs +11 -15
- package/dist/lib/cjs/script-utils/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/json.cjs +15 -19
- package/dist/lib/cjs/script-utils/json.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/cspell.cjs +12 -16
- package/dist/lib/cjs/script-utils/linters/eslint-agnostic-core-boundary.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +402 -16
- package/dist/lib/cjs/script-utils/linters/eslint-no-restricted-syntax.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +27 -31
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.cjs +27 -31
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +21 -25
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.cjs +109 -113
- package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.cjs +13 -17
- package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.cjs +21 -25
- package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +51 -55
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.d.cts +9 -3
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +25 -27
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.d.cts +6 -2
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +33 -37
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint.cjs +14 -18
- package/dist/lib/cjs/script-utils/linters/index.cjs +14 -15
- package/dist/lib/cjs/script-utils/linters/index.d.cts +1 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +18 -17
- package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.cjs +138 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.d.cts +35 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +20 -23
- package/dist/lib/cjs/script-utils/linters/over-exposure.cjs +18 -22
- package/dist/lib/cjs/script-utils/linters/over-exposure.d.cts +54 -18
- package/dist/lib/cjs/script-utils/nano-staged-config.cjs +11 -15
- package/dist/lib/cjs/script-utils/npm-publish.cjs +11 -15
- package/dist/lib/cjs/script-utils/npm-run.cjs +20 -17
- package/dist/lib/cjs/script-utils/npm-run.d.cts +16 -2
- package/dist/lib/cjs/script-utils/npm.cjs +21 -25
- package/dist/lib/cjs/script-utils/npm.d.cts +11 -11
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +11 -15
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +165 -55
- package/dist/lib/cjs/script-utils/root.cjs +11 -15
- package/dist/lib/cjs/script-utils/test-runners/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/test-runners/integration-test-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/test-runners/vitest-config.cjs +12 -15
- package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +11 -15
- package/dist/lib/cjs/script-utils/validate-declarations.cjs +11 -15
- package/dist/lib/cjs/script-utils/version.cjs +62 -63
- package/dist/lib/cjs/script-utils/version.d.cts +21 -21
- package/dist/lib/cjs/script-utils/warnings-as-errors.cjs +11 -15
- package/dist/lib/cjs/setup.cjs +11 -15
- package/dist/lib/cjs/setup.d.cts +1 -1
- package/dist/lib/cjs/strict-proxy.cjs +30 -34
- package/dist/lib/cjs/strict-proxy.d.cts +2 -2
- package/dist/lib/cjs/string.cjs +90 -93
- package/dist/lib/cjs/string.d.cts +60 -60
- package/dist/lib/cjs/transformers/date-transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/duration-transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/group-transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/index.cjs +11 -15
- package/dist/lib/cjs/transformers/map-transformer.cjs +12 -16
- package/dist/lib/cjs/transformers/set-transformer.cjs +12 -16
- package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +12 -16
- package/dist/lib/cjs/transformers/typed-transformer.cjs +11 -15
- package/dist/lib/cjs/two-way-map.cjs +11 -15
- package/dist/lib/cjs/type-guards.cjs +16 -20
- package/dist/lib/cjs/type-guards.d.cts +6 -6
- package/dist/lib/cjs/type.cjs +13 -17
- package/dist/lib/cjs/type.d.cts +2 -2
- package/dist/lib/cjs/url.cjs +18 -22
- package/dist/lib/cjs/url.d.cts +4 -4
- package/dist/lib/cjs/value-provider.cjs +15 -19
- package/dist/lib/cjs/value-provider.d.cts +6 -6
- package/dist/lib/cjs/value-wrapper.cjs +11 -15
- package/dist/lib/cjs/vitest-setup.cjs +11 -15
- package/dist/lib/esm/__merged.d.mts +12 -10
- package/dist/lib/esm/__merged.mjs +51 -23
- package/dist/lib/esm/abort-controller.mjs +5 -8
- package/dist/lib/esm/array.d.mts +25 -7
- package/dist/lib/esm/array.mjs +16 -12
- package/dist/lib/esm/async-events.d.mts +50 -50
- package/dist/lib/esm/async-events.mjs +81 -78
- package/dist/lib/esm/async.d.mts +23 -23
- package/dist/lib/esm/async.mjs +70 -66
- package/dist/lib/esm/blob.mjs +4 -11
- package/dist/lib/esm/debug.d.mts +1 -1
- package/dist/lib/esm/debug.mjs +14 -18
- package/dist/lib/esm/disposable.d.mts +27 -8
- package/dist/lib/esm/disposable.mjs +47 -29
- package/dist/lib/esm/error.mjs +18 -19
- package/dist/lib/esm/function.d.mts +26 -26
- package/dist/lib/esm/function.mjs +20 -20
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/html-element.d.mts +15 -15
- package/dist/lib/esm/html-element.mjs +74 -75
- package/dist/lib/esm/object-utils.d.mts +27 -27
- package/dist/lib/esm/object-utils.mjs +109 -102
- package/dist/lib/esm/obsidian/@types/dataview/data-model/value.d.mts +1 -1
- package/dist/lib/esm/obsidian/@types/dataview/expression/field.d.mts +1 -1
- package/dist/lib/esm/obsidian/@types/dataview/expression/functions.d.mts +4 -4
- package/dist/lib/esm/obsidian/app.mjs +1 -1
- package/dist/lib/esm/obsidian/async-with-notice.d.mts +2 -2
- package/dist/lib/esm/obsidian/async-with-notice.mjs +18 -18
- package/dist/lib/esm/obsidian/attachment-path.d.mts +5 -5
- package/dist/lib/esm/obsidian/attachment-path.mjs +10 -10
- package/dist/lib/esm/obsidian/backlink.mjs +2 -2
- package/dist/lib/esm/obsidian/callout.d.mts +9 -3
- package/dist/lib/esm/obsidian/callout.mjs +17 -12
- package/dist/lib/esm/obsidian/canvas.mjs +3 -2
- package/dist/lib/esm/obsidian/case-insensitive-file-index.mjs +8 -6
- package/dist/lib/esm/obsidian/code-block-markdown-information.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +5 -0
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +8 -2
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +45 -8
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +44 -18
- package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +18 -0
- package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +14 -1
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +8 -8
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +16 -16
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +3 -3
- package/dist/lib/esm/obsidian/community-plugins.d.mts +19 -5
- package/dist/lib/esm/obsidian/community-plugins.mjs +17 -11
- package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +4 -4
- package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +3 -2
- package/dist/lib/esm/obsidian/components/component-ex.d.mts +3 -3
- package/dist/lib/esm/obsidian/components/component-ex.mjs +16 -14
- package/dist/lib/esm/obsidian/components/console-debug-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/components/console-debug-component.mjs +4 -4
- package/dist/lib/esm/obsidian/components/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/components/index.mjs +3 -1
- package/dist/lib/esm/obsidian/components/menu-event-registrar-component.mjs +5 -5
- package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +55 -55
- package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +19 -19
- package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.d.mts +139 -0
- package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.mjs +196 -0
- package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +18 -17
- package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +8 -8
- package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +18 -18
- package/dist/lib/esm/obsidian/components/pointer-position-component.mjs +3 -3
- package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +12 -1
- package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +62 -48
- package/dist/lib/esm/obsidian/components/syntax-highlighting-component.d.mts +8 -8
- package/dist/lib/esm/obsidian/components/syntax-highlighting-component.mjs +6 -6
- package/dist/lib/esm/obsidian/constructors/get-dom-events-handlers-constructor.mjs +4 -4
- package/dist/lib/esm/obsidian/data-handler.mjs +1 -1
- package/dist/lib/esm/obsidian/dataview-link.mjs +3 -3
- package/dist/lib/esm/obsidian/dataview.d.mts +2 -2
- package/dist/lib/esm/obsidian/dataview.mjs +25 -27
- package/dist/lib/esm/obsidian/demo-vault-helper.mjs +4 -3
- package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +12 -12
- package/dist/lib/esm/obsidian/desktop-trusted-input.mjs +13 -7
- package/dist/lib/esm/obsidian/editor.mjs +7 -5
- package/dist/lib/esm/obsidian/events.d.mts +2 -2
- package/dist/lib/esm/obsidian/events.mjs +2 -2
- package/dist/lib/esm/obsidian/file-change.d.mts +3 -3
- package/dist/lib/esm/obsidian/file-change.mjs +67 -67
- package/dist/lib/esm/obsidian/file-manager.d.mts +20 -1
- package/dist/lib/esm/obsidian/file-manager.mjs +22 -8
- package/dist/lib/esm/obsidian/file-system.d.mts +3 -3
- package/dist/lib/esm/obsidian/file-system.mjs +4 -4
- package/dist/lib/esm/obsidian/frontmatter.mjs +5 -5
- package/dist/lib/esm/obsidian/html-element.d.mts +2 -2
- package/dist/lib/esm/obsidian/html-element.mjs +3 -3
- package/dist/lib/esm/obsidian/i18n/i18n.d.mts +7 -0
- package/dist/lib/esm/obsidian/i18n/i18n.mjs +3 -2
- package/dist/lib/esm/obsidian/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/index.mjs +3 -1
- package/dist/lib/esm/obsidian/link.d.mts +22 -22
- package/dist/lib/esm/obsidian/link.mjs +76 -62
- package/dist/lib/esm/obsidian/logger.d.mts +5 -5
- package/dist/lib/esm/obsidian/logger.mjs +11 -11
- package/dist/lib/esm/obsidian/loop.d.mts +1 -1
- package/dist/lib/esm/obsidian/loop.mjs +4 -4
- package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.d.mts +3 -3
- package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.mjs +2 -2
- package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +3 -3
- package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +25 -26
- package/dist/lib/esm/obsidian/markdown-post-processor-registrar.d.mts +3 -3
- package/dist/lib/esm/obsidian/markdown-post-processor-registrar.mjs +2 -2
- package/dist/lib/esm/obsidian/markdown.mjs +12 -10
- package/dist/lib/esm/obsidian/menu-event-registrar.d.mts +1 -1
- package/dist/lib/esm/obsidian/metadata-cache.d.mts +2 -2
- package/dist/lib/esm/obsidian/metadata-cache.mjs +6 -6
- package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +18 -18
- package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -1
- package/dist/lib/esm/obsidian/modals/select-item.mjs +6 -6
- package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.d.mts +5 -5
- package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.mjs +16 -14
- package/dist/lib/esm/obsidian/notebook-navigator.d.mts +132 -0
- package/dist/lib/esm/obsidian/notebook-navigator.mjs +49 -0
- package/dist/lib/esm/obsidian/parse-link.d.mts +4 -4
- package/dist/lib/esm/obsidian/parse-link.mjs +51 -48
- package/dist/lib/esm/obsidian/path-settings.mjs +17 -11
- package/dist/lib/esm/obsidian/pdf.d.mts +2 -2
- package/dist/lib/esm/obsidian/pdf.mjs +3 -3
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +156 -52
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +2 -2
- package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +7 -7
- package/dist/lib/esm/obsidian/plugin/plugin-event-source.d.mts +11 -9
- package/dist/lib/esm/obsidian/plugin/plugin-event-source.mjs +10 -10
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +20 -20
- package/dist/lib/esm/obsidian/plugin/plugin.d.mts +11 -1
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +23 -2
- package/dist/lib/esm/obsidian/popovers/popover-anchor.d.mts +2 -2
- package/dist/lib/esm/obsidian/popovers/popover-anchor.mjs +4 -4
- package/dist/lib/esm/obsidian/popovers/popover.mjs +9 -9
- package/dist/lib/esm/obsidian/queue.d.mts +2 -2
- package/dist/lib/esm/obsidian/queue.mjs +6 -6
- package/dist/lib/esm/obsidian/resource-lock.d.mts +5 -0
- package/dist/lib/esm/obsidian/resource-lock.mjs +147 -64
- package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
- package/dist/lib/esm/obsidian/ribbon-icon-registrar.d.mts +2 -2
- package/dist/lib/esm/obsidian/ribbon-icon-registrar.mjs +1 -1
- package/dist/lib/esm/obsidian/setting-components/checkbox-component.d.mts +5 -5
- package/dist/lib/esm/obsidian/setting-components/checkbox-component.mjs +8 -8
- package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.mjs +18 -17
- package/dist/lib/esm/obsidian/setting-components/date-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/date-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/date-time-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/date-time-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/email-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/email-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/month-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/month-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.mjs +7 -7
- package/dist/lib/esm/obsidian/setting-components/multiple-email-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-email-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/multiple-file-component.mjs +2 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-text-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-text-component.mjs +5 -5
- package/dist/lib/esm/obsidian/setting-components/number-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/number-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/password-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/password-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.mjs +6 -6
- package/dist/lib/esm/obsidian/setting-components/telephone-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/telephone-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/text-based-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/text-based-component.mjs +6 -6
- package/dist/lib/esm/obsidian/setting-components/time-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/time-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.mjs +5 -5
- package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.mjs +6 -6
- package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.mjs +8 -8
- package/dist/lib/esm/obsidian/setting-components/typed-text-component.d.mts +4 -4
- package/dist/lib/esm/obsidian/setting-components/typed-text-component.mjs +6 -5
- package/dist/lib/esm/obsidian/setting-components/url-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/url-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/validator-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/validator-component.mjs +35 -35
- package/dist/lib/esm/obsidian/setting-components/week-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/week-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-ex.d.mts +42 -42
- package/dist/lib/esm/obsidian/setting-ex.mjs +66 -66
- package/dist/lib/esm/obsidian/setting-group-ex.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-group-ex.mjs +4 -4
- package/dist/lib/esm/obsidian/vault-delete.d.mts +16 -2
- package/dist/lib/esm/obsidian/vault-delete.mjs +12 -6
- package/dist/lib/esm/obsidian/vault-transaction.mjs +8 -4
- package/dist/lib/esm/obsidian/vault.d.mts +32 -11
- package/dist/lib/esm/obsidian/vault.mjs +67 -47
- package/dist/lib/esm/obsidian/view-registrar.mjs +1 -1
- package/dist/lib/esm/obsidian/workspace.mjs +2 -2
- package/dist/lib/esm/path.d.mts +1 -1
- package/dist/lib/esm/path.mjs +7 -7
- package/dist/lib/esm/reg-exp.d.mts +4 -4
- package/dist/lib/esm/reg-exp.mjs +28 -21
- package/dist/lib/esm/script-utils/build.d.mts +1 -1
- package/dist/lib/esm/script-utils/build.mjs +15 -12
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +14 -14
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +26 -20
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +10 -10
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +3 -3
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +6 -6
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +6 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +20 -20
- package/dist/lib/esm/script-utils/check-project-types.d.mts +12 -4
- package/dist/lib/esm/script-utils/check-project-types.mjs +3 -3
- package/dist/lib/esm/script-utils/cli-utils.d.mts +6 -6
- package/dist/lib/esm/script-utils/cli-utils.mjs +29 -33
- package/dist/lib/esm/script-utils/demo-vault-coverage.mjs +12 -9
- package/dist/lib/esm/script-utils/env-toggle.mjs +3 -3
- package/dist/lib/esm/script-utils/exec.d.mts +4 -4
- package/dist/lib/esm/script-utils/exec.mjs +32 -32
- package/dist/lib/esm/script-utils/formatters/dprint.mjs +2 -2
- package/dist/lib/esm/script-utils/fs.mjs +3 -3
- package/dist/lib/esm/script-utils/json.d.mts +2 -2
- package/dist/lib/esm/script-utils/json.mjs +5 -5
- package/dist/lib/esm/script-utils/linters/cspell.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +392 -2
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +17 -17
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.mjs +17 -17
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +11 -11
- package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.mjs +99 -99
- package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.mjs +3 -3
- package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.mjs +11 -11
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.d.mts +9 -3
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +41 -41
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.d.mts +6 -2
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +15 -13
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +23 -23
- package/dist/lib/esm/script-utils/linters/eslint.mjs +4 -4
- package/dist/lib/esm/script-utils/linters/index.d.mts +1 -0
- package/dist/lib/esm/script-utils/linters/index.mjs +3 -1
- package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +2 -2
- package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +8 -3
- package/dist/lib/esm/script-utils/linters/markdownlint-ignores.d.mts +35 -0
- package/dist/lib/esm/script-utils/linters/markdownlint-ignores.mjs +33 -0
- package/dist/lib/esm/script-utils/linters/markdownlint.mjs +13 -9
- package/dist/lib/esm/script-utils/linters/over-exposure.d.mts +54 -18
- package/dist/lib/esm/script-utils/linters/over-exposure.mjs +8 -8
- package/dist/lib/esm/script-utils/npm-run.d.mts +16 -2
- package/dist/lib/esm/script-utils/npm-run.mjs +9 -3
- package/dist/lib/esm/script-utils/npm.d.mts +11 -11
- package/dist/lib/esm/script-utils/npm.mjs +11 -11
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +165 -55
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +1 -1
- package/dist/lib/esm/script-utils/test-runners/vitest-config.mjs +2 -1
- package/dist/lib/esm/script-utils/validate-declarations.mjs +1 -1
- package/dist/lib/esm/script-utils/version.d.mts +21 -21
- package/dist/lib/esm/script-utils/version.mjs +48 -45
- package/dist/lib/esm/setup.d.mts +1 -1
- package/dist/lib/esm/setup.mjs +1 -1
- package/dist/lib/esm/strict-proxy.d.mts +2 -2
- package/dist/lib/esm/strict-proxy.mjs +20 -20
- package/dist/lib/esm/string.d.mts +60 -60
- package/dist/lib/esm/string.mjs +80 -79
- package/dist/lib/esm/transformers/map-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/set-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/two-way-map-transformer.mjs +2 -2
- package/dist/lib/esm/type-guards.d.mts +6 -6
- package/dist/lib/esm/type-guards.mjs +6 -6
- package/dist/lib/esm/type.d.mts +2 -2
- package/dist/lib/esm/type.mjs +3 -3
- package/dist/lib/esm/url.d.mts +4 -4
- package/dist/lib/esm/url.mjs +8 -8
- package/dist/lib/esm/value-provider.d.mts +6 -6
- package/dist/lib/esm/value-provider.mjs +5 -5
- package/obsidian/components/notebook-navigator-menu-event-registrar-component/package.json +6 -0
- package/obsidian/notebook-navigator/package.json +6 -0
- package/package.json +17 -33
- package/script-utils/linters/markdownlint-ignores/package.json +6 -0
|
@@ -176,6 +176,7 @@ export declare abstract class AbstractFileCommandHandler extends GlobalCommandHa
|
|
|
176
176
|
private readonly _filesMenuItemName?;
|
|
177
177
|
private readonly _filesMenuSection?;
|
|
178
178
|
private readonly _filesMenuSubmenuIcon?;
|
|
179
|
+
private _registrationShouldAddCommandToSubmenu?;
|
|
179
180
|
private readonly _shouldAddCommandToSubmenu?;
|
|
180
181
|
/**
|
|
181
182
|
* Creates a new abstract file command handler.
|
|
@@ -240,6 +241,10 @@ export declare abstract class AbstractFileCommandHandler extends GlobalCommandHa
|
|
|
240
241
|
/**
|
|
241
242
|
* Gets whether to add the command to a submenu.
|
|
242
243
|
*
|
|
244
|
+
* The registration context wins over the constructor value: a menu surface that already wraps every
|
|
245
|
+
* contributed item in a plugin-titled parent entry forces this off, because a section submenu
|
|
246
|
+
* declared here would make `Menu.sort()` nest a second plugin-titled entry inside the first.
|
|
247
|
+
*
|
|
243
248
|
* @returns Whether to add to a submenu.
|
|
244
249
|
*/
|
|
245
250
|
protected shouldAddCommandToSubmenu(): boolean | undefined;
|
|
@@ -40,16 +40,11 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
40
40
|
globalThisRecord[key] ??= newFuncs[key]?.();
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
function name(obj) {
|
|
44
|
-
return obj;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
43
|
function extractDefault(module) {
|
|
48
44
|
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
49
45
|
}
|
|
50
46
|
|
|
51
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
52
|
-
'obsidian',
|
|
47
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
53
48
|
'@codemirror/autocomplete',
|
|
54
49
|
'@codemirror/collab',
|
|
55
50
|
'@codemirror/commands',
|
|
@@ -60,11 +55,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
60
55
|
'@codemirror/text',
|
|
61
56
|
'@codemirror/view',
|
|
62
57
|
'@lezer/common',
|
|
58
|
+
'@lezer/highlight',
|
|
63
59
|
'@lezer/lr',
|
|
64
|
-
'
|
|
60
|
+
'obsidian']
|
|
61
|
+
);
|
|
65
62
|
|
|
66
|
-
|
|
67
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
63
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
68
64
|
'@codemirror/closebrackets',
|
|
69
65
|
'@codemirror/comment',
|
|
70
66
|
'@codemirror/fold',
|
|
@@ -76,11 +72,11 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
76
72
|
'@codemirror/rangeset',
|
|
77
73
|
'@codemirror/rectangular-selection',
|
|
78
74
|
'@codemirror/stream-parser',
|
|
79
|
-
'@codemirror/tooltip']
|
|
80
|
-
|
|
75
|
+
'@codemirror/tooltip']
|
|
76
|
+
);
|
|
81
77
|
|
|
82
78
|
function requirePatched(id) {
|
|
83
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.
|
|
79
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
84
80
|
return originalRequire?.(id);
|
|
85
81
|
}
|
|
86
82
|
|
|
@@ -89,8 +85,8 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
89
85
|
if (id === 'process' || id === 'node:process') {
|
|
90
86
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
87
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
|
|
93
|
-
return
|
|
88
|
+
|
|
89
|
+
return process;
|
|
94
90
|
}
|
|
95
91
|
} else {
|
|
96
92
|
const module = originalRequire?.(id);
|
|
@@ -128,7 +124,6 @@ __export(command_handler_component_exports, {
|
|
|
128
124
|
CommandHandlerComponent: () => CommandHandlerComponent
|
|
129
125
|
});
|
|
130
126
|
module.exports = __toCommonJS(command_handler_component_exports);
|
|
131
|
-
var import_async = require('../../async.cjs');
|
|
132
127
|
var import_disposable = require('../../disposable.cjs');
|
|
133
128
|
var import_component_ex = require('../components/component-ex.cjs');
|
|
134
129
|
class CommandMenuEventScope extends import_disposable.DisposableBase {
|
|
@@ -167,6 +162,11 @@ class CommandHandlerComponent extends import_component_ex.ComponentEx {
|
|
|
167
162
|
* Provider for accessing the currently active file.
|
|
168
163
|
*/
|
|
169
164
|
activeFileProvider;
|
|
165
|
+
/**
|
|
166
|
+
* Registrars for menu surfaces that build their own plugin-titled parent entry, and therefore take
|
|
167
|
+
* the handlers with their section submenu forced off.
|
|
168
|
+
*/
|
|
169
|
+
additionalMenuEventRegistrars;
|
|
170
170
|
/**
|
|
171
171
|
* Registrar used to add and remove commands with Obsidian.
|
|
172
172
|
*/
|
|
@@ -188,31 +188,31 @@ class CommandHandlerComponent extends import_component_ex.ComponentEx {
|
|
|
188
188
|
super();
|
|
189
189
|
this.activeFileProvider = params.activeFileProvider;
|
|
190
190
|
this.menuEventRegistrar = params.menuEventRegistrar;
|
|
191
|
+
this.additionalMenuEventRegistrars = params.additionalMenuEventRegistrars ?? [];
|
|
191
192
|
this.commandRegistrar = params.commandRegistrar;
|
|
192
193
|
this.pluginName = params.pluginName;
|
|
193
194
|
}
|
|
194
195
|
/**
|
|
195
|
-
*
|
|
196
|
-
* context. Each handler's command is added immediately; the returned
|
|
197
|
-
* commands registered by this call — and any menu events those
|
|
198
|
-
* {@link MenuEventRegistrar} — when disposed. Any command
|
|
199
|
-
* removed automatically.
|
|
196
|
+
* Builds the command handlers and registers them with Obsidian, giving each its own runtime
|
|
197
|
+
* registration context. Each handler's command is added immediately; the returned
|
|
198
|
+
* {@link DisposableEx} removes the commands registered by this call — and any menu events those
|
|
199
|
+
* handlers registered via their context's {@link MenuEventRegistrar} — when disposed. Any command
|
|
200
|
+
* still registered when the component unloads is removed automatically.
|
|
201
|
+
*
|
|
202
|
+
* The factory is invoked once more for every additional menu surface, so a plugin declares its
|
|
203
|
+
* handlers ONCE and all surfaces are fed. Those extra passes add no commands — the palette already
|
|
204
|
+
* has every command from the first pass.
|
|
200
205
|
*
|
|
201
|
-
* @param
|
|
202
|
-
* @returns A {@link DisposableEx} that unregisters the handlers (commands + menu events)
|
|
206
|
+
* @param commandHandlerFactory - Builds a fresh set of command handlers, once per menu surface.
|
|
207
|
+
* @returns A {@link DisposableEx} that unregisters the handlers (commands + menu events) registered by this call.
|
|
203
208
|
*/
|
|
204
|
-
registerCommandHandlers(
|
|
209
|
+
async registerCommandHandlers(commandHandlerFactory) {
|
|
205
210
|
const disposables = [];
|
|
206
|
-
for (const commandHandler of
|
|
211
|
+
for (const commandHandler of commandHandlerFactory()) {
|
|
207
212
|
const command = commandHandler.buildCommand();
|
|
208
213
|
const commandId = command.id;
|
|
209
214
|
this.commandRegistrar.addCommand(command);
|
|
210
|
-
const menuEventScope =
|
|
211
|
-
const context = {
|
|
212
|
-
activeFileProvider: this.activeFileProvider,
|
|
213
|
-
menuEventRegistrar: menuEventScope,
|
|
214
|
-
pluginName: this.pluginName
|
|
215
|
-
};
|
|
215
|
+
const menuEventScope = await this.registerMenuEventHandlers({ commandHandler, menuEventRegistrar: this.menuEventRegistrar });
|
|
216
216
|
const disposable = new import_disposable.CallbackDisposable({
|
|
217
217
|
callback: () => {
|
|
218
218
|
this.commandRegistrar.removeCommand(commandId);
|
|
@@ -220,13 +220,35 @@ class CommandHandlerComponent extends import_component_ex.ComponentEx {
|
|
|
220
220
|
}
|
|
221
221
|
});
|
|
222
222
|
disposables.push(this.registerDisposable(disposable));
|
|
223
|
-
|
|
223
|
+
}
|
|
224
|
+
for (const additionalMenuEventRegistrar of this.additionalMenuEventRegistrars) {
|
|
225
|
+
for (const commandHandler of commandHandlerFactory()) {
|
|
226
|
+
disposables.push(this.registerDisposable(await this.registerMenuEventHandlers({ commandHandler, menuEventRegistrar: additionalMenuEventRegistrar, shouldAddCommandToSubmenu: false })));
|
|
227
|
+
}
|
|
224
228
|
}
|
|
225
229
|
return new import_disposable.CombineDisposable({ disposables });
|
|
226
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Hands a command handler its registration context, scoped so that disposing the returned scope
|
|
233
|
+
* unregisters exactly the menu events that handler registered.
|
|
234
|
+
*
|
|
235
|
+
* @param params - The parameters for this registration.
|
|
236
|
+
* @returns The handler's menu-event scope.
|
|
237
|
+
*/
|
|
238
|
+
async registerMenuEventHandlers(params) {
|
|
239
|
+
const menuEventScope = new CommandMenuEventScope(params.menuEventRegistrar);
|
|
240
|
+
const context = {
|
|
241
|
+
activeFileProvider: this.activeFileProvider,
|
|
242
|
+
menuEventRegistrar: menuEventScope,
|
|
243
|
+
pluginName: this.pluginName,
|
|
244
|
+
shouldAddCommandToSubmenu: params.shouldAddCommandToSubmenu
|
|
245
|
+
};
|
|
246
|
+
await params.commandHandler.onRegistered(context);
|
|
247
|
+
return menuEventScope;
|
|
248
|
+
}
|
|
227
249
|
}
|
|
228
250
|
// Annotate the CommonJS export names for ESM import in node:
|
|
229
251
|
0 && (module.exports = {
|
|
230
252
|
CommandHandlerComponent
|
|
231
253
|
});
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IHJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCB0aWVzIHRoZWlyIHJlbW92YWwgdG8gaXRzIGxpZmVjeWNsZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERpc3Bvc2FibGVFeCB9IGZyb20gJy4uLy4uL2Rpc3Bvc2FibGUudHMnO1xuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmRSZWdpc3RyYXIgfSBmcm9tICcuLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVkaXRvck1lbnVFdmVudEhhbmRsZXIsXG4gIEZpbGVNZW51RXZlbnRIYW5kbGVyLFxuICBGaWxlc01lbnVFdmVudEhhbmRsZXIsXG4gIE1lbnVFdmVudFJlZ2lzdHJhclxufSBmcm9tICcuLi9tZW51LWV2ZW50LXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmRIYW5kbGVyLFxuICBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHRcbn0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXIudHMnO1xuXG5pbXBvcnQgeyBpbnZva2VBc3luY1NhZmVseSB9IGZyb20gJy4uLy4uL2FzeW5jLnRzJztcbmltcG9ydCB7XG4gIENhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQ29tYmluZURpc3Bvc2FibGUsXG4gIERpc3Bvc2FibGVCYXNlXG59IGZyb20gJy4uLy4uL2Rpc3Bvc2FibGUudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbXBvbmVudC1leC50cyc7XG5cbmludGVyZmFjZSBDb21tYW5kSGFuZGxlckNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG4gIHJlYWRvbmx5IGNvbW1hbmRSZWdpc3RyYXI6IENvbW1hbmRSZWdpc3RyYXI7XG4gIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBwZXItY29tbWFuZCB7QGxpbmsgTWVudUV2ZW50UmVnaXN0cmFyfSB0aGF0IGRlbGVnYXRlcyB0byBhIHNoYXJlZCByZWdpc3RyYXIgd2hpbGUgY29sbGVjdGluZyB0aGVcbiAqIHtAbGluayBEaXNwb3NhYmxlRXh9IGVhY2ggcmVnaXN0cmF0aW9uIHJldHVybnMsIHNvIGRpc3Bvc2luZyB0aGlzIHNjb3BlIHVucmVnaXN0ZXJzIGV4YWN0bHkgdGhhdCBjb21tYW5kJ3NcbiAqIG1lbnUgZXZlbnRzLiBCZWNhdXNlIHtAbGluayBDb21tYW5kSGFuZGxlci5vblJlZ2lzdGVyZWR9IHJ1bnMgZmlyZS1hbmQtZm9yZ2V0IChpdCBtYXkgcmVnaXN0ZXIgbWVudSBldmVudHNcbiAqIGFmdGVyIHRoaXMgc2NvcGUgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCksIGEgcmVnaXN0cmF0aW9uIHRoYXQgYXJyaXZlcyBwb3N0LWRpc3Bvc2UgaXMgZGlzcG9zZWQgaW1tZWRpYXRlbHlcbiAqIGluc3RlYWQgb2YgbGVha2luZy5cbiAqL1xuY2xhc3MgQ29tbWFuZE1lbnVFdmVudFNjb3BlIGV4dGVuZHMgRGlzcG9zYWJsZUJhc2UgaW1wbGVtZW50cyBNZW51RXZlbnRSZWdpc3RyYXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlRXhbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGlubmVyOiBNZW51RXZlbnRSZWdpc3RyYXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRWRpdG9yTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyOiBFZGl0b3JNZW51RXZlbnRIYW5kbGVyKTogRGlzcG9zYWJsZUV4IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0KHRoaXMuaW5uZXIucmVnaXN0ZXJFZGl0b3JNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXIpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckZpbGVNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXI6IEZpbGVNZW51RXZlbnRIYW5kbGVyKTogRGlzcG9zYWJsZUV4IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0KHRoaXMuaW5uZXIucmVnaXN0ZXJGaWxlTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyKSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJGaWxlc01lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRmlsZXNNZW51RXZlbnRIYW5kbGVyKTogRGlzcG9zYWJsZUV4IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0KHRoaXMuaW5uZXIucmVnaXN0ZXJGaWxlc01lbnVFdmVudEhhbmRsZXIoaGFuZGxlcikpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHBlcmZvcm1EaXNwb3NlKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgZGlzcG9zYWJsZSBvZiB0aGlzLmRpc3Bvc2FibGVzKSB7XG4gICAgICBkaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICB9XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5sZW5ndGggPSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0KGRpc3Bvc2FibGU6IERpc3Bvc2FibGVFeCk6IERpc3Bvc2FibGVFeCB7XG4gICAgaWYgKHRoaXMuaXNEaXNwb3NlZCkge1xuICAgICAgZGlzcG9zYWJsZS5kaXNwb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcG9zYWJsZXMucHVzaChkaXNwb3NhYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcG9zYWJsZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCBtYW5hZ2VzIHRoZWlyIGxpZmVjeWNsZS5cbiAqXG4gKiBDYWxsIHtAbGluayByZWdpc3RlckNvbW1hbmRIYW5kbGVyc30gdG8gcmVnaXN0ZXIgYSBiYXRjaCBvZiBoYW5kbGVycyBvbiBkZW1hbmQgKGFzIG1hbnkgdGltZXMgYXNcbiAqIG5lZWRlZCB3aGlsZSB0aGUgY29tcG9uZW50IGlzIGFsaXZlKTsgZGlzcG9zZSB0aGUgcmV0dXJuZWQge0BsaW5rIERpc3Bvc2FibGVFeH0gdG8gdW5yZWdpc3RlciBleGFjdGx5XG4gKiB0aG9zZSBoYW5kbGVycyBcdTIwMTQgaW5jbHVkaW5nIGFueSBtZW51IGV2ZW50cyB0aGV5IHJlZ2lzdGVyZWQgXHUyMDE0IG9yIGxldCB0aGUgY29tcG9uZW50IHVubG9hZCB0byByZW1vdmUgZXZlcnlcbiAqIGNvbW1hbmQgc3RpbGwgcmVnaXN0ZXJlZCB0aHJvdWdoIGl0LlxuICovXG5leHBvcnQgY2xhc3MgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIC8qKlxuICAgKiBQcm92aWRlciBmb3IgYWNjZXNzaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIGZpbGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhciB1c2VkIHRvIGFkZCBhbmQgcmVtb3ZlIGNvbW1hbmRzIHdpdGggT2JzaWRpYW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWFuZFJlZ2lzdHJhcjogQ29tbWFuZFJlZ2lzdHJhcjtcblxuICAvKipcbiAgICogUmVnaXN0cmFyIGZvciBtZW51IGV2ZW50IGhhbmRsZXJzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgb3ducyB0aGUgY29tbWFuZHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbW1hbmQgaGFuZGxlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IENvbW1hbmRIYW5kbGVyQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWN0aXZlRmlsZVByb3ZpZGVyID0gcGFyYW1zLmFjdGl2ZUZpbGVQcm92aWRlcjtcbiAgICB0aGlzLm1lbnVFdmVudFJlZ2lzdHJhciA9IHBhcmFtcy5tZW51RXZlbnRSZWdpc3RyYXI7XG4gICAgdGhpcy5jb21tYW5kUmVnaXN0cmFyID0gcGFyYW1zLmNvbW1hbmRSZWdpc3RyYXI7XG4gICAgdGhpcy5wbHVnaW5OYW1lID0gcGFyYW1zLnBsdWdpbk5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBnaXZlbiBjb21tYW5kIGhhbmRsZXJzIHdpdGggT2JzaWRpYW4gYW5kIHByb3ZpZGVzIGVhY2ggaXRzIG93biBydW50aW1lIHJlZ2lzdHJhdGlvblxuICAgKiBjb250ZXh0LiBFYWNoIGhhbmRsZXIncyBjb21tYW5kIGlzIGFkZGVkIGltbWVkaWF0ZWx5OyB0aGUgcmV0dXJuZWQge0BsaW5rIERpc3Bvc2FibGVFeH0gcmVtb3ZlcyB0aGVcbiAgICogY29tbWFuZHMgcmVnaXN0ZXJlZCBieSB0aGlzIGNhbGwgXHUyMDE0IGFuZCBhbnkgbWVudSBldmVudHMgdGhvc2UgaGFuZGxlcnMgcmVnaXN0ZXJlZCB2aWEgdGhlaXIgY29udGV4dCdzXG4gICAqIHtAbGluayBNZW51RXZlbnRSZWdpc3RyYXJ9IFx1MjAxNCB3aGVuIGRpc3Bvc2VkLiBBbnkgY29tbWFuZCBzdGlsbCByZWdpc3RlcmVkIHdoZW4gdGhlIGNvbXBvbmVudCB1bmxvYWRzIGlzXG4gICAqIHJlbW92ZWQgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRIYW5kbGVycyAtIFRoZSBjb21tYW5kIGhhbmRsZXJzIHRvIHJlZ2lzdGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlRXh9IHRoYXQgdW5yZWdpc3RlcnMgdGhlIGhhbmRsZXJzIChjb21tYW5kcyArIG1lbnUgZXZlbnRzKSBwYXNzZWQgdG8gdGhpcyBjYWxsLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzKGNvbW1hbmRIYW5kbGVyczogQ29tbWFuZEhhbmRsZXJbXSk6IERpc3Bvc2FibGVFeCB7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29tbWFuZEhhbmRsZXIgb2YgY29tbWFuZEhhbmRsZXJzKSB7XG4gICAgICBjb25zdCBjb21tYW5kID0gY29tbWFuZEhhbmRsZXIuYnVpbGRDb21tYW5kKCk7XG4gICAgICAvLyBDYXB0dXJlIHRoZSBpZCBiZWZvcmUgcmVnaXN0ZXJpbmcuIGBQbHVnaW4uYWRkQ29tbWFuZGAgbXV0YXRlcyBgY29tbWFuZC5pZGAgKHByZWZpeGluZyBpdCB3aXRoXG4gICAgICAvLyBgdGhpcy5tYW5pZmVzdC5pZGApLCB3aGlsZSBgUGx1Z2luLnJlbW92ZUNvbW1hbmRgIHJlLXByZWZpeGVzIFx1MjAxNCBzbyByZW1vdmFsIG5lZWRzIHRoZSBvcmlnaW5hbCBpZC5cbiAgICAgIC8vIFJlYWRpbmcgYGNvbW1hbmQuaWRgIGFmdGVyIGBhZGRDb21tYW5kYCB3b3VsZCBkb3VibGUtcHJlZml4IGl0LCBzbyB0aGUgY29tbWFuZCBpcyBuZXZlciByZW1vdmVkLlxuICAgICAgY29uc3QgY29tbWFuZElkID0gY29tbWFuZC5pZDtcbiAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5hZGRDb21tYW5kKGNvbW1hbmQpO1xuXG4gICAgICAvLyBFYWNoIGNvbW1hbmQgZ2V0cyBpdHMgb3duIHJlZ2lzdHJhdGlvbiBjb250ZXh0IHdpdGggYSBwZXItY29tbWFuZCBtZW51LWV2ZW50IHNjb3BlLCBzbyBkaXNwb3Npbmcgb25lXG4gICAgICAvLyBDb21tYW5kIHRlYXJzIGRvd24gaXRzIG93biBtZW51IGV2ZW50cyB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXJzLlxuICAgICAgY29uc3QgbWVudUV2ZW50U2NvcGUgPSBuZXcgQ29tbWFuZE1lbnVFdmVudFNjb3BlKHRoaXMubWVudUV2ZW50UmVnaXN0cmFyKTtcbiAgICAgIGNvbnN0IGNvbnRleHQ6IENvbW1hbmRIYW5kbGVyUmVnaXN0cmF0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgYWN0aXZlRmlsZVByb3ZpZGVyOiB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlcixcbiAgICAgICAgbWVudUV2ZW50UmVnaXN0cmFyOiBtZW51RXZlbnRTY29wZSxcbiAgICAgICAgcGx1Z2luTmFtZTogdGhpcy5wbHVnaW5OYW1lXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBkaXNwb3NhYmxlID0gbmV3IENhbGxiYWNrRGlzcG9zYWJsZSh7XG4gICAgICAgIGNhbGxiYWNrOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5jb21tYW5kUmVnaXN0cmFyLnJlbW92ZUNvbW1hbmQoY29tbWFuZElkKTtcbiAgICAgICAgICBtZW51RXZlbnRTY29wZS5kaXNwb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gVGllIHJlbW92YWwgdG8gdGhlIGNvbXBvbmVudCdzIHVubG9hZCwgc28gYSBjb21tYW5kIG5ldmVyIG91dGxpdmVzIHRoZSBjb21wb25lbnQuXG4gICAgICBkaXNwb3NhYmxlcy5wdXNoKHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKGRpc3Bvc2FibGUpKTtcbiAgICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IGNvbW1hbmRIYW5kbGVyLm9uUmVnaXN0ZXJlZChjb250ZXh0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDb21iaW5lRGlzcG9zYWJsZSh7IGRpc3Bvc2FibGVzIH0pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQkEsbUJBQWtDO0FBQ2xDLHdCQUlPO0FBQ1AsMEJBQTRCO0FBZ0I1QixNQUFNLDhCQUE4QixpQ0FBNkM7QUFBQSxFQUd4RSxZQUE2QixPQUEyQjtBQUM3RCxVQUFNO0FBRDRCO0FBQUEsRUFFcEM7QUFBQSxFQUZvQztBQUFBLEVBRm5CLGNBQThCLENBQUM7QUFBQSxFQU16QywrQkFBK0IsU0FBK0M7QUFDbkYsV0FBTyxLQUFLLFFBQVEsS0FBSyxNQUFNLCtCQUErQixPQUFPLENBQUM7QUFBQSxFQUN4RTtBQUFBLEVBRU8sNkJBQTZCLFNBQTZDO0FBQy9FLFdBQU8sS0FBSyxRQUFRLEtBQUssTUFBTSw2QkFBNkIsT0FBTyxDQUFDO0FBQUEsRUFDdEU7QUFBQSxFQUVPLDhCQUE4QixTQUE4QztBQUNqRixXQUFPLEtBQUssUUFBUSxLQUFLLE1BQU0sOEJBQThCLE9BQU8sQ0FBQztBQUFBLEVBQ3ZFO0FBQUEsRUFFbUIsaUJBQXVCO0FBQ3hDLGVBQVcsY0FBYyxLQUFLLGFBQWE7QUFDekMsaUJBQVcsUUFBUTtBQUFBLElBQ3JCO0FBQ0EsU0FBSyxZQUFZLFNBQVM7QUFBQSxFQUM1QjtBQUFBLEVBRVEsUUFBUSxZQUF3QztBQUN0RCxRQUFJLEtBQUssWUFBWTtBQUNuQixpQkFBVyxRQUFRO0FBQUEsSUFDckIsT0FBTztBQUNMLFdBQUssWUFBWSxLQUFLLFVBQVU7QUFBQSxJQUNsQztBQUVBLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFVTyxNQUFNLGdDQUFnQyxnQ0FBWTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXBDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1osWUFBWSxRQUFrRDtBQUNuRSxVQUFNO0FBQ04sU0FBSyxxQkFBcUIsT0FBTztBQUNqQyxTQUFLLHFCQUFxQixPQUFPO0FBQ2pDLFNBQUssbUJBQW1CLE9BQU87QUFDL0IsU0FBSyxhQUFhLE9BQU87QUFBQSxFQUMzQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFZTyx3QkFBd0IsaUJBQWlEO0FBQzlFLFVBQU0sY0FBNEIsQ0FBQztBQUNuQyxlQUFXLGtCQUFrQixpQkFBaUI7QUFDNUMsWUFBTSxVQUFVLGVBQWUsYUFBYTtBQUk1QyxZQUFNLFlBQVksUUFBUTtBQUMxQixXQUFLLGlCQUFpQixXQUFXLE9BQU87QUFJeEMsWUFBTSxpQkFBaUIsSUFBSSxzQkFBc0IsS0FBSyxrQkFBa0I7QUFDeEUsWUFBTSxVQUE2QztBQUFBLFFBQ2pELG9CQUFvQixLQUFLO0FBQUEsUUFDekIsb0JBQW9CO0FBQUEsUUFDcEIsWUFBWSxLQUFLO0FBQUEsTUFDbkI7QUFFQSxZQUFNLGFBQWEsSUFBSSxxQ0FBbUI7QUFBQSxRQUN4QyxVQUFVLE1BQVk7QUFDcEIsZUFBSyxpQkFBaUIsY0FBYyxTQUFTO0FBQzdDLHlCQUFlLFFBQVE7QUFBQSxRQUN6QjtBQUFBLE1BQ0YsQ0FBQztBQUVELGtCQUFZLEtBQUssS0FBSyxtQkFBbUIsVUFBVSxDQUFDO0FBQ3BELDBDQUFrQixNQUFNLGVBQWUsYUFBYSxPQUFPLENBQUM7QUFBQSxJQUM5RDtBQUVBLFdBQU8sSUFBSSxvQ0FBa0IsRUFBRSxZQUFZLENBQUM7QUFBQSxFQUM5QztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IHJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCB0aWVzIHRoZWlyIHJlbW92YWwgdG8gaXRzIGxpZmVjeWNsZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERpc3Bvc2FibGVFeCB9IGZyb20gJy4uLy4uL2Rpc3Bvc2FibGUudHMnO1xuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmRSZWdpc3RyYXIgfSBmcm9tICcuLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVkaXRvck1lbnVFdmVudEhhbmRsZXIsXG4gIEZpbGVNZW51RXZlbnRIYW5kbGVyLFxuICBGaWxlc01lbnVFdmVudEhhbmRsZXIsXG4gIE1lbnVFdmVudFJlZ2lzdHJhclxufSBmcm9tICcuLi9tZW51LWV2ZW50LXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmRIYW5kbGVyLFxuICBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHRcbn0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXIudHMnO1xuXG5pbXBvcnQge1xuICBDYWxsYmFja0Rpc3Bvc2FibGUsXG4gIENvbWJpbmVEaXNwb3NhYmxlLFxuICBEaXNwb3NhYmxlQmFzZVxufSBmcm9tICcuLi8uLi9kaXNwb3NhYmxlLnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb21wb25lbnQtZXgudHMnO1xuXG4vKipcbiAqIEJ1aWxkcyBhIGZyZXNoIHNldCBvZiB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cy5cbiAqXG4gKiBBIGZhY3RvcnkgcmF0aGVyIHRoYW4gYSByZWFkeS1tYWRlIGFycmF5IGJlY2F1c2Uge0BsaW5rIENvbW1hbmRIYW5kbGVyQ29tcG9uZW50fSByZWdpc3RlcnMgdGhlIHNhbWVcbiAqIGhhbmRsZXJzIGFnYWluc3Qgc2V2ZXJhbCBtZW51IHN1cmZhY2VzLCBhbmQgYSBoYW5kbGVyIGNhcnJpZXMgcGVyLXJlZ2lzdHJhdGlvbiBzdGF0ZSAoaXRzXG4gKiBhY3RpdmUtZmlsZSBwcm92aWRlciwgaXRzIHBsdWdpbiBuYW1lLCBhbmQgd2hhdGV2ZXIgYSBzdWJjbGFzcyByZWNvcmRzIGluXG4gKiB7QGxpbmsgQ29tbWFuZEhhbmRsZXIub25SZWdpc3RlcmVkfSkgXHUyMDE0IHNvIGV2ZXJ5IHN1cmZhY2UgbmVlZHMgaXRzIG93biBpbnN0YW5jZXMuXG4gKlxuICogUmV0dXJuaW5nIHNoYXJlZCBpbnN0YW5jZXMgKGAoKSA9PiBbaGFuZGxlcjFTaW5nbGV0b24sIGhhbmRsZXIyU2luZ2xldG9uXWApIHJlaW50cm9kdWNlcyBleGFjdGx5IHRoZVxuICogYnVnIHRoZSBmYWN0b3J5IGV4aXN0cyB0byBhdm9pZCwgc28gaXQgaXMgbm90IG1lcmVseSBkaXNjb3VyYWdlZDoge0BsaW5rIENvbW1hbmRIYW5kbGVyLm9uUmVnaXN0ZXJlZH1cbiAqIHRocm93cyBvbiB0aGUgc2Vjb25kIHJlZ2lzdHJhdGlvbiBvZiBhbiBpbnN0YW5jZS4ge0BsaW5rIENvbW1hbmRIYW5kbGVyQ29tcG9uZW50LnJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzfVxuICogYXdhaXRzIGl0LCBzbyB0aGF0IHRocm93IHJlamVjdHMgdGhlIGNhbGxlcidzIHByb21pc2UgaW5zdGVhZCBvZiBkZWdyYWRpbmcgaW50byBhIHdyb25nIGNvbnRleHQgbWVudS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgY29tbWFuZCBoYW5kbGVycyB0byByZWdpc3Rlci4gQSBORVcgaW5zdGFuY2Ugb2YgZWFjaCBvbiBldmVyeSBjYWxsLlxuICovXG5leHBvcnQgdHlwZSBDb21tYW5kSGFuZGxlckZhY3RvcnkgPSAoKSA9PiBDb21tYW5kSGFuZGxlcltdO1xuXG5pbnRlcmZhY2UgQ29tbWFuZEhhbmRsZXJDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIHJlYWRvbmx5IGFjdGl2ZUZpbGVQcm92aWRlcjogQWN0aXZlRmlsZVByb3ZpZGVyO1xuICByZWFkb25seSBhZGRpdGlvbmFsTWVudUV2ZW50UmVnaXN0cmFycz86IHJlYWRvbmx5IE1lbnVFdmVudFJlZ2lzdHJhcltdIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBjb21tYW5kUmVnaXN0cmFyOiBDb21tYW5kUmVnaXN0cmFyO1xuICByZWFkb25seSBtZW51RXZlbnRSZWdpc3RyYXI6IE1lbnVFdmVudFJlZ2lzdHJhcjtcbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ29tbWFuZEhhbmRsZXJDb21wb25lbnRSZWdpc3Rlck1lbnVFdmVudEhhbmRsZXJzUGFyYW1zIHtcbiAgcmVhZG9ubHkgY29tbWFuZEhhbmRsZXI6IENvbW1hbmRIYW5kbGVyO1xuICByZWFkb25seSBtZW51RXZlbnRSZWdpc3RyYXI6IE1lbnVFdmVudFJlZ2lzdHJhcjtcbiAgcmVhZG9ubHkgc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBwZXItY29tbWFuZCB7QGxpbmsgTWVudUV2ZW50UmVnaXN0cmFyfSB0aGF0IGRlbGVnYXRlcyB0byBhIHNoYXJlZCByZWdpc3RyYXIgd2hpbGUgY29sbGVjdGluZyB0aGVcbiAqIHtAbGluayBEaXNwb3NhYmxlRXh9IGVhY2ggcmVnaXN0cmF0aW9uIHJldHVybnMsIHNvIGRpc3Bvc2luZyB0aGlzIHNjb3BlIHVucmVnaXN0ZXJzIGV4YWN0bHkgdGhhdCBjb21tYW5kJ3NcbiAqIG1lbnUgZXZlbnRzLiBBIGhhbmRsZXIgbWF5IGtlZXAgdGhlIHNjb3BlIHBhc3Qge0BsaW5rIENvbW1hbmRIYW5kbGVyLm9uUmVnaXN0ZXJlZH0gYW5kIHJlZ2lzdGVyIG1lbnUgZXZlbnRzXG4gKiBsYXRlciBcdTIwMTQgYSBicmlkZ2UgYmluZGluZyBhdCBsYXlvdXQtcmVhZHksIHNheSBcdTIwMTQgc28gYSByZWdpc3RyYXRpb24gdGhhdCBhcnJpdmVzIGFmdGVyIHRoaXMgc2NvcGUgd2FzIGRpc3Bvc2VkXG4gKiBpcyBkaXNwb3NlZCBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mIGxlYWtpbmcuXG4gKi9cbmNsYXNzIENvbW1hbmRNZW51RXZlbnRTY29wZSBleHRlbmRzIERpc3Bvc2FibGVCYXNlIGltcGxlbWVudHMgTWVudUV2ZW50UmVnaXN0cmFyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUV4W10gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbm5lcjogTWVudUV2ZW50UmVnaXN0cmFyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckVkaXRvck1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRWRpdG9yTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdCh0aGlzLmlubmVyLnJlZ2lzdGVyRWRpdG9yTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyKSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJGaWxlTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyOiBGaWxlTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdCh0aGlzLmlubmVyLnJlZ2lzdGVyRmlsZU1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcikpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRmlsZXNNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXI6IEZpbGVzTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdCh0aGlzLmlubmVyLnJlZ2lzdGVyRmlsZXNNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXIpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBwZXJmb3JtRGlzcG9zZSgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGRpc3Bvc2FibGUgb2YgdGhpcy5kaXNwb3NhYmxlcykge1xuICAgICAgZGlzcG9zYWJsZS5kaXNwb3NlKCk7XG4gICAgfVxuICAgIHRoaXMuZGlzcG9zYWJsZXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGVjdChkaXNwb3NhYmxlOiBEaXNwb3NhYmxlRXgpOiBEaXNwb3NhYmxlRXgge1xuICAgIGlmICh0aGlzLmlzRGlzcG9zZWQpIHtcbiAgICAgIGRpc3Bvc2FibGUuZGlzcG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3Bvc2FibGVzLnB1c2goZGlzcG9zYWJsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3Bvc2FibGU7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMge0BsaW5rIENvbW1hbmRIYW5kbGVyfXMgd2l0aCBPYnNpZGlhbiBhbmQgbWFuYWdlcyB0aGVpciBsaWZlY3ljbGUuXG4gKlxuICogQ2FsbCB7QGxpbmsgcmVnaXN0ZXJDb21tYW5kSGFuZGxlcnN9IHRvIHJlZ2lzdGVyIGEgYmF0Y2ggb2YgaGFuZGxlcnMgb24gZGVtYW5kIChhcyBtYW55IHRpbWVzIGFzXG4gKiBuZWVkZWQgd2hpbGUgdGhlIGNvbXBvbmVudCBpcyBhbGl2ZSk7IGRpc3Bvc2UgdGhlIHJldHVybmVkIHtAbGluayBEaXNwb3NhYmxlRXh9IHRvIHVucmVnaXN0ZXIgZXhhY3RseVxuICogdGhvc2UgaGFuZGxlcnMgXHUyMDE0IGluY2x1ZGluZyBhbnkgbWVudSBldmVudHMgdGhleSByZWdpc3RlcmVkIFx1MjAxNCBvciBsZXQgdGhlIGNvbXBvbmVudCB1bmxvYWQgdG8gcmVtb3ZlIGV2ZXJ5XG4gKiBjb21tYW5kIHN0aWxsIHJlZ2lzdGVyZWQgdGhyb3VnaCBpdC5cbiAqXG4gKiBUaGUgc2FtZSBoYW5kbGVycyBhcmUgZmVkIHRvIGV2ZXJ5IG1lbnUgc3VyZmFjZSB0aGUgY29tcG9uZW50IGtub3dzIGFib3V0OiBPYnNpZGlhbidzIG93biB3b3Jrc3BhY2VcbiAqIGV2ZW50cywgcGx1cyBlYWNoIGFkZGl0aW9uYWwge0BsaW5rIE1lbnVFdmVudFJlZ2lzdHJhcn0gYnJpZGdpbmcgYW5vdGhlciBwbHVnaW4ncyBtZW51cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1hbmRIYW5kbGVyQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogUHJvdmlkZXIgZm9yIGFjY2Vzc2luZyB0aGUgY3VycmVudGx5IGFjdGl2ZSBmaWxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGl2ZUZpbGVQcm92aWRlcjogQWN0aXZlRmlsZVByb3ZpZGVyO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RyYXJzIGZvciBtZW51IHN1cmZhY2VzIHRoYXQgYnVpbGQgdGhlaXIgb3duIHBsdWdpbi10aXRsZWQgcGFyZW50IGVudHJ5LCBhbmQgdGhlcmVmb3JlIHRha2VcbiAgICogdGhlIGhhbmRsZXJzIHdpdGggdGhlaXIgc2VjdGlvbiBzdWJtZW51IGZvcmNlZCBvZmYuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnM6IHJlYWRvbmx5IE1lbnVFdmVudFJlZ2lzdHJhcltdO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RyYXIgdXNlZCB0byBhZGQgYW5kIHJlbW92ZSBjb21tYW5kcyB3aXRoIE9ic2lkaWFuLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbW1hbmRSZWdpc3RyYXI6IENvbW1hbmRSZWdpc3RyYXI7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhciBmb3IgbWVudSBldmVudCBoYW5kbGVycy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51RXZlbnRSZWdpc3RyYXI6IE1lbnVFdmVudFJlZ2lzdHJhcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpbiB0aGF0IG93bnMgdGhlIGNvbW1hbmRzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjb21tYW5kIGhhbmRsZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDb21tYW5kSGFuZGxlckNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlciA9IHBhcmFtcy5hY3RpdmVGaWxlUHJvdmlkZXI7XG4gICAgdGhpcy5tZW51RXZlbnRSZWdpc3RyYXIgPSBwYXJhbXMubWVudUV2ZW50UmVnaXN0cmFyO1xuICAgIHRoaXMuYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnMgPSBwYXJhbXMuYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnMgPz8gW107XG4gICAgdGhpcy5jb21tYW5kUmVnaXN0cmFyID0gcGFyYW1zLmNvbW1hbmRSZWdpc3RyYXI7XG4gICAgdGhpcy5wbHVnaW5OYW1lID0gcGFyYW1zLnBsdWdpbk5hbWU7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBjb21tYW5kIGhhbmRsZXJzIGFuZCByZWdpc3RlcnMgdGhlbSB3aXRoIE9ic2lkaWFuLCBnaXZpbmcgZWFjaCBpdHMgb3duIHJ1bnRpbWVcbiAgICogcmVnaXN0cmF0aW9uIGNvbnRleHQuIEVhY2ggaGFuZGxlcidzIGNvbW1hbmQgaXMgYWRkZWQgaW1tZWRpYXRlbHk7IHRoZSByZXR1cm5lZFxuICAgKiB7QGxpbmsgRGlzcG9zYWJsZUV4fSByZW1vdmVzIHRoZSBjb21tYW5kcyByZWdpc3RlcmVkIGJ5IHRoaXMgY2FsbCBcdTIwMTQgYW5kIGFueSBtZW51IGV2ZW50cyB0aG9zZVxuICAgKiBoYW5kbGVycyByZWdpc3RlcmVkIHZpYSB0aGVpciBjb250ZXh0J3Mge0BsaW5rIE1lbnVFdmVudFJlZ2lzdHJhcn0gXHUyMDE0IHdoZW4gZGlzcG9zZWQuIEFueSBjb21tYW5kXG4gICAqIHN0aWxsIHJlZ2lzdGVyZWQgd2hlbiB0aGUgY29tcG9uZW50IHVubG9hZHMgaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBUaGUgZmFjdG9yeSBpcyBpbnZva2VkIG9uY2UgbW9yZSBmb3IgZXZlcnkgYWRkaXRpb25hbCBtZW51IHN1cmZhY2UsIHNvIGEgcGx1Z2luIGRlY2xhcmVzIGl0c1xuICAgKiBoYW5kbGVycyBPTkNFIGFuZCBhbGwgc3VyZmFjZXMgYXJlIGZlZC4gVGhvc2UgZXh0cmEgcGFzc2VzIGFkZCBubyBjb21tYW5kcyBcdTIwMTQgdGhlIHBhbGV0dGUgYWxyZWFkeVxuICAgKiBoYXMgZXZlcnkgY29tbWFuZCBmcm9tIHRoZSBmaXJzdCBwYXNzLlxuICAgKlxuICAgKiBAcGFyYW0gY29tbWFuZEhhbmRsZXJGYWN0b3J5IC0gQnVpbGRzIGEgZnJlc2ggc2V0IG9mIGNvbW1hbmQgaGFuZGxlcnMsIG9uY2UgcGVyIG1lbnUgc3VyZmFjZS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0aGF0IHVucmVnaXN0ZXJzIHRoZSBoYW5kbGVycyAoY29tbWFuZHMgKyBtZW51IGV2ZW50cykgcmVnaXN0ZXJlZCBieSB0aGlzIGNhbGwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVnaXN0ZXJDb21tYW5kSGFuZGxlcnMoY29tbWFuZEhhbmRsZXJGYWN0b3J5OiBDb21tYW5kSGFuZGxlckZhY3RvcnkpOiBQcm9taXNlPERpc3Bvc2FibGVFeD4ge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbW1hbmRIYW5kbGVyIG9mIGNvbW1hbmRIYW5kbGVyRmFjdG9yeSgpKSB7XG4gICAgICBjb25zdCBjb21tYW5kID0gY29tbWFuZEhhbmRsZXIuYnVpbGRDb21tYW5kKCk7XG4gICAgICAvLyBDYXB0dXJlIHRoZSBpZCBiZWZvcmUgcmVnaXN0ZXJpbmcuIGBQbHVnaW4uYWRkQ29tbWFuZGAgbXV0YXRlcyBgY29tbWFuZC5pZGAgKHByZWZpeGluZyBpdCB3aXRoXG4gICAgICAvLyBgdGhpcy5tYW5pZmVzdC5pZGApLCB3aGlsZSBgUGx1Z2luLnJlbW92ZUNvbW1hbmRgIHJlLXByZWZpeGVzIFx1MjAxNCBzbyByZW1vdmFsIG5lZWRzIHRoZSBvcmlnaW5hbCBpZC5cbiAgICAgIC8vIFJlYWRpbmcgYGNvbW1hbmQuaWRgIGFmdGVyIGBhZGRDb21tYW5kYCB3b3VsZCBkb3VibGUtcHJlZml4IGl0LCBzbyB0aGUgY29tbWFuZCBpcyBuZXZlciByZW1vdmVkLlxuICAgICAgY29uc3QgY29tbWFuZElkID0gY29tbWFuZC5pZDtcbiAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5hZGRDb21tYW5kKGNvbW1hbmQpO1xuXG4gICAgICAvLyBFYWNoIGNvbW1hbmQgZ2V0cyBpdHMgb3duIHJlZ2lzdHJhdGlvbiBjb250ZXh0IHdpdGggYSBwZXItY29tbWFuZCBtZW51LWV2ZW50IHNjb3BlLCBzbyBkaXNwb3Npbmcgb25lXG4gICAgICAvLyBDb21tYW5kIHRlYXJzIGRvd24gaXRzIG93biBtZW51IGV2ZW50cyB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXJzLlxuICAgICAgY29uc3QgbWVudUV2ZW50U2NvcGUgPSBhd2FpdCB0aGlzLnJlZ2lzdGVyTWVudUV2ZW50SGFuZGxlcnMoeyBjb21tYW5kSGFuZGxlciwgbWVudUV2ZW50UmVnaXN0cmFyOiB0aGlzLm1lbnVFdmVudFJlZ2lzdHJhciB9KTtcblxuICAgICAgY29uc3QgZGlzcG9zYWJsZSA9IG5ldyBDYWxsYmFja0Rpc3Bvc2FibGUoe1xuICAgICAgICBjYWxsYmFjazogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5yZW1vdmVDb21tYW5kKGNvbW1hbmRJZCk7XG4gICAgICAgICAgbWVudUV2ZW50U2NvcGUuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIFRpZSByZW1vdmFsIHRvIHRoZSBjb21wb25lbnQncyB1bmxvYWQsIHNvIGEgY29tbWFuZCBuZXZlciBvdXRsaXZlcyB0aGUgY29tcG9uZW50LlxuICAgICAgZGlzcG9zYWJsZXMucHVzaCh0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShkaXNwb3NhYmxlKSk7XG4gICAgfVxuXG4gICAgLy8gRXZlcnkgYWRkaXRpb25hbCBzdXJmYWNlIGdldHMgaXRzIE9XTiBoYW5kbGVyIGluc3RhbmNlcyBcdTIwMTQgYSBoYW5kbGVyIGNhcnJpZXMgcGVyLXJlZ2lzdHJhdGlvblxuICAgIC8vIFN0YXRlLCBzbyBvbmUgaW5zdGFuY2UgY2Fubm90IHNlcnZlIHR3byBzdXJmYWNlcyBcdTIwMTQgYW5kIHRha2VzIHRoZW0gd2l0aCB0aGUgc2VjdGlvbiBzdWJtZW51XG4gICAgLy8gRm9yY2VkIG9mZiwgYmVjYXVzZSBzdWNoIGEgc3VyZmFjZSB3cmFwcyBldmVyeXRoaW5nIGluIGEgcGx1Z2luLXRpdGxlZCBwYXJlbnQgZW50cnkgb2YgaXRzIG93bi5cbiAgICBmb3IgKGNvbnN0IGFkZGl0aW9uYWxNZW51RXZlbnRSZWdpc3RyYXIgb2YgdGhpcy5hZGRpdGlvbmFsTWVudUV2ZW50UmVnaXN0cmFycykge1xuICAgICAgZm9yIChjb25zdCBjb21tYW5kSGFuZGxlciBvZiBjb21tYW5kSGFuZGxlckZhY3RvcnkoKSkge1xuICAgICAgICBkaXNwb3NhYmxlcy5wdXNoKHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKGF3YWl0IHRoaXMucmVnaXN0ZXJNZW51RXZlbnRIYW5kbGVycyh7IGNvbW1hbmRIYW5kbGVyLCBtZW51RXZlbnRSZWdpc3RyYXI6IGFkZGl0aW9uYWxNZW51RXZlbnRSZWdpc3RyYXIsIHNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU6IGZhbHNlIH0pKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDb21iaW5lRGlzcG9zYWJsZSh7IGRpc3Bvc2FibGVzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRzIGEgY29tbWFuZCBoYW5kbGVyIGl0cyByZWdpc3RyYXRpb24gY29udGV4dCwgc2NvcGVkIHNvIHRoYXQgZGlzcG9zaW5nIHRoZSByZXR1cm5lZCBzY29wZVxuICAgKiB1bnJlZ2lzdGVycyBleGFjdGx5IHRoZSBtZW51IGV2ZW50cyB0aGF0IGhhbmRsZXIgcmVnaXN0ZXJlZC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIHJlZ2lzdHJhdGlvbi5cbiAgICogQHJldHVybnMgVGhlIGhhbmRsZXIncyBtZW51LWV2ZW50IHNjb3BlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3Rlck1lbnVFdmVudEhhbmRsZXJzKHBhcmFtczogQ29tbWFuZEhhbmRsZXJDb21wb25lbnRSZWdpc3Rlck1lbnVFdmVudEhhbmRsZXJzUGFyYW1zKTogUHJvbWlzZTxDb21tYW5kTWVudUV2ZW50U2NvcGU+IHtcbiAgICBjb25zdCBtZW51RXZlbnRTY29wZSA9IG5ldyBDb21tYW5kTWVudUV2ZW50U2NvcGUocGFyYW1zLm1lbnVFdmVudFJlZ2lzdHJhcik7XG4gICAgY29uc3QgY29udGV4dDogQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0ID0ge1xuICAgICAgYWN0aXZlRmlsZVByb3ZpZGVyOiB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlcixcbiAgICAgIG1lbnVFdmVudFJlZ2lzdHJhcjogbWVudUV2ZW50U2NvcGUsXG4gICAgICBwbHVnaW5OYW1lOiB0aGlzLnBsdWdpbk5hbWUsXG4gICAgICBzaG91bGRBZGRDb21tYW5kVG9TdWJtZW51OiBwYXJhbXMuc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudVxuICAgIH07XG4gICAgYXdhaXQgcGFyYW1zLmNvbW1hbmRIYW5kbGVyLm9uUmVnaXN0ZXJlZChjb250ZXh0KTtcbiAgICByZXR1cm4gbWVudUV2ZW50U2NvcGU7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0JBLHdCQUlPO0FBQ1AsMEJBQTRCO0FBd0M1QixNQUFNLDhCQUE4QixpQ0FBNkM7QUFBQSxFQUd4RSxZQUE2QixPQUEyQjtBQUM3RCxVQUFNO0FBRDRCO0FBQUEsRUFFcEM7QUFBQSxFQUZvQztBQUFBLEVBRm5CLGNBQThCLENBQUM7QUFBQSxFQU16QywrQkFBK0IsU0FBK0M7QUFDbkYsV0FBTyxLQUFLLFFBQVEsS0FBSyxNQUFNLCtCQUErQixPQUFPLENBQUM7QUFBQSxFQUN4RTtBQUFBLEVBRU8sNkJBQTZCLFNBQTZDO0FBQy9FLFdBQU8sS0FBSyxRQUFRLEtBQUssTUFBTSw2QkFBNkIsT0FBTyxDQUFDO0FBQUEsRUFDdEU7QUFBQSxFQUVPLDhCQUE4QixTQUE4QztBQUNqRixXQUFPLEtBQUssUUFBUSxLQUFLLE1BQU0sOEJBQThCLE9BQU8sQ0FBQztBQUFBLEVBQ3ZFO0FBQUEsRUFFbUIsaUJBQXVCO0FBQ3hDLGVBQVcsY0FBYyxLQUFLLGFBQWE7QUFDekMsaUJBQVcsUUFBUTtBQUFBLElBQ3JCO0FBQ0EsU0FBSyxZQUFZLFNBQVM7QUFBQSxFQUM1QjtBQUFBLEVBRVEsUUFBUSxZQUF3QztBQUN0RCxRQUFJLEtBQUssWUFBWTtBQUNuQixpQkFBVyxRQUFRO0FBQUEsSUFDckIsT0FBTztBQUNMLFdBQUssWUFBWSxLQUFLLFVBQVU7QUFBQSxJQUNsQztBQUVBLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFhTyxNQUFNLGdDQUFnQyxnQ0FBWTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXBDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1osWUFBWSxRQUFrRDtBQUNuRSxVQUFNO0FBQ04sU0FBSyxxQkFBcUIsT0FBTztBQUNqQyxTQUFLLHFCQUFxQixPQUFPO0FBQ2pDLFNBQUssZ0NBQWdDLE9BQU8saUNBQWlDLENBQUM7QUFDOUUsU0FBSyxtQkFBbUIsT0FBTztBQUMvQixTQUFLLGFBQWEsT0FBTztBQUFBLEVBQzNCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBZ0JBLE1BQWEsd0JBQXdCLHVCQUFxRTtBQUN4RyxVQUFNLGNBQTRCLENBQUM7QUFDbkMsZUFBVyxrQkFBa0Isc0JBQXNCLEdBQUc7QUFDcEQsWUFBTSxVQUFVLGVBQWUsYUFBYTtBQUk1QyxZQUFNLFlBQVksUUFBUTtBQUMxQixXQUFLLGlCQUFpQixXQUFXLE9BQU87QUFJeEMsWUFBTSxpQkFBaUIsTUFBTSxLQUFLLDBCQUEwQixFQUFFLGdCQUFnQixvQkFBb0IsS0FBSyxtQkFBbUIsQ0FBQztBQUUzSCxZQUFNLGFBQWEsSUFBSSxxQ0FBbUI7QUFBQSxRQUN4QyxVQUFVLE1BQVk7QUFDcEIsZUFBSyxpQkFBaUIsY0FBYyxTQUFTO0FBQzdDLHlCQUFlLFFBQVE7QUFBQSxRQUN6QjtBQUFBLE1BQ0YsQ0FBQztBQUVELGtCQUFZLEtBQUssS0FBSyxtQkFBbUIsVUFBVSxDQUFDO0FBQUEsSUFDdEQ7QUFLQSxlQUFXLGdDQUFnQyxLQUFLLCtCQUErQjtBQUM3RSxpQkFBVyxrQkFBa0Isc0JBQXNCLEdBQUc7QUFDcEQsb0JBQVksS0FBSyxLQUFLLG1CQUFtQixNQUFNLEtBQUssMEJBQTBCLEVBQUUsZ0JBQWdCLG9CQUFvQiw4QkFBOEIsMkJBQTJCLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUN4TDtBQUFBLElBQ0Y7QUFFQSxXQUFPLElBQUksb0NBQWtCLEVBQUUsWUFBWSxDQUFDO0FBQUEsRUFDOUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU0EsTUFBYywwQkFBMEIsUUFBZ0c7QUFDdEksVUFBTSxpQkFBaUIsSUFBSSxzQkFBc0IsT0FBTyxrQkFBa0I7QUFDMUUsVUFBTSxVQUE2QztBQUFBLE1BQ2pELG9CQUFvQixLQUFLO0FBQUEsTUFDekIsb0JBQW9CO0FBQUEsTUFDcEIsWUFBWSxLQUFLO0FBQUEsTUFDakIsMkJBQTJCLE9BQU87QUFBQSxJQUNwQztBQUNBLFVBQU0sT0FBTyxlQUFlLGFBQWEsT0FBTztBQUNoRCxXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -10,8 +10,25 @@ import type { CommandRegistrar } from '../command-registrar.cjs';
|
|
|
10
10
|
import type { MenuEventRegistrar } from '../menu-event-registrar.cjs';
|
|
11
11
|
import type { CommandHandler } from './command-handler.cjs';
|
|
12
12
|
import { ComponentEx } from '../components/component-ex.cjs';
|
|
13
|
+
/**
|
|
14
|
+
* Builds a fresh set of {@link CommandHandler}s.
|
|
15
|
+
*
|
|
16
|
+
* A factory rather than a ready-made array because {@link CommandHandlerComponent} registers the same
|
|
17
|
+
* handlers against several menu surfaces, and a handler carries per-registration state (its
|
|
18
|
+
* active-file provider, its plugin name, and whatever a subclass records in
|
|
19
|
+
* {@link CommandHandler.onRegistered}) — so every surface needs its own instances.
|
|
20
|
+
*
|
|
21
|
+
* Returning shared instances (`() => [handler1Singleton, handler2Singleton]`) reintroduces exactly the
|
|
22
|
+
* bug the factory exists to avoid, so it is not merely discouraged: {@link CommandHandler.onRegistered}
|
|
23
|
+
* throws on the second registration of an instance. {@link CommandHandlerComponent.registerCommandHandlers}
|
|
24
|
+
* awaits it, so that throw rejects the caller's promise instead of degrading into a wrong context menu.
|
|
25
|
+
*
|
|
26
|
+
* @returns The command handlers to register. A NEW instance of each on every call.
|
|
27
|
+
*/
|
|
28
|
+
export type CommandHandlerFactory = () => CommandHandler[];
|
|
13
29
|
interface CommandHandlerComponentConstructorParams {
|
|
14
30
|
readonly activeFileProvider: ActiveFileProvider;
|
|
31
|
+
readonly additionalMenuEventRegistrars?: readonly MenuEventRegistrar[] | undefined;
|
|
15
32
|
readonly commandRegistrar: CommandRegistrar;
|
|
16
33
|
readonly menuEventRegistrar: MenuEventRegistrar;
|
|
17
34
|
readonly pluginName: string;
|
|
@@ -23,12 +40,20 @@ interface CommandHandlerComponentConstructorParams {
|
|
|
23
40
|
* needed while the component is alive); dispose the returned {@link DisposableEx} to unregister exactly
|
|
24
41
|
* those handlers — including any menu events they registered — or let the component unload to remove every
|
|
25
42
|
* command still registered through it.
|
|
43
|
+
*
|
|
44
|
+
* The same handlers are fed to every menu surface the component knows about: Obsidian's own workspace
|
|
45
|
+
* events, plus each additional {@link MenuEventRegistrar} bridging another plugin's menus.
|
|
26
46
|
*/
|
|
27
47
|
export declare class CommandHandlerComponent extends ComponentEx {
|
|
28
48
|
/**
|
|
29
49
|
* Provider for accessing the currently active file.
|
|
30
50
|
*/
|
|
31
51
|
protected readonly activeFileProvider: ActiveFileProvider;
|
|
52
|
+
/**
|
|
53
|
+
* Registrars for menu surfaces that build their own plugin-titled parent entry, and therefore take
|
|
54
|
+
* the handlers with their section submenu forced off.
|
|
55
|
+
*/
|
|
56
|
+
protected readonly additionalMenuEventRegistrars: readonly MenuEventRegistrar[];
|
|
32
57
|
/**
|
|
33
58
|
* Registrar used to add and remove commands with Obsidian.
|
|
34
59
|
*/
|
|
@@ -48,15 +73,27 @@ export declare class CommandHandlerComponent extends ComponentEx {
|
|
|
48
73
|
*/
|
|
49
74
|
constructor(params: CommandHandlerComponentConstructorParams);
|
|
50
75
|
/**
|
|
51
|
-
*
|
|
52
|
-
* context. Each handler's command is added immediately; the returned
|
|
53
|
-
* commands registered by this call — and any menu events those
|
|
54
|
-
* {@link MenuEventRegistrar} — when disposed. Any command
|
|
55
|
-
* removed automatically.
|
|
76
|
+
* Builds the command handlers and registers them with Obsidian, giving each its own runtime
|
|
77
|
+
* registration context. Each handler's command is added immediately; the returned
|
|
78
|
+
* {@link DisposableEx} removes the commands registered by this call — and any menu events those
|
|
79
|
+
* handlers registered via their context's {@link MenuEventRegistrar} — when disposed. Any command
|
|
80
|
+
* still registered when the component unloads is removed automatically.
|
|
81
|
+
*
|
|
82
|
+
* The factory is invoked once more for every additional menu surface, so a plugin declares its
|
|
83
|
+
* handlers ONCE and all surfaces are fed. Those extra passes add no commands — the palette already
|
|
84
|
+
* has every command from the first pass.
|
|
85
|
+
*
|
|
86
|
+
* @param commandHandlerFactory - Builds a fresh set of command handlers, once per menu surface.
|
|
87
|
+
* @returns A {@link DisposableEx} that unregisters the handlers (commands + menu events) registered by this call.
|
|
88
|
+
*/
|
|
89
|
+
registerCommandHandlers(commandHandlerFactory: CommandHandlerFactory): Promise<DisposableEx>;
|
|
90
|
+
/**
|
|
91
|
+
* Hands a command handler its registration context, scoped so that disposing the returned scope
|
|
92
|
+
* unregisters exactly the menu events that handler registered.
|
|
56
93
|
*
|
|
57
|
-
* @param
|
|
58
|
-
* @returns
|
|
94
|
+
* @param params - The parameters for this registration.
|
|
95
|
+
* @returns The handler's menu-event scope.
|
|
59
96
|
*/
|
|
60
|
-
|
|
97
|
+
private registerMenuEventHandlers;
|
|
61
98
|
}
|
|
62
99
|
export {};
|
|
@@ -40,16 +40,11 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
40
40
|
globalThisRecord[key] ??= newFuncs[key]?.();
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
function name(obj) {
|
|
44
|
-
return obj;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
43
|
function extractDefault(module) {
|
|
48
44
|
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
49
45
|
}
|
|
50
46
|
|
|
51
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
52
|
-
'obsidian',
|
|
47
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
53
48
|
'@codemirror/autocomplete',
|
|
54
49
|
'@codemirror/collab',
|
|
55
50
|
'@codemirror/commands',
|
|
@@ -60,11 +55,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
60
55
|
'@codemirror/text',
|
|
61
56
|
'@codemirror/view',
|
|
62
57
|
'@lezer/common',
|
|
58
|
+
'@lezer/highlight',
|
|
63
59
|
'@lezer/lr',
|
|
64
|
-
'
|
|
60
|
+
'obsidian']
|
|
61
|
+
);
|
|
65
62
|
|
|
66
|
-
|
|
67
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
63
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
68
64
|
'@codemirror/closebrackets',
|
|
69
65
|
'@codemirror/comment',
|
|
70
66
|
'@codemirror/fold',
|
|
@@ -76,11 +72,11 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
76
72
|
'@codemirror/rangeset',
|
|
77
73
|
'@codemirror/rectangular-selection',
|
|
78
74
|
'@codemirror/stream-parser',
|
|
79
|
-
'@codemirror/tooltip']
|
|
80
|
-
|
|
75
|
+
'@codemirror/tooltip']
|
|
76
|
+
);
|
|
81
77
|
|
|
82
78
|
function requirePatched(id) {
|
|
83
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.
|
|
79
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
84
80
|
return originalRequire?.(id);
|
|
85
81
|
}
|
|
86
82
|
|
|
@@ -89,8 +85,8 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
89
85
|
if (id === 'process' || id === 'node:process') {
|
|
90
86
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
87
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
|
|
93
|
-
return
|
|
88
|
+
|
|
89
|
+
return process;
|
|
94
90
|
}
|
|
95
91
|
} else {
|
|
96
92
|
const module = originalRequire?.(id);
|
|
@@ -166,10 +162,23 @@ class CommandHandler {
|
|
|
166
162
|
* Called after the command has been registered with Obsidian.
|
|
167
163
|
* Subclasses use the provided context to register menu event handlers.
|
|
168
164
|
*
|
|
165
|
+
* Throws when the same instance is registered twice. A handler stores per-registration state — the
|
|
166
|
+
* plugin name here, the active-file provider and the submenu override in `AbstractFileCommandHandler`,
|
|
167
|
+
* plus whatever a subclass records — and the menu closures registered here read that state lazily, at
|
|
168
|
+
* menu-render time. So a second registration silently rewrites what the first registration's closures
|
|
169
|
+
* will see. `CommandHandlerComponent` registers a handler set once per menu surface, which is why
|
|
170
|
+
* `CommandHandlerFactory` must build FRESH instances on every call; this guard turns a factory that
|
|
171
|
+
* hands out shared instances into a loud failure instead of a wrong context menu.
|
|
172
|
+
*
|
|
169
173
|
* @param context - The registration context providing runtime capabilities.
|
|
170
174
|
*/
|
|
171
175
|
async onRegistered(context) {
|
|
172
176
|
await (0, import_function.noopAsync)();
|
|
177
|
+
if (this._pluginName !== void 0) {
|
|
178
|
+
throw new Error(
|
|
179
|
+
`Command handler '${this.id}' is already registered. A command handler instance cannot be registered twice - the command handler factory must build fresh instances on every call.`
|
|
180
|
+
);
|
|
181
|
+
}
|
|
173
182
|
this._pluginName = context.pluginName;
|
|
174
183
|
}
|
|
175
184
|
}
|
|
@@ -177,4 +186,4 @@ class CommandHandler {
|
|
|
177
186
|
0 && (module.exports = {
|
|
178
187
|
CommandHandler
|
|
179
188
|
});
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQmFzZSBjbGFzcyBhbmQgaW50ZXJmYWNlcyBmb3IgY29tbWFuZCBoYW5kbGVycy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmQsXG4gIEljb25OYW1lXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IE1lbnVFdmVudFJlZ2lzdHJhciB9IGZyb20gJy4uL21lbnUtZXZlbnQtcmVnaXN0cmFyLnRzJztcblxuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgYSBjb21tYW5kIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgaWNvbiBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBpY29uOiBJY29uTmFtZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250ZXh0IHByb3ZpZGVkIHRvIGNvbW1hbmQgaGFuZGxlcnMgZHVyaW5nIHJlZ2lzdHJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHQge1xuICAvKipcbiAgICogUHJvdmlkZXIgZm9yIGFjY2Vzc2luZyB0aGUgY3VycmVudGx5IGFjdGl2ZSBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhciBmb3IgbWVudSBldmVudCBoYW5kbGVycy5cbiAgICovXG4gIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgb3ducyB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgaGFuZGxlcidzIG93biBgc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudWAsIG9yIGB1bmRlZmluZWRgIHRvIGxlYXZlIGl0IGFsb25lLlxuICAgKlxuICAgKiBBIG1lbnUgc3VyZmFjZSB0aGF0IGFscmVhZHkgd3JhcHMgZXZlcnkgY29udHJpYnV0ZWQgaXRlbSBpbiBhIHBsdWdpbi10aXRsZWQgcGFyZW50IGVudHJ5IFx1MjAxNCBzdWNoIGFzXG4gICAqIGBOb3RlYm9va05hdmlnYXRvck1lbnVFdmVudFJlZ2lzdHJhckNvbXBvbmVudGAgXHUyMDE0IHNldHMgdGhpcyB0byBgZmFsc2VgLCBiZWNhdXNlIGEgaGFuZGxlciBkZWNsYXJpbmdcbiAgICogYSBzZWN0aW9uIHN1Ym1lbnUgb2YgaXRzIG93biB3b3VsZCBtYWtlIGBNZW51LnNvcnQoKWAgbmVzdCBhIHNlY29uZCBwbHVnaW4tdGl0bGVkIGVudHJ5IGluc2lkZSB0aGVcbiAgICogZmlyc3QuIE9ubHkgYEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyYCByZWFkcyBpdDogdGhlIHN1cmZhY2VzIHRoYXQgbmVlZCBpdCBicmlkZ2UgZmlsZSBhbmRcbiAgICogZm9sZGVyIG1lbnVzLCBuZXZlciB0aGUgZWRpdG9yIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBZGRDb21tYW5kVG9TdWJtZW51PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjb21tYW5kIGhhbmRsZXJzLlxuICpcbiAqIFVubGlrZSB0aGUgT2JzaWRpYW4ge0BsaW5rIENvbW1hbmR9IGludGVyZmFjZSwgaGFuZGxlcnMgYXJlIG5ldmVyIG11dGF0ZWQgYnkgT2JzaWRpYW4uXG4gKiBUaGUge0BsaW5rIGJ1aWxkQ29tbWFuZH0gbWV0aG9kIHByb2R1Y2VzIGEgcGxhaW4ge0BsaW5rIENvbW1hbmR9IG9iamVjdCBmb3IgcmVnaXN0cmF0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tbWFuZEhhbmRsZXIge1xuICAvKipcbiAgICogVGhlIGljb24gZm9yIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb246IEljb25OYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBsdWdpbiBuYW1lLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIG5hbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHBsdWdpbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUodGhpcy5fcGx1Z2luTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIF9wbHVnaW5OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbW1hbmQgaGFuZGxlci5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY29tbWFuZCBoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHRoaXMuaWNvbiA9IHBhcmFtcy5pY29uO1xuICAgIHRoaXMuaWQgPSBwYXJhbXMuaWQ7XG4gICAgdGhpcy5uYW1lID0gcGFyYW1zLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgcGxhaW4gT2JzaWRpYW4ge0BsaW5rIENvbW1hbmR9IG9iamVjdCBmb3IgcmVnaXN0cmF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgQ29tbWFuZH0gb2JqZWN0LiBPYnNpZGlhbiBtYXkgbXV0YXRlIHRoaXMgb2JqZWN0IGFmdGVyIHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmQoKTogQ29tbWFuZDtcblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIHRoZSBjb21tYW5kIGhhcyBiZWVuIHJlZ2lzdGVyZWQgd2l0aCBPYnNpZGlhbi5cbiAgICogU3ViY2xhc3NlcyB1c2UgdGhlIHByb3ZpZGVkIGNvbnRleHQgdG8gcmVnaXN0ZXIgbWVudSBldmVudCBoYW5kbGVycy5cbiAgICpcbiAgICogVGhyb3dzIHdoZW4gdGhlIHNhbWUgaW5zdGFuY2UgaXMgcmVnaXN0ZXJlZCB0d2ljZS4gQSBoYW5kbGVyIHN0b3JlcyBwZXItcmVnaXN0cmF0aW9uIHN0YXRlIFx1MjAxNCB0aGVcbiAgICogcGx1Z2luIG5hbWUgaGVyZSwgdGhlIGFjdGl2ZS1maWxlIHByb3ZpZGVyIGFuZCB0aGUgc3VibWVudSBvdmVycmlkZSBpbiBgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJgLFxuICAgKiBwbHVzIHdoYXRldmVyIGEgc3ViY2xhc3MgcmVjb3JkcyBcdTIwMTQgYW5kIHRoZSBtZW51IGNsb3N1cmVzIHJlZ2lzdGVyZWQgaGVyZSByZWFkIHRoYXQgc3RhdGUgbGF6aWx5LCBhdFxuICAgKiBtZW51LXJlbmRlciB0aW1lLiBTbyBhIHNlY29uZCByZWdpc3RyYXRpb24gc2lsZW50bHkgcmV3cml0ZXMgd2hhdCB0aGUgZmlyc3QgcmVnaXN0cmF0aW9uJ3MgY2xvc3VyZXNcbiAgICogd2lsbCBzZWUuIGBDb21tYW5kSGFuZGxlckNvbXBvbmVudGAgcmVnaXN0ZXJzIGEgaGFuZGxlciBzZXQgb25jZSBwZXIgbWVudSBzdXJmYWNlLCB3aGljaCBpcyB3aHlcbiAgICogYENvbW1hbmRIYW5kbGVyRmFjdG9yeWAgbXVzdCBidWlsZCBGUkVTSCBpbnN0YW5jZXMgb24gZXZlcnkgY2FsbDsgdGhpcyBndWFyZCB0dXJucyBhIGZhY3RvcnkgdGhhdFxuICAgKiBoYW5kcyBvdXQgc2hhcmVkIGluc3RhbmNlcyBpbnRvIGEgbG91ZCBmYWlsdXJlIGluc3RlYWQgb2YgYSB3cm9uZyBjb250ZXh0IG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHJlZ2lzdHJhdGlvbiBjb250ZXh0IHByb3ZpZGluZyBydW50aW1lIGNhcGFiaWxpdGllcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBvblJlZ2lzdGVyZWQoY29udGV4dDogQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gICAgaWYgKHRoaXMuX3BsdWdpbk5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBoYW5kbGVyICcke3RoaXMuaWR9JyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuIEEgY29tbWFuZCBoYW5kbGVyIGluc3RhbmNlIGNhbm5vdCBiZSByZWdpc3RlcmVkIHR3aWNlIC0gdGhlIGNvbW1hbmQgaGFuZGxlciBmYWN0b3J5IG11c3QgYnVpbGQgZnJlc2ggaW5zdGFuY2VzIG9uIGV2ZXJ5IGNhbGwuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wbHVnaW5OYW1lID0gY29udGV4dC5wbHVnaW5OYW1lO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBLHNCQUEwQjtBQUMxQix5QkFBa0M7QUEyRDNCLE1BQWUsZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWhCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPbkIsSUFBYyxhQUFxQjtBQUNqQyxlQUFPLHNDQUFrQixLQUFLLFdBQVc7QUFBQSxFQUMzQztBQUFBLEVBRVE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPRCxZQUFZLFFBQXlDO0FBQzFELFNBQUssT0FBTyxPQUFPO0FBQ25CLFNBQUssS0FBSyxPQUFPO0FBQ2pCLFNBQUssT0FBTyxPQUFPO0FBQUEsRUFDckI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUF1QkEsTUFBYSxhQUFhLFNBQTJEO0FBQ25GLGNBQU0sMkJBQVU7QUFDaEIsUUFBSSxLQUFLLGdCQUFnQixRQUFXO0FBQ2xDLFlBQU0sSUFBSTtBQUFBLFFBQ1Isb0JBQW9CLEtBQUssRUFBRTtBQUFBLE1BQzdCO0FBQUEsSUFDRjtBQUVBLFNBQUssY0FBYyxRQUFRO0FBQUEsRUFDN0I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -40,6 +40,16 @@ export interface CommandHandlerRegistrationContext {
|
|
|
40
40
|
* The name of the plugin that owns this command.
|
|
41
41
|
*/
|
|
42
42
|
readonly pluginName: string;
|
|
43
|
+
/**
|
|
44
|
+
* Overrides the handler's own `shouldAddCommandToSubmenu`, or `undefined` to leave it alone.
|
|
45
|
+
*
|
|
46
|
+
* A menu surface that already wraps every contributed item in a plugin-titled parent entry — such as
|
|
47
|
+
* `NotebookNavigatorMenuEventRegistrarComponent` — sets this to `false`, because a handler declaring
|
|
48
|
+
* a section submenu of its own would make `Menu.sort()` nest a second plugin-titled entry inside the
|
|
49
|
+
* first. Only `AbstractFileCommandHandler` reads it: the surfaces that need it bridge file and
|
|
50
|
+
* folder menus, never the editor menu.
|
|
51
|
+
*/
|
|
52
|
+
readonly shouldAddCommandToSubmenu?: boolean | undefined;
|
|
43
53
|
}
|
|
44
54
|
/**
|
|
45
55
|
* Base class for command handlers.
|
|
@@ -83,6 +93,14 @@ export declare abstract class CommandHandler {
|
|
|
83
93
|
* Called after the command has been registered with Obsidian.
|
|
84
94
|
* Subclasses use the provided context to register menu event handlers.
|
|
85
95
|
*
|
|
96
|
+
* Throws when the same instance is registered twice. A handler stores per-registration state — the
|
|
97
|
+
* plugin name here, the active-file provider and the submenu override in `AbstractFileCommandHandler`,
|
|
98
|
+
* plus whatever a subclass records — and the menu closures registered here read that state lazily, at
|
|
99
|
+
* menu-render time. So a second registration silently rewrites what the first registration's closures
|
|
100
|
+
* will see. `CommandHandlerComponent` registers a handler set once per menu surface, which is why
|
|
101
|
+
* `CommandHandlerFactory` must build FRESH instances on every call; this guard turns a factory that
|
|
102
|
+
* hands out shared instances into a loud failure instead of a wrong context menu.
|
|
103
|
+
*
|
|
86
104
|
* @param context - The registration context providing runtime capabilities.
|
|
87
105
|
*/
|
|
88
106
|
onRegistered(context: CommandHandlerRegistrationContext): Promise<void>;
|