@mnaoumov/obsidian-lib 10.11.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 (460) hide show
  1. package/README.md +26 -0
  2. package/components/all-windows-status-bar-item-component/package.json +6 -0
  3. package/components/shared-component-pool-component/package.json +6 -0
  4. package/components/worker-component/package.json +6 -0
  5. package/components/worker-pool-component/package.json +6 -0
  6. package/components/workspace-layout-state-component/package.json +6 -0
  7. package/dist/lib/cjs/__merged.cjs +477 -285
  8. package/dist/lib/cjs/__merged.d.cts +26 -10
  9. package/dist/lib/cjs/anchored-suggest.cjs +1 -1
  10. package/dist/lib/cjs/app.cjs +2 -2
  11. package/dist/lib/cjs/async-with-notice.cjs +4 -4
  12. package/dist/lib/cjs/attachment-path.cjs +9 -9
  13. package/dist/lib/cjs/attachment-path.d.cts +3 -3
  14. package/dist/lib/cjs/attachment-unit-folder.cjs +2 -2
  15. package/dist/lib/cjs/backlink-index.cjs +5 -5
  16. package/dist/lib/cjs/backlink.cjs +7 -7
  17. package/dist/lib/cjs/bases-view-registrar.cjs +1 -1
  18. package/dist/lib/cjs/broken-link-candidates.cjs +1 -1
  19. package/dist/lib/cjs/bug-report-diagnostics.cjs +222 -0
  20. package/dist/lib/cjs/bug-report-diagnostics.d.cts +186 -0
  21. package/dist/lib/cjs/bug-report.cjs +38 -12
  22. package/dist/lib/cjs/bug-report.d.cts +65 -0
  23. package/dist/lib/cjs/bulk-operation-progress.cjs +1 -1
  24. package/dist/lib/cjs/bulk-operation.cjs +2 -2
  25. package/dist/lib/cjs/callout.cjs +6 -6
  26. package/dist/lib/cjs/canvas.cjs +11 -9
  27. package/dist/lib/cjs/canvas.d.cts +13 -0
  28. package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -3
  29. package/dist/lib/cjs/code-block-render-handoff.cjs +5 -5
  30. package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +4 -4
  31. package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +2 -2
  32. package/dist/lib/cjs/codemirror/index.cjs +7 -7
  33. package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +5 -5
  34. package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +2 -2
  35. package/dist/lib/cjs/codemirror/settings-facet.cjs +1 -1
  36. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +17 -17
  37. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +13 -13
  38. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -2
  39. package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -2
  40. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +10 -10
  41. package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +7 -7
  42. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -3
  43. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -3
  44. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +2 -2
  45. package/dist/lib/cjs/command-handlers/index.cjs +15 -15
  46. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +95 -4
  47. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +34 -2
  48. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -2
  49. package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +2 -2
  50. package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +2 -2
  51. package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +1 -1
  52. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +2 -2
  53. package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +2 -2
  54. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -1
  55. package/dist/lib/cjs/community-plugins.cjs +3 -3
  56. package/dist/lib/cjs/components/abort-signal-component.cjs +2 -2
  57. package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
  58. package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +245 -0
  59. package/dist/lib/cjs/components/all-windows-status-bar-item-component.d.cts +146 -0
  60. package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
  61. package/dist/lib/cjs/components/async-events-component.cjs +1 -1
  62. package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +12 -12
  63. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +2 -2
  64. package/dist/lib/cjs/components/component-ex.cjs +21 -11
  65. package/dist/lib/cjs/components/component-ex.d.cts +11 -0
  66. package/dist/lib/cjs/components/console-debug-component.cjs +2 -2
  67. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -2
  68. package/dist/lib/cjs/components/disposable-component.cjs +2 -2
  69. package/dist/lib/cjs/components/embed-extensions-component.cjs +21 -4
  70. package/dist/lib/cjs/components/embed-extensions-component.d.cts +8 -0
  71. package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +24 -10
  72. package/dist/lib/cjs/components/embeddable-markdown-editor-component.d.cts +9 -0
  73. package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +7 -7
  74. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +2 -2
  75. package/dist/lib/cjs/components/incremental-file-index-component.cjs +4 -4
  76. package/dist/lib/cjs/components/index.cjs +54 -39
  77. package/dist/lib/cjs/components/index.d.cts +5 -0
  78. package/dist/lib/cjs/components/layout-ready-component.cjs +3 -3
  79. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +2 -2
  80. package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
  81. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
  82. package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
  83. package/dist/lib/cjs/components/plugin-gate-component.cjs +69 -36
  84. package/dist/lib/cjs/components/plugin-gate-component.d.cts +36 -13
  85. package/dist/lib/cjs/components/plugin-notice-component.cjs +39 -33
  86. package/dist/lib/cjs/components/plugin-notice-component.d.cts +4 -3
  87. package/dist/lib/cjs/components/plugin-settings-component.cjs +119 -18
  88. package/dist/lib/cjs/components/plugin-settings-component.d.cts +35 -5
  89. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -2
  90. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +8 -8
  91. package/dist/lib/cjs/components/pointer-position-component.cjs +2 -2
  92. package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +3 -3
  93. package/dist/lib/cjs/components/registry-component.cjs +2 -2
  94. package/dist/lib/cjs/components/release-notes-component.cjs +6 -6
  95. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +25 -25
  96. package/dist/lib/cjs/components/rmdir-guard-component.cjs +2 -2
  97. package/dist/lib/cjs/components/settings-facet-component.cjs +1 -1
  98. package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
  99. package/dist/lib/cjs/components/shared-component-pool-component.cjs +368 -0
  100. package/dist/lib/cjs/components/shared-component-pool-component.d.cts +129 -0
  101. package/dist/lib/cjs/components/style-sheet-component.cjs +3 -3
  102. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -3
  103. package/dist/lib/cjs/components/templates-language-component.cjs +1 -1
  104. package/dist/lib/cjs/components/worker-component.cjs +363 -0
  105. package/dist/lib/cjs/components/worker-component.d.cts +156 -0
  106. package/dist/lib/cjs/components/worker-pool-component.cjs +185 -0
  107. package/dist/lib/cjs/components/worker-pool-component.d.cts +102 -0
  108. package/dist/lib/cjs/components/workspace-layout-state-component.cjs +495 -0
  109. package/dist/lib/cjs/components/workspace-layout-state-component.d.cts +239 -0
  110. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
  111. package/dist/lib/cjs/constructors/index.cjs +1 -1
  112. package/dist/lib/cjs/css-class.cjs +5 -1
  113. package/dist/lib/cjs/css-class.d.cts +16 -0
  114. package/dist/lib/cjs/data-handler.cjs +264 -6
  115. package/dist/lib/cjs/data-handler.d.cts +219 -2
  116. package/dist/lib/cjs/data-stores/data-store-locations.cjs +82 -24
  117. package/dist/lib/cjs/data-stores/data-store-locations.d.cts +15 -0
  118. package/dist/lib/cjs/data-stores/data-store-replica.cjs +33 -5
  119. package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
  120. package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +2 -2
  121. package/dist/lib/cjs/data-stores/data-store-transport.cjs +81 -8
  122. package/dist/lib/cjs/data-stores/data-store-transport.d.cts +30 -1
  123. package/dist/lib/cjs/data-stores/index.cjs +6 -6
  124. package/dist/lib/cjs/data-stores/local-data-store.cjs +74 -10
  125. package/dist/lib/cjs/data-stores/local-data-store.d.cts +58 -1
  126. package/dist/lib/cjs/data-stores/shared-data-store.cjs +76 -19
  127. package/dist/lib/cjs/data-stores/shared-data-store.d.cts +18 -1
  128. package/dist/lib/cjs/dataview-link.cjs +2 -2
  129. package/dist/lib/cjs/dataview.cjs +27 -7
  130. package/dist/lib/cjs/dataview.d.cts +14 -0
  131. package/dist/lib/cjs/debug.cjs +3 -3
  132. package/dist/lib/cjs/demo-vault-helper.cjs +34 -6
  133. package/dist/lib/cjs/demo-vault-helper.d.cts +6 -2
  134. package/dist/lib/cjs/desktop-bulk-operation-git.cjs +10 -10
  135. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +13 -13
  136. package/dist/lib/cjs/desktop-git-runner.cjs +4 -14
  137. package/dist/lib/cjs/desktop-git-runner.d.cts +8 -2
  138. package/dist/lib/cjs/desktop-operating-system.cjs +1 -1
  139. package/dist/lib/cjs/desktop-request-url-stream.cjs +8 -14
  140. package/dist/lib/cjs/desktop-trusted-input.cjs +2 -2
  141. package/dist/lib/cjs/disposable.cjs +150 -0
  142. package/dist/lib/cjs/disposable.d.cts +39 -0
  143. package/dist/lib/cjs/editor-extension-registrar.cjs +1 -1
  144. package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -2
  145. package/dist/lib/cjs/editor-suggest.cjs +1 -1
  146. package/dist/lib/cjs/editor.cjs +6 -6
  147. package/dist/lib/cjs/events.cjs +2 -2
  148. package/dist/lib/cjs/extensions-registrar.cjs +1 -1
  149. package/dist/lib/cjs/feature-request.cjs +1 -1
  150. package/dist/lib/cjs/file-change.cjs +10 -10
  151. package/dist/lib/cjs/file-explorer.cjs +2 -2
  152. package/dist/lib/cjs/file-manager.cjs +5 -5
  153. package/dist/lib/cjs/file-system.cjs +10 -10
  154. package/dist/lib/cjs/folder-note.cjs +4 -4
  155. package/dist/lib/cjs/frontmatter-formatting.cjs +7 -6
  156. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +1 -1
  157. package/dist/lib/cjs/frontmatter.cjs +5 -5
  158. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  159. package/dist/lib/cjs/git-rename-history.cjs +1 -1
  160. package/dist/lib/cjs/git-rename-history.d.cts +2 -2
  161. package/dist/lib/cjs/hotkey.cjs +1 -1
  162. package/dist/lib/cjs/hover-link-source-registrar.cjs +1 -1
  163. package/dist/lib/cjs/html-element.cjs +2 -2
  164. package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -1
  165. package/dist/lib/cjs/i18n/default-translations.cjs +1 -1
  166. package/dist/lib/cjs/i18n/i18n.cjs +7 -7
  167. package/dist/lib/cjs/i18n/index.cjs +4 -4
  168. package/dist/lib/cjs/i18n/locales/en.cjs +27 -1
  169. package/dist/lib/cjs/i18n/locales/en.d.cts +26 -0
  170. package/dist/lib/cjs/i18n/locales/index.cjs +2 -2
  171. package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -1
  172. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +26 -0
  173. package/dist/lib/cjs/index.cjs +147 -126
  174. package/dist/lib/cjs/index.d.cts +7 -0
  175. package/dist/lib/cjs/inline-token-renderer.cjs +2 -2
  176. package/dist/lib/cjs/is-in-obsidian.cjs +1 -1
  177. package/dist/lib/cjs/library-styles.cjs +3 -3
  178. package/dist/lib/cjs/link-and-tag-input-suggest.cjs +2 -2
  179. package/dist/lib/cjs/link.cjs +76 -56
  180. package/dist/lib/cjs/link.d.cts +20 -14
  181. package/dist/lib/cjs/logger.cjs +4 -4
  182. package/dist/lib/cjs/loop.cjs +10 -16
  183. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +17 -2
  184. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +7 -0
  185. package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -13
  186. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -2
  187. package/dist/lib/cjs/markdown-view.cjs +191 -3
  188. package/dist/lib/cjs/markdown-view.d.cts +48 -1
  189. package/dist/lib/cjs/markdown.cjs +12 -12
  190. package/dist/lib/cjs/metadata-cache.cjs +23 -23
  191. package/dist/lib/cjs/metadata-cache.d.cts +5 -4
  192. package/dist/lib/cjs/misplaced-attachment.cjs +297 -0
  193. package/dist/lib/cjs/misplaced-attachment.d.cts +228 -0
  194. package/dist/lib/cjs/mobile-app-info.cjs +1 -1
  195. package/dist/lib/cjs/modals/alert.cjs +4 -4
  196. package/dist/lib/cjs/modals/code-block-builder.cjs +7 -7
  197. package/dist/lib/cjs/modals/confirm.cjs +4 -4
  198. package/dist/lib/cjs/modals/copy-text-manually.cjs +181 -0
  199. package/dist/lib/cjs/modals/copy-text-manually.d.cts +38 -0
  200. package/dist/lib/cjs/modals/index.cjs +17 -11
  201. package/dist/lib/cjs/modals/index.d.cts +2 -0
  202. package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
  203. package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -3
  204. package/dist/lib/cjs/modals/modal.cjs +3 -3
  205. package/dist/lib/cjs/modals/prompt.cjs +10 -10
  206. package/dist/lib/cjs/modals/prompt.d.cts +1 -1
  207. package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +202 -0
  208. package/dist/lib/cjs/modals/review-bug-report-diagnostics.d.cts +30 -0
  209. package/dist/lib/cjs/modals/select-item.cjs +6 -6
  210. package/dist/lib/cjs/modals/select-option.cjs +3 -3
  211. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
  212. package/dist/lib/cjs/note-priority.cjs +2 -2
  213. package/dist/lib/cjs/notebook-navigator.cjs +12 -2
  214. package/dist/lib/cjs/notebook-navigator.d.cts +6 -0
  215. package/dist/lib/cjs/obsidian-lib-state.cjs +1 -1
  216. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +1 -1
  217. package/dist/lib/cjs/obsidian-settings.cjs +1 -1
  218. package/dist/lib/cjs/obsidian-word-characters.cjs +1 -1
  219. package/dist/lib/cjs/parse-link.cjs +14 -14
  220. package/dist/lib/cjs/path-compatibility.cjs +368 -0
  221. package/dist/lib/cjs/path-compatibility.d.cts +263 -0
  222. package/dist/lib/cjs/path-settings.cjs +3 -3
  223. package/dist/lib/cjs/pdf.cjs +2 -2
  224. package/dist/lib/cjs/plugin/index.cjs +18 -12
  225. package/dist/lib/cjs/plugin/index.d.cts +2 -0
  226. package/dist/lib/cjs/plugin/plugin-api.cjs +21 -12
  227. package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -1
  228. package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +6 -3
  229. package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +5 -0
  230. package/dist/lib/cjs/plugin/plugin-context.cjs +10 -9
  231. package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -1
  232. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +4 -4
  233. package/dist/lib/cjs/plugin/plugin-install-state.cjs +49 -4
  234. package/dist/lib/cjs/plugin/plugin-install-state.d.cts +30 -0
  235. package/dist/lib/cjs/plugin/plugin-instance.cjs +450 -0
  236. package/dist/lib/cjs/plugin/plugin-instance.d.cts +258 -0
  237. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -1
  238. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +6 -4
  239. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +15 -15
  240. package/dist/lib/cjs/plugin/plugin.cjs +133 -34
  241. package/dist/lib/cjs/plugin/plugin.d.cts +35 -5
  242. package/dist/lib/cjs/plugin/settings-migration-api.cjs +1 -1
  243. package/dist/lib/cjs/plugin/third-party-plugin.cjs +231 -0
  244. package/dist/lib/cjs/plugin/third-party-plugin.d.cts +244 -0
  245. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -2
  246. package/dist/lib/cjs/popovers/field-popover.cjs +4 -4
  247. package/dist/lib/cjs/popovers/index.cjs +3 -3
  248. package/dist/lib/cjs/popovers/popover-anchor.cjs +1 -1
  249. package/dist/lib/cjs/popovers/popover.cjs +5 -5
  250. package/dist/lib/cjs/queue.cjs +8 -8
  251. package/dist/lib/cjs/react/app-context.cjs +3 -3
  252. package/dist/lib/cjs/react/index.cjs +1 -1
  253. package/dist/lib/cjs/reference-definition.cjs +1 -1
  254. package/dist/lib/cjs/reference.cjs +3 -3
  255. package/dist/lib/cjs/release-asset.cjs +5 -5
  256. package/dist/lib/cjs/rendered-markdown.cjs +4 -4
  257. package/dist/lib/cjs/request-url.cjs +4 -4
  258. package/dist/lib/cjs/resource-lock.cjs +46 -42
  259. package/dist/lib/cjs/resource-lock.d.cts +8 -7
  260. package/dist/lib/cjs/resource-url.cjs +3 -3
  261. package/dist/lib/cjs/ribbon-icon-registrar.cjs +1 -1
  262. package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -3
  263. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +7 -7
  264. package/dist/lib/cjs/setting-components/date-component.cjs +4 -4
  265. package/dist/lib/cjs/setting-components/date-time-component.cjs +4 -4
  266. package/dist/lib/cjs/setting-components/email-component.cjs +2 -2
  267. package/dist/lib/cjs/setting-components/file-component.cjs +2 -2
  268. package/dist/lib/cjs/setting-components/folder-list-component.cjs +3 -3
  269. package/dist/lib/cjs/setting-components/hotkey-component.cjs +5 -5
  270. package/dist/lib/cjs/setting-components/index.cjs +30 -30
  271. package/dist/lib/cjs/setting-components/list-component.cjs +5 -5
  272. package/dist/lib/cjs/setting-components/month-component.cjs +4 -4
  273. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -3
  274. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +2 -2
  275. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -3
  276. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +9 -6
  277. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +4 -1
  278. package/dist/lib/cjs/setting-components/number-component.cjs +2 -2
  279. package/dist/lib/cjs/setting-components/password-component.cjs +2 -2
  280. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -3
  281. package/dist/lib/cjs/setting-components/tag-list-component.cjs +4 -4
  282. package/dist/lib/cjs/setting-components/telephone-component.cjs +2 -2
  283. package/dist/lib/cjs/setting-components/text-based-component.cjs +1 -1
  284. package/dist/lib/cjs/setting-components/time-component.cjs +3 -3
  285. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -3
  286. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -3
  287. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +4 -4
  288. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -1
  289. package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -3
  290. package/dist/lib/cjs/setting-components/url-component.cjs +2 -2
  291. package/dist/lib/cjs/setting-components/validator-component.cjs +4 -4
  292. package/dist/lib/cjs/setting-components/week-component.cjs +4 -4
  293. package/dist/lib/cjs/setting-ex.cjs +26 -26
  294. package/dist/lib/cjs/setting-group-ex.cjs +2 -2
  295. package/dist/lib/cjs/settings-recovery.cjs +217 -0
  296. package/dist/lib/cjs/settings-recovery.d.cts +178 -0
  297. package/dist/lib/cjs/settings-tabs.cjs +5 -5
  298. package/dist/lib/cjs/status-bar-item-registrar.cjs +1 -1
  299. package/dist/lib/cjs/templater.cjs +14 -4
  300. package/dist/lib/cjs/templater.d.cts +6 -0
  301. package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -2
  302. package/dist/lib/cjs/transformers/index.cjs +1 -1
  303. package/dist/lib/cjs/trusted-input.cjs +1 -1
  304. package/dist/lib/cjs/validation.cjs +4 -4
  305. package/dist/lib/cjs/vault-delete.cjs +6 -6
  306. package/dist/lib/cjs/vault-transaction.cjs +5 -5
  307. package/dist/lib/cjs/vault.cjs +12 -12
  308. package/dist/lib/cjs/view-registrar.cjs +1 -1
  309. package/dist/lib/cjs/virtual-file.cjs +16 -14
  310. package/dist/lib/cjs/virtual-file.d.cts +2 -1
  311. package/dist/lib/cjs/wasm.cjs +119 -0
  312. package/dist/lib/cjs/wasm.d.cts +54 -0
  313. package/dist/lib/cjs/worker-protocol.cjs +209 -0
  314. package/dist/lib/cjs/worker-protocol.d.cts +282 -0
  315. package/dist/lib/cjs/workspace.cjs +1 -1
  316. package/dist/lib/esm/__merged.d.mts +26 -10
  317. package/dist/lib/esm/__merged.mjs +215 -5
  318. package/dist/lib/esm/app.mjs +2 -2
  319. package/dist/lib/esm/attachment-path.d.mts +3 -3
  320. package/dist/lib/esm/attachment-path.mjs +2 -2
  321. package/dist/lib/esm/backlink-index.mjs +2 -2
  322. package/dist/lib/esm/bug-report-diagnostics.d.mts +186 -0
  323. package/dist/lib/esm/bug-report-diagnostics.mjs +127 -0
  324. package/dist/lib/esm/bug-report.d.mts +65 -0
  325. package/dist/lib/esm/bug-report.mjs +33 -10
  326. package/dist/lib/esm/canvas.d.mts +13 -0
  327. package/dist/lib/esm/canvas.mjs +6 -5
  328. package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +13 -13
  329. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +14 -14
  330. package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +7 -7
  331. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +8 -8
  332. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +34 -2
  333. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +99 -3
  334. package/dist/lib/esm/components/all-windows-status-bar-item-component.d.mts +146 -0
  335. package/dist/lib/esm/components/all-windows-status-bar-item-component.mjs +154 -0
  336. package/dist/lib/esm/components/component-ex.d.mts +11 -0
  337. package/dist/lib/esm/components/component-ex.mjs +19 -6
  338. package/dist/lib/esm/components/disposable-component.mjs +1 -1
  339. package/dist/lib/esm/components/embed-extensions-component.d.mts +8 -0
  340. package/dist/lib/esm/components/embed-extensions-component.mjs +20 -3
  341. package/dist/lib/esm/components/embeddable-markdown-editor-component.d.mts +9 -0
  342. package/dist/lib/esm/components/embeddable-markdown-editor-component.mjs +16 -2
  343. package/dist/lib/esm/components/index.d.mts +5 -0
  344. package/dist/lib/esm/components/index.mjs +12 -2
  345. package/dist/lib/esm/components/plugin-gate-component.d.mts +36 -13
  346. package/dist/lib/esm/components/plugin-gate-component.mjs +61 -26
  347. package/dist/lib/esm/components/plugin-notice-component.d.mts +4 -3
  348. package/dist/lib/esm/components/plugin-notice-component.mjs +30 -21
  349. package/dist/lib/esm/components/plugin-settings-component.d.mts +35 -5
  350. package/dist/lib/esm/components/plugin-settings-component.mjs +105 -4
  351. package/dist/lib/esm/components/rename-delete-handler-component.mjs +2 -2
  352. package/dist/lib/esm/components/shared-component-pool-component.d.mts +129 -0
  353. package/dist/lib/esm/components/shared-component-pool-component.mjs +280 -0
  354. package/dist/lib/esm/components/worker-component.d.mts +156 -0
  355. package/dist/lib/esm/components/worker-component.mjs +279 -0
  356. package/dist/lib/esm/components/worker-pool-component.d.mts +102 -0
  357. package/dist/lib/esm/components/worker-pool-component.mjs +95 -0
  358. package/dist/lib/esm/components/workspace-layout-state-component.d.mts +239 -0
  359. package/dist/lib/esm/components/workspace-layout-state-component.mjs +404 -0
  360. package/dist/lib/esm/css-class.d.mts +16 -0
  361. package/dist/lib/esm/css-class.mjs +5 -1
  362. package/dist/lib/esm/data-handler.d.mts +219 -2
  363. package/dist/lib/esm/data-handler.mjs +262 -5
  364. package/dist/lib/esm/data-stores/data-store-locations.d.mts +15 -0
  365. package/dist/lib/esm/data-stores/data-store-locations.mjs +80 -22
  366. package/dist/lib/esm/data-stores/data-store-replica.mjs +33 -5
  367. package/dist/lib/esm/data-stores/data-store-seeds.d.mts +2 -2
  368. package/dist/lib/esm/data-stores/data-store-seeds.mjs +4 -4
  369. package/dist/lib/esm/data-stores/data-store-transport.d.mts +30 -1
  370. package/dist/lib/esm/data-stores/data-store-transport.mjs +78 -5
  371. package/dist/lib/esm/data-stores/local-data-store.d.mts +58 -1
  372. package/dist/lib/esm/data-stores/local-data-store.mjs +71 -9
  373. package/dist/lib/esm/data-stores/shared-data-store.d.mts +18 -1
  374. package/dist/lib/esm/data-stores/shared-data-store.mjs +72 -15
  375. package/dist/lib/esm/dataview.d.mts +14 -0
  376. package/dist/lib/esm/dataview.mjs +19 -1
  377. package/dist/lib/esm/demo-vault-helper.d.mts +6 -2
  378. package/dist/lib/esm/demo-vault-helper.mjs +29 -1
  379. package/dist/lib/esm/desktop-demo-vault-opener.mjs +1 -1
  380. package/dist/lib/esm/desktop-git-runner.d.mts +8 -2
  381. package/dist/lib/esm/desktop-git-runner.mjs +3 -3
  382. package/dist/lib/esm/desktop-request-url-stream.mjs +4 -10
  383. package/dist/lib/esm/disposable.d.mts +39 -0
  384. package/dist/lib/esm/disposable.mjs +64 -0
  385. package/dist/lib/esm/file-system.mjs +2 -2
  386. package/dist/lib/esm/frontmatter-formatting.mjs +2 -1
  387. package/dist/lib/esm/generated-during-build.mjs +2 -2
  388. package/dist/lib/esm/git-rename-history.d.mts +2 -2
  389. package/dist/lib/esm/git-rename-history.mjs +1 -1
  390. package/dist/lib/esm/i18n/locales/en.d.mts +26 -0
  391. package/dist/lib/esm/i18n/locales/en.mjs +27 -1
  392. package/dist/lib/esm/i18n/locales/translations-map.d.mts +26 -0
  393. package/dist/lib/esm/index.d.mts +7 -0
  394. package/dist/lib/esm/index.mjs +15 -1
  395. package/dist/lib/esm/link.d.mts +20 -14
  396. package/dist/lib/esm/link.mjs +57 -38
  397. package/dist/lib/esm/loop.mjs +2 -8
  398. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +7 -0
  399. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +16 -1
  400. package/dist/lib/esm/markdown-view.d.mts +48 -1
  401. package/dist/lib/esm/markdown-view.mjs +192 -2
  402. package/dist/lib/esm/metadata-cache.d.mts +5 -4
  403. package/dist/lib/esm/metadata-cache.mjs +6 -6
  404. package/dist/lib/esm/misplaced-attachment.d.mts +228 -0
  405. package/dist/lib/esm/misplaced-attachment.mjs +212 -0
  406. package/dist/lib/esm/modals/copy-text-manually.d.mts +38 -0
  407. package/dist/lib/esm/modals/copy-text-manually.mjs +99 -0
  408. package/dist/lib/esm/modals/index.d.mts +2 -0
  409. package/dist/lib/esm/modals/index.mjs +5 -1
  410. package/dist/lib/esm/modals/prompt.d.mts +1 -1
  411. package/dist/lib/esm/modals/prompt.mjs +1 -1
  412. package/dist/lib/esm/modals/review-bug-report-diagnostics.d.mts +30 -0
  413. package/dist/lib/esm/modals/review-bug-report-diagnostics.mjs +120 -0
  414. package/dist/lib/esm/notebook-navigator.d.mts +6 -0
  415. package/dist/lib/esm/notebook-navigator.mjs +11 -2
  416. package/dist/lib/esm/parse-link.mjs +4 -4
  417. package/dist/lib/esm/path-compatibility.d.mts +263 -0
  418. package/dist/lib/esm/path-compatibility.mjs +277 -0
  419. package/dist/lib/esm/plugin/index.d.mts +2 -0
  420. package/dist/lib/esm/plugin/index.mjs +6 -2
  421. package/dist/lib/esm/plugin/plugin-api.d.mts +5 -1
  422. package/dist/lib/esm/plugin/plugin-api.mjs +13 -4
  423. package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +5 -0
  424. package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +3 -1
  425. package/dist/lib/esm/plugin/plugin-context.mjs +2 -1
  426. package/dist/lib/esm/plugin/plugin-event-source.d.mts +4 -4
  427. package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
  428. package/dist/lib/esm/plugin/plugin-install-state.d.mts +30 -0
  429. package/dist/lib/esm/plugin/plugin-install-state.mjs +44 -1
  430. package/dist/lib/esm/plugin/plugin-instance.d.mts +258 -0
  431. package/dist/lib/esm/plugin/plugin-instance.mjs +367 -0
  432. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +6 -4
  433. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -1
  434. package/dist/lib/esm/plugin/plugin.d.mts +35 -5
  435. package/dist/lib/esm/plugin/plugin.mjs +118 -9
  436. package/dist/lib/esm/plugin/third-party-plugin.d.mts +244 -0
  437. package/dist/lib/esm/plugin/third-party-plugin.mjs +147 -0
  438. package/dist/lib/esm/release-asset.mjs +1 -1
  439. package/dist/lib/esm/resource-lock.d.mts +8 -7
  440. package/dist/lib/esm/resource-lock.mjs +31 -26
  441. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +4 -1
  442. package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -3
  443. package/dist/lib/esm/settings-recovery.d.mts +178 -0
  444. package/dist/lib/esm/settings-recovery.mjs +125 -0
  445. package/dist/lib/esm/settings-tabs.mjs +2 -2
  446. package/dist/lib/esm/templater.d.mts +6 -0
  447. package/dist/lib/esm/templater.mjs +11 -2
  448. package/dist/lib/esm/vault.mjs +1 -1
  449. package/dist/lib/esm/virtual-file.d.mts +2 -1
  450. package/dist/lib/esm/virtual-file.mjs +7 -5
  451. package/dist/lib/esm/wasm.d.mts +54 -0
  452. package/dist/lib/esm/wasm.mjs +30 -0
  453. package/dist/lib/esm/worker-protocol.d.mts +282 -0
  454. package/dist/lib/esm/worker-protocol.mjs +113 -0
  455. package/dist/styles.css +16 -1
  456. package/modals/copy-text-manually/package.json +6 -0
  457. package/modals/review-bug-report-diagnostics/package.json +6 -0
  458. package/package.json +10 -8
  459. package/plugin/plugin-instance/package.json +6 -0
  460. package/plugin/third-party-plugin/package.json +6 -0
