obsidian-dev-utils 85.1.0 → 86.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 (273) hide show
  1. package/@types/obsidian-integration-testing/package.json +4 -0
  2. package/CHANGELOG.md +16 -0
  3. package/README.md +1 -0
  4. package/dist/dev/main.js +9138 -4743
  5. package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +18 -0
  6. package/dist/lib/cjs/__merged.cjs +1291 -0
  7. package/dist/lib/cjs/__merged.d.cts +165 -0
  8. package/dist/lib/cjs/abort-controller.cjs +3 -4
  9. package/dist/lib/cjs/async.cjs +13 -7
  10. package/dist/lib/cjs/async.d.cts +6 -0
  11. package/dist/lib/cjs/disposable.cjs +224 -3
  12. package/dist/lib/cjs/disposable.d.cts +222 -2
  13. package/dist/lib/cjs/error.cjs +41 -3
  14. package/dist/lib/cjs/error.d.cts +50 -1
  15. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  16. package/dist/lib/cjs/index.cjs +4 -1
  17. package/dist/lib/cjs/index.d.cts +1 -0
  18. package/dist/lib/cjs/obsidian/attachment-path.cjs +3 -3
  19. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +27 -11
  20. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +14 -9
  21. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +4 -1
  22. package/dist/lib/cjs/obsidian/command-handlers/index.d.cts +1 -0
  23. package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.cjs +195 -0
  24. package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.d.cts +65 -0
  25. package/dist/lib/cjs/obsidian/community-plugins.cjs +156 -0
  26. package/dist/lib/cjs/obsidian/community-plugins.d.cts +22 -0
  27. package/dist/lib/cjs/obsidian/components/disposable-component.cjs +8 -8
  28. package/dist/lib/cjs/obsidian/components/disposable-component.d.cts +9 -3
  29. package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +17 -2
  30. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +17 -0
  31. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +161 -22
  32. package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +81 -8
  33. package/dist/lib/cjs/obsidian/css-class.cjs +4 -1
  34. package/dist/lib/cjs/obsidian/css-class.d.cts +13 -0
  35. package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +239 -0
  36. package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.d.cts +45 -0
  37. package/dist/lib/cjs/obsidian/desktop-trusted-input.cjs +215 -0
  38. package/dist/lib/cjs/obsidian/desktop-trusted-input.d.cts +135 -0
  39. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +3 -1
  40. package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +2 -0
  41. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +2 -0
  42. package/dist/lib/cjs/obsidian/index.cjs +10 -1
  43. package/dist/lib/cjs/obsidian/index.d.cts +3 -0
  44. package/dist/lib/cjs/obsidian/link.cjs +2 -2
  45. package/dist/lib/cjs/obsidian/modals/index.cjs +4 -1
  46. package/dist/lib/cjs/obsidian/modals/index.d.cts +1 -0
  47. package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +15 -2
  48. package/dist/lib/cjs/obsidian/modals/minimizable-modal.d.cts +18 -3
  49. package/dist/lib/cjs/obsidian/modals/select-option.cjs +182 -0
  50. package/dist/lib/cjs/obsidian/modals/select-option.d.cts +65 -0
  51. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +4 -1
  52. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +6 -0
  53. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +50 -3
  54. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +17 -0
  55. package/dist/lib/cjs/obsidian/workspace.cjs +8 -1
  56. package/dist/lib/cjs/obsidian/workspace.d.cts +10 -0
  57. package/dist/lib/cjs/path.cjs +4 -4
  58. package/dist/lib/cjs/path.d.cts +1 -1
  59. package/dist/lib/cjs/script-utils/demo-vault.cjs +177 -0
  60. package/dist/lib/cjs/script-utils/demo-vault.d.cts +23 -0
  61. package/dist/lib/cjs/script-utils/exec.cjs +27 -5
  62. package/dist/lib/cjs/script-utils/exec.d.cts +20 -0
  63. package/dist/lib/cjs/script-utils/index.cjs +9 -3
  64. package/dist/lib/cjs/script-utils/index.d.cts +2 -0
  65. package/dist/lib/cjs/script-utils/linters/eslint-no-restricted-syntax.cjs +1 -5
  66. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +2 -1
  67. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +2 -0
  68. package/dist/lib/cjs/script-utils/version.cjs +8 -1
  69. package/dist/lib/cjs/script-utils/version.d.cts +8 -0
  70. package/dist/lib/cjs/script-utils/warnings-as-errors.cjs +157 -0
  71. package/dist/lib/cjs/script-utils/warnings-as-errors.d.cts +27 -0
  72. package/dist/lib/cjs/setup.cjs +75 -4
  73. package/dist/lib/cjs/setup.d.cts +29 -7
  74. package/dist/lib/cjs/string.cjs +7 -4
  75. package/dist/lib/cjs/string.d.cts +11 -1
  76. package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +18 -0
  77. package/dist/lib/esm/__merged.d.mts +165 -0
  78. package/dist/lib/esm/__merged.mjs +1134 -0
  79. package/dist/lib/esm/abort-controller.mjs +7 -5
  80. package/dist/lib/esm/async.d.mts +6 -0
  81. package/dist/lib/esm/async.mjs +13 -7
  82. package/dist/lib/esm/disposable.d.mts +222 -2
  83. package/dist/lib/esm/disposable.mjs +215 -2
  84. package/dist/lib/esm/error.d.mts +50 -1
  85. package/dist/lib/esm/error.mjs +41 -4
  86. package/dist/lib/esm/generated-during-build.mjs +2 -2
  87. package/dist/lib/esm/index.d.mts +1 -0
  88. package/dist/lib/esm/index.mjs +3 -1
  89. package/dist/lib/esm/obsidian/attachment-path.mjs +4 -4
  90. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +14 -9
  91. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +31 -11
  92. package/dist/lib/esm/obsidian/command-handlers/index.d.mts +1 -0
  93. package/dist/lib/esm/obsidian/command-handlers/index.mjs +3 -1
  94. package/dist/lib/esm/obsidian/command-handlers/open-demo-vault-command-handler.d.mts +65 -0
  95. package/dist/lib/esm/obsidian/command-handlers/open-demo-vault-command-handler.mjs +77 -0
  96. package/dist/lib/esm/obsidian/community-plugins.d.mts +22 -0
  97. package/dist/lib/esm/obsidian/community-plugins.mjs +48 -0
  98. package/dist/lib/esm/obsidian/components/disposable-component.d.mts +9 -3
  99. package/dist/lib/esm/obsidian/components/disposable-component.mjs +8 -8
  100. package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +17 -0
  101. package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +17 -2
  102. package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +81 -8
  103. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +163 -23
  104. package/dist/lib/esm/obsidian/css-class.d.mts +13 -0
  105. package/dist/lib/esm/obsidian/css-class.mjs +4 -1
  106. package/dist/lib/esm/obsidian/desktop-demo-vault-opener.d.mts +45 -0
  107. package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +121 -0
  108. package/dist/lib/esm/obsidian/desktop-trusted-input.d.mts +135 -0
  109. package/dist/lib/esm/obsidian/desktop-trusted-input.mjs +103 -0
  110. package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +2 -0
  111. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +3 -1
  112. package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +2 -0
  113. package/dist/lib/esm/obsidian/index.d.mts +3 -0
  114. package/dist/lib/esm/obsidian/index.mjs +7 -1
  115. package/dist/lib/esm/obsidian/link.mjs +3 -3
  116. package/dist/lib/esm/obsidian/modals/index.d.mts +1 -0
  117. package/dist/lib/esm/obsidian/modals/index.mjs +3 -1
  118. package/dist/lib/esm/obsidian/modals/minimizable-modal.d.mts +18 -3
  119. package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +17 -3
  120. package/dist/lib/esm/obsidian/modals/select-option.d.mts +65 -0
  121. package/dist/lib/esm/obsidian/modals/select-option.mjs +77 -0
  122. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +6 -0
  123. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +4 -1
  124. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +17 -0
  125. package/dist/lib/esm/obsidian/plugin/plugin.mjs +50 -3
  126. package/dist/lib/esm/obsidian/workspace.d.mts +10 -0
  127. package/dist/lib/esm/obsidian/workspace.mjs +7 -1
  128. package/dist/lib/esm/path.d.mts +1 -1
  129. package/dist/lib/esm/path.mjs +3 -3
  130. package/dist/lib/esm/script-utils/demo-vault.d.mts +23 -0
  131. package/dist/lib/esm/script-utils/demo-vault.mjs +63 -0
  132. package/dist/lib/esm/script-utils/exec.d.mts +20 -0
  133. package/dist/lib/esm/script-utils/exec.mjs +25 -5
  134. package/dist/lib/esm/script-utils/index.d.mts +2 -0
  135. package/dist/lib/esm/script-utils/index.mjs +6 -2
  136. package/dist/lib/esm/script-utils/linters/eslint-no-restricted-syntax.mjs +1 -5
  137. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +2 -0
  138. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +2 -1
  139. package/dist/lib/esm/script-utils/version.d.mts +8 -0
  140. package/dist/lib/esm/script-utils/version.mjs +8 -1
  141. package/dist/lib/esm/script-utils/warnings-as-errors.d.mts +27 -0
  142. package/dist/lib/esm/script-utils/warnings-as-errors.mjs +38 -0
  143. package/dist/lib/esm/setup.d.mts +29 -7
  144. package/dist/lib/esm/setup.mjs +78 -4
  145. package/dist/lib/esm/string.d.mts +11 -1
  146. package/dist/lib/esm/string.mjs +5 -3
  147. package/dist/styles.css +33 -3
  148. package/obsidian/command-handlers/open-demo-vault-command-handler/package.json +6 -0
  149. package/obsidian/community-plugins/package.json +6 -0
  150. package/obsidian/desktop-demo-vault-opener/package.json +6 -0
  151. package/obsidian/desktop-trusted-input/package.json +6 -0
  152. package/obsidian/modals/select-option/package.json +6 -0
  153. package/package.json +6 -7
  154. package/script-utils/demo-vault/package.json +6 -0
  155. package/script-utils/warnings-as-errors/package.json +6 -0
  156. /package/obsidian/@types/{Dataview → dataview}/api/data-array/package.json +0 -0
  157. /package/obsidian/@types/{Dataview → dataview}/api/extensions/package.json +0 -0
  158. /package/obsidian/@types/{Dataview → dataview}/api/inline-api/package.json +0 -0
  159. /package/obsidian/@types/{Dataview → dataview}/api/plugin-api/package.json +0 -0
  160. /package/obsidian/@types/{Dataview → dataview}/api/result/package.json +0 -0
  161. /package/obsidian/@types/{Dataview → dataview}/data-import/common/package.json +0 -0
  162. /package/obsidian/@types/{Dataview → dataview}/data-import/csv/package.json +0 -0
  163. /package/obsidian/@types/{Dataview → dataview}/data-import/inline-field/package.json +0 -0
  164. /package/obsidian/@types/{Dataview → dataview}/data-import/markdown-file/package.json +0 -0
  165. /package/obsidian/@types/{Dataview → dataview}/data-import/persister/package.json +0 -0
  166. /package/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-entry/package.json +0 -0
  167. /package/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-impl/package.json +0 -0
  168. /package/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-manager/package.json +0 -0
  169. /package/obsidian/@types/{Dataview → dataview}/data-index/index/package.json +0 -0
  170. /package/obsidian/@types/{Dataview → dataview}/data-index/package.json +0 -0
  171. /package/obsidian/@types/{Dataview → dataview}/data-index/resolver/package.json +0 -0
  172. /package/obsidian/@types/{Dataview → dataview}/data-index/source/package.json +0 -0
  173. /package/obsidian/@types/{Dataview → dataview}/data-model/markdown/package.json +0 -0
  174. /package/obsidian/@types/{Dataview → dataview}/data-model/serialized/markdown/package.json +0 -0
  175. /package/obsidian/@types/{Dataview → dataview}/data-model/transferable/package.json +0 -0
  176. /package/obsidian/@types/{Dataview → dataview}/data-model/value/package.json +0 -0
  177. /package/obsidian/@types/{Dataview → dataview}/expression/binaryop/package.json +0 -0
  178. /package/obsidian/@types/{Dataview → dataview}/expression/context/package.json +0 -0
  179. /package/obsidian/@types/{Dataview → dataview}/expression/field/package.json +0 -0
  180. /package/obsidian/@types/{Dataview → dataview}/expression/functions/package.json +0 -0
  181. /package/obsidian/@types/{Dataview → dataview}/expression/parse/package.json +0 -0
  182. /package/obsidian/@types/{Dataview → dataview}/index/package.json +0 -0
  183. /package/obsidian/@types/{Dataview → dataview}/main/package.json +0 -0
  184. /package/obsidian/@types/{Dataview → dataview}/package.json +0 -0
  185. /package/obsidian/@types/{Dataview → dataview}/query/engine/package.json +0 -0
  186. /package/obsidian/@types/{Dataview → dataview}/query/parse/package.json +0 -0
  187. /package/obsidian/@types/{Dataview → dataview}/query/query/package.json +0 -0
  188. /package/obsidian/@types/{Dataview → dataview}/settings/package.json +0 -0
  189. /package/obsidian/@types/{Dataview → dataview}/typings/obsidian-ex/package.json +0 -0
  190. /package/obsidian/@types/{Dataview → dataview}/typings/workers/package.json +0 -0
  191. /package/obsidian/@types/{Dataview → dataview}/ui/export/markdown/package.json +0 -0
  192. /package/obsidian/@types/{Dataview → dataview}/ui/lp-render/package.json +0 -0
  193. /package/obsidian/@types/{Dataview → dataview}/ui/markdown/package.json +0 -0
  194. /package/obsidian/@types/{Dataview → dataview}/ui/refreshable-view/package.json +0 -0
  195. /package/obsidian/@types/{Dataview → dataview}/ui/render/package.json +0 -0
  196. /package/obsidian/@types/{Dataview → dataview}/ui/views/calendar-view/package.json +0 -0
  197. /package/obsidian/@types/{Dataview → dataview}/ui/views/inline-field-live-preview/package.json +0 -0
  198. /package/obsidian/@types/{Dataview → dataview}/ui/views/inline-view/package.json +0 -0
  199. /package/obsidian/@types/{Dataview → dataview}/ui/views/js-view/package.json +0 -0
  200. /package/obsidian/@types/{Dataview → dataview}/ui/views/list-view/package.json +0 -0
  201. /package/obsidian/@types/{Dataview → dataview}/ui/views/table-view/package.json +0 -0
  202. /package/obsidian/@types/{Dataview → dataview}/ui/views/task-view/package.json +0 -0
  203. /package/obsidian/@types/{Dataview → dataview}/util/hash/package.json +0 -0
  204. /package/obsidian/@types/{Dataview → dataview}/util/locale/package.json +0 -0
  205. /package/obsidian/@types/{Dataview → dataview}/util/media/package.json +0 -0
  206. /package/obsidian/@types/{Dataview → dataview}/util/normalize/package.json +0 -0
  207. /package/obsidian/{App → app}/package.json +0 -0
  208. /package/obsidian/{Backlink → backlink}/package.json +0 -0
  209. /package/obsidian/{Callout → callout}/package.json +0 -0
  210. /package/obsidian/{Components → components}/abort-signal-component/package.json +0 -0
  211. /package/obsidian/{Components → components}/all-windows-event-component/package.json +0 -0
  212. /package/obsidian/{Components → components}/async-error-handler-component/package.json +0 -0
  213. /package/obsidian/{Components → components}/async-events-component/package.json +0 -0
  214. /package/obsidian/{Components → components}/case-insensitive-file-index-component/package.json +0 -0
  215. /package/obsidian/{Components → components}/component-ex/package.json +0 -0
  216. /package/obsidian/{Components → components}/console-debug-component/package.json +0 -0
  217. /package/obsidian/{Components → components}/disposable-component/package.json +0 -0
  218. /package/obsidian/{Components → components}/embed-extensions-component/package.json +0 -0
  219. /package/obsidian/{Components → components}/generate-markdown-link-default-params-component/package.json +0 -0
  220. /package/obsidian/{Components → components}/index/package.json +0 -0
  221. /package/obsidian/{Components → components}/layout-ready-component/package.json +0 -0
  222. /package/obsidian/{Components → components}/menu-event-registrar-component/package.json +0 -0
  223. /package/obsidian/{Components → components}/monkey-around-component/package.json +0 -0
  224. /package/obsidian/{Components → components}/package.json +0 -0
  225. /package/obsidian/{Components → components}/plugin-context-component/package.json +0 -0
  226. /package/obsidian/{Components → components}/plugin-notice-component/package.json +0 -0
  227. /package/obsidian/{Components → components}/plugin-settings-component/package.json +0 -0
  228. /package/obsidian/{Components → components}/plugin-settings-tab-component/package.json +0 -0
  229. /package/obsidian/{Components → components}/registry-component/package.json +0 -0
  230. /package/obsidian/{Components → components}/rename-delete-handler-component/package.json +0 -0
  231. /package/obsidian/{Dataview → dataview}/package.json +0 -0
  232. /package/obsidian/{Editor → editor}/package.json +0 -0
  233. /package/obsidian/{Frontmatter → frontmatter}/package.json +0 -0
  234. /package/obsidian/{Link → link}/package.json +0 -0
  235. /package/obsidian/{Logger → logger}/package.json +0 -0
  236. /package/obsidian/{Loop → loop}/package.json +0 -0
  237. /package/obsidian/{Markdown → markdown}/package.json +0 -0
  238. /package/obsidian/{Modals/Alert → modals/alert}/package.json +0 -0
  239. /package/obsidian/{Modals/Confirm → modals/confirm}/package.json +0 -0
  240. /package/obsidian/{Modals → modals}/index/package.json +0 -0
  241. /package/obsidian/{Modals → modals}/minimizable-modal/package.json +0 -0
  242. /package/obsidian/{Modals → modals}/modal/package.json +0 -0
  243. /package/obsidian/{Modals → modals}/package.json +0 -0
  244. /package/obsidian/{Modals/Prompt → modals/prompt}/package.json +0 -0
  245. /package/obsidian/{Modals → modals}/select-item/package.json +0 -0
  246. /package/obsidian/{Modals → modals}/suggest-modal-command-builder/package.json +0 -0
  247. /package/obsidian/{Pdf → pdf}/package.json +0 -0
  248. /package/obsidian/{Plugin → plugin}/index/package.json +0 -0
  249. /package/obsidian/{Plugin → plugin}/obsidian-plugin-repo-paths/package.json +0 -0
  250. /package/obsidian/{Plugin → plugin}/package.json +0 -0
  251. /package/obsidian/{Plugin/Plugin → plugin/plugin}/package.json +0 -0
  252. /package/obsidian/{Plugin → plugin}/plugin-context/package.json +0 -0
  253. /package/obsidian/{Plugin → plugin}/plugin-event-source/package.json +0 -0
  254. /package/obsidian/{Plugin → plugin}/plugin-settings-tab/package.json +0 -0
  255. /package/obsidian/{Queue → queue}/package.json +0 -0
  256. /package/obsidian/{React → react}/app-context/package.json +0 -0
  257. /package/obsidian/{React → react}/index/package.json +0 -0
  258. /package/obsidian/{React → react}/package.json +0 -0
  259. /package/obsidian/{Reference → reference}/package.json +0 -0
  260. /package/obsidian/{Validation → validation}/package.json +0 -0
  261. /package/obsidian/{Vault → vault}/package.json +0 -0
  262. /package/obsidian/{Workspace → workspace}/package.json +0 -0
  263. /package/{Transformers → transformers}/date-transformer/package.json +0 -0
  264. /package/{Transformers → transformers}/duration-transformer/package.json +0 -0
  265. /package/{Transformers → transformers}/group-transformer/package.json +0 -0
  266. /package/{Transformers → transformers}/index/package.json +0 -0
  267. /package/{Transformers → transformers}/map-transformer/package.json +0 -0
  268. /package/{Transformers → transformers}/package.json +0 -0
  269. /package/{Transformers → transformers}/set-transformer/package.json +0 -0
  270. /package/{Transformers → transformers}/skip-private-property-transformer/package.json +0 -0
  271. /package/{Transformers/Transformer → transformers/transformer}/package.json +0 -0
  272. /package/{Transformers → transformers}/two-way-map-transformer/package.json +0 -0
  273. /package/{Transformers → transformers}/typed-transformer/package.json +0 -0
