obsidian-dev-utils 22.1.1-beta.8 → 23.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 (502) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/dist/eslint.config.mts +2 -0
  3. package/dist/lib/cjs/@types/debug.d.cts +1 -0
  4. package/dist/lib/cjs/{obsidian/Components/PlaceholderComponent.cjs → Array.cjs} +18 -8
  5. package/dist/lib/cjs/Array.d.cts +12 -0
  6. package/dist/lib/cjs/Async.cjs +6 -1
  7. package/dist/lib/cjs/Async.d.cts +26 -18
  8. package/dist/lib/cjs/AsyncEvents.cjs +216 -0
  9. package/dist/lib/cjs/AsyncEvents.d.cts +144 -0
  10. package/dist/lib/cjs/Blob.cjs +1 -1
  11. package/dist/lib/cjs/Blob.d.cts +9 -8
  12. package/dist/lib/cjs/CssClass.cjs +5 -1
  13. package/dist/lib/cjs/CssClass.d.cts +18 -1
  14. package/dist/lib/cjs/Debug.cjs +1 -1
  15. package/dist/lib/cjs/Debug.d.cts +2 -1
  16. package/dist/lib/cjs/DebugController.cjs +1 -1
  17. package/dist/lib/cjs/DebugController.d.cts +1 -0
  18. package/dist/lib/cjs/Enum.cjs +1 -1
  19. package/dist/lib/cjs/Enum.d.cts +2 -1
  20. package/dist/lib/cjs/Error.cjs +8 -6
  21. package/dist/lib/cjs/Error.d.cts +3 -2
  22. package/dist/lib/cjs/Function.cjs +1 -1
  23. package/dist/lib/cjs/Function.d.cts +2 -1
  24. package/dist/lib/cjs/HTMLElement.cjs +1 -1
  25. package/dist/lib/cjs/HTMLElement.d.cts +4 -2
  26. package/dist/lib/cjs/Library.cjs +2 -2
  27. package/dist/lib/cjs/Library.d.cts +2 -1
  28. package/dist/lib/cjs/Object.cjs +38 -3
  29. package/dist/lib/cjs/Object.d.cts +18 -13
  30. package/dist/lib/cjs/Path.cjs +2 -2
  31. package/dist/lib/cjs/Path.d.cts +2 -1
  32. package/dist/lib/cjs/RegExp.cjs +1 -1
  33. package/dist/lib/cjs/RegExp.d.cts +2 -1
  34. package/dist/lib/cjs/ScriptUtils/CliUtils.cjs +7 -7
  35. package/dist/lib/cjs/ScriptUtils/CliUtils.d.cts +12 -11
  36. package/dist/lib/cjs/ScriptUtils/CodeGenerator.cjs +1 -1
  37. package/dist/lib/cjs/ScriptUtils/CodeGenerator.d.cts +3 -2
  38. package/dist/lib/cjs/ScriptUtils/ESLint/@types/@guardian__eslint-plugin-tsdoc-required.d.cts +1 -0
  39. package/dist/lib/cjs/ScriptUtils/ESLint/@types/eslint-plugin-modules-newlines.d.cts +1 -0
  40. package/dist/lib/cjs/ScriptUtils/ESLint/@types/eslint-plugin-verify-tsdoc.d.cts +1 -0
  41. package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.cjs +1 -1
  42. package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.d.cts +2 -1
  43. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.cjs +13 -10
  44. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.d.cts +2 -3
  45. package/dist/lib/cjs/ScriptUtils/Exec.cjs +1 -1
  46. package/dist/lib/cjs/ScriptUtils/Exec.d.cts +4 -3
  47. package/dist/lib/cjs/ScriptUtils/Fs.cjs +1 -1
  48. package/dist/lib/cjs/ScriptUtils/Fs.d.cts +5 -4
  49. package/dist/lib/cjs/ScriptUtils/JSON.cjs +1 -1
  50. package/dist/lib/cjs/ScriptUtils/JSON.d.cts +5 -4
  51. package/dist/lib/cjs/ScriptUtils/NodeModules.cjs +1 -1
  52. package/dist/lib/cjs/ScriptUtils/NodeModules.d.cts +2 -1
  53. package/dist/lib/cjs/ScriptUtils/Npm.cjs +1 -1
  54. package/dist/lib/cjs/ScriptUtils/Npm.d.cts +9 -10
  55. package/dist/lib/cjs/ScriptUtils/NpmPublish.cjs +1 -1
  56. package/dist/lib/cjs/ScriptUtils/NpmPublish.d.cts +3 -1
  57. package/dist/lib/cjs/ScriptUtils/NpmRun.cjs +1 -1
  58. package/dist/lib/cjs/ScriptUtils/NpmRun.d.cts +5 -0
  59. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.cjs +1 -10
  60. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.d.cts +45 -61
  61. package/dist/lib/cjs/ScriptUtils/Root.cjs +1 -1
  62. package/dist/lib/cjs/ScriptUtils/Root.d.cts +4 -3
  63. package/dist/lib/cjs/ScriptUtils/build.cjs +1 -1
  64. package/dist/lib/cjs/ScriptUtils/build.d.cts +7 -6
  65. package/dist/lib/cjs/ScriptUtils/cli.cjs +1 -1
  66. package/dist/lib/cjs/ScriptUtils/cli.d.cts +2 -1
  67. package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +1 -1
  68. package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.d.cts +4 -3
  69. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +1 -1
  70. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts +4 -3
  71. package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.cjs +1 -1
  72. package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.d.cts +2 -1
  73. package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +1 -1
  74. package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.d.cts +2 -1
  75. package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.cjs +1 -1
  76. package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.d.cts +2 -1
  77. package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.cjs +1 -1
  78. package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.d.cts +2 -1
  79. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +1 -1
  80. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.d.cts +2 -1
  81. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +1 -1
  82. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.d.cts +2 -1
  83. package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.cjs +1 -1
  84. package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.d.cts +5 -0
  85. package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.cjs +1 -1
  86. package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.d.cts +5 -0
  87. package/dist/lib/cjs/ScriptUtils/format.cjs +1 -1
  88. package/dist/lib/cjs/ScriptUtils/format.d.cts +4 -2
  89. package/dist/lib/cjs/ScriptUtils/spellcheck.cjs +1 -1
  90. package/dist/lib/cjs/ScriptUtils/spellcheck.d.cts +4 -3
  91. package/dist/lib/cjs/ScriptUtils/version.cjs +1 -1
  92. package/dist/lib/cjs/ScriptUtils/version.d.cts +12 -11
  93. package/dist/lib/cjs/String.cjs +1 -1
  94. package/dist/lib/cjs/String.d.cts +4 -3
  95. package/dist/lib/cjs/Transformers/DateTransformer.cjs +3 -1
  96. package/dist/lib/cjs/Transformers/DateTransformer.d.cts +4 -1
  97. package/dist/lib/cjs/Transformers/DurationTransformer.cjs +5 -1
  98. package/dist/lib/cjs/Transformers/DurationTransformer.d.cts +6 -1
  99. package/dist/lib/cjs/Transformers/GroupTransformer.cjs +7 -4
  100. package/dist/lib/cjs/Transformers/GroupTransformer.d.cts +9 -5
  101. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.cjs +3 -1
  102. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.d.cts +4 -1
  103. package/dist/lib/cjs/Transformers/Transformer.cjs +9 -2
  104. package/dist/lib/cjs/Transformers/Transformer.d.cts +2 -1
  105. package/dist/lib/cjs/Transformers/TypedTransformer.cjs +1 -1
  106. package/dist/lib/cjs/Transformers/TypedTransformer.d.cts +2 -1
  107. package/dist/lib/cjs/Type.cjs +24 -0
  108. package/dist/lib/cjs/Type.d.cts +17 -0
  109. package/dist/lib/cjs/ValueProvider.cjs +1 -1
  110. package/dist/lib/cjs/ValueProvider.d.cts +3 -2
  111. package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +1 -1
  112. package/dist/lib/cjs/codemirror/StateFieldSpec.d.cts +2 -1
  113. package/dist/lib/cjs/index.cjs +10 -1
  114. package/dist/lib/cjs/index.d.cts +3 -0
  115. package/dist/lib/cjs/obsidian/App.cjs +1 -1
  116. package/dist/lib/cjs/obsidian/App.d.cts +2 -1
  117. package/dist/lib/cjs/obsidian/AttachmentPath.cjs +1 -1
  118. package/dist/lib/cjs/obsidian/AttachmentPath.d.cts +7 -5
  119. package/dist/lib/cjs/obsidian/Backlink.cjs +1 -1
  120. package/dist/lib/cjs/obsidian/Backlink.d.cts +3 -2
  121. package/dist/lib/cjs/obsidian/Callout.cjs +1 -1
  122. package/dist/lib/cjs/obsidian/Callout.d.cts +3 -2
  123. package/dist/lib/cjs/obsidian/Components/CheckboxComponent.cjs +99 -0
  124. package/dist/lib/cjs/obsidian/Components/CheckboxComponent.d.cts +59 -0
  125. package/dist/lib/cjs/obsidian/Components/DateComponent.cjs +1 -1
  126. package/dist/lib/cjs/obsidian/Components/DateComponent.d.cts +2 -1
  127. package/dist/lib/cjs/obsidian/Components/DateTimeComponent.cjs +1 -1
  128. package/dist/lib/cjs/obsidian/Components/DateTimeComponent.d.cts +2 -1
  129. package/dist/lib/cjs/obsidian/Components/EmailComponent.cjs +1 -1
  130. package/dist/lib/cjs/obsidian/Components/EmailComponent.d.cts +2 -1
  131. package/dist/lib/cjs/obsidian/Components/FileComponent.cjs +1 -1
  132. package/dist/lib/cjs/obsidian/Components/FileComponent.d.cts +2 -1
  133. package/dist/lib/cjs/obsidian/Components/MonthComponent.cjs +1 -1
  134. package/dist/lib/cjs/obsidian/Components/MonthComponent.d.cts +2 -1
  135. package/dist/lib/cjs/obsidian/Components/MultipleDropdownComponent.cjs +4 -2
  136. package/dist/lib/cjs/obsidian/Components/MultipleDropdownComponent.d.cts +4 -1
  137. package/dist/lib/cjs/obsidian/Components/MultipleEmailComponent.cjs +1 -1
  138. package/dist/lib/cjs/obsidian/Components/MultipleEmailComponent.d.cts +2 -1
  139. package/dist/lib/cjs/obsidian/Components/MultipleFileComponent.cjs +1 -1
  140. package/dist/lib/cjs/obsidian/Components/MultipleFileComponent.d.cts +2 -1
  141. package/dist/lib/cjs/obsidian/Components/MultipleTextComponent.cjs +30 -3
  142. package/dist/lib/cjs/obsidian/Components/MultipleTextComponent.d.cts +22 -3
  143. package/dist/lib/cjs/obsidian/Components/NumberComponent.cjs +1 -1
  144. package/dist/lib/cjs/obsidian/Components/NumberComponent.d.cts +2 -1
  145. package/dist/lib/cjs/obsidian/Components/TextBasedComponent.cjs +65 -0
  146. package/dist/lib/cjs/obsidian/Components/TextBasedComponent.d.cts +37 -0
  147. package/dist/lib/cjs/obsidian/Components/TimeComponent.cjs +1 -1
  148. package/dist/lib/cjs/obsidian/Components/TimeComponent.d.cts +2 -1
  149. package/dist/lib/cjs/obsidian/Components/TriStateCheckboxComponent.cjs +100 -0
  150. package/dist/lib/cjs/obsidian/Components/TriStateCheckboxComponent.d.cts +59 -0
  151. package/dist/lib/cjs/obsidian/Components/TypedDropdownComponent.cjs +129 -0
  152. package/dist/lib/cjs/obsidian/Components/TypedDropdownComponent.d.cts +78 -0
  153. package/dist/lib/cjs/obsidian/Components/TypedMultipleDropdownComponent.cjs +131 -0
  154. package/dist/lib/cjs/obsidian/Components/TypedMultipleDropdownComponent.d.cts +79 -0
  155. package/dist/lib/cjs/obsidian/Components/TypedRangeTextComponent.cjs +1 -1
  156. package/dist/lib/cjs/obsidian/Components/TypedRangeTextComponent.d.cts +4 -1
  157. package/dist/lib/cjs/obsidian/Components/TypedTextComponent.cjs +30 -4
  158. package/dist/lib/cjs/obsidian/Components/TypedTextComponent.d.cts +25 -3
  159. package/dist/lib/cjs/obsidian/Components/UrlComponent.cjs +1 -1
  160. package/dist/lib/cjs/obsidian/Components/UrlComponent.d.cts +2 -1
  161. package/dist/lib/cjs/obsidian/Components/ValidatorComponent.cjs +23 -29
  162. package/dist/lib/cjs/obsidian/Components/ValidatorComponent.d.cts +6 -6
  163. package/dist/lib/cjs/obsidian/Components/ValueComponentWithChangeTracking.cjs +1 -1
  164. package/dist/lib/cjs/obsidian/Components/ValueComponentWithChangeTracking.d.cts +4 -1
  165. package/dist/lib/cjs/obsidian/Components/WeekComponent.cjs +1 -1
  166. package/dist/lib/cjs/obsidian/Components/WeekComponent.d.cts +2 -1
  167. package/dist/lib/cjs/obsidian/Components/index.cjs +16 -4
  168. package/dist/lib/cjs/obsidian/Components/index.d.cts +5 -1
  169. package/dist/lib/cjs/obsidian/Dataview.cjs +1 -1
  170. package/dist/lib/cjs/obsidian/Dataview.d.cts +11 -12
  171. package/dist/lib/cjs/obsidian/DataviewLink.cjs +1 -1
  172. package/dist/lib/cjs/obsidian/DataviewLink.d.cts +4 -3
  173. package/dist/lib/cjs/obsidian/FileChange.cjs +1 -1
  174. package/dist/lib/cjs/obsidian/FileChange.d.cts +4 -3
  175. package/dist/lib/cjs/obsidian/FileManager.cjs +1 -1
  176. package/dist/lib/cjs/obsidian/FileManager.d.cts +6 -5
  177. package/dist/lib/cjs/obsidian/FileSystem.cjs +1 -1
  178. package/dist/lib/cjs/obsidian/FileSystem.d.cts +3 -1
  179. package/dist/lib/cjs/obsidian/Frontmatter.cjs +1 -1
  180. package/dist/lib/cjs/obsidian/Frontmatter.d.cts +5 -1
  181. package/dist/lib/cjs/obsidian/Link.cjs +1 -1
  182. package/dist/lib/cjs/obsidian/Link.d.cts +7 -6
  183. package/dist/lib/cjs/obsidian/Logger.cjs +1 -1
  184. package/dist/lib/cjs/obsidian/Logger.d.cts +2 -1
  185. package/dist/lib/cjs/obsidian/Loop.cjs +1 -1
  186. package/dist/lib/cjs/obsidian/Loop.d.cts +2 -1
  187. package/dist/lib/cjs/obsidian/Markdown.cjs +5 -8
  188. package/dist/lib/cjs/obsidian/Markdown.d.cts +2 -1
  189. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +1 -1
  190. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.d.cts +2 -1
  191. package/dist/lib/cjs/obsidian/MarkdownView.cjs +1 -1
  192. package/dist/lib/cjs/obsidian/MarkdownView.d.cts +2 -1
  193. package/dist/lib/cjs/obsidian/MetadataCache.cjs +1 -1
  194. package/dist/lib/cjs/obsidian/MetadataCache.d.cts +7 -5
  195. package/dist/lib/cjs/obsidian/Modals/Alert.cjs +3 -1
  196. package/dist/lib/cjs/obsidian/Modals/Alert.d.cts +3 -2
  197. package/dist/lib/cjs/obsidian/Modals/Confirm.cjs +3 -1
  198. package/dist/lib/cjs/obsidian/Modals/Confirm.d.cts +3 -2
  199. package/dist/lib/cjs/obsidian/Modals/ModalBase.cjs +1 -1
  200. package/dist/lib/cjs/obsidian/Modals/ModalBase.d.cts +2 -2
  201. package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +3 -1
  202. package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +5 -3
  203. package/dist/lib/cjs/obsidian/Modals/SelectItem.cjs +2 -1
  204. package/dist/lib/cjs/obsidian/Modals/SelectItem.d.cts +4 -2
  205. package/dist/lib/cjs/obsidian/MonkeyAround.cjs +1 -1
  206. package/dist/lib/cjs/obsidian/MonkeyAround.d.cts +5 -3
  207. package/dist/lib/cjs/obsidian/ObsidianSettings.cjs +1 -1
  208. package/dist/lib/cjs/obsidian/ObsidianSettings.d.cts +3 -0
  209. package/dist/lib/cjs/obsidian/Pdf.cjs +1 -1
  210. package/dist/lib/cjs/obsidian/Pdf.d.cts +2 -1
  211. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +6 -2
  212. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.d.cts +38 -29
  213. package/dist/lib/cjs/obsidian/Plugin/Plugin.cjs +1 -1
  214. package/dist/lib/cjs/obsidian/Plugin/Plugin.d.cts +4 -3
  215. package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +121 -32
  216. package/dist/lib/cjs/obsidian/Plugin/PluginBase.d.cts +52 -21
  217. package/dist/lib/cjs/obsidian/Plugin/PluginContext.cjs +1 -1
  218. package/dist/lib/cjs/obsidian/Plugin/PluginContext.d.cts +2 -1
  219. package/dist/lib/cjs/obsidian/Plugin/PluginId.cjs +1 -1
  220. package/dist/lib/cjs/obsidian/Plugin/PluginId.d.cts +2 -1
  221. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +88 -55
  222. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +42 -22
  223. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +29 -13
  224. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +18 -11
  225. package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.cjs +24 -0
  226. package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.d.cts +55 -0
  227. package/dist/lib/cjs/obsidian/Plugin/index.cjs +6 -3
  228. package/dist/lib/cjs/obsidian/Plugin/index.d.cts +1 -0
  229. package/dist/lib/cjs/obsidian/Queue.cjs +1 -1
  230. package/dist/lib/cjs/obsidian/Queue.d.cts +3 -2
  231. package/dist/lib/cjs/obsidian/React/AppContext.cjs +3 -3
  232. package/dist/lib/cjs/obsidian/React/AppContext.d.cts +8 -1
  233. package/dist/lib/cjs/obsidian/Reference.cjs +1 -1
  234. package/dist/lib/cjs/obsidian/Reference.d.cts +2 -1
  235. package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +75 -75
  236. package/dist/lib/cjs/obsidian/RenameDeleteHandler.d.cts +3 -2
  237. package/dist/lib/cjs/obsidian/ResourceUrl.cjs +1 -1
  238. package/dist/lib/cjs/obsidian/ResourceUrl.d.cts +2 -1
  239. package/dist/lib/cjs/obsidian/SettingEx.cjs +41 -1
  240. package/dist/lib/cjs/obsidian/SettingEx.d.cts +35 -2
  241. package/dist/lib/cjs/obsidian/ValidationMessage.cjs +1 -1
  242. package/dist/lib/cjs/obsidian/ValidationMessage.d.cts +5 -0
  243. package/dist/lib/cjs/obsidian/Vault.cjs +1 -1
  244. package/dist/lib/cjs/obsidian/Vault.d.cts +15 -10
  245. package/dist/lib/cjs/obsidian/VaultEx.cjs +1 -1
  246. package/dist/lib/cjs/obsidian/VaultEx.d.cts +4 -3
  247. package/dist/lib/cjs/url.cjs +1 -1
  248. package/dist/lib/cjs/url.d.cts +2 -1
  249. package/dist/lib/esm/@types/debug.d.mts +1 -0
  250. package/dist/lib/esm/Array.d.mts +12 -0
  251. package/dist/lib/esm/Array.mjs +24 -0
  252. package/dist/lib/esm/Async.d.mts +26 -18
  253. package/dist/lib/esm/Async.mjs +5 -1
  254. package/dist/lib/esm/AsyncEvents.d.mts +144 -0
  255. package/dist/lib/esm/AsyncEvents.mjs +192 -0
  256. package/dist/lib/esm/Blob.d.mts +9 -8
  257. package/dist/lib/esm/Blob.mjs +1 -1
  258. package/dist/lib/esm/CssClass.d.mts +18 -1
  259. package/dist/lib/esm/CssClass.mjs +5 -1
  260. package/dist/lib/esm/Debug.d.mts +2 -1
  261. package/dist/lib/esm/Debug.mjs +1 -1
  262. package/dist/lib/esm/DebugController.d.mts +1 -0
  263. package/dist/lib/esm/Enum.d.mts +2 -1
  264. package/dist/lib/esm/Enum.mjs +1 -1
  265. package/dist/lib/esm/Error.d.mts +3 -2
  266. package/dist/lib/esm/Error.mjs +8 -6
  267. package/dist/lib/esm/Function.d.mts +2 -1
  268. package/dist/lib/esm/Function.mjs +1 -1
  269. package/dist/lib/esm/HTMLElement.d.mts +4 -2
  270. package/dist/lib/esm/HTMLElement.mjs +1 -1
  271. package/dist/lib/esm/Library.d.mts +2 -1
  272. package/dist/lib/esm/Library.mjs +2 -2
  273. package/dist/lib/esm/Object.d.mts +18 -13
  274. package/dist/lib/esm/Object.mjs +36 -3
  275. package/dist/lib/esm/Path.d.mts +2 -1
  276. package/dist/lib/esm/Path.mjs +2 -2
  277. package/dist/lib/esm/RegExp.d.mts +2 -1
  278. package/dist/lib/esm/RegExp.mjs +1 -1
  279. package/dist/lib/esm/ScriptUtils/CliUtils.d.mts +12 -11
  280. package/dist/lib/esm/ScriptUtils/CliUtils.mjs +7 -7
  281. package/dist/lib/esm/ScriptUtils/CodeGenerator.d.mts +3 -2
  282. package/dist/lib/esm/ScriptUtils/CodeGenerator.mjs +1 -1
  283. package/dist/lib/esm/ScriptUtils/ESLint/@types/@guardian__eslint-plugin-tsdoc-required.d.mts +1 -0
  284. package/dist/lib/esm/ScriptUtils/ESLint/@types/eslint-plugin-modules-newlines.d.mts +1 -0
  285. package/dist/lib/esm/ScriptUtils/ESLint/@types/eslint-plugin-verify-tsdoc.d.mts +1 -0
  286. package/dist/lib/esm/ScriptUtils/ESLint/ESLint.d.mts +2 -1
  287. package/dist/lib/esm/ScriptUtils/ESLint/ESLint.mjs +1 -1
  288. package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.d.mts +2 -3
  289. package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.mjs +13 -10
  290. package/dist/lib/esm/ScriptUtils/Exec.d.mts +4 -3
  291. package/dist/lib/esm/ScriptUtils/Exec.mjs +1 -1
  292. package/dist/lib/esm/ScriptUtils/Fs.d.mts +5 -4
  293. package/dist/lib/esm/ScriptUtils/Fs.mjs +1 -1
  294. package/dist/lib/esm/ScriptUtils/JSON.d.mts +5 -4
  295. package/dist/lib/esm/ScriptUtils/JSON.mjs +1 -1
  296. package/dist/lib/esm/ScriptUtils/NodeModules.d.mts +2 -1
  297. package/dist/lib/esm/ScriptUtils/NodeModules.mjs +1 -1
  298. package/dist/lib/esm/ScriptUtils/Npm.d.mts +9 -10
  299. package/dist/lib/esm/ScriptUtils/Npm.mjs +1 -1
  300. package/dist/lib/esm/ScriptUtils/NpmPublish.d.mts +3 -1
  301. package/dist/lib/esm/ScriptUtils/NpmPublish.mjs +1 -1
  302. package/dist/lib/esm/ScriptUtils/NpmRun.d.mts +5 -0
  303. package/dist/lib/esm/ScriptUtils/NpmRun.mjs +1 -1
  304. package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.d.mts +45 -61
  305. package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.mjs +1 -10
  306. package/dist/lib/esm/ScriptUtils/Root.d.mts +4 -3
  307. package/dist/lib/esm/ScriptUtils/Root.mjs +1 -1
  308. package/dist/lib/esm/ScriptUtils/build.d.mts +7 -6
  309. package/dist/lib/esm/ScriptUtils/build.mjs +1 -1
  310. package/dist/lib/esm/ScriptUtils/cli.d.mts +2 -1
  311. package/dist/lib/esm/ScriptUtils/cli.mjs +1 -1
  312. package/dist/lib/esm/ScriptUtils/esbuild/Dependency.d.mts +4 -3
  313. package/dist/lib/esm/ScriptUtils/esbuild/Dependency.mjs +1 -1
  314. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +4 -3
  315. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +1 -1
  316. package/dist/lib/esm/ScriptUtils/esbuild/changeExtensionPlugin.d.mts +2 -1
  317. package/dist/lib/esm/ScriptUtils/esbuild/changeExtensionPlugin.mjs +1 -1
  318. package/dist/lib/esm/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.d.mts +2 -1
  319. package/dist/lib/esm/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.mjs +1 -1
  320. package/dist/lib/esm/ScriptUtils/esbuild/customEsbuildOptionsPlugin.d.mts +2 -1
  321. package/dist/lib/esm/ScriptUtils/esbuild/customEsbuildOptionsPlugin.mjs +1 -1
  322. package/dist/lib/esm/ScriptUtils/esbuild/fixEsmPlugin.d.mts +2 -1
  323. package/dist/lib/esm/ScriptUtils/esbuild/fixEsmPlugin.mjs +1 -1
  324. package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.d.mts +2 -1
  325. package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.mjs +1 -1
  326. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.d.mts +2 -1
  327. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +1 -1
  328. package/dist/lib/esm/ScriptUtils/esbuild/renameCssPlugin.d.mts +5 -0
  329. package/dist/lib/esm/ScriptUtils/esbuild/renameCssPlugin.mjs +1 -1
  330. package/dist/lib/esm/ScriptUtils/esbuild/svelteWrapperPlugin.d.mts +5 -0
  331. package/dist/lib/esm/ScriptUtils/esbuild/svelteWrapperPlugin.mjs +1 -1
  332. package/dist/lib/esm/ScriptUtils/format.d.mts +4 -2
  333. package/dist/lib/esm/ScriptUtils/format.mjs +1 -1
  334. package/dist/lib/esm/ScriptUtils/spellcheck.d.mts +4 -3
  335. package/dist/lib/esm/ScriptUtils/spellcheck.mjs +1 -1
  336. package/dist/lib/esm/ScriptUtils/version.d.mts +12 -11
  337. package/dist/lib/esm/ScriptUtils/version.mjs +1 -1
  338. package/dist/lib/esm/String.d.mts +4 -3
  339. package/dist/lib/esm/String.mjs +1 -1
  340. package/dist/lib/esm/Transformers/DateTransformer.d.mts +4 -1
  341. package/dist/lib/esm/Transformers/DateTransformer.mjs +3 -1
  342. package/dist/lib/esm/Transformers/DurationTransformer.d.mts +6 -1
  343. package/dist/lib/esm/Transformers/DurationTransformer.mjs +5 -1
  344. package/dist/lib/esm/Transformers/GroupTransformer.d.mts +9 -5
  345. package/dist/lib/esm/Transformers/GroupTransformer.mjs +7 -4
  346. package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.d.mts +4 -1
  347. package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.mjs +3 -1
  348. package/dist/lib/esm/Transformers/Transformer.d.mts +2 -1
  349. package/dist/lib/esm/Transformers/Transformer.mjs +9 -2
  350. package/dist/lib/esm/Transformers/TypedTransformer.d.mts +2 -1
  351. package/dist/lib/esm/Transformers/TypedTransformer.mjs +1 -1
  352. package/dist/lib/esm/Type.d.mts +17 -0
  353. package/dist/lib/esm/Type.mjs +8 -0
  354. package/dist/lib/esm/ValueProvider.d.mts +3 -2
  355. package/dist/lib/esm/ValueProvider.mjs +1 -1
  356. package/dist/lib/esm/codemirror/StateFieldSpec.d.mts +2 -1
  357. package/dist/lib/esm/index.d.mts +3 -0
  358. package/dist/lib/esm/index.mjs +7 -1
  359. package/dist/lib/esm/obsidian/App.d.mts +2 -1
  360. package/dist/lib/esm/obsidian/App.mjs +1 -1
  361. package/dist/lib/esm/obsidian/AttachmentPath.d.mts +7 -5
  362. package/dist/lib/esm/obsidian/AttachmentPath.mjs +1 -1
  363. package/dist/lib/esm/obsidian/Backlink.d.mts +3 -2
  364. package/dist/lib/esm/obsidian/Backlink.mjs +1 -1
  365. package/dist/lib/esm/obsidian/Callout.d.mts +3 -2
  366. package/dist/lib/esm/obsidian/Callout.mjs +1 -1
  367. package/dist/lib/esm/obsidian/Components/CheckboxComponent.d.mts +59 -0
  368. package/dist/lib/esm/obsidian/Components/CheckboxComponent.mjs +75 -0
  369. package/dist/lib/esm/obsidian/Components/DateComponent.d.mts +2 -1
  370. package/dist/lib/esm/obsidian/Components/DateComponent.mjs +1 -1
  371. package/dist/lib/esm/obsidian/Components/DateTimeComponent.d.mts +2 -1
  372. package/dist/lib/esm/obsidian/Components/DateTimeComponent.mjs +1 -1
  373. package/dist/lib/esm/obsidian/Components/EmailComponent.d.mts +2 -1
  374. package/dist/lib/esm/obsidian/Components/EmailComponent.mjs +1 -1
  375. package/dist/lib/esm/obsidian/Components/FileComponent.d.mts +2 -1
  376. package/dist/lib/esm/obsidian/Components/FileComponent.mjs +1 -1
  377. package/dist/lib/esm/obsidian/Components/MonthComponent.d.mts +2 -1
  378. package/dist/lib/esm/obsidian/Components/MonthComponent.mjs +1 -1
  379. package/dist/lib/esm/obsidian/Components/MultipleDropdownComponent.d.mts +4 -1
  380. package/dist/lib/esm/obsidian/Components/MultipleDropdownComponent.mjs +4 -2
  381. package/dist/lib/esm/obsidian/Components/MultipleEmailComponent.d.mts +2 -1
  382. package/dist/lib/esm/obsidian/Components/MultipleEmailComponent.mjs +1 -1
  383. package/dist/lib/esm/obsidian/Components/MultipleFileComponent.d.mts +2 -1
  384. package/dist/lib/esm/obsidian/Components/MultipleFileComponent.mjs +1 -1
  385. package/dist/lib/esm/obsidian/Components/MultipleTextComponent.d.mts +22 -3
  386. package/dist/lib/esm/obsidian/Components/MultipleTextComponent.mjs +30 -3
  387. package/dist/lib/esm/obsidian/Components/NumberComponent.d.mts +2 -1
  388. package/dist/lib/esm/obsidian/Components/NumberComponent.mjs +1 -1
  389. package/dist/lib/esm/obsidian/Components/TextBasedComponent.d.mts +37 -0
  390. package/dist/lib/esm/obsidian/Components/TextBasedComponent.mjs +41 -0
  391. package/dist/lib/esm/obsidian/Components/TimeComponent.d.mts +2 -1
  392. package/dist/lib/esm/obsidian/Components/TimeComponent.mjs +1 -1
  393. package/dist/lib/esm/obsidian/Components/TriStateCheckboxComponent.d.mts +59 -0
  394. package/dist/lib/esm/obsidian/Components/TriStateCheckboxComponent.mjs +76 -0
  395. package/dist/lib/esm/obsidian/Components/TypedDropdownComponent.d.mts +78 -0
  396. package/dist/lib/esm/obsidian/Components/TypedDropdownComponent.mjs +108 -0
  397. package/dist/lib/esm/obsidian/Components/TypedMultipleDropdownComponent.d.mts +79 -0
  398. package/dist/lib/esm/obsidian/Components/TypedMultipleDropdownComponent.mjs +110 -0
  399. package/dist/lib/esm/obsidian/Components/TypedRangeTextComponent.d.mts +4 -1
  400. package/dist/lib/esm/obsidian/Components/TypedRangeTextComponent.mjs +1 -1
  401. package/dist/lib/esm/obsidian/Components/TypedTextComponent.d.mts +25 -3
  402. package/dist/lib/esm/obsidian/Components/TypedTextComponent.mjs +30 -4
  403. package/dist/lib/esm/obsidian/Components/UrlComponent.d.mts +2 -1
  404. package/dist/lib/esm/obsidian/Components/UrlComponent.mjs +1 -1
  405. package/dist/lib/esm/obsidian/Components/ValidatorComponent.d.mts +6 -6
  406. package/dist/lib/esm/obsidian/Components/ValidatorComponent.mjs +25 -30
  407. package/dist/lib/esm/obsidian/Components/ValueComponentWithChangeTracking.d.mts +4 -1
  408. package/dist/lib/esm/obsidian/Components/WeekComponent.d.mts +2 -1
  409. package/dist/lib/esm/obsidian/Components/WeekComponent.mjs +1 -1
  410. package/dist/lib/esm/obsidian/Components/index.d.mts +5 -1
  411. package/dist/lib/esm/obsidian/Components/index.mjs +11 -3
  412. package/dist/lib/esm/obsidian/Dataview.d.mts +11 -12
  413. package/dist/lib/esm/obsidian/Dataview.mjs +1 -1
  414. package/dist/lib/esm/obsidian/DataviewLink.d.mts +4 -3
  415. package/dist/lib/esm/obsidian/DataviewLink.mjs +1 -1
  416. package/dist/lib/esm/obsidian/FileChange.d.mts +4 -3
  417. package/dist/lib/esm/obsidian/FileChange.mjs +1 -1
  418. package/dist/lib/esm/obsidian/FileManager.d.mts +6 -5
  419. package/dist/lib/esm/obsidian/FileManager.mjs +1 -1
  420. package/dist/lib/esm/obsidian/FileSystem.d.mts +3 -1
  421. package/dist/lib/esm/obsidian/FileSystem.mjs +1 -1
  422. package/dist/lib/esm/obsidian/Frontmatter.d.mts +5 -1
  423. package/dist/lib/esm/obsidian/Frontmatter.mjs +1 -1
  424. package/dist/lib/esm/obsidian/Link.d.mts +7 -6
  425. package/dist/lib/esm/obsidian/Link.mjs +1 -1
  426. package/dist/lib/esm/obsidian/Logger.d.mts +2 -1
  427. package/dist/lib/esm/obsidian/Logger.mjs +1 -1
  428. package/dist/lib/esm/obsidian/Loop.d.mts +2 -1
  429. package/dist/lib/esm/obsidian/Loop.mjs +1 -1
  430. package/dist/lib/esm/obsidian/Markdown.d.mts +2 -1
  431. package/dist/lib/esm/obsidian/Markdown.mjs +5 -8
  432. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.d.mts +2 -1
  433. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +1 -1
  434. package/dist/lib/esm/obsidian/MarkdownView.d.mts +2 -1
  435. package/dist/lib/esm/obsidian/MarkdownView.mjs +1 -1
  436. package/dist/lib/esm/obsidian/MetadataCache.d.mts +7 -5
  437. package/dist/lib/esm/obsidian/MetadataCache.mjs +1 -1
  438. package/dist/lib/esm/obsidian/Modals/Alert.d.mts +3 -2
  439. package/dist/lib/esm/obsidian/Modals/Alert.mjs +3 -1
  440. package/dist/lib/esm/obsidian/Modals/Confirm.d.mts +3 -2
  441. package/dist/lib/esm/obsidian/Modals/Confirm.mjs +3 -1
  442. package/dist/lib/esm/obsidian/Modals/ModalBase.d.mts +2 -2
  443. package/dist/lib/esm/obsidian/Modals/ModalBase.mjs +1 -1
  444. package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +5 -3
  445. package/dist/lib/esm/obsidian/Modals/Prompt.mjs +3 -1
  446. package/dist/lib/esm/obsidian/Modals/SelectItem.d.mts +4 -2
  447. package/dist/lib/esm/obsidian/Modals/SelectItem.mjs +2 -1
  448. package/dist/lib/esm/obsidian/MonkeyAround.d.mts +5 -3
  449. package/dist/lib/esm/obsidian/MonkeyAround.mjs +1 -1
  450. package/dist/lib/esm/obsidian/ObsidianSettings.d.mts +3 -0
  451. package/dist/lib/esm/obsidian/ObsidianSettings.mjs +1 -1
  452. package/dist/lib/esm/obsidian/Pdf.d.mts +2 -1
  453. package/dist/lib/esm/obsidian/Pdf.mjs +1 -1
  454. package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.d.mts +38 -29
  455. package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.mjs +6 -2
  456. package/dist/lib/esm/obsidian/Plugin/Plugin.d.mts +4 -3
  457. package/dist/lib/esm/obsidian/Plugin/Plugin.mjs +1 -1
  458. package/dist/lib/esm/obsidian/Plugin/PluginBase.d.mts +52 -21
  459. package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +128 -38
  460. package/dist/lib/esm/obsidian/Plugin/PluginContext.d.mts +2 -1
  461. package/dist/lib/esm/obsidian/Plugin/PluginContext.mjs +1 -1
  462. package/dist/lib/esm/obsidian/Plugin/PluginId.d.mts +2 -1
  463. package/dist/lib/esm/obsidian/Plugin/PluginId.mjs +1 -1
  464. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +42 -22
  465. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +92 -56
  466. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +18 -11
  467. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +33 -14
  468. package/dist/lib/esm/obsidian/Plugin/PluginTypesBase.d.mts +55 -0
  469. package/dist/lib/esm/obsidian/Plugin/PluginTypesBase.mjs +8 -0
  470. package/dist/lib/esm/obsidian/Plugin/index.d.mts +1 -0
  471. package/dist/lib/esm/obsidian/Plugin/index.mjs +4 -2
  472. package/dist/lib/esm/obsidian/Queue.d.mts +3 -2
  473. package/dist/lib/esm/obsidian/Queue.mjs +1 -1
  474. package/dist/lib/esm/obsidian/React/AppContext.d.mts +8 -1
  475. package/dist/lib/esm/obsidian/React/AppContext.mjs +3 -3
  476. package/dist/lib/esm/obsidian/Reference.d.mts +2 -1
  477. package/dist/lib/esm/obsidian/Reference.mjs +1 -1
  478. package/dist/lib/esm/obsidian/RenameDeleteHandler.d.mts +3 -2
  479. package/dist/lib/esm/obsidian/RenameDeleteHandler.mjs +75 -75
  480. package/dist/lib/esm/obsidian/ResourceUrl.d.mts +2 -1
  481. package/dist/lib/esm/obsidian/ResourceUrl.mjs +1 -1
  482. package/dist/lib/esm/obsidian/SettingEx.d.mts +35 -2
  483. package/dist/lib/esm/obsidian/SettingEx.mjs +41 -1
  484. package/dist/lib/esm/obsidian/ValidationMessage.d.mts +5 -0
  485. package/dist/lib/esm/obsidian/ValidationMessage.mjs +1 -1
  486. package/dist/lib/esm/obsidian/Vault.d.mts +15 -10
  487. package/dist/lib/esm/obsidian/Vault.mjs +1 -1
  488. package/dist/lib/esm/obsidian/VaultEx.d.mts +4 -3
  489. package/dist/lib/esm/obsidian/VaultEx.mjs +1 -1
  490. package/dist/lib/esm/url.d.mts +2 -1
  491. package/dist/lib/esm/url.mjs +1 -1
  492. package/obsidian/Components/CheckboxComponent/package.json +6 -0
  493. package/obsidian/Components/TextBasedComponent/package.json +6 -0
  494. package/obsidian/Components/TriStateCheckboxComponent/package.json +6 -0
  495. package/obsidian/Components/TypedDropdownComponent/package.json +6 -0
  496. package/obsidian/Components/TypedMultipleDropdownComponent/package.json +6 -0
  497. package/obsidian/Plugin/PluginTypesBase/package.json +6 -0
  498. package/package.json +5 -6
  499. package/dist/lib/cjs/obsidian/Components/PlaceholderComponent.d.cts +0 -19
  500. package/dist/lib/esm/obsidian/Components/PlaceholderComponent.d.mts +0 -19
  501. package/dist/lib/esm/obsidian/Components/PlaceholderComponent.mjs +0 -14
  502. package/obsidian/Components/PlaceholderComponent/package.json +0 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,151 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 23.0.0
