obsidian-dev-utils 65.0.0 → 66.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 (402) hide show
  1. package/CHANGELOG.md +36 -8
  2. package/dist/dev/main.js +4892 -4807
  3. package/dist/lib/cjs/async-events.cjs +15 -18
  4. package/dist/lib/cjs/async-events.d.cts +19 -19
  5. package/dist/lib/cjs/async.cjs +1 -1
  6. package/dist/lib/cjs/async.d.cts +9 -8
  7. package/dist/lib/cjs/function.cjs +1 -1
  8. package/dist/lib/cjs/function.d.cts +43 -3
  9. package/dist/lib/cjs/library.cjs +1 -1
  10. package/dist/lib/cjs/obsidian/@types/dataview/typings/obsidian-ex.d.cts +1 -1
  11. package/dist/lib/cjs/obsidian/async-with-notice.cjs +1 -1
  12. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +2 -2
  13. package/dist/lib/cjs/obsidian/{plugin/components → components}/abort-signal-component.cjs +4 -4
  14. package/dist/lib/cjs/obsidian/{plugin/components → components}/abort-signal-component.d.cts +2 -2
  15. package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +201 -0
  16. package/dist/lib/{esm/obsidian/components/all-windows-event-handler.d.mts → cjs/obsidian/components/all-windows-event-component.d.cts} +6 -7
  17. package/dist/lib/cjs/obsidian/components/async-component.cjs +3 -2
  18. package/dist/lib/cjs/obsidian/components/async-component.d.cts +2 -1
  19. package/dist/lib/cjs/obsidian/{plugin/components → components}/async-error-handler-component.cjs +5 -5
  20. package/dist/lib/cjs/obsidian/{plugin/components → components}/async-error-handler-component.d.cts +2 -2
  21. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +3 -2
  22. package/dist/lib/cjs/obsidian/components/async-events-component.d.cts +2 -1
  23. package/dist/lib/cjs/obsidian/{plugin/components → components}/console-debug-component.cjs +4 -4
  24. package/dist/lib/cjs/obsidian/{plugin/components → components}/console-debug-component.d.cts +2 -2
  25. package/dist/lib/cjs/obsidian/components/disposable-component.cjs +160 -0
  26. package/dist/lib/cjs/obsidian/components/disposable-component.d.cts +34 -0
  27. package/dist/lib/cjs/obsidian/{plugin/components → components}/i18n-component.cjs +4 -4
  28. package/dist/lib/cjs/obsidian/{plugin/components → components}/i18n-component.d.cts +2 -2
  29. package/dist/lib/cjs/obsidian/components/index.cjs +40 -7
  30. package/dist/lib/cjs/obsidian/components/index.d.cts +13 -2
  31. package/dist/lib/cjs/obsidian/components/layout-ready-component.cjs +185 -0
  32. package/dist/lib/cjs/obsidian/components/layout-ready-component.d.cts +47 -0
  33. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.cjs +172 -0
  34. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.d.cts +41 -0
  35. package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +197 -0
  36. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +113 -0
  37. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-context-component.cjs +6 -6
  38. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-context-component.d.cts +2 -2
  39. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-notice-component.cjs +3 -2
  40. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-notice-component.d.cts +2 -2
  41. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +534 -0
  42. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-settings-component.d.cts +6 -21
  43. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-settings-tab-component.cjs +3 -2
  44. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-settings-tab-component.d.cts +5 -5
  45. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +20 -16
  46. package/dist/lib/cjs/obsidian/dataview.cjs +1 -1
  47. package/dist/lib/cjs/obsidian/dataview.d.cts +1 -1
  48. package/dist/lib/cjs/obsidian/index.cjs +7 -4
  49. package/dist/lib/cjs/obsidian/index.d.cts +2 -1
  50. package/dist/lib/cjs/obsidian/loop.cjs +1 -1
  51. package/dist/lib/cjs/obsidian/loop.d.cts +2 -2
  52. package/dist/lib/cjs/obsidian/markdown.cjs +13 -7
  53. package/dist/lib/cjs/obsidian/menu-event-registrar.cjs +1 -50
  54. package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -35
  55. package/dist/lib/cjs/obsidian/modals/prompt.cjs +1 -1
  56. package/dist/lib/cjs/obsidian/modals/prompt.d.cts +1 -1
  57. package/dist/lib/cjs/obsidian/modals/select-item.cjs +1 -1
  58. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -1
  59. package/dist/lib/cjs/obsidian/path-settings.cjs +239 -0
  60. package/dist/lib/cjs/obsidian/plugin/index.cjs +1 -7
  61. package/dist/lib/cjs/obsidian/plugin/index.d.cts +0 -2
  62. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +4 -4
  63. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.d.cts +5 -5
  64. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +40 -34
  65. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +16 -13
  66. package/dist/lib/cjs/obsidian/queue.cjs +1 -1
  67. package/dist/lib/cjs/obsidian/queue.d.cts +2 -2
  68. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +19 -12
  69. package/dist/lib/cjs/obsidian/setting-components/checkbox-component.cjs +209 -0
  70. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/checkbox-component.d.cts +1 -1
  71. package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.cjs +356 -0
  72. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/code-highlighter-component.d.cts +1 -1
  73. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/date-component.cjs +3 -3
  74. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/date-time-component.cjs +3 -3
  75. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/email-component.cjs +2 -2
  76. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/file-component.cjs +2 -2
  77. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/index.cjs +1 -1
  78. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/month-component.cjs +3 -3
  79. package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.cjs +241 -0
  80. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-dropdown-component.d.cts +1 -1
  81. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-email-component.cjs +2 -2
  82. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-file-component.cjs +3 -3
  83. package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.cjs +254 -0
  84. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-text-component.d.cts +1 -1
  85. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/number-component.cjs +2 -2
  86. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/password-component.cjs +2 -2
  87. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/setting-component-wrapper.cjs +4 -4
  88. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/telephone-component.cjs +2 -2
  89. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/text-based-component.cjs +1 -1
  90. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/time-component.cjs +2 -2
  91. package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.cjs +210 -0
  92. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/tri-state-checkbox-component.d.cts +1 -1
  93. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.cjs +247 -0
  94. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-dropdown-component.d.cts +1 -1
  95. package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.cjs +249 -0
  96. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-multiple-dropdown-component.d.cts +1 -1
  97. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-range-text-component.cjs +1 -1
  98. package/dist/lib/cjs/obsidian/setting-components/typed-text-component.cjs +224 -0
  99. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-text-component.d.cts +2 -2
  100. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/url-component.cjs +2 -2
  101. package/dist/lib/cjs/obsidian/setting-components/validator-component.cjs +226 -0
  102. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/validator-component.d.cts +1 -1
  103. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/value-component-with-change-tracking.cjs +1 -1
  104. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/week-component.cjs +3 -3
  105. package/dist/lib/cjs/obsidian/setting-ex.cjs +21 -21
  106. package/dist/lib/cjs/obsidian/setting-ex.d.cts +20 -20
  107. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -1
  108. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +2 -2
  109. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +2 -1
  110. package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +2 -2
  111. package/dist/lib/cjs/type.cjs +1 -1
  112. package/dist/lib/esm/async-events.d.mts +19 -19
  113. package/dist/lib/esm/async-events.mjs +15 -18
  114. package/dist/lib/esm/async.d.mts +9 -8
  115. package/dist/lib/esm/async.mjs +1 -1
  116. package/dist/lib/esm/function.d.mts +43 -3
  117. package/dist/lib/esm/function.mjs +1 -1
  118. package/dist/lib/esm/library.mjs +1 -1
  119. package/dist/lib/esm/obsidian/@types/dataview/typings/obsidian-ex.d.mts +1 -1
  120. package/dist/lib/esm/obsidian/async-with-notice.d.mts +2 -2
  121. package/dist/lib/esm/obsidian/async-with-notice.mjs +1 -1
  122. package/dist/lib/esm/obsidian/{plugin/components → components}/abort-signal-component.d.mts +2 -2
  123. package/dist/lib/esm/obsidian/components/abort-signal-component.mjs +59 -0
  124. package/dist/lib/{cjs/obsidian/components/all-windows-event-handler.d.cts → esm/obsidian/components/all-windows-event-component.d.mts} +6 -7
  125. package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +93 -0
  126. package/dist/lib/esm/obsidian/components/async-component.d.mts +2 -1
  127. package/dist/lib/esm/obsidian/components/async-component.mjs +3 -2
  128. package/dist/lib/esm/obsidian/{plugin/components → components}/async-error-handler-component.d.mts +2 -2
  129. package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +62 -0
  130. package/dist/lib/esm/obsidian/components/async-events-component.d.mts +2 -1
  131. package/dist/lib/esm/obsidian/components/async-events-component.mjs +3 -2
  132. package/dist/lib/esm/obsidian/{plugin/components → components}/console-debug-component.d.mts +2 -2
  133. package/dist/lib/esm/obsidian/components/console-debug-component.mjs +56 -0
  134. package/dist/lib/esm/obsidian/components/disposable-component.d.mts +34 -0
  135. package/dist/lib/esm/obsidian/components/disposable-component.mjs +50 -0
  136. package/dist/lib/esm/obsidian/{plugin/components → components}/i18n-component.d.mts +2 -2
  137. package/dist/lib/esm/obsidian/components/i18n-component.mjs +53 -0
  138. package/dist/lib/esm/obsidian/components/index.d.mts +13 -2
  139. package/dist/lib/esm/obsidian/components/index.mjs +27 -5
  140. package/dist/lib/esm/obsidian/components/layout-ready-component.d.mts +47 -0
  141. package/dist/lib/esm/obsidian/components/layout-ready-component.mjs +76 -0
  142. package/dist/lib/esm/obsidian/components/menu-event-registrar-component.d.mts +41 -0
  143. package/dist/lib/esm/obsidian/components/menu-event-registrar-component.mjs +64 -0
  144. package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +113 -0
  145. package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +87 -0
  146. package/dist/lib/esm/obsidian/{plugin/components → components}/plugin-context-component.d.mts +2 -2
  147. package/dist/lib/esm/obsidian/components/plugin-context-component.mjs +61 -0
  148. package/dist/lib/esm/obsidian/{plugin/components → components}/plugin-notice-component.d.mts +2 -2
  149. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +58 -0
  150. package/dist/lib/esm/obsidian/{plugin/components → components}/plugin-settings-component.d.mts +6 -21
  151. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +433 -0
  152. package/dist/lib/esm/obsidian/{plugin/components → components}/plugin-settings-tab-component.d.mts +5 -5
  153. package/dist/lib/esm/obsidian/components/plugin-settings-tab-component.mjs +50 -0
  154. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +20 -16
  155. package/dist/lib/esm/obsidian/dataview.d.mts +1 -1
  156. package/dist/lib/esm/obsidian/dataview.mjs +1 -1
  157. package/dist/lib/esm/obsidian/index.d.mts +2 -1
  158. package/dist/lib/esm/obsidian/index.mjs +5 -3
  159. package/dist/lib/esm/obsidian/loop.d.mts +2 -2
  160. package/dist/lib/esm/obsidian/loop.mjs +1 -1
  161. package/dist/lib/esm/obsidian/markdown.mjs +13 -7
  162. package/dist/lib/esm/obsidian/menu-event-registrar.d.mts +1 -35
  163. package/dist/lib/esm/obsidian/menu-event-registrar.mjs +1 -42
  164. package/dist/lib/esm/obsidian/modals/prompt.d.mts +1 -1
  165. package/dist/lib/esm/obsidian/modals/prompt.mjs +1 -1
  166. package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -1
  167. package/dist/lib/esm/obsidian/modals/select-item.mjs +1 -1
  168. package/dist/lib/esm/obsidian/path-settings.mjs +135 -0
  169. package/dist/lib/esm/obsidian/plugin/index.d.mts +0 -2
  170. package/dist/lib/esm/obsidian/plugin/index.mjs +1 -5
  171. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.d.mts +5 -5
  172. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +4 -4
  173. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +16 -13
  174. package/dist/lib/esm/obsidian/plugin/plugin.mjs +40 -34
  175. package/dist/lib/esm/obsidian/queue.d.mts +2 -2
  176. package/dist/lib/esm/obsidian/queue.mjs +1 -1
  177. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +22 -12
  178. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/checkbox-component.d.mts +1 -1
  179. package/dist/lib/esm/obsidian/setting-components/checkbox-component.mjs +101 -0
  180. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/code-highlighter-component.d.mts +1 -1
  181. package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.mjs +254 -0
  182. package/dist/lib/esm/obsidian/setting-components/date-component.mjs +62 -0
  183. package/dist/lib/esm/obsidian/setting-components/date-time-component.mjs +62 -0
  184. package/dist/lib/esm/obsidian/setting-components/email-component.mjs +72 -0
  185. package/dist/lib/esm/obsidian/setting-components/file-component.mjs +66 -0
  186. package/dist/lib/esm/obsidian/setting-components/index.mjs +78 -0
  187. package/dist/lib/esm/obsidian/setting-components/month-component.mjs +70 -0
  188. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/multiple-dropdown-component.d.mts +1 -1
  189. package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.mjs +136 -0
  190. package/dist/lib/esm/obsidian/setting-components/multiple-email-component.mjs +59 -0
  191. package/dist/lib/esm/obsidian/setting-components/multiple-file-component.mjs +68 -0
  192. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/multiple-text-component.d.mts +1 -1
  193. package/dist/lib/esm/obsidian/setting-components/multiple-text-component.mjs +149 -0
  194. package/dist/lib/esm/obsidian/setting-components/number-component.mjs +82 -0
  195. package/dist/lib/esm/obsidian/setting-components/password-component.mjs +58 -0
  196. package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.mjs +45 -0
  197. package/dist/lib/esm/obsidian/setting-components/telephone-component.mjs +72 -0
  198. package/dist/lib/esm/obsidian/setting-components/text-based-component.mjs +58 -0
  199. package/dist/lib/esm/obsidian/setting-components/time-component.mjs +67 -0
  200. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/tri-state-checkbox-component.d.mts +1 -1
  201. package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.mjs +102 -0
  202. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/typed-dropdown-component.d.mts +1 -1
  203. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.mjs +142 -0
  204. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/typed-multiple-dropdown-component.d.mts +1 -1
  205. package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.mjs +141 -0
  206. package/dist/lib/esm/obsidian/setting-components/typed-range-text-component.mjs +60 -0
  207. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/typed-text-component.d.mts +2 -2
  208. package/dist/lib/esm/obsidian/setting-components/typed-text-component.mjs +119 -0
  209. package/dist/lib/esm/obsidian/setting-components/url-component.mjs +72 -0
  210. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/validator-component.d.mts +1 -1
  211. package/dist/lib/esm/obsidian/setting-components/validator-component.mjs +127 -0
  212. package/dist/lib/esm/obsidian/setting-components/week-component.mjs +70 -0
  213. package/dist/lib/esm/obsidian/setting-ex.d.mts +20 -20
  214. package/dist/lib/esm/obsidian/setting-ex.mjs +21 -21
  215. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +2 -2
  216. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
  217. package/dist/lib/esm/script-utils/linters/eslint-config.d.mts +2 -2
  218. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +2 -1
  219. package/dist/lib/esm/type.mjs +1 -1
  220. package/obsidian/Components/abort-signal-component/package.json +6 -0
  221. package/obsidian/Components/{all-windows-event-handler → all-windows-event-component}/package.json +3 -3
  222. package/obsidian/Components/async-error-handler-component/package.json +6 -0
  223. package/obsidian/Components/console-debug-component/package.json +6 -0
  224. package/obsidian/Components/disposable-component/package.json +6 -0
  225. package/obsidian/Components/i18n-component/package.json +6 -0
  226. package/obsidian/Components/layout-ready-component/package.json +6 -0
  227. package/obsidian/Components/menu-event-registrar-component/package.json +6 -0
  228. package/obsidian/Components/monkey-around-component/package.json +6 -0
  229. package/obsidian/Components/plugin-context-component/package.json +6 -0
  230. package/obsidian/Components/plugin-notice-component/package.json +6 -0
  231. package/obsidian/Components/plugin-settings-component/package.json +6 -0
  232. package/obsidian/Components/plugin-settings-tab-component/package.json +6 -0
  233. package/obsidian/path-settings/package.json +6 -0
  234. package/obsidian/setting-components/checkbox-component/package.json +6 -0
  235. package/obsidian/setting-components/code-highlighter-component/package.json +6 -0
  236. package/obsidian/setting-components/date-component/package.json +6 -0
  237. package/obsidian/setting-components/date-time-component/package.json +6 -0
  238. package/obsidian/setting-components/email-component/package.json +6 -0
  239. package/obsidian/setting-components/file-component/package.json +6 -0
  240. package/obsidian/setting-components/index/package.json +6 -0
  241. package/obsidian/setting-components/month-component/package.json +6 -0
  242. package/obsidian/setting-components/multiple-dropdown-component/package.json +6 -0
  243. package/obsidian/setting-components/multiple-email-component/package.json +6 -0
  244. package/obsidian/setting-components/multiple-file-component/package.json +6 -0
  245. package/obsidian/setting-components/multiple-text-component/package.json +6 -0
  246. package/obsidian/setting-components/number-component/package.json +6 -0
  247. package/obsidian/setting-components/package.json +6 -0
  248. package/obsidian/setting-components/password-component/package.json +6 -0
  249. package/obsidian/setting-components/setting-component-wrapper/package.json +6 -0
  250. package/obsidian/setting-components/telephone-component/package.json +6 -0
  251. package/obsidian/setting-components/text-based-component/package.json +6 -0
  252. package/obsidian/setting-components/time-component/package.json +6 -0
  253. package/obsidian/setting-components/tri-state-checkbox-component/package.json +6 -0
  254. package/obsidian/setting-components/typed-dropdown-component/package.json +6 -0
  255. package/obsidian/setting-components/typed-multiple-dropdown-component/package.json +6 -0
  256. package/obsidian/setting-components/typed-range-text-component/package.json +6 -0
  257. package/obsidian/setting-components/typed-text-component/package.json +6 -0
  258. package/obsidian/setting-components/url-component/package.json +6 -0
  259. package/obsidian/setting-components/validator-component/package.json +6 -0
  260. package/obsidian/setting-components/value-component-with-change-tracking/package.json +6 -0
  261. package/obsidian/setting-components/week-component/package.json +6 -0
  262. package/package.json +23 -43
  263. package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +0 -196
  264. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +0 -209
  265. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +0 -356
  266. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +0 -241
  267. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +0 -254
  268. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +0 -210
  269. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +0 -247
  270. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +0 -249
  271. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +0 -224
  272. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +0 -226
  273. package/dist/lib/cjs/obsidian/monkey-around.cjs +0 -177
  274. package/dist/lib/cjs/obsidian/monkey-around.d.cts +0 -62
  275. package/dist/lib/cjs/obsidian/plugin/components/index.cjs +0 -170
  276. package/dist/lib/cjs/obsidian/plugin/components/index.d.cts +0 -9
  277. package/dist/lib/cjs/obsidian/plugin/components/layout-ready-component.cjs +0 -124
  278. package/dist/lib/cjs/obsidian/plugin/components/layout-ready-component.d.cts +0 -18
  279. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +0 -563
  280. package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +0 -239
  281. package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +0 -88
  282. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +0 -101
  283. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +0 -254
  284. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +0 -62
  285. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +0 -62
  286. package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +0 -72
  287. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +0 -66
  288. package/dist/lib/esm/obsidian/components/setting-components/index.mjs +0 -78
  289. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +0 -70
  290. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +0 -136
  291. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +0 -59
  292. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +0 -68
  293. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +0 -149
  294. package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +0 -82
  295. package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +0 -58
  296. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +0 -45
  297. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +0 -72
  298. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +0 -58
  299. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +0 -67
  300. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +0 -102
  301. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +0 -142
  302. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +0 -141
  303. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +0 -60
  304. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +0 -119
  305. package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +0 -72
  306. package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +0 -127
  307. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +0 -70
  308. package/dist/lib/esm/obsidian/monkey-around.d.mts +0 -62
  309. package/dist/lib/esm/obsidian/monkey-around.mjs +0 -66
  310. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.mjs +0 -59
  311. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.mjs +0 -62
  312. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.mjs +0 -56
  313. package/dist/lib/esm/obsidian/plugin/components/i18n-component.mjs +0 -53
  314. package/dist/lib/esm/obsidian/plugin/components/index.d.mts +0 -9
  315. package/dist/lib/esm/obsidian/plugin/components/index.mjs +0 -44
  316. package/dist/lib/esm/obsidian/plugin/components/layout-ready-component.d.mts +0 -18
  317. package/dist/lib/esm/obsidian/plugin/components/layout-ready-component.mjs +0 -24
  318. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.mjs +0 -61
  319. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.mjs +0 -60
  320. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +0 -461
  321. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.mjs +0 -49
  322. package/dist/lib/esm/obsidian/plugin/path-settings.mjs +0 -135
  323. package/obsidian/Components/setting-components/checkbox-component/package.json +0 -6
  324. package/obsidian/Components/setting-components/code-highlighter-component/package.json +0 -6
  325. package/obsidian/Components/setting-components/date-component/package.json +0 -6
  326. package/obsidian/Components/setting-components/date-time-component/package.json +0 -6
  327. package/obsidian/Components/setting-components/email-component/package.json +0 -6
  328. package/obsidian/Components/setting-components/file-component/package.json +0 -6
  329. package/obsidian/Components/setting-components/index/package.json +0 -6
  330. package/obsidian/Components/setting-components/month-component/package.json +0 -6
  331. package/obsidian/Components/setting-components/multiple-dropdown-component/package.json +0 -6
  332. package/obsidian/Components/setting-components/multiple-email-component/package.json +0 -6
  333. package/obsidian/Components/setting-components/multiple-file-component/package.json +0 -6
  334. package/obsidian/Components/setting-components/multiple-text-component/package.json +0 -6
  335. package/obsidian/Components/setting-components/number-component/package.json +0 -6
  336. package/obsidian/Components/setting-components/package.json +0 -6
  337. package/obsidian/Components/setting-components/password-component/package.json +0 -6
  338. package/obsidian/Components/setting-components/setting-component-wrapper/package.json +0 -6
  339. package/obsidian/Components/setting-components/telephone-component/package.json +0 -6
  340. package/obsidian/Components/setting-components/text-based-component/package.json +0 -6
  341. package/obsidian/Components/setting-components/time-component/package.json +0 -6
  342. package/obsidian/Components/setting-components/tri-state-checkbox-component/package.json +0 -6
  343. package/obsidian/Components/setting-components/typed-dropdown-component/package.json +0 -6
  344. package/obsidian/Components/setting-components/typed-multiple-dropdown-component/package.json +0 -6
  345. package/obsidian/Components/setting-components/typed-range-text-component/package.json +0 -6
  346. package/obsidian/Components/setting-components/typed-text-component/package.json +0 -6
  347. package/obsidian/Components/setting-components/url-component/package.json +0 -6
  348. package/obsidian/Components/setting-components/validator-component/package.json +0 -6
  349. package/obsidian/Components/setting-components/value-component-with-change-tracking/package.json +0 -6
  350. package/obsidian/Components/setting-components/week-component/package.json +0 -6
  351. package/obsidian/Plugin/components/abort-signal-component/package.json +0 -6
  352. package/obsidian/Plugin/components/async-error-handler-component/package.json +0 -6
  353. package/obsidian/Plugin/components/console-debug-component/package.json +0 -6
  354. package/obsidian/Plugin/components/i18n-component/package.json +0 -6
  355. package/obsidian/Plugin/components/index/package.json +0 -6
  356. package/obsidian/Plugin/components/layout-ready-component/package.json +0 -6
  357. package/obsidian/Plugin/components/package.json +0 -6
  358. package/obsidian/Plugin/components/plugin-context-component/package.json +0 -6
  359. package/obsidian/Plugin/components/plugin-notice-component/package.json +0 -6
  360. package/obsidian/Plugin/components/plugin-settings-component/package.json +0 -6
  361. package/obsidian/Plugin/components/plugin-settings-tab-component/package.json +0 -6
  362. package/obsidian/Plugin/path-settings/package.json +0 -6
  363. package/obsidian/monkey-around/package.json +0 -6
  364. /package/dist/lib/cjs/obsidian/{plugin/path-settings.d.cts → path-settings.d.cts} +0 -0
  365. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/date-component.d.cts +0 -0
  366. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/date-time-component.d.cts +0 -0
  367. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/email-component.d.cts +0 -0
  368. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/file-component.d.cts +0 -0
  369. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/index.d.cts +0 -0
  370. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/month-component.d.cts +0 -0
  371. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-email-component.d.cts +0 -0
  372. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-file-component.d.cts +0 -0
  373. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/number-component.d.cts +0 -0
  374. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/password-component.d.cts +0 -0
  375. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/setting-component-wrapper.d.cts +0 -0
  376. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/telephone-component.d.cts +0 -0
  377. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/text-based-component.d.cts +0 -0
  378. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/time-component.d.cts +0 -0
  379. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-range-text-component.d.cts +0 -0
  380. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/url-component.d.cts +0 -0
  381. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/value-component-with-change-tracking.d.cts +0 -0
  382. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/week-component.d.cts +0 -0
  383. /package/dist/lib/esm/obsidian/{plugin/path-settings.d.mts → path-settings.d.mts} +0 -0
  384. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/date-component.d.mts +0 -0
  385. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/date-time-component.d.mts +0 -0
  386. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/email-component.d.mts +0 -0
  387. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/file-component.d.mts +0 -0
  388. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/index.d.mts +0 -0
  389. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/month-component.d.mts +0 -0
  390. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/multiple-email-component.d.mts +0 -0
  391. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/multiple-file-component.d.mts +0 -0
  392. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/number-component.d.mts +0 -0
  393. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/password-component.d.mts +0 -0
  394. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/setting-component-wrapper.d.mts +0 -0
  395. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/telephone-component.d.mts +0 -0
  396. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/text-based-component.d.mts +0 -0
  397. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/time-component.d.mts +0 -0
  398. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/typed-range-text-component.d.mts +0 -0
  399. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/url-component.d.mts +0 -0
  400. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/value-component-with-change-tracking.d.mts +0 -0
  401. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/value-component-with-change-tracking.mjs +0 -0
  402. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/week-component.d.mts +0 -0
