obsidian-dev-utils 88.7.0 → 89.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/demo-vault-helper/main.js +20 -23
- package/dist/integration-test-plugin/main.js +2218 -1734
- package/dist/lib/cjs/__merged.cjs +57 -35
- package/dist/lib/cjs/__merged.d.cts +12 -10
- package/dist/lib/cjs/abort-controller.cjs +15 -22
- package/dist/lib/cjs/array.cjs +27 -26
- package/dist/lib/cjs/array.d.cts +25 -7
- package/dist/lib/cjs/async-events.cjs +87 -91
- package/dist/lib/cjs/async-events.d.cts +50 -50
- package/dist/lib/cjs/async.cjs +80 -80
- package/dist/lib/cjs/async.d.cts +23 -23
- package/dist/lib/cjs/beeper.cjs +11 -15
- package/dist/lib/cjs/blob.cjs +14 -25
- package/dist/lib/cjs/codemirror/index.cjs +11 -15
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +11 -15
- package/dist/lib/cjs/debug-controller.cjs +11 -15
- package/dist/lib/cjs/debug.cjs +24 -32
- package/dist/lib/cjs/debug.d.cts +1 -1
- package/dist/lib/cjs/disposable.cjs +59 -43
- package/dist/lib/cjs/disposable.d.cts +27 -8
- package/dist/lib/cjs/enum.cjs +11 -15
- package/dist/lib/cjs/error.cjs +28 -33
- package/dist/lib/cjs/function.cjs +30 -34
- package/dist/lib/cjs/function.d.cts +26 -26
- package/dist/lib/cjs/generated-during-build.cjs +12 -16
- package/dist/lib/cjs/html-element.cjs +84 -89
- package/dist/lib/cjs/html-element.d.cts +15 -15
- package/dist/lib/cjs/index.cjs +11 -15
- package/dist/lib/cjs/integration-test-setup.cjs +11 -15
- package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +11 -15
- package/dist/lib/cjs/jest-setup.cjs +11 -15
- package/dist/lib/cjs/library.cjs +11 -15
- package/dist/lib/cjs/object-utils.cjs +120 -117
- package/dist/lib/cjs/object-utils.d.cts +27 -27
- package/dist/lib/cjs/obsidian/@types/dataview/data-model/value.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/expression/field.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/expression/functions.d.cts +4 -4
- package/dist/lib/cjs/obsidian/active-file-provider.cjs +11 -15
- package/dist/lib/cjs/obsidian/app.cjs +11 -15
- package/dist/lib/cjs/obsidian/async-with-notice.cjs +28 -32
- package/dist/lib/cjs/obsidian/async-with-notice.d.cts +2 -2
- package/dist/lib/cjs/obsidian/attachment-path.cjs +20 -24
- package/dist/lib/cjs/obsidian/attachment-path.d.cts +5 -5
- package/dist/lib/cjs/obsidian/backlink.cjs +12 -16
- package/dist/lib/cjs/obsidian/bases-view-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/callout.cjs +27 -26
- package/dist/lib/cjs/obsidian/callout.d.cts +9 -3
- package/dist/lib/cjs/obsidian/canvas.cjs +13 -16
- package/dist/lib/cjs/obsidian/case-insensitive-file-index.cjs +18 -20
- package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +11 -15
- package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +2 -2
- package/dist/lib/cjs/obsidian/code-block-reg-exp.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +18 -16
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +5 -0
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +56 -31
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +42 -8
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +10 -0
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +26 -30
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +8 -8
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +12 -16
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +12 -16
- package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +13 -17
- package/dist/lib/cjs/obsidian/command-handlers/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-handlers/unlock-active-note-command-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/command-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/community-plugins.cjs +28 -25
- package/dist/lib/cjs/obsidian/community-plugins.d.cts +19 -5
- package/dist/lib/cjs/obsidian/components/abort-signal-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +4 -4
- package/dist/lib/cjs/obsidian/components/async-error-handler-component.cjs +13 -16
- package/dist/lib/cjs/obsidian/components/async-events-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/case-insensitive-file-index-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/component-ex.cjs +26 -28
- package/dist/lib/cjs/obsidian/components/component-ex.d.cts +3 -3
- package/dist/lib/cjs/obsidian/components/console-debug-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/components/console-debug-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/components/disposable-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/embed-extensions-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/generate-markdown-link-default-params-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/index.cjs +14 -15
- package/dist/lib/cjs/obsidian/components/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/components/layout-ready-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +29 -33
- package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +55 -55
- package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.cjs +297 -0
- package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.d.cts +139 -0
- package/dist/lib/cjs/obsidian/components/plugin-context-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +28 -31
- package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +26 -30
- package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +8 -8
- package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/pointer-position-component.cjs +13 -17
- package/dist/lib/cjs/obsidian/components/registry-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +72 -62
- package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +12 -1
- package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.cjs +16 -20
- package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.d.cts +8 -8
- package/dist/lib/cjs/obsidian/constructors/get-dom-events-handlers-constructor.cjs +14 -18
- package/dist/lib/cjs/obsidian/constructors/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/css-class.cjs +11 -15
- package/dist/lib/cjs/obsidian/data-handler.cjs +11 -15
- package/dist/lib/cjs/obsidian/dataview-link.cjs +13 -17
- package/dist/lib/cjs/obsidian/dataview.cjs +35 -41
- package/dist/lib/cjs/obsidian/dataview.d.cts +2 -2
- package/dist/lib/cjs/obsidian/demo-vault-helper.cjs +13 -17
- package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +22 -26
- package/dist/lib/cjs/obsidian/desktop-trusted-input.cjs +23 -21
- package/dist/lib/cjs/obsidian/editor-extension-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/editor-suggest-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/editor.cjs +17 -19
- package/dist/lib/cjs/obsidian/events.cjs +12 -16
- package/dist/lib/cjs/obsidian/events.d.cts +2 -2
- package/dist/lib/cjs/obsidian/extensions-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/file-change.cjs +76 -80
- package/dist/lib/cjs/obsidian/file-change.d.cts +3 -3
- package/dist/lib/cjs/obsidian/file-manager.cjs +33 -22
- package/dist/lib/cjs/obsidian/file-manager.d.cts +20 -1
- package/dist/lib/cjs/obsidian/file-system.cjs +15 -19
- package/dist/lib/cjs/obsidian/file-system.d.cts +3 -3
- package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +11 -15
- package/dist/lib/cjs/obsidian/frontmatter.cjs +15 -19
- package/dist/lib/cjs/obsidian/hover-link-source-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/html-element.cjs +13 -17
- package/dist/lib/cjs/obsidian/html-element.d.cts +2 -2
- package/dist/lib/cjs/obsidian/i18n/custom-type-options.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/default-translations.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/i18n.cjs +13 -16
- package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +7 -0
- package/dist/lib/cjs/obsidian/i18n/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +11 -15
- package/dist/lib/cjs/obsidian/index.cjs +14 -15
- package/dist/lib/cjs/obsidian/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +11 -15
- package/dist/lib/cjs/obsidian/link-update-progress.cjs +11 -15
- package/dist/lib/cjs/obsidian/link.cjs +91 -81
- package/dist/lib/cjs/obsidian/link.d.cts +22 -22
- package/dist/lib/cjs/obsidian/logger.cjs +21 -25
- package/dist/lib/cjs/obsidian/logger.d.cts +5 -5
- package/dist/lib/cjs/obsidian/loop.cjs +14 -18
- package/dist/lib/cjs/obsidian/loop.d.cts +1 -1
- package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.cjs +12 -16
- package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.d.cts +3 -3
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +35 -40
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +3 -3
- package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.cjs +12 -16
- package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.d.cts +3 -3
- package/dist/lib/cjs/obsidian/markdown-view.cjs +11 -15
- package/dist/lib/cjs/obsidian/markdown.cjs +22 -24
- package/dist/lib/cjs/obsidian/menu-event-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian/metadata-cache.cjs +16 -20
- package/dist/lib/cjs/obsidian/metadata-cache.d.cts +2 -2
- package/dist/lib/cjs/obsidian/modals/alert.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/confirm.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +28 -32
- package/dist/lib/cjs/obsidian/modals/modal.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/prompt.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/select-item.cjs +16 -20
- package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/select-option.cjs +11 -15
- package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.cjs +26 -28
- package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.d.cts +5 -5
- package/dist/lib/cjs/obsidian/notebook-navigator.cjs +155 -0
- package/dist/lib/cjs/obsidian/notebook-navigator.d.cts +132 -0
- package/dist/lib/cjs/obsidian/obsidian-protocol-handler-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/obsidian-settings.cjs +11 -15
- package/dist/lib/cjs/obsidian/parse-link.cjs +61 -62
- package/dist/lib/cjs/obsidian/parse-link.d.cts +4 -4
- package/dist/lib/cjs/obsidian/path-settings.cjs +27 -25
- package/dist/lib/cjs/obsidian/pdf.cjs +13 -17
- package/dist/lib/cjs/obsidian/pdf.d.cts +2 -2
- package/dist/lib/cjs/obsidian/plugin/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +11 -15
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +156 -52
- package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +17 -21
- package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +2 -2
- package/dist/lib/cjs/obsidian/plugin/plugin-event-source.cjs +20 -24
- package/dist/lib/cjs/obsidian/plugin/plugin-event-source.d.cts +11 -9
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +29 -33
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +33 -16
- package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +11 -1
- package/dist/lib/cjs/obsidian/plugin-cli-handler-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/popovers/field-popover.cjs +11 -15
- package/dist/lib/cjs/obsidian/popovers/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/popovers/popover-anchor.cjs +14 -18
- package/dist/lib/cjs/obsidian/popovers/popover-anchor.d.cts +2 -2
- package/dist/lib/cjs/obsidian/popovers/popover.cjs +19 -23
- package/dist/lib/cjs/obsidian/queue.cjs +16 -20
- package/dist/lib/cjs/obsidian/queue.d.cts +2 -2
- package/dist/lib/cjs/obsidian/react/app-context.cjs +11 -15
- package/dist/lib/cjs/obsidian/react/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/reference.cjs +11 -15
- package/dist/lib/cjs/obsidian/resource-lock.cjs +157 -78
- package/dist/lib/cjs/obsidian/resource-lock.d.cts +5 -0
- package/dist/lib/cjs/obsidian/resource-url.cjs +12 -16
- package/dist/lib/cjs/obsidian/ribbon-icon-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/ribbon-icon-registrar.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/checkbox-component.cjs +18 -22
- package/dist/lib/cjs/obsidian/setting-components/checkbox-component.d.cts +5 -5
- package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.cjs +28 -31
- package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/date-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/date-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/date-time-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/date-time-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/email-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/email-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/file-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/setting-components/index.cjs +11 -15
- package/dist/lib/cjs/obsidian/setting-components/month-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/month-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.cjs +17 -21
- package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-file-component.cjs +12 -16
- package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.cjs +15 -19
- package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/number-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/number-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/password-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/password-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.cjs +16 -20
- package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/telephone-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/telephone-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/text-based-component.cjs +16 -20
- package/dist/lib/cjs/obsidian/setting-components/text-based-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/time-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/time-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.cjs +15 -19
- package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.cjs +16 -20
- package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.cjs +18 -22
- package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-range-text-component.cjs +11 -15
- package/dist/lib/cjs/obsidian/setting-components/typed-text-component.cjs +16 -19
- package/dist/lib/cjs/obsidian/setting-components/typed-text-component.d.cts +4 -4
- package/dist/lib/cjs/obsidian/setting-components/url-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/url-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/validator-component.cjs +45 -49
- package/dist/lib/cjs/obsidian/setting-components/validator-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.cjs +11 -15
- package/dist/lib/cjs/obsidian/setting-components/week-component.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-components/week-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/setting-ex.cjs +76 -80
- package/dist/lib/cjs/obsidian/setting-ex.d.cts +42 -42
- package/dist/lib/cjs/obsidian/setting-group-ex.cjs +14 -18
- package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +2 -2
- package/dist/lib/cjs/obsidian/status-bar-item-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/validation.cjs +11 -15
- package/dist/lib/cjs/obsidian/vault-delete.cjs +23 -20
- package/dist/lib/cjs/obsidian/vault-delete.d.cts +16 -2
- package/dist/lib/cjs/obsidian/vault-transaction.cjs +17 -18
- package/dist/lib/cjs/obsidian/vault.cjs +81 -63
- package/dist/lib/cjs/obsidian/vault.d.cts +32 -11
- package/dist/lib/cjs/obsidian/view-registrar.cjs +11 -15
- package/dist/lib/cjs/obsidian/workspace.cjs +12 -16
- package/dist/lib/cjs/obsidian-dev-utils-state.cjs +11 -15
- package/dist/lib/cjs/path.cjs +18 -22
- package/dist/lib/cjs/path.d.cts +1 -1
- package/dist/lib/cjs/reg-exp.cjs +38 -35
- package/dist/lib/cjs/reg-exp.d.cts +4 -4
- package/dist/lib/cjs/script-utils/build.cjs +21 -25
- package/dist/lib/cjs/script-utils/build.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +24 -28
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +36 -34
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +20 -24
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +13 -17
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +16 -20
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +6 -2
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +32 -36
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +11 -15
- package/dist/lib/cjs/script-utils/bundlers/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/check-project-types.cjs +13 -17
- package/dist/lib/cjs/script-utils/check-project-types.d.cts +12 -4
- package/dist/lib/cjs/script-utils/cli-utils.cjs +39 -47
- package/dist/lib/cjs/script-utils/cli-utils.d.cts +6 -6
- package/dist/lib/cjs/script-utils/code-generator.cjs +11 -15
- package/dist/lib/cjs/script-utils/commitlint-config.cjs +11 -15
- package/dist/lib/cjs/script-utils/demo-vault-coverage.cjs +22 -23
- package/dist/lib/cjs/script-utils/demo-vault.cjs +11 -15
- package/dist/lib/cjs/script-utils/env-toggle.cjs +13 -17
- package/dist/lib/cjs/script-utils/exec.cjs +40 -44
- package/dist/lib/cjs/script-utils/exec.d.cts +4 -4
- package/dist/lib/cjs/script-utils/formatters/dprint.cjs +12 -16
- package/dist/lib/cjs/script-utils/formatters/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/fs.cjs +13 -17
- package/dist/lib/cjs/script-utils/git.cjs +11 -15
- package/dist/lib/cjs/script-utils/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/json.cjs +15 -19
- package/dist/lib/cjs/script-utils/json.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/cspell.cjs +12 -16
- package/dist/lib/cjs/script-utils/linters/eslint-agnostic-core-boundary.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +402 -16
- package/dist/lib/cjs/script-utils/linters/eslint-no-restricted-syntax.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +27 -31
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.cjs +27 -31
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +21 -25
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.cjs +109 -113
- package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.cjs +13 -17
- package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.cjs +21 -25
- package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +51 -55
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.d.cts +9 -3
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +25 -27
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.d.cts +6 -2
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +33 -37
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +11 -15
- package/dist/lib/cjs/script-utils/linters/eslint.cjs +14 -18
- package/dist/lib/cjs/script-utils/linters/index.cjs +14 -15
- package/dist/lib/cjs/script-utils/linters/index.d.cts +1 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +18 -17
- package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.cjs +138 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.d.cts +35 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +20 -23
- package/dist/lib/cjs/script-utils/linters/over-exposure.cjs +18 -22
- package/dist/lib/cjs/script-utils/linters/over-exposure.d.cts +54 -18
- package/dist/lib/cjs/script-utils/nano-staged-config.cjs +11 -15
- package/dist/lib/cjs/script-utils/npm-publish.cjs +11 -15
- package/dist/lib/cjs/script-utils/npm-run.cjs +20 -17
- package/dist/lib/cjs/script-utils/npm-run.d.cts +16 -2
- package/dist/lib/cjs/script-utils/npm.cjs +21 -25
- package/dist/lib/cjs/script-utils/npm.d.cts +11 -11
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +11 -15
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +165 -55
- package/dist/lib/cjs/script-utils/root.cjs +11 -15
- package/dist/lib/cjs/script-utils/test-runners/index.cjs +16 -17
- package/dist/lib/cjs/script-utils/test-runners/index.d.cts +1 -0
- package/dist/lib/cjs/script-utils/test-runners/integration-test-plugin.cjs +11 -15
- package/dist/lib/cjs/script-utils/test-runners/vitest-config.cjs +325 -0
- package/dist/lib/cjs/script-utils/test-runners/vitest-config.d.cts +118 -0
- package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +11 -15
- package/dist/lib/cjs/script-utils/validate-declarations.cjs +11 -15
- package/dist/lib/cjs/script-utils/version.cjs +62 -63
- package/dist/lib/cjs/script-utils/version.d.cts +21 -21
- package/dist/lib/cjs/script-utils/warnings-as-errors.cjs +11 -15
- package/dist/lib/cjs/setup.cjs +11 -15
- package/dist/lib/cjs/setup.d.cts +1 -1
- package/dist/lib/cjs/strict-proxy.cjs +30 -34
- package/dist/lib/cjs/strict-proxy.d.cts +2 -2
- package/dist/lib/cjs/string.cjs +90 -93
- package/dist/lib/cjs/string.d.cts +60 -60
- package/dist/lib/cjs/transformers/date-transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/duration-transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/group-transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/index.cjs +11 -15
- package/dist/lib/cjs/transformers/map-transformer.cjs +12 -16
- package/dist/lib/cjs/transformers/set-transformer.cjs +12 -16
- package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/transformer.cjs +11 -15
- package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +12 -16
- package/dist/lib/cjs/transformers/typed-transformer.cjs +11 -15
- package/dist/lib/cjs/two-way-map.cjs +11 -15
- package/dist/lib/cjs/type-guards.cjs +16 -20
- package/dist/lib/cjs/type-guards.d.cts +6 -6
- package/dist/lib/cjs/type.cjs +13 -17
- package/dist/lib/cjs/type.d.cts +2 -2
- package/dist/lib/cjs/url.cjs +18 -22
- package/dist/lib/cjs/url.d.cts +4 -4
- package/dist/lib/cjs/value-provider.cjs +15 -19
- package/dist/lib/cjs/value-provider.d.cts +6 -6
- package/dist/lib/cjs/value-wrapper.cjs +11 -15
- package/dist/lib/cjs/vitest-setup.cjs +11 -15
- package/dist/lib/esm/__merged.d.mts +12 -10
- package/dist/lib/esm/__merged.mjs +51 -23
- package/dist/lib/esm/abort-controller.mjs +5 -8
- package/dist/lib/esm/array.d.mts +25 -7
- package/dist/lib/esm/array.mjs +16 -12
- package/dist/lib/esm/async-events.d.mts +50 -50
- package/dist/lib/esm/async-events.mjs +81 -78
- package/dist/lib/esm/async.d.mts +23 -23
- package/dist/lib/esm/async.mjs +70 -66
- package/dist/lib/esm/blob.mjs +4 -11
- package/dist/lib/esm/debug.d.mts +1 -1
- package/dist/lib/esm/debug.mjs +14 -18
- package/dist/lib/esm/disposable.d.mts +27 -8
- package/dist/lib/esm/disposable.mjs +47 -29
- package/dist/lib/esm/error.mjs +18 -19
- package/dist/lib/esm/function.d.mts +26 -26
- package/dist/lib/esm/function.mjs +20 -20
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/html-element.d.mts +15 -15
- package/dist/lib/esm/html-element.mjs +74 -75
- package/dist/lib/esm/object-utils.d.mts +27 -27
- package/dist/lib/esm/object-utils.mjs +109 -102
- package/dist/lib/esm/obsidian/@types/dataview/data-model/value.d.mts +1 -1
- package/dist/lib/esm/obsidian/@types/dataview/expression/field.d.mts +1 -1
- package/dist/lib/esm/obsidian/@types/dataview/expression/functions.d.mts +4 -4
- package/dist/lib/esm/obsidian/app.mjs +1 -1
- package/dist/lib/esm/obsidian/async-with-notice.d.mts +2 -2
- package/dist/lib/esm/obsidian/async-with-notice.mjs +18 -18
- package/dist/lib/esm/obsidian/attachment-path.d.mts +5 -5
- package/dist/lib/esm/obsidian/attachment-path.mjs +10 -10
- package/dist/lib/esm/obsidian/backlink.mjs +2 -2
- package/dist/lib/esm/obsidian/callout.d.mts +9 -3
- package/dist/lib/esm/obsidian/callout.mjs +17 -12
- package/dist/lib/esm/obsidian/canvas.mjs +3 -2
- package/dist/lib/esm/obsidian/case-insensitive-file-index.mjs +8 -6
- package/dist/lib/esm/obsidian/code-block-markdown-information.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +5 -0
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +8 -2
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +42 -8
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +46 -17
- package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +10 -0
- package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +1 -1
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +8 -8
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +16 -16
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +3 -3
- package/dist/lib/esm/obsidian/community-plugins.d.mts +19 -5
- package/dist/lib/esm/obsidian/community-plugins.mjs +17 -11
- package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +4 -4
- package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +3 -2
- package/dist/lib/esm/obsidian/components/component-ex.d.mts +3 -3
- package/dist/lib/esm/obsidian/components/component-ex.mjs +16 -14
- package/dist/lib/esm/obsidian/components/console-debug-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/components/console-debug-component.mjs +4 -4
- package/dist/lib/esm/obsidian/components/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/components/index.mjs +3 -1
- package/dist/lib/esm/obsidian/components/menu-event-registrar-component.mjs +5 -5
- package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +55 -55
- package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +19 -19
- package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.d.mts +139 -0
- package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.mjs +196 -0
- package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +18 -17
- package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +8 -8
- package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +18 -18
- package/dist/lib/esm/obsidian/components/pointer-position-component.mjs +3 -3
- package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +12 -1
- package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +62 -48
- package/dist/lib/esm/obsidian/components/syntax-highlighting-component.d.mts +8 -8
- package/dist/lib/esm/obsidian/components/syntax-highlighting-component.mjs +6 -6
- package/dist/lib/esm/obsidian/constructors/get-dom-events-handlers-constructor.mjs +4 -4
- package/dist/lib/esm/obsidian/data-handler.mjs +1 -1
- package/dist/lib/esm/obsidian/dataview-link.mjs +3 -3
- package/dist/lib/esm/obsidian/dataview.d.mts +2 -2
- package/dist/lib/esm/obsidian/dataview.mjs +25 -27
- package/dist/lib/esm/obsidian/demo-vault-helper.mjs +4 -3
- package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +12 -12
- package/dist/lib/esm/obsidian/desktop-trusted-input.mjs +13 -7
- package/dist/lib/esm/obsidian/editor.mjs +7 -5
- package/dist/lib/esm/obsidian/events.d.mts +2 -2
- package/dist/lib/esm/obsidian/events.mjs +2 -2
- package/dist/lib/esm/obsidian/file-change.d.mts +3 -3
- package/dist/lib/esm/obsidian/file-change.mjs +67 -67
- package/dist/lib/esm/obsidian/file-manager.d.mts +20 -1
- package/dist/lib/esm/obsidian/file-manager.mjs +22 -8
- package/dist/lib/esm/obsidian/file-system.d.mts +3 -3
- package/dist/lib/esm/obsidian/file-system.mjs +4 -4
- package/dist/lib/esm/obsidian/frontmatter.mjs +5 -5
- package/dist/lib/esm/obsidian/html-element.d.mts +2 -2
- package/dist/lib/esm/obsidian/html-element.mjs +3 -3
- package/dist/lib/esm/obsidian/i18n/i18n.d.mts +7 -0
- package/dist/lib/esm/obsidian/i18n/i18n.mjs +3 -2
- package/dist/lib/esm/obsidian/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/index.mjs +3 -1
- package/dist/lib/esm/obsidian/link.d.mts +22 -22
- package/dist/lib/esm/obsidian/link.mjs +76 -62
- package/dist/lib/esm/obsidian/logger.d.mts +5 -5
- package/dist/lib/esm/obsidian/logger.mjs +11 -11
- package/dist/lib/esm/obsidian/loop.d.mts +1 -1
- package/dist/lib/esm/obsidian/loop.mjs +4 -4
- package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.d.mts +3 -3
- package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.mjs +2 -2
- package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +3 -3
- package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +25 -26
- package/dist/lib/esm/obsidian/markdown-post-processor-registrar.d.mts +3 -3
- package/dist/lib/esm/obsidian/markdown-post-processor-registrar.mjs +2 -2
- package/dist/lib/esm/obsidian/markdown.mjs +12 -10
- package/dist/lib/esm/obsidian/menu-event-registrar.d.mts +1 -1
- package/dist/lib/esm/obsidian/metadata-cache.d.mts +2 -2
- package/dist/lib/esm/obsidian/metadata-cache.mjs +6 -6
- package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +18 -18
- package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -1
- package/dist/lib/esm/obsidian/modals/select-item.mjs +6 -6
- package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.d.mts +5 -5
- package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.mjs +16 -14
- package/dist/lib/esm/obsidian/notebook-navigator.d.mts +132 -0
- package/dist/lib/esm/obsidian/notebook-navigator.mjs +49 -0
- package/dist/lib/esm/obsidian/parse-link.d.mts +4 -4
- package/dist/lib/esm/obsidian/parse-link.mjs +51 -48
- package/dist/lib/esm/obsidian/path-settings.mjs +17 -11
- package/dist/lib/esm/obsidian/pdf.d.mts +2 -2
- package/dist/lib/esm/obsidian/pdf.mjs +3 -3
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +156 -52
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +2 -2
- package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +7 -7
- package/dist/lib/esm/obsidian/plugin/plugin-event-source.d.mts +11 -9
- package/dist/lib/esm/obsidian/plugin/plugin-event-source.mjs +10 -10
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +20 -20
- package/dist/lib/esm/obsidian/plugin/plugin.d.mts +11 -1
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +23 -2
- package/dist/lib/esm/obsidian/popovers/popover-anchor.d.mts +2 -2
- package/dist/lib/esm/obsidian/popovers/popover-anchor.mjs +4 -4
- package/dist/lib/esm/obsidian/popovers/popover.mjs +9 -9
- package/dist/lib/esm/obsidian/queue.d.mts +2 -2
- package/dist/lib/esm/obsidian/queue.mjs +6 -6
- package/dist/lib/esm/obsidian/resource-lock.d.mts +5 -0
- package/dist/lib/esm/obsidian/resource-lock.mjs +147 -64
- package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
- package/dist/lib/esm/obsidian/ribbon-icon-registrar.d.mts +2 -2
- package/dist/lib/esm/obsidian/ribbon-icon-registrar.mjs +1 -1
- package/dist/lib/esm/obsidian/setting-components/checkbox-component.d.mts +5 -5
- package/dist/lib/esm/obsidian/setting-components/checkbox-component.mjs +8 -8
- package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.mjs +18 -17
- package/dist/lib/esm/obsidian/setting-components/date-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/date-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/date-time-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/date-time-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/email-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/email-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/month-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/month-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.mjs +7 -7
- package/dist/lib/esm/obsidian/setting-components/multiple-email-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-email-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/multiple-file-component.mjs +2 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-text-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-text-component.mjs +5 -5
- package/dist/lib/esm/obsidian/setting-components/number-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/number-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/password-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/password-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.mjs +6 -6
- package/dist/lib/esm/obsidian/setting-components/telephone-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/telephone-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/text-based-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/text-based-component.mjs +6 -6
- package/dist/lib/esm/obsidian/setting-components/time-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/time-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.mjs +5 -5
- package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.mjs +6 -6
- package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.mjs +8 -8
- package/dist/lib/esm/obsidian/setting-components/typed-text-component.d.mts +4 -4
- package/dist/lib/esm/obsidian/setting-components/typed-text-component.mjs +6 -5
- package/dist/lib/esm/obsidian/setting-components/url-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/url-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-components/validator-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/validator-component.mjs +35 -35
- package/dist/lib/esm/obsidian/setting-components/week-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-components/week-component.mjs +4 -4
- package/dist/lib/esm/obsidian/setting-ex.d.mts +42 -42
- package/dist/lib/esm/obsidian/setting-ex.mjs +66 -66
- package/dist/lib/esm/obsidian/setting-group-ex.d.mts +2 -2
- package/dist/lib/esm/obsidian/setting-group-ex.mjs +4 -4
- package/dist/lib/esm/obsidian/vault-delete.d.mts +16 -2
- package/dist/lib/esm/obsidian/vault-delete.mjs +12 -6
- package/dist/lib/esm/obsidian/vault-transaction.mjs +8 -4
- package/dist/lib/esm/obsidian/vault.d.mts +32 -11
- package/dist/lib/esm/obsidian/vault.mjs +67 -47
- package/dist/lib/esm/obsidian/view-registrar.mjs +1 -1
- package/dist/lib/esm/obsidian/workspace.mjs +2 -2
- package/dist/lib/esm/path.d.mts +1 -1
- package/dist/lib/esm/path.mjs +7 -7
- package/dist/lib/esm/reg-exp.d.mts +4 -4
- package/dist/lib/esm/reg-exp.mjs +28 -21
- package/dist/lib/esm/script-utils/build.d.mts +1 -1
- package/dist/lib/esm/script-utils/build.mjs +15 -12
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +14 -14
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +26 -20
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +10 -10
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +3 -3
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +6 -6
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +6 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +20 -20
- package/dist/lib/esm/script-utils/check-project-types.d.mts +12 -4
- package/dist/lib/esm/script-utils/check-project-types.mjs +3 -3
- package/dist/lib/esm/script-utils/cli-utils.d.mts +6 -6
- package/dist/lib/esm/script-utils/cli-utils.mjs +29 -33
- package/dist/lib/esm/script-utils/demo-vault-coverage.mjs +12 -9
- package/dist/lib/esm/script-utils/env-toggle.mjs +3 -3
- package/dist/lib/esm/script-utils/exec.d.mts +4 -4
- package/dist/lib/esm/script-utils/exec.mjs +32 -32
- package/dist/lib/esm/script-utils/formatters/dprint.mjs +2 -2
- package/dist/lib/esm/script-utils/fs.mjs +3 -3
- package/dist/lib/esm/script-utils/json.d.mts +2 -2
- package/dist/lib/esm/script-utils/json.mjs +5 -5
- package/dist/lib/esm/script-utils/linters/cspell.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +392 -2
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +17 -17
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.mjs +17 -17
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +11 -11
- package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.mjs +99 -99
- package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.mjs +3 -3
- package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.mjs +11 -11
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.d.mts +9 -3
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +41 -41
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.d.mts +6 -2
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +15 -13
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +23 -23
- package/dist/lib/esm/script-utils/linters/eslint.mjs +4 -4
- package/dist/lib/esm/script-utils/linters/index.d.mts +1 -0
- package/dist/lib/esm/script-utils/linters/index.mjs +3 -1
- package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +2 -2
- package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +8 -3
- package/dist/lib/esm/script-utils/linters/markdownlint-ignores.d.mts +35 -0
- package/dist/lib/esm/script-utils/linters/markdownlint-ignores.mjs +33 -0
- package/dist/lib/esm/script-utils/linters/markdownlint.mjs +13 -9
- package/dist/lib/esm/script-utils/linters/over-exposure.d.mts +54 -18
- package/dist/lib/esm/script-utils/linters/over-exposure.mjs +8 -8
- package/dist/lib/esm/script-utils/npm-run.d.mts +16 -2
- package/dist/lib/esm/script-utils/npm-run.mjs +9 -3
- package/dist/lib/esm/script-utils/npm.d.mts +11 -11
- package/dist/lib/esm/script-utils/npm.mjs +11 -11
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +165 -55
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +1 -1
- package/dist/lib/esm/script-utils/test-runners/index.d.mts +1 -0
- package/dist/lib/esm/script-utils/test-runners/index.mjs +4 -2
- package/dist/lib/esm/script-utils/test-runners/vitest-config.d.mts +118 -0
- package/dist/lib/esm/script-utils/test-runners/vitest-config.mjs +210 -0
- package/dist/lib/esm/script-utils/validate-declarations.mjs +1 -1
- package/dist/lib/esm/script-utils/version.d.mts +21 -21
- package/dist/lib/esm/script-utils/version.mjs +48 -45
- package/dist/lib/esm/setup.d.mts +1 -1
- package/dist/lib/esm/setup.mjs +1 -1
- package/dist/lib/esm/strict-proxy.d.mts +2 -2
- package/dist/lib/esm/strict-proxy.mjs +20 -20
- package/dist/lib/esm/string.d.mts +60 -60
- package/dist/lib/esm/string.mjs +80 -79
- package/dist/lib/esm/transformers/map-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/set-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/two-way-map-transformer.mjs +2 -2
- package/dist/lib/esm/type-guards.d.mts +6 -6
- package/dist/lib/esm/type-guards.mjs +6 -6
- package/dist/lib/esm/type.d.mts +2 -2
- package/dist/lib/esm/type.mjs +3 -3
- package/dist/lib/esm/url.d.mts +4 -4
- package/dist/lib/esm/url.mjs +8 -8
- package/dist/lib/esm/value-provider.d.mts +6 -6
- package/dist/lib/esm/value-provider.mjs +5 -5
- package/dist/templates/scripts/vitest-config.ts +2 -88
- package/obsidian/components/notebook-navigator-menu-event-registrar-component/package.json +6 -0
- package/obsidian/notebook-navigator/package.json +6 -0
- package/package.json +17 -33
- package/script-utils/linters/markdownlint-ignores/package.json +6 -0
- package/script-utils/test-runners/vitest-config/package.json +6 -0
|
@@ -44,7 +44,7 @@ export interface ValidatorElement extends HTMLElement {
|
|
|
44
44
|
* @param callback - The callback to call when the div is created.
|
|
45
45
|
* @returns A {@link Promise} that resolves to the div.
|
|
46
46
|
*/
|
|
47
|
-
export declare function createDivAsync(o?: DomElementInfo | string, callback?: (
|
|
47
|
+
export declare function createDivAsync(o?: DomElementInfo | string, callback?: (element: HTMLDivElement) => Promisable<void>): Promise<HTMLDivElement>;
|
|
48
48
|
/**
|
|
49
49
|
* Creates an element asynchronously.
|
|
50
50
|
*
|
|
@@ -55,14 +55,14 @@ export declare function createDivAsync(o?: DomElementInfo | string, callback?: (
|
|
|
55
55
|
* @returns A {@link Promise} that resolves to the element.
|
|
56
56
|
* @remarks Not refactored to parameter-object pattern, to keep the parity with {@link obsidian#createEl} (or createSvg, correspondingly).
|
|
57
57
|
*/
|
|
58
|
-
export declare function createElAsync<K extends keyof HTMLElementTagNameMap>(tag: K, o?: DomElementInfo | string, callback?: (
|
|
58
|
+
export declare function createElAsync<K extends keyof HTMLElementTagNameMap>(tag: K, o?: DomElementInfo | string, callback?: (element: HTMLElementTagNameMap[K]) => Promisable<void>): Promise<HTMLElementTagNameMap[K]>;
|
|
59
59
|
/**
|
|
60
60
|
* Creates a DocumentFragment asynchronously.
|
|
61
61
|
*
|
|
62
62
|
* @param callback - The callback to call when the DocumentFragment is created.
|
|
63
63
|
* @returns A {@link Promise} that resolves to the DocumentFragment.
|
|
64
64
|
*/
|
|
65
|
-
export declare function createFragmentAsync(callback?: (
|
|
65
|
+
export declare function createFragmentAsync(callback?: (element: DocumentFragment) => Promisable<void>): Promise<DocumentFragment>;
|
|
66
66
|
/**
|
|
67
67
|
* Creates a span asynchronously.
|
|
68
68
|
*
|
|
@@ -70,7 +70,7 @@ export declare function createFragmentAsync(callback?: (el: DocumentFragment) =>
|
|
|
70
70
|
* @param callback - The callback to call when the span is created.
|
|
71
71
|
* @returns A {@link Promise} that resolves to the span.
|
|
72
72
|
*/
|
|
73
|
-
export declare function createSpanAsync(o?: DomElementInfo | string, callback?: (
|
|
73
|
+
export declare function createSpanAsync(o?: DomElementInfo | string, callback?: (element: HTMLSpanElement) => Promisable<void>): Promise<HTMLSpanElement>;
|
|
74
74
|
/**
|
|
75
75
|
* Creates a svg asynchronously.
|
|
76
76
|
*
|
|
@@ -81,14 +81,14 @@ export declare function createSpanAsync(o?: DomElementInfo | string, callback?:
|
|
|
81
81
|
* @returns A {@link Promise} that resolves to the svg.
|
|
82
82
|
* @remarks Not refactored to parameter-object pattern, to keep the parity with {@link obsidian#createSvg} (or createEl, correspondingly).
|
|
83
83
|
*/
|
|
84
|
-
export declare function createSvgAsync<K extends keyof SVGElementTagNameMap>(tag: K, o?: string | SvgElementInfo, callback?: (
|
|
84
|
+
export declare function createSvgAsync<K extends keyof SVGElementTagNameMap>(tag: K, o?: string | SvgElementInfo, callback?: (element: SVGElementTagNameMap[K]) => Promisable<void>): Promise<SVGElementTagNameMap[K]>;
|
|
85
85
|
/**
|
|
86
86
|
* Ensures that the given element is loaded.
|
|
87
87
|
*
|
|
88
|
-
* @param
|
|
88
|
+
* @param element - The element to ensure is loaded.
|
|
89
89
|
* @returns A {@link Promise} that resolves when the element is loaded.
|
|
90
90
|
*/
|
|
91
|
-
export declare function ensureLoaded(
|
|
91
|
+
export declare function ensureLoaded(element: Element): Promise<void>;
|
|
92
92
|
/**
|
|
93
93
|
* Gets the window a document belongs to.
|
|
94
94
|
*
|
|
@@ -104,24 +104,24 @@ export declare function getDocumentWindow(doc: Document): Window;
|
|
|
104
104
|
/**
|
|
105
105
|
* Gets the z-index of the given element.
|
|
106
106
|
*
|
|
107
|
-
* @param
|
|
107
|
+
* @param element - The element to get the z-index of.
|
|
108
108
|
* @returns The z-index of the element.
|
|
109
109
|
*/
|
|
110
|
-
export declare function getZIndex(
|
|
110
|
+
export declare function getZIndex(element: Element): number;
|
|
111
111
|
/**
|
|
112
112
|
* Checks if the element is visible in the offset parent.
|
|
113
113
|
*
|
|
114
|
-
* @param
|
|
114
|
+
* @param element - The element to check.
|
|
115
115
|
* @returns `true` if the element is visible in the offset parent, `false` otherwise.
|
|
116
116
|
*/
|
|
117
|
-
export declare function isElementVisibleInOffsetParent(
|
|
117
|
+
export declare function isElementVisibleInOffsetParent(element: HTMLElement): boolean;
|
|
118
118
|
/**
|
|
119
119
|
* Checks if the element is loaded.
|
|
120
120
|
*
|
|
121
|
-
* @param
|
|
121
|
+
* @param element - The element to check.
|
|
122
122
|
* @returns `true` if the element is loaded, `false` otherwise.
|
|
123
123
|
*/
|
|
124
|
-
export declare function isLoaded(
|
|
124
|
+
export declare function isLoaded(element: Element): boolean;
|
|
125
125
|
/**
|
|
126
126
|
* Adds an event listener to the ancestor nodes of the given node.
|
|
127
127
|
*
|
|
@@ -140,7 +140,7 @@ export declare function toPx(value: number): string;
|
|
|
140
140
|
/**
|
|
141
141
|
* Waits until the given element is connected to the DOM.
|
|
142
142
|
*
|
|
143
|
-
* @param
|
|
143
|
+
* @param element - The element to check.
|
|
144
144
|
* @returns A promise that resolves when the element is connected.
|
|
145
145
|
*/
|
|
146
|
-
export declare function waitUntilConnected(
|
|
146
|
+
export declare function waitUntilConnected(element: HTMLElement): Promise<void>;
|
|
@@ -30,9 +30,9 @@ async function createDivAsync(o, callback) {
|
|
|
30
30
|
return div;
|
|
31
31
|
}
|
|
32
32
|
async function createElAsync(tag, o, callback) {
|
|
33
|
-
const
|
|
34
|
-
await callback?.(
|
|
35
|
-
return
|
|
33
|
+
const element = createHtmlElement(tag, o);
|
|
34
|
+
await callback?.(element);
|
|
35
|
+
return element;
|
|
36
36
|
}
|
|
37
37
|
async function createFragmentAsync(callback) {
|
|
38
38
|
const fragment = document.createDocumentFragment();
|
|
@@ -49,82 +49,80 @@ async function createSvgAsync(tag, o, callback) {
|
|
|
49
49
|
await callback?.(svg);
|
|
50
50
|
return svg;
|
|
51
51
|
}
|
|
52
|
-
async function ensureLoaded(
|
|
53
|
-
if (isLoaded(
|
|
52
|
+
async function ensureLoaded(element) {
|
|
53
|
+
if (isLoaded(element)) {
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
|
-
const win = getNodeWindow(
|
|
57
|
-
if (isInstanceOf(
|
|
56
|
+
const win = getNodeWindow(element);
|
|
57
|
+
if (isInstanceOf(element, win.HTMLBodyElement) || isInstanceOf(element, win.HTMLImageElement) || isInstanceOf(element, win.HTMLIFrameElement) || isInstanceOf(element, win.HTMLEmbedElement) || isInstanceOf(element, win.HTMLLinkElement) || isInstanceOf(element, win.HTMLObjectElement) || isInstanceOf(element, win.HTMLStyleElement) || isInstanceOf(element, win.HTMLTrackElement)) {
|
|
58
58
|
await new Promise((resolve) => {
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
element.addEventListener("load", resolve);
|
|
60
|
+
element.addEventListener("error", resolve);
|
|
61
61
|
});
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
|
-
await Promise.all(getLoadableElements(
|
|
64
|
+
await Promise.all(getLoadableElements(element).map((loadableElement) => ensureLoaded(loadableElement)));
|
|
65
65
|
}
|
|
66
66
|
function getDocumentWindow(doc) {
|
|
67
67
|
return ensureNonNullable(doc.defaultView, "The document has no window");
|
|
68
68
|
}
|
|
69
|
-
function getZIndex(
|
|
70
|
-
let
|
|
71
|
-
while (
|
|
72
|
-
const
|
|
73
|
-
const zIndex = Number.parseInt(
|
|
69
|
+
function getZIndex(element) {
|
|
70
|
+
let element2 = element;
|
|
71
|
+
while (element2) {
|
|
72
|
+
const zIndexString = getComputedStyle(element2).zIndex;
|
|
73
|
+
const zIndex = Number.parseInt(zIndexString, 10);
|
|
74
74
|
if (!Number.isNaN(zIndex)) {
|
|
75
75
|
return zIndex;
|
|
76
76
|
}
|
|
77
|
-
|
|
77
|
+
element2 = element2.parentElement;
|
|
78
78
|
}
|
|
79
79
|
return 0;
|
|
80
80
|
}
|
|
81
|
-
function isElementVisibleInOffsetParent(
|
|
82
|
-
const
|
|
83
|
-
if (!
|
|
81
|
+
function isElementVisibleInOffsetParent(element) {
|
|
82
|
+
const parentElement = element.offsetParent;
|
|
83
|
+
if (!parentElement) {
|
|
84
84
|
return false;
|
|
85
85
|
}
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
return
|
|
86
|
+
const elementRect = element.getBoundingClientRect();
|
|
87
|
+
const parentElementRect = parentElement.getBoundingClientRect();
|
|
88
|
+
return parentElementRect.top <= elementRect.top && elementRect.bottom <= parentElementRect.bottom && parentElementRect.left <= elementRect.left && elementRect.right <= parentElementRect.right;
|
|
89
89
|
}
|
|
90
|
-
function isLoaded(
|
|
91
|
-
const win = getNodeWindow(
|
|
92
|
-
if (isInstanceOf(
|
|
93
|
-
const readyState =
|
|
90
|
+
function isLoaded(element) {
|
|
91
|
+
const win = getNodeWindow(element);
|
|
92
|
+
if (isInstanceOf(element, win.HTMLBodyElement)) {
|
|
93
|
+
const readyState = element.ownerDocument.readyState;
|
|
94
94
|
return readyState === "complete" || readyState === "interactive";
|
|
95
95
|
}
|
|
96
|
-
if (isInstanceOf(
|
|
97
|
-
return
|
|
96
|
+
if (isInstanceOf(element, win.HTMLImageElement)) {
|
|
97
|
+
return element.complete && element.naturalWidth > 0;
|
|
98
98
|
}
|
|
99
|
-
if (isInstanceOf(
|
|
100
|
-
return !!
|
|
99
|
+
if (isInstanceOf(element, win.HTMLIFrameElement)) {
|
|
100
|
+
return !!element.contentDocument;
|
|
101
101
|
}
|
|
102
|
-
if (isInstanceOf(
|
|
103
|
-
return !!
|
|
102
|
+
if (isInstanceOf(element, win.HTMLEmbedElement)) {
|
|
103
|
+
return !!element.getSVGDocument();
|
|
104
104
|
}
|
|
105
|
-
if (isInstanceOf(
|
|
106
|
-
return
|
|
105
|
+
if (isInstanceOf(element, win.HTMLLinkElement)) {
|
|
106
|
+
return element.rel === "stylesheet" ? element.sheet !== null : true;
|
|
107
107
|
}
|
|
108
|
-
if (isInstanceOf(
|
|
109
|
-
return !!
|
|
108
|
+
if (isInstanceOf(element, win.HTMLObjectElement)) {
|
|
109
|
+
return !!element.contentDocument || !!element.getSVGDocument();
|
|
110
110
|
}
|
|
111
|
-
if (isInstanceOf(
|
|
111
|
+
if (isInstanceOf(element, win.HTMLScriptElement)) {
|
|
112
112
|
return true;
|
|
113
113
|
}
|
|
114
|
-
if (isInstanceOf(
|
|
115
|
-
return !!
|
|
114
|
+
if (isInstanceOf(element, win.HTMLStyleElement)) {
|
|
115
|
+
return !!element.sheet;
|
|
116
116
|
}
|
|
117
|
-
if (isInstanceOf(
|
|
117
|
+
if (isInstanceOf(element, win.HTMLTrackElement)) {
|
|
118
118
|
const READY_STATE_LOADED = 2;
|
|
119
|
-
return
|
|
119
|
+
return element.readyState === READY_STATE_LOADED;
|
|
120
120
|
}
|
|
121
|
-
return getLoadableElements(
|
|
121
|
+
return getLoadableElements(element).every((loadableElement) => isLoaded(loadableElement));
|
|
122
122
|
}
|
|
123
123
|
function onAncestorScrollOrResize(node, callback) {
|
|
124
124
|
const win = getNodeWindow(node);
|
|
125
|
-
const ancestors = [];
|
|
126
|
-
ancestors.push(node.ownerDocument ?? win.document);
|
|
127
|
-
ancestors.push(win);
|
|
125
|
+
const ancestors = [node.ownerDocument ?? win.document, win];
|
|
128
126
|
let currentNode = node;
|
|
129
127
|
while (currentNode) {
|
|
130
128
|
ancestors.push(currentNode);
|
|
@@ -160,42 +158,43 @@ function onAncestorScrollOrResize(node, callback) {
|
|
|
160
158
|
function toPx(value) {
|
|
161
159
|
return `${String(value)}px`;
|
|
162
160
|
}
|
|
163
|
-
function waitUntilConnected(
|
|
161
|
+
function waitUntilConnected(element) {
|
|
164
162
|
return new Promise((resolve) => {
|
|
165
|
-
if (
|
|
163
|
+
if (element.isConnected) {
|
|
166
164
|
resolve();
|
|
167
165
|
return;
|
|
168
166
|
}
|
|
169
|
-
const ownerDocument =
|
|
170
|
-
const observer = new (getNodeWindow(
|
|
171
|
-
if (
|
|
172
|
-
|
|
173
|
-
resolve();
|
|
167
|
+
const ownerDocument = element.ownerDocument;
|
|
168
|
+
const observer = new (getNodeWindow(element)).MutationObserver(() => {
|
|
169
|
+
if (!element.isConnected) {
|
|
170
|
+
return;
|
|
174
171
|
}
|
|
172
|
+
observer.disconnect();
|
|
173
|
+
resolve();
|
|
175
174
|
});
|
|
176
175
|
observer.observe(ownerDocument, { childList: true, subtree: true });
|
|
177
176
|
});
|
|
178
177
|
}
|
|
179
|
-
function applyDomElementInfo(
|
|
178
|
+
function applyDomElementInfo(element, o) {
|
|
180
179
|
const info = typeof o === "string" ? { cls: o } : o ?? {};
|
|
181
180
|
if (info.cls !== void 0) {
|
|
182
|
-
|
|
181
|
+
element.className = Array.isArray(info.cls) ? info.cls.join(" ") : info.cls;
|
|
183
182
|
}
|
|
184
183
|
if (info.text !== void 0) {
|
|
185
|
-
setElementText(
|
|
184
|
+
setElementText(element, info.text);
|
|
186
185
|
}
|
|
187
186
|
if (info.attr) {
|
|
188
|
-
|
|
187
|
+
setElementAttributes(element, info.attr);
|
|
189
188
|
}
|
|
190
189
|
if (info.title !== void 0) {
|
|
191
|
-
|
|
190
|
+
element.title = info.title;
|
|
192
191
|
}
|
|
193
|
-
insertIntoParent(
|
|
192
|
+
insertIntoParent(element, info);
|
|
194
193
|
}
|
|
195
194
|
function createHtmlElement(tag, o) {
|
|
196
|
-
const
|
|
197
|
-
applyDomElementInfo(
|
|
198
|
-
return
|
|
195
|
+
const element = document.createElement(tag);
|
|
196
|
+
applyDomElementInfo(element, o);
|
|
197
|
+
return element;
|
|
199
198
|
}
|
|
200
199
|
function createSvgElement(tag, o) {
|
|
201
200
|
const svg = document.createElementNS(SVG_NAMESPACE, tag);
|
|
@@ -208,44 +207,44 @@ function createSvgElement(tag, o) {
|
|
|
208
207
|
}
|
|
209
208
|
}
|
|
210
209
|
if (info.attr) {
|
|
211
|
-
|
|
210
|
+
setElementAttributes(svg, info.attr);
|
|
212
211
|
}
|
|
213
212
|
insertIntoParent(svg, info);
|
|
214
213
|
return svg;
|
|
215
214
|
}
|
|
216
|
-
function getLoadableElements(
|
|
217
|
-
return
|
|
215
|
+
function getLoadableElements(element) {
|
|
216
|
+
return [...element.querySelectorAll("body, img, iframe, embed, link, object, script, style, track")];
|
|
218
217
|
}
|
|
219
218
|
function getNodeWindow(node) {
|
|
220
219
|
return node.ownerDocument?.defaultView ?? window;
|
|
221
220
|
}
|
|
222
|
-
function insertIntoParent(
|
|
221
|
+
function insertIntoParent(element, info) {
|
|
223
222
|
if (!info.parent) {
|
|
224
223
|
return;
|
|
225
224
|
}
|
|
226
225
|
if (info.prepend) {
|
|
227
|
-
info.parent.insertBefore(
|
|
226
|
+
info.parent.insertBefore(element, info.parent.firstChild);
|
|
228
227
|
} else {
|
|
229
|
-
info.parent.appendChild(
|
|
228
|
+
info.parent.appendChild(element);
|
|
230
229
|
}
|
|
231
230
|
}
|
|
232
231
|
function isInstanceOf(node, ctor) {
|
|
233
232
|
return node instanceof ctor;
|
|
234
233
|
}
|
|
235
|
-
function
|
|
236
|
-
for (const [name, value] of Object.entries(
|
|
234
|
+
function setElementAttributes(element, attribute) {
|
|
235
|
+
for (const [name, value] of Object.entries(attribute)) {
|
|
237
236
|
if (value === null) {
|
|
238
|
-
|
|
237
|
+
element.removeAttribute(name);
|
|
239
238
|
} else {
|
|
240
|
-
|
|
239
|
+
element.setAttribute(name, String(value));
|
|
241
240
|
}
|
|
242
241
|
}
|
|
243
242
|
}
|
|
244
|
-
function setElementText(
|
|
243
|
+
function setElementText(element, text) {
|
|
245
244
|
if (text instanceof DocumentFragment) {
|
|
246
|
-
|
|
245
|
+
element.replaceChildren(text);
|
|
247
246
|
} else {
|
|
248
|
-
|
|
247
|
+
element.textContent = text;
|
|
249
248
|
}
|
|
250
249
|
}
|
|
251
250
|
export {
|
|
@@ -263,4 +262,4 @@ export {
|
|
|
263
262
|
toPx,
|
|
264
263
|
waitUntilConnected
|
|
265
264
|
};
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0bWwtZWxlbWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIE9ic2lkaWFuLXJ1bnRpbWUtYWdub3N0aWMgaGVscGVycyBmb3Igd29ya2luZyB3aXRoIEhUTUwgZWxlbWVudHMuXG4gKlxuICogU2V2ZXJhbCBoZWxwZXJzIGhlcmUgbWlycm9yIGJlaGF2aW9yIHRoYXQgdGhlIE9ic2lkaWFuIHJ1bnRpbWUgaW5qZWN0cyBvbnRvIHRoZSBET00gcHJvdG90eXBlc1xuICogKGBjcmVhdGVFbGAvYGNyZWF0ZURpdmAvYGNyZWF0ZVNwYW5gL2BjcmVhdGVTdmdgL2BjcmVhdGVGcmFnbWVudGAsIGBOb2RlLnByb3RvdHlwZS5pbnN0YW5jZU9mYCxcbiAqIGBFbGVtZW50LnByb3RvdHlwZS5zZXRUZXh0YC9gc2V0QXR0cnNgKS4gVG8gc3RheSBpbmRlcGVuZGVudCBvZiB0aGUgT2JzaWRpYW4gcnVudGltZSwgdGhhdCBiZWhhdmlvclxuICogaXMgcmVpbXBsZW1lbnRlZCBoZXJlIGluIHN0YW5kYXJkIERPTSwgcG9ydGVkIGZyb20gT2JzaWRpYW4ncyBvd24gaW1wbGVtZW50YXRpb24gaW5cbiAqIGBvYnNpZGlhbi5hc2FyL2VuaGFuY2UuanNgLiBTZWUgdGhlIGBvYnNpZGlhbi12ZXJzaW9uc2AgcHJvamVjdDsgcmV2YWxpZGF0ZSB0aGUgcG9ydCB3aGVuIE9ic2lkaWFuXG4gKiBjaGFuZ2VzIGBlbmhhbmNlLmpzYCAodGhlcmUgaXMgYSByZW1pbmRlciBpbiBgQ0xBVURFLm1kYCkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgQ2FsbGJhY2tEaXNwb3NhYmxlIH0gZnJvbSAnLi9kaXNwb3NhYmxlLnRzJztcbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnLi90eXBlLWd1YXJkcy50cyc7XG5cbmNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG4vKipcbiAqIEEgSFRNTCBlbGVtZW50IHRoYXQgY2FuIGJlIHZhbGlkYXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3JFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAvKipcbiAgICogQ2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBlbGVtZW50IGlzIHZhbGlkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIGNoZWNrVmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVwb3J0cyB0aGUgdmFsaWRpdHkgb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZXBvcnRWYWxpZGl0eSgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXRzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIHNldCBvbiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHNldEN1c3RvbVZhbGlkaXR5KGVycm9yOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBbiBlcnJvciBtZXNzYWdlIG9mIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGl2IGFzeW5jaHJvbm91c2x5LlxuICpcbiAqIEBwYXJhbSBvIC0gVGhlIGVsZW1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBkaXYgaXMgY3JlYXRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRpdi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURpdkFzeW5jKFxuICBvPzogRG9tRWxlbWVudEluZm8gfCBzdHJpbmcsXG4gIGNhbGxiYWNrPzogKGVsOiBIVE1MRGl2RWxlbWVudCkgPT4gUHJvbWlzYWJsZTx2b2lkPlxuKTogUHJvbWlzZTxIVE1MRGl2RWxlbWVudD4ge1xuICBjb25zdCBkaXYgPSBjcmVhdGVIdG1sRWxlbWVudCgnZGl2Jywgbyk7XG4gIGF3YWl0IGNhbGxiYWNrPy4oZGl2KTtcbiAgcmV0dXJuIGRpdjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVsZW1lbnQgYXN5bmNocm9ub3VzbHkuXG4gKlxuICogQHR5cGVQYXJhbSBLIC0gVGhlIHRhZyBuYW1lIGtleSBmcm9tIGBIVE1MRWxlbWVudFRhZ05hbWVNYXBgLlxuICogQHBhcmFtIHRhZyAtIFRoZSB0YWcgbmFtZSBvZiB0aGUgZWxlbWVudCB0byBjcmVhdGUuXG4gKiBAcGFyYW0gbyAtIFRoZSBlbGVtZW50IGluZm9ybWF0aW9uLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZWxlbWVudCBpcyBjcmVhdGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZWxlbWVudC5cbiAqIEByZW1hcmtzIE5vdCByZWZhY3RvcmVkIHRvIHBhcmFtZXRlci1vYmplY3QgcGF0dGVybiwgdG8ga2VlcCB0aGUgcGFyaXR5IHdpdGgge0BsaW5rIG9ic2lkaWFuI2NyZWF0ZUVsfSAob3IgY3JlYXRlU3ZnLCBjb3JyZXNwb25kaW5nbHkpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRWxBc3luYzxLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcbiAgdGFnOiBLLFxuICBvPzogRG9tRWxlbWVudEluZm8gfCBzdHJpbmcsXG4gIGNhbGxiYWNrPzogKGVsOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbS10pID0+IFByb21pc2FibGU8dm9pZD5cbik6IFByb21pc2U8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdPiB7XG4gIGNvbnN0IGVsID0gY3JlYXRlSHRtbEVsZW1lbnQodGFnLCBvKTtcbiAgYXdhaXQgY2FsbGJhY2s/LihlbCk7XG4gIHJldHVybiBlbDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgRG9jdW1lbnRGcmFnbWVudCBhc3luY2hyb25vdXNseS5cbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBEb2N1bWVudEZyYWdtZW50IGlzIGNyZWF0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBEb2N1bWVudEZyYWdtZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRnJhZ21lbnRBc3luYyhjYWxsYmFjaz86IChlbDogRG9jdW1lbnRGcmFnbWVudCkgPT4gUHJvbWlzYWJsZTx2b2lkPik6IFByb21pc2U8RG9jdW1lbnRGcmFnbWVudD4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9wcmVmZXItY3JlYXRlLWVsIC0tIEFnbm9zdGljIG1vZHVsZS5cbiAgY29uc3QgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gIGF3YWl0IGNhbGxiYWNrPy4oZnJhZ21lbnQpO1xuICByZXR1cm4gZnJhZ21lbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNwYW4gYXN5bmNocm9ub3VzbHkuXG4gKlxuICogQHBhcmFtIG8gLSBUaGUgZWxlbWVudCBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHNwYW4gaXMgY3JlYXRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHNwYW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTcGFuQXN5bmMoXG4gIG8/OiBEb21FbGVtZW50SW5mbyB8IHN0cmluZyxcbiAgY2FsbGJhY2s/OiAoZWw6IEhUTUxTcGFuRWxlbWVudCkgPT4gUHJvbWlzYWJsZTx2b2lkPlxuKTogUHJvbWlzZTxIVE1MU3BhbkVsZW1lbnQ+IHtcbiAgY29uc3Qgc3BhbiA9IGNyZWF0ZUh0bWxFbGVtZW50KCdzcGFuJywgbyk7XG4gIGF3YWl0IGNhbGxiYWNrPy4oc3Bhbik7XG4gIHJldHVybiBzcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdmcgYXN5bmNocm9ub3VzbHkuXG4gKlxuICogQHR5cGVQYXJhbSBLIC0gVGhlIHRhZyBuYW1lIGtleSBmcm9tIGBTVkdFbGVtZW50VGFnTmFtZU1hcGAuXG4gKiBAcGFyYW0gdGFnIC0gVGhlIHRhZyBuYW1lIG9mIHRoZSBzdmcgdG8gY3JlYXRlLlxuICogQHBhcmFtIG8gLSBUaGUgc3ZnIGluZm9ybWF0aW9uLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgc3ZnIGlzIGNyZWF0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzdmcuXG4gKiBAcmVtYXJrcyBOb3QgcmVmYWN0b3JlZCB0byBwYXJhbWV0ZXItb2JqZWN0IHBhdHRlcm4sIHRvIGtlZXAgdGhlIHBhcml0eSB3aXRoIHtAbGluayBvYnNpZGlhbiNjcmVhdGVTdmd9IChvciBjcmVhdGVFbCwgY29ycmVzcG9uZGluZ2x5KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVN2Z0FzeW5jPEsgZXh0ZW5kcyBrZXlvZiBTVkdFbGVtZW50VGFnTmFtZU1hcD4oXG4gIHRhZzogSyxcbiAgbz86IHN0cmluZyB8IFN2Z0VsZW1lbnRJbmZvLFxuICBjYWxsYmFjaz86IChlbDogU1ZHRWxlbWVudFRhZ05hbWVNYXBbS10pID0+IFByb21pc2FibGU8dm9pZD5cbik6IFByb21pc2U8U1ZHRWxlbWVudFRhZ05hbWVNYXBbS10+IHtcbiAgY29uc3Qgc3ZnID0gY3JlYXRlU3ZnRWxlbWVudCh0YWcsIG8pO1xuICBhd2FpdCBjYWxsYmFjaz8uKHN2Zyk7XG4gIHJldHVybiBzdmc7XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBnaXZlbiBlbGVtZW50IGlzIGxvYWRlZC5cbiAqXG4gKiBAcGFyYW0gZWwgLSBUaGUgZWxlbWVudCB0byBlbnN1cmUgaXMgbG9hZGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBlbGVtZW50IGlzIGxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUxvYWRlZChlbDogRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaXNMb2FkZWQoZWwpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHdpbiA9IGdldE5vZGVXaW5kb3coZWwpO1xuICBpZiAoXG4gICAgaXNJbnN0YW5jZU9mKGVsLCB3aW4uSFRNTEJvZHlFbGVtZW50KVxuICAgIHx8IGlzSW5zdGFuY2VPZihlbCwgd2luLkhUTUxJbWFnZUVsZW1lbnQpXG4gICAgfHwgaXNJbnN0YW5jZU9mKGVsLCB3aW4uSFRNTElGcmFtZUVsZW1lbnQpXG4gICAgfHwgaXNJbnN0YW5jZU9mKGVsLCB3aW4uSFRNTEVtYmVkRWxlbWVudClcbiAgICB8fCBpc0luc3RhbmNlT2YoZWwsIHdpbi5IVE1MTGlua0VsZW1lbnQpXG4gICAgfHwgaXNJbnN0YW5jZU9mKGVsLCB3aW4uSFRNTE9iamVjdEVsZW1lbnQpXG4gICAgfHwgaXNJbnN0YW5jZU9mKGVsLCB3aW4uSFRNTFN0eWxlRWxlbWVudClcbiAgICB8fCBpc0luc3RhbmNlT2YoZWwsIHdpbi5IVE1MVHJhY2tFbGVtZW50KVxuICApIHtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlc29sdmUpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZXNvbHZlKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChnZXRMb2FkYWJsZUVsZW1lbnRzKGVsKS5tYXAoZW5zdXJlTG9hZGVkKSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgd2luZG93IGEgZG9jdW1lbnQgYmVsb25ncyB0by5cbiAqXG4gKiBBIGRvY3VtZW50IGlzIHRoZSBvbmUgbm9kZSB3aG9zZSBgb3duZXJEb2N1bWVudGAgaXMgYG51bGxgLCBzbyB0aGUgYG93bmVyRG9jdW1lbnRgLWNoYXNpbmcgbG9va3VwXG4gKiB1c2VkIGZvciBvcmRpbmFyeSBub2RlcyByZXNvbHZlcyBhIGRvY3VtZW50IHRvIHRoZSB3cm9uZyB3aW5kb3cuIFJlYWRpbmcgYGRlZmF1bHRWaWV3YCBvZmYgdGhlXG4gKiBkb2N1bWVudCBpdHNlbGYgaXMgd2hhdCBrZWVwcyBhIHBvcC1vdXQgd2luZG93J3MgY29vcmRpbmF0ZXMgbWVhc3VyZWQgYWdhaW5zdCB0aGF0IHdpbmRvdy5cbiAqXG4gKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIGdldCB0aGUgd2luZG93IG9mLlxuICogQHJldHVybnMgVGhlIHdpbmRvdyB0aGUgZG9jdW1lbnQgYmVsb25ncyB0by5cbiAqIEB0aHJvd3MgQW4ge0BsaW5rIEVycm9yfSBpZiB0aGUgZG9jdW1lbnQgaXMgZGV0YWNoZWQgYW5kIHRoZXJlZm9yZSBoYXMgbm8gd2luZG93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRXaW5kb3coZG9jOiBEb2N1bWVudCk6IFdpbmRvdyB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShkb2MuZGVmYXVsdFZpZXcsICdUaGUgZG9jdW1lbnQgaGFzIG5vIHdpbmRvdycpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHotaW5kZXggb2YgdGhlIGdpdmVuIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gZ2V0IHRoZSB6LWluZGV4IG9mLlxuICogQHJldHVybnMgVGhlIHotaW5kZXggb2YgdGhlIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRaSW5kZXgoZWw6IEVsZW1lbnQpOiBudW1iZXIge1xuICBsZXQgZWwyOiBFbGVtZW50IHwgbnVsbCA9IGVsO1xuXG4gIHdoaWxlIChlbDIpIHtcbiAgICBjb25zdCB6SW5kZXhTdHIgPSBnZXRDb21wdXRlZFN0eWxlKGVsMikuekluZGV4O1xuICAgIGNvbnN0IHpJbmRleCA9IE51bWJlci5wYXJzZUludCh6SW5kZXhTdHIsIDEwKTtcbiAgICBpZiAoIU51bWJlci5pc05hTih6SW5kZXgpKSB7XG4gICAgICByZXR1cm4gekluZGV4O1xuICAgIH1cbiAgICBlbDIgPSBlbDIucGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIHRoZSBvZmZzZXQgcGFyZW50LlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50VmlzaWJsZUluT2Zmc2V0UGFyZW50KGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICBjb25zdCBwYXJlbnRFbCA9IGVsLm9mZnNldFBhcmVudDtcbiAgaWYgKCFwYXJlbnRFbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGVsUmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBwYXJlbnRFbFJlY3QgPSBwYXJlbnRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICByZXR1cm4gKFxuICAgIHBhcmVudEVsUmVjdC50b3AgPD0gZWxSZWN0LnRvcFxuICAgICYmIGVsUmVjdC5ib3R0b20gPD0gcGFyZW50RWxSZWN0LmJvdHRvbVxuICAgICYmIHBhcmVudEVsUmVjdC5sZWZ0IDw9IGVsUmVjdC5sZWZ0XG4gICAgJiYgZWxSZWN0LnJpZ2h0IDw9IHBhcmVudEVsUmVjdC5yaWdodFxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZWxlbWVudCBpcyBsb2FkZWQuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVsZW1lbnQgaXMgbG9hZGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9hZGVkKGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IHdpbiA9IGdldE5vZGVXaW5kb3coZWwpO1xuXG4gIGlmIChpc0luc3RhbmNlT2YoZWwsIHdpbi5IVE1MQm9keUVsZW1lbnQpKSB7XG4gICAgY29uc3QgcmVhZHlTdGF0ZSA9IGVsLm93bmVyRG9jdW1lbnQucmVhZHlTdGF0ZTtcbiAgICByZXR1cm4gcmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyB8fCByZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnO1xuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2VPZihlbCwgd2luLkhUTUxJbWFnZUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGVsLmNvbXBsZXRlICYmIGVsLm5hdHVyYWxXaWR0aCA+IDA7XG4gIH1cblxuICBpZiAoaXNJbnN0YW5jZU9mKGVsLCB3aW4uSFRNTElGcmFtZUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuICEhZWwuY29udGVudERvY3VtZW50O1xuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2VPZihlbCwgd2luLkhUTUxFbWJlZEVsZW1lbnQpKSB7XG4gICAgcmV0dXJuICEhZWwuZ2V0U1ZHRG9jdW1lbnQoKTtcbiAgfVxuXG4gIGlmIChpc0luc3RhbmNlT2YoZWwsIHdpbi5IVE1MTGlua0VsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGVsLnJlbCA9PT0gJ3N0eWxlc2hlZXQnID8gZWwuc2hlZXQgIT09IG51bGwgOiB0cnVlO1xuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2VPZihlbCwgd2luLkhUTUxPYmplY3RFbGVtZW50KSkge1xuICAgIHJldHVybiAhIWVsLmNvbnRlbnREb2N1bWVudCB8fCAhIWVsLmdldFNWR0RvY3VtZW50KCk7XG4gIH1cblxuICBpZiAoaXNJbnN0YW5jZU9mKGVsLCB3aW4uSFRNTFNjcmlwdEVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoaXNJbnN0YW5jZU9mKGVsLCB3aW4uSFRNTFN0eWxlRWxlbWVudCkpIHtcbiAgICByZXR1cm4gISFlbC5zaGVldDtcbiAgfVxuXG4gIGlmIChpc0luc3RhbmNlT2YoZWwsIHdpbi5IVE1MVHJhY2tFbGVtZW50KSkge1xuICAgIGNvbnN0IFJFQURZX1NUQVRFX0xPQURFRCA9IDI7XG4gICAgcmV0dXJuIGVsLnJlYWR5U3RhdGUgPT09IFJFQURZX1NUQVRFX0xPQURFRDtcbiAgfVxuXG4gIHJldHVybiBnZXRMb2FkYWJsZUVsZW1lbnRzKGVsKS5ldmVyeShpc0xvYWRlZCk7XG59XG5cbi8qKlxuICogQWRkcyBhbiBldmVudCBsaXN0ZW5lciB0byB0aGUgYW5jZXN0b3Igbm9kZXMgb2YgdGhlIGdpdmVuIG5vZGUuXG4gKlxuICogQHBhcmFtIG5vZGUgLSBUaGUgbm9kZSB0byBhZGQgdGhlIGV2ZW50IGxpc3RlbmVyIHRvLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZX0gdGhhdCByZW1vdmVzIHRoZSBldmVudCBsaXN0ZW5lcnMgd2hlbiBkaXNwb3NlZCwgZm9yIHVzZSB3aXRoIGB1c2luZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkFuY2VzdG9yU2Nyb2xsT3JSZXNpemUobm9kZTogTm9kZSwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiBEaXNwb3NhYmxlIHtcbiAgY29uc3Qgd2luID0gZ2V0Tm9kZVdpbmRvdyhub2RlKTtcbiAgY29uc3QgYW5jZXN0b3JzOiBFdmVudFRhcmdldFtdID0gW107XG4gIGFuY2VzdG9ycy5wdXNoKG5vZGUub3duZXJEb2N1bWVudCA/PyB3aW4uZG9jdW1lbnQpO1xuICBhbmNlc3RvcnMucHVzaCh3aW4pO1xuXG4gIGxldCBjdXJyZW50Tm9kZTogTm9kZSB8IG51bGwgPSBub2RlO1xuXG4gIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGN1cnJlbnROb2RlKTtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gIH1cblxuICBsZXQgaXNFdmVudFRyaWdnZXJlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgYW5jZXN0b3Igb2YgYW5jZXN0b3JzKSB7XG4gICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBDYWxsYmFja0Rpc3Bvc2FibGUoe1xuICAgIGNhbGxiYWNrOiAoKTogdm9pZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGFuY2VzdG9yIG9mIGFuY2VzdG9ycykge1xuICAgICAgICBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgICAgICBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgZnVuY3Rpb24gY2FsbGJhY2tTbW9vdGgoKTogdm9pZCB7XG4gICAgaWYgKGlzRXZlbnRUcmlnZ2VyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpc0V2ZW50VHJpZ2dlcmVkID0gdHJ1ZTtcblxuICAgIHdpbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzRXZlbnRUcmlnZ2VyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nIHdpdGggJ3B4JyBhcHBlbmRlZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgbnVtYmVyIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIGFzIGEgc3RyaW5nIHdpdGggJ3B4JyBhcHBlbmRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUHgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtTdHJpbmcodmFsdWUpfXB4YDtcbn1cblxuLyoqXG4gKiBXYWl0cyB1bnRpbCB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBjb25uZWN0ZWQgdG8gdGhlIERPTS5cbiAqXG4gKiBAcGFyYW0gZWwgLSBUaGUgZWxlbWVudCB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaXMgY29ubmVjdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdFVudGlsQ29ubmVjdGVkKGVsOiBIVE1MRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBpZiAoZWwuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBPYnNpZGlhbidzIGBlbC5vbk5vZGVJbnNlcnRlZGAgdXNlcyBhIGBub2RlLWluc2VydGVkYCBDU1Mga2V5ZnJhbWUgZnJvbSBPYnNpZGlhbidzIHN0eWxlc2hlZXQuXG4gICAgLy8gVGhlIGFnbm9zdGljIGVxdWl2YWxlbnQgaW5zdGVhZCBvYnNlcnZlcyB0aGUgZWxlbWVudCdzIGRvY3VtZW50IGZvciBpdCBiZWNvbWluZyBjb25uZWN0ZWQuXG4gICAgY29uc3Qgb3duZXJEb2N1bWVudCA9IGVsLm93bmVyRG9jdW1lbnQ7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgKGdldE5vZGVXaW5kb3coZWwpKS5NdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgIGlmIChlbC5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKG93bmVyRG9jdW1lbnQsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBlbGVtZW50LXR5cGUtYWdub3N0aWMgc3Vic2V0IG9mIHtAbGluayBEb21FbGVtZW50SW5mb30gdGhhdCBPYnNpZGlhbidzIGBjcmVhdGVFbGBcbiAqIHN1cHBvcnRzIFx1MjAxNCBgY2xzYCwgYHRleHRgLCBgYXR0cmAsIGB0aXRsZWAsIGFuZCBgcGFyZW50YC9gcHJlcGVuZGAuIFRoZSBlbGVtZW50LXR5cGUtc3BlY2lmaWNcbiAqIGZpZWxkcyAoYHZhbHVlYCwgYHR5cGVgLCBgcGxhY2Vob2xkZXJgLCBgaHJlZmApIGFuZCB0aGUgYG9uKmAgZXZlbnQtaGFuZGxlciBrZXlzIGFyZSBpbnRlbnRpb25hbGx5XG4gKiBOT1QgcG9ydGVkIChubyBpbnRlcm5hbCBjYWxsZXIgbmVlZHMgdGhlbSk7IGV4dGVuZCB0aGlzIGlmIGEgY29uc3VtZXIgZG9lcyBcdTIwMTQgYW5kIHJldmFsaWRhdGUgYWdhaW5zdFxuICogYGVuaGFuY2UuanNgIChzZWUgdGhlIGBAZmlsZWAgbm90ZSBhbmQgYENMQVVERS5tZGApLlxuICpcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIGFwcGx5IHRoZSBpbmZvIHRvLlxuICogQHBhcmFtIG8gLSBUaGUgZWxlbWVudCBpbmZvIChvciBhIGJhcmUgY2xhc3Mgc3RyaW5nKS5cbiAqL1xuZnVuY3Rpb24gYXBwbHlEb21FbGVtZW50SW5mbyhlbDogSFRNTEVsZW1lbnQsIG86IERvbUVsZW1lbnRJbmZvIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIGNvbnN0IGluZm86IERvbUVsZW1lbnRJbmZvID0gdHlwZW9mIG8gPT09ICdzdHJpbmcnID8geyBjbHM6IG8gfSA6IG8gPz8ge307XG5cbiAgaWYgKGluZm8uY2xzICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbC5jbGFzc05hbWUgPSBBcnJheS5pc0FycmF5KGluZm8uY2xzKSA/IGluZm8uY2xzLmpvaW4oJyAnKSA6IGluZm8uY2xzO1xuICB9XG4gIGlmIChpbmZvLnRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgIHNldEVsZW1lbnRUZXh0KGVsLCBpbmZvLnRleHQpO1xuICB9XG4gIGlmIChpbmZvLmF0dHIpIHtcbiAgICBzZXRFbGVtZW50QXR0cnMoZWwsIGluZm8uYXR0cik7XG4gIH1cbiAgaWYgKGluZm8udGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGVsLnRpdGxlID0gaW5mby50aXRsZTtcbiAgfVxuICBpbnNlcnRJbnRvUGFyZW50KGVsLCBpbmZvKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSHRtbEVsZW1lbnQ8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4odGFnOiBLLCBvPzogRG9tRWxlbWVudEluZm8gfCBzdHJpbmcpOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbS10ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9wcmVmZXItY3JlYXRlLWVsIC0tIEFnbm9zdGljIG1vZHVsZS5cbiAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gIGFwcGx5RG9tRWxlbWVudEluZm8oZWwsIG8pO1xuICByZXR1cm4gZWw7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN2Z0VsZW1lbnQ8SyBleHRlbmRzIGtleW9mIFNWR0VsZW1lbnRUYWdOYW1lTWFwPih0YWc6IEssIG8/OiBzdHJpbmcgfCBTdmdFbGVtZW50SW5mbyk6IFNWR0VsZW1lbnRUYWdOYW1lTWFwW0tdIHtcbiAgY29uc3Qgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OQU1FU1BBQ0UsIHRhZyk7XG4gIGNvbnN0IGluZm86IFN2Z0VsZW1lbnRJbmZvID0gdHlwZW9mIG8gPT09ICdzdHJpbmcnID8geyBjbHM6IG8gfSA6IG8gPz8ge307XG5cbiAgaWYgKGluZm8uY2xzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbmZvLmNscykpIHtcbiAgICAgIHN2Zy5jbGFzc0xpc3QuYWRkKC4uLmluZm8uY2xzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3ZnLmNsYXNzTGlzdC5hZGQoaW5mby5jbHMpO1xuICAgIH1cbiAgfVxuICBpZiAoaW5mby5hdHRyKSB7XG4gICAgc2V0RWxlbWVudEF0dHJzKHN2ZywgaW5mby5hdHRyKTtcbiAgfVxuICBpbnNlcnRJbnRvUGFyZW50KHN2ZywgaW5mbyk7XG4gIHJldHVybiBzdmc7XG59XG5cbmZ1bmN0aW9uIGdldExvYWRhYmxlRWxlbWVudHMoZWw6IEVsZW1lbnQpOiBFbGVtZW50W10ge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbC5xdWVyeVNlbGVjdG9yQWxsKCdib2R5LCBpbWcsIGlmcmFtZSwgZW1iZWQsIGxpbmssIG9iamVjdCwgc2NyaXB0LCBzdHlsZSwgdHJhY2snKSk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWdsb2JhbC10aGlzIC0tIFR5cGUtb25seTogdGhlIHJlc29sdmVkIHdpbmRvdyBuZWVkcyB0aGUgZ2xvYmFsIERPTSBjb25zdHJ1Y3RvciB0eXBpbmdzLlxuZnVuY3Rpb24gZ2V0Tm9kZVdpbmRvdyhub2RlOiBOb2RlKTogdHlwZW9mIGdsb2JhbFRoaXMgJiBXaW5kb3cge1xuICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50Py5kZWZhdWx0VmlldyA/PyB3aW5kb3c7XG59XG5cbmZ1bmN0aW9uIGluc2VydEludG9QYXJlbnQoZWw6IEVsZW1lbnQsIGluZm86IERvbUVsZW1lbnRJbmZvIHwgU3ZnRWxlbWVudEluZm8pOiB2b2lkIHtcbiAgaWYgKCFpbmZvLnBhcmVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaW5mby5wcmVwZW5kKSB7XG4gICAgaW5mby5wYXJlbnQuaW5zZXJ0QmVmb3JlKGVsLCBpbmZvLnBhcmVudC5maXJzdENoaWxkKTtcbiAgfSBlbHNlIHtcbiAgICBpbmZvLnBhcmVudC5hcHBlbmRDaGlsZChlbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNJbnN0YW5jZU9mPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBOb2RlLCBjdG9yOiBhYnN0cmFjdCBuZXcgKC4uLmFyZ3M6IG5ldmVyW10pID0+IFQpOiBub2RlIGlzIFQge1xuICAvLyBBZ25vc3RpYyByZWltcGxlbWVudGF0aW9uIG9mIE9ic2lkaWFuJ3MgYE5vZGUucHJvdG90eXBlLmluc3RhbmNlT2ZgIChlbmhhbmNlLmpzKS5cbiAgLy8gVGhlIGNhbGxlciByZXNvbHZlcyBgY3RvcmAgaW4gdGhlIG5vZGUncyBvd24gcmVhbG0gKHZpYSBgZ2V0Tm9kZVdpbmRvd2ApLCBrZWVwaW5nIGl0IGNyb3NzLXdpbmRvdyBzYWZlLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9wcmVmZXItaW5zdGFuY2VvZiAtLSBUaGlzIElTIHRoZSBhZ25vc3RpYyBgLmluc3RhbmNlT2ZgIHJlcGxhY2VtZW50LlxuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIGN0b3I7XG59XG5cbmZ1bmN0aW9uIHNldEVsZW1lbnRBdHRycyhlbDogRWxlbWVudCwgYXR0cjogTm9uTnVsbGFibGU8RG9tRWxlbWVudEluZm9bJ2F0dHInXT4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHIpKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShuYW1lLCBTdHJpbmcodmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0RWxlbWVudFRleHQoZWw6IEhUTUxFbGVtZW50LCB0ZXh0OiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nKTogdm9pZCB7XG4gIGlmICh0ZXh0IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkge1xuICAgIGVsLnJlcGxhY2VDaGlsZHJlbih0ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICBlbC50ZXh0Q29udGVudCA9IHRleHQ7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsU0FBUywwQkFBMEI7QUFDbkMsU0FBUyx5QkFBeUI7QUFFbEMsTUFBTSxnQkFBZ0I7QUFzQ3RCLGVBQXNCLGVBQ3BCLEdBQ0EsVUFDeUI7QUFDekIsUUFBTSxNQUFNLGtCQUFrQixPQUFPLENBQUM7QUFDdEMsUUFBTSxXQUFXLEdBQUc7QUFDcEIsU0FBTztBQUNUO0FBWUEsZUFBc0IsY0FDcEIsS0FDQSxHQUNBLFVBQ21DO0FBQ25DLFFBQU0sS0FBSyxrQkFBa0IsS0FBSyxDQUFDO0FBQ25DLFFBQU0sV0FBVyxFQUFFO0FBQ25CLFNBQU87QUFDVDtBQVFBLGVBQXNCLG9CQUFvQixVQUFrRjtBQUUxSCxRQUFNLFdBQVcsU0FBUyx1QkFBdUI7QUFDakQsUUFBTSxXQUFXLFFBQVE7QUFDekIsU0FBTztBQUNUO0FBU0EsZUFB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
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0bWwtZWxlbWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIE9ic2lkaWFuLXJ1bnRpbWUtYWdub3N0aWMgaGVscGVycyBmb3Igd29ya2luZyB3aXRoIEhUTUwgZWxlbWVudHMuXG4gKlxuICogU2V2ZXJhbCBoZWxwZXJzIGhlcmUgbWlycm9yIGJlaGF2aW9yIHRoYXQgdGhlIE9ic2lkaWFuIHJ1bnRpbWUgaW5qZWN0cyBvbnRvIHRoZSBET00gcHJvdG90eXBlc1xuICogKGBjcmVhdGVFbGAvYGNyZWF0ZURpdmAvYGNyZWF0ZVNwYW5gL2BjcmVhdGVTdmdgL2BjcmVhdGVGcmFnbWVudGAsIGBOb2RlLnByb3RvdHlwZS5pbnN0YW5jZU9mYCxcbiAqIGBFbGVtZW50LnByb3RvdHlwZS5zZXRUZXh0YC9gc2V0QXR0cnNgKS4gVG8gc3RheSBpbmRlcGVuZGVudCBvZiB0aGUgT2JzaWRpYW4gcnVudGltZSwgdGhhdCBiZWhhdmlvclxuICogaXMgcmVpbXBsZW1lbnRlZCBoZXJlIGluIHN0YW5kYXJkIERPTSwgcG9ydGVkIGZyb20gT2JzaWRpYW4ncyBvd24gaW1wbGVtZW50YXRpb24gaW5cbiAqIGBvYnNpZGlhbi5hc2FyL2VuaGFuY2UuanNgLiBTZWUgdGhlIGBvYnNpZGlhbi12ZXJzaW9uc2AgcHJvamVjdDsgcmV2YWxpZGF0ZSB0aGUgcG9ydCB3aGVuIE9ic2lkaWFuXG4gKiBjaGFuZ2VzIGBlbmhhbmNlLmpzYCAodGhlcmUgaXMgYSByZW1pbmRlciBpbiBgQ0xBVURFLm1kYCkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgQ2FsbGJhY2tEaXNwb3NhYmxlIH0gZnJvbSAnLi9kaXNwb3NhYmxlLnRzJztcbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnLi90eXBlLWd1YXJkcy50cyc7XG5cbmNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG4vKipcbiAqIEEgSFRNTCBlbGVtZW50IHRoYXQgY2FuIGJlIHZhbGlkYXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3JFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAvKipcbiAgICogQ2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBlbGVtZW50IGlzIHZhbGlkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIGNoZWNrVmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVwb3J0cyB0aGUgdmFsaWRpdHkgb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZXBvcnRWYWxpZGl0eSgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXRzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIHNldCBvbiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHNldEN1c3RvbVZhbGlkaXR5KGVycm9yOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBbiBlcnJvciBtZXNzYWdlIG9mIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGl2IGFzeW5jaHJvbm91c2x5LlxuICpcbiAqIEBwYXJhbSBvIC0gVGhlIGVsZW1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBkaXYgaXMgY3JlYXRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRpdi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURpdkFzeW5jKFxuICBvPzogRG9tRWxlbWVudEluZm8gfCBzdHJpbmcsXG4gIGNhbGxiYWNrPzogKGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KSA9PiBQcm9taXNhYmxlPHZvaWQ+XG4pOiBQcm9taXNlPEhUTUxEaXZFbGVtZW50PiB7XG4gIGNvbnN0IGRpdiA9IGNyZWF0ZUh0bWxFbGVtZW50KCdkaXYnLCBvKTtcbiAgYXdhaXQgY2FsbGJhY2s/LihkaXYpO1xuICByZXR1cm4gZGl2O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gZWxlbWVudCBhc3luY2hyb25vdXNseS5cbiAqXG4gKiBAdHlwZVBhcmFtIEsgLSBUaGUgdGFnIG5hbWUga2V5IGZyb20gYEhUTUxFbGVtZW50VGFnTmFtZU1hcGAuXG4gKiBAcGFyYW0gdGFnIC0gVGhlIHRhZyBuYW1lIG9mIHRoZSBlbGVtZW50IHRvIGNyZWF0ZS5cbiAqIEBwYXJhbSBvIC0gVGhlIGVsZW1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBlbGVtZW50IGlzIGNyZWF0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBlbGVtZW50LlxuICogQHJlbWFya3MgTm90IHJlZmFjdG9yZWQgdG8gcGFyYW1ldGVyLW9iamVjdCBwYXR0ZXJuLCB0byBrZWVwIHRoZSBwYXJpdHkgd2l0aCB7QGxpbmsgb2JzaWRpYW4jY3JlYXRlRWx9IChvciBjcmVhdGVTdmcsIGNvcnJlc3BvbmRpbmdseSkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVFbEFzeW5jPEsgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0YWc6IEssXG4gIG8/OiBEb21FbGVtZW50SW5mbyB8IHN0cmluZyxcbiAgY2FsbGJhY2s/OiAoZWxlbWVudDogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdKSA9PiBQcm9taXNhYmxlPHZvaWQ+XG4pOiBQcm9taXNlPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXT4ge1xuICBjb25zdCBlbGVtZW50ID0gY3JlYXRlSHRtbEVsZW1lbnQodGFnLCBvKTtcbiAgYXdhaXQgY2FsbGJhY2s/LihlbGVtZW50KTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIERvY3VtZW50RnJhZ21lbnQgYXN5bmNocm9ub3VzbHkuXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgRG9jdW1lbnRGcmFnbWVudCBpcyBjcmVhdGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgRG9jdW1lbnRGcmFnbWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUZyYWdtZW50QXN5bmMoY2FsbGJhY2s/OiAoZWxlbWVudDogRG9jdW1lbnRGcmFnbWVudCkgPT4gUHJvbWlzYWJsZTx2b2lkPik6IFByb21pc2U8RG9jdW1lbnRGcmFnbWVudD4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9wcmVmZXItY3JlYXRlLWVsIC0tIEFnbm9zdGljIG1vZHVsZS5cbiAgY29uc3QgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gIGF3YWl0IGNhbGxiYWNrPy4oZnJhZ21lbnQpO1xuICByZXR1cm4gZnJhZ21lbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNwYW4gYXN5bmNocm9ub3VzbHkuXG4gKlxuICogQHBhcmFtIG8gLSBUaGUgZWxlbWVudCBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHNwYW4gaXMgY3JlYXRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHNwYW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTcGFuQXN5bmMoXG4gIG8/OiBEb21FbGVtZW50SW5mbyB8IHN0cmluZyxcbiAgY2FsbGJhY2s/OiAoZWxlbWVudDogSFRNTFNwYW5FbGVtZW50KSA9PiBQcm9taXNhYmxlPHZvaWQ+XG4pOiBQcm9taXNlPEhUTUxTcGFuRWxlbWVudD4ge1xuICBjb25zdCBzcGFuID0gY3JlYXRlSHRtbEVsZW1lbnQoJ3NwYW4nLCBvKTtcbiAgYXdhaXQgY2FsbGJhY2s/LihzcGFuKTtcbiAgcmV0dXJuIHNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN2ZyBhc3luY2hyb25vdXNseS5cbiAqXG4gKiBAdHlwZVBhcmFtIEsgLSBUaGUgdGFnIG5hbWUga2V5IGZyb20gYFNWR0VsZW1lbnRUYWdOYW1lTWFwYC5cbiAqIEBwYXJhbSB0YWcgLSBUaGUgdGFnIG5hbWUgb2YgdGhlIHN2ZyB0byBjcmVhdGUuXG4gKiBAcGFyYW0gbyAtIFRoZSBzdmcgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBzdmcgaXMgY3JlYXRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHN2Zy5cbiAqIEByZW1hcmtzIE5vdCByZWZhY3RvcmVkIHRvIHBhcmFtZXRlci1vYmplY3QgcGF0dGVybiwgdG8ga2VlcCB0aGUgcGFyaXR5IHdpdGgge0BsaW5rIG9ic2lkaWFuI2NyZWF0ZVN2Z30gKG9yIGNyZWF0ZUVsLCBjb3JyZXNwb25kaW5nbHkpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU3ZnQXN5bmM8SyBleHRlbmRzIGtleW9mIFNWR0VsZW1lbnRUYWdOYW1lTWFwPihcbiAgdGFnOiBLLFxuICBvPzogc3RyaW5nIHwgU3ZnRWxlbWVudEluZm8sXG4gIGNhbGxiYWNrPzogKGVsZW1lbnQ6IFNWR0VsZW1lbnRUYWdOYW1lTWFwW0tdKSA9PiBQcm9taXNhYmxlPHZvaWQ+XG4pOiBQcm9taXNlPFNWR0VsZW1lbnRUYWdOYW1lTWFwW0tdPiB7XG4gIGNvbnN0IHN2ZyA9IGNyZWF0ZVN2Z0VsZW1lbnQodGFnLCBvKTtcbiAgYXdhaXQgY2FsbGJhY2s/LihzdmcpO1xuICByZXR1cm4gc3ZnO1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBsb2FkZWQuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byBlbnN1cmUgaXMgbG9hZGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBlbGVtZW50IGlzIGxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUxvYWRlZChlbGVtZW50OiBFbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChpc0xvYWRlZChlbGVtZW50KSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCB3aW4gPSBnZXROb2RlV2luZG93KGVsZW1lbnQpO1xuICBpZiAoXG4gICAgaXNJbnN0YW5jZU9mKGVsZW1lbnQsIHdpbi5IVE1MQm9keUVsZW1lbnQpXG4gICAgfHwgaXNJbnN0YW5jZU9mKGVsZW1lbnQsIHdpbi5IVE1MSW1hZ2VFbGVtZW50KVxuICAgIHx8IGlzSW5zdGFuY2VPZihlbGVtZW50LCB3aW4uSFRNTElGcmFtZUVsZW1lbnQpXG4gICAgfHwgaXNJbnN0YW5jZU9mKGVsZW1lbnQsIHdpbi5IVE1MRW1iZWRFbGVtZW50KVxuICAgIHx8IGlzSW5zdGFuY2VPZihlbGVtZW50LCB3aW4uSFRNTExpbmtFbGVtZW50KVxuICAgIHx8IGlzSW5zdGFuY2VPZihlbGVtZW50LCB3aW4uSFRNTE9iamVjdEVsZW1lbnQpXG4gICAgfHwgaXNJbnN0YW5jZU9mKGVsZW1lbnQsIHdpbi5IVE1MU3R5bGVFbGVtZW50KVxuICAgIHx8IGlzSW5zdGFuY2VPZihlbGVtZW50LCB3aW4uSFRNTFRyYWNrRWxlbWVudClcbiAgKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlc29sdmUpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlc29sdmUpO1xuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKGdldExvYWRhYmxlRWxlbWVudHMoZWxlbWVudCkubWFwKChsb2FkYWJsZUVsZW1lbnQpID0+IGVuc3VyZUxvYWRlZChsb2FkYWJsZUVsZW1lbnQpKSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgd2luZG93IGEgZG9jdW1lbnQgYmVsb25ncyB0by5cbiAqXG4gKiBBIGRvY3VtZW50IGlzIHRoZSBvbmUgbm9kZSB3aG9zZSBgb3duZXJEb2N1bWVudGAgaXMgYG51bGxgLCBzbyB0aGUgYG93bmVyRG9jdW1lbnRgLWNoYXNpbmcgbG9va3VwXG4gKiB1c2VkIGZvciBvcmRpbmFyeSBub2RlcyByZXNvbHZlcyBhIGRvY3VtZW50IHRvIHRoZSB3cm9uZyB3aW5kb3cuIFJlYWRpbmcgYGRlZmF1bHRWaWV3YCBvZmYgdGhlXG4gKiBkb2N1bWVudCBpdHNlbGYgaXMgd2hhdCBrZWVwcyBhIHBvcC1vdXQgd2luZG93J3MgY29vcmRpbmF0ZXMgbWVhc3VyZWQgYWdhaW5zdCB0aGF0IHdpbmRvdy5cbiAqXG4gKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIGdldCB0aGUgd2luZG93IG9mLlxuICogQHJldHVybnMgVGhlIHdpbmRvdyB0aGUgZG9jdW1lbnQgYmVsb25ncyB0by5cbiAqIEB0aHJvd3MgQW4ge0BsaW5rIEVycm9yfSBpZiB0aGUgZG9jdW1lbnQgaXMgZGV0YWNoZWQgYW5kIHRoZXJlZm9yZSBoYXMgbm8gd2luZG93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRXaW5kb3coZG9jOiBEb2N1bWVudCk6IFdpbmRvdyB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShkb2MuZGVmYXVsdFZpZXcsICdUaGUgZG9jdW1lbnQgaGFzIG5vIHdpbmRvdycpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHotaW5kZXggb2YgdGhlIGdpdmVuIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byBnZXQgdGhlIHotaW5kZXggb2YuXG4gKiBAcmV0dXJucyBUaGUgei1pbmRleCBvZiB0aGUgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFpJbmRleChlbGVtZW50OiBFbGVtZW50KTogbnVtYmVyIHtcbiAgbGV0IGVsZW1lbnQyOiBFbGVtZW50IHwgbnVsbCA9IGVsZW1lbnQ7XG5cbiAgd2hpbGUgKGVsZW1lbnQyKSB7XG4gICAgY29uc3QgekluZGV4U3RyaW5nID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50MikuekluZGV4O1xuICAgIGNvbnN0IHpJbmRleCA9IE51bWJlci5wYXJzZUludCh6SW5kZXhTdHJpbmcsIDEwKTtcbiAgICBpZiAoIU51bWJlci5pc05hTih6SW5kZXgpKSB7XG4gICAgICByZXR1cm4gekluZGV4O1xuICAgIH1cbiAgICBlbGVtZW50MiA9IGVsZW1lbnQyLnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiB0aGUgb2Zmc2V0IHBhcmVudC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIG9mZnNldCBwYXJlbnQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50VmlzaWJsZUluT2Zmc2V0UGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcbiAgaWYgKCFwYXJlbnRFbGVtZW50KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBwYXJlbnRFbGVtZW50UmVjdCA9IHBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgcmV0dXJuIChcbiAgICBwYXJlbnRFbGVtZW50UmVjdC50b3AgPD0gZWxlbWVudFJlY3QudG9wXG4gICAgJiYgZWxlbWVudFJlY3QuYm90dG9tIDw9IHBhcmVudEVsZW1lbnRSZWN0LmJvdHRvbVxuICAgICYmIHBhcmVudEVsZW1lbnRSZWN0LmxlZnQgPD0gZWxlbWVudFJlY3QubGVmdFxuICAgICYmIGVsZW1lbnRSZWN0LnJpZ2h0IDw9IHBhcmVudEVsZW1lbnRSZWN0LnJpZ2h0XG4gICk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBlbGVtZW50IGlzIGxvYWRlZC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBlbGVtZW50IGlzIGxvYWRlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xvYWRlZChlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IHdpbiA9IGdldE5vZGVXaW5kb3coZWxlbWVudCk7XG5cbiAgaWYgKGlzSW5zdGFuY2VPZihlbGVtZW50LCB3aW4uSFRNTEJvZHlFbGVtZW50KSkge1xuICAgIGNvbnN0IHJlYWR5U3RhdGUgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQucmVhZHlTdGF0ZTtcbiAgICByZXR1cm4gcmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyB8fCByZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnO1xuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2VPZihlbGVtZW50LCB3aW4uSFRNTEltYWdlRWxlbWVudCkpIHtcbiAgICByZXR1cm4gZWxlbWVudC5jb21wbGV0ZSAmJiBlbGVtZW50Lm5hdHVyYWxXaWR0aCA+IDA7XG4gIH1cblxuICBpZiAoaXNJbnN0YW5jZU9mKGVsZW1lbnQsIHdpbi5IVE1MSUZyYW1lRWxlbWVudCkpIHtcbiAgICByZXR1cm4gISFlbGVtZW50LmNvbnRlbnREb2N1bWVudDtcbiAgfVxuXG4gIGlmIChpc0luc3RhbmNlT2YoZWxlbWVudCwgd2luLkhUTUxFbWJlZEVsZW1lbnQpKSB7XG4gICAgcmV0dXJuICEhZWxlbWVudC5nZXRTVkdEb2N1bWVudCgpO1xuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2VPZihlbGVtZW50LCB3aW4uSFRNTExpbmtFbGVtZW50KSkge1xuICAgIHJldHVybiBlbGVtZW50LnJlbCA9PT0gJ3N0eWxlc2hlZXQnID8gZWxlbWVudC5zaGVldCAhPT0gbnVsbCA6IHRydWU7XG4gIH1cblxuICBpZiAoaXNJbnN0YW5jZU9mKGVsZW1lbnQsIHdpbi5IVE1MT2JqZWN0RWxlbWVudCkpIHtcbiAgICByZXR1cm4gISFlbGVtZW50LmNvbnRlbnREb2N1bWVudCB8fCAhIWVsZW1lbnQuZ2V0U1ZHRG9jdW1lbnQoKTtcbiAgfVxuXG4gIGlmIChpc0luc3RhbmNlT2YoZWxlbWVudCwgd2luLkhUTUxTY3JpcHRFbGVtZW50KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2VPZihlbGVtZW50LCB3aW4uSFRNTFN0eWxlRWxlbWVudCkpIHtcbiAgICByZXR1cm4gISFlbGVtZW50LnNoZWV0O1xuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2VPZihlbGVtZW50LCB3aW4uSFRNTFRyYWNrRWxlbWVudCkpIHtcbiAgICBjb25zdCBSRUFEWV9TVEFURV9MT0FERUQgPSAyO1xuICAgIHJldHVybiBlbGVtZW50LnJlYWR5U3RhdGUgPT09IFJFQURZX1NUQVRFX0xPQURFRDtcbiAgfVxuXG4gIHJldHVybiBnZXRMb2FkYWJsZUVsZW1lbnRzKGVsZW1lbnQpLmV2ZXJ5KChsb2FkYWJsZUVsZW1lbnQpID0+IGlzTG9hZGVkKGxvYWRhYmxlRWxlbWVudCkpO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGFuY2VzdG9yIG5vZGVzIG9mIHRoZSBnaXZlbiBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIG5vZGUgdG8gYWRkIHRoZSBldmVudCBsaXN0ZW5lciB0by5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIERpc3Bvc2FibGV9IHRoYXQgcmVtb3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIHdoZW4gZGlzcG9zZWQsIGZvciB1c2Ugd2l0aCBgdXNpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb25BbmNlc3RvclNjcm9sbE9yUmVzaXplKG5vZGU6IE5vZGUsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogRGlzcG9zYWJsZSB7XG4gIGNvbnN0IHdpbiA9IGdldE5vZGVXaW5kb3cobm9kZSk7XG4gIGNvbnN0IGFuY2VzdG9yczogRXZlbnRUYXJnZXRbXSA9IFtub2RlLm93bmVyRG9jdW1lbnQgPz8gd2luLmRvY3VtZW50LCB3aW5dO1xuXG4gIGxldCBjdXJyZW50Tm9kZTogTm9kZSB8IG51bGwgPSBub2RlO1xuXG4gIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGN1cnJlbnROb2RlKTtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gIH1cblxuICBsZXQgaXNFdmVudFRyaWdnZXJlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgYW5jZXN0b3Igb2YgYW5jZXN0b3JzKSB7XG4gICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgY2FsbGJhY2tTbW9vdGgsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBDYWxsYmFja0Rpc3Bvc2FibGUoe1xuICAgIGNhbGxiYWNrOiAoKTogdm9pZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGFuY2VzdG9yIG9mIGFuY2VzdG9ycykge1xuICAgICAgICBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgICAgICBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxsYmFja1Ntb290aCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgZnVuY3Rpb24gY2FsbGJhY2tTbW9vdGgoKTogdm9pZCB7XG4gICAgaWYgKGlzRXZlbnRUcmlnZ2VyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpc0V2ZW50VHJpZ2dlcmVkID0gdHJ1ZTtcblxuICAgIHdpbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzRXZlbnRUcmlnZ2VyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nIHdpdGggJ3B4JyBhcHBlbmRlZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgbnVtYmVyIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIGFzIGEgc3RyaW5nIHdpdGggJ3B4JyBhcHBlbmRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUHgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtTdHJpbmcodmFsdWUpfXB4YDtcbn1cblxuLyoqXG4gKiBXYWl0cyB1bnRpbCB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBjb25uZWN0ZWQgdG8gdGhlIERPTS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZWxlbWVudCBpcyBjb25uZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0VW50aWxDb25uZWN0ZWQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBPYnNpZGlhbidzIGBlbC5vbk5vZGVJbnNlcnRlZGAgdXNlcyBhIGBub2RlLWluc2VydGVkYCBDU1Mga2V5ZnJhbWUgZnJvbSBPYnNpZGlhbidzIHN0eWxlc2hlZXQuXG4gICAgLy8gVGhlIGFnbm9zdGljIGVxdWl2YWxlbnQgaW5zdGVhZCBvYnNlcnZlcyB0aGUgZWxlbWVudCdzIGRvY3VtZW50IGZvciBpdCBiZWNvbWluZyBjb25uZWN0ZWQuXG4gICAgY29uc3Qgb3duZXJEb2N1bWVudCA9IGVsZW1lbnQub3duZXJEb2N1bWVudDtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyAoZ2V0Tm9kZVdpbmRvdyhlbGVtZW50KSkuTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICBpZiAoIWVsZW1lbnQuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShvd25lckRvY3VtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQXBwbGllcyB0aGUgZWxlbWVudC10eXBlLWFnbm9zdGljIHN1YnNldCBvZiB7QGxpbmsgRG9tRWxlbWVudEluZm99IHRoYXQgT2JzaWRpYW4ncyBgY3JlYXRlRWxgXG4gKiBzdXBwb3J0cyBcdTIwMTQgYGNsc2AsIGB0ZXh0YCwgYGF0dHJgLCBgdGl0bGVgLCBhbmQgYHBhcmVudGAvYHByZXBlbmRgLiBUaGUgZWxlbWVudC10eXBlLXNwZWNpZmljXG4gKiBmaWVsZHMgKGB2YWx1ZWAsIGB0eXBlYCwgYHBsYWNlaG9sZGVyYCwgYGhyZWZgKSBhbmQgdGhlIGBvbipgIGV2ZW50LWhhbmRsZXIga2V5cyBhcmUgaW50ZW50aW9uYWxseVxuICogTk9UIHBvcnRlZCAobm8gaW50ZXJuYWwgY2FsbGVyIG5lZWRzIHRoZW0pOyBleHRlbmQgdGhpcyBpZiBhIGNvbnN1bWVyIGRvZXMgXHUyMDE0IGFuZCByZXZhbGlkYXRlIGFnYWluc3RcbiAqIGBlbmhhbmNlLmpzYCAoc2VlIHRoZSBgQGZpbGVgIG5vdGUgYW5kIGBDTEFVREUubWRgKS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIGFwcGx5IHRoZSBpbmZvIHRvLlxuICogQHBhcmFtIG8gLSBUaGUgZWxlbWVudCBpbmZvIChvciBhIGJhcmUgY2xhc3Mgc3RyaW5nKS5cbiAqL1xuZnVuY3Rpb24gYXBwbHlEb21FbGVtZW50SW5mbyhlbGVtZW50OiBIVE1MRWxlbWVudCwgbzogRG9tRWxlbWVudEluZm8gfCBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgY29uc3QgaW5mbzogRG9tRWxlbWVudEluZm8gPSB0eXBlb2YgbyA9PT0gJ3N0cmluZycgPyB7IGNsczogbyB9IDogbyA/PyB7fTtcblxuICBpZiAoaW5mby5jbHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gQXJyYXkuaXNBcnJheShpbmZvLmNscykgPyBpbmZvLmNscy5qb2luKCcgJykgOiBpbmZvLmNscztcbiAgfVxuICBpZiAoaW5mby50ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBzZXRFbGVtZW50VGV4dChlbGVtZW50LCBpbmZvLnRleHQpO1xuICB9XG4gIGlmIChpbmZvLmF0dHIpIHtcbiAgICBzZXRFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50LCBpbmZvLmF0dHIpO1xuICB9XG4gIGlmIChpbmZvLnRpdGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbGVtZW50LnRpdGxlID0gaW5mby50aXRsZTtcbiAgfVxuICBpbnNlcnRJbnRvUGFyZW50KGVsZW1lbnQsIGluZm8pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIdG1sRWxlbWVudDxLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPih0YWc6IEssIG8/OiBEb21FbGVtZW50SW5mbyB8IHN0cmluZyk6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL3ByZWZlci1jcmVhdGUtZWwgLS0gQWdub3N0aWMgbW9kdWxlLlxuICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xuICBhcHBseURvbUVsZW1lbnRJbmZvKGVsZW1lbnQsIG8pO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3ZnRWxlbWVudDxLIGV4dGVuZHMga2V5b2YgU1ZHRWxlbWVudFRhZ05hbWVNYXA+KHRhZzogSywgbz86IHN0cmluZyB8IFN2Z0VsZW1lbnRJbmZvKTogU1ZHRWxlbWVudFRhZ05hbWVNYXBbS10ge1xuICBjb25zdCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05BTUVTUEFDRSwgdGFnKTtcbiAgY29uc3QgaW5mbzogU3ZnRWxlbWVudEluZm8gPSB0eXBlb2YgbyA9PT0gJ3N0cmluZycgPyB7IGNsczogbyB9IDogbyA/PyB7fTtcblxuICBpZiAoaW5mby5jbHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGluZm8uY2xzKSkge1xuICAgICAgc3ZnLmNsYXNzTGlzdC5hZGQoLi4uaW5mby5jbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdmcuY2xhc3NMaXN0LmFkZChpbmZvLmNscyk7XG4gICAgfVxuICB9XG4gIGlmIChpbmZvLmF0dHIpIHtcbiAgICBzZXRFbGVtZW50QXR0cmlidXRlcyhzdmcsIGluZm8uYXR0cik7XG4gIH1cbiAgaW5zZXJ0SW50b1BhcmVudChzdmcsIGluZm8pO1xuICByZXR1cm4gc3ZnO1xufVxuXG5mdW5jdGlvbiBnZXRMb2FkYWJsZUVsZW1lbnRzKGVsZW1lbnQ6IEVsZW1lbnQpOiBFbGVtZW50W10ge1xuICByZXR1cm4gWy4uLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYm9keSwgaW1nLCBpZnJhbWUsIGVtYmVkLCBsaW5rLCBvYmplY3QsIHNjcmlwdCwgc3R5bGUsIHRyYWNrJyldO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9uby1nbG9iYWwtdGhpcyAtLSBUeXBlLW9ubHk6IHRoZSByZXNvbHZlZCB3aW5kb3cgbmVlZHMgdGhlIGdsb2JhbCBET00gY29uc3RydWN0b3IgdHlwaW5ncy5cbmZ1bmN0aW9uIGdldE5vZGVXaW5kb3cobm9kZTogTm9kZSk6IHR5cGVvZiBnbG9iYWxUaGlzICYgV2luZG93IHtcbiAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudD8uZGVmYXVsdFZpZXcgPz8gd2luZG93O1xufVxuXG5mdW5jdGlvbiBpbnNlcnRJbnRvUGFyZW50KGVsZW1lbnQ6IEVsZW1lbnQsIGluZm86IERvbUVsZW1lbnRJbmZvIHwgU3ZnRWxlbWVudEluZm8pOiB2b2lkIHtcbiAgaWYgKCFpbmZvLnBhcmVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaW5mby5wcmVwZW5kKSB7XG4gICAgaW5mby5wYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIGluZm8ucGFyZW50LmZpcnN0Q2hpbGQpO1xuICB9IGVsc2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1kb20tbm9kZS1hcHBlbmQgLS0gYHBhcmVudGAgaXMgYSBgTm9kZWAsIGFuZCBgYXBwZW5kYCBpcyBkZWNsYXJlZCBvbiBgUGFyZW50Tm9kZWAsIG5vdCBvbiBgTm9kZWAuXG4gICAgaW5mby5wYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNJbnN0YW5jZU9mPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBOb2RlLCBjdG9yOiBhYnN0cmFjdCBuZXcgKC4uLiRhcmd1bWVudHM6IG5ldmVyW10pID0+IFQpOiBub2RlIGlzIFQge1xuICAvLyBBZ25vc3RpYyByZWltcGxlbWVudGF0aW9uIG9mIE9ic2lkaWFuJ3MgYE5vZGUucHJvdG90eXBlLmluc3RhbmNlT2ZgIChlbmhhbmNlLmpzKS5cbiAgLy8gVGhlIGNhbGxlciByZXNvbHZlcyBgY3RvcmAgaW4gdGhlIG5vZGUncyBvd24gcmVhbG0gKHZpYSBgZ2V0Tm9kZVdpbmRvd2ApLCBrZWVwaW5nIGl0IGNyb3NzLXdpbmRvdyBzYWZlLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9wcmVmZXItaW5zdGFuY2VvZiAtLSBUaGlzIElTIHRoZSBhZ25vc3RpYyBgLmluc3RhbmNlT2ZgIHJlcGxhY2VtZW50LlxuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIGN0b3I7XG59XG5cbmZ1bmN0aW9uIHNldEVsZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHJpYnV0ZTogTm9uTnVsbGFibGU8RG9tRWxlbWVudEluZm9bJ2F0dHInXT4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZSkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItdG9nZ2xlLWF0dHJpYnV0ZSAtLSBgdG9nZ2xlQXR0cmlidXRlYCBvbmx5IGV2ZXIgc2V0cyB0aGUgZW1wdHkgc3RyaW5nLCBzbyBpdCBjYW5ub3QgY2FycnkgYFN0cmluZyh2YWx1ZSlgLiBUaGUgcnVsZSBtYXRjaGVzIHRoZSByZW1vdmUvc2V0IHNoYXBlIHdpdGhvdXQgc2VlaW5nIHRoYXQgdGhlIHZhbHVlIGlzIHdoYXQgdGhpcyBicmFuY2ggZXhpc3RzIHRvIHdyaXRlLlxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIFN0cmluZyh2YWx1ZSkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRFbGVtZW50VGV4dChlbGVtZW50OiBIVE1MRWxlbWVudCwgdGV4dDogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZyk6IHZvaWQge1xuICBpZiAodGV4dCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBlbGVtZW50LnJlcGxhY2VDaGlsZHJlbih0ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnRleHRDb250ZW50ID0gdGV4dDtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQSxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLHlCQUF5QjtBQUVsQyxNQUFNLGdCQUFnQjtBQXNDdEIsZUFBc0IsZUFDcEIsR0FDQSxVQUN5QjtBQUN6QixRQUFNLE1BQU0sa0JBQWtCLE9BQU8sQ0FBQztBQUN0QyxRQUFNLFdBQVcsR0FBRztBQUNwQixTQUFPO0FBQ1Q7QUFZQSxlQUFzQixjQUNwQixLQUNBLEdBQ0EsVUFDbUM7QUFDbkMsUUFBTSxVQUFVLGtCQUFrQixLQUFLLENBQUM7QUFDeEMsUUFBTSxXQUFXLE9BQU87QUFDeEIsU0FBTztBQUNUO0FBUUEsZUFBc0Isb0JB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
|
|
@@ -97,7 +97,7 @@ export interface SetNestedPropertyValueParams {
|
|
|
97
97
|
/**
|
|
98
98
|
* The object to set the nested property value in.
|
|
99
99
|
*/
|
|
100
|
-
readonly
|
|
100
|
+
readonly $object: GenericObject;
|
|
101
101
|
/**
|
|
102
102
|
* The path to the nested property.
|
|
103
103
|
*/
|
|
@@ -162,36 +162,28 @@ export declare function castTo<T>(value: unknown): T;
|
|
|
162
162
|
* Clones an object, including non-enumerable properties.
|
|
163
163
|
*
|
|
164
164
|
* @typeParam T - The type of the object.
|
|
165
|
-
* @param
|
|
165
|
+
* @param $object - The object to clone.
|
|
166
166
|
* @returns A new object with the same properties as the original object, including non-enumerable properties.
|
|
167
167
|
*/
|
|
168
|
-
export declare function cloneWithNonEnumerableProperties<T extends object>(
|
|
169
|
-
/**
|
|
170
|
-
* Compares two values to determine if they are deeply equal.
|
|
171
|
-
*
|
|
172
|
-
* @param a - The first value to compare.
|
|
173
|
-
* @param b - The second value to compare.
|
|
174
|
-
* @returns `true` if the values are deeply equal, otherwise `false`.
|
|
175
|
-
*/
|
|
176
|
-
export declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
168
|
+
export declare function cloneWithNonEnumerableProperties<T extends object>($object: T): T;
|
|
177
169
|
/**
|
|
178
170
|
* Deletes multiple properties from an object.
|
|
179
171
|
*
|
|
180
172
|
* @typeParam T - The type of the object.
|
|
181
|
-
* @param
|
|
173
|
+
* @param $object - The object to delete the properties from.
|
|
182
174
|
* @param propertyNames - The names of the properties to delete.
|
|
183
175
|
* @returns `true` if any of the properties were present, otherwise `false`.
|
|
184
176
|
*/
|
|
185
|
-
export declare function deleteProperties<T extends object>(
|
|
177
|
+
export declare function deleteProperties<T extends object>($object: T, propertyNames: (keyof T)[]): boolean;
|
|
186
178
|
/**
|
|
187
179
|
* Deletes a property from an object.
|
|
188
180
|
*
|
|
189
181
|
* @typeParam T - The type of the object.
|
|
190
|
-
* @param
|
|
182
|
+
* @param $object - The object to delete the property from.
|
|
191
183
|
* @param propertyName - The name of the property to delete.
|
|
192
184
|
* @returns `true` if the property was present, otherwise `false`.
|
|
193
185
|
*/
|
|
194
|
-
export declare function deleteProperty<T extends object>(
|
|
186
|
+
export declare function deleteProperty<T extends object>($object: T, propertyName: keyof T): boolean;
|
|
195
187
|
/**
|
|
196
188
|
* Extracts the default export from a module.
|
|
197
189
|
*
|
|
@@ -206,27 +198,27 @@ export declare function extractDefaultExportInterop<T>(module: ModuleWithDefault
|
|
|
206
198
|
* Gets all entries of an object.
|
|
207
199
|
*
|
|
208
200
|
* @typeParam T - The type of the object.
|
|
209
|
-
* @param
|
|
201
|
+
* @param $object - The object to get the entries of.
|
|
210
202
|
* @returns An array of all entries of the object.
|
|
211
203
|
*/
|
|
212
|
-
export declare function getAllEntries<T extends object>(
|
|
204
|
+
export declare function getAllEntries<T extends object>($object: T): [StringKeys<T>, T[StringKeys<T>]][];
|
|
213
205
|
/**
|
|
214
206
|
* Gets all keys of an object.
|
|
215
207
|
* Includes fields and properties.
|
|
216
208
|
*
|
|
217
209
|
* @typeParam T - The type of the object.
|
|
218
|
-
* @param
|
|
210
|
+
* @param $object - The object to get the keys of.
|
|
219
211
|
* @returns An array of all keys of the object.
|
|
220
212
|
*/
|
|
221
|
-
export declare function getAllKeys<T extends object>(
|
|
213
|
+
export declare function getAllKeys<T extends object>($object: T): StringKeys<T>[];
|
|
222
214
|
/**
|
|
223
215
|
* Gets the value of a nested property from an object.
|
|
224
216
|
*
|
|
225
|
-
* @param
|
|
217
|
+
* @param $object - The object to get the nested property value from.
|
|
226
218
|
* @param path - The path to the nested property.
|
|
227
219
|
* @returns The value of the nested property.
|
|
228
220
|
*/
|
|
229
|
-
export declare function getNestedPropertyValue(
|
|
221
|
+
export declare function getNestedPropertyValue($object: GenericObject, path: string): unknown;
|
|
230
222
|
/**
|
|
231
223
|
* Gets the prototype of the specified object.
|
|
232
224
|
*
|
|
@@ -235,6 +227,14 @@ export declare function getNestedPropertyValue(obj: GenericObject, path: string)
|
|
|
235
227
|
* @returns The prototype of the object.
|
|
236
228
|
*/
|
|
237
229
|
export declare function getPrototypeOf<T>(instance: T): T;
|
|
230
|
+
/**
|
|
231
|
+
* Compares two values to determine if they are deeply equal.
|
|
232
|
+
*
|
|
233
|
+
* @param a - The first value to compare.
|
|
234
|
+
* @param b - The second value to compare.
|
|
235
|
+
* @returns `true` if the values are deeply equal, otherwise `false`.
|
|
236
|
+
*/
|
|
237
|
+
export declare function isDeepEqual(a: unknown, b: unknown): boolean;
|
|
238
238
|
/**
|
|
239
239
|
* Retrieves the name of a property of a given type `T`.
|
|
240
240
|
*
|
|
@@ -260,27 +260,27 @@ export declare function nameof<T extends object>(name: StringKeys<T>): StringKey
|
|
|
260
260
|
* ```
|
|
261
261
|
*
|
|
262
262
|
* @typeParam T - The target type with optional properties to normalize.
|
|
263
|
-
* @param
|
|
263
|
+
* @param $object - The object to normalize, allowing explicit `undefined` for optional properties.
|
|
264
264
|
* @returns The normalized object, compatible with `exactOptionalPropertyTypes`.
|
|
265
265
|
*/
|
|
266
|
-
export declare function normalizeOptionalProperties<T>(
|
|
266
|
+
export declare function normalizeOptionalProperties<T>($object: UndefinedOnPartialDeep<T>): T;
|
|
267
267
|
/**
|
|
268
268
|
* Removes all `undefined` properties from an object when there are no mandatory keys with `undefined` values.
|
|
269
269
|
*
|
|
270
270
|
* @typeParam Type - The type of the object.
|
|
271
|
-
* @param
|
|
271
|
+
* @param $arguments - The arguments to the function.
|
|
272
272
|
* @returns The object with all `undefined` properties removed.
|
|
273
273
|
*/
|
|
274
|
-
export declare function removeUndefinedProperties<Type extends object>(
|
|
274
|
+
export declare function removeUndefinedProperties<Type extends object>(...$arguments: RemoveUndefinedOverload<Type>): Type;
|
|
275
275
|
/**
|
|
276
276
|
* Removes all `undefined` properties from an object when there are mandatory keys with `undefined` values.
|
|
277
277
|
*
|
|
278
278
|
* @typeParam Type - The type of the object.
|
|
279
279
|
* @typeParam KeysToKeep - The keys to keep.
|
|
280
|
-
* @param
|
|
280
|
+
* @param $arguments - The arguments to the function.
|
|
281
281
|
* @returns The object with all `undefined` properties removed.
|
|
282
282
|
*/
|
|
283
|
-
export declare function removeUndefinedProperties<Type extends object, const KeysToKeep extends readonly string[]>(
|
|
283
|
+
export declare function removeUndefinedProperties<Type extends object, const KeysToKeep extends readonly string[]>(...$arguments: RemoveUndefinedWithKeysOverload<Type, KeysToKeep>): Type;
|
|
284
284
|
/**
|
|
285
285
|
* Sets the value of a nested property in an object.
|
|
286
286
|
*
|