@@ -128,16 +128,14 @@ __export(command_handler_component_exports, {
128
128
  CommandHandlerComponent: () => CommandHandlerComponent
129
129
  });
130
130
  module.exports = __toCommonJS(command_handler_component_exports);
131
+ var import_async = require('../../async.cjs');
132
+ var import_disposable = require('../../disposable.cjs');
131
133
  var import_component_ex = require('../components/component-ex.cjs');
132
134
  class CommandHandlerComponent extends import_component_ex.ComponentEx {
133
135
  /**
134
136
  * Provider for accessing the currently active file.
135
137
  */
136
138
  activeFileProvider;
137
- /**
138
- * The command handlers to register with Obsidian.
139
- */
140
- commandHandlers;
141
139
  /**
142
140
  * Registrar used to add and remove commands with Obsidian.
143
141
  */
@@ -157,33 +155,51 @@ class CommandHandlerComponent extends import_component_ex.ComponentEx {
157
155
  */
158
156
  constructor(params) {
159
157
  super();
160
- this.commandHandlers = params.commandHandlers;
161
158
  this.activeFileProvider = params.activeFileProvider;
162
159
  this.menuEventRegistrar = params.menuEventRegistrar;
163
160
  this.commandRegistrar = params.commandRegistrar;
164
161
  this.pluginName = params.pluginName;
165
162
  }
166
163
  /**
167
- * Registers the command with Obsidian and provides runtime context to the handler.
164
+ * Registers the given command handlers with Obsidian and provides each its runtime registration
165
+ * context. Each handler's command is added immediately; the returned {@link Disposable} removes the
166
+ * commands registered by this call when disposed. Any command still registered when the component
167
+ * unloads is removed automatically.
168
+ *
169
+ * @param commandHandlers - The command handlers to register.
170
+ * @returns A {@link Disposable} that unregisters the handlers passed to this call.
168
171
  */
169
- async onloadAsync() {
172
+ registerCommandHandlers(commandHandlers) {
170
173
  const context = {
171
174
  activeFileProvider: this.activeFileProvider,
172
175
  menuEventRegistrar: this.menuEventRegistrar,
173
176
  pluginName: this.pluginName
174
177
  };
175
- for (const commandHandler of this.commandHandlers) {
178
+ const disposables = [];
179
+ for (const commandHandler of commandHandlers) {
176
180
  const command = commandHandler.buildCommand();
181
+ const commandId = command.id;
177
182
  this.commandRegistrar.addCommand(command);
183
+ const disposable = new import_disposable.CallbackDisposable({
184
+ callback: () => {
185
+ this.commandRegistrar.removeCommand(commandId);
186
+ },
187
+ multipleDisposeBehavior: import_disposable.MultipleDisposeBehavior.Ignore
188
+ });
189
+ disposables.push(disposable);
178
190
  this.register(() => {
179
- this.commandRegistrar.removeCommand(command.id);
191
+ disposable.dispose();
180
192
  });
181
- await commandHandler.onRegistered(context);
193
+ (0, import_async.invokeAsyncSafely)(() => commandHandler.onRegistered(context));
182
194
  }
195
+ return new import_disposable.CombineDisposable({
196
+ disposables,
197
+ multipleDisposeBehavior: import_disposable.MultipleDisposeBehavior.Ignore
198
+ });
183
199
  }
184
200
  }
185
201
  // Annotate the CommonJS export names for ESM import in node:
186
202
  0 && (module.exports = {
187
203
  CommandHandlerComponent
188
204
  });
189
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IHdyYXBzIGEge0BsaW5rIENvbW1hbmRIYW5kbGVyfSBhbmQgbWFuYWdlcyBpdHMgcmVnaXN0cmF0aW9uIHdpdGggT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmRSZWdpc3RyYXIgfSBmcm9tICcuLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7IE1lbnVFdmVudFJlZ2lzdHJhciB9IGZyb20gJy4uL21lbnUtZXZlbnQtcmVnaXN0cmFyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZEhhbmRsZXIsXG4gIENvbW1hbmRIYW5kbGVyUmVnaXN0cmF0aW9uQ29udGV4dFxufSBmcm9tICcuL2NvbW1hbmQtaGFuZGxlci50cyc7XG5cbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb21wb25lbnQtZXgudHMnO1xuXG5pbnRlcmZhY2UgQ29tbWFuZEhhbmRsZXJDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIHJlYWRvbmx5IGFjdGl2ZUZpbGVQcm92aWRlcjogQWN0aXZlRmlsZVByb3ZpZGVyO1xuICByZWFkb25seSBjb21tYW5kSGFuZGxlcnM6IENvbW1hbmRIYW5kbGVyW107XG4gIHJlYWRvbmx5IGNvbW1hbmRSZWdpc3RyYXI6IENvbW1hbmRSZWdpc3RyYXI7XG4gIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV3JhcHMgYSB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9IGFuZCByZWdpc3RlcnMgaXQgd2l0aCBPYnNpZGlhbiBvbiBsb2FkLlxuICovXG5leHBvcnQgY2xhc3MgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIC8qKlxuICAgKiBQcm92aWRlciBmb3IgYWNjZXNzaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIGZpbGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIGhhbmRsZXJzIHRvIHJlZ2lzdGVyIHdpdGggT2JzaWRpYW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWFuZEhhbmRsZXJzOiBDb21tYW5kSGFuZGxlcltdO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RyYXIgdXNlZCB0byBhZGQgYW5kIHJlbW92ZSBjb21tYW5kcyB3aXRoIE9ic2lkaWFuLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbW1hbmRSZWdpc3RyYXI6IENvbW1hbmRSZWdpc3RyYXI7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhciBmb3IgbWVudSBldmVudCBoYW5kbGVycy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51RXZlbnRSZWdpc3RyYXI6IE1lbnVFdmVudFJlZ2lzdHJhcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpbiB0aGF0IG93bnMgdGhlIGNvbW1hbmRzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjb21tYW5kIGhhbmRsZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDb21tYW5kSGFuZGxlckNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNvbW1hbmRIYW5kbGVycyA9IHBhcmFtcy5jb21tYW5kSGFuZGxlcnM7XG4gICAgdGhpcy5hY3RpdmVGaWxlUHJvdmlkZXIgPSBwYXJhbXMuYWN0aXZlRmlsZVByb3ZpZGVyO1xuICAgIHRoaXMubWVudUV2ZW50UmVnaXN0cmFyID0gcGFyYW1zLm1lbnVFdmVudFJlZ2lzdHJhcjtcbiAgICB0aGlzLmNvbW1hbmRSZWdpc3RyYXIgPSBwYXJhbXMuY29tbWFuZFJlZ2lzdHJhcjtcbiAgICB0aGlzLnBsdWdpbk5hbWUgPSBwYXJhbXMucGx1Z2luTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGNvbW1hbmQgd2l0aCBPYnNpZGlhbiBhbmQgcHJvdmlkZXMgcnVudGltZSBjb250ZXh0IHRvIHRoZSBoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9ubG9hZEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IENvbW1hbmRIYW5kbGVyUmVnaXN0cmF0aW9uQ29udGV4dCA9IHtcbiAgICAgIGFjdGl2ZUZpbGVQcm92aWRlcjogdGhpcy5hY3RpdmVGaWxlUHJvdmlkZXIsXG4gICAgICBtZW51RXZlbnRSZWdpc3RyYXI6IHRoaXMubWVudUV2ZW50UmVnaXN0cmFyLFxuICAgICAgcGx1Z2luTmFtZTogdGhpcy5wbHVnaW5OYW1lXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgY29tbWFuZEhhbmRsZXIgb2YgdGhpcy5jb21tYW5kSGFuZGxlcnMpIHtcbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBjb21tYW5kSGFuZGxlci5idWlsZENvbW1hbmQoKTtcbiAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5hZGRDb21tYW5kKGNvbW1hbmQpO1xuICAgICAgdGhpcy5yZWdpc3RlcigoKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5yZW1vdmVDb21tYW5kKGNvbW1hbmQuaWQpO1xuICAgICAgfSk7XG4gICAgICBhd2FpdCBjb21tYW5kSGFuZGxlci5vblJlZ2lzdGVyZWQoY29udGV4dCk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQSwwQkFBNEI7QUFhckIsTUFBTSxnQ0FBZ0MsZ0NBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlwQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPWixZQUFZLFFBQWtEO0FBQ25FLFVBQU07QUFDTixTQUFLLGtCQUFrQixPQUFPO0FBQzlCLFNBQUsscUJBQXFCLE9BQU87QUFDakMsU0FBSyxxQkFBcUIsT0FBTztBQUNqQyxTQUFLLG1CQUFtQixPQUFPO0FBQy9CLFNBQUssYUFBYSxPQUFPO0FBQUEsRUFDM0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE1BQXNCLGNBQTZCO0FBQ2pELFVBQU0sVUFBNkM7QUFBQSxNQUNqRCxvQkFBb0IsS0FBSztBQUFBLE1BQ3pCLG9CQUFvQixLQUFLO0FBQUEsTUFDekIsWUFBWSxLQUFLO0FBQUEsSUFDbkI7QUFFQSxlQUFXLGtCQUFrQixLQUFLLGlCQUFpQjtBQUNqRCxZQUFNLFVBQVUsZUFBZSxhQUFhO0FBQzVDLFdBQUssaUJBQWlCLFdBQVcsT0FBTztBQUN4QyxXQUFLLFNBQVMsTUFBTTtBQUNsQixhQUFLLGlCQUFpQixjQUFjLFFBQVEsRUFBRTtBQUFBLE1BQ2hELENBQUM7QUFDRCxZQUFNLGVBQWUsYUFBYSxPQUFPO0FBQUEsSUFDM0M7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
205
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IHJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCB0aWVzIHRoZWlyIHJlbW92YWwgdG8gaXRzIGxpZmVjeWNsZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFjdGl2ZUZpbGVQcm92aWRlciB9IGZyb20gJy4uL2FjdGl2ZS1maWxlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgQ29tbWFuZFJlZ2lzdHJhciB9IGZyb20gJy4uL2NvbW1hbmQtcmVnaXN0cmFyLnRzJztcbmltcG9ydCB0eXBlIHsgTWVudUV2ZW50UmVnaXN0cmFyIH0gZnJvbSAnLi4vbWVudS1ldmVudC1yZWdpc3RyYXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kSGFuZGxlcixcbiAgQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0XG59IGZyb20gJy4vY29tbWFuZC1oYW5kbGVyLnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQge1xuICBDYWxsYmFja0Rpc3Bvc2FibGUsXG4gIENvbWJpbmVEaXNwb3NhYmxlLFxuICBNdWx0aXBsZURpc3Bvc2VCZWhhdmlvclxufSBmcm9tICcuLi8uLi9kaXNwb3NhYmxlLnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb21wb25lbnQtZXgudHMnO1xuXG5pbnRlcmZhY2UgQ29tbWFuZEhhbmRsZXJDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIHJlYWRvbmx5IGFjdGl2ZUZpbGVQcm92aWRlcjogQWN0aXZlRmlsZVByb3ZpZGVyO1xuICByZWFkb25seSBjb21tYW5kUmVnaXN0cmFyOiBDb21tYW5kUmVnaXN0cmFyO1xuICByZWFkb25seSBtZW51RXZlbnRSZWdpc3RyYXI6IE1lbnVFdmVudFJlZ2lzdHJhcjtcbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCBtYW5hZ2VzIHRoZWlyIGxpZmVjeWNsZS5cbiAqXG4gKiBDYWxsIHtAbGluayByZWdpc3RlckNvbW1hbmRIYW5kbGVyc30gdG8gcmVnaXN0ZXIgYSBiYXRjaCBvZiBoYW5kbGVycyBvbiBkZW1hbmQgKGFzIG1hbnkgdGltZXMgYXNcbiAqIG5lZWRlZCB3aGlsZSB0aGUgY29tcG9uZW50IGlzIGFsaXZlKTsgZGlzcG9zZSB0aGUgcmV0dXJuZWQge0BsaW5rIERpc3Bvc2FibGV9IHRvIHVucmVnaXN0ZXIgZXhhY3RseVxuICogdGhvc2UgaGFuZGxlcnMsIG9yIGxldCB0aGUgY29tcG9uZW50IHVubG9hZCB0byByZW1vdmUgZXZlcnkgY29tbWFuZCBzdGlsbCByZWdpc3RlcmVkIHRocm91Z2ggaXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21tYW5kSGFuZGxlckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFByb3ZpZGVyIGZvciBhY2Nlc3NpbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgZmlsZS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhY3RpdmVGaWxlUHJvdmlkZXI6IEFjdGl2ZUZpbGVQcm92aWRlcjtcblxuICAvKipcbiAgICogUmVnaXN0cmFyIHVzZWQgdG8gYWRkIGFuZCByZW1vdmUgY29tbWFuZHMgd2l0aCBPYnNpZGlhbi5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjb21tYW5kUmVnaXN0cmFyOiBDb21tYW5kUmVnaXN0cmFyO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RyYXIgZm9yIG1lbnUgZXZlbnQgaGFuZGxlcnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVudUV2ZW50UmVnaXN0cmFyOiBNZW51RXZlbnRSZWdpc3RyYXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBvd25zIHRoZSBjb21tYW5kcy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29tbWFuZCBoYW5kbGVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogQ29tbWFuZEhhbmRsZXJDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hY3RpdmVGaWxlUHJvdmlkZXIgPSBwYXJhbXMuYWN0aXZlRmlsZVByb3ZpZGVyO1xuICAgIHRoaXMubWVudUV2ZW50UmVnaXN0cmFyID0gcGFyYW1zLm1lbnVFdmVudFJlZ2lzdHJhcjtcbiAgICB0aGlzLmNvbW1hbmRSZWdpc3RyYXIgPSBwYXJhbXMuY29tbWFuZFJlZ2lzdHJhcjtcbiAgICB0aGlzLnBsdWdpbk5hbWUgPSBwYXJhbXMucGx1Z2luTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGdpdmVuIGNvbW1hbmQgaGFuZGxlcnMgd2l0aCBPYnNpZGlhbiBhbmQgcHJvdmlkZXMgZWFjaCBpdHMgcnVudGltZSByZWdpc3RyYXRpb25cbiAgICogY29udGV4dC4gRWFjaCBoYW5kbGVyJ3MgY29tbWFuZCBpcyBhZGRlZCBpbW1lZGlhdGVseTsgdGhlIHJldHVybmVkIHtAbGluayBEaXNwb3NhYmxlfSByZW1vdmVzIHRoZVxuICAgKiBjb21tYW5kcyByZWdpc3RlcmVkIGJ5IHRoaXMgY2FsbCB3aGVuIGRpc3Bvc2VkLiBBbnkgY29tbWFuZCBzdGlsbCByZWdpc3RlcmVkIHdoZW4gdGhlIGNvbXBvbmVudFxuICAgKiB1bmxvYWRzIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRIYW5kbGVycyAtIFRoZSBjb21tYW5kIGhhbmRsZXJzIHRvIHJlZ2lzdGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlfSB0aGF0IHVucmVnaXN0ZXJzIHRoZSBoYW5kbGVycyBwYXNzZWQgdG8gdGhpcyBjYWxsLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzKGNvbW1hbmRIYW5kbGVyczogQ29tbWFuZEhhbmRsZXJbXSk6IERpc3Bvc2FibGUge1xuICAgIGNvbnN0IGNvbnRleHQ6IENvbW1hbmRIYW5kbGVyUmVnaXN0cmF0aW9uQ29udGV4dCA9IHtcbiAgICAgIGFjdGl2ZUZpbGVQcm92aWRlcjogdGhpcy5hY3RpdmVGaWxlUHJvdmlkZXIsXG4gICAgICBtZW51RXZlbnRSZWdpc3RyYXI6IHRoaXMubWVudUV2ZW50UmVnaXN0cmFyLFxuICAgICAgcGx1Z2luTmFtZTogdGhpcy5wbHVnaW5OYW1lXG4gICAgfTtcblxuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbW1hbmRIYW5kbGVyIG9mIGNvbW1hbmRIYW5kbGVycykge1xuICAgICAgY29uc3QgY29tbWFuZCA9IGNvbW1hbmRIYW5kbGVyLmJ1aWxkQ29tbWFuZCgpO1xuICAgICAgLy8gQ2FwdHVyZSB0aGUgaWQgYmVmb3JlIHJlZ2lzdGVyaW5nLiBgUGx1Z2luLmFkZENvbW1hbmRgIG11dGF0ZXMgYGNvbW1hbmQuaWRgIChwcmVmaXhpbmcgaXQgd2l0aFxuICAgICAgLy8gYHRoaXMubWFuaWZlc3QuaWRgKSwgd2hpbGUgYFBsdWdpbi5yZW1vdmVDb21tYW5kYCByZS1wcmVmaXhlcyBcdTIwMTQgc28gcmVtb3ZhbCBuZWVkcyB0aGUgb3JpZ2luYWwgaWQuXG4gICAgICAvLyBSZWFkaW5nIGBjb21tYW5kLmlkYCBhZnRlciBgYWRkQ29tbWFuZGAgd291bGQgZG91YmxlLXByZWZpeCBpdCwgc28gdGhlIGNvbW1hbmQgaXMgbmV2ZXIgcmVtb3ZlZC5cbiAgICAgIGNvbnN0IGNvbW1hbmRJZCA9IGNvbW1hbmQuaWQ7XG4gICAgICB0aGlzLmNvbW1hbmRSZWdpc3RyYXIuYWRkQ29tbWFuZChjb21tYW5kKTtcbiAgICAgIGNvbnN0IGRpc3Bvc2FibGUgPSBuZXcgQ2FsbGJhY2tEaXNwb3NhYmxlKHtcbiAgICAgICAgY2FsbGJhY2s6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1hbmRSZWdpc3RyYXIucmVtb3ZlQ29tbWFuZChjb21tYW5kSWQpO1xuICAgICAgICB9LFxuICAgICAgICBtdWx0aXBsZURpc3Bvc2VCZWhhdmlvcjogTXVsdGlwbGVEaXNwb3NlQmVoYXZpb3IuSWdub3JlXG4gICAgICB9KTtcbiAgICAgIGRpc3Bvc2FibGVzLnB1c2goZGlzcG9zYWJsZSk7XG4gICAgICAvLyBUaWUgcmVtb3ZhbCB0byB0aGUgY29tcG9uZW50J3MgdW5sb2FkLCBzbyBhIGNvbW1hbmQgbmV2ZXIgb3V0bGl2ZXMgdGhlIGNvbXBvbmVudC5cbiAgICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgICBkaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gY29tbWFuZEhhbmRsZXIub25SZWdpc3RlcmVkKGNvbnRleHQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbWJpbmVEaXNwb3NhYmxlKHtcbiAgICAgIGRpc3Bvc2FibGVzLFxuICAgICAgbXVsdGlwbGVEaXNwb3NlQmVoYXZpb3I6IE11bHRpcGxlRGlzcG9zZUJlaGF2aW9yLklnbm9yZVxuICAgIH0pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQSxtQkFBa0M7QUFDbEMsd0JBSU87QUFDUCwwQkFBNEI7QUFnQnJCLE1BQU0sZ0NBQWdDLGdDQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJcEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPWixZQUFZLFFBQWtEO0FBQ25FLFVBQU07QUFDTixTQUFLLHFCQUFxQixPQUFPO0FBQ2pDLFNBQUsscUJBQXFCLE9BQU87QUFDakMsU0FBSyxtQkFBbUIsT0FBTztBQUMvQixTQUFLLGFBQWEsT0FBTztBQUFBLEVBQzNCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXTyx3QkFBd0IsaUJBQStDO0FBQzVFLFVBQU0sVUFBNkM7QUFBQSxNQUNqRCxvQkFBb0IsS0FBSztBQUFBLE1BQ3pCLG9CQUFvQixLQUFLO0FBQUEsTUFDekIsWUFBWSxLQUFLO0FBQUEsSUFDbkI7QUFFQSxVQUFNLGNBQTRCLENBQUM7QUFDbkMsZUFBVyxrQkFBa0IsaUJBQWlCO0FBQzVDLFlBQU0sVUFBVSxlQUFlLGFBQWE7QUFJNUMsWUFBTSxZQUFZLFFBQVE7QUFDMUIsV0FBSyxpQkFBaUIsV0FBVyxPQUFPO0FBQ3hDLFlBQU0sYUFBYSxJQUFJLHFDQUFtQjtBQUFBLFFBQ3hDLFVBQVUsTUFBWTtBQUNwQixlQUFLLGlCQUFpQixjQUFjLFNBQVM7QUFBQSxRQUMvQztBQUFBLFFBQ0EseUJBQXlCLDBDQUF3QjtBQUFBLE1BQ25ELENBQUM7QUFDRCxrQkFBWSxLQUFLLFVBQVU7QUFFM0IsV0FBSyxTQUFTLE1BQU07QUFDbEIsbUJBQVcsUUFBUTtBQUFBLE1BQ3JCLENBQUM7QUFDRCwwQ0FBa0IsTUFBTSxlQUFlLGFBQWEsT0FBTyxDQUFDO0FBQUEsSUFDOUQ7QUFFQSxXQUFPLElBQUksb0NBQWtCO0FBQUEsTUFDM0I7QUFBQSxNQUNBLHlCQUF5QiwwQ0FBd0I7QUFBQSxJQUNuRCxDQUFDO0FBQUEsRUFDSDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @file
4
4
  *
5
- * Component that wraps a {@link CommandHandler} and manages its registration with Obsidian.
5
+ * Component that registers {@link CommandHandler}s with Obsidian and ties their removal to its lifecycle.
6
6
  */
7
7
  import type { ActiveFileProvider } from '../active-file-provider.cjs';
8
8
  import type { CommandRegistrar } from '../command-registrar.cjs';
@@ -11,23 +11,22 @@ import type { CommandHandler } from './command-handler.cjs';
11
11
  import { ComponentEx } from '../components/component-ex.cjs';
12
12
  interface CommandHandlerComponentConstructorParams {
13
13
  readonly activeFileProvider: ActiveFileProvider;
14
- readonly commandHandlers: CommandHandler[];
15
14
  readonly commandRegistrar: CommandRegistrar;
16
15
  readonly menuEventRegistrar: MenuEventRegistrar;
17
16
  readonly pluginName: string;
18
17
  }
19
18
  /**
20
- * Wraps a {@link CommandHandler} and registers it with Obsidian on load.
19
+ * Registers {@link CommandHandler}s with Obsidian and manages their lifecycle.
20
+ *
21
+ * Call {@link registerCommandHandlers} to register a batch of handlers on demand (as many times as
22
+ * needed while the component is alive); dispose the returned {@link Disposable} to unregister exactly
23
+ * those handlers, or let the component unload to remove every command still registered through it.
21
24
  */
22
25
  export declare class CommandHandlerComponent extends ComponentEx {
23
26
  /**
24
27
  * Provider for accessing the currently active file.
25
28
  */
26
29
  protected readonly activeFileProvider: ActiveFileProvider;
27
- /**
28
- * The command handlers to register with Obsidian.
29
- */
30
- protected readonly commandHandlers: CommandHandler[];
31
30
  /**
32
31
  * Registrar used to add and remove commands with Obsidian.
33
32
  */
@@ -47,8 +46,14 @@ export declare class CommandHandlerComponent extends ComponentEx {
47
46
  */
48
47
  constructor(params: CommandHandlerComponentConstructorParams);
49
48
  /**
50
- * Registers the command with Obsidian and provides runtime context to the handler.
49
+ * Registers the given command handlers with Obsidian and provides each its runtime registration
50
+ * context. Each handler's command is added immediately; the returned {@link Disposable} removes the
51
+ * commands registered by this call when disposed. Any command still registered when the component
52
+ * unloads is removed automatically.
53
+ *
54
+ * @param commandHandlers - The command handlers to register.
55
+ * @returns A {@link Disposable} that unregisters the handlers passed to this call.
51
56
  */
52
- onloadAsync(): Promise<void>;
57
+ registerCommandHandlers(commandHandlers: CommandHandler[]): Disposable;
53
58
  }
54
59
  export {};
@@ -142,6 +142,7 @@ __export(command_handlers_exports, {
142
142
  "file-command-handler": () => file_command_handler,
143
143
  "folder-command-handler": () => folder_command_handler,
144
144
  "global-command-handler": () => global_command_handler,
145
+ "open-demo-vault-command-handler": () => open_demo_vault_command_handler,
145
146
  "open-settings-command-handler": () => open_settings_command_handler,
146
147
  "unlock-active-note-command-handler": () => unlock_active_note_command_handler
147
148
  });
@@ -153,6 +154,7 @@ var editor_command_handler = __toESM(__extractDefault(require('./editor-command-
153
154
  var file_command_handler = __toESM(__extractDefault(require('./file-command-handler.cjs')), 1);
154
155
  var folder_command_handler = __toESM(__extractDefault(require('./folder-command-handler.cjs')), 1);
155
156
  var global_command_handler = __toESM(__extractDefault(require('./global-command-handler.cjs')), 1);
157
+ var open_demo_vault_command_handler = __toESM(__extractDefault(require('./open-demo-vault-command-handler.cjs')), 1);
156
158
  var open_settings_command_handler = __toESM(__extractDefault(require('./open-settings-command-handler.cjs')), 1);
157
159
  var unlock_active_note_command_handler = __toESM(__extractDefault(require('./unlock-active-note-command-handler.cjs')), 1);
158
160
  // Annotate the CommonJS export names for ESM import in node:
@@ -164,7 +166,8 @@ var unlock_active_note_command_handler = __toESM(__extractDefault(require('./unl
164
166
  "file-command-handler": null,
165
167
  "folder-command-handler": null,
166
168
  "global-command-handler": null,
169
+ "open-demo-vault-command-handler": null,
167
170
  "open-settings-command-handler": null,
168
171
  "unlock-active-note-command-handler": null
169
172
  });
170
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXInIGZyb20gJy4vYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1hbmQtaGFuZGxlci1jb21wb25lbnQnIGZyb20gJy4vY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnY29tbWFuZC1oYW5kbGVyJyBmcm9tICcuL2NvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyAnZWRpdG9yLWNvbW1hbmQtaGFuZGxlcicgZnJvbSAnLi9lZGl0b3ItY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCAqIGFzICdmaWxlLWNvbW1hbmQtaGFuZGxlcicgZnJvbSAnLi9maWxlLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyAnZm9sZGVyLWNvbW1hbmQtaGFuZGxlcicgZnJvbSAnLi9mb2xkZXItY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCAqIGFzICdnbG9iYWwtY29tbWFuZC1oYW5kbGVyJyBmcm9tICcuL2dsb2JhbC1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0ICogYXMgJ29wZW4tc2V0dGluZ3MtY29tbWFuZC1oYW5kbGVyJyBmcm9tICcuL29wZW4tc2V0dGluZ3MtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCAqIGFzICd1bmxvY2stYWN0aXZlLW5vdGUtY29tbWFuZC1oYW5kbGVyJyBmcm9tICcuL3VubG9jay1hY3RpdmUtbm90ZS1jb21tYW5kLWhhbmRsZXIudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBLHlDQUFBQTtBQUFBLEVBQUEseUJBQUFDO0FBQUEsRUFBQSxtQ0FBQUM7QUFBQSxFQUFBLGdDQUFBQztBQUFBLEVBQUEsOEJBQUFDO0FBQUEsRUFBQSxnQ0FBQUM7QUFBQSxFQUFBLGdDQUFBQztBQUFBLEVBQUEsdUNBQUFDO0FBQUEsRUFBQSw0Q0FBQUM7QUFBQTtBQUFBO0FBRUEsSUFBQVIsZ0NBQWlEO0FBQ2pELElBQUFFLDRCQUE2QztBQUM3QyxJQUFBRCxrQkFBbUM7QUFDbkMsSUFBQUUseUJBQTBDO0FBQzFDLElBQUFDLHVCQUF3QztBQUN4QyxJQUFBQyx5QkFBMEM7QUFDMUMsSUFBQUMseUJBQTBDO0FBQzFDLElBQUFDLGdDQUFpRDtBQUNqRCxJQUFBQyxxQ0FBc0Q7IiwKICAibmFtZXMiOiBbImFic3RyYWN0LWZpbGUtY29tbWFuZC1oYW5kbGVyIiwgImNvbW1hbmQtaGFuZGxlciIsICJjb21tYW5kLWhhbmRsZXItY29tcG9uZW50IiwgImVkaXRvci1jb21tYW5kLWhhbmRsZXIiLCAiZmlsZS1jb21tYW5kLWhhbmRsZXIiLCAiZm9sZGVyLWNvbW1hbmQtaGFuZGxlciIsICJnbG9iYWwtY29tbWFuZC1oYW5kbGVyIiwgIm9wZW4tc2V0dGluZ3MtY29tbWFuZC1oYW5kbGVyIiwgInVubG9jay1hY3RpdmUtbm90ZS1jb21tYW5kLWhhbmRsZXIiXQp9Cg==
173
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXInIGZyb20gJy4vYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1hbmQtaGFuZGxlci1jb21wb25lbnQnIGZyb20gJy4vY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnY29tbWFuZC1oYW5kbGVyJyBmcm9tICcuL2NvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyAnZWRpdG9yLWNvbW1hbmQtaGFuZGxlcicgZnJvbSAnLi9lZGl0b3ItY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCAqIGFzICdmaWxlLWNvbW1hbmQtaGFuZGxlcicgZnJvbSAnLi9maWxlLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyAnZm9sZGVyLWNvbW1hbmQtaGFuZGxlcicgZnJvbSAnLi9mb2xkZXItY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCAqIGFzICdnbG9iYWwtY29tbWFuZC1oYW5kbGVyJyBmcm9tICcuL2dsb2JhbC1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0ICogYXMgJ29wZW4tZGVtby12YXVsdC1jb21tYW5kLWhhbmRsZXInIGZyb20gJy4vb3Blbi1kZW1vLXZhdWx0LWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyAnb3Blbi1zZXR0aW5ncy1jb21tYW5kLWhhbmRsZXInIGZyb20gJy4vb3Blbi1zZXR0aW5ncy1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0ICogYXMgJ3VubG9jay1hY3RpdmUtbm90ZS1jb21tYW5kLWhhbmRsZXInIGZyb20gJy4vdW5sb2NrLWFjdGl2ZS1ub3RlLWNvbW1hbmQtaGFuZGxlci50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUEseUNBQUFBO0FBQUEsRUFBQSx5QkFBQUM7QUFBQSxFQUFBLG1DQUFBQztBQUFBLEVBQUEsZ0NBQUFDO0FBQUEsRUFBQSw4QkFBQUM7QUFBQSxFQUFBLGdDQUFBQztBQUFBLEVBQUEsZ0NBQUFDO0FBQUEsRUFBQSx5Q0FBQUM7QUFBQSxFQUFBLHVDQUFBQztBQUFBLEVBQUEsNENBQUFDO0FBQUE7QUFBQTtBQUVBLElBQUFULGdDQUFpRDtBQUNqRCxJQUFBRSw0QkFBNkM7QUFDN0MsSUFBQUQsa0JBQW1DO0FBQ25DLElBQUFFLHlCQUEwQztBQUMxQyxJQUFBQyx1QkFBd0M7QUFDeEMsSUFBQUMseUJBQTBDO0FBQzFDLElBQUFDLHlCQUEwQztBQUMxQyxJQUFBQyxrQ0FBbUQ7QUFDbkQsSUFBQUMsZ0NBQWlEO0FBQ2pELElBQUFDLHFDQUFzRDsiLAogICJuYW1lcyI6IFsiYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIiLCAiY29tbWFuZC1oYW5kbGVyIiwgImNvbW1hbmQtaGFuZGxlci1jb21wb25lbnQiLCAiZWRpdG9yLWNvbW1hbmQtaGFuZGxlciIsICJmaWxlLWNvbW1hbmQtaGFuZGxlciIsICJmb2xkZXItY29tbWFuZC1oYW5kbGVyIiwgImdsb2JhbC1jb21tYW5kLWhhbmRsZXIiLCAib3Blbi1kZW1vLXZhdWx0LWNvbW1hbmQtaGFuZGxlciIsICJvcGVuLXNldHRpbmdzLWNvbW1hbmQtaGFuZGxlciIsICJ1bmxvY2stYWN0aXZlLW5vdGUtY29tbWFuZC1oYW5kbGVyIl0KfQo=
@@ -6,5 +6,6 @@ export * as 'editor-command-handler' from './editor-command-handler.cjs';
6
6
  export * as 'file-command-handler' from './file-command-handler.cjs';
7
7
  export * as 'folder-command-handler' from './folder-command-handler.cjs';
8
8
  export * as 'global-command-handler' from './global-command-handler.cjs';
9
+ export * as 'open-demo-vault-command-handler' from './open-demo-vault-command-handler.cjs';
9
10
  export * as 'open-settings-command-handler' from './open-settings-command-handler.cjs';
10
11
  export * as 'unlock-active-note-command-handler' from './unlock-active-note-command-handler.cjs';
@@ -0,0 +1,195 @@
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
+
6
+ (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ const globalThisRecord = globalThis;
9
+ globalThisRecord['__name'] ??= name;
10
+ const originalRequire = require;
11
+ if (originalRequire && !originalRequire.__isPatched) {
12
+ // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
13
+ require = Object.assign(
14
+ (id) => requirePatched(id),
15
+ originalRequire,
16
+ {
17
+ __isPatched: true
18
+ }
19
+ );
20
+ }
21
+
22
+ const newFuncs = {
23
+ __extractDefault() {
24
+ return extractDefault;
25
+ },
26
+ process() {
27
+ const browserProcess = {
28
+ browser: true,
29
+ cwd() {
30
+ return '/';
31
+ },
32
+ env: {},
33
+ platform: 'android'
34
+ };
35
+ return browserProcess;
36
+ }
37
+ };
38
+
39
+ for (const key of Object.keys(newFuncs)) {
40
+ globalThisRecord[key] ??= newFuncs[key]?.();
41
+ }
42
+
43
+ function name(obj) {
44
+ return obj;
45
+ }
46
+
47
+ function extractDefault(module) {
48
+ return module && module.__esModule && 'default' in module ? module.default : module;
49
+ }
50
+
51
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
+ 'obsidian',
53
+ '@codemirror/autocomplete',
54
+ '@codemirror/collab',
55
+ '@codemirror/commands',
56
+ '@codemirror/language',
57
+ '@codemirror/lint',
58
+ '@codemirror/search',
59
+ '@codemirror/state',
60
+ '@codemirror/text',
61
+ '@codemirror/view',
62
+ '@lezer/common',
63
+ '@lezer/lr',
64
+ '@lezer/highlight'];
65
+
66
+
67
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
68
+ '@codemirror/closebrackets',
69
+ '@codemirror/comment',
70
+ '@codemirror/fold',
71
+ '@codemirror/gutter',
72
+ '@codemirror/highlight',
73
+ '@codemirror/history',
74
+ '@codemirror/matchbrackets',
75
+ '@codemirror/panel',
76
+ '@codemirror/rangeset',
77
+ '@codemirror/rectangular-selection',
78
+ '@codemirror/stream-parser',
79
+ '@codemirror/tooltip'];
80
+
81
+
82
+ function requirePatched(id) {
83
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
84
+ return originalRequire?.(id);
85
+ }
86
+
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
89
+ if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
91
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
+ return globalThis.process;
94
+ }
95
+ } else {
96
+ const module = originalRequire?.(id);
97
+ if (module) {
98
+ return extractDefault(module);
99
+ }
100
+ }
101
+
102
+ // eslint-disable-next-line no-console -- Valid usage.
103
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
104
+ return {};
105
+ }
106
+ })();
107
+
108
+ "use strict";
109
+ var __create = Object.create;
110
+ var __defProp = Object.defineProperty;
111
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
112
+ var __getOwnPropNames = Object.getOwnPropertyNames;
113
+ var __getProtoOf = Object.getPrototypeOf;
114
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
115
+ var __export = (target, all) => {
116
+ for (var name in all)
117
+ __defProp(target, name, { get: all[name], enumerable: true });
118
+ };
119
+ var __copyProps = (to, from, except, desc) => {
120
+ if (from && typeof from === "object" || typeof from === "function") {
121
+ for (let key of __getOwnPropNames(from))
122
+ if (!__hasOwnProp.call(to, key) && key !== except)
123
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
124
+ }
125
+ return to;
126
+ };
127
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
128
+ // If the importer is in node compatibility mode or this is not an ESM
129
+ // file that has been converted to a CommonJS file using a Babel-
130
+ // compatible transform (i.e. "__esModule" has not been set), then set
131
+ // "default" to the CommonJS "module.exports" for node compatibility.
132
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
133
+ mod
134
+ ));
135
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
136
+ var open_demo_vault_command_handler_exports = {};
137
+ __export(open_demo_vault_command_handler_exports, {
138
+ OpenDemoVaultCommandHandler: () => OpenDemoVaultCommandHandler
139
+ });
140
+ module.exports = __toCommonJS(open_demo_vault_command_handler_exports);
141
+ var import_obsidian = require('obsidian');
142
+ var import_global_command_handler = require('./global-command-handler.cjs');
143
+ class OpenDemoVaultCommandHandler extends import_global_command_handler.GlobalCommandHandler {
144
+ /**
145
+ * The Obsidian app instance.
146
+ */
147
+ app;
148
+ /**
149
+ * The manifest of the plugin whose demo vault the command opens.
150
+ */
151
+ manifest;
152
+ /**
153
+ * The notice component used to report problems while opening the demo vault.
154
+ */
155
+ pluginNoticeComponent;
156
+ /**
157
+ * Constructs a new instance.
158
+ *
159
+ * @param params - Constructor parameters.
160
+ */
161
+ constructor(params) {
162
+ super({
163
+ icon: "download",
164
+ id: "open-demo-vault",
165
+ name: "Open demo vault"
166
+ });
167
+ this.app = params.app;
168
+ this.manifest = params.manifest;
169
+ this.pluginNoticeComponent = params.pluginNoticeComponent;
170
+ }
171
+ /**
172
+ * Executes the command, opening the plugin's demo vault.
173
+ */
174
+ async execute() {
175
+ const { openDemoVault } = await import("../desktop-demo-vault-opener.ts");
176
+ await openDemoVault({
177
+ app: this.app,
178
+ manifest: this.manifest,
179
+ pluginNoticeComponent: this.pluginNoticeComponent
180
+ });
181
+ }
182
+ /**
183
+ * Checks whether the command can currently execute: only on desktop.
184
+ *
185
+ * @returns Whether the app is running on desktop.
186
+ */
187
+ canExecute() {
188
+ return import_obsidian.Platform.isDesktopApp;
189
+ }
190
+ }
191
+ // Annotate the CommonJS export names for ESM import in node:
192
+ 0 && (module.exports = {
193
+ OpenDemoVaultCommandHandler
194
+ });
195
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvb3Blbi1kZW1vLXZhdWx0LWNvbW1hbmQtaGFuZGxlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhhbmRsZXMgdGhlIFwiT3BlbiBkZW1vIHZhdWx0XCIgY29tbWFuZC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgUGx1Z2luTWFuaWZlc3Rcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW5Ob3RpY2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHsgR2xvYmFsQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL2dsb2JhbC1jb21tYW5kLWhhbmRsZXIudHMnO1xuXG4vKipcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBPcGVuRGVtb1ZhdWx0Q29tbWFuZEhhbmRsZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5EZW1vVmF1bHRDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIG1hbmlmZXN0IG9mIHRoZSBwbHVnaW4gd2hvc2UgZGVtbyB2YXVsdCB0aGUgY29tbWFuZCBvcGVucy5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmlmZXN0OiBQbHVnaW5NYW5pZmVzdDtcblxuICAvKipcbiAgICogVGhlIG5vdGljZSBjb21wb25lbnQgdXNlZCB0byByZXBvcnQgcHJvYmxlbXMgd2hpbGUgb3BlbmluZyB0aGUgZGVtbyB2YXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIEEgY29tbWFuZCBoYW5kbGVyIHRoYXQgZG93bmxvYWRzIGFuZCBvcGVucyB0aGUgcGx1Z2luJ3Mgc2hpcHBlZCBkZW1vIHZhdWx0IGluIGEgbmV3IHdpbmRvdy4gT25seVxuICogYXZhaWxhYmxlIG9uIGRlc2t0b3AgXHUyMDE0IHtAbGluayBjYW5FeGVjdXRlfSByZXR1cm5zIGBmYWxzZWAgb24gbW9iaWxlLCBzbyB0aGUgY29tbWFuZCBpcyBoaWRkZW4gdGhlcmVcbiAqIChubyBtb2JpbGUgbm90aWNlKS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBzdGF5cyBjcm9zcy1wbGF0Zm9ybS1sb2FkYWJsZSBzbyBhIHBsdWdpbiBjYW4gcmVnaXN0ZXIgaXQgZGlyZWN0bHkgd2l0aG91dCBhIHBsYXRmb3JtXG4gKiBndWFyZDogdGhlIGRlc2t0b3Atb25seSBvcGVuZXIgKHdoaWNoIHN0YXRpY2FsbHkgaW1wb3J0cyBOb2RlIGJ1aWx0aW5zKSBpcyBsb2FkZWQgdmlhIGEgZHluYW1pY1xuICogYGltcG9ydCgpYCBpbnNpZGUge0BsaW5rIGV4ZWN1dGV9LCB3aGljaCBvbmx5IGV2ZXIgcnVucyBvbiBkZXNrdG9wLlxuICovXG5leHBvcnQgY2xhc3MgT3BlbkRlbW9WYXVsdENvbW1hbmRIYW5kbGVyIGV4dGVuZHMgR2xvYmFsQ29tbWFuZEhhbmRsZXIge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIG1hbmlmZXN0IG9mIHRoZSBwbHVnaW4gd2hvc2UgZGVtbyB2YXVsdCB0aGUgY29tbWFuZCBvcGVucy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtYW5pZmVzdDogUGx1Z2luTWFuaWZlc3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBub3RpY2UgY29tcG9uZW50IHVzZWQgdG8gcmVwb3J0IHByb2JsZW1zIHdoaWxlIG9wZW5pbmcgdGhlIGRlbW8gdmF1bHQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBDb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogT3BlbkRlbW9WYXVsdENvbW1hbmRIYW5kbGVyQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcih7XG4gICAgICBpY29uOiAnZG93bmxvYWQnLFxuICAgICAgaWQ6ICdvcGVuLWRlbW8tdmF1bHQnLFxuICAgICAgbmFtZTogJ09wZW4gZGVtbyB2YXVsdCdcbiAgICB9KTtcblxuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLm1hbmlmZXN0ID0gcGFyYW1zLm1hbmlmZXN0O1xuICAgIHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50ID0gcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZCwgb3BlbmluZyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBleGVjdXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIENvbmRpdGlvbmFsIGltcG9ydCBvZiB0aGUgZGVza3RvcC1vbmx5IG9wZW5lcjsgdGhpcyBydW5zIG9ubHkgb24gZGVza3RvcCAoZ2F0ZWQgYnkgYGNhbkV4ZWN1dGVgKSwga2VlcGluZyBpdHMgc3RhdGljIE5vZGUtYnVpbHRpbiBpbXBvcnRzIG9mZiB0aGUgbW9iaWxlIGxvYWQgcGF0aC5cbiAgICBjb25zdCB7IG9wZW5EZW1vVmF1bHQgfSA9IGF3YWl0IGltcG9ydCgnLi4vZGVza3RvcC1kZW1vLXZhdWx0LW9wZW5lci50cycpO1xuICAgIGF3YWl0IG9wZW5EZW1vVmF1bHQoe1xuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIG1hbmlmZXN0OiB0aGlzLm1hbmlmZXN0LFxuICAgICAgcGx1Z2luTm90aWNlQ29tcG9uZW50OiB0aGlzLnBsdWdpbk5vdGljZUNvbXBvbmVudFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIGNhbiBjdXJyZW50bHkgZXhlY3V0ZTogb25seSBvbiBkZXNrdG9wLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBhcHAgaXMgcnVubmluZyBvbiBkZXNrdG9wLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBsYXRmb3JtLmlzRGVza3RvcEFwcDtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLHNCQUF5QjtBQUl6QixvQ0FBcUM7QUErQjlCLE1BQU0sb0NBQW9DLG1EQUFxQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWpEO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPWixZQUFZLFFBQXNEO0FBQ3ZFLFVBQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLElBQUk7QUFBQSxNQUNKLE1BQU07QUFBQSxJQUNSLENBQUM7QUFFRCxTQUFLLE1BQU0sT0FBTztBQUNsQixTQUFLLFdBQVcsT0FBTztBQUN2QixTQUFLLHdCQUF3QixPQUFPO0FBQUEsRUFDdEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE1BQXNCLFVBQXlCO0FBRTdDLFVBQU0sRUFBRSxjQUFjLElBQUksTUFBTSxPQUFPLGlDQUFpQztBQUN4RSxVQUFNLGNBQWM7QUFBQSxNQUNsQixLQUFLLEtBQUs7QUFBQSxNQUNWLFVBQVUsS0FBSztBQUFBLE1BQ2YsdUJBQXVCLEtBQUs7QUFBQSxJQUM5QixDQUFDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9tQixhQUFzQjtBQUN2QyxXQUFPLHlCQUFTO0FBQUEsRUFDbEI7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,65 @@
1
+ /// <reference path="../../library.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Handles the "Open demo vault" command.
6
+ */
7
+ import type { App, PluginManifest } from 'obsidian' with { 'resolution-mode': 'import' };
8
+ import type { PluginNoticeComponent } from '../components/plugin-notice-component.cjs';
9
+ import { GlobalCommandHandler } from './global-command-handler.cjs';
10
+ /**
11
+ * Constructor parameters for {@link OpenDemoVaultCommandHandler}.
12
+ */
13
+ export interface OpenDemoVaultCommandHandlerConstructorParams {
14
+ /**
15
+ * The Obsidian app instance.
16
+ */
17
+ readonly app: App;
18
+ /**
19
+ * The manifest of the plugin whose demo vault the command opens.
20
+ */
21
+ readonly manifest: PluginManifest;
22
+ /**
23
+ * The notice component used to report problems while opening the demo vault.
24
+ */
25
+ readonly pluginNoticeComponent: PluginNoticeComponent;
26
+ }
27
+ /**
28
+ * A command handler that downloads and opens the plugin's shipped demo vault in a new window. Only
29
+ * available on desktop — {@link canExecute} returns `false` on mobile, so the command is hidden there
30
+ * (no mobile notice).
31
+ *
32
+ * This module stays cross-platform-loadable so a plugin can register it directly without a platform
33
+ * guard: the desktop-only opener (which statically imports Node builtins) is loaded via a dynamic
34
+ * `import()` inside {@link execute}, which only ever runs on desktop.
35
+ */
36
+ export declare class OpenDemoVaultCommandHandler extends GlobalCommandHandler {
37
+ /**
38
+ * The Obsidian app instance.
39
+ */
40
+ protected readonly app: App;
41
+ /**
42
+ * The manifest of the plugin whose demo vault the command opens.
43
+ */
44
+ protected readonly manifest: PluginManifest;
45
+ /**
46
+ * The notice component used to report problems while opening the demo vault.
47
+ */
48
+ protected readonly pluginNoticeComponent: PluginNoticeComponent;
49
+ /**
50
+ * Constructs a new instance.
51
+ *
52
+ * @param params - Constructor parameters.
53
+ */
54
+ constructor(params: OpenDemoVaultCommandHandlerConstructorParams);
55
+ /**
56
+ * Executes the command, opening the plugin's demo vault.
57
+ */
58
+ execute(): Promise<void>;
59
+ /**
60
+ * Checks whether the command can currently execute: only on desktop.
61
+ *
62
+ * @returns Whether the app is running on desktop.
63
+ */
64
+ protected canExecute(): boolean;
65
+ }
@@ -0,0 +1,156 @@
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
+
6
+ (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ const globalThisRecord = globalThis;
9
+ globalThisRecord['__name'] ??= name;
10
+ const originalRequire = require;
11
+ if (originalRequire && !originalRequire.__isPatched) {
12
+ // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
13
+ require = Object.assign(
14
+ (id) => requirePatched(id),
15
+ originalRequire,
16
+ {
17
+ __isPatched: true
18
+ }
19
+ );
20
+ }
21
+
22
+ const newFuncs = {
23
+ __extractDefault() {
24
+ return extractDefault;
25
+ },
26
+ process() {
27
+ const browserProcess = {
28
+ browser: true,
29
+ cwd() {
30
+ return '/';
31
+ },
32
+ env: {},
33
+ platform: 'android'
34
+ };
35
+ return browserProcess;
36
+ }
37
+ };
38
+
39
+ for (const key of Object.keys(newFuncs)) {
40
+ globalThisRecord[key] ??= newFuncs[key]?.();
41
+ }
42
+
43
+ function name(obj) {
44
+ return obj;
45
+ }
46
+
47
+ function extractDefault(module) {
48
+ return module && module.__esModule && 'default' in module ? module.default : module;
49
+ }
50
+
51
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
+ 'obsidian',
53
+ '@codemirror/autocomplete',
54
+ '@codemirror/collab',
55
+ '@codemirror/commands',
56
+ '@codemirror/language',
57
+ '@codemirror/lint',
58
+ '@codemirror/search',
59
+ '@codemirror/state',
60
+ '@codemirror/text',
61
+ '@codemirror/view',
62
+ '@lezer/common',
63
+ '@lezer/lr',
64
+ '@lezer/highlight'];
65
+
66
+
67
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
68
+ '@codemirror/closebrackets',
69
+ '@codemirror/comment',
70
+ '@codemirror/fold',
71
+ '@codemirror/gutter',
72
+ '@codemirror/highlight',
73
+ '@codemirror/history',
74
+ '@codemirror/matchbrackets',
75
+ '@codemirror/panel',
76
+ '@codemirror/rangeset',
77
+ '@codemirror/rectangular-selection',
78
+ '@codemirror/stream-parser',
79
+ '@codemirror/tooltip'];
80
+
81
+
82
+ function requirePatched(id) {
83
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
84
+ return originalRequire?.(id);
85
+ }
86
+
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
89
+ if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
91
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
+ return globalThis.process;
94
+ }
95
+ } else {
96
+ const module = originalRequire?.(id);
97
+ if (module) {
98
+ return extractDefault(module);
99
+ }
100
+ }
101
+
102
+ // eslint-disable-next-line no-console -- Valid usage.
103
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
104
+ return {};
105
+ }
106
+ })();
107
+
108
+ "use strict";
109
+ var __defProp = Object.defineProperty;
110
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
111
+ var __getOwnPropNames = Object.getOwnPropertyNames;
112
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
113
+ var __export = (target, all) => {
114
+ for (var name in all)
115
+ __defProp(target, name, { get: all[name], enumerable: true });
116
+ };
117
+ var __copyProps = (to, from, except, desc) => {
118
+ if (from && typeof from === "object" || typeof from === "function") {
119
+ for (let key of __getOwnPropNames(from))
120
+ if (!__hasOwnProp.call(to, key) && key !== except)
121
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
122
+ }
123
+ return to;
124
+ };
125
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
126
+ var community_plugins_exports = {};
127
+ __export(community_plugins_exports, {
128
+ getCommunityPluginRepo: () => getCommunityPluginRepo
129
+ });
130
+ module.exports = __toCommonJS(community_plugins_exports);
131
+ var import_obsidian = require('obsidian');
132
+ var import_obsidian_dev_utils_state = require('../obsidian-dev-utils-state.cjs');
133
+ const COMMUNITY_PLUGINS_STATE_KEY = "communityPluginEntriesPromise";
134
+ const COMMUNITY_PLUGINS_URL = "https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-plugins.json";
135
+ async function getCommunityPluginRepo(pluginId) {
136
+ const cache = (0, import_obsidian_dev_utils_state.getObsidianDevUtilsState)(COMMUNITY_PLUGINS_STATE_KEY, null);
137
+ cache.value ??= fetchCommunityPluginEntries();
138
+ let entries;
139
+ try {
140
+ entries = await cache.value;
141
+ } catch (error) {
142
+ cache.value = null;
143
+ throw error;
144
+ }
145
+ const entry = entries.find((candidate) => candidate.id === pluginId);
146
+ return entry?.repo ?? null;
147
+ }
148
+ async function fetchCommunityPluginEntries() {
149
+ const response = await (0, import_obsidian.requestUrl)(COMMUNITY_PLUGINS_URL);
150
+ return response.json;
151
+ }
152
+ // Annotate the CommonJS export names for ESM import in node:
153
+ 0 && (module.exports = {
154
+ getCommunityPluginRepo
155
+ });
156
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW11bml0eS1wbHVnaW5zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmVzb2x2ZXMgYSBjb21tdW5pdHkgcGx1Z2luJ3MgR2l0SHViIHJlcG9zaXRvcnkgZnJvbSBPYnNpZGlhbidzIHB1YmxpYyBwbHVnaW4gcmVnaXN0cnkuXG4gKlxuICogT2JzaWRpYW4ncyBgY29tbXVuaXR5LXBsdWdpbnMuanNvbmAgaXMgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlIHRoYXQgbWFwcyBhIHBsdWdpbiBgaWRgIHRvIGl0c1xuICogYG93bmVyL25hbWVgIEdpdEh1YiByZXBvc2l0b3J5IFx1MjAxNCB0aGUgcGx1Z2luIG1hbmlmZXN0IGl0c2VsZiBjYXJyaWVzIG5vIHJlcG9zaXRvcnkuIFRoaXMgaXMgdXNlZCB0b1xuICogbG9jYXRlIGEgcGx1Z2luJ3MgR2l0SHViIHJlbGVhc2VzIChlLmcuIHRvIGRvd25sb2FkIGl0cyBzaGlwcGVkIGRlbW8tdmF1bHQgYXJjaGl2ZSkuXG4gKi9cblxuaW1wb3J0IHsgcmVxdWVzdFVybCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcblxuLyoqXG4gKiBBIHNpbmdsZSBlbnRyeSBpbiBPYnNpZGlhbidzIGBjb21tdW5pdHktcGx1Z2lucy5qc29uYCByZWdpc3RyeS5cbiAqL1xuaW50ZXJmYWNlIENvbW11bml0eVBsdWdpbkVudHJ5IHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gYXV0aG9yLlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZGVzY3JpcHRpb24uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGlkLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiBkaXNwbGF5IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4ncyBgb3duZXIvbmFtZWAgR2l0SHViIHJlcG9zaXRvcnkuXG4gICAqL1xuICByZWFkb25seSByZXBvOiBzdHJpbmc7XG59XG5cbmNvbnN0IENPTU1VTklUWV9QTFVHSU5TX1NUQVRFX0tFWSA9ICdjb21tdW5pdHlQbHVnaW5FbnRyaWVzUHJvbWlzZSc7XG5jb25zdCBDT01NVU5JVFlfUExVR0lOU19VUkwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29ic2lkaWFubWQvb2JzaWRpYW4tcmVsZWFzZXMvSEVBRC9jb21tdW5pdHktcGx1Z2lucy5qc29uJztcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgYG93bmVyL25hbWVgIEdpdEh1YiByZXBvc2l0b3J5IG9mIGEgY29tbXVuaXR5IHBsdWdpbiBmcm9tIE9ic2lkaWFuJ3MgcHVibGljXG4gKiBgY29tbXVuaXR5LXBsdWdpbnMuanNvbmAgcmVnaXN0cnkuXG4gKlxuICogVGhlIHJlZ2lzdHJ5IGlzIGZldGNoZWQgb25jZSBhbmQgY2FjaGVkIG9uIHRoZSBzaGFyZWQgcGx1Z2luIHN0YXRlIGZvciBzdWJzZXF1ZW50IGNhbGxzOyBhIGZhaWxlZFxuICogZmV0Y2ggaXMgbm90IGNhY2hlZCwgc28gYSBsYXRlciBjYWxsIHJldHJpZXMuXG4gKlxuICogQHBhcmFtIHBsdWdpbklkIC0gVGhlIHBsdWdpbiBpZCB0byBsb29rIHVwLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBwbHVnaW4ncyBgb3duZXIvbmFtZWAgcmVwb3NpdG9yeSwgb3IgYG51bGxgIGlmIHRoZVxuICogcGx1Z2luIGlzIG5vdCBsaXN0ZWQgaW4gdGhlIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29tbXVuaXR5UGx1Z2luUmVwbyhwbHVnaW5JZDogc3RyaW5nKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IGNhY2hlID0gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlPG51bGwgfCBQcm9taXNlPENvbW11bml0eVBsdWdpbkVudHJ5W10+PihDT01NVU5JVFlfUExVR0lOU19TVEFURV9LRVksIG51bGwpO1xuICBjYWNoZS52YWx1ZSA/Pz0gZmV0Y2hDb21tdW5pdHlQbHVnaW5FbnRyaWVzKCk7XG5cbiAgbGV0IGVudHJpZXM6IENvbW11bml0eVBsdWdpbkVudHJ5W107XG4gIHRyeSB7XG4gICAgZW50cmllcyA9IGF3YWl0IGNhY2hlLnZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNhY2hlLnZhbHVlID0gbnVsbDtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5ID0gZW50cmllcy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5pZCA9PT0gcGx1Z2luSWQpO1xuICByZXR1cm4gZW50cnk/LnJlcG8gPz8gbnVsbDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hDb21tdW5pdHlQbHVnaW5FbnRyaWVzKCk6IFByb21pc2U8Q29tbXVuaXR5UGx1Z2luRW50cnlbXT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmwoQ09NTVVOSVRZX1BMVUdJTlNfVVJMKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24gYXMgQ29tbXVuaXR5UGx1Z2luRW50cnlbXTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBLHNCQUEyQjtBQUUzQixzQ0FBeUM7QUFnQ3pDLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sd0JBQXdCO0FBYTlCLGVBQXNCLHVCQUF1QixVQUEwQztBQUNyRixRQUFNLFlBQVEsMERBQWlFLDZCQUE2QixJQUFJO0FBQ2hILFFBQU0sVUFBVSw0QkFBNEI7QUFFNUMsTUFBSTtBQUNKLE1BQUk7QUFDRixjQUFVLE1BQU0sTUFBTTtBQUFBLEVBQ3hCLFNBQVMsT0FBTztBQUNkLFVBQU0sUUFBUTtBQUNkLFVBQU07QUFBQSxFQUNSO0FBRUEsUUFBTSxRQUFRLFFBQVEsS0FBSyxDQUFDLGNBQWMsVUFBVSxPQUFPLFFBQVE7QUFDbkUsU0FBTyxPQUFPLFFBQVE7QUFDeEI7QUFFQSxlQUFlLDhCQUErRDtBQUM1RSxRQUFNLFdBQVcsVUFBTSw0QkFBVyxxQkFBcUI7QUFDdkQsU0FBTyxTQUFTO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,22 @@
1
+ /// <reference path="../library.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Resolves a community plugin's GitHub repository from Obsidian's public plugin registry.
6
+ *
7
+ * Obsidian's `community-plugins.json` is the authoritative source that maps a plugin `id` to its
8
+ * `owner/name` GitHub repository — the plugin manifest itself carries no repository. This is used to
9
+ * locate a plugin's GitHub releases (e.g. to download its shipped demo-vault archive).
10
+ */
11
+ /**
12
+ * Resolves the `owner/name` GitHub repository of a community plugin from Obsidian's public
13
+ * `community-plugins.json` registry.
14
+ *
15
+ * The registry is fetched once and cached on the shared plugin state for subsequent calls; a failed
16
+ * fetch is not cached, so a later call retries.
17
+ *
18
+ * @param pluginId - The plugin id to look up.
19
+ * @returns A {@link Promise} resolving to the plugin's `owner/name` repository, or `null` if the
20
+ * plugin is not listed in the registry.
21
+ */
22
+ export declare function getCommunityPluginRepo(pluginId: string): Promise<null | string>;