@mnaoumov/obsidian-lib 10.12.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/worker-component/package.json +6 -0
- package/components/worker-pool-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +409 -292
- package/dist/lib/cjs/__merged.d.cts +17 -8
- package/dist/lib/cjs/anchored-suggest.cjs +1 -1
- package/dist/lib/cjs/app.cjs +2 -2
- package/dist/lib/cjs/async-with-notice.cjs +4 -4
- package/dist/lib/cjs/attachment-path.cjs +9 -9
- package/dist/lib/cjs/attachment-path.d.cts +3 -3
- package/dist/lib/cjs/attachment-unit-folder.cjs +2 -2
- package/dist/lib/cjs/backlink-index.cjs +5 -5
- package/dist/lib/cjs/backlink.cjs +7 -7
- package/dist/lib/cjs/bases-view-registrar.cjs +1 -1
- package/dist/lib/cjs/broken-link-candidates.cjs +1 -1
- package/dist/lib/cjs/bug-report.cjs +3 -3
- package/dist/lib/cjs/bulk-operation-progress.cjs +1 -1
- package/dist/lib/cjs/bulk-operation.cjs +2 -2
- package/dist/lib/cjs/callout.cjs +6 -6
- package/dist/lib/cjs/canvas.cjs +11 -9
- package/dist/lib/cjs/canvas.d.cts +13 -0
- package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -3
- package/dist/lib/cjs/code-block-render-handoff.cjs +5 -5
- package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +4 -4
- package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +2 -2
- package/dist/lib/cjs/codemirror/index.cjs +7 -7
- package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +5 -5
- package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +2 -2
- package/dist/lib/cjs/codemirror/settings-facet.cjs +1 -1
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +17 -17
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +13 -13
- package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -2
- package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +10 -10
- package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +7 -7
- package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -3
- package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -3
- package/dist/lib/cjs/command-handlers/global-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/index.cjs +15 -15
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +6 -6
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +1 -1
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -1
- package/dist/lib/cjs/community-plugins.cjs +3 -3
- package/dist/lib/cjs/components/abort-signal-component.cjs +2 -2
- package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
- package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +3 -3
- package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
- package/dist/lib/cjs/components/async-events-component.cjs +1 -1
- package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +12 -12
- package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +2 -2
- package/dist/lib/cjs/components/component-ex.cjs +21 -11
- package/dist/lib/cjs/components/component-ex.d.cts +11 -0
- package/dist/lib/cjs/components/console-debug-component.cjs +2 -2
- package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -2
- package/dist/lib/cjs/components/disposable-component.cjs +2 -2
- package/dist/lib/cjs/components/embed-extensions-component.cjs +1 -1
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +8 -8
- package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +7 -7
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +2 -2
- package/dist/lib/cjs/components/incremental-file-index-component.cjs +4 -4
- package/dist/lib/cjs/components/index.cjs +46 -40
- package/dist/lib/cjs/components/index.d.cts +2 -0
- package/dist/lib/cjs/components/layout-ready-component.cjs +3 -3
- package/dist/lib/cjs/components/menu-event-registrar-component.cjs +2 -2
- package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
- package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
- package/dist/lib/cjs/components/plugin-gate-component.cjs +68 -28
- package/dist/lib/cjs/components/plugin-gate-component.d.cts +36 -13
- package/dist/lib/cjs/components/plugin-notice-component.cjs +39 -33
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +4 -3
- package/dist/lib/cjs/components/plugin-settings-component.cjs +113 -17
- package/dist/lib/cjs/components/plugin-settings-component.d.cts +35 -5
- package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -2
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +8 -8
- package/dist/lib/cjs/components/pointer-position-component.cjs +2 -2
- package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +3 -3
- package/dist/lib/cjs/components/registry-component.cjs +2 -2
- package/dist/lib/cjs/components/release-notes-component.cjs +6 -6
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +25 -25
- package/dist/lib/cjs/components/rmdir-guard-component.cjs +2 -2
- package/dist/lib/cjs/components/settings-facet-component.cjs +1 -1
- package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
- package/dist/lib/cjs/components/shared-component-pool-component.cjs +6 -6
- package/dist/lib/cjs/components/style-sheet-component.cjs +3 -3
- package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -3
- package/dist/lib/cjs/components/templates-language-component.cjs +1 -1
- package/dist/lib/cjs/components/worker-component.cjs +363 -0
- package/dist/lib/cjs/components/worker-component.d.cts +156 -0
- package/dist/lib/cjs/components/worker-pool-component.cjs +185 -0
- package/dist/lib/cjs/components/worker-pool-component.d.cts +102 -0
- package/dist/lib/cjs/components/workspace-layout-state-component.cjs +7 -7
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
- package/dist/lib/cjs/constructors/index.cjs +1 -1
- package/dist/lib/cjs/data-handler.cjs +111 -4
- package/dist/lib/cjs/data-handler.d.cts +92 -1
- package/dist/lib/cjs/data-stores/data-store-locations.cjs +82 -24
- package/dist/lib/cjs/data-stores/data-store-locations.d.cts +15 -0
- package/dist/lib/cjs/data-stores/data-store-replica.cjs +33 -5
- package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
- package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +2 -2
- package/dist/lib/cjs/data-stores/data-store-transport.cjs +81 -8
- package/dist/lib/cjs/data-stores/data-store-transport.d.cts +30 -1
- package/dist/lib/cjs/data-stores/index.cjs +6 -6
- package/dist/lib/cjs/data-stores/local-data-store.cjs +74 -10
- package/dist/lib/cjs/data-stores/local-data-store.d.cts +58 -1
- package/dist/lib/cjs/data-stores/shared-data-store.cjs +76 -19
- package/dist/lib/cjs/data-stores/shared-data-store.d.cts +18 -1
- package/dist/lib/cjs/dataview-link.cjs +2 -2
- package/dist/lib/cjs/dataview.cjs +27 -7
- package/dist/lib/cjs/dataview.d.cts +14 -0
- package/dist/lib/cjs/debug.cjs +3 -3
- package/dist/lib/cjs/demo-vault-helper.cjs +34 -6
- package/dist/lib/cjs/demo-vault-helper.d.cts +6 -2
- package/dist/lib/cjs/desktop-bulk-operation-git.cjs +10 -10
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +13 -13
- package/dist/lib/cjs/desktop-git-runner.cjs +2 -2
- package/dist/lib/cjs/desktop-operating-system.cjs +1 -1
- package/dist/lib/cjs/desktop-request-url-stream.cjs +8 -14
- package/dist/lib/cjs/desktop-trusted-input.cjs +2 -2
- package/dist/lib/cjs/disposable.cjs +150 -0
- package/dist/lib/cjs/disposable.d.cts +39 -0
- package/dist/lib/cjs/editor-extension-registrar.cjs +1 -1
- package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -2
- package/dist/lib/cjs/editor-suggest.cjs +1 -1
- package/dist/lib/cjs/editor.cjs +6 -6
- package/dist/lib/cjs/events.cjs +2 -2
- package/dist/lib/cjs/extensions-registrar.cjs +1 -1
- package/dist/lib/cjs/feature-request.cjs +1 -1
- package/dist/lib/cjs/file-change.cjs +10 -10
- package/dist/lib/cjs/file-explorer.cjs +2 -2
- package/dist/lib/cjs/file-manager.cjs +5 -5
- package/dist/lib/cjs/file-system.cjs +10 -10
- package/dist/lib/cjs/folder-note.cjs +4 -4
- package/dist/lib/cjs/frontmatter-formatting.cjs +7 -6
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +1 -1
- package/dist/lib/cjs/frontmatter.cjs +5 -5
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/hotkey.cjs +1 -1
- package/dist/lib/cjs/hover-link-source-registrar.cjs +1 -1
- package/dist/lib/cjs/html-element.cjs +2 -2
- package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -1
- package/dist/lib/cjs/i18n/default-translations.cjs +1 -1
- package/dist/lib/cjs/i18n/i18n.cjs +7 -7
- package/dist/lib/cjs/i18n/index.cjs +4 -4
- package/dist/lib/cjs/i18n/locales/en.cjs +5 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +4 -0
- package/dist/lib/cjs/i18n/locales/index.cjs +2 -2
- package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -1
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +4 -0
- package/dist/lib/cjs/index.cjs +145 -127
- package/dist/lib/cjs/index.d.cts +6 -0
- package/dist/lib/cjs/inline-token-renderer.cjs +2 -2
- package/dist/lib/cjs/is-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/library-styles.cjs +3 -3
- package/dist/lib/cjs/link-and-tag-input-suggest.cjs +2 -2
- package/dist/lib/cjs/link.cjs +76 -56
- package/dist/lib/cjs/link.d.cts +20 -14
- package/dist/lib/cjs/logger.cjs +4 -4
- package/dist/lib/cjs/loop.cjs +10 -16
- package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +17 -2
- package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +7 -0
- package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -13
- package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -2
- package/dist/lib/cjs/markdown-view.cjs +3 -3
- package/dist/lib/cjs/markdown.cjs +12 -12
- package/dist/lib/cjs/metadata-cache.cjs +23 -23
- package/dist/lib/cjs/metadata-cache.d.cts +5 -4
- package/dist/lib/cjs/misplaced-attachment.cjs +297 -0
- package/dist/lib/cjs/misplaced-attachment.d.cts +228 -0
- package/dist/lib/cjs/mobile-app-info.cjs +1 -1
- package/dist/lib/cjs/modals/alert.cjs +4 -4
- package/dist/lib/cjs/modals/code-block-builder.cjs +7 -7
- package/dist/lib/cjs/modals/confirm.cjs +4 -4
- package/dist/lib/cjs/modals/copy-text-manually.cjs +4 -4
- package/dist/lib/cjs/modals/index.cjs +12 -12
- package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
- package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -3
- package/dist/lib/cjs/modals/modal.cjs +3 -3
- package/dist/lib/cjs/modals/prompt.cjs +10 -10
- package/dist/lib/cjs/modals/prompt.d.cts +1 -1
- package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +5 -5
- package/dist/lib/cjs/modals/select-item.cjs +6 -6
- package/dist/lib/cjs/modals/select-option.cjs +3 -3
- package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
- package/dist/lib/cjs/note-priority.cjs +2 -2
- package/dist/lib/cjs/notebook-navigator.cjs +12 -2
- package/dist/lib/cjs/notebook-navigator.d.cts +6 -0
- package/dist/lib/cjs/obsidian-lib-state.cjs +1 -1
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +1 -1
- package/dist/lib/cjs/obsidian-settings.cjs +1 -1
- package/dist/lib/cjs/obsidian-word-characters.cjs +1 -1
- package/dist/lib/cjs/parse-link.cjs +14 -14
- package/dist/lib/cjs/path-compatibility.cjs +368 -0
- package/dist/lib/cjs/path-compatibility.d.cts +263 -0
- package/dist/lib/cjs/path-settings.cjs +3 -3
- package/dist/lib/cjs/pdf.cjs +2 -2
- package/dist/lib/cjs/plugin/index.cjs +16 -13
- package/dist/lib/cjs/plugin/index.d.cts +1 -0
- package/dist/lib/cjs/plugin/plugin-api.cjs +8 -8
- package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +6 -3
- package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +5 -0
- package/dist/lib/cjs/plugin/plugin-context.cjs +10 -9
- package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -1
- package/dist/lib/cjs/plugin/plugin-event-source.d.cts +4 -4
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +4 -4
- package/dist/lib/cjs/plugin/plugin-instance.cjs +14 -12
- package/dist/lib/cjs/plugin/plugin-instance.d.cts +7 -0
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -1
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +6 -4
- package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +15 -15
- package/dist/lib/cjs/plugin/plugin.cjs +118 -34
- package/dist/lib/cjs/plugin/plugin.d.cts +28 -5
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +1 -1
- package/dist/lib/cjs/plugin/third-party-plugin.cjs +231 -0
- package/dist/lib/cjs/plugin/third-party-plugin.d.cts +244 -0
- package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -2
- package/dist/lib/cjs/popovers/field-popover.cjs +4 -4
- package/dist/lib/cjs/popovers/index.cjs +3 -3
- package/dist/lib/cjs/popovers/popover-anchor.cjs +1 -1
- package/dist/lib/cjs/popovers/popover.cjs +5 -5
- package/dist/lib/cjs/queue.cjs +8 -8
- package/dist/lib/cjs/react/app-context.cjs +3 -3
- package/dist/lib/cjs/react/index.cjs +1 -1
- package/dist/lib/cjs/reference-definition.cjs +1 -1
- package/dist/lib/cjs/reference.cjs +3 -3
- package/dist/lib/cjs/release-asset.cjs +5 -5
- package/dist/lib/cjs/rendered-markdown.cjs +4 -4
- package/dist/lib/cjs/request-url.cjs +4 -4
- package/dist/lib/cjs/resource-lock.cjs +46 -42
- package/dist/lib/cjs/resource-lock.d.cts +8 -7
- package/dist/lib/cjs/resource-url.cjs +3 -3
- package/dist/lib/cjs/ribbon-icon-registrar.cjs +1 -1
- package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +7 -7
- package/dist/lib/cjs/setting-components/date-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/date-time-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/email-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/file-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/folder-list-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/hotkey-component.cjs +5 -5
- package/dist/lib/cjs/setting-components/index.cjs +30 -30
- package/dist/lib/cjs/setting-components/list-component.cjs +5 -5
- package/dist/lib/cjs/setting-components/month-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/multiple-email-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/multiple-text-component.cjs +9 -6
- package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +4 -1
- package/dist/lib/cjs/setting-components/number-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/password-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -3
- package/dist/lib/cjs/setting-components/tag-list-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/telephone-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/text-based-component.cjs +1 -1
- package/dist/lib/cjs/setting-components/time-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -1
- package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/url-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/validator-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/week-component.cjs +4 -4
- package/dist/lib/cjs/setting-ex.cjs +26 -26
- package/dist/lib/cjs/setting-group-ex.cjs +2 -2
- package/dist/lib/cjs/settings-recovery.cjs +217 -0
- package/dist/lib/cjs/settings-recovery.d.cts +178 -0
- package/dist/lib/cjs/settings-tabs.cjs +5 -5
- package/dist/lib/cjs/status-bar-item-registrar.cjs +1 -1
- package/dist/lib/cjs/templater.cjs +14 -4
- package/dist/lib/cjs/templater.d.cts +6 -0
- package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -2
- package/dist/lib/cjs/transformers/index.cjs +1 -1
- package/dist/lib/cjs/trusted-input.cjs +1 -1
- package/dist/lib/cjs/validation.cjs +4 -4
- package/dist/lib/cjs/vault-delete.cjs +6 -6
- package/dist/lib/cjs/vault-transaction.cjs +5 -5
- package/dist/lib/cjs/vault.cjs +12 -12
- package/dist/lib/cjs/view-registrar.cjs +1 -1
- package/dist/lib/cjs/virtual-file.cjs +16 -14
- package/dist/lib/cjs/virtual-file.d.cts +2 -1
- package/dist/lib/cjs/wasm.cjs +119 -0
- package/dist/lib/cjs/wasm.d.cts +54 -0
- package/dist/lib/cjs/worker-protocol.cjs +209 -0
- package/dist/lib/cjs/worker-protocol.d.cts +282 -0
- package/dist/lib/cjs/workspace.cjs +1 -1
- package/dist/lib/esm/__merged.d.mts +17 -8
- package/dist/lib/esm/__merged.mjs +133 -3
- package/dist/lib/esm/app.mjs +2 -2
- package/dist/lib/esm/attachment-path.d.mts +3 -3
- package/dist/lib/esm/attachment-path.mjs +2 -2
- package/dist/lib/esm/backlink-index.mjs +2 -2
- package/dist/lib/esm/canvas.d.mts +13 -0
- package/dist/lib/esm/canvas.mjs +6 -5
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +13 -13
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +14 -14
- package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +7 -7
- package/dist/lib/esm/command-handlers/editor-command-handler.mjs +8 -8
- package/dist/lib/esm/components/component-ex.d.mts +11 -0
- package/dist/lib/esm/components/component-ex.mjs +19 -6
- package/dist/lib/esm/components/disposable-component.mjs +1 -1
- package/dist/lib/esm/components/index.d.mts +2 -0
- package/dist/lib/esm/components/index.mjs +5 -1
- package/dist/lib/esm/components/plugin-gate-component.d.mts +36 -13
- package/dist/lib/esm/components/plugin-gate-component.mjs +57 -14
- package/dist/lib/esm/components/plugin-notice-component.d.mts +4 -3
- package/dist/lib/esm/components/plugin-notice-component.mjs +30 -21
- package/dist/lib/esm/components/plugin-settings-component.d.mts +35 -5
- package/dist/lib/esm/components/plugin-settings-component.mjs +99 -3
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +2 -2
- package/dist/lib/esm/components/worker-component.d.mts +156 -0
- package/dist/lib/esm/components/worker-component.mjs +279 -0
- package/dist/lib/esm/components/worker-pool-component.d.mts +102 -0
- package/dist/lib/esm/components/worker-pool-component.mjs +95 -0
- package/dist/lib/esm/components/workspace-layout-state-component.mjs +1 -1
- package/dist/lib/esm/data-handler.d.mts +92 -1
- package/dist/lib/esm/data-handler.mjs +112 -3
- package/dist/lib/esm/data-stores/data-store-locations.d.mts +15 -0
- package/dist/lib/esm/data-stores/data-store-locations.mjs +80 -22
- package/dist/lib/esm/data-stores/data-store-replica.mjs +33 -5
- package/dist/lib/esm/data-stores/data-store-seeds.d.mts +2 -2
- package/dist/lib/esm/data-stores/data-store-seeds.mjs +4 -4
- package/dist/lib/esm/data-stores/data-store-transport.d.mts +30 -1
- package/dist/lib/esm/data-stores/data-store-transport.mjs +78 -5
- package/dist/lib/esm/data-stores/local-data-store.d.mts +58 -1
- package/dist/lib/esm/data-stores/local-data-store.mjs +71 -9
- package/dist/lib/esm/data-stores/shared-data-store.d.mts +18 -1
- package/dist/lib/esm/data-stores/shared-data-store.mjs +72 -15
- package/dist/lib/esm/dataview.d.mts +14 -0
- package/dist/lib/esm/dataview.mjs +19 -1
- package/dist/lib/esm/demo-vault-helper.d.mts +6 -2
- package/dist/lib/esm/demo-vault-helper.mjs +29 -1
- package/dist/lib/esm/desktop-demo-vault-opener.mjs +1 -1
- package/dist/lib/esm/desktop-request-url-stream.mjs +4 -10
- package/dist/lib/esm/disposable.d.mts +39 -0
- package/dist/lib/esm/disposable.mjs +64 -0
- package/dist/lib/esm/file-system.mjs +2 -2
- package/dist/lib/esm/frontmatter-formatting.mjs +2 -1
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/i18n/locales/en.d.mts +4 -0
- package/dist/lib/esm/i18n/locales/en.mjs +5 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +4 -0
- package/dist/lib/esm/index.d.mts +6 -0
- package/dist/lib/esm/index.mjs +13 -1
- package/dist/lib/esm/link.d.mts +20 -14
- package/dist/lib/esm/link.mjs +57 -38
- package/dist/lib/esm/loop.mjs +2 -8
- package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +7 -0
- package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +16 -1
- package/dist/lib/esm/metadata-cache.d.mts +5 -4
- package/dist/lib/esm/metadata-cache.mjs +6 -6
- package/dist/lib/esm/misplaced-attachment.d.mts +228 -0
- package/dist/lib/esm/misplaced-attachment.mjs +212 -0
- package/dist/lib/esm/modals/prompt.d.mts +1 -1
- package/dist/lib/esm/modals/prompt.mjs +1 -1
- package/dist/lib/esm/notebook-navigator.d.mts +6 -0
- package/dist/lib/esm/notebook-navigator.mjs +11 -2
- package/dist/lib/esm/parse-link.mjs +4 -4
- package/dist/lib/esm/path-compatibility.d.mts +263 -0
- package/dist/lib/esm/path-compatibility.mjs +277 -0
- package/dist/lib/esm/plugin/index.d.mts +1 -0
- package/dist/lib/esm/plugin/index.mjs +4 -2
- package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +5 -0
- package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +3 -1
- package/dist/lib/esm/plugin/plugin-context.mjs +2 -1
- package/dist/lib/esm/plugin/plugin-event-source.d.mts +4 -4
- package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
- package/dist/lib/esm/plugin/plugin-instance.d.mts +7 -0
- package/dist/lib/esm/plugin/plugin-instance.mjs +2 -1
- package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +6 -4
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -1
- package/dist/lib/esm/plugin/plugin.d.mts +28 -5
- package/dist/lib/esm/plugin/plugin.mjs +103 -9
- package/dist/lib/esm/plugin/third-party-plugin.d.mts +244 -0
- package/dist/lib/esm/plugin/third-party-plugin.mjs +147 -0
- package/dist/lib/esm/release-asset.mjs +1 -1
- package/dist/lib/esm/resource-lock.d.mts +8 -7
- package/dist/lib/esm/resource-lock.mjs +31 -26
- package/dist/lib/esm/setting-components/multiple-text-component.d.mts +4 -1
- package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -3
- package/dist/lib/esm/settings-recovery.d.mts +178 -0
- package/dist/lib/esm/settings-recovery.mjs +125 -0
- package/dist/lib/esm/settings-tabs.mjs +2 -2
- package/dist/lib/esm/templater.d.mts +6 -0
- package/dist/lib/esm/templater.mjs +11 -2
- package/dist/lib/esm/vault.mjs +1 -1
- package/dist/lib/esm/virtual-file.d.mts +2 -1
- package/dist/lib/esm/virtual-file.mjs +7 -5
- package/dist/lib/esm/wasm.d.mts +54 -0
- package/dist/lib/esm/wasm.mjs +30 -0
- package/dist/lib/esm/worker-protocol.d.mts +282 -0
- package/dist/lib/esm/worker-protocol.mjs +113 -0
- package/package.json +9 -8
- package/plugin/third-party-plugin/package.json +6 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/// <reference lib="dom" />
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
*
|
|
6
|
+
* Typed access to the API of a THIRD-PARTY plugin: one that publishes nothing through this library's registry.
|
|
7
|
+
*
|
|
8
|
+
* A plugin built on this library publishes a versioned contract (`getPluginApis()`), and a consumer reaches it
|
|
9
|
+
* through `watchPluginApi` (`./plugin-api.ts`). Most plugins a consumer wants to talk to — `Dataview`,
|
|
10
|
+
* `Templater`, `Notebook Navigator` — are not built on it, so their API hangs off the plugin instance under a
|
|
11
|
+
* name of their own choosing, and every consumer used to reach it by hand through `app.plugins` with a cast.
|
|
12
|
+
*
|
|
13
|
+
* A {@link ThirdPartyPluginAdapter} says ONCE, for one plugin, how to get from its instance to its typed API,
|
|
14
|
+
* and VERIFIES the shape on the way, so a release that renamed what the adapter reads is "not there" rather
|
|
15
|
+
* than a `Cannot read properties of undefined` from inside a callback. Everything else here is generic:
|
|
16
|
+
*
|
|
17
|
+
* - {@link getThirdPartyPluginApi} answers "now", for a one-shot use.
|
|
18
|
+
* - {@link watchThirdPartyPluginApi} answers "now" for as long as a component lives: its ref re-reads on every
|
|
19
|
+
* `app.plugins` `changed` and every `obsidian-lib:plugin-loaded` / `-unloaded` broadcast, so an OPTIONAL
|
|
20
|
+
* dependency is a ref whose `value` is `null` while the plugin is absent, and becomes the API the moment it
|
|
21
|
+
* is enabled.
|
|
22
|
+
* - {@link waitForThirdPartyPluginApi} and {@link requireThirdPartyPluginApi} are the one-shot waits, built on
|
|
23
|
+
* `waitForPlugin` / `requirePlugin` (`./plugin-instance.ts`), so they share that module's availability
|
|
24
|
+
* classification, its notice and its repair buttons.
|
|
25
|
+
* - A REQUIRED dependency is declared through `PluginBase.getPluginDependencies()` as a
|
|
26
|
+
* {@link ThirdPartyPluginDependency} (built by {@link createThirdPartyPluginDependency}), and the plugin gate
|
|
27
|
+
* keeps `onloadImpl` from running while it is missing, too old or the wrong shape — the same treatment an
|
|
28
|
+
* own-plugin dependency gets.
|
|
29
|
+
*
|
|
30
|
+
* Availability is {@link PluginAvailability}, read from Obsidian `1.15.1` as `plugin-instance.ts` documents:
|
|
31
|
+
* an instance whose `onload` is still running reads as `loading`, never as available. An adapter's
|
|
32
|
+
* `getApi` returning `null` reads as {@link PluginAvailability.ShapeMismatch}.
|
|
33
|
+
*/
|
|
34
|
+
import type { AsyncEventSource } from '@mnaoumov/typescript-lib/async-events';
|
|
35
|
+
import type { App, Component, Plugin } from 'obsidian';
|
|
36
|
+
import type { Except } from 'type-fest';
|
|
37
|
+
import type { PluginDependencyBase } from '../components/plugin-gate-component.mjs';
|
|
38
|
+
import type { RequirePluginParams, WaitForPluginParams } from './plugin-instance.mjs';
|
|
39
|
+
import { PluginAvailability } from './plugin-instance.mjs';
|
|
40
|
+
/**
|
|
41
|
+
* Parameters for {@link createThirdPartyPluginDependency}.
|
|
42
|
+
*
|
|
43
|
+
* @typeParam TApi - The adapter's API type.
|
|
44
|
+
*/
|
|
45
|
+
export interface CreateThirdPartyPluginDependencyParams<TApi extends object> {
|
|
46
|
+
/**
|
|
47
|
+
* The adapter of the required plugin.
|
|
48
|
+
*/
|
|
49
|
+
readonly adapter: ThirdPartyPluginAdapter<TApi>;
|
|
50
|
+
/**
|
|
51
|
+
* The oldest release the dependent works with. Defaults to the adapter's own
|
|
52
|
+
* {@link ThirdPartyPluginAdapter.minPluginVersion}; a dependent may only raise it.
|
|
53
|
+
*/
|
|
54
|
+
readonly minPluginVersion?: string;
|
|
55
|
+
/**
|
|
56
|
+
* A localized sentence saying what the dependent does with the plugin, shown in the settings banner.
|
|
57
|
+
*/
|
|
58
|
+
readonly reason: DocumentFragment | string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Parameters for {@link getThirdPartyPluginApi} and {@link getThirdPartyPluginAvailability}.
|
|
62
|
+
*
|
|
63
|
+
* @typeParam TApi - The adapter's API type.
|
|
64
|
+
*/
|
|
65
|
+
export interface GetThirdPartyPluginApiParams<TApi extends object> {
|
|
66
|
+
/**
|
|
67
|
+
* The adapter of the plugin.
|
|
68
|
+
*/
|
|
69
|
+
readonly adapter: ThirdPartyPluginAdapter<TApi>;
|
|
70
|
+
/**
|
|
71
|
+
* The Obsidian app instance.
|
|
72
|
+
*/
|
|
73
|
+
readonly app: App;
|
|
74
|
+
/**
|
|
75
|
+
* The oldest release the caller works with. Defaults to the adapter's own
|
|
76
|
+
* {@link ThirdPartyPluginAdapter.minPluginVersion}.
|
|
77
|
+
*/
|
|
78
|
+
readonly minPluginVersion?: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Parameters for {@link getThirdPartyPluginAvailability}.
|
|
82
|
+
*
|
|
83
|
+
* @typeParam TApi - The adapter's API type.
|
|
84
|
+
*/
|
|
85
|
+
export type GetThirdPartyPluginAvailabilityParams<TApi extends object> = GetThirdPartyPluginApiParams<TApi>;
|
|
86
|
+
/**
|
|
87
|
+
* Parameters for {@link requireThirdPartyPluginApi}.
|
|
88
|
+
*
|
|
89
|
+
* @typeParam TApi - The adapter's API type.
|
|
90
|
+
*/
|
|
91
|
+
export interface RequireThirdPartyPluginApiParams<TApi extends object> extends Except<RequirePluginParams, 'app' | 'isPlugin' | 'minPluginVersion' | 'pluginId' | 'pluginName'>, GetThirdPartyPluginApiParams<TApi> {
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* How to get from one third-party plugin's instance to its typed API.
|
|
95
|
+
*
|
|
96
|
+
* An adapter is plain data plus one function, so it can be a module-level constant shared by every consumer,
|
|
97
|
+
* and adding a plugin means adding one adapter.
|
|
98
|
+
*
|
|
99
|
+
* @typeParam TApi - The plugin's API, typed by the adapter's author and verified by {@link getApi}.
|
|
100
|
+
*/
|
|
101
|
+
export interface ThirdPartyPluginAdapter<TApi extends object> {
|
|
102
|
+
/**
|
|
103
|
+
* Reads the typed API off a running instance of the plugin, VERIFYING its shape.
|
|
104
|
+
*
|
|
105
|
+
* Return `null` when the instance does not carry the members the adapter types, which is what a release
|
|
106
|
+
* that renamed or reshaped them looks like. Never cast: a cast asserts a shape nothing checked.
|
|
107
|
+
*
|
|
108
|
+
* @param plugin - The running instance, whose `onload` has settled.
|
|
109
|
+
* @returns The API, or `null` when the instance is not the shape the adapter expects.
|
|
110
|
+
*/
|
|
111
|
+
readonly getApi: (plugin: Plugin) => null | TApi;
|
|
112
|
+
/**
|
|
113
|
+
* The oldest release of the plugin the adapter was verified against, compared with its `manifest.version`.
|
|
114
|
+
* A release below it reads as {@link PluginAvailability.Outdated}.
|
|
115
|
+
*/
|
|
116
|
+
readonly minPluginVersion?: string;
|
|
117
|
+
/**
|
|
118
|
+
* The `manifest.id` of the plugin.
|
|
119
|
+
*/
|
|
120
|
+
readonly pluginId: string;
|
|
121
|
+
/**
|
|
122
|
+
* The display name of the plugin, shown to the user.
|
|
123
|
+
*/
|
|
124
|
+
readonly pluginName: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* A live reference to a third-party plugin's API.
|
|
128
|
+
*
|
|
129
|
+
* @typeParam TApi - The adapter's API type.
|
|
130
|
+
*/
|
|
131
|
+
export interface ThirdPartyPluginApiRef<TApi extends object> extends AsyncEventSource<ThirdPartyPluginApiRefEventMap> {
|
|
132
|
+
/**
|
|
133
|
+
* Whether the API can be used right now, and if not, why. Read at the moment of reading.
|
|
134
|
+
*/
|
|
135
|
+
readonly availability: PluginAvailability;
|
|
136
|
+
/**
|
|
137
|
+
* The API, or `null` when it is not available right now. `null` during the consumer's `onload` may only
|
|
138
|
+
* mean the plugin has not loaded yet; the value becomes the API on its own once it has.
|
|
139
|
+
*/
|
|
140
|
+
readonly value: null | TApi;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The events a {@link ThirdPartyPluginApiRef} fires.
|
|
144
|
+
*/
|
|
145
|
+
export interface ThirdPartyPluginApiRefEventMap {
|
|
146
|
+
/**
|
|
147
|
+
* Fired whenever {@link ThirdPartyPluginApiRef.value} changes, including when it becomes `null` because the
|
|
148
|
+
* plugin was disabled or reloaded.
|
|
149
|
+
*/
|
|
150
|
+
readonly change: [];
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* A third-party plugin another plugin cannot work without, declared through
|
|
154
|
+
* `PluginBase.getPluginDependencies()`.
|
|
155
|
+
*
|
|
156
|
+
* Built by {@link createThirdPartyPluginDependency}, which copies the adapter's id and name.
|
|
157
|
+
*/
|
|
158
|
+
export interface ThirdPartyPluginDependency extends PluginDependencyBase {
|
|
159
|
+
/**
|
|
160
|
+
* The adapter the gate reads the dependency's API through.
|
|
161
|
+
*/
|
|
162
|
+
readonly adapter: ThirdPartyPluginAdapter<object>;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Parameters for {@link waitForThirdPartyPluginApi}.
|
|
166
|
+
*
|
|
167
|
+
* @typeParam TApi - The adapter's API type.
|
|
168
|
+
*/
|
|
169
|
+
export interface WaitForThirdPartyPluginApiParams<TApi extends object> extends Except<WaitForPluginParams, 'app' | 'isPlugin' | 'minPluginVersion' | 'pluginId'>, GetThirdPartyPluginApiParams<TApi> {
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Parameters for {@link watchThirdPartyPluginApi}.
|
|
173
|
+
*
|
|
174
|
+
* @typeParam TApi - The adapter's API type.
|
|
175
|
+
*/
|
|
176
|
+
export interface WatchThirdPartyPluginApiParams<TApi extends object> extends GetThirdPartyPluginApiParams<TApi> {
|
|
177
|
+
/**
|
|
178
|
+
* The component owning the watch. Its unload stops it.
|
|
179
|
+
*/
|
|
180
|
+
readonly component: Component;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Builds the declaration of a required third-party plugin, for `PluginBase.getPluginDependencies()`.
|
|
184
|
+
*
|
|
185
|
+
* @typeParam TApi - The adapter's API type.
|
|
186
|
+
* @param params - The {@link CreateThirdPartyPluginDependencyParams}.
|
|
187
|
+
* @returns The dependency.
|
|
188
|
+
*/
|
|
189
|
+
export declare function createThirdPartyPluginDependency<TApi extends object>(params: CreateThirdPartyPluginDependencyParams<TApi>): ThirdPartyPluginDependency;
|
|
190
|
+
/**
|
|
191
|
+
* Returns a third-party plugin's typed API when the plugin is {@link PluginAvailability.Available}, and `null`
|
|
192
|
+
* otherwise.
|
|
193
|
+
*
|
|
194
|
+
* @typeParam TApi - The adapter's API type.
|
|
195
|
+
* @param params - The {@link GetThirdPartyPluginApiParams}.
|
|
196
|
+
* @returns The API, or `null`.
|
|
197
|
+
*/
|
|
198
|
+
export declare function getThirdPartyPluginApi<TApi extends object>(params: GetThirdPartyPluginApiParams<TApi>): null | TApi;
|
|
199
|
+
/**
|
|
200
|
+
* Reads whether a third-party plugin's API can be used right now, and if not, why.
|
|
201
|
+
*
|
|
202
|
+
* @typeParam TApi - The adapter's API type.
|
|
203
|
+
* @param params - The {@link GetThirdPartyPluginApiParams}.
|
|
204
|
+
* @returns The {@link PluginAvailability}; {@link PluginAvailability.ShapeMismatch} when the adapter does not
|
|
205
|
+
* recognize the running instance.
|
|
206
|
+
*/
|
|
207
|
+
export declare function getThirdPartyPluginAvailability<TApi extends object>(params: GetThirdPartyPluginAvailabilityParams<TApi>): PluginAvailability;
|
|
208
|
+
/**
|
|
209
|
+
* Checks whether a dependency declared through `PluginBase.getPluginDependencies()` is a third-party one.
|
|
210
|
+
*
|
|
211
|
+
* @param dependency - The declared dependency.
|
|
212
|
+
* @returns Whether it carries an adapter.
|
|
213
|
+
*/
|
|
214
|
+
export declare function isThirdPartyPluginDependency(dependency: PluginDependencyBase): dependency is ThirdPartyPluginDependency;
|
|
215
|
+
/**
|
|
216
|
+
* Waits for a third-party plugin's API, asking the user to install, enable or update the plugin while it is
|
|
217
|
+
* not available. Settles once; see `requirePlugin`.
|
|
218
|
+
*
|
|
219
|
+
* @typeParam TApi - The adapter's API type.
|
|
220
|
+
* @param params - The {@link RequireThirdPartyPluginApiParams}.
|
|
221
|
+
* @returns A {@link Promise} resolving with the API.
|
|
222
|
+
*/
|
|
223
|
+
export declare function requireThirdPartyPluginApi<TApi extends object>(params: RequireThirdPartyPluginApiParams<TApi>): Promise<TApi>;
|
|
224
|
+
/**
|
|
225
|
+
* Waits for a third-party plugin's API to become available. Settles once; see `waitForPlugin`.
|
|
226
|
+
*
|
|
227
|
+
* @typeParam TApi - The adapter's API type.
|
|
228
|
+
* @param params - The {@link WaitForThirdPartyPluginApiParams}.
|
|
229
|
+
* @returns A {@link Promise} resolving with the API.
|
|
230
|
+
* @throws `PluginInstanceUnavailableError` when the timeout elapses.
|
|
231
|
+
*/
|
|
232
|
+
export declare function waitForThirdPartyPluginApi<TApi extends object>(params: WaitForThirdPartyPluginApiParams<TApi>): Promise<TApi>;
|
|
233
|
+
/**
|
|
234
|
+
* Watches a third-party plugin's API and returns a live {@link ThirdPartyPluginApiRef}.
|
|
235
|
+
*
|
|
236
|
+
* The ref re-reads on every `app.plugins` `changed` and every library lifecycle broadcast, so it follows the
|
|
237
|
+
* plugin through enable, disable, update and reload with no polling. This is the shape of an OPTIONAL
|
|
238
|
+
* dependency: read `ref.value` where the integration is used, and treat `null` as "not there".
|
|
239
|
+
*
|
|
240
|
+
* @typeParam TApi - The adapter's API type.
|
|
241
|
+
* @param params - The {@link WatchThirdPartyPluginApiParams}.
|
|
242
|
+
* @returns The live reference.
|
|
243
|
+
*/
|
|
244
|
+
export declare function watchThirdPartyPluginApi<TApi extends object>(params: WatchThirdPartyPluginApiParams<TApi>): ThirdPartyPluginApiRef<TApi>;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
|
|
33
|
+
import { mixinAsyncEvents } from "@mnaoumov/typescript-lib/async-events";
|
|
34
|
+
import {
|
|
35
|
+
getLoadedPlugin,
|
|
36
|
+
getPluginAvailability,
|
|
37
|
+
PluginAvailability,
|
|
38
|
+
PLUGINS_CHANGED_EVENT_NAME,
|
|
39
|
+
requirePlugin,
|
|
40
|
+
waitForPlugin
|
|
41
|
+
} from "./plugin-instance.mjs";
|
|
42
|
+
import {
|
|
43
|
+
PLUGIN_LOADED_EVENT_NAME,
|
|
44
|
+
PLUGIN_UNLOADED_EVENT_NAME
|
|
45
|
+
} from "./plugin-lifecycle-events.mjs";
|
|
46
|
+
class ThirdPartyPluginApiWatchBase {
|
|
47
|
+
// A `protected` constructor is not assignable to `AbstractConstructor<object>`, which is what
|
|
48
|
+
// `mixinAsyncEvents` accepts, so this stays public even though only the subclass below calls it.
|
|
49
|
+
constructor(params) {
|
|
50
|
+
this.params = params;
|
|
51
|
+
}
|
|
52
|
+
params;
|
|
53
|
+
}
|
|
54
|
+
class ThirdPartyPluginApiRefImpl extends mixinAsyncEvents()(ThirdPartyPluginApiWatchBase) {
|
|
55
|
+
get availability() {
|
|
56
|
+
return getThirdPartyPluginAvailability(this.params);
|
|
57
|
+
}
|
|
58
|
+
get value() {
|
|
59
|
+
return this.currentValue;
|
|
60
|
+
}
|
|
61
|
+
currentValue = null;
|
|
62
|
+
/**
|
|
63
|
+
* Re-reads the API, firing `change` only when it actually changed.
|
|
64
|
+
*/
|
|
65
|
+
refresh() {
|
|
66
|
+
const value = getThirdPartyPluginApi(this.params);
|
|
67
|
+
if (value === this.currentValue) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.currentValue = value;
|
|
71
|
+
this.trigger("change");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function createThirdPartyPluginDependency(params) {
|
|
75
|
+
const minPluginVersion = params.minPluginVersion ?? params.adapter.minPluginVersion;
|
|
76
|
+
return {
|
|
77
|
+
adapter: params.adapter,
|
|
78
|
+
pluginId: params.adapter.pluginId,
|
|
79
|
+
pluginName: params.adapter.pluginName,
|
|
80
|
+
reason: params.reason,
|
|
81
|
+
...minPluginVersion !== void 0 && { minPluginVersion }
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function getThirdPartyPluginApi(params) {
|
|
85
|
+
const plugin = getLoadedPlugin(toPluginAvailabilityParams(params));
|
|
86
|
+
return plugin === null ? null : params.adapter.getApi(plugin);
|
|
87
|
+
}
|
|
88
|
+
function getThirdPartyPluginAvailability(params) {
|
|
89
|
+
return getPluginAvailability(toPluginAvailabilityParams(params));
|
|
90
|
+
}
|
|
91
|
+
function isThirdPartyPluginDependency(dependency) {
|
|
92
|
+
return "adapter" in dependency;
|
|
93
|
+
}
|
|
94
|
+
async function requireThirdPartyPluginApi(params) {
|
|
95
|
+
const plugin = await requirePlugin({
|
|
96
|
+
...params,
|
|
97
|
+
...toPluginAvailabilityParams(params),
|
|
98
|
+
pluginName: params.adapter.pluginName
|
|
99
|
+
});
|
|
100
|
+
return getVerifiedApi(params.adapter, plugin);
|
|
101
|
+
}
|
|
102
|
+
async function waitForThirdPartyPluginApi(params) {
|
|
103
|
+
const plugin = await waitForPlugin({
|
|
104
|
+
...params,
|
|
105
|
+
...toPluginAvailabilityParams(params)
|
|
106
|
+
});
|
|
107
|
+
return getVerifiedApi(params.adapter, plugin);
|
|
108
|
+
}
|
|
109
|
+
function watchThirdPartyPluginApi(params) {
|
|
110
|
+
const { app, component } = params;
|
|
111
|
+
const ref = new ThirdPartyPluginApiRefImpl(params);
|
|
112
|
+
function refresh() {
|
|
113
|
+
ref.refresh();
|
|
114
|
+
}
|
|
115
|
+
component.registerEvent(app.plugins.on(PLUGINS_CHANGED_EVENT_NAME, refresh));
|
|
116
|
+
component.registerEvent(app.workspace.on(PLUGIN_LOADED_EVENT_NAME, refresh));
|
|
117
|
+
component.registerEvent(app.workspace.on(PLUGIN_UNLOADED_EVENT_NAME, refresh));
|
|
118
|
+
ref.refresh();
|
|
119
|
+
return ref;
|
|
120
|
+
}
|
|
121
|
+
function getVerifiedApi(adapter, plugin) {
|
|
122
|
+
const api = adapter.getApi(plugin);
|
|
123
|
+
if (api === null) {
|
|
124
|
+
throw new Error(`The plugin "${adapter.pluginId}" does not expose the API its adapter expects.`);
|
|
125
|
+
}
|
|
126
|
+
return api;
|
|
127
|
+
}
|
|
128
|
+
function toPluginAvailabilityParams(params) {
|
|
129
|
+
const { adapter, app } = params;
|
|
130
|
+
const minPluginVersion = params.minPluginVersion ?? adapter.minPluginVersion;
|
|
131
|
+
return {
|
|
132
|
+
app,
|
|
133
|
+
isPlugin: (plugin) => adapter.getApi(plugin) !== null,
|
|
134
|
+
pluginId: adapter.pluginId,
|
|
135
|
+
...minPluginVersion !== void 0 && { minPluginVersion }
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export {
|
|
139
|
+
createThirdPartyPluginDependency,
|
|
140
|
+
getThirdPartyPluginApi,
|
|
141
|
+
getThirdPartyPluginAvailability,
|
|
142
|
+
isThirdPartyPluginDependency,
|
|
143
|
+
requireThirdPartyPluginApi,
|
|
144
|
+
waitForThirdPartyPluginApi,
|
|
145
|
+
watchThirdPartyPluginApi
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW4vdGhpcmQtcGFydHktcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUeXBlZCBhY2Nlc3MgdG8gdGhlIEFQSSBvZiBhIFRISVJELVBBUlRZIHBsdWdpbjogb25lIHRoYXQgcHVibGlzaGVzIG5vdGhpbmcgdGhyb3VnaCB0aGlzIGxpYnJhcnkncyByZWdpc3RyeS5cbiAqXG4gKiBBIHBsdWdpbiBidWlsdCBvbiB0aGlzIGxpYnJhcnkgcHVibGlzaGVzIGEgdmVyc2lvbmVkIGNvbnRyYWN0IChgZ2V0UGx1Z2luQXBpcygpYCksIGFuZCBhIGNvbnN1bWVyIHJlYWNoZXMgaXRcbiAqIHRocm91Z2ggYHdhdGNoUGx1Z2luQXBpYCAoYC4vcGx1Z2luLWFwaS50c2ApLiBNb3N0IHBsdWdpbnMgYSBjb25zdW1lciB3YW50cyB0byB0YWxrIHRvIOKAlCBgRGF0YXZpZXdgLFxuICogYFRlbXBsYXRlcmAsIGBOb3RlYm9vayBOYXZpZ2F0b3JgIOKAlCBhcmUgbm90IGJ1aWx0IG9uIGl0LCBzbyB0aGVpciBBUEkgaGFuZ3Mgb2ZmIHRoZSBwbHVnaW4gaW5zdGFuY2UgdW5kZXIgYVxuICogbmFtZSBvZiB0aGVpciBvd24gY2hvb3NpbmcsIGFuZCBldmVyeSBjb25zdW1lciB1c2VkIHRvIHJlYWNoIGl0IGJ5IGhhbmQgdGhyb3VnaCBgYXBwLnBsdWdpbnNgIHdpdGggYSBjYXN0LlxuICpcbiAqIEEge0BsaW5rIFRoaXJkUGFydHlQbHVnaW5BZGFwdGVyfSBzYXlzIE9OQ0UsIGZvciBvbmUgcGx1Z2luLCBob3cgdG8gZ2V0IGZyb20gaXRzIGluc3RhbmNlIHRvIGl0cyB0eXBlZCBBUEksXG4gKiBhbmQgVkVSSUZJRVMgdGhlIHNoYXBlIG9uIHRoZSB3YXksIHNvIGEgcmVsZWFzZSB0aGF0IHJlbmFtZWQgd2hhdCB0aGUgYWRhcHRlciByZWFkcyBpcyBcIm5vdCB0aGVyZVwiIHJhdGhlclxuICogdGhhbiBhIGBDYW5ub3QgcmVhZCBwcm9wZXJ0aWVzIG9mIHVuZGVmaW5lZGAgZnJvbSBpbnNpZGUgYSBjYWxsYmFjay4gRXZlcnl0aGluZyBlbHNlIGhlcmUgaXMgZ2VuZXJpYzpcbiAqXG4gKiAtIHtAbGluayBnZXRUaGlyZFBhcnR5UGx1Z2luQXBpfSBhbnN3ZXJzIFwibm93XCIsIGZvciBhIG9uZS1zaG90IHVzZS5cbiAqIC0ge0BsaW5rIHdhdGNoVGhpcmRQYXJ0eVBsdWdpbkFwaX0gYW5zd2VycyBcIm5vd1wiIGZvciBhcyBsb25nIGFzIGEgY29tcG9uZW50IGxpdmVzOiBpdHMgcmVmIHJlLXJlYWRzIG9uIGV2ZXJ5XG4gKiAgIGBhcHAucGx1Z2luc2AgYGNoYW5nZWRgIGFuZCBldmVyeSBgb2JzaWRpYW4tbGliOnBsdWdpbi1sb2FkZWRgIC8gYC11bmxvYWRlZGAgYnJvYWRjYXN0LCBzbyBhbiBPUFRJT05BTFxuICogICBkZXBlbmRlbmN5IGlzIGEgcmVmIHdob3NlIGB2YWx1ZWAgaXMgYG51bGxgIHdoaWxlIHRoZSBwbHVnaW4gaXMgYWJzZW50LCBhbmQgYmVjb21lcyB0aGUgQVBJIHRoZSBtb21lbnQgaXRcbiAqICAgaXMgZW5hYmxlZC5cbiAqIC0ge0BsaW5rIHdhaXRGb3JUaGlyZFBhcnR5UGx1Z2luQXBpfSBhbmQge0BsaW5rIHJlcXVpcmVUaGlyZFBhcnR5UGx1Z2luQXBpfSBhcmUgdGhlIG9uZS1zaG90IHdhaXRzLCBidWlsdCBvblxuICogICBgd2FpdEZvclBsdWdpbmAgLyBgcmVxdWlyZVBsdWdpbmAgKGAuL3BsdWdpbi1pbnN0YW5jZS50c2ApLCBzbyB0aGV5IHNoYXJlIHRoYXQgbW9kdWxlJ3MgYXZhaWxhYmlsaXR5XG4gKiAgIGNsYXNzaWZpY2F0aW9uLCBpdHMgbm90aWNlIGFuZCBpdHMgcmVwYWlyIGJ1dHRvbnMuXG4gKiAtIEEgUkVRVUlSRUQgZGVwZW5kZW5jeSBpcyBkZWNsYXJlZCB0aHJvdWdoIGBQbHVnaW5CYXNlLmdldFBsdWdpbkRlcGVuZGVuY2llcygpYCBhcyBhXG4gKiAgIHtAbGluayBUaGlyZFBhcnR5UGx1Z2luRGVwZW5kZW5jeX0gKGJ1aWx0IGJ5IHtAbGluayBjcmVhdGVUaGlyZFBhcnR5UGx1Z2luRGVwZW5kZW5jeX0pLCBhbmQgdGhlIHBsdWdpbiBnYXRlXG4gKiAgIGtlZXBzIGBvbmxvYWRJbXBsYCBmcm9tIHJ1bm5pbmcgd2hpbGUgaXQgaXMgbWlzc2luZywgdG9vIG9sZCBvciB0aGUgd3Jvbmcgc2hhcGUg4oCUIHRoZSBzYW1lIHRyZWF0bWVudCBhblxuICogICBvd24tcGx1Z2luIGRlcGVuZGVuY3kgZ2V0cy5cbiAqXG4gKiBBdmFpbGFiaWxpdHkgaXMge0BsaW5rIFBsdWdpbkF2YWlsYWJpbGl0eX0sIHJlYWQgZnJvbSBPYnNpZGlhbiBgMS4xNS4xYCBhcyBgcGx1Z2luLWluc3RhbmNlLnRzYCBkb2N1bWVudHM6XG4gKiBhbiBpbnN0YW5jZSB3aG9zZSBgb25sb2FkYCBpcyBzdGlsbCBydW5uaW5nIHJlYWRzIGFzIGBsb2FkaW5nYCwgbmV2ZXIgYXMgYXZhaWxhYmxlLiBBbiBhZGFwdGVyJ3NcbiAqIGBnZXRBcGlgIHJldHVybmluZyBgbnVsbGAgcmVhZHMgYXMge0BsaW5rIFBsdWdpbkF2YWlsYWJpbGl0eS5TaGFwZU1pc21hdGNofS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFzeW5jRXZlbnRTb3VyY2UgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMtZXZlbnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDb21wb25lbnQsXG4gIFBsdWdpblxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4Y2VwdCB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IG1peGluQXN5bmNFdmVudHMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMtZXZlbnRzJztcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW5EZXBlbmRlbmN5QmFzZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLWdhdGUtY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHtcbiAgR2V0UGx1Z2luQXZhaWxhYmlsaXR5UGFyYW1zLFxuICBSZXF1aXJlUGx1Z2luUGFyYW1zLFxuICBXYWl0Rm9yUGx1Z2luUGFyYW1zXG59IGZyb20gJy4vcGx1Z2luLWluc3RhbmNlLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0TG9hZGVkUGx1Z2luLFxuICBnZXRQbHVnaW5BdmFpbGFiaWxpdHksXG4gIFBsdWdpbkF2YWlsYWJpbGl0eSxcbiAgUExVR0lOU19DSEFOR0VEX0VWRU5UX05BTUUsXG4gIHJlcXVpcmVQbHVnaW4sXG4gIHdhaXRGb3JQbHVnaW5cbn0gZnJvbSAnLi9wbHVnaW4taW5zdGFuY2UudHMnO1xuaW1wb3J0IHtcbiAgUExVR0lOX0xPQURFRF9FVkVOVF9OQU1FLFxuICBQTFVHSU5fVU5MT0FERURfRVZFTlRfTkFNRVxufSBmcm9tICcuL3BsdWdpbi1saWZlY3ljbGUtZXZlbnRzLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlVGhpcmRQYXJ0eVBsdWdpbkRlcGVuZGVuY3l9LlxuICpcbiAqIEB0eXBlUGFyYW0gVEFwaSAtIFRoZSBhZGFwdGVyJ3MgQVBJIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlVGhpcmRQYXJ0eVBsdWdpbkRlcGVuZGVuY3lQYXJhbXM8VEFwaSBleHRlbmRzIG9iamVjdD4ge1xuICAvKipcbiAgICogVGhlIGFkYXB0ZXIgb2YgdGhlIHJlcXVpcmVkIHBsdWdpbi5cbiAgICovXG4gIHJlYWRvbmx5IGFkYXB0ZXI6IFRoaXJkUGFydHlQbHVnaW5BZGFwdGVyPFRBcGk+O1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkZXN0IHJlbGVhc2UgdGhlIGRlcGVuZGVudCB3b3JrcyB3aXRoLiBEZWZhdWx0cyB0byB0aGUgYWRhcHRlcidzIG93blxuICAgKiB7QGxpbmsgVGhpcmRQYXJ0eVBsdWdpbkFkYXB0ZXIubWluUGx1Z2luVmVyc2lvbn07IGEgZGVwZW5kZW50IG1heSBvbmx5IHJhaXNlIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgbWluUGx1Z2luVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsb2NhbGl6ZWQgc2VudGVuY2Ugc2F5aW5nIHdoYXQgdGhlIGRlcGVuZGVudCBkb2VzIHdpdGggdGhlIHBsdWdpbiwgc2hvd24gaW4gdGhlIHNldHRpbmdzIGJhbm5lci5cbiAgICovXG4gIHJlYWRvbmx5IHJlYXNvbjogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0VGhpcmRQYXJ0eVBsdWdpbkFwaX0gYW5kIHtAbGluayBnZXRUaGlyZFBhcnR5UGx1Z2luQXZhaWxhYmlsaXR5fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgYWRhcHRlcidzIEFQSSB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldFRoaXJkUGFydHlQbHVnaW5BcGlQYXJhbXM8VEFwaSBleHRlbmRzIG9iamVjdD4ge1xuICAvKipcbiAgICogVGhlIGFkYXB0ZXIgb2YgdGhlIHBsdWdpbi5cbiAgICovXG4gIHJlYWRvbmx5IGFkYXB0ZXI6IFRoaXJkUGFydHlQbHVnaW5BZGFwdGVyPFRBcGk+O1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGRlc3QgcmVsZWFzZSB0aGUgY2FsbGVyIHdvcmtzIHdpdGguIERlZmF1bHRzIHRvIHRoZSBhZGFwdGVyJ3Mgb3duXG4gICAqIHtAbGluayBUaGlyZFBhcnR5UGx1Z2luQWRhcHRlci5taW5QbHVnaW5WZXJzaW9ufS5cbiAgICovXG4gIHJlYWRvbmx5IG1pblBsdWdpblZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldFRoaXJkUGFydHlQbHVnaW5BdmFpbGFiaWxpdHl9LlxuICpcbiAqIEB0eXBlUGFyYW0gVEFwaSAtIFRoZSBhZGFwdGVyJ3MgQVBJIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIEdldFRoaXJkUGFydHlQbHVnaW5BdmFpbGFiaWxpdHlQYXJhbXM8VEFwaSBleHRlbmRzIG9iamVjdD4gPSBHZXRUaGlyZFBhcnR5UGx1Z2luQXBpUGFyYW1zPFRBcGk+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXF1aXJlVGhpcmRQYXJ0eVBsdWdpbkFwaX0uXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIGFkYXB0ZXIncyBBUEkgdHlwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1aXJlVGhpcmRQYXJ0eVBsdWdpbkFwaVBhcmFtczxUQXBpIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIEV4Y2VwdDxSZXF1aXJlUGx1Z2luUGFyYW1zLCAnYXBwJyB8ICdpc1BsdWdpbicgfCAnbWluUGx1Z2luVmVyc2lvbicgfCAncGx1Z2luSWQnIHwgJ3BsdWdpbk5hbWUnPiwgR2V0VGhpcmRQYXJ0eVBsdWdpbkFwaVBhcmFtczxUQXBpPiB7fVxuXG4vKipcbiAqIEhvdyB0byBnZXQgZnJvbSBvbmUgdGhpcmQtcGFydHkgcGx1Z2luJ3MgaW5zdGFuY2UgdG8gaXRzIHR5cGVkIEFQSS5cbiAqXG4gKiBBbiBhZGFwdGVyIGlzIHBsYWluIGRhdGEgcGx1cyBvbmUgZnVuY3Rpb24sIHNvIGl0IGNhbiBiZSBhIG1vZHVsZS1sZXZlbCBjb25zdGFudCBzaGFyZWQgYnkgZXZlcnkgY29uc3VtZXIsXG4gKiBhbmQgYWRkaW5nIGEgcGx1Z2luIG1lYW5zIGFkZGluZyBvbmUgYWRhcHRlci5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgcGx1Z2luJ3MgQVBJLCB0eXBlZCBieSB0aGUgYWRhcHRlcidzIGF1dGhvciBhbmQgdmVyaWZpZWQgYnkge0BsaW5rIGdldEFwaX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGhpcmRQYXJ0eVBsdWdpbkFkYXB0ZXI8VEFwaSBleHRlbmRzIG9iamVjdD4ge1xuICAvKipcbiAgICogUmVhZHMgdGhlIHR5cGVkIEFQSSBvZmYgYSBydW5uaW5nIGluc3RhbmNlIG9mIHRoZSBwbHVnaW4sIFZFUklGWUlORyBpdHMgc2hhcGUuXG4gICAqXG4gICAqIFJldHVybiBgbnVsbGAgd2hlbiB0aGUgaW5zdGFuY2UgZG9lcyBub3QgY2FycnkgdGhlIG1lbWJlcnMgdGhlIGFkYXB0ZXIgdHlwZXMsIHdoaWNoIGlzIHdoYXQgYSByZWxlYXNlXG4gICAqIHRoYXQgcmVuYW1lZCBvciByZXNoYXBlZCB0aGVtIGxvb2tzIGxpa2UuIE5ldmVyIGNhc3Q6IGEgY2FzdCBhc3NlcnRzIGEgc2hhcGUgbm90aGluZyBjaGVja2VkLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHJ1bm5pbmcgaW5zdGFuY2UsIHdob3NlIGBvbmxvYWRgIGhhcyBzZXR0bGVkLlxuICAgKiBAcmV0dXJucyBUaGUgQVBJLCBvciBgbnVsbGAgd2hlbiB0aGUgaW5zdGFuY2UgaXMgbm90IHRoZSBzaGFwZSB0aGUgYWRhcHRlciBleHBlY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QXBpOiAocGx1Z2luOiBQbHVnaW4pID0+IG51bGwgfCBUQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkZXN0IHJlbGVhc2Ugb2YgdGhlIHBsdWdpbiB0aGUgYWRhcHRlciB3YXMgdmVyaWZpZWQgYWdhaW5zdCwgY29tcGFyZWQgd2l0aCBpdHMgYG1hbmlmZXN0LnZlcnNpb25gLlxuICAgKiBBIHJlbGVhc2UgYmVsb3cgaXQgcmVhZHMgYXMge0BsaW5rIFBsdWdpbkF2YWlsYWJpbGl0eS5PdXRkYXRlZH0uXG4gICAqL1xuICByZWFkb25seSBtaW5QbHVnaW5WZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYG1hbmlmZXN0LmlkYCBvZiB0aGUgcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgcGx1Z2luLCBzaG93biB0byB0aGUgdXNlci5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGxpdmUgcmVmZXJlbmNlIHRvIGEgdGhpcmQtcGFydHkgcGx1Z2luJ3MgQVBJLlxuICpcbiAqIEB0eXBlUGFyYW0gVEFwaSAtIFRoZSBhZGFwdGVyJ3MgQVBJIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGhpcmRQYXJ0eVBsdWdpbkFwaVJlZjxUQXBpIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIEFzeW5jRXZlbnRTb3VyY2U8VGhpcmRQYXJ0eVBsdWdpbkFwaVJlZkV2ZW50TWFwPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBBUEkgY2FuIGJlIHVzZWQgcmlnaHQgbm93LCBhbmQgaWYgbm90LCB3aHkuIFJlYWQgYXQgdGhlIG1vbWVudCBvZiByZWFkaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5OiBQbHVnaW5BdmFpbGFiaWxpdHk7XG5cbiAgLyoqXG4gICAqIFRoZSBBUEksIG9yIGBudWxsYCB3aGVuIGl0IGlzIG5vdCBhdmFpbGFibGUgcmlnaHQgbm93LiBgbnVsbGAgZHVyaW5nIHRoZSBjb25zdW1lcidzIGBvbmxvYWRgIG1heSBvbmx5XG4gICAqIG1lYW4gdGhlIHBsdWdpbiBoYXMgbm90IGxvYWRlZCB5ZXQ7IHRoZSB2YWx1ZSBiZWNvbWVzIHRoZSBBUEkgb24gaXRzIG93biBvbmNlIGl0IGhhcy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBudWxsIHwgVEFwaTtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnRzIGEge0BsaW5rIFRoaXJkUGFydHlQbHVnaW5BcGlSZWZ9IGZpcmVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRoaXJkUGFydHlQbHVnaW5BcGlSZWZFdmVudE1hcCB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuZXZlciB7QGxpbmsgVGhpcmRQYXJ0eVBsdWdpbkFwaVJlZi52YWx1ZX0gY2hhbmdlcywgaW5jbHVkaW5nIHdoZW4gaXQgYmVjb21lcyBgbnVsbGAgYmVjYXVzZSB0aGVcbiAgICogcGx1Z2luIHdhcyBkaXNhYmxlZCBvciByZWxvYWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZTogW107XG59XG5cbi8qKlxuICogQSB0aGlyZC1wYXJ0eSBwbHVnaW4gYW5vdGhlciBwbHVnaW4gY2Fubm90IHdvcmsgd2l0aG91dCwgZGVjbGFyZWQgdGhyb3VnaFxuICogYFBsdWdpbkJhc2UuZ2V0UGx1Z2luRGVwZW5kZW5jaWVzKClgLlxuICpcbiAqIEJ1aWx0IGJ5IHtAbGluayBjcmVhdGVUaGlyZFBhcnR5UGx1Z2luRGVwZW5kZW5jeX0sIHdoaWNoIGNvcGllcyB0aGUgYWRhcHRlcidzIGlkIGFuZCBuYW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRoaXJkUGFydHlQbHVnaW5EZXBlbmRlbmN5IGV4dGVuZHMgUGx1Z2luRGVwZW5kZW5jeUJhc2Uge1xuICAvKipcbiAgICogVGhlIGFkYXB0ZXIgdGhlIGdhdGUgcmVhZHMgdGhlIGRlcGVuZGVuY3kncyBBUEkgdGhyb3VnaC5cbiAgICovXG4gIHJlYWRvbmx5IGFkYXB0ZXI6IFRoaXJkUGFydHlQbHVnaW5BZGFwdGVyPG9iamVjdD47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHdhaXRGb3JUaGlyZFBhcnR5UGx1Z2luQXBpfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgYWRhcHRlcidzIEFQSSB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdhaXRGb3JUaGlyZFBhcnR5UGx1Z2luQXBpUGFyYW1zPFRBcGkgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgRXhjZXB0PFdhaXRGb3JQbHVnaW5QYXJhbXMsICdhcHAnIHwgJ2lzUGx1Z2luJyB8ICdtaW5QbHVnaW5WZXJzaW9uJyB8ICdwbHVnaW5JZCc+LCBHZXRUaGlyZFBhcnR5UGx1Z2luQXBpUGFyYW1zPFRBcGk+IHt9XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHdhdGNoVGhpcmRQYXJ0eVBsdWdpbkFwaX0uXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIGFkYXB0ZXIncyBBUEkgdHlwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXYXRjaFRoaXJkUGFydHlQbHVnaW5BcGlQYXJhbXM8VEFwaSBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBHZXRUaGlyZFBhcnR5UGx1Z2luQXBpUGFyYW1zPFRBcGk+IHtcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgb3duaW5nIHRoZSB3YXRjaC4gSXRzIHVubG9hZCBzdG9wcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudDogQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIEhvbGRzIHRoZSBwYXJhbWV0ZXJzLCBzbyB0aGUge0BsaW5rIG1peGluQXN5bmNFdmVudHN9IG1peGluIGhhcyBhIHJlYWwgYmFzZSB0byBleHRlbmQuXG4gKi9cbmFic3RyYWN0IGNsYXNzIFRoaXJkUGFydHlQbHVnaW5BcGlXYXRjaEJhc2Uge1xuICAvLyBBIGBwcm90ZWN0ZWRgIGNvbnN0cnVjdG9yIGlzIG5vdCBhc3NpZ25hYmxlIHRvIGBBYnN0cmFjdENvbnN0cnVjdG9yPG9iamVjdD5gLCB3aGljaCBpcyB3aGF0XG4gIC8vIGBtaXhpbkFzeW5jRXZlbnRzYCBhY2NlcHRzLCBzbyB0aGlzIHN0YXlzIHB1YmxpYyBldmVuIHRob3VnaCBvbmx5IHRoZSBzdWJjbGFzcyBiZWxvdyBjYWxscyBpdC5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBwYXJhbXM6IEdldFRoaXJkUGFydHlQbHVnaW5BcGlQYXJhbXM8b2JqZWN0Pikge31cbn1cblxuY2xhc3MgVGhpcmRQYXJ0eVBsdWdpbkFwaVJlZkltcGw8VEFwaSBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBtaXhpbkFzeW5jRXZlbnRzPFRoaXJkUGFydHlQbHVnaW5BcGlSZWZFdmVudE1hcD4oKShUaGlyZFBhcnR5UGx1Z2luQXBpV2F0Y2hCYXNlKSBpbXBsZW1lbnRzIFRoaXJkUGFydHlQbHVnaW5BcGlSZWY8VEFwaT4ge1xuICBwdWJsaWMgZ2V0IGF2YWlsYWJpbGl0eSgpOiBQbHVnaW5BdmFpbGFiaWxpdHkge1xuICAgIHJldHVybiBnZXRUaGlyZFBhcnR5UGx1Z2luQXZhaWxhYmlsaXR5KHRoaXMucGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogbnVsbCB8IFRBcGkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFZhbHVlOiBudWxsIHwgVEFwaSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFJlLXJlYWRzIHRoZSBBUEksIGZpcmluZyBgY2hhbmdlYCBvbmx5IHdoZW4gaXQgYWN0dWFsbHkgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyByZWZyZXNoKCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0VGhpcmRQYXJ0eVBsdWdpbkFwaSh0aGlzLnBhcmFtcykgYXMgbnVsbCB8IFRBcGk7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZGVjbGFyYXRpb24gb2YgYSByZXF1aXJlZCB0aGlyZC1wYXJ0eSBwbHVnaW4sIGZvciBgUGx1Z2luQmFzZS5nZXRQbHVnaW5EZXBlbmRlbmNpZXMoKWAuXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIGFkYXB0ZXIncyBBUEkgdHlwZS5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIENyZWF0ZVRoaXJkUGFydHlQbHVnaW5EZXBlbmRlbmN5UGFyYW1zfS5cbiAqIEByZXR1cm5zIFRoZSBkZXBlbmRlbmN5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGhpcmRQYXJ0eVBsdWdpbkRlcGVuZGVuY3k8VEFwaSBleHRlbmRzIG9iamVjdD4ocGFyYW1zOiBDcmVhdGVUaGlyZFBhcnR5UGx1Z2luRGVwZW5kZW5jeVBhcmFtczxUQXBpPik6IFRoaXJkUGFydHlQbHVnaW5EZXBlbmRlbmN5IHtcbiAgY29uc3QgbWluUGx1Z2luVmVyc2lvbiA9IHBhcmFtcy5taW5QbHVnaW5WZXJzaW9uID8/IHBhcmFtcy5hZGFwdGVyLm1pblBsdWdpblZlcnNpb247XG4gIHJldHVybiB7XG4gICAgYWRhcHRlcjogcGFyYW1zLmFkYXB0ZXIsXG4gICAgcGx1Z2luSWQ6IHBhcmFtcy5hZGFwdGVyLnBsdWdpbklkLFxuICAgIHBsdWdpbk5hbWU6IHBhcmFtcy5hZGFwdGVyLnBsdWdpbk5hbWUsXG4gICAgcmVhc29uOiBwYXJhbXMucmVhc29uLFxuICAgIC4uLihtaW5QbHVnaW5WZXJzaW9uICE9PSB1bmRlZmluZWQgJiYgeyBtaW5QbHVnaW5WZXJzaW9uIH0pXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHRoaXJkLXBhcnR5IHBsdWdpbidzIHR5cGVkIEFQSSB3aGVuIHRoZSBwbHVnaW4gaXMge0BsaW5rIFBsdWdpbkF2YWlsYWJpbGl0eS5BdmFpbGFibGV9LCBhbmQgYG51bGxgXG4gKiBvdGhlcndpc2UuXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIGFkYXB0ZXIncyBBUEkgdHlwZS5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEdldFRoaXJkUGFydHlQbHVnaW5BcGlQYXJhbXN9LlxuICogQHJldHVybnMgVGhlIEFQSSwgb3IgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGhpcmRQYXJ0eVBsdWdpbkFwaTxUQXBpIGV4dGVuZHMgb2JqZWN0PihwYXJhbXM6IEdldFRoaXJkUGFydHlQbHVnaW5BcGlQYXJhbXM8VEFwaT4pOiBudWxsIHwgVEFwaSB7XG4gIGNvbnN0IHBsdWdpbiA9IGdldExvYWRlZFBsdWdpbih0b1BsdWdpbkF2YWlsYWJpbGl0eVBhcmFtcyhwYXJhbXMpKTtcbiAgcmV0dXJuIHBsdWdpbiA9PT0gbnVsbCA/IG51bGwgOiBwYXJhbXMuYWRhcHRlci5nZXRBcGkocGx1Z2luKTtcbn1cblxuLyoqXG4gKiBSZWFkcyB3aGV0aGVyIGEgdGhpcmQtcGFydHkgcGx1Z2luJ3MgQVBJIGNhbiBiZSB1c2VkIHJpZ2h0IG5vdywgYW5kIGlmIG5vdCwgd2h5LlxuICpcbiAqIEB0eXBlUGFyYW0gVEFwaSAtIFRoZSBhZGFwdGVyJ3MgQVBJIHR5cGUuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBHZXRUaGlyZFBhcnR5UGx1Z2luQXBpUGFyYW1zfS5cbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgUGx1Z2luQXZhaWxhYmlsaXR5fTsge0BsaW5rIFBsdWdpbkF2YWlsYWJpbGl0eS5TaGFwZU1pc21hdGNofSB3aGVuIHRoZSBhZGFwdGVyIGRvZXMgbm90XG4gKiByZWNvZ25pemUgdGhlIHJ1bm5pbmcgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaGlyZFBhcnR5UGx1Z2luQXZhaWxhYmlsaXR5PFRBcGkgZXh0ZW5kcyBvYmplY3Q+KHBhcmFtczogR2V0VGhpcmRQYXJ0eVBsdWdpbkF2YWlsYWJpbGl0eVBhcmFtczxUQXBpPik6IFBsdWdpbkF2YWlsYWJpbGl0eSB7XG4gIHJldHVybiBnZXRQbHVnaW5BdmFpbGFiaWxpdHkodG9QbHVnaW5BdmFpbGFiaWxpdHlQYXJhbXMocGFyYW1zKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBkZXBlbmRlbmN5IGRlY2xhcmVkIHRocm91Z2ggYFBsdWdpbkJhc2UuZ2V0UGx1Z2luRGVwZW5kZW5jaWVzKClgIGlzIGEgdGhpcmQtcGFydHkgb25lLlxuICpcbiAqIEBwYXJhbSBkZXBlbmRlbmN5IC0gVGhlIGRlY2xhcmVkIGRlcGVuZGVuY3kuXG4gKiBAcmV0dXJucyBXaGV0aGVyIGl0IGNhcnJpZXMgYW4gYWRhcHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGhpcmRQYXJ0eVBsdWdpbkRlcGVuZGVuY3koZGVwZW5kZW5jeTogUGx1Z2luRGVwZW5kZW5jeUJhc2UpOiBkZXBlbmRlbmN5IGlzIFRoaXJkUGFydHlQbHVnaW5EZXBlbmRlbmN5IHtcbiAgcmV0dXJuICdhZGFwdGVyJyBpbiBkZXBlbmRlbmN5O1xufVxuXG4vKipcbiAqIFdhaXRzIGZvciBhIHRoaXJkLXBhcnR5IHBsdWdpbidzIEFQSSwgYXNraW5nIHRoZSB1c2VyIHRvIGluc3RhbGwsIGVuYWJsZSBvciB1cGRhdGUgdGhlIHBsdWdpbiB3aGlsZSBpdCBpc1xuICogbm90IGF2YWlsYWJsZS4gU2V0dGxlcyBvbmNlOyBzZWUgYHJlcXVpcmVQbHVnaW5gLlxuICpcbiAqIEB0eXBlUGFyYW0gVEFwaSAtIFRoZSBhZGFwdGVyJ3MgQVBJIHR5cGUuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBSZXF1aXJlVGhpcmRQYXJ0eVBsdWdpbkFwaVBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgd2l0aCB0aGUgQVBJLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVxdWlyZVRoaXJkUGFydHlQbHVnaW5BcGk8VEFwaSBleHRlbmRzIG9iamVjdD4ocGFyYW1zOiBSZXF1aXJlVGhpcmRQYXJ0eVBsdWdpbkFwaVBhcmFtczxUQXBpPik6IFByb21pc2U8VEFwaT4ge1xuICBjb25zdCBwbHVnaW4gPSBhd2FpdCByZXF1aXJlUGx1Z2luKHtcbiAgICAuLi5wYXJhbXMsXG4gICAgLi4udG9QbHVnaW5BdmFpbGFiaWxpdHlQYXJhbXMocGFyYW1zKSxcbiAgICBwbHVnaW5OYW1lOiBwYXJhbXMuYWRhcHRlci5wbHVnaW5OYW1lXG4gIH0pO1xuICByZXR1cm4gZ2V0VmVyaWZpZWRBcGkocGFyYW1zLmFkYXB0ZXIsIHBsdWdpbik7XG59XG5cbi8qKlxuICogV2FpdHMgZm9yIGEgdGhpcmQtcGFydHkgcGx1Z2luJ3MgQVBJIHRvIGJlY29tZSBhdmFpbGFibGUuIFNldHRsZXMgb25jZTsgc2VlIGB3YWl0Rm9yUGx1Z2luYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgYWRhcHRlcidzIEFQSSB0eXBlLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgV2FpdEZvclRoaXJkUGFydHlQbHVnaW5BcGlQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHdpdGggdGhlIEFQSS5cbiAqIEB0aHJvd3MgYFBsdWdpbkluc3RhbmNlVW5hdmFpbGFibGVFcnJvcmAgd2hlbiB0aGUgdGltZW91dCBlbGFwc2VzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvclRoaXJkUGFydHlQbHVnaW5BcGk8VEFwaSBleHRlbmRzIG9iamVjdD4ocGFyYW1zOiBXYWl0Rm9yVGhpcmRQYXJ0eVBsdWdpbkFwaVBhcmFtczxUQXBpPik6IFByb21pc2U8VEFwaT4ge1xuICBjb25zdCBwbHVnaW4gPSBhd2FpdCB3YWl0Rm9yUGx1Z2luKHtcbiAgICAuLi5wYXJhbXMsXG4gICAgLi4udG9QbHVnaW5BdmFpbGFiaWxpdHlQYXJhbXMocGFyYW1zKVxuICB9KTtcbiAgcmV0dXJuIGdldFZlcmlmaWVkQXBpKHBhcmFtcy5hZGFwdGVyLCBwbHVnaW4pO1xufVxuXG4vKipcbiAqIFdhdGNoZXMgYSB0aGlyZC1wYXJ0eSBwbHVnaW4ncyBBUEkgYW5kIHJldHVybnMgYSBsaXZlIHtAbGluayBUaGlyZFBhcnR5UGx1Z2luQXBpUmVmfS5cbiAqXG4gKiBUaGUgcmVmIHJlLXJlYWRzIG9uIGV2ZXJ5IGBhcHAucGx1Z2luc2AgYGNoYW5nZWRgIGFuZCBldmVyeSBsaWJyYXJ5IGxpZmVjeWNsZSBicm9hZGNhc3QsIHNvIGl0IGZvbGxvd3MgdGhlXG4gKiBwbHVnaW4gdGhyb3VnaCBlbmFibGUsIGRpc2FibGUsIHVwZGF0ZSBhbmQgcmVsb2FkIHdpdGggbm8gcG9sbGluZy4gVGhpcyBpcyB0aGUgc2hhcGUgb2YgYW4gT1BUSU9OQUxcbiAqIGRlcGVuZGVuY3k6IHJlYWQgYHJlZi52YWx1ZWAgd2hlcmUgdGhlIGludGVncmF0aW9uIGlzIHVzZWQsIGFuZCB0cmVhdCBgbnVsbGAgYXMgXCJub3QgdGhlcmVcIi5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgYWRhcHRlcidzIEFQSSB0eXBlLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgV2F0Y2hUaGlyZFBhcnR5UGx1Z2luQXBpUGFyYW1zfS5cbiAqIEByZXR1cm5zIFRoZSBsaXZlIHJlZmVyZW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoVGhpcmRQYXJ0eVBsdWdpbkFwaTxUQXBpIGV4dGVuZHMgb2JqZWN0PihwYXJhbXM6IFdhdGNoVGhpcmRQYXJ0eVBsdWdpbkFwaVBhcmFtczxUQXBpPik6IFRoaXJkUGFydHlQbHVnaW5BcGlSZWY8VEFwaT4ge1xuICBjb25zdCB7IGFwcCwgY29tcG9uZW50IH0gPSBwYXJhbXM7XG4gIGNvbnN0IHJlZiA9IG5ldyBUaGlyZFBhcnR5UGx1Z2luQXBpUmVmSW1wbDxUQXBpPihwYXJhbXMpO1xuICBmdW5jdGlvbiByZWZyZXNoKCk6IHZvaWQge1xuICAgIHJlZi5yZWZyZXNoKCk7XG4gIH1cbiAgY29tcG9uZW50LnJlZ2lzdGVyRXZlbnQoYXBwLnBsdWdpbnMub24oUExVR0lOU19DSEFOR0VEX0VWRU5UX05BTUUsIHJlZnJlc2gpKTtcbiAgY29tcG9uZW50LnJlZ2lzdGVyRXZlbnQoYXBwLndvcmtzcGFjZS5vbihQTFVHSU5fTE9BREVEX0VWRU5UX05BTUUsIHJlZnJlc2gpKTtcbiAgY29tcG9uZW50LnJlZ2lzdGVyRXZlbnQoYXBwLndvcmtzcGFjZS5vbihQTFVHSU5fVU5MT0FERURfRVZFTlRfTkFNRSwgcmVmcmVzaCkpO1xuICByZWYucmVmcmVzaCgpO1xuICByZXR1cm4gcmVmO1xufVxuXG5mdW5jdGlvbiBnZXRWZXJpZmllZEFwaTxUQXBpIGV4dGVuZHMgb2JqZWN0PihhZGFwdGVyOiBUaGlyZFBhcnR5UGx1Z2luQWRhcHRlcjxUQXBpPiwgcGx1Z2luOiBQbHVnaW4pOiBUQXBpIHtcbiAgY29uc3QgYXBpID0gYWRhcHRlci5nZXRBcGkocGx1Z2luKTtcbiAgaWYgKGFwaSA9PT0gbnVsbCkge1xuICAgIC8vIFVucmVhY2hhYmxlIHRocm91Z2ggdGhlIHdhaXRzLCB3aG9zZSBhdmFpbGFiaWxpdHkgY2hlY2sgYWxyZWFkeSByYW4gYGdldEFwaWA7IGtlcHQgc28gYSB3cm9uZyBhZGFwdGVyXG4gICAgLy8gZmFpbHMgaGVyZSBieSBuYW1lIHJhdGhlciB0aGFuIGhhbmRpbmcgYmFjayBgbnVsbGAgdHlwZWQgYXMgdGhlIEFQSS5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwbHVnaW4gXCIke2FkYXB0ZXIucGx1Z2luSWR9XCIgZG9lcyBub3QgZXhwb3NlIHRoZSBBUEkgaXRzIGFkYXB0ZXIgZXhwZWN0cy5gKTtcbiAgfVxuXG4gIHJldHVybiBhcGk7XG59XG5cbmZ1bmN0aW9uIHRvUGx1Z2luQXZhaWxhYmlsaXR5UGFyYW1zPFRBcGkgZXh0ZW5kcyBvYmplY3Q+KHBhcmFtczogR2V0VGhpcmRQYXJ0eVBsdWdpbkFwaVBhcmFtczxUQXBpPik6IEdldFBsdWdpbkF2YWlsYWJpbGl0eVBhcmFtcyB7XG4gIGNvbnN0IHsgYWRhcHRlciwgYXBwIH0gPSBwYXJhbXM7XG4gIGNvbnN0IG1pblBsdWdpblZlcnNpb24gPSBwYXJhbXMubWluUGx1Z2luVmVyc2lvbiA/PyBhZGFwdGVyLm1pblBsdWdpblZlcnNpb247XG4gIHJldHVybiB7XG4gICAgYXBwLFxuICAgIGlzUGx1Z2luOiAocGx1Z2luOiBQbHVnaW4pOiBwbHVnaW4gaXMgUGx1Z2luID0+IGFkYXB0ZXIuZ2V0QXBpKHBsdWdpbikgIT09IG51bGwsXG4gICAgcGx1Z2luSWQ6IGFkYXB0ZXIucGx1Z2luSWQsXG4gICAgLi4uKG1pblBsdWdpblZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IG1pblBsdWdpblZlcnNpb24gfSlcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7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
|
|
@@ -184,4 +184,4 @@ export {
|
|
|
184
184
|
formatByteSize,
|
|
185
185
|
getGitHubReleaseAssetUrl
|
|
186
186
|
};
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWxlYXNlLWFzc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEb3dubG9hZHMgYW4gb3B0aW9uYWwgZGF0YSBhc3NldCBvZiBhIHBsdWdpbiByZWxlYXNlIG9uIGRlbWFuZDogaXQgYXNrcyB0aGUgdXNlciBmaXJzdCwgdmVyaWZpZXMgYW4gZXhwZWN0ZWQgU0hBLTI1NlxuICogYmVmb3JlIGFueXRoaW5nIGlzIHdyaXR0ZW4gb3IgZXhwb3NlZCwga2VlcHMgdGhlIHZlcmlmaWVkIGZpbGUgaW4gYSBsb2NhbCBjYWNoZSBmb2xkZXIgYW5kIGhhbmRzIGJhY2sgdGhlIGFkYXB0ZXJcbiAqIHJlc291cmNlIFVSTC5cbiAqXG4gKiBJdCB1c2VzIG9ubHkgY3Jvc3MtcGxhdGZvcm0gQVBJcyAoe0BsaW5rIHJlcXVlc3RVcmxFeH0sIHRoZSB2YXVsdCBhZGFwdGVyIGFuZCBgY3J5cHRvLnN1YnRsZWApLCBzbyBpdCB3b3JrcyBvbiBkZXNrdG9wXG4gKiBhbmQgbW9iaWxlIGFsaWtlLlxuICpcbiAqIEJlaGF2aW9yIHRoYXQgaXMgcGFydCBvZiB0aGUgY29udHJhY3Q6XG4gKlxuICogLSBBIGNhY2hlZCBmaWxlIGlzIGhhc2hlZCBvbiBldmVyeSBjYWxsLiBXaGVuIGl0cyBoYXNoIG1hdGNoZXMsIGl0IGlzIHJldXNlZCB3aXRob3V0IGFza2luZyBvciBkb3dubG9hZGluZy4gV2hlbiBpdFxuICogICBkb2VzIG5vdCwgaXQgaXMgcmVtb3ZlZCBhbmQgdHJlYXRlZCBhcyBtaXNzaW5nLCBzbyBhIGNvcnJ1cHQgb3IgdHJ1bmNhdGVkIGNhY2hlIHJlY292ZXJzIGJ5IGl0c2VsZi5cbiAqIC0gVGhlIHVzZXIgaXMgYXNrZWQgb25seSB3aGVuIGEgZG93bmxvYWQgaXMgbmVlZGVkLiBEZWNsaW5pbmcgcmVzb2x2ZXMgd2l0aCBgbnVsbGAgYW5kIHdyaXRlcyBub3RoaW5nLlxuICogLSBEb3dubG9hZGVkIGJ5dGVzIGFyZSB2ZXJpZmllZCBiZWZvcmUgdGhleSBhcmUgd3JpdHRlbi4gQSBtaXNtYXRjaCB0aHJvd3Mge0BsaW5rIFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3J9IGFuZFxuICogICB3cml0ZXMgbm90aGluZy5cbiAqIC0gVGhlIGZpbGUgaXMgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBzaWJsaW5nIGFuZCB0aGVuIHJlbmFtZWQgaW50byBwbGFjZSwgc28gYW4gaW50ZXJydXB0ZWQgd3JpdGUgbmV2ZXIgbGVhdmVzIGFcbiAqICAgcGFydGlhbCBmaWxlIHVuZGVyIHRoZSBjYWNoZWQgbmFtZS5cbiAqIC0gQW4gYWJvcnQgKHBhc3MgdGhlIHBsdWdpbidzIGFib3J0IHNpZ25hbCwgc28gYSBwbHVnaW4gdW5sb2FkIGNvdW50cykgcmVqZWN0cyB3aXRoIHRoZSBzaWduYWwncyByZWFzb24uIE9uY2UgdGhlXG4gKiAgIGRvd25sb2FkIGhhcyBmaW5pc2hlZCwgdGhlIHNpZ25hbCBpcyBjaGVja2VkIGFnYWluIGJlZm9yZSB3cml0aW5nLCBzbyBub3RoaW5nIGlzIHdyaXR0ZW4gYWZ0ZXIgYW4gdW5sb2FkLlxuICogLSBDb25jdXJyZW50IGNhbGxzIGZvciB0aGUgc2FtZSBjYWNoZSBwYXRoIHNoYXJlIG9uZSBvcGVyYXRpb24sIHNvIHRoZSB1c2VyIGlzIGFza2VkIG9uY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5cbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBjb25maXJtIH0gZnJvbSAnLi9tb2RhbHMvY29uZmlybS50cyc7XG5pbXBvcnQgeyByZXF1ZXN0VXJsRXggfSBmcm9tICcuL3JlcXVlc3QtdXJsLnRzJztcblxuY29uc3QgQllURVNfSU5fS0lMT0JZVEUgPSAxMDI0O1xuY29uc3QgSEVYX0JZVEVfTEVOR1RIID0gMjtcbmNvbnN0IEhFWF9SQURJWCA9IDE2O1xuY29uc3QgU0hBXzI1Nl9IRVhfUkVHX0VYUCA9IC9eWzAtOWEtZl17NjR9JC9pO1xuY29uc3QgVEVNUE9SQVJZX0ZJTEVfU1VGRklYID0gJy5kb3dubG9hZCc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGVuc3VyZVJlbGVhc2VBc3NldH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5zdXJlUmVsZWFzZUFzc2V0UGFyYW1zIHtcbiAgLyoqXG4gICAqIEFib3J0cyB0aGUgb3BlcmF0aW9uLiBQYXNzIHRoZSBwbHVnaW4ncyBhYm9ydCBzaWduYWwsIHNvIGFuIHVubG9hZCBzdG9wcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgZm9sZGVyIHRoYXQgaG9sZHMgdGhlIGNhY2hlZCBmaWxlLCB0eXBpY2FsbHkgYCR7cGx1Z2luLm1hbmlmZXN0LmRpcn0vYXNzZXRzYC5cbiAgICpcbiAgICogQSBmb2xkZXIgaW5zaWRlIHRoZSBjb25maWcgZm9sZGVyIGlzIG5vdCBzeW5jZWQsIHNvIGVhY2ggZGV2aWNlIGRvd25sb2FkcyB0aGUgYXNzZXQgb25jZS5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlRm9sZGVyUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2FjaGVkIGZpbGUuIEl0IG11c3Qgbm90IGNvbnRhaW4gYSBwYXRoIHNlcGFyYXRvci5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBleHBlY3RlZCBTSEEtMjU2IG9mIHRoZSBhc3NldCwgYXMgNjQgaGV4YWRlY2ltYWwgZGlnaXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hhMjU2OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFza3MgdGhlIHVzZXIgd2hldGhlciB0byBkb3dubG9hZCB0aGUgYXNzZXQuIERlZmF1bHRzIHRvIGEgY29uZmlybWF0aW9uIG1vZGFsLlxuICAgKlxuICAgKiBQYXNzIGAoKSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSlgIHdoZW4gdGhlIHVzZXIgaGFzIGFscmVhZHkgYWdyZWVkLCBmb3IgZXhhbXBsZSB0aHJvdWdoIGEgc2V0dGluZy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZERvd25sb2FkPzogKChyZXF1ZXN0OiBSZWxlYXNlQXNzZXRDb25zZW50UmVxdWVzdCkgPT4gUHJvbWlzZTxib29sZWFuPikgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBhc3NldCBpbiBieXRlcywgc2hvd24gdG8gdGhlIHVzZXIgd2hlbiBhc2tpbmcuXG4gICAqL1xuICByZWFkb25seSBzaXplSW5CeXRlcz86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGRvd25sb2FkIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIHRvIGRvd25sb2FkIHRoZSBhc3NldCBmcm9tLiBPbmx5IGBodHRwOmAgYW5kIGBodHRwczpgIFVSTHMgYXJlIGFjY2VwdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEdpdEh1YlJlbGVhc2VBc3NldFVybH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0R2l0SHViUmVsZWFzZUFzc2V0VXJsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZWxlYXNlIGFzc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnksIGFzIGA8b3duZXI+LzxuYW1lPmAuXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWxlYXNlIHRhZywgdHlwaWNhbGx5IHRoZSBwbHVnaW4gdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgdmVyaWZpZWQgcmVsZWFzZSBhc3NldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlQXNzZXQge1xuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGNhY2hlZCBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgVVJMIG9mIHRoZSBjYWNoZWQgZmlsZSwgZnJvbSB0aGUgYWRhcHRlcidzIGBnZXRSZXNvdXJjZVBhdGhgLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmlsZSB3YXMgYWxyZWFkeSBjYWNoZWQsIHNvIG5vdGhpbmcgd2FzIGRvd25sb2FkZWQuXG4gICAqL1xuICByZWFkb25seSB3YXNDYWNoZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3J9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgU0hBLTI1NiBvZiB0aGUgZG93bmxvYWRlZCBieXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdHVhbFNoYTI1Njogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwZWN0ZWQgU0hBLTI1Ni5cbiAgICovXG4gIHJlYWRvbmx5IGV4cGVjdGVkU2hhMjU2OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgdGhlIGFzc2V0IHdhcyBkb3dubG9hZGVkIGZyb20uXG4gICAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSB1c2VyIGlzIGFza2VkIHRvIGFncmVlIHRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbGVhc2VBc3NldENvbnNlbnRSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBhc3NldC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBhc3NldCBpbiBieXRlcywgd2hlbiBrbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IHNpemVJbkJ5dGVzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIHRoZSBhc3NldCBpcyBkb3dubG9hZGVkIGZyb20uXG4gICAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBkb3dubG9hZGVkIGJ5dGVzIGRvIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgU0hBLTI1Ni4gTm90aGluZyB3YXMgd3JpdHRlbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBUaGUgU0hBLTI1NiBvZiB0aGUgZG93bmxvYWRlZCBieXRlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhY3R1YWxTaGEyNTY6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGV4cGVjdGVkIFNIQS0yNTYuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhwZWN0ZWRTaGEyNTY6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFVSTCB0aGUgYXNzZXQgd2FzIGRvd25sb2FkZWQgZnJvbS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1cmw6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3JDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKGBUaGUgYXNzZXQgZG93bmxvYWRlZCBmcm9tICR7cGFyYW1zLnVybH0gaGFzIFNIQS0yNTYgJHtwYXJhbXMuYWN0dWFsU2hhMjU2fSwgZXhwZWN0ZWQgJHtwYXJhbXMuZXhwZWN0ZWRTaGEyNTZ9LmApO1xuICAgIHRoaXMubmFtZSA9ICdSZWxlYXNlQXNzZXRDaGVja3N1bUVycm9yJztcbiAgICB0aGlzLmFjdHVhbFNoYTI1NiA9IHBhcmFtcy5hY3R1YWxTaGEyNTY7XG4gICAgdGhpcy5leHBlY3RlZFNoYTI1NiA9IHBhcmFtcy5leHBlY3RlZFNoYTI1NjtcbiAgICB0aGlzLnVybCA9IHBhcmFtcy51cmw7XG4gIH1cbn1cblxuY29uc3QgaW5GbGlnaHRPcGVyYXRpb25zID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8bnVsbCB8IFJlbGVhc2VBc3NldD4+KCk7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIFNIQS0yNTYgb2YgdGhlIGdpdmVuIGJ5dGVzLlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGJ5dGVzLlxuICogQHJldHVybnMgVGhlIFNIQS0yNTYgYXMgNjQgbG93ZXJjYXNlIGhleGFkZWNpbWFsIGRpZ2l0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVTaGEyNTYoZGF0YTogQXJyYXlCdWZmZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbi9uby11bnN1cHBvcnRlZC1mZWF0dXJlcy9ub2RlLWJ1aWx0aW5zIC0tIFRoaXMgaXMgdGhlIE9ic2lkaWFuIHJlbmRlcmVyIFdlYiBBUEksIG5vdCBhIE5vZGUgYnVpbHRpbi5cbiAgY29uc3QgaGFzaCA9IGF3YWl0IHdpbmRvdy5jcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGRhdGEpO1xuICByZXR1cm4gWy4uLm5ldyBVaW50OEFycmF5KGhhc2gpXS5tYXAoKGJ5dGUpID0+IGJ5dGUudG9TdHJpbmcoSEVYX1JBRElYKS5wYWRTdGFydChIRVhfQllURV9MRU5HVEgsICcwJykpLmpvaW4oJycpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGNhY2hlZCwgdmVyaWZpZWQgYXNzZXQsIGRvd25sb2FkaW5nIGl0IGZpcnN0LCB3aXRoIHRoZSB1c2VyJ3MgY29uc2VudCwgd2hlbiBpdCBpcyBtaXNzaW5nIG9yIGNvcnJ1cHQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHZlcmlmaWVkIGFzc2V0LCBvciBgbnVsbGAgd2hlbiB0aGUgdXNlciBkZWNsaW5lZCB0aGUgZG93bmxvYWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVSZWxlYXNlQXNzZXQocGFyYW1zOiBFbnN1cmVSZWxlYXNlQXNzZXRQYXJhbXMpOiBQcm9taXNlPG51bGwgfCBSZWxlYXNlQXNzZXQ+IHtcbiAgaWYgKCFTSEFfMjU2X0hFWF9SRUdfRVhQLnRlc3QocGFyYW1zLnNoYTI1NikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgU0hBLTI1NjogJHtwYXJhbXMuc2hhMjU2fWApO1xuICB9XG5cbiAgaWYgKCFwYXJhbXMuZmlsZU5hbWUgfHwgL1svXFxcXF0vLnRlc3QocGFyYW1zLmZpbGVOYW1lKSB8fCBwYXJhbXMuZmlsZU5hbWUgPT09ICcuJyB8fCBwYXJhbXMuZmlsZU5hbWUgPT09ICcuLicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXNzZXQgZmlsZSBuYW1lOiAke3BhcmFtcy5maWxlTmFtZX1gKTtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBqb2luKHBhcmFtcy5jYWNoZUZvbGRlclBhdGgsIHBhcmFtcy5maWxlTmFtZSk7XG4gIGNvbnN0IGluRmxpZ2h0T3BlcmF0aW9uID0gaW5GbGlnaHRPcGVyYXRpb25zLmdldChwYXRoKTtcbiAgaWYgKGluRmxpZ2h0T3BlcmF0aW9uKSB7XG4gICAgcmV0dXJuIGF3YWl0IGluRmxpZ2h0T3BlcmF0aW9uO1xuICB9XG5cbiAgY29uc3Qgb3BlcmF0aW9uID0gZW5zdXJlUmVsZWFzZUFzc2V0SW1wbChwYXJhbXMsIHBhdGgpO1xuICBpbkZsaWdodE9wZXJhdGlvbnMuc2V0KHBhdGgsIG9wZXJhdGlvbik7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IG9wZXJhdGlvbjtcbiAgfSBmaW5hbGx5IHtcbiAgICBpbkZsaWdodE9wZXJhdGlvbnMuZGVsZXRlKHBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIGJ5dGUgc2l6ZSBmb3IgYSBwZXJzb24gdG8gcmVhZC5cbiAqXG4gKiBAcGFyYW0gc2l6ZUluQnl0ZXMgLSBUaGUgc2l6ZSBpbiBieXRlcy5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgc2l6ZSwgc3VjaCBhcyBgMTIuMyBNQmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCeXRlU2l6ZShzaXplSW5CeXRlczogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKHNpemVJbkJ5dGVzIDwgQllURVNfSU5fS0lMT0JZVEUpIHtcbiAgICByZXR1cm4gYCR7U3RyaW5nKHNpemVJbkJ5dGVzKX0gQmA7XG4gIH1cbiAgbGV0IHNpemUgPSBzaXplSW5CeXRlcyAvIEJZVEVTX0lOX0tJTE9CWVRFO1xuICBsZXQgdW5pdCA9ICdLQic7XG4gIGZvciAoY29uc3QgbGFyZ2VyVW5pdCBvZiBbJ01CJywgJ0dCJ10pIHtcbiAgICBpZiAoc2l6ZSA8IEJZVEVTX0lOX0tJTE9CWVRFKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2l6ZSAvPSBCWVRFU19JTl9LSUxPQllURTtcbiAgICB1bml0ID0gbGFyZ2VyVW5pdDtcbiAgfVxuICByZXR1cm4gYCR7c2l6ZS50b0ZpeGVkKDEpfSAke3VuaXR9YDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGRvd25sb2FkIFVSTCBvZiBhIEdpdEh1YiByZWxlYXNlIGFzc2V0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBVUkwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHaXRIdWJSZWxlYXNlQXNzZXRVcmwocGFyYW1zOiBHZXRHaXRIdWJSZWxlYXNlQXNzZXRVcmxQYXJhbXMpOiBzdHJpbmcge1xuICByZXR1cm4gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3BhcmFtcy5yZXBvc2l0b3J5fS9yZWxlYXNlcy9kb3dubG9hZC8ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbXMudGFnKX0vJHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1zLmZpbGVOYW1lKX1gO1xufVxuXG5hc3luYyBmdW5jdGlvbiBlbnN1cmVSZWxlYXNlQXNzZXRJbXBsKHBhcmFtczogRW5zdXJlUmVsZWFzZUFzc2V0UGFyYW1zLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPG51bGwgfCBSZWxlYXNlQXNzZXQ+IHtcbiAgY29uc3QgeyBhYm9ydFNpZ25hbCwgYXBwIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGFkYXB0ZXIgPSBhcHAudmF1bHQuYWRhcHRlcjtcbiAgY29uc3QgZXhwZWN0ZWRTaGEyNTYgPSBwYXJhbXMuc2hhMjU2LnRvTG93ZXJDYXNlKCk7XG4gIGFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGlmIChhd2FpdCBhZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgIGNvbnN0IGNhY2hlZEJ5dGVzID0gYXdhaXQgYWRhcHRlci5yZWFkQmluYXJ5KHBhdGgpO1xuICAgIGlmIChhd2FpdCBjb21wdXRlU2hhMjU2KGNhY2hlZEJ5dGVzKSA9PT0gZXhwZWN0ZWRTaGEyNTYpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlc291cmNlVXJsOiBhZGFwdGVyLmdldFJlc291cmNlUGF0aChwYXRoKSxcbiAgICAgICAgd2FzQ2FjaGVkOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICBhd2FpdCBhZGFwdGVyLnJlbW92ZShwYXRoKTtcbiAgfVxuXG4gIGNvbnN0IGNvbnNlbnRSZXF1ZXN0OiBSZWxlYXNlQXNzZXRDb25zZW50UmVxdWVzdCA9IHtcbiAgICBmaWxlTmFtZTogcGFyYW1zLmZpbGVOYW1lLFxuICAgIHNpemVJbkJ5dGVzOiBwYXJhbXMuc2l6ZUluQnl0ZXMsXG4gICAgdXJsOiBwYXJhbXMudXJsXG4gIH07XG4gIGNvbnN0IGlzRG93bmxvYWRBbGxvd2VkID0gcGFyYW1zLnNob3VsZERvd25sb2FkID8gYXdhaXQgcGFyYW1zLnNob3VsZERvd25sb2FkKGNvbnNlbnRSZXF1ZXN0KSA6IGF3YWl0IHNob3VsZERvd25sb2FkV2l0aE1vZGFsKGFwcCwgY29uc2VudFJlcXVlc3QpO1xuICBpZiAoIWlzRG93bmxvYWRBbGxvd2VkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgYWJvcnRTaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0VXJsRXgoe1xuICAgIGFib3J0U2lnbmFsLFxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogcGFyYW1zLnRpbWVvdXRJbk1pbGxpc2Vjb25kcyxcbiAgICB1cmw6IHBhcmFtcy51cmxcbiAgfSk7XG4gIGNvbnN0IGJ5dGVzID0gcmVzcG9uc2UuYXJyYXlCdWZmZXI7XG4gIGNvbnN0IGFjdHVhbFNoYTI1NiA9IGF3YWl0IGNvbXB1dGVTaGEyNTYoYnl0ZXMpO1xuICBpZiAoYWN0dWFsU2hhMjU2ICE9PSBleHBlY3RlZFNoYTI1Nikge1xuICAgIHRocm93IG5ldyBSZWxlYXNlQXNzZXRDaGVja3N1bUVycm9yKHsgYWN0dWFsU2hhMjU2LCBleHBlY3RlZFNoYTI1NiwgdXJsOiBwYXJhbXMudXJsIH0pO1xuICB9XG4gIGFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGlmICghYXdhaXQgYWRhcHRlci5leGlzdHMocGFyYW1zLmNhY2hlRm9sZGVyUGF0aCkpIHtcbiAgICBhd2FpdCBhZGFwdGVyLm1rZGlyKHBhcmFtcy5jYWNoZUZvbGRlclBhdGgpO1xuICB9XG5cbiAgY29uc3QgdGVtcG9yYXJ5UGF0aCA9IGAke3BhdGh9JHtURU1QT1JBUllfRklMRV9TVUZGSVh9YDtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhZGFwdGVyLndyaXRlQmluYXJ5KHRlbXBvcmFyeVBhdGgsIGJ5dGVzKTtcbiAgICBpZiAoYXdhaXQgYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICAgIGF3YWl0IGFkYXB0ZXIucmVtb3ZlKHBhdGgpO1xuICAgIH1cbiAgICBhd2FpdCBhZGFwdGVyLnJlbmFtZSh0ZW1wb3JhcnlQYXRoLCBwYXRoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoYXdhaXQgYWRhcHRlci5leGlzdHModGVtcG9yYXJ5UGF0aCkpIHtcbiAgICAgIGF3YWl0IGFkYXB0ZXIucmVtb3ZlKHRlbXBvcmFyeVBhdGgpO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGF0aCxcbiAgICByZXNvdXJjZVVybDogYWRhcHRlci5nZXRSZXNvdXJjZVBhdGgocGF0aCksXG4gICAgd2FzQ2FjaGVkOiBmYWxzZVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzaG91bGREb3dubG9hZFdpdGhNb2RhbChhcHA6IEFwcCwgcmVxdWVzdDogUmVsZWFzZUFzc2V0Q29uc2VudFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgaG9zdCA9IG5ldyBVUkwocmVxdWVzdC51cmwpLmhvc3Q7XG4gIGNvbnN0IG1lc3NhZ2UgPSByZXF1ZXN0LnNpemVJbkJ5dGVzID09PSB1bmRlZmluZWRcbiAgICA/IHQoKCQpID0+ICQub2JzaWRpYW5MaWIucmVsZWFzZUFzc2V0LmNvbnNlbnRNZXNzYWdlVW5rbm93blNpemUsIHsgZmlsZU5hbWU6IHJlcXVlc3QuZmlsZU5hbWUsIGhvc3QgfSlcbiAgICA6IHQoKCQpID0+ICQub2JzaWRpYW5MaWIucmVsZWFzZUFzc2V0LmNvbnNlbnRNZXNzYWdlLCB7IGZpbGVOYW1lOiByZXF1ZXN0LmZpbGVOYW1lLCBob3N0LCBzaXplOiBmb3JtYXRCeXRlU2l6ZShyZXF1ZXN0LnNpemVJbkJ5dGVzKSB9KTtcbiAgcmV0dXJuIGF3YWl0IGNvbmZpcm0oe1xuICAgIGFwcCxcbiAgICBtZXNzYWdlLFxuICAgIG9rQnV0dG9uVGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5yZWxlYXNlQXNzZXQuZG93bmxvYWQpLFxuICAgIHRpdGxlOiB0KCgkKSA9PiAkLm9ic2lkaWFuTGliLnJlbGVhc2VBc3NldC5jb25zZW50VGl0bGUsIHsgZmlsZU5hbWU6IHJlcXVlc3QuZmlsZU5hbWUgfSlcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBLFNBQVMsWUFBWTtBQUVyQixTQUFTLFNBQVM7QUFDbEIsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsb0JBQW9CO0FBRTdCLE1BQU0sb0JBQW9CO0FBQzFCLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sWUFBWTtBQUNsQixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLHdCQUF3QjtBQTJJdkIsTUFBTSxrQ0FBa0MsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSW5DO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVCxZQUFZLFFBQW9EO0FBQ3JFLFVBQU0sNkJBQTZCLE9BQU8sR0FBRyxnQkFBZ0IsT0FBTyxZQUFZLGNBQWMsT0FBTyxjQUFjLEdBQUc7QUFDdEgsU0FBSyxPQUFPO0FBQ1osU0FBSyxlQUFlLE9BQU87QUFDM0IsU0FB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
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWxlYXNlLWFzc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEb3dubG9hZHMgYW4gb3B0aW9uYWwgZGF0YSBhc3NldCBvZiBhIHBsdWdpbiByZWxlYXNlIG9uIGRlbWFuZDogaXQgYXNrcyB0aGUgdXNlciBmaXJzdCwgdmVyaWZpZXMgYW4gZXhwZWN0ZWQgU0hBLTI1NlxuICogYmVmb3JlIGFueXRoaW5nIGlzIHdyaXR0ZW4gb3IgZXhwb3NlZCwga2VlcHMgdGhlIHZlcmlmaWVkIGZpbGUgaW4gYSBsb2NhbCBjYWNoZSBmb2xkZXIgYW5kIGhhbmRzIGJhY2sgdGhlIGFkYXB0ZXJcbiAqIHJlc291cmNlIFVSTC5cbiAqXG4gKiBJdCB1c2VzIG9ubHkgY3Jvc3MtcGxhdGZvcm0gQVBJcyAoe0BsaW5rIHJlcXVlc3RVcmxFeH0sIHRoZSB2YXVsdCBhZGFwdGVyIGFuZCBgY3J5cHRvLnN1YnRsZWApLCBzbyBpdCB3b3JrcyBvbiBkZXNrdG9wXG4gKiBhbmQgbW9iaWxlIGFsaWtlLlxuICpcbiAqIEJlaGF2aW9yIHRoYXQgaXMgcGFydCBvZiB0aGUgY29udHJhY3Q6XG4gKlxuICogLSBBIGNhY2hlZCBmaWxlIGlzIGhhc2hlZCBvbiBldmVyeSBjYWxsLiBXaGVuIGl0cyBoYXNoIG1hdGNoZXMsIGl0IGlzIHJldXNlZCB3aXRob3V0IGFza2luZyBvciBkb3dubG9hZGluZy4gV2hlbiBpdFxuICogICBkb2VzIG5vdCwgaXQgaXMgcmVtb3ZlZCBhbmQgdHJlYXRlZCBhcyBtaXNzaW5nLCBzbyBhIGNvcnJ1cHQgb3IgdHJ1bmNhdGVkIGNhY2hlIHJlY292ZXJzIGJ5IGl0c2VsZi5cbiAqIC0gVGhlIHVzZXIgaXMgYXNrZWQgb25seSB3aGVuIGEgZG93bmxvYWQgaXMgbmVlZGVkLiBEZWNsaW5pbmcgcmVzb2x2ZXMgd2l0aCBgbnVsbGAgYW5kIHdyaXRlcyBub3RoaW5nLlxuICogLSBEb3dubG9hZGVkIGJ5dGVzIGFyZSB2ZXJpZmllZCBiZWZvcmUgdGhleSBhcmUgd3JpdHRlbi4gQSBtaXNtYXRjaCB0aHJvd3Mge0BsaW5rIFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3J9IGFuZFxuICogICB3cml0ZXMgbm90aGluZy5cbiAqIC0gVGhlIGZpbGUgaXMgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBzaWJsaW5nIGFuZCB0aGVuIHJlbmFtZWQgaW50byBwbGFjZSwgc28gYW4gaW50ZXJydXB0ZWQgd3JpdGUgbmV2ZXIgbGVhdmVzIGFcbiAqICAgcGFydGlhbCBmaWxlIHVuZGVyIHRoZSBjYWNoZWQgbmFtZS5cbiAqIC0gQW4gYWJvcnQgKHBhc3MgdGhlIHBsdWdpbidzIGFib3J0IHNpZ25hbCwgc28gYSBwbHVnaW4gdW5sb2FkIGNvdW50cykgcmVqZWN0cyB3aXRoIHRoZSBzaWduYWwncyByZWFzb24uIE9uY2UgdGhlXG4gKiAgIGRvd25sb2FkIGhhcyBmaW5pc2hlZCwgdGhlIHNpZ25hbCBpcyBjaGVja2VkIGFnYWluIGJlZm9yZSB3cml0aW5nLCBzbyBub3RoaW5nIGlzIHdyaXR0ZW4gYWZ0ZXIgYW4gdW5sb2FkLlxuICogLSBDb25jdXJyZW50IGNhbGxzIGZvciB0aGUgc2FtZSBjYWNoZSBwYXRoIHNoYXJlIG9uZSBvcGVyYXRpb24sIHNvIHRoZSB1c2VyIGlzIGFza2VkIG9uY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5cbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBjb25maXJtIH0gZnJvbSAnLi9tb2RhbHMvY29uZmlybS50cyc7XG5pbXBvcnQgeyByZXF1ZXN0VXJsRXggfSBmcm9tICcuL3JlcXVlc3QtdXJsLnRzJztcblxuY29uc3QgQllURVNfSU5fS0lMT0JZVEUgPSAxMDI0O1xuY29uc3QgSEVYX0JZVEVfTEVOR1RIID0gMjtcbmNvbnN0IEhFWF9SQURJWCA9IDE2O1xuY29uc3QgU0hBXzI1Nl9IRVhfUkVHX0VYUCA9IC9eWzAtOWEtZl17NjR9JC9pO1xuY29uc3QgVEVNUE9SQVJZX0ZJTEVfU1VGRklYID0gJy5kb3dubG9hZCc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGVuc3VyZVJlbGVhc2VBc3NldH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5zdXJlUmVsZWFzZUFzc2V0UGFyYW1zIHtcbiAgLyoqXG4gICAqIEFib3J0cyB0aGUgb3BlcmF0aW9uLiBQYXNzIHRoZSBwbHVnaW4ncyBhYm9ydCBzaWduYWwsIHNvIGFuIHVubG9hZCBzdG9wcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgZm9sZGVyIHRoYXQgaG9sZHMgdGhlIGNhY2hlZCBmaWxlLCB0eXBpY2FsbHkgYCR7cGx1Z2luLm1hbmlmZXN0LmRpcn0vYXNzZXRzYC5cbiAgICpcbiAgICogQSBmb2xkZXIgaW5zaWRlIHRoZSBjb25maWcgZm9sZGVyIGlzIG5vdCBzeW5jZWQsIHNvIGVhY2ggZGV2aWNlIGRvd25sb2FkcyB0aGUgYXNzZXQgb25jZS5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlRm9sZGVyUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2FjaGVkIGZpbGUuIEl0IG11c3Qgbm90IGNvbnRhaW4gYSBwYXRoIHNlcGFyYXRvci5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBleHBlY3RlZCBTSEEtMjU2IG9mIHRoZSBhc3NldCwgYXMgNjQgaGV4YWRlY2ltYWwgZGlnaXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hhMjU2OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFza3MgdGhlIHVzZXIgd2hldGhlciB0byBkb3dubG9hZCB0aGUgYXNzZXQuIERlZmF1bHRzIHRvIGEgY29uZmlybWF0aW9uIG1vZGFsLlxuICAgKlxuICAgKiBQYXNzIGAoKSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSlgIHdoZW4gdGhlIHVzZXIgaGFzIGFscmVhZHkgYWdyZWVkLCBmb3IgZXhhbXBsZSB0aHJvdWdoIGEgc2V0dGluZy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZERvd25sb2FkPzogKChyZXF1ZXN0OiBSZWxlYXNlQXNzZXRDb25zZW50UmVxdWVzdCkgPT4gUHJvbWlzZTxib29sZWFuPikgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBhc3NldCBpbiBieXRlcywgc2hvd24gdG8gdGhlIHVzZXIgd2hlbiBhc2tpbmcuXG4gICAqL1xuICByZWFkb25seSBzaXplSW5CeXRlcz86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGRvd25sb2FkIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIHRvIGRvd25sb2FkIHRoZSBhc3NldCBmcm9tLiBPbmx5IGBodHRwOmAgYW5kIGBodHRwczpgIFVSTHMgYXJlIGFjY2VwdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEdpdEh1YlJlbGVhc2VBc3NldFVybH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0R2l0SHViUmVsZWFzZUFzc2V0VXJsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZWxlYXNlIGFzc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnksIGFzIGA8b3duZXI+LzxuYW1lPmAuXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWxlYXNlIHRhZywgdHlwaWNhbGx5IHRoZSBwbHVnaW4gdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgdmVyaWZpZWQgcmVsZWFzZSBhc3NldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlQXNzZXQge1xuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGNhY2hlZCBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgVVJMIG9mIHRoZSBjYWNoZWQgZmlsZSwgZnJvbSB0aGUgYWRhcHRlcidzIGBnZXRSZXNvdXJjZVBhdGhgLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmlsZSB3YXMgYWxyZWFkeSBjYWNoZWQsIHNvIG5vdGhpbmcgd2FzIGRvd25sb2FkZWQuXG4gICAqL1xuICByZWFkb25seSB3YXNDYWNoZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3J9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgU0hBLTI1NiBvZiB0aGUgZG93bmxvYWRlZCBieXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdHVhbFNoYTI1Njogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwZWN0ZWQgU0hBLTI1Ni5cbiAgICovXG4gIHJlYWRvbmx5IGV4cGVjdGVkU2hhMjU2OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgdGhlIGFzc2V0IHdhcyBkb3dubG9hZGVkIGZyb20uXG4gICAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSB1c2VyIGlzIGFza2VkIHRvIGFncmVlIHRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbGVhc2VBc3NldENvbnNlbnRSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBhc3NldC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBhc3NldCBpbiBieXRlcywgd2hlbiBrbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IHNpemVJbkJ5dGVzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIHRoZSBhc3NldCBpcyBkb3dubG9hZGVkIGZyb20uXG4gICAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBkb3dubG9hZGVkIGJ5dGVzIGRvIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgU0hBLTI1Ni4gTm90aGluZyB3YXMgd3JpdHRlbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBUaGUgU0hBLTI1NiBvZiB0aGUgZG93bmxvYWRlZCBieXRlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhY3R1YWxTaGEyNTY6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGV4cGVjdGVkIFNIQS0yNTYuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhwZWN0ZWRTaGEyNTY6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFVSTCB0aGUgYXNzZXQgd2FzIGRvd25sb2FkZWQgZnJvbS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1cmw6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3JDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKGBUaGUgYXNzZXQgZG93bmxvYWRlZCBmcm9tICR7cGFyYW1zLnVybH0gaGFzIFNIQS0yNTYgJHtwYXJhbXMuYWN0dWFsU2hhMjU2fSwgZXhwZWN0ZWQgJHtwYXJhbXMuZXhwZWN0ZWRTaGEyNTZ9LmApO1xuICAgIHRoaXMubmFtZSA9ICdSZWxlYXNlQXNzZXRDaGVja3N1bUVycm9yJztcbiAgICB0aGlzLmFjdHVhbFNoYTI1NiA9IHBhcmFtcy5hY3R1YWxTaGEyNTY7XG4gICAgdGhpcy5leHBlY3RlZFNoYTI1NiA9IHBhcmFtcy5leHBlY3RlZFNoYTI1NjtcbiAgICB0aGlzLnVybCA9IHBhcmFtcy51cmw7XG4gIH1cbn1cblxuY29uc3QgaW5GbGlnaHRPcGVyYXRpb25zID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8bnVsbCB8IFJlbGVhc2VBc3NldD4+KCk7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIFNIQS0yNTYgb2YgdGhlIGdpdmVuIGJ5dGVzLlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGJ5dGVzLlxuICogQHJldHVybnMgVGhlIFNIQS0yNTYgYXMgNjQgbG93ZXJjYXNlIGhleGFkZWNpbWFsIGRpZ2l0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVTaGEyNTYoZGF0YTogQXJyYXlCdWZmZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBoYXNoID0gYXdhaXQgd2luZG93LmNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XG4gIHJldHVybiBbLi4ubmV3IFVpbnQ4QXJyYXkoaGFzaCldLm1hcCgoYnl0ZSkgPT4gYnl0ZS50b1N0cmluZyhIRVhfUkFESVgpLnBhZFN0YXJ0KEhFWF9CWVRFX0xFTkdUSCwgJzAnKSkuam9pbignJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY2FjaGVkLCB2ZXJpZmllZCBhc3NldCwgZG93bmxvYWRpbmcgaXQgZmlyc3QsIHdpdGggdGhlIHVzZXIncyBjb25zZW50LCB3aGVuIGl0IGlzIG1pc3Npbmcgb3IgY29ycnVwdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgdmVyaWZpZWQgYXNzZXQsIG9yIGBudWxsYCB3aGVuIHRoZSB1c2VyIGRlY2xpbmVkIHRoZSBkb3dubG9hZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZVJlbGVhc2VBc3NldChwYXJhbXM6IEVuc3VyZVJlbGVhc2VBc3NldFBhcmFtcyk6IFByb21pc2U8bnVsbCB8IFJlbGVhc2VBc3NldD4ge1xuICBpZiAoIVNIQV8yNTZfSEVYX1JFR19FWFAudGVzdChwYXJhbXMuc2hhMjU2KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBTSEEtMjU2OiAke3BhcmFtcy5zaGEyNTZ9YCk7XG4gIH1cblxuICBpZiAoIXBhcmFtcy5maWxlTmFtZSB8fCAvWy9cXFxcXS8udGVzdChwYXJhbXMuZmlsZU5hbWUpIHx8IHBhcmFtcy5maWxlTmFtZSA9PT0gJy4nIHx8IHBhcmFtcy5maWxlTmFtZSA9PT0gJy4uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhc3NldCBmaWxlIG5hbWU6ICR7cGFyYW1zLmZpbGVOYW1lfWApO1xuICB9XG5cbiAgY29uc3QgcGF0aCA9IGpvaW4ocGFyYW1zLmNhY2hlRm9sZGVyUGF0aCwgcGFyYW1zLmZpbGVOYW1lKTtcbiAgY29uc3QgaW5GbGlnaHRPcGVyYXRpb24gPSBpbkZsaWdodE9wZXJhdGlvbnMuZ2V0KHBhdGgpO1xuICBpZiAoaW5GbGlnaHRPcGVyYXRpb24pIHtcbiAgICByZXR1cm4gYXdhaXQgaW5GbGlnaHRPcGVyYXRpb247XG4gIH1cblxuICBjb25zdCBvcGVyYXRpb24gPSBlbnN1cmVSZWxlYXNlQXNzZXRJbXBsKHBhcmFtcywgcGF0aCk7XG4gIGluRmxpZ2h0T3BlcmF0aW9ucy5zZXQocGF0aCwgb3BlcmF0aW9uKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgb3BlcmF0aW9uO1xuICB9IGZpbmFsbHkge1xuICAgIGluRmxpZ2h0T3BlcmF0aW9ucy5kZWxldGUocGF0aCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgYnl0ZSBzaXplIGZvciBhIHBlcnNvbiB0byByZWFkLlxuICpcbiAqIEBwYXJhbSBzaXplSW5CeXRlcyAtIFRoZSBzaXplIGluIGJ5dGVzLlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBzaXplLCBzdWNoIGFzIGAxMi4zIE1CYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ5dGVTaXplKHNpemVJbkJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoc2l6ZUluQnl0ZXMgPCBCWVRFU19JTl9LSUxPQllURSkge1xuICAgIHJldHVybiBgJHtTdHJpbmcoc2l6ZUluQnl0ZXMpfSBCYDtcbiAgfVxuICBsZXQgc2l6ZSA9IHNpemVJbkJ5dGVzIC8gQllURVNfSU5fS0lMT0JZVEU7XG4gIGxldCB1bml0ID0gJ0tCJztcbiAgZm9yIChjb25zdCBsYXJnZXJVbml0IG9mIFsnTUInLCAnR0InXSkge1xuICAgIGlmIChzaXplIDwgQllURVNfSU5fS0lMT0JZVEUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBzaXplIC89IEJZVEVTX0lOX0tJTE9CWVRFO1xuICAgIHVuaXQgPSBsYXJnZXJVbml0O1xuICB9XG4gIHJldHVybiBgJHtzaXplLnRvRml4ZWQoMSl9ICR7dW5pdH1gO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZG93bmxvYWQgVVJMIG9mIGEgR2l0SHViIHJlbGVhc2UgYXNzZXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIFVSTC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdpdEh1YlJlbGVhc2VBc3NldFVybChwYXJhbXM6IEdldEdpdEh1YlJlbGVhc2VBc3NldFVybFBhcmFtcyk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7cGFyYW1zLnJlcG9zaXRvcnl9L3JlbGVhc2VzL2Rvd25sb2FkLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtcy50YWcpfS8ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbXMuZmlsZU5hbWUpfWA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZVJlbGVhc2VBc3NldEltcGwocGFyYW1zOiBFbnN1cmVSZWxlYXNlQXNzZXRQYXJhbXMsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8bnVsbCB8IFJlbGVhc2VBc3NldD4ge1xuICBjb25zdCB7IGFib3J0U2lnbmFsLCBhcHAgfSA9IHBhcmFtcztcbiAgY29uc3QgYWRhcHRlciA9IGFwcC52YXVsdC5hZGFwdGVyO1xuICBjb25zdCBleHBlY3RlZFNoYTI1NiA9IHBhcmFtcy5zaGEyNTYudG9Mb3dlckNhc2UoKTtcbiAgYWJvcnRTaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG5cbiAgaWYgKGF3YWl0IGFkYXB0ZXIuZXhpc3RzKHBhdGgpKSB7XG4gICAgY29uc3QgY2FjaGVkQnl0ZXMgPSBhd2FpdCBhZGFwdGVyLnJlYWRCaW5hcnkocGF0aCk7XG4gICAgaWYgKGF3YWl0IGNvbXB1dGVTaGEyNTYoY2FjaGVkQnl0ZXMpID09PSBleHBlY3RlZFNoYTI1Nikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVzb3VyY2VVcmw6IGFkYXB0ZXIuZ2V0UmVzb3VyY2VQYXRoKHBhdGgpLFxuICAgICAgICB3YXNDYWNoZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICAgIGF3YWl0IGFkYXB0ZXIucmVtb3ZlKHBhdGgpO1xuICB9XG5cbiAgY29uc3QgY29uc2VudFJlcXVlc3Q6IFJlbGVhc2VBc3NldENvbnNlbnRSZXF1ZXN0ID0ge1xuICAgIGZpbGVOYW1lOiBwYXJhbXMuZmlsZU5hbWUsXG4gICAgc2l6ZUluQnl0ZXM6IHBhcmFtcy5zaXplSW5CeXRlcyxcbiAgICB1cmw6IHBhcmFtcy51cmxcbiAgfTtcbiAgY29uc3QgaXNEb3dubG9hZEFsbG93ZWQgPSBwYXJhbXMuc2hvdWxkRG93bmxvYWQgPyBhd2FpdCBwYXJhbXMuc2hvdWxkRG93bmxvYWQoY29uc2VudFJlcXVlc3QpIDogYXdhaXQgc2hvdWxkRG93bmxvYWRXaXRoTW9kYWwoYXBwLCBjb25zZW50UmVxdWVzdCk7XG4gIGlmICghaXNEb3dubG9hZEFsbG93ZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBhYm9ydFNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmxFeCh7XG4gICAgYWJvcnRTaWduYWwsXG4gICAgdGltZW91dEluTWlsbGlzZWNvbmRzOiBwYXJhbXMudGltZW91dEluTWlsbGlzZWNvbmRzLFxuICAgIHVybDogcGFyYW1zLnVybFxuICB9KTtcbiAgY29uc3QgYnl0ZXMgPSByZXNwb25zZS5hcnJheUJ1ZmZlcjtcbiAgY29uc3QgYWN0dWFsU2hhMjU2ID0gYXdhaXQgY29tcHV0ZVNoYTI1NihieXRlcyk7XG4gIGlmIChhY3R1YWxTaGEyNTYgIT09IGV4cGVjdGVkU2hhMjU2KSB7XG4gICAgdGhyb3cgbmV3IFJlbGVhc2VBc3NldENoZWNrc3VtRXJyb3IoeyBhY3R1YWxTaGEyNTYsIGV4cGVjdGVkU2hhMjU2LCB1cmw6IHBhcmFtcy51cmwgfSk7XG4gIH1cbiAgYWJvcnRTaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG5cbiAgaWYgKCFhd2FpdCBhZGFwdGVyLmV4aXN0cyhwYXJhbXMuY2FjaGVGb2xkZXJQYXRoKSkge1xuICAgIGF3YWl0IGFkYXB0ZXIubWtkaXIocGFyYW1zLmNhY2hlRm9sZGVyUGF0aCk7XG4gIH1cblxuICBjb25zdCB0ZW1wb3JhcnlQYXRoID0gYCR7cGF0aH0ke1RFTVBPUkFSWV9GSUxFX1NVRkZJWH1gO1xuICB0cnkge1xuICAgIGF3YWl0IGFkYXB0ZXIud3JpdGVCaW5hcnkodGVtcG9yYXJ5UGF0aCwgYnl0ZXMpO1xuICAgIGlmIChhd2FpdCBhZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgICAgYXdhaXQgYWRhcHRlci5yZW1vdmUocGF0aCk7XG4gICAgfVxuICAgIGF3YWl0IGFkYXB0ZXIucmVuYW1lKHRlbXBvcmFyeVBhdGgsIHBhdGgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChhd2FpdCBhZGFwdGVyLmV4aXN0cyh0ZW1wb3JhcnlQYXRoKSkge1xuICAgICAgYXdhaXQgYWRhcHRlci5yZW1vdmUodGVtcG9yYXJ5UGF0aCk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoLFxuICAgIHJlc291cmNlVXJsOiBhZGFwdGVyLmdldFJlc291cmNlUGF0aChwYXRoKSxcbiAgICB3YXNDYWNoZWQ6IGZhbHNlXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNob3VsZERvd25sb2FkV2l0aE1vZGFsKGFwcDogQXBwLCByZXF1ZXN0OiBSZWxlYXNlQXNzZXRDb25zZW50UmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBob3N0ID0gbmV3IFVSTChyZXF1ZXN0LnVybCkuaG9zdDtcbiAgY29uc3QgbWVzc2FnZSA9IHJlcXVlc3Quc2l6ZUluQnl0ZXMgPT09IHVuZGVmaW5lZFxuICAgID8gdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5yZWxlYXNlQXNzZXQuY29uc2VudE1lc3NhZ2VVbmtub3duU2l6ZSwgeyBmaWxlTmFtZTogcmVxdWVzdC5maWxlTmFtZSwgaG9zdCB9KVxuICAgIDogdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5yZWxlYXNlQXNzZXQuY29uc2VudE1lc3NhZ2UsIHsgZmlsZU5hbWU6IHJlcXVlc3QuZmlsZU5hbWUsIGhvc3QsIHNpemU6IGZvcm1hdEJ5dGVTaXplKHJlcXVlc3Quc2l6ZUluQnl0ZXMpIH0pO1xuICByZXR1cm4gYXdhaXQgY29uZmlybSh7XG4gICAgYXBwLFxuICAgIG1lc3NhZ2UsXG4gICAgb2tCdXR0b25UZXh0OiB0KCgkKSA9PiAkLm9ic2lkaWFuTGliLnJlbGVhc2VBc3NldC5kb3dubG9hZCksXG4gICAgdGl0bGU6IHQoKCQpID0+ICQub2JzaWRpYW5MaWIucmVsZWFzZUFzc2V0LmNvbnNlbnRUaXRsZSwgeyBmaWxlTmFtZTogcmVxdWVzdC5maWxlTmFtZSB9KVxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwQkEsU0FBUyxZQUFZO0FBRXJCLFNBQVMsU0FBUztBQUNsQixTQUFTLGVBQWU7QUFDeEIsU0FBUyxvQkFBb0I7QUFFN0IsTUFBTSxvQkFBb0I7QUFDMUIsTUFBTSxrQkFBa0I7QUFDeEIsTUFBTSxZQUFZO0FBQ2xCLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sd0JBQXdCO0FBMkl2QixNQUFNLGtDQUFrQyxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJbkM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9ULFlBQVksUUFBb0Q7QUFDckUsVUFBTSw2QkFBNkIsT0FBTyxHQUFHLGdCQUFnQixPQUFPLFlBQVksY0FBYyxPQUFPLGNBQWMsR0FBRztBQUN0SCxTQUFLLE9BQU87QUFDWixTQUFLLGVBQWUsT0FBTztBQUMzQixTQUFLLGlCQUFpQixPQUFPO0FBQzdCLFNBQUssTUFBTSxPQUFPO0FBQUEsRUFDcEI7QUFDRjtBQUVBLE1BQU0scUJBQXFCLG9CQUFJLElBQTBDO0FBUXpFLGVBQXNCLGNBQWMsTUFBb0M7QUFDdEUsUUFBTSxPQUFPLE1BQU0sT0FBTyxPQUFP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
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
*
|
|
37
37
|
* The explicit {@link unlockResourceForPath} pair remains available for non-`using` call sites.
|
|
38
38
|
*/
|
|
39
|
+
import type { DisposableEx } from '@mnaoumov/typescript-lib/disposable';
|
|
39
40
|
import type { App } from 'obsidian';
|
|
40
41
|
import type { PathOrFile } from './file-system.mjs';
|
|
41
42
|
import { ComponentEx } from './components/component-ex.mjs';
|
|
@@ -176,9 +177,9 @@ export declare class ResourceLockComponent extends ComponentEx {
|
|
|
176
177
|
* ```
|
|
177
178
|
*
|
|
178
179
|
* @param pathsOrFiles - The paths (or files/folders) whose mutation by this operation is sanctioned.
|
|
179
|
-
* @returns A {@link
|
|
180
|
+
* @returns A {@link DisposableEx} that ends the bypass scope when disposed.
|
|
180
181
|
*/
|
|
181
|
-
bypassBlockedMutations(pathsOrFiles: readonly PathOrFile[]):
|
|
182
|
+
bypassBlockedMutations(pathsOrFiles: readonly PathOrFile[]): DisposableEx;
|
|
182
183
|
/**
|
|
183
184
|
* Checks whether the path is locked directly or lies under a `subtree`-locked ancestor folder.
|
|
184
185
|
*
|
|
@@ -212,9 +213,9 @@ export declare class ResourceLockComponent extends ComponentEx {
|
|
|
212
213
|
* in the unlock confirmation). Pass an {@link ResourceLockComponentLockForPathParams.abortController}
|
|
213
214
|
* to make the lock cancelable via a lock indicator's "unlock" menu, the "Unlock active note" command,
|
|
214
215
|
* or {@link requestResourceUnlockForPath}.
|
|
215
|
-
* @returns A {@link
|
|
216
|
+
* @returns A {@link DisposableEx} that releases this lock when disposed. Disposing more than once is a no-op.
|
|
216
217
|
*/
|
|
217
|
-
lockForPath(params: ResourceLockComponentLockForPathParams):
|
|
218
|
+
lockForPath(params: ResourceLockComponentLockForPathParams): DisposableEx;
|
|
218
219
|
/**
|
|
219
220
|
* Releases every lock still held by this plugin when the component (and thus the plugin) unloads,
|
|
220
221
|
* so no note is left stuck read-only by an operation that never completed.
|
|
@@ -297,13 +298,13 @@ export declare function isResourceLockedForPathByAncestor(app: App, pathOrFile:
|
|
|
297
298
|
* that currently hold a lock on the note.
|
|
298
299
|
*
|
|
299
300
|
* The lock is reference-counted per calling plugin: each call must be balanced by exactly one
|
|
300
|
-
* release (either disposing the returned {@link
|
|
301
|
+
* release (either disposing the returned {@link DisposableEx} — ideally via a `using` declaration — or
|
|
301
302
|
* a matching {@link unlockResourceForPath} call).
|
|
302
303
|
*
|
|
303
304
|
* @param params - The parameters for locking the note.
|
|
304
|
-
* @returns A {@link
|
|
305
|
+
* @returns A {@link DisposableEx} that releases this lock when disposed. Disposing more than once is a no-op.
|
|
305
306
|
*/
|
|
306
|
-
export declare function lockResourceForPath(params: LockResourceForPathParams):
|
|
307
|
+
export declare function lockResourceForPath(params: LockResourceForPathParams): DisposableEx;
|
|
307
308
|
/**
|
|
308
309
|
* Requests an unlock of the note at the given path by aborting every {@link AbortController} that was
|
|
309
310
|
* associated with a lock on it (via {@link ResourceLockComponent.lockForPath}'s
|