obsidian-dev-utils 57.0.1 → 58.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/lib/cjs/abort-controller.cjs +5 -5
  3. package/dist/lib/cjs/array.cjs +3 -3
  4. package/dist/lib/cjs/async-events.cjs +6 -6
  5. package/dist/lib/cjs/async.cjs +6 -6
  6. package/dist/lib/cjs/blob.cjs +3 -3
  7. package/dist/lib/cjs/codemirror/index.cjs +3 -3
  8. package/dist/lib/cjs/codemirror/state-field-spec.cjs +3 -3
  9. package/dist/lib/cjs/css-class.cjs +3 -3
  10. package/dist/lib/cjs/debug-controller.cjs +3 -3
  11. package/dist/lib/cjs/debug.cjs +3 -3
  12. package/dist/lib/cjs/enum.cjs +3 -3
  13. package/dist/lib/cjs/error.cjs +4 -4
  14. package/dist/lib/cjs/function.cjs +3 -3
  15. package/dist/lib/cjs/html-element.cjs +5 -5
  16. package/dist/lib/cjs/index.cjs +3 -3
  17. package/dist/lib/cjs/library.cjs +4 -4
  18. package/dist/lib/cjs/object-utils.cjs +3 -3
  19. package/dist/lib/cjs/obsidian/app.cjs +4 -4
  20. package/dist/lib/cjs/obsidian/async-with-notice.cjs +7 -7
  21. package/dist/lib/cjs/obsidian/attachment-path.cjs +3 -3
  22. package/dist/lib/cjs/obsidian/backlink.cjs +3 -3
  23. package/dist/lib/cjs/obsidian/callout.cjs +3 -3
  24. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +3 -3
  25. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +3 -3
  26. package/dist/lib/cjs/obsidian/command-handlers/app-active-file-provider.cjs +3 -3
  27. package/dist/lib/cjs/obsidian/command-handlers/app-menu-event-registrar.cjs +3 -3
  28. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +3 -3
  29. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +3 -3
  30. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +3 -3
  31. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +3 -3
  32. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +3 -3
  33. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +3 -3
  34. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +3 -3
  35. package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +3 -3
  36. package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +3 -3
  37. package/dist/lib/cjs/obsidian/components/async-component.cjs +31 -14
  38. package/dist/lib/cjs/obsidian/components/async-component.d.cts +14 -0
  39. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +3 -3
  40. package/dist/lib/cjs/obsidian/components/index.cjs +3 -3
  41. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +3 -3
  42. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +5 -5
  43. package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +3 -3
  44. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +3 -3
  45. package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +3 -3
  46. package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +3 -3
  47. package/dist/lib/cjs/obsidian/components/setting-components/index.cjs +3 -3
  48. package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +3 -3
  49. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +3 -3
  50. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +3 -3
  51. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +3 -3
  52. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +3 -3
  53. package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +3 -3
  54. package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +3 -3
  55. package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +3 -3
  56. package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +3 -3
  57. package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +3 -3
  58. package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +3 -3
  59. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +3 -3
  60. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +3 -3
  61. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +3 -3
  62. package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +3 -3
  63. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +3 -3
  64. package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +3 -3
  65. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +5 -5
  66. package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +3 -3
  67. package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +3 -3
  68. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +3 -3
  69. package/dist/lib/cjs/obsidian/constructors/index.cjs +3 -3
  70. package/dist/lib/cjs/obsidian/dataview-link.cjs +3 -3
  71. package/dist/lib/cjs/obsidian/dataview.cjs +3 -3
  72. package/dist/lib/cjs/obsidian/editor.cjs +3 -3
  73. package/dist/lib/cjs/obsidian/file-change.cjs +3 -3
  74. package/dist/lib/cjs/obsidian/file-manager.cjs +3 -3
  75. package/dist/lib/cjs/obsidian/file-system.cjs +3 -3
  76. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +3 -3
  77. package/dist/lib/cjs/obsidian/frontmatter.cjs +3 -3
  78. package/dist/lib/cjs/obsidian/i18n/custom-type-options.cjs +3 -3
  79. package/dist/lib/cjs/obsidian/i18n/default-translations.cjs +3 -3
  80. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +3 -3
  81. package/dist/lib/cjs/obsidian/i18n/index.cjs +3 -3
  82. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +3 -3
  83. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +3 -3
  84. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +3 -3
  85. package/dist/lib/cjs/obsidian/index.cjs +3 -3
  86. package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +3 -3
  87. package/dist/lib/cjs/obsidian/link.cjs +3 -3
  88. package/dist/lib/cjs/obsidian/logger.cjs +3 -3
  89. package/dist/lib/cjs/obsidian/loop.cjs +3 -3
  90. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +3 -3
  91. package/dist/lib/cjs/obsidian/markdown-view.cjs +3 -3
  92. package/dist/lib/cjs/obsidian/markdown.cjs +3 -3
  93. package/dist/lib/cjs/obsidian/metadata-cache.cjs +3 -3
  94. package/dist/lib/cjs/obsidian/modals/alert.cjs +3 -3
  95. package/dist/lib/cjs/obsidian/modals/confirm.cjs +3 -3
  96. package/dist/lib/cjs/obsidian/modals/index.cjs +3 -3
  97. package/dist/lib/cjs/obsidian/modals/modal.cjs +3 -3
  98. package/dist/lib/cjs/obsidian/modals/prompt.cjs +3 -3
  99. package/dist/lib/cjs/obsidian/modals/select-item.cjs +3 -3
  100. package/dist/lib/cjs/obsidian/monkey-around.cjs +3 -3
  101. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +3 -3
  102. package/dist/lib/cjs/obsidian/pdf.cjs +3 -3
  103. package/dist/lib/cjs/obsidian/plugin/components/abort-signal-component.cjs +3 -3
  104. package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.cjs +3 -3
  105. package/dist/lib/cjs/obsidian/plugin/components/console-debug-component.cjs +3 -3
  106. package/dist/lib/cjs/obsidian/plugin/components/i18n-component.cjs +3 -3
  107. package/dist/lib/cjs/obsidian/plugin/components/index.cjs +7 -7
  108. package/dist/lib/cjs/obsidian/plugin/components/index.d.cts +1 -1
  109. package/dist/lib/cjs/obsidian/plugin/components/layout-ready-component.cjs +124 -0
  110. package/dist/lib/cjs/obsidian/plugin/components/layout-ready-component.d.cts +18 -0
  111. package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.cjs +3 -3
  112. package/dist/lib/cjs/obsidian/plugin/components/plugin-notice-component.cjs +3 -3
  113. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +3 -3
  114. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.cjs +3 -3
  115. package/dist/lib/cjs/obsidian/plugin/index.cjs +3 -3
  116. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +3 -3
  117. package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +3 -3
  118. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +6 -6
  119. package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +3 -3
  120. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +6 -6
  121. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +50 -84
  122. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +13 -51
  123. package/dist/lib/cjs/obsidian/queue.cjs +3 -3
  124. package/dist/lib/cjs/obsidian/react/app-context.cjs +3 -3
  125. package/dist/lib/cjs/obsidian/react/index.cjs +3 -3
  126. package/dist/lib/cjs/obsidian/reference.cjs +3 -3
  127. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +3 -3
  128. package/dist/lib/cjs/obsidian/resource-url.cjs +3 -3
  129. package/dist/lib/cjs/obsidian/setting-ex.cjs +3 -3
  130. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +3 -3
  131. package/dist/lib/cjs/obsidian/validation.cjs +3 -3
  132. package/dist/lib/cjs/obsidian/vault-delete.cjs +3 -3
  133. package/dist/lib/cjs/obsidian/vault.cjs +3 -3
  134. package/dist/lib/cjs/obsidian/workspace.cjs +3 -3
  135. package/dist/lib/cjs/path.cjs +3 -3
  136. package/dist/lib/cjs/reg-exp.cjs +3 -3
  137. package/dist/lib/cjs/script-utils/build.cjs +3 -3
  138. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +3 -3
  139. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +3 -3
  140. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +3 -3
  141. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +3 -3
  142. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +3 -3
  143. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +3 -3
  144. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +3 -3
  145. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +3 -3
  146. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +4 -4
  147. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +3 -3
  148. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +3 -3
  149. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +3 -3
  150. package/dist/lib/cjs/script-utils/bundlers/index.cjs +3 -3
  151. package/dist/lib/cjs/script-utils/cli-utils.cjs +3 -3
  152. package/dist/lib/cjs/script-utils/code-generator.cjs +3 -3
  153. package/dist/lib/cjs/script-utils/commitlint-config.cjs +3 -3
  154. package/dist/lib/cjs/script-utils/exec.cjs +3 -3
  155. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +3 -3
  156. package/dist/lib/cjs/script-utils/formatters/index.cjs +3 -3
  157. package/dist/lib/cjs/script-utils/fs.cjs +3 -3
  158. package/dist/lib/cjs/script-utils/index.cjs +3 -3
  159. package/dist/lib/cjs/script-utils/json.cjs +3 -3
  160. package/dist/lib/cjs/script-utils/linters/cspell.cjs +3 -3
  161. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +3 -3
  162. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +3 -3
  163. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +3 -3
  164. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +3 -3
  165. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +3 -3
  166. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +3 -3
  167. package/dist/lib/cjs/script-utils/linters/eslint.cjs +3 -3
  168. package/dist/lib/cjs/script-utils/linters/index.cjs +3 -3
  169. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +3 -3
  170. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +3 -3
  171. package/dist/lib/cjs/script-utils/nano-staged-config.cjs +3 -3
  172. package/dist/lib/cjs/script-utils/npm-publish.cjs +3 -3
  173. package/dist/lib/cjs/script-utils/npm-run.cjs +3 -3
  174. package/dist/lib/cjs/script-utils/npm.cjs +3 -3
  175. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +3 -3
  176. package/dist/lib/cjs/script-utils/root.cjs +3 -3
  177. package/dist/lib/cjs/script-utils/test-runners/index.cjs +3 -3
  178. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +3 -3
  179. package/dist/lib/cjs/script-utils/version.cjs +3 -3
  180. package/dist/lib/cjs/strict-proxy.cjs +18 -7
  181. package/dist/lib/cjs/strict-proxy.d.cts +12 -0
  182. package/dist/lib/cjs/string.cjs +3 -3
  183. package/dist/lib/cjs/transformers/date-transformer.cjs +3 -3
  184. package/dist/lib/cjs/transformers/duration-transformer.cjs +3 -3
  185. package/dist/lib/cjs/transformers/group-transformer.cjs +3 -3
  186. package/dist/lib/cjs/transformers/index.cjs +3 -3
  187. package/dist/lib/cjs/transformers/map-transformer.cjs +3 -3
  188. package/dist/lib/cjs/transformers/set-transformer.cjs +3 -3
  189. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +3 -3
  190. package/dist/lib/cjs/transformers/transformer.cjs +3 -3
  191. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +3 -3
  192. package/dist/lib/cjs/transformers/typed-transformer.cjs +3 -3
  193. package/dist/lib/cjs/two-way-map.cjs +3 -3
  194. package/dist/lib/cjs/type-guards.cjs +3 -3
  195. package/dist/lib/cjs/type.cjs +3 -3
  196. package/dist/lib/cjs/url.cjs +3 -3
  197. package/dist/lib/cjs/value-provider.cjs +3 -3
  198. package/dist/lib/esm/abort-controller.mjs +4 -4
  199. package/dist/lib/esm/array.mjs +2 -2
  200. package/dist/lib/esm/async-events.mjs +5 -5
  201. package/dist/lib/esm/async.mjs +5 -5
  202. package/dist/lib/esm/blob.mjs +2 -2
  203. package/dist/lib/esm/codemirror/index.mjs +2 -2
  204. package/dist/lib/esm/codemirror/state-field-spec.mjs +2 -2
  205. package/dist/lib/esm/css-class.mjs +2 -2
  206. package/dist/lib/esm/debug-controller.mjs +2 -2
  207. package/dist/lib/esm/debug.mjs +2 -2
  208. package/dist/lib/esm/enum.mjs +2 -2
  209. package/dist/lib/esm/error.mjs +3 -3
  210. package/dist/lib/esm/function.mjs +2 -2
  211. package/dist/lib/esm/html-element.mjs +4 -4
  212. package/dist/lib/esm/index.mjs +2 -2
  213. package/dist/lib/esm/library.mjs +3 -3
  214. package/dist/lib/esm/object-utils.mjs +2 -2
  215. package/dist/lib/esm/obsidian/app.mjs +3 -3
  216. package/dist/lib/esm/obsidian/async-with-notice.mjs +6 -6
  217. package/dist/lib/esm/obsidian/attachment-path.mjs +2 -2
  218. package/dist/lib/esm/obsidian/backlink.mjs +2 -2
  219. package/dist/lib/esm/obsidian/callout.mjs +2 -2
  220. package/dist/lib/esm/obsidian/code-block-markdown-information.mjs +2 -2
  221. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +2 -2
  222. package/dist/lib/esm/obsidian/command-handlers/app-active-file-provider.mjs +2 -2
  223. package/dist/lib/esm/obsidian/command-handlers/app-menu-event-registrar.mjs +2 -2
  224. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +2 -2
  225. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +2 -2
  226. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +2 -2
  227. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -2
  228. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -2
  229. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +2 -2
  230. package/dist/lib/esm/obsidian/command-handlers/index.mjs +2 -2
  231. package/dist/lib/esm/obsidian/command-handlers/open-settings-command-handler.mjs +2 -2
  232. package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +2 -2
  233. package/dist/lib/esm/obsidian/components/async-component.d.mts +14 -0
  234. package/dist/lib/esm/obsidian/components/async-component.mjs +27 -12
  235. package/dist/lib/esm/obsidian/components/async-events-component.mjs +2 -2
  236. package/dist/lib/esm/obsidian/components/index.mjs +2 -2
  237. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +2 -2
  238. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +4 -4
  239. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +2 -2
  240. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +2 -2
  241. package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +2 -2
  242. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +2 -2
  243. package/dist/lib/esm/obsidian/components/setting-components/index.mjs +2 -2
  244. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +2 -2
  245. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +2 -2
  246. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +2 -2
  247. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +2 -2
  248. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +2 -2
  249. package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +2 -2
  250. package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +2 -2
  251. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +2 -2
  252. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +2 -2
  253. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +2 -2
  254. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +2 -2
  255. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +2 -2
  256. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +2 -2
  257. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +2 -2
  258. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +2 -2
  259. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +2 -2
  260. package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +2 -2
  261. package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +4 -4
  262. package/dist/lib/esm/obsidian/components/setting-components/value-component-with-change-tracking.mjs +2 -2
  263. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +2 -2
  264. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +2 -2
  265. package/dist/lib/esm/obsidian/constructors/index.mjs +2 -2
  266. package/dist/lib/esm/obsidian/dataview-link.mjs +2 -2
  267. package/dist/lib/esm/obsidian/dataview.mjs +2 -2
  268. package/dist/lib/esm/obsidian/editor.mjs +2 -2
  269. package/dist/lib/esm/obsidian/file-change.mjs +2 -2
  270. package/dist/lib/esm/obsidian/file-manager.mjs +2 -2
  271. package/dist/lib/esm/obsidian/file-system.mjs +2 -2
  272. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +2 -2
  273. package/dist/lib/esm/obsidian/frontmatter.mjs +2 -2
  274. package/dist/lib/esm/obsidian/i18n/custom-type-options.mjs +2 -2
  275. package/dist/lib/esm/obsidian/i18n/default-translations.mjs +2 -2
  276. package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -2
  277. package/dist/lib/esm/obsidian/i18n/index.mjs +2 -2
  278. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +2 -2
  279. package/dist/lib/esm/obsidian/i18n/locales/index.mjs +2 -2
  280. package/dist/lib/esm/obsidian/i18n/locales/translations-map.mjs +2 -2
  281. package/dist/lib/esm/obsidian/index.mjs +2 -2
  282. package/dist/lib/esm/obsidian/is-in-obsidian.mjs +2 -2
  283. package/dist/lib/esm/obsidian/link.mjs +2 -2
  284. package/dist/lib/esm/obsidian/logger.mjs +2 -2
  285. package/dist/lib/esm/obsidian/loop.mjs +2 -2
  286. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +2 -2
  287. package/dist/lib/esm/obsidian/markdown-view.mjs +2 -2
  288. package/dist/lib/esm/obsidian/markdown.mjs +2 -2
  289. package/dist/lib/esm/obsidian/metadata-cache.mjs +2 -2
  290. package/dist/lib/esm/obsidian/modals/alert.mjs +2 -2
  291. package/dist/lib/esm/obsidian/modals/confirm.mjs +2 -2
  292. package/dist/lib/esm/obsidian/modals/index.mjs +2 -2
  293. package/dist/lib/esm/obsidian/modals/modal.mjs +2 -2
  294. package/dist/lib/esm/obsidian/modals/prompt.mjs +2 -2
  295. package/dist/lib/esm/obsidian/modals/select-item.mjs +2 -2
  296. package/dist/lib/esm/obsidian/monkey-around.mjs +2 -2
  297. package/dist/lib/esm/obsidian/obsidian-settings.mjs +2 -2
  298. package/dist/lib/esm/obsidian/pdf.mjs +2 -2
  299. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.mjs +2 -2
  300. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.mjs +2 -2
  301. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.mjs +2 -2
  302. package/dist/lib/esm/obsidian/plugin/components/i18n-component.mjs +2 -2
  303. package/dist/lib/esm/obsidian/plugin/components/index.d.mts +1 -1
  304. package/dist/lib/esm/obsidian/plugin/components/index.mjs +5 -5
  305. package/dist/lib/esm/obsidian/plugin/components/layout-ready-component.d.mts +18 -0
  306. package/dist/lib/esm/obsidian/plugin/components/layout-ready-component.mjs +24 -0
  307. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.mjs +2 -2
  308. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.mjs +2 -2
  309. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +2 -2
  310. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.mjs +2 -2
  311. package/dist/lib/esm/obsidian/plugin/index.mjs +2 -2
  312. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +2 -2
  313. package/dist/lib/esm/obsidian/plugin/path-settings.mjs +2 -2
  314. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +5 -5
  315. package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +2 -2
  316. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +5 -5
  317. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +13 -51
  318. package/dist/lib/esm/obsidian/plugin/plugin.mjs +50 -87
  319. package/dist/lib/esm/obsidian/queue.mjs +2 -2
  320. package/dist/lib/esm/obsidian/react/app-context.mjs +2 -2
  321. package/dist/lib/esm/obsidian/react/index.mjs +2 -2
  322. package/dist/lib/esm/obsidian/reference.mjs +2 -2
  323. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +2 -2
  324. package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
  325. package/dist/lib/esm/obsidian/setting-ex.mjs +2 -2
  326. package/dist/lib/esm/obsidian/setting-group-ex.mjs +2 -2
  327. package/dist/lib/esm/obsidian/validation.mjs +2 -2
  328. package/dist/lib/esm/obsidian/vault-delete.mjs +2 -2
  329. package/dist/lib/esm/obsidian/vault.mjs +2 -2
  330. package/dist/lib/esm/obsidian/workspace.mjs +2 -2
  331. package/dist/lib/esm/path.mjs +2 -2
  332. package/dist/lib/esm/reg-exp.mjs +2 -2
  333. package/dist/lib/esm/script-utils/build.mjs +2 -2
  334. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +2 -2
  335. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +2 -2
  336. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +2 -2
  337. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +2 -2
  338. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +2 -2
  339. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +2 -2
  340. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.mjs +2 -2
  341. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +2 -2
  342. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +3 -3
  343. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.mjs +2 -2
  344. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +2 -2
  345. package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +2 -2
  346. package/dist/lib/esm/script-utils/bundlers/index.mjs +2 -2
  347. package/dist/lib/esm/script-utils/cli-utils.mjs +2 -2
  348. package/dist/lib/esm/script-utils/code-generator.mjs +2 -2
  349. package/dist/lib/esm/script-utils/commitlint-config.mjs +2 -2
  350. package/dist/lib/esm/script-utils/exec.mjs +2 -2
  351. package/dist/lib/esm/script-utils/formatters/dprint.mjs +2 -2
  352. package/dist/lib/esm/script-utils/formatters/index.mjs +2 -2
  353. package/dist/lib/esm/script-utils/fs.mjs +2 -2
  354. package/dist/lib/esm/script-utils/index.mjs +2 -2
  355. package/dist/lib/esm/script-utils/json.mjs +2 -2
  356. package/dist/lib/esm/script-utils/linters/cspell.mjs +2 -2
  357. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +2 -2
  358. package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +2 -2
  359. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +2 -2
  360. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +2 -2
  361. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +2 -2
  362. package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.mjs +2 -2
  363. package/dist/lib/esm/script-utils/linters/eslint.mjs +2 -2
  364. package/dist/lib/esm/script-utils/linters/index.mjs +2 -2
  365. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +2 -2
  366. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +2 -2
  367. package/dist/lib/esm/script-utils/nano-staged-config.mjs +2 -2
  368. package/dist/lib/esm/script-utils/npm-publish.mjs +2 -2
  369. package/dist/lib/esm/script-utils/npm-run.mjs +2 -2
  370. package/dist/lib/esm/script-utils/npm.mjs +2 -2
  371. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +2 -2
  372. package/dist/lib/esm/script-utils/root.mjs +2 -2
  373. package/dist/lib/esm/script-utils/test-runners/index.mjs +2 -2
  374. package/dist/lib/esm/script-utils/test-runners/vitest.mjs +2 -2
  375. package/dist/lib/esm/script-utils/version.mjs +2 -2
  376. package/dist/lib/esm/strict-proxy.d.mts +12 -0
  377. package/dist/lib/esm/strict-proxy.mjs +16 -6
  378. package/dist/lib/esm/string.mjs +2 -2
  379. package/dist/lib/esm/transformers/date-transformer.mjs +2 -2
  380. package/dist/lib/esm/transformers/duration-transformer.mjs +2 -2
  381. package/dist/lib/esm/transformers/group-transformer.mjs +2 -2
  382. package/dist/lib/esm/transformers/index.mjs +2 -2
  383. package/dist/lib/esm/transformers/map-transformer.mjs +2 -2
  384. package/dist/lib/esm/transformers/set-transformer.mjs +2 -2
  385. package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +2 -2
  386. package/dist/lib/esm/transformers/transformer.mjs +2 -2
  387. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +2 -2
  388. package/dist/lib/esm/transformers/typed-transformer.mjs +2 -2
  389. package/dist/lib/esm/two-way-map.mjs +2 -2
  390. package/dist/lib/esm/type-guards.mjs +2 -2
  391. package/dist/lib/esm/type.mjs +2 -2
  392. package/dist/lib/esm/url.mjs +2 -2
  393. package/dist/lib/esm/value-provider.mjs +2 -2
  394. package/obsidian/Plugin/components/{lifecycle-events-component → layout-ready-component}/package.json +3 -3
  395. package/package.json +3 -3
  396. package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.cjs +0 -211
  397. package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.d.cts +0 -63
  398. package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.d.mts +0 -63
  399. package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.mjs +0 -106
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -133,12 +133,12 @@ module.exports = __toCommonJS(plugin_exports);
133
133
  var import_obsidian = require('obsidian');