@@ -0,0 +1,534 @@
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 plugin_settings_component_exports = {};
127
+ __export(plugin_settings_component_exports, {
128
+ PluginSettingsComponentBase: () => PluginSettingsComponentBase
129
+ });
130
+ module.exports = __toCommonJS(plugin_settings_component_exports);
131
+ var import_async_events = require('../../async-events.cjs');
132
+ var import_debug = require('../../debug.cjs');
133
+ var import_function = require('../../function.cjs');
134
+ var import_object_utils = require('../../object-utils.cjs');
135
+ var import_date_transformer = require('../../transformers/date-transformer.cjs');
136
+ var import_duration_transformer = require('../../transformers/duration-transformer.cjs');
137
+ var import_group_transformer = require('../../transformers/group-transformer.cjs');
138
+ var import_map_transformer = require('../../transformers/map-transformer.cjs');
139
+ var import_set_transformer = require('../../transformers/set-transformer.cjs');
140
+ var import_skip_private_property_transformer = require('../../transformers/skip-private-property-transformer.cjs');
141
+ var import_two_way_map_transformer = require('../../transformers/two-way-map-transformer.cjs');
142
+ var import_async_component = require('./async-component.cjs');
143
+ var import_async_events_component = require('./async-events-component.cjs');
144
+ const defaultTransformer = new import_group_transformer.GroupTransformer([
145
+ new import_skip_private_property_transformer.SkipPrivatePropertyTransformer(),
146
+ new import_date_transformer.DateTransformer(),
147
+ new import_duration_transformer.DurationTransformer(),
148
+ new import_map_transformer.MapTransformer(),
149
+ new import_set_transformer.SetTransformer(),
150
+ new import_two_way_map_transformer.TwoWayMapTransformer()
151
+ ]);
152
+ class PluginSettingsComponentBase extends import_async_component.AsyncComponentBase {
153
+ /**
154
+ * Creates a new plugin settings component.
155
+ *
156
+ * @param dataHandler - The data handler.
157
+ */
158
+ constructor(dataHandler) {
159
+ super();
160
+ this.dataHandler = dataHandler;
161
+ this.defaultSettings = this.createDefaultSettings();
162
+ this.currentState = this.createDefaultState();
163
+ this.lastSavedState = this.createDefaultState();
164
+ this.propertyNames = (0, import_object_utils.getAllKeys)(this.currentState.inputValues);
165
+ this.registerValidators();
166
+ this.registerLegacySettingsConverters();
167
+ }
168
+ dataHandler;
169
+ /**
170
+ * Component key for singleton replacement via {@link PluginBase.addChild}.
171
+ */
172
+ static COMPONENT_KEY = Symbol(PluginSettingsComponentBase.name);
173
+ /**
174
+ * Gets the readonly default settings.
175
+ *
176
+ * @returns The default settings (as a readonly object).
177
+ */
178
+ defaultSettings;
179
+ /**
180
+ * Gets the readonly effective settings (validated, with defaults substituted for invalid values).
181
+ *
182
+ * @returns The readonly effective settings.
183
+ */
184
+ get settings() {
185
+ return this.settingsState.effectiveValues;
186
+ }
187
+ /**
188
+ * Gets the current settings state snapshot.
189
+ *
190
+ * @returns The current settings state.
191
+ */
192
+ get settingsState() {
193
+ return this.currentState;
194
+ }
195
+ asyncEvents = new import_async_events.AsyncEvents();
196
+ currentState;
197
+ lastSavedState;
198
+ legacySettingsConverters = [];
199
+ propertyNames;
200
+ validators = /* @__PURE__ */ new Map();
201
+ /**
202
+ * Edits the plugin settings and saves them.
203
+ *
204
+ * @param settingsEditor - The editor.
205
+ * @param context - The context.
206
+ * @returns A {@link Promise} that resolves when the settings are saved.
207
+ */
208
+ async editAndSave(settingsEditor, context) {
209
+ await this.edit(settingsEditor);
210
+ await this.saveToFile(context);
211
+ }
212
+ /**
213
+ * Ensures the settings are safe.
214
+ *
215
+ * It runs validation for each property and sets the default value if the validation fails.
216
+ *
217
+ * @param settings - The settings.
218
+ * @returns A {@link Promise} that resolves when the settings are safe.
219
+ */
220
+ async ensureSafe(settings) {
221
+ const validationResult = await this.validate(settings);
222
+ const defaults = this.defaultSettings;
223
+ for (const propertyName of this.propertyNames) {
224
+ if (validationResult[propertyName]) {
225
+ settings[propertyName] = defaults[propertyName];
226
+ }
227
+ }
228
+ }
229
+ /**
230
+ * Gets a safe copy of the settings.
231
+ *
232
+ * @param settings - The settings.
233
+ * @returns A {@link Promise} that resolves to the safe copy of the settings.
234
+ */
235
+ async getSafeCopy(settings) {
236
+ const safeSettings = await this.cloneSettings(settings);
237
+ await this.ensureSafe(safeSettings);
238
+ return safeSettings;
239
+ }
240
+ /**
241
+ * Loads the plugin settings from the file.
242
+ *
243
+ * @param isInitialLoad - Whether the settings are being loaded for the first time.
244
+ * @returns A {@link Promise} that resolves when the settings are loaded.
245
+ */
246
+ async loadFromFile(isInitialLoad) {
247
+ const data = await this.dataHandler.loadData();
248
+ this.lastSavedState = this.createDefaultState();
249
+ this.currentState = this.createDefaultState();
250
+ try {
251
+ if (data === void 0 || data === null) {
252
+ return;
253
+ }
254
+ if (typeof data !== "object") {
255
+ console.error(`Invalid settings from data.json. Expected Object, got: ${typeof data}`);
256
+ return;
257
+ }
258
+ const rawRecord = data;
259
+ const parsedSettings = await this.rawRecordToSettings(rawRecord);
260
+ const validationResult = await this.validate(parsedSettings);
261
+ for (const propertyName of this.propertyNames) {
262
+ this.setPropertyImpl(propertyName, parsedSettings[propertyName], validationResult[propertyName]);
263
+ }
264
+ this.lastSavedState = await this.cloneState(this.currentState);
265
+ const newRecord = await this.settingsToRawRecord(this.currentState.inputValues);
266
+ if (!(0, import_object_utils.deepEqual)(newRecord, data)) {
267
+ await this.saveToFileImpl();
268
+ }
269
+ } finally {
270
+ await this.asyncEvents.triggerAsync("loadSettings", this.currentState, isInitialLoad);
271
+ }
272
+ }
273
+ /**
274
+ * Subscribes to an event.
275
+ *
276
+ * @param name - The name of the event.
277
+ * @param callback - The callback.
278
+ * @param thisArg - The `this` context.
279
+ * @returns A reference to the event listener.
280
+ */
281
+ on(name, callback, thisArg) {
282
+ return this.asyncEvents.on(name, callback, thisArg);
283
+ }
284
+ /**
285
+ * Called when the external settings change.
286
+ *
287
+ * @returns A {@link Promise} that resolves when the settings are reloaded.
288
+ */
289
+ async onExternalSettingsChange() {
290
+ await this.loadFromFile(false);
291
+ }
292
+ /**
293
+ * Loads settings from file and registers event handlers.
294
+ */
295
+ async onload() {
296
+ await super.onload();
297
+ (0, import_async_events_component.registerAsyncEvent)(this, this.on("loadSettings", this.onLoadSettings.bind(this)));
298
+ (0, import_async_events_component.registerAsyncEvent)(this, this.on("saveSettings", this.onSaveSettings.bind(this)));
299
+ await this.loadFromFile(true);
300
+ }
301
+ /**
302
+ * Registers a legacy settings converter.
303
+ *
304
+ * @typeParam LegacySettings - The legacy settings class.
305
+ * @param legacySettingsClass - The legacy settings class.
306
+ * @param converter - The converter.
307
+ */
308
+ registerLegacySettingsConverter(legacySettingsClass, converter) {
309
+ const that = this;
310
+ this.legacySettingsConverters.push(legacySettingsConverter);
311
+ function legacySettingsConverter(record) {
312
+ const legacySettingsKeys = new Set(Object.keys(new legacySettingsClass()));
313
+ const pluginSettingKeys = new Set(that.propertyNames);
314
+ const legacySettings = record;
315
+ converter(legacySettings);
316
+ for (const key of Object.keys(legacySettings)) {
317
+ if (pluginSettingKeys.has(key)) {
318
+ continue;
319
+ }
320
+ if (!legacySettingsKeys.has(key)) {
321
+ continue;
322
+ }
323
+ delete record[key];
324
+ }
325
+ }
326
+ }
327
+ /**
328
+ * Registers a validator for a property.
329
+ *
330
+ * @param propertyName - The name of the property.
331
+ * @param validator - The validator.
332
+ */
333
+ registerValidator(propertyName, validator) {
334
+ this.validators.set(propertyName, validator);
335
+ }
336
+ /**
337
+ * Revalidates the settings.
338
+ *
339
+ * @returns The validation messages.
340
+ */
341
+ async revalidate() {
342
+ await this.edit(import_function.noop);
343
+ return this.currentState.validationMessages;
344
+ }
345
+ /**
346
+ * Saves the new plugin settings.
347
+ *
348
+ * @param context - The context of the save to file operation.
349
+ * @returns A {@link Promise} that resolves when the settings are saved.
350
+ */
351
+ async saveToFile(context) {
352
+ if ((0, import_object_utils.deepEqual)(this.lastSavedState.inputValues, this.currentState.inputValues)) {
353
+ return;
354
+ }
355
+ await this.saveToFileImpl();
356
+ await this.asyncEvents.triggerAsync("saveSettings", this.currentState, this.lastSavedState, context);
357
+ this.lastSavedState = await this.cloneState(this.currentState);
358
+ }
359
+ /**
360
+ * Sets the value of a property.
361
+ *
362
+ * @typeParam PropertyName - The name of the property.
363
+ * @param propertyName - The name of the property.
364
+ * @param value - The value to set.
365
+ * @returns A {@link Promise} that resolves to the validation message.
366
+ */
367
+ async setProperty(propertyName, value) {
368
+ await this.edit((settings) => {
369
+ settings[propertyName] = value;
370
+ });
371
+ return this.currentState.validationMessages[propertyName];
372
+ }
373
+ /**
374
+ * Validates the settings.
375
+ *
376
+ * @param settings - The settings.
377
+ * @returns A {@link Promise} that resolves to the validation result.
378
+ */
379
+ async validate(settings) {
380
+ const result = {};
381
+ for (const [propertyName, validator] of this.validators.entries()) {
382
+ const validationMessage = await validator(settings[propertyName], settings);
383
+ if (validationMessage) {
384
+ result[propertyName] = validationMessage;
385
+ }
386
+ }
387
+ return result;
388
+ }
389
+ /**
390
+ * Gets the transformer.
391
+ *
392
+ * @returns The transformer.
393
+ */
394
+ getTransformer() {
395
+ return defaultTransformer;
396
+ }
397
+ /**
398
+ * Called when the plugin settings record is loaded from disk.
399
+ *
400
+ * @param record - The record.
401
+ */
402
+ async onLoadRecord(record) {
403
+ for (const converter of this.legacySettingsConverters) {
404
+ converter(record);
405
+ }
406
+ await Promise.resolve();
407
+ }
408
+ /**
409
+ * Called when settings are loaded or reloaded.
410
+ *
411
+ * @param _loadedState - The loaded settings state.
412
+ * @param _isInitialLoad - Whether this is the initial load.
413
+ */
414
+ async onLoadSettings(_loadedState, _isInitialLoad) {
415
+ await (0, import_function.noopAsync)();
416
+ }
417
+ /**
418
+ * Called when settings are saved.
419
+ *
420
+ * @param _newState - The new settings state.
421
+ * @param _oldState - The old settings state.
422
+ * @param _context - The save context.
423
+ */
424
+ async onSaveSettings(_newState, _oldState, _context) {
425
+ await (0, import_function.noopAsync)();
426
+ }
427
+ /**
428
+ * Called when the plugin settings record is about to be saved to disk.
429
+ *
430
+ * @param _record - The record.
431
+ */
432
+ async onSavingRecord(_record) {
433
+ await (0, import_function.noopAsync)();
434
+ }
435
+ /**
436
+ * Registers the legacy settings converters.
437
+ * Override to register legacy settings converters.
438
+ */
439
+ registerLegacySettingsConverters() {
440
+ (0, import_function.noop)();
441
+ }
442
+ /**
443
+ * Registers the validators.
444
+ * Override to register validators for properties.
445
+ */
446
+ registerValidators() {
447
+ (0, import_function.noop)();
448
+ }
449
+ async cloneSettings(settings) {
450
+ const record = await this.settingsToRawRecord(settings);
451
+ const json = JSON.stringify(record);
452
+ const cloneRecord = JSON.parse(json);
453
+ return await this.rawRecordToSettings(cloneRecord);
454
+ }
455
+ async cloneState(state) {
456
+ return {
457
+ effectiveValues: await this.cloneSettings(state.effectiveValues),
458
+ inputValues: await this.cloneSettings(state.inputValues),
459
+ validationMessages: { ...state.validationMessages }
460
+ };
461
+ }
462
+ createDefaultState() {
463
+ return {
464
+ effectiveValues: this.createDefaultSettings(),
465
+ inputValues: this.createDefaultSettings(),
466
+ validationMessages: (0, import_object_utils.castTo)({})
467
+ };
468
+ }
469
+ async edit(settingsEditor) {
470
+ try {
471
+ await settingsEditor(this.currentState.inputValues);
472
+ } finally {
473
+ const validationResult = await this.validate(this.currentState.inputValues);
474
+ for (const propertyName of this.propertyNames) {
475
+ const validationMessage = validationResult[propertyName] ?? "";
476
+ this.currentState.validationMessages[propertyName] = validationMessage;
477
+ const defaults = this.defaultSettings;
478
+ this.currentState.effectiveValues[propertyName] = validationMessage ? defaults[propertyName] : this.currentState.inputValues[propertyName];
479
+ }
480
+ }
481
+ }
482
+ isValidPropertyName(prop) {
483
+ if (typeof prop !== "string") {
484
+ return false;
485
+ }
486
+ return this.propertyNames.includes(prop);
487
+ }
488
+ async rawRecordToSettings(rawRecord) {
489
+ rawRecord = this.getTransformer().transformObjectRecursively(rawRecord);
490
+ await this.onLoadRecord(rawRecord);
491
+ const settings = this.createDefaultSettings();
492
+ const defaults = this.defaultSettings;
493
+ for (const [propertyName, value] of Object.entries(rawRecord)) {
494
+ if (!this.isValidPropertyName(propertyName)) {
495
+ (0, import_debug.getLibDebugger)("PluginSettingsComponentBase:rawRecordToSettings")(`Unknown property: ${propertyName}`);
496
+ continue;
497
+ }
498
+ if (typeof value !== typeof defaults[propertyName]) {
499
+ (0, import_debug.getLibDebugger)("PluginSettingsComponentBase:rawRecordToSettings")(
500
+ "Possible invalid value type. It might lead to an unexpected behavior of the plugin. There is also a chance it is a false-negative warning, as we are unable to determine the exact type of the value in runtime.",
501
+ {
502
+ defaultValue: defaults[propertyName],
503
+ propertyName,
504
+ value
505
+ }
506
+ );
507
+ }
508
+ settings[propertyName] = value;
509
+ }
510
+ return settings;
511
+ }
512
+ async saveToFileImpl() {
513
+ await this.dataHandler.saveData(await this.settingsToRawRecord(this.currentState.inputValues));
514
+ }
515
+ setPropertyImpl(propertyName, value, validationMessage) {
516
+ const defaults = this.defaultSettings;
517
+ this.currentState.inputValues[propertyName] = value;
518
+ this.currentState.validationMessages[propertyName] = validationMessage ?? "";
519
+ this.currentState.effectiveValues[propertyName] = validationMessage ? defaults[propertyName] : value;
520
+ }
521
+ async settingsToRawRecord(settings) {
522
+ const rawRecord = {};
523
+ for (const propertyName of this.propertyNames) {
524
+ rawRecord[propertyName] = settings[propertyName];
525
+ }
526
+ await this.onSavingRecord(rawRecord);
527
+ return this.getTransformer().transformObjectRecursively(rawRecord);
528
+ }
529
+ }
530
+ // Annotate the CommonJS export names for ESM import in node:
531
+ 0 && (module.exports = {
532
+ PluginSettingsComponentBase
533
+ });
534
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IG1hbmFnZXMgcGx1Z2luIHNldHRpbmdzOiBkYXRhLCBwZXJzaXN0ZW5jZSwgdmFsaWRhdGlvbiwgYW5kIGV2ZW50cy5cbiAqXG4gKiBUaGlzIGlzIHRoZSBzaW5nbGUgcHVibGljLWZhY2luZyBzZXR0aW5ncyBBUEkgZm9yIHBsdWdpbiBhdXRob3JzLlxuICogQWxsIHNldHRpbmdzIGxvZ2ljIChsb2FkLCBzYXZlLCB2YWxpZGF0ZSwgdHJhbnNmb3JtLCBjbG9uZSkgaXMgaGFuZGxlZCBkaXJlY3RseVxuICogYnkgdGhpcyBjb21wb25lbnQgXHUyMDE0IG5vIHNlcGFyYXRlIG1hbmFnZXIgY2xhc3MgaXMgbmVlZGVkLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgUHJvbWlzYWJsZSxcbiAgUmVhZG9ubHlEZWVwXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL2FzeW5jLWV2ZW50cy50cyc7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNQcm9taXNhYmxlVm9pZEZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb24udHMnO1xuaW1wb3J0IHR5cGUgeyBUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL3RyYW5zZm9ybWVycy90cmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNPYmplY3QgfSBmcm9tICcuLi8uLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIE1heWJlUmV0dXJuLFxuICBTdHJpbmdLZXlzXG59IGZyb20gJy4uLy4uL3R5cGUudHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhSGFuZGxlciB9IGZyb20gJy4uL2RhdGEtaGFuZGxlci50cyc7XG5cbmltcG9ydCB7IEFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vYXN5bmMtZXZlbnRzLnRzJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vZGVidWcudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7XG4gIGNhc3RUbyxcbiAgZGVlcEVxdWFsLFxuICBnZXRBbGxLZXlzXG59IGZyb20gJy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBEYXRlVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi90cmFuc2Zvcm1lcnMvZGF0ZS10cmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBEdXJhdGlvblRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vdHJhbnNmb3JtZXJzL2R1cmF0aW9uLXRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IEdyb3VwVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi90cmFuc2Zvcm1lcnMvZ3JvdXAtdHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgTWFwVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi90cmFuc2Zvcm1lcnMvbWFwLXRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IFNldFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vdHJhbnNmb3JtZXJzL3NldC10cmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBTa2lwUHJpdmF0ZVByb3BlcnR5VHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi90cmFuc2Zvcm1lcnMvc2tpcC1wcml2YXRlLXByb3BlcnR5LXRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IFR3b1dheU1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vdHJhbnNmb3JtZXJzL3R3by13YXktbWFwLXRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IEFzeW5jQ29tcG9uZW50QmFzZSB9IGZyb20gJy4vYXN5bmMtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IHJlZ2lzdGVyQXN5bmNFdmVudCB9IGZyb20gJy4vYXN5bmMtZXZlbnRzLWNvbXBvbmVudC50cyc7XG5cbmNvbnN0IGRlZmF1bHRUcmFuc2Zvcm1lciA9IG5ldyBHcm91cFRyYW5zZm9ybWVyKFtcbiAgbmV3IFNraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lcigpLFxuICBuZXcgRGF0ZVRyYW5zZm9ybWVyKCksXG4gIG5ldyBEdXJhdGlvblRyYW5zZm9ybWVyKCksXG4gIG5ldyBNYXBUcmFuc2Zvcm1lcigpLFxuICBuZXcgU2V0VHJhbnNmb3JtZXIoKSxcbiAgbmV3IFR3b1dheU1hcFRyYW5zZm9ybWVyKClcbl0pO1xuXG4vKipcbiAqIEEgc25hcHNob3Qgb2YgcGx1Z2luIHNldHRpbmdzIHN0YXRlLCBpbmNsdWRpbmcgcmF3IGlucHV0IHZhbHVlcywgZWZmZWN0aXZlICh2YWxpZGF0ZWQpIHZhbHVlcyxcbiAqIGFuZCBwZXItcHJvcGVydHkgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiB7XG4gIC8qKlxuICAgKiBUaGUgZWZmZWN0aXZlIHNldHRpbmdzIHZhbHVlcyB1c2VkIGJ5IHRoZSBwbHVnaW4uIEludmFsaWQgcHJvcGVydGllcyBhcmUgcmVwbGFjZWQgd2l0aCBkZWZhdWx0cy5cbiAgICovXG4gIGVmZmVjdGl2ZVZhbHVlczogUGx1Z2luU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFRoZSByYXcgaW5wdXQgdmFsdWVzIGFzIGVudGVyZWQgYnkgdGhlIHVzZXIuIE1heSBjb250YWluIGludmFsaWQgdmFsdWVzLlxuICAgKi9cbiAgaW5wdXRWYWx1ZXM6IFBsdWdpblNldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBQZXItcHJvcGVydHkgdmFsaWRhdGlvbiBtZXNzYWdlcy4gRW1wdHkgc3RyaW5nIG1lYW5zIHZhbGlkLlxuICAgKi9cbiAgdmFsaWRhdGlvbk1lc3NhZ2VzOiBSZWNvcmQ8U3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4sIHN0cmluZz47XG59XG5cbi8qKlxuICogUmVhZG9ubHkgdmVyc2lvbiBvZiB7QGxpbmsgUGx1Z2luU2V0dGluZ3N9LlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICovXG5leHBvcnQgdHlwZSBSZWFkb25seVBsdWdpblNldHRpbmdzPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiA9IFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5ncz47XG5cbi8qKlxuICogUmVhZG9ubHkgdmVyc2lvbiBvZiB7QGxpbmsgUGx1Z2luU2V0dGluZ3NTdGF0ZX0gZm9yIHVzZSBpbiBldmVudCBjYWxsYmFja3MgYW5kIHB1YmxpYyBnZXR0ZXJzLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICovXG5leHBvcnQgdHlwZSBSZWFkb25seVBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+ID0gUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+PjtcblxuLyoqXG4gKiBBIHZhbGlkYXRvciBmdW5jdGlvbiBmb3IgYSBzZXR0aW5ncyBwcm9wZXJ0eS5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0eXBlLlxuICogQHR5cGVQYXJhbSBQcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZS5cbiAqL1xuZXhwb3J0IHR5cGUgU2V0dGluZ3NWYWxpZGF0b3I8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QsIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+ID0gU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+ID0gKFxuICB2YWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXSxcbiAgc2V0dGluZ3M6IFBsdWdpblNldHRpbmdzXG4pID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48c3RyaW5nPj47XG5cbnR5cGUgUHJvcGVydHlOYW1lczxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gPSBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPjtcblxudHlwZSBQcm9wZXJ0eVZhbHVlczxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gPSBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVzPFBsdWdpblNldHRpbmdzPl07XG5cbnR5cGUgVmFsaWRhdGlvblJlc3VsdDxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gPSBQYXJ0aWFsPFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgc3RyaW5nPj47XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgcGx1Z2luIHNldHRpbmdzIGNvbXBvbmVudHMuXG4gKlxuICogTWFuYWdlcyBzZXR0aW5ncyBkYXRhLCBwZXJzaXN0ZW5jZSwgdmFsaWRhdGlvbiwgYW5kIGV2ZW50cy5cbiAqIFBsdWdpbiBhdXRob3JzIGV4dGVuZCB0aGlzIGNsYXNzIGFuZCBpbXBsZW1lbnQge0BsaW5rIGNyZWF0ZURlZmF1bHRTZXR0aW5nc30uXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBwbHVnaW4gc2V0dGluZ3MgdHlwZS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBBc3luY0NvbXBvbmVudEJhc2Uge1xuICAvKipcbiAgICogQ29tcG9uZW50IGtleSBmb3Igc2luZ2xldG9uIHJlcGxhY2VtZW50IHZpYSB7QGxpbmsgUGx1Z2luQmFzZS5hZGRDaGlsZH0uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTVBPTkVOVF9LRVkgPSBTeW1ib2woUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlLm5hbWUpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByZWFkb25seSBkZWZhdWx0IHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVmYXVsdCBzZXR0aW5ncyAoYXMgYSByZWFkb25seSBvYmplY3QpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRTZXR0aW5nczogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgcmVhZG9ubHkgZWZmZWN0aXZlIHNldHRpbmdzICh2YWxpZGF0ZWQsIHdpdGggZGVmYXVsdHMgc3Vic3RpdHV0ZWQgZm9yIGludmFsaWQgdmFsdWVzKS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlYWRvbmx5IGVmZmVjdGl2ZSBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NTdGF0ZS5lZmZlY3RpdmVWYWx1ZXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzZXR0aW5ncyBzdGF0ZSBzbmFwc2hvdC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgc2V0dGluZ3Mgc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNldHRpbmdzU3RhdGUoKTogUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzPiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlIGFzIFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz47XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGFzeW5jRXZlbnRzID0gbmV3IEFzeW5jRXZlbnRzKCk7XG4gIHByaXZhdGUgY3VycmVudFN0YXRlOiBQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzPjtcbiAgcHJpdmF0ZSBsYXN0U2F2ZWRTdGF0ZTogUGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz47XG4gIHByaXZhdGUgcmVhZG9ubHkgbGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXJzOiAoKHJlY29yZDogR2VuZXJpY09iamVjdCkgPT4gdm9pZClbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5TmFtZXM6IFByb3BlcnR5TmFtZXM8UGx1Z2luU2V0dGluZ3M+W107XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRhdG9ycyA9IG5ldyBNYXA8UHJvcGVydHlOYW1lczxQbHVnaW5TZXR0aW5ncz4sIFNldHRpbmdzVmFsaWRhdG9yPFBsdWdpblNldHRpbmdzPj4oKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gc2V0dGluZ3MgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YUhhbmRsZXIgLSBUaGUgZGF0YSBoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGF0YUhhbmRsZXI6IERhdGFIYW5kbGVyKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRlZmF1bHRTZXR0aW5ncyA9IHRoaXMuY3JlYXRlRGVmYXVsdFNldHRpbmdzKCkgYXMgUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzPjtcbiAgICB0aGlzLmN1cnJlbnRTdGF0ZSA9IHRoaXMuY3JlYXRlRGVmYXVsdFN0YXRlKCk7XG4gICAgdGhpcy5sYXN0U2F2ZWRTdGF0ZSA9IHRoaXMuY3JlYXRlRGVmYXVsdFN0YXRlKCk7XG4gICAgdGhpcy5wcm9wZXJ0eU5hbWVzID0gZ2V0QWxsS2V5cyh0aGlzLmN1cnJlbnRTdGF0ZS5pbnB1dFZhbHVlcyk7XG4gICAgdGhpcy5yZWdpc3RlclZhbGlkYXRvcnMoKTtcbiAgICB0aGlzLnJlZ2lzdGVyTGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXJzKCk7XG4gIH1cblxuICAvKipcbiAgICogRWRpdHMgdGhlIHBsdWdpbiBzZXR0aW5ncyBhbmQgc2F2ZXMgdGhlbS5cbiAgICpcbiAgICogQHBhcmFtIHNldHRpbmdzRWRpdG9yIC0gVGhlIGVkaXRvci5cbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgc2F2ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZWRpdEFuZFNhdmUoc2V0dGluZ3NFZGl0b3I6IChzZXR0aW5nczogUGx1Z2luU2V0dGluZ3MpID0+IFByb21pc2FibGU8dm9pZD4sIGNvbnRleHQ/OiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5lZGl0KHNldHRpbmdzRWRpdG9yKTtcbiAgICBhd2FpdCB0aGlzLnNhdmVUb0ZpbGUoY29udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlcyB0aGUgc2V0dGluZ3MgYXJlIHNhZmUuXG4gICAqXG4gICAqIEl0IHJ1bnMgdmFsaWRhdGlvbiBmb3IgZWFjaCBwcm9wZXJ0eSBhbmQgc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgdmFsaWRhdGlvbiBmYWlscy5cbiAgICpcbiAgICogQHBhcmFtIHNldHRpbmdzIC0gVGhlIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSBzYWZlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVuc3VyZVNhZmUoc2V0dGluZ3M6IFBsdWdpblNldHRpbmdzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHRoaXMudmFsaWRhdGUoc2V0dGluZ3MpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5kZWZhdWx0U2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgdGhpcy5wcm9wZXJ0eU5hbWVzKSB7XG4gICAgICBpZiAodmFsaWRhdGlvblJlc3VsdFtwcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgIHNldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSBkZWZhdWx0c1twcm9wZXJ0eU5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgc2FmZSBjb3B5IG9mIHRoZSBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHNldHRpbmdzIC0gVGhlIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzYWZlIGNvcHkgb2YgdGhlIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNhZmVDb3B5KHNldHRpbmdzOiBQbHVnaW5TZXR0aW5ncyk6IFByb21pc2U8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICBjb25zdCBzYWZlU2V0dGluZ3MgPSBhd2FpdCB0aGlzLmNsb25lU2V0dGluZ3Moc2V0dGluZ3MpO1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2FmZShzYWZlU2V0dGluZ3MpO1xuICAgIHJldHVybiBzYWZlU2V0dGluZ3M7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHBsdWdpbiBzZXR0aW5ncyBmcm9tIHRoZSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gaXNJbml0aWFsTG9hZCAtIFdoZXRoZXIgdGhlIHNldHRpbmdzIGFyZSBiZWluZyBsb2FkZWQgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZEZyb21GaWxlKGlzSW5pdGlhbExvYWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kYXRhSGFuZGxlci5sb2FkRGF0YSgpO1xuICAgIHRoaXMubGFzdFNhdmVkU3RhdGUgPSB0aGlzLmNyZWF0ZURlZmF1bHRTdGF0ZSgpO1xuICAgIHRoaXMuY3VycmVudFN0YXRlID0gdGhpcy5jcmVhdGVEZWZhdWx0U3RhdGUoKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgc2V0dGluZ3MgZnJvbSBkYXRhLmpzb24uIEV4cGVjdGVkIE9iamVjdCwgZ290OiAke3R5cGVvZiBkYXRhfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJhd1JlY29yZCA9IGRhdGEgYXMgR2VuZXJpY09iamVjdDtcbiAgICAgIGNvbnN0IHBhcnNlZFNldHRpbmdzID0gYXdhaXQgdGhpcy5yYXdSZWNvcmRUb1NldHRpbmdzKHJhd1JlY29yZCk7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdGhpcy52YWxpZGF0ZShwYXJzZWRTZXR0aW5ncyk7XG5cbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHRoaXMucHJvcGVydHlOYW1lcykge1xuICAgICAgICB0aGlzLnNldFByb3BlcnR5SW1wbChwcm9wZXJ0eU5hbWUsIHBhcnNlZFNldHRpbmdzW3Byb3BlcnR5TmFtZV0sIHZhbGlkYXRpb25SZXN1bHRbcHJvcGVydHlOYW1lXSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGFzdFNhdmVkU3RhdGUgPSBhd2FpdCB0aGlzLmNsb25lU3RhdGUodGhpcy5jdXJyZW50U3RhdGUpO1xuXG4gICAgICBjb25zdCBuZXdSZWNvcmQgPSBhd2FpdCB0aGlzLnNldHRpbmdzVG9SYXdSZWNvcmQodGhpcy5jdXJyZW50U3RhdGUuaW5wdXRWYWx1ZXMpO1xuXG4gICAgICBpZiAoIWRlZXBFcXVhbChuZXdSZWNvcmQsIGRhdGEpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZUltcGwoKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgdGhpcy5hc3luY0V2ZW50cy50cmlnZ2VyQXN5bmMoJ2xvYWRTZXR0aW5ncycsIHRoaXMuY3VycmVudFN0YXRlLCBpc0luaXRpYWxMb2FkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byB0aGUgYGxvYWRTZXR0aW5nc2AgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gQWx3YXlzIGBsb2FkU2V0dGluZ3NgLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB0aGlzQXJnIC0gVGhlIGB0aGlzYCBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBwdWJsaWMgb24oXG4gICAgbmFtZTogJ2xvYWRTZXR0aW5ncycsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIGxvYWRlZFN0YXRlOiBSZWFkb25seVBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+LFxuICAgICAgaXNJbml0aWFsTG9hZDogYm9vbGVhblxuICAgICkgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmO1xuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byB0aGUgYHNhdmVTZXR0aW5nc2AgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gQWx3YXlzIGBzYXZlU2V0dGluZ3NgLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB0aGlzQXJnIC0gVGhlIGB0aGlzYCBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBwdWJsaWMgb24oXG4gICAgbmFtZTogJ3NhdmVTZXR0aW5ncycsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIG5ld1N0YXRlOiBSZWFkb25seVBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+LFxuICAgICAgb2xkU3RhdGU6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4sXG4gICAgICBjb250ZXh0OiB1bmtub3duXG4gICAgKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICAgIHRoaXNBcmc/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWY7XG4gIC8qKlxuICAgKiBTdWJzY3JpYmVzIHRvIGFuIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0gdGhpc0FyZyAtIFRoZSBgdGhpc2AgY29udGV4dC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKi9cbiAgcHVibGljIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogR2VuZXJpY1Byb21pc2FibGVWb2lkRnVuY3Rpb248QXJncz4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNFdmVudHMub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBjaGFuZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIHJlbG9hZGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIG9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvYWRGcm9tRmlsZShmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgc2V0dGluZ3MgZnJvbSBmaWxlIGFuZCByZWdpc3RlcnMgZXZlbnQgaGFuZGxlcnMuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgb25sb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLm9ubG9hZCgpO1xuICAgIHJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLCB0aGlzLm9uKCdsb2FkU2V0dGluZ3MnLCB0aGlzLm9uTG9hZFNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICByZWdpc3RlckFzeW5jRXZlbnQodGhpcywgdGhpcy5vbignc2F2ZVNldHRpbmdzJywgdGhpcy5vblNhdmVTZXR0aW5ncy5iaW5kKHRoaXMpKSk7XG4gICAgYXdhaXQgdGhpcy5sb2FkRnJvbUZpbGUodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgbGVnYWN5IHNldHRpbmdzIGNvbnZlcnRlci5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBMZWdhY3lTZXR0aW5ncyAtIFRoZSBsZWdhY3kgc2V0dGluZ3MgY2xhc3MuXG4gICAqIEBwYXJhbSBsZWdhY3lTZXR0aW5nc0NsYXNzIC0gVGhlIGxlZ2FjeSBzZXR0aW5ncyBjbGFzcy5cbiAgICogQHBhcmFtIGNvbnZlcnRlciAtIFRoZSBjb252ZXJ0ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJMZWdhY3lTZXR0aW5nc0NvbnZlcnRlcjxMZWdhY3lTZXR0aW5ncyBleHRlbmRzIG9iamVjdD4oXG4gICAgbGVnYWN5U2V0dGluZ3NDbGFzczogbmV3ICgpID0+IExlZ2FjeVNldHRpbmdzLFxuICAgIGNvbnZlcnRlcjogKGxlZ2FjeVNldHRpbmdzOiBQYXJ0aWFsPExlZ2FjeVNldHRpbmdzPiAmIFBhcnRpYWw8UGx1Z2luU2V0dGluZ3M+KSA9PiB2b2lkXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgIHRoaXMubGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXJzLnB1c2gobGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXIpO1xuXG4gICAgZnVuY3Rpb24gbGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXIocmVjb3JkOiBHZW5lcmljT2JqZWN0KTogdm9pZCB7XG4gICAgICBjb25zdCBsZWdhY3lTZXR0aW5nc0tleXMgPSBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LmtleXMobmV3IGxlZ2FjeVNldHRpbmdzQ2xhc3MoKSkpO1xuICAgICAgY29uc3QgcGx1Z2luU2V0dGluZ0tleXMgPSBuZXcgU2V0PHN0cmluZz4odGhhdC5wcm9wZXJ0eU5hbWVzKTtcbiAgICAgIGNvbnN0IGxlZ2FjeVNldHRpbmdzID0gcmVjb3JkIGFzIFBhcnRpYWw8TGVnYWN5U2V0dGluZ3M+ICYgUGFydGlhbDxQbHVnaW5TZXR0aW5ncz47XG4gICAgICBjb252ZXJ0ZXIobGVnYWN5U2V0dGluZ3MpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobGVnYWN5U2V0dGluZ3MpKSB7XG4gICAgICAgIGlmIChwbHVnaW5TZXR0aW5nS2V5cy5oYXMoa2V5KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsZWdhY3lTZXR0aW5nc0tleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgICAgICAgZGVsZXRlIHJlY29yZFtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSB2YWxpZGF0b3IgZm9yIGEgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB2YWxpZGF0b3IgLSBUaGUgdmFsaWRhdG9yLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyVmFsaWRhdG9yPFByb3BlcnR5TmFtZSBleHRlbmRzIFByb3BlcnR5TmFtZXM8UGx1Z2luU2V0dGluZ3M+PihcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICB2YWxpZGF0b3I6IFNldHRpbmdzVmFsaWRhdG9yPFBsdWdpblNldHRpbmdzLCBQcm9wZXJ0eU5hbWU+XG4gICk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdG9ycy5zZXQocHJvcGVydHlOYW1lLCB2YWxpZGF0b3IgYXMgU2V0dGluZ3NWYWxpZGF0b3I8UGx1Z2luU2V0dGluZ3M+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZhbGlkYXRlcyB0aGUgc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJldmFsaWRhdGUoKTogUHJvbWlzZTxSZWNvcmQ8UHJvcGVydHlOYW1lczxQbHVnaW5TZXR0aW5ncz4sIHN0cmluZz4+IHtcbiAgICBhd2FpdCB0aGlzLmVkaXQobm9vcCk7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlLnZhbGlkYXRpb25NZXNzYWdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgbmV3IHBsdWdpbiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dCBvZiB0aGUgc2F2ZSB0byBmaWxlIG9wZXJhdGlvbi5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgc2F2ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2F2ZVRvRmlsZShjb250ZXh0PzogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChkZWVwRXF1YWwodGhpcy5sYXN0U2F2ZWRTdGF0ZS5pbnB1dFZhbHVlcywgdGhpcy5jdXJyZW50U3RhdGUuaW5wdXRWYWx1ZXMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zYXZlVG9GaWxlSW1wbCgpO1xuICAgIGF3YWl0IHRoaXMuYXN5bmNFdmVudHMudHJpZ2dlckFzeW5jKCdzYXZlU2V0dGluZ3MnLCB0aGlzLmN1cnJlbnRTdGF0ZSwgdGhpcy5sYXN0U2F2ZWRTdGF0ZSwgY29udGV4dCk7XG4gICAgdGhpcy5sYXN0U2F2ZWRTdGF0ZSA9IGF3YWl0IHRoaXMuY2xvbmVTdGF0ZSh0aGlzLmN1cnJlbnRTdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRQcm9wZXJ0eTxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBQcm9wZXJ0eU5hbWVzPFBsdWdpblNldHRpbmdzPj4oXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgdmFsdWU6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV1cbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBhd2FpdCB0aGlzLmVkaXQoKHNldHRpbmdzKSA9PiB7XG4gICAgICBzZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlLnZhbGlkYXRpb25NZXNzYWdlc1twcm9wZXJ0eU5hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgc2V0dGluZ3MuXG4gICAqXG4gICAqIEBwYXJhbSBzZXR0aW5ncyAtIFRoZSBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgdmFsaWRhdGlvbiByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGUoc2V0dGluZ3M6IFBsdWdpblNldHRpbmdzKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PFBsdWdpblNldHRpbmdzPj4ge1xuICAgIGNvbnN0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdDxQbHVnaW5TZXR0aW5ncz4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHZhbGlkYXRvcl0gb2YgdGhpcy52YWxpZGF0b3JzLmVudHJpZXMoKSkge1xuICAgICAgY29uc3QgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhd2FpdCB2YWxpZGF0b3Ioc2V0dGluZ3NbcHJvcGVydHlOYW1lXSwgc2V0dGluZ3MpO1xuICAgICAgaWYgKHZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICAgIHJlc3VsdFtwcm9wZXJ0eU5hbWVdID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBkZWZhdWx0IHNldHRpbmdzLiBNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IHNldHRpbmdzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZURlZmF1bHRTZXR0aW5ncygpOiBQbHVnaW5TZXR0aW5ncztcblxuICAvKipcbiAgICogR2V0cyB0aGUgdHJhbnNmb3JtZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lci5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRUcmFuc2Zvcm1lcigpOiBUcmFuc2Zvcm1lciB7XG4gICAgcmV0dXJuIGRlZmF1bHRUcmFuc2Zvcm1lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIHNldHRpbmdzIHJlY29yZCBpcyBsb2FkZWQgZnJvbSBkaXNrLlxuICAgKlxuICAgKiBAcGFyYW0gcmVjb3JkIC0gVGhlIHJlY29yZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbkxvYWRSZWNvcmQocmVjb3JkOiBHZW5lcmljT2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBjb252ZXJ0ZXIgb2YgdGhpcy5sZWdhY3lTZXR0aW5nc0NvbnZlcnRlcnMpIHtcbiAgICAgIGNvbnZlcnRlcihyZWNvcmQpO1xuICAgIH1cbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBzZXR0aW5ncyBhcmUgbG9hZGVkIG9yIHJlbG9hZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gX2xvYWRlZFN0YXRlIC0gVGhlIGxvYWRlZCBzZXR0aW5ncyBzdGF0ZS5cbiAgICogQHBhcmFtIF9pc0luaXRpYWxMb2FkIC0gV2hldGhlciB0aGlzIGlzIHRoZSBpbml0aWFsIGxvYWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25Mb2FkU2V0dGluZ3MoXG4gICAgX2xvYWRlZFN0YXRlOiBSZWFkb25seVBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+LFxuICAgIF9pc0luaXRpYWxMb2FkOiBib29sZWFuXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IG5vb3BBc3luYygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHNldHRpbmdzIGFyZSBzYXZlZC5cbiAgICpcbiAgICogQHBhcmFtIF9uZXdTdGF0ZSAtIFRoZSBuZXcgc2V0dGluZ3Mgc3RhdGUuXG4gICAqIEBwYXJhbSBfb2xkU3RhdGUgLSBUaGUgb2xkIHNldHRpbmdzIHN0YXRlLlxuICAgKiBAcGFyYW0gX2NvbnRleHQgLSBUaGUgc2F2ZSBjb250ZXh0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uU2F2ZVNldHRpbmdzKFxuICAgIF9uZXdTdGF0ZTogUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzPixcbiAgICBfb2xkU3RhdGU6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4sXG4gICAgX2NvbnRleHQ6IHVua25vd25cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyByZWNvcmQgaXMgYWJvdXQgdG8gYmUgc2F2ZWQgdG8gZGlzay5cbiAgICpcbiAgICogQHBhcmFtIF9yZWNvcmQgLSBUaGUgcmVjb3JkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uU2F2aW5nUmVjb3JkKF9yZWNvcmQ6IEdlbmVyaWNPYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGxlZ2FjeSBzZXR0aW5ncyBjb252ZXJ0ZXJzLlxuICAgKiBPdmVycmlkZSB0byByZWdpc3RlciBsZWdhY3kgc2V0dGluZ3MgY29udmVydGVycy5cbiAgICovXG4gIHByb3RlY3RlZCByZWdpc3RlckxlZ2FjeVNldHRpbmdzQ29udmVydGVycygpOiB2b2lkIHtcbiAgICBub29wKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSB2YWxpZGF0b3JzLlxuICAgKiBPdmVycmlkZSB0byByZWdpc3RlciB2YWxpZGF0b3JzIGZvciBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNsb25lU2V0dGluZ3Moc2V0dGluZ3M6IFBsdWdpblNldHRpbmdzKTogUHJvbWlzZTxQbHVnaW5TZXR0aW5ncz4ge1xuICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMuc2V0dGluZ3NUb1Jhd1JlY29yZChzZXR0aW5ncyk7XG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHJlY29yZCk7XG4gICAgY29uc3QgY2xvbmVSZWNvcmQgPSBKU09OLnBhcnNlKGpzb24pIGFzIEdlbmVyaWNPYmplY3Q7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucmF3UmVjb3JkVG9TZXR0aW5ncyhjbG9uZVJlY29yZCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNsb25lU3RhdGUoXG4gICAgc3RhdGU6IFBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+XG4gICk6IFByb21pc2U8UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZWZmZWN0aXZlVmFsdWVzOiBhd2FpdCB0aGlzLmNsb25lU2V0dGluZ3Moc3RhdGUuZWZmZWN0aXZlVmFsdWVzKSxcbiAgICAgIGlucHV0VmFsdWVzOiBhd2FpdCB0aGlzLmNsb25lU2V0dGluZ3Moc3RhdGUuaW5wdXRWYWx1ZXMpLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VzOiB7IC4uLnN0YXRlLnZhbGlkYXRpb25NZXNzYWdlcyB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGVmYXVsdFN0YXRlKCk6IFBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZWZmZWN0aXZlVmFsdWVzOiB0aGlzLmNyZWF0ZURlZmF1bHRTZXR0aW5ncygpLFxuICAgICAgaW5wdXRWYWx1ZXM6IHRoaXMuY3JlYXRlRGVmYXVsdFNldHRpbmdzKCksXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZXM6IGNhc3RUbzxSZWNvcmQ8UHJvcGVydHlOYW1lczxQbHVnaW5TZXR0aW5ncz4sIHN0cmluZz4+KHt9KVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVkaXQoc2V0dGluZ3NFZGl0b3I6IChzZXR0aW5nczogUGx1Z2luU2V0dGluZ3MpID0+IFByb21pc2FibGU8dm9pZD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgc2V0dGluZ3NFZGl0b3IodGhpcy5jdXJyZW50U3RhdGUuaW5wdXRWYWx1ZXMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdGhpcy52YWxpZGF0ZSh0aGlzLmN1cnJlbnRTdGF0ZS5pbnB1dFZhbHVlcyk7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiB0aGlzLnByb3BlcnR5TmFtZXMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbk1lc3NhZ2UgPSB2YWxpZGF0aW9uUmVzdWx0W3Byb3BlcnR5TmFtZV0gPz8gJyc7XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXRlLnZhbGlkYXRpb25NZXNzYWdlc1twcm9wZXJ0eU5hbWVdID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5kZWZhdWx0U2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXRlLmVmZmVjdGl2ZVZhbHVlc1twcm9wZXJ0eU5hbWVdID0gdmFsaWRhdGlvbk1lc3NhZ2VcbiAgICAgICAgICA/IGRlZmF1bHRzW3Byb3BlcnR5TmFtZV1cbiAgICAgICAgICA6IHRoaXMuY3VycmVudFN0YXRlLmlucHV0VmFsdWVzW3Byb3BlcnR5TmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkUHJvcGVydHlOYW1lKHByb3A6IHVua25vd24pOiBwcm9wIGlzIFByb3BlcnR5TmFtZXM8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0aGlzLnByb3BlcnR5TmFtZXMgYXMgc3RyaW5nW10pLmluY2x1ZGVzKHByb3ApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByYXdSZWNvcmRUb1NldHRpbmdzKHJhd1JlY29yZDogR2VuZXJpY09iamVjdCk6IFByb21pc2U8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByYXdSZWNvcmQgPSB0aGlzLmdldFRyYW5zZm9ybWVyKCkudHJhbnNmb3JtT2JqZWN0UmVjdXJzaXZlbHkocmF3UmVjb3JkKTtcbiAgICBhd2FpdCB0aGlzLm9uTG9hZFJlY29yZChyYXdSZWNvcmQpO1xuXG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmNyZWF0ZURlZmF1bHRTZXR0aW5ncygpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5kZWZhdWx0U2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyYXdSZWNvcmQpKSB7XG4gICAgICBpZiAoIXRoaXMuaXNWYWxpZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgIGdldExpYkRlYnVnZ2VyKCdQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U6cmF3UmVjb3JkVG9TZXR0aW5ncycpKGBVbmtub3duIHByb3BlcnR5OiAke3Byb3BlcnR5TmFtZX1gKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGVvZiBkZWZhdWx0c1twcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgIGdldExpYkRlYnVnZ2VyKCdQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U6cmF3UmVjb3JkVG9TZXR0aW5ncycpKFxuICAgICAgICAgICdQb3NzaWJsZSBpbnZhbGlkIHZhbHVlIHR5cGUuIEl0IG1pZ2h0IGxlYWQgdG8gYW4gdW5leHBlY3RlZCBiZWhhdmlvciBvZiB0aGUgcGx1Z2luLiBUaGVyZSBpcyBhbHNvIGEgY2hhbmNlIGl0IGlzIGEgZmFsc2UtbmVnYXRpdmUgd2FybmluZywgYXMgd2UgYXJlIHVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIGV4YWN0IHR5cGUgb2YgdGhlIHZhbHVlIGluIHJ1bnRpbWUuJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRzW3Byb3BlcnR5TmFtZV0sXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc2V0dGluZ3NbcHJvcGVydHlOYW1lXSA9IHZhbHVlIGFzIFByb3BlcnR5VmFsdWVzPFBsdWdpblNldHRpbmdzPjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNhdmVUb0ZpbGVJbXBsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGF0YUhhbmRsZXIuc2F2ZURhdGEoYXdhaXQgdGhpcy5zZXR0aW5nc1RvUmF3UmVjb3JkKHRoaXMuY3VycmVudFN0YXRlLmlucHV0VmFsdWVzKSk7XG4gIH1cblxuICBwcml2YXRlIHNldFByb3BlcnR5SW1wbChcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZXM8UGx1Z2luU2V0dGluZ3M+LFxuICAgIHZhbHVlOiBQcm9wZXJ0eVZhbHVlczxQbHVnaW5TZXR0aW5ncz4sXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB0aGlzLmRlZmF1bHRTZXR0aW5ncyBhcyBQbHVnaW5TZXR0aW5ncztcbiAgICB0aGlzLmN1cnJlbnRTdGF0ZS5pbnB1dFZhbHVlc1twcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgdGhpcy5jdXJyZW50U3RhdGUudmFsaWRhdGlvbk1lc3NhZ2VzW3Byb3BlcnR5TmFtZV0gPSB2YWxpZGF0aW9uTWVzc2FnZSA/PyAnJztcbiAgICB0aGlzLmN1cnJlbnRTdGF0ZS5lZmZlY3RpdmVWYWx1ZXNbcHJvcGVydHlOYW1lXSA9IHZhbGlkYXRpb25NZXNzYWdlID8gZGVmYXVsdHNbcHJvcGVydHlOYW1lXSA6IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXR0aW5nc1RvUmF3UmVjb3JkKHNldHRpbmdzOiBQbHVnaW5TZXR0aW5ncyk6IFByb21pc2U8R2VuZXJpY09iamVjdD4ge1xuICAgIGNvbnN0IHJhd1JlY29yZDogR2VuZXJpY09iamVjdCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgdGhpcy5wcm9wZXJ0eU5hbWVzKSB7XG4gICAgICByYXdSZWNvcmRbcHJvcGVydHlOYW1lXSA9IHNldHRpbmdzW3Byb3BlcnR5TmFtZV07XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5vblNhdmluZ1JlY29yZChyYXdSZWNvcmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmb3JtZXIoKS50cmFuc2Zvcm1PYmplY3RSZWN1cnNpdmVseShyYXdSZWNvcmQpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5QkEsMEJBQTRCO0FBQzVCLG1CQUErQjtBQUMv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RVEsb0JBQW9CLE1BQXNEO0FBQ2hGLFFBQUksT0FBTyxTQUFTLFVBQVU7QUFDNUIsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFRLEtBQUssY0FBMkIsU0FBUyxJQUFJO0FBQUEsRUFDdkQ7QUFBQSxFQUVBLE1BQWMsb0JBQW9CLFdBQW1EO0FBQ25GLGdCQUFZLEtBQUssZUFBZSxFQUFFLDJCQUEyQixTQUFTO0FBQ3RFLFVBQU0sS0FBSyxhQUFhLFNBQVM7QUFFakMsVUFBTSxXQUFXLEtBQUssc0JBQXNCO0FBQzVDLFVBQU0sV0FBVyxLQUFLO0FBRXRCLGVBQVcsQ0FBQyxjQUFjLEtBQUssS0FBSyxPQUFPLFFBQVEsU0FBUyxHQUFHO0FBQzdELFVBQUksQ0FBQyxLQUFLLG9CQUFvQixZQUFZLEdBQUc7QUFDM0MseUNBQWUsaURBQWlELEVBQUUscUJBQXFCLFlBQVksRUFBRTtBQUNyRztBQUFBLE1BQ0Y7QUFFQSxVQUFJLE9BQU8sVUFBVSxPQUFPLFNBQVMsWUFBWSxHQUFHO0FBQ2xELHlDQUFlLGlEQUFpRDtBQUFBLFVBQzlEO0FBQUEsVUFDQTtBQUFBLFlBQ0UsY0FBYyxTQUFTLFlBQVk7QUFBQSxZQUNuQztBQUFBLFlBQ0E7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFFQSxlQUFTLFlBQVksSUFBSTtBQUFBLElBQzNCO0FBRUEsV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVBLE1BQWMsaUJBQWdDO0FBQzVDLFVBQU0sS0FBSyxZQUFZLFNBQVMsTUFBTSxLQUFLLG9CQUFvQixLQUFLLGFBQWEsV0FBVyxDQUFDO0FBQUEsRUFDL0Y7QUFBQSxFQUVRLGdCQUNOLGNBQ0EsT0FDQSxtQkFDTTtBQUNOLFVBQU0sV0FBVyxLQUFLO0FBQ3RCLFNBQUssYUFBYSxZQUFZLFlBQVksSUFBSTtBQUM5QyxTQUFLLGFBQWEsbUJBQW1CLFlBQVksSUFBSSxxQkFBcUI7QUFDMUUsU0FBSyxhQUFhLGdCQUFnQixZQUFZLElBQUksb0JBQW9CLFNBQVMsWUFBWSxJQUFJO0FBQUEsRUFDakc7QUFBQSxFQUVBLE1BQWMsb0JBQW9CLFVBQWtEO0FBQ2xGLFVBQU0sWUFBMkIsQ0FBQztBQUVsQyxlQUFXLGdCQUFnQixLQUFLLGVBQWU7QUFDN0MsZ0JBQVUsWUFBWSxJQUFJLFNBQVMsWUFBWTtBQUFBLElBQ2pEO0FBRUEsVUFBTSxLQUFLLGVBQWUsU0FBUztBQUVuQyxXQUFPLEtBQUssZUFBZSxFQUFFLDJCQUEyQixTQUFTO0FBQUEsRUFDbkU7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -8,12 +8,12 @@
8
8
  * by this component — no separate manager class is needed.
