obsidian-dev-utils 88.7.0 → 89.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 +23 -0
- package/dist/demo-vault-helper/main.js +20 -23
- package/dist/integration-test-plugin/main.js +2218 -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 +56 -31
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +42 -8
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +10 -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 +16 -17
- package/dist/lib/cjs/script-utils/test-runners/index.d.cts +1 -0
- 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 +325 -0
- package/dist/lib/cjs/script-utils/test-runners/vitest-config.d.cts +118 -0
- 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 +42 -8
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +46 -17
- package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +10 -0
- package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +1 -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/index.d.mts +1 -0
- package/dist/lib/esm/script-utils/test-runners/index.mjs +4 -2
- package/dist/lib/esm/script-utils/test-runners/vitest-config.d.mts +118 -0
- package/dist/lib/esm/script-utils/test-runners/vitest-config.mjs +210 -0
- 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/dist/templates/scripts/vitest-config.ts +2 -88
- 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
- package/script-utils/test-runners/vitest-config/package.json +6 -0
|
@@ -34,6 +34,7 @@ import * as generate_markdown_link_default_params_component from "./generate-mar
|
|
|
34
34
|
import * as layout_ready_component from "./layout-ready-component.mjs";
|
|
35
35
|
import * as menu_event_registrar_component from "./menu-event-registrar-component.mjs";
|
|
36
36
|
import * as monkey_around_component from "./monkey-around-component.mjs";
|
|
37
|
+
import * as notebook_navigator_menu_event_registrar_component from "./notebook-navigator-menu-event-registrar-component.mjs";
|
|
37
38
|
import * as plugin_context_component from "./plugin-context-component.mjs";
|
|
38
39
|
import * as plugin_notice_component from "./plugin-notice-component.mjs";
|
|
39
40
|
import * as plugin_settings_component from "./plugin-settings-component.mjs";
|
|
@@ -56,6 +57,7 @@ export {
|
|
|
56
57
|
layout_ready_component as "layout-ready-component",
|
|
57
58
|
menu_event_registrar_component as "menu-event-registrar-component",
|
|
58
59
|
monkey_around_component as "monkey-around-component",
|
|
60
|
+
notebook_navigator_menu_event_registrar_component as "notebook-navigator-menu-event-registrar-component",
|
|
59
61
|
plugin_context_component as "plugin-context-component",
|
|
60
62
|
plugin_notice_component as "plugin-notice-component",
|
|
61
63
|
plugin_settings_component as "plugin-settings-component",
|
|
@@ -65,4 +67,4 @@ export {
|
|
|
65
67
|
rename_delete_handler_component as "rename-delete-handler-component",
|
|
66
68
|
syntax_highlighting_component as "syntax-highlighting-component"
|
|
67
69
|
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJvcnQtc2lnbmFsLWNvbXBvbmVudCcgZnJvbSAnLi9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQnIGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnYXN5bmMtZXZlbnRzLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50JyBmcm9tICcuL2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2NvbXBvbmVudC1leCcgZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuZXhwb3J0ICogYXMgJ2NvbnNvbGUtZGVidWctY29tcG9uZW50JyBmcm9tICcuL2NvbnNvbGUtZGVidWctY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdkaXNwb3NhYmxlLWNvbXBvbmVudCcgZnJvbSAnLi9kaXNwb3NhYmxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQnIGZyb20gJy4vZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50JyBmcm9tICcuL2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdsYXlvdXQtcmVhZHktY29tcG9uZW50JyBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCcgZnJvbSAnLi9tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21vbmtleS1hcm91bmQtY29tcG9uZW50JyBmcm9tICcuL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50JyBmcm9tICcuL25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1jb250ZXh0LWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tY29udGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1ub3RpY2UtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudCcgZnJvbSAnLi9wb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVnaXN0cnktY29tcG9uZW50JyBmcm9tICcuL3JlZ2lzdHJ5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9yZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudCcgZnJvbSAnLi9zeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudC50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFlBQVlBLDRCQUE4QjtBQUMxQyxZQUFZQyxpQ0FBbUM7QUFDL0MsWUFBWUMsbUNBQXFDO0FBQ2pELFlBQVlDLDRCQUE4QjtBQUMxQyxZQUFZQywyQ0FBNkM7QUFDekQsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQywwQkFBNEI7QUFDeEMsWUFBWUMsZ0NBQWtDO0FBQzlDLFlBQVlDLHFEQUF1RDtBQUNuRSxZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMsb0NBQXNDO0FBQ2xELFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyx1REFBeUQ7QUFDckUsWUFBWUMsOEJBQWdDO0FBQzVDLFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQywrQkFBaUM7QUFDN0MsWUFBWUMsbUNBQXFDO0FBQ2pELFlBQVlDLGdDQUFrQztBQUM5QyxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMscUNBQXVDO0FBQ25ELFlBQVlDLG1DQUFxQzsiLAogICJuYW1lcyI6IFsiYWJvcnQtc2lnbmFsLWNvbXBvbmVudCIsICJhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQiLCAiYXN5bmMtZXJyb3ItaGFuZGxlci1jb21wb25lbnQiLCAiYXN5bmMtZXZlbnRzLWNvbXBvbmVudCIsICJjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50IiwgImNvbXBvbmVudC1leCIsICJjb25zb2xlLWRlYnVnLWNvbXBvbmVudCIsICJkaXNwb3NhYmxlLWNvbXBvbmVudCIsICJlbWJlZC1leHRlbnNpb25zLWNvbXBvbmVudCIsICJnZW5lcmF0ZS1tYXJrZG93bi1saW5rLWRlZmF1bHQtcGFyYW1zLWNvbXBvbmVudCIsICJsYXlvdXQtcmVhZHktY29tcG9uZW50IiwgIm1lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCIsICJtb25rZXktYXJvdW5kLWNvbXBvbmVudCIsICJub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50IiwgInBsdWdpbi1jb250ZXh0LWNvbXBvbmVudCIsICJwbHVnaW4tbm90aWNlLWNvbXBvbmVudCIsICJwbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50IiwgInBsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50IiwgInBvaW50ZXItcG9zaXRpb24tY29tcG9uZW50IiwgInJlZ2lzdHJ5LWNvbXBvbmVudCIsICJyZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50IiwgInN5bnRheC1oaWdobGlnaHRpbmctY29tcG9uZW50Il0KfQo=
|
|
@@ -21,7 +21,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
21
21
|
globalThis.process = browserProcess;
|
|
22
22
|
})();
|
|
23
23
|
|
|
24
|
-
import { EventRefDisposable } from "../events.mjs";
|
|
24
|
+
import { EventRefDisposable as EventReferenceDisposable } from "../events.mjs";
|
|
25
25
|
import { ComponentEx } from "./component-ex.mjs";
|
|
26
26
|
class MenuEventRegistrarComponent extends ComponentEx {
|
|
27
27
|
/**
|
|
@@ -42,7 +42,7 @@ class MenuEventRegistrarComponent extends ComponentEx {
|
|
|
42
42
|
*/
|
|
43
43
|
registerEditorMenuEventHandler(handler) {
|
|
44
44
|
this.ensureLoaded();
|
|
45
|
-
return this.registerDisposable(new
|
|
45
|
+
return this.registerDisposable(new EventReferenceDisposable(this.app.workspace.on("editor-menu", handler)));
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Registers a handler for the single-file context menu event.
|
|
@@ -52,7 +52,7 @@ class MenuEventRegistrarComponent extends ComponentEx {
|
|
|
52
52
|
*/
|
|
53
53
|
registerFileMenuEventHandler(handler) {
|
|
54
54
|
this.ensureLoaded();
|
|
55
|
-
return this.registerDisposable(new
|
|
55
|
+
return this.registerDisposable(new EventReferenceDisposable(this.app.workspace.on("file-menu", handler)));
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
58
|
* Registers a handler for the multi-file context menu event.
|
|
@@ -62,10 +62,10 @@ class MenuEventRegistrarComponent extends ComponentEx {
|
|
|
62
62
|
*/
|
|
63
63
|
registerFilesMenuEventHandler(handler) {
|
|
64
64
|
this.ensureLoaded();
|
|
65
|
-
return this.registerDisposable(new
|
|
65
|
+
return this.registerDisposable(new EventReferenceDisposable(this.app.workspace.on("files-menu", handler)));
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
export {
|
|
69
69
|
MenuEventRegistrarComponent
|
|
70
70
|
};
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmVnaXN0ZXJzIG1lbnUgZXZlbnQgaGFuZGxlcnMgd2l0aCBPYnNpZGlhbidzIHdvcmtzcGFjZSwgc3VwcG9ydGluZyBlZGl0b3IsIGZpbGUsIGFuZCBtdWx0aS1maWxlIGNvbnRleHQgbWVudXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGlzcG9zYWJsZUV4IH0gZnJvbSAnLi4vLi4vZGlzcG9zYWJsZS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVkaXRvck1lbnVFdmVudEhhbmRsZXIsXG4gIEZpbGVNZW51RXZlbnRIYW5kbGVyLFxuICBGaWxlc01lbnVFdmVudEhhbmRsZXIsXG4gIE1lbnVFdmVudFJlZ2lzdHJhclxufSBmcm9tICcuLi9tZW51LWV2ZW50LXJlZ2lzdHJhci50cyc7XG5cbmltcG9ydCB7IEV2ZW50UmVmRGlzcG9zYWJsZSBhcyBFdmVudFJlZmVyZW5jZURpc3Bvc2FibGUgfSBmcm9tICcuLi9ldmVudHMudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuL2NvbXBvbmVudC1leC50cyc7XG5cbi8qKlxuICoge0BsaW5rIE1lbnVFdmVudFJlZ2lzdHJhcn0gYmFja2VkIGJ5IE9ic2lkaWFuJ3Mge0BsaW5rIEFwcH0gd29ya3NwYWNlIGV2ZW50cy5cbiAqXG4gKiBFdmVudCBoYW5kbGVycyBhcmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBwcm92aWRlZCB7QGxpbmsgQ29tcG9uZW50fSBmb3IgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNZW51RXZlbnRSZWdpc3RyYXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCBpbXBsZW1lbnRzIE1lbnVFdmVudFJlZ2lzdHJhciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFwcC1iYWNrZWQgbWVudSBldmVudCByZWdpc3RyYXIuXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBhcHA6IEFwcCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgdGhlIGVkaXRvciBjb250ZXh0IG1lbnUgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBoYW5kbGVyIC0gVGhlIGhhbmRsZXIgdG8gcmVnaXN0ZXIuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERpc3Bvc2FibGVFeH0gdGhhdCB1bnJlZ2lzdGVycyB0aGUgaGFuZGxlciB3aGVuIGRpc3Bvc2VkIChvciBvbiBjb21wb25lbnQgdW5sb2FkKS5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlckVkaXRvck1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRWRpdG9yTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IEV2ZW50UmVmZXJlbmNlRGlzcG9zYWJsZSh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2VkaXRvci1tZW51JywgaGFuZGxlcikpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBoYW5kbGVyIGZvciB0aGUgc2luZ2xlLWZpbGUgY29udGV4dCBtZW51IGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaGFuZGxlciAtIFRoZSBoYW5kbGVyIHRvIHJlZ2lzdGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlRXh9IHRoYXQgdW5yZWdpc3RlcnMgdGhlIGhhbmRsZXIgd2hlbiBkaXNwb3NlZCAob3Igb24gY29tcG9uZW50IHVubG9hZCkuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJGaWxlTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyOiBGaWxlTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IEV2ZW50UmVmZXJlbmNlRGlzcG9zYWJsZSh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGUtbWVudScsIGhhbmRsZXIpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgdGhlIG11bHRpLWZpbGUgY29udGV4dCBtZW51IGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaGFuZGxlciAtIFRoZSBoYW5kbGVyIHRvIHJlZ2lzdGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlRXh9IHRoYXQgdW5yZWdpc3RlcnMgdGhlIGhhbmRsZXIgd2hlbiBkaXNwb3NlZCAob3Igb24gY29tcG9uZW50IHVubG9hZCkuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJGaWxlc01lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRmlsZXNNZW51RXZlbnRIYW5kbGVyKTogRGlzcG9zYWJsZUV4IHtcbiAgICB0aGlzLmVuc3VyZUxvYWRlZCgpO1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRXZlbnRSZWZlcmVuY2VEaXNwb3NhYmxlKHRoaXMuYXBwLndvcmtzcGFjZS5vbignZmlsZXMtbWVudScsIGhhbmRsZXIpKSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLFNBQVMsc0JBQXNCLGdDQUFnQztBQUMvRCxTQUFTLG1CQUFtQjtBQU9yQixNQUFNLG9DQUFvQyxZQUEwQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1sRixZQUErQixLQUFVO0FBQzlDLFVBQU07QUFEOEI7QUFBQSxFQUV0QztBQUFBLEVBRnNDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVL0IsK0JBQStCLFNBQStDO0FBQ25GLFNBQUssYUFBYTtBQUNsQixXQUFPLEtBQUssbUJBQW1CLElBQUkseUJBQXlCLEtBQUssSUFBSSxVQUFVLEdBQUcsZUFBZSxPQUFPLENBQUMsQ0FBQztBQUFBLEVBQzVHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyw2QkFBNkIsU0FBNkM7QUFDL0UsU0FBSyxhQUFhO0FBQ2xCLFdBQU8sS0FBSyxtQkFBbUIsSUFBSSx5QkFBeUIsS0FBSyxJQUFJLFVBQVUsR0FBRyxhQUFhLE9BQU8sQ0FBQyxDQUFDO0FBQUEsRUFDMUc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLDhCQUE4QixTQUE4QztBQUNqRixTQUFLLGFBQWE7QUFDbEIsV0FBTyxLQUFLLG1CQUFtQixJQUFJLHlCQUF5QixLQUFLLElBQUksVUFBVSxHQUFHLGNBQWMsT0FBTyxDQUFDLENBQUM7QUFBQSxFQUMzRztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -11,40 +11,40 @@ import { ComponentEx } from './component-ex.mjs';
|
|
|
11
11
|
/**
|
|
12
12
|
* A type of the factories to apply to the object.
|
|
13
13
|
*
|
|
14
|
-
* @typeParam
|
|
14
|
+
* @typeParam $Object - The object to patch.
|
|
15
15
|
*/
|
|
16
|
-
export type Factories
|
|
16
|
+
export type Factories<$Object extends object> = Partial<FullFactories<$Object>>;
|
|
17
17
|
/**
|
|
18
18
|
* Keys of `Obj` whose value is callable — a method, or a function-like object such as a `Debouncer`. These are the members
|
|
19
19
|
* accepted by {@link MonkeyAroundComponent#registerFunctionPatch}.
|
|
20
20
|
*
|
|
21
|
-
* @typeParam
|
|
21
|
+
* @typeParam $Object - The object whose keys are filtered.
|
|
22
22
|
*/
|
|
23
|
-
export type FunctionKeys
|
|
23
|
+
export type FunctionKeys<$Object extends object> = ConditionalKeys<$Object, GenericFunction | undefined> & keyof $Object;
|
|
24
24
|
/**
|
|
25
25
|
* Keys of `Obj` whose value is a plain function (a "real method"). Function-like objects that carry extra members are
|
|
26
26
|
* excluded — e.g. a `Debouncer` (which adds `cancel`/`run`) belongs to {@link MonkeyAroundComponent#registerFunctionPatch},
|
|
27
27
|
* not {@link MonkeyAroundComponent#registerMethodPatch}. The check is whether the member has any own keys beyond a bare
|
|
28
28
|
* function's (`Exclude<keyof T, keyof GenericFunction>` is `never`).
|
|
29
29
|
*
|
|
30
|
-
* @typeParam
|
|
30
|
+
* @typeParam $Object - The object whose keys are filtered.
|
|
31
31
|
*/
|
|
32
|
-
export type MethodKeys
|
|
32
|
+
export type MethodKeys<$Object extends object> = MethodKeysMap<$Object>[FunctionKeys<$Object>];
|
|
33
33
|
/**
|
|
34
34
|
* Parameters passed to {@link MonkeyAroundComponent#registerFunctionPatch}.
|
|
35
35
|
*
|
|
36
|
-
* @typeParam
|
|
36
|
+
* @typeParam $Object - The object to patch.
|
|
37
37
|
* @typeParam FunctionName - The function name to patch.
|
|
38
38
|
*/
|
|
39
|
-
export interface MonkeyAroundComponentRegisterFunctionPatchParams
|
|
39
|
+
export interface MonkeyAroundComponentRegisterFunctionPatchParams<$Object extends object, FunctionName extends FunctionKeys<$Object>> {
|
|
40
40
|
/**
|
|
41
|
-
* The
|
|
41
|
+
* The object to patch.
|
|
42
42
|
*/
|
|
43
|
-
readonly
|
|
43
|
+
readonly $object: $Object;
|
|
44
44
|
/**
|
|
45
|
-
* The
|
|
45
|
+
* The function name to patch.
|
|
46
46
|
*/
|
|
47
|
-
readonly
|
|
47
|
+
readonly functionName: FunctionName;
|
|
48
48
|
/**
|
|
49
49
|
* When `true`, the patch uninstalls itself the first time the patched function is invoked (by
|
|
50
50
|
* unloading this component), restoring the original — so the interception happens exactly once.
|
|
@@ -60,23 +60,23 @@ export interface MonkeyAroundComponentRegisterFunctionPatchParams<Obj extends ob
|
|
|
60
60
|
* @param originalValue - The original value of the function.
|
|
61
61
|
* @returns The patched value of the function.
|
|
62
62
|
*/
|
|
63
|
-
patchHandler(originalValue:
|
|
63
|
+
patchHandler(originalValue: $Object[FunctionName]): $Object[FunctionName];
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
66
|
* Parameters passed to {@link MonkeyAroundComponent#registerMethodPatch}.
|
|
67
67
|
*
|
|
68
|
-
* @typeParam
|
|
68
|
+
* @typeParam $Object - The object to patch.
|
|
69
69
|
* @typeParam MethodName - The method name to patch.
|
|
70
70
|
*/
|
|
71
|
-
export interface MonkeyAroundComponentRegisterMethodPatchParams
|
|
71
|
+
export interface MonkeyAroundComponentRegisterMethodPatchParams<$Object extends object, MethodName extends MethodKeys<$Object>> {
|
|
72
72
|
/**
|
|
73
|
-
* The
|
|
73
|
+
* The object to patch.
|
|
74
74
|
*/
|
|
75
|
-
readonly
|
|
75
|
+
readonly $object: $Object;
|
|
76
76
|
/**
|
|
77
|
-
* The
|
|
77
|
+
* The method name to patch.
|
|
78
78
|
*/
|
|
79
|
-
readonly
|
|
79
|
+
readonly methodName: MethodName;
|
|
80
80
|
/**
|
|
81
81
|
* When `true`, the patch uninstalls itself the first time the patched method is invoked, restoring
|
|
82
82
|
* the original — so the interception happens exactly once. Existing callers that omit it are
|
|
@@ -88,7 +88,7 @@ export interface MonkeyAroundComponentRegisterMethodPatchParams<Obj extends obje
|
|
|
88
88
|
/**
|
|
89
89
|
* The patch handler function.
|
|
90
90
|
*/
|
|
91
|
-
readonly patchHandler:
|
|
91
|
+
readonly patchHandler: PatchHandlerFunction<$Object, MethodName>;
|
|
92
92
|
/**
|
|
93
93
|
* An optional token to identify the patch.
|
|
94
94
|
*/
|
|
@@ -96,69 +96,69 @@ export interface MonkeyAroundComponentRegisterMethodPatchParams<Obj extends obje
|
|
|
96
96
|
/**
|
|
97
97
|
* An optional post-patch handler function that runs after the patch is applied.
|
|
98
98
|
*/
|
|
99
|
-
readonly postPatchHandler?:
|
|
99
|
+
readonly postPatchHandler?: PostPatchHandlerFunction<$Object, MethodName>;
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
102
|
* A patch handler function that intercepts calls to a method on an object.
|
|
103
103
|
*
|
|
104
|
-
* @typeParam
|
|
104
|
+
* @typeParam $Object - The object being patched.
|
|
105
105
|
* @typeParam MethodName - The method name being patched.
|
|
106
106
|
*/
|
|
107
|
-
export type
|
|
107
|
+
export type PatchHandlerFunction<$Object extends object, MethodName extends MethodKeys<$Object>> = (params: PatchHandlerParams<$Object, MethodName>) => ReturnType<ExtractFunction<$Object, MethodName>>;
|
|
108
108
|
/**
|
|
109
|
-
* Parameters passed to a {@link
|
|
109
|
+
* Parameters passed to a {@link PatchHandlerFunction} callback.
|
|
110
110
|
*
|
|
111
|
-
* @typeParam
|
|
111
|
+
* @typeParam $Object - The object being patched.
|
|
112
112
|
* @typeParam MethodName - The method name being patched.
|
|
113
113
|
*/
|
|
114
|
-
export interface PatchHandlerParams
|
|
115
|
-
fallback(this: void): ReturnType<ExtractFunction
|
|
114
|
+
export interface PatchHandlerParams<$Object extends object, MethodName extends MethodKeys<$Object>> {
|
|
115
|
+
fallback(this: void): ReturnType<ExtractFunction<$Object, MethodName>>;
|
|
116
116
|
/**
|
|
117
117
|
* The original arguments of the intercepted call, as a tuple.
|
|
118
118
|
*/
|
|
119
|
-
readonly
|
|
119
|
+
readonly originalArguments: Parameters<ExtractFunction<$Object, MethodName>>;
|
|
120
120
|
/**
|
|
121
121
|
* The original (unpatched) method. Call via `originalFn.call(originalThis, ...originalArgs)`.
|
|
122
122
|
*/
|
|
123
|
-
readonly originalMethod: ExtractFunction
|
|
123
|
+
readonly originalMethod: ExtractFunction<$Object, MethodName>;
|
|
124
124
|
/**
|
|
125
125
|
* The original method, but with the `this` context already bound to the original object. Call via `originalMethodBound(...originalArgs)`.
|
|
126
126
|
*/
|
|
127
|
-
readonly originalMethodBound: OmitThisParameter<ExtractFunction
|
|
127
|
+
readonly originalMethodBound: OmitThisParameter<ExtractFunction<$Object, MethodName>>;
|
|
128
128
|
/**
|
|
129
129
|
* The original `this` context of the intercepted call.
|
|
130
130
|
*/
|
|
131
|
-
readonly originalThis:
|
|
131
|
+
readonly originalThis: $Object;
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
134
|
* A post-patch handler function that runs after a patch is applied.
|
|
135
135
|
*
|
|
136
|
-
* @typeParam
|
|
136
|
+
* @typeParam $Object - The object being patched.
|
|
137
137
|
* @typeParam MethodName - The method name being patched.
|
|
138
138
|
*/
|
|
139
|
-
export type
|
|
139
|
+
export type PostPatchHandlerFunction<$Object extends object, MethodName extends MethodKeys<$Object>> = (params: PostPatchHandlerParams<$Object, MethodName>) => MaybeReturn<ExtractFunction<$Object, MethodName>>;
|
|
140
140
|
/**
|
|
141
|
-
* Parameters passed to a {@link
|
|
141
|
+
* Parameters passed to a {@link PostPatchHandlerFunction} callback.
|
|
142
142
|
*
|
|
143
|
-
* @typeParam
|
|
143
|
+
* @typeParam $Object - The object being patched.
|
|
144
144
|
* @typeParam MethodName - The method name being patched.
|
|
145
145
|
*/
|
|
146
|
-
export interface PostPatchHandlerParams
|
|
146
|
+
export interface PostPatchHandlerParams<$Object extends object, MethodName extends MethodKeys<$Object>> {
|
|
147
147
|
/**
|
|
148
148
|
* The original (unpatched) method. Call via `originalFn.call(originalThis, ...originalArgs)`.
|
|
149
149
|
*/
|
|
150
|
-
readonly originalMethod: ExtractFunction
|
|
150
|
+
readonly originalMethod: ExtractFunction<$Object, MethodName>;
|
|
151
151
|
/**
|
|
152
152
|
* The patched method.
|
|
153
153
|
*/
|
|
154
|
-
readonly patchedMethod: ExtractFunction
|
|
154
|
+
readonly patchedMethod: ExtractFunction<$Object, MethodName>;
|
|
155
155
|
}
|
|
156
|
-
type ExtractFunction
|
|
157
|
-
type FullFactories
|
|
158
|
-
[Key in keyof
|
|
156
|
+
type ExtractFunction<$Object extends object, MethodName extends MethodKeys<$Object>> = GenericFunction<Parameters<Extract<$Object[MethodName], GenericFunction>>, ReturnType<Extract<$Object[MethodName], GenericFunction>>>;
|
|
157
|
+
type FullFactories<$Object extends object> = {
|
|
158
|
+
[Key in keyof $Object]: (originalValue: $Object[Key]) => $Object[Key];
|
|
159
159
|
};
|
|
160
|
-
type MethodKeysMap
|
|
161
|
-
[Key in FunctionKeys
|
|
160
|
+
type MethodKeysMap<$Object extends object> = {
|
|
161
|
+
[Key in FunctionKeys<$Object>]: [Exclude<keyof NonNullable<$Object[Key]>, keyof GenericFunction>] extends [never] ? Key : never;
|
|
162
162
|
};
|
|
163
163
|
type Uninstaller = () => void;
|
|
164
164
|
/**
|
|
@@ -169,44 +169,44 @@ export declare class MonkeyAroundComponent extends ComponentEx {
|
|
|
169
169
|
/**
|
|
170
170
|
* Registers a patch for a single function-like member (a method, or a callable such as a `Debouncer`) using a simplified handler.
|
|
171
171
|
*
|
|
172
|
-
* @typeParam
|
|
172
|
+
* @typeParam $Object - The object to patch.
|
|
173
173
|
* @typeParam FunctionName - The function name to patch.
|
|
174
174
|
* @param params - The parameters of the patch.
|
|
175
175
|
*/
|
|
176
|
-
registerFunctionPatch
|
|
176
|
+
registerFunctionPatch<$Object extends object, const FunctionName extends FunctionKeys<$Object>>(params: MonkeyAroundComponentRegisterFunctionPatchParams<$Object, FunctionName>): void;
|
|
177
177
|
/**
|
|
178
178
|
* Registers a single-method patch using a simplified handler.
|
|
179
179
|
*
|
|
180
|
-
* @typeParam
|
|
180
|
+
* @typeParam $Object - The object to patch.
|
|
181
181
|
* @typeParam MethodName - The method name to patch.
|
|
182
182
|
* @param params - The parameters of the patch.
|
|
183
183
|
*/
|
|
184
|
-
registerMethodPatch
|
|
184
|
+
registerMethodPatch<$Object extends object, const MethodName extends MethodKeys<$Object>>(params: MonkeyAroundComponentRegisterMethodPatchParams<$Object, MethodName>): void;
|
|
185
185
|
/**
|
|
186
186
|
* Registers a patch using raw factories (advanced API).
|
|
187
187
|
*
|
|
188
|
-
* @typeParam
|
|
189
|
-
* @param
|
|
188
|
+
* @typeParam $Object - The object to patch.
|
|
189
|
+
* @param $object - The object to patch.
|
|
190
190
|
* @param factories - The factories to apply to the object.
|
|
191
191
|
*/
|
|
192
|
-
registerPatch
|
|
192
|
+
registerPatch<$Object extends object>($object: $Object, factories: Factories<$Object>): void;
|
|
193
193
|
}
|
|
194
194
|
/**
|
|
195
195
|
* Applies a patch to the object.
|
|
196
196
|
* Better strongly-typed version of `monkey-around`.
|
|
197
197
|
*
|
|
198
|
-
* @typeParam
|
|
199
|
-
* @param
|
|
198
|
+
* @typeParam $Object - The object to patch.
|
|
199
|
+
* @param $object - The object to patch.
|
|
200
200
|
* @param factories - The factories to apply to the object.
|
|
201
201
|
* @returns The uninstaller that removes the patch when called.
|
|
202
202
|
*/
|
|
203
|
-
export declare function around
|
|
203
|
+
export declare function around<$Object extends object>($object: $Object, factories: Factories<$Object>): Uninstaller;
|
|
204
204
|
/**
|
|
205
205
|
* Checks if a function has a specific patch token.
|
|
206
206
|
*
|
|
207
|
-
* @param
|
|
207
|
+
* @param $function - The function to check.
|
|
208
208
|
* @param patchToken - The patch token to check for.
|
|
209
209
|
* @returns Whether the function has the patch token.
|
|
210
210
|
*/
|
|
211
|
-
export declare function hasPatchToken(
|
|
211
|
+
export declare function hasPatchToken($function: GenericFunction, patchToken: symbol): boolean;
|
|
212
212
|
export {};
|
|
@@ -28,7 +28,7 @@ class MonkeyAroundComponent extends ComponentEx {
|
|
|
28
28
|
/**
|
|
29
29
|
* Registers a patch for a single function-like member (a method, or a callable such as a `Debouncer`) using a simplified handler.
|
|
30
30
|
*
|
|
31
|
-
* @typeParam
|
|
31
|
+
* @typeParam $Object - The object to patch.
|
|
32
32
|
* @typeParam FunctionName - The function name to patch.
|
|
33
33
|
* @param params - The parameters of the patch.
|
|
34
34
|
*/
|
|
@@ -43,33 +43,33 @@ class MonkeyAroundComponent extends ComponentEx {
|
|
|
43
43
|
const unloadComponent = () => {
|
|
44
44
|
this.unload();
|
|
45
45
|
};
|
|
46
|
-
function oncePatchedValue(
|
|
46
|
+
function oncePatchedValue(...$arguments) {
|
|
47
47
|
try {
|
|
48
|
-
return Reflect.apply(patchedValue, this,
|
|
48
|
+
return Reflect.apply(patchedValue, this, $arguments);
|
|
49
49
|
} finally {
|
|
50
50
|
unloadComponent();
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
return Object.assign(oncePatchedValue, patchedValue);
|
|
54
54
|
};
|
|
55
|
-
this.registerPatch(params
|
|
55
|
+
this.registerPatch(params.$object, factories);
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
58
|
* Registers a single-method patch using a simplified handler.
|
|
59
59
|
*
|
|
60
|
-
* @typeParam
|
|
60
|
+
* @typeParam $Object - The object to patch.
|
|
61
61
|
* @typeParam MethodName - The method name to patch.
|
|
62
62
|
* @param params - The parameters of the patch.
|
|
63
63
|
*/
|
|
64
64
|
registerMethodPatch(params) {
|
|
65
65
|
this.ensureLoaded();
|
|
66
66
|
if (params.patchToken) {
|
|
67
|
-
const originalMethod = params
|
|
67
|
+
const originalMethod = params.$object[params.methodName];
|
|
68
68
|
getMonkeyAroundPatches().set(originalMethod, params.patchToken);
|
|
69
69
|
}
|
|
70
70
|
this.registerFunctionPatch({
|
|
71
|
+
$object: params.$object,
|
|
71
72
|
functionName: params.methodName,
|
|
72
|
-
obj: params.obj,
|
|
73
73
|
once: params.once ?? false,
|
|
74
74
|
patchHandler: (originalMethodRaw) => {
|
|
75
75
|
const originalMethod = originalMethodRaw;
|
|
@@ -78,13 +78,13 @@ class MonkeyAroundComponent extends ComponentEx {
|
|
|
78
78
|
patchedMethod
|
|
79
79
|
}) ?? patchedMethod;
|
|
80
80
|
return finalPatchedMethod;
|
|
81
|
-
function patchedMethod(...
|
|
81
|
+
function patchedMethod(...originalArguments) {
|
|
82
82
|
const originalThis = this;
|
|
83
83
|
return params.patchHandler({
|
|
84
84
|
fallback() {
|
|
85
|
-
return originalMethod.call(originalThis, ...
|
|
85
|
+
return originalMethod.call(originalThis, ...originalArguments);
|
|
86
86
|
},
|
|
87
|
-
|
|
87
|
+
originalArguments,
|
|
88
88
|
originalMethod,
|
|
89
89
|
originalMethodBound: originalMethod.bind(originalThis),
|
|
90
90
|
originalThis
|
|
@@ -96,21 +96,21 @@ class MonkeyAroundComponent extends ComponentEx {
|
|
|
96
96
|
/**
|
|
97
97
|
* Registers a patch using raw factories (advanced API).
|
|
98
98
|
*
|
|
99
|
-
* @typeParam
|
|
100
|
-
* @param
|
|
99
|
+
* @typeParam $Object - The object to patch.
|
|
100
|
+
* @param $object - The object to patch.
|
|
101
101
|
* @param factories - The factories to apply to the object.
|
|
102
102
|
*/
|
|
103
|
-
registerPatch(
|
|
103
|
+
registerPatch($object, factories) {
|
|
104
104
|
this.ensureLoaded();
|
|
105
|
-
const uninstaller = around(
|
|
105
|
+
const uninstaller = around($object, factories);
|
|
106
106
|
this.register(uninstaller);
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
function around(
|
|
110
|
-
return originalAround(
|
|
109
|
+
function around($object, factories) {
|
|
110
|
+
return originalAround($object, factories);
|
|
111
111
|
}
|
|
112
|
-
function hasPatchToken(
|
|
113
|
-
return getMonkeyAroundPatches().get(
|
|
112
|
+
function hasPatchToken($function, patchToken) {
|
|
113
|
+
return getMonkeyAroundPatches().get($function) === patchToken;
|
|
114
114
|
}
|
|
115
115
|
function getMonkeyAroundPatches() {
|
|
116
116
|
return getObsidianDevUtilsState("monkeyAroundPatches", /* @__PURE__ */ new WeakMap()).value;
|
|
@@ -120,4 +120,4 @@ export {
|
|
|
120
120
|
around,
|
|
121
121
|
hasPatchToken
|
|
122
122
|
};
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvbW9ua2V5LWFyb3VuZC1jb21wb25lbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBJbXByb3ZlZCB0eXBlLXNhZmUgd3JhcHBlciBvZiB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbW9ua2V5LWFyb3VuZH0gbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbmFsS2V5cyB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGFyb3VuZCBhcyBvcmlnaW5hbEFyb3VuZCB9IGZyb20gJ21vbmtleS1hcm91bmQnO1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICcuLi8uLi90eXBlLnRzJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuXG4vKipcbiAqIEEgdHlwZSBvZiB0aGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBPYmogLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICovXG5leHBvcnQgdHlwZSBGYWN0b3JpZXM8T2JqIGV4dGVuZHMgb2JqZWN0PiA9IFBhcnRpYWw8RnVsbEZhY3RvcmllczxPYmo+PjtcblxuLyoqXG4gKiBLZXlzIG9mIGBPYmpgIHdob3NlIHZhbHVlIGlzIGNhbGxhYmxlIFx1MjAxNCBhIG1ldGhvZCwgb3IgYSBmdW5jdGlvbi1saWtlIG9iamVjdCBzdWNoIGFzIGEgYERlYm91bmNlcmAuIFRoZXNlIGFyZSB0aGUgbWVtYmVyc1xuICogYWNjZXB0ZWQgYnkge0BsaW5rIE1vbmtleUFyb3VuZENvbXBvbmVudCNyZWdpc3RlckZ1bmN0aW9uUGF0Y2h9LlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCB3aG9zZSBrZXlzIGFyZSBmaWx0ZXJlZC5cbiAqL1xuZXhwb3J0IHR5cGUgRnVuY3Rpb25LZXlzPE9iaiBleHRlbmRzIG9iamVjdD4gPSBDb25kaXRpb25hbEtleXM8T2JqLCBHZW5lcmljRnVuY3Rpb24gfCB1bmRlZmluZWQ+ICYga2V5b2YgT2JqO1xuXG4vKipcbiAqIEtleXMgb2YgYE9iamAgd2hvc2UgdmFsdWUgaXMgYSBwbGFpbiBmdW5jdGlvbiAoYSBcInJlYWwgbWV0aG9kXCIpLiBGdW5jdGlvbi1saWtlIG9iamVjdHMgdGhhdCBjYXJyeSBleHRyYSBtZW1iZXJzIGFyZVxuICogZXhjbHVkZWQgXHUyMDE0IGUuZy4gYSBgRGVib3VuY2VyYCAod2hpY2ggYWRkcyBgY2FuY2VsYC9gcnVuYCkgYmVsb25ncyB0byB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyRnVuY3Rpb25QYXRjaH0sXG4gKiBub3Qge0BsaW5rIE1vbmtleUFyb3VuZENvbXBvbmVudCNyZWdpc3Rlck1ldGhvZFBhdGNofS4gVGhlIGNoZWNrIGlzIHdoZXRoZXIgdGhlIG1lbWJlciBoYXMgYW55IG93biBrZXlzIGJleW9uZCBhIGJhcmVcbiAqIGZ1bmN0aW9uJ3MgKGBFeGNsdWRlPGtleW9mIFQsIGtleW9mIEdlbmVyaWNGdW5jdGlvbj5gIGlzIGBuZXZlcmApLlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCB3aG9zZSBrZXlzIGFyZSBmaWx0ZXJlZC5cbiAqL1xuZXhwb3J0IHR5cGUgTWV0aG9kS2V5czxPYmogZXh0ZW5kcyBvYmplY3Q+ID0gTWV0aG9kS2V5c01hcDxPYmo+W0Z1bmN0aW9uS2V5czxPYmo+XTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHBhc3NlZCB0byB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyRnVuY3Rpb25QYXRjaH0uXG4gKlxuICogQHR5cGVQYXJhbSBPYmogLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHR5cGVQYXJhbSBGdW5jdGlvbk5hbWUgLSBUaGUgZnVuY3Rpb24gbmFtZSB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3RlckZ1bmN0aW9uUGF0Y2hQYXJhbXM8T2JqIGV4dGVuZHMgb2JqZWN0LCBGdW5jdGlvbk5hbWUgZXh0ZW5kcyBGdW5jdGlvbktleXM8T2JqPj4ge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG5hbWUgdG8gcGF0Y2guXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbk5hbWU6IEZ1bmN0aW9uTmFtZTtcblxuICAvKipcbiAgICogVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IG9iajogT2JqO1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgdGhlIHBhdGNoIHVuaW5zdGFsbHMgaXRzZWxmIHRoZSBmaXJzdCB0aW1lIHRoZSBwYXRjaGVkIGZ1bmN0aW9uIGlzIGludm9rZWQgKGJ5XG4gICAqIHVubG9hZGluZyB0aGlzIGNvbXBvbmVudCksIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwgXHUyMDE0IHNvIHRoZSBpbnRlcmNlcHRpb24gaGFwcGVucyBleGFjdGx5IG9uY2UuXG4gICAqIEludGVuZGVkIGZvciBhIGNvbXBvbmVudCBkZWRpY2F0ZWQgdG8gdGhpcyBzaW5nbGUgcGF0Y2guIEV4aXN0aW5nIGNhbGxlcnMgdGhhdCBvbWl0IGl0IGFyZVxuICAgKiB1bmFmZmVjdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBvbmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGF0Y2ggaGFuZGxlciBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBvcmlnaW5hbCB2YWx1ZSBhbmQgcmV0dXJucyB0aGUgcGF0Y2hlZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIG9yaWdpbmFsVmFsdWUgLSBUaGUgb3JpZ2luYWwgdmFsdWUgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJucyBUaGUgcGF0Y2hlZCB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICBwYXRjaEhhbmRsZXIob3JpZ2luYWxWYWx1ZTogT2JqW0Z1bmN0aW9uTmFtZV0pOiBPYmpbRnVuY3Rpb25OYW1lXTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHBhc3NlZCB0byB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyTWV0aG9kUGF0Y2h9LlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3Rlck1ldGhvZFBhdGNoUGFyYW1zPE9iaiBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8T2JqPj4ge1xuICAvKipcbiAgICogVGhlIG1ldGhvZCBuYW1lIHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0aG9kTmFtZTogTWV0aG9kTmFtZTtcblxuICAvKipcbiAgICogVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IG9iajogT2JqO1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgdGhlIHBhdGNoIHVuaW5zdGFsbHMgaXRzZWxmIHRoZSBmaXJzdCB0aW1lIHRoZSBwYXRjaGVkIG1ldGhvZCBpcyBpbnZva2VkLCByZXN0b3JpbmdcbiAgICogdGhlIG9yaWdpbmFsIFx1MjAxNCBzbyB0aGUgaW50ZXJjZXB0aW9uIGhhcHBlbnMgZXhhY3RseSBvbmNlLiBFeGlzdGluZyBjYWxsZXJzIHRoYXQgb21pdCBpdCBhcmVcbiAgICogdW5hZmZlY3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgb25jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRjaCBoYW5kbGVyIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0Y2hIYW5kbGVyOiBQYXRjaEhhbmRsZXJGbjxPYmosIE1ldGhvZE5hbWU+O1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCB0b2tlbiB0byBpZGVudGlmeSB0aGUgcGF0Y2guXG4gICAqL1xuICByZWFkb25seSBwYXRjaFRva2VuPzogc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwb3N0LXBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBydW5zIGFmdGVyIHRoZSBwYXRjaCBpcyBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9zdFBhdGNoSGFuZGxlcj86IFBvc3RQYXRjaEhhbmRsZXJGbjxPYmosIE1ldGhvZE5hbWU+O1xufVxuXG4vKipcbiAqIEEgcGF0Y2ggaGFuZGxlciBmdW5jdGlvbiB0aGF0IGludGVyY2VwdHMgY2FsbHMgdG8gYSBtZXRob2Qgb24gYW4gb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGNoSGFuZGxlckZuPE9iaiBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8T2JqPj4gPSAoXG4gIHBhcmFtczogUGF0Y2hIYW5kbGVyUGFyYW1zPE9iaiwgTWV0aG9kTmFtZT5cbikgPT4gUmV0dXJuVHlwZTxFeHRyYWN0RnVuY3Rpb248T2JqLCBNZXRob2ROYW1lPj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSB7QGxpbmsgUGF0Y2hIYW5kbGVyRm59IGNhbGxiYWNrLlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hIYW5kbGVyUGFyYW1zPE9iaiBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8T2JqPj4ge1xuICBmYWxsYmFjayh0aGlzOiB2b2lkKTogUmV0dXJuVHlwZTxFeHRyYWN0RnVuY3Rpb248T2JqLCBNZXRob2ROYW1lPj47XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBhcmd1bWVudHMgb2YgdGhlIGludGVyY2VwdGVkIGNhbGwsIGFzIGEgdHVwbGUuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbEFyZ3M6IFBhcmFtZXRlcnM8RXh0cmFjdEZ1bmN0aW9uPE9iaiwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgKHVucGF0Y2hlZCkgbWV0aG9kLiBDYWxsIHZpYSBgb3JpZ2luYWxGbi5jYWxsKG9yaWdpbmFsVGhpcywgLi4ub3JpZ2luYWxBcmdzKWAuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbE1ldGhvZDogRXh0cmFjdEZ1bmN0aW9uPE9iaiwgTWV0aG9kTmFtZT47XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBtZXRob2QsIGJ1dCB3aXRoIHRoZSBgdGhpc2AgY29udGV4dCBhbHJlYWR5IGJvdW5kIHRvIHRoZSBvcmlnaW5hbCBvYmplY3QuIENhbGwgdmlhIGBvcmlnaW5hbE1ldGhvZEJvdW5kKC4uLm9yaWdpbmFsQXJncylgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxNZXRob2RCb3VuZDogT21pdFRoaXNQYXJhbWV0ZXI8RXh0cmFjdEZ1bmN0aW9uPE9iaiwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYHRoaXNgIGNvbnRleHQgb2YgdGhlIGludGVyY2VwdGVkIGNhbGwuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbFRoaXM6IE9iajtcbn1cblxuLyoqXG4gKiBBIHBvc3QtcGF0Y2ggaGFuZGxlciBmdW5jdGlvbiB0aGF0IHJ1bnMgYWZ0ZXIgYSBwYXRjaCBpcyBhcHBsaWVkLlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFBvc3RQYXRjaEhhbmRsZXJGbjxPYmogZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPE9iaj4+ID0gKFxuICBwYXJhbXM6IFBvc3RQYXRjaEhhbmRsZXJQYXJhbXM8T2JqLCBNZXRob2ROYW1lPlxuKSA9PiBNYXliZVJldHVybjxFeHRyYWN0RnVuY3Rpb248T2JqLCBNZXRob2ROYW1lPj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSB7QGxpbmsgUG9zdFBhdGNoSGFuZGxlckZufSBjYWxsYmFjay5cbiAqXG4gKiBAdHlwZVBhcmFtIE9iaiAtIFRoZSBvYmplY3QgYmVpbmcgcGF0Y2hlZC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSBiZWluZyBwYXRjaGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RQYXRjaEhhbmRsZXJQYXJhbXM8T2JqIGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czxPYmo+PiB7XG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgKHVucGF0Y2hlZCkgbWV0aG9kLiBDYWxsIHZpYSBgb3JpZ2luYWxGbi5jYWxsKG9yaWdpbmFsVGhpcywgLi4ub3JpZ2luYWxBcmdzKWAuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbE1ldGhvZDogRXh0cmFjdEZ1bmN0aW9uPE9iaiwgTWV0aG9kTmFtZT47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRjaGVkIG1ldGhvZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoZWRNZXRob2Q6IEV4dHJhY3RGdW5jdGlvbjxPYmosIE1ldGhvZE5hbWU+O1xufVxuXG50eXBlIEV4dHJhY3RGdW5jdGlvbjxPYmogZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPE9iaj4+ID0gR2VuZXJpY0Z1bmN0aW9uPFBhcmFtZXRlcnM8RXh0cmFjdDxPYmpbTWV0aG9kTmFtZV0sIEdlbmVyaWNGdW5jdGlvbj4+LCBSZXR1cm5UeXBlPEV4dHJhY3Q8T2JqW01ldGhvZE5hbWVdLCBHZW5lcmljRnVuY3Rpb24+Pj47XG5cbnR5cGUgRnVsbEZhY3RvcmllczxPYmogZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBbS2V5IGluIGtleW9mIE9ial06IChvcmlnaW5hbFZhbHVlOiBPYmpbS2V5XSkgPT4gT2JqW0tleV07XG59O1xuXG50eXBlIE1ldGhvZEtleXNNYXA8T2JqIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgW0tleSBpbiBGdW5jdGlvbktleXM8T2JqPl06IFtFeGNsdWRlPGtleW9mIE5vbk51bGxhYmxlPE9ialtLZXldPiwga2V5b2YgR2VuZXJpY0Z1bmN0aW9uPl0gZXh0ZW5kcyBbbmV2ZXJdID8gS2V5IDogbmV2ZXI7XG59O1xuXG50eXBlIE9yaWdpbmFsRmFjdG9yaWVzPE9iaiBleHRlbmRzIEdlbmVyaWNPYmplY3Q+ID0gUGFyYW1ldGVyczx0eXBlb2Ygb3JpZ2luYWxBcm91bmQ8T2JqPj5bMV07XG5cbnR5cGUgVW5pbnN0YWxsZXIgPSAoKSA9PiB2b2lkO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgbWFuYWdlcyBtb25rZXktcGF0Y2hlcyB3aXRoIGxpZmVjeWNsZS1ib3VuZCBjbGVhbnVwLlxuICogQWxsIHBhdGNoZXMgcmVnaXN0ZXJlZCB2aWEgdGhpcyBjb21wb25lbnQgYXJlIGF1dG9tYXRpY2FsbHkgdW5pbnN0YWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IHVubG9hZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25rZXlBcm91bmRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBwYXRjaCBmb3IgYSBzaW5nbGUgZnVuY3Rpb24tbGlrZSBtZW1iZXIgKGEgbWV0aG9kLCBvciBhIGNhbGxhYmxlIHN1Y2ggYXMgYSBgRGVib3VuY2VyYCkgdXNpbmcgYSBzaW1wbGlmaWVkIGhhbmRsZXIuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICogQHR5cGVQYXJhbSBGdW5jdGlvbk5hbWUgLSBUaGUgZnVuY3Rpb24gbmFtZSB0byBwYXRjaC5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBwYXRjaC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlckZ1bmN0aW9uUGF0Y2g8T2JqIGV4dGVuZHMgb2JqZWN0LCBjb25zdCBGdW5jdGlvbk5hbWUgZXh0ZW5kcyBGdW5jdGlvbktleXM8T2JqPj4oXG4gICAgcGFyYW1zOiBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3RlckZ1bmN0aW9uUGF0Y2hQYXJhbXM8T2JqLCBGdW5jdGlvbk5hbWU+XG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICBjb25zdCBmYWN0b3JpZXM6IEZhY3RvcmllczxPYmo+ID0ge307XG4gICAgZmFjdG9yaWVzW3BhcmFtcy5mdW5jdGlvbk5hbWVdID0gKG9yaWdpbmFsVmFsdWU6IE9ialtGdW5jdGlvbk5hbWVdKTogT2JqW0Z1bmN0aW9uTmFtZV0gPT4ge1xuICAgICAgY29uc3QgcGF0Y2hlZFZhbHVlID0gcGFyYW1zLnBhdGNoSGFuZGxlcihvcmlnaW5hbFZhbHVlKTtcbiAgICAgIGlmICghcGFyYW1zLm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoZWRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQSBgb25jZWAgcGF0Y2ggdW5sb2FkcyB0aGlzIGNvbXBvbmVudCBhZnRlciB0aGUgZmlyc3QgaW52b2NhdGlvbiBcdTIwMTQgcnVubmluZyB0aGUgcmVnaXN0ZXJlZFxuICAgICAgLy8gVW5pbnN0YWxsZXIgYW5kIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwuIGB1bmxvYWRDb21wb25lbnRgIGlzIGFuIGFycm93IHNvIGl0IGNhcHR1cmVzIHRoZVxuICAgICAgLy8gQ29tcG9uZW50IGB0aGlzYDsgdGhlIG5lc3RlZCBgb25jZVBhdGNoZWRWYWx1ZWAgbXVzdCBiZSBhIGZ1bmN0aW9uIHRvIHJlY2VpdmUgdGhlIGNhbGwtdGltZVxuICAgICAgLy8gYHRoaXNgLiBPd24gbWVtYmVycyAoZS5nLiBhIGBEZWJvdW5jZXJgJ3MgYGNhbmNlbGAvYHJ1bmApIGFyZSBjb3BpZWQgb250byBpdCBzbyBmdW5jdGlvbi1saWtlXG4gICAgICAvLyBWYWx1ZXMga2VlcCB3b3JraW5nLlxuICAgICAgY29uc3QgdW5sb2FkQ29tcG9uZW50ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnVubG9hZCgpO1xuICAgICAgfTtcbiAgICAgIGZ1bmN0aW9uIG9uY2VQYXRjaGVkVmFsdWUodGhpczogdW5rbm93biwgLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkocGF0Y2hlZFZhbHVlLCB0aGlzLCBhcmdzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB1bmxvYWRDb21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ob25jZVBhdGNoZWRWYWx1ZSwgcGF0Y2hlZFZhbHVlKSBhcyBPYmpbRnVuY3Rpb25OYW1lXTtcbiAgICB9O1xuXG4gICAgdGhpcy5yZWdpc3RlclBhdGNoKHBhcmFtcy5vYmosIGZhY3Rvcmllcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgc2luZ2xlLW1ldGhvZCBwYXRjaCB1c2luZyBhIHNpbXBsaWZpZWQgaGFuZGxlci5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBPYmogLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgdG8gcGF0Y2guXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBvZiB0aGUgcGF0Y2guXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJNZXRob2RQYXRjaDxPYmogZXh0ZW5kcyBvYmplY3QsIGNvbnN0IE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPE9iaj4+KFxuICAgIHBhcmFtczogTW9ua2V5QXJvdW5kQ29tcG9uZW50UmVnaXN0ZXJNZXRob2RQYXRjaFBhcmFtczxPYmosIE1ldGhvZE5hbWU+XG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICBpZiAocGFyYW1zLnBhdGNoVG9rZW4pIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gcGFyYW1zLm9ialtwYXJhbXMubWV0aG9kTmFtZV0gYXMgR2VuZXJpY0Z1bmN0aW9uO1xuICAgICAgZ2V0TW9ua2V5QXJvdW5kUGF0Y2hlcygpLnNldChvcmlnaW5hbE1ldGhvZCwgcGFyYW1zLnBhdGNoVG9rZW4pO1xuICAgIH1cblxuICAgIHR5cGUgRm4gPSBFeHRyYWN0RnVuY3Rpb248T2JqLCBNZXRob2ROYW1lPjtcblxuICAgIHRoaXMucmVnaXN0ZXJGdW5jdGlvblBhdGNoKHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogcGFyYW1zLm1ldGhvZE5hbWUsXG4gICAgICBvYmo6IHBhcmFtcy5vYmosXG4gICAgICBvbmNlOiBwYXJhbXMub25jZSA/PyBmYWxzZSxcbiAgICAgIHBhdGNoSGFuZGxlcjogKG9yaWdpbmFsTWV0aG9kUmF3KSA9PiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gb3JpZ2luYWxNZXRob2RSYXcgYXMgRm47XG4gICAgICAgIGNvbnN0IGZpbmFsUGF0Y2hlZE1ldGhvZCA9IHBhcmFtcy5wb3N0UGF0Y2hIYW5kbGVyPy4oe1xuICAgICAgICAgIG9yaWdpbmFsTWV0aG9kLFxuICAgICAgICAgIHBhdGNoZWRNZXRob2RcbiAgICAgICAgfSkgPz8gcGF0Y2hlZE1ldGhvZDtcbiAgICAgICAgcmV0dXJuIGZpbmFsUGF0Y2hlZE1ldGhvZCBhcyBPYmpbTWV0aG9kTmFtZV07XG5cbiAgICAgICAgZnVuY3Rpb24gcGF0Y2hlZE1ldGhvZCh0aGlzOiBPYmosIC4uLm9yaWdpbmFsQXJnczogUGFyYW1ldGVyczxGbj4pOiBSZXR1cm5UeXBlPEZuPiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtdGhpcywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGB0aGlzYCBjb250ZXh0LlxuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGhpcyA9IHRoaXM7XG4gICAgICAgICAgcmV0dXJuIHBhcmFtcy5wYXRjaEhhbmRsZXIoe1xuICAgICAgICAgICAgZmFsbGJhY2soKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5jYWxsKG9yaWdpbmFsVGhpcywgLi4ub3JpZ2luYWxBcmdzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcmlnaW5hbEFyZ3MsXG4gICAgICAgICAgICBvcmlnaW5hbE1ldGhvZCxcbiAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kQm91bmQ6IG9yaWdpbmFsTWV0aG9kLmJpbmQob3JpZ2luYWxUaGlzKSxcbiAgICAgICAgICAgIG9yaWdpbmFsVGhpc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgcGF0Y2ggdXNpbmcgcmF3IGZhY3RvcmllcyAoYWR2YW5jZWQgQVBJKS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBPYmogLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICogQHBhcmFtIGZhY3RvcmllcyAtIFRoZSBmYWN0b3JpZXMgdG8gYXBwbHkgdG8gdGhlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclBhdGNoPE9iaiBleHRlbmRzIG9iamVjdD4ob2JqOiBPYmosIGZhY3RvcmllczogRmFjdG9yaWVzPE9iaj4pOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUxvYWRlZCgpO1xuXG4gICAgY29uc3QgdW5pbnN0YWxsZXIgPSBhcm91bmQob2JqLCBmYWN0b3JpZXMpO1xuICAgIHRoaXMucmVnaXN0ZXIodW5pbnN0YWxsZXIpO1xuICB9XG59XG5cbi8qKlxuICogQXBwbGllcyBhIHBhdGNoIHRvIHRoZSBvYmplY3QuXG4gKiBCZXR0ZXIgc3Ryb25nbHktdHlwZWQgdmVyc2lvbiBvZiBgbW9ua2V5LWFyb3VuZGAuXG4gKlxuICogQHR5cGVQYXJhbSBPYmogLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAcGFyYW0gZmFjdG9yaWVzIC0gVGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIHVuaW5zdGFsbGVyIHRoYXQgcmVtb3ZlcyB0aGUgcGF0Y2ggd2hlbiBjYWxsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcm91bmQ8T2JqIGV4dGVuZHMgb2JqZWN0PihvYmo6IE9iaiwgZmFjdG9yaWVzOiBGYWN0b3JpZXM8T2JqPik6IFVuaW5zdGFsbGVyIHtcbiAgcmV0dXJuIG9yaWdpbmFsQXJvdW5kKG9iaiBhcyBHZW5lcmljT2JqZWN0LCBmYWN0b3JpZXMgYXMgT3JpZ2luYWxGYWN0b3JpZXM8R2VuZXJpY09iamVjdD4pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZ1bmN0aW9uIGhhcyBhIHNwZWNpZmljIHBhdGNoIHRva2VuLlxuICpcbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEBwYXJhbSBwYXRjaFRva2VuIC0gVGhlIHBhdGNoIHRva2VuIHRvIGNoZWNrIGZvci5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZ1bmN0aW9uIGhhcyB0aGUgcGF0Y2ggdG9rZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQYXRjaFRva2VuKGZuOiBHZW5lcmljRnVuY3Rpb24sIHBhdGNoVG9rZW46IHN5bWJvbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0TW9ua2V5QXJvdW5kUGF0Y2hlcygpLmdldChmbikgPT09IHBhdGNoVG9rZW47XG59XG5cbmZ1bmN0aW9uIGdldE1vbmtleUFyb3VuZFBhdGNoZXMoKTogV2Vha01hcDxHZW5lcmljRnVuY3Rpb24sIHN5bWJvbD4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlKCdtb25rZXlBcm91bmRQYXRjaGVzJywgbmV3IFdlYWtNYXA8R2VuZXJpY0Z1bmN0aW9uLCBzeW1ib2w+KCkpLnZhbHVlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxTQUFTLFVBQVUsc0JBQXNCO0FBTXpDLFNBQVMsZ0NBQWdDO0FBQ3pDLFNBQVMsbUJBQW1CO0FBK0xyQixNQUFNLDhCQUE4QixZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVE5QyxzQkFDTCxRQUNNO0FBQ04sU0FBSyxhQUFhO0FBRWxCLFVBQU0sWUFBNEIsQ0FBQztBQUNuQyxjQUFVLE9BQU8sWUFBWSxJQUFJLENBQUMsa0JBQXdEO0FBQ3hGLFlBQU0sZUFBZSxPQUFPLGFBQWEsYUFBYTtBQUN0RCxVQUFJLENBQUMsT0FBTyxNQUFNO0FBQ2hCLGVBQU87QUFBQSxNQUNUO0FBT0EsWUFBTSxrQkFBa0IsTUFBWTtBQUNsQyxhQUFLLE9BQU87QUFBQSxNQUNkO0FBQ0EsZUFBUyxvQkFBbUMsTUFBMEI7QUFDcEUsWUFBSTtBQUNGLGlCQUFPLFFBQVEsTUFBTSxjQUFjLE1BQU0sSUFBSTtBQUFBLFFBQy9DLFVBQUU7QUFDQSwwQkFBZ0I7QUFBQSxRQUNsQjtBQUFBLE1BQ0Y7QUFDQSxhQUFPLE9BQU8sT0FBTyxrQkFBa0IsWUFBWTtBQUFBLElBQ3JEO0FBRUEsU0FBSyxjQUFjLE9BQU8sS0FBSyxTQUFTO0FBQUEsRUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sb0JBQ0wsUUFDTTtBQUNOLFNBQUssYUFBYTtBQUVsQixRQUFJLE9BQU8sWUFBWTtBQUNyQixZQUFNLGlCQUFpQixPQUFPLElBQUksT0FBTyxVQUFVO0FBQ25ELDZCQUF1QixFQUFFLElBQUksZ0JBQWdCLE9BQU8sVUFBVTtBQUFBLElBQ2hFO0FBSUEsU0FBSyxzQkFBc0I7QUFBQSxNQUN6QixjQUFjLE9BQU87QUFBQSxNQUNyQixLQUFLLE9BQU87QUFBQSxNQUNaLE1BQU0sT0FBTyxRQUFRO0FBQUEsTUFDckIsY0FBYyxDQUFDLHNCQUFzQjtBQUNuQyxjQUFNLGlCQUFpQjtBQUN2QixjQUFNLHFCQUFxQixPQUFPLG1CQUFtQjtBQUFBLFVBQ25EO0FBQUEsVUFDQTtBQUFBLFFBQ0YsQ0FBQyxLQUFLO0FBQ04sZUFBTztBQUVQLGlCQUFTLGlCQUE0QixjQUE4QztBQUVqRixnQkFBTSxlQUFlO0FBQ3JCLGlCQUFPLE9BQU8sYUFBYTtBQUFBLFlBQ3pCLFdBQVc7QUFDVCxxQkFBTyxlQUFlLEtBQUssY0FBYyxHQUFHLFlBQVk7QUFBQSxZQUMxRDtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsWUFDQSxxQkFBcUIsZUFBZSxLQUFLLFlBQVk7QUFBQSxZQUNyRDtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTTyxjQUFrQyxLQUFVLFdBQWlDO0FBQ2xGLFNBQUssYUFBYTtBQUVsQixVQUFNLGNBQWMsT0FBTyxLQUFLLFNBQVM7QUFDekMsU0FBSyxTQUFTLFdBQVc7QUFBQSxFQUMzQjtBQUNGO0FBV08sU0FBUyxPQUEyQixLQUFVLFdBQXdDO0FBQzNGLFNBQU8sZUFBZSxLQUFzQixTQUE2QztBQUMzRjtBQVNPLFNBQVMsY0FBYyxJQUFxQixZQUE2QjtBQUM5RSxTQUFPLHVCQUF1QixFQUFFLElBQUksRUFBRSxNQUFNO0FBQzlDO0FBRUEsU0FBUyx5QkFBMkQ7QUFDbEUsU0FBTyx5QkFBeUIsdUJBQXVCLG9CQUFJLFFBQWlDLENBQUMsRUFBRTtBQUNqRzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvbW9ua2V5LWFyb3VuZC1jb21wb25lbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBJbXByb3ZlZCB0eXBlLXNhZmUgd3JhcHBlciBvZiB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbW9ua2V5LWFyb3VuZH0gbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbmFsS2V5cyB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGFyb3VuZCBhcyBvcmlnaW5hbEFyb3VuZCB9IGZyb20gJ21vbmtleS1hcm91bmQnO1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICcuLi8uLi90eXBlLnRzJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuXG4vKipcbiAqIEEgdHlwZSBvZiB0aGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IHR5cGUgRmFjdG9yaWVzPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+ID0gUGFydGlhbDxGdWxsRmFjdG9yaWVzPCRPYmplY3Q+PjtcblxuLyoqXG4gKiBLZXlzIG9mIGBPYmpgIHdob3NlIHZhbHVlIGlzIGNhbGxhYmxlIFx1MjAxNCBhIG1ldGhvZCwgb3IgYSBmdW5jdGlvbi1saWtlIG9iamVjdCBzdWNoIGFzIGEgYERlYm91bmNlcmAuIFRoZXNlIGFyZSB0aGUgbWVtYmVyc1xuICogYWNjZXB0ZWQgYnkge0BsaW5rIE1vbmtleUFyb3VuZENvbXBvbmVudCNyZWdpc3RlckZ1bmN0aW9uUGF0Y2h9LlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3Qgd2hvc2Uga2V5cyBhcmUgZmlsdGVyZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uS2V5czwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IENvbmRpdGlvbmFsS2V5czwkT2JqZWN0LCBHZW5lcmljRnVuY3Rpb24gfCB1bmRlZmluZWQ+ICYga2V5b2YgJE9iamVjdDtcblxuLyoqXG4gKiBLZXlzIG9mIGBPYmpgIHdob3NlIHZhbHVlIGlzIGEgcGxhaW4gZnVuY3Rpb24gKGEgXCJyZWFsIG1ldGhvZFwiKS4gRnVuY3Rpb24tbGlrZSBvYmplY3RzIHRoYXQgY2FycnkgZXh0cmEgbWVtYmVycyBhcmVcbiAqIGV4Y2x1ZGVkIFx1MjAxNCBlLmcuIGEgYERlYm91bmNlcmAgKHdoaWNoIGFkZHMgYGNhbmNlbGAvYHJ1bmApIGJlbG9uZ3MgdG8ge0BsaW5rIE1vbmtleUFyb3VuZENvbXBvbmVudCNyZWdpc3RlckZ1bmN0aW9uUGF0Y2h9LFxuICogbm90IHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJNZXRob2RQYXRjaH0uIFRoZSBjaGVjayBpcyB3aGV0aGVyIHRoZSBtZW1iZXIgaGFzIGFueSBvd24ga2V5cyBiZXlvbmQgYSBiYXJlXG4gKiBmdW5jdGlvbidzIChgRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBHZW5lcmljRnVuY3Rpb24+YCBpcyBgbmV2ZXJgKS5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHdob3NlIGtleXMgYXJlIGZpbHRlcmVkLlxuICovXG5leHBvcnQgdHlwZSBNZXRob2RLZXlzPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+ID0gTWV0aG9kS2V5c01hcDwkT2JqZWN0PltGdW5jdGlvbktleXM8JE9iamVjdD5dO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJGdW5jdGlvblBhdGNofS5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHR5cGVQYXJhbSBGdW5jdGlvbk5hbWUgLSBUaGUgZnVuY3Rpb24gbmFtZSB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3RlckZ1bmN0aW9uUGF0Y2hQYXJhbXM8JE9iamVjdCBleHRlbmRzIG9iamVjdCwgRnVuY3Rpb25OYW1lIGV4dGVuZHMgRnVuY3Rpb25LZXlzPCRPYmplY3Q+PiB7XG4gIC8qKlxuICAgKiBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgJG9iamVjdDogJE9iamVjdDtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG5hbWUgdG8gcGF0Y2guXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbk5hbWU6IEZ1bmN0aW9uTmFtZTtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBwYXRjaCB1bmluc3RhbGxzIGl0c2VsZiB0aGUgZmlyc3QgdGltZSB0aGUgcGF0Y2hlZCBmdW5jdGlvbiBpcyBpbnZva2VkIChieVxuICAgKiB1bmxvYWRpbmcgdGhpcyBjb21wb25lbnQpLCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsIFx1MjAxNCBzbyB0aGUgaW50ZXJjZXB0aW9uIGhhcHBlbnMgZXhhY3RseSBvbmNlLlxuICAgKiBJbnRlbmRlZCBmb3IgYSBjb21wb25lbnQgZGVkaWNhdGVkIHRvIHRoaXMgc2luZ2xlIHBhdGNoLiBFeGlzdGluZyBjYWxsZXJzIHRoYXQgb21pdCBpdCBhcmVcbiAgICogdW5hZmZlY3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgb25jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb3JpZ2luYWwgdmFsdWUgYW5kIHJldHVybnMgdGhlIHBhdGNoZWQgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBvcmlnaW5hbFZhbHVlIC0gVGhlIG9yaWdpbmFsIHZhbHVlIG9mIHRoZSBmdW5jdGlvbi5cbiAgICogQHJldHVybnMgVGhlIHBhdGNoZWQgdmFsdWUgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcGF0Y2hIYW5kbGVyKG9yaWdpbmFsVmFsdWU6ICRPYmplY3RbRnVuY3Rpb25OYW1lXSk6ICRPYmplY3RbRnVuY3Rpb25OYW1lXTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHBhc3NlZCB0byB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyTWV0aG9kUGF0Y2h9LlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgdG8gcGF0Y2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9ua2V5QXJvdW5kQ29tcG9uZW50UmVnaXN0ZXJNZXRob2RQYXRjaFBhcmFtczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5ICRvYmplY3Q6ICRPYmplY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRob2QgbmFtZSB0byBwYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IG1ldGhvZE5hbWU6IE1ldGhvZE5hbWU7XG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB0aGUgcGF0Y2ggdW5pbnN0YWxscyBpdHNlbGYgdGhlIGZpcnN0IHRpbWUgdGhlIHBhdGNoZWQgbWV0aG9kIGlzIGludm9rZWQsIHJlc3RvcmluZ1xuICAgKiB0aGUgb3JpZ2luYWwgXHUyMDE0IHNvIHRoZSBpbnRlcmNlcHRpb24gaGFwcGVucyBleGFjdGx5IG9uY2UuIEV4aXN0aW5nIGNhbGxlcnMgdGhhdCBvbWl0IGl0IGFyZVxuICAgKiB1bmFmZmVjdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBvbmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGNoIGhhbmRsZXIgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBwYXRjaEhhbmRsZXI6IFBhdGNoSGFuZGxlckZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+O1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCB0b2tlbiB0byBpZGVudGlmeSB0aGUgcGF0Y2guXG4gICAqL1xuICByZWFkb25seSBwYXRjaFRva2VuPzogc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwb3N0LXBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBydW5zIGFmdGVyIHRoZSBwYXRjaCBpcyBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9zdFBhdGNoSGFuZGxlcj86IFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcbn1cblxuLyoqXG4gKiBBIHBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpbnRlcmNlcHRzIGNhbGxzIHRvIGEgbWV0aG9kIG9uIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IGJlaW5nIHBhdGNoZWQuXG4gKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgYmVpbmcgcGF0Y2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0Y2hIYW5kbGVyRnVuY3Rpb248JE9iamVjdCBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+ID0gKFxuICBwYXJhbXM6IFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0LCBNZXRob2ROYW1lPlxuKSA9PiBSZXR1cm5UeXBlPEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSB7QGxpbmsgUGF0Y2hIYW5kbGVyRnVuY3Rpb259IGNhbGxiYWNrLlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgYmVpbmcgcGF0Y2hlZC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSBiZWluZyBwYXRjaGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4ge1xuICBmYWxsYmFjayh0aGlzOiB2b2lkKTogUmV0dXJuVHlwZTxFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYXJndW1lbnRzIG9mIHRoZSBpbnRlcmNlcHRlZCBjYWxsLCBhcyBhIHR1cGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxBcmd1bWVudHM6IFBhcmFtZXRlcnM8RXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+PjtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsICh1bnBhdGNoZWQpIG1ldGhvZC4gQ2FsbCB2aWEgYG9yaWdpbmFsRm4uY2FsbChvcmlnaW5hbFRoaXMsIC4uLm9yaWdpbmFsQXJncylgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxNZXRob2Q6IEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIG1ldGhvZCwgYnV0IHdpdGggdGhlIGB0aGlzYCBjb250ZXh0IGFscmVhZHkgYm91bmQgdG8gdGhlIG9yaWdpbmFsIG9iamVjdC4gQ2FsbCB2aWEgYG9yaWdpbmFsTWV0aG9kQm91bmQoLi4ub3JpZ2luYWxBcmdzKWAuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbE1ldGhvZEJvdW5kOiBPbWl0VGhpc1BhcmFtZXRlcjxFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYHRoaXNgIGNvbnRleHQgb2YgdGhlIGludGVyY2VwdGVkIGNhbGwuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbFRoaXM6ICRPYmplY3Q7XG59XG5cbi8qKlxuICogQSBwb3N0LXBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBydW5zIGFmdGVyIGEgcGF0Y2ggaXMgYXBwbGllZC5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IGJlaW5nIHBhdGNoZWQuXG4gKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgYmVpbmcgcGF0Y2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUG9zdFBhdGNoSGFuZGxlckZ1bmN0aW9uPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PiA9IChcbiAgcGFyYW1zOiBQb3N0UGF0Y2hIYW5kbGVyUGFyYW1zPCRPYmplY3QsIE1ldGhvZE5hbWU+XG4pID0+IE1heWJlUmV0dXJuPEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSB7QGxpbmsgUG9zdFBhdGNoSGFuZGxlckZ1bmN0aW9ufSBjYWxsYmFjay5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IGJlaW5nIHBhdGNoZWQuXG4gKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgYmVpbmcgcGF0Y2hlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3N0UGF0Y2hIYW5kbGVyUGFyYW1zPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PiB7XG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgKHVucGF0Y2hlZCkgbWV0aG9kLiBDYWxsIHZpYSBgb3JpZ2luYWxGbi5jYWxsKG9yaWdpbmFsVGhpcywgLi4ub3JpZ2luYWxBcmdzKWAuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbE1ldGhvZDogRXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0Y2hlZCBtZXRob2QuXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVkTWV0aG9kOiBFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT47XG59XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PiA9IEdlbmVyaWNGdW5jdGlvbjxQYXJhbWV0ZXJzPEV4dHJhY3Q8JE9iamVjdFtNZXRob2ROYW1lXSwgR2VuZXJpY0Z1bmN0aW9uPj4sIFJldHVyblR5cGU8RXh0cmFjdDwkT2JqZWN0W01ldGhvZE5hbWVdLCBHZW5lcmljRnVuY3Rpb24+Pj47XG5cbnR5cGUgRnVsbEZhY3RvcmllczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgW0tleSBpbiBrZXlvZiAkT2JqZWN0XTogKG9yaWdpbmFsVmFsdWU6ICRPYmplY3RbS2V5XSkgPT4gJE9iamVjdFtLZXldO1xufTtcblxudHlwZSBNZXRob2RLZXlzTWFwPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBbS2V5IGluIEZ1bmN0aW9uS2V5czwkT2JqZWN0Pl06IFtFeGNsdWRlPGtleW9mIE5vbk51bGxhYmxlPCRPYmplY3RbS2V5XT4sIGtleW9mIEdlbmVyaWNGdW5jdGlvbj5dIGV4dGVuZHMgW25ldmVyXSA/IEtleSA6IG5ldmVyO1xufTtcblxudHlwZSBPcmlnaW5hbEZhY3RvcmllczwkT2JqZWN0IGV4dGVuZHMgR2VuZXJpY09iamVjdD4gPSBQYXJhbWV0ZXJzPHR5cGVvZiBvcmlnaW5hbEFyb3VuZDwkT2JqZWN0Pj5bMV07XG5cbnR5cGUgVW5pbnN0YWxsZXIgPSAoKSA9PiB2b2lkO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgbWFuYWdlcyBtb25rZXktcGF0Y2hlcyB3aXRoIGxpZmVjeWNsZS1ib3VuZCBjbGVhbnVwLlxuICogQWxsIHBhdGNoZXMgcmVnaXN0ZXJlZCB2aWEgdGhpcyBjb21wb25lbnQgYXJlIGF1dG9tYXRpY2FsbHkgdW5pbnN0YWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IHVubG9hZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25rZXlBcm91bmRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBwYXRjaCBmb3IgYSBzaW5nbGUgZnVuY3Rpb24tbGlrZSBtZW1iZXIgKGEgbWV0aG9kLCBvciBhIGNhbGxhYmxlIHN1Y2ggYXMgYSBgRGVib3VuY2VyYCkgdXNpbmcgYSBzaW1wbGlmaWVkIGhhbmRsZXIuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gICAqIEB0eXBlUGFyYW0gRnVuY3Rpb25OYW1lIC0gVGhlIGZ1bmN0aW9uIG5hbWUgdG8gcGF0Y2guXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBvZiB0aGUgcGF0Y2guXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJGdW5jdGlvblBhdGNoPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIGNvbnN0IEZ1bmN0aW9uTmFtZSBleHRlbmRzIEZ1bmN0aW9uS2V5czwkT2JqZWN0Pj4oXG4gICAgcGFyYW1zOiBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3RlckZ1bmN0aW9uUGF0Y2hQYXJhbXM8JE9iamVjdCwgRnVuY3Rpb25OYW1lPlxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUxvYWRlZCgpO1xuXG4gICAgY29uc3QgZmFjdG9yaWVzOiBGYWN0b3JpZXM8JE9iamVjdD4gPSB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby1pbW1lZGlhdGUtbXV0YXRpb24gLS0gQSBjb21wdXRlZCBrZXkgaW4gYW4gb2JqZWN0IGxpdGVyYWwgZG9lcyBub3QgbWF0Y2ggYFBhcnRpYWw8RnVsbEZhY3RvcmllczwkT2JqZWN0Pj5gIHdoZW4gdGhlIGtleSB0eXBlIGlzIGdlbmVyaWM7IGFzc2lnbmluZyBhZnRlciBkZWNsYXJhdGlvbiBrZWVwcyB0aGUgdGFyZ2V0IHR5cGUga25vd24uXG4gICAgZmFjdG9yaWVzW3BhcmFtcy5mdW5jdGlvbk5hbWVdID0gKG9yaWdpbmFsVmFsdWU6ICRPYmplY3RbRnVuY3Rpb25OYW1lXSk6ICRPYmplY3RbRnVuY3Rpb25OYW1lXSA9PiB7XG4gICAgICBjb25zdCBwYXRjaGVkVmFsdWUgPSBwYXJhbXMucGF0Y2hIYW5kbGVyKG9yaWdpbmFsVmFsdWUpO1xuICAgICAgaWYgKCFwYXJhbXMub25jZSkge1xuICAgICAgICByZXR1cm4gcGF0Y2hlZFZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBIGBvbmNlYCBwYXRjaCB1bmxvYWRzIHRoaXMgY29tcG9uZW50IGFmdGVyIHRoZSBmaXJzdCBpbnZvY2F0aW9uIFx1MjAxNCBydW5uaW5nIHRoZSByZWdpc3RlcmVkXG4gICAgICAvLyBVbmluc3RhbGxlciBhbmQgcmVzdG9yaW5nIHRoZSBvcmlnaW5hbC4gYHVubG9hZENvbXBvbmVudGAgaXMgYW4gYXJyb3cgc28gaXQgY2FwdHVyZXMgdGhlXG4gICAgICAvLyBDb21wb25lbnQgYHRoaXNgOyB0aGUgbmVzdGVkIGBvbmNlUGF0Y2hlZFZhbHVlYCBtdXN0IGJlIGEgZnVuY3Rpb24gdG8gcmVjZWl2ZSB0aGUgY2FsbC10aW1lXG4gICAgICAvLyBgdGhpc2AuIE93biBtZW1iZXJzIChlLmcuIGEgYERlYm91bmNlcmAncyBgY2FuY2VsYC9gcnVuYCkgYXJlIGNvcGllZCBvbnRvIGl0IHNvIGZ1bmN0aW9uLWxpa2VcbiAgICAgIC8vIFZhbHVlcyBrZWVwIHdvcmtpbmcuXG4gICAgICBjb25zdCB1bmxvYWRDb21wb25lbnQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMudW5sb2FkKCk7XG4gICAgICB9O1xuICAgICAgZnVuY3Rpb24gb25jZVBhdGNoZWRWYWx1ZSh0aGlzOiB1bmtub3duLCAuLi4kYXJndW1lbnRzOiB1bmtub3duW10pOiB1bmtub3duIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShwYXRjaGVkVmFsdWUsIHRoaXMsICRhcmd1bWVudHMpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHVubG9hZENvbXBvbmVudCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihvbmNlUGF0Y2hlZFZhbHVlLCBwYXRjaGVkVmFsdWUpIGFzICRPYmplY3RbRnVuY3Rpb25OYW1lXTtcbiAgICB9O1xuXG4gICAgdGhpcy5yZWdpc3RlclBhdGNoKHBhcmFtcy4kb2JqZWN0LCBmYWN0b3JpZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHNpbmdsZS1tZXRob2QgcGF0Y2ggdXNpbmcgYSBzaW1wbGlmaWVkIGhhbmRsZXIuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gICAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSB0byBwYXRjaC5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBwYXRjaC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck1ldGhvZFBhdGNoPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIGNvbnN0IE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PihcbiAgICBwYXJhbXM6IE1vbmtleUFyb3VuZENvbXBvbmVudFJlZ2lzdGVyTWV0aG9kUGF0Y2hQYXJhbXM8JE9iamVjdCwgTWV0aG9kTmFtZT5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcblxuICAgIGlmIChwYXJhbXMucGF0Y2hUb2tlbikge1xuICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBwYXJhbXMuJG9iamVjdFtwYXJhbXMubWV0aG9kTmFtZV0gYXMgR2VuZXJpY0Z1bmN0aW9uO1xuICAgICAgZ2V0TW9ua2V5QXJvdW5kUGF0Y2hlcygpLnNldChvcmlnaW5hbE1ldGhvZCwgcGFyYW1zLnBhdGNoVG9rZW4pO1xuICAgIH1cblxuICAgIHR5cGUgJEZ1bmN0aW9uID0gRXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+O1xuXG4gICAgdGhpcy5yZWdpc3RlckZ1bmN0aW9uUGF0Y2goe1xuICAgICAgJG9iamVjdDogcGFyYW1zLiRvYmplY3QsXG4gICAgICBmdW5jdGlvbk5hbWU6IHBhcmFtcy5tZXRob2ROYW1lLFxuICAgICAgb25jZTogcGFyYW1zLm9uY2UgPz8gZmFsc2UsXG4gICAgICBwYXRjaEhhbmRsZXI6IChvcmlnaW5hbE1ldGhvZFJhdykgPT4ge1xuICAgICAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IG9yaWdpbmFsTWV0aG9kUmF3IGFzICRGdW5jdGlvbjtcbiAgICAgICAgY29uc3QgZmluYWxQYXRjaGVkTWV0aG9kID0gcGFyYW1zLnBvc3RQYXRjaEhhbmRsZXI/Lih7XG4gICAgICAgICAgb3JpZ2luYWxNZXRob2QsXG4gICAgICAgICAgcGF0Y2hlZE1ldGhvZFxuICAgICAgICB9KSA/PyBwYXRjaGVkTWV0aG9kO1xuICAgICAgICByZXR1cm4gZmluYWxQYXRjaGVkTWV0aG9kIGFzICRPYmplY3RbTWV0aG9kTmFtZV07XG5cbiAgICAgICAgZnVuY3Rpb24gcGF0Y2hlZE1ldGhvZCh0aGlzOiAkT2JqZWN0LCAuLi5vcmlnaW5hbEFyZ3VtZW50czogUGFyYW1ldGVyczwkRnVuY3Rpb24+KTogUmV0dXJuVHlwZTwkRnVuY3Rpb24+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC10aGlzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhcywgdW5pY29ybi9uby10aGlzLWFzc2lnbm1lbnQgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGB0aGlzYCBjb250ZXh0LlxuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGhpcyA9IHRoaXM7XG4gICAgICAgICAgcmV0dXJuIHBhcmFtcy5wYXRjaEhhbmRsZXIoe1xuICAgICAgICAgICAgZmFsbGJhY2soKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5jYWxsKG9yaWdpbmFsVGhpcywgLi4ub3JpZ2luYWxBcmd1bWVudHMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9yaWdpbmFsQXJndW1lbnRzLFxuICAgICAgICAgICAgb3JpZ2luYWxNZXRob2QsXG4gICAgICAgICAgICBvcmlnaW5hbE1ldGhvZEJvdW5kOiBvcmlnaW5hbE1ldGhvZC5iaW5kKG9yaWdpbmFsVGhpcyksXG4gICAgICAgICAgICBvcmlnaW5hbFRoaXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHBhdGNoIHVzaW5nIHJhdyBmYWN0b3JpZXMgKGFkdmFuY2VkIEFQSSkuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gICAqIEBwYXJhbSAkb2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICogQHBhcmFtIGZhY3RvcmllcyAtIFRoZSBmYWN0b3JpZXMgdG8gYXBwbHkgdG8gdGhlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclBhdGNoPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+KCRvYmplY3Q6ICRPYmplY3QsIGZhY3RvcmllczogRmFjdG9yaWVzPCRPYmplY3Q+KTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcblxuICAgIGNvbnN0IHVuaW5zdGFsbGVyID0gYXJvdW5kKCRvYmplY3QsIGZhY3Rvcmllcyk7XG4gICAgdGhpcy5yZWdpc3Rlcih1bmluc3RhbGxlcik7XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgcGF0Y2ggdG8gdGhlIG9iamVjdC5cbiAqIEJldHRlciBzdHJvbmdseS10eXBlZCB2ZXJzaW9uIG9mIGBtb25rZXktYXJvdW5kYC5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHBhcmFtICRvYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHBhcmFtIGZhY3RvcmllcyAtIFRoZSBmYWN0b3JpZXMgdG8gYXBwbHkgdG8gdGhlIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSB1bmluc3RhbGxlciB0aGF0IHJlbW92ZXMgdGhlIHBhdGNoIHdoZW4gY2FsbGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJvdW5kPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+KCRvYmplY3Q6ICRPYmplY3QsIGZhY3RvcmllczogRmFjdG9yaWVzPCRPYmplY3Q+KTogVW5pbnN0YWxsZXIge1xuICByZXR1cm4gb3JpZ2luYWxBcm91bmQoJG9iamVjdCBhcyBHZW5lcmljT2JqZWN0LCBmYWN0b3JpZXMgYXMgT3JpZ2luYWxGYWN0b3JpZXM8R2VuZXJpY09iamVjdD4pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZ1bmN0aW9uIGhhcyBhIHNwZWNpZmljIHBhdGNoIHRva2VuLlxuICpcbiAqIEBwYXJhbSAkZnVuY3Rpb24gLSBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcGFyYW0gcGF0Y2hUb2tlbiAtIFRoZSBwYXRjaCB0b2tlbiB0byBjaGVjayBmb3IuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmdW5jdGlvbiBoYXMgdGhlIHBhdGNoIHRva2VuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUGF0Y2hUb2tlbigkZnVuY3Rpb246IEdlbmVyaWNGdW5jdGlvbiwgcGF0Y2hUb2tlbjogc3ltYm9sKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRNb25rZXlBcm91bmRQYXRjaGVzKCkuZ2V0KCRmdW5jdGlvbikgPT09IHBhdGNoVG9rZW47XG59XG5cbmZ1bmN0aW9uIGdldE1vbmtleUFyb3VuZFBhdGNoZXMoKTogV2Vha01hcDxHZW5lcmljRnVuY3Rpb24sIHN5bWJvbD4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlKCdtb25rZXlBcm91bmRQYXRjaGVzJywgbmV3IFdlYWtNYXA8R2VuZXJpY0Z1bmN0aW9uLCBzeW1ib2w+KCkpLnZhbHVlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxTQUFTLFVBQVUsc0JBQXNCO0FBTXpDLFNBQVMsZ0NBQWdDO0FBQ3pDLFNBQVMsbUJBQW1CO0FBK0xyQixNQUFNLDhCQUE4QixZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVE5QyxzQkFDTCxRQUNNO0FBQ04sU0FBSyxhQUFhO0FBRWxCLFVBQU0sWUFBZ0MsQ0FBQztBQUV2QyxjQUFVLE9BQU8sWUFBWSxJQUFJLENBQUMsa0JBQWdFO0FBQ2hHLFlBQU0sZUFBZSxPQUFPLGFBQWEsYUFBYTtBQUN0RCxVQUFJLENBQUMsT0FBTyxNQUFNO0FBQ2hCLGVBQU87QUFBQSxNQUNUO0FBT0EsWUFBTSxrQkFBa0IsTUFBWTtBQUNsQyxhQUFLLE9BQU87QUFBQSxNQUNkO0FBQ0EsZUFBUyxvQkFBbUMsWUFBZ0M7QUFDMUUsWUFBSTtBQUNGLGlCQUFPLFFBQVEsTUFBTSxjQUFjLE1BQU0sVUFBVTtBQUFBLFFBQ3JELFVBQUU7QUFDQSwwQkFBZ0I7QUFBQSxRQUNsQjtBQUFBLE1BQ0Y7QUFDQSxhQUFPLE9BQU8sT0FBTyxrQkFBa0IsWUFBWTtBQUFBLElBQ3JEO0FBRUEsU0FBSyxjQUFjLE9BQU8sU0FBUyxTQUFTO0FBQUEsRUFDOUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sb0JBQ0wsUUFDTTtBQUNOLFNBQUssYUFBYTtBQUVsQixRQUFJLE9BQU8sWUFBWTtBQUNyQixZQUFNLGlCQUFpQixPQUFPLFFBQVEsT0FBTyxVQUFVO0FBQ3ZELDZCQUF1QixFQUFFLElBQUksZ0JBQWdCLE9BQU8sVUFBVTtBQUFBLElBQ2hFO0FBSUEsU0FBSyxzQkFBc0I7QUFBQSxNQUN6QixTQUFTLE9BQU87QUFBQSxNQUNoQixjQUFjLE9BQU87QUFBQSxNQUNyQixNQUFNLE9BQU8sUUFBUTtBQUFBLE1BQ3JCLGNBQWMsQ0FBQyxzQkFBc0I7QUFDbkMsY0FBTSxpQkFBaUI7QUFDdkIsY0FBTSxxQkFBcUIsT0FBTyxtQkFBbUI7QUFBQSxVQUNuRDtBQUFBLFVBQ0E7QUFBQSxRQUNGLENBQUMsS0FBSztBQUNOLGVBQU87QUFFUCxpQkFBUyxpQkFBZ0MsbUJBQWlFO0FBRXhHLGdCQUFNLGVBQWU7QUFDckIsaUJBQU8sT0FBTyxhQUFhO0FBQUEsWUFDekIsV0FBVztBQUNULHFCQUFPLGVBQWUsS0FBSyxjQUFjLEdBQUcsaUJBQWlCO0FBQUEsWUFDL0Q7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0EscUJBQXFCLGVBQWUsS0FBSyxZQUFZO0FBQUEsWUFDckQ7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sY0FBc0MsU0FBa0IsV0FBcUM7QUFDbEcsU0FBSyxhQUFhO0FBRWxCLFVBQU0sY0FBYyxPQUFPLFNBQVMsU0FBUztBQUM3QyxTQUFLLFNBQVMsV0FBVztBQUFBLEVBQzNCO0FBQ0Y7QUFXTyxTQUFTLE9BQStCLFNBQWtCLFdBQTRDO0FBQzNHLFNBQU8sZUFBZSxTQUEwQixTQUE2QztBQUMvRjtBQVNPLFNBQVMsY0FBYyxXQUE0QixZQUE2QjtBQUNyRixTQUFPLHVCQUF1QixFQUFFLElBQUksU0FBUyxNQUFNO0FBQ3JEO0FBRUEsU0FBUyx5QkFBMkQ7QUFDbEUsU0FBTyx5QkFBeUIsdUJBQXVCLG9CQUFJLFFBQWlDLENBQUMsRUFBRTtBQUNqRzsiLAogICJuYW1lcyI6IFtdCn0K
|