4
+
5
+ - Rename registerValidators
6
+ - Make all virtual Promisable just Promise
7
+
8
+ ## 22.1.1-beta.29
9
+
10
+ - Don't fail on load if settingsManager is not defined
11
+ - Add missing eslint comment
12
+
13
+ ## 22.1.1-beta.28
14
+
15
+ - Show tab
16
+ - Expose settingsTab
17
+ - Fix warnings
18
+ - Fix tsdocs
19
+ - Use concrete types
20
+
21
+ ## 22.1.1-beta.27
22
+
23
+ - Rename hook methods
24
+ - Super calls
25
+ - invokeAsyncSafelyAfterDelay
26
+ - Make PluginSettingsManagerBase knowing full Plugin type
27
+
28
+ ## 22.1.1-beta.26
29
+
30
+ - Decode paths with %20 instead of spaces
31
+ - Use wrappers
32
+ - Add checkbox validation
33
+ - Don't show warning Notice
34
+
35
+ ## 22.1.1-beta.25
36
+
37
+ - Unify @packageDocumentation
38
+ - Add eslint rules
39
+ - Add missing tsdocs
40
+ - Fix broken tsdoc
41
+ - Add missing empty line
42
+ - Remove unused SrcDependenciesTs
43
+ - Cleanup path enums
44
+ - Lint eslint.config files
45
+ - Forbid arrow functions
46
+ - Ensure eslint.config compiled
47
+ - Add jsdoc rules
48
+
49
+ ## 22.1.1-beta.24
50
+
51
+ - Add missing tsdocs
52
+ - TypedMultipleDropdownComponent
53
+ - TypedDropdownComponent
54
+ - Proper setDisabled
55
+ - Rename containerEl
56
+ - TriStateCheckboxComponent
57
+ - CheckboxComponent
58
+ - waitForLifecycleEvent
59
+ - Force void callbacks
60
+
61
+ ## 22.1.1-beta.23
62
+
63
+ - Support failing validators
64
+ - Remove old code
65
+ - Init and validate separately to allow dependent validators
66
+
67
+ ## 22.1.1-beta.22
68
+
69
+ - Subscribe once
70
+ - Add once
71
+ - Add plugin events
72
+ - AsyncEvents
73
+ - More tsdocs links
74
+
75
+ ## 22.1.1-beta.21
76
+
77
+ - Revert underscore logic to fix TS6133
78
+ - Add links in tsdocs
79
+ - Fix CliTaskResult tsdocs
80
+ - Improve virtual method arg naming
81
+ - onLoadSettings
82
+ - Force save after load if transformed
83
+ - Fix formatting
84
+ - Mark as saved on load
85
+
86
+ ## 22.1.1-beta.20
87
+
88
+ - Reuse getAllKeys when transform
89
+ - Format
90
+ - getAllEntries
91
+ - Reuse getAllKeys
92
+ - Skip `__proto__`
93
+
94
+ ## 22.1.1-beta.19
95
+
96
+ - Sort keys
97
+
98
+ ## 22.1.1-beta.18
99
+
100
+ - Return full PluginSettings
101
+ - Add missing await
102
+
103
+ ## 22.1.1-beta.17
104
+
105
+ - getAllKeys
106
+
107
+ ## 22.1.1-beta.16
108
+
109
+ - More reliable ExtractPluginSettings
110
+
111
+ ## 22.1.1-beta.15
112
+
113
+ - Use properties
114
+ - Use default values by default
115
+ - Better set placeholder
116
+ - Show better tooltip
117
+ - Make optional
118
+ - Improve ExtractPluginSettings
119
+ - shouldResetSettingWhenComponentIsEmpty
120
+
121
+ ## 22.1.1-beta.14
122
+
123
+ - Allow optional functions
124
+
125
+ ## 22.1.1-beta.13
126
+
127
+ - Refactor to use monkey-around internally
128
+ - Hook after load and before saving record
129
+
130
+ ## 22.1.1-beta.12
131
+
132
+ - Move helpers to Type
133
+ - Add access to plugin and app
134
+ - Update libs
135
+
136
+ ## 22.1.1-beta.11
137
+
138
+ - TextBasedComponent
139
+
140
+ ## 22.1.1-beta.10
141
+
142
+ - Init components without placeholders
143
+
144
+ ## 22.1.1-beta.9
145
+
146
+ - Separate setValueAndValidate and setValidationMessage
147
+ - Don't save unmodified
148
+
3
149
  ## 22.1.1-beta.8