9
9
  */
10
10
  import type { Promisable, ReadonlyDeep } from 'type-fest';
11
- import type { AsyncEventRef } from '../../../async-events.cjs';
12
- import type { Transformer } from '../../../transformers/transformer.cjs';
13
- import type { GenericObject } from '../../../type-guards.cjs';
14
- import type { MaybeReturn, StringKeys } from '../../../type.cjs';
15
- import type { DataHandler } from '../../data-handler.cjs';
16
- import { AsyncComponentBase } from '../../components/async-component.cjs';
11
+ import type { AsyncEventRef } from '../../async-events.cjs';
12
+ import type { Transformer } from '../../transformers/transformer.cjs';
13
+ import type { GenericObject } from '../../type-guards.cjs';
14
+ import type { MaybeReturn, StringKeys } from '../../type.cjs';
15
+ import type { DataHandler } from '../data-handler.cjs';
16
+ import { AsyncComponentBase } from './async-component.cjs';
17
17
  /**
18
18
  * A snapshot of plugin settings state, including raw input values, effective (validated) values,
19
19
  * and per-property validation messages.
@@ -261,19 +261,4 @@ export declare abstract class PluginSettingsComponentBase<PluginSettings extends
261
261
  private setPropertyImpl;
262
262
  private settingsToRawRecord;
263
263
  }
264
- /**
265
- * A no-op settings component for plugins without settings.
266
- */
267
- export declare class EmptyPluginSettingsComponent extends PluginSettingsComponentBase<object> {
268
- /**
269
- * Creates a new empty plugin settings component.
270
- */
271
- constructor();
272
- /**
273
- * Creates empty default settings.
274
- *
275
- * @returns An empty object.
276
- */
277
- protected createDefaultSettings(): object;
278
- }
279
264
  export {};