134
134
  var import_async = require('../../async.cjs');
135
135
  var import_error = require('../../error.cjs');
136
- var import_function = require('../../function.cjs');
136
+ var import_strict_proxy = require('../../strict-proxy.cjs');
137
+ var import_async_component = require('../components/async-component.cjs');
137
138
  var import_abort_signal_component = require('./components/abort-signal-component.cjs');
138
139
  var import_async_error_handler_component = require('./components/async-error-handler-component.cjs');
139
140
  var import_console_debug_component = require('./components/console-debug-component.cjs');
140
141
  var import_i18n_component = require('./components/i18n-component.cjs');
141
- var import_lifecycle_events_component = require('./components/lifecycle-events-component.cjs');
142
142
  var import_plugin_context_component = require('./components/plugin-context-component.cjs');
143
143
  var import_plugin_notice_component = require('./components/plugin-notice-component.cjs');
144
144
  var import_plugin_settings_component = require('./components/plugin-settings-component.cjs');
@@ -151,10 +151,6 @@ class PluginBase extends import_obsidian.Plugin {
151
151
  * The console debug component. Provides namespaced debug logging.
152
152
  */
153
153
  consoleDebugComponent;
154
- /**
155
- * The lifecycle events component. Provides load, layoutReady, and unload events.
156
- */
157
- lifecycleEventsComponent;
158
154
  /**
159
155
  * The notice component. Displays notices to the user.
160
156
  */
@@ -163,7 +159,6 @@ class PluginBase extends import_obsidian.Plugin {
163
159
  * The settings component. Manages plugin settings lifecycle.
164
160
  */
165
161
  settingsComponent;
166
- preloadComponents = [];
167
162
  singletonComponents = /* @__PURE__ */ new Map();
168
163
  /**
169
164
  * Creates a new PluginBase.
@@ -173,95 +168,66 @@ class PluginBase extends import_obsidian.Plugin {
173
168
  */
174
169
  constructor(app, manifest) {
175
170
  super(app, manifest);
176
- this.registerComponent({ component: new import_plugin_context_component.PluginContextComponent(app, manifest.id), shouldPreload: true });
177
- this.registerComponent({ component: new import_i18n_component.I18nComponent(), shouldPreload: true });
178
- this.noticeComponent = this.registerComponent({ component: new import_plugin_notice_component.PluginNoticeComponent(manifest.name) });
179
- this.registerComponent({ component: new import_async_error_handler_component.AsyncErrorHandlerComponent(this.noticeComponent) });
180
- this.abortSignalComponent = this.registerComponent({ component: new import_abort_signal_component.AbortSignalComponent(manifest.id) });
181
- this.consoleDebugComponent = this.registerComponent({ component: new import_console_debug_component.ConsoleDebugComponent(manifest.id) });
182
- this.lifecycleEventsComponent = this.registerComponent({ component: new import_lifecycle_events_component.LifecycleEventsComponent(app) });
183
- this.settingsComponent = this.registerComponent({ component: new import_plugin_settings_component.EmptyPluginSettingsComponent(), shouldPreload: true });
184
- }
185
- /**
186
- * Called when the external settings change.
187
- *
188
- * Override in subclass if needed. Make sure to call `await super.onExternalSettingsChange()` first.
189
- */
190
- async onExternalSettingsChange() {
191
- await super.onExternalSettingsChange?.();
192
- await this.settingsComponent.onExternalSettingsChange();
193
- }
194
- /**
195
- * Called when the plugin is loaded. Force-loads components that must be ready
196
- * before plugin logic, then calls `onloadImpl()`.
197
- *
198
- * Usually, you don't need to override this method. Override {@link onloadImpl} instead.
199
- */
200
- async onload() {
201
- await super.onload();
202
- for (const component of this.preloadComponents) {
203
- await component.load();
204
- }
205
- await this.onloadImpl();
206
- (0, import_async.invokeAsyncSafelyAfterDelay)(this.afterLoad.bind(this));
207
- }
208
- /**
209
- * Called when the layout is ready.
210
- */
211
- async onLayoutReady() {
212
- await (0, import_function.noopAsync)();
171
+ this.addChild(new import_plugin_context_component.PluginContextComponent(app, manifest.id));
172
+ this.addChild(new import_i18n_component.I18nComponent());
173
+ this.noticeComponent = this.addChild(new import_plugin_notice_component.PluginNoticeComponent(manifest.name));
174
+ this.addChild(new import_async_error_handler_component.AsyncErrorHandlerComponent(this.noticeComponent));
175
+ this.abortSignalComponent = this.addChild(new import_abort_signal_component.AbortSignalComponent(manifest.id));
176
+ this.consoleDebugComponent = this.addChild(new import_console_debug_component.ConsoleDebugComponent(manifest.id));
177
+ this.settingsComponent = this.addChild(new import_plugin_settings_component.EmptyPluginSettingsComponent());
213
178
  }
214
179
  /**
215
- * Called after all pre-load components are initialized. Override this to add plugin-specific logic.
216
- *
217
- * @remarks It is important to call `super.onloadImpl()` in overridden method.
218
- */
219
- async onloadImpl() {
220
- await (0, import_function.noopAsync)();
221
- }
222
- /**
223
- * Registers a component with the plugin.
180
+ * Adds a component to the plugin.
224
181
  *
225
182
  * If the component's class defines a static `COMPONENT_KEY` symbol, it is treated as a singleton —
226
- * registering another component with the same key replaces the previous one.
183
+ * adding another component with the same key replaces the previous one.
227
184
  * Components without a `COMPONENT_KEY` are multi-instance and simply added.
228
185
  *
229
186
  * @typeParam T - The component type.
230
- * @param params - The registration params.
231
- * @returns The registered component.
187
+ * @param component - The component to add.
188
+ * @returns The added component.
232
189
  */
233
- registerComponent(params) {
234
- const singletonKey = params.component.constructor.COMPONENT_KEY;
190
+ addChild(component) {
191
+ if (this._loaded) {
192
+ return super.addChild(component);
193
+ }
194
+ const singletonKey = component.constructor.COMPONENT_KEY;
235
195
  if (singletonKey) {
236
196
  const oldComponent = this.singletonComponents.get(singletonKey);
237
197
  if (oldComponent) {
238
198
  this.removeChild(oldComponent);
239
- const preloadIndex = this.preloadComponents.indexOf(oldComponent);
240
- if (preloadIndex !== -1) {
241
- this.preloadComponents.splice(preloadIndex, 1);
242
- }
243
199
  }
244
- this.singletonComponents.set(singletonKey, params.component);
200
+ this.singletonComponents.set(singletonKey, component);
245
201
  }
246
- this.addChild(params.component);
247
- if (params.shouldPreload) {
248
- this.preloadComponents.push(params.component);
249
- }
250
- return params.component;
202
+ return super.addChild(component);
251
203
  }
252
- async afterLoad() {
253
- if (this.abortSignalComponent.abortSignal.aborted) {
254
- return;
255
- }
256
- await this.lifecycleEventsComponent.triggerLifecycleEvent("load");
257
- this.app.workspace.onLayoutReady((0, import_async.convertAsyncToSync)(this.onLayoutReadyBase.bind(this)));
204
+ /**
205
+ * Loads the plugin and its components.
206
+ */
207
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises -- Obsidian's load() handles async returns at runtime.
208
+ async load() {
209
+ await (0, import_async_component.loadChildrenFirstAsync)(this);
210
+ this.app.workspace.onLayoutReady(() => {
211
+ (0, import_async.invokeAsyncSafelyAfterDelay)(
212
+ async () => {
213
+ for (const child of this._children) {
214
+ await (0, import_strict_proxy.bypassStrictProxy)(child).onLayoutReady?.();
215
+ }
216
+ },
217
+ 0,
218
+ void 0,
219
+ this.abortSignalComponent.abortSignal
220
+ );
221
+ });
258
222
  }
259
- async onLayoutReadyBase() {
260
- try {
261
- await this.onLayoutReady();
262
- } finally {
263
- await this.lifecycleEventsComponent.triggerLifecycleEvent("layoutReady");
264
- }
223
+ /**
224
+ * Called when the external settings change.
225
+ *
226
+ * Override in subclass if needed. Make sure to call `await super.onExternalSettingsChange()` first.
227
+ */
228
+ async onExternalSettingsChange() {
229
+ await super.onExternalSettingsChange?.();
230
+ await this.settingsComponent.onExternalSettingsChange();
265
231
  }
266
232
  }
267
233
  async function reloadPlugin(plugin) {
@@ -281,4 +247,4 @@ async function showErrorAndDisablePlugin(plugin, message) {
281
247
  reloadPlugin,
282
248
  showErrorAndDisablePlugin
283
249
  });
284
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBCYXNlIGNsYXNzIGZvciBPYnNpZGlhbiBwbHVnaW5zIHVzaW5nIGEgY29tcG9uZW50LWJhc2VkIGFyY2hpdGVjdHVyZS5cbiAqXG4gKiBQbHVnaW5CYXNlIHJlZ2lzdGVycyB1bml2ZXJzYWwgY29tcG9uZW50cyAoY29udGV4dCwgaTE4biwgZXJyb3IgaGFuZGxpbmcsIGFib3J0IHNpZ25hbCwgbGlmZWN5Y2xlIGV2ZW50cywgZGVidWcpLlxuICogU3ViY2xhc3NlcyBhZGQgdGhlaXIgb3duIGNvbXBvbmVudHMgdmlhIHtAbGluayByZWdpc3RlckNvbXBvbmVudH0gaW4gdGhlaXIgY29uc3RydWN0b3IuXG4gKiBBbnkgdW5pdmVyc2FsIGNvbXBvbmVudCBjYW4gYmUgcmVwbGFjZWQgYnkgY2FsbGluZyB7QGxpbmsgcmVnaXN0ZXJDb21wb25lbnR9IHdpdGggYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHNhbWUgY2xhc3MuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFBsdWdpbk1hbmlmZXN0XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgTm90aWNlLFxuICBQbHVnaW4gYXMgT2JzaWRpYW5QbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHtcbiAgY29udmVydEFzeW5jVG9TeW5jLFxuICBpbnZva2VBc3luY1NhZmVseUFmdGVyRGVsYXlcbn0gZnJvbSAnLi4vLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yLnRzJztcbmltcG9ydCB7IG5vb3BBc3luYyB9IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IEFib3J0U2lnbmFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Fib3J0LXNpZ25hbC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgQXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXN5bmMtZXJyb3ItaGFuZGxlci1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgQ29uc29sZURlYnVnQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbnNvbGUtZGVidWctY29tcG9uZW50LnRzJztcbmltcG9ydCB7IEkxOG5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaTE4bi1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlRXZlbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xpZmVjeWNsZS1ldmVudHMtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFBsdWdpbkNvbnRleHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBFbXB0eVBsdWdpblNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIFBhcmFtcyBmb3Ige0BsaW5rIFBsdWdpbkJhc2UucmVnaXN0ZXJDb21wb25lbnR9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSBjb21wb25lbnQgdHlwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckNvbXBvbmVudFBhcmFtczxUIGV4dGVuZHMgQ29tcG9uZW50ID0gQ29tcG9uZW50PiB7XG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50OiBUO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY29tcG9uZW50IHNob3VsZCBiZSBsb2FkZWQgYmVmb3JlIHRoZSBwbHVnaW4ncyBgb25sb2FkSW1wbCgpYCBydW5zLlxuICAgKiBDb21wb25lbnRzIG1hcmtlZCB3aXRoIHRoaXMgZmxhZyBhcmUgZm9yY2UtbG9hZGVkIGR1cmluZyBgb25sb2FkKClgLCBlbnN1cmluZyB0aGV5IGFyZVxuICAgKiBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgcGx1Z2luIGxvZ2ljIGV4ZWN1dGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUHJlbG9hZD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDb21wb25lbnRDbGFzc1dpdGhLZXkge1xuICBDT01QT05FTlRfS0VZOiBzeW1ib2w7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgT2JzaWRpYW4gcGx1Z2lucyB3aXRoIGEgY29tcG9uZW50LWJhc2VkIGFyY2hpdGVjdHVyZS5cbiAqXG4gKiBSZWdpc3RlcnMgdW5pdmVyc2FsIGNvbXBvbmVudHMgYXV0b21hdGljYWxseS4gU3ViY2xhc3NlcyBhZGQgb3IgcmVwbGFjZSBjb21wb25lbnRzXG4gKiB2aWEge0BsaW5rIHJlZ2lzdGVyQ29tcG9uZW50fSBpbiB0aGVpciBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpbkJhc2UgZXh0ZW5kcyBPYnNpZGlhblBsdWdpbiB7XG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIGNvbXBvbmVudC4gQWJvcnRlZCB3aGVuIHRoZSBwbHVnaW4gaXMgdW5sb2FkZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWJvcnRTaWduYWxDb21wb25lbnQ6IEFib3J0U2lnbmFsQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc29sZSBkZWJ1ZyBjb21wb25lbnQuIFByb3ZpZGVzIG5hbWVzcGFjZWQgZGVidWcgbG9nZ2luZy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25zb2xlRGVidWdDb21wb25lbnQ6IENvbnNvbGVEZWJ1Z0NvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIGxpZmVjeWNsZSBldmVudHMgY29tcG9uZW50LiBQcm92aWRlcyBsb2FkLCBsYXlvdXRSZWFkeSwgYW5kIHVubG9hZCBldmVudHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGlmZWN5Y2xlRXZlbnRzQ29tcG9uZW50OiBMaWZlY3ljbGVFdmVudHNDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBub3RpY2UgY29tcG9uZW50LiBEaXNwbGF5cyBub3RpY2VzIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50LiBNYW5hZ2VzIHBsdWdpbiBzZXR0aW5ncyBsaWZlY3ljbGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlbG9hZENvbXBvbmVudHM6IENvbXBvbmVudFtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgc2luZ2xldG9uQ29tcG9uZW50cyA9IG5ldyBNYXA8c3ltYm9sLCBDb21wb25lbnQ+KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUGx1Z2luQmFzZS5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIFRoZSBwbHVnaW4gbWFuaWZlc3QuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoYXBwOiBBcHAsIG1hbmlmZXN0OiBQbHVnaW5NYW5pZmVzdCkge1xuICAgIHN1cGVyKGFwcCwgbWFuaWZlc3QpO1xuXG4gICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudCh7IGNvbXBvbmVudDogbmV3IFBsdWdpbkNvbnRleHRDb21wb25lbnQoYXBwLCBtYW5pZmVzdC5pZCksIHNob3VsZFByZWxvYWQ6IHRydWUgfSk7XG4gICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudCh7IGNvbXBvbmVudDogbmV3IEkxOG5Db21wb25lbnQoKSwgc2hvdWxkUHJlbG9hZDogdHJ1ZSB9KTtcbiAgICB0aGlzLm5vdGljZUNvbXBvbmVudCA9IHRoaXMucmVnaXN0ZXJDb21wb25lbnQoeyBjb21wb25lbnQ6IG5ldyBQbHVnaW5Ob3RpY2VDb21wb25lbnQobWFuaWZlc3QubmFtZSkgfSk7XG4gICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudCh7IGNvbXBvbmVudDogbmV3IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50KHRoaXMubm90aWNlQ29tcG9uZW50KSB9KTtcbiAgICB0aGlzLmFib3J0U2lnbmFsQ29tcG9uZW50ID0gdGhpcy5yZWdpc3RlckNvbXBvbmVudCh7IGNvbXBvbmVudDogbmV3IEFib3J0U2lnbmFsQ29tcG9uZW50KG1hbmlmZXN0LmlkKSB9KTtcbiAgICB0aGlzLmNvbnNvbGVEZWJ1Z0NvbXBvbmVudCA9IHRoaXMucmVnaXN0ZXJDb21wb25lbnQoeyBjb21wb25lbnQ6IG5ldyBDb25zb2xlRGVidWdDb21wb25lbnQobWFuaWZlc3QuaWQpIH0pO1xuICAgIHRoaXMubGlmZWN5Y2xlRXZlbnRzQ29tcG9uZW50ID0gdGhpcy5yZWdpc3RlckNvbXBvbmVudCh7IGNvbXBvbmVudDogbmV3IExpZmVjeWNsZUV2ZW50c0NvbXBvbmVudChhcHApIH0pO1xuICAgIHRoaXMuc2V0dGluZ3NDb21wb25lbnQgPSB0aGlzLnJlZ2lzdGVyQ29tcG9uZW50KHsgY29tcG9uZW50OiBuZXcgRW1wdHlQbHVnaW5TZXR0aW5nc0NvbXBvbmVudCgpLCBzaG91bGRQcmVsb2FkOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBjaGFuZ2UuXG4gICAqXG4gICAqIE92ZXJyaWRlIGluIHN1YmNsYXNzIGlmIG5lZWRlZC4gTWFrZSBzdXJlIHRvIGNhbGwgYGF3YWl0IHN1cGVyLm9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpYCBmaXJzdC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIub25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlPy4oKTtcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzQ29tcG9uZW50Lm9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gaXMgbG9hZGVkLiBGb3JjZS1sb2FkcyBjb21wb25lbnRzIHRoYXQgbXVzdCBiZSByZWFkeVxuICAgKiBiZWZvcmUgcGx1Z2luIGxvZ2ljLCB0aGVuIGNhbGxzIGBvbmxvYWRJbXBsKClgLlxuICAgKlxuICAgKiBVc3VhbGx5LCB5b3UgZG9uJ3QgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZC4gT3ZlcnJpZGUge0BsaW5rIG9ubG9hZEltcGx9IGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgb25sb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLm9ubG9hZCgpO1xuXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5wcmVsb2FkQ29tcG9uZW50cykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1jb25mdXNpbmctdm9pZC1leHByZXNzaW9uIC0tIENvbXBvbmVudC5sb2FkKCkgcmV0dXJucyB2b2lkfFByb21pc2UgYXQgcnVudGltZSBkZXNwaXRlIHZvaWQgdHlwaW5nLlxuICAgICAgYXdhaXQgKGNvbXBvbmVudC5sb2FkKCkgYXMgUHJvbWlzYWJsZTx2b2lkPik7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5vbmxvYWRJbXBsKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5KHRoaXMuYWZ0ZXJMb2FkLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBsYXlvdXQgaXMgcmVhZHkuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25MYXlvdXRSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgYWxsIHByZS1sb2FkIGNvbXBvbmVudHMgYXJlIGluaXRpYWxpemVkLiBPdmVycmlkZSB0aGlzIHRvIGFkZCBwbHVnaW4tc3BlY2lmaWMgbG9naWMuXG4gICAqXG4gICAqIEByZW1hcmtzIEl0IGlzIGltcG9ydGFudCB0byBjYWxsIGBzdXBlci5vbmxvYWRJbXBsKClgIGluIG92ZXJyaWRkZW4gbWV0aG9kLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9ubG9hZEltcGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY29tcG9uZW50IHdpdGggdGhlIHBsdWdpbi5cbiAgICpcbiAgICogSWYgdGhlIGNvbXBvbmVudCdzIGNsYXNzIGRlZmluZXMgYSBzdGF0aWMgYENPTVBPTkVOVF9LRVlgIHN5bWJvbCwgaXQgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZXRvbiBcdTIwMTRcbiAgICogcmVnaXN0ZXJpbmcgYW5vdGhlciBjb21wb25lbnQgd2l0aCB0aGUgc2FtZSBrZXkgcmVwbGFjZXMgdGhlIHByZXZpb3VzIG9uZS5cbiAgICogQ29tcG9uZW50cyB3aXRob3V0IGEgYENPTVBPTkVOVF9LRVlgIGFyZSBtdWx0aS1pbnN0YW5jZSBhbmQgc2ltcGx5IGFkZGVkLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFQgLSBUaGUgY29tcG9uZW50IHR5cGUuXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcmVnaXN0cmF0aW9uIHBhcmFtcy5cbiAgICogQHJldHVybnMgVGhlIHJlZ2lzdGVyZWQgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyQ29tcG9uZW50PFQgZXh0ZW5kcyBDb21wb25lbnQ+KHBhcmFtczogUmVnaXN0ZXJDb21wb25lbnRQYXJhbXM8VD4pOiBUIHtcbiAgICBjb25zdCBzaW5nbGV0b25LZXkgPSAocGFyYW1zLmNvbXBvbmVudC5jb25zdHJ1Y3RvciBhcyBQYXJ0aWFsPENvbXBvbmVudENsYXNzV2l0aEtleT4pLkNPTVBPTkVOVF9LRVk7XG5cbiAgICBpZiAoc2luZ2xldG9uS2V5KSB7XG4gICAgICBjb25zdCBvbGRDb21wb25lbnQgPSB0aGlzLnNpbmdsZXRvbkNvbXBvbmVudHMuZ2V0KHNpbmdsZXRvbktleSk7XG4gICAgICBpZiAob2xkQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQob2xkQ29tcG9uZW50KTtcbiAgICAgICAgY29uc3QgcHJlbG9hZEluZGV4ID0gdGhpcy5wcmVsb2FkQ29tcG9uZW50cy5pbmRleE9mKG9sZENvbXBvbmVudCk7XG4gICAgICAgIGlmIChwcmVsb2FkSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5wcmVsb2FkQ29tcG9uZW50cy5zcGxpY2UocHJlbG9hZEluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5zaW5nbGV0b25Db21wb25lbnRzLnNldChzaW5nbGV0b25LZXksIHBhcmFtcy5jb21wb25lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ2hpbGQocGFyYW1zLmNvbXBvbmVudCk7XG5cbiAgICBpZiAocGFyYW1zLnNob3VsZFByZWxvYWQpIHtcbiAgICAgIHRoaXMucHJlbG9hZENvbXBvbmVudHMucHVzaChwYXJhbXMuY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zLmNvbXBvbmVudDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWZ0ZXJMb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmFib3J0U2lnbmFsQ29tcG9uZW50LmFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5saWZlY3ljbGVFdmVudHNDb21wb25lbnQudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCdsb2FkJyk7XG4gICAgdGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoY29udmVydEFzeW5jVG9TeW5jKHRoaXMub25MYXlvdXRSZWFkeUJhc2UuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkxheW91dFJlYWR5QmFzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbkxheW91dFJlYWR5KCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHRoaXMubGlmZWN5Y2xlRXZlbnRzQ29tcG9uZW50LnRyaWdnZXJMaWZlY3ljbGVFdmVudCgnbGF5b3V0UmVhZHknKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZWxvYWRzIHRoZSBzcGVjaWZpZWQgcGx1Z2luIGJ5IGRpc2FibGluZyBhbmQgdGhlbiByZS1lbmFibGluZyBpdC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byByZWxvYWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHBsdWdpbiBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZFBsdWdpbihwbHVnaW46IE9ic2lkaWFuUGx1Z2luKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHBsdWdpbnMgPSBwbHVnaW4uYXBwLnBsdWdpbnM7XG4gIGNvbnN0IHBsdWdpbklkID0gcGx1Z2luLm1hbmlmZXN0LmlkO1xuICBhd2FpdCBwbHVnaW5zLmRpc2FibGVQbHVnaW4ocGx1Z2luSWQpO1xuICBhd2FpdCBwbHVnaW5zLmVuYWJsZVBsdWdpbihwbHVnaW5JZCk7XG59XG5cbi8qKlxuICogRGlzcGxheXMgYW4gZXJyb3IgbWVzc2FnZSBhcyBhIG5vdGljZSwgbG9ncyBpdCB0byB0aGUgY29uc29sZSwgYW5kIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgcGx1Z2luLlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRvIGRpc2FibGUuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgYW5kIGxvZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGx1Z2luIGlzIGRpc2FibGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd0Vycm9yQW5kRGlzYWJsZVBsdWdpbihwbHVnaW46IE9ic2lkaWFuUGx1Z2luLCBtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbmV3IE5vdGljZShtZXNzYWdlKTtcbiAgcHJpbnRFcnJvcihuZXcgRXJyb3IobWVzc2FnZSkpO1xuICBhd2FpdCBwbHVnaW4uYXBwLnBsdWdpbnMuZGlzYWJsZVBsdWdpbihwbHVnaW4ubWFuaWZlc3QuaWQpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCQSxzQkFJTztBQUlQLG1CQUdPO0FBQ1AsbUJBQTJCO0FBQzNCLHNCQUEwQjtBQUMxQixvQ0FBcUM7QUFDckMsMkNBQTJDO0FBQzNDLHFDQUFzQztBQUN0Qyw0QkFBOEI7QUFDOUIsd0NBQXlDO0FBQ3pDLHNDQUF1QztBQUN2QyxxQ0FBc0M7QUFDdEMsdUNBQTZDO0FBK0J0QyxNQUFlLG1CQUFtQixnQkFBQUEsT0FBZTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSW5DO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBLEVBRUYsb0JBQWlDLENBQUM7QUFBQSxFQUNsQyxzQkFBc0Isb0JBQUksSUFBdUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVEzRCxZQUFZLEtBQVUsVUFBMEI7QUFDckQsVUFBTSxLQUFLLFFBQVE7QUFFbkIsU0FBSyxrQkFBa0IsRUFBRSxXQUFXLElBQUksdURBQXVCLEtBQUssU0FBUyxFQUFFLEdBQUcsZUFBZSxLQUFLLENBQUM7QUFDdkcsU0FBSyxrQkFBa0IsRUFBRSxXQUFXLElBQUksb0NBQWMsR0FBRyxlQUFlLEtBQUssQ0FBQztBQUM5RSxTQUFLLGtCQUFrQixLQUFLLGtCQUFrQixFQUFFLFdBQVcsSUFBSSxxREFBc0IsU0FBUyxJQUFJLEVBQUUsQ0FBQztBQUNyRyxTQUFLLGtCQUFrQixFQUFFLFdBQVcsSUFBSSxnRUFBMkIsS0FBSyxlQUFlLEVBQUUsQ0FBQztBQUMxRixTQUFLLHVCQUF1QixLQUFLLGtCQUFrQixFQUFFLFdBQVcsSUFBSSxtREFBcUIsU0FBUyxFQUFFLEVBQUUsQ0FBQztBQUN2RyxTQUFLLHdCQUF3QixLQUFLLGtCQUFrQixFQUFFLFdBQVcsSUFBSSxxREFBc0IsU0FBUyxFQUFFLEVBQUUsQ0FBQztBQUN6RyxTQUFLLDJCQUEyQixLQUFLLGtCQUFrQixFQUFFLFdBQVcsSUFBSSwyREFBeUIsR0FBRyxFQUFFLENBQUM7QUFDdkcsU0FBSyxvQkFBb0IsS0FBSyxrQkFBa0IsRUFBRSxXQUFXLElBQUksOERBQTZCLEdBQUcsZUFBZSxLQUFLLENBQUM7QUFBQSxFQUN4SDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE1BQXNCLDJCQUEwQztBQUM5RCxVQUFNLE1BQU0sMkJBQTJCO0FBQ3ZDLFVBQU0sS0FBSyxrQkFBa0IseUJBQXlCO0FBQUEsRUFDeEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE1BQXNCLFNBQXdCO0FBQzVDLFVBQU0sTUFBTSxPQUFPO0FBRW5CLGVBQVcsYUFBYSxLQUFLLG1CQUFtQjtBQUU5QyxZQUFPLFVBQVUsS0FBSztBQUFBLElBQ3hCO0FBRUEsVUFBTSxLQUFLLFdBQVc7QUFDdEIsa0RBQTRCLEtBQUssVUFBVSxLQUFLLElBQUksQ0FBQztBQUFBLEVBQ3ZEO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFnQixnQkFBK0I7QUFDN0MsY0FBTSwyQkFBVTtBQUFBLEVBQ2xCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsTUFBZ0IsYUFBNEI7QUFDMUMsY0FBTSwyQkFBVTtBQUFBLEVBQ2xCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBYVUsa0JBQXVDLFFBQXVDO0FBQ3RGLFVBQU0sZUFBZ0IsT0FBTyxVQUFVLFlBQStDO0FBRXRGLFFBQUksY0FBYztBQUNoQixZQUFNLGVBQWUsS0FBSyxvQkFBb0IsSUFBSSxZQUFZO0FBQzlELFVBQUksY0FBYztBQUNoQixhQUFLLFlBQVksWUFBWTtBQUM3QixjQUFNLGVBQWUsS0FBSyxrQkFBa0IsUUFBUSxZQUFZO0FBQ2hFLFlBQUksaUJBQWlCLElBQUk7QUFDdkIsZUFBSyxrQkFBa0IsT0FBTyxjQUFjLENBQUM7QUFBQSxRQUMvQztBQUFBLE1BQ0Y7QUFDQSxXQUFLLG9CQUFvQixJQUFJLGNBQWMsT0FBTyxTQUFTO0FBQUEsSUFDN0Q7QUFFQSxTQUFLLFNBQVMsT0FBTyxTQUFTO0FBRTlCLFFBQUksT0FBTyxlQUFlO0FBQ3hCLFdBQUssa0JBQWtCLEtBQUssT0FBTyxTQUFTO0FBQUEsSUFDOUM7QUFFQSxXQUFPLE9BQU87QUFBQSxFQUNoQjtBQUFBLEVBRUEsTUFBYyxZQUEyQjtBQUN2QyxRQUFJLEtBQUsscUJBQXFCLFlBQVksU0FBUztBQUNqRDtBQUFBLElBQ0Y7QUFDQSxVQUFNLEtBQUsseUJBQXlCLHNCQUFzQixNQUFNO0FBQ2hFLFNBQUssSUFBSSxVQUFVLGtCQUFjLGlDQUFtQixLQUFLLGtCQUFrQixLQUFLLElBQUksQ0FBQyxDQUFDO0FBQUEsRUFDeEY7QUFBQSxFQUVBLE1BQWMsb0JBQW1DO0FBQy9DLFFBQUk7QUFDRixZQUFNLEtBQUssY0FBYztBQUFBLElBQzNCLFVBQUU7QUFDQSxZQUFNLEtBQUsseUJBQXlCLHNCQUFzQixhQUFhO0FBQUEsSUFDekU7QUFBQSxFQUNGO0FBQ0Y7QUFRQSxlQUFzQixhQUFhLFFBQXVDO0FBQ3hFLFFBQU0sVUFBVSxPQUFPLElBQUk7QUFDM0IsUUFBTSxXQUFXLE9BQU8sU0FBUztBQUNqQyxRQUFNLFFBQVEsY0FBYyxRQUFRO0FBQ3BDLFFBQU0sUUFBUSxhQUFhLFFBQVE7QUFDckM7QUFTQSxlQUFzQiwwQkFBMEIsUUFBd0IsU0FBZ0M7QUFDdEcsTUFBSSx1QkFBTyxPQUFPO0FBQ2xCLCtCQUFXLElBQUksTUFBTSxPQUFPLENBQUM7QUFDN0IsUUFBTSxPQUFPLElBQUksUUFBUSxjQUFjLE9BQU8sU0FBUyxFQUFFO0FBQzNEOyIsCiAgIm5hbWVzIjogWyJPYnNpZGlhblBsdWdpbiJdCn0K
250
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBCYXNlIGNsYXNzIGZvciBPYnNpZGlhbiBwbHVnaW5zIHVzaW5nIGEgY29tcG9uZW50LWJhc2VkIGFyY2hpdGVjdHVyZS5cbiAqXG4gKiBQbHVnaW5CYXNlIHJlZ2lzdGVycyB1bml2ZXJzYWwgY29tcG9uZW50cyAoY29udGV4dCwgaTE4biwgZXJyb3IgaGFuZGxpbmcsIGFib3J0IHNpZ25hbCwgbGlmZWN5Y2xlIGV2ZW50cywgZGVidWcpLlxuICogU3ViY2xhc3NlcyBhZGQgdGhlaXIgb3duIGNvbXBvbmVudHMgdmlhIHtAbGluayByZWdpc3RlckNvbXBvbmVudH0gaW4gdGhlaXIgY29uc3RydWN0b3IuXG4gKiBBbnkgdW5pdmVyc2FsIGNvbXBvbmVudCBjYW4gYmUgcmVwbGFjZWQgYnkgY2FsbGluZyB7QGxpbmsgcmVnaXN0ZXJDb21wb25lbnR9IHdpdGggYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHNhbWUgY2xhc3MuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFBsdWdpbk1hbmlmZXN0XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBOb3RpY2UsXG4gIFBsdWdpbiBhcyBPYnNpZGlhblBsdWdpblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0LXJlYWR5LWNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5IH0gZnJvbSAnLi4vLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yLnRzJztcbmltcG9ydCB7IGJ5cGFzc1N0cmljdFByb3h5IH0gZnJvbSAnLi4vLi4vc3RyaWN0LXByb3h5LnRzJztcbmltcG9ydCB7IGxvYWRDaGlsZHJlbkZpcnN0QXN5bmMgfSBmcm9tICcuLi9jb21wb25lbnRzL2FzeW5jLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBBYm9ydFNpZ25hbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmltcG9ydCB7IENvbnNvbGVEZWJ1Z0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb25zb2xlLWRlYnVnLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBJMThuQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2kxOG4tY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFBsdWdpbkNvbnRleHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBFbXB0eVBsdWdpblNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbnRlcmZhY2UgQ29tcG9uZW50Q2xhc3NXaXRoS2V5IHtcbiAgQ09NUE9ORU5UX0tFWTogc3ltYm9sO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIE9ic2lkaWFuIHBsdWdpbnMgd2l0aCBhIGNvbXBvbmVudC1iYXNlZCBhcmNoaXRlY3R1cmUuXG4gKlxuICogUmVnaXN0ZXJzIHVuaXZlcnNhbCBjb21wb25lbnRzIGF1dG9tYXRpY2FsbHkuIFN1YmNsYXNzZXMgYWRkIG9yIHJlcGxhY2UgY29tcG9uZW50c1xuICogdmlhIHtAbGluayByZWdpc3RlckNvbXBvbmVudH0gaW4gdGhlaXIgY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5CYXNlIGV4dGVuZHMgT2JzaWRpYW5QbHVnaW4ge1xuICAvKipcbiAgICogVGhlIGFib3J0IHNpZ25hbCBjb21wb25lbnQuIEFib3J0ZWQgd2hlbiB0aGUgcGx1Z2luIGlzIHVubG9hZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFib3J0U2lnbmFsQ29tcG9uZW50OiBBYm9ydFNpZ25hbENvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIGNvbnNvbGUgZGVidWcgY29tcG9uZW50LiBQcm92aWRlcyBuYW1lc3BhY2VkIGRlYnVnIGxvZ2dpbmcuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uc29sZURlYnVnQ29tcG9uZW50OiBDb25zb2xlRGVidWdDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBub3RpY2UgY29tcG9uZW50LiBEaXNwbGF5cyBub3RpY2VzIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50LiBNYW5hZ2VzIHBsdWdpbiBzZXR0aW5ncyBsaWZlY3ljbGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2luZ2xldG9uQ29tcG9uZW50cyA9IG5ldyBNYXA8c3ltYm9sLCBDb21wb25lbnQ+KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUGx1Z2luQmFzZS5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIFRoZSBwbHVnaW4gbWFuaWZlc3QuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoYXBwOiBBcHAsIG1hbmlmZXN0OiBQbHVnaW5NYW5pZmVzdCkge1xuICAgIHN1cGVyKGFwcCwgbWFuaWZlc3QpO1xuXG4gICAgdGhpcy5hZGRDaGlsZChuZXcgUGx1Z2luQ29udGV4dENvbXBvbmVudChhcHAsIG1hbmlmZXN0LmlkKSk7XG4gICAgdGhpcy5hZGRDaGlsZChuZXcgSTE4bkNvbXBvbmVudCgpKTtcbiAgICB0aGlzLm5vdGljZUNvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IFBsdWdpbk5vdGljZUNvbXBvbmVudChtYW5pZmVzdC5uYW1lKSk7XG4gICAgdGhpcy5hZGRDaGlsZChuZXcgQXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQodGhpcy5ub3RpY2VDb21wb25lbnQpKTtcbiAgICB0aGlzLmFib3J0U2lnbmFsQ29tcG9uZW50ID0gdGhpcy5hZGRDaGlsZChuZXcgQWJvcnRTaWduYWxDb21wb25lbnQobWFuaWZlc3QuaWQpKTtcbiAgICB0aGlzLmNvbnNvbGVEZWJ1Z0NvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IENvbnNvbGVEZWJ1Z0NvbXBvbmVudChtYW5pZmVzdC5pZCkpO1xuICAgIHRoaXMuc2V0dGluZ3NDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBFbXB0eVBsdWdpblNldHRpbmdzQ29tcG9uZW50KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb21wb25lbnQgdG8gdGhlIHBsdWdpbi5cbiAgICpcbiAgICogSWYgdGhlIGNvbXBvbmVudCdzIGNsYXNzIGRlZmluZXMgYSBzdGF0aWMgYENPTVBPTkVOVF9LRVlgIHN5bWJvbCwgaXQgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZXRvbiBcdTIwMTRcbiAgICogYWRkaW5nIGFub3RoZXIgY29tcG9uZW50IHdpdGggdGhlIHNhbWUga2V5IHJlcGxhY2VzIHRoZSBwcmV2aW91cyBvbmUuXG4gICAqIENvbXBvbmVudHMgd2l0aG91dCBhIGBDT01QT05FTlRfS0VZYCBhcmUgbXVsdGktaW5zdGFuY2UgYW5kIHNpbXBseSBhZGRlZC5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIGNvbXBvbmVudCB0eXBlLlxuICAgKiBAcGFyYW0gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0byBhZGQuXG4gICAqIEByZXR1cm5zIFRoZSBhZGRlZCBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYWRkQ2hpbGQ8VCBleHRlbmRzIENvbXBvbmVudD4oY29tcG9uZW50OiBUKTogVCB7XG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xuICAgICAgcmV0dXJuIHN1cGVyLmFkZENoaWxkKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2luZ2xldG9uS2V5ID0gKGNvbXBvbmVudC5jb25zdHJ1Y3RvciBhcyBQYXJ0aWFsPENvbXBvbmVudENsYXNzV2l0aEtleT4pLkNPTVBPTkVOVF9LRVk7XG5cbiAgICBpZiAoc2luZ2xldG9uS2V5KSB7XG4gICAgICBjb25zdCBvbGRDb21wb25lbnQgPSB0aGlzLnNpbmdsZXRvbkNvbXBvbmVudHMuZ2V0KHNpbmdsZXRvbktleSk7XG4gICAgICBpZiAob2xkQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQob2xkQ29tcG9uZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2luZ2xldG9uQ29tcG9uZW50cy5zZXQoc2luZ2xldG9uS2V5LCBjb21wb25lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5hZGRDaGlsZChjb21wb25lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBwbHVnaW4gYW5kIGl0cyBjb21wb25lbnRzLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXByb21pc2VzIC0tIE9ic2lkaWFuJ3MgbG9hZCgpIGhhbmRsZXMgYXN5bmMgcmV0dXJucyBhdCBydW50aW1lLlxuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBsb2FkQ2hpbGRyZW5GaXJzdEFzeW5jKHRoaXMpO1xuICAgIHRoaXMuYXBwLndvcmtzcGFjZS5vbkxheW91dFJlYWR5KCgpID0+IHtcbiAgICAgIGludm9rZUFzeW5jU2FmZWx5QWZ0ZXJEZWxheShcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGF3YWl0IChieXBhc3NTdHJpY3RQcm94eShjaGlsZCkgYXMgUGFydGlhbDxMYXlvdXRSZWFkeUNvbXBvbmVudD4pLm9uTGF5b3V0UmVhZHk/LigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgMCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB0aGlzLmFib3J0U2lnbmFsQ29tcG9uZW50LmFib3J0U2lnbmFsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBjaGFuZ2UuXG4gICAqXG4gICAqIE92ZXJyaWRlIGluIHN1YmNsYXNzIGlmIG5lZWRlZC4gTWFrZSBzdXJlIHRvIGNhbGwgYGF3YWl0IHN1cGVyLm9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpYCBmaXJzdC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIub25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlPy4oKTtcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzQ29tcG9uZW50Lm9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgc3BlY2lmaWVkIHBsdWdpbiBieSBkaXNhYmxpbmcgYW5kIHRoZW4gcmUtZW5hYmxpbmcgaXQuXG4gKlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdG8gcmVsb2FkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwbHVnaW4gaXMgcmVsb2FkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWxvYWRQbHVnaW4ocGx1Z2luOiBPYnNpZGlhblBsdWdpbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwbHVnaW5zID0gcGx1Z2luLmFwcC5wbHVnaW5zO1xuICBjb25zdCBwbHVnaW5JZCA9IHBsdWdpbi5tYW5pZmVzdC5pZDtcbiAgYXdhaXQgcGx1Z2lucy5kaXNhYmxlUGx1Z2luKHBsdWdpbklkKTtcbiAgYXdhaXQgcGx1Z2lucy5lbmFibGVQbHVnaW4ocGx1Z2luSWQpO1xufVxuXG4vKipcbiAqIERpc3BsYXlzIGFuIGVycm9yIG1lc3NhZ2UgYXMgYSBub3RpY2UsIGxvZ3MgaXQgdG8gdGhlIGNvbnNvbGUsIGFuZCBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byBkaXNhYmxlLlxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5IGFuZCBsb2cuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHBsdWdpbiBpcyBkaXNhYmxlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3dFcnJvckFuZERpc2FibGVQbHVnaW4ocGx1Z2luOiBPYnNpZGlhblBsdWdpbiwgbWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIG5ldyBOb3RpY2UobWVzc2FnZSk7XG4gIHByaW50RXJyb3IobmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgYXdhaXQgcGx1Z2luLmFwcC5wbHVnaW5zLmRpc2FibGVQbHVnaW4ocGx1Z2luLm1hbmlmZXN0LmlkKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFlQSxzQkFJTztBQUtQLG1CQUE0QztBQUM1QyxtQkFBMkI7QUFDM0IsMEJBQWtDO0FBQ2xDLDZCQUF1QztBQUN2QyxvQ0FBcUM7QUFDckMsMkNBQTJDO0FBQzNDLHFDQUFzQztBQUN0Qyw0QkFBOEI7QUFDOUIsc0NBQXVDO0FBQ3ZDLHFDQUFzQztBQUN0Qyx1Q0FBNkM7QUFZdEMsTUFBZSxtQkFBbUIsZ0JBQUFBLE9BQWU7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUluQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBLEVBRUYsc0JBQXNCLG9CQUFJLElBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRM0QsWUFBWSxLQUFVLFVBQTBCO0FBQ3JELFVBQU0sS0FBSyxRQUFRO0FBRW5CLFNBQUssU0FBUyxJQUFJLHVEQUF1QixLQUFLLFNBQVMsRUFBRSxDQUFDO0FBQzFELFNBQUssU0FBUyxJQUFJLG9DQUFjLENBQUM7QUFDakMsU0FBSyxrQkFBa0IsS0FBSyxTQUFTLElBQUkscURBQXNCLFNBQVMsSUFBSSxDQUFDO0FBQzdFLFNBQUssU0FBUyxJQUFJLGdFQUEyQixLQUFLLGVBQWUsQ0FBQztBQUNsRSxTQUFLLHVCQUF1QixLQUFLLFNBQVMsSUFBSSxtREFBcUIsU0FBUyxFQUFFLENBQUM7QUFDL0UsU0FBSyx3QkFBd0IsS0FBSyxTQUFTLElBQUkscURBQXNCLFNBQVMsRUFBRSxDQUFDO0FBQ2pGLFNBQUssb0JBQW9CLEtBQUssU0FBUyxJQUFJLDhEQUE2QixDQUFDO0FBQUEsRUFDM0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFhZ0IsU0FBOEIsV0FBaUI7QUFDN0QsUUFBSSxLQUFLLFNBQVM7QUFDaEIsYUFBTyxNQUFNLFNBQVMsU0FBUztBQUFBLElBQ2pDO0FBRUEsVUFBTSxlQUFnQixVQUFVLFlBQStDO0FBRS9FLFFBQUksY0FBYztBQUNoQixZQUFNLGVBQWUsS0FBSyxvQkFBb0IsSUFBSSxZQUFZO0FBQzlELFVBQUksY0FBYztBQUNoQixhQUFLLFlBQVksWUFBWTtBQUFBLE1BQy9CO0FBQ0EsV0FBSyxvQkFBb0IsSUFBSSxjQUFjLFNBQVM7QUFBQSxJQUN0RDtBQUVBLFdBQU8sTUFBTSxTQUFTLFNBQVM7QUFBQSxFQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxNQUFzQixPQUFzQjtBQUMxQyxjQUFNLCtDQUF1QixJQUFJO0FBQ2pDLFNBQUssSUFBSSxVQUFVLGNBQWMsTUFBTTtBQUNyQztBQUFBLFFBQ0UsWUFBWTtBQUNWLHFCQUFXLFNBQVMsS0FBSyxXQUFXO0FBQ2xDLHNCQUFPLHVDQUFrQixLQUFLLEVBQW9DLGdCQUFnQjtBQUFBLFVBQ3BGO0FBQUEsUUFDRjtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQSxLQUFLLHFCQUFxQjtBQUFBLE1BQzVCO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE1BQXNCLDJCQUEwQztBQUM5RCxVQUFNLE1BQU0sMkJBQTJCO0FBQ3ZDLFVBQU0sS0FBSyxrQkFBa0IseUJBQXlCO0FBQUEsRUFDeEQ7QUFDRjtBQVFBLGVBQXNCLGFBQWEsUUFBdUM7QUFDeEUsUUFBTSxVQUFVLE9BQU8sSUFBSTtBQUMzQixRQUFNLFdBQVcsT0FBTyxTQUFTO0FBQ2pDLFFBQU0sUUFBUSxjQUFjLFFBQVE7QUFDcEMsUUFBTSxRQUFRLGFBQWEsUUFBUTtBQUNyQztBQVNBLGVBQXNCLDBCQUEwQixRQUF3QixTQUFnQztBQUN0RyxNQUFJLHVCQUFPLE9BQU87QUFDbEIsK0JBQVcsSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUM3QixRQUFNLE9BQU8sSUFBSSxRQUFRLGNBQWMsT0FBTyxTQUFTLEVBQUU7QUFDM0Q7IiwKICAibmFtZXMiOiBbIk9ic2lkaWFuUGx1Z2luIl0KfQo=
@@ -12,25 +12,7 @@ import { Component, Plugin as ObsidianPlugin } from 'obsidian';
12
12
  import type { PluginSettingsComponentBase } from './components/plugin-settings-component.cjs';
13
13
  import { AbortSignalComponent } from './components/abort-signal-component.cjs';
14
14
  import { ConsoleDebugComponent } from './components/console-debug-component.cjs';
15
- import { LifecycleEventsComponent } from './components/lifecycle-events-component.cjs';
16
15
  import { PluginNoticeComponent } from './components/plugin-notice-component.cjs';
17
- /**
18
- * Params for {@link PluginBase.registerComponent}.
19
- *
20
- * @typeParam T - The component type.
21
- */
22
- export interface RegisterComponentParams<T extends Component = Component> {
23
- /**
24
- * The component to register.
25
- */
26
- readonly component: T;
27
- /**
28
- * Whether this component should be loaded before the plugin's `onloadImpl()` runs.
29
- * Components marked with this flag are force-loaded during `onload()`, ensuring they are
30
- * fully initialized before plugin logic executes.
31
- */
32
- readonly shouldPreload?: boolean;
33
- }
34
16
  /**
35
17
  * Base class for creating Obsidian plugins with a component-based architecture.
36
18
  *
@@ -46,10 +28,6 @@ export declare abstract class PluginBase extends ObsidianPlugin {
46
28
  * The console debug component. Provides namespaced debug logging.
47
29
  */
48
30
  protected readonly consoleDebugComponent: ConsoleDebugComponent;
49
- /**
50
- * The lifecycle events component. Provides load, layoutReady, and unload events.
51
- */
52
- protected readonly lifecycleEventsComponent: LifecycleEventsComponent;
53
31
  /**
54
32
  * The notice component. Displays notices to the user.
55
33
  */
@@ -58,7 +36,6 @@ export declare abstract class PluginBase extends ObsidianPlugin {
58
36
  * The settings component. Manages plugin settings lifecycle.
59
37
  */
60
38
  protected readonly settingsComponent: PluginSettingsComponentBase<object>;
61
- private readonly preloadComponents;
62
39
  private readonly singletonComponents;
63
40
  /**
64
41
  * Creates a new PluginBase.
@@ -68,42 +45,27 @@ export declare abstract class PluginBase extends ObsidianPlugin {
68
45
  */
69
46
  constructor(app: App, manifest: PluginManifest);
70
47
  /**
71
- * Called when the external settings change.
48
+ * Adds a component to the plugin.
72
49
  *
73
- * Override in subclass if needed. Make sure to call `await super.onExternalSettingsChange()` first.
74
- */
75
- onExternalSettingsChange(): Promise<void>;
76
- /**
77
- * Called when the plugin is loaded. Force-loads components that must be ready
78
- * before plugin logic, then calls `onloadImpl()`.
50
+ * If the component's class defines a static `COMPONENT_KEY` symbol, it is treated as a singleton —
51
+ * adding another component with the same key replaces the previous one.
52
+ * Components without a `COMPONENT_KEY` are multi-instance and simply added.
79
53
  *
80
- * Usually, you don't need to override this method. Override {@link onloadImpl} instead.
81
- */
82
- onload(): Promise<void>;
83
- /**
84
- * Called when the layout is ready.
54
+ * @typeParam T - The component type.
55
+ * @param component - The component to add.
56
+ * @returns The added component.
85
57
  */
86
- protected onLayoutReady(): Promise<void>;
58
+ addChild<T extends Component>(component: T): T;
87
59
  /**
88
- * Called after all pre-load components are initialized. Override this to add plugin-specific logic.
89
- *
90
- * @remarks It is important to call `super.onloadImpl()` in overridden method.
60
+ * Loads the plugin and its components.
91
61
  */
92
- protected onloadImpl(): Promise<void>;
62
+ load(): Promise<void>;
93
63
  /**
94
- * Registers a component with the plugin.
95
- *
96
- * If the component's class defines a static `COMPONENT_KEY` symbol, it is treated as a singleton —
97
- * registering another component with the same key replaces the previous one.
98
- * Components without a `COMPONENT_KEY` are multi-instance and simply added.
64
+ * Called when the external settings change.
99
65
  *
100
- * @typeParam T - The component type.
101
- * @param params - The registration params.
102
- * @returns The registered component.
66
+ * Override in subclass if needed. Make sure to call `await super.onExternalSettingsChange()` first.
103
67
  */
104
- protected registerComponent<T extends Component>(params: RegisterComponentParams<T>): T;
105
- private afterLoad;
106
- private onLayoutReadyBase;
68
+ onExternalSettingsChange(): Promise<void>;
107
69
  }
108
70
  /**
109
71
  * Reloads the specified plugin by disabling and then re-enabling it.
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  const globalThisRecord = globalThis;
9
9
  globalThisRecord['__name'] ??= name;
10
10
  const originalRequire = require;
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
84
84
  return originalRequire?.(id);
85
85
  }
86
86
 
87
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
88
  if (globalThis.app.isMobile) {
89
89
  if (id === 'process' || id === 'node:process') {
90
90
  // eslint-disable-next-line no-console -- Valid usage.
91
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/prefer-active-doc -- Actively use globalThis.
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
93
  return globalThis.process;
94
94
  }
95
95
  } else {