obsidian-dev-utils 88.7.0 → 89.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 (679) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/demo-vault-helper/main.js +20 -23
  3. package/dist/integration-test-plugin/main.js +2218 -1734
  4. package/dist/lib/cjs/__merged.cjs +57 -35
  5. package/dist/lib/cjs/__merged.d.cts +12 -10
  6. package/dist/lib/cjs/abort-controller.cjs +15 -22
  7. package/dist/lib/cjs/array.cjs +27 -26
  8. package/dist/lib/cjs/array.d.cts +25 -7
  9. package/dist/lib/cjs/async-events.cjs +87 -91
  10. package/dist/lib/cjs/async-events.d.cts +50 -50
  11. package/dist/lib/cjs/async.cjs +80 -80
  12. package/dist/lib/cjs/async.d.cts +23 -23
  13. package/dist/lib/cjs/beeper.cjs +11 -15
  14. package/dist/lib/cjs/blob.cjs +14 -25
  15. package/dist/lib/cjs/codemirror/index.cjs +11 -15
  16. package/dist/lib/cjs/codemirror/state-field-spec.cjs +11 -15
  17. package/dist/lib/cjs/debug-controller.cjs +11 -15
  18. package/dist/lib/cjs/debug.cjs +24 -32
  19. package/dist/lib/cjs/debug.d.cts +1 -1
  20. package/dist/lib/cjs/disposable.cjs +59 -43
  21. package/dist/lib/cjs/disposable.d.cts +27 -8
  22. package/dist/lib/cjs/enum.cjs +11 -15
  23. package/dist/lib/cjs/error.cjs +28 -33
  24. package/dist/lib/cjs/function.cjs +30 -34
  25. package/dist/lib/cjs/function.d.cts +26 -26
  26. package/dist/lib/cjs/generated-during-build.cjs +12 -16
  27. package/dist/lib/cjs/html-element.cjs +84 -89
  28. package/dist/lib/cjs/html-element.d.cts +15 -15
  29. package/dist/lib/cjs/index.cjs +11 -15
  30. package/dist/lib/cjs/integration-test-setup.cjs +11 -15
  31. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +11 -15
  32. package/dist/lib/cjs/jest-setup.cjs +11 -15
  33. package/dist/lib/cjs/library.cjs +11 -15
  34. package/dist/lib/cjs/object-utils.cjs +120 -117
  35. package/dist/lib/cjs/object-utils.d.cts +27 -27
  36. package/dist/lib/cjs/obsidian/@types/dataview/data-model/value.d.cts +1 -1
  37. package/dist/lib/cjs/obsidian/@types/dataview/expression/field.d.cts +1 -1
  38. package/dist/lib/cjs/obsidian/@types/dataview/expression/functions.d.cts +4 -4
  39. package/dist/lib/cjs/obsidian/active-file-provider.cjs +11 -15
  40. package/dist/lib/cjs/obsidian/app.cjs +11 -15
  41. package/dist/lib/cjs/obsidian/async-with-notice.cjs +28 -32
  42. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +2 -2
  43. package/dist/lib/cjs/obsidian/attachment-path.cjs +20 -24
  44. package/dist/lib/cjs/obsidian/attachment-path.d.cts +5 -5
  45. package/dist/lib/cjs/obsidian/backlink.cjs +12 -16
  46. package/dist/lib/cjs/obsidian/bases-view-registrar.cjs +11 -15
  47. package/dist/lib/cjs/obsidian/callout.cjs +27 -26
  48. package/dist/lib/cjs/obsidian/callout.d.cts +9 -3
  49. package/dist/lib/cjs/obsidian/canvas.cjs +13 -16
  50. package/dist/lib/cjs/obsidian/case-insensitive-file-index.cjs +18 -20
  51. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +11 -15
  52. package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +2 -2
  53. package/dist/lib/cjs/obsidian/code-block-reg-exp.cjs +11 -15
  54. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +18 -16
  55. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +5 -0
  56. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +56 -31
  57. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +42 -8
  58. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +11 -15
  59. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +10 -0
  60. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +26 -30
  61. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +8 -8
  62. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +12 -16
  63. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +12 -16
  64. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +13 -17
  65. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +11 -15
  66. package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.cjs +11 -15
  67. package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +11 -15
  68. package/dist/lib/cjs/obsidian/command-handlers/unlock-active-note-command-handler.cjs +11 -15
  69. package/dist/lib/cjs/obsidian/command-registrar.cjs +11 -15
  70. package/dist/lib/cjs/obsidian/community-plugins.cjs +28 -25
  71. package/dist/lib/cjs/obsidian/community-plugins.d.cts +19 -5
  72. package/dist/lib/cjs/obsidian/components/abort-signal-component.cjs +11 -15
  73. package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +11 -15
  74. package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +4 -4
  75. package/dist/lib/cjs/obsidian/components/async-error-handler-component.cjs +13 -16
  76. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +11 -15
  77. package/dist/lib/cjs/obsidian/components/case-insensitive-file-index-component.cjs +11 -15
  78. package/dist/lib/cjs/obsidian/components/component-ex.cjs +26 -28
  79. package/dist/lib/cjs/obsidian/components/component-ex.d.cts +3 -3
  80. package/dist/lib/cjs/obsidian/components/console-debug-component.cjs +14 -18
  81. package/dist/lib/cjs/obsidian/components/console-debug-component.d.cts +2 -2
  82. package/dist/lib/cjs/obsidian/components/disposable-component.cjs +11 -15
  83. package/dist/lib/cjs/obsidian/components/embed-extensions-component.cjs +11 -15
  84. package/dist/lib/cjs/obsidian/components/generate-markdown-link-default-params-component.cjs +11 -15
  85. package/dist/lib/cjs/obsidian/components/index.cjs +14 -15
  86. package/dist/lib/cjs/obsidian/components/index.d.cts +1 -0
  87. package/dist/lib/cjs/obsidian/components/layout-ready-component.cjs +11 -15
  88. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.cjs +11 -15
  89. package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +29 -33
  90. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +55 -55
  91. package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.cjs +297 -0
  92. package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.d.cts +139 -0
  93. package/dist/lib/cjs/obsidian/components/plugin-context-component.cjs +11 -15
  94. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +28 -31
  95. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +26 -30
  96. package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +8 -8
  97. package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.cjs +11 -15
  98. package/dist/lib/cjs/obsidian/components/pointer-position-component.cjs +13 -17
  99. package/dist/lib/cjs/obsidian/components/registry-component.cjs +11 -15
  100. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +72 -62
  101. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +12 -1
  102. package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.cjs +16 -20
  103. package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.d.cts +8 -8
  104. package/dist/lib/cjs/obsidian/constructors/get-dom-events-handlers-constructor.cjs +14 -18
  105. package/dist/lib/cjs/obsidian/constructors/index.cjs +11 -15
  106. package/dist/lib/cjs/obsidian/css-class.cjs +11 -15
  107. package/dist/lib/cjs/obsidian/data-handler.cjs +11 -15
  108. package/dist/lib/cjs/obsidian/dataview-link.cjs +13 -17
  109. package/dist/lib/cjs/obsidian/dataview.cjs +35 -41
  110. package/dist/lib/cjs/obsidian/dataview.d.cts +2 -2
  111. package/dist/lib/cjs/obsidian/demo-vault-helper.cjs +13 -17
  112. package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +22 -26
  113. package/dist/lib/cjs/obsidian/desktop-trusted-input.cjs +23 -21
  114. package/dist/lib/cjs/obsidian/editor-extension-registrar.cjs +11 -15
  115. package/dist/lib/cjs/obsidian/editor-suggest-registrar.cjs +11 -15
  116. package/dist/lib/cjs/obsidian/editor.cjs +17 -19
  117. package/dist/lib/cjs/obsidian/events.cjs +12 -16
  118. package/dist/lib/cjs/obsidian/events.d.cts +2 -2
  119. package/dist/lib/cjs/obsidian/extensions-registrar.cjs +11 -15
  120. package/dist/lib/cjs/obsidian/file-change.cjs +76 -80
  121. package/dist/lib/cjs/obsidian/file-change.d.cts +3 -3
  122. package/dist/lib/cjs/obsidian/file-manager.cjs +33 -22
  123. package/dist/lib/cjs/obsidian/file-manager.d.cts +20 -1
  124. package/dist/lib/cjs/obsidian/file-system.cjs +15 -19
  125. package/dist/lib/cjs/obsidian/file-system.d.cts +3 -3
  126. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +11 -15
  127. package/dist/lib/cjs/obsidian/frontmatter.cjs +15 -19
  128. package/dist/lib/cjs/obsidian/hover-link-source-registrar.cjs +11 -15
  129. package/dist/lib/cjs/obsidian/html-element.cjs +13 -17
  130. package/dist/lib/cjs/obsidian/html-element.d.cts +2 -2
  131. package/dist/lib/cjs/obsidian/i18n/custom-type-options.cjs +11 -15
  132. package/dist/lib/cjs/obsidian/i18n/default-translations.cjs +11 -15
  133. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +13 -16
  134. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +7 -0
  135. package/dist/lib/cjs/obsidian/i18n/index.cjs +11 -15
  136. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +11 -15
  137. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +11 -15
  138. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +11 -15
  139. package/dist/lib/cjs/obsidian/index.cjs +14 -15
  140. package/dist/lib/cjs/obsidian/index.d.cts +1 -0
  141. package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +11 -15
  142. package/dist/lib/cjs/obsidian/link-update-progress.cjs +11 -15
  143. package/dist/lib/cjs/obsidian/link.cjs +91 -81
  144. package/dist/lib/cjs/obsidian/link.d.cts +22 -22
  145. package/dist/lib/cjs/obsidian/logger.cjs +21 -25
  146. package/dist/lib/cjs/obsidian/logger.d.cts +5 -5
  147. package/dist/lib/cjs/obsidian/loop.cjs +14 -18
  148. package/dist/lib/cjs/obsidian/loop.d.cts +1 -1
  149. package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.cjs +12 -16
  150. package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.d.cts +3 -3
  151. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +35 -40
  152. package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +3 -3
  153. package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.cjs +12 -16
  154. package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.d.cts +3 -3
  155. package/dist/lib/cjs/obsidian/markdown-view.cjs +11 -15
  156. package/dist/lib/cjs/obsidian/markdown.cjs +22 -24
  157. package/dist/lib/cjs/obsidian/menu-event-registrar.cjs +11 -15
  158. package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -1
  159. package/dist/lib/cjs/obsidian/metadata-cache.cjs +16 -20
  160. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +2 -2
  161. package/dist/lib/cjs/obsidian/modals/alert.cjs +11 -15
  162. package/dist/lib/cjs/obsidian/modals/confirm.cjs +11 -15
  163. package/dist/lib/cjs/obsidian/modals/index.cjs +11 -15
  164. package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +28 -32
  165. package/dist/lib/cjs/obsidian/modals/modal.cjs +11 -15
  166. package/dist/lib/cjs/obsidian/modals/prompt.cjs +11 -15
  167. package/dist/lib/cjs/obsidian/modals/select-item.cjs +16 -20
  168. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -1
  169. package/dist/lib/cjs/obsidian/modals/select-option.cjs +11 -15
  170. package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.cjs +26 -28
  171. package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.d.cts +5 -5
  172. package/dist/lib/cjs/obsidian/notebook-navigator.cjs +155 -0
  173. package/dist/lib/cjs/obsidian/notebook-navigator.d.cts +132 -0
  174. package/dist/lib/cjs/obsidian/obsidian-protocol-handler-registrar.cjs +11 -15
  175. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +11 -15
  176. package/dist/lib/cjs/obsidian/parse-link.cjs +61 -62
  177. package/dist/lib/cjs/obsidian/parse-link.d.cts +4 -4
  178. package/dist/lib/cjs/obsidian/path-settings.cjs +27 -25
  179. package/dist/lib/cjs/obsidian/pdf.cjs +13 -17
  180. package/dist/lib/cjs/obsidian/pdf.d.cts +2 -2
  181. package/dist/lib/cjs/obsidian/plugin/index.cjs +11 -15
  182. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +11 -15
  183. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +156 -52
  184. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +17 -21
  185. package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +2 -2
  186. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.cjs +20 -24
  187. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.d.cts +11 -9
  188. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +29 -33
  189. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +33 -16
  190. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +11 -1
  191. package/dist/lib/cjs/obsidian/plugin-cli-handler-registrar.cjs +11 -15
  192. package/dist/lib/cjs/obsidian/popovers/field-popover.cjs +11 -15
  193. package/dist/lib/cjs/obsidian/popovers/index.cjs +11 -15
  194. package/dist/lib/cjs/obsidian/popovers/popover-anchor.cjs +14 -18
  195. package/dist/lib/cjs/obsidian/popovers/popover-anchor.d.cts +2 -2
  196. package/dist/lib/cjs/obsidian/popovers/popover.cjs +19 -23
  197. package/dist/lib/cjs/obsidian/queue.cjs +16 -20
  198. package/dist/lib/cjs/obsidian/queue.d.cts +2 -2
  199. package/dist/lib/cjs/obsidian/react/app-context.cjs +11 -15
  200. package/dist/lib/cjs/obsidian/react/index.cjs +11 -15
  201. package/dist/lib/cjs/obsidian/reference.cjs +11 -15
  202. package/dist/lib/cjs/obsidian/resource-lock.cjs +157 -78
  203. package/dist/lib/cjs/obsidian/resource-lock.d.cts +5 -0
  204. package/dist/lib/cjs/obsidian/resource-url.cjs +12 -16
  205. package/dist/lib/cjs/obsidian/ribbon-icon-registrar.cjs +11 -15
  206. package/dist/lib/cjs/obsidian/ribbon-icon-registrar.d.cts +2 -2
  207. package/dist/lib/cjs/obsidian/setting-components/checkbox-component.cjs +18 -22
  208. package/dist/lib/cjs/obsidian/setting-components/checkbox-component.d.cts +5 -5
  209. package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.cjs +28 -31
  210. package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.d.cts +2 -2
  211. package/dist/lib/cjs/obsidian/setting-components/date-component.cjs +14 -18
  212. package/dist/lib/cjs/obsidian/setting-components/date-component.d.cts +2 -2
  213. package/dist/lib/cjs/obsidian/setting-components/date-time-component.cjs +14 -18
  214. package/dist/lib/cjs/obsidian/setting-components/date-time-component.d.cts +2 -2
  215. package/dist/lib/cjs/obsidian/setting-components/email-component.cjs +14 -18
  216. package/dist/lib/cjs/obsidian/setting-components/email-component.d.cts +2 -2
  217. package/dist/lib/cjs/obsidian/setting-components/file-component.cjs +11 -15
  218. package/dist/lib/cjs/obsidian/setting-components/index.cjs +11 -15
  219. package/dist/lib/cjs/obsidian/setting-components/month-component.cjs +14 -18
  220. package/dist/lib/cjs/obsidian/setting-components/month-component.d.cts +2 -2
  221. package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.cjs +17 -21
  222. package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.d.cts +2 -2
  223. package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.cjs +14 -18
  224. package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.d.cts +2 -2
  225. package/dist/lib/cjs/obsidian/setting-components/multiple-file-component.cjs +12 -16
  226. package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.cjs +15 -19
  227. package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.d.cts +2 -2
  228. package/dist/lib/cjs/obsidian/setting-components/number-component.cjs +14 -18
  229. package/dist/lib/cjs/obsidian/setting-components/number-component.d.cts +2 -2
  230. package/dist/lib/cjs/obsidian/setting-components/password-component.cjs +14 -18
  231. package/dist/lib/cjs/obsidian/setting-components/password-component.d.cts +2 -2
  232. package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.cjs +16 -20
  233. package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.d.cts +2 -2
  234. package/dist/lib/cjs/obsidian/setting-components/telephone-component.cjs +14 -18
  235. package/dist/lib/cjs/obsidian/setting-components/telephone-component.d.cts +2 -2
  236. package/dist/lib/cjs/obsidian/setting-components/text-based-component.cjs +16 -20
  237. package/dist/lib/cjs/obsidian/setting-components/text-based-component.d.cts +2 -2
  238. package/dist/lib/cjs/obsidian/setting-components/time-component.cjs +14 -18
  239. package/dist/lib/cjs/obsidian/setting-components/time-component.d.cts +2 -2
  240. package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.cjs +15 -19
  241. package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.d.cts +2 -2
  242. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.cjs +16 -20
  243. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.d.cts +2 -2
  244. package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.cjs +18 -22
  245. package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.d.cts +2 -2
  246. package/dist/lib/cjs/obsidian/setting-components/typed-range-text-component.cjs +11 -15
  247. package/dist/lib/cjs/obsidian/setting-components/typed-text-component.cjs +16 -19
  248. package/dist/lib/cjs/obsidian/setting-components/typed-text-component.d.cts +4 -4
  249. package/dist/lib/cjs/obsidian/setting-components/url-component.cjs +14 -18
  250. package/dist/lib/cjs/obsidian/setting-components/url-component.d.cts +2 -2
  251. package/dist/lib/cjs/obsidian/setting-components/validator-component.cjs +45 -49
  252. package/dist/lib/cjs/obsidian/setting-components/validator-component.d.cts +2 -2
  253. package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.cjs +11 -15
  254. package/dist/lib/cjs/obsidian/setting-components/week-component.cjs +14 -18
  255. package/dist/lib/cjs/obsidian/setting-components/week-component.d.cts +2 -2
  256. package/dist/lib/cjs/obsidian/setting-ex.cjs +76 -80
  257. package/dist/lib/cjs/obsidian/setting-ex.d.cts +42 -42
  258. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +14 -18
  259. package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +2 -2
  260. package/dist/lib/cjs/obsidian/status-bar-item-registrar.cjs +11 -15
  261. package/dist/lib/cjs/obsidian/validation.cjs +11 -15
  262. package/dist/lib/cjs/obsidian/vault-delete.cjs +23 -20
  263. package/dist/lib/cjs/obsidian/vault-delete.d.cts +16 -2
  264. package/dist/lib/cjs/obsidian/vault-transaction.cjs +17 -18
  265. package/dist/lib/cjs/obsidian/vault.cjs +81 -63
  266. package/dist/lib/cjs/obsidian/vault.d.cts +32 -11
  267. package/dist/lib/cjs/obsidian/view-registrar.cjs +11 -15
  268. package/dist/lib/cjs/obsidian/workspace.cjs +12 -16
  269. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +11 -15
  270. package/dist/lib/cjs/path.cjs +18 -22
  271. package/dist/lib/cjs/path.d.cts +1 -1
  272. package/dist/lib/cjs/reg-exp.cjs +38 -35
  273. package/dist/lib/cjs/reg-exp.d.cts +4 -4
  274. package/dist/lib/cjs/script-utils/build.cjs +21 -25
  275. package/dist/lib/cjs/script-utils/build.d.cts +1 -1
  276. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +24 -28
  277. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +36 -34
  278. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +11 -15
  279. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +20 -24
  280. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +13 -17
  281. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +16 -20
  282. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +11 -15
  283. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +11 -15
  284. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +6 -2
  285. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +32 -36
  286. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +11 -15
  287. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +11 -15
  288. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +11 -15
  289. package/dist/lib/cjs/script-utils/bundlers/index.cjs +11 -15
  290. package/dist/lib/cjs/script-utils/check-project-types.cjs +13 -17
  291. package/dist/lib/cjs/script-utils/check-project-types.d.cts +12 -4
  292. package/dist/lib/cjs/script-utils/cli-utils.cjs +39 -47
  293. package/dist/lib/cjs/script-utils/cli-utils.d.cts +6 -6
  294. package/dist/lib/cjs/script-utils/code-generator.cjs +11 -15
  295. package/dist/lib/cjs/script-utils/commitlint-config.cjs +11 -15
  296. package/dist/lib/cjs/script-utils/demo-vault-coverage.cjs +22 -23
  297. package/dist/lib/cjs/script-utils/demo-vault.cjs +11 -15
  298. package/dist/lib/cjs/script-utils/env-toggle.cjs +13 -17
  299. package/dist/lib/cjs/script-utils/exec.cjs +40 -44
  300. package/dist/lib/cjs/script-utils/exec.d.cts +4 -4
  301. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +12 -16
  302. package/dist/lib/cjs/script-utils/formatters/index.cjs +11 -15
  303. package/dist/lib/cjs/script-utils/fs.cjs +13 -17
  304. package/dist/lib/cjs/script-utils/git.cjs +11 -15
  305. package/dist/lib/cjs/script-utils/index.cjs +11 -15
  306. package/dist/lib/cjs/script-utils/json.cjs +15 -19
  307. package/dist/lib/cjs/script-utils/json.d.cts +2 -2
  308. package/dist/lib/cjs/script-utils/linters/cspell.cjs +12 -16
  309. package/dist/lib/cjs/script-utils/linters/eslint-agnostic-core-boundary.cjs +11 -15
  310. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +402 -16
  311. package/dist/lib/cjs/script-utils/linters/eslint-no-restricted-syntax.cjs +11 -15
  312. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +11 -15
  313. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +27 -31
  314. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +3 -1
  315. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.cjs +27 -31
  316. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.d.cts +3 -1
  317. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +21 -25
  318. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +3 -1
  319. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +11 -15
  320. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.cjs +109 -113
  321. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +3 -1
  322. package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.cjs +13 -17
  323. package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.d.cts +3 -1
  324. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.cjs +21 -25
  325. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.cts +3 -1
  326. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +51 -55
  327. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.d.cts +9 -3
  328. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +25 -27
  329. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.d.cts +6 -2
  330. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +33 -37
  331. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.d.cts +3 -1
  332. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +11 -15
  333. package/dist/lib/cjs/script-utils/linters/eslint.cjs +14 -18
  334. package/dist/lib/cjs/script-utils/linters/index.cjs +14 -15
  335. package/dist/lib/cjs/script-utils/linters/index.d.cts +1 -0
  336. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +18 -17
  337. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +2 -2
  338. package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.cjs +138 -0
  339. package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.d.cts +35 -0
  340. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +20 -23
  341. package/dist/lib/cjs/script-utils/linters/over-exposure.cjs +18 -22
  342. package/dist/lib/cjs/script-utils/linters/over-exposure.d.cts +54 -18
  343. package/dist/lib/cjs/script-utils/nano-staged-config.cjs +11 -15
  344. package/dist/lib/cjs/script-utils/npm-publish.cjs +11 -15
  345. package/dist/lib/cjs/script-utils/npm-run.cjs +20 -17
  346. package/dist/lib/cjs/script-utils/npm-run.d.cts +16 -2
  347. package/dist/lib/cjs/script-utils/npm.cjs +21 -25
  348. package/dist/lib/cjs/script-utils/npm.d.cts +11 -11
  349. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +11 -15
  350. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +165 -55
  351. package/dist/lib/cjs/script-utils/root.cjs +11 -15
  352. package/dist/lib/cjs/script-utils/test-runners/index.cjs +16 -17
  353. package/dist/lib/cjs/script-utils/test-runners/index.d.cts +1 -0
  354. package/dist/lib/cjs/script-utils/test-runners/integration-test-plugin.cjs +11 -15
  355. package/dist/lib/cjs/script-utils/test-runners/vitest-config.cjs +325 -0
  356. package/dist/lib/cjs/script-utils/test-runners/vitest-config.d.cts +118 -0
  357. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +11 -15
  358. package/dist/lib/cjs/script-utils/validate-declarations.cjs +11 -15
  359. package/dist/lib/cjs/script-utils/version.cjs +62 -63
  360. package/dist/lib/cjs/script-utils/version.d.cts +21 -21
  361. package/dist/lib/cjs/script-utils/warnings-as-errors.cjs +11 -15
  362. package/dist/lib/cjs/setup.cjs +11 -15
  363. package/dist/lib/cjs/setup.d.cts +1 -1
  364. package/dist/lib/cjs/strict-proxy.cjs +30 -34
  365. package/dist/lib/cjs/strict-proxy.d.cts +2 -2
  366. package/dist/lib/cjs/string.cjs +90 -93
  367. package/dist/lib/cjs/string.d.cts +60 -60
  368. package/dist/lib/cjs/transformers/date-transformer.cjs +11 -15
  369. package/dist/lib/cjs/transformers/duration-transformer.cjs +11 -15
  370. package/dist/lib/cjs/transformers/group-transformer.cjs +11 -15
  371. package/dist/lib/cjs/transformers/index.cjs +11 -15
  372. package/dist/lib/cjs/transformers/map-transformer.cjs +12 -16
  373. package/dist/lib/cjs/transformers/set-transformer.cjs +12 -16
  374. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +11 -15
  375. package/dist/lib/cjs/transformers/transformer.cjs +11 -15
  376. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +12 -16
  377. package/dist/lib/cjs/transformers/typed-transformer.cjs +11 -15
  378. package/dist/lib/cjs/two-way-map.cjs +11 -15
  379. package/dist/lib/cjs/type-guards.cjs +16 -20
  380. package/dist/lib/cjs/type-guards.d.cts +6 -6
  381. package/dist/lib/cjs/type.cjs +13 -17
  382. package/dist/lib/cjs/type.d.cts +2 -2
  383. package/dist/lib/cjs/url.cjs +18 -22
  384. package/dist/lib/cjs/url.d.cts +4 -4
  385. package/dist/lib/cjs/value-provider.cjs +15 -19
  386. package/dist/lib/cjs/value-provider.d.cts +6 -6
  387. package/dist/lib/cjs/value-wrapper.cjs +11 -15
  388. package/dist/lib/cjs/vitest-setup.cjs +11 -15
  389. package/dist/lib/esm/__merged.d.mts +12 -10
  390. package/dist/lib/esm/__merged.mjs +51 -23
  391. package/dist/lib/esm/abort-controller.mjs +5 -8
  392. package/dist/lib/esm/array.d.mts +25 -7
  393. package/dist/lib/esm/array.mjs +16 -12
  394. package/dist/lib/esm/async-events.d.mts +50 -50
  395. package/dist/lib/esm/async-events.mjs +81 -78
  396. package/dist/lib/esm/async.d.mts +23 -23
  397. package/dist/lib/esm/async.mjs +70 -66
  398. package/dist/lib/esm/blob.mjs +4 -11
  399. package/dist/lib/esm/debug.d.mts +1 -1
  400. package/dist/lib/esm/debug.mjs +14 -18
  401. package/dist/lib/esm/disposable.d.mts +27 -8
  402. package/dist/lib/esm/disposable.mjs +47 -29
  403. package/dist/lib/esm/error.mjs +18 -19
  404. package/dist/lib/esm/function.d.mts +26 -26
  405. package/dist/lib/esm/function.mjs +20 -20
  406. package/dist/lib/esm/generated-during-build.mjs +1 -1
  407. package/dist/lib/esm/html-element.d.mts +15 -15
  408. package/dist/lib/esm/html-element.mjs +74 -75
  409. package/dist/lib/esm/object-utils.d.mts +27 -27
  410. package/dist/lib/esm/object-utils.mjs +109 -102
  411. package/dist/lib/esm/obsidian/@types/dataview/data-model/value.d.mts +1 -1
  412. package/dist/lib/esm/obsidian/@types/dataview/expression/field.d.mts +1 -1
  413. package/dist/lib/esm/obsidian/@types/dataview/expression/functions.d.mts +4 -4
  414. package/dist/lib/esm/obsidian/app.mjs +1 -1
  415. package/dist/lib/esm/obsidian/async-with-notice.d.mts +2 -2
  416. package/dist/lib/esm/obsidian/async-with-notice.mjs +18 -18
  417. package/dist/lib/esm/obsidian/attachment-path.d.mts +5 -5
  418. package/dist/lib/esm/obsidian/attachment-path.mjs +10 -10
  419. package/dist/lib/esm/obsidian/backlink.mjs +2 -2
  420. package/dist/lib/esm/obsidian/callout.d.mts +9 -3
  421. package/dist/lib/esm/obsidian/callout.mjs +17 -12
  422. package/dist/lib/esm/obsidian/canvas.mjs +3 -2
  423. package/dist/lib/esm/obsidian/case-insensitive-file-index.mjs +8 -6
  424. package/dist/lib/esm/obsidian/code-block-markdown-information.d.mts +2 -2
  425. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +5 -0
  426. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +8 -2
  427. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +42 -8
  428. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +46 -17
  429. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +10 -0
  430. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +1 -1
  431. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +8 -8
  432. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +16 -16
  433. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -2
  434. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -2
  435. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +3 -3
  436. package/dist/lib/esm/obsidian/community-plugins.d.mts +19 -5
  437. package/dist/lib/esm/obsidian/community-plugins.mjs +17 -11
  438. package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +4 -4
  439. package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +1 -1
  440. package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +3 -2
  441. package/dist/lib/esm/obsidian/components/component-ex.d.mts +3 -3
  442. package/dist/lib/esm/obsidian/components/component-ex.mjs +16 -14
  443. package/dist/lib/esm/obsidian/components/console-debug-component.d.mts +2 -2
  444. package/dist/lib/esm/obsidian/components/console-debug-component.mjs +4 -4
  445. package/dist/lib/esm/obsidian/components/index.d.mts +1 -0
  446. package/dist/lib/esm/obsidian/components/index.mjs +3 -1
  447. package/dist/lib/esm/obsidian/components/menu-event-registrar-component.mjs +5 -5
  448. package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +55 -55
  449. package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +19 -19
  450. package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.d.mts +139 -0
  451. package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.mjs +196 -0
  452. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +18 -17
  453. package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +8 -8
  454. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +18 -18
  455. package/dist/lib/esm/obsidian/components/pointer-position-component.mjs +3 -3
  456. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +12 -1
  457. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +62 -48
  458. package/dist/lib/esm/obsidian/components/syntax-highlighting-component.d.mts +8 -8
  459. package/dist/lib/esm/obsidian/components/syntax-highlighting-component.mjs +6 -6
  460. package/dist/lib/esm/obsidian/constructors/get-dom-events-handlers-constructor.mjs +4 -4
  461. package/dist/lib/esm/obsidian/data-handler.mjs +1 -1
  462. package/dist/lib/esm/obsidian/dataview-link.mjs +3 -3
  463. package/dist/lib/esm/obsidian/dataview.d.mts +2 -2
  464. package/dist/lib/esm/obsidian/dataview.mjs +25 -27
  465. package/dist/lib/esm/obsidian/demo-vault-helper.mjs +4 -3
  466. package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +12 -12
  467. package/dist/lib/esm/obsidian/desktop-trusted-input.mjs +13 -7
  468. package/dist/lib/esm/obsidian/editor.mjs +7 -5
  469. package/dist/lib/esm/obsidian/events.d.mts +2 -2
  470. package/dist/lib/esm/obsidian/events.mjs +2 -2
  471. package/dist/lib/esm/obsidian/file-change.d.mts +3 -3
  472. package/dist/lib/esm/obsidian/file-change.mjs +67 -67
  473. package/dist/lib/esm/obsidian/file-manager.d.mts +20 -1
  474. package/dist/lib/esm/obsidian/file-manager.mjs +22 -8
  475. package/dist/lib/esm/obsidian/file-system.d.mts +3 -3
  476. package/dist/lib/esm/obsidian/file-system.mjs +4 -4
  477. package/dist/lib/esm/obsidian/frontmatter.mjs +5 -5
  478. package/dist/lib/esm/obsidian/html-element.d.mts +2 -2
  479. package/dist/lib/esm/obsidian/html-element.mjs +3 -3
  480. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +7 -0
  481. package/dist/lib/esm/obsidian/i18n/i18n.mjs +3 -2
  482. package/dist/lib/esm/obsidian/index.d.mts +1 -0
  483. package/dist/lib/esm/obsidian/index.mjs +3 -1
  484. package/dist/lib/esm/obsidian/link.d.mts +22 -22
  485. package/dist/lib/esm/obsidian/link.mjs +76 -62
  486. package/dist/lib/esm/obsidian/logger.d.mts +5 -5
  487. package/dist/lib/esm/obsidian/logger.mjs +11 -11
  488. package/dist/lib/esm/obsidian/loop.d.mts +1 -1
  489. package/dist/lib/esm/obsidian/loop.mjs +4 -4
  490. package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.d.mts +3 -3
  491. package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.mjs +2 -2
  492. package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +3 -3
  493. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +25 -26
  494. package/dist/lib/esm/obsidian/markdown-post-processor-registrar.d.mts +3 -3
  495. package/dist/lib/esm/obsidian/markdown-post-processor-registrar.mjs +2 -2
  496. package/dist/lib/esm/obsidian/markdown.mjs +12 -10
  497. package/dist/lib/esm/obsidian/menu-event-registrar.d.mts +1 -1
  498. package/dist/lib/esm/obsidian/metadata-cache.d.mts +2 -2
  499. package/dist/lib/esm/obsidian/metadata-cache.mjs +6 -6
  500. package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
  501. package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +18 -18
  502. package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -1
  503. package/dist/lib/esm/obsidian/modals/select-item.mjs +6 -6
  504. package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.d.mts +5 -5
  505. package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.mjs +16 -14
  506. package/dist/lib/esm/obsidian/notebook-navigator.d.mts +132 -0
  507. package/dist/lib/esm/obsidian/notebook-navigator.mjs +49 -0
  508. package/dist/lib/esm/obsidian/parse-link.d.mts +4 -4
  509. package/dist/lib/esm/obsidian/parse-link.mjs +51 -48
  510. package/dist/lib/esm/obsidian/path-settings.mjs +17 -11
  511. package/dist/lib/esm/obsidian/pdf.d.mts +2 -2
  512. package/dist/lib/esm/obsidian/pdf.mjs +3 -3
  513. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +156 -52
  514. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +1 -1
  515. package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +2 -2
  516. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +7 -7
  517. package/dist/lib/esm/obsidian/plugin/plugin-event-source.d.mts +11 -9
  518. package/dist/lib/esm/obsidian/plugin/plugin-event-source.mjs +10 -10
  519. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +20 -20
  520. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +11 -1
  521. package/dist/lib/esm/obsidian/plugin/plugin.mjs +23 -2
  522. package/dist/lib/esm/obsidian/popovers/popover-anchor.d.mts +2 -2
  523. package/dist/lib/esm/obsidian/popovers/popover-anchor.mjs +4 -4
  524. package/dist/lib/esm/obsidian/popovers/popover.mjs +9 -9
  525. package/dist/lib/esm/obsidian/queue.d.mts +2 -2
  526. package/dist/lib/esm/obsidian/queue.mjs +6 -6
  527. package/dist/lib/esm/obsidian/resource-lock.d.mts +5 -0
  528. package/dist/lib/esm/obsidian/resource-lock.mjs +147 -64
  529. package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
  530. package/dist/lib/esm/obsidian/ribbon-icon-registrar.d.mts +2 -2
  531. package/dist/lib/esm/obsidian/ribbon-icon-registrar.mjs +1 -1
  532. package/dist/lib/esm/obsidian/setting-components/checkbox-component.d.mts +5 -5
  533. package/dist/lib/esm/obsidian/setting-components/checkbox-component.mjs +8 -8
  534. package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.d.mts +2 -2
  535. package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.mjs +18 -17
  536. package/dist/lib/esm/obsidian/setting-components/date-component.d.mts +2 -2
  537. package/dist/lib/esm/obsidian/setting-components/date-component.mjs +4 -4
  538. package/dist/lib/esm/obsidian/setting-components/date-time-component.d.mts +2 -2
  539. package/dist/lib/esm/obsidian/setting-components/date-time-component.mjs +4 -4
  540. package/dist/lib/esm/obsidian/setting-components/email-component.d.mts +2 -2
  541. package/dist/lib/esm/obsidian/setting-components/email-component.mjs +4 -4
  542. package/dist/lib/esm/obsidian/setting-components/month-component.d.mts +2 -2
  543. package/dist/lib/esm/obsidian/setting-components/month-component.mjs +4 -4
  544. package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.d.mts +2 -2
  545. package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.mjs +7 -7
  546. package/dist/lib/esm/obsidian/setting-components/multiple-email-component.d.mts +2 -2
  547. package/dist/lib/esm/obsidian/setting-components/multiple-email-component.mjs +4 -4
  548. package/dist/lib/esm/obsidian/setting-components/multiple-file-component.mjs +2 -2
  549. package/dist/lib/esm/obsidian/setting-components/multiple-text-component.d.mts +2 -2
  550. package/dist/lib/esm/obsidian/setting-components/multiple-text-component.mjs +5 -5
  551. package/dist/lib/esm/obsidian/setting-components/number-component.d.mts +2 -2
  552. package/dist/lib/esm/obsidian/setting-components/number-component.mjs +4 -4
  553. package/dist/lib/esm/obsidian/setting-components/password-component.d.mts +2 -2
  554. package/dist/lib/esm/obsidian/setting-components/password-component.mjs +4 -4
  555. package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.d.mts +2 -2
  556. package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.mjs +6 -6
  557. package/dist/lib/esm/obsidian/setting-components/telephone-component.d.mts +2 -2
  558. package/dist/lib/esm/obsidian/setting-components/telephone-component.mjs +4 -4
  559. package/dist/lib/esm/obsidian/setting-components/text-based-component.d.mts +2 -2
  560. package/dist/lib/esm/obsidian/setting-components/text-based-component.mjs +6 -6
  561. package/dist/lib/esm/obsidian/setting-components/time-component.d.mts +2 -2
  562. package/dist/lib/esm/obsidian/setting-components/time-component.mjs +4 -4
  563. package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.d.mts +2 -2
  564. package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.mjs +5 -5
  565. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.d.mts +2 -2
  566. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.mjs +6 -6
  567. package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.d.mts +2 -2
  568. package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.mjs +8 -8
  569. package/dist/lib/esm/obsidian/setting-components/typed-text-component.d.mts +4 -4
  570. package/dist/lib/esm/obsidian/setting-components/typed-text-component.mjs +6 -5
  571. package/dist/lib/esm/obsidian/setting-components/url-component.d.mts +2 -2
  572. package/dist/lib/esm/obsidian/setting-components/url-component.mjs +4 -4
  573. package/dist/lib/esm/obsidian/setting-components/validator-component.d.mts +2 -2
  574. package/dist/lib/esm/obsidian/setting-components/validator-component.mjs +35 -35
  575. package/dist/lib/esm/obsidian/setting-components/week-component.d.mts +2 -2
  576. package/dist/lib/esm/obsidian/setting-components/week-component.mjs +4 -4
  577. package/dist/lib/esm/obsidian/setting-ex.d.mts +42 -42
  578. package/dist/lib/esm/obsidian/setting-ex.mjs +66 -66
  579. package/dist/lib/esm/obsidian/setting-group-ex.d.mts +2 -2
  580. package/dist/lib/esm/obsidian/setting-group-ex.mjs +4 -4
  581. package/dist/lib/esm/obsidian/vault-delete.d.mts +16 -2
  582. package/dist/lib/esm/obsidian/vault-delete.mjs +12 -6
  583. package/dist/lib/esm/obsidian/vault-transaction.mjs +8 -4
  584. package/dist/lib/esm/obsidian/vault.d.mts +32 -11
  585. package/dist/lib/esm/obsidian/vault.mjs +67 -47
  586. package/dist/lib/esm/obsidian/view-registrar.mjs +1 -1
  587. package/dist/lib/esm/obsidian/workspace.mjs +2 -2
  588. package/dist/lib/esm/path.d.mts +1 -1
  589. package/dist/lib/esm/path.mjs +7 -7
  590. package/dist/lib/esm/reg-exp.d.mts +4 -4
  591. package/dist/lib/esm/reg-exp.mjs +28 -21
  592. package/dist/lib/esm/script-utils/build.d.mts +1 -1
  593. package/dist/lib/esm/script-utils/build.mjs +15 -12
  594. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +14 -14
  595. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +26 -20
  596. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +10 -10
  597. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +3 -3
  598. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +6 -6
  599. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +6 -2
  600. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
  601. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +20 -20
  602. package/dist/lib/esm/script-utils/check-project-types.d.mts +12 -4
  603. package/dist/lib/esm/script-utils/check-project-types.mjs +3 -3
  604. package/dist/lib/esm/script-utils/cli-utils.d.mts +6 -6
  605. package/dist/lib/esm/script-utils/cli-utils.mjs +29 -33
  606. package/dist/lib/esm/script-utils/demo-vault-coverage.mjs +12 -9
  607. package/dist/lib/esm/script-utils/env-toggle.mjs +3 -3
  608. package/dist/lib/esm/script-utils/exec.d.mts +4 -4
  609. package/dist/lib/esm/script-utils/exec.mjs +32 -32
  610. package/dist/lib/esm/script-utils/formatters/dprint.mjs +2 -2
  611. package/dist/lib/esm/script-utils/fs.mjs +3 -3
  612. package/dist/lib/esm/script-utils/json.d.mts +2 -2
  613. package/dist/lib/esm/script-utils/json.mjs +5 -5
  614. package/dist/lib/esm/script-utils/linters/cspell.mjs +2 -2
  615. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +392 -2
  616. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +3 -1
  617. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +17 -17
  618. package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.d.mts +3 -1
  619. package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.mjs +17 -17
  620. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.d.mts +3 -1
  621. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +11 -11
  622. package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.d.mts +3 -1
  623. package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.mjs +99 -99
  624. package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.d.mts +3 -1
  625. package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.mjs +3 -3
  626. package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.mts +3 -1
  627. package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.mjs +11 -11
  628. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.d.mts +9 -3
  629. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +41 -41
  630. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.d.mts +6 -2
  631. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +15 -13
  632. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.d.mts +3 -1
  633. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +23 -23
  634. package/dist/lib/esm/script-utils/linters/eslint.mjs +4 -4
  635. package/dist/lib/esm/script-utils/linters/index.d.mts +1 -0
  636. package/dist/lib/esm/script-utils/linters/index.mjs +3 -1
  637. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +2 -2
  638. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +8 -3
  639. package/dist/lib/esm/script-utils/linters/markdownlint-ignores.d.mts +35 -0
  640. package/dist/lib/esm/script-utils/linters/markdownlint-ignores.mjs +33 -0
  641. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +13 -9
  642. package/dist/lib/esm/script-utils/linters/over-exposure.d.mts +54 -18
  643. package/dist/lib/esm/script-utils/linters/over-exposure.mjs +8 -8
  644. package/dist/lib/esm/script-utils/npm-run.d.mts +16 -2
  645. package/dist/lib/esm/script-utils/npm-run.mjs +9 -3
  646. package/dist/lib/esm/script-utils/npm.d.mts +11 -11
  647. package/dist/lib/esm/script-utils/npm.mjs +11 -11
  648. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +165 -55
  649. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +1 -1
  650. package/dist/lib/esm/script-utils/test-runners/index.d.mts +1 -0
  651. package/dist/lib/esm/script-utils/test-runners/index.mjs +4 -2
  652. package/dist/lib/esm/script-utils/test-runners/vitest-config.d.mts +118 -0
  653. package/dist/lib/esm/script-utils/test-runners/vitest-config.mjs +210 -0
  654. package/dist/lib/esm/script-utils/validate-declarations.mjs +1 -1
  655. package/dist/lib/esm/script-utils/version.d.mts +21 -21
  656. package/dist/lib/esm/script-utils/version.mjs +48 -45
  657. package/dist/lib/esm/setup.d.mts +1 -1
  658. package/dist/lib/esm/setup.mjs +1 -1
  659. package/dist/lib/esm/strict-proxy.d.mts +2 -2
  660. package/dist/lib/esm/strict-proxy.mjs +20 -20
  661. package/dist/lib/esm/string.d.mts +60 -60
  662. package/dist/lib/esm/string.mjs +80 -79
  663. package/dist/lib/esm/transformers/map-transformer.mjs +2 -2
  664. package/dist/lib/esm/transformers/set-transformer.mjs +2 -2
  665. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +2 -2
  666. package/dist/lib/esm/type-guards.d.mts +6 -6
  667. package/dist/lib/esm/type-guards.mjs +6 -6
  668. package/dist/lib/esm/type.d.mts +2 -2
  669. package/dist/lib/esm/type.mjs +3 -3
  670. package/dist/lib/esm/url.d.mts +4 -4
  671. package/dist/lib/esm/url.mjs +8 -8
  672. package/dist/lib/esm/value-provider.d.mts +6 -6
  673. package/dist/lib/esm/value-provider.mjs +5 -5
  674. package/dist/templates/scripts/vitest-config.ts +2 -88
  675. package/obsidian/components/notebook-navigator-menu-event-registrar-component/package.json +6 -0
  676. package/obsidian/notebook-navigator/package.json +6 -0
  677. package/package.json +17 -33
  678. package/script-utils/linters/markdownlint-ignores/package.json +6 -0
  679. package/script-utils/test-runners/vitest-config/package.json +6 -0