@@ -0,0 +1,363 @@
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
+ (function patchObsidianRequire() {
33
+ const originalRequire = require;
34
+ if (!originalRequire || originalRequire.__isPatched) {
35
+ return;
36
+ }
37
+ require = Object.assign(
38
+ (id) => requirePatched(id),
39
+ originalRequire,
40
+ {
41
+ __isPatched: true
42
+ }
43
+ );
44
+ function extractDefault($module) {
45
+ return $module && $module.__esModule && "default" in $module ? $module.default : $module;
46
+ }
47
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
48
+ "@codemirror/autocomplete",
49
+ "@codemirror/collab",
50
+ "@codemirror/commands",
51
+ "@codemirror/language",
52
+ "@codemirror/lint",
53
+ "@codemirror/search",
54
+ "@codemirror/state",
55
+ "@codemirror/text",
56
+ "@codemirror/view",
57
+ "@lezer/common",
58
+ "@lezer/highlight",
59
+ "@lezer/lr",
60
+ "obsidian"
61
+ ]);
62
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
63
+ "@codemirror/closebrackets",
64
+ "@codemirror/comment",
65
+ "@codemirror/fold",
66
+ "@codemirror/gutter",
67
+ "@codemirror/highlight",
68
+ "@codemirror/history",
69
+ "@codemirror/matchbrackets",
70
+ "@codemirror/panel",
71
+ "@codemirror/rangeset",
72
+ "@codemirror/rectangular-selection",
73
+ "@codemirror/stream-parser",
74
+ "@codemirror/tooltip"
75
+ ]);
76
+ function requirePatched(id) {
77
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
78
+ return originalRequire?.(id);
79
+ }
80
+ const app = globalThis.app;
81
+ if (app?.isMobile) {
82
+ if (id === "process" || id === "node:process") {
83
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
84
+ return process;
85
+ }
86
+ } else {
87
+ const $module = originalRequire?.(id);
88
+ if ($module) {
89
+ return extractDefault($module);
90
+ }
91
+ }
92
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
93
+ return {};
94
+ }
95
+ })();
96
+
97
+ "use strict";
98
+ var __defProp = Object.defineProperty;
99
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
100
+ var __getOwnPropNames = Object.getOwnPropertyNames;
101
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
102
+ var __export = (target, all) => {
103
+ for (var name in all)
104
+ __defProp(target, name, { get: all[name], enumerable: true });
105
+ };
106
+ var __copyProps = (to, from, except, desc) => {
107
+ if (from && typeof from === "object" || typeof from === "function") {
108
+ for (let key of __getOwnPropNames(from))
109
+ if (!__hasOwnProp.call(to, key) && key !== except)
110
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
111
+ }
112
+ return to;
113
+ };
114
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
115
+ var worker_component_exports = {};
116
+ __export(worker_component_exports, {
117
+ WorkerCallError: () => WorkerCallError,
118
+ WorkerComponent: () => WorkerComponent
119
+ });
120
+ module.exports = __toCommonJS(worker_component_exports);
121
+ var import_function = require("@mnaoumov/typescript-lib/function");
122
+ var import_type_guards = require("@mnaoumov/typescript-lib/type-guards");
123
+ var import_worker_protocol = require("../worker-protocol.cjs");
124
+ var import_component_ex = require("./component-ex.cjs");
125
+ class WorkerCallError extends Error {
126
+ /**
127
+ * The name of the error thrown in the worker.
128
+ */
129
+ remoteName;
130
+ /**
131
+ * The stack of the error thrown in the worker, when there was one.
132
+ */
133
+ remoteStack;
134
+ /**
135
+ * Creates the error.
136
+ *
137
+ * @param error - The serialized worker-side error.
138
+ */
139
+ constructor(error) {
140
+ super(error.message);
141
+ this.name = "WorkerCallError";
142
+ this.remoteName = error.name;
143
+ this.remoteStack = error.stack;
144
+ }
145
+ }
146
+ class WorkerComponent extends import_component_ex.ComponentEx {
147
+ /**
148
+ * Whether calls run on the main thread, because no `Worker` could be created and fallback handlers were given.
149
+ *
150
+ * @returns Whether the fallback is in use.
151
+ */
152
+ get isUsingFallback() {
153
+ return this.activeFallbackHandlers !== null;
154
+ }
155
+ /**
156
+ * The number of calls that have not settled yet.
157
+ *
158
+ * @returns The count.
159
+ */
160
+ get pendingCallCount() {
161
+ return this._pendingCallCount;
162
+ }
163
+ /**
164
+ * The handlers to run on the main thread when no `Worker` can be created, or `null`.
165
+ */
166
+ fallbackHandlers;
167
+ /**
168
+ * The worker's name, or `null`.
169
+ */
170
+ name;
171
+ /**
172
+ * The bundled worker source.
173
+ */
174
+ source;
175
+ _pendingCallCount = 0;
176
+ activeFallbackHandlers = null;
177
+ lastCallId = 0;
178
+ pendingCalls = /* @__PURE__ */ new Map();
179
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins -- The renderer's Web Worker, not Node's.
180
+ worker = null;
181
+ workerUrl = null;
182
+ /**
183
+ * Creates the component.
184
+ *
185
+ * @param params - The parameters.
186
+ */
187
+ constructor(params) {
188
+ super();
189
+ this.fallbackHandlers = params.fallbackHandlers ?? null;
190
+ this.name = params.name ?? null;
191
+ this.source = params.source;
192
+ }
193
+ /**
194
+ * Calls a worker method.
195
+ *
196
+ * @typeParam TMethod - The method.
197
+ * @param method - The method name.
198
+ * @param callArguments - The method's arguments.
199
+ * @param options - The call options.
200
+ * @returns The method's result. Rejects with a {@link WorkerCallError} when the handler failed, with the abort reason
201
+ * when the call was cancelled, and with an `Error` when the worker failed or the component unloaded first.
202
+ */
203
+ async call(method, callArguments, options = {}) {
204
+ if (!this._loaded) {
205
+ throw new Error("The worker component is not loaded");
206
+ }
207
+ const abortSignal = options.abortSignal ?? new AbortController().signal;
208
+ abortSignal.throwIfAborted();
209
+ this._pendingCallCount++;
210
+ try {
211
+ const result = this.activeFallbackHandlers === null ? await this.callWorker(method, callArguments, abortSignal, options.transfer ?? []) : await callFallback(this.activeFallbackHandlers, method, callArguments, abortSignal);
212
+ return result;
213
+ } finally {
214
+ this._pendingCallCount--;
215
+ }
216
+ }
217
+ /**
218
+ * Starts the worker.
219
+ */
220
+ onload() {
221
+ super.onload();
222
+ try {
223
+ this.startWorker();
224
+ } catch (error) {
225
+ this.stopWorker();
226
+ if (this.fallbackHandlers === null) {
227
+ throw error;
228
+ }
229
+ this.activeFallbackHandlers = this.fallbackHandlers;
230
+ }
231
+ }
232
+ /**
233
+ * Terminates the worker and rejects the pending calls.
234
+ */
235
+ onunload() {
236
+ super.onunload();
237
+ this.stopWorker();
238
+ this.rejectAll(new Error("The worker component was unloaded"));
239
+ this.activeFallbackHandlers = null;
240
+ }
241
+ async callWorker(method, callArguments, abortSignal, transfer) {
242
+ const worker = (0, import_type_guards.ensureNonNullable)(this.worker);
243
+ this.lastCallId++;
244
+ const id = this.lastCallId;
245
+ let onAbort = import_function.noop;
246
+ try {
247
+ return await new Promise((resolve, reject) => {
248
+ onAbort = () => {
249
+ if (!this.pendingCalls.delete(id)) {
250
+ return;
251
+ }
252
+ const cancelMessage = { id, kind: "cancel", protocol: import_worker_protocol.WORKER_PROTOCOL };
253
+ worker.postMessage(cancelMessage);
254
+ reject(getAbortReason(abortSignal));
255
+ };
256
+ this.pendingCalls.set(id, { reject, resolve });
257
+ const callMessage = { arguments: callArguments, id, kind: "call", method, protocol: import_worker_protocol.WORKER_PROTOCOL };
258
+ try {
259
+ worker.postMessage(callMessage, [...transfer]);
260
+ } catch (error) {
261
+ this.pendingCalls.delete(id);
262
+ reject(toError(error));
263
+ return;
264
+ }
265
+ abortSignal.addEventListener("abort", onAbort, { once: true });
266
+ });
267
+ } finally {
268
+ abortSignal.removeEventListener("abort", onAbort);
269
+ }
270
+ }
271
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins -- The renderer's Web ErrorEvent, not Node's.
272
+ handleError = ($event) => {
273
+ $event.preventDefault();
274
+ this.rejectAll(new Error(`The worker failed: ${$event.message || "unknown error"}`));
275
+ };
276
+ handleMessage = ($event) => {
277
+ const message = $event.data;
278
+ if (!(0, import_worker_protocol.isWorkerResponseMessage)(message)) {
279
+ return;
280
+ }
281
+ const pendingCall = this.pendingCalls.get(message.id);
282
+ if (!pendingCall) {
283
+ return;
284
+ }
285
+ this.pendingCalls.delete(message.id);
286
+ if (message.kind === "result") {
287
+ pendingCall.resolve(message.value);
288
+ } else {
289
+ pendingCall.reject(new WorkerCallError(message.error));
290
+ }
291
+ };
292
+ handleMessageError = () => {
293
+ this.rejectAll(new Error("The worker sent a message that could not be deserialized"));
294
+ };
295
+ rejectAll(reason) {
296
+ const pendingCalls = [...this.pendingCalls.values()];
297
+ this.pendingCalls.clear();
298
+ for (const pendingCall of pendingCalls) {
299
+ pendingCall.reject(reason);
300
+ }
301
+ }
302
+ revokeWorkerUrl() {
303
+ if (this.workerUrl === null) {
304
+ return;
305
+ }
306
+ window.URL.revokeObjectURL(this.workerUrl);
307
+ this.workerUrl = null;
308
+ }
309
+ startWorker() {
310
+ this.workerUrl = window.URL.createObjectURL(new Blob([this.source], { type: "text/javascript" }));
311
+ const workerOptions = this.name === null ? {} : { name: this.name };
312
+ const worker = new window.Worker(this.workerUrl, workerOptions);
313
+ this.worker = worker;
314
+ worker.addEventListener("message", this.handleMessage);
315
+ worker.addEventListener("messageerror", this.handleMessageError);
316
+ worker.addEventListener("error", this.handleError);
317
+ }
318
+ stopWorker() {
319
+ this.terminateWorker();
320
+ this.revokeWorkerUrl();
321
+ }
322
+ terminateWorker() {
323
+ if (!this.worker) {
324
+ return;
325
+ }
326
+ this.worker.removeEventListener("message", this.handleMessage);
327
+ this.worker.removeEventListener("messageerror", this.handleMessageError);
328
+ this.worker.removeEventListener("error", this.handleError);
329
+ this.worker.terminate();
330
+ this.worker = null;
331
+ }
332
+ }
333
+ async function callFallback(handlers, method, callArguments, callerSignal) {
334
+ const abortController = new AbortController();
335
+ function onAbort() {
336
+ abortController.abort(callerSignal.reason);
337
+ }
338
+ callerSignal.addEventListener("abort", onAbort, { once: true });
339
+ try {
340
+ const handlerPromise = (0, import_worker_protocol.invokeWorkerHandler)(handlers, method, callArguments, { abortSignal: abortController.signal });
341
+ handlerPromise.catch(import_function.noop);
342
+ const abortPromise = new Promise((_resolve, reject) => {
343
+ abortController.signal.addEventListener("abort", () => {
344
+ reject(getAbortReason(abortController.signal));
345
+ }, { once: true });
346
+ });
347
+ return (0, import_worker_protocol.unwrapTransferredValue)(await Promise.race([handlerPromise, abortPromise])).value;
348
+ } finally {
349
+ callerSignal.removeEventListener("abort", onAbort);
350
+ }
351
+ }
352
+ function getAbortReason(abortSignal) {
353
+ return toError(abortSignal.reason);
354
+ }
355
+ function toError(reason) {
356
+ return reason instanceof Error ? reason : new Error(String(reason));
357
+ }
358
+ // Annotate the CommonJS export names for ESM import in node:
359
+ 0 && (module.exports = {
360
+ WorkerCallError,
361
+ WorkerComponent
362
+ });
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3dvcmtlci1jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgY29tcG9uZW50IHRoYXQgb3ducyBvbmUgYnJvd3NlciBgV29ya2VyYCBidWlsdCBmcm9tIGJ1bmRsZWQgc291cmNlIGFuZCBjYWxscyBpdCB0aHJvdWdoIGEgdHlwZWQgcmVxdWVzdC9yZXNwb25zZVxuICogY2hhbm5lbC5cbiAqL1xuXG5pbXBvcnQgeyBub29wIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuaW1wb3J0IHR5cGUge1xuICBTZXJpYWxpemVkV29ya2VyRXJyb3IsXG4gIFdvcmtlckFwaSxcbiAgV29ya2VyQXBpSGFuZGxlcnMsXG4gIFdvcmtlckNhbGxNZXNzYWdlLFxuICBXb3JrZXJDYW5jZWxNZXNzYWdlXG59IGZyb20gJy4uL3dvcmtlci1wcm90b2NvbC50cyc7XG5cbmltcG9ydCB7XG4gIGludm9rZVdvcmtlckhhbmRsZXIsXG4gIGlzV29ya2VyUmVzcG9uc2VNZXNzYWdlLFxuICB1bndyYXBUcmFuc2ZlcnJlZFZhbHVlLFxuICBXT1JLRVJfUFJPVE9DT0xcbn0gZnJvbSAnLi4vd29ya2VyLXByb3RvY29sLnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgb2Yge0BsaW5rIFdvcmtlckNvbXBvbmVudC5jYWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZXJDb21wb25lbnRDYWxsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDYW5jZWxzIHRoZSBjYWxsLiBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZWplY3RzIHdpdGggdGhlIHNpZ25hbCdzIHJlYXNvbiBhdCBvbmNlLCBhbmQgdGhlIHdvcmtlcidzIGhhbmRsZXIgc2VlcyBpdHNcbiAgICogb3duIGB0aGlzLmFib3J0U2lnbmFsYCBhYm9ydGVkOyB3aGF0ZXZlciBpdCBhbnN3ZXJzIGFmdGVyd2FyZHMgaXMgZHJvcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIE9iamVjdHMgaW5zaWRlIHRoZSBhcmd1bWVudHMgdG8gdHJhbnNmZXIgcmF0aGVyIHRoYW4gY29weS4gVGhleSBhcmUgdW51c2FibGUgb24gdGhlIG1haW4gdGhyZWFkIGFmdGVyd2FyZHMuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2Zlcj86IHJlYWRvbmx5IFRyYW5zZmVyYWJsZVtdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgb2Yge0BsaW5rIFdvcmtlckNvbXBvbmVudH0uXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIEFQSSB0aGUgd29ya2VyIGV4cG9zZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2VyQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXM8VEFwaSBleHRlbmRzIFdvcmtlckFwaTxUQXBpPj4ge1xuICAvKipcbiAgICogVGhlIHNhbWUgaGFuZGxlcnMgdGhlIHdvcmtlciBleHBvc2VzLCBydW4gb24gdGhlIG1haW4gdGhyZWFkIHdoZW4gbm8gYFdvcmtlcmAgY2FuIGJlIGNyZWF0ZWQuIFdpdGhvdXQgdGhlbSwgYVxuICAgKiBmYWlsdXJlIHRvIGNyZWF0ZSB0aGUgd29ya2VyIGZhaWxzIHRoZSBjb21wb25lbnQncyBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFsbGJhY2tIYW5kbGVycz86IFdvcmtlckFwaUhhbmRsZXJzPFRBcGk+O1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya2VyJ3MgbmFtZSwgc2hvd24gYnkgdGhlIGRldmVsb3BlciB0b29scy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBidW5kbGVkIHdvcmtlciBzb3VyY2U6IHRoZSBzdHJpbmcgYSBgKi53b3JrZXIudHM/d29ya2VyLXNvdXJjZWAgaW1wb3J0IGdpdmVzIHdpdGhcbiAgICogYEBtbmFvdW1vdi9vYnNpZGlhbi1kZXYtdG9vbGtpdGAncyBgd29ya2Vyc2AgZmVhdHVyZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBtZXRob2QgbmFtZXMgb2YgYSB7QGxpbmsgV29ya2VyQXBpfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgQVBJIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtlck1ldGhvZDxUQXBpPiA9IEV4dHJhY3Q8a2V5b2YgVEFwaSwgc3RyaW5nPjtcblxuLyoqXG4gKiBUaGUgcmVzb2x2ZWQgcmVzdWx0IHR5cGUgb2YgYSB3b3JrZXIgbWV0aG9kLlxuICpcbiAqIEB0eXBlUGFyYW0gVEFwaSAtIFRoZSBBUEkgdHlwZS5cbiAqIEB0eXBlUGFyYW0gVE1ldGhvZCAtIFRoZSBtZXRob2QuXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtlck1ldGhvZFJlc3VsdDxUQXBpIGV4dGVuZHMgV29ya2VyQXBpPFRBcGk+LCBUTWV0aG9kIGV4dGVuZHMgV29ya2VyTWV0aG9kPFRBcGk+PiA9IEF3YWl0ZWQ8UmV0dXJuVHlwZTxUQXBpW1RNZXRob2RdPj47XG5cbmludGVyZmFjZSBQZW5kaW5nQ2FsbCB7XG4gIHJlYWRvbmx5IHJlamVjdDogKHJlYXNvbjogRXJyb3IpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHJlc29sdmU6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgZXJyb3IgYSBjYWxsIHJlamVjdHMgd2l0aCB3aGVuIHRoZSB3b3JrZXIncyBoYW5kbGVyIGZhaWxlZC4gSXQgY2FycmllcyB0aGUgd29ya2VyLXNpZGUgbmFtZSwgbWVzc2FnZSBhbmQgc3RhY2ssXG4gKiBiZWNhdXNlIGFuIGBFcnJvcmAgbG9zZXMgaXRzIGNsYXNzIGFjcm9zcyB0aGUgd29ya2VyIGJvdW5kYXJ5LlxuICovXG5leHBvcnQgY2xhc3MgV29ya2VyQ2FsbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGVycm9yIHRocm93biBpbiB0aGUgd29ya2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlbW90ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YWNrIG9mIHRoZSBlcnJvciB0aHJvd24gaW4gdGhlIHdvcmtlciwgd2hlbiB0aGVyZSB3YXMgb25lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlbW90ZVN0YWNrOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgc2VyaWFsaXplZCB3b3JrZXItc2lkZSBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihlcnJvcjogU2VyaWFsaXplZFdvcmtlckVycm9yKSB7XG4gICAgc3VwZXIoZXJyb3IubWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1dvcmtlckNhbGxFcnJvcic7XG4gICAgdGhpcy5yZW1vdGVOYW1lID0gZXJyb3IubmFtZTtcbiAgICB0aGlzLnJlbW90ZVN0YWNrID0gZXJyb3Iuc3RhY2s7XG4gIH1cbn1cblxuLyoqXG4gKiBPd25zIG9uZSBgV29ya2VyYCBmb3IgdGhlIGNvbXBvbmVudCdzIGxpZmV0aW1lLlxuICpcbiAqIE9uIGxvYWQgaXQgdHVybnMgdGhlIGJ1bmRsZWQgc291cmNlIGludG8gYSBCbG9iIFVSTCBhbmQgc3RhcnRzIHRoZSB3b3JrZXI7IG9uIHVubG9hZCBpdCB0ZXJtaW5hdGVzIHRoZSB3b3JrZXIsXG4gKiByZXZva2VzIHRoZSBVUkwgYW5kIHJlamVjdHMgZXZlcnkgcGVuZGluZyBjYWxsLiBBZGQgaXQgYXMgYSBjaGlsZCBvZiB0aGUgcGx1Z2luIChvciBvZiBhbnkgY29tcG9uZW50KSwgc28gdGhlIHdvcmtlclxuICogbmV2ZXIgb3V0bGl2ZXMgd2hhdCB1c2VzIGl0LlxuICpcbiAqIFRoZSB3b3JrZXIgZW50cnkgcG9pbnQgY2FsbHMgYGV4cG9zZVdvcmtlckFwaWAgZnJvbSBgQG1uYW91bW92L29ic2lkaWFuLWxpYi93b3JrZXItcHJvdG9jb2xgLCBhbmRcbiAqIHtAbGluayBXb3JrZXJDb21wb25lbnQuY2FsbH0gcmVhY2hlcyBpdHMgaGFuZGxlcnMgYnkgbmFtZSwgdHlwZWQgYnkgYFRBcGlgLlxuICpcbiAqIEB0eXBlUGFyYW0gVEFwaSAtIFRoZSBBUEkgdGhlIHdvcmtlciBleHBvc2VzLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2VyQ29tcG9uZW50PFRBcGkgZXh0ZW5kcyBXb3JrZXJBcGk8VEFwaT4+IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogV2hldGhlciBjYWxscyBydW4gb24gdGhlIG1haW4gdGhyZWFkLCBiZWNhdXNlIG5vIGBXb3JrZXJgIGNvdWxkIGJlIGNyZWF0ZWQgYW5kIGZhbGxiYWNrIGhhbmRsZXJzIHdlcmUgZ2l2ZW4uXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZhbGxiYWNrIGlzIGluIHVzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNVc2luZ0ZhbGxiYWNrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUZhbGxiYWNrSGFuZGxlcnMgIT09IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjYWxscyB0aGF0IGhhdmUgbm90IHNldHRsZWQgeWV0LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY291bnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBlbmRpbmdDYWxsQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0NhbGxDb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGFuZGxlcnMgdG8gcnVuIG9uIHRoZSBtYWluIHRocmVhZCB3aGVuIG5vIGBXb3JrZXJgIGNhbiBiZSBjcmVhdGVkLCBvciBgbnVsbGAuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFsbGJhY2tIYW5kbGVyczogbnVsbCB8IFdvcmtlckFwaUhhbmRsZXJzPFRBcGk+O1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya2VyJ3MgbmFtZSwgb3IgYG51bGxgLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hbWU6IG51bGwgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBidW5kbGVkIHdvcmtlciBzb3VyY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfcGVuZGluZ0NhbGxDb3VudCA9IDA7XG4gIHByaXZhdGUgYWN0aXZlRmFsbGJhY2tIYW5kbGVyczogbnVsbCB8IFdvcmtlckFwaUhhbmRsZXJzPFRBcGk+ID0gbnVsbDtcbiAgcHJpdmF0ZSBsYXN0Q2FsbElkID0gMDtcbiAgcHJpdmF0ZSByZWFkb25seSBwZW5kaW5nQ2FsbHMgPSBuZXcgTWFwPG51bWJlciwgUGVuZGluZ0NhbGw+KCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL25vZGUtYnVpbHRpbnMgLS0gVGhlIHJlbmRlcmVyJ3MgV2ViIFdvcmtlciwgbm90IE5vZGUncy5cbiAgcHJpdmF0ZSB3b3JrZXI6IG51bGwgfCBXb3JrZXIgPSBudWxsO1xuICBwcml2YXRlIHdvcmtlclVybDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogV29ya2VyQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXM8VEFwaT4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZmFsbGJhY2tIYW5kbGVycyA9IHBhcmFtcy5mYWxsYmFja0hhbmRsZXJzID8/IG51bGw7XG4gICAgdGhpcy5uYW1lID0gcGFyYW1zLm5hbWUgPz8gbnVsbDtcbiAgICB0aGlzLnNvdXJjZSA9IHBhcmFtcy5zb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgYSB3b3JrZXIgbWV0aG9kLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFRNZXRob2QgLSBUaGUgbWV0aG9kLlxuICAgKiBAcGFyYW0gbWV0aG9kIC0gVGhlIG1ldGhvZCBuYW1lLlxuICAgKiBAcGFyYW0gY2FsbEFyZ3VtZW50cyAtIFRoZSBtZXRob2QncyBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGNhbGwgb3B0aW9ucy5cbiAgICogQHJldHVybnMgVGhlIG1ldGhvZCdzIHJlc3VsdC4gUmVqZWN0cyB3aXRoIGEge0BsaW5rIFdvcmtlckNhbGxFcnJvcn0gd2hlbiB0aGUgaGFuZGxlciBmYWlsZWQsIHdpdGggdGhlIGFib3J0IHJlYXNvblxuICAgKiAgIHdoZW4gdGhlIGNhbGwgd2FzIGNhbmNlbGxlZCwgYW5kIHdpdGggYW4gYEVycm9yYCB3aGVuIHRoZSB3b3JrZXIgZmFpbGVkIG9yIHRoZSBjb21wb25lbnQgdW5sb2FkZWQgZmlyc3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2FsbDxUTWV0aG9kIGV4dGVuZHMgV29ya2VyTWV0aG9kPFRBcGk+PihcbiAgICBtZXRob2Q6IFRNZXRob2QsXG4gICAgY2FsbEFyZ3VtZW50czogUGFyYW1ldGVyczxUQXBpW1RNZXRob2RdPixcbiAgICBvcHRpb25zOiBXb3JrZXJDb21wb25lbnRDYWxsT3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8V29ya2VyTWV0aG9kUmVzdWx0PFRBcGksIFRNZXRob2Q+PiB7XG4gICAgaWYgKCF0aGlzLl9sb2FkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHdvcmtlciBjb21wb25lbnQgaXMgbm90IGxvYWRlZCcpO1xuICAgIH1cbiAgICBjb25zdCBhYm9ydFNpZ25hbCA9IG9wdGlvbnMuYWJvcnRTaWduYWwgPz8gbmV3IEFib3J0Q29udHJvbGxlcigpLnNpZ25hbDtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgdGhpcy5fcGVuZGluZ0NhbGxDb3VudCsrO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmFjdGl2ZUZhbGxiYWNrSGFuZGxlcnMgPT09IG51bGxcbiAgICAgICAgPyBhd2FpdCB0aGlzLmNhbGxXb3JrZXIobWV0aG9kLCBjYWxsQXJndW1lbnRzLCBhYm9ydFNpZ25hbCwgb3B0aW9ucy50cmFuc2ZlciA/PyBbXSlcbiAgICAgICAgOiBhd2FpdCBjYWxsRmFsbGJhY2sodGhpcy5hY3RpdmVGYWxsYmFja0hhbmRsZXJzLCBtZXRob2QsIGNhbGxBcmd1bWVudHMsIGFib3J0U2lnbmFsKTtcbiAgICAgIHJldHVybiByZXN1bHQgYXMgV29ya2VyTWV0aG9kUmVzdWx0PFRBcGksIFRNZXRob2Q+O1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9wZW5kaW5nQ2FsbENvdW50LS07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgd29ya2VyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGFydFdvcmtlcigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLnN0b3BXb3JrZXIoKTtcbiAgICAgIGlmICh0aGlzLmZhbGxiYWNrSGFuZGxlcnMgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB0aGlzLmFjdGl2ZUZhbGxiYWNrSGFuZGxlcnMgPSB0aGlzLmZhbGxiYWNrSGFuZGxlcnM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlcm1pbmF0ZXMgdGhlIHdvcmtlciBhbmQgcmVqZWN0cyB0aGUgcGVuZGluZyBjYWxscy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbnVubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbnVubG9hZCgpO1xuICAgIHRoaXMuc3RvcFdvcmtlcigpO1xuICAgIHRoaXMucmVqZWN0QWxsKG5ldyBFcnJvcignVGhlIHdvcmtlciBjb21wb25lbnQgd2FzIHVubG9hZGVkJykpO1xuICAgIHRoaXMuYWN0aXZlRmFsbGJhY2tIYW5kbGVycyA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhbGxXb3JrZXIoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgY2FsbEFyZ3VtZW50czogcmVhZG9ubHkgdW5rbm93bltdLFxuICAgIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgICB0cmFuc2ZlcjogcmVhZG9ubHkgVHJhbnNmZXJhYmxlW11cbiAgKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgLy8gQSBsb2FkZWQgY29tcG9uZW50IHdpdGhvdXQgZmFsbGJhY2sgaGFuZGxlcnMgaW4gdXNlIGFsd2F5cyBob2xkcyBpdHMgd29ya2VyLlxuICAgIGNvbnN0IHdvcmtlciA9IGVuc3VyZU5vbk51bGxhYmxlKHRoaXMud29ya2VyKTtcblxuICAgIHRoaXMubGFzdENhbGxJZCsrO1xuICAgIGNvbnN0IGlkID0gdGhpcy5sYXN0Q2FsbElkO1xuICAgIGxldCBvbkFib3J0ID0gbm9vcDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBvbkFib3J0ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5wZW5kaW5nQ2FsbHMuZGVsZXRlKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBjYW5jZWxNZXNzYWdlOiBXb3JrZXJDYW5jZWxNZXNzYWdlID0geyBpZCwga2luZDogJ2NhbmNlbCcsIHByb3RvY29sOiBXT1JLRVJfUFJPVE9DT0wgfTtcbiAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoY2FuY2VsTWVzc2FnZSk7XG4gICAgICAgICAgcmVqZWN0KGdldEFib3J0UmVhc29uKGFib3J0U2lnbmFsKSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucGVuZGluZ0NhbGxzLnNldChpZCwgeyByZWplY3QsIHJlc29sdmUgfSk7XG4gICAgICAgIGNvbnN0IGNhbGxNZXNzYWdlOiBXb3JrZXJDYWxsTWVzc2FnZSA9IHsgYXJndW1lbnRzOiBjYWxsQXJndW1lbnRzLCBpZCwga2luZDogJ2NhbGwnLCBtZXRob2QsIHByb3RvY29sOiBXT1JLRVJfUFJPVE9DT0wgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoY2FsbE1lc3NhZ2UsIFsuLi50cmFuc2Zlcl0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRoaXMucGVuZGluZ0NhbGxzLmRlbGV0ZShpZCk7XG4gICAgICAgICAgcmVqZWN0KHRvRXJyb3IoZXJyb3IpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYWJvcnRTaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbi9uby11bnN1cHBvcnRlZC1mZWF0dXJlcy9ub2RlLWJ1aWx0aW5zIC0tIFRoZSByZW5kZXJlcidzIFdlYiBFcnJvckV2ZW50LCBub3QgTm9kZSdzLlxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZUVycm9yID0gKCRldmVudDogRXJyb3JFdmVudCk6IHZvaWQgPT4ge1xuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucmVqZWN0QWxsKG5ldyBFcnJvcihgVGhlIHdvcmtlciBmYWlsZWQ6ICR7JGV2ZW50Lm1lc3NhZ2UgfHwgJ3Vua25vd24gZXJyb3InfWApKTtcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZU1lc3NhZ2UgPSAoJGV2ZW50OiBNZXNzYWdlRXZlbnQ8dW5rbm93bj4pOiB2b2lkID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gJGV2ZW50LmRhdGE7XG4gICAgaWYgKCFpc1dvcmtlclJlc3BvbnNlTWVzc2FnZShtZXNzYWdlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwZW5kaW5nQ2FsbCA9IHRoaXMucGVuZGluZ0NhbGxzLmdldChtZXNzYWdlLmlkKTtcbiAgICBpZiAoIXBlbmRpbmdDYWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGVuZGluZ0NhbGxzLmRlbGV0ZShtZXNzYWdlLmlkKTtcbiAgICBpZiAobWVzc2FnZS5raW5kID09PSAncmVzdWx0Jykge1xuICAgICAgcGVuZGluZ0NhbGwucmVzb2x2ZShtZXNzYWdlLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGVuZGluZ0NhbGwucmVqZWN0KG5ldyBXb3JrZXJDYWxsRXJyb3IobWVzc2FnZS5lcnJvcikpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZU1lc3NhZ2VFcnJvciA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLnJlamVjdEFsbChuZXcgRXJyb3IoJ1RoZSB3b3JrZXIgc2VudCBhIG1lc3NhZ2UgdGhhdCBjb3VsZCBub3QgYmUgZGVzZXJpYWxpemVkJykpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVqZWN0QWxsKHJlYXNvbjogRXJyb3IpOiB2b2lkIHtcbiAgICBjb25zdCBwZW5kaW5nQ2FsbHMgPSBbLi4udGhpcy5wZW5kaW5nQ2FsbHMudmFsdWVzKCldO1xuICAgIHRoaXMucGVuZGluZ0NhbGxzLmNsZWFyKCk7XG4gICAgZm9yIChjb25zdCBwZW5kaW5nQ2FsbCBvZiBwZW5kaW5nQ2FsbHMpIHtcbiAgICAgIHBlbmRpbmdDYWxsLnJlamVjdChyZWFzb24pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmV2b2tlV29ya2VyVXJsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndvcmtlclVybCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLndvcmtlclVybCk7XG4gICAgdGhpcy53b3JrZXJVcmwgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFdvcmtlcigpOiB2b2lkIHtcbiAgICB0aGlzLndvcmtlclVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFt0aGlzLnNvdXJjZV0sIHsgdHlwZTogJ3RleHQvamF2YXNjcmlwdCcgfSkpO1xuICAgIGNvbnN0IHdvcmtlck9wdGlvbnM6IFdvcmtlck9wdGlvbnMgPSB0aGlzLm5hbWUgPT09IG51bGwgPyB7fSA6IHsgbmFtZTogdGhpcy5uYW1lIH07XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IHdpbmRvdy5Xb3JrZXIodGhpcy53b3JrZXJVcmwsIHdvcmtlck9wdGlvbnMpO1xuICAgIHRoaXMud29ya2VyID0gd29ya2VyO1xuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5oYW5kbGVNZXNzYWdlKTtcbiAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZWVycm9yJywgdGhpcy5oYW5kbGVNZXNzYWdlRXJyb3IpO1xuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHRoaXMuaGFuZGxlRXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wV29ya2VyKCk6IHZvaWQge1xuICAgIHRoaXMudGVybWluYXRlV29ya2VyKCk7XG4gICAgdGhpcy5yZXZva2VXb3JrZXJVcmwoKTtcbiAgfVxuXG4gIHByaXZhdGUgdGVybWluYXRlV29ya2VyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53b3JrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy53b3JrZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuaGFuZGxlTWVzc2FnZSk7XG4gICAgdGhpcy53b3JrZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZWVycm9yJywgdGhpcy5oYW5kbGVNZXNzYWdlRXJyb3IpO1xuICAgIHRoaXMud29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5oYW5kbGVFcnJvcik7XG4gICAgdGhpcy53b3JrZXIudGVybWluYXRlKCk7XG4gICAgdGhpcy53b3JrZXIgPSBudWxsO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGxGYWxsYmFjayhcbiAgaGFuZGxlcnM6IG9iamVjdCxcbiAgbWV0aG9kOiBzdHJpbmcsXG4gIGNhbGxBcmd1bWVudHM6IHJlYWRvbmx5IHVua25vd25bXSxcbiAgY2FsbGVyU2lnbmFsOiBBYm9ydFNpZ25hbFxuKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgZnVuY3Rpb24gb25BYm9ydCgpOiB2b2lkIHtcbiAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoY2FsbGVyU2lnbmFsLnJlYXNvbik7XG4gIH1cbiAgY2FsbGVyU2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuICB0cnkge1xuICAgIGNvbnN0IGhhbmRsZXJQcm9taXNlID0gaW52b2tlV29ya2VySGFuZGxlcihoYW5kbGVycywgbWV0aG9kLCBjYWxsQXJndW1lbnRzLCB7IGFib3J0U2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsIH0pO1xuICAgIC8vIFRoZSByYWNlIGJlbG93IG1heSBzZXR0bGUgb24gdGhlIGFib3J0IGZpcnN0OyB0aGUgaGFuZGxlcidzIG93biBsYXRlciByZWplY3Rpb24gaXMgdGhlbiBub2JvZHkncyB0byByZXBvcnQuXG4gICAgaGFuZGxlclByb21pc2UuY2F0Y2gobm9vcCk7XG4gICAgY29uc3QgYWJvcnRQcm9taXNlID0gbmV3IFByb21pc2U8bmV2ZXI+KChfcmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4ge1xuICAgICAgICByZWplY3QoZ2V0QWJvcnRSZWFzb24oYWJvcnRDb250cm9sbGVyLnNpZ25hbCkpO1xuICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiB1bndyYXBUcmFuc2ZlcnJlZFZhbHVlKGF3YWl0IFByb21pc2UucmFjZShbaGFuZGxlclByb21pc2UsIGFib3J0UHJvbWlzZV0pKS52YWx1ZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjYWxsZXJTaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBYm9ydFJlYXNvbihhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBFcnJvciB7XG4gIHJldHVybiB0b0Vycm9yKGFib3J0U2lnbmFsLnJlYXNvbik7XG59XG5cbmZ1bmN0aW9uIHRvRXJyb3IocmVhc29uOiB1bmtub3duKTogRXJyb3Ige1xuICByZXR1cm4gcmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZWFzb24gOiBuZXcgRXJyb3IoU3RyaW5nKHJlYXNvbikpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQSxzQkFBcUI7QUFDckIseUJBQWtDO0FBVWxDLDZCQUtPO0FBQ1AsMEJBQTRCO0FBa0VyQixNQUFNLHdCQUF3QixNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJekI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1QsWUFBWSxPQUE4QjtBQUMvQyxVQUFNLE1BQU0sT0FBTztBQUNuQixTQUFLLE9BQU87QUFDWixTQUFLLGFBQWEsTUFBTTtBQUN4QixTQUFLLGNBQWMsTUFBTTtBQUFBLEVBQzNCO0FBQ0Y7QUFjTyxNQUFNLHdCQUFzRCxnQ0FBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU03RSxJQUFXLGtCQUEyQjtBQUNwQyxXQUFPLEtBQUssMkJBQTJCO0FBQUEsRUFDekM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLG1CQUEyQjtBQUNwQyxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLbUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBLEVBRVgsb0JBQW9CO0FBQUEsRUFDcEIseUJBQXlEO0FBQUEsRUFDekQsYUFBYTtBQUFBLEVBQ0osZUFBZSxvQkFBSSxJQUF5QjtBQUFBO0FBQUEsRUFFckQsU0FBd0I7QUFBQSxFQUN4QixZQUEyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU81QixZQUFZLFFBQWdEO0FBQ2pFLFVBQU07QUFDTixTQUFLLG1CQUFtQixPQUFPLG9CQUFvQjtBQUNuRCxTQUFLLE9BQU8sT0FBTyxRQUFRO0FBQzNCLFNBQUssU0FBUyxPQUFPO0FBQUEsRUFDdkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBWUEsTUFBYSxLQUNYLFFBQ0EsZUFDQSxVQUFzQyxDQUFDLEdBQ0s7QUFDNUMsUUFBSSxDQUFDLEtBQUssU0FBUztBQUNqQixZQUFNLElBQUksTUFBTSxvQ0FBb0M7QUFBQSxJQUN0RDtBQUNBLFVBQU0sY0FBYyxRQUFRLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRTtBQUNqRSxnQkFBWSxlQUFlO0FBRTNCLFNBQUs7QUFDTCxRQUFJO0FBQ0YsWUFBTSxTQUFTLEtBQUssMkJBQTJCLE9BQzNDLE1BQU0sS0FBSyxXQUFXLFFBQVEsZUFBZSxhQUFhLFFBQVEsWUFBWSxDQUFDLENBQUMsSUFDaEYsTUFBTSxhQUFhLEtBQUssd0JBQXdCLFFBQVEsZUFBZSxXQUFXO0FBQ3RGLGFBQU87QUFBQSxJQUNULFVBQUU7QUFDQSxXQUFLO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtnQixTQUFlO0FBQzdCLFVBQU0sT0FBTztBQUNiLFFBQUk7QUFDRixXQUFLLFlBQVk7QUFBQSxJQUNuQixTQUFTLE9BQU87QUFDZCxXQUFLLFdBQVc7QUFDaEIsVUFBSSxLQUFLLHFCQUFxQixNQUFNO0FBQ2xDLGNBQU07QUFBQSxNQUNSO0FBQ0EsV0FBSyx5QkFBeUIsS0FBSztBQUFBLElBQ3JDO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS2dCLFdBQWlCO0FBQy9CLFVBQU0sU0FBUztBQUNmLFNBQUssV0FBVztBQUNoQixTQUFLLFVBQVUsSUFBSSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELFNBQUsseUJBQXlCO0FBQUEsRUFDaEM7QUFBQSxFQUVBLE1BQWMsV0FDWixRQUNBLGVBQ0EsYUFDQSxVQUNrQjtBQUVsQixVQUFNLGFBQVMsc0NBQWtCLEtBQUssTUFBTTtBQUU1QyxTQUFLO0FBQ0wsVUFBTSxLQUFLLEtBQUs7QUFDaEIsUUFBSSxVQUFVO0FBRWQsUUFBSTtBQUNGLGFBQU8sTUFBTSxJQUFJLFFBQWlCLENBQUMsU0FBUyxXQUFXO0FBQ3JELGtCQUFVLE1BQVk7QUFDcEIsY0FBSSxDQUFDLEtBQUssYUFBYSxPQUFPLEVBQUUsR0FBRztBQUNqQztBQUFBLFVBQ0Y7QUFDQSxnQkFBTSxnQkFBcUMsRUFBRSxJQUFJLE1BQU0sVUFBVSxVQUFVLHVDQUFnQjtBQUMzRixpQkFBTyxZQUFZLGFBQWE7QUFDaEMsaUJBQU8sZUFBZSxXQUFXLENBQUM7QUFBQSxRQUNwQztBQUNBLGFBQUssYUFBYSxJQUFJLElBQUksRUFBRSxRQUFRLFFBQVEsQ0FBQztBQUM3QyxjQUFNLGNBQWlDLEVBQUUsV0FBVyxlQUFlLElBQUksTUFBTSxRQUFRLFFBQVEsVUFBVSx1Q0FBZ0I7QUFDdkgsWUFBSTtBQUNGLGlCQUFPLFlBQVksYUFBYSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQUEsUUFDL0MsU0FBUyxPQUFPO0FBQ2QsZUFBSyxhQUFhLE9BQU8sRUFBRTtBQUMzQixpQkFBTyxRQUFRLEtBQUssQ0FBQztBQUNyQjtBQUFBLFFBQ0Y7QUFDQSxvQkFBWSxpQkFBaUIsU0FBUyxTQUFTLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFBQSxNQUMvRCxDQUFDO0FBQUEsSUFDSCxVQUFFO0FBQ0Esa0JBQVksb0JBQW9CLFNBQVMsT0FBTztBQUFBLElBQ2xEO0FBQUEsRUFDRjtBQUFBO0FBQUEsRUFHaUIsY0FBYyxDQUFDLFdBQTZCO0FBQzNELFdBQU8sZUFBZTtBQUN0QixTQUFLLFVBQVUsSUFBSSxNQUFNLHNCQUFzQixPQUFPLFdBQVcsZUFBZSxFQUFFLENBQUM7QUFBQSxFQUNyRjtBQUFBLEVBRWlCLGdCQUFnQixDQUFDLFdBQXdDO0FBQ3hFLFVBQU0sVUFBVSxPQUFPO0FBQ3ZCLFFBQUksS0FBQyxnREFBd0IsT0FBTyxHQUFHO0FBQ3JDO0FBQUEsSUFDRjtBQUNBLFVBQU0sY0FBYyxLQUFLLGFBQWEsSUFBSSxRQUFRLEVBQUU7QUFDcEQsUUFBSSxDQUFDLGFBQWE7QUFDaEI7QUFBQSxJQUNGO0FBQ0EsU0FBSyxhQUFhLE9BQU8sUUFBUSxFQUFFO0FBQ25DLFFBQUksUUFBUSxTQUFTLFVBQVU7QUFDN0Isa0JBQVksUUFBUSxRQUFRLEtBQUs7QUFBQSxJQUNuQyxPQUFPO0FBQ0wsa0JBQVksT0FBTyxJQUFJLGdCQUFnQixRQUFRLEtBQUssQ0FBQztBQUFBLElBQ3ZEO0FBQUEsRUFDRjtBQUFBLEVBRWlCLHFCQUFxQixNQUFZO0FBQ2hELFNBQUssVUFBVSxJQUFJLE1BQU0sMERBQTBELENBQUM7QUFBQSxFQUN0RjtBQUFBLEVBRVEsVUFBVSxRQUFxQjtBQUNyQyxVQUFNLGVBQWUsQ0FBQyxHQUFHLEtBQUssYUFBYSxPQUFPLENBQUM7QUFDbkQsU0FBSyxhQUFhLE1BQU07QUFDeEIsZUFBVyxlQUFlLGNBQWM7QUFDdEMsa0JBQVksT0FBTyxNQUFNO0FBQUEsSUFDM0I7QUFBQSxFQUNGO0FBQUEsRUFFUSxrQkFBd0I7QUFDOUIsUUFBSSxLQUFLLGNBQWMsTUFBTTtBQUMzQjtBQUFBLElBQ0Y7QUFDQSxXQUFPLElBQUksZ0JBQWdCLEtBQUssU0FBUztBQUN6QyxTQUFLLFlBQVk7QUFBQSxFQUNuQjtBQUFBLEVBRVEsY0FBb0I7QUFDMUIsU0FBSyxZQUFZLE9BQU8sSUFBSSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsS0FBSyxNQUFNLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixDQUFDLENBQUM7QUFDaEcsVUFBTSxnQkFBK0IsS0FBSyxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLEtBQUs7QUFDakYsVUFBTSxTQUFTLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxhQUFhO0FBQzlELFNBQUssU0FBUztBQUNkLFdBQU8saUJBQWlCLFdBQVcsS0FBSyxhQUFhO0FBQ3JELFdBQU8saUJBQWlCLGdCQUFnQixLQUFLLGtCQUFrQjtBQUMvRCxXQUFPLGlCQUFpQixTQUFTLEtBQUssV0FBVztBQUFBLEVBQ25EO0FBQUEsRUFFUSxhQUFtQjtBQUN6QixTQUFLLGdCQUFnQjtBQUNyQixTQUFLLGdCQUFnQjtBQUFBLEVBQ3ZCO0FBQUEsRUFFUSxrQkFBd0I7QUFDOUIsUUFBSSxDQUFDLEtBQUssUUFBUTtBQUNoQjtBQUFBLElBQ0Y7QUFDQSxTQUFLLE9BQU8sb0JBQW9CLFdBQVcsS0FBSyxhQUFhO0FBQzdELFNBQUssT0FBTyxvQkFBb0IsZ0JBQWdCLEtBQUssa0JBQWtCO0FBQ3ZFLFNBQUssT0FBTyxvQkFBb0IsU0FBUyxLQUFLLFdBQVc7QUFDekQsU0FBSyxPQUFPLFVBQVU7QUFDdEIsU0FBSyxTQUFTO0FBQUEsRUFDaEI7QUFDRjtBQUVBLGVBQWUsYUFDYixVQUNBLFFBQ0EsZUFDQSxjQUNrQjtBQUNsQixRQUFNLGtCQUFrQixJQUFJLGdCQUFnQjtBQUM1QyxXQUFTLFVBQWdCO0FBQ3ZCLG9CQUFnQixNQUFNLGFBQWEsTUFBTTtBQUFBLEVBQzNDO0FBQ0EsZUFBYSxpQkFBaUIsU0FBUyxTQUFTLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDOUQsTUFBSTtBQUNGLFVBQU0scUJBQWlCLDRDQUFvQixVQUFVLFFBQVEsZUFBZSxFQUFFLGFBQWEsZ0JBQWdCLE9BQU8sQ0FBQztBQUVuSCxtQkFBZSxNQUFNLG9CQUFJO0FBQ3pCLFVBQU0sZUFBZSxJQUFJLFFBQWUsQ0FBQyxVQUFVLFdBQVc7QUFDNUQsc0JBQWdCLE9BQU8saUJBQWlCLFNBQVMsTUFBTTtBQUNyRCxlQUFPLGVBQWUsZ0JBQWdCLE1BQU0sQ0FBQztBQUFBLE1BQy9DLEdBQUcsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUFBLElBQ25CLENBQUM7QUFDRCxlQUFPLCtDQUF1QixNQUFNLFFBQVEsS0FBSyxDQUFDLGdCQUFnQixZQUFZLENBQUMsQ0FBQyxFQUFFO0FBQUEsRUFDcEYsVUFBRTtBQUNBLGlCQUFhLG9CQUFvQixTQUFTLE9BQU87QUFBQSxFQUNuRDtBQUNGO0FBRUEsU0FBUyxlQUFlLGFBQWlDO0FBQ3ZELFNBQU8sUUFBUSxZQUFZLE1BQU07QUFDbkM7QUFFQSxTQUFTLFFBQVEsUUFBd0I7QUFDdkMsU0FBTyxrQkFBa0IsUUFBUSxTQUFTLElBQUksTUFBTSxPQUFPLE1BQU0sQ0FBQztBQUNwRTsiLCJuYW1lcyI6W119
@@ -0,0 +1,156 @@
1
+ /// <reference path="../library-references.d.cts" />
2
+ /// <reference lib="dom" />
3
+ /**
4
+ * @file
5
+ *
6
+ * A component that owns one browser `Worker` built from bundled source and calls it through a typed request/response
7
+ * channel.
8
+ */
9
+ import type { SerializedWorkerError, WorkerApi, WorkerApiHandlers } from '../worker-protocol.cjs';
10
+ import { ComponentEx } from './component-ex.cjs';
11
+ /**
12
+ * Options of {@link WorkerComponent.call}.
13
+ */
14
+ export interface WorkerComponentCallOptions {
15
+ /**
16
+ * Cancels the call. The returned promise rejects with the signal's reason at once, and the worker's handler sees its
17
+ * own `this.abortSignal` aborted; whatever it answers afterwards is dropped.
18
+ */
19
+ readonly abortSignal?: AbortSignal;
20
+ /**
21
+ * Objects inside the arguments to transfer rather than copy. They are unusable on the main thread afterwards.
22
+ */
23
+ readonly transfer?: readonly Transferable[];
24
+ }
25
+ /**
26
+ * Parameters of {@link WorkerComponent}.
27
+ *
28
+ * @typeParam TApi - The API the worker exposes.
29
+ */
30
+ export interface WorkerComponentConstructorParams<TApi extends WorkerApi<TApi>> {
31
+ /**
32
+ * The same handlers the worker exposes, run on the main thread when no `Worker` can be created. Without them, a
33
+ * failure to create the worker fails the component's load.
34
+ */
35
+ readonly fallbackHandlers?: WorkerApiHandlers<TApi>;
36
+ /**
37
+ * The worker's name, shown by the developer tools.
38
+ */
39
+ readonly name?: string;
40
+ /**
41
+ * The bundled worker source: the string a `*.worker.ts?worker-source` import gives with
42
+ * `@mnaoumov/obsidian-dev-toolkit`'s `workers` feature.
43
+ */
44
+ readonly source: string;
45
+ }
46
+ /**
47
+ * The method names of a {@link WorkerApi}.
48
+ *
49
+ * @typeParam TApi - The API type.
50
+ */
51
+ export type WorkerMethod<TApi> = Extract<keyof TApi, string>;
52
+ /**
53
+ * The resolved result type of a worker method.
54
+ *
55
+ * @typeParam TApi - The API type.
56
+ * @typeParam TMethod - The method.
57
+ */
58
+ export type WorkerMethodResult<TApi extends WorkerApi<TApi>, TMethod extends WorkerMethod<TApi>> = Awaited<ReturnType<TApi[TMethod]>>;
59
+ /**
60
+ * The error a call rejects with when the worker's handler failed. It carries the worker-side name, message and stack,
61
+ * because an `Error` loses its class across the worker boundary.
62
+ */
63
+ export declare class WorkerCallError extends Error {
64
+ /**
65
+ * The name of the error thrown in the worker.
66
+ */
67
+ readonly remoteName: string;
68
+ /**
69
+ * The stack of the error thrown in the worker, when there was one.
70
+ */
71
+ readonly remoteStack: string | undefined;
72
+ /**
73
+ * Creates the error.
74
+ *
75
+ * @param error - The serialized worker-side error.
76
+ */
77
+ constructor(error: SerializedWorkerError);
78
+ }
79
+ /**
80
+ * Owns one `Worker` for the component's lifetime.
81
+ *
82
+ * On load it turns the bundled source into a Blob URL and starts the worker; on unload it terminates the worker,
83
+ * revokes the URL and rejects every pending call. Add it as a child of the plugin (or of any component), so the worker
84
+ * never outlives what uses it.
85
+ *
86
+ * The worker entry point calls `exposeWorkerApi` from `@mnaoumov/obsidian-lib/worker-protocol`, and
87
+ * {@link WorkerComponent.call} reaches its handlers by name, typed by `TApi`.
88
+ *
89
+ * @typeParam TApi - The API the worker exposes.
90
+ */
91
+ export declare class WorkerComponent<TApi extends WorkerApi<TApi>> extends ComponentEx {
92
+ /**
93
+ * Whether calls run on the main thread, because no `Worker` could be created and fallback handlers were given.
94
+ *
95
+ * @returns Whether the fallback is in use.
96
+ */
97
+ get isUsingFallback(): boolean;
98
+ /**
99
+ * The number of calls that have not settled yet.
100
+ *
101
+ * @returns The count.
102
+ */
103
+ get pendingCallCount(): number;
104
+ /**
105
+ * The handlers to run on the main thread when no `Worker` can be created, or `null`.
106
+ */
107
+ protected readonly fallbackHandlers: null | WorkerApiHandlers<TApi>;
108
+ /**
109
+ * The worker's name, or `null`.
110
+ */
111
+ protected readonly name: null | string;
112
+ /**
113
+ * The bundled worker source.
114
+ */
115
+ protected readonly source: string;
116
+ private _pendingCallCount;
117
+ private activeFallbackHandlers;
118
+ private lastCallId;
119
+ private readonly pendingCalls;
120
+ private worker;
121
+ private workerUrl;
122
+ /**
123
+ * Creates the component.
124
+ *
125
+ * @param params - The parameters.
126
+ */
127
+ constructor(params: WorkerComponentConstructorParams<TApi>);
128
+ /**
129
+ * Calls a worker method.
130
+ *
131
+ * @typeParam TMethod - The method.
132
+ * @param method - The method name.
133
+ * @param callArguments - The method's arguments.
134
+ * @param options - The call options.
135
+ * @returns The method's result. Rejects with a {@link WorkerCallError} when the handler failed, with the abort reason
136
+ * when the call was cancelled, and with an `Error` when the worker failed or the component unloaded first.
137
+ */
138
+ call<TMethod extends WorkerMethod<TApi>>(method: TMethod, callArguments: Parameters<TApi[TMethod]>, options?: WorkerComponentCallOptions): Promise<WorkerMethodResult<TApi, TMethod>>;
139
+ /**
140
+ * Starts the worker.
141
+ */
142
+ onload(): void;
143
+ /**
144
+ * Terminates the worker and rejects the pending calls.
145
+ */
146
+ onunload(): void;
147
+ private callWorker;
148
+ private readonly handleError;
149
+ private readonly handleMessage;
150
+ private readonly handleMessageError;
151
+ private rejectAll;
152
+ private revokeWorkerUrl;
153
+ private startWorker;
154
+ private stopWorker;
155
+ private terminateWorker;
156
+ }