@mnaoumov/obsidian-lib 0.0.0 → 1.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 (1044) hide show
  1. package/@types/dataview/api/data-array/package.json +4 -0
  2. package/@types/dataview/api/extensions/package.json +4 -0
  3. package/@types/dataview/api/inline-api/package.json +4 -0
  4. package/@types/dataview/api/plugin-api/package.json +4 -0
  5. package/@types/dataview/api/result/package.json +4 -0
  6. package/@types/dataview/data-import/common/package.json +4 -0
  7. package/@types/dataview/data-import/csv/package.json +4 -0
  8. package/@types/dataview/data-import/inline-field/package.json +4 -0
  9. package/@types/dataview/data-import/markdown-file/package.json +4 -0
  10. package/@types/dataview/data-import/persister/package.json +4 -0
  11. package/@types/dataview/data-import/web-worker/import-entry/package.json +4 -0
  12. package/@types/dataview/data-import/web-worker/import-impl/package.json +4 -0
  13. package/@types/dataview/data-import/web-worker/import-manager/package.json +4 -0
  14. package/@types/dataview/data-index/index/package.json +4 -0
  15. package/@types/dataview/data-index/package.json +4 -0
  16. package/@types/dataview/data-index/resolver/package.json +4 -0
  17. package/@types/dataview/data-index/source/package.json +4 -0
  18. package/@types/dataview/data-model/markdown/package.json +4 -0
  19. package/@types/dataview/data-model/serialized/markdown/package.json +4 -0
  20. package/@types/dataview/data-model/transferable/package.json +4 -0
  21. package/@types/dataview/data-model/value/package.json +4 -0
  22. package/@types/dataview/expression/binaryop/package.json +4 -0
  23. package/@types/dataview/expression/context/package.json +4 -0
  24. package/@types/dataview/expression/field/package.json +4 -0
  25. package/@types/dataview/expression/functions/package.json +4 -0
  26. package/@types/dataview/expression/parse/package.json +4 -0
  27. package/@types/dataview/index/package.json +4 -0
  28. package/@types/dataview/main/package.json +4 -0
  29. package/@types/dataview/package.json +4 -0
  30. package/@types/dataview/query/engine/package.json +4 -0
  31. package/@types/dataview/query/parse/package.json +4 -0
  32. package/@types/dataview/query/query/package.json +4 -0
  33. package/@types/dataview/settings/package.json +4 -0
  34. package/@types/dataview/typings/obsidian-ex/package.json +4 -0
  35. package/@types/dataview/typings/workers/package.json +4 -0
  36. package/@types/dataview/ui/export/markdown/package.json +4 -0
  37. package/@types/dataview/ui/lp-render/package.json +4 -0
  38. package/@types/dataview/ui/markdown/package.json +4 -0
  39. package/@types/dataview/ui/refreshable-view/package.json +4 -0
  40. package/@types/dataview/ui/render/package.json +4 -0
  41. package/@types/dataview/ui/views/calendar-view/package.json +4 -0
  42. package/@types/dataview/ui/views/inline-field-live-preview/package.json +4 -0
  43. package/@types/dataview/ui/views/inline-view/package.json +4 -0
  44. package/@types/dataview/ui/views/js-view/package.json +4 -0
  45. package/@types/dataview/ui/views/list-view/package.json +4 -0
  46. package/@types/dataview/ui/views/table-view/package.json +4 -0
  47. package/@types/dataview/ui/views/task-view/package.json +4 -0
  48. package/@types/dataview/util/hash/package.json +4 -0
  49. package/@types/dataview/util/locale/package.json +4 -0
  50. package/@types/dataview/util/media/package.json +4 -0
  51. package/@types/dataview/util/normalize/package.json +4 -0
  52. package/@types/i18next/package.json +4 -0
  53. package/@types/obsidian-integration-testing/package.json +4 -0
  54. package/@types/original-fs/package.json +4 -0
  55. package/LICENSE +21 -0
  56. package/README.md +7 -1
  57. package/codemirror/index/package.json +6 -0
  58. package/codemirror/package.json +6 -0
  59. package/codemirror/state-field-spec/package.json +6 -0
  60. package/command-handlers/abstract-file-command-handler/package.json +6 -0
  61. package/command-handlers/command-handler/package.json +6 -0
  62. package/command-handlers/command-handler-component/package.json +6 -0
  63. package/command-handlers/editor-command-handler/package.json +6 -0
  64. package/command-handlers/file-command-handler/package.json +6 -0
  65. package/command-handlers/folder-command-handler/package.json +6 -0
  66. package/command-handlers/global-command-handler/package.json +6 -0
  67. package/command-handlers/index/package.json +6 -0
  68. package/command-handlers/open-demo-vault-command-handler/package.json +6 -0
  69. package/command-handlers/open-settings-command-handler/package.json +6 -0
  70. package/command-handlers/package.json +6 -0
  71. package/command-handlers/unlock-active-note-command-handler/package.json +6 -0
  72. package/components/abort-signal-component/package.json +6 -0
  73. package/components/all-windows-event-component/package.json +6 -0
  74. package/components/async-error-handler-component/package.json +6 -0
  75. package/components/async-events-component/package.json +6 -0
  76. package/components/case-insensitive-file-index-component/package.json +6 -0
  77. package/components/component-ex/package.json +6 -0
  78. package/components/console-debug-component/package.json +6 -0
  79. package/components/core-plugin-toggle-component/package.json +6 -0
  80. package/components/disposable-component/package.json +6 -0
  81. package/components/embed-extensions-component/package.json +6 -0
  82. package/components/generate-markdown-link-default-params-component/package.json +6 -0
  83. package/components/index/package.json +6 -0
  84. package/components/layout-ready-component/package.json +6 -0
  85. package/components/menu-event-registrar-component/package.json +6 -0
  86. package/components/monkey-around-component/package.json +6 -0
  87. package/components/notebook-navigator-menu-event-registrar-component/package.json +6 -0
  88. package/components/package.json +6 -0
  89. package/components/plugin-context-component/package.json +6 -0
  90. package/components/plugin-gate-component/package.json +6 -0
  91. package/components/plugin-notice-component/package.json +6 -0
  92. package/components/plugin-settings-component/package.json +6 -0
  93. package/components/plugin-settings-tab-component/package.json +6 -0
  94. package/components/plugin-suggestion-component/package.json +6 -0
  95. package/components/pointer-position-component/package.json +6 -0
  96. package/components/registry-component/package.json +6 -0
  97. package/components/release-notes-component/package.json +6 -0
  98. package/components/rename-delete-handler-component/package.json +6 -0
  99. package/components/rmdir-guard-component/package.json +6 -0
  100. package/components/settings-migration-component/package.json +6 -0
  101. package/components/syntax-highlighting-component/package.json +6 -0
  102. package/components/templates-language-component/package.json +6 -0
  103. package/constructors/get-dom-events-handlers-constructor/package.json +6 -0
  104. package/constructors/index/package.json +6 -0
  105. package/constructors/package.json +6 -0
  106. package/dist/lib/cjs/@types/dataview/api/data-array.d.cts +137 -0
  107. package/dist/lib/cjs/@types/dataview/api/extensions.d.cts +16 -0
  108. package/dist/lib/cjs/@types/dataview/api/inline-api.d.cts +187 -0
  109. package/dist/lib/cjs/@types/dataview/api/plugin-api.d.cts +210 -0
  110. package/dist/lib/cjs/@types/dataview/api/result.d.cts +39 -0
  111. package/dist/lib/cjs/@types/dataview/data-import/common.d.cts +4 -0
  112. package/dist/lib/cjs/@types/dataview/data-import/csv.d.cts +4 -0
  113. package/dist/lib/cjs/@types/dataview/data-import/inline-field.d.cts +43 -0
  114. package/dist/lib/cjs/@types/dataview/data-import/markdown-file.d.cts +53 -0
  115. package/dist/lib/cjs/@types/dataview/data-import/persister.d.cts +33 -0
  116. package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-entry.d.cts +2 -0
  117. package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-impl.d.cts +7 -0
  118. package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-manager.d.cts +38 -0
  119. package/dist/lib/cjs/@types/dataview/data-index/index.d.cts +187 -0
  120. package/dist/lib/cjs/@types/dataview/data-index/resolver.d.cts +24 -0
  121. package/dist/lib/cjs/@types/dataview/data-index/source.d.cts +72 -0
  122. package/dist/lib/cjs/@types/dataview/data-model/markdown.d.cts +116 -0
  123. package/dist/lib/cjs/@types/dataview/data-model/serialized/markdown.d.cts +107 -0
  124. package/dist/lib/cjs/@types/dataview/data-model/transferable.d.cts +8 -0
  125. package/dist/lib/cjs/@types/dataview/data-model/value.d.cts +176 -0
  126. package/dist/lib/cjs/@types/dataview/expression/binaryop.d.cts +44 -0
  127. package/dist/lib/cjs/@types/dataview/expression/context.d.cts +50 -0
  128. package/dist/lib/cjs/@types/dataview/expression/field.d.cts +83 -0
  129. package/dist/lib/cjs/@types/dataview/expression/functions.d.cts +150 -0
  130. package/dist/lib/cjs/@types/dataview/expression/parse.d.cts +164 -0
  131. package/dist/lib/cjs/@types/dataview/index.d.cts +56 -0
  132. package/dist/lib/cjs/@types/dataview/main.d.cts +53 -0
  133. package/dist/lib/cjs/@types/dataview/query/engine.d.cts +104 -0
  134. package/dist/lib/cjs/@types/dataview/query/parse.d.cts +45 -0
  135. package/dist/lib/cjs/@types/dataview/query/query.d.cts +96 -0
  136. package/dist/lib/cjs/@types/dataview/settings.d.cts +61 -0
  137. package/dist/lib/cjs/@types/dataview/typings/obsidian-ex.d.cts +29 -0
  138. package/dist/lib/cjs/@types/dataview/typings/workers.d.cts +5 -0
  139. package/dist/lib/cjs/@types/dataview/ui/export/markdown.d.cts +16 -0
  140. package/dist/lib/cjs/@types/dataview/ui/lp-render.d.cts +38 -0
  141. package/dist/lib/cjs/@types/dataview/ui/markdown.d.cts +87 -0
  142. package/dist/lib/cjs/@types/dataview/ui/refreshable-view.d.cts +19 -0
  143. package/dist/lib/cjs/@types/dataview/ui/render.d.cts +34 -0
  144. package/dist/lib/cjs/@types/dataview/ui/views/calendar-view.d.cts +18 -0
  145. package/dist/lib/cjs/@types/dataview/ui/views/inline-field-live-preview.d.cts +43 -0
  146. package/dist/lib/cjs/@types/dataview/ui/views/inline-view.d.cts +29 -0
  147. package/dist/lib/cjs/@types/dataview/ui/views/js-view.d.cts +24 -0
  148. package/dist/lib/cjs/@types/dataview/ui/views/list-view.d.cts +26 -0
  149. package/dist/lib/cjs/@types/dataview/ui/views/table-view.d.cts +29 -0
  150. package/dist/lib/cjs/@types/dataview/ui/views/task-view.d.cts +52 -0
  151. package/dist/lib/cjs/@types/dataview/util/hash.d.cts +2 -0
  152. package/dist/lib/cjs/@types/dataview/util/locale.d.cts +3 -0
  153. package/dist/lib/cjs/@types/dataview/util/media.d.cts +7 -0
  154. package/dist/lib/cjs/@types/dataview/util/normalize.d.cts +45 -0
  155. package/dist/lib/cjs/@types/i18next.d.cts +14 -0
  156. package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +29 -0
  157. package/dist/lib/cjs/@types/original-fs.d.cts +15 -0
  158. package/dist/lib/cjs/__merged.cjs +1680 -0
  159. package/dist/lib/cjs/__merged.d.cts +205 -0
  160. package/dist/lib/cjs/active-file-provider.cjs +185 -0
  161. package/dist/lib/cjs/active-file-provider.d.cts +36 -0
  162. package/dist/lib/cjs/app.cjs +177 -0
  163. package/dist/lib/cjs/app.d.cts +17 -0
  164. package/dist/lib/cjs/async-with-notice.cjs +259 -0
  165. package/dist/lib/cjs/async-with-notice.d.cts +113 -0
  166. package/dist/lib/cjs/attachment-path.cjs +403 -0
  167. package/dist/lib/cjs/attachment-path.d.cts +341 -0
  168. package/dist/lib/cjs/attachment-unit-folder.cjs +192 -0
  169. package/dist/lib/cjs/attachment-unit-folder.d.cts +103 -0
  170. package/dist/lib/cjs/backlink-index.cjs +273 -0
  171. package/dist/lib/cjs/backlink-index.d.cts +51 -0
  172. package/dist/lib/cjs/backlink.cjs +241 -0
  173. package/dist/lib/cjs/backlink.d.cts +66 -0
  174. package/dist/lib/cjs/bases-view-registrar.cjs +186 -0
  175. package/dist/lib/cjs/bases-view-registrar.d.cts +52 -0
  176. package/dist/lib/cjs/callout.cjs +244 -0
  177. package/dist/lib/cjs/callout.d.cts +76 -0
  178. package/dist/lib/cjs/canvas.cjs +239 -0
  179. package/dist/lib/cjs/canvas.d.cts +28 -0
  180. package/dist/lib/cjs/case-insensitive-file-index.cjs +268 -0
  181. package/dist/lib/cjs/case-insensitive-file-index.d.cts +92 -0
  182. package/dist/lib/cjs/code-block-markdown-information.cjs +155 -0
  183. package/dist/lib/cjs/code-block-markdown-information.d.cts +48 -0
  184. package/dist/lib/cjs/code-block-reg-exp.cjs +169 -0
  185. package/dist/lib/cjs/code-block-reg-exp.d.cts +39 -0
  186. package/dist/lib/cjs/codemirror/index.cjs +177 -0
  187. package/dist/lib/cjs/codemirror/index.d.cts +2 -0
  188. package/dist/lib/cjs/codemirror/state-field-spec.cjs +155 -0
  189. package/dist/lib/cjs/codemirror/state-field-spec.d.cts +72 -0
  190. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +440 -0
  191. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +274 -0
  192. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +302 -0
  193. package/dist/lib/cjs/command-handlers/command-handler-component.d.cts +146 -0
  194. package/dist/lib/cjs/command-handlers/command-handler.cjs +224 -0
  195. package/dist/lib/cjs/command-handlers/command-handler.d.cts +107 -0
  196. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +372 -0
  197. package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +208 -0
  198. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +309 -0
  199. package/dist/lib/cjs/command-handlers/file-command-handler.d.cts +143 -0
  200. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +317 -0
  201. package/dist/lib/cjs/command-handlers/folder-command-handler.d.cts +149 -0
  202. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +209 -0
  203. package/dist/lib/cjs/command-handlers/global-command-handler.d.cts +40 -0
  204. package/dist/lib/cjs/command-handlers/index.cjs +204 -0
  205. package/dist/lib/cjs/command-handlers/index.d.cts +11 -0
  206. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +233 -0
  207. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.d.cts +73 -0
  208. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +198 -0
  209. package/dist/lib/cjs/command-handlers/open-settings-command-handler.d.cts +44 -0
  210. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +211 -0
  211. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.d.cts +54 -0
  212. package/dist/lib/cjs/command-registrar.cjs +193 -0
  213. package/dist/lib/cjs/command-registrar.d.cts +48 -0
  214. package/dist/lib/cjs/community-plugins.cjs +346 -0
  215. package/dist/lib/cjs/community-plugins.d.cts +270 -0
  216. package/dist/lib/cjs/components/abort-signal-component.cjs +196 -0
  217. package/dist/lib/cjs/components/abort-signal-component.d.cts +30 -0
  218. package/dist/lib/cjs/components/all-windows-event-component.cjs +238 -0
  219. package/dist/lib/cjs/components/all-windows-event-component.d.cts +84 -0
  220. package/dist/lib/cjs/components/async-error-handler-component.cjs +200 -0
  221. package/dist/lib/cjs/components/async-error-handler-component.d.cts +30 -0
  222. package/dist/lib/cjs/components/async-events-component.cjs +172 -0
  223. package/dist/lib/cjs/components/async-events-component.d.cts +15 -0
  224. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +210 -0
  225. package/dist/lib/cjs/components/case-insensitive-file-index-component.d.cts +36 -0
  226. package/dist/lib/cjs/components/component-ex.cjs +528 -0
  227. package/dist/lib/cjs/components/component-ex.d.cts +229 -0
  228. package/dist/lib/cjs/components/console-debug-component.cjs +194 -0
  229. package/dist/lib/cjs/components/console-debug-component.d.cts +30 -0
  230. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +226 -0
  231. package/dist/lib/cjs/components/core-plugin-toggle-component.d.cts +102 -0
  232. package/dist/lib/cjs/components/disposable-component.cjs +178 -0
  233. package/dist/lib/cjs/components/disposable-component.d.cts +24 -0
  234. package/dist/lib/cjs/components/embed-extensions-component.cjs +198 -0
  235. package/dist/lib/cjs/components/embed-extensions-component.d.cts +38 -0
  236. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +194 -0
  237. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.d.cts +42 -0
  238. package/dist/lib/cjs/components/index.cjs +261 -0
  239. package/dist/lib/cjs/components/index.d.cts +30 -0
  240. package/dist/lib/cjs/components/layout-ready-component.cjs +235 -0
  241. package/dist/lib/cjs/components/layout-ready-component.d.cts +48 -0
  242. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +220 -0
  243. package/dist/lib/cjs/components/menu-event-registrar-component.d.cts +52 -0
  244. package/dist/lib/cjs/components/monkey-around-component.cjs +269 -0
  245. package/dist/lib/cjs/components/monkey-around-component.d.cts +241 -0
  246. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +345 -0
  247. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.d.cts +150 -0
  248. package/dist/lib/cjs/components/plugin-context-component.cjs +204 -0
  249. package/dist/lib/cjs/components/plugin-context-component.d.cts +36 -0
  250. package/dist/lib/cjs/components/plugin-gate-component.cjs +572 -0
  251. package/dist/lib/cjs/components/plugin-gate-component.d.cts +332 -0
  252. package/dist/lib/cjs/components/plugin-notice-component.cjs +653 -0
  253. package/dist/lib/cjs/components/plugin-notice-component.d.cts +362 -0
  254. package/dist/lib/cjs/components/plugin-settings-component.cjs +668 -0
  255. package/dist/lib/cjs/components/plugin-settings-component.d.cts +362 -0
  256. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +194 -0
  257. package/dist/lib/cjs/components/plugin-settings-tab-component.d.cts +39 -0
  258. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +302 -0
  259. package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +162 -0
  260. package/dist/lib/cjs/components/pointer-position-component.cjs +190 -0
  261. package/dist/lib/cjs/components/pointer-position-component.d.cts +29 -0
  262. package/dist/lib/cjs/components/registry-component.cjs +211 -0
  263. package/dist/lib/cjs/components/registry-component.d.cts +37 -0
  264. package/dist/lib/cjs/components/release-notes-component.cjs +249 -0
  265. package/dist/lib/cjs/components/release-notes-component.d.cts +129 -0
  266. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +1299 -0
  267. package/dist/lib/cjs/components/rename-delete-handler-component.d.cts +165 -0
  268. package/dist/lib/cjs/components/rmdir-guard-component.cjs +214 -0
  269. package/dist/lib/cjs/components/rmdir-guard-component.d.cts +76 -0
  270. package/dist/lib/cjs/components/settings-migration-component.cjs +246 -0
  271. package/dist/lib/cjs/components/settings-migration-component.d.cts +120 -0
  272. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +272 -0
  273. package/dist/lib/cjs/components/syntax-highlighting-component.d.cts +149 -0
  274. package/dist/lib/cjs/components/templates-language-component.cjs +300 -0
  275. package/dist/lib/cjs/components/templates-language-component.d.cts +124 -0
  276. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +270 -0
  277. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.d.cts +22 -0
  278. package/dist/lib/cjs/constructors/index.cjs +177 -0
  279. package/dist/lib/cjs/constructors/index.d.cts +2 -0
  280. package/dist/lib/cjs/css-class.cjs +232 -0
  281. package/dist/lib/cjs/css-class.d.cts +278 -0
  282. package/dist/lib/cjs/data-handler.cjs +194 -0
  283. package/dist/lib/cjs/data-handler.d.cts +49 -0
  284. package/dist/lib/cjs/dataview-link.cjs +184 -0
  285. package/dist/lib/cjs/dataview-link.d.cts +42 -0
  286. package/dist/lib/cjs/dataview.cjs +403 -0
  287. package/dist/lib/cjs/dataview.d.cts +249 -0
  288. package/dist/lib/cjs/debug.cjs +172 -0
  289. package/dist/lib/cjs/debug.d.cts +19 -0
  290. package/dist/lib/cjs/demo-vault-helper-settings.cjs +155 -0
  291. package/dist/lib/cjs/demo-vault-helper-settings.d.cts +29 -0
  292. package/dist/lib/cjs/demo-vault-helper.cjs +256 -0
  293. package/dist/lib/cjs/demo-vault-helper.d.cts +61 -0
  294. package/dist/lib/cjs/demo-vault-naming.cjs +181 -0
  295. package/dist/lib/cjs/demo-vault-naming.d.cts +54 -0
  296. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +372 -0
  297. package/dist/lib/cjs/desktop-demo-vault-opener.d.cts +76 -0
  298. package/dist/lib/cjs/desktop-trusted-input.cjs +325 -0
  299. package/dist/lib/cjs/desktop-trusted-input.d.cts +288 -0
  300. package/dist/lib/cjs/editor-extension-registrar.cjs +186 -0
  301. package/dist/lib/cjs/editor-extension-registrar.d.cts +37 -0
  302. package/dist/lib/cjs/editor-suggest-registrar.cjs +186 -0
  303. package/dist/lib/cjs/editor-suggest-registrar.d.cts +36 -0
  304. package/dist/lib/cjs/editor.cjs +224 -0
  305. package/dist/lib/cjs/editor.d.cts +45 -0
  306. package/dist/lib/cjs/events.cjs +196 -0
  307. package/dist/lib/cjs/events.d.cts +98 -0
  308. package/dist/lib/cjs/extensions-registrar.cjs +186 -0
  309. package/dist/lib/cjs/extensions-registrar.d.cts +51 -0
  310. package/dist/lib/cjs/file-change.cjs +582 -0
  311. package/dist/lib/cjs/file-change.d.cts +156 -0
  312. package/dist/lib/cjs/file-explorer.cjs +181 -0
  313. package/dist/lib/cjs/file-explorer.d.cts +34 -0
  314. package/dist/lib/cjs/file-manager.cjs +275 -0
  315. package/dist/lib/cjs/file-manager.d.cts +123 -0
  316. package/dist/lib/cjs/file-system.cjs +595 -0
  317. package/dist/lib/cjs/file-system.d.cts +554 -0
  318. package/dist/lib/cjs/folder-note.cjs +285 -0
  319. package/dist/lib/cjs/folder-note.d.cts +166 -0
  320. package/dist/lib/cjs/frontmatter-formatting.cjs +472 -0
  321. package/dist/lib/cjs/frontmatter-formatting.d.cts +44 -0
  322. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +183 -0
  323. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.d.cts +34 -0
  324. package/dist/lib/cjs/frontmatter.cjs +295 -0
  325. package/dist/lib/cjs/frontmatter.d.cts +145 -0
  326. package/dist/lib/cjs/generated-during-build.cjs +170 -0
  327. package/dist/lib/cjs/generated-during-build.d.cts +19 -0
  328. package/dist/lib/cjs/hover-link-source-registrar.cjs +186 -0
  329. package/dist/lib/cjs/hover-link-source-registrar.d.cts +52 -0
  330. package/dist/lib/cjs/html-element.cjs +207 -0
  331. package/dist/lib/cjs/html-element.d.cts +98 -0
  332. package/dist/lib/cjs/i18n/custom-type-options.cjs +156 -0
  333. package/dist/lib/cjs/i18n/custom-type-options.d.cts +38 -0
  334. package/dist/lib/cjs/i18n/default-translations.cjs +156 -0
  335. package/dist/lib/cjs/i18n/default-translations.d.cts +15 -0
  336. package/dist/lib/cjs/i18n/i18n.cjs +216 -0
  337. package/dist/lib/cjs/i18n/i18n.d.cts +38 -0
  338. package/dist/lib/cjs/i18n/index.cjs +186 -0
  339. package/dist/lib/cjs/i18n/index.d.cts +5 -0
  340. package/dist/lib/cjs/i18n/locales/en.cjs +248 -0
  341. package/dist/lib/cjs/i18n/locales/en.d.cts +91 -0
  342. package/dist/lib/cjs/i18n/locales/index.cjs +180 -0
  343. package/dist/lib/cjs/i18n/locales/index.d.cts +3 -0
  344. package/dist/lib/cjs/i18n/locales/translations-map.cjs +174 -0
  345. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +100 -0
  346. package/dist/lib/cjs/index.cjs +459 -0
  347. package/dist/lib/cjs/index.d.cts +96 -0
  348. package/dist/lib/cjs/is-in-obsidian.cjs +178 -0
  349. package/dist/lib/cjs/is-in-obsidian.d.cts +12 -0
  350. package/dist/lib/cjs/library-styles.cjs +197 -0
  351. package/dist/lib/cjs/library-styles.d.cts +56 -0
  352. package/dist/lib/cjs/library.cjs +205 -0
  353. package/dist/lib/cjs/library.d.cts +57 -0
  354. package/dist/lib/cjs/link-name.cjs +169 -0
  355. package/dist/lib/cjs/link-name.d.cts +23 -0
  356. package/dist/lib/cjs/link-update-progress.cjs +155 -0
  357. package/dist/lib/cjs/link-update-progress.d.cts +32 -0
  358. package/dist/lib/cjs/link.cjs +1077 -0
  359. package/dist/lib/cjs/link.d.cts +1369 -0
  360. package/dist/lib/cjs/logger.cjs +236 -0
  361. package/dist/lib/cjs/logger.d.cts +37 -0
  362. package/dist/lib/cjs/loop.cjs +267 -0
  363. package/dist/lib/cjs/loop.d.cts +104 -0
  364. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +190 -0
  365. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +62 -0
  366. package/dist/lib/cjs/markdown-code-block-processor.cjs +468 -0
  367. package/dist/lib/cjs/markdown-code-block-processor.d.cts +137 -0
  368. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +187 -0
  369. package/dist/lib/cjs/markdown-post-processor-registrar.d.cts +59 -0
  370. package/dist/lib/cjs/markdown-view.cjs +175 -0
  371. package/dist/lib/cjs/markdown-view.d.cts +14 -0
  372. package/dist/lib/cjs/markdown.cjs +494 -0
  373. package/dist/lib/cjs/markdown.d.cts +226 -0
  374. package/dist/lib/cjs/menu-event-registrar.cjs +155 -0
  375. package/dist/lib/cjs/menu-event-registrar.d.cts +84 -0
  376. package/dist/lib/cjs/metadata-cache.cjs +568 -0
  377. package/dist/lib/cjs/metadata-cache.d.cts +359 -0
  378. package/dist/lib/cjs/mobile-trusted-input.cjs +209 -0
  379. package/dist/lib/cjs/mobile-trusted-input.d.cts +98 -0
  380. package/dist/lib/cjs/modals/alert.cjs +202 -0
  381. package/dist/lib/cjs/modals/alert.d.cts +35 -0
  382. package/dist/lib/cjs/modals/confirm.cjs +212 -0
  383. package/dist/lib/cjs/modals/confirm.d.cts +39 -0
  384. package/dist/lib/cjs/modals/index.cjs +201 -0
  385. package/dist/lib/cjs/modals/index.d.cts +10 -0
  386. package/dist/lib/cjs/modals/minimizable-modal.cjs +465 -0
  387. package/dist/lib/cjs/modals/minimizable-modal.d.cts +129 -0
  388. package/dist/lib/cjs/modals/modal-command-builder.cjs +482 -0
  389. package/dist/lib/cjs/modals/modal-command-builder.d.cts +285 -0
  390. package/dist/lib/cjs/modals/modal.cjs +200 -0
  391. package/dist/lib/cjs/modals/modal.d.cts +64 -0
  392. package/dist/lib/cjs/modals/prompt.cjs +280 -0
  393. package/dist/lib/cjs/modals/prompt.d.cts +83 -0
  394. package/dist/lib/cjs/modals/select-item.cjs +225 -0
  395. package/dist/lib/cjs/modals/select-item.d.cts +55 -0
  396. package/dist/lib/cjs/modals/select-option.cjs +213 -0
  397. package/dist/lib/cjs/modals/select-option.d.cts +65 -0
  398. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +168 -0
  399. package/dist/lib/cjs/modals/suggest-modal-command-builder.d.cts +35 -0
  400. package/dist/lib/cjs/note-priority.cjs +258 -0
  401. package/dist/lib/cjs/note-priority.d.cts +154 -0
  402. package/dist/lib/cjs/notebook-navigator.cjs +187 -0
  403. package/dist/lib/cjs/notebook-navigator.d.cts +132 -0
  404. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +199 -0
  405. package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +42 -0
  406. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +189 -0
  407. package/dist/lib/cjs/obsidian-protocol-handler-registrar.d.cts +55 -0
  408. package/dist/lib/cjs/obsidian-settings.cjs +206 -0
  409. package/dist/lib/cjs/obsidian-settings.d.cts +62 -0
  410. package/dist/lib/cjs/parse-link.cjs +562 -0
  411. package/dist/lib/cjs/parse-link.d.cts +288 -0
  412. package/dist/lib/cjs/path-settings.cjs +293 -0
  413. package/dist/lib/cjs/path-settings.d.cts +56 -0
  414. package/dist/lib/cjs/pdf.cjs +197 -0
  415. package/dist/lib/cjs/pdf.d.cts +26 -0
  416. package/dist/lib/cjs/plugin/index.cjs +198 -0
  417. package/dist/lib/cjs/plugin/index.d.cts +9 -0
  418. package/dist/lib/cjs/plugin/plugin-api.cjs +543 -0
  419. package/dist/lib/cjs/plugin/plugin-api.d.cts +413 -0
  420. package/dist/lib/cjs/plugin/plugin-context.cjs +215 -0
  421. package/dist/lib/cjs/plugin/plugin-context.d.cts +27 -0
  422. package/dist/lib/cjs/plugin/plugin-event-source.cjs +250 -0
  423. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +97 -0
  424. package/dist/lib/cjs/plugin/plugin-install-state.cjs +219 -0
  425. package/dist/lib/cjs/plugin/plugin-install-state.d.cts +113 -0
  426. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +175 -0
  427. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +127 -0
  428. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +635 -0
  429. package/dist/lib/cjs/plugin/plugin-settings-tab.d.cts +368 -0
  430. package/dist/lib/cjs/plugin/plugin.cjs +730 -0
  431. package/dist/lib/cjs/plugin/plugin.d.cts +363 -0
  432. package/dist/lib/cjs/plugin/settings-migration-api.cjs +155 -0
  433. package/dist/lib/cjs/plugin/settings-migration-api.d.cts +91 -0
  434. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +187 -0
  435. package/dist/lib/cjs/plugin-cli-handler-registrar.d.cts +64 -0
  436. package/dist/lib/cjs/popovers/field-popover.cjs +206 -0
  437. package/dist/lib/cjs/popovers/field-popover.d.cts +75 -0
  438. package/dist/lib/cjs/popovers/index.cjs +183 -0
  439. package/dist/lib/cjs/popovers/index.d.cts +4 -0
  440. package/dist/lib/cjs/popovers/popover-anchor.cjs +206 -0
  441. package/dist/lib/cjs/popovers/popover-anchor.d.cts +67 -0
  442. package/dist/lib/cjs/popovers/popover.cjs +253 -0
  443. package/dist/lib/cjs/popovers/popover.d.cts +78 -0
  444. package/dist/lib/cjs/property-entry.cjs +196 -0
  445. package/dist/lib/cjs/property-entry.d.cts +43 -0
  446. package/dist/lib/cjs/queue.cjs +236 -0
  447. package/dist/lib/cjs/queue.d.cts +93 -0
  448. package/dist/lib/cjs/react/app-context.cjs +175 -0
  449. package/dist/lib/cjs/react/app-context.d.cts +24 -0
  450. package/dist/lib/cjs/react/index.cjs +177 -0
  451. package/dist/lib/cjs/react/index.d.cts +2 -0
  452. package/dist/lib/cjs/reference.cjs +210 -0
  453. package/dist/lib/cjs/reference.d.cts +116 -0
  454. package/dist/lib/cjs/resource-lock.cjs +1120 -0
  455. package/dist/lib/cjs/resource-lock.d.cts +318 -0
  456. package/dist/lib/cjs/resource-url.cjs +180 -0
  457. package/dist/lib/cjs/resource-url.d.cts +31 -0
  458. package/dist/lib/cjs/ribbon-icon-registrar.cjs +187 -0
  459. package/dist/lib/cjs/ribbon-icon-registrar.d.cts +60 -0
  460. package/dist/lib/cjs/setting-components/checkbox-component.cjs +240 -0
  461. package/dist/lib/cjs/setting-components/checkbox-component.d.cts +69 -0
  462. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +402 -0
  463. package/dist/lib/cjs/setting-components/code-highlighter-component.d.cts +132 -0
  464. package/dist/lib/cjs/setting-components/date-component.cjs +204 -0
  465. package/dist/lib/cjs/setting-components/date-component.d.cts +38 -0
  466. package/dist/lib/cjs/setting-components/date-time-component.cjs +204 -0
  467. package/dist/lib/cjs/setting-components/date-time-component.d.cts +38 -0
  468. package/dist/lib/cjs/setting-components/email-component.cjs +215 -0
  469. package/dist/lib/cjs/setting-components/email-component.d.cts +49 -0
  470. package/dist/lib/cjs/setting-components/file-component.cjs +207 -0
  471. package/dist/lib/cjs/setting-components/file-component.d.cts +43 -0
  472. package/dist/lib/cjs/setting-components/index.cjs +252 -0
  473. package/dist/lib/cjs/setting-components/index.d.cts +27 -0
  474. package/dist/lib/cjs/setting-components/month-component.cjs +212 -0
  475. package/dist/lib/cjs/setting-components/month-component.d.cts +51 -0
  476. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +277 -0
  477. package/dist/lib/cjs/setting-components/multiple-dropdown-component.d.cts +92 -0
  478. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +201 -0
  479. package/dist/lib/cjs/setting-components/multiple-email-component.d.cts +38 -0
  480. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +209 -0
  481. package/dist/lib/cjs/setting-components/multiple-file-component.d.cts +43 -0
  482. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +296 -0
  483. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +109 -0
  484. package/dist/lib/cjs/setting-components/number-component.cjs +225 -0
  485. package/dist/lib/cjs/setting-components/number-component.d.cts +56 -0
  486. package/dist/lib/cjs/setting-components/password-component.cjs +201 -0
  487. package/dist/lib/cjs/setting-components/password-component.d.cts +38 -0
  488. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +184 -0
  489. package/dist/lib/cjs/setting-components/setting-component-wrapper.d.cts +13 -0
  490. package/dist/lib/cjs/setting-components/telephone-component.cjs +215 -0
  491. package/dist/lib/cjs/setting-components/telephone-component.d.cts +51 -0
  492. package/dist/lib/cjs/setting-components/text-based-component.cjs +194 -0
  493. package/dist/lib/cjs/setting-components/text-based-component.d.cts +38 -0
  494. package/dist/lib/cjs/setting-components/time-component.cjs +209 -0
  495. package/dist/lib/cjs/setting-components/time-component.d.cts +38 -0
  496. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +241 -0
  497. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.d.cts +69 -0
  498. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +286 -0
  499. package/dist/lib/cjs/setting-components/typed-dropdown-component.d.cts +97 -0
  500. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +288 -0
  501. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.d.cts +99 -0
  502. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +199 -0
  503. package/dist/lib/cjs/setting-components/typed-range-text-component.d.cts +35 -0
  504. package/dist/lib/cjs/setting-components/typed-text-component.cjs +256 -0
  505. package/dist/lib/cjs/setting-components/typed-text-component.d.cts +100 -0
  506. package/dist/lib/cjs/setting-components/url-component.cjs +215 -0
  507. package/dist/lib/cjs/setting-components/url-component.d.cts +49 -0
  508. package/dist/lib/cjs/setting-components/validator-component.cjs +254 -0
  509. package/dist/lib/cjs/setting-components/validator-component.d.cts +23 -0
  510. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +155 -0
  511. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.d.cts +20 -0
  512. package/dist/lib/cjs/setting-components/week-component.cjs +212 -0
  513. package/dist/lib/cjs/setting-components/week-component.d.cts +51 -0
  514. package/dist/lib/cjs/setting-ex.cjs +396 -0
  515. package/dist/lib/cjs/setting-ex.d.cts +198 -0
  516. package/dist/lib/cjs/setting-group-ex.cjs +189 -0
  517. package/dist/lib/cjs/setting-group-ex.d.cts +26 -0
  518. package/dist/lib/cjs/status-bar-item-registrar.cjs +186 -0
  519. package/dist/lib/cjs/status-bar-item-registrar.d.cts +36 -0
  520. package/dist/lib/cjs/templater.cjs +303 -0
  521. package/dist/lib/cjs/templater.d.cts +284 -0
  522. package/dist/lib/cjs/transformers/duration-transformer.cjs +206 -0
  523. package/dist/lib/cjs/transformers/duration-transformer.d.cts +39 -0
  524. package/dist/lib/cjs/transformers/index.cjs +177 -0
  525. package/dist/lib/cjs/transformers/index.d.cts +2 -0
  526. package/dist/lib/cjs/trusted-input.cjs +220 -0
  527. package/dist/lib/cjs/trusted-input.d.cts +131 -0
  528. package/dist/lib/cjs/validation.cjs +213 -0
  529. package/dist/lib/cjs/validation.d.cts +87 -0
  530. package/dist/lib/cjs/vault-delete.cjs +246 -0
  531. package/dist/lib/cjs/vault-delete.d.cts +82 -0
  532. package/dist/lib/cjs/vault-transaction.cjs +436 -0
  533. package/dist/lib/cjs/vault-transaction.d.cts +163 -0
  534. package/dist/lib/cjs/vault.cjs +725 -0
  535. package/dist/lib/cjs/vault.d.cts +506 -0
  536. package/dist/lib/cjs/view-registrar.cjs +186 -0
  537. package/dist/lib/cjs/view-registrar.d.cts +52 -0
  538. package/dist/lib/cjs/workspace.cjs +210 -0
  539. package/dist/lib/cjs/workspace.d.cts +81 -0
  540. package/dist/lib/esm/@types/dataview/api/data-array.d.mts +137 -0
  541. package/dist/lib/esm/@types/dataview/api/extensions.d.mts +16 -0
  542. package/dist/lib/esm/@types/dataview/api/inline-api.d.mts +187 -0
  543. package/dist/lib/esm/@types/dataview/api/plugin-api.d.mts +210 -0
  544. package/dist/lib/esm/@types/dataview/api/result.d.mts +39 -0
  545. package/dist/lib/esm/@types/dataview/data-import/common.d.mts +4 -0
  546. package/dist/lib/esm/@types/dataview/data-import/csv.d.mts +4 -0
  547. package/dist/lib/esm/@types/dataview/data-import/inline-field.d.mts +43 -0
  548. package/dist/lib/esm/@types/dataview/data-import/markdown-file.d.mts +53 -0
  549. package/dist/lib/esm/@types/dataview/data-import/persister.d.mts +33 -0
  550. package/dist/lib/esm/@types/dataview/data-import/web-worker/import-entry.d.mts +2 -0
  551. package/dist/lib/esm/@types/dataview/data-import/web-worker/import-impl.d.mts +7 -0
  552. package/dist/lib/esm/@types/dataview/data-import/web-worker/import-manager.d.mts +38 -0
  553. package/dist/lib/esm/@types/dataview/data-index/index.d.mts +187 -0
  554. package/dist/lib/esm/@types/dataview/data-index/resolver.d.mts +24 -0
  555. package/dist/lib/esm/@types/dataview/data-index/source.d.mts +72 -0
  556. package/dist/lib/esm/@types/dataview/data-model/markdown.d.mts +116 -0
  557. package/dist/lib/esm/@types/dataview/data-model/serialized/markdown.d.mts +107 -0
  558. package/dist/lib/esm/@types/dataview/data-model/transferable.d.mts +8 -0
  559. package/dist/lib/esm/@types/dataview/data-model/value.d.mts +176 -0
  560. package/dist/lib/esm/@types/dataview/expression/binaryop.d.mts +44 -0
  561. package/dist/lib/esm/@types/dataview/expression/context.d.mts +50 -0
  562. package/dist/lib/esm/@types/dataview/expression/field.d.mts +83 -0
  563. package/dist/lib/esm/@types/dataview/expression/functions.d.mts +150 -0
  564. package/dist/lib/esm/@types/dataview/expression/parse.d.mts +164 -0
  565. package/dist/lib/esm/@types/dataview/index.d.mts +56 -0
  566. package/dist/lib/esm/@types/dataview/main.d.mts +53 -0
  567. package/dist/lib/esm/@types/dataview/query/engine.d.mts +104 -0
  568. package/dist/lib/esm/@types/dataview/query/parse.d.mts +45 -0
  569. package/dist/lib/esm/@types/dataview/query/query.d.mts +96 -0
  570. package/dist/lib/esm/@types/dataview/settings.d.mts +61 -0
  571. package/dist/lib/esm/@types/dataview/typings/obsidian-ex.d.mts +29 -0
  572. package/dist/lib/esm/@types/dataview/typings/workers.d.mts +5 -0
  573. package/dist/lib/esm/@types/dataview/ui/export/markdown.d.mts +16 -0
  574. package/dist/lib/esm/@types/dataview/ui/lp-render.d.mts +38 -0
  575. package/dist/lib/esm/@types/dataview/ui/markdown.d.mts +87 -0
  576. package/dist/lib/esm/@types/dataview/ui/refreshable-view.d.mts +19 -0
  577. package/dist/lib/esm/@types/dataview/ui/render.d.mts +34 -0
  578. package/dist/lib/esm/@types/dataview/ui/views/calendar-view.d.mts +18 -0
  579. package/dist/lib/esm/@types/dataview/ui/views/inline-field-live-preview.d.mts +43 -0
  580. package/dist/lib/esm/@types/dataview/ui/views/inline-view.d.mts +29 -0
  581. package/dist/lib/esm/@types/dataview/ui/views/js-view.d.mts +24 -0
  582. package/dist/lib/esm/@types/dataview/ui/views/list-view.d.mts +26 -0
  583. package/dist/lib/esm/@types/dataview/ui/views/table-view.d.mts +29 -0
  584. package/dist/lib/esm/@types/dataview/ui/views/task-view.d.mts +52 -0
  585. package/dist/lib/esm/@types/dataview/util/hash.d.mts +2 -0
  586. package/dist/lib/esm/@types/dataview/util/locale.d.mts +3 -0
  587. package/dist/lib/esm/@types/dataview/util/media.d.mts +7 -0
  588. package/dist/lib/esm/@types/dataview/util/normalize.d.mts +45 -0
  589. package/dist/lib/esm/@types/i18next.d.mts +14 -0
  590. package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +29 -0
  591. package/dist/lib/esm/@types/original-fs.d.mts +15 -0
  592. package/dist/lib/esm/__merged.d.mts +205 -0
  593. package/dist/lib/esm/__merged.mjs +1532 -0
  594. package/dist/lib/esm/active-file-provider.d.mts +36 -0
  595. package/dist/lib/esm/active-file-provider.mjs +72 -0
  596. package/dist/lib/esm/app.d.mts +17 -0
  597. package/dist/lib/esm/app.mjs +64 -0
  598. package/dist/lib/esm/async-with-notice.d.mts +113 -0
  599. package/dist/lib/esm/async-with-notice.mjs +149 -0
  600. package/dist/lib/esm/attachment-path.d.mts +341 -0
  601. package/dist/lib/esm/attachment-path.mjs +302 -0
  602. package/dist/lib/esm/attachment-unit-folder.d.mts +103 -0
  603. package/dist/lib/esm/attachment-unit-folder.mjs +78 -0
  604. package/dist/lib/esm/backlink-index.d.mts +51 -0
  605. package/dist/lib/esm/backlink-index.mjs +160 -0
  606. package/dist/lib/esm/backlink.d.mts +66 -0
  607. package/dist/lib/esm/backlink.mjs +131 -0
  608. package/dist/lib/esm/bases-view-registrar.d.mts +52 -0
  609. package/dist/lib/esm/bases-view-registrar.mjs +73 -0
  610. package/dist/lib/esm/callout.d.mts +76 -0
  611. package/dist/lib/esm/callout.mjs +132 -0
  612. package/dist/lib/esm/canvas.d.mts +28 -0
  613. package/dist/lib/esm/canvas.mjs +129 -0
  614. package/dist/lib/esm/case-insensitive-file-index.d.mts +92 -0
  615. package/dist/lib/esm/case-insensitive-file-index.mjs +152 -0
  616. package/dist/lib/esm/code-block-markdown-information.d.mts +48 -0
  617. package/dist/lib/esm/code-block-markdown-information.mjs +50 -0
  618. package/dist/lib/esm/code-block-reg-exp.d.mts +39 -0
  619. package/dist/lib/esm/code-block-reg-exp.mjs +56 -0
  620. package/dist/lib/esm/codemirror/index.d.mts +2 -0
  621. package/dist/lib/esm/codemirror/index.mjs +54 -0
  622. package/dist/lib/esm/codemirror/state-field-spec.d.mts +72 -0
  623. package/dist/lib/esm/codemirror/state-field-spec.mjs +50 -0
  624. package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +274 -0
  625. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +330 -0
  626. package/dist/lib/esm/command-handlers/command-handler-component.d.mts +146 -0
  627. package/dist/lib/esm/command-handlers/command-handler-component.mjs +193 -0
  628. package/dist/lib/esm/command-handlers/command-handler.d.mts +107 -0
  629. package/dist/lib/esm/command-handlers/command-handler.mjs +111 -0
  630. package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +208 -0
  631. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +262 -0
  632. package/dist/lib/esm/command-handlers/file-command-handler.d.mts +143 -0
  633. package/dist/lib/esm/command-handlers/file-command-handler.mjs +200 -0
  634. package/dist/lib/esm/command-handlers/folder-command-handler.d.mts +149 -0
  635. package/dist/lib/esm/command-handlers/folder-command-handler.mjs +208 -0
  636. package/dist/lib/esm/command-handlers/global-command-handler.d.mts +40 -0
  637. package/dist/lib/esm/command-handlers/global-command-handler.mjs +96 -0
  638. package/dist/lib/esm/command-handlers/index.d.mts +11 -0
  639. package/dist/lib/esm/command-handlers/index.mjs +72 -0
  640. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.d.mts +73 -0
  641. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +110 -0
  642. package/dist/lib/esm/command-handlers/open-settings-command-handler.d.mts +44 -0
  643. package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +85 -0
  644. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.d.mts +54 -0
  645. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +98 -0
  646. package/dist/lib/esm/command-registrar.d.mts +48 -0
  647. package/dist/lib/esm/command-registrar.mjs +80 -0
  648. package/dist/lib/esm/community-plugins.d.mts +270 -0
  649. package/dist/lib/esm/community-plugins.mjs +222 -0
  650. package/dist/lib/esm/components/abort-signal-component.d.mts +30 -0
  651. package/dist/lib/esm/components/abort-signal-component.mjs +83 -0
  652. package/dist/lib/esm/components/all-windows-event-component.d.mts +84 -0
  653. package/dist/lib/esm/components/all-windows-event-component.mjs +125 -0
  654. package/dist/lib/esm/components/async-error-handler-component.d.mts +30 -0
  655. package/dist/lib/esm/components/async-error-handler-component.mjs +87 -0
  656. package/dist/lib/esm/components/async-events-component.d.mts +15 -0
  657. package/dist/lib/esm/components/async-events-component.mjs +59 -0
  658. package/dist/lib/esm/components/case-insensitive-file-index-component.d.mts +36 -0
  659. package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +101 -0
  660. package/dist/lib/esm/components/component-ex.d.mts +229 -0
  661. package/dist/lib/esm/components/component-ex.mjs +421 -0
  662. package/dist/lib/esm/components/console-debug-component.d.mts +30 -0
  663. package/dist/lib/esm/components/console-debug-component.mjs +81 -0
  664. package/dist/lib/esm/components/core-plugin-toggle-component.d.mts +102 -0
  665. package/dist/lib/esm/components/core-plugin-toggle-component.mjs +113 -0
  666. package/dist/lib/esm/components/disposable-component.d.mts +24 -0
  667. package/dist/lib/esm/components/disposable-component.mjs +65 -0
  668. package/dist/lib/esm/components/embed-extensions-component.d.mts +38 -0
  669. package/dist/lib/esm/components/embed-extensions-component.mjs +85 -0
  670. package/dist/lib/esm/components/generate-markdown-link-default-params-component.d.mts +42 -0
  671. package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +81 -0
  672. package/dist/lib/esm/components/index.d.mts +30 -0
  673. package/dist/lib/esm/components/index.mjs +110 -0
  674. package/dist/lib/esm/components/layout-ready-component.d.mts +48 -0
  675. package/dist/lib/esm/components/layout-ready-component.mjs +121 -0
  676. package/dist/lib/esm/components/menu-event-registrar-component.d.mts +52 -0
  677. package/dist/lib/esm/components/menu-event-registrar-component.mjs +107 -0
  678. package/dist/lib/esm/components/monkey-around-component.d.mts +241 -0
  679. package/dist/lib/esm/components/monkey-around-component.mjs +154 -0
  680. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.d.mts +150 -0
  681. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +235 -0
  682. package/dist/lib/esm/components/plugin-context-component.d.mts +36 -0
  683. package/dist/lib/esm/components/plugin-context-component.mjs +94 -0
  684. package/dist/lib/esm/components/plugin-gate-component.d.mts +332 -0
  685. package/dist/lib/esm/components/plugin-gate-component.mjs +472 -0
  686. package/dist/lib/esm/components/plugin-notice-component.d.mts +362 -0
  687. package/dist/lib/esm/components/plugin-notice-component.mjs +543 -0
  688. package/dist/lib/esm/components/plugin-settings-component.d.mts +362 -0
  689. package/dist/lib/esm/components/plugin-settings-component.mjs +562 -0
  690. package/dist/lib/esm/components/plugin-settings-tab-component.d.mts +39 -0
  691. package/dist/lib/esm/components/plugin-settings-tab-component.mjs +81 -0
  692. package/dist/lib/esm/components/plugin-suggestion-component.d.mts +162 -0
  693. package/dist/lib/esm/components/plugin-suggestion-component.mjs +192 -0
  694. package/dist/lib/esm/components/pointer-position-component.d.mts +29 -0
  695. package/dist/lib/esm/components/pointer-position-component.mjs +77 -0
  696. package/dist/lib/esm/components/registry-component.d.mts +37 -0
  697. package/dist/lib/esm/components/registry-component.mjs +98 -0
  698. package/dist/lib/esm/components/release-notes-component.d.mts +129 -0
  699. package/dist/lib/esm/components/release-notes-component.mjs +136 -0
  700. package/dist/lib/esm/components/rename-delete-handler-component.d.mts +165 -0
  701. package/dist/lib/esm/components/rename-delete-handler-component.mjs +1238 -0
  702. package/dist/lib/esm/components/rmdir-guard-component.d.mts +76 -0
  703. package/dist/lib/esm/components/rmdir-guard-component.mjs +100 -0
  704. package/dist/lib/esm/components/settings-migration-component.d.mts +120 -0
  705. package/dist/lib/esm/components/settings-migration-component.mjs +133 -0
  706. package/dist/lib/esm/components/syntax-highlighting-component.d.mts +149 -0
  707. package/dist/lib/esm/components/syntax-highlighting-component.mjs +159 -0
  708. package/dist/lib/esm/components/templates-language-component.d.mts +124 -0
  709. package/dist/lib/esm/components/templates-language-component.mjs +187 -0
  710. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.d.mts +22 -0
  711. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +157 -0
  712. package/dist/lib/esm/constructors/index.d.mts +2 -0
  713. package/dist/lib/esm/constructors/index.mjs +54 -0
  714. package/dist/lib/esm/css-class.d.mts +278 -0
  715. package/dist/lib/esm/css-class.mjs +119 -0
  716. package/dist/lib/esm/data-handler.d.mts +49 -0
  717. package/dist/lib/esm/data-handler.mjs +81 -0
  718. package/dist/lib/esm/dataview-link.d.mts +42 -0
  719. package/dist/lib/esm/dataview-link.mjs +74 -0
  720. package/dist/lib/esm/dataview.d.mts +249 -0
  721. package/dist/lib/esm/dataview.mjs +288 -0
  722. package/dist/lib/esm/debug.d.mts +19 -0
  723. package/dist/lib/esm/debug.mjs +59 -0
  724. package/dist/lib/esm/demo-vault-helper-settings.d.mts +29 -0
  725. package/dist/lib/esm/demo-vault-helper-settings.mjs +50 -0
  726. package/dist/lib/esm/demo-vault-helper.d.mts +61 -0
  727. package/dist/lib/esm/demo-vault-helper.mjs +150 -0
  728. package/dist/lib/esm/demo-vault-naming.d.mts +54 -0
  729. package/dist/lib/esm/demo-vault-naming.mjs +67 -0
  730. package/dist/lib/esm/desktop-demo-vault-opener.d.mts +76 -0
  731. package/dist/lib/esm/desktop-demo-vault-opener.mjs +274 -0
  732. package/dist/lib/esm/desktop-trusted-input.d.mts +288 -0
  733. package/dist/lib/esm/desktop-trusted-input.mjs +206 -0
  734. package/dist/lib/esm/editor-extension-registrar.d.mts +37 -0
  735. package/dist/lib/esm/editor-extension-registrar.mjs +73 -0
  736. package/dist/lib/esm/editor-suggest-registrar.d.mts +36 -0
  737. package/dist/lib/esm/editor-suggest-registrar.mjs +76 -0
  738. package/dist/lib/esm/editor.d.mts +45 -0
  739. package/dist/lib/esm/editor.mjs +115 -0
  740. package/dist/lib/esm/events.d.mts +98 -0
  741. package/dist/lib/esm/events.mjs +81 -0
  742. package/dist/lib/esm/extensions-registrar.d.mts +51 -0
  743. package/dist/lib/esm/extensions-registrar.mjs +73 -0
  744. package/dist/lib/esm/file-change.d.mts +156 -0
  745. package/dist/lib/esm/file-change.mjs +481 -0
  746. package/dist/lib/esm/file-explorer.d.mts +34 -0
  747. package/dist/lib/esm/file-explorer.mjs +68 -0
  748. package/dist/lib/esm/file-manager.d.mts +123 -0
  749. package/dist/lib/esm/file-manager.mjs +169 -0
  750. package/dist/lib/esm/file-system.d.mts +554 -0
  751. package/dist/lib/esm/file-system.mjs +466 -0
  752. package/dist/lib/esm/folder-note.d.mts +166 -0
  753. package/dist/lib/esm/folder-note.mjs +169 -0
  754. package/dist/lib/esm/frontmatter-formatting.d.mts +44 -0
  755. package/dist/lib/esm/frontmatter-formatting.mjs +376 -0
  756. package/dist/lib/esm/frontmatter-link-cache-with-offsets.d.mts +34 -0
  757. package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +69 -0
  758. package/dist/lib/esm/frontmatter.d.mts +145 -0
  759. package/dist/lib/esm/frontmatter.mjs +182 -0
  760. package/dist/lib/esm/generated-during-build.d.mts +19 -0
  761. package/dist/lib/esm/generated-during-build.mjs +56 -0
  762. package/dist/lib/esm/hover-link-source-registrar.d.mts +52 -0
  763. package/dist/lib/esm/hover-link-source-registrar.mjs +73 -0
  764. package/dist/lib/esm/html-element.d.mts +98 -0
  765. package/dist/lib/esm/html-element.mjs +94 -0
  766. package/dist/lib/esm/i18n/custom-type-options.d.mts +38 -0
  767. package/dist/lib/esm/i18n/custom-type-options.mjs +51 -0
  768. package/dist/lib/esm/i18n/default-translations.d.mts +15 -0
  769. package/dist/lib/esm/i18n/default-translations.mjs +51 -0
  770. package/dist/lib/esm/i18n/i18n.d.mts +38 -0
  771. package/dist/lib/esm/i18n/i18n.mjs +97 -0
  772. package/dist/lib/esm/i18n/index.d.mts +5 -0
  773. package/dist/lib/esm/i18n/index.mjs +60 -0
  774. package/dist/lib/esm/i18n/locales/en.d.mts +91 -0
  775. package/dist/lib/esm/i18n/locales/en.mjs +135 -0
  776. package/dist/lib/esm/i18n/locales/index.d.mts +3 -0
  777. package/dist/lib/esm/i18n/locales/index.mjs +56 -0
  778. package/dist/lib/esm/i18n/locales/translations-map.d.mts +100 -0
  779. package/dist/lib/esm/i18n/locales/translations-map.mjs +60 -0
  780. package/dist/lib/esm/index.d.mts +96 -0
  781. package/dist/lib/esm/index.mjs +242 -0
  782. package/dist/lib/esm/is-in-obsidian.d.mts +12 -0
  783. package/dist/lib/esm/is-in-obsidian.mjs +67 -0
  784. package/dist/lib/esm/library-styles.d.mts +56 -0
  785. package/dist/lib/esm/library-styles.mjs +80 -0
  786. package/dist/lib/esm/library.d.mts +57 -0
  787. package/dist/lib/esm/library.mjs +91 -0
  788. package/dist/lib/esm/link-name.d.mts +23 -0
  789. package/dist/lib/esm/link-name.mjs +56 -0
  790. package/dist/lib/esm/link-update-progress.d.mts +32 -0
  791. package/dist/lib/esm/link-update-progress.mjs +50 -0
  792. package/dist/lib/esm/link.d.mts +1369 -0
  793. package/dist/lib/esm/link.mjs +996 -0
  794. package/dist/lib/esm/logger.d.mts +37 -0
  795. package/dist/lib/esm/logger.mjs +123 -0
  796. package/dist/lib/esm/loop.d.mts +104 -0
  797. package/dist/lib/esm/loop.mjs +159 -0
  798. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +62 -0
  799. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +77 -0
  800. package/dist/lib/esm/markdown-code-block-processor.d.mts +137 -0
  801. package/dist/lib/esm/markdown-code-block-processor.mjs +364 -0
  802. package/dist/lib/esm/markdown-post-processor-registrar.d.mts +59 -0
  803. package/dist/lib/esm/markdown-post-processor-registrar.mjs +74 -0
  804. package/dist/lib/esm/markdown-view.d.mts +14 -0
  805. package/dist/lib/esm/markdown-view.mjs +62 -0
  806. package/dist/lib/esm/markdown.d.mts +226 -0
  807. package/dist/lib/esm/markdown.mjs +399 -0
  808. package/dist/lib/esm/menu-event-registrar.d.mts +84 -0
  809. package/dist/lib/esm/menu-event-registrar.mjs +50 -0
  810. package/dist/lib/esm/metadata-cache.d.mts +359 -0
  811. package/dist/lib/esm/metadata-cache.mjs +462 -0
  812. package/dist/lib/esm/mobile-trusted-input.d.mts +98 -0
  813. package/dist/lib/esm/mobile-trusted-input.mjs +90 -0
  814. package/dist/lib/esm/modals/alert.d.mts +35 -0
  815. package/dist/lib/esm/modals/alert.mjs +92 -0
  816. package/dist/lib/esm/modals/confirm.d.mts +39 -0
  817. package/dist/lib/esm/modals/confirm.mjs +102 -0
  818. package/dist/lib/esm/modals/index.d.mts +10 -0
  819. package/dist/lib/esm/modals/index.mjs +70 -0
  820. package/dist/lib/esm/modals/minimizable-modal.d.mts +129 -0
  821. package/dist/lib/esm/modals/minimizable-modal.mjs +356 -0
  822. package/dist/lib/esm/modals/modal-command-builder.d.mts +285 -0
  823. package/dist/lib/esm/modals/modal-command-builder.mjs +371 -0
  824. package/dist/lib/esm/modals/modal.d.mts +64 -0
  825. package/dist/lib/esm/modals/modal.mjs +86 -0
  826. package/dist/lib/esm/modals/prompt.d.mts +83 -0
  827. package/dist/lib/esm/modals/prompt.mjs +176 -0
  828. package/dist/lib/esm/modals/select-item.d.mts +55 -0
  829. package/dist/lib/esm/modals/select-item.mjs +112 -0
  830. package/dist/lib/esm/modals/select-option.d.mts +65 -0
  831. package/dist/lib/esm/modals/select-option.mjs +103 -0
  832. package/dist/lib/esm/modals/suggest-modal-command-builder.d.mts +35 -0
  833. package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +55 -0
  834. package/dist/lib/esm/note-priority.d.mts +154 -0
  835. package/dist/lib/esm/note-priority.mjs +143 -0
  836. package/dist/lib/esm/notebook-navigator.d.mts +132 -0
  837. package/dist/lib/esm/notebook-navigator.mjs +72 -0
  838. package/dist/lib/esm/obsidian-dev-utils-state.d.mts +42 -0
  839. package/dist/lib/esm/obsidian-dev-utils-state.mjs +84 -0
  840. package/dist/lib/esm/obsidian-protocol-handler-registrar.d.mts +55 -0
  841. package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +76 -0
  842. package/dist/lib/esm/obsidian-settings.d.mts +62 -0
  843. package/dist/lib/esm/obsidian-settings.mjs +89 -0
  844. package/dist/lib/esm/parse-link.d.mts +288 -0
  845. package/dist/lib/esm/parse-link.mjs +436 -0
  846. package/dist/lib/esm/path-settings.d.mts +56 -0
  847. package/dist/lib/esm/path-settings.mjs +184 -0
  848. package/dist/lib/esm/pdf.d.mts +26 -0
  849. package/dist/lib/esm/pdf.mjs +84 -0
  850. package/dist/lib/esm/plugin/index.d.mts +9 -0
  851. package/dist/lib/esm/plugin/index.mjs +68 -0
  852. package/dist/lib/esm/plugin/plugin-api.d.mts +413 -0
  853. package/dist/lib/esm/plugin/plugin-api.mjs +430 -0
  854. package/dist/lib/esm/plugin/plugin-context.d.mts +27 -0
  855. package/dist/lib/esm/plugin/plugin-context.mjs +109 -0
  856. package/dist/lib/esm/plugin/plugin-event-source.d.mts +97 -0
  857. package/dist/lib/esm/plugin/plugin-event-source.mjs +137 -0
  858. package/dist/lib/esm/plugin/plugin-install-state.d.mts +113 -0
  859. package/dist/lib/esm/plugin/plugin-install-state.mjs +109 -0
  860. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +127 -0
  861. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +60 -0
  862. package/dist/lib/esm/plugin/plugin-settings-tab.d.mts +368 -0
  863. package/dist/lib/esm/plugin/plugin-settings-tab.mjs +535 -0
  864. package/dist/lib/esm/plugin/plugin.d.mts +363 -0
  865. package/dist/lib/esm/plugin/plugin.mjs +619 -0
  866. package/dist/lib/esm/plugin/settings-migration-api.d.mts +91 -0
  867. package/dist/lib/esm/plugin/settings-migration-api.mjs +50 -0
  868. package/dist/lib/esm/plugin-cli-handler-registrar.d.mts +64 -0
  869. package/dist/lib/esm/plugin-cli-handler-registrar.mjs +74 -0
  870. package/dist/lib/esm/popovers/field-popover.d.mts +75 -0
  871. package/dist/lib/esm/popovers/field-popover.mjs +96 -0
  872. package/dist/lib/esm/popovers/index.d.mts +4 -0
  873. package/dist/lib/esm/popovers/index.mjs +58 -0
  874. package/dist/lib/esm/popovers/popover-anchor.d.mts +67 -0
  875. package/dist/lib/esm/popovers/popover-anchor.mjs +90 -0
  876. package/dist/lib/esm/popovers/popover.d.mts +78 -0
  877. package/dist/lib/esm/popovers/popover.mjs +140 -0
  878. package/dist/lib/esm/property-entry.d.mts +43 -0
  879. package/dist/lib/esm/property-entry.mjs +81 -0
  880. package/dist/lib/esm/queue.d.mts +93 -0
  881. package/dist/lib/esm/queue.mjs +130 -0
  882. package/dist/lib/esm/react/app-context.d.mts +24 -0
  883. package/dist/lib/esm/react/app-context.mjs +64 -0
  884. package/dist/lib/esm/react/index.d.mts +2 -0
  885. package/dist/lib/esm/react/index.mjs +54 -0
  886. package/dist/lib/esm/reference.d.mts +116 -0
  887. package/dist/lib/esm/reference.mjs +95 -0
  888. package/dist/lib/esm/resource-lock.d.mts +318 -0
  889. package/dist/lib/esm/resource-lock.mjs +1014 -0
  890. package/dist/lib/esm/resource-url.d.mts +31 -0
  891. package/dist/lib/esm/resource-url.mjs +67 -0
  892. package/dist/lib/esm/ribbon-icon-registrar.d.mts +60 -0
  893. package/dist/lib/esm/ribbon-icon-registrar.mjs +74 -0
  894. package/dist/lib/esm/setting-components/checkbox-component.d.mts +69 -0
  895. package/dist/lib/esm/setting-components/checkbox-component.mjs +127 -0
  896. package/dist/lib/esm/setting-components/code-highlighter-component.d.mts +132 -0
  897. package/dist/lib/esm/setting-components/code-highlighter-component.mjs +295 -0
  898. package/dist/lib/esm/setting-components/date-component.d.mts +38 -0
  899. package/dist/lib/esm/setting-components/date-component.mjs +91 -0
  900. package/dist/lib/esm/setting-components/date-time-component.d.mts +38 -0
  901. package/dist/lib/esm/setting-components/date-time-component.mjs +91 -0
  902. package/dist/lib/esm/setting-components/email-component.d.mts +49 -0
  903. package/dist/lib/esm/setting-components/email-component.mjs +102 -0
  904. package/dist/lib/esm/setting-components/file-component.d.mts +43 -0
  905. package/dist/lib/esm/setting-components/file-component.mjs +94 -0
  906. package/dist/lib/esm/setting-components/index.d.mts +27 -0
  907. package/dist/lib/esm/setting-components/index.mjs +104 -0
  908. package/dist/lib/esm/setting-components/month-component.d.mts +51 -0
  909. package/dist/lib/esm/setting-components/month-component.mjs +99 -0
  910. package/dist/lib/esm/setting-components/multiple-dropdown-component.d.mts +92 -0
  911. package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +167 -0
  912. package/dist/lib/esm/setting-components/multiple-email-component.d.mts +38 -0
  913. package/dist/lib/esm/setting-components/multiple-email-component.mjs +88 -0
  914. package/dist/lib/esm/setting-components/multiple-file-component.d.mts +43 -0
  915. package/dist/lib/esm/setting-components/multiple-file-component.mjs +96 -0
  916. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +109 -0
  917. package/dist/lib/esm/setting-components/multiple-text-component.mjs +186 -0
  918. package/dist/lib/esm/setting-components/number-component.d.mts +56 -0
  919. package/dist/lib/esm/setting-components/number-component.mjs +112 -0
  920. package/dist/lib/esm/setting-components/password-component.d.mts +38 -0
  921. package/dist/lib/esm/setting-components/password-component.mjs +88 -0
  922. package/dist/lib/esm/setting-components/setting-component-wrapper.d.mts +13 -0
  923. package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +71 -0
  924. package/dist/lib/esm/setting-components/telephone-component.d.mts +51 -0
  925. package/dist/lib/esm/setting-components/telephone-component.mjs +102 -0
  926. package/dist/lib/esm/setting-components/text-based-component.d.mts +38 -0
  927. package/dist/lib/esm/setting-components/text-based-component.mjs +81 -0
  928. package/dist/lib/esm/setting-components/time-component.d.mts +38 -0
  929. package/dist/lib/esm/setting-components/time-component.mjs +96 -0
  930. package/dist/lib/esm/setting-components/tri-state-checkbox-component.d.mts +69 -0
  931. package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +128 -0
  932. package/dist/lib/esm/setting-components/typed-dropdown-component.d.mts +97 -0
  933. package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +176 -0
  934. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.d.mts +99 -0
  935. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +175 -0
  936. package/dist/lib/esm/setting-components/typed-range-text-component.d.mts +35 -0
  937. package/dist/lib/esm/setting-components/typed-range-text-component.mjs +86 -0
  938. package/dist/lib/esm/setting-components/typed-text-component.d.mts +100 -0
  939. package/dist/lib/esm/setting-components/typed-text-component.mjs +146 -0
  940. package/dist/lib/esm/setting-components/url-component.d.mts +49 -0
  941. package/dist/lib/esm/setting-components/url-component.mjs +102 -0
  942. package/dist/lib/esm/setting-components/validator-component.d.mts +23 -0
  943. package/dist/lib/esm/setting-components/validator-component.mjs +150 -0
  944. package/dist/lib/esm/setting-components/value-component-with-change-tracking.d.mts +20 -0
  945. package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +50 -0
  946. package/dist/lib/esm/setting-components/week-component.d.mts +51 -0
  947. package/dist/lib/esm/setting-components/week-component.mjs +99 -0
  948. package/dist/lib/esm/setting-ex.d.mts +198 -0
  949. package/dist/lib/esm/setting-ex.mjs +282 -0
  950. package/dist/lib/esm/setting-group-ex.d.mts +26 -0
  951. package/dist/lib/esm/setting-group-ex.mjs +76 -0
  952. package/dist/lib/esm/status-bar-item-registrar.d.mts +36 -0
  953. package/dist/lib/esm/status-bar-item-registrar.mjs +73 -0
  954. package/dist/lib/esm/templater.d.mts +284 -0
  955. package/dist/lib/esm/templater.mjs +181 -0
  956. package/dist/lib/esm/transformers/duration-transformer.d.mts +39 -0
  957. package/dist/lib/esm/transformers/duration-transformer.mjs +93 -0
  958. package/dist/lib/esm/transformers/index.d.mts +2 -0
  959. package/dist/lib/esm/transformers/index.mjs +54 -0
  960. package/dist/lib/esm/trusted-input.d.mts +131 -0
  961. package/dist/lib/esm/trusted-input.mjs +91 -0
  962. package/dist/lib/esm/validation.d.mts +87 -0
  963. package/dist/lib/esm/validation.mjs +95 -0
  964. package/dist/lib/esm/vault-delete.d.mts +82 -0
  965. package/dist/lib/esm/vault-delete.mjs +140 -0
  966. package/dist/lib/esm/vault-transaction.d.mts +163 -0
  967. package/dist/lib/esm/vault-transaction.mjs +333 -0
  968. package/dist/lib/esm/vault.d.mts +506 -0
  969. package/dist/lib/esm/vault.mjs +612 -0
  970. package/dist/lib/esm/view-registrar.d.mts +52 -0
  971. package/dist/lib/esm/view-registrar.mjs +73 -0
  972. package/dist/lib/esm/workspace.d.mts +81 -0
  973. package/dist/lib/esm/workspace.mjs +92 -0
  974. package/dist/styles.css +497 -0
  975. package/i18n/custom-type-options/package.json +6 -0
  976. package/i18n/default-translations/package.json +6 -0
  977. package/i18n/i18n/package.json +6 -0
  978. package/i18n/index/package.json +6 -0
  979. package/i18n/locales/en/package.json +6 -0
  980. package/i18n/locales/index/package.json +6 -0
  981. package/i18n/locales/package.json +6 -0
  982. package/i18n/locales/translations-map/package.json +6 -0
  983. package/i18n/package.json +6 -0
  984. package/modals/alert/package.json +6 -0
  985. package/modals/confirm/package.json +6 -0
  986. package/modals/index/package.json +6 -0
  987. package/modals/minimizable-modal/package.json +6 -0
  988. package/modals/modal/package.json +6 -0
  989. package/modals/modal-command-builder/package.json +6 -0
  990. package/modals/package.json +6 -0
  991. package/modals/prompt/package.json +6 -0
  992. package/modals/select-item/package.json +6 -0
  993. package/modals/select-option/package.json +6 -0
  994. package/modals/suggest-modal-command-builder/package.json +6 -0
  995. package/package.json +488 -13
  996. package/plugin/index/package.json +6 -0
  997. package/plugin/package.json +6 -0
  998. package/plugin/plugin/package.json +6 -0
  999. package/plugin/plugin-api/package.json +6 -0
  1000. package/plugin/plugin-context/package.json +6 -0
  1001. package/plugin/plugin-event-source/package.json +6 -0
  1002. package/plugin/plugin-install-state/package.json +6 -0
  1003. package/plugin/plugin-lifecycle-events/package.json +6 -0
  1004. package/plugin/plugin-settings-tab/package.json +6 -0
  1005. package/plugin/settings-migration-api/package.json +6 -0
  1006. package/popovers/field-popover/package.json +6 -0
  1007. package/popovers/index/package.json +6 -0
  1008. package/popovers/package.json +6 -0
  1009. package/popovers/popover/package.json +6 -0
  1010. package/popovers/popover-anchor/package.json +6 -0
  1011. package/react/app-context/package.json +6 -0
  1012. package/react/index/package.json +6 -0
  1013. package/react/package.json +6 -0
  1014. package/setting-components/checkbox-component/package.json +6 -0
  1015. package/setting-components/code-highlighter-component/package.json +6 -0
  1016. package/setting-components/date-component/package.json +6 -0
  1017. package/setting-components/date-time-component/package.json +6 -0
  1018. package/setting-components/email-component/package.json +6 -0
  1019. package/setting-components/file-component/package.json +6 -0
  1020. package/setting-components/index/package.json +6 -0
  1021. package/setting-components/month-component/package.json +6 -0
  1022. package/setting-components/multiple-dropdown-component/package.json +6 -0
  1023. package/setting-components/multiple-email-component/package.json +6 -0
  1024. package/setting-components/multiple-file-component/package.json +6 -0
  1025. package/setting-components/multiple-text-component/package.json +6 -0
  1026. package/setting-components/number-component/package.json +6 -0
  1027. package/setting-components/package.json +6 -0
  1028. package/setting-components/password-component/package.json +6 -0
  1029. package/setting-components/setting-component-wrapper/package.json +6 -0
  1030. package/setting-components/telephone-component/package.json +6 -0
  1031. package/setting-components/text-based-component/package.json +6 -0
  1032. package/setting-components/time-component/package.json +6 -0
  1033. package/setting-components/tri-state-checkbox-component/package.json +6 -0
  1034. package/setting-components/typed-dropdown-component/package.json +6 -0
  1035. package/setting-components/typed-multiple-dropdown-component/package.json +6 -0
  1036. package/setting-components/typed-range-text-component/package.json +6 -0
  1037. package/setting-components/typed-text-component/package.json +6 -0
  1038. package/setting-components/url-component/package.json +6 -0
  1039. package/setting-components/validator-component/package.json +6 -0
  1040. package/setting-components/value-component-with-change-tracking/package.json +6 -0
  1041. package/setting-components/week-component/package.json +6 -0
  1042. package/transformers/duration-transformer/package.json +6 -0
  1043. package/transformers/index/package.json +6 -0
  1044. package/transformers/package.json +6 -0