@@ -32,21 +32,21 @@ const paramsOptionsNameMatch = {
32
32
  if (!isInExportedScope(node)) {
33
33
  return;
34
34
  }
35
- const fnNode = node;
35
+ const functionNode = node;
36
36
  const expectedPrefix = getExpectedPrefix(node);
37
37
  if (!expectedPrefix) {
38
38
  return;
39
39
  }
40
- const isSoleParam = fnNode.params.length === 1;
41
- for (const param of fnNode.params) {
42
- const typeInfo = getTypeAnnotationInfo(param);
40
+ const isSoleParameter = functionNode.params.length === 1;
41
+ for (const parameter of functionNode.params) {
42
+ const typeInfo = getTypeAnnotationInfo(parameter);
43
43
  if (!typeInfo) {
44
44
  continue;
45
45
  }
46
46
  if (!PARAMS_OPTIONS_SUFFIX_PATTERN.test(typeInfo.name)) {
47
47
  continue;
48
48
  }
49
- const expectedSuffix = isSoleParam && !isOptionalParam(param) ? PARAMS_SUFFIX : OPTIONS_SUFFIX;
49
+ const expectedSuffix = isSoleParameter && !isOptionalParameter(parameter) ? PARAMS_SUFFIX : OPTIONS_SUFFIX;
50
50
  const expectedName = `${expectedPrefix}${expectedSuffix}`;
51
51
  if (typeInfo.name !== expectedName) {
52
52
  context.report({
@@ -61,99 +61,6 @@ const paramsOptionsNameMatch = {
61
61
  }
62
62
  }
63
63
  };
64
- function isInExportedScope(node) {
65
- const methodDef = node.parent;
66
- if (methodDef?.type === "MethodDefinition") {
67
- const classBody = methodDef.parent;
68
- const classNode = classBody?.parent;
69
- if (!classNode) {
70
- return false;
71
- }
72
- const classParent = classNode.parent;
73
- return classParent?.type === "ExportNamedDeclaration" || classParent?.type === "ExportDefaultDeclaration";
74
- }
75
- if (node.type === "FunctionDeclaration") {
76
- const parentNode = node.parent;
77
- return parentNode?.type === "ExportNamedDeclaration" || parentNode?.type === "ExportDefaultDeclaration";
78
- }
79
- if (node.parent?.type === "VariableDeclarator") {
80
- const varDecl = node.parent.parent;
81
- if (varDecl?.parent?.type === "ExportNamedDeclaration") {
82
- return true;
83
- }
84
- }
85
- return false;
86
- }
87
- function getExpectedPrefix(node) {
88
- const methodPrefix = getMethodExpectedPrefix(node);
89
- if (methodPrefix !== void 0) {
90
- return methodPrefix;
91
- }
92
- return getFunctionExpectedPrefix(node);
93
- }
94
- function getMethodExpectedPrefix(node) {
95
- const methodDef = node.parent;
96
- if (methodDef?.type !== "MethodDefinition") {
97
- return void 0;
98
- }
99
- if (!("key" in methodDef) || !methodDef.key || typeof methodDef.key !== "object" || !("name" in methodDef.key) || typeof methodDef.key.name !== "string") {
100
- return void 0;
101
- }
102
- const methodName = methodDef.key.name;
103
- const className = getClassName(methodDef);
104
- if (!className) {
105
- return void 0;
106
- }
107
- if (methodName === "constructor") {
108
- return `${className}Constructor`;
109
- }
110
- return className + toPascalCase(methodName);
111
- }
112
- function getClassName(methodDef) {
113
- const classBody = methodDef.parent;
114
- const classNode = classBody?.parent;
115
- if (!classNode || !("id" in classNode) || !classNode.id || typeof classNode.id !== "object" || !("name" in classNode.id) || typeof classNode.id.name !== "string") {
116
- return void 0;
117
- }
118
- return classNode.id.name;
119
- }
120
- function getFunctionExpectedPrefix(node) {
121
- if ("id" in node && node.id && typeof node.id === "object" && "name" in node.id && typeof node.id.name === "string") {
122
- return toPascalCase(node.id.name);
123
- }
124
- if (node.parent?.type === "VariableDeclarator" && "id" in node.parent && node.parent.id && typeof node.parent.id === "object" && "name" in node.parent.id && typeof node.parent.id.name === "string") {
125
- return toPascalCase(node.parent.id.name);
126
- }
127
- return void 0;
128
- }
129
- function isOptionalParam(param) {
130
- if (param.type === "AssignmentPattern") {
131
- return true;
132
- }
133
- return param.optional === true;
134
- }
135
- function getTypeAnnotationInfo(param) {
136
- const target = param.type === "AssignmentPattern" ? param.left : param;
137
- if (!("typeAnnotation" in target) || !target.typeAnnotation) {
138
- return void 0;
139
- }
140
- const annotation = target.typeAnnotation;
141
- const typeNode = annotation["typeAnnotation"];
142
- if (!typeNode || typeof typeNode !== "object") {
143
- return void 0;
144
- }
145
- const typeNodeObj = typeNode;
146
- if (typeNodeObj["type"] === "TSTypeReference" && typeNodeObj["typeName"] && typeof typeNodeObj["typeName"] === "object") {
147
- const typeName = typeNodeObj["typeName"];
148
- if (typeName["type"] === "Identifier" && typeof typeName["name"] === "string") {
149
- return { name: typeName["name"], node: typeNode };
150
- }
151
- }
152
- return void 0;
153
- }
154
- function toPascalCase(name) {
155
- return name.charAt(0).toUpperCase() + name.slice(1);
156
- }
157
64
  },
158
65
  meta: {
159
66
  docs: {
@@ -166,8 +73,101 @@ const paramsOptionsNameMatch = {
166
73
  type: "suggestion"
167
74
  }
168
75
  };
76
+ function getClassName(methodDefinition) {
77
+ const classBody = methodDefinition.parent;
78
+ const classNode = classBody?.parent;
79
+ if (!classNode || !("id" in classNode) || !classNode.id || typeof classNode.id !== "object" || !("name" in classNode.id) || typeof classNode.id.name !== "string") {
80
+ return void 0;
81
+ }
82
+ return classNode.id.name;
83
+ }
84
+ function getExpectedPrefix(node) {
85
+ const methodPrefix = getMethodExpectedPrefix(node);
86
+ if (methodPrefix !== void 0) {
87
+ return methodPrefix;
88
+ }
89
+ return getFunctionExpectedPrefix(node);
90
+ }
91
+ function getFunctionExpectedPrefix(node) {
92
+ if ("id" in node && node.id && typeof node.id === "object" && "name" in node.id && typeof node.id.name === "string") {
93
+ return toPascalCase(node.id.name);
94
+ }
95
+ if (node.parent?.type === "VariableDeclarator" && "id" in node.parent && node.parent.id && typeof node.parent.id === "object" && "name" in node.parent.id && typeof node.parent.id.name === "string") {
96
+ return toPascalCase(node.parent.id.name);
97
+ }
98
+ return void 0;
99
+ }
100
+ function getMethodExpectedPrefix(node) {
101
+ const methodDefinition = node.parent;
102
+ if (methodDefinition?.type !== "MethodDefinition") {
103
+ return void 0;
104
+ }
105
+ if (!("key" in methodDefinition) || !methodDefinition.key || typeof methodDefinition.key !== "object" || !("name" in methodDefinition.key) || typeof methodDefinition.key.name !== "string") {
106
+ return void 0;
107
+ }
108
+ const methodName = methodDefinition.key.name;
109
+ const className = getClassName(methodDefinition);
110
+ if (!className) {
111
+ return void 0;
112
+ }
113
+ if (methodName === "constructor") {
114
+ return `${className}Constructor`;
115
+ }
116
+ return className + toPascalCase(methodName);
117
+ }
118
+ function getTypeAnnotationInfo(parameter) {
119
+ const target = parameter.type === "AssignmentPattern" ? parameter.left : parameter;
120
+ if (!("typeAnnotation" in target) || !target.typeAnnotation) {
121
+ return void 0;
122
+ }
123
+ const annotation = target.typeAnnotation;
124
+ const typeNode = annotation["typeAnnotation"];
125
+ if (!typeNode || typeof typeNode !== "object") {
126
+ return void 0;
127
+ }
128
+ const typeNodeObject = typeNode;
129
+ if (typeNodeObject["type"] === "TSTypeReference" && typeNodeObject["typeName"] && typeof typeNodeObject["typeName"] === "object") {
130
+ const typeName = typeNodeObject["typeName"];
131
+ if (typeName["type"] === "Identifier" && typeof typeName["name"] === "string") {
132
+ return { name: typeName["name"], node: typeNode };
133
+ }
134
+ }
135
+ return void 0;
136
+ }
137
+ function isInExportedScope(node) {
138
+ const methodDefinition = node.parent;
139
+ if (methodDefinition?.type === "MethodDefinition") {
140
+ const classBody = methodDefinition.parent;
141
+ const classNode = classBody?.parent;
142
+ if (!classNode) {
143
+ return false;
144
+ }
145
+ const classParent = classNode.parent;
146
+ return classParent?.type === "ExportNamedDeclaration" || classParent?.type === "ExportDefaultDeclaration";
147
+ }
148
+ if (node.type === "FunctionDeclaration") {
149
+ const parentNode = node.parent;
150
+ return parentNode?.type === "ExportNamedDeclaration" || parentNode?.type === "ExportDefaultDeclaration";
151
+ }
152
+ if (node.parent?.type === "VariableDeclarator") {
153
+ const variableDeclaration = node.parent.parent;
154
+ if (variableDeclaration?.parent?.type === "ExportNamedDeclaration") {
155
+ return true;
156
+ }
157
+ }
158
+ return false;
159
+ }
160
+ function isOptionalParameter(parameter) {
161
+ if (parameter.type === "AssignmentPattern") {
162
+ return true;
163
+ }
164
+ return parameter.optional === true;
165
+ }
166
+ function toPascalCase(name) {
167
+ return name.charAt(0).toUpperCase() + name.slice(1);
168
+ }
169
169
  export {
170
170
  MESSAGE_ID,
171
171
  paramsOptionsNameMatch
172
172
  };
173
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHBhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2hcbiAqXG4gKiBFbnN1cmVzIHRoYXQgcGFyYW1ldGVyLWJhZyB0eXBlIG5hbWVzIG1hdGNoIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0aGV5XG4gKiBiZWxvbmcgdG8sIG9uIHR3byBheGVzIFx1MjAxNCBhIHByZWZpeCBkZXJpdmVkIGZyb20gdGhlIG93bmVyIGFuZCBhIHN1ZmZpeCBkZXJpdmVkXG4gKiBmcm9tIGhvdyB0aGUgYmFnIGlzIHBhc3NlZC5cbiAqXG4gKiBQcmVmaXggKG93bmVyKTpcbiAqIC0gYGZvb0JhcihwYXJhbXM6IEZvb0Jhclx1MjAyNilgIFx1MjAxNCBQYXNjYWxDYXNlIG9mIHRoZSBmdW5jdGlvbiBuYW1lXG4gKiAtIGBjbGFzcyBCYXogeyBjb25zdHJ1Y3RvcihwYXJhbXM6IEJhekNvbnN0cnVjdG9yXHUyMDI2KSB9YCBcdTIwMTQgQ2xhc3NOYW1lICsgYENvbnN0cnVjdG9yYFxuICogLSBgY2xhc3MgQmF6IHsgbWV0aG9kKHBhcmFtczogQmF6TWV0aG9kXHUyMDI2KSB9YCBcdTIwMTQgQ2xhc3NOYW1lICsgUGFzY2FsQ2FzZShtZXRob2ROYW1lKVxuICpcbiAqIFN1ZmZpeCAod2hldGhlciB0aGUgYmFnIGlzIGEgcmVxdWlyZWQgc29sZSBhcmd1bWVudCk6XG4gKiAtIGBQYXJhbXNgIG9ubHkgd2hlbiB0aGUgYmFnIGlzIHRoZSBTT0xFIGFuZCBSRVFVSVJFRCBwYXJhbWV0ZXIgXHUyMDE0XG4gKiAgIGBmb29CYXIocGFyYW1zOiBGb29CYXJQYXJhbXMpYFxuICogLSBgT3B0aW9uc2Agb3RoZXJ3aXNlLiBUaGF0IGlzOiBhbiBPUFRJT05BTCBiYWcgXHUyMDE0IGBmb29CYXIob3B0aW9ucz86IEZvb0Jhck9wdGlvbnMpYFxuICogICBvciBgZm9vQmFyKG9wdGlvbnM6IEZvb0Jhck9wdGlvbnMgPSB7fSlgIFx1MjAxNCBvciBhIGJhZyBTVVBQTEVNRU5UQVJZIHRvIG90aGVyXG4gKiAgIHBhcmFtZXRlcnMgXHUyMDE0IGBmb29CYXIoYmF6OiBzdHJpbmcsIG9wdGlvbnM6IEZvb0Jhck9wdGlvbnMpYC5cbiAqXG4gKiBPbmx5IGNoZWNrcyBwYXJhbWV0ZXJzIHdob3NlIHR5cGUgYW5ub3RhdGlvbiBuYW1lIGVuZHMgd2l0aCBgUGFyYW1zYCBvclxuICogYE9wdGlvbnNgLiBPbmx5IGNoZWNrcyBleHBvcnRlZCBmdW5jdGlvbnMgYW5kIG1lbWJlcnMgb2YgZXhwb3J0ZWQgY2xhc3Nlc1xuICogKHJlZ2FyZGxlc3Mgb2YgYWNjZXNzaWJpbGl0eSBcdTIwMTQgYHB1YmxpY2AsIGBwcm90ZWN0ZWRgLCBhbmQgYHByaXZhdGVgIGFyZSBhbGxcbiAqIGNoZWNrZWQpIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyBmcm9tIGludGVybmFsIG9wdGlvbnMtcGFzc3Rocm91Z2ggaGVscGVycy5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFJ1bGUuTm9kZSBwYXJlbnQvcHJvcGVydHkgdHlwZXMgYXJlIHdpZGVyIHRoYW4gd2hhdCB0aGUgdHlwZSBjaGVja2VyIGluZmVyczsgZGVmZW5zaXZlIGNoZWNrcyBhcmUgYXBwcm9wcmlhdGUgZm9yIEFTVCB0cmF2ZXJzYWwuICovXG5cbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmNvbnN0IFBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOID0gLyg/OlBhcmFtc3xPcHRpb25zKSQvO1xuY29uc3QgUEFSQU1TX1NVRkZJWCA9ICdQYXJhbXMnO1xuY29uc3QgT1BUSU9OU19TVUZGSVggPSAnT3B0aW9ucyc7XG5cbi8qKiBNZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSBwYXJhbWV0ZXItYmFnIHR5cGUncyBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBuYW1lIChwcmVmaXggYW5kIHJlcXVpcmVkL29wdGlvbmFsIHN1ZmZpeCkgZm9yIGl0cyBmdW5jdGlvbiBvciBjb25zdHJ1Y3Rvci4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEID0gJ3BhcmFtc09wdGlvbnNOYW1lTWF0Y2gnO1xuXG5pbnRlcmZhY2UgRnVuY3Rpb25Ob2RlV2l0aFBhcmFtcyB7XG4gIHJlYWRvbmx5IHBhcmFtczogUnVsZS5Ob2RlW107XG59XG5cbmludGVyZmFjZSBNYXliZU9wdGlvbmFsTm9kZSB7XG4gIHJlYWRvbmx5IG9wdGlvbmFsPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uSW5mbyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbm9kZTogUnVsZS5Ob2RlO1xufVxuXG5leHBvcnQgY29uc3QgcGFyYW1zT3B0aW9uc05hbWVNYXRjaDogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICAnOmZ1bmN0aW9uW3BhcmFtcy5sZW5ndGg+MF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzSW5FeHBvcnRlZFNjb3BlKG5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm5Ob2RlID0gbm9kZSBhcyBGdW5jdGlvbk5vZGVXaXRoUGFyYW1zICYgUnVsZS5Ob2RlO1xuICAgICAgICBjb25zdCBleHBlY3RlZFByZWZpeCA9IGdldEV4cGVjdGVkUHJlZml4KG5vZGUpO1xuICAgICAgICBpZiAoIWV4cGVjdGVkUHJlZml4KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNTb2xlUGFyYW0gPSBmbk5vZGUucGFyYW1zLmxlbmd0aCA9PT0gMTtcblxuICAgICAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIGZuTm9kZS5wYXJhbXMpIHtcbiAgICAgICAgICBjb25zdCB0eXBlSW5mbyA9IGdldFR5cGVBbm5vdGF0aW9uSW5mbyhwYXJhbSk7XG4gICAgICAgICAgaWYgKCF0eXBlSW5mbykge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFQQVJBTVNfT1BUSU9OU19TVUZGSVhfUEFUVEVSTi50ZXN0KHR5cGVJbmZvLm5hbWUpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBIHJlcXVpcmVkIHNvbGUtYXJndW1lbnQgYmFnIFx1MjE5MiBgKlBhcmFtc2AuIEFuIG9wdGlvbmFsIGJhZyAoYD9gIG9yIGEgZGVmYXVsdFxuICAgICAgICAgIC8vIFZhbHVlKSBvciBhIGJhZyBzdXBwbGVtZW50YXJ5IHRvIG90aGVyIHBhcmFtZXRlcnMgXHUyMTkyIGAqT3B0aW9uc2AuXG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWRTdWZmaXggPSBpc1NvbGVQYXJhbSAmJiAhaXNPcHRpb25hbFBhcmFtKHBhcmFtKSA/IFBBUkFNU19TVUZGSVggOiBPUFRJT05TX1NVRkZJWDtcbiAgICAgICAgICBjb25zdCBleHBlY3RlZE5hbWUgPSBgJHtleHBlY3RlZFByZWZpeH0ke2V4cGVjdGVkU3VmZml4fWA7XG5cbiAgICAgICAgICBpZiAodHlwZUluZm8ubmFtZSAhPT0gZXhwZWN0ZWROYW1lKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBhY3R1YWxOYW1lOiB0eXBlSW5mby5uYW1lLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkTmFtZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSUQsXG4gICAgICAgICAgICAgIG5vZGU6IHR5cGVJbmZvLm5vZGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc0luRXhwb3J0ZWRTY29wZShub2RlOiBSdWxlLk5vZGUpOiBib29sZWFuIHtcbiAgICAgIC8vIENsYXNzIG1ldGhvZCBvciBjb25zdHJ1Y3RvcjogY2hlY2sgdGhhdCB0aGUgY2xhc3MgaXMgZXhwb3J0ZWQsIHJlZ2FyZGxlc3Mgb2YgYWNjZXNzaWJpbGl0eVxuICAgICAgLy8gKHB1YmxpYy9wcm90ZWN0ZWQvcHJpdmF0ZSBtZW1iZXJzIGFyZSBhbGwgY2hlY2tlZCkuXG4gICAgICBjb25zdCBtZXRob2REZWYgPSBub2RlLnBhcmVudDtcbiAgICAgIGlmIChtZXRob2REZWY/LnR5cGUgPT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgY2xhc3MgaXRzZWxmIGlzIGV4cG9ydGVkXG4gICAgICAgIGNvbnN0IGNsYXNzQm9keSA9IG1ldGhvZERlZi5wYXJlbnQ7XG4gICAgICAgIGNvbnN0IGNsYXNzTm9kZSA9IGNsYXNzQm9keT8ucGFyZW50O1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIGFsd2F5cyBoYXMgcGFyZW50IGNoYWluIGZvciBjbGFzcyBtZXRob2RzLiAqL1xuICAgICAgICBpZiAoIWNsYXNzTm9kZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICBjb25zdCBjbGFzc1BhcmVudCA9IGNsYXNzTm9kZS5wYXJlbnQ7XG4gICAgICAgIHJldHVybiBjbGFzc1BhcmVudD8udHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nIHx8IGNsYXNzUGFyZW50Py50eXBlID09PSAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJztcbiAgICAgIH1cblxuICAgICAgLy8gVG9wLWxldmVsIGZ1bmN0aW9uOiBjaGVjayBpZiBleHBvcnRlZFxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uRGVjbGFyYXRpb24nKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudDtcbiAgICAgICAgcmV0dXJuIHBhcmVudE5vZGU/LnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJyB8fCBwYXJlbnROb2RlPy50eXBlID09PSAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJztcbiAgICAgIH1cblxuICAgICAgLy8gQXJyb3cgZnVuY3Rpb24gaW4gdmFyaWFibGU6IGNoZWNrIGlmIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBpcyBleHBvcnRlZFxuICAgICAgaWYgKG5vZGUucGFyZW50Py50eXBlID09PSAnVmFyaWFibGVEZWNsYXJhdG9yJykge1xuICAgICAgICBjb25zdCB2YXJEZWNsID0gbm9kZS5wYXJlbnQucGFyZW50O1xuICAgICAgICBpZiAodmFyRGVjbD8ucGFyZW50Py50eXBlID09PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXhwZWN0ZWRQcmVmaXgobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgIGNvbnN0IG1ldGhvZFByZWZpeCA9IGdldE1ldGhvZEV4cGVjdGVkUHJlZml4KG5vZGUpO1xuICAgICAgaWYgKG1ldGhvZFByZWZpeCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBtZXRob2RQcmVmaXg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnZXRGdW5jdGlvbkV4cGVjdGVkUHJlZml4KG5vZGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE1ldGhvZEV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICBjb25zdCBtZXRob2REZWYgPSBub2RlLnBhcmVudDtcbiAgICAgIGlmIChtZXRob2REZWY/LnR5cGUgIT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIE1ldGhvZERlZmluaXRpb24gYWx3YXlzIGhhcyBhIG5hbWVkIGtleS4gKi9cbiAgICAgIGlmIChcbiAgICAgICAgISgna2V5JyBpbiBtZXRob2REZWYpIHx8ICFtZXRob2REZWYua2V5IHx8IHR5cGVvZiBtZXRob2REZWYua2V5ICE9PSAnb2JqZWN0JyB8fCAhKCduYW1lJyBpbiBtZXRob2REZWYua2V5KSB8fCB0eXBlb2YgbWV0aG9kRGVmLmtleS5uYW1lICE9PSAnc3RyaW5nJ1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gbWV0aG9kRGVmLmtleS5uYW1lO1xuICAgICAgY29uc3QgY2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKG1ldGhvZERlZik7XG4gICAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICByZXR1cm4gYCR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yYDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsYXNzTmFtZSArIHRvUGFzY2FsQ2FzZShtZXRob2ROYW1lKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDbGFzc05hbWUobWV0aG9kRGVmOiBSdWxlLk5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgY29uc3QgY2xhc3NCb2R5ID0gbWV0aG9kRGVmLnBhcmVudDtcbiAgICAgIGNvbnN0IGNsYXNzTm9kZSA9IGNsYXNzQm9keT8ucGFyZW50O1xuICAgICAgaWYgKFxuICAgICAgICAhY2xhc3NOb2RlIHx8ICEoJ2lkJyBpbiBjbGFzc05vZGUpIHx8ICFjbGFzc05vZGUuaWQgfHwgdHlwZW9mIGNsYXNzTm9kZS5pZCAhPT0gJ29iamVjdCcgfHwgISgnbmFtZScgaW4gY2xhc3NOb2RlLmlkKVxuICAgICAgICB8fCB0eXBlb2YgY2xhc3NOb2RlLmlkLm5hbWUgIT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGFzc05vZGUuaWQubmFtZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRGdW5jdGlvbkV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAvLyBOYW1lZCBmdW5jdGlvbiBkZWNsYXJhdGlvbjogZnVuY3Rpb24gZm9vQmFyKHBhcmFtczogRm9vQmFyUGFyYW1zKVxuICAgICAgaWYgKCdpZCcgaW4gbm9kZSAmJiBub2RlLmlkICYmIHR5cGVvZiBub2RlLmlkID09PSAnb2JqZWN0JyAmJiAnbmFtZScgaW4gbm9kZS5pZCAmJiB0eXBlb2Ygbm9kZS5pZC5uYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdG9QYXNjYWxDYXNlKG5vZGUuaWQubmFtZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFycm93IGZ1bmN0aW9uIGFzc2lnbmVkIHRvIGEgdmFyaWFibGU6IGNvbnN0IGZvb0JhciA9IChwYXJhbXM6IEZvb0JhclBhcmFtcykgPT4gLi4uXG4gICAgICBpZiAoXG4gICAgICAgIG5vZGUucGFyZW50Py50eXBlID09PSAnVmFyaWFibGVEZWNsYXJhdG9yJyAmJiAnaWQnIGluIG5vZGUucGFyZW50ICYmIG5vZGUucGFyZW50LmlkICYmIHR5cGVvZiBub2RlLnBhcmVudC5pZCA9PT0gJ29iamVjdCcgJiYgJ25hbWUnIGluIG5vZGUucGFyZW50LmlkXG4gICAgICAgICYmIHR5cGVvZiBub2RlLnBhcmVudC5pZC5uYW1lID09PSAnc3RyaW5nJ1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0b1Bhc2NhbENhc2Uobm9kZS5wYXJlbnQuaWQubmFtZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPcHRpb25hbFBhcmFtKHBhcmFtOiBSdWxlLk5vZGUpOiBib29sZWFuIHtcbiAgICAgIC8vIGBvcHRpb25zOiBGb29PcHRpb25zID0ge31gIGlzIGFuIEFzc2lnbm1lbnRQYXR0ZXJuOyBgb3B0aW9ucz86IEZvb09wdGlvbnNgIGNhcnJpZXMgYW5cbiAgICAgIC8vIGBvcHRpb25hbGAgZmxhZy4gQm90aCBtYWtlIHRoZSBiYWcgb3B0aW9uYWwgXHUyMTkyIGAqT3B0aW9uc2AuXG4gICAgICBpZiAocGFyYW0udHlwZSA9PT0gJ0Fzc2lnbm1lbnRQYXR0ZXJuJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAocGFyYW0gYXMgTWF5YmVPcHRpb25hbE5vZGUpLm9wdGlvbmFsID09PSB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFR5cGVBbm5vdGF0aW9uSW5mbyhwYXJhbTogUnVsZS5Ob2RlKTogVHlwZUFubm90YXRpb25JbmZvIHwgdW5kZWZpbmVkIHtcbiAgICAgIC8vIFVud3JhcCBhIGRlZmF1bHRlZCBwYXJhbWV0ZXIgc3VjaCBhcyBgb3B0aW9uczogRm9vT3B0aW9ucyA9IHt9YC5cbiAgICAgIC8vIEl0cyB0eXBlIGFubm90YXRpb24gbGl2ZXMgb24gdGhlIEFzc2lnbm1lbnRQYXR0ZXJuJ3MgbGVmdC1oYW5kIGJpbmRpbmcuXG4gICAgICBjb25zdCB0YXJnZXQgPSBwYXJhbS50eXBlID09PSAnQXNzaWdubWVudFBhdHRlcm4nID8gcGFyYW0ubGVmdCA6IHBhcmFtO1xuXG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBUeXBlU2NyaXB0LXBhcnNlZCBwYXJhbXMgYWx3YXlzIGhhdmUgdHlwZUFubm90YXRpb24gd2hlbiB0eXBlZC4gKi9cbiAgICAgIGlmICghKCd0eXBlQW5ub3RhdGlvbicgaW4gdGFyZ2V0KSB8fCAhdGFyZ2V0LnR5cGVBbm5vdGF0aW9uKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gICAgICBjb25zdCBhbm5vdGF0aW9uID0gdGFyZ2V0LnR5cGVBbm5vdGF0aW9uIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3QgdHlwZU5vZGUgPSBhbm5vdGF0aW9uWyd0eXBlQW5ub3RhdGlvbiddO1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogdGhlIFR5cGVTY3JpcHQgcGFyc2VyIGFsd2F5cyBwcm9kdWNlcyBhbiBBU1Qgbm9kZSBmb3IgdHlwZUFubm90YXRpb24uICovXG4gICAgICBpZiAoIXR5cGVOb2RlIHx8IHR5cGVvZiB0eXBlTm9kZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICAgIGNvbnN0IHR5cGVOb2RlT2JqID0gdHlwZU5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICAgIC8vIERpcmVjdCByZWZlcmVuY2U6IEZvb0JhclBhcmFtc1xuICAgICAgaWYgKHR5cGVOb2RlT2JqWyd0eXBlJ10gPT09ICdUU1R5cGVSZWZlcmVuY2UnICYmIHR5cGVOb2RlT2JqWyd0eXBlTmFtZSddICYmIHR5cGVvZiB0eXBlTm9kZU9ialsndHlwZU5hbWUnXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlTm9kZU9ialsndHlwZU5hbWUnXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVFNUeXBlUmVmZXJlbmNlIHR5cGVOYW1lIGlzIGFsd2F5cyBhbiBJZGVudGlmaWVyIHdpdGggYSBzdHJpbmcgbmFtZS4gKi9cbiAgICAgICAgaWYgKHR5cGVOYW1lWyd0eXBlJ10gPT09ICdJZGVudGlmaWVyJyAmJiB0eXBlb2YgdHlwZU5hbWVbJ25hbWUnXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICAgIHJldHVybiB7IG5hbWU6IHR5cGVOYW1lWyduYW1lJ10sIG5vZGU6IHR5cGVOb2RlIGFzIFJ1bGUuTm9kZSB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9QYXNjYWxDYXNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG4gICAgfVxuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGAqUGFyYW1zYC9gKk9wdGlvbnNgIHR5cGUgbmFtZXMgdG8gbWF0Y2ggdGhlIG93bmluZyBmdW5jdGlvbi9jb25zdHJ1Y3RvciAocHJlZml4KSBhbmQgdGhlIHNvbGUtdnMtc3VwcGxlbWVudGFyeSBhcmd1bWVudCBjb252ZW50aW9uIChzdWZmaXgpJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1R5cGUgXCJ7eyBhY3R1YWxOYW1lIH19XCIgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIG5hbWUgXCJ7eyBleHBlY3RlZE5hbWUgfX1cIiBmb3IgdGhpcyBmdW5jdGlvbi9jb25zdHJ1Y3Rvci4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUmUtZW5hYmxlIGFmdGVyIEFTVCB0cmF2ZXJzYWwgY29kZS4gKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0JBLE1BQU0sZ0NBQWdDO0FBQ3RDLE1BQU0sZ0JBQWdCO0FBQ3RCLE1BQU0saUJBQWlCO0FBR2hCLE1BQU0sYUFBYTtBQWVuQixNQUFNLHlCQUEwQztBQUFBLEVBQ3JELE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLDZCQUE2QixNQUF1QjtBQUNsRCxZQUFJLENBQUMsa0JBQWtCLElBQUksR0FBRztBQUM1QjtBQUFBLFFBQ0Y7QUFFQSxjQUFNLFNBQVM7QUFDZixjQUFNLGlCQUFpQixrQkFBa0IsSUFBSTtBQUM3QyxZQUFJLENBQUMsZ0JBQWdCO0FBQ25CO0FBQUEsUUFDRjtBQUVBLGNBQU0sY0FBYyxPQUFPLE9BQU8sV0FBVztBQUU3QyxtQkFBVyxTQUFTLE9BQU8sUUFBUTtBQUNqQyxnQkFBTSxXQUFXLHNCQUFzQixLQUFLO0FBQzVDLGNBQUksQ0FBQyxVQUFVO0FBQ2I7QUFBQSxVQUNGO0FBRUEsY0FBSSxDQUFDLDhCQUE4QixLQUFLLFNBQVMsSUFBSSxHQUFHO0FBQ3REO0FBQUEsVUFDRjtBQUlBLGdCQUFNLGlCQUFpQixlQUFlLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxnQkFBZ0I7QUFDaEYsZ0JBQU0sZUFBZSxHQUFHLGNBQWMsR0FBRyxjQUFjO0FBRXZELGNBQUksU0FBUyxTQUFTLGNBQWM7QUFDbEMsb0JBQVEsT0FBTztBQUFBLGNBQ2IsTUFBTTtBQUFBLGdCQUNKLFlBQVksU0FBUztBQUFBLGdC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
173
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHBhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2hcbiAqXG4gKiBFbnN1cmVzIHRoYXQgcGFyYW1ldGVyLWJhZyB0eXBlIG5hbWVzIG1hdGNoIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0aGV5XG4gKiBiZWxvbmcgdG8sIG9uIHR3byBheGVzIFx1MjAxNCBhIHByZWZpeCBkZXJpdmVkIGZyb20gdGhlIG93bmVyIGFuZCBhIHN1ZmZpeCBkZXJpdmVkXG4gKiBmcm9tIGhvdyB0aGUgYmFnIGlzIHBhc3NlZC5cbiAqXG4gKiBQcmVmaXggKG93bmVyKTpcbiAqIC0gYGZvb0JhcihwYXJhbXM6IEZvb0Jhclx1MjAyNilgIFx1MjAxNCBQYXNjYWxDYXNlIG9mIHRoZSBmdW5jdGlvbiBuYW1lXG4gKiAtIGBjbGFzcyBCYXogeyBjb25zdHJ1Y3RvcihwYXJhbXM6IEJhekNvbnN0cnVjdG9yXHUyMDI2KSB9YCBcdTIwMTQgQ2xhc3NOYW1lICsgYENvbnN0cnVjdG9yYFxuICogLSBgY2xhc3MgQmF6IHsgbWV0aG9kKHBhcmFtczogQmF6TWV0aG9kXHUyMDI2KSB9YCBcdTIwMTQgQ2xhc3NOYW1lICsgUGFzY2FsQ2FzZShtZXRob2ROYW1lKVxuICpcbiAqIFN1ZmZpeCAod2hldGhlciB0aGUgYmFnIGlzIGEgcmVxdWlyZWQgc29sZSBhcmd1bWVudCk6XG4gKiAtIGBQYXJhbXNgIG9ubHkgd2hlbiB0aGUgYmFnIGlzIHRoZSBTT0xFIGFuZCBSRVFVSVJFRCBwYXJhbWV0ZXIgXHUyMDE0XG4gKiAgIGBmb29CYXIocGFyYW1zOiBGb29CYXJQYXJhbXMpYFxuICogLSBgT3B0aW9uc2Agb3RoZXJ3aXNlLiBUaGF0IGlzOiBhbiBPUFRJT05BTCBiYWcgXHUyMDE0IGBmb29CYXIob3B0aW9ucz86IEZvb0Jhck9wdGlvbnMpYFxuICogICBvciBgZm9vQmFyKG9wdGlvbnM6IEZvb0Jhck9wdGlvbnMgPSB7fSlgIFx1MjAxNCBvciBhIGJhZyBTVVBQTEVNRU5UQVJZIHRvIG90aGVyXG4gKiAgIHBhcmFtZXRlcnMgXHUyMDE0IGBmb29CYXIoYmF6OiBzdHJpbmcsIG9wdGlvbnM6IEZvb0Jhck9wdGlvbnMpYC5cbiAqXG4gKiBPbmx5IGNoZWNrcyBwYXJhbWV0ZXJzIHdob3NlIHR5cGUgYW5ub3RhdGlvbiBuYW1lIGVuZHMgd2l0aCBgUGFyYW1zYCBvclxuICogYE9wdGlvbnNgLiBPbmx5IGNoZWNrcyBleHBvcnRlZCBmdW5jdGlvbnMgYW5kIG1lbWJlcnMgb2YgZXhwb3J0ZWQgY2xhc3Nlc1xuICogKHJlZ2FyZGxlc3Mgb2YgYWNjZXNzaWJpbGl0eSBcdTIwMTQgYHB1YmxpY2AsIGBwcm90ZWN0ZWRgLCBhbmQgYHByaXZhdGVgIGFyZSBhbGxcbiAqIGNoZWNrZWQpIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyBmcm9tIGludGVybmFsIG9wdGlvbnMtcGFzc3Rocm91Z2ggaGVscGVycy5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFJ1bGUuTm9kZSBwYXJlbnQvcHJvcGVydHkgdHlwZXMgYXJlIHdpZGVyIHRoYW4gd2hhdCB0aGUgdHlwZSBjaGVja2VyIGluZmVyczsgZGVmZW5zaXZlIGNoZWNrcyBhcmUgYXBwcm9wcmlhdGUgZm9yIEFTVCB0cmF2ZXJzYWwuICovXG5cbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmNvbnN0IFBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOID0gLyg/OlBhcmFtc3xPcHRpb25zKSQvO1xuY29uc3QgUEFSQU1TX1NVRkZJWCA9ICdQYXJhbXMnO1xuY29uc3QgT1BUSU9OU19TVUZGSVggPSAnT3B0aW9ucyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgcGFyYW1ldGVyLWJhZyB0eXBlJ3MgbmFtZSBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgbmFtZSAocHJlZml4IGFuZCByZXF1aXJlZC9vcHRpb25hbCBzdWZmaXgpIGZvciBpdHMgZnVuY3Rpb24gb3IgY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEID0gJ3BhcmFtc09wdGlvbnNOYW1lTWF0Y2gnO1xuXG5pbnRlcmZhY2UgRnVuY3Rpb25Ob2RlV2l0aFBhcmFtcyB7XG4gIHJlYWRvbmx5IHBhcmFtczogUnVsZS5Ob2RlW107XG59XG5cbmludGVyZmFjZSBNYXliZU9wdGlvbmFsTm9kZSB7XG4gIHJlYWRvbmx5IG9wdGlvbmFsPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uSW5mbyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbm9kZTogUnVsZS5Ob2RlO1xufVxuXG5leHBvcnQgY29uc3QgcGFyYW1zT3B0aW9uc05hbWVNYXRjaDogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICAnOmZ1bmN0aW9uW3BhcmFtcy5sZW5ndGg+MF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzSW5FeHBvcnRlZFNjb3BlKG5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnVuY3Rpb25Ob2RlID0gbm9kZSBhcyBGdW5jdGlvbk5vZGVXaXRoUGFyYW1zICYgUnVsZS5Ob2RlO1xuICAgICAgICBjb25zdCBleHBlY3RlZFByZWZpeCA9IGdldEV4cGVjdGVkUHJlZml4KG5vZGUpO1xuICAgICAgICBpZiAoIWV4cGVjdGVkUHJlZml4KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNTb2xlUGFyYW1ldGVyID0gZnVuY3Rpb25Ob2RlLnBhcmFtcy5sZW5ndGggPT09IDE7XG5cbiAgICAgICAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgZnVuY3Rpb25Ob2RlLnBhcmFtcykge1xuICAgICAgICAgIGNvbnN0IHR5cGVJbmZvID0gZ2V0VHlwZUFubm90YXRpb25JbmZvKHBhcmFtZXRlcik7XG4gICAgICAgICAgaWYgKCF0eXBlSW5mbykge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFQQVJBTVNfT1BUSU9OU19TVUZGSVhfUEFUVEVSTi50ZXN0KHR5cGVJbmZvLm5hbWUpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBIHJlcXVpcmVkIHNvbGUtYXJndW1lbnQgYmFnIFx1MjE5MiBgKlBhcmFtc2AuIEFuIG9wdGlvbmFsIGJhZyAoYD9gIG9yIGEgZGVmYXVsdFxuICAgICAgICAgIC8vIFZhbHVlKSBvciBhIGJhZyBzdXBwbGVtZW50YXJ5IHRvIG90aGVyIHBhcmFtZXRlcnMgXHUyMTkyIGAqT3B0aW9uc2AuXG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWRTdWZmaXggPSBpc1NvbGVQYXJhbWV0ZXIgJiYgIWlzT3B0aW9uYWxQYXJhbWV0ZXIocGFyYW1ldGVyKSA/IFBBUkFNU19TVUZGSVggOiBPUFRJT05TX1NVRkZJWDtcbiAgICAgICAgICBjb25zdCBleHBlY3RlZE5hbWUgPSBgJHtleHBlY3RlZFByZWZpeH0ke2V4cGVjdGVkU3VmZml4fWA7XG5cbiAgICAgICAgICBpZiAodHlwZUluZm8ubmFtZSAhPT0gZXhwZWN0ZWROYW1lKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBhY3R1YWxOYW1lOiB0eXBlSW5mby5uYW1lLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkTmFtZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSUQsXG4gICAgICAgICAgICAgIG5vZGU6IHR5cGVJbmZvLm5vZGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1JlcXVpcmUgYCpQYXJhbXNgL2AqT3B0aW9uc2AgdHlwZSBuYW1lcyB0byBtYXRjaCB0aGUgb3duaW5nIGZ1bmN0aW9uL2NvbnN0cnVjdG9yIChwcmVmaXgpIGFuZCB0aGUgc29sZS12cy1zdXBwbGVtZW50YXJ5IGFyZ3VtZW50IGNvbnZlbnRpb24gKHN1ZmZpeCknXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnVHlwZSBcInt7IGFjdHVhbE5hbWUgfX1cIiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgbmFtZSBcInt7IGV4cGVjdGVkTmFtZSB9fVwiIGZvciB0aGlzIGZ1bmN0aW9uL2NvbnN0cnVjdG9yLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldENsYXNzTmFtZShtZXRob2REZWZpbml0aW9uOiBSdWxlLk5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjbGFzc0JvZHkgPSBtZXRob2REZWZpbml0aW9uLnBhcmVudDtcbiAgY29uc3QgY2xhc3NOb2RlID0gY2xhc3NCb2R5Py5wYXJlbnQ7XG4gIGlmIChcbiAgICAhY2xhc3NOb2RlIHx8ICEoJ2lkJyBpbiBjbGFzc05vZGUpIHx8ICFjbGFzc05vZGUuaWQgfHwgdHlwZW9mIGNsYXNzTm9kZS5pZCAhPT0gJ29iamVjdCcgfHwgISgnbmFtZScgaW4gY2xhc3NOb2RlLmlkKVxuICAgIHx8IHR5cGVvZiBjbGFzc05vZGUuaWQubmFtZSAhPT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gY2xhc3NOb2RlLmlkLm5hbWU7XG59XG5cbmZ1bmN0aW9uIGdldEV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1ldGhvZFByZWZpeCA9IGdldE1ldGhvZEV4cGVjdGVkUHJlZml4KG5vZGUpO1xuICBpZiAobWV0aG9kUHJlZml4ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbWV0aG9kUHJlZml4O1xuICB9XG5cbiAgcmV0dXJuIGdldEZ1bmN0aW9uRXhwZWN0ZWRQcmVmaXgobm9kZSk7XG59XG5cbmZ1bmN0aW9uIGdldEZ1bmN0aW9uRXhwZWN0ZWRQcmVmaXgobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gTmFtZWQgZnVuY3Rpb24gZGVjbGFyYXRpb246IGZ1bmN0aW9uIGZvb0JhcihwYXJhbXM6IEZvb0JhclBhcmFtcylcbiAgaWYgKCdpZCcgaW4gbm9kZSAmJiBub2RlLmlkICYmIHR5cGVvZiBub2RlLmlkID09PSAnb2JqZWN0JyAmJiAnbmFtZScgaW4gbm9kZS5pZCAmJiB0eXBlb2Ygbm9kZS5pZC5uYW1lID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0b1Bhc2NhbENhc2Uobm9kZS5pZC5uYW1lKTtcbiAgfVxuXG4gIC8vIEFycm93IGZ1bmN0aW9uIGFzc2lnbmVkIHRvIGEgdmFyaWFibGU6IGNvbnN0IGZvb0JhciA9IChwYXJhbXM6IEZvb0JhclBhcmFtcykgPT4gLi4uXG4gIGlmIChcbiAgICBub2RlLnBhcmVudD8udHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRvcicgJiYgJ2lkJyBpbiBub2RlLnBhcmVudCAmJiBub2RlLnBhcmVudC5pZCAmJiB0eXBlb2Ygbm9kZS5wYXJlbnQuaWQgPT09ICdvYmplY3QnICYmICduYW1lJyBpbiBub2RlLnBhcmVudC5pZFxuICAgICYmIHR5cGVvZiBub2RlLnBhcmVudC5pZC5uYW1lID09PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gdG9QYXNjYWxDYXNlKG5vZGUucGFyZW50LmlkLm5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0TWV0aG9kRXhwZWN0ZWRQcmVmaXgobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWV0aG9kRGVmaW5pdGlvbiA9IG5vZGUucGFyZW50O1xuICBpZiAobWV0aG9kRGVmaW5pdGlvbj8udHlwZSAhPT0gJ01ldGhvZERlZmluaXRpb24nKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWZlbnNpdmUgZ3VhcmQ6IEVTTGludCBBU1QgTWV0aG9kRGVmaW5pdGlvbiBhbHdheXMgaGFzIGEgbmFtZWQga2V5LiAqL1xuICBpZiAoXG4gICAgISgna2V5JyBpbiBtZXRob2REZWZpbml0aW9uKSB8fCAhbWV0aG9kRGVmaW5pdGlvbi5rZXkgfHwgdHlwZW9mIG1ldGhvZERlZmluaXRpb24ua2V5ICE9PSAnb2JqZWN0JyB8fCAhKCduYW1lJyBpbiBtZXRob2REZWZpbml0aW9uLmtleSkgfHwgdHlwZW9mIG1ldGhvZERlZmluaXRpb24ua2V5Lm5hbWUgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCBtZXRob2ROYW1lID0gbWV0aG9kRGVmaW5pdGlvbi5rZXkubmFtZTtcbiAgY29uc3QgY2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKG1ldGhvZERlZmluaXRpb24pO1xuICBpZiAoIWNsYXNzTmFtZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAobWV0aG9kTmFtZSA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgIHJldHVybiBgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JgO1xuICB9XG5cbiAgcmV0dXJuIGNsYXNzTmFtZSArIHRvUGFzY2FsQ2FzZShtZXRob2ROYW1lKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHlwZUFubm90YXRpb25JbmZvKHBhcmFtZXRlcjogUnVsZS5Ob2RlKTogVHlwZUFubm90YXRpb25JbmZvIHwgdW5kZWZpbmVkIHtcbiAgLy8gVW53cmFwIGEgZGVmYXVsdGVkIHBhcmFtZXRlciBzdWNoIGFzIGBvcHRpb25zOiBGb29PcHRpb25zID0ge31gLlxuICAvLyBJdHMgdHlwZSBhbm5vdGF0aW9uIGxpdmVzIG9uIHRoZSBBc3NpZ25tZW50UGF0dGVybidzIGxlZnQtaGFuZCBiaW5kaW5nLlxuICBjb25zdCB0YXJnZXQgPSBwYXJhbWV0ZXIudHlwZSA9PT0gJ0Fzc2lnbm1lbnRQYXR0ZXJuJyA/IHBhcmFtZXRlci5sZWZ0IDogcGFyYW1ldGVyO1xuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWZlbnNpdmUgZ3VhcmQ6IFR5cGVTY3JpcHQtcGFyc2VkIHBhcmFtcyBhbHdheXMgaGF2ZSB0eXBlQW5ub3RhdGlvbiB3aGVuIHR5cGVkLiAqL1xuICBpZiAoISgndHlwZUFubm90YXRpb24nIGluIHRhcmdldCkgfHwgIXRhcmdldC50eXBlQW5ub3RhdGlvbikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCBhbm5vdGF0aW9uID0gdGFyZ2V0LnR5cGVBbm5vdGF0aW9uIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCB0eXBlTm9kZSA9IGFubm90YXRpb25bJ3R5cGVBbm5vdGF0aW9uJ107XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWZlbnNpdmUgZ3VhcmQ6IHRoZSBUeXBlU2NyaXB0IHBhcnNlciBhbHdheXMgcHJvZHVjZXMgYW4gQVNUIG5vZGUgZm9yIHR5cGVBbm5vdGF0aW9uLiAqL1xuICBpZiAoIXR5cGVOb2RlIHx8IHR5cGVvZiB0eXBlTm9kZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3QgdHlwZU5vZGVPYmplY3QgPSB0eXBlTm9kZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvLyBEaXJlY3QgcmVmZXJlbmNlOiBGb29CYXJQYXJhbXNcbiAgaWYgKHR5cGVOb2RlT2JqZWN0Wyd0eXBlJ10gPT09ICdUU1R5cGVSZWZlcmVuY2UnICYmIHR5cGVOb2RlT2JqZWN0Wyd0eXBlTmFtZSddICYmIHR5cGVvZiB0eXBlTm9kZU9iamVjdFsndHlwZU5hbWUnXSA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCB0eXBlTmFtZSA9IHR5cGVOb2RlT2JqZWN0Wyd0eXBlTmFtZSddIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWZlbnNpdmUgZ3VhcmQ6IFRTVHlwZVJlZmVyZW5jZSB0eXBlTmFtZSBpcyBhbHdheXMgYW4gSWRlbnRpZmllciB3aXRoIGEgc3RyaW5nIG5hbWUuICovXG4gICAgaWYgKHR5cGVOYW1lWyd0eXBlJ10gPT09ICdJZGVudGlmaWVyJyAmJiB0eXBlb2YgdHlwZU5hbWVbJ25hbWUnXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICByZXR1cm4geyBuYW1lOiB0eXBlTmFtZVsnbmFtZSddLCBub2RlOiB0eXBlTm9kZSBhcyBSdWxlLk5vZGUgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc0luRXhwb3J0ZWRTY29wZShub2RlOiBSdWxlLk5vZGUpOiBib29sZWFuIHtcbiAgLy8gQ2xhc3MgbWV0aG9kIG9yIGNvbnN0cnVjdG9yOiBjaGVjayB0aGF0IHRoZSBjbGFzcyBpcyBleHBvcnRlZCwgcmVnYXJkbGVzcyBvZiBhY2Nlc3NpYmlsaXR5XG4gIC8vIChwdWJsaWMvcHJvdGVjdGVkL3ByaXZhdGUgbWVtYmVycyBhcmUgYWxsIGNoZWNrZWQpLlxuICBjb25zdCBtZXRob2REZWZpbml0aW9uID0gbm9kZS5wYXJlbnQ7XG4gIGlmIChtZXRob2REZWZpbml0aW9uPy50eXBlID09PSAnTWV0aG9kRGVmaW5pdGlvbicpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgY2xhc3MgaXRzZWxmIGlzIGV4cG9ydGVkXG4gICAgY29uc3QgY2xhc3NCb2R5ID0gbWV0aG9kRGVmaW5pdGlvbi5wYXJlbnQ7XG4gICAgY29uc3QgY2xhc3NOb2RlID0gY2xhc3NCb2R5Py5wYXJlbnQ7XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogRVNMaW50IEFTVCBhbHdheXMgaGFzIHBhcmVudCBjaGFpbiBmb3IgY2xhc3MgbWV0aG9kcy4gKi9cbiAgICBpZiAoIWNsYXNzTm9kZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGNvbnN0IGNsYXNzUGFyZW50ID0gY2xhc3NOb2RlLnBhcmVudDtcbiAgICByZXR1cm4gY2xhc3NQYXJlbnQ/LnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJyB8fCBjbGFzc1BhcmVudD8udHlwZSA9PT0gJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbic7XG4gIH1cblxuICAvLyBUb3AtbGV2ZWwgZnVuY3Rpb246IGNoZWNrIGlmIGV4cG9ydGVkXG4gIGlmIChub2RlLnR5cGUgPT09ICdGdW5jdGlvbkRlY2xhcmF0aW9uJykge1xuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudDtcbiAgICByZXR1cm4gcGFyZW50Tm9kZT8udHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nIHx8IHBhcmVudE5vZGU/LnR5cGUgPT09ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nO1xuICB9XG5cbiAgLy8gQXJyb3cgZnVuY3Rpb24gaW4gdmFyaWFibGU6IGNoZWNrIGlmIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBpcyBleHBvcnRlZFxuICBpZiAobm9kZS5wYXJlbnQ/LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InKSB7XG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvbiA9IG5vZGUucGFyZW50LnBhcmVudDtcbiAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbj8ucGFyZW50Py50eXBlID09PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNPcHRpb25hbFBhcmFtZXRlcihwYXJhbWV0ZXI6IFJ1bGUuTm9kZSk6IGJvb2xlYW4ge1xuICAvLyBgb3B0aW9uczogRm9vT3B0aW9ucyA9IHt9YCBpcyBhbiBBc3NpZ25tZW50UGF0dGVybjsgYG9wdGlvbnM/OiBGb29PcHRpb25zYCBjYXJyaWVzIGFuXG4gIC8vIGBvcHRpb25hbGAgZmxhZy4gQm90aCBtYWtlIHRoZSBiYWcgb3B0aW9uYWwgXHUyMTkyIGAqT3B0aW9uc2AuXG4gIGlmIChwYXJhbWV0ZXIudHlwZSA9PT0gJ0Fzc2lnbm1lbnRQYXR0ZXJuJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiAocGFyYW1ldGVyIGFzIE1heWJlT3B0aW9uYWxOb2RlKS5vcHRpb25hbCA9PT0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gdG9QYXNjYWxDYXNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcbn1cblxuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFJlLWVuYWJsZSBhZnRlciBBU1QgdHJhdmVyc2FsIGNvZGUsIHdoaWNoIGlzIG5vdyB0aGUgd2hvbGUgZmlsZTogdGhlIHByZWZpeCBoZWxwZXJzIG1vdmVkIHRvIG1vZHVsZSBzY29wZSBhbmQgd2FsayB0aGUgc2FtZSBvcHRpb25hbC1wYXJlbnQgY2hhaW4uICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCQSxNQUFNLGdDQUFnQztBQUN0QyxNQUFNLGdCQUFnQjtBQUN0QixNQUFNLGlCQUFpQjtBQUtoQixNQUFNLGFBQWE7QUFlbkIsTUFBTSx5QkFBMEM7QUFBQSxFQUNyRCxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCw2QkFBNkIsTUFBdUI7QUFDbEQsWUFBSSxDQUFDLGtCQUFrQixJQUFJLEdBQUc7QUFDNUI7QUFBQSxRQUNGO0FBRUEsY0FBTSxlQUFlO0FBQ3JCLGNBQU0saUJBQWlCLGtCQUFrQixJQUFJO0FBQzdDLFlBQUksQ0FBQyxnQkFBZ0I7QUFDbkI7QUFBQSxRQUNGO0FBRUEsY0FBTSxrQkFBa0IsYUFBYSxPQUFPLFdBQVc7QUFFdkQsbUJBQVcsYUFBYSxhQUFhLFFBQVE7QUFDM0MsZ0JBQU0sV0FBVyxzQkFBc0IsU0FBUztBQUNoRCxjQUFJLENBQUMsVUFBVTtBQUNiO0FBQUEsVUFDRjtBQUVBLGNBQUksQ0FBQyw4QkFBOEIsS0FBSyxTQUFTLElBQUksR0FBRztBQUN0RDtBQUFBLFVBQ0Y7QUFJQSxnQkFBTSxpQkFBaUIsbUJBQW1CLENBQUMsb0JBQW9CLFNBQVMsSUFBSSxnQkFBZ0I7QUFDNUYsZ0JBQU0sZUFBZSxHQUFHLGNBQWMsR0FBRyxjQUFjO0FBRXZELGNBQUksU0FBUyxTQUFTLGNBQWM7QUFDbEMsb0JBQVEsT0FBTztBQUFBLGNBQ2IsTUFBTTtBQUFBLGdCQUNKLFlBQVksU0FBUztBQUFBLGdCQUNyQjtBQUFBLGNBQ0Y7QUFBQSxjQUNBLFdBQVc7QUFBQSxjQUNYLE1BQU0sU0FBUztBQUFBLFlBQ2pCLENBQUM7QUFBQSxVQUNIO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtB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
@@ -1,5 +1,7 @@
1
1
  /// <reference path="../../../library.d.mts" />
2
2
  import type { Rule } from 'eslint';
3
- /** Message ID reported when `Promise.resolve()` is used for an async no-op instead of `noopAsync()`. */
3
+ /**
4
+ Message ID reported when `Promise.resolve()` is used for an async no-op instead of `noopAsync()`.
5
+ */
4
6
  export declare const MESSAGE_ID = "preferNoopAsync";
5
7
  export declare const preferNoopAsync: Rule.RuleModule;
@@ -27,7 +27,7 @@ const preferNoopAsync = {
27
27
  return {
28
28
  "CallExpression"(node) {
29
29
  const callNode = node;
30
- if (!checkIsPromiseResolveWithNoArgs(callNode)) {
30
+ if (!isPromiseResolveWithNoArguments(callNode)) {
31
31
  return;
32
32
  }
33
33
  context.report({
@@ -52,7 +52,7 @@ const preferNoopAsync = {
52
52
  type: "suggestion"
53
53
  }
54
54
  };
55
- function checkIsPromiseResolveWithNoArgs(node) {
55
+ function isPromiseResolveWithNoArguments(node) {
56
56
  if (node.arguments.length > 0) {
57
57
  return false;
58
58
  }
@@ -72,4 +72,4 @@ export {
72
72
  MESSAGE_ID,
73
73
  preferNoopAsync
74
74
  };
75
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9wcmVmZXItbm9vcC1hc3luYy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBwcmVmZXItbm9vcC1hc3luY1xuICpcbiAqIFJlcG9ydHMgYGF3YWl0IFByb21pc2UucmVzb2x2ZSgpYCBhbmQgc3VnZ2VzdHMgcmVwbGFjaW5nIGl0IHdpdGhcbiAqIGBhd2FpdCBub29wQXN5bmMoKWAgZm9yIGNvbnNpc3RlbmN5IGFuZCByZWFkYWJpbGl0eS5cbiAqXG4gKiBgbm9vcEFzeW5jKClgIGZyb20gdGhlIHByb2plY3QncyBgZnVuY3Rpb24udHNgIG1vZHVsZSBpcyB0aGUgY29udmVudGlvbmFsXG4gKiB3YXkgdG8gZXhwcmVzcyBhbiBpbnRlbnRpb25hbCBhc3luYyBuby1vcC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBUU0VTVHJlZSB9IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuXG4vKiogTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGBQcm9taXNlLnJlc29sdmUoKWAgaXMgdXNlZCBmb3IgYW4gYXN5bmMgbm8tb3AgaW5zdGVhZCBvZiBgbm9vcEFzeW5jKClgLiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncHJlZmVyTm9vcEFzeW5jJztcblxuZXhwb3J0IGNvbnN0IHByZWZlck5vb3BBc3luYzogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICAnQ2FsbEV4cHJlc3Npb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjYWxsTm9kZSA9IG5vZGUgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG5cbiAgICAgICAgaWYgKCFjaGVja0lzUHJvbWlzZVJlc29sdmVXaXRoTm9BcmdzKGNhbGxOb2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBmaXgoZml4ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmaXhlci5yZXBsYWNlVGV4dChub2RlLCAnbm9vcEFzeW5jKCknKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZWZlciBgbm9vcEFzeW5jKClgIG92ZXIgYFByb21pc2UucmVzb2x2ZSgpYCdcbiAgICB9LFxuICAgIGZpeGFibGU6ICdjb2RlJyxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnVXNlIGBub29wQXN5bmMoKWAgaW5zdGVhZCBvZiBgUHJvbWlzZS5yZXNvbHZlKClgIGZvciBhc3luYyBuby1vcHMuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgZXhwcmVzc2lvbiBpcyBgUHJvbWlzZS5yZXNvbHZlKClgIHdpdGggbm8gYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIGNhbGwgZXhwcmVzc2lvbiBub2RlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGBQcm9taXNlLnJlc29sdmUoKWAgd2l0aCBubyBhcmd1bWVudHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNQcm9taXNlUmVzb2x2ZVdpdGhOb0FyZ3Mobm9kZTogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgaWYgKG5vZGUuYXJndW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjYWxsZWUgPSBub2RlLmNhbGxlZTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLlxuICBpZiAoY2FsbGVlLnR5cGUgIT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBBU1Qgbm9kZSB0eXBlIHN0cmluZyBsaXRlcmFscyBtYXRjaCB0aGUgVFNFU1RyZWUgZW51bSB2YWx1ZXMuXG4gIGlmIChjYWxsZWUub2JqZWN0LnR5cGUgIT09ICdJZGVudGlmaWVyJyB8fCBjYWxsZWUub2JqZWN0Lm5hbWUgIT09ICdQcm9taXNlJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBBU1Qgbm9kZSB0eXBlIHN0cmluZyBsaXRlcmFscyBtYXRjaCB0aGUgVFNFU1RyZWUgZW51bSB2YWx1ZXMuXG4gIGlmIChjYWxsZWUucHJvcGVydHkudHlwZSAhPT0gJ0lkZW50aWZpZXInIHx8IGNhbGxlZS5wcm9wZXJ0eS5uYW1lICE9PSAncmVzb2x2ZScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZU8sTUFBTSxhQUFhO0FBRW5CLE1BQU0sa0JBQW1DO0FBQUEsRUFDOUMsT0FBTyxTQUFTO0FBQ2QsV0FBTztBQUFBLE1BQ0wsaUJBQWlCLE1BQXVCO0FBQ3RDLGNBQU0sV0FBVztBQUVqQixZQUFJLENBQUMsZ0NBQWdDLFFBQVEsR0FBRztBQUM5QztBQUFBLFFBQ0Y7QUFFQSxnQkFBUSxPQUFPO0FBQUEsVUFDYixJQUFJLE9BQU87QUFDVCxtQkFBTyxNQUFNLFlBQVksTUFBTSxhQUFhO0FBQUEsVUFDOUM7QUFBQSxVQUNBLFdBQVc7QUFBQSxVQUNYO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLE1BQ1IsQ0FBQyxVQUFVLEdBQUc7QUFBQSxJQUNoQjtBQUFBLElBQ0EsUUFBUSxDQUFDO0FBQUEsSUFDVCxNQUFNO0FBQUEsRUFDUjtBQUNGO0FBUUEsU0FBUyxnQ0FBZ0MsTUFBd0M7QUFDL0UsTUFBSSxLQUFLLFVBQVUsU0FBUyxHQUFHO0FBQzdCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxTQUFTLEtBQUs7QUFHcEIsTUFBSSxPQUFPLFNBQVMsb0JBQW9CO0FBQ3RDLFdBQU87QUFBQSxFQUNUO0FBR0EsTUFBSSxPQUFPLE9BQU8sU0FBUyxnQkFBZ0IsT0FBTyxPQUFPLFNBQVMsV0FBVztBQUMzRSxXQUFPO0FBQUEsRUFDVDtBQUdBLE1BQUksT0FBTyxTQUFTLFNBQVMsZ0JBQWdCLE9BQU8sU0FBUyxTQUFTLFdBQVc7QUFDL0UsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
75
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9wcmVmZXItbm9vcC1hc3luYy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBwcmVmZXItbm9vcC1hc3luY1xuICpcbiAqIFJlcG9ydHMgYGF3YWl0IFByb21pc2UucmVzb2x2ZSgpYCBhbmQgc3VnZ2VzdHMgcmVwbGFjaW5nIGl0IHdpdGhcbiAqIGBhd2FpdCBub29wQXN5bmMoKWAgZm9yIGNvbnNpc3RlbmN5IGFuZCByZWFkYWJpbGl0eS5cbiAqXG4gKiBgbm9vcEFzeW5jKClgIGZyb20gdGhlIHByb2plY3QncyBgZnVuY3Rpb24udHNgIG1vZHVsZSBpcyB0aGUgY29udmVudGlvbmFsXG4gKiB3YXkgdG8gZXhwcmVzcyBhbiBpbnRlbnRpb25hbCBhc3luYyBuby1vcC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBUU0VTVHJlZSB9IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBgUHJvbWlzZS5yZXNvbHZlKClgIGlzIHVzZWQgZm9yIGFuIGFzeW5jIG5vLW9wIGluc3RlYWQgb2YgYG5vb3BBc3luYygpYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncHJlZmVyTm9vcEFzeW5jJztcblxuZXhwb3J0IGNvbnN0IHByZWZlck5vb3BBc3luYzogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICAnQ2FsbEV4cHJlc3Npb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjYWxsTm9kZSA9IG5vZGUgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG5cbiAgICAgICAgaWYgKCFpc1Byb21pc2VSZXNvbHZlV2l0aE5vQXJndW1lbnRzKGNhbGxOb2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBmaXgoZml4ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmaXhlci5yZXBsYWNlVGV4dChub2RlLCAnbm9vcEFzeW5jKCknKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZWZlciBgbm9vcEFzeW5jKClgIG92ZXIgYFByb21pc2UucmVzb2x2ZSgpYCdcbiAgICB9LFxuICAgIGZpeGFibGU6ICdjb2RlJyxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnVXNlIGBub29wQXN5bmMoKWAgaW5zdGVhZCBvZiBgUHJvbWlzZS5yZXNvbHZlKClgIGZvciBhc3luYyBuby1vcHMuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgZXhwcmVzc2lvbiBpcyBgUHJvbWlzZS5yZXNvbHZlKClgIHdpdGggbm8gYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIGNhbGwgZXhwcmVzc2lvbiBub2RlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGBQcm9taXNlLnJlc29sdmUoKWAgd2l0aCBubyBhcmd1bWVudHMuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvbWlzZVJlc29sdmVXaXRoTm9Bcmd1bWVudHMobm9kZTogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgaWYgKG5vZGUuYXJndW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjYWxsZWUgPSBub2RlLmNhbGxlZTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLlxuICBpZiAoY2FsbGVlLnR5cGUgIT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBBU1Qgbm9kZSB0eXBlIHN0cmluZyBsaXRlcmFscyBtYXRjaCB0aGUgVFNFU1RyZWUgZW51bSB2YWx1ZXMuXG4gIGlmIChjYWxsZWUub2JqZWN0LnR5cGUgIT09ICdJZGVudGlmaWVyJyB8fCBjYWxsZWUub2JqZWN0Lm5hbWUgIT09ICdQcm9taXNlJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBBU1Qgbm9kZSB0eXBlIHN0cmluZyBsaXRlcmFscyBtYXRjaCB0aGUgVFNFU1RyZWUgZW51bSB2YWx1ZXMuXG4gIGlmIChjYWxsZWUucHJvcGVydHkudHlwZSAhPT0gJ0lkZW50aWZpZXInIHx8IGNhbGxlZS5wcm9wZXJ0eS5uYW1lICE9PSAncmVzb2x2ZScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJPLE1BQU0sYUFBYTtBQUVuQixNQUFNLGtCQUFtQztBQUFBLEVBQzlDLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLGlCQUFpQixNQUF1QjtBQUN0QyxjQUFNLFdBQVc7QUFFakIsWUFBSSxDQUFDLGdDQUFnQyxRQUFRLEdBQUc7QUFDOUM7QUFBQSxRQUNGO0FBRUEsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsSUFBSSxPQUFPO0FBQ1QsbUJBQU8sTUFBTSxZQUFZLE1BQU0sYUFBYTtBQUFBLFVBQzlDO0FBQUEsVUFDQSxXQUFXO0FBQUEsVUFDWDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxNQUNSLENBQUMsVUFBVSxHQUFHO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsTUFBTTtBQUFBLEVBQ1I7QUFDRjtBQVFBLFNBQVMsZ0NBQWdDLE1BQXdDO0FBQy9FLE1BQUksS0FBSyxVQUFVLFNBQVMsR0FBRztBQUM3QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sU0FBUyxLQUFLO0FBR3BCLE1BQUksT0FBTyxTQUFTLG9CQUFvQjtBQUN0QyxXQUFPO0FBQUEsRUFDVDtBQUdBLE1BQUksT0FBTyxPQUFPLFNBQVMsZ0JBQWdCLE9BQU8sT0FBTyxTQUFTLFdBQVc7QUFDM0UsV0FBTztBQUFBLEVBQ1Q7QUFHQSxNQUFJLE9BQU8sU0FBUyxTQUFTLGdCQUFnQixPQUFPLFNBQVMsU0FBUyxXQUFXO0FBQy9FLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -10,6 +10,8 @@
10
10
  * should never mutate the object they received.
11
11
  */
12
12
  import type { Rule } from 'eslint';
13
- /** Message ID reported when a member of a `*Params`/`*Options`/`*Result` interface is not declared `readonly`. */
13
+ /**
14
+ Message ID reported when a member of a `*Params`/`*Options`/`*Result` interface is not declared `readonly`.
15
+ */
14
16
  export declare const MESSAGE_ID = "readonlyParamsOptionsResultMembers";
15
17
  export declare const readonlyParamsOptionsResultMembers: Rule.RuleModule;
@@ -33,16 +33,6 @@ const readonlyParamsOptionsResultMembers = {
33
33
  reportNonReadonly(context, node);
34
34
  }
35
35
  };
36
- function reportNonReadonly(ctx, node) {
37
- const propertyNode = node;
38
- ctx.report({
39
- fix(fixer) {
40
- return fixer.insertTextBefore(ensureNonNullable(propertyNode.key), "readonly ");
41
- },
42
- messageId: MESSAGE_ID,
43
- node
44
- });
45
- }
46
36
  },
47
37
  meta: {
48
38
  docs: {
@@ -56,8 +46,18 @@ const readonlyParamsOptionsResultMembers = {
56
46
  type: "suggestion"
57
47
  }
58
48
  };
49
+ function reportNonReadonly($context, node) {
50
+ const propertyNode = node;
51
+ $context.report({
52
+ fix(fixer) {
53
+ return fixer.insertTextBefore(ensureNonNullable(propertyNode.key), "readonly ");
54
+ },
55
+ messageId: MESSAGE_ID,
56
+ node
57
+ });
58
+ }
59
59
  export {
60
60
  MESSAGE_ID,
61
61
  readonlyParamsOptionsResultMembers
62
62
  };
63
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZWFkb25seS1wYXJhbXMtb3B0aW9ucy1yZXN1bHQtbWVtYmVycy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiByZWFkb25seS1wYXJhbXMtb3B0aW9ucy1yZXN1bHQtbWVtYmVyc1xuICpcbiAqIFJlcG9ydHMgYW4gZXJyb3Igd2hlbiBhbiBpbnRlcmZhY2Ugb3IgdHlwZSBhbGlhcyB3aG9zZSBuYW1lIGVuZHMgd2l0aFxuICogYFBhcmFtc2AsIGBPcHRpb25zYCwgb3IgYFJlc3VsdGAgaGFzIGEgcHJvcGVydHkgc2lnbmF0dXJlIHRoYXQgaXMgbm90XG4gKiBgcmVhZG9ubHlgLiBQYXJhbWV0ZXIvb3B0aW9ucy9yZXN1bHQgYmFncyBzaG91bGQgYmUgaW1tdXRhYmxlIFx1MjAxNCBjYWxsZXJzXG4gKiBzaG91bGQgbmV2ZXIgbXV0YXRlIHRoZSBvYmplY3QgdGhleSByZWNlaXZlZC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi8uLi8uLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKiBNZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSBtZW1iZXIgb2YgYSBgKlBhcmFtc2AvYCpPcHRpb25zYC9gKlJlc3VsdGAgaW50ZXJmYWNlIGlzIG5vdCBkZWNsYXJlZCBgcmVhZG9ubHlgLiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncmVhZG9ubHlQYXJhbXNPcHRpb25zUmVzdWx0TWVtYmVycyc7XG5cbmludGVyZmFjZSBQcm9wZXJ0eVNpZ25hdHVyZU5vZGUge1xuICByZWFkb25seSBrZXk6IFJ1bGUuTm9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlYWRvbmx5UGFyYW1zT3B0aW9uc1Jlc3VsdE1lbWJlcnM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ1RTSW50ZXJmYWNlRGVjbGFyYXRpb25baWQubmFtZT0vKD86UGFyYW1zfE9wdGlvbnN8UmVzdWx0KSQvXSBUU1Byb3BlcnR5U2lnbmF0dXJlW3JlYWRvbmx5PWZhbHNlXScobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIHJlcG9ydE5vblJlYWRvbmx5KGNvbnRleHQsIG5vZGUpO1xuICAgICAgfSxcbiAgICAgICdUU1R5cGVBbGlhc0RlY2xhcmF0aW9uW2lkLm5hbWU9Lyg/OlBhcmFtc3xPcHRpb25zfFJlc3VsdCkkL10gVFNQcm9wZXJ0eVNpZ25hdHVyZVtyZWFkb25seT1mYWxzZV0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnROb25SZWFkb25seShjb250ZXh0LCBub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVwb3J0Tm9uUmVhZG9ubHkoY3R4OiBSdWxlLlJ1bGVDb250ZXh0LCBub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5Tm9kZSA9IG5vZGUgYXMgUGFydGlhbDxQcm9wZXJ0eVNpZ25hdHVyZU5vZGU+O1xuICAgICAgY3R4LnJlcG9ydCh7XG4gICAgICAgIGZpeChmaXhlcikge1xuICAgICAgICAgIHJldHVybiBmaXhlci5pbnNlcnRUZXh0QmVmb3JlKGVuc3VyZU5vbk51bGxhYmxlKHByb3BlcnR5Tm9kZS5rZXkpLCAncmVhZG9ubHkgJyk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgbm9kZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGFsbCBwcm9wZXJ0aWVzIGluIGAqUGFyYW1zYCwgYCpPcHRpb25zYCwgYW5kIGAqUmVzdWx0YCBpbnRlcmZhY2VzIHRvIGJlIGByZWFkb25seWAnXG4gICAgfSxcbiAgICBmaXhhYmxlOiAnY29kZScsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1Byb3BlcnR5IG11c3QgYmUgYHJlYWRvbmx5YC4gUGFyYW1zL09wdGlvbnMvUmVzdWx0IGludGVyZmFjZXMgc2hvdWxkIGJlIGltbXV0YWJsZS4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSxTQUFTLHlCQUF5QjtBQUczQixNQUFNLGFBQWE7QUFNbkIsTUFBTSxxQ0FBc0Q7QUFBQSxFQUNqRSxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxtR0FBbUcsTUFBdUI7QUFDeEgsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsTUFDQSxtR0FBbUcsTUFBdUI7QUFDeEgsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsSUFDRjtBQUVBLGFBQVMsa0JBQWtCLEtBQXVCLE1BQXVCO0FBQ3ZFLFlBQU0sZUFBZTtBQUNyQixVQUFJLE9BQU87QUFBQSxRQUNULElBQUksT0FBTztBQUNULGlCQUFPLE1BQU0saUJBQWlCLGtCQUFrQixhQUFhLEdBQUcsR0FBRyxXQUFXO0FBQUEsUUFDaEY7QUFBQSxRQUNBLFdBQVc7QUFBQSxRQUNYO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
63
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZWFkb25seS1wYXJhbXMtb3B0aW9ucy1yZXN1bHQtbWVtYmVycy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiByZWFkb25seS1wYXJhbXMtb3B0aW9ucy1yZXN1bHQtbWVtYmVyc1xuICpcbiAqIFJlcG9ydHMgYW4gZXJyb3Igd2hlbiBhbiBpbnRlcmZhY2Ugb3IgdHlwZSBhbGlhcyB3aG9zZSBuYW1lIGVuZHMgd2l0aFxuICogYFBhcmFtc2AsIGBPcHRpb25zYCwgb3IgYFJlc3VsdGAgaGFzIGEgcHJvcGVydHkgc2lnbmF0dXJlIHRoYXQgaXMgbm90XG4gKiBgcmVhZG9ubHlgLiBQYXJhbWV0ZXIvb3B0aW9ucy9yZXN1bHQgYmFncyBzaG91bGQgYmUgaW1tdXRhYmxlIFx1MjAxNCBjYWxsZXJzXG4gKiBzaG91bGQgbmV2ZXIgbXV0YXRlIHRoZSBvYmplY3QgdGhleSByZWNlaXZlZC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi8uLi8uLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgbWVtYmVyIG9mIGEgYCpQYXJhbXNgL2AqT3B0aW9uc2AvYCpSZXN1bHRgIGludGVyZmFjZSBpcyBub3QgZGVjbGFyZWQgYHJlYWRvbmx5YC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncmVhZG9ubHlQYXJhbXNPcHRpb25zUmVzdWx0TWVtYmVycyc7XG5cbmludGVyZmFjZSBQcm9wZXJ0eVNpZ25hdHVyZU5vZGUge1xuICByZWFkb25seSBrZXk6IFJ1bGUuTm9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlYWRvbmx5UGFyYW1zT3B0aW9uc1Jlc3VsdE1lbWJlcnM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ1RTSW50ZXJmYWNlRGVjbGFyYXRpb25baWQubmFtZT0vKD86UGFyYW1zfE9wdGlvbnN8UmVzdWx0KSQvXSBUU1Byb3BlcnR5U2lnbmF0dXJlW3JlYWRvbmx5PWZhbHNlXScobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIHJlcG9ydE5vblJlYWRvbmx5KGNvbnRleHQsIG5vZGUpO1xuICAgICAgfSxcbiAgICAgICdUU1R5cGVBbGlhc0RlY2xhcmF0aW9uW2lkLm5hbWU9Lyg/OlBhcmFtc3xPcHRpb25zfFJlc3VsdCkkL10gVFNQcm9wZXJ0eVNpZ25hdHVyZVtyZWFkb25seT1mYWxzZV0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnROb25SZWFkb25seShjb250ZXh0LCBub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGFsbCBwcm9wZXJ0aWVzIGluIGAqUGFyYW1zYCwgYCpPcHRpb25zYCwgYW5kIGAqUmVzdWx0YCBpbnRlcmZhY2VzIHRvIGJlIGByZWFkb25seWAnXG4gICAgfSxcbiAgICBmaXhhYmxlOiAnY29kZScsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1Byb3BlcnR5IG11c3QgYmUgYHJlYWRvbmx5YC4gUGFyYW1zL09wdGlvbnMvUmVzdWx0IGludGVyZmFjZXMgc2hvdWxkIGJlIGltbXV0YWJsZS4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG5mdW5jdGlvbiByZXBvcnROb25SZWFkb25seSgkY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCwgbm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gIGNvbnN0IHByb3BlcnR5Tm9kZSA9IG5vZGUgYXMgUGFydGlhbDxQcm9wZXJ0eVNpZ25hdHVyZU5vZGU+O1xuICAkY29udGV4dC5yZXBvcnQoe1xuICAgIGZpeChmaXhlcikge1xuICAgICAgcmV0dXJuIGZpeGVyLmluc2VydFRleHRCZWZvcmUoZW5zdXJlTm9uTnVsbGFibGUocHJvcGVydHlOb2RlLmtleSksICdyZWFkb25seSAnKTtcbiAgICB9LFxuICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICBub2RlXG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSxTQUFTLHlCQUF5QjtBQUszQixNQUFNLGFBQWE7QUFNbkIsTUFBTSxxQ0FBc0Q7QUFBQSxFQUNqRSxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxtR0FBbUcsTUFBdUI7QUFDeEgsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsTUFDQSxtR0FBbUcsTUFBdUI7QUFDeEgsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7QUFFQSxTQUFTLGtCQUFrQixVQUE0QixNQUF1QjtBQUM1RSxRQUFNLGVBQWU7QUFDckIsV0FBUyxPQUFPO0FBQUEsSUFDZCxJQUFJLE9BQU87QUFDVCxhQUFPLE1BQU0saUJBQWlCLGtCQUFrQixhQUFhLEdBQUcsR0FBRyxXQUFXO0FBQUEsSUFDaEY7QUFBQSxJQUNBLFdBQVc7QUFBQSxJQUNYO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,9 +1,15 @@
1
1
  /// <reference path="../../../library.d.mts" />
2
2
  import type { Rule } from 'eslint';
3
- /** Message ID reported when a class extends `Component` but its name does not end with `Component`. */
3
+ /**
4
+ Message ID reported when a class extends `Component` but its name does not end with `Component`.
5
+ */
4
6
  export declare const MESSAGE_ID_MISSING_SUFFIX = "requireComponentSuffix";
5
- /** Message ID reported when an abstract class extends `Component` but its name does not end with `ComponentBase`. */
7
+ /**
8
+ Message ID reported when an abstract class extends `Component` but its name does not end with `ComponentBase`.
9
+ */
6
10
  export declare const MESSAGE_ID_ABSTRACT_NEEDS_BASE = "abstractNeedsComponentBase";
7
- /** Message ID reported when a class name ends with `ComponentBase` but the class is not abstract. */
11
+ /**
12
+ Message ID reported when a class name ends with `ComponentBase` but the class is not abstract.
13
+ */
8
14
  export declare const MESSAGE_ID_BASE_NOT_ABSTRACT = "componentBaseNotAbstract";
9
15
  export declare const requireComponentSuffix: Rule.RuleModule;
@@ -32,7 +32,7 @@ const requireComponentSuffix = {
32
32
  const checker = services.program.getTypeChecker();
33
33
  return {
34
34
  "ClassDeclaration[id]"(node) {
35
- checkClass({
35
+ reportClass({
36
36
  checker,
37
37
  context,
38
38
  node,
@@ -40,7 +40,7 @@ const requireComponentSuffix = {
40
40
  });
41
41
  },
42
42
  "ClassExpression[id]"(node) {
43
- checkClass({
43
+ reportClass({
44
44
  checker,
45
45
  context,
46
46
  node,
@@ -62,7 +62,39 @@ const requireComponentSuffix = {
62
62
  type: "problem"
63
63
  }
64
64
  };
65
- function checkClass(params) {
65
+ function collectAncestorNames(type) {
66
+ const names = /* @__PURE__ */ new Set();
67
+ const visited = /* @__PURE__ */ new Set();
68
+ walkAncestors({
69
+ collectedNames: names,
70
+ currentType: type,
71
+ visitedTypes: visited
72
+ });
73
+ return names;
74
+ function walkAncestors(params) {
75
+ const { collectedNames, currentType, visitedTypes } = params;
76
+ if (visitedTypes.has(currentType)) {
77
+ return;
78
+ }
79
+ visitedTypes.add(currentType);
80
+ const baseTypes = currentType.getBaseTypes?.();
81
+ if (!baseTypes) {
82
+ return;
83
+ }
84
+ for (const baseType of baseTypes) {
85
+ const $symbol = baseType.getSymbol();
86
+ if ($symbol) {
87
+ collectedNames.add($symbol.getName());
88
+ }
89
+ walkAncestors({
90
+ collectedNames,
91
+ currentType: baseType,
92
+ visitedTypes
93
+ });
94
+ }
95
+ }
96
+ }
97
+ function reportClass(params) {
66
98
  const { checker, context, node, services } = params;
67
99
  const classNode = node;
68
100
  const classId = classNode.id;
@@ -71,12 +103,12 @@ function checkClass(params) {
71
103
  }
72
104
  const className = classId.name;
73
105
  const { abstract: isAbstract } = classNode;
74
- const endsWithComponentBase = className.endsWith("ComponentBase");
75
- const endsWithComponent = !endsWithComponentBase && className.endsWith("Component");
76
- if (endsWithComponent && !isAbstract) {
106
+ const hasComponentBaseSuffix = className.endsWith("ComponentBase");
107
+ const hasComponentSuffix = !hasComponentBaseSuffix && className.endsWith("Component");
108
+ if (hasComponentSuffix && !isAbstract) {
77
109
  return;
78
110
  }
79
- if (endsWithComponentBase && isAbstract) {
111
+ if (hasComponentBaseSuffix && isAbstract) {
80
112
  return;
81
113
  }
82
114
  const tsNode = services.esTreeNodeToTSNodeMap.get(classNode);
@@ -90,7 +122,7 @@ function checkClass(params) {
90
122
  return;
91
123
  }
92
124
  }
93
- if (endsWithComponentBase && !isAbstract) {
125
+ if (hasComponentBaseSuffix && !isAbstract) {
94
126
  context.report({
95
127
  data: { className },
96
128
  messageId: MESSAGE_ID_BASE_NOT_ABSTRACT,
@@ -110,42 +142,10 @@ function checkClass(params) {
110
142
  });
111
143
  }
112
144
  }
113
- function collectAncestorNames(type) {
114
- const names = /* @__PURE__ */ new Set();
115
- const visited = /* @__PURE__ */ new Set();
116
- walkAncestors({
117
- collectedNames: names,
118
- currentType: type,
119
- visitedTypes: visited
120
- });
121
- return names;
122
- function walkAncestors(params) {
123
- const { collectedNames, currentType, visitedTypes } = params;
124
- if (visitedTypes.has(currentType)) {
125
- return;
126
- }
127
- visitedTypes.add(currentType);
128
- const baseTypes = currentType.getBaseTypes?.();
129
- if (!baseTypes) {
130
- return;
131
- }
132
- for (const baseType of baseTypes) {
133
- const symbol = baseType.getSymbol();
134
- if (symbol) {
135
- collectedNames.add(symbol.getName());
136
- }
137
- walkAncestors({
138
- collectedNames,
139
- currentType: baseType,
140
- visitedTypes
141
- });
142
- }
143
- }
144
- }
145
145
  export {
146
146
  MESSAGE_ID_ABSTRACT_NEEDS_BASE,
147
147
  MESSAGE_ID_BASE_NOT_ABSTRACT,
148
148
  MESSAGE_ID_MISSING_SUFFIX,
149
149
  requireComponentSuffix
150
150
  };
151
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLWNvbXBvbmVudC1zdWZmaXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcmVxdWlyZS1jb21wb25lbnQtc3VmZml4XG4gKlxuICogUmVwb3J0cyBhbiBlcnJvciB3aGVuIGEgY2xhc3MgdGhhdCBleHRlbmRzIGBDb21wb25lbnRgIChmcm9tIE9ic2lkaWFuLFxuICogZGlyZWN0bHkgb3IgdHJhbnNpdGl2ZWx5KSBkb2VzIG5vdCBoYXZlIGEgbmFtZSBlbmRpbmcgd2l0aCBgQ29tcG9uZW50YFxuICogKG9yIGBDb21wb25lbnRCYXNlYCBmb3IgYWJzdHJhY3QgYmFzZSBjbGFzc2VzKS5cbiAqXG4gKiBDbGFzc2VzIHdob3NlIGluaGVyaXRhbmNlIGNoYWluIGluY2x1ZGVzIGFueSBvZiB0aGUgT2JzaWRpYW4gZnJhbWV3b3JrXG4gKiBjbGFzc2VzIHRoYXQgZXh0ZW5kIGBDb21wb25lbnRgIChlLmcuIGBQbHVnaW5gLCBgVmlld2AsXG4gKiBgTWFya2Rvd25SZW5kZXJDaGlsZGAsIGBNZW51YCwgYEhvdmVyUG9wb3ZlcmAsIGBRdWVyeUNvbnRyb2xsZXJgKVxuICogYXJlIGV4Y2x1ZGVkIGJlY2F1c2UgdGhleSBmb2xsb3cgT2JzaWRpYW4ncyBvd24gbmFtaW5nIGNvbnZlbnRpb25zLlxuICpcbiAqIFRoZSBydWxlIHVzZXMgdGhlIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyIHRvIHdhbGsgdGhlIGZ1bGwgaW5oZXJpdGFuY2VcbiAqIGNoYWluLCBzbyBpdCB3b3JrcyByZWdhcmRsZXNzIG9mIGhvdyBtYW55IGludGVybWVkaWF0ZSBjbGFzc2VzIHNpdFxuICogYmV0d2VlbiB0aGUgdXNlcidzIGNsYXNzIGFuZCBgQ29tcG9uZW50YC5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb24sXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKiBNZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSBjbGFzcyBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50YC4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX01JU1NJTkdfU1VGRklYID0gJ3JlcXVpcmVDb21wb25lbnRTdWZmaXgnO1xuXG4vKiogTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGFuIGFic3RyYWN0IGNsYXNzIGV4dGVuZHMgYENvbXBvbmVudGAgYnV0IGl0cyBuYW1lIGRvZXMgbm90IGVuZCB3aXRoIGBDb21wb25lbnRCYXNlYC4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0UgPSAnYWJzdHJhY3ROZWVkc0NvbXBvbmVudEJhc2UnO1xuXG4vKiogTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgY2xhc3MgbmFtZSBlbmRzIHdpdGggYENvbXBvbmVudEJhc2VgIGJ1dCB0aGUgY2xhc3MgaXMgbm90IGFic3RyYWN0LiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfQkFTRV9OT1RfQUJTVFJBQ1QgPSAnY29tcG9uZW50QmFzZU5vdEFic3RyYWN0JztcblxuLyoqIEFuY2VzdG9yIGNsYXNzIG5hbWVzIHRoYXQgb3B0IGEgc3VidHJlZSBvdXQgb2YgdGhlIHN1ZmZpeCByZXF1aXJlbWVudC4gKi9cbmNvbnN0IEVYQ0xVREVEX0FOQ0VTVE9SUyA9IG5ldyBTZXQoWydIb3ZlclBvcG92ZXInLCAnTWFya2Rvd25SZW5kZXJDaGlsZCcsICdNZW51JywgJ1BsdWdpbicsICdRdWVyeUNvbnRyb2xsZXInLCAnVmlldyddKTtcblxuLyoqIFRoZSBhbmNlc3RvciBjbGFzcyBuYW1lIHRoYXQgdHJpZ2dlcnMgdGhlIHN1ZmZpeCByZXF1aXJlbWVudC4gKi9cbmNvbnN0IFJFUVVJUkVEX0FOQ0VTVE9SID0gJ0NvbXBvbmVudCc7XG5cbmludGVyZmFjZSBUeXBlV2l0aEJhc2VUeXBlcyB7XG4gIGdldEJhc2VUeXBlcz8oKTogVHlwZVtdIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgcmVxdWlyZUNvbXBvbmVudFN1ZmZpeDogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gY29udGV4dC5zb3VyY2VDb2RlLnBhcnNlclNlcnZpY2VzIGFzIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcbiAgICBjb25zdCBjaGVja2VyID0gc2VydmljZXMucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICdDbGFzc0RlY2xhcmF0aW9uW2lkXScobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNoZWNrQ2xhc3Moe1xuICAgICAgICAgIGNoZWNrZXIsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIHNlcnZpY2VzXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgICdDbGFzc0V4cHJlc3Npb25baWRdJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY2hlY2tDbGFzcyh7XG4gICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgc2VydmljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBjbGFzc2VzIGV4dGVuZGluZyBgQ29tcG9uZW50YCB0byBoYXZlIG5hbWVzIGVuZGluZyB3aXRoIGBDb21wb25lbnRgJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0VdOiAnQWJzdHJhY3QgY2xhc3MgYHt7IGNsYXNzTmFtZSB9fWAgZXh0ZW5kcyBgQ29tcG9uZW50YCBidXQgaXRzIG5hbWUgZG9lcyBub3QgZW5kIHdpdGggYENvbXBvbmVudEJhc2VgLicsXG4gICAgICBbTUVTU0FHRV9JRF9CQVNFX05PVF9BQlNUUkFDVF06ICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBlbmRzIHdpdGggYENvbXBvbmVudEJhc2VgIGJ1dCBpcyBub3QgYWJzdHJhY3QuIE9ubHkgYWJzdHJhY3QgY2xhc3NlcyBtYXkgdXNlIHRoZSBgQ29tcG9uZW50QmFzZWAgc3VmZml4LicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1NVRkZJWF06ICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50YC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjaGVja0NsYXNzfS5cbiAqL1xuaW50ZXJmYWNlIENoZWNrQ2xhc3NQYXJhbXMge1xuICAvKipcbiAgICogVGhlIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tlcjogUmV0dXJuVHlwZTxQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb25bJ3Byb2dyYW0nXVsnZ2V0VHlwZUNoZWNrZXInXT47XG5cbiAgLyoqXG4gICAqIFRoZSBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIGNsYXNzIEFTVCBub2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZTogUnVsZS5Ob2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyc2VyIHNlcnZpY2VzIHdpdGggdHlwZSBpbmZvcm1hdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VzOiBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb247XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHdhbGtBbmNlc3RvcnN9LlxuICovXG5pbnRlcmZhY2UgV2Fsa0FuY2VzdG9yc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgc2V0IHRvIGFkZCBkaXNjb3ZlcmVkIGFuY2VzdG9yIG5hbWVzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgY29sbGVjdGVkTmFtZXM6IFNldDxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIHRvIGluc3BlY3QuXG4gICAqL1xuICByZWFkb25seSBjdXJyZW50VHlwZTogVHlwZTtcblxuICAvKipcbiAgICogVHlwZXMgYWxyZWFkeSB2aXNpdGVkLCB0byBwcmV2ZW50IGluZmluaXRlIGxvb3BzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmlzaXRlZFR5cGVzOiBTZXQ8VHlwZT47XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgc2luZ2xlIGNsYXNzIGRlY2xhcmF0aW9uIG9yIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY2hlY2suXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ2xhc3MocGFyYW1zOiBDaGVja0NsYXNzUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHsgY2hlY2tlciwgY29udGV4dCwgbm9kZSwgc2VydmljZXMgfSA9IHBhcmFtcztcbiAgY29uc3QgY2xhc3NOb2RlID0gbm9kZSBhcyBUU0VTVHJlZS5DbGFzc0RlY2xhcmF0aW9uIHwgVFNFU1RyZWUuQ2xhc3NFeHByZXNzaW9uO1xuICBjb25zdCBjbGFzc0lkID0gY2xhc3NOb2RlLmlkO1xuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFU0xpbnQgc2VsZWN0b3IgYFtpZF1gIGd1YXJhbnRlZXMgY2xhc3NJZCBpcyBwcmVzZW50LiAqL1xuICBpZiAoIWNsYXNzSWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCBjbGFzc05hbWUgPSBjbGFzc0lkLm5hbWU7XG4gIGNvbnN0IHsgYWJzdHJhY3Q6IGlzQWJzdHJhY3QgfSA9IGNsYXNzTm9kZTtcbiAgY29uc3QgZW5kc1dpdGhDb21wb25lbnRCYXNlID0gY2xhc3NOYW1lLmVuZHNXaXRoKCdDb21wb25lbnRCYXNlJyk7XG4gIGNvbnN0IGVuZHNXaXRoQ29tcG9uZW50ID0gIWVuZHNXaXRoQ29tcG9uZW50QmFzZSAmJiBjbGFzc05hbWUuZW5kc1dpdGgoJ0NvbXBvbmVudCcpO1xuXG4gIC8vIENvcnJlY3Q6IG5vbi1hYnN0cmFjdCBlbmRpbmcgd2l0aCBDb21wb25lbnRcbiAgaWYgKGVuZHNXaXRoQ29tcG9uZW50ICYmICFpc0Fic3RyYWN0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQ29ycmVjdDogYWJzdHJhY3QgZW5kaW5nIHdpdGggQ29tcG9uZW50QmFzZVxuICBpZiAoZW5kc1dpdGhDb21wb25lbnRCYXNlICYmIGlzQWJzdHJhY3QpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB0c05vZGUgPSBzZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KGNsYXNzTm9kZSk7XG4gIGNvbnN0IGNsYXNzVHlwZSA9IGNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24odHNOb2RlKTtcbiAgY29uc3QgYW5jZXN0b3JzID0gY29sbGVjdEFuY2VzdG9yTmFtZXMoY2xhc3NUeXBlKTtcblxuICBpZiAoIWFuY2VzdG9ycy5oYXMoUkVRVUlSRURfQU5DRVNUT1IpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZm9yIChjb25zdCBleGNsdWRlZCBvZiBFWENMVURFRF9BTkNFU1RPUlMpIHtcbiAgICBpZiAoYW5jZXN0b3JzLmhhcyhleGNsdWRlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAoZW5kc1dpdGhDb21wb25lbnRCYXNlICYmICFpc0Fic3RyYWN0KSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBjbGFzc05hbWUgfSxcbiAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9CQVNFX05PVF9BQlNUUkFDVCxcbiAgICAgIG5vZGVcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc0Fic3RyYWN0KSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBjbGFzc05hbWUgfSxcbiAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9BQlNUUkFDVF9ORUVEU19CQVNFLFxuICAgICAgbm9kZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgIGRhdGE6IHsgY2xhc3NOYW1lIH0sXG4gICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfTUlTU0lOR19TVUZGSVgsXG4gICAgICBub2RlXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb2xsZWN0cyB0aGUgbmFtZXMgb2YgYWxsIGFuY2VzdG9yIHR5cGVzIGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi5cbiAqXG4gKiBAcGFyYW0gdHlwZSAtIFRoZSBUeXBlU2NyaXB0IHR5cGUgdG8gc3RhcnQgZnJvbS5cbiAqIEByZXR1cm5zIEEgc2V0IG9mIGFuY2VzdG9yIGNsYXNzIG5hbWVzLlxuICovXG5mdW5jdGlvbiBjb2xsZWN0QW5jZXN0b3JOYW1lcyh0eXBlOiBUeXBlKTogU2V0PHN0cmluZz4ge1xuICBjb25zdCBuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxUeXBlPigpO1xuXG4gIHdhbGtBbmNlc3RvcnMoe1xuICAgIGNvbGxlY3RlZE5hbWVzOiBuYW1lcyxcbiAgICBjdXJyZW50VHlwZTogdHlwZSxcbiAgICB2aXNpdGVkVHlwZXM6IHZpc2l0ZWRcbiAgfSk7XG5cbiAgcmV0dXJuIG5hbWVzO1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSB3YWxrcyB0aGUgYmFzZSB0eXBlcyBvZiBhIHR5cGUsIGNvbGxlY3RpbmcgdGhlaXIgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHdhbGsuXG4gICAqL1xuICBmdW5jdGlvbiB3YWxrQW5jZXN0b3JzKHBhcmFtczogV2Fsa0FuY2VzdG9yc1BhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29sbGVjdGVkTmFtZXMsIGN1cnJlbnRUeXBlLCB2aXNpdGVkVHlwZXMgfSA9IHBhcmFtcztcbiAgICBpZiAodmlzaXRlZFR5cGVzLmhhcyhjdXJyZW50VHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2aXNpdGVkVHlwZXMuYWRkKGN1cnJlbnRUeXBlKTtcblxuICAgIGNvbnN0IGJhc2VUeXBlcyA9IChjdXJyZW50VHlwZSBhcyBUeXBlV2l0aEJhc2VUeXBlcykuZ2V0QmFzZVR5cGVzPy4oKTtcblxuICAgIGlmICghYmFzZVR5cGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBiYXNlVHlwZSBvZiBiYXNlVHlwZXMpIHtcbiAgICAgIGNvbnN0IHN5bWJvbCA9IGJhc2VUeXBlLmdldFN5bWJvbCgpO1xuXG4gICAgICBpZiAoc3ltYm9sKSB7XG4gICAgICAgIGNvbGxlY3RlZE5hbWVzLmFkZChzeW1ib2wuZ2V0TmFtZSgpKTtcbiAgICAgIH1cblxuICAgICAgd2Fsa0FuY2VzdG9ycyh7XG4gICAgICAgIGNvbGxlY3RlZE5hbWVzLFxuICAgICAgICBjdXJyZW50VHlwZTogYmFzZVR5cGUsXG4gICAgICAgIHZpc2l0ZWRUeXBlc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7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
151
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLWNvbXBvbmVudC1zdWZmaXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcmVxdWlyZS1jb21wb25lbnQtc3VmZml4XG4gKlxuICogUmVwb3J0cyBhbiBlcnJvciB3aGVuIGEgY2xhc3MgdGhhdCBleHRlbmRzIGBDb21wb25lbnRgIChmcm9tIE9ic2lkaWFuLFxuICogZGlyZWN0bHkgb3IgdHJhbnNpdGl2ZWx5KSBkb2VzIG5vdCBoYXZlIGEgbmFtZSBlbmRpbmcgd2l0aCBgQ29tcG9uZW50YFxuICogKG9yIGBDb21wb25lbnRCYXNlYCBmb3IgYWJzdHJhY3QgYmFzZSBjbGFzc2VzKS5cbiAqXG4gKiBDbGFzc2VzIHdob3NlIGluaGVyaXRhbmNlIGNoYWluIGluY2x1ZGVzIGFueSBvZiB0aGUgT2JzaWRpYW4gZnJhbWV3b3JrXG4gKiBjbGFzc2VzIHRoYXQgZXh0ZW5kIGBDb21wb25lbnRgIChlLmcuIGBQbHVnaW5gLCBgVmlld2AsXG4gKiBgTWFya2Rvd25SZW5kZXJDaGlsZGAsIGBNZW51YCwgYEhvdmVyUG9wb3ZlcmAsIGBRdWVyeUNvbnRyb2xsZXJgKVxuICogYXJlIGV4Y2x1ZGVkIGJlY2F1c2UgdGhleSBmb2xsb3cgT2JzaWRpYW4ncyBvd24gbmFtaW5nIGNvbnZlbnRpb25zLlxuICpcbiAqIFRoZSBydWxlIHVzZXMgdGhlIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyIHRvIHdhbGsgdGhlIGZ1bGwgaW5oZXJpdGFuY2VcbiAqIGNoYWluLCBzbyBpdCB3b3JrcyByZWdhcmRsZXNzIG9mIGhvdyBtYW55IGludGVybWVkaWF0ZSBjbGFzc2VzIHNpdFxuICogYmV0d2VlbiB0aGUgdXNlcidzIGNsYXNzIGFuZCBgQ29tcG9uZW50YC5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb24sXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgY2xhc3MgZXh0ZW5kcyBgQ29tcG9uZW50YCBidXQgaXRzIG5hbWUgZG9lcyBub3QgZW5kIHdpdGggYENvbXBvbmVudGAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX01JU1NJTkdfU1VGRklYID0gJ3JlcXVpcmVDb21wb25lbnRTdWZmaXgnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhbiBhYnN0cmFjdCBjbGFzcyBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50QmFzZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0UgPSAnYWJzdHJhY3ROZWVkc0NvbXBvbmVudEJhc2UnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIGNsYXNzIG5hbWUgZW5kcyB3aXRoIGBDb21wb25lbnRCYXNlYCBidXQgdGhlIGNsYXNzIGlzIG5vdCBhYnN0cmFjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfQkFTRV9OT1RfQUJTVFJBQ1QgPSAnY29tcG9uZW50QmFzZU5vdEFic3RyYWN0JztcblxuLyoqXG5BbmNlc3RvciBjbGFzcyBuYW1lcyB0aGF0IG9wdCBhIHN1YnRyZWUgb3V0IG9mIHRoZSBzdWZmaXggcmVxdWlyZW1lbnQuXG4gKi9cbmNvbnN0IEVYQ0xVREVEX0FOQ0VTVE9SUyA9IG5ldyBTZXQoWydIb3ZlclBvcG92ZXInLCAnTWFya2Rvd25SZW5kZXJDaGlsZCcsICdNZW51JywgJ1BsdWdpbicsICdRdWVyeUNvbnRyb2xsZXInLCAnVmlldyddKTtcblxuLyoqXG5UaGUgYW5jZXN0b3IgY2xhc3MgbmFtZSB0aGF0IHRyaWdnZXJzIHRoZSBzdWZmaXggcmVxdWlyZW1lbnQuXG4gKi9cbmNvbnN0IFJFUVVJUkVEX0FOQ0VTVE9SID0gJ0NvbXBvbmVudCc7XG5cbmludGVyZmFjZSBUeXBlV2l0aEJhc2VUeXBlcyB7XG4gIGdldEJhc2VUeXBlcz8oKTogVHlwZVtdIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgcmVxdWlyZUNvbXBvbmVudFN1ZmZpeDogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gY29udGV4dC5zb3VyY2VDb2RlLnBhcnNlclNlcnZpY2VzIGFzIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcbiAgICBjb25zdCBjaGVja2VyID0gc2VydmljZXMucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICdDbGFzc0RlY2xhcmF0aW9uW2lkXScobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIHJlcG9ydENsYXNzKHtcbiAgICAgICAgICBjaGVja2VyLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBzZXJ2aWNlc1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICAnQ2xhc3NFeHByZXNzaW9uW2lkXScobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIHJlcG9ydENsYXNzKHtcbiAgICAgICAgICBjaGVja2VyLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBzZXJ2aWNlc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGNsYXNzZXMgZXh0ZW5kaW5nIGBDb21wb25lbnRgIHRvIGhhdmUgbmFtZXMgZW5kaW5nIHdpdGggYENvbXBvbmVudGAnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURfQUJTVFJBQ1RfTkVFRFNfQkFTRV06ICdBYnN0cmFjdCBjbGFzcyBge3sgY2xhc3NOYW1lIH19YCBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50QmFzZWAuJyxcbiAgICAgIFtNRVNTQUdFX0lEX0JBU0VfTk9UX0FCU1RSQUNUXTogJ0NsYXNzIGB7eyBjbGFzc05hbWUgfX1gIGVuZHMgd2l0aCBgQ29tcG9uZW50QmFzZWAgYnV0IGlzIG5vdCBhYnN0cmFjdC4gT25seSBhYnN0cmFjdCBjbGFzc2VzIG1heSB1c2UgdGhlIGBDb21wb25lbnRCYXNlYCBzdWZmaXguJyxcbiAgICAgIFtNRVNTQUdFX0lEX01JU1NJTkdfU1VGRklYXTogJ0NsYXNzIGB7eyBjbGFzc05hbWUgfX1gIGV4dGVuZHMgYENvbXBvbmVudGAgYnV0IGl0cyBuYW1lIGRvZXMgbm90IGVuZCB3aXRoIGBDb21wb25lbnRgLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3Byb2JsZW0nXG4gIH1cbn07XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlcG9ydENsYXNzfS5cbiAqL1xuaW50ZXJmYWNlIFJlcG9ydENsYXNzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBUeXBlU2NyaXB0IHR5cGUgY2hlY2tlci5cbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrZXI6IFJldHVyblR5cGU8UGFyc2VyU2VydmljZXNXaXRoVHlwZUluZm9ybWF0aW9uWydwcm9ncmFtJ11bJ2dldFR5cGVDaGVja2VyJ10+O1xuXG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IHJ1bGUgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjbGFzcyBBU1Qgbm9kZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vZGU6IFJ1bGUuTm9kZTtcblxuICAvKipcbiAgICogVGhlIHBhcnNlciBzZXJ2aWNlcyB3aXRoIHR5cGUgaW5mb3JtYXRpb24uXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlczogUGFyc2VyU2VydmljZXNXaXRoVHlwZUluZm9ybWF0aW9uO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB3YWxrQW5jZXN0b3JzfS5cbiAqL1xuaW50ZXJmYWNlIFdhbGtBbmNlc3RvcnNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHNldCB0byBhZGQgZGlzY292ZXJlZCBhbmNlc3RvciBuYW1lcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGNvbGxlY3RlZE5hbWVzOiBTZXQ8c3RyaW5nPjtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgdHlwZSB0byBpbnNwZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgY3VycmVudFR5cGU6IFR5cGU7XG5cbiAgLyoqXG4gICAqIFR5cGVzIGFscmVhZHkgdmlzaXRlZCwgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcy5cbiAgICovXG4gIHJlYWRvbmx5IHZpc2l0ZWRUeXBlczogU2V0PFR5cGU+O1xufVxuXG4vKipcbiAqIENvbGxlY3RzIHRoZSBuYW1lcyBvZiBhbGwgYW5jZXN0b3IgdHlwZXMgaW4gdGhlIGluaGVyaXRhbmNlIGNoYWluLlxuICpcbiAqIEBwYXJhbSB0eXBlIC0gVGhlIFR5cGVTY3JpcHQgdHlwZSB0byBzdGFydCBmcm9tLlxuICogQHJldHVybnMgQSBzZXQgb2YgYW5jZXN0b3IgY2xhc3MgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RBbmNlc3Rvck5hbWVzKHR5cGU6IFR5cGUpOiBTZXQ8c3RyaW5nPiB7XG4gIGNvbnN0IG5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PFR5cGU+KCk7XG5cbiAgd2Fsa0FuY2VzdG9ycyh7XG4gICAgY29sbGVjdGVkTmFtZXM6IG5hbWVzLFxuICAgIGN1cnJlbnRUeXBlOiB0eXBlLFxuICAgIHZpc2l0ZWRUeXBlczogdmlzaXRlZFxuICB9KTtcblxuICByZXR1cm4gbmFtZXM7XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IHdhbGtzIHRoZSBiYXNlIHR5cGVzIG9mIGEgdHlwZSwgY29sbGVjdGluZyB0aGVpciBuYW1lcy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgd2Fsay5cbiAgICovXG4gIGZ1bmN0aW9uIHdhbGtBbmNlc3RvcnMocGFyYW1zOiBXYWxrQW5jZXN0b3JzUGFyYW1zKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb2xsZWN0ZWROYW1lcywgY3VycmVudFR5cGUsIHZpc2l0ZWRUeXBlcyB9ID0gcGFyYW1zO1xuICAgIGlmICh2aXNpdGVkVHlwZXMuaGFzKGN1cnJlbnRUeXBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZpc2l0ZWRUeXBlcy5hZGQoY3VycmVudFR5cGUpO1xuXG4gICAgY29uc3QgYmFzZVR5cGVzID0gKGN1cnJlbnRUeXBlIGFzIFR5cGVXaXRoQmFzZVR5cGVzKS5nZXRCYXNlVHlwZXM/LigpO1xuXG4gICAgaWYgKCFiYXNlVHlwZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGJhc2VUeXBlIG9mIGJhc2VUeXBlcykge1xuICAgICAgY29uc3QgJHN5bWJvbCA9IGJhc2VUeXBlLmdldFN5bWJvbCgpO1xuXG4gICAgICBpZiAoJHN5bWJvbCkge1xuICAgICAgICBjb2xsZWN0ZWROYW1lcy5hZGQoJHN5bWJvbC5nZXROYW1lKCkpO1xuICAgICAgfVxuXG4gICAgICB3YWxrQW5jZXN0b3JzKHtcbiAgICAgICAgY29sbGVjdGVkTmFtZXMsXG4gICAgICAgIGN1cnJlbnRUeXBlOiBiYXNlVHlwZSxcbiAgICAgICAgdmlzaXRlZFR5cGVzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgYSBzaW5nbGUgY2xhc3MgZGVjbGFyYXRpb24gb3IgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjaGVjay5cbiAqL1xuZnVuY3Rpb24gcmVwb3J0Q2xhc3MocGFyYW1zOiBSZXBvcnRDbGFzc1BhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7IGNoZWNrZXIsIGNvbnRleHQsIG5vZGUsIHNlcnZpY2VzIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGNsYXNzTm9kZSA9IG5vZGUgYXMgVFNFU1RyZWUuQ2xhc3NEZWNsYXJhdGlvbiB8IFRTRVNUcmVlLkNsYXNzRXhwcmVzc2lvbjtcbiAgY29uc3QgY2xhc3NJZCA9IGNsYXNzTm9kZS5pZDtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRVNMaW50IHNlbGVjdG9yIGBbaWRdYCBndWFyYW50ZWVzIGNsYXNzSWQgaXMgcHJlc2VudC4gKi9cbiAgaWYgKCFjbGFzc0lkKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NJZC5uYW1lO1xuICBjb25zdCB7IGFic3RyYWN0OiBpc0Fic3RyYWN0IH0gPSBjbGFzc05vZGU7XG4gIGNvbnN0IGhhc0NvbXBvbmVudEJhc2VTdWZmaXggPSBjbGFzc05hbWUuZW5kc1dpdGgoJ0NvbXBvbmVudEJhc2UnKTtcbiAgY29uc3QgaGFzQ29tcG9uZW50U3VmZml4ID0gIWhhc0NvbXBvbmVudEJhc2VTdWZmaXggJiYgY2xhc3NOYW1lLmVuZHNXaXRoKCdDb21wb25lbnQnKTtcblxuICAvLyBDb3JyZWN0OiBub24tYWJzdHJhY3QgZW5kaW5nIHdpdGggQ29tcG9uZW50XG4gIGlmIChoYXNDb21wb25lbnRTdWZmaXggJiYgIWlzQWJzdHJhY3QpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBDb3JyZWN0OiBhYnN0cmFjdCBlbmRpbmcgd2l0aCBDb21wb25lbnRCYXNlXG4gIGlmIChoYXNDb21wb25lbnRCYXNlU3VmZml4ICYmIGlzQWJzdHJhY3QpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB0c05vZGUgPSBzZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KGNsYXNzTm9kZSk7XG4gIGNvbnN0IGNsYXNzVHlwZSA9IGNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24odHNOb2RlKTtcbiAgY29uc3QgYW5jZXN0b3JzID0gY29sbGVjdEFuY2VzdG9yTmFtZXMoY2xhc3NUeXBlKTtcblxuICBpZiAoIWFuY2VzdG9ycy5oYXMoUkVRVUlSRURfQU5DRVNUT1IpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZm9yIChjb25zdCBleGNsdWRlZCBvZiBFWENMVURFRF9BTkNFU1RPUlMpIHtcbiAgICBpZiAoYW5jZXN0b3JzLmhhcyhleGNsdWRlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAoaGFzQ29tcG9uZW50QmFzZVN1ZmZpeCAmJiAhaXNBYnN0cmFjdCkge1xuICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgIGRhdGE6IHsgY2xhc3NOYW1lIH0sXG4gICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfQkFTRV9OT1RfQUJTVFJBQ1QsXG4gICAgICBub2RlXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNBYnN0cmFjdCkge1xuICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgIGRhdGE6IHsgY2xhc3NOYW1lIH0sXG4gICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfQUJTVFJBQ1RfTkVFRFNfQkFTRSxcbiAgICAgIG5vZGVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IGNsYXNzTmFtZSB9LFxuICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX01JU1NJTkdfU1VGRklYLFxuICAgICAgbm9kZVxuICAgIH0pO1xuICB9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
@@ -1,7 +1,11 @@
1
1
  /// <reference path="../../../library.d.mts" />
2
2
  import type { Rule } from 'eslint';
3
- /** Message ID reported when a method type parameter has no matching `@typeParam` tag. */
3
+ /**
4
+ Message ID reported when a method type parameter has no matching `@typeParam` tag.
5
+ */
4
6
  export declare const MESSAGE_ID_MISSING_TEMPLATE = "missingTemplate";
5
- /** Message ID reported when a method's `@typeParam` tag is missing a description. */
7
+ /**
8
+ Message ID reported when a method's `@typeParam` tag is missing a description.
9
+ */
6
10
  export declare const MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION = "missingTemplateDescription";
7
11
  export declare const requireMethodTemplate: Rule.RuleModule;