@@ -129,7 +129,8 @@ __export(plugin_settings_tab_component_exports, {
129
129
  });
130
130
  module.exports = __toCommonJS(plugin_settings_tab_component_exports);
131
131
  var import_obsidian = require('obsidian');
132
- class PluginSettingsTabComponent extends import_obsidian.Component {
132
+ var import_disposable_component = require('./disposable-component.cjs');
133
+ class PluginSettingsTabComponent extends import_disposable_component.DisposableComponent {
133
134
  plugin;
134
135
  pluginSettingsTab;
135
136
  /**
@@ -154,4 +155,4 @@ class PluginSettingsTabComponent extends import_obsidian.Component {
154
155
  0 && (module.exports = {
155
156
  PluginSettingsTabComponent
156
157
  });
157
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9jb21wb25lbnRzL3BsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29tcG9uZW50IHRoYXQgcmVnaXN0ZXJzIGEgcGx1Z2luIHNldHRpbmdzIHRhYiB3aXRoIE9ic2lkaWFuLlxuICogQWxzbyByZWdpc3RlcnMgYW4gXCJPcGVuIFNldHRpbmdzXCIgY29tbWFuZCBhdXRvbWF0aWNhbGx5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ3NUYWJCYXNlIH0gZnJvbSAnLi4vcGx1Z2luLXNldHRpbmdzLXRhYi50cyc7XG5cbmludGVyZmFjZSBQbHVnaW5TZXR0aW5nc1RhYkNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW47XG4gIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzVGFiOiBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8b2JqZWN0Pjtcbn1cblxuLyoqXG4gKiBXcmFwcyBhIHtAbGluayBQbHVnaW5TZXR0aW5nc1RhYkJhc2V9IGFuZCByZWdpc3RlcnMgaXQgd2l0aCBPYnNpZGlhbiBvbiBsb2FkLlxuICogQWxzbyByZWdpc3RlcnMgYW4gXCJPcGVuIFNldHRpbmdzXCIgY29tbWFuZCB0byBvcGVuIHRoZSBzZXR0aW5ncyB0YWIgZnJvbSB0aGUgY29tbWFuZCBwYWxldHRlLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luU2V0dGluZ3NUYWJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzVGFiOiBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8b2JqZWN0PjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gc2V0dGluZ3MgdGFiIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUGx1Z2luU2V0dGluZ3NUYWJDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5wbHVnaW4gPSBwYXJhbXMucGx1Z2luO1xuICAgIHRoaXMucGx1Z2luU2V0dGluZ3NUYWIgPSBwYXJhbXMucGx1Z2luU2V0dGluZ3NUYWI7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBzZXR0aW5ncyB0YWIgYW5kIGFuIFwiT3BlbiBTZXR0aW5nc1wiIGNvbW1hbmQgd2l0aCBPYnNpZGlhbi5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgc3VwZXIub25sb2FkKCk7XG4gICAgdGhpcy5wbHVnaW4uYWRkU2V0dGluZ1RhYih0aGlzLnBsdWdpblNldHRpbmdzVGFiKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0Esc0JBQTBCO0FBYW5CLE1BQU0sbUNBQW1DLDBCQUFVO0FBQUEsRUFDdkM7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1YsWUFBWSxRQUFxRDtBQUN0RSxVQUFNO0FBQ04sU0FBSyxTQUFTLE9BQU87QUFDckIsU0FBSyxvQkFBb0IsT0FBTztBQUFBLEVBQ2xDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLZ0IsU0FBZTtBQUM3QixVQUFNLE9BQU87QUFDYixTQUFLLE9BQU8sY0FBYyxLQUFLLGlCQUFpQjtBQUFBLEVBQ2xEO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
158
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCByZWdpc3RlcnMgYSBwbHVnaW4gc2V0dGluZ3MgdGFiIHdpdGggT2JzaWRpYW4uXG4gKiBBbHNvIHJlZ2lzdGVycyBhbiBcIk9wZW4gU2V0dGluZ3NcIiBjb21tYW5kIGF1dG9tYXRpY2FsbHkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IFBsdWdpblNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3Bvc2FibGUtY29tcG9uZW50LnRzJztcblxuaW50ZXJmYWNlIFBsdWdpblNldHRpbmdzVGFiQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICByZWFkb25seSBwbHVnaW46IFBsdWdpbjtcbiAgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NUYWI6IFBsdWdpblNldHRpbmdUYWI7XG59XG5cbi8qKlxuICogV3JhcHMgYSB7QGxpbmsgUGx1Z2luU2V0dGluZ1RhYn0gYW5kIHJlZ2lzdGVycyBpdCB3aXRoIE9ic2lkaWFuIG9uIGxvYWQuXG4gKiBBbHNvIHJlZ2lzdGVycyBhbiBcIk9wZW4gU2V0dGluZ3NcIiBjb21tYW5kIHRvIG9wZW4gdGhlIHNldHRpbmdzIHRhYiBmcm9tIHRoZSBjb21tYW5kIHBhbGV0dGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5TZXR0aW5nc1RhYkNvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzVGFiOiBQbHVnaW5TZXR0aW5nVGFiO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHBsdWdpbiBzZXR0aW5ncyB0YWIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIgY29tcG9uZW50IGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBQbHVnaW5TZXR0aW5nc1RhYkNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnBsdWdpbiA9IHBhcmFtcy5wbHVnaW47XG4gICAgdGhpcy5wbHVnaW5TZXR0aW5nc1RhYiA9IHBhcmFtcy5wbHVnaW5TZXR0aW5nc1RhYjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIHNldHRpbmdzIHRhYiBhbmQgYW4gXCJPcGVuIFNldHRpbmdzXCIgY29tbWFuZCB3aXRoIE9ic2lkaWFuLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcbiAgICB0aGlzLnBsdWdpbi5hZGRTZXR0aW5nVGFiKHRoaXMucGx1Z2luU2V0dGluZ3NUYWIpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQSxzQkFBaUM7QUFFakMsa0NBQW9DO0FBVzdCLE1BQU0sbUNBQW1DLGdEQUFvQjtBQUFBLEVBQ2pEO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9WLFlBQVksUUFBcUQ7QUFDdEUsVUFBTTtBQUNOLFNBQUssU0FBUyxPQUFPO0FBQ3JCLFNBQUssb0JBQW9CLE9BQU87QUFBQSxFQUNsQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS2dCLFNBQWU7QUFDN0IsVUFBTSxPQUFPO0FBQ2IsU0FBSyxPQUFPLGNBQWMsS0FBSyxpQkFBaUI7QUFBQSxFQUNsRDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=