4
150
 
5
151
  - Save only if there are changes
@@ -1,2 +1,4 @@
1
1
  import { configs } from 'obsidian-dev-utils/ScriptUtils/ESLint/eslint.config';
2
+
3
+ // eslint-disable-next-line import-x/no-default-export
2
4
  export default configs;
@@ -9,6 +9,7 @@ declare module 'debug' {
9
9
  interface Debug {
10
10
  /**
11
11
  * Loads the debug configuration from the environment.
12
+ *
12
13
  * @returns The loaded debug configuration.
13
14
  */
14
15
  load(): null | string;
@@ -23,16 +23,26 @@ var __copyProps = (to, from, except, desc) => {
23
23
  return to;
24
24
  };
25
25
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
- var PlaceholderComponent_exports = {};
27
- __export(PlaceholderComponent_exports, {
28
- isPlaceholderComponent: () => isPlaceholderComponent
26
+ var Array_exports = {};
27
+ __export(Array_exports, {
28
+ filterInPlace: () => filterInPlace
29
29
  });
30
- module.exports = __toCommonJS(PlaceholderComponent_exports);
31
- function isPlaceholderComponent(component) {
32
- return typeof component.setPlaceholder === "function";
30
+ module.exports = __toCommonJS(Array_exports);
31
+ function filterInPlace(arr, predicate) {
32
+ let writeIndex = 0;
33
+ for (let readIndex = 0; readIndex < arr.length; readIndex++) {
34
+ if (!(readIndex in arr)) {
35
+ continue;
36
+ }
37
+ const current = arr[readIndex];
38
+ if (predicate(current, readIndex, arr)) {
39
+ arr[writeIndex++] = current;
40
+ }
41
+ }
42
+ arr.length = writeIndex;
33
43
  }
34
44
  // Annotate the CommonJS export names for ESM import in node:
35
45
  0 && (module.exports = {
36
- isPlaceholderComponent
46
+ filterInPlace
37
47
  });
38
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvUGxhY2Vob2xkZXJDb21wb25lbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQSBjb21wb25lbnQgdGhhdCBjYW4gc2V0IGEgcGxhY2Vob2xkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2Vob2xkZXJDb21wb25lbnQge1xuICAvKipcbiAgICogU2V0cyB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsYWNlaG9sZGVyIC0gVGhlIHBsYWNlaG9sZGVyIHRvIHNldC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHNldFBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBzdHJpbmcpOiB0aGlzO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSBjb21wb25lbnQgaXMgYSBwbGFjZWhvbGRlciBjb21wb25lbnQuXG4gKlxuICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGNvbXBvbmVudCBpcyBhIHBsYWNlaG9sZGVyIGNvbXBvbmVudCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWNlaG9sZGVyQ29tcG9uZW50KGNvbXBvbmVudDogdW5rbm93bik6IGNvbXBvbmVudCBpcyBQbGFjZWhvbGRlckNvbXBvbmVudCB7XG4gIHJldHVybiB0eXBlb2YgKGNvbXBvbmVudCBhcyBQYXJ0aWFsPFBsYWNlaG9sZGVyQ29tcG9uZW50Pikuc2V0UGxhY2Vob2xkZXIgPT09ICdmdW5jdGlvbic7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1CTyxTQUFTLHVCQUF1QixXQUF1RDtBQUM1RixTQUFPLE9BQVEsVUFBNEMsbUJBQW1CO0FBQ2hGOyIsCiAgIm5hbWVzIjogW10KfQo=
48
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0FycmF5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEFycmF5IHV0aWxpdGllcy5cbiAqL1xuXG4vKipcbiAqIEZpbHRlciBhbiBhcnJheSBpbiBwbGFjZS5cbiAqXG4gKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IHRvIGZpbHRlci5cbiAqIEBwYXJhbSBwcmVkaWNhdGUgLSBUaGUgcHJlZGljYXRlIHRvIGZpbHRlciB0aGUgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJJblBsYWNlPFQ+KGFycjogVFtdLCBwcmVkaWNhdGU6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gYm9vbGVhbik6IHZvaWQge1xuICBsZXQgd3JpdGVJbmRleCA9IDA7XG4gIGZvciAobGV0IHJlYWRJbmRleCA9IDA7IHJlYWRJbmRleCA8IGFyci5sZW5ndGg7IHJlYWRJbmRleCsrKSB7XG4gICAgaWYgKCEocmVhZEluZGV4IGluIGFycikpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnQgPSBhcnJbcmVhZEluZGV4XSBhcyBUO1xuICAgIGlmIChwcmVkaWNhdGUoY3VycmVudCwgcmVhZEluZGV4LCBhcnIpKSB7XG4gICAgICBhcnJbd3JpdGVJbmRleCsrXSA9IGN1cnJlbnQ7XG4gICAgfVxuICB9XG4gIGFyci5sZW5ndGggPSB3cml0ZUluZGV4O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZTyxTQUFTLGNBQWlCLEtBQVUsV0FBbUU7QUFDNUcsTUFBSSxhQUFhO0FBQ2pCLFdBQVMsWUFBWSxHQUFHLFlBQVksSUFBSSxRQUFRLGFBQWE7QUFDM0QsUUFBSSxFQUFFLGFBQWEsTUFBTTtBQUN2QjtBQUFBLElBQ0Y7QUFFQSxVQUFNLFVBQVUsSUFBSSxTQUFTO0FBQzdCLFFBQUksVUFBVSxTQUFTLFdBQVcsR0FBRyxHQUFHO0FBQ3RDLFVBQUksWUFBWSxJQUFJO0FBQUEsSUFDdEI7QUFBQSxFQUNGO0FBQ0EsTUFBSSxTQUFTO0FBQ2Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * Array utilities.
5
+ */
6
+ /**
7
+ * Filter an array in place.
8
+ *
9
+ * @param arr - The array to filter.
10
+ * @param predicate - The predicate to filter the array.
11
+ */
12
+ export declare function filterInPlace<T>(arr: T[], predicate: (value: T, index: number, array: T[]) => boolean): void;
@@ -33,6 +33,7 @@ __export(Async_exports, {
33
33
  convertSyncToAsync: () => convertSyncToAsync,
34
34
  ignoreError: () => ignoreError,
35
35
  invokeAsyncSafely: () => invokeAsyncSafely,
36
+ invokeAsyncSafelyAfterDelay: () => invokeAsyncSafelyAfterDelay,
36
37
  marksAsTerminateRetry: () => marksAsTerminateRetry,
37
38
  retryWithTimeout: () => retryWithTimeout,
38
39
  runWithTimeout: () => runWithTimeout,
@@ -81,6 +82,9 @@ async function ignoreError(promise, fallbackValue) {
81
82
  function invokeAsyncSafely(asyncFn) {
82
83
  void addErrorHandler(asyncFn);
83
84
  }
85
+ function invokeAsyncSafelyAfterDelay(asyncFn, delayInMs = 0) {
86
+ setTimeout(convertAsyncToSync(async () => await asyncFn()), delayInMs);
87
+ }
84
88
  function marksAsTerminateRetry(error) {
85
89
  return Object.assign(error, { __terminateRetry: true });
86
90
  }
@@ -205,6 +209,7 @@ async function toArray(iter) {
205
209
  convertSyncToAsync,
206
210
  ignoreError,
207
211
  invokeAsyncSafely,
212
+ invokeAsyncSafelyAfterDelay,
208
213
  marksAsTerminateRetry,
209
214
  retryWithTimeout,
210
215
  runWithTimeout,
@@ -213,4 +218,4 @@ async function toArray(iter) {
213
218
  timeout,
214
219
  toArray
215
220
  });
216
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0FzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBBc3luY1xuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi9EZWJ1Zy50cyc7XG5pbXBvcnQge1xuICBBU1lOQ19FUlJPUl9XUkFQUEVSX01FU1NBR0UsXG4gIGVtaXRBc3luY0Vycm9yRXZlbnQsXG4gIGdldFN0YWNrVHJhY2UsXG4gIHByaW50RXJyb3Jcbn0gZnJvbSAnLi9FcnJvci50cyc7XG5cbi8qKlxuICogQSB0eXBlIHJlcHJlc2VudGluZyBhIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgYSBQcm9taXNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc29sdmU8VD4gPSB1bmRlZmluZWQgZXh0ZW5kcyBUID8gKHZhbHVlPzogUHJvbWlzZUxpa2U8VD4gfCBUKSA9PiB2b2lkXG4gIDogKHZhbHVlOiBQcm9taXNlTGlrZTxUPiB8IFQpID0+IHZvaWQ7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIHJldHJ5IGJlaGF2aW9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIHRvIGNhbmNlbCB0aGUgcmV0cnkgb3BlcmF0aW9uLlxuICAgKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogVGhlIGRlbGF5IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHJldHJ5IGF0dGVtcHRzLlxuICAgKi9cbiAgcmV0cnlEZWxheUluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHJ5IHRoZSBmdW5jdGlvbiBvbiBlcnJvci5cbiAgICovXG4gIHNob3VsZFJldHJ5T25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGdpdmluZyB1cCBvbiByZXRyeWluZy5cbiAgICovXG4gIHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIG1hcmtlciBpbnRlcmZhY2UgdG8gaW5kaWNhdGUgdGhhdCBhbiBlcnJvciBzaG91bGQgdGVybWluYXRlIHJldHJ5IGxvZ2ljLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlcm1pbmF0ZVJldHJ5IHtcbiAgLyoqXG4gICAqIEEgbWFya2VyIHByb3BlcnR5IHRvIGluZGljYXRlIHRoYXQgYW4gZXJyb3Igc2hvdWxkIHRlcm1pbmF0ZSByZXRyeSBsb2dpYy5cbiAgICovXG4gIF9fdGVybWluYXRlUmV0cnk6IHRydWU7XG59XG5cbi8qKlxuICogQWRkcyBhbiBlcnJvciBoYW5kbGVyIHRvIGEgUHJvbWlzZSB0aGF0IGNhdGNoZXMgYW55IGVycm9ycyBhbmQgZW1pdHMgYW4gYXN5bmMgZXJyb3IgZXZlbnQuXG4gKlxuICogQHBhcmFtIGFzeW5jRm4gLSBUaGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGFkZCBhbiBlcnJvciBoYW5kbGVyIHRvLlxuICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGNvbXBsZXRlcyBvciBlbWl0cyBhc3luYyBlcnJvciBldmVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZEVycm9ySGFuZGxlcihhc3luY0ZuOiAoKSA9PiBQcm9taXNlPHVua25vd24+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGFzeW5jRXJyb3JXcmFwcGVyID0gbmV3IEVycm9yKEFTWU5DX0VSUk9SX1dSQVBQRVJfTUVTU0FHRSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgYXN5bmNGbigpO1xuICB9IGNhdGNoIChhc3luY0Vycm9yKSB7XG4gICAgYXN5bmNFcnJvcldyYXBwZXIuY2F1c2UgPSBhc3luY0Vycm9yO1xuICAgIGVtaXRBc3luY0Vycm9yRXZlbnQoYXN5bmNFcnJvcldyYXBwZXIpO1xuICB9XG59XG5cbi8qKlxuICogRmlsdGVycyBhbiBhcnJheSBhc3luY2hyb25vdXNseSwga2VlcGluZyBvbmx5IHRoZSBlbGVtZW50cyB0aGF0IHNhdGlzZnkgdGhlIHByb3ZpZGVkIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IHRvIGZpbHRlci5cbiAqIEBwYXJhbSBwcmVkaWNhdGUgLSBUaGUgcHJlZGljYXRlIGZ1bmN0aW9uIHRvIHRlc3QgZWFjaCBlbGVtZW50LlxuICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBhcnJheSBvZiBlbGVtZW50cyB0aGF0IHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRmlsdGVyPFQ+KGFycjogVFtdLCBwcmVkaWNhdGU6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gUHJvbWlzYWJsZTxib29sZWFuPik6IFByb21pc2U8VFtdPiB7XG4gIGNvbnN0IHByZWRpY2F0ZVJlc3VsdHMgPSBhd2FpdCBhc3luY01hcChhcnIsIHByZWRpY2F0ZSk7XG4gIHJldHVybiBhcnIuZmlsdGVyKChfLCBpbmRleCkgPT4gcHJlZGljYXRlUmVzdWx0c1tpbmRleF0gPz8gZmFsc2UpO1xufVxuXG4vKipcbiAqIE1hcHMgb3ZlciBhbiBhcnJheSBhc3luY2hyb25vdXNseSwgYXBwbHlpbmcgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGVhY2ggZWxlbWVudCwgYW5kIHRoZW4gZmxhdHRlbnMgdGhlIHJlc3VsdHMgaW50byBhIHNpbmdsZSBhcnJheS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAdHlwZVBhcmFtIFUgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgb3V0cHV0IGFycmF5LlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byBtYXAgb3ZlciBhbmQgZmxhdHRlbi5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGEgZmxhdHRlbmVkIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRmxhdE1hcDxULCBVPihhcnI6IFRbXSwgY2FsbGJhY2s6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gUHJvbWlzYWJsZTxVW10+KTogUHJvbWlzZTxVW10+IHtcbiAgcmV0dXJuIChhd2FpdCBhc3luY01hcChhcnIsIGNhbGxiYWNrKSkuZmxhdCgpO1xufVxuXG4vKipcbiAqIE1hcHMgb3ZlciBhbiBhcnJheSBhc3luY2hyb25vdXNseSwgYXBwbHlpbmcgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGVhY2ggZWxlbWVudC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAdHlwZVBhcmFtIFUgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgb3V0cHV0IGFycmF5LlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byBtYXAgb3Zlci5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jTWFwPFQsIFU+KGFycjogVFtdLCBjYWxsYmFjazogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBQcm9taXNhYmxlPFU+KTogUHJvbWlzZTxVW10+IHtcbiAgcmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKGFyci5tYXAoY2FsbGJhY2spKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gYSBzeW5jaHJvbm91cyBvbmUgYnkgYXV0b21hdGljYWxseSBoYW5kbGluZyB0aGUgUHJvbWlzZSByZWplY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBBcmdzIC0gVGhlIHR5cGVzIG9mIHRoZSBhcmd1bWVudHMgdGhlIGZ1bmN0aW9uIGFjY2VwdHMuXG4gKiBAcGFyYW0gYXN5bmNGdW5jIC0gVGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHdyYXBzIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gaW4gYSBzeW5jaHJvbm91cyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QXN5bmNUb1N5bmM8QXJncyBleHRlbmRzIHVua25vd25bXT4oYXN5bmNGdW5jOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTx1bmtub3duPik6ICguLi5hcmdzOiBBcmdzKSA9PiB2b2lkIHtcbiAgcmV0dXJuICguLi5hcmdzOiBBcmdzKTogdm9pZCA9PiB7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gYXN5bmNGdW5jKC4uLmFyZ3MpKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGFuIGFzeW5jaHJvbm91cyBvbmUgYnkgd3JhcHBpbmcgaXQgaW4gYSBQcm9taXNlLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRzIHRoZSBmdW5jdGlvbiBhY2NlcHRzLlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUuXG4gKiBAcGFyYW0gc3luY0ZuIC0gVGhlIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgd3JhcHMgdGhlIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGFuIGFzeW5jaHJvbm91cyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U3luY1RvQXN5bmM8QXJncyBleHRlbmRzIHVua25vd25bXSwgUmVzdWx0PihzeW5jRm46ICguLi5hcmdzOiBBcmdzKSA9PiBSZXN1bHQpOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuICguLi5hcmdzOiBBcmdzKTogUHJvbWlzZTxSZXN1bHQ+ID0+IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gc3luY0ZuKC4uLmFyZ3MpKTtcbn1cblxuLyoqXG4gKiBJZ25vcmVzIGFuIGVycm9yIHRoYXQgaXMgdGhyb3duIGJ5IGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIGlnbm9yZSB0aGUgZXJyb3Igb2YuXG4gKiBAcGFyYW0gZmFsbGJhY2tWYWx1ZSAtIEFsd2F5cyBgdW5kZWZpbmVkYC5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBjb21wbGV0ZXMgb3IgZmFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpZ25vcmVFcnJvcihwcm9taXNlOiBQcm9taXNlPHVua25vd24+LCBmYWxsYmFja1ZhbHVlPzogdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gKiBJbnZva2VzIGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBhbmQgcmV0dXJucyBhIGZhbGxiYWNrIHZhbHVlIGlmIGFuIGVycm9yIGlzIHRocm93bi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gaWdub3JlIHRoZSBlcnJvciBvZi5cbiAqIEBwYXJhbSBmYWxsYmFja1ZhbHVlIC0gVGhlIHZhbHVlIHRvIHJldHVybiBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIG9yIHRoZSBmYWxsYmFjayB2YWx1ZSBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpZ25vcmVFcnJvcjxUPihwcm9taXNlOiBQcm9taXNlPFQ+LCBmYWxsYmFja1ZhbHVlOiBUKTogUHJvbWlzZTxUPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHByb21pc2U7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxsYmFja1ZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogSW52b2tlcyBhIFByb21pc2UgYW5kIHNhZmVseSBoYW5kbGVzIGFueSBlcnJvcnMgYnkgY2F0Y2hpbmcgdGhlbSBhbmQgZW1pdHRpbmcgYW4gYXN5bmMgZXJyb3IgZXZlbnQuXG4gKlxuICogQHBhcmFtIGFzeW5jRm4gLSBUaGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGludm9rZSBzYWZlbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VBc3luY1NhZmVseShhc3luY0ZuOiAoKSA9PiBQcm9taXNlPHVua25vd24+KTogdm9pZCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12b2lkXG4gIHZvaWQgYWRkRXJyb3JIYW5kbGVyKGFzeW5jRm4pO1xufVxuXG4vKipcbiAqIE1hcmtzIGFuIGVycm9yIHRvIHRlcm1pbmF0ZSByZXRyeSBsb2dpYy5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgdG8gbWFyayB0byB0ZXJtaW5hdGUgcmV0cnkgbG9naWMuXG4gKiBAcmV0dXJucyBBbiBlcnJvciB0aGF0IHNob3VsZCB0ZXJtaW5hdGUgcmV0cnkgbG9naWMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrc0FzVGVybWluYXRlUmV0cnk8VEVycm9yIGV4dGVuZHMgRXJyb3I+KGVycm9yOiBURXJyb3IpOiBUZXJtaW5hdGVSZXRyeSAmIFRFcnJvciB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKGVycm9yLCB7IF9fdGVybWluYXRlUmV0cnk6IHRydWUgfSkgYXMgVGVybWluYXRlUmV0cnkgJiBURXJyb3I7XG59XG5cbi8qKlxuICogUmV0cmllcyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gdW50aWwgaXQgcmV0dXJucyB0cnVlIG9yIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuXG4gKlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIHJldHJ5LlxuICogQHBhcmFtIHJldHJ5T3B0aW9ucyAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gY29uZmlndXJlIHRoZSByZXRyeSBiZWhhdmlvci5cbiAqIEBwYXJhbSBzdGFja1RyYWNlIC0gT3B0aW9uYWwgc3RhY2sgdHJhY2UuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgb3IgcmVqZWN0cyB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeVdpdGhUaW1lb3V0KGZuOiAoKSA9PiBQcm9taXNhYmxlPGJvb2xlYW4+LCByZXRyeU9wdGlvbnM/OiBSZXRyeU9wdGlvbnMsIHN0YWNrVHJhY2U/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmV0cnlXaXRoVGltZW91dERlYnVnZ2VyID0gZ2V0TGliRGVidWdnZXIoJ0FzeW5jOnJldHJ5V2l0aFRpbWVvdXQnKTtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgcmV0cnlEZWxheUluTWlsbGlzZWNvbmRzOiAxMDAsXG4gICAgc2hvdWxkUmV0cnlPbkVycm9yOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwMFxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5yZXRyeU9wdGlvbnMgfTtcbiAgYXdhaXQgcnVuV2l0aFRpbWVvdXQoZnVsbE9wdGlvbnMudGltZW91dEluTWlsbGlzZWNvbmRzLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGZ1bGxPcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgYXR0ZW1wdCsrO1xuICAgICAgbGV0IGlzU3VjY2VzczogYm9vbGVhbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlzU3VjY2VzcyA9IGF3YWl0IGZuKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoIWZ1bGxPcHRpb25zLnNob3VsZFJldHJ5T25FcnJvciB8fCAoZXJyb3IgYXMgUGFydGlhbDxUZXJtaW5hdGVSZXRyeT4pLl9fdGVybWluYXRlUmV0cnkpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBwcmludEVycm9yKGVycm9yKTtcbiAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNTdWNjZXNzKSB7XG4gICAgICAgIGlmIChhdHRlbXB0ID4gMSkge1xuICAgICAgICAgIHJldHJ5V2l0aFRpbWVvdXREZWJ1Z2dlcihgUmV0cnkgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhZnRlciAke2F0dGVtcHQudG9TdHJpbmcoKX0gYXR0ZW1wdHNgKTtcbiAgICAgICAgICByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIucHJpbnRTdGFja1RyYWNlKHN0YWNrVHJhY2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0cnlXaXRoVGltZW91dERlYnVnZ2VyKFxuICAgICAgICBgUmV0cnkgYXR0ZW1wdCAke2F0dGVtcHQudG9TdHJpbmcoKX0gY29tcGxldGVkIHVuc3VjY2Vzc2Z1bGx5LiBUcnlpbmcgYWdhaW4gaW4gJHtmdWxsT3B0aW9ucy5yZXRyeURlbGF5SW5NaWxsaXNlY29uZHMudG9TdHJpbmcoKX0gbWlsbGlzZWNvbmRzYCxcbiAgICAgICAge1xuICAgICAgICAgIGZuXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIucHJpbnRTdGFja1RyYWNlKHN0YWNrVHJhY2UpO1xuICAgICAgYXdhaXQgc2xlZXAoZnVsbE9wdGlvbnMucmV0cnlEZWxheUluTWlsbGlzZWNvbmRzKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgZnVuY3Rpb24gd2l0aCBhIHRpbWVvdXQuIElmIHRoZSBmdW5jdGlvbiBkb2VzIG5vdCBjb21wbGV0ZSB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lLCBpdCBpcyBjb25zaWRlcmVkIHRvIGhhdmUgdGltZWQgb3V0LlxuICpcbiAqIElmIGBERUJVRz1vYnNpZGlhbi1kZXYtdXRpbHM6QXN5bmM6cnVuV2l0aFRpbWVvdXRgIGlzIHNldCwgdGhlIGV4ZWN1dGlvbiBpcyBub3QgdGVybWluYXRlZCBhZnRlciB0aGUgdGltZW91dCBhbmQgdGhlIGZ1bmN0aW9uIGlzIGFsbG93ZWQgdG8gcnVuIGluZGVmaW5pdGVseS5cbiAqXG4gKiBAdHlwZVBhcmFtIFIgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSB0aW1lb3V0SW5NaWxsaXNlY29uZHMgLSBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBvciByZWplY3RzIGlmIGl0IHRpbWVzIG91dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhUaW1lb3V0PFI+KHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyLCBmbjogKCkgPT4gUHJvbWlzYWJsZTxSPik6IFByb21pc2U8Uj4ge1xuICBsZXQgaXNUaW1lZE91dCA9IHRydWU7XG4gIGxldCByZXN1bHQ6IFIgPSBudWxsIGFzIFI7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBhd2FpdCBQcm9taXNlLnJhY2UoW3J1bigpLCBpbm5lclRpbWVvdXQoKV0pO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICBpZiAoaXNUaW1lZE91dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGltZWQgb3V0Jyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcblxuICBhc3luYyBmdW5jdGlvbiBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICBpc1RpbWVkT3V0ID0gZmFsc2U7XG4gICAgY29uc3QgZHVyYXRpb24gPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICBnZXRMaWJEZWJ1Z2dlcignQXN5bmM6cnVuV2l0aFRpbWVvdXQnKShgRXhlY3V0aW9uIHRpbWU6ICR7ZHVyYXRpb24udG9TdHJpbmcoKX0gbWlsbGlzZWNvbmRzYCwgeyBmbiB9KTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGlubmVyVGltZW91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWlzVGltZWRPdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgc2xlZXAodGltZW91dEluTWlsbGlzZWNvbmRzKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgIGlmICghaXNUaW1lZE91dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgIGNvbnNvbGUud2FybihgVGltZWQgb3V0IGluICR7ZHVyYXRpb24udG9TdHJpbmcoKX0gbWlsbGlzZWNvbmRzYCwgeyBmbiB9KTtcbiAgICBjb25zdCBfZGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignQXN5bmM6cnVuV2l0aFRpbWVvdXQ6dGltZW91dCcpO1xuICAgIGlmIChfZGVidWdnZXIuZW5hYmxlZCkge1xuICAgICAgX2RlYnVnZ2VyKFxuICAgICAgICBgVGhlIGV4ZWN1dGlvbiBpcyBub3QgdGVybWluYXRlZCBiZWNhdXNlIGRlYnVnZ2VyICR7X2RlYnVnZ2VyLm5hbWVzcGFjZX0gaXMgZW5hYmxlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1kZXYtdXRpbHMvP3RhYj1yZWFkbWUtb3YtZmlsZSNkZWJ1Z2dpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb25gXG4gICAgICApO1xuICAgICAgYXdhaXQgaW5uZXJUaW1lb3V0KCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRGVsYXlzIGV4ZWN1dGlvbiBmb3IgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0gbWlsbGlzZWNvbmRzIC0gVGhlIHRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyBhZnRlciB0aGUgc3BlY2lmaWVkIGRlbGF5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2xlZXAobWlsbGlzZWNvbmRzOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KHJlc29sdmUsIG1pbGxpc2Vjb25kcyk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVqZWN0cyB3aGVuIHRoZSBhYm9ydCBzaWduYWwgaXMgYWJvcnRlZC5cbiAqXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlamVjdHMgd2hlbiB0aGUgYWJvcnQgc2lnbmFsIGlzIGFib3J0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd09uQWJvcnQoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmIChoYW5kbGVBYm9ydCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgaGFuZGxlQWJvcnQsIHsgb25jZTogdHJ1ZSB9KTtcblxuICAgIGZ1bmN0aW9uIGhhbmRsZUFib3J0KCk6IGJvb2xlYW4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSBhcyBFcnJvcik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIFByb21pc2UgdGhhdCByZWplY3RzIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dCBwZXJpb2QuXG4gKlxuICogQHBhcmFtIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyAtIFRoZSB0aW1lb3V0IHBlcmlvZCBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCBhbHdheXMgcmVqZWN0cyB3aXRoIGEgdGltZW91dCBlcnJvci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRpbWVvdXQodGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXIpOiBQcm9taXNlPG5ldmVyPiB7XG4gIGF3YWl0IHNsZWVwKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyk7XG4gIHRocm93IG5ldyBFcnJvcihgVGltZWQgb3V0IGluICR7dGltZW91dEluTWlsbGlzZWNvbmRzLnRvU3RyaW5nKCl9IG1pbGxpc2Vjb25kc2ApO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIEFzeW5jSXRlcmFibGVJdGVyYXRvciB0byBhbiBhcnJheSBieSBjb25zdW1pbmcgYWxsIGl0cyBlbGVtZW50cy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBwcm9kdWNlZCBieSB0aGUgQXN5bmNJdGVyYWJsZUl0ZXJhdG9yLlxuICogQHBhcmFtIGl0ZXIgLSBUaGUgQXN5bmNJdGVyYWJsZUl0ZXJhdG9yIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIEFzeW5jSXRlcmFibGVJdGVyYXRvci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRvQXJyYXk8VD4oaXRlcjogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFQ+KTogUHJvbWlzZTxUW10+IHtcbiAgY29uc3QgYXJyOiBUW10gPSBbXTtcbiAgZm9yIGF3YWl0IChjb25zdCBpdGVtIG9mIGl0ZXIpIHtcbiAgICBhcnIucHVzaChpdGVtKTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT0EsbUJBQStCO0FBQy9CLG1CQUtPO0FBbURQLGVBQXNCLGdCQUFnQixTQUFnRDtBQUNwRixRQUFNLG9CQUFvQixJQUFJLE1BQU0sd0NBQTJCO0FBQy9ELE1BQUk7QUFDRixVQUFNLFFBQVE7QUFBQSxFQUNoQixTQUFTLFlBQVk7QUFDbkIsc0JBQWtCLFFBQVE7QUFDMUIsMENBQW9CLGlCQUFpQjtBQUFBLEVBQ3ZDO0FBQ0Y7QUFVQSxlQUFzQixZQUFlLEtBQVUsV0FBdUY7QUFDcEksUUFBTSxtQkFBbUIsTUFBTSxTQUFTLEtBQUssU0FBUztBQUN0RCxTQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsVUFBVSxpQkFBaUIs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
221
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0FzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBhc3luY2hyb25vdXMgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4vRGVidWcudHMnO1xuaW1wb3J0IHtcbiAgQVNZTkNfRVJST1JfV1JBUFBFUl9NRVNTQUdFLFxuICBlbWl0QXN5bmNFcnJvckV2ZW50LFxuICBnZXRTdGFja1RyYWNlLFxuICBwcmludEVycm9yXG59IGZyb20gJy4vRXJyb3IudHMnO1xuXG4vKipcbiAqIEEgdHlwZSByZXByZXNlbnRpbmcgYSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIGEge0BsaW5rIFByb21pc2V9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc29sdmU8VD4gPSB1bmRlZmluZWQgZXh0ZW5kcyBUID8gKHZhbHVlPzogUHJvbWlzZUxpa2U8VD4gfCBUKSA9PiB2b2lkXG4gIDogKHZhbHVlOiBQcm9taXNlTGlrZTxUPiB8IFQpID0+IHZvaWQ7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIHJldHJ5IGJlaGF2aW9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIHRvIGNhbmNlbCB0aGUgcmV0cnkgb3BlcmF0aW9uLlxuICAgKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogVGhlIGRlbGF5IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHJldHJ5IGF0dGVtcHRzLlxuICAgKi9cbiAgcmV0cnlEZWxheUluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHJ5IHRoZSBmdW5jdGlvbiBvbiBlcnJvci5cbiAgICovXG4gIHNob3VsZFJldHJ5T25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGdpdmluZyB1cCBvbiByZXRyeWluZy5cbiAgICovXG4gIHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIG1hcmtlciBpbnRlcmZhY2UgdG8gaW5kaWNhdGUgdGhhdCBhbiBlcnJvciBzaG91bGQgdGVybWluYXRlIHJldHJ5IGxvZ2ljLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlcm1pbmF0ZVJldHJ5IHtcbiAgLyoqXG4gICAqIEEgbWFya2VyIHByb3BlcnR5IHRvIGluZGljYXRlIHRoYXQgYW4gZXJyb3Igc2hvdWxkIHRlcm1pbmF0ZSByZXRyeSBsb2dpYy5cbiAgICovXG4gIF9fdGVybWluYXRlUmV0cnk6IHRydWU7XG59XG5cbi8qKlxuICogQWRkcyBhbiBlcnJvciBoYW5kbGVyIHRvIGEge0BsaW5rIFByb21pc2V9IHRoYXQgY2F0Y2hlcyBhbnkgZXJyb3JzIGFuZCBlbWl0cyBhbiBhc3luYyBlcnJvciBldmVudC5cbiAqXG4gKiBAcGFyYW0gYXN5bmNGbiAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gYWRkIGFuIGVycm9yIGhhbmRsZXIgdG8uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBjb21wbGV0ZXMgb3IgZW1pdHMgYXN5bmMgZXJyb3IgZXZlbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRFcnJvckhhbmRsZXIoYXN5bmNGbjogKCkgPT4gUHJvbWlzZTx1bmtub3duPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBhc3luY0Vycm9yV3JhcHBlciA9IG5ldyBFcnJvcihBU1lOQ19FUlJPUl9XUkFQUEVSX01FU1NBR0UpO1xuICB0cnkge1xuICAgIGF3YWl0IGFzeW5jRm4oKTtcbiAgfSBjYXRjaCAoYXN5bmNFcnJvcikge1xuICAgIGFzeW5jRXJyb3JXcmFwcGVyLmNhdXNlID0gYXN5bmNFcnJvcjtcbiAgICBlbWl0QXN5bmNFcnJvckV2ZW50KGFzeW5jRXJyb3JXcmFwcGVyKTtcbiAgfVxufVxuXG4vKipcbiAqIEZpbHRlcnMgYW4gYXJyYXkgYXN5bmNocm9ub3VzbHksIGtlZXBpbmcgb25seSB0aGUgZWxlbWVudHMgdGhhdCBzYXRpc2Z5IHRoZSBwcm92aWRlZCBwcmVkaWNhdGUgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgaW4gdGhlIGlucHV0IGFycmF5LlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byBmaWx0ZXIuXG4gKiBAcGFyYW0gcHJlZGljYXRlIC0gVGhlIHByZWRpY2F0ZSBmdW5jdGlvbiB0byB0ZXN0IGVhY2ggZWxlbWVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBhcnJheSBvZiBlbGVtZW50cyB0aGF0IHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRmlsdGVyPFQ+KGFycjogVFtdLCBwcmVkaWNhdGU6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gUHJvbWlzYWJsZTxib29sZWFuPik6IFByb21pc2U8VFtdPiB7XG4gIGNvbnN0IHByZWRpY2F0ZVJlc3VsdHMgPSBhd2FpdCBhc3luY01hcChhcnIsIHByZWRpY2F0ZSk7XG4gIHJldHVybiBhcnIuZmlsdGVyKChfLCBpbmRleCkgPT4gcHJlZGljYXRlUmVzdWx0c1tpbmRleF0gPz8gZmFsc2UpO1xufVxuXG4vKipcbiAqIE1hcHMgb3ZlciBhbiBhcnJheSBhc3luY2hyb25vdXNseSwgYXBwbHlpbmcgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGVhY2ggZWxlbWVudCwgYW5kIHRoZW4gZmxhdHRlbnMgdGhlIHJlc3VsdHMgaW50byBhIHNpbmdsZSBhcnJheS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAdHlwZVBhcmFtIFUgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgb3V0cHV0IGFycmF5LlxuICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSB0byBtYXAgb3ZlciBhbmQgZmxhdHRlbi5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYSBmbGF0dGVuZWQgYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNGbGF0TWFwPFQsIFU+KGFycjogVFtdLCBjYWxsYmFjazogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBQcm9taXNhYmxlPFVbXT4pOiBQcm9taXNlPFVbXT4ge1xuICByZXR1cm4gKGF3YWl0IGFzeW5jTWFwKGFyciwgY2FsbGJhY2spKS5mbGF0KCk7XG59XG5cbi8qKlxuICogTWFwcyBvdmVyIGFuIGFycmF5IGFzeW5jaHJvbm91c2x5LCBhcHBseWluZyB0aGUgcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZWFjaCBlbGVtZW50LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheS5cbiAqIEB0eXBlUGFyYW0gVSAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBvdXRwdXQgYXJyYXkuXG4gKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IHRvIG1hcCBvdmVyLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggZWxlbWVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY01hcDxULCBVPihhcnI6IFRbXSwgY2FsbGJhY2s6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gUHJvbWlzYWJsZTxVPik6IFByb21pc2U8VVtdPiB7XG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChhcnIubWFwKGNhbGxiYWNrKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGEgc3luY2hyb25vdXMgb25lIGJ5IGF1dG9tYXRpY2FsbHkgaGFuZGxpbmcgdGhlIFByb21pc2UgcmVqZWN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRzIHRoZSBmdW5jdGlvbiBhY2NlcHRzLlxuICogQHBhcmFtIGFzeW5jRnVuYyAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCB3cmFwcyB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGEgc3luY2hyb25vdXMgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEFzeW5jVG9TeW5jPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KGFzeW5jRnVuYzogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8dW5rbm93bj4pOiAoLi4uYXJnczogQXJncykgPT4gdm9pZCB7XG4gIHJldHVybiAoLi4uYXJnczogQXJncyk6IHZvaWQgPT4ge1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IGFzeW5jRnVuYyguLi5hcmdzKSk7XG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBhbiBhc3luY2hyb25vdXMgb25lIGJ5IHdyYXBwaW5nIGl0IGluIGEge0BsaW5rIFByb21pc2V9LlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRzIHRoZSBmdW5jdGlvbiBhY2NlcHRzLlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUuXG4gKiBAcGFyYW0gc3luY0ZuIC0gVGhlIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgd3JhcHMgdGhlIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGFuIGFzeW5jaHJvbm91cyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U3luY1RvQXN5bmM8QXJncyBleHRlbmRzIHVua25vd25bXSwgUmVzdWx0PihzeW5jRm46ICguLi5hcmdzOiBBcmdzKSA9PiBSZXN1bHQpOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuICguLi5hcmdzOiBBcmdzKTogUHJvbWlzZTxSZXN1bHQ+ID0+IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gc3luY0ZuKC4uLmFyZ3MpKTtcbn1cblxuLyoqXG4gKiBJZ25vcmVzIGFuIGVycm9yIHRoYXQgaXMgdGhyb3duIGJ5IGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIGlnbm9yZSB0aGUgZXJyb3Igb2YuXG4gKiBAcGFyYW0gZmFsbGJhY2tWYWx1ZSAtIEFsd2F5cyBgdW5kZWZpbmVkYC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGNvbXBsZXRlcyBvciBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlnbm9yZUVycm9yKHByb21pc2U6IFByb21pc2U8dW5rbm93bj4sIGZhbGxiYWNrVmFsdWU/OiB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+O1xuXG4vKipcbiAqIEludm9rZXMgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGFuZCByZXR1cm5zIGEgZmFsbGJhY2sgdmFsdWUgaWYgYW4gZXJyb3IgaXMgdGhyb3duLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uLlxuICogQHBhcmFtIHByb21pc2UgLSBUaGUgcHJvbWlzZSB0byBpZ25vcmUgdGhlIGVycm9yIG9mLlxuICogQHBhcmFtIGZhbGxiYWNrVmFsdWUgLSBUaGUgdmFsdWUgdG8gcmV0dXJuIGlmIGFuIGVycm9yIGlzIHRocm93bi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBvciB0aGUgZmFsbGJhY2sgdmFsdWUgaWYgYW4gZXJyb3IgaXMgdGhyb3duLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaWdub3JlRXJyb3I8VD4ocHJvbWlzZTogUHJvbWlzZTxUPiwgZmFsbGJhY2tWYWx1ZTogVCk6IFByb21pc2U8VD4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBwcm9taXNlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZXMgYSB7QGxpbmsgUHJvbWlzZX0gYW5kIHNhZmVseSBoYW5kbGVzIGFueSBlcnJvcnMgYnkgY2F0Y2hpbmcgdGhlbSBhbmQgZW1pdHRpbmcgYW4gYXN5bmMgZXJyb3IgZXZlbnQuXG4gKlxuICogQHBhcmFtIGFzeW5jRm4gLSBUaGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGludm9rZSBzYWZlbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VBc3luY1NhZmVseShhc3luY0ZuOiAoKSA9PiBQcm9taXNlPHVua25vd24+KTogdm9pZCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12b2lkXG4gIHZvaWQgYWRkRXJyb3JIYW5kbGVyKGFzeW5jRm4pO1xufVxuXG4vKipcbiAqIEludm9rZXMgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGFmdGVyIGEgZGVsYXkuXG4gKlxuICogQHBhcmFtIGFzeW5jRm4gLSBUaGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSBkZWxheUluTXMgLSBUaGUgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5KGFzeW5jRm46ICgpID0+IFByb21pc2FibGU8dW5rbm93bj4sIGRlbGF5SW5NcyA9IDApOiB2b2lkIHtcbiAgc2V0VGltZW91dChjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCkgPT4gYXdhaXQgYXN5bmNGbigpKSwgZGVsYXlJbk1zKTtcbn1cblxuLyoqXG4gKiBNYXJrcyBhbiBlcnJvciB0byB0ZXJtaW5hdGUgcmV0cnkgbG9naWMuXG4gKlxuICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIHRvIG1hcmsgdG8gdGVybWluYXRlIHJldHJ5IGxvZ2ljLlxuICogQHJldHVybnMgQW4gZXJyb3IgdGhhdCBzaG91bGQgdGVybWluYXRlIHJldHJ5IGxvZ2ljLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya3NBc1Rlcm1pbmF0ZVJldHJ5PFRFcnJvciBleHRlbmRzIEVycm9yPihlcnJvcjogVEVycm9yKTogVGVybWluYXRlUmV0cnkgJiBURXJyb3Ige1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihlcnJvciwgeyBfX3Rlcm1pbmF0ZVJldHJ5OiB0cnVlIH0pIGFzIFRlcm1pbmF0ZVJldHJ5ICYgVEVycm9yO1xufVxuXG4vKipcbiAqIFJldHJpZXMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHVudGlsIGl0IHJldHVybnMgdHJ1ZSBvciB0aGUgdGltZW91dCBpcyByZWFjaGVkLlxuICpcbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byByZXRyeS5cbiAqIEBwYXJhbSByZXRyeU9wdGlvbnMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGNvbmZpZ3VyZSB0aGUgcmV0cnkgYmVoYXZpb3IuXG4gKiBAcGFyYW0gc3RhY2tUcmFjZSAtIE9wdGlvbmFsIHN0YWNrIHRyYWNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgb3IgcmVqZWN0cyB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeVdpdGhUaW1lb3V0KGZuOiAoKSA9PiBQcm9taXNhYmxlPGJvb2xlYW4+LCByZXRyeU9wdGlvbnM/OiBSZXRyeU9wdGlvbnMsIHN0YWNrVHJhY2U/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmV0cnlXaXRoVGltZW91dERlYnVnZ2VyID0gZ2V0TGliRGVidWdnZXIoJ0FzeW5jOnJldHJ5V2l0aFRpbWVvdXQnKTtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TID0ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgcmV0cnlEZWxheUluTWlsbGlzZWNvbmRzOiAxMDAsXG4gICAgc2hvdWxkUmV0cnlPbkVycm9yOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwMFxuICB9O1xuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5yZXRyeU9wdGlvbnMgfTtcbiAgYXdhaXQgcnVuV2l0aFRpbWVvdXQoZnVsbE9wdGlvbnMudGltZW91dEluTWlsbGlzZWNvbmRzLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGZ1bGxPcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgYXR0ZW1wdCsrO1xuICAgICAgbGV0IGlzU3VjY2VzczogYm9vbGVhbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlzU3VjY2VzcyA9IGF3YWl0IGZuKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoIWZ1bGxPcHRpb25zLnNob3VsZFJldHJ5T25FcnJvciB8fCAoZXJyb3IgYXMgUGFydGlhbDxUZXJtaW5hdGVSZXRyeT4pLl9fdGVybWluYXRlUmV0cnkpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBwcmludEVycm9yKGVycm9yKTtcbiAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNTdWNjZXNzKSB7XG4gICAgICAgIGlmIChhdHRlbXB0ID4gMSkge1xuICAgICAgICAgIHJldHJ5V2l0aFRpbWVvdXREZWJ1Z2dlcihgUmV0cnkgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhZnRlciAke2F0dGVtcHQudG9TdHJpbmcoKX0gYXR0ZW1wdHNgKTtcbiAgICAgICAgICByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIucHJpbnRTdGFja1RyYWNlKHN0YWNrVHJhY2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0cnlXaXRoVGltZW91dERlYnVnZ2VyKFxuICAgICAgICBgUmV0cnkgYXR0ZW1wdCAke2F0dGVtcHQudG9TdHJpbmcoKX0gY29tcGxldGVkIHVuc3VjY2Vzc2Z1bGx5LiBUcnlpbmcgYWdhaW4gaW4gJHtmdWxsT3B0aW9ucy5yZXRyeURlbGF5SW5NaWxsaXNlY29uZHMudG9TdHJpbmcoKX0gbWlsbGlzZWNvbmRzYCxcbiAgICAgICAge1xuICAgICAgICAgIGZuXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIucHJpbnRTdGFja1RyYWNlKHN0YWNrVHJhY2UpO1xuICAgICAgYXdhaXQgc2xlZXAoZnVsbE9wdGlvbnMucmV0cnlEZWxheUluTWlsbGlzZWNvbmRzKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgZnVuY3Rpb24gd2l0aCBhIHRpbWVvdXQuIElmIHRoZSBmdW5jdGlvbiBkb2VzIG5vdCBjb21wbGV0ZSB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lLCBpdCBpcyBjb25zaWRlcmVkIHRvIGhhdmUgdGltZWQgb3V0LlxuICpcbiAqIElmIGBERUJVRz1vYnNpZGlhbi1kZXYtdXRpbHM6QXN5bmM6cnVuV2l0aFRpbWVvdXRgIGlzIHNldCwgdGhlIGV4ZWN1dGlvbiBpcyBub3QgdGVybWluYXRlZCBhZnRlciB0aGUgdGltZW91dCBhbmQgdGhlIGZ1bmN0aW9uIGlzIGFsbG93ZWQgdG8gcnVuIGluZGVmaW5pdGVseS5cbiAqXG4gKiBAdHlwZVBhcmFtIFIgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSB0aW1lb3V0SW5NaWxsaXNlY29uZHMgLSBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIG9yIHJlamVjdHMgaWYgaXQgdGltZXMgb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aFRpbWVvdXQ8Uj4odGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXIsIGZuOiAoKSA9PiBQcm9taXNhYmxlPFI+KTogUHJvbWlzZTxSPiB7XG4gIGxldCBpc1RpbWVkT3V0ID0gdHJ1ZTtcbiAgbGV0IHJlc3VsdDogUiA9IG51bGwgYXMgUjtcbiAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gIGF3YWl0IFByb21pc2UucmFjZShbcnVuKCksIGlubmVyVGltZW91dCgpXSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gIGlmIChpc1RpbWVkT3V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaW1lZCBvdXQnKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXN1bHQgPSBhd2FpdCBmbigpO1xuICAgIGlzVGltZWRPdXQgPSBmYWxzZTtcbiAgICBjb25zdCBkdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgIGdldExpYkRlYnVnZ2VyKCdBc3luYzpydW5XaXRoVGltZW91dCcpKGBFeGVjdXRpb24gdGltZTogJHtkdXJhdGlvbi50b1N0cmluZygpfSBtaWxsaXNlY29uZHNgLCB7IGZuIH0pO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gaW5uZXJUaW1lb3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghaXNUaW1lZE91dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBzbGVlcCh0aW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgaWYgKCFpc1RpbWVkT3V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGR1cmF0aW9uID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWU7XG4gICAgY29uc29sZS53YXJuKGBUaW1lZCBvdXQgaW4gJHtkdXJhdGlvbi50b1N0cmluZygpfSBtaWxsaXNlY29uZHNgLCB7IGZuIH0pO1xuICAgIGNvbnN0IF9kZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdBc3luYzpydW5XaXRoVGltZW91dDp0aW1lb3V0Jyk7XG4gICAgaWYgKF9kZWJ1Z2dlci5lbmFibGVkKSB7XG4gICAgICBfZGVidWdnZXIoXG4gICAgICAgIGBUaGUgZXhlY3V0aW9uIGlzIG5vdCB0ZXJtaW5hdGVkIGJlY2F1c2UgZGVidWdnZXIgJHtfZGVidWdnZXIubmFtZXNwYWNlfSBpcyBlbmFibGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy8/dGFiPXJlYWRtZS1vdi1maWxlI2RlYnVnZ2luZyBmb3IgbW9yZSBpbmZvcm1hdGlvbmBcbiAgICAgICk7XG4gICAgICBhd2FpdCBpbm5lclRpbWVvdXQoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEZWxheXMgZXhlY3V0aW9uIGZvciBhIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSBtaWxsaXNlY29uZHMgLSBUaGUgdGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBkZWxheS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1pbGxpc2Vjb25kczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgc2V0VGltZW91dChyZXNvbHZlLCBtaWxsaXNlY29uZHMpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVqZWN0cyB3aGVuIHRoZSBhYm9ydCBzaWduYWwgaXMgYWJvcnRlZC5cbiAqXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVqZWN0cyB3aGVuIHRoZSBhYm9ydCBzaWduYWwgaXMgYWJvcnRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm93T25BYm9ydChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChfcmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKGhhbmRsZUFib3J0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBoYW5kbGVBYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlQWJvcnQoKTogYm9vbGVhbiB7XG4gICAgICB0cnkge1xuICAgICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlIGFzIEVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVqZWN0cyBhZnRlciB0aGUgc3BlY2lmaWVkIHRpbWVvdXQgcGVyaW9kLlxuICpcbiAqIEBwYXJhbSB0aW1lb3V0SW5NaWxsaXNlY29uZHMgLSBUaGUgdGltZW91dCBwZXJpb2QgaW4gbWlsbGlzZWNvbmRzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCBhbHdheXMgcmVqZWN0cyB3aXRoIGEgdGltZW91dCBlcnJvci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRpbWVvdXQodGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXIpOiBQcm9taXNlPG5ldmVyPiB7XG4gIGF3YWl0IHNsZWVwKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyk7XG4gIHRocm93IG5ldyBFcnJvcihgVGltZWQgb3V0IGluICR7dGltZW91dEluTWlsbGlzZWNvbmRzLnRvU3RyaW5nKCl9IG1pbGxpc2Vjb25kc2ApO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIEFzeW5jSXRlcmFibGVJdGVyYXRvciB0byBhbiBhcnJheSBieSBjb25zdW1pbmcgYWxsIGl0cyBlbGVtZW50cy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBwcm9kdWNlZCBieSB0aGUgQXN5bmNJdGVyYWJsZUl0ZXJhdG9yLlxuICogQHBhcmFtIGl0ZXIgLSBUaGUgQXN5bmNJdGVyYWJsZUl0ZXJhdG9yIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGUgQXN5bmNJdGVyYWJsZUl0ZXJhdG9yLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9BcnJheTxUPihpdGVyOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8VD4pOiBQcm9taXNlPFRbXT4ge1xuICBjb25zdCBhcnI6IFRbXSA9IFtdO1xuICBmb3IgYXdhaXQgKGNvbnN0IGl0ZW0gb2YgaXRlcikge1xuICAgIGFyci5wdXNoKGl0ZW0pO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLG1CQUErQjtBQUMvQixtQkFLTztBQW1EUCxlQUFzQixnQkFBZ0IsU0FBZ0Q7QUFDcEYsUUFBTSxvQkFBb0IsSUFBSSxNQUFNLHdDQUEyQjtBQUMvRCxNQUFJO0FBQ0YsVUFBTSxRQUFRO0FBQUEsRUFDaEIsU0FBUyxZQUFZO0FBQ25CLHNCQUFrQixRQUFRO0FBQzFCLDBDQUFvQixpQkFBaUI7QUFBQSxFQUN2QztBQUNGO0FBVUEsZUFBc0IsWUFBZSxLQUFVLFdBQXVGO0FBQ3BJLFFBQU0sbUJBQW1CLE1BQU0sU0FBUyxLQUFLLFNBQVM7QUFDdEQsU0FBTyxJQUFJLE9BQU8sQ0FBQyxHQUFHLFVBQVUsaUJBQWlCLEtBQUssS0FBSyxLQUFLO0FBQ2xFO0FBV0EsZUFBc0IsYUFBbUIsS0FBVSxVQUFrRjtBQUNuSSxVQUFRLE1BQU0sU0FBUyxLQUFLLFFBQVEsR0FBRyxLQUFLO0FBQzlDO0FBV0EsZUFBc0IsU0FBZSxLQUFVLFVBQWdGO0FBQzdILFNBQU8sTUFBTSxRQUFRLElBQUksSUFBSSxJQUFJLFFBQVEsQ0FBQztBQUM1QztBQVNPLFNBQVMsbUJBQTJDLFdBQXlFO0FBQ2xJLFNBQU8sSUFBSSxTQUFxQjtBQUM5QixzQkFBa0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQUEsRUFDNUM7QUFDRjtBQVVPLFNBQVMsbUJBQW1ELFFBQXVFO0FBQ3hJLFNBQU8sSUFBSSxTQUFnQyxRQUFRLFFBQVEsRUFBRSxLQUFLLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQztBQUN6RjtBQW1CQSxlQUFzQixZQUFlLFNBQXFCLGVB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
@@ -1,10 +1,11 @@
1
1
  /**
2
- * @packageDocumentation Async
2
+ * @packageDocumentation
3
+ *
3
4
  * Contains utility functions for asynchronous operations.
4
5
  */
5
6
  import type { Promisable } from 'type-fest';
6
7
  /**
7
- * A type representing a function that resolves a Promise.
8
+ * A type representing a function that resolves a {@link Promise}.
8
9
  *
9
10
  * @typeParam T - The type of the value.
10
11
  */
@@ -40,10 +41,10 @@ export interface TerminateRetry {
40
41
  __terminateRetry: true;
41
42
  }
42
43
  /**
43
- * Adds an error handler to a Promise that catches any errors and emits an async error event.
44
+ * Adds an error handler to a {@link Promise} that catches any errors and emits an async error event.
44
45
  *
45
46
  * @param asyncFn - The asynchronous function to add an error handler to.
46
- * @returns A Promise that resolves when the asynchronous function completes or emits async error event.
47
+ * @returns A {@link Promise} that resolves when the asynchronous function completes or emits async error event.
47
48
  */
48
49
  export declare function addErrorHandler(asyncFn: () => Promise<unknown>): Promise<void>;
49
50
  /**
@@ -52,7 +53,7 @@ export declare function addErrorHandler(asyncFn: () => Promise<unknown>): Promis
52
53
  * @typeParam T - The type of elements in the input array.
53
54
  * @param arr - The array to filter.
54
55
  * @param predicate - The predicate function to test each element.
55
- * @returns A Promise that resolves with an array of elements that satisfy the predicate function.
56
+ * @returns A {@link Promise} that resolves with an array of elements that satisfy the predicate function.
56
57
  */
57
58
  export declare function asyncFilter<T>(arr: T[], predicate: (value: T, index: number, array: T[]) => Promisable<boolean>): Promise<T[]>;
58
59
  /**
@@ -62,7 +63,7 @@ export declare function asyncFilter<T>(arr: T[], predicate: (value: T, index: nu
62
63
  * @typeParam U - The type of elements in the output array.
63
64
  * @param arr - The array to map over and flatten.
64
65
  * @param callback - The callback function to apply to each element.
65
- * @returns A Promise that resolves with a flattened array of the results of the callback function.
66
+ * @returns A {@link Promise} that resolves with a flattened array of the results of the callback function.
66
67
  */
67
68
  export declare function asyncFlatMap<T, U>(arr: T[], callback: (value: T, index: number, array: T[]) => Promisable<U[]>): Promise<U[]>;
68
69
  /**
@@ -72,7 +73,7 @@ export declare function asyncFlatMap<T, U>(arr: T[], callback: (value: T, index:
72
73
  * @typeParam U - The type of elements in the output array.
73
74
  * @param arr - The array to map over.
74
75
  * @param callback - The callback function to apply to each element.
75
- * @returns A Promise that resolves with an array of the results of the callback function.
76
+ * @returns A {@link Promise} that resolves with an array of the results of the callback function.
76
77
  */
77
78
  export declare function asyncMap<T, U>(arr: T[], callback: (value: T, index: number, array: T[]) => Promisable<U>): Promise<U[]>;
78
79
  /**
@@ -84,7 +85,7 @@ export declare function asyncMap<T, U>(arr: T[], callback: (value: T, index: num
84
85
  */
85
86
  export declare function convertAsyncToSync<Args extends unknown[]>(asyncFunc: (...args: Args) => Promise<unknown>): (...args: Args) => void;
86
87
  /**
87
- * Converts a synchronous function to an asynchronous one by wrapping it in a Promise.
88
+ * Converts a synchronous function to an asynchronous one by wrapping it in a {@link Promise}.
88
89
  *
89
90
  * @typeParam Args - The types of the arguments the function accepts.
90
91
  * @typeParam Result - The type of the function's return value.
@@ -97,15 +98,22 @@ export declare function convertSyncToAsync<Args extends unknown[], Result>(syncF
97
98
  *
98
99
  * @param promise - The promise to ignore the error of.
99
100
  * @param fallbackValue - Always `undefined`.
100
- * @returns A Promise that resolves when the asynchronous function completes or fails.
101
+ * @returns A {@link Promise} that resolves when the asynchronous function completes or fails.
101
102
  */
102
103
  export declare function ignoreError(promise: Promise<unknown>, fallbackValue?: undefined): Promise<void>;
103
104
  /**
104
- * Invokes a Promise and safely handles any errors by catching them and emitting an async error event.
105
+ * Invokes a {@link Promise} and safely handles any errors by catching them and emitting an async error event.
105
106
  *
106
107
  * @param asyncFn - The asynchronous function to invoke safely.
107
108
  */
108
109
  export declare function invokeAsyncSafely(asyncFn: () => Promise<unknown>): void;
110
+ /**
111
+ * Invokes an asynchronous function after a delay.
112
+ *
113
+ * @param asyncFn - The asynchronous function to invoke.
114
+ * @param delayInMs - The delay in milliseconds.
115
+ */
116
+ export declare function invokeAsyncSafelyAfterDelay(asyncFn: () => Promisable<unknown>, delayInMs?: number): void;
109
117
  /**
110
118
  * Marks an error to terminate retry logic.
111
119
  *
@@ -119,7 +127,7 @@ export declare function marksAsTerminateRetry<TError extends Error>(error: TErro
119
127
  * @param fn - The function to retry.
120
128
  * @param retryOptions - Optional parameters to configure the retry behavior.
121
129
  * @param stackTrace - Optional stack trace.
122
- * @returns A Promise that resolves when the function returns true or rejects when the timeout is reached.
130
+ * @returns A {@link Promise} that resolves when the function returns true or rejects when the timeout is reached.
123
131
  */
124
132
  export declare function retryWithTimeout(fn: () => Promisable<boolean>, retryOptions?: RetryOptions, stackTrace?: string): Promise<void>;
125
133
  /**
@@ -130,28 +138,28 @@ export declare function retryWithTimeout(fn: () => Promisable<boolean>, retryOpt
130
138
  * @typeParam R - The type of the result from the asynchronous function.
131
139
  * @param timeoutInMilliseconds - The maximum time to wait in milliseconds.
132
140
  * @param fn - The function to execute.
133
- * @returns A Promise that resolves with the result of the asynchronous function or rejects if it times out.
141
+ * @returns A {@link Promise} that resolves with the result of the asynchronous function or rejects if it times out.
134
142
  */
135
143
  export declare function runWithTimeout<R>(timeoutInMilliseconds: number, fn: () => Promisable<R>): Promise<R>;
136
144
  /**
137
145
  * Delays execution for a specified number of milliseconds.
138
146
  *
139
147
  * @param milliseconds - The time to wait in milliseconds.
140
- * @returns A Promise that resolves after the specified delay.
148
+ * @returns A {@link Promise} that resolves after the specified delay.
141
149
  */
142
150
  export declare function sleep(milliseconds: number): Promise<void>;
143
151
  /**
144
- * Returns a Promise that rejects when the abort signal is aborted.
152
+ * Returns a {@link Promise} that rejects when the abort signal is aborted.
145
153
  *
146
154
  * @param abortSignal - The abort signal to listen to.
147
- * @returns A Promise that rejects when the abort signal is aborted.
155
+ * @returns A {@link Promise} that rejects when the abort signal is aborted.
148
156
  */
149
157
  export declare function throwOnAbort(abortSignal: AbortSignal): Promise<void>;
150
158
  /**
151
- * Returns a Promise that rejects after the specified timeout period.
159
+ * Returns a {@link Promise} that rejects after the specified timeout period.
152
160
  *
153
161
  * @param timeoutInMilliseconds - The timeout period in milliseconds.
154
- * @returns A Promise that always rejects with a timeout error.
162
+ * @returns A {@link Promise} that always rejects with a timeout error.
155
163
  */
156
164
  export declare function timeout(timeoutInMilliseconds: number): Promise<never>;
157
165
  /**
@@ -159,6 +167,6 @@ export declare function timeout(timeoutInMilliseconds: number): Promise<never>;
159
167
  *
160
168
  * @typeParam T - The type of elements produced by the AsyncIterableIterator.
161
169
  * @param iter - The AsyncIterableIterator to convert.
162
- * @returns A Promise that resolves with an array of all the elements in the AsyncIterableIterator.
170
+ * @returns A {@link Promise} that resolves with an array of all the elements in the AsyncIterableIterator.
163
171
  */
164
172
  export declare function toArray<T>(iter: AsyncIterableIterator<T>): Promise<T[]>;