@mnaoumov/obsidian-lib 10.12.0 → 11.0.0

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