@@ -0,0 +1,472 @@
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 () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
+ const existingProcess = globalThis.process;
24
+
25
+ if (!existingProcess) {
26
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
+ globalThis.process = browserProcess;
28
+ return;
29
+ }
30
+
31
+ if (existingProcess.versions?.node) {
32
+ return;
33
+ }
34
+
35
+ const existingProcessRecord = existingProcess;
36
+
37
+ for (const [key, value] of Object.entries(browserProcess)) {
38
+ existingProcessRecord[key] ??= value;
39
+ }
40
+
41
+ existingProcessRecord['browser'] = true;
42
+ }
43
+
44
+ function keepName($unknown) {
45
+ return $unknown;
46
+ }
47
+
48
+ (function initCjs() {
49
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
+ const globalThisRecord = globalThis;
51
+ ensureDisposeSymbols();
52
+ globalThisRecord['__name'] ??= keepName;
53
+ globalThisRecord['__extractDefault'] ??= extractDefault;
54
+
55
+ ensureBrowserProcess();
56
+
57
+ // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
+ function extractDefault(module) {
59
+ return module && module.__esModule && 'default' in module ? module.default : module;
60
+ }
61
+ })();
62
+ })();
63
+ (function patchObsidianRequire() {
64
+ const originalRequire = require;
65
+ if (!originalRequire || originalRequire.__isPatched) {
66
+ return;
67
+ }
68
+
69
+ // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
70
+ require = Object.assign(
71
+ (id) => requirePatched(id),
72
+ originalRequire,
73
+ {
74
+ __isPatched: true
75
+ }
76
+ );
77
+
78
+ function extractDefault(module) {
79
+ return module && module.__esModule && 'default' in module ? module.default : module;
80
+ }
81
+
82
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
83
+ '@codemirror/autocomplete',
84
+ '@codemirror/collab',
85
+ '@codemirror/commands',
86
+ '@codemirror/language',
87
+ '@codemirror/lint',
88
+ '@codemirror/search',
89
+ '@codemirror/state',
90
+ '@codemirror/text',
91
+ '@codemirror/view',
92
+ '@lezer/common',
93
+ '@lezer/highlight',
94
+ '@lezer/lr',
95
+ 'obsidian']
96
+ );
97
+
98
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
99
+ '@codemirror/closebrackets',
100
+ '@codemirror/comment',
101
+ '@codemirror/fold',
102
+ '@codemirror/gutter',
103
+ '@codemirror/highlight',
104
+ '@codemirror/history',
105
+ '@codemirror/matchbrackets',
106
+ '@codemirror/panel',
107
+ '@codemirror/rangeset',
108
+ '@codemirror/rectangular-selection',
109
+ '@codemirror/stream-parser',
110
+ '@codemirror/tooltip']
111
+ );
112
+
113
+ function requirePatched(id) {
114
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
115
+ return originalRequire?.(id);
116
+ }
117
+
118
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
119
+ if (globalThis.app.isMobile) {
120
+ if (id === 'process' || id === 'node:process') {
121
+ // eslint-disable-next-line no-console -- Valid usage.
122
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
123
+
124
+ return process;
125
+ }
126
+ } else {
127
+ const module = originalRequire?.(id);
128
+ if (module) {
129
+ return extractDefault(module);
130
+ }
131
+ }
132
+
133
+ // eslint-disable-next-line no-console -- Valid usage.
134
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
135
+ return {};
136
+ }
137
+ })();
138
+
139
+ "use strict";
140
+ var __defProp = Object.defineProperty;
141
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
142
+ var __getOwnPropNames = Object.getOwnPropertyNames;
143
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
144
+ var __export = (target, all) => {
145
+ for (var name in all)
146
+ __defProp(target, name, { get: all[name], enumerable: true });
147
+ };
148
+ var __copyProps = (to, from, except, desc) => {
149
+ if (from && typeof from === "object" || typeof from === "function") {
150
+ for (let key of __getOwnPropNames(from))
151
+ if (!__hasOwnProp.call(to, key) && key !== except)
152
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
153
+ }
154
+ return to;
155
+ };
156
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
157
+ var frontmatter_formatting_exports = {};
158
+ __export(frontmatter_formatting_exports, {
159
+ enableFrontmatterFormattingPreservation: () => enableFrontmatterFormattingPreservation,
160
+ preserveFrontmatterFormatting: () => preserveFrontmatterFormatting
161
+ });
162
+ module.exports = __toCommonJS(frontmatter_formatting_exports);
163
+ var import_object_utils = require('@mnaoumov/typescript-lib/object-utils');
164
+ var import_string = require('@mnaoumov/typescript-lib/string');
165
+ var import_obsidian = require('obsidian');
166
+ var import_yaml = require('yaml');
167
+ var import_frontmatter = require('./frontmatter.cjs');
168
+ const EDIT_SCRIPT_CELL_LIMIT = 1e4;
169
+ const EMPTY_MAPPING_FRAGMENT = "{}";
170
+ const OBSIDIAN_STRINGIFY_OPTIONS = {
171
+ aliasDuplicateObjects: false,
172
+ lineWidth: 0,
173
+ // eslint-disable-next-line unicorn/name-replacements -- `nullStr` is the `yaml` package's own option name.
174
+ nullStr: ""
175
+ };
176
+ const PLACEHOLDER_KEY = "k";
177
+ const SECOND_TO_LAST_INDEX = -2;
178
+ const TRAILING_NEWLINE_REG_EXP = /\n$/;
179
+ const UNRESOLVED_TAG_WARNING_CODE = "TAG_RESOLVE_FAILED";
180
+ function enableFrontmatterFormattingPreservation() {
181
+ (0, import_frontmatter.registerFrontmatterFormattingPreserver)(preserveFrontmatterFormatting);
182
+ }
183
+ function preserveFrontmatterFormatting(content, newFrontmatter) {
184
+ const frontmatterInfo = (0, import_obsidian.getFrontMatterInfo)(content);
185
+ if (!frontmatterInfo.exists || Object.keys(newFrontmatter).length === 0) {
186
+ return null;
187
+ }
188
+ const splicedBody = spliceFrontmatterBody(frontmatterInfo.frontmatter, newFrontmatter);
189
+ return splicedBody === null ? null : (0, import_string.insertAt)({
190
+ $string: content,
191
+ endIndex: frontmatterInfo.to,
192
+ startIndex: frontmatterInfo.from,
193
+ substring: splicedBody
194
+ });
195
+ }
196
+ function buildEditScript(oldArray, newArray) {
197
+ const rawSteps = buildRawEditScript(oldArray, newArray);
198
+ const steps = [];
199
+ for (let index = 0; index < rawSteps.length; index++) {
200
+ const step = (0, import_object_utils.castTo)(rawSteps[index]);
201
+ const nextStep = rawSteps[index + 1];
202
+ if (step.kind === "remove" && nextStep?.kind === "insert" && checkIsMergeable(oldArray[step.oldIndex], newArray[nextStep.newIndex])) {
203
+ steps.push({ kind: "merge", newIndex: nextStep.newIndex, oldIndex: step.oldIndex });
204
+ index++;
205
+ continue;
206
+ }
207
+ if (step.kind !== "remove") {
208
+ steps.push({ kind: step.kind, newIndex: step.newIndex, oldIndex: step.oldIndex });
209
+ }
210
+ }
211
+ return steps;
212
+ }
213
+ function buildRawEditScript(oldArray, newArray) {
214
+ const oldLength = oldArray.length;
215
+ const newLength = newArray.length;
216
+ const commonLengths = Array.from({ length: oldLength + 1 }, () => Array.from({ length: newLength + 1 }, () => 0));
217
+ for (let oldIndex2 = oldLength - 1; oldIndex2 >= 0; oldIndex2--) {
218
+ for (let newIndex2 = newLength - 1; newIndex2 >= 0; newIndex2--) {
219
+ const row = (0, import_object_utils.castTo)(commonLengths[oldIndex2]);
220
+ const nextRow = (0, import_object_utils.castTo)(commonLengths[oldIndex2 + 1]);
221
+ row[newIndex2] = (0, import_object_utils.isDeepEqual)(oldArray[oldIndex2], newArray[newIndex2]) ? (0, import_object_utils.castTo)(nextRow[newIndex2 + 1]) + 1 : Math.max((0, import_object_utils.castTo)(nextRow[newIndex2]), (0, import_object_utils.castTo)(row[newIndex2 + 1]));
222
+ }
223
+ }
224
+ const steps = [];
225
+ let oldIndex = 0;
226
+ let newIndex = 0;
227
+ while (oldIndex < oldLength && newIndex < newLength) {
228
+ if ((0, import_object_utils.isDeepEqual)(oldArray[oldIndex], newArray[newIndex])) {
229
+ steps.push({ kind: "keep", newIndex, oldIndex });
230
+ oldIndex++;
231
+ newIndex++;
232
+ continue;
233
+ }
234
+ const removalRow = (0, import_object_utils.castTo)(commonLengths[oldIndex + 1]);
235
+ const insertionRow = (0, import_object_utils.castTo)(commonLengths[oldIndex]);
236
+ const removalCommonLength = (0, import_object_utils.castTo)(removalRow[newIndex]);
237
+ const insertionCommonLength = (0, import_object_utils.castTo)(insertionRow[newIndex + 1]);
238
+ if (removalCommonLength >= insertionCommonLength) {
239
+ steps.push({ kind: "remove", newIndex: -1, oldIndex });
240
+ oldIndex++;
241
+ } else {
242
+ steps.push({ kind: "insert", newIndex, oldIndex: -1 });
243
+ newIndex++;
244
+ }
245
+ }
246
+ for (; oldIndex < oldLength; oldIndex++) {
247
+ steps.push({ kind: "remove", newIndex: -1, oldIndex });
248
+ }
249
+ for (; newIndex < newLength; newIndex++) {
250
+ steps.push({ kind: "insert", newIndex, oldIndex: -1 });
251
+ }
252
+ return steps;
253
+ }
254
+ function checkCarriesIndent(item, indent) {
255
+ return import_yaml.CST.stringify(item).replace(/^\n+/, "").startsWith(" ".repeat(indent));
256
+ }
257
+ function checkHasAnchorOrAlias(contents) {
258
+ let hasAnchorOrAlias = false;
259
+ (0, import_yaml.visit)(contents, {
260
+ Node(_key, node) {
261
+ if (!(0, import_yaml.isAlias)(node) && node.anchor === void 0) {
262
+ return void 0;
263
+ }
264
+ hasAnchorOrAlias = true;
265
+ return import_yaml.visit.BREAK;
266
+ }
267
+ });
268
+ return hasAnchorOrAlias;
269
+ }
270
+ function checkIsMergeable(oldValue, newValue) {
271
+ return (0, import_frontmatter.checkIsPlainObject)(oldValue) && (0, import_frontmatter.checkIsPlainObject)(newValue) || Array.isArray(oldValue) && Array.isArray(newValue);
272
+ }
273
+ function checkIsSemanticMatch(splicedBody, newFrontmatter) {
274
+ let splicedValue;
275
+ try {
276
+ splicedValue = (0, import_obsidian.parseYaml)(splicedBody);
277
+ } catch {
278
+ return false;
279
+ }
280
+ return (0, import_object_utils.isDeepEqual)(splicedValue, (0, import_obsidian.parseYaml)((0, import_obsidian.stringifyYaml)(newFrontmatter)));
281
+ }
282
+ function createMapItem(key, value, indent) {
283
+ const fragment = (0, import_yaml.stringify)({ [key]: value }, OBSIDIAN_STRINGIFY_OPTIONS);
284
+ return fragment.trimEnd() === EMPTY_MAPPING_FRAGMENT ? null : liftFragmentItem(fragment, indent, true);
285
+ }
286
+ function createSeqItem(value, indent) {
287
+ return liftFragmentItem((0, import_yaml.stringify)([value], OBSIDIAN_STRINGIFY_OPTIONS), indent, true);
288
+ }
289
+ function createSpaceToken(indent) {
290
+ return {
291
+ indent,
292
+ offset: -1,
293
+ source: " ".repeat(indent),
294
+ type: "space"
295
+ };
296
+ }
297
+ function didMergeMap(token, oldObject, newObject) {
298
+ normalizeItemIndents(token);
299
+ const itemsByKey = /* @__PURE__ */ new Map();
300
+ for (const item of token.items) {
301
+ const key = readItemKey(item);
302
+ if (key === null || itemsByKey.has(key)) {
303
+ return false;
304
+ }
305
+ itemsByKey.set(key, item);
306
+ }
307
+ const mergedItems = [];
308
+ for (const [key, newValue] of Object.entries(newObject)) {
309
+ const item = itemsByKey.get(key);
310
+ if (!item) {
311
+ const createdItem = createMapItem(key, newValue, token.indent);
312
+ if (createdItem !== null) {
313
+ mergedItems.push(createdItem);
314
+ }
315
+ continue;
316
+ }
317
+ mergeItemValue(item, oldObject[key], newValue, token.indent, false);
318
+ mergedItems.push(item);
319
+ }
320
+ if (mergedItems.length === 0) {
321
+ return false;
322
+ }
323
+ finalizeItems(mergedItems);
324
+ token.items = (0, import_object_utils.castTo)(mergedItems);
325
+ return true;
326
+ }
327
+ function didMergeSeq(token, oldArray, newArray) {
328
+ if (oldArray.length * newArray.length > EDIT_SCRIPT_CELL_LIMIT) {
329
+ return false;
330
+ }
331
+ normalizeItemIndents(token);
332
+ const mergedItems = [];
333
+ for (const step of buildEditScript(oldArray, newArray)) {
334
+ if (step.kind === "insert") {
335
+ mergedItems.push(createSeqItem(newArray[step.newIndex], token.indent));
336
+ continue;
337
+ }
338
+ const item = (0, import_object_utils.castTo)(token.items[step.oldIndex]);
339
+ if (step.kind === "merge") {
340
+ mergeItemValue(item, oldArray[step.oldIndex], newArray[step.newIndex], token.indent, true);
341
+ }
342
+ mergedItems.push(item);
343
+ }
344
+ if (mergedItems.length === 0) {
345
+ return false;
346
+ }
347
+ finalizeItems(mergedItems);
348
+ token.items = (0, import_object_utils.castTo)(mergedItems);
349
+ return true;
350
+ }
351
+ function didNormalizeFirstItemIndent(precedingTokens, collection) {
352
+ const firstItem = (0, import_object_utils.castTo)(collection.items[0]);
353
+ if (collection.indent === 0 || checkCarriesIndent(firstItem, collection.indent)) {
354
+ return true;
355
+ }
356
+ const lastToken = precedingTokens?.at(-1);
357
+ if (lastToken?.type !== "space" || precedingTokens?.at(SECOND_TO_LAST_INDEX)?.type !== "newline") {
358
+ return false;
359
+ }
360
+ precedingTokens.pop();
361
+ firstItem.start.unshift(lastToken);
362
+ return true;
363
+ }
364
+ function emitMapItemTokens(value, indent, shouldPreferFlow) {
365
+ const fragment = shouldPreferFlow ? `${PLACEHOLDER_KEY}: ${stringifyFlow(value)}` : (0, import_yaml.stringify)({ [PLACEHOLDER_KEY]: value }, OBSIDIAN_STRINGIFY_OPTIONS);
366
+ const item = liftFragmentItem(fragment, indent, false);
367
+ return { separatorTokens: (0, import_object_utils.castTo)(item.sep), value: item.value };
368
+ }
369
+ function emitSeqItem(value, indent, shouldPreferFlow) {
370
+ const fragment = shouldPreferFlow ? `- ${stringifyFlow(value)}` : (0, import_yaml.stringify)([value], OBSIDIAN_STRINGIFY_OPTIONS);
371
+ return liftFragmentItem(fragment, indent, false);
372
+ }
373
+ function finalizeItems(items) {
374
+ const firstItem = (0, import_object_utils.castTo)(items[0]);
375
+ while (firstItem.start[0]?.type === "newline") {
376
+ firstItem.start.shift();
377
+ }
378
+ }
379
+ function indentLines(text, indent) {
380
+ if (indent === 0) {
381
+ return text;
382
+ }
383
+ const padding = " ".repeat(indent);
384
+ return text.split("\n").map((line) => line === "" ? line : padding + line).join("\n");
385
+ }
386
+ function liftFragmentItem(fragment, indent, shouldCarryIndent) {
387
+ const root = (0, import_yaml.parseDocument)(indentLines(fragment, indent), { keepSourceTokens: true }).contents?.srcToken;
388
+ const item = (0, import_object_utils.castTo)((0, import_object_utils.castTo)(root).items[0]);
389
+ if (shouldCarryIndent && indent > 0) {
390
+ item.start.unshift(createSpaceToken(indent));
391
+ }
392
+ return item;
393
+ }
394
+ function mergeItemValue(item, oldValue, newValue, parentIndent, isSeqItem) {
395
+ if ((0, import_object_utils.isDeepEqual)(oldValue, newValue)) {
396
+ return;
397
+ }
398
+ const valueToken = item.value;
399
+ const precedingTokens = isSeqItem ? item.start : item.sep;
400
+ if (valueToken?.type === "block-map" && (0, import_frontmatter.checkIsPlainObject)(oldValue) && (0, import_frontmatter.checkIsPlainObject)(newValue) && didNormalizeFirstItemIndent(precedingTokens, valueToken) && didMergeMap(valueToken, oldValue, newValue) || valueToken?.type === "block-seq" && Array.isArray(oldValue) && Array.isArray(newValue) && didNormalizeFirstItemIndent(precedingTokens, valueToken) && didMergeSeq(valueToken, oldValue, newValue)) {
401
+ return;
402
+ }
403
+ replaceItemValue(item, newValue, parentIndent, valueToken?.type === "flow-collection", isSeqItem);
404
+ }
405
+ function normalizeItemIndents(collection) {
406
+ for (const [index, item] of collection.items.entries()) {
407
+ const nextItem = (0, import_object_utils.castTo)(collection.items[index + 1]);
408
+ if (!nextItem || item.value) {
409
+ continue;
410
+ }
411
+ const trailingTokens = item.sep?.length ? item.sep : item.start;
412
+ const lastToken = trailingTokens.at(-1);
413
+ if (lastToken?.type !== "space" || trailingTokens.at(SECOND_TO_LAST_INDEX)?.type !== "newline") {
414
+ continue;
415
+ }
416
+ trailingTokens.pop();
417
+ nextItem.start.unshift(lastToken);
418
+ }
419
+ }
420
+ function readItemKey(item) {
421
+ return !item.key || !import_yaml.CST.isScalar(item.key) ? null : (0, import_object_utils.castTo)(import_yaml.CST.resolveAsScalar(item.key)).value;
422
+ }
423
+ function replaceItemValue(item, newValue, indent, shouldPreferFlow, isSeqItem) {
424
+ if (isSeqItem) {
425
+ setItemValue(item, emitSeqItem(newValue, indent, shouldPreferFlow).value);
426
+ return;
427
+ }
428
+ const emittedTokens = emitMapItemTokens(newValue, indent, shouldPreferFlow);
429
+ item.sep = emittedTokens.separatorTokens;
430
+ setItemValue(item, emittedTokens.value);
431
+ }
432
+ function setItemValue(item, value) {
433
+ if (value === void 0) {
434
+ delete item.value;
435
+ return;
436
+ }
437
+ item.value = value;
438
+ }
439
+ function spliceFrontmatterBody(source, newFrontmatter) {
440
+ const tokens = [...new import_yaml.Parser().parse(source)];
441
+ const documents = [...new import_yaml.Composer({ keepSourceTokens: true }).compose(tokens, true)];
442
+ const document = documents.length === 1 ? documents[0] : void 0;
443
+ if (!document || document.errors.length > 0 || document.warnings.some((warning) => warning.code === UNRESOLVED_TAG_WARNING_CODE)) {
444
+ return null;
445
+ }
446
+ const contents = document.contents;
447
+ const rootToken = contents?.srcToken;
448
+ if (!contents || rootToken?.type !== "block-map" || checkHasAnchorOrAlias(contents)) {
449
+ return null;
450
+ }
451
+ const oldFrontmatter = (0, import_object_utils.castTo)(document.toJS());
452
+ if (!didMergeMap(rootToken, oldFrontmatter, (0, import_object_utils.castTo)(newFrontmatter))) {
453
+ return null;
454
+ }
455
+ const emittedBody = tokens.map((token) => import_yaml.CST.stringify(token)).join("");
456
+ const splicedBody = `${emittedBody.replace(TRAILING_NEWLINE_REG_EXP, "")}
457
+ `;
458
+ return checkIsSemanticMatch(splicedBody, newFrontmatter) ? splicedBody : null;
459
+ }
460
+ function stringifyFlow(value) {
461
+ return (0, import_yaml.stringify)(value, {
462
+ ...OBSIDIAN_STRINGIFY_OPTIONS,
463
+ collectionStyle: "flow",
464
+ flowCollectionPadding: false
465
+ });
466
+ }
467
+ // Annotate the CommonJS export names for ESM import in node:
468
+ 0 && (module.exports = {
469
+ enableFrontmatterFormattingPreservation,
470
+ preserveFrontmatterFormatting
471
+ });
472
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Zyb250bWF0dGVyLWZvcm1hdHRpbmcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZXdyaXRlcyBhIG5vdGUncyBZQU1MIGZyb250IG1hdHRlciBieSBzcGxpY2luZyBpdHMgY29uY3JldGUgc3ludGF4IHRyZWUsIHNvIGV2ZXJ5IHJlZ2lvbiBhIGNoYW5nZSBkb2VzIG5vdCByZWFjaFxuICoga2VlcHMgdGhlIGV4YWN0IGJ5dGVzIGl0cyBhdXRob3Igd3JvdGUgXHUyMDE0IGNvbW1lbnRzIGFuZCB0aGUgd2hpdGVzcGFjZSBpbnNpZGUgdGhlbSwgcXVvdGluZyBzdHlsZSwgYmxhbmsgbGluZXMsXG4gKiBpbmRlbnRhdGlvbiB3aWR0aCwgZmxvdyB2ZXJzdXMgYmxvY2sgY29sbGVjdGlvbnMsIGFuZCBmb2xkZWQgYW5kIGxpdGVyYWwgc2NhbGFycy5cbiAqXG4gKiBPYnNpZGlhbidzIG93biBgcHJvY2Vzc0Zyb250TWF0dGVyKClgIHBhcnNlcyB0aGUgYmxvY2sgdG8gYSBwbGFpbiBvYmplY3QgYW5kIHJlLXN0cmluZ2lmaWVzIHRoZSB3aG9sZSBvZiBpdCwgc28gYVxuICogY2FsbGJhY2sgdGhhdCBjaGFuZ2VzIG9uZSBrZXkgcmV3cml0ZXMgZXZlcnkgb3RoZXIuIFJlLWVtaXR0aW5nIHRoZSBwYXJzZWQgZG9jdW1lbnQgaW5zdGVhZCBvZiB0aGUgcmF3IHRleHQgZG9lcyBub3RcbiAqIGZpeCB0aGF0OiBmaXZlIG9mIHRoZSBsb3NzZXMgc3Vydml2ZSBldmVyeSBlbWl0IG9wdGlvbiB0aGUgYHlhbWxgIHBhY2thZ2Ugb2ZmZXJzLiBTcGxpY2luZyB0aGUgQ1NUIGRvZXMgZml4IGl0LFxuICogYmVjYXVzZSBhbiB1bnRvdWNoZWQgdG9rZW4gaXMgbmV2ZXIgcmUtZW1pdHRlZCBhdCBhbGwgXHUyMDE0IHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZWVtZWxpL3lhbWwgfCB0aGUgbGlicmFyeX0ga2VlcHNcbiAqIGVhY2ggdG9rZW4ncyBvcmlnaW5hbCBzb3VyY2UgdGV4dCBhbmQge0BsaW5rIGh0dHBzOi8vZWVtZWxpLm9yZy95YW1sLyNjc3QtcGFyc2VyIHwgYENTVC5zdHJpbmdpZnlgfSBjb25jYXRlbmF0ZXMgaXQuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgREVMSUJFUkFURUxZIG5vdCBvbiB0aGUgZGVmYXVsdCBwYXRoLiBJdCBuZWVkcyB0aGUgYHlhbWxgIHBhY2thZ2UncyBDU1QgQVBJLCB3aGljaCBPYnNpZGlhbiBkb2VzIG5vdFxuICogaGFuZCB0byBwbHVnaW5zIHRocm91Z2ggaXRzIG1vZHVsZSBtYXAgXHUyMDE0IHRoYXQgbWFwIGlzIGBvYnNpZGlhbmAsIGBAY29kZW1pcnJvci8qYCBhbmQgYEBsZXplci8qYCBhbmQgbm90aGluZyBlbHNlIFx1MjAxNFxuICogc28gdGhlIHBhY2thZ2UgY2Fubm90IGJlIG1hcmtlZCBleHRlcm5hbCBhbmQgbGFuZHMgaW4gdGhlIGNvbnN1bWluZyBwbHVnaW4ncyBgbWFpbi5qc2AsIGFib3V0IDEwMCBLQiBvZiBpdC4gQSBwbHVnaW5cbiAqIG9wdHMgaW4gYnkgY2FsbGluZyB7QGxpbmsgZW5hYmxlRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmF0aW9ufSBvbmNlLCBhbmQgb25seSBpdCBwYXlzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgdHlwZSB7XG4gIE5vZGUsXG4gIFBhcnNlZE5vZGVcbn0gZnJvbSAneWFtbCc7XG5cbmltcG9ydCB7XG4gIGNhc3RUbyxcbiAgaXNEZWVwRXF1YWxcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBpbnNlcnRBdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHtcbiAgZ2V0RnJvbnRNYXR0ZXJJbmZvLFxuICBwYXJzZVlhbWwsXG4gIHN0cmluZ2lmeVlhbWxcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgQ29tcG9zZXIsXG4gIENTVCxcbiAgaXNBbGlhcyxcbiAgcGFyc2VEb2N1bWVudCxcbiAgUGFyc2VyLFxuICBzdHJpbmdpZnksXG4gIHZpc2l0XG59IGZyb20gJ3lhbWwnO1xuXG5pbXBvcnQge1xuICBjaGVja0lzUGxhaW5PYmplY3QsXG4gIHJlZ2lzdGVyRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyXG59IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuXG4vKipcbiAqIEEgYmxvY2sgb3IgZmxvdyBjb2xsZWN0aW9uIHRva2VuIHdob3NlIGl0ZW1zIHRoZSBzcGxpY2UgcmVhcnJhbmdlcy5cbiAqL1xudHlwZSBDb2xsZWN0aW9uVG9rZW4gPSBDU1QuQmxvY2tNYXAgfCBDU1QuQmxvY2tTZXF1ZW5jZTtcblxuLyoqXG4gKiBPbmUgc3RlcCBvZiB0aGUgZWRpdCBzY3JpcHQge0BsaW5rIGJ1aWxkRWRpdFNjcmlwdH0gZGVyaXZlcyBmb3IgYSBzZXF1ZW5jZS5cbiAqXG4gKiBga2VlcGAgcmV1c2VzIHRoZSBvbGQgaXRlbSdzIHRva2VuIHVudG91Y2hlZCwgYG1lcmdlYCByZXVzZXMgaXQgYW5kIHJld3JpdGVzIGl0cyB2YWx1ZSBpbiBwbGFjZSwgYW5kIGBpbnNlcnRgXG4gKiBlbWl0cyBhIGJyYW5kIG5ldyBpdGVtLiBBIHJlbW92YWwgcHJvZHVjZXMgbm8gc3RlcCBhdCBhbGwgXHUyMDE0IGl0IGlzIHNpbXBseSBhbiBvbGQgaW5kZXggbm8gc3RlcCBuYW1lcy5cbiAqL1xuaW50ZXJmYWNlIEVkaXRTdGVwIHtcbiAgcmVhZG9ubHkga2luZDogJ2luc2VydCcgfCAna2VlcCcgfCAnbWVyZ2UnO1xuICByZWFkb25seSBuZXdJbmRleDogbnVtYmVyO1xuICByZWFkb25seSBvbGRJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBgc2VwYCBhbmQgYHZhbHVlYCB0b2tlbnMgb2YgYSBmcmVzaGx5IGVtaXR0ZWQgYmxvY2stbWFwIGl0ZW0sIHJlYWR5IHRvIGJlIHRyYW5zcGxhbnRlZCBvbnRvIGFuIGV4aXN0aW5nIG9uZS5cbiAqL1xuaW50ZXJmYWNlIE1hcEl0ZW1Ub2tlbnMge1xuICByZWFkb25seSBzZXBhcmF0b3JUb2tlbnM6IENTVC5Tb3VyY2VUb2tlbltdO1xuICByZWFkb25seSB2YWx1ZTogQ1NULlRva2VuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgc2VxdWVuY2UgbG9uZyBlbm91Z2ggdGhhdCB0aGUgcXVhZHJhdGljIGVkaXQgc2NyaXB0IHN0b3BzIGJlaW5nIHdvcnRoIGl0cyBjb3N0LlxuICpcbiAqIEEgZnJvbnQgbWF0dGVyIHNlcXVlbmNlIGlzIGEgdGFnIGxpc3Qgb3IgYW4gYWxpYXMgbGlzdCwgc28gdGhpcyBpcyBuZXZlciBhcHByb2FjaGVkIGluIHByYWN0aWNlOyBpdCBpcyBoZXJlIHNvIHRoYXQgYVxuICogcGF0aG9sb2dpY2FsIG9uZSBkZWdyYWRlcyB0byBhIHdob2xlLWNvbGxlY3Rpb24gcmUtZW1pdCBpbnN0ZWFkIG9mIHN0YWxsaW5nIHRoZSB3cml0ZSBxdWV1ZS5cbiAqL1xuY29uc3QgRURJVF9TQ1JJUFRfQ0VMTF9MSU1JVCA9IDEwXzAwMDtcblxuLyoqXG4gKiBXaGF0IGEgbWFwcGluZyBlbWl0cyBhcyB3aGVuIGV2ZXJ5IG9uZSBvZiBpdHMgdmFsdWVzIGlzIGB1bmRlZmluZWRgLCBpLmUuIHdoZW4gaXQgaGFzIG5vdGhpbmcgdG8gd3JpdGUgYXQgYWxsLlxuICovXG5jb25zdCBFTVBUWV9NQVBQSU5HX0ZSQUdNRU5UID0gJ3t9JztcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyBPYnNpZGlhbiBpdHNlbGYgcGFzc2VzIHRvIGBzdHJpbmdpZnkoKWAsIHJlYWQgb3V0IG9mIGl0cyBidW5kbGUuXG4gKlxuICogRXZlcnkgZnJhZ21lbnQgdGhpcyBtb2R1bGUgZW1pdHMgZ29lcyB0aHJvdWdoIHRoZW0sIHNvIGEgZnJhZ21lbnQgaXQgd3JpdGVzIGlzIGJ5dGUtaWRlbnRpY2FsIHRvIHRoZSBvbmUgdGhlXG4gKiBwYXJzZS1hbmQtc3RyaW5naWZ5IHBhdGggd291bGQgaGF2ZSB3cml0dGVuIGZvciB0aGUgc2FtZSB2YWx1ZS5cbiAqL1xuY29uc3QgT0JTSURJQU5fU1RSSU5HSUZZX09QVElPTlMgPSB7XG4gIGFsaWFzRHVwbGljYXRlT2JqZWN0czogZmFsc2UsXG4gIGxpbmVXaWR0aDogMCxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYG51bGxTdHJgIGlzIHRoZSBgeWFtbGAgcGFja2FnZSdzIG93biBvcHRpb24gbmFtZS5cbiAgbnVsbFN0cjogJydcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogVGhlIGtleSBhIGZyYWdtZW50IGlzIGVtaXR0ZWQgdW5kZXIgd2hlbiBvbmx5IGl0cyB2YWx1ZSBpcyB3YW50ZWQuIE5ldmVyIHJlYWNoZXMgdGhlIG91dHB1dC5cbiAqL1xuY29uc3QgUExBQ0VIT0xERVJfS0VZID0gJ2snO1xuXG4vKipcbiAqIFRoZSBgQXJyYXkuYXQoKWAgaW5kZXggb2YgdGhlIHRva2VuIGJlZm9yZSB0aGUgbGFzdCBvbmUsIHdoaWNoIGlzIHdoZXJlIGEgbmV3bGluZSBzaXRzIHdoZW4gYW4gaW5kZW50IGZvbGxvd3MgaXQuXG4gKi9cbmNvbnN0IFNFQ09ORF9UT19MQVNUX0lOREVYID0gLTI7XG5cbmNvbnN0IFRSQUlMSU5HX05FV0xJTkVfUkVHX0VYUCA9IC9cXG4kLztcblxuY29uc3QgVU5SRVNPTFZFRF9UQUdfV0FSTklOR19DT0RFID0gJ1RBR19SRVNPTFZFX0ZBSUxFRCc7XG5cbi8qKlxuICogT25lIHN0ZXAgb2YgdGhlIHJhdyBlZGl0IHNjcmlwdCwgYmVmb3JlIHJlbW92YWxzIGFyZSBmb2xkZWQgaW50byB0aGUgaW5zZXJ0aW9ucyB0aGF0IGZvbGxvdyB0aGVtLlxuICovXG5pbnRlcmZhY2UgUmF3RWRpdFN0ZXAge1xuICByZWFkb25seSBraW5kOiAnaW5zZXJ0JyB8ICdrZWVwJyB8ICdyZW1vdmUnO1xuICByZWFkb25seSBuZXdJbmRleDogbnVtYmVyO1xuICByZWFkb25seSBvbGRJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFdoYXQgYENTVC5yZXNvbHZlQXNTY2FsYXJgIGhhbmRzIGJhY2sgZm9yIGEga2V5OiB0aGUgc2NhbGFyJ3Mgb3duIHRleHQsIG5ldmVyIGEgc2NoZW1hLXJlc29sdmVkIHZhbHVlLlxuICovXG5pbnRlcmZhY2UgUmVzb2x2ZWRTY2FsYXIge1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGlzIG1vZHVsZSdzIGVuZ2luZSBhcyB0aGUgZnJvbnQgbWF0dGVyIGZvcm1hdHRpbmcgcHJlc2VydmVyIGZvciBldmVyeSB3cml0ZSB0aGlzIGxpYnJhcnkgcGVyZm9ybXMuXG4gKlxuICogQ2FsbCBpdCBvbmNlLCBmcm9tIGEgcGx1Z2luJ3MgYG9ubG9hZEltcGwoKWAuIEl0IHRha2VzIGVmZmVjdCBmb3IgYHByb2Nlc3NGcm9udG1hdHRlcigpYCwgYGFwcGx5RmlsZUNoYW5nZXMoKWAgYW5kXG4gKiBldmVyeSBvdGhlciBwYXRoIHRoYXQgcmVhY2hlcyBgc2V0RnJvbnRtYXR0ZXIoKWAsIGluY2x1ZGluZyB0aGUgb25lcyB0aGUgY2FsbGluZyBwbHVnaW4gZG9lcyBub3QgaW52b2tlIGl0c2VsZi5cbiAqXG4gKiBUaGVyZSBpcyBvbmUgcHJlc2VydmVyIHBlciByZWFsbSwgc28gdHdvIHBsdWdpbnMgdGhhdCBib3RoIGNhbGwgdGhpcyBzaW1wbHkgYWdyZWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2YXRpb24oKTogdm9pZCB7XG4gIHJlZ2lzdGVyRnJvbnRtYXR0ZXJGb3JtYXR0aW5nUHJlc2VydmVyKHByZXNlcnZlRnJvbnRtYXR0ZXJGb3JtYXR0aW5nKTtcbn1cblxuLyoqXG4gKiBSZXdyaXRlcyB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgbm90ZSwga2VlcGluZyB0aGUgb3JpZ2luYWwgYnl0ZXMgb2YgZXZlcnl0aGluZyB0aGUgY2hhbmdlIGRvZXMgbm90IHJlYWNoLlxuICpcbiAqIEl0IGlzIHRoZSBlbmdpbmUge0BsaW5rIGVuYWJsZUZyb250bWF0dGVyRm9ybWF0dGluZ1ByZXNlcnZhdGlvbn0gcmVnaXN0ZXJzLCBhbmQgY2FuIGJlIGNhbGxlZCBkaXJlY3RseSBhcyB3ZWxsLlxuICpcbiAqIGBudWxsYCBtZWFucyBcInRoaXMgb25lIGlzIG5vdCBtaW5lXCI6IHRoZSBibG9jayBkb2VzIG5vdCBleGlzdCwgdGhlIG5ldyBmcm9udCBtYXR0ZXIgaXMgZW1wdHkgKGJvdGggYXJlIHRoZVxuICogcGFyc2UtYW5kLXN0cmluZ2lmeSBwYXRoJ3MgYnVzaW5lc3MsIHVuY2hhbmdlZCksIG9yIHRoZSBzcGxpY2UgY291bGQgbm90IGJlIHByb3ZlZCBmYWl0aGZ1bC4gVGhlIHByb29mIGlzIG5vdFxuICogaGFuZC13YXZlZCBcdTIwMTQgdGhlIHNwbGljZWQgYmxvY2sgaXMgcmUtcGFyc2VkIGFuZCBjb21wYXJlZCBhZ2FpbnN0IHRoZSB2YWx1ZSB0aGUgcGFyc2UtYW5kLXN0cmluZ2lmeSBwYXRoIHdvdWxkIGhhdmVcbiAqIHByb2R1Y2VkIGZvciB0aGUgc2FtZSBpbnB1dCwgYW5kIGFueSBkaWZmZXJlbmNlIHJldHVybnMgYG51bGxgLiBUaGF0IGlzIHdoYXQgbWFrZXMgdGhpcyBzdHJpY3RseSBiZXR0ZXIgdGhhbiB0aGF0XG4gKiBwYXRoIG9yIGlkZW50aWNhbCB0byBpdCwgYW5kIG5ldmVyIHdvcnNlLlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIG5vdGUgdG8gcmV3cml0ZSB0aGUgZnJvbnQgbWF0dGVyIG9mLlxuICogQHBhcmFtIG5ld0Zyb250bWF0dGVyIC0gVGhlIGZyb250IG1hdHRlciB0byB3cml0ZS5cbiAqIEByZXR1cm5zIFRoZSBuZXcgbm90ZSwgb3IgYG51bGxgIHdoZW4gdGhlIGNhbGxlciBzaG91bGQgcGFyc2UgdGhlIGJsb2NrIGFuZCB3cml0ZSB0aGUgd2hvbGUgb2YgaXQgb3V0IGFnYWluIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVzZXJ2ZUZyb250bWF0dGVyRm9ybWF0dGluZyhjb250ZW50OiBzdHJpbmcsIG5ld0Zyb250bWF0dGVyOiBvYmplY3QpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgZnJvbnRtYXR0ZXJJbmZvID0gZ2V0RnJvbnRNYXR0ZXJJbmZvKGNvbnRlbnQpO1xuICBpZiAoIWZyb250bWF0dGVySW5mby5leGlzdHMgfHwgT2JqZWN0LmtleXMobmV3RnJvbnRtYXR0ZXIpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qgc3BsaWNlZEJvZHkgPSBzcGxpY2VGcm9udG1hdHRlckJvZHkoZnJvbnRtYXR0ZXJJbmZvLmZyb250bWF0dGVyLCBuZXdGcm9udG1hdHRlcik7XG4gIHJldHVybiBzcGxpY2VkQm9keSA9PT0gbnVsbFxuICAgID8gbnVsbFxuICAgIDogaW5zZXJ0QXQoe1xuICAgICAgJHN0cmluZzogY29udGVudCxcbiAgICAgIGVuZEluZGV4OiBmcm9udG1hdHRlckluZm8udG8sXG4gICAgICBzdGFydEluZGV4OiBmcm9udG1hdHRlckluZm8uZnJvbSxcbiAgICAgIHN1YnN0cmluZzogc3BsaWNlZEJvZHlcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBEZXJpdmVzIHRoZSBlZGl0IHNjcmlwdCB0aGF0IHR1cm5zIGBvbGRBcnJheWAgaW50byBgbmV3QXJyYXlgLCByZXVzaW5nIGFzIG1hbnkgb2YgdGhlIG9sZCBpdGVtcyBhcyBpdCBjYW4uXG4gKlxuICogQSBsb25nZXN0LWNvbW1vbi1zdWJzZXF1ZW5jZSBkaWZmIG92ZXIgdmFsdWUgZXF1YWxpdHkgaXMgd2hhdCByZWNvdmVycyB0aGUgQVVUSE9SJ3Mgb3BlcmF0aW9uLiBSZXBsYXlpbmcgdGhlXG4gKiBtdXRhdGlvbiBhbiBhcnJheSBtZXRob2QgcGVyZm9ybWVkIGluc3RlYWQgXHUyMDE0IGBbYSwgYiwgY10uc3BsaWNlKDEsIDEpYCB3cml0ZXMgYFsxXSA9ICdjJ2AgdGhlbiB0cnVuY2F0ZXMgXHUyMDE0IHdvdWxkXG4gKiBvdmVyd3JpdGUgYGJgJ3Mgbm9kZSB3aXRoIGBjYCdzIHZhbHVlIGFuZCBkZWxldGUgYGNgJ3Mgbm9kZSwgc28gYGJgJ3MgY29tbWVudCB3b3VsZCBlbmQgdXAgYW5ub3RhdGluZyBgY2A6IGV4YWN0bHlcbiAqIHRoZSBtaXNhdHRyaWJ1dGlvbiB0aGlzIG1vZHVsZSBleGlzdHMgdG8gcHJldmVudC5cbiAqXG4gKiBBIHJlbW92YWwgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYW4gaW5zZXJ0aW9uIG9mIHRoZSBzYW1lIHNoYXBlIGlzIGZvbGRlZCBpbnRvIGEgc2luZ2xlIGBtZXJnZWAsIHNvIGFuIGl0ZW0gZWRpdGVkXG4gKiBpbiBwbGFjZSAoYFt7IHF0eTogMSB9XWAgdG8gYFt7IHF0eTogMiB9XWApIGtlZXBzIGl0cyBvd24gbm9kZSBhbmQgaXRzIGNvbW1lbnRzIHJhdGhlciB0aGFuIGJlaW5nIHJlYnVpbHQuXG4gKlxuICogQHBhcmFtIG9sZEFycmF5IC0gVGhlIHNlcXVlbmNlIGFzIHRoZSBzb3VyY2UgaG9sZHMgaXQuXG4gKiBAcGFyYW0gbmV3QXJyYXkgLSBUaGUgc2VxdWVuY2UgYXMgaXQgaXMgdG8gYmUgd3JpdHRlbi5cbiAqIEByZXR1cm5zIFRoZSBzdGVwcyB0byBhcHBseSwgaW4gb3V0cHV0IG9yZGVyLlxuICovXG5mdW5jdGlvbiBidWlsZEVkaXRTY3JpcHQob2xkQXJyYXk6IHJlYWRvbmx5IHVua25vd25bXSwgbmV3QXJyYXk6IHJlYWRvbmx5IHVua25vd25bXSk6IEVkaXRTdGVwW10ge1xuICBjb25zdCByYXdTdGVwcyA9IGJ1aWxkUmF3RWRpdFNjcmlwdChvbGRBcnJheSwgbmV3QXJyYXkpO1xuICBjb25zdCBzdGVwczogRWRpdFN0ZXBbXSA9IFtdO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCByYXdTdGVwcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBzdGVwID0gY2FzdFRvPFJhd0VkaXRTdGVwPihyYXdTdGVwc1tpbmRleF0pO1xuICAgIGNvbnN0IG5leHRTdGVwID0gcmF3U3RlcHNbaW5kZXggKyAxXTtcbiAgICBpZiAoXG4gICAgICBzdGVwLmtpbmQgPT09ICdyZW1vdmUnICYmIG5leHRTdGVwPy5raW5kID09PSAnaW5zZXJ0J1xuICAgICAgJiYgY2hlY2tJc01lcmdlYWJsZShvbGRBcnJheVtzdGVwLm9sZEluZGV4XSwgbmV3QXJyYXlbbmV4dFN0ZXAubmV3SW5kZXhdKVxuICAgICkge1xuICAgICAgc3RlcHMucHVzaCh7IGtpbmQ6ICdtZXJnZScsIG5ld0luZGV4OiBuZXh0U3RlcC5uZXdJbmRleCwgb2xkSW5kZXg6IHN0ZXAub2xkSW5kZXggfSk7XG4gICAgICBpbmRleCsrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXAua2luZCAhPT0gJ3JlbW92ZScpIHtcbiAgICAgIHN0ZXBzLnB1c2goeyBraW5kOiBzdGVwLmtpbmQsIG5ld0luZGV4OiBzdGVwLm5ld0luZGV4LCBvbGRJbmRleDogc3RlcC5vbGRJbmRleCB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcHM7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkUmF3RWRpdFNjcmlwdChvbGRBcnJheTogcmVhZG9ubHkgdW5rbm93bltdLCBuZXdBcnJheTogcmVhZG9ubHkgdW5rbm93bltdKTogUmF3RWRpdFN0ZXBbXSB7XG4gIGNvbnN0IG9sZExlbmd0aCA9IG9sZEFycmF5Lmxlbmd0aDtcbiAgY29uc3QgbmV3TGVuZ3RoID0gbmV3QXJyYXkubGVuZ3RoO1xuICBjb25zdCBjb21tb25MZW5ndGhzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogb2xkTGVuZ3RoICsgMSB9LCAoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBuZXdMZW5ndGggKyAxIH0sICgpID0+IDApKTtcblxuICBmb3IgKGxldCBvbGRJbmRleCA9IG9sZExlbmd0aCAtIDE7IG9sZEluZGV4ID49IDA7IG9sZEluZGV4LS0pIHtcbiAgICBmb3IgKGxldCBuZXdJbmRleCA9IG5ld0xlbmd0aCAtIDE7IG5ld0luZGV4ID49IDA7IG5ld0luZGV4LS0pIHtcbiAgICAgIGNvbnN0IHJvdyA9IGNhc3RUbzxudW1iZXJbXT4oY29tbW9uTGVuZ3Roc1tvbGRJbmRleF0pO1xuICAgICAgY29uc3QgbmV4dFJvdyA9IGNhc3RUbzxudW1iZXJbXT4oY29tbW9uTGVuZ3Roc1tvbGRJbmRleCArIDFdKTtcbiAgICAgIHJvd1tuZXdJbmRleF0gPSBpc0RlZXBFcXVhbChvbGRBcnJheVtvbGRJbmRleF0sIG5ld0FycmF5W25ld0luZGV4XSlcbiAgICAgICAgPyBjYXN0VG88bnVtYmVyPihuZXh0Um93W25ld0luZGV4ICsgMV0pICsgMVxuICAgICAgICA6IE1hdGgubWF4KGNhc3RUbzxudW1iZXI+KG5leHRSb3dbbmV3SW5kZXhdKSwgY2FzdFRvPG51bWJlcj4ocm93W25ld0luZGV4ICsgMV0pKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdGVwczogUmF3RWRpdFN0ZXBbXSA9IFtdO1xuICBsZXQgb2xkSW5kZXggPSAwO1xuICBsZXQgbmV3SW5kZXggPSAwO1xuXG4gIHdoaWxlIChvbGRJbmRleCA8IG9sZExlbmd0aCAmJiBuZXdJbmRleCA8IG5ld0xlbmd0aCkge1xuICAgIGlmIChpc0RlZXBFcXVhbChvbGRBcnJheVtvbGRJbmRleF0sIG5ld0FycmF5W25ld0luZGV4XSkpIHtcbiAgICAgIHN0ZXBzLnB1c2goeyBraW5kOiAna2VlcCcsIG5ld0luZGV4LCBvbGRJbmRleCB9KTtcbiAgICAgIG9sZEluZGV4Kys7XG4gICAgICBuZXdJbmRleCsrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmVtb3ZhbFJvdyA9IGNhc3RUbzxudW1iZXJbXT4oY29tbW9uTGVuZ3Roc1tvbGRJbmRleCArIDFdKTtcbiAgICBjb25zdCBpbnNlcnRpb25Sb3cgPSBjYXN0VG88bnVtYmVyW10+KGNvbW1vbkxlbmd0aHNbb2xkSW5kZXhdKTtcbiAgICBjb25zdCByZW1vdmFsQ29tbW9uTGVuZ3RoID0gY2FzdFRvPG51bWJlcj4ocmVtb3ZhbFJvd1tuZXdJbmRleF0pO1xuICAgIGNvbnN0IGluc2VydGlvbkNvbW1vbkxlbmd0aCA9IGNhc3RUbzxudW1iZXI+KGluc2VydGlvblJvd1tuZXdJbmRleCArIDFdKTtcbiAgICBpZiAocmVtb3ZhbENvbW1vbkxlbmd0aCA+PSBpbnNlcnRpb25Db21tb25MZW5ndGgpIHtcbiAgICAgIHN0ZXBzLnB1c2goeyBraW5kOiAncmVtb3ZlJywgbmV3SW5kZXg6IC0xLCBvbGRJbmRleCB9KTtcbiAgICAgIG9sZEluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ZXBzLnB1c2goeyBraW5kOiAnaW5zZXJ0JywgbmV3SW5kZXgsIG9sZEluZGV4OiAtMSB9KTtcbiAgICAgIG5ld0luZGV4Kys7XG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG9sZEluZGV4IDwgb2xkTGVuZ3RoOyBvbGRJbmRleCsrKSB7XG4gICAgc3RlcHMucHVzaCh7IGtpbmQ6ICdyZW1vdmUnLCBuZXdJbmRleDogLTEsIG9sZEluZGV4IH0pO1xuICB9XG5cbiAgZm9yICg7IG5ld0luZGV4IDwgbmV3TGVuZ3RoOyBuZXdJbmRleCsrKSB7XG4gICAgc3RlcHMucHVzaCh7IGtpbmQ6ICdpbnNlcnQnLCBuZXdJbmRleCwgb2xkSW5kZXg6IC0xIH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0ZXBzO1xufVxuXG5mdW5jdGlvbiBjaGVja0NhcnJpZXNJbmRlbnQoaXRlbTogQ1NULkNvbGxlY3Rpb25JdGVtLCBpbmRlbnQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gQ1NULnN0cmluZ2lmeShpdGVtKS5yZXBsYWNlKC9eXFxuKy8sICcnKS5zdGFydHNXaXRoKCcgJy5yZXBlYXQoaW5kZW50KSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrSGFzQW5jaG9yT3JBbGlhcyhjb250ZW50czogUGFyc2VkTm9kZSk6IGJvb2xlYW4ge1xuICBsZXQgaGFzQW5jaG9yT3JBbGlhcyA9IGZhbHNlO1xuXG4gIHZpc2l0KGNvbnRlbnRzLCB7XG4gICAgTm9kZShfa2V5OiB1bmtub3duLCBub2RlOiBOb2RlKTogc3ltYm9sIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmICghaXNBbGlhcyhub2RlKSAmJiBub2RlLmFuY2hvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGhhc0FuY2hvck9yQWxpYXMgPSB0cnVlO1xuICAgICAgcmV0dXJuIHZpc2l0LkJSRUFLO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGhhc0FuY2hvck9yQWxpYXM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrSXNNZXJnZWFibGUob2xkVmFsdWU6IHVua25vd24sIG5ld1ZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiAoY2hlY2tJc1BsYWluT2JqZWN0KG9sZFZhbHVlKSAmJiBjaGVja0lzUGxhaW5PYmplY3QobmV3VmFsdWUpKSB8fCAoQXJyYXkuaXNBcnJheShvbGRWYWx1ZSkgJiYgQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpO1xufVxuXG4vKipcbiAqIENoZWNrcyB0aGUgc3BsaWNlZCBibG9jayBhZ2FpbnN0IHRoZSBvbmUgdGhlIHBhcnNlLWFuZC1zdHJpbmdpZnkgcGF0aCB3b3VsZCBoYXZlIHdyaXR0ZW4gZm9yIHRoZSBzYW1lIHZhbHVlLlxuICpcbiAqIENvbXBhcmluZyB0aGUgdHdvIFBBUlNFRCB2YWx1ZXMgcmF0aGVyIHRoYW4gdGhlIHR3byB0ZXh0cyBpcyB0aGUgd2hvbGUgcG9pbnQ6IHRoZSB0ZXh0cyBhcmUgc3VwcG9zZWQgdG8gZGlmZmVyIFx1MjAxNCB0aGF0XG4gKiBpcyB0aGUgZm9ybWF0dGluZyB0aGlzIG1vZHVsZSBwcmVzZXJ2ZXMgXHUyMDE0IHdoaWxlIHRoZSB2YWx1ZXMgbXVzdCBub3QuIENvbXBhcmluZyBhZ2FpbnN0IHRoYXQgcGF0aCdzIG91dHB1dCByYXRoZXIgdGhhblxuICogYWdhaW5zdCBgbmV3RnJvbnRtYXR0ZXJgIGl0c2VsZiBpcyB3aGF0IG1ha2VzIHRoZSBndWFyYW50ZWUgZXhhY3QsIHNpbmNlIGJvdGggc2lkZXMgdGhlbiBjYXJyeSB0aGUgc2FtZSByb3VuZC10cmlwXG4gKiBsb3NzZXMsIGB1bmRlZmluZWRgIHZhbHVlcyBkcm9wcGVkIGFuZCB0aW1lc3RhbXBzIHJlYWQgYmFjayBhcyBkYXRlcyBhbW9uZyB0aGVtLlxuICpcbiAqIEBwYXJhbSBzcGxpY2VkQm9keSAtIFRoZSBzcGxpY2VkIGJsb2NrIHRleHQuXG4gKiBAcGFyYW0gbmV3RnJvbnRtYXR0ZXIgLSBUaGUgZnJvbnQgbWF0dGVyIHRoYXQgd2FzIHRvIGJlIHdyaXR0ZW4uXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBzcGxpY2VkIGJsb2NrIHJlYWRzIGJhY2sgYXMgdGhlIHZhbHVlIHRoZSBwYXJzZS1hbmQtc3RyaW5naWZ5IHBhdGggd291bGQgaGF2ZSB3cml0dGVuLlxuICovXG5mdW5jdGlvbiBjaGVja0lzU2VtYW50aWNNYXRjaChzcGxpY2VkQm9keTogc3RyaW5nLCBuZXdGcm9udG1hdHRlcjogb2JqZWN0KTogYm9vbGVhbiB7XG4gIGxldCBzcGxpY2VkVmFsdWU6IHVua25vd247XG5cbiAgdHJ5IHtcbiAgICBzcGxpY2VkVmFsdWUgPSBwYXJzZVlhbWwoc3BsaWNlZEJvZHkpO1xuICAgIC8qXG4gICAgICogdjggaWdub3JlIHN0YXJ0IC0tIEEgbmV0LCBub3QgYSBwYXRoOiBgcGFyc2VZYW1sYCBUSFJPV1Mgb24gYSBibG9jayBpdCBjYW5ub3QgcmVhZCByYXRoZXIgdGhhbiByZXBvcnRpbmcgaXQsIGFuZFxuICAgICAqIGEgc3BsaWNlIGNvdWxkIHByb2R1Y2Ugb25lLiBBIDM2IDAwMC1tdXRhdGlvbiBkaWZmZXJlbnRpYWwgZnV6eiBmb3VuZCA5MyB0aGF0IGRpZCwgZXZlcnkgb25lIG9mIHRoZW0gdGhlXG4gICAgICogdmFsdWVsZXNzLWl0ZW0gc2hhcGUgYG5vcm1hbGl6ZUl0ZW1JbmRlbnRzYCBub3cgcmVwYWlycywgYW5kIG5vbmUgYXQgYWxsIGFmdGVyd2FyZHMgXHUyMDE0IHNvIHRoZXJlIGlzIG5vIGlucHV0IGxlZnRcbiAgICAgKiB0byBwaW4gdGhpcyB3aXRoLCBhbmQgdGhlIGNvbnRyYWN0IHRoYXQgaXQgdXBob2xkcyAoZGVjbGluZSwgbmV2ZXIgdGhyb3cpIGlzIHRoZSBvbmUgdGhpcyBtb2R1bGUncyBjYWxsZXJzIHJlbHlcbiAgICAgKiBvbi4gRG8gbm90IGRlbGV0ZSBpdCBvbiB0aGUgc3RyZW5ndGggb2YgdGhhdDogaXQgaXMgdGhlIHJlYXNvbiBhIGZ1dHVyZSBzaGFwZSBpcyBhIGZhbGxiYWNrIHJhdGhlciB0aGFuIGEgY3Jhc2guXG4gICAgICovXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICB9XG5cbiAgcmV0dXJuIGlzRGVlcEVxdWFsKHNwbGljZWRWYWx1ZSwgcGFyc2VZYW1sKHN0cmluZ2lmeVlhbWwobmV3RnJvbnRtYXR0ZXIpKSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1hcEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBpbmRlbnQ6IG51bWJlcik6IENTVC5Db2xsZWN0aW9uSXRlbSB8IG51bGwge1xuICBjb25zdCBmcmFnbWVudCA9IHN0cmluZ2lmeSh7IFtrZXldOiB2YWx1ZSB9LCBPQlNJRElBTl9TVFJJTkdJRllfT1BUSU9OUyk7XG4gIC8vIEFuIGVtcHR5IG1hcHBpbmcgbWVhbnMgdGhlIHZhbHVlIGlzIGB1bmRlZmluZWRgLCB3aGljaCB0aGUgcmV3cml0ZSBwYXRoIGRyb3BzIGFzIHdlbGwuIERyb3AgdGhlIGtleSB3aXRoIGl0LlxuICByZXR1cm4gZnJhZ21lbnQudHJpbUVuZCgpID09PSBFTVBUWV9NQVBQSU5HX0ZSQUdNRU5UID8gbnVsbCA6IGxpZnRGcmFnbWVudEl0ZW0oZnJhZ21lbnQsIGluZGVudCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNlcUl0ZW0odmFsdWU6IHVua25vd24sIGluZGVudDogbnVtYmVyKTogQ1NULkNvbGxlY3Rpb25JdGVtIHtcbiAgcmV0dXJuIGxpZnRGcmFnbWVudEl0ZW0oc3RyaW5naWZ5KFt2YWx1ZV0sIE9CU0lESUFOX1NUUklOR0lGWV9PUFRJT05TKSwgaW5kZW50LCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3BhY2VUb2tlbihpbmRlbnQ6IG51bWJlcik6IENTVC5Tb3VyY2VUb2tlbiB7XG4gIHJldHVybiB7XG4gICAgaW5kZW50LFxuICAgIG9mZnNldDogLTEsXG4gICAgc291cmNlOiAnICcucmVwZWF0KGluZGVudCksXG4gICAgdHlwZTogJ3NwYWNlJ1xuICB9O1xufVxuXG4vKipcbiAqIFJlYnVpbGRzIGEgYmxvY2sgbWFwJ3MgaXRlbXMgc28gaXQgcmVwcmVzZW50cyBgbmV3T2JqZWN0YCwgcmV1c2luZyBlYWNoIHN1cnZpdmluZyBrZXkncyBvd24gaXRlbSB0b2tlbi5cbiAqXG4gKiBUaGUgaXRlbXMgYXJlIHJlYnVpbHQgaW4gdGhlIE5FVyBvYmplY3QncyBrZXkgb3JkZXIgcmF0aGVyIHRoYW4gdGhlIHNvdXJjZSdzLCBzbyBhIGNhbGxiYWNrIHRoYXQgc29ydHMgb3IgcmVvcmRlcnNcbiAqIGtleXMgc3RpbGwgc29ydHMgdGhlbSBcdTIwMTQgdGhlIHJlb3JkZXJlZCBrZXkgc2ltcGx5IHRha2VzIGl0cyBjb21tZW50LCBpdHMgcXVvdGluZyBhbmQgaXRzIHZhbHVlIGZvcm1hdHRpbmcgd2l0aCBpdC5cbiAqXG4gKiBgZmFsc2VgIG1lYW5zIHRoZSBjYWxsZXIgc2hvdWxkIHJlLWVtaXQgdGhpcyB3aG9sZSBjb2xsZWN0aW9uIGluc3RlYWQ6IGEgZHVwbGljYXRlIGtleSwgYSBrZXkgbm8gc3RyaW5nIGNhbiBuYW1lLCBvclxuICogYSBuZXN0ZWQgbWVyZ2UgdGhhdCBnYXZlIHVwLlxuICpcbiAqIEBwYXJhbSB0b2tlbiAtIFRoZSBibG9jayBtYXAgdG8gcmVidWlsZC5cbiAqIEBwYXJhbSBvbGRPYmplY3QgLSBUaGUgbWFwcGluZyBhcyB0aGUgc291cmNlIGhvbGRzIGl0LlxuICogQHBhcmFtIG5ld09iamVjdCAtIFRoZSBtYXBwaW5nIHRvIHdyaXRlLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdG9rZW4gbm93IHJlcHJlc2VudHMgYG5ld09iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGRpZE1lcmdlTWFwKHRva2VuOiBDU1QuQmxvY2tNYXAsIG9sZE9iamVjdDogR2VuZXJpY09iamVjdCwgbmV3T2JqZWN0OiBHZW5lcmljT2JqZWN0KTogYm9vbGVhbiB7XG4gIG5vcm1hbGl6ZUl0ZW1JbmRlbnRzKHRva2VuKTtcbiAgY29uc3QgaXRlbXNCeUtleSA9IG5ldyBNYXA8c3RyaW5nLCBDU1QuQ29sbGVjdGlvbkl0ZW0+KCk7XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIHRva2VuLml0ZW1zKSB7XG4gICAgY29uc3Qga2V5ID0gcmVhZEl0ZW1LZXkoaXRlbSk7XG4gICAgaWYgKGtleSA9PT0gbnVsbCB8fCBpdGVtc0J5S2V5LmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXRlbXNCeUtleS5zZXQoa2V5LCBpdGVtKTtcbiAgfVxuXG4gIGNvbnN0IG1lcmdlZEl0ZW1zOiBDU1QuQ29sbGVjdGlvbkl0ZW1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2tleSwgbmV3VmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5ld09iamVjdCkpIHtcbiAgICBjb25zdCBpdGVtID0gaXRlbXNCeUtleS5nZXQoa2V5KTtcblxuICAgIGlmICghaXRlbSkge1xuICAgICAgY29uc3QgY3JlYXRlZEl0ZW0gPSBjcmVhdGVNYXBJdGVtKGtleSwgbmV3VmFsdWUsIHRva2VuLmluZGVudCk7XG4gICAgICBpZiAoY3JlYXRlZEl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgbWVyZ2VkSXRlbXMucHVzaChjcmVhdGVkSXRlbSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIG1lcmdlSXRlbVZhbHVlKGl0ZW0sIG9sZE9iamVjdFtrZXldLCBuZXdWYWx1ZSwgdG9rZW4uaW5kZW50LCBmYWxzZSk7XG4gICAgbWVyZ2VkSXRlbXMucHVzaChpdGVtKTtcbiAgfVxuXG4gIGlmIChtZXJnZWRJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmaW5hbGl6ZUl0ZW1zKG1lcmdlZEl0ZW1zKTtcbiAgdG9rZW4uaXRlbXMgPSBjYXN0VG88Q1NULkJsb2NrTWFwWydpdGVtcyddPihtZXJnZWRJdGVtcyk7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFJlYnVpbGRzIGEgYmxvY2sgc2VxdWVuY2UncyBpdGVtcyBzbyBpdCByZXByZXNlbnRzIGBuZXdBcnJheWAsIHJldXNpbmcgdGhlIHRva2VuIG9mIGV2ZXJ5IGl0ZW0gdGhhdCBzdXJ2aXZlcy5cbiAqXG4gKiBAcGFyYW0gdG9rZW4gLSBUaGUgYmxvY2sgc2VxdWVuY2UgdG8gcmVidWlsZC5cbiAqIEBwYXJhbSBvbGRBcnJheSAtIFRoZSBzZXF1ZW5jZSBhcyB0aGUgc291cmNlIGhvbGRzIGl0LlxuICogQHBhcmFtIG5ld0FycmF5IC0gVGhlIHNlcXVlbmNlIHRvIHdyaXRlLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdG9rZW4gbm93IHJlcHJlc2VudHMgYG5ld0FycmF5YC5cbiAqL1xuZnVuY3Rpb24gZGlkTWVyZ2VTZXEodG9rZW46IENTVC5CbG9ja1NlcXVlbmNlLCBvbGRBcnJheTogcmVhZG9ubHkgdW5rbm93bltdLCBuZXdBcnJheTogcmVhZG9ubHkgdW5rbm93bltdKTogYm9vbGVhbiB7XG4gIGlmIChvbGRBcnJheS5sZW5ndGggKiBuZXdBcnJheS5sZW5ndGggPiBFRElUX1NDUklQVF9DRUxMX0xJTUlUKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbm9ybWFsaXplSXRlbUluZGVudHModG9rZW4pO1xuICBjb25zdCBtZXJnZWRJdGVtczogQ1NULkNvbGxlY3Rpb25JdGVtW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHN0ZXAgb2YgYnVpbGRFZGl0U2NyaXB0KG9sZEFycmF5LCBuZXdBcnJheSkpIHtcbiAgICBpZiAoc3RlcC5raW5kID09PSAnaW5zZXJ0Jykge1xuICAgICAgbWVyZ2VkSXRlbXMucHVzaChjcmVhdGVTZXFJdGVtKG5ld0FycmF5W3N0ZXAubmV3SW5kZXhdLCB0b2tlbi5pbmRlbnQpKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSBjYXN0VG88Q1NULkNvbGxlY3Rpb25JdGVtPih0b2tlbi5pdGVtc1tzdGVwLm9sZEluZGV4XSk7XG4gICAgaWYgKHN0ZXAua2luZCA9PT0gJ21lcmdlJykge1xuICAgICAgbWVyZ2VJdGVtVmFsdWUoaXRlbSwgb2xkQXJyYXlbc3RlcC5vbGRJbmRleF0sIG5ld0FycmF5W3N0ZXAubmV3SW5kZXhdLCB0b2tlbi5pbmRlbnQsIHRydWUpO1xuICAgIH1cblxuICAgIG1lcmdlZEl0ZW1zLnB1c2goaXRlbSk7XG4gIH1cblxuICBpZiAobWVyZ2VkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZmluYWxpemVJdGVtcyhtZXJnZWRJdGVtcyk7XG4gIHRva2VuLml0ZW1zID0gY2FzdFRvPENTVC5CbG9ja1NlcXVlbmNlWydpdGVtcyddPihtZXJnZWRJdGVtcyk7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEdpdmVzIGEgbmVzdGVkIGNvbGxlY3Rpb24ncyBmaXJzdCBpdGVtIHRoZSBsZWFkaW5nIGluZGVudCBvZiBpdHMgb3duLCBzbyB0aGUgaXRlbXMgYmVjb21lIGludGVyY2hhbmdlYWJsZS5cbiAqXG4gKiBBIG5lc3RlZCBjb2xsZWN0aW9uJ3MgZmlyc3QgaXRlbSBjYXJyaWVzIG5vIGluZGVudCBpbiB0aGUgc291cmNlOiB0aGUgaW5kZW50IHNpdHMgaW4gd2hhdGV2ZXIgcHJlY2VkZXMgdGhlXG4gKiBjb2xsZWN0aW9uIFx1MjAxNCB0aGUgc2VwYXJhdG9yJ3MgdHJhaWxpbmcgc3BhY2VzLCBvciB0aGUgZGFzaCBvZiB0aGUgc2VxdWVuY2UgaXRlbSBpdCBiZWxvbmdzIHRvLiBFdmVyeSBsYXRlciBpdGVtXG4gKiBjYXJyaWVzIGl0cyBvd24uIFJlbW92aW5nIG9yIHJlb3JkZXJpbmcgdGhlIGZpcnN0IGl0ZW0gd2l0aG91dCByZXBhaXJpbmcgdGhhdCBsZWF2ZXMgdGhlIHN1cnZpdm9yIGRvdWJseSBpbmRlbnRlZCxcbiAqIHNvIHRoZSBpbmRlbnQgaXMgbW92ZWQgb3V0IG9mIHRoZSBzZXBhcmF0b3IgYW5kIG9udG8gdGhlIGl0ZW0gYmVmb3JlIGFueXRoaW5nIGlzIHJlYXJyYW5nZWQuXG4gKlxuICogVGhlIG9uZSBzaGFwZSBpdCBjYW5ub3QgcmVwYWlyIGlzIGEgZmlyc3QgaXRlbSB3cml0dGVuIElOTElORSB3aXRoIHdoYXQgcHJlY2VkZXMgaXQgKGAtIG5hbWU6IGFgKSwgd2hlcmUgdGhlcmUgaXMgbm9cbiAqIGluZGVudCB0byBtb3ZlIGJlY2F1c2UgdGhlIGl0ZW0gaXMgbm90IGF0IHRoZSBzdGFydCBvZiBpdHMgbGluZS4gU3VjaCBhIGNvbGxlY3Rpb24gaXMgcmUtZW1pdHRlZCB3aG9sZSBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBwcmVjZWRpbmdUb2tlbnMgLSBUaGUgc2VwYXJhdG9yIHRva2VucyB0aGF0IHNpdCBiZXR3ZWVuIHRoZSBwYXJlbnQgYW5kIHRoZSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIGNvbGxlY3Rpb24gLSBUaGUgY29sbGVjdGlvbiB3aG9zZSBmaXJzdCBpdGVtIGlzIHRvIGNhcnJ5IGl0cyBvd24gaW5kZW50LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgY29sbGVjdGlvbidzIGl0ZW1zIGFyZSBub3cgaW50ZXJjaGFuZ2VhYmxlLlxuICovXG5mdW5jdGlvbiBkaWROb3JtYWxpemVGaXJzdEl0ZW1JbmRlbnQocHJlY2VkaW5nVG9rZW5zOiBDU1QuU291cmNlVG9rZW5bXSB8IHVuZGVmaW5lZCwgY29sbGVjdGlvbjogQ29sbGVjdGlvblRva2VuKTogYm9vbGVhbiB7XG4gIC8vIEEgcGFyc2VkIGJsb2NrIGNvbGxlY3Rpb24gYWx3YXlzIGhvbGRzIGF0IGxlYXN0IG9uZSBpdGVtLCBvciBpdCB3b3VsZCBub3QgaGF2ZSBwYXJzZWQgYXMgYSBjb2xsZWN0aW9uIGF0IGFsbC5cbiAgY29uc3QgZmlyc3RJdGVtID0gY2FzdFRvPENTVC5Db2xsZWN0aW9uSXRlbT4oY29sbGVjdGlvbi5pdGVtc1swXSk7XG5cbiAgaWYgKGNvbGxlY3Rpb24uaW5kZW50ID09PSAwIHx8IGNoZWNrQ2Fycmllc0luZGVudChmaXJzdEl0ZW0sIGNvbGxlY3Rpb24uaW5kZW50KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgbGFzdFRva2VuID0gcHJlY2VkaW5nVG9rZW5zPy5hdCgtMSk7XG4gIGlmIChsYXN0VG9rZW4/LnR5cGUgIT09ICdzcGFjZScgfHwgcHJlY2VkaW5nVG9rZW5zPy5hdChTRUNPTkRfVE9fTEFTVF9JTkRFWCk/LnR5cGUgIT09ICduZXdsaW5lJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByZWNlZGluZ1Rva2Vucy5wb3AoKTtcbiAgZmlyc3RJdGVtLnN0YXJ0LnVuc2hpZnQobGFzdFRva2VuKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGVtaXRNYXBJdGVtVG9rZW5zKHZhbHVlOiB1bmtub3duLCBpbmRlbnQ6IG51bWJlciwgc2hvdWxkUHJlZmVyRmxvdzogYm9vbGVhbik6IE1hcEl0ZW1Ub2tlbnMge1xuICBjb25zdCBmcmFnbWVudCA9IHNob3VsZFByZWZlckZsb3dcbiAgICA/IGAke1BMQUNFSE9MREVSX0tFWX06ICR7c3RyaW5naWZ5Rmxvdyh2YWx1ZSl9YFxuICAgIDogc3RyaW5naWZ5KHsgW1BMQUNFSE9MREVSX0tFWV06IHZhbHVlIH0sIE9CU0lESUFOX1NUUklOR0lGWV9PUFRJT05TKTtcbiAgY29uc3QgaXRlbSA9IGxpZnRGcmFnbWVudEl0ZW0oZnJhZ21lbnQsIGluZGVudCwgZmFsc2UpO1xuICByZXR1cm4geyBzZXBhcmF0b3JUb2tlbnM6IGNhc3RUbzxDU1QuU291cmNlVG9rZW5bXT4oaXRlbS5zZXApLCB2YWx1ZTogaXRlbS52YWx1ZSB9O1xufVxuXG5mdW5jdGlvbiBlbWl0U2VxSXRlbSh2YWx1ZTogdW5rbm93biwgaW5kZW50OiBudW1iZXIsIHNob3VsZFByZWZlckZsb3c6IGJvb2xlYW4pOiBDU1QuQ29sbGVjdGlvbkl0ZW0ge1xuICBjb25zdCBmcmFnbWVudCA9IHNob3VsZFByZWZlckZsb3cgPyBgLSAke3N0cmluZ2lmeUZsb3codmFsdWUpfWAgOiBzdHJpbmdpZnkoW3ZhbHVlXSwgT0JTSURJQU5fU1RSSU5HSUZZX09QVElPTlMpO1xuICByZXR1cm4gbGlmdEZyYWdtZW50SXRlbShmcmFnbWVudCwgaW5kZW50LCBmYWxzZSk7XG59XG5cbi8qKlxuICogTWFrZXMgdGhlIG1lcmdlZCBpdGVtcyBvZiBhIGNvbGxlY3Rpb24gam9pbmFibGUgYWdhaW4sIHdoYXRldmVyIHRoZSBtZXJnZSBkaWQgdG8gdGhlaXIgb3JkZXIuXG4gKlxuICogQW4gaXRlbSB0aGF0IHdhcyBub3QgZmlyc3QgY2FuIGNhcnJ5IHRoZSBibGFuayBsaW5lIHRoYXQgc2VwYXJhdGVkIGl0IGZyb20gaXRzIHByZWRlY2Vzc29yLCB3aGljaCBiZWNvbWVzIGEgbGVhZGluZ1xuICogYmxhbmsgbGluZSBvbmNlIGl0IElTIGZpcnN0LCBhbmQgbm90aGluZyBpbiB0aGUgaXRlbSB0b2tlbnMgdGhlbXNlbHZlcyBzaG93cyBpdC4gRXZlcnkgaXRlbSBhbHJlYWR5IGVuZHMgaW4gaXRzIG93blxuICogbmV3bGluZSwgYmVjYXVzZSBPYnNpZGlhbidzIGZyb250IG1hdHRlciBibG9jayBhbHdheXMgZW5kcyBpbiBvbmUsIHNvIHJlb3JkZXJpbmcgbmV2ZXIgam9pbnMgdHdvIGl0ZW1zIG9uIG9uZSBsaW5lLlxuICpcbiAqIEBwYXJhbSBpdGVtcyAtIFRoZSBtZXJnZWQgaXRlbXMsIG11dGF0ZWQgaW4gcGxhY2UuXG4gKi9cbmZ1bmN0aW9uIGZpbmFsaXplSXRlbXMoaXRlbXM6IENTVC5Db2xsZWN0aW9uSXRlbVtdKTogdm9pZCB7XG4gIGNvbnN0IGZpcnN0SXRlbSA9IGNhc3RUbzxDU1QuQ29sbGVjdGlvbkl0ZW0+KGl0ZW1zWzBdKTtcbiAgd2hpbGUgKGZpcnN0SXRlbS5zdGFydFswXT8udHlwZSA9PT0gJ25ld2xpbmUnKSB7XG4gICAgZmlyc3RJdGVtLnN0YXJ0LnNoaWZ0KCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5kZW50TGluZXModGV4dDogc3RyaW5nLCBpbmRlbnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChpbmRlbnQgPT09IDApIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGNvbnN0IHBhZGRpbmcgPSAnICcucmVwZWF0KGluZGVudCk7XG4gIHJldHVybiB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IGxpbmUgPT09ICcnID8gbGluZSA6IHBhZGRpbmcgKyBsaW5lKS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBmcmVzaGx5IGVtaXR0ZWQgZnJhZ21lbnQgYW5kIGhhbmRzIGJhY2sgaXRzIG9uZSBjb2xsZWN0aW9uIGl0ZW0sIGluZGVudGVkIHRvIHNpdCB3aGVyZSBpdCBpcyBnb2luZy5cbiAqXG4gKiBUaGUgZnJhZ21lbnQncyBvd24gbGluZXMgYXJlIGluZGVudGVkIGJlZm9yZSBwYXJzaW5nLCBzbyBldmVyeSB0b2tlbiBpbnNpZGUgaXQgY2FycmllcyB0aGUgYWJzb2x1dGUgaW5kZW50IHRoZVxuICogb3V0cHV0IG5lZWRzLiBUaGUgaXRlbSdzIE9XTiBsZWFkaW5nIGluZGVudCBpcyBub3QgcGFydCBvZiB0aGF0IFx1MjAxNCBhIGZpcnN0IGl0ZW0gbmV2ZXIgY2FycmllcyBvbmUsIHRoZSBpbmRlbnQgYmVpbmdcbiAqIHN1cHBsaWVkIGJ5IHdoYXRldmVyIHByZWNlZGVzIHRoZSBjb2xsZWN0aW9uIFx1MjAxNCBzbyBpdCBpcyBwcmVwZW5kZWQgYXMgYSB0b2tlbiwgd2hpY2ggaXMgd2hhdCBtYWtlcyB0aGUgaXRlbSB1bmlmb3JtXG4gKiB3aXRoIGl0cyBuZXcgc2libGluZ3MgYW5kIHRoZXJlZm9yZSBmcmVlIHRvIGJlIHJlb3JkZXJlZCBvciB0byBiZWNvbWUgdGhlIGZpcnN0LlxuICpcbiAqIFRoZSBmcmFnbWVudCB3YXMgcHJvZHVjZWQgYnkgYHN0cmluZ2lmeWAgYSBsaW5lIGFib3ZlIHRoZSBjYWxsLCBhcyBhIG9uZS1pdGVtIGJsb2NrIGNvbGxlY3Rpb24sIHNvIGl0IGFsd2F5cyBwYXJzZXNcbiAqIGJhY2sgYXMgb25lIFx1MjAxNCB3aGljaCBpcyB3aHkgdGhpcyByZWFkcyB0aGUgaXRlbSBvdXQgcmF0aGVyIHRoYW4gY2hlY2tpbmcgZm9yIGl0LiBXZXJlIHRoYXQgZXZlciB0byBzdG9wIGhvbGRpbmcsIHRoZVxuICogcmVzdWx0aW5nIHRocm93IGlzIGNhdWdodCBieSBgc2V0RnJvbnRtYXR0ZXJgJ3Mgc2VhbSwgd2hpY2ggcmVwb3J0cyBpdCBhbmQgd3JpdGVzIHRoZSBibG9jayB0aGUgb3JkaW5hcnkgd2F5LlxuICpcbiAqIEBwYXJhbSBmcmFnbWVudCAtIFRoZSBlbWl0dGVkIFlBTUwgZnJhZ21lbnQsIGF0IGluZGVudCB6ZXJvLlxuICogQHBhcmFtIGluZGVudCAtIFRoZSBpbmRlbnQgdGhlIGl0ZW0gd2lsbCBzaXQgYXQuXG4gKiBAcGFyYW0gc2hvdWxkQ2FycnlJbmRlbnQgLSBXaGV0aGVyIHRvIHByZXBlbmQgdGhlIGl0ZW0ncyBvd24gbGVhZGluZyBpbmRlbnQgdG9rZW4uXG4gKiBAcmV0dXJucyBUaGUgaXRlbS5cbiAqL1xuZnVuY3Rpb24gbGlmdEZyYWdtZW50SXRlbShmcmFnbWVudDogc3RyaW5nLCBpbmRlbnQ6IG51bWJlciwgc2hvdWxkQ2FycnlJbmRlbnQ6IGJvb2xlYW4pOiBDU1QuQ29sbGVjdGlvbkl0ZW0ge1xuICBjb25zdCByb290ID0gcGFyc2VEb2N1bWVudChpbmRlbnRMaW5lcyhmcmFnbWVudCwgaW5kZW50KSwgeyBrZWVwU291cmNlVG9rZW5zOiB0cnVlIH0pLmNvbnRlbnRzPy5zcmNUb2tlbjtcbiAgY29uc3QgaXRlbSA9IGNhc3RUbzxDU1QuQ29sbGVjdGlvbkl0ZW0+KGNhc3RUbzxDb2xsZWN0aW9uVG9rZW4+KHJvb3QpLml0ZW1zWzBdKTtcblxuICBpZiAoc2hvdWxkQ2FycnlJbmRlbnQgJiYgaW5kZW50ID4gMCkge1xuICAgIGl0ZW0uc3RhcnQudW5zaGlmdChjcmVhdGVTcGFjZVRva2VuKGluZGVudCkpO1xuICB9XG5cbiAgcmV0dXJuIGl0ZW07XG59XG5cbi8qKlxuICogUmV3cml0ZXMgYW4gaXRlbSdzIHZhbHVlIGluIHBsYWNlIHdoZXJlIGl0IGNhbiwgYW5kIHJlLWVtaXRzIHRoZSB3aG9sZSB2YWx1ZSB3aGVyZSBpdCBjYW5ub3QuXG4gKlxuICogQHBhcmFtIGl0ZW0gLSBUaGUgY29sbGVjdGlvbiBpdGVtIHRvIHJld3JpdGUgdGhlIHZhbHVlIG9mLlxuICogQHBhcmFtIG9sZFZhbHVlIC0gVGhlIHZhbHVlIHRoZSBzb3VyY2UgaG9sZHMuXG4gKiBAcGFyYW0gbmV3VmFsdWUgLSBUaGUgdmFsdWUgdG8gd3JpdGUuXG4gKiBAcGFyYW0gcGFyZW50SW5kZW50IC0gVGhlIGluZGVudCBvZiB0aGUgY29sbGVjdGlvbiB0aGUgaXRlbSBiZWxvbmdzIHRvLlxuICogQHBhcmFtIGlzU2VxSXRlbSAtIFdoZXRoZXIgdGhlIGl0ZW0gaXMgYSBzZXF1ZW5jZSBpdGVtLCB3aGljaCBjYXJyaWVzIG5vIGBzZXBgIGFuZCBubyBrZXkuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlSXRlbVZhbHVlKGl0ZW06IENTVC5Db2xsZWN0aW9uSXRlbSwgb2xkVmFsdWU6IHVua25vd24sIG5ld1ZhbHVlOiB1bmtub3duLCBwYXJlbnRJbmRlbnQ6IG51bWJlciwgaXNTZXFJdGVtOiBib29sZWFuKTogdm9pZCB7XG4gIGlmIChpc0RlZXBFcXVhbChvbGRWYWx1ZSwgbmV3VmFsdWUpKSB7XG4gICAgLy8gVW50b3VjaGVkOiBpdHMgYnl0ZXMgc3RheSBleGFjdGx5IGFzIGl0cyBhdXRob3Igd3JvdGUgdGhlbS4gVGhpcyBpcyB0aGUgd2hvbGUgcG9pbnQgb2YgdGhlIG1vZHVsZS5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB2YWx1ZVRva2VuID0gaXRlbS52YWx1ZTtcbiAgY29uc3QgcHJlY2VkaW5nVG9rZW5zID0gaXNTZXFJdGVtID8gaXRlbS5zdGFydCA6IGl0ZW0uc2VwO1xuXG4gIGlmIChcbiAgICAodmFsdWVUb2tlbj8udHlwZSA9PT0gJ2Jsb2NrLW1hcCcgJiYgY2hlY2tJc1BsYWluT2JqZWN0KG9sZFZhbHVlKSAmJiBjaGVja0lzUGxhaW5PYmplY3QobmV3VmFsdWUpXG4gICAgICAmJiBkaWROb3JtYWxpemVGaXJzdEl0ZW1JbmRlbnQocHJlY2VkaW5nVG9rZW5zLCB2YWx1ZVRva2VuKSAmJiBkaWRNZXJnZU1hcCh2YWx1ZVRva2VuLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKSB8fCAodmFsdWVUb2tlbj8udHlwZSA9PT0gJ2Jsb2NrLXNlcScgJiYgQXJyYXkuaXNBcnJheShvbGRWYWx1ZSkgJiYgQXJyYXkuaXNBcnJheShuZXdWYWx1ZSlcbiAgICAgICAgJiYgZGlkTm9ybWFsaXplRmlyc3RJdGVtSW5kZW50KHByZWNlZGluZ1Rva2VucywgdmFsdWVUb2tlbikgJiYgZGlkTWVyZ2VTZXEodmFsdWVUb2tlbiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSlcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVwbGFjZUl0ZW1WYWx1ZShpdGVtLCBuZXdWYWx1ZSwgcGFyZW50SW5kZW50LCB2YWx1ZVRva2VuPy50eXBlID09PSAnZmxvdy1jb2xsZWN0aW9uJywgaXNTZXFJdGVtKTtcbn1cblxuLyoqXG4gKiBHaXZlcyBldmVyeSBpdGVtIG9mIGEgY29sbGVjdGlvbiB0aGUgaW5kZW50IG9mIGl0cyBvd24gbGluZSwgc28gdGhhdCBhbnkgb2YgdGhlbSBjYW4gYmUgcmVtb3ZlZCBvciBtb3ZlZC5cbiAqXG4gKiBBbiBpdGVtIHdpdGggTk8gVkFMVUUgXHUyMDE0IGEgYmFyZSBgLWAsIG9yIGBrZXk6YCB3aXRoIG5vdGhpbmcgYWZ0ZXIgaXQgXHUyMDE0IGFic29yYnMgdGhlIG5ld2xpbmUgdGhhdCBlbmRzIGl0cyBsaW5lIEFORCB0aGVcbiAqIGluZGVudCBvZiB0aGUgbGluZSBhZnRlciBpdCwgYmVjYXVzZSB0aGUgcGFyc2VyIGhhcyBub3RoaW5nIGVsc2UgdG8gaGFuZyB0aGVtIG9uLiBSZW1vdmluZyBvciBtb3Zpbmcgc3VjaCBhbiBpdGVtXG4gKiB0aGVyZWZvcmUgdGFrZXMgaXRzIHN1Y2Nlc3NvcidzIGluZGVudCB3aXRoIGl0LCBhbmQgdGhlIGJsb2NrIHRoYXQgY29tZXMgYmFjayBkb2VzIG5vdCBwYXJzZSBhdCBhbGwuXG4gKlxuICogTWVhc3VyZWQ6IG92ZXIgYSAzNiAwMDAtbXV0YXRpb24gZGlmZmVyZW50aWFsIGZ1enogdGhpcyBPTkUgc2hhcGUgYWNjb3VudGVkIGZvciBldmVyeSBzcGxpY2UgdGhlIHNhZmV0eSBuZXQgaGFkIHRvXG4gKiByZWZ1c2Ugb24gdW5yZWFkYWJsZSBvdXRwdXQgXHUyMDE0IDkzIG9mIHRoZW0gXHUyMDE0IHNvIGl0IGlzIGEgZmlkZWxpdHkgZml4IHJhdGhlciB0aGFuIGEgY29ycmVjdG5lc3Mgb25lLCB0aGUgc2FmZXR5IG5ldFxuICogaGF2aW5nIGFscmVhZHkgbWFkZSBlYWNoIG9mIHRob3NlIGEgZmFsbGJhY2suXG4gKlxuICogQHBhcmFtIGNvbGxlY3Rpb24gLSBUaGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtcyBhcmUgdG8gY2FycnkgdGhlaXIgb3duIGluZGVudC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplSXRlbUluZGVudHMoY29sbGVjdGlvbjogQ29sbGVjdGlvblRva2VuKTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBpdGVtXSBvZiBjb2xsZWN0aW9uLml0ZW1zLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IG5leHRJdGVtID0gY2FzdFRvPENTVC5Db2xsZWN0aW9uSXRlbSB8IHVuZGVmaW5lZD4oY29sbGVjdGlvbi5pdGVtc1tpbmRleCArIDFdKTtcbiAgICBpZiAoIW5leHRJdGVtIHx8IGl0ZW0udmFsdWUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEEgbWFwIGl0ZW0gaGFuZ3MgdGhlbSBvbiBpdHMgYHNlcGAsIGEgc2VxdWVuY2UgaXRlbSBvbiBpdHMgYHN0YXJ0YCwgdGhhdCBiZWluZyBhbGwgaXQgaGFzLlxuICAgIGNvbnN0IHRyYWlsaW5nVG9rZW5zID0gaXRlbS5zZXA/Lmxlbmd0aCA/IGl0ZW0uc2VwIDogaXRlbS5zdGFydDtcbiAgICBjb25zdCBsYXN0VG9rZW4gPSB0cmFpbGluZ1Rva2Vucy5hdCgtMSk7XG4gICAgaWYgKGxhc3RUb2tlbj8udHlwZSAhPT0gJ3NwYWNlJyB8fCB0cmFpbGluZ1Rva2Vucy5hdChTRUNPTkRfVE9fTEFTVF9JTkRFWCk/LnR5cGUgIT09ICduZXdsaW5lJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdHJhaWxpbmdUb2tlbnMucG9wKCk7XG4gICAgbmV4dEl0ZW0uc3RhcnQudW5zaGlmdChsYXN0VG9rZW4pO1xuICB9XG59XG5cbi8qKlxuICogTmFtZXMgdGhlIGtleSBhbiBpdGVtIGlzIGFkZHJlc3NlZCBieSwgb3IgYG51bGxgIHdoZW4gbm8gc3RyaW5nIGNhbiBuYW1lIGl0LlxuICpcbiAqIGByZXNvbHZlQXNTY2FsYXJgIHlpZWxkcyB0aGUgc2NhbGFyJ3MgVEVYVCByYXRoZXIgdGhhbiBhIHNjaGVtYS1yZXNvbHZlZCB2YWx1ZSwgc28gdGhlIGFuc3dlciBpcyBhbHdheXMgYSBzdHJpbmcgXHUyMDE0XG4gKiBhbmQgaXQgaXMgdGhlIHNhbWUgc3RyaW5nIHRoZSBwbGFpbi1vYmplY3QgcHJvamVjdGlvbiBib3RoIHNpZGVzIG9mIHRoZSBtZXJnZSBhcmUgY29tcGFyZWQgdGhyb3VnaCwgd2hpY2ggaXMgd2hhdFxuICogbGV0cyBhIGA0MjpgIGtleSBtYXRjaCB0aGUgcHJvamVjdGlvbidzIGAnNDInYCB3aXRob3V0IHF1b3RpbmcgaXQgb24gdGhlIHdheSBvdXQuXG4gKlxuICogQHBhcmFtIGl0ZW0gLSBUaGUgaXRlbSB0byBuYW1lIHRoZSBrZXkgb2YuXG4gKiBAcmV0dXJucyBUaGUga2V5LCBvciBgbnVsbGAgd2hlbiB0aGUga2V5IGlzIGEgY29sbGVjdGlvbiByYXRoZXIgdGhhbiBhIHNjYWxhci5cbiAqL1xuZnVuY3Rpb24gcmVhZEl0ZW1LZXkoaXRlbTogQ1NULkNvbGxlY3Rpb25JdGVtKTogbnVsbCB8IHN0cmluZyB7XG4gIHJldHVybiAhaXRlbS5rZXkgfHwgIUNTVC5pc1NjYWxhcihpdGVtLmtleSkgPyBudWxsIDogY2FzdFRvPFJlc29sdmVkU2NhbGFyPihDU1QucmVzb2x2ZUFzU2NhbGFyKGl0ZW0ua2V5KSkudmFsdWU7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VJdGVtVmFsdWUoaXRlbTogQ1NULkNvbGxlY3Rpb25JdGVtLCBuZXdWYWx1ZTogdW5rbm93biwgaW5kZW50OiBudW1iZXIsIHNob3VsZFByZWZlckZsb3c6IGJvb2xlYW4sIGlzU2VxSXRlbTogYm9vbGVhbik6IHZvaWQge1xuICBpZiAoaXNTZXFJdGVtKSB7XG4gICAgc2V0SXRlbVZhbHVlKGl0ZW0sIGVtaXRTZXFJdGVtKG5ld1ZhbHVlLCBpbmRlbnQsIHNob3VsZFByZWZlckZsb3cpLnZhbHVlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlbWl0dGVkVG9rZW5zID0gZW1pdE1hcEl0ZW1Ub2tlbnMobmV3VmFsdWUsIGluZGVudCwgc2hvdWxkUHJlZmVyRmxvdyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBzZXBgIGlzIHRoZSBgeWFtbGAgcGFja2FnZSdzIG93biBwcm9wZXJ0eSBuYW1lLlxuICBpdGVtLnNlcCA9IGVtaXR0ZWRUb2tlbnMuc2VwYXJhdG9yVG9rZW5zO1xuICBzZXRJdGVtVmFsdWUoaXRlbSwgZW1pdHRlZFRva2Vucy52YWx1ZSk7XG59XG5cbi8qKlxuICogQXNzaWducyBhbiBpdGVtJ3MgdmFsdWUgdG9rZW4sIHJlbW92aW5nIHRoZSBwcm9wZXJ0eSBvdXRyaWdodCB3aGVuIHRoZSBlbWl0dGVkIHZhbHVlIGhhcyBub25lLlxuICpcbiAqIEEga2V5IHdpdGggYSBgbnVsbGAgdmFsdWUgZW1pdHMgYXMgYGtleTpgIHdpdGggbm90aGluZyBhZnRlciB0aGUgc2VwYXJhdG9yLCBzbyB0aGUgaXRlbSBnZW51aW5lbHkgaGFzIG5vIHZhbHVlXG4gKiB0b2tlbiBcdTIwMTQgYW5kIHVuZGVyIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AgdGhhdCBpcyBhIHByb3BlcnR5IHRvIGRlbGV0ZSwgbm90IG9uZSB0byBzZXQgdG8gYHVuZGVmaW5lZGAuXG4gKlxuICogQHBhcmFtIGl0ZW0gLSBUaGUgaXRlbSB0byBhc3NpZ24gdGhlIHZhbHVlIHRva2VuIG9mLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRva2VuLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZSBlbWl0dGVkIHZhbHVlIGhhcyBub25lLlxuICovXG5mdW5jdGlvbiBzZXRJdGVtVmFsdWUoaXRlbTogQ1NULkNvbGxlY3Rpb25JdGVtLCB2YWx1ZTogQ1NULlRva2VuIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZGVsZXRlIGl0ZW0udmFsdWU7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaXRlbS52YWx1ZSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIFNwbGljZXMgdGhlIHRleHQgSU5TSURFIGEgZnJvbnQgbWF0dGVyIGJsb2NrJ3MgZGVsaW1pdGVycywgbGVhdmluZyBib3RoIGAtLS1gIGxpbmVzIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIGZyb250IG1hdHRlciBibG9jaydzIHRleHQuXG4gKiBAcGFyYW0gbmV3RnJvbnRtYXR0ZXIgLSBUaGUgZnJvbnQgbWF0dGVyIHRvIHdyaXRlLlxuICogQHJldHVybnMgVGhlIG5ldyBibG9jayB0ZXh0LCBvciBgbnVsbGAgd2hlbiB0aGUgc3BsaWNlIGNvdWxkIG5vdCBiZSBwcm92ZWQgZmFpdGhmdWwuXG4gKi9cbmZ1bmN0aW9uIHNwbGljZUZyb250bWF0dGVyQm9keShzb3VyY2U6IHN0cmluZywgbmV3RnJvbnRtYXR0ZXI6IG9iamVjdCk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCB0b2tlbnMgPSBbLi4ubmV3IFBhcnNlcigpLnBhcnNlKHNvdXJjZSldO1xuICBjb25zdCBkb2N1bWVudHMgPSBbLi4ubmV3IENvbXBvc2VyKHsga2VlcFNvdXJjZVRva2VuczogdHJ1ZSB9KS5jb21wb3NlKHRva2VucywgdHJ1ZSldO1xuICAvLyBBIHNlY29uZCBkb2N1bWVudCBpcyByZWFjaGFibGUgXHUyMDE0IGEgYC4uLmAgZW5kIG1hcmtlciBzdGFydHMgb25lIFx1MjAxNCBhbmQgc3BsaWNpbmcgdGhlIGZpcnN0IHdvdWxkIGVtaXQgYm90aC5cbiAgY29uc3QgZG9jdW1lbnQgPSBkb2N1bWVudHMubGVuZ3RoID09PSAxID8gZG9jdW1lbnRzWzBdIDogdW5kZWZpbmVkO1xuXG4gIGlmICghZG9jdW1lbnQgfHwgZG9jdW1lbnQuZXJyb3JzLmxlbmd0aCA+IDAgfHwgZG9jdW1lbnQud2FybmluZ3Muc29tZSgod2FybmluZykgPT4gd2FybmluZy5jb2RlID09PSBVTlJFU09MVkVEX1RBR19XQVJOSU5HX0NPREUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjb250ZW50cyA9IGRvY3VtZW50LmNvbnRlbnRzO1xuICBjb25zdCByb290VG9rZW4gPSBjb250ZW50cz8uc3JjVG9rZW47XG4gIC8vIEFuIGFuY2hvciBpcyBhIHNlY29uZCBuYW1lIGZvciBhIG5vZGUsIHNvIGEgc3BsaWNlIHRoYXQgbW92ZXMgb3IgZHJvcHMgb25lIG9mIHRoZSB0d28gc2lsZW50bHkgcmV3cml0ZXMgdGhlIG90aGVyLlxuICAvLyBOb3RoaW5nIGhlcmUgaXMgd29ydGggdGhhdCByaXNrIGZvciBhIGNvbnN0cnVjdCBPYnNpZGlhbidzIG93biBwcm9wZXJ0eSBlZGl0b3IgY2Fubm90IHByb2R1Y2UuXG4gIGlmICghY29udGVudHMgfHwgcm9vdFRva2VuPy50eXBlICE9PSAnYmxvY2stbWFwJyB8fCBjaGVja0hhc0FuY2hvck9yQWxpYXMoY29udGVudHMpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBIGJsb2NrLW1hcCByb290IGFsd2F5cyBwcm9qZWN0cyB0byBhIHBsYWluIG9iamVjdCwgc28gdGhpcyBpcyBhIGNhc3QgcmF0aGVyIHRoYW4gYSBjaGVjay4gQW55dGhpbmcgdGhhdCBtYWRlIGl0XG4gIC8vIHVudHJ1ZSB3b3VsZCBzdGlsbCBiZSBjYXVnaHQgZG93bnN0cmVhbTogdGhlIG1lcmdlIHdvdWxkIHdyaXRlIGEgbWFwcGluZyB0aGUgc2FmZXR5IG5ldCB0aGVuIHJlZnVzZXMuXG4gIGNvbnN0IG9sZEZyb250bWF0dGVyID0gY2FzdFRvPEdlbmVyaWNPYmplY3Q+KGRvY3VtZW50LnRvSlMoKSk7XG5cbiAgaWYgKCFkaWRNZXJnZU1hcChyb290VG9rZW4sIG9sZEZyb250bWF0dGVyLCBjYXN0VG88R2VuZXJpY09iamVjdD4obmV3RnJvbnRtYXR0ZXIpKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gRXZlcnkgdG9rZW4sIG5vdCBqdXN0IHRoZSByb290IGNvbGxlY3Rpb24nczogYSBjb21tZW50IGJlZm9yZSBvciBhZnRlciB0aGUgbWFwcGluZyBiZWxvbmdzIHRvIHRoZSBET0NVTUVOVCwgc29cbiAgLy8gYENTVC5zdHJpbmdpZnkoY29udGVudHMuc3JjVG9rZW4pYCBhbG9uZSBzaWxlbnRseSBkcm9wcyBib3RoLlxuICBjb25zdCBlbWl0dGVkQm9keSA9IHRva2Vucy5tYXAoKHRva2VuKSA9PiBDU1Quc3RyaW5naWZ5KHRva2VuKSkuam9pbignJyk7XG5cbiAgLy8gVGhlIHJlcGxhY2VkIHJlZ2lvbiBoYXMgdG8gZW5kIGluIGV4YWN0bHkgb25lIG5ld2xpbmUsIGFzIE9ic2lkaWFuJ3MgZnJvbnQgbWF0dGVyIGJsb2NrIGFsd2F5cyBkb2VzLCBvciB0aGUgY2xvc2luZ1xuICAvLyBgLS0tYCBtb3ZlcyBvZmYgaXRzIG93biBsaW5lLiBBIGJsb2NrIHdob3NlIGxhc3Qga2V5IHdhcyBkcm9wcGVkIGNhbiBlbWl0IG5vbmUsIHNvIGl0IGlzIG5vcm1hbGl6ZWQsIG5vdCB0cnVzdGVkLlxuICBjb25zdCBzcGxpY2VkQm9keSA9IGAke2VtaXR0ZWRCb2R5LnJlcGxhY2UoVFJBSUxJTkdfTkVXTElORV9SRUdfRVhQLCAnJyl9XFxuYDtcblxuICByZXR1cm4gY2hlY2tJc1NlbWFudGljTWF0Y2goc3BsaWNlZEJvZHksIG5ld0Zyb250bWF0dGVyKSA/IHNwbGljZWRCb2R5IDogbnVsbDtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5Rmxvdyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiBzdHJpbmdpZnkodmFsdWUsIHtcbiAgICAuLi5PQlNJRElBTl9TVFJJTkdJRllfT1BUSU9OUyxcbiAgICBjb2xsZWN0aW9uU3R5bGU6ICdmbG93JyxcbiAgICBmbG93Q29sbGVjdGlvblBhZGRpbmc6IGZhbHNlXG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FB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
@@ -0,0 +1,44 @@
1
+ /// <reference path="./library.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Rewrites a note's YAML front matter by splicing its concrete syntax tree, so every region a change does not reach
6
+ * keeps the exact bytes its author wrote — comments and the whitespace inside them, quoting style, blank lines,
7
+ * indentation width, flow versus block collections, and folded and literal scalars.
8
+ *
9
+ * Obsidian's own `processFrontMatter()` parses the block to a plain object and re-stringifies the whole of it, so a
10
+ * callback that changes one key rewrites every other. Re-emitting the parsed document instead of the raw text does not
11
+ * fix that: five of the losses survive every emit option the `yaml` package offers. Splicing the CST does fix it,
12
+ * because an untouched token is never re-emitted at all — {@link https://github.com/eemeli/yaml | the library} keeps
13
+ * each token's original source text and {@link https://eemeli.org/yaml/#cst-parser | `CST.stringify`} concatenates it.
14
+ *
15
+ * This module is DELIBERATELY not on the default path. It needs the `yaml` package's CST API, which Obsidian does not
16
+ * hand to plugins through its module map — that map is `obsidian`, `@codemirror/*` and `@lezer/*` and nothing else —
17
+ * so the package cannot be marked external and lands in the consuming plugin's `main.js`, about 100 KB of it. A plugin
18
+ * opts in by calling {@link enableFrontmatterFormattingPreservation} once, and only it pays.
19
+ */
20
+ /**
21
+ * Registers this module's engine as the front matter formatting preserver for every write this library performs.
22
+ *
23
+ * Call it once, from a plugin's `onloadImpl()`. It takes effect for `processFrontmatter()`, `applyFileChanges()` and
24
+ * every other path that reaches `setFrontmatter()`, including the ones the calling plugin does not invoke itself.
25
+ *
26
+ * There is one preserver per realm, so two plugins that both call this simply agree.
27
+ */
28
+ export declare function enableFrontmatterFormattingPreservation(): void;
29
+ /**
30
+ * Rewrites the front matter of a note, keeping the original bytes of everything the change does not reach.
31
+ *
32
+ * It is the engine {@link enableFrontmatterFormattingPreservation} registers, and can be called directly as well.
33
+ *
34
+ * `null` means "this one is not mine": the block does not exist, the new front matter is empty (both are the
35
+ * parse-and-stringify path's business, unchanged), or the splice could not be proved faithful. The proof is not
36
+ * hand-waved — the spliced block is re-parsed and compared against the value the parse-and-stringify path would have
37
+ * produced for the same input, and any difference returns `null`. That is what makes this strictly better than that
38
+ * path or identical to it, and never worse.
39
+ *
40
+ * @param content - The note to rewrite the front matter of.
41
+ * @param newFrontmatter - The front matter to write.
42
+ * @returns The new note, or `null` when the caller should parse the block and write the whole of it out again instead.
43
+ */
44
+ export declare function preserveFrontmatterFormatting(content: string, newFrontmatter: object): null | string;