@azurioh/discord-kernel 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/README.md +318 -1
  2. package/dist/authz/require-level-guard.d.ts +1 -1
  3. package/dist/authz/require-level-guard.d.ts.map +1 -1
  4. package/dist/color.d.ts +42 -0
  5. package/dist/color.d.ts.map +1 -0
  6. package/dist/color.js +130 -0
  7. package/dist/color.js.map +1 -0
  8. package/dist/discord/command/all-required.d.ts +8 -0
  9. package/dist/discord/command/all-required.d.ts.map +1 -0
  10. package/dist/discord/command/all-required.js +12 -0
  11. package/dist/discord/command/all-required.js.map +1 -0
  12. package/dist/discord/command/autocomplete-dispatcher.d.ts.map +1 -1
  13. package/dist/discord/command/autocomplete-dispatcher.js +2 -1
  14. package/dist/discord/command/autocomplete-dispatcher.js.map +1 -1
  15. package/dist/discord/command/autocomplete-limits.d.ts +3 -0
  16. package/dist/discord/command/autocomplete-limits.d.ts.map +1 -0
  17. package/dist/discord/command/autocomplete-limits.js +6 -0
  18. package/dist/discord/command/autocomplete-limits.js.map +1 -0
  19. package/dist/discord/command/autocomplete.d.ts +6 -1
  20. package/dist/discord/command/autocomplete.d.ts.map +1 -1
  21. package/dist/discord/command/autocomplete.js +6 -6
  22. package/dist/discord/command/autocomplete.js.map +1 -1
  23. package/dist/discord/command/command-responders.d.ts +26 -0
  24. package/dist/discord/command/command-responders.d.ts.map +1 -0
  25. package/dist/discord/command/command-responders.js +16 -0
  26. package/dist/discord/command/command-responders.js.map +1 -0
  27. package/dist/discord/command/context.d.ts +8 -17
  28. package/dist/discord/command/context.d.ts.map +1 -1
  29. package/dist/discord/command/context.js +8 -37
  30. package/dist/discord/command/context.js.map +1 -1
  31. package/dist/discord/command/cooldown-guard.d.ts +1 -1
  32. package/dist/discord/command/cooldown-guard.d.ts.map +1 -1
  33. package/dist/discord/command/create-command.d.ts +1 -8
  34. package/dist/discord/command/create-command.d.ts.map +1 -1
  35. package/dist/discord/command/create-command.js +17 -65
  36. package/dist/discord/command/create-command.js.map +1 -1
  37. package/dist/discord/command/create-context-menu-command.d.ts +3 -9
  38. package/dist/discord/command/create-context-menu-command.d.ts.map +1 -1
  39. package/dist/discord/command/create-context-menu-command.js +14 -65
  40. package/dist/discord/command/create-context-menu-command.js.map +1 -1
  41. package/dist/discord/command/errors.d.ts +1 -1
  42. package/dist/discord/command/errors.d.ts.map +1 -1
  43. package/dist/discord/command/errors.js +2 -2
  44. package/dist/discord/command/errors.js.map +1 -1
  45. package/dist/discord/command/guard.d.ts +15 -8
  46. package/dist/discord/command/guard.d.ts.map +1 -1
  47. package/dist/discord/command/guard.js +4 -4
  48. package/dist/discord/command/guard.js.map +1 -1
  49. package/dist/discord/command/options.d.ts +1 -10
  50. package/dist/discord/command/options.d.ts.map +1 -1
  51. package/dist/discord/command/options.js +127 -320
  52. package/dist/discord/command/options.js.map +1 -1
  53. package/dist/discord/command/passes-guard.d.ts +14 -0
  54. package/dist/discord/command/passes-guard.d.ts.map +1 -0
  55. package/dist/discord/command/passes-guard.js +27 -0
  56. package/dist/discord/command/passes-guard.js.map +1 -0
  57. package/dist/discord/command/permission-guard.d.ts +1 -1
  58. package/dist/discord/command/permission-guard.d.ts.map +1 -1
  59. package/dist/discord/command/render-command-failure.d.ts +23 -0
  60. package/dist/discord/command/render-command-failure.d.ts.map +1 -0
  61. package/dist/discord/command/render-command-failure.js +40 -0
  62. package/dist/discord/command/render-command-failure.js.map +1 -0
  63. package/dist/discord/command/route-key.d.ts +8 -0
  64. package/dist/discord/command/route-key.d.ts.map +1 -0
  65. package/dist/discord/command/route-key.js +13 -0
  66. package/dist/discord/command/route-key.js.map +1 -0
  67. package/dist/discord/command/router.d.ts +32 -7
  68. package/dist/discord/command/router.d.ts.map +1 -1
  69. package/dist/discord/command/router.js +48 -10
  70. package/dist/discord/command/router.js.map +1 -1
  71. package/dist/discord/command/send-embed.d.ts +14 -0
  72. package/dist/discord/command/send-embed.d.ts.map +1 -0
  73. package/dist/discord/command/send-embed.js +37 -0
  74. package/dist/discord/command/send-embed.js.map +1 -0
  75. package/dist/discord/command/types.d.ts +7 -1
  76. package/dist/discord/command/types.d.ts.map +1 -1
  77. package/dist/discord/components/component-access.d.ts +12 -0
  78. package/dist/discord/components/component-access.d.ts.map +1 -0
  79. package/dist/discord/components/component-access.js +21 -0
  80. package/dist/discord/components/component-access.js.map +1 -0
  81. package/dist/discord/components/component-router.d.ts +37 -15
  82. package/dist/discord/components/component-router.d.ts.map +1 -1
  83. package/dist/discord/components/component-router.js +44 -32
  84. package/dist/discord/components/component-router.js.map +1 -1
  85. package/dist/discord/components/interactive-message/index.d.ts +3 -1
  86. package/dist/discord/components/interactive-message/index.d.ts.map +1 -1
  87. package/dist/discord/components/interactive-message/index.js +5 -3
  88. package/dist/discord/components/interactive-message/index.js.map +1 -1
  89. package/dist/discord/components/interactive-message/interactive-message-collector.d.ts +3 -28
  90. package/dist/discord/components/interactive-message/interactive-message-collector.d.ts.map +1 -1
  91. package/dist/discord/components/interactive-message/interactive-message-collector.js +6 -53
  92. package/dist/discord/components/interactive-message/interactive-message-collector.js.map +1 -1
  93. package/dist/discord/components/interactive-message/message-edit-options.d.ts +18 -0
  94. package/dist/discord/components/interactive-message/message-edit-options.d.ts.map +1 -0
  95. package/dist/discord/components/interactive-message/message-edit-options.js +40 -0
  96. package/dist/discord/components/interactive-message/message-edit-options.js.map +1 -0
  97. package/dist/discord/components/interactive-message/mount-interactive-message.d.ts +2 -1
  98. package/dist/discord/components/interactive-message/mount-interactive-message.d.ts.map +1 -1
  99. package/dist/discord/components/interactive-message/mount-interactive-message.js +4 -2
  100. package/dist/discord/components/interactive-message/mount-interactive-message.js.map +1 -1
  101. package/dist/discord/components/interactive-message/state-store.d.ts +12 -0
  102. package/dist/discord/components/interactive-message/state-store.d.ts.map +1 -0
  103. package/dist/discord/components/interactive-message/state-store.js +14 -0
  104. package/dist/discord/components/interactive-message/state-store.js.map +1 -0
  105. package/dist/discord/components/paginator/mount-paginator.js +7 -5
  106. package/dist/discord/components/paginator/mount-paginator.js.map +1 -1
  107. package/dist/discord/components/paginator/paginator-view.d.ts +1 -1
  108. package/dist/discord/components/paginator/paginator-view.d.ts.map +1 -1
  109. package/dist/discord/components/persistent-paginator.d.ts +1 -1
  110. package/dist/discord/components/persistent-paginator.d.ts.map +1 -1
  111. package/dist/discord/components/persistent-paginator.js +6 -6
  112. package/dist/discord/components/persistent-paginator.js.map +1 -1
  113. package/dist/discord/components/settings-editor/from-declaration-controls.d.ts +67 -0
  114. package/dist/discord/components/settings-editor/from-declaration-controls.d.ts.map +1 -0
  115. package/dist/discord/components/settings-editor/from-declaration-controls.js +245 -0
  116. package/dist/discord/components/settings-editor/from-declaration-controls.js.map +1 -0
  117. package/dist/discord/components/settings-editor/from-declaration-display.d.ts +23 -0
  118. package/dist/discord/components/settings-editor/from-declaration-display.d.ts.map +1 -0
  119. package/dist/discord/components/settings-editor/from-declaration-display.js +114 -0
  120. package/dist/discord/components/settings-editor/from-declaration-display.js.map +1 -0
  121. package/dist/discord/components/settings-editor/from-declaration-layout.d.ts +33 -0
  122. package/dist/discord/components/settings-editor/from-declaration-layout.d.ts.map +1 -0
  123. package/dist/discord/components/settings-editor/from-declaration-layout.js +178 -0
  124. package/dist/discord/components/settings-editor/from-declaration-layout.js.map +1 -0
  125. package/dist/discord/components/settings-editor/from-declaration-search.d.ts +27 -0
  126. package/dist/discord/components/settings-editor/from-declaration-search.d.ts.map +1 -0
  127. package/dist/discord/components/settings-editor/from-declaration-search.js +58 -0
  128. package/dist/discord/components/settings-editor/from-declaration-search.js.map +1 -0
  129. package/dist/discord/components/settings-editor/from-declaration-stored.d.ts +21 -0
  130. package/dist/discord/components/settings-editor/from-declaration-stored.d.ts.map +1 -0
  131. package/dist/discord/components/settings-editor/from-declaration-stored.js +37 -0
  132. package/dist/discord/components/settings-editor/from-declaration-stored.js.map +1 -0
  133. package/dist/discord/components/settings-editor/from-declaration-subject.d.ts +32 -0
  134. package/dist/discord/components/settings-editor/from-declaration-subject.d.ts.map +1 -0
  135. package/dist/discord/components/settings-editor/from-declaration-subject.js +65 -0
  136. package/dist/discord/components/settings-editor/from-declaration-subject.js.map +1 -0
  137. package/dist/discord/components/settings-editor/from-declaration-values.d.ts +57 -0
  138. package/dist/discord/components/settings-editor/from-declaration-values.d.ts.map +1 -0
  139. package/dist/discord/components/settings-editor/from-declaration-values.js +187 -0
  140. package/dist/discord/components/settings-editor/from-declaration-values.js.map +1 -0
  141. package/dist/discord/components/settings-editor/from-declaration.d.ts +39 -0
  142. package/dist/discord/components/settings-editor/from-declaration.d.ts.map +1 -0
  143. package/dist/discord/components/settings-editor/from-declaration.js +132 -0
  144. package/dist/discord/components/settings-editor/from-declaration.js.map +1 -0
  145. package/dist/discord/components/settings-editor/index.d.ts +3 -1
  146. package/dist/discord/components/settings-editor/index.d.ts.map +1 -1
  147. package/dist/discord/components/settings-editor/index.js +6 -3
  148. package/dist/discord/components/settings-editor/index.js.map +1 -1
  149. package/dist/discord/components/settings-editor/mount-settings-editor.d.ts +16 -2
  150. package/dist/discord/components/settings-editor/mount-settings-editor.d.ts.map +1 -1
  151. package/dist/discord/components/settings-editor/mount-settings-editor.js +14 -10
  152. package/dist/discord/components/settings-editor/mount-settings-editor.js.map +1 -1
  153. package/dist/discord/components/settings-editor/navigation.d.ts +20 -0
  154. package/dist/discord/components/settings-editor/navigation.d.ts.map +1 -1
  155. package/dist/discord/components/settings-editor/navigation.js +22 -0
  156. package/dist/discord/components/settings-editor/navigation.js.map +1 -1
  157. package/dist/discord/components/settings-editor/settings-editor-card.view.d.ts +4 -3
  158. package/dist/discord/components/settings-editor/settings-editor-card.view.d.ts.map +1 -1
  159. package/dist/discord/components/settings-editor/settings-editor-card.view.js +60 -34
  160. package/dist/discord/components/settings-editor/settings-editor-card.view.js.map +1 -1
  161. package/dist/discord/components/settings-editor/settings-editor-field-modal.d.ts +2 -1
  162. package/dist/discord/components/settings-editor/settings-editor-field-modal.d.ts.map +1 -1
  163. package/dist/discord/components/settings-editor/settings-editor-field-modal.js +48 -72
  164. package/dist/discord/components/settings-editor/settings-editor-field-modal.js.map +1 -1
  165. package/dist/discord/components/settings-editor/settings-editor-field-values.d.ts +6 -0
  166. package/dist/discord/components/settings-editor/settings-editor-field-values.d.ts.map +1 -0
  167. package/dist/discord/components/settings-editor/settings-editor-field-values.js +13 -0
  168. package/dist/discord/components/settings-editor/settings-editor-field-values.js.map +1 -0
  169. package/dist/discord/components/settings-editor/settings-editor-fields.d.ts +6 -5
  170. package/dist/discord/components/settings-editor/settings-editor-fields.d.ts.map +1 -1
  171. package/dist/discord/components/settings-editor/settings-editor-fields.js +0 -10
  172. package/dist/discord/components/settings-editor/settings-editor-fields.js.map +1 -1
  173. package/dist/discord/components/settings-editor/settings-editor.view.d.ts +3 -2
  174. package/dist/discord/components/settings-editor/settings-editor.view.d.ts.map +1 -1
  175. package/dist/discord/components/settings-editor/settings-editor.view.js +4 -21
  176. package/dist/discord/components/settings-editor/settings-editor.view.js.map +1 -1
  177. package/dist/discord/events/event-guild-id.d.ts +10 -0
  178. package/dist/discord/events/event-guild-id.d.ts.map +1 -0
  179. package/dist/discord/events/event-guild-id.js +37 -0
  180. package/dist/discord/events/event-guild-id.js.map +1 -0
  181. package/dist/discord/events/event-router.d.ts +17 -3
  182. package/dist/discord/events/event-router.d.ts.map +1 -1
  183. package/dist/discord/events/event-router.js +33 -9
  184. package/dist/discord/events/event-router.js.map +1 -1
  185. package/dist/discord/i18n.d.ts +17 -2
  186. package/dist/discord/i18n.d.ts.map +1 -1
  187. package/dist/discord/i18n.js +43 -6
  188. package/dist/discord/i18n.js.map +1 -1
  189. package/dist/discord/interaction/interaction-locale.d.ts +14 -0
  190. package/dist/discord/interaction/interaction-locale.d.ts.map +1 -0
  191. package/dist/discord/interaction/interaction-locale.js +12 -0
  192. package/dist/discord/interaction/interaction-locale.js.map +1 -0
  193. package/dist/discord/interaction/locale-resolver.d.ts +27 -0
  194. package/dist/discord/interaction/locale-resolver.d.ts.map +1 -0
  195. package/dist/discord/interaction/locale-resolver.js +3 -0
  196. package/dist/discord/interaction/locale-resolver.js.map +1 -0
  197. package/dist/discord/interaction/modal.d.ts.map +1 -1
  198. package/dist/discord/interaction/modal.js +5 -40
  199. package/dist/discord/interaction/modal.js.map +1 -1
  200. package/dist/discord/interaction/reply-locale.d.ts +18 -0
  201. package/dist/discord/interaction/reply-locale.d.ts.map +1 -0
  202. package/dist/discord/interaction/reply-locale.js +25 -0
  203. package/dist/discord/interaction/reply-locale.js.map +1 -0
  204. package/dist/discord/interaction/select-bounds.d.ts +19 -0
  205. package/dist/discord/interaction/select-bounds.d.ts.map +1 -0
  206. package/dist/discord/interaction/select-bounds.js +17 -0
  207. package/dist/discord/interaction/select-bounds.js.map +1 -0
  208. package/dist/discord/interaction/select-menu.d.ts.map +1 -1
  209. package/dist/discord/interaction/select-menu.js +2 -9
  210. package/dist/discord/interaction/select-menu.js.map +1 -1
  211. package/dist/discord/placeholder-registry.d.ts +1 -1
  212. package/dist/discord/placeholder-registry.d.ts.map +1 -1
  213. package/dist/discord/presenter.d.ts +1 -1
  214. package/dist/discord/presenter.d.ts.map +1 -1
  215. package/dist/discord/settings/discord-guild-directory.d.ts +28 -0
  216. package/dist/discord/settings/discord-guild-directory.d.ts.map +1 -0
  217. package/dist/discord/settings/discord-guild-directory.js +171 -0
  218. package/dist/discord/settings/discord-guild-directory.js.map +1 -0
  219. package/dist/discord/settings/guild-locale-resolver.d.ts +25 -0
  220. package/dist/discord/settings/guild-locale-resolver.d.ts.map +1 -0
  221. package/dist/discord/settings/guild-locale-resolver.js +33 -0
  222. package/dist/discord/settings/guild-locale-resolver.js.map +1 -0
  223. package/dist/discord/settings/is-module-disabled.d.ts +16 -0
  224. package/dist/discord/settings/is-module-disabled.d.ts.map +1 -0
  225. package/dist/discord/settings/is-module-disabled.js +20 -0
  226. package/dist/discord/settings/is-module-disabled.js.map +1 -0
  227. package/dist/discord/settings/module-disabled-embed.d.ts +13 -0
  228. package/dist/discord/settings/module-disabled-embed.d.ts.map +1 -0
  229. package/dist/discord/settings/module-disabled-embed.js +16 -0
  230. package/dist/discord/settings/module-disabled-embed.js.map +1 -0
  231. package/dist/discord/settings/require-configured.d.ts +26 -0
  232. package/dist/discord/settings/require-configured.d.ts.map +1 -0
  233. package/dist/discord/settings/require-configured.js +62 -0
  234. package/dist/discord/settings/require-configured.js.map +1 -0
  235. package/dist/discord/ui/color-aliases.d.ts +31 -0
  236. package/dist/discord/ui/color-aliases.d.ts.map +1 -0
  237. package/dist/discord/ui/color-aliases.js +66 -0
  238. package/dist/discord/ui/color-aliases.js.map +1 -0
  239. package/dist/discord/ui/color-input.d.ts +5 -32
  240. package/dist/discord/ui/color-input.d.ts.map +1 -1
  241. package/dist/discord/ui/color-input.js +8 -157
  242. package/dist/discord/ui/color-input.js.map +1 -1
  243. package/dist/discord/ui/colors.d.ts +0 -2
  244. package/dist/discord/ui/colors.d.ts.map +1 -1
  245. package/dist/discord/ui/colors.js +4 -5
  246. package/dist/discord/ui/colors.js.map +1 -1
  247. package/dist/discord/ui/embed.d.ts.map +1 -1
  248. package/dist/discord/ui/embed.js +3 -8
  249. package/dist/discord/ui/embed.js.map +1 -1
  250. package/dist/discord/ui/truncate-text.d.ts +11 -0
  251. package/dist/discord/ui/truncate-text.d.ts.map +1 -0
  252. package/dist/discord/ui/truncate-text.js +19 -0
  253. package/dist/discord/ui/truncate-text.js.map +1 -0
  254. package/dist/errors/error-message.d.ts +9 -0
  255. package/dist/errors/error-message.d.ts.map +1 -0
  256. package/dist/errors/error-message.js +14 -0
  257. package/dist/errors/error-message.js.map +1 -0
  258. package/dist/i18n/business-message.d.ts +1 -1
  259. package/dist/i18n/business-message.d.ts.map +1 -1
  260. package/dist/i18n/catalog.d.ts +9 -0
  261. package/dist/i18n/catalog.d.ts.map +1 -1
  262. package/dist/i18n/catalog.js +4 -0
  263. package/dist/i18n/catalog.js.map +1 -1
  264. package/dist/i18n/locale.d.ts +2 -0
  265. package/dist/i18n/locale.d.ts.map +1 -1
  266. package/dist/i18n/locale.js +3 -1
  267. package/dist/i18n/locale.js.map +1 -1
  268. package/dist/i18n/translator.d.ts +2 -0
  269. package/dist/i18n/translator.d.ts.map +1 -1
  270. package/dist/i18n/translator.js.map +1 -1
  271. package/dist/module/module.d.ts +15 -1
  272. package/dist/module/module.d.ts.map +1 -1
  273. package/dist/resilience/retry.js +2 -2
  274. package/dist/resilience/retry.js.map +1 -1
  275. package/dist/scheduler/scheduler.d.ts.map +1 -1
  276. package/dist/scheduler/scheduler.js +2 -4
  277. package/dist/scheduler/scheduler.js.map +1 -1
  278. package/dist/settings/cache.d.ts +29 -0
  279. package/dist/settings/cache.d.ts.map +1 -0
  280. package/dist/settings/cache.js +47 -0
  281. package/dist/settings/cache.js.map +1 -0
  282. package/dist/settings/choice.d.ts +10 -0
  283. package/dist/settings/choice.d.ts.map +1 -0
  284. package/dist/settings/choice.js +3 -0
  285. package/dist/settings/choice.js.map +1 -0
  286. package/dist/settings/decode-stored.d.ts +20 -0
  287. package/dist/settings/decode-stored.d.ts.map +1 -0
  288. package/dist/settings/decode-stored.js +35 -0
  289. package/dist/settings/decode-stored.js.map +1 -0
  290. package/dist/settings/define-settings.d.ts +52 -0
  291. package/dist/settings/define-settings.d.ts.map +1 -0
  292. package/dist/settings/define-settings.js +141 -0
  293. package/dist/settings/define-settings.js.map +1 -0
  294. package/dist/settings/describe-field.d.ts +19 -0
  295. package/dist/settings/describe-field.d.ts.map +1 -0
  296. package/dist/settings/describe-field.js +131 -0
  297. package/dist/settings/describe-field.js.map +1 -0
  298. package/dist/settings/describe.d.ts +27 -0
  299. package/dist/settings/describe.d.ts.map +1 -0
  300. package/dist/settings/describe.js +62 -0
  301. package/dist/settings/describe.js.map +1 -0
  302. package/dist/settings/duration.d.ts +16 -0
  303. package/dist/settings/duration.d.ts.map +1 -0
  304. package/dist/settings/duration.js +56 -0
  305. package/dist/settings/duration.js.map +1 -0
  306. package/dist/settings/field-order.d.ts +37 -0
  307. package/dist/settings/field-order.d.ts.map +1 -0
  308. package/dist/settings/field-order.js +100 -0
  309. package/dist/settings/field-order.js.map +1 -0
  310. package/dist/settings/field-search.d.ts +10 -0
  311. package/dist/settings/field-search.d.ts.map +1 -0
  312. package/dist/settings/field-search.js +18 -0
  313. package/dist/settings/field-search.js.map +1 -0
  314. package/dist/settings/fields/builders.d.ts +41 -0
  315. package/dist/settings/fields/builders.d.ts.map +1 -0
  316. package/dist/settings/fields/builders.js +83 -0
  317. package/dist/settings/fields/builders.js.map +1 -0
  318. package/dist/settings/fields/field.d.ts +199 -0
  319. package/dist/settings/fields/field.d.ts.map +1 -0
  320. package/dist/settings/fields/field.js +33 -0
  321. package/dist/settings/fields/field.js.map +1 -0
  322. package/dist/settings/fields/zod-schema.d.ts +67 -0
  323. package/dist/settings/fields/zod-schema.d.ts.map +1 -0
  324. package/dist/settings/fields/zod-schema.js +281 -0
  325. package/dist/settings/fields/zod-schema.js.map +1 -0
  326. package/dist/settings/in-memory/in-memory-guild-directory.d.ts +24 -0
  327. package/dist/settings/in-memory/in-memory-guild-directory.d.ts.map +1 -0
  328. package/dist/settings/in-memory/in-memory-guild-directory.js +42 -0
  329. package/dist/settings/in-memory/in-memory-guild-directory.js.map +1 -0
  330. package/dist/settings/in-memory/in-memory-settings-store.d.ts +8 -0
  331. package/dist/settings/in-memory/in-memory-settings-store.d.ts.map +1 -0
  332. package/dist/settings/in-memory/in-memory-settings-store.js +43 -0
  333. package/dist/settings/in-memory/in-memory-settings-store.js.map +1 -0
  334. package/dist/settings/in-memory/in-process-notifier.d.ts +9 -0
  335. package/dist/settings/in-memory/in-process-notifier.d.ts.map +1 -0
  336. package/dist/settings/in-memory/in-process-notifier.js +32 -0
  337. package/dist/settings/in-memory/in-process-notifier.js.map +1 -0
  338. package/dist/settings/index.d.ts +22 -0
  339. package/dist/settings/index.d.ts.map +1 -0
  340. package/dist/settings/index.js +31 -0
  341. package/dist/settings/index.js.map +1 -0
  342. package/dist/settings/is-plain-object.d.ts +6 -0
  343. package/dist/settings/is-plain-object.d.ts.map +1 -0
  344. package/dist/settings/is-plain-object.js +15 -0
  345. package/dist/settings/is-plain-object.js.map +1 -0
  346. package/dist/settings/messages.d.ts +61 -0
  347. package/dist/settings/messages.d.ts.map +1 -0
  348. package/dist/settings/messages.js +155 -0
  349. package/dist/settings/messages.js.map +1 -0
  350. package/dist/settings/migrate.d.ts +35 -0
  351. package/dist/settings/migrate.d.ts.map +1 -0
  352. package/dist/settings/migrate.js +42 -0
  353. package/dist/settings/migrate.js.map +1 -0
  354. package/dist/settings/ports/guild-directory.d.ts +61 -0
  355. package/dist/settings/ports/guild-directory.d.ts.map +1 -0
  356. package/dist/settings/ports/guild-directory.js +3 -0
  357. package/dist/settings/ports/guild-directory.js.map +1 -0
  358. package/dist/settings/ports/settings-changed-notifier.d.ts +20 -0
  359. package/dist/settings/ports/settings-changed-notifier.d.ts.map +1 -0
  360. package/dist/settings/ports/settings-changed-notifier.js +3 -0
  361. package/dist/settings/ports/settings-changed-notifier.js.map +1 -0
  362. package/dist/settings/ports/settings-store.d.ts +76 -0
  363. package/dist/settings/ports/settings-store.d.ts.map +1 -0
  364. package/dist/settings/ports/settings-store.js +3 -0
  365. package/dist/settings/ports/settings-store.js.map +1 -0
  366. package/dist/settings/registry.d.ts +31 -0
  367. package/dist/settings/registry.d.ts.map +1 -0
  368. package/dist/settings/registry.js +102 -0
  369. package/dist/settings/registry.js.map +1 -0
  370. package/dist/settings/settings-declaration-error.d.ts +13 -0
  371. package/dist/settings/settings-declaration-error.d.ts.map +1 -0
  372. package/dist/settings/settings-declaration-error.js +22 -0
  373. package/dist/settings/settings-declaration-error.js.map +1 -0
  374. package/dist/settings/settings-service.d.ts +148 -0
  375. package/dist/settings/settings-service.d.ts.map +1 -0
  376. package/dist/settings/settings-service.js +279 -0
  377. package/dist/settings/settings-service.js.map +1 -0
  378. package/dist/settings/settings-validation-error.d.ts +23 -0
  379. package/dist/settings/settings-validation-error.d.ts.map +1 -0
  380. package/dist/settings/settings-validation-error.js +17 -0
  381. package/dist/settings/settings-validation-error.js.map +1 -0
  382. package/dist/settings/status.d.ts +16 -0
  383. package/dist/settings/status.d.ts.map +1 -0
  384. package/dist/settings/status.js +18 -0
  385. package/dist/settings/status.js.map +1 -0
  386. package/dist/settings/suggest.d.ts +77 -0
  387. package/dist/settings/suggest.d.ts.map +1 -0
  388. package/dist/settings/suggest.js +192 -0
  389. package/dist/settings/suggest.js.map +1 -0
  390. package/dist/settings/system/kernel-settings.d.ts +43 -0
  391. package/dist/settings/system/kernel-settings.d.ts.map +1 -0
  392. package/dist/settings/system/kernel-settings.js +53 -0
  393. package/dist/settings/system/kernel-settings.js.map +1 -0
  394. package/dist/settings/system/module-gate.d.ts +31 -0
  395. package/dist/settings/system/module-gate.d.ts.map +1 -0
  396. package/dist/settings/system/module-gate.js +34 -0
  397. package/dist/settings/system/module-gate.js.map +1 -0
  398. package/dist/settings/testing/index.d.ts +2 -0
  399. package/dist/settings/testing/index.d.ts.map +1 -0
  400. package/dist/settings/testing/index.js +6 -0
  401. package/dist/settings/testing/index.js.map +1 -0
  402. package/dist/settings/testing/settings-store-contract.d.ts +29 -0
  403. package/dist/settings/testing/settings-store-contract.d.ts.map +1 -0
  404. package/dist/settings/testing/settings-store-contract.js +192 -0
  405. package/dist/settings/testing/settings-store-contract.js.map +1 -0
  406. package/dist/settings/timed-search.d.ts +26 -0
  407. package/dist/settings/timed-search.d.ts.map +1 -0
  408. package/dist/settings/timed-search.js +48 -0
  409. package/dist/settings/timed-search.js.map +1 -0
  410. package/dist/settings/types.d.ts +37 -0
  411. package/dist/settings/types.d.ts.map +1 -0
  412. package/dist/settings/types.js +3 -0
  413. package/dist/settings/types.js.map +1 -0
  414. package/dist/settings/validate.d.ts +55 -0
  415. package/dist/settings/validate.d.ts.map +1 -0
  416. package/dist/settings/validate.js +196 -0
  417. package/dist/settings/validate.js.map +1 -0
  418. package/package.json +463 -88
  419. package/src/authz/require-level-guard.ts +1 -1
  420. package/src/color.ts +134 -0
  421. package/src/discord/command/all-required.ts +12 -0
  422. package/src/discord/command/autocomplete-dispatcher.ts +2 -1
  423. package/src/discord/command/autocomplete-limits.ts +2 -0
  424. package/src/discord/command/autocomplete.ts +8 -7
  425. package/src/discord/command/command-responders.ts +39 -0
  426. package/src/discord/command/context.ts +14 -54
  427. package/src/discord/command/cooldown-guard.ts +1 -1
  428. package/src/discord/command/create-command.ts +19 -94
  429. package/src/discord/command/create-context-menu-command.ts +19 -97
  430. package/src/discord/command/errors.ts +1 -1
  431. package/src/discord/command/guard.ts +24 -12
  432. package/src/discord/command/options.ts +202 -412
  433. package/src/discord/command/passes-guard.ts +37 -0
  434. package/src/discord/command/permission-guard.ts +1 -1
  435. package/src/discord/command/render-command-failure.ts +71 -0
  436. package/src/discord/command/route-key.ts +9 -0
  437. package/src/discord/command/router.ts +73 -12
  438. package/src/discord/command/send-embed.ts +42 -0
  439. package/src/discord/command/types.ts +7 -1
  440. package/src/discord/components/component-access.ts +20 -0
  441. package/src/discord/components/component-router.ts +73 -36
  442. package/src/discord/components/interactive-message/index.ts +5 -3
  443. package/src/discord/components/interactive-message/interactive-message-collector.ts +4 -68
  444. package/src/discord/components/interactive-message/message-edit-options.ts +47 -0
  445. package/src/discord/components/interactive-message/mount-interactive-message.ts +5 -3
  446. package/src/discord/components/interactive-message/state-store.ts +20 -0
  447. package/src/discord/components/paginator/mount-paginator.ts +3 -3
  448. package/src/discord/components/paginator/paginator-view.ts +1 -1
  449. package/src/discord/components/persistent-paginator.ts +8 -9
  450. package/src/discord/components/settings-editor/from-declaration-controls.ts +371 -0
  451. package/src/discord/components/settings-editor/from-declaration-display.ts +155 -0
  452. package/src/discord/components/settings-editor/from-declaration-layout.ts +247 -0
  453. package/src/discord/components/settings-editor/from-declaration-search.ts +77 -0
  454. package/src/discord/components/settings-editor/from-declaration-stored.ts +39 -0
  455. package/src/discord/components/settings-editor/from-declaration-subject.ts +110 -0
  456. package/src/discord/components/settings-editor/from-declaration-values.ts +240 -0
  457. package/src/discord/components/settings-editor/from-declaration.ts +218 -0
  458. package/src/discord/components/settings-editor/index.ts +5 -2
  459. package/src/discord/components/settings-editor/mount-settings-editor.ts +28 -10
  460. package/src/discord/components/settings-editor/navigation.ts +41 -0
  461. package/src/discord/components/settings-editor/settings-editor-card.view.ts +79 -36
  462. package/src/discord/components/settings-editor/settings-editor-field-modal.ts +76 -68
  463. package/src/discord/components/settings-editor/settings-editor-field-values.ts +11 -0
  464. package/src/discord/components/settings-editor/settings-editor-fields.ts +6 -11
  465. package/src/discord/components/settings-editor/settings-editor.view.ts +11 -24
  466. package/src/discord/events/event-guild-id.ts +35 -0
  467. package/src/discord/events/event-router.ts +46 -13
  468. package/src/discord/i18n.ts +47 -8
  469. package/src/discord/interaction/interaction-locale.ts +19 -0
  470. package/src/discord/interaction/locale-resolver.ts +28 -0
  471. package/src/discord/interaction/modal.ts +5 -40
  472. package/src/discord/interaction/reply-locale.ts +35 -0
  473. package/src/discord/interaction/select-bounds.ts +33 -0
  474. package/src/discord/interaction/select-menu.ts +2 -9
  475. package/src/discord/placeholder-registry.ts +1 -1
  476. package/src/discord/presenter.ts +1 -1
  477. package/src/discord/settings/discord-guild-directory.ts +214 -0
  478. package/src/discord/settings/guild-locale-resolver.ts +38 -0
  479. package/src/discord/settings/is-module-disabled.ts +22 -0
  480. package/src/discord/settings/module-disabled-embed.ts +19 -0
  481. package/src/discord/settings/require-configured.ts +68 -0
  482. package/src/discord/ui/color-aliases.ts +70 -0
  483. package/src/discord/ui/color-input.ts +8 -173
  484. package/src/discord/ui/colors.ts +2 -3
  485. package/src/discord/ui/embed.ts +3 -9
  486. package/src/discord/ui/truncate-text.ts +15 -0
  487. package/src/errors/error-message.ts +10 -0
  488. package/src/i18n/business-message.ts +1 -1
  489. package/src/i18n/catalog.ts +14 -0
  490. package/src/i18n/locale.ts +3 -0
  491. package/src/i18n/translator.ts +3 -0
  492. package/src/module/module.ts +15 -1
  493. package/src/resilience/retry.ts +1 -1
  494. package/src/scheduler/scheduler.ts +2 -5
  495. package/src/settings/cache.ts +70 -0
  496. package/src/settings/choice.ts +9 -0
  497. package/src/settings/decode-stored.ts +40 -0
  498. package/src/settings/define-settings.ts +214 -0
  499. package/src/settings/describe-field.ts +155 -0
  500. package/src/settings/describe.ts +90 -0
  501. package/src/settings/duration.ts +54 -0
  502. package/src/settings/field-order.ts +128 -0
  503. package/src/settings/field-search.ts +16 -0
  504. package/src/settings/fields/builders.ts +161 -0
  505. package/src/settings/fields/field.ts +205 -0
  506. package/src/settings/fields/zod-schema.ts +300 -0
  507. package/src/settings/in-memory/in-memory-guild-directory.ts +69 -0
  508. package/src/settings/in-memory/in-memory-settings-store.ts +46 -0
  509. package/src/settings/in-memory/in-process-notifier.ts +40 -0
  510. package/src/settings/index.ts +72 -0
  511. package/src/settings/is-plain-object.ts +11 -0
  512. package/src/settings/messages.ts +161 -0
  513. package/src/settings/migrate.ts +58 -0
  514. package/src/settings/ports/guild-directory.ts +48 -0
  515. package/src/settings/ports/settings-changed-notifier.ts +20 -0
  516. package/src/settings/ports/settings-store.ts +74 -0
  517. package/src/settings/registry.ts +137 -0
  518. package/src/settings/settings-declaration-error.ts +16 -0
  519. package/src/settings/settings-service.ts +535 -0
  520. package/src/settings/settings-validation-error.ts +41 -0
  521. package/src/settings/status.ts +25 -0
  522. package/src/settings/suggest.ts +267 -0
  523. package/src/settings/system/kernel-settings.ts +74 -0
  524. package/src/settings/system/module-gate.ts +49 -0
  525. package/src/settings/testing/index.ts +7 -0
  526. package/src/settings/testing/settings-store-contract.ts +278 -0
  527. package/src/settings/timed-search.ts +56 -0
  528. package/src/settings/types.ts +42 -0
  529. package/src/settings/validate.ts +298 -0
@@ -1,33 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ComponentRouter = void 0;
4
- exports.openToAnyone = openToAnyone;
5
- exports.requiresPermissions = requiresPermissions;
6
- exports.checkedByHandler = checkedByHandler;
7
- exports.createComponentHandler = createComponentHandler;
8
4
  const discord_js_1 = require("discord.js");
5
+ const passes_guard_1 = require("../../discord/command/passes-guard");
9
6
  const i18n_1 = require("../../discord/i18n");
7
+ const reply_locale_1 = require("../../discord/interaction/reply-locale");
10
8
  const permissions_1 = require("../../discord/permissions");
11
- const i18n_2 = require("../../i18n");
12
- /** Any member may click; `because` records why that is acceptable. */
13
- function openToAnyone(because) {
14
- return { kind: "anyone", because };
15
- }
16
- /** The router denies the click unless the member holds every permission. */
17
- function requiresPermissions(...required) {
18
- return { kind: "permissions", required };
19
- }
20
- /**
21
- * The decision needs per-resource state, so the handler makes it. `because`
22
- * names the rule it applies, so a reviewer can go and check that it does.
23
- */
24
- function checkedByHandler(because) {
25
- return { kind: "handler", because };
26
- }
27
- /** Declare a {@link ComponentHandler}. Identity helper kept for a consistent DSL. */
28
- function createComponentHandler(handler) {
29
- return handler;
30
- }
9
+ const is_module_disabled_1 = require("../../discord/settings/is-module-disabled");
10
+ const module_disabled_embed_1 = require("../../discord/settings/module-disabled-embed");
11
+ const error_message_1 = require("../../errors/error-message");
31
12
  function isRoutable(interaction) {
32
13
  return interaction.isButton() || interaction.isAnySelectMenu() || interaction.isModalSubmit();
33
14
  }
@@ -41,6 +22,8 @@ function isRoutable(interaction) {
41
22
  class ComponentRouter {
42
23
  deps;
43
24
  handlers = [];
25
+ /** The module each handler was registered for; absent means never gated. */
26
+ modules = new Map();
44
27
  runtime;
45
28
  constructor(deps) {
46
29
  this.deps = deps;
@@ -48,15 +31,25 @@ class ComponentRouter {
48
31
  presenter: deps.presenter,
49
32
  logger: deps.logger,
50
33
  translator: deps.translator,
34
+ localeResolver: deps.localeResolver,
51
35
  };
52
36
  }
53
- register(handler) {
37
+ /**
38
+ * @param moduleName - the module the handler belongs to, so the gate can
39
+ * skip it on guilds where that module is disabled. Omit it for a handler
40
+ * that always runs.
41
+ */
42
+ register(handler, moduleName) {
54
43
  this.handlers.push(handler);
44
+ if (moduleName !== undefined) {
45
+ this.modules.set(handler, moduleName);
46
+ }
55
47
  return this;
56
48
  }
57
- registerAll(handlers) {
49
+ /** Register many handlers at once, all of `moduleName` when given. */
50
+ registerAll(handlers, moduleName) {
58
51
  for (const handler of handlers) {
59
- this.register(handler);
52
+ this.register(handler, moduleName);
60
53
  }
61
54
  return this;
62
55
  }
@@ -72,22 +65,44 @@ class ComponentRouter {
72
65
  if (!handler) {
73
66
  return false;
74
67
  }
68
+ // First: a disabled module answers the same way whoever clicks.
69
+ if (!(await this.passesGate(interaction, handler))) {
70
+ return true;
71
+ }
75
72
  // Before the handler runs, so a declared permission cannot be bypassed by a
76
73
  // handler that forgot to check it.
77
74
  if (!(await this.passesAuthorization(interaction, handler))) {
78
75
  return true;
79
76
  }
77
+ if (!(await (0, passes_guard_1.passesGuard)(interaction, handler.guard, this.runtime))) {
78
+ return true;
79
+ }
80
80
  try {
81
81
  await handler.handle(interaction, this.runtime);
82
82
  }
83
83
  catch (error) {
84
84
  this.deps.logger.error({
85
85
  customId: interaction.customId,
86
- err: error instanceof Error ? error.message : String(error),
86
+ err: (0, error_message_1.errorMessage)(error),
87
87
  }, "Component handler failed");
88
88
  }
89
89
  return true;
90
90
  }
91
+ /** Answer the member and return `false` when the handler's module is disabled on the guild. */
92
+ async passesGate(interaction, handler) {
93
+ const disabled = await (0, is_module_disabled_1.isModuleDisabled)({
94
+ gate: this.deps.gate,
95
+ moduleName: this.modules.get(handler),
96
+ guildId: interaction.guildId,
97
+ });
98
+ if (disabled) {
99
+ await interaction.reply({
100
+ embeds: [await (0, module_disabled_embed_1.moduleDisabledEmbed)(interaction, this.deps)],
101
+ flags: discord_js_1.MessageFlags.Ephemeral,
102
+ });
103
+ }
104
+ return !disabled;
105
+ }
91
106
  /**
92
107
  * Enforce the handler's declared audience. Only `permissions` is enforceable
93
108
  * here — the other two kinds are statements about a decision made elsewhere,
@@ -105,7 +120,7 @@ class ComponentRouter {
105
120
  if (missing.length === 0) {
106
121
  return true;
107
122
  }
108
- const locale = this.localeOf(interaction);
123
+ const locale = await (0, reply_locale_1.replyLocale)(interaction, this.deps);
109
124
  const message = this.deps.translator.translate(locale, i18n_1.CORE_MESSAGES.guardPermissionDenied, {
110
125
  missing: (0, permissions_1.formatPermissions)(missing),
111
126
  });
@@ -115,9 +130,6 @@ class ComponentRouter {
115
130
  });
116
131
  return false;
117
132
  }
118
- localeOf(interaction) {
119
- return (0, i18n_2.resolveLocale)([interaction.locale, interaction.guildLocale], this.deps.translator.defaultLocale);
120
- }
121
133
  }
122
134
  exports.ComponentRouter = ComponentRouter;
123
135
  //# sourceMappingURL=component-router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-router.js","sourceRoot":"","sources":["../../../src/discord/components/component-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-router.js","sourceRoot":"","sources":["../../../src/discord/components/component-router.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
- export { COLLECTOR_IDLE_MS, createStateStore, type DisabledInteractiveMessageComponents, type InteractiveMessageCollectorDeps, type InteractiveMessageHandle, type InteractiveMessagePayload, type InteractiveSelect, type InteractiveView, mountInteractiveMessageCollector, type SelectComponentContext, type StateStore, toMessageEditOptions, } from "../../../discord/components/interactive-message/interactive-message-collector";
1
+ export { COLLECTOR_IDLE_MS, type DisabledInteractiveMessageComponents, type InteractiveMessageCollectorDeps, type InteractiveMessageHandle, type InteractiveMessagePayload, type InteractiveSelect, type InteractiveView, mountInteractiveMessageCollector, type SelectComponentContext, } from "../../../discord/components/interactive-message/interactive-message-collector";
2
+ export { toMessageEditOptions } from "../../../discord/components/interactive-message/message-edit-options";
2
3
  export { type InteractiveMessageOptions, mountInteractiveMessage, } from "../../../discord/components/interactive-message/mount-interactive-message";
4
+ export { createStateStore, type StateStore, } from "../../../discord/components/interactive-message/state-store";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,gCAAgC,EAChC,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,oBAAoB,GACpB,MAAM,wEAAwE,CAAC;AAChF,OAAO,EACN,KAAK,yBAAyB,EAC9B,uBAAuB,GACvB,MAAM,oEAAoE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,gCAAgC,EAChC,KAAK,sBAAsB,GAC3B,MAAM,wEAAwE,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+DAA+D,CAAC;AACrG,OAAO,EACN,KAAK,yBAAyB,EAC9B,uBAAuB,GACvB,MAAM,oEAAoE,CAAC;AAC5E,OAAO,EACN,gBAAgB,EAChB,KAAK,UAAU,GACf,MAAM,sDAAsD,CAAC"}
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mountInteractiveMessage = exports.toMessageEditOptions = exports.mountInteractiveMessageCollector = exports.createStateStore = exports.COLLECTOR_IDLE_MS = void 0;
3
+ exports.createStateStore = exports.mountInteractiveMessage = exports.toMessageEditOptions = exports.mountInteractiveMessageCollector = exports.COLLECTOR_IDLE_MS = void 0;
4
4
  var interactive_message_collector_1 = require("../../../discord/components/interactive-message/interactive-message-collector");
5
5
  Object.defineProperty(exports, "COLLECTOR_IDLE_MS", { enumerable: true, get: function () { return interactive_message_collector_1.COLLECTOR_IDLE_MS; } });
6
- Object.defineProperty(exports, "createStateStore", { enumerable: true, get: function () { return interactive_message_collector_1.createStateStore; } });
7
6
  Object.defineProperty(exports, "mountInteractiveMessageCollector", { enumerable: true, get: function () { return interactive_message_collector_1.mountInteractiveMessageCollector; } });
8
- Object.defineProperty(exports, "toMessageEditOptions", { enumerable: true, get: function () { return interactive_message_collector_1.toMessageEditOptions; } });
7
+ var message_edit_options_1 = require("../../../discord/components/interactive-message/message-edit-options");
8
+ Object.defineProperty(exports, "toMessageEditOptions", { enumerable: true, get: function () { return message_edit_options_1.toMessageEditOptions; } });
9
9
  var mount_interactive_message_1 = require("../../../discord/components/interactive-message/mount-interactive-message");
10
10
  Object.defineProperty(exports, "mountInteractiveMessage", { enumerable: true, get: function () { return mount_interactive_message_1.mountInteractiveMessage; } });
11
+ var state_store_1 = require("../../../discord/components/interactive-message/state-store");
12
+ Object.defineProperty(exports, "createStateStore", { enumerable: true, get: function () { return state_store_1.createStateStore; } });
11
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/index.ts"],"names":[],"mappings":";;;AAAA,wHAagF;AAZ/E,kIAAA,iBAAiB,OAAA;AACjB,iIAAA,gBAAgB,OAAA;AAOhB,iJAAA,gCAAgC,OAAA;AAGhC,qIAAA,oBAAoB,OAAA;AAErB,gHAG4E;AAD3E,oIAAA,uBAAuB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/index.ts"],"names":[],"mappings":";;;AAAA,wHAUgF;AAT/E,kIAAA,iBAAiB,OAAA;AAOjB,iJAAA,gCAAgC,OAAA;AAGjC,sGAAqG;AAA5F,4HAAA,oBAAoB,OAAA;AAC7B,gHAG4E;AAD3E,oIAAA,uBAAuB,OAAA;AAExB,oFAG8D;AAF7D,+GAAA,gBAAgB,OAAA"}
@@ -1,7 +1,8 @@
1
- import type { ActionRowBuilder, AnySelectMenuInteraction, Attachment, ChatInputCommandInteraction, ContainerBuilder, EmbedBuilder, InteractionUpdateOptions, MessageActionRowComponentBuilder, MessageMentionOptions } from "discord.js";
1
+ import type { ActionRowBuilder, AnySelectMenuInteraction, ChatInputCommandInteraction, ContainerBuilder, EmbedBuilder, MessageActionRowComponentBuilder, MessageMentionOptions } from "discord.js";
2
+ import type { StateStore } from "../../../discord/components/interactive-message/state-store";
2
3
  import type { Button } from "../../../discord/interaction/button";
3
4
  import type { Card } from "../../../discord/ui/card";
4
- import { type MessageFile } from "../../../discord/ui/message-attachments";
5
+ import type { MessageFile } from "../../../discord/ui/message-attachments";
5
6
  import type { Logger } from "../../../logger";
6
7
  /** How long an interactive message stays live without a click. */
7
8
  export declare const COLLECTOR_IDLE_MS: number;
@@ -71,32 +72,6 @@ export type InteractiveMessagePayload<S = never> = (InteractiveMessagePayloadBas
71
72
  */
72
73
  components?: never;
73
74
  });
74
- /**
75
- * The payload as discord.js takes it on an edit, given what the message already
76
- * carries: a file already up there under a wanted name is kept rather than
77
- * uploaded a second time, so an unrelated re-render neither drops nor re-sends
78
- * it.
79
- *
80
- * A payload stating no files touches neither field, leaving the message's own
81
- * attachments alone.
82
- *
83
- * `state` is only read for a `"card"` payload — it is what `Card.apply` needs
84
- * to render the container — and is otherwise unused. No caller building an
85
- * `"embeds"` payload has ever had to pass it, and still does not: it is the
86
- * third, optional parameter existing two-argument calls already omit.
87
- */
88
- export declare function toMessageEditOptions<S>(payload: InteractiveMessagePayload<S>, existing: readonly Attachment[], state?: S): InteractionUpdateOptions;
89
- /**
90
- * The single mutable cell shared by the view and the collector. Kept explicit
91
- * rather than captured as a closure variable so the two always read the same
92
- * reference.
93
- */
94
- export interface StateStore<S> {
95
- read(): S;
96
- write(next: S): void;
97
- }
98
- /** Hold a state the collector can advance in place. */
99
- export declare function createStateStore<S>(initial: S): StateStore<S>;
100
75
  /**
101
76
  * What {@link InteractiveView.disabledControls} hands back: enough of a payload
102
77
  * to neutralise the message's controls in place, in whichever layout the view
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-message-collector.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/interactive-message-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive-message-collector.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/interactive-message-collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAChB,wBAAwB,EAExB,2BAA2B,EAE3B,gBAAgB,EAChB,YAAY,EAEZ,gCAAgC,EAChC,qBAAqB,EACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sDAAsD,CAAC;AACvF,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,QAAgB,CAAC;AAE/C;;;GAGG;AACH,UAAU,6BAA6B;IACtC;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,GAAG,KAAK,IAC5C,CAAC,6BAA6B,GAAG;IACjC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC,gCAAgC,CAAC,EAAE,CAAC;CAChE,CAAC,GACF,CAAC,6BAA6B,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACd;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC,gCAAgC,CAAC,EAAE,CAAC;IAChE;;;;;OAKG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC,CAAC;AAEN;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,oCAAoC,CAAC,CAAC,IAC/C,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,GAChD;IACA,QAAQ,CAAC,UAAU,EAAE,SAAS,CAC3B,gBAAgB,GAChB,gBAAgB,CAAC,gCAAgC,CAAC,CACpD,EAAE,CAAC;CACH,CAAC;AAEL;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAC/C,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAG,oCAAoC,CAAC,CAAC,CAAC,CAAC;CACpE;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,+BAA+B,CAAC,CAAC;IACjD,WAAW,EAAE,2BAA2B,CAAC;IACzC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,wBAAwB;IACxC;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,CAAC;CACb;AAED,wBAAgB,gCAAgC,CAAC,CAAC,EACjD,IAAI,EAAE,+BAA+B,CAAC,CAAC,CAAC,GACtC,wBAAwB,CA8G1B"}
@@ -1,63 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.COLLECTOR_IDLE_MS = void 0;
4
- exports.toMessageEditOptions = toMessageEditOptions;
5
- exports.createStateStore = createStateStore;
6
4
  exports.mountInteractiveMessageCollector = mountInteractiveMessageCollector;
7
- const message_attachments_1 = require("../../../discord/ui/message-attachments");
8
- const errors_1 = require("../../../errors");
5
+ const message_edit_options_1 = require("../../../discord/components/interactive-message/message-edit-options");
6
+ const describe_error_1 = require("../../../errors/describe-error");
9
7
  /** How long an interactive message stays live without a click. */
10
8
  exports.COLLECTOR_IDLE_MS = 5 * 60 * 1000;
11
- /**
12
- * The payload as discord.js takes it on an edit, given what the message already
13
- * carries: a file already up there under a wanted name is kept rather than
14
- * uploaded a second time, so an unrelated re-render neither drops nor re-sends
15
- * it.
16
- *
17
- * A payload stating no files touches neither field, leaving the message's own
18
- * attachments alone.
19
- *
20
- * `state` is only read for a `"card"` payload — it is what `Card.apply` needs
21
- * to render the container — and is otherwise unused. No caller building an
22
- * `"embeds"` payload has ever had to pass it, and still does not: it is the
23
- * third, optional parameter existing two-argument calls already omit.
24
- */
25
- function toMessageEditOptions(payload, existing, state) {
26
- const { files, allowedMentions } = payload;
27
- const mentions = allowedMentions === undefined ? {} : { allowedMentions };
28
- const attachments = files === undefined ? {} : (0, message_attachments_1.planMessageAttachments)(existing, files);
29
- if (payload.layout === "card") {
30
- if (state === undefined) {
31
- // Only reachable once a caller actually builds a `"card"` payload
32
- // without threading the state its `Card` needs — a programming error
33
- // in that caller, not something a member's click can trigger.
34
- throw new Error('toMessageEditOptions: a "card" layout payload needs the state its Card was ' +
35
- "declared over to call Card.apply, and none was given.");
36
- }
37
- return {
38
- components: [payload.card.apply(state, false), ...(payload.controls ?? [])],
39
- ...mentions,
40
- ...attachments,
41
- };
42
- }
43
- const { embeds, components } = payload;
44
- return { embeds, components, ...mentions, ...attachments };
45
- }
46
- /** Hold a state the collector can advance in place. */
47
- function createStateStore(initial) {
48
- let state = initial;
49
- return {
50
- read: () => state,
51
- write: (next) => {
52
- state = next;
53
- },
54
- };
55
- }
56
9
  function mountInteractiveMessageCollector(deps) {
57
10
  const { interaction, response, buttons, view, store, ownerId, idleMs, logger } = deps;
58
11
  const selects = deps.selects ?? [];
59
12
  function renderOnto(collected, next) {
60
- return toMessageEditOptions(view.render(next), [...collected.message.attachments.values()], next);
13
+ return (0, message_edit_options_1.toMessageEditOptions)(view.render(next), [...collected.message.attachments.values()], next);
61
14
  }
62
15
  function createClickContext(clicked) {
63
16
  return {
@@ -101,14 +54,14 @@ function mountInteractiveMessageCollector(deps) {
101
54
  // interaction failed — so it is a defect to be found, not a hiccup. The
102
55
  // custom id says which control it was, since the state that produced it
103
56
  // is gone by the time anybody reads this.
104
- logger.error({ err: (0, errors_1.describeError)(error), customId: collected.customId }, "Failed to update interactive message");
57
+ logger.error({ err: (0, describe_error_1.describeError)(error), customId: collected.customId }, "Failed to update interactive message");
105
58
  }
106
59
  }
107
60
  function disableOnEnd() {
108
61
  // The message outlives the collector, so leave the controls visibly inert
109
62
  // instead of letting clicks fail silently.
110
63
  interaction.editReply(view.disabledControls(store.read())).catch((error) => {
111
- logger.warn({ err: (0, errors_1.describeError)(error) }, "Failed to disable interactive message controls");
64
+ logger.warn({ err: (0, describe_error_1.describeError)(error) }, "Failed to disable interactive message controls");
112
65
  });
113
66
  }
114
67
  /**
@@ -126,7 +79,7 @@ function mountInteractiveMessageCollector(deps) {
126
79
  await deps.onEnd?.();
127
80
  }
128
81
  catch (error) {
129
- logger.warn({ err: (0, errors_1.describeError)(error) }, "Failed to close interactive message");
82
+ logger.warn({ err: (0, describe_error_1.describeError)(error) }, "Failed to close interactive message");
130
83
  }
131
84
  }
132
85
  // No `componentType`: the collector takes every message component the view
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-message-collector.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/interactive-message-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive-message-collector.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/interactive-message-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Attachment, InteractionUpdateOptions } from "discord.js";
2
+ import type { InteractiveMessagePayload } from "../../../discord/components/interactive-message/interactive-message-collector";
3
+ /**
4
+ * The payload as discord.js takes it on an edit, given what the message already
5
+ * carries: a file already up there under a wanted name is kept rather than
6
+ * uploaded a second time, so an unrelated re-render neither drops nor re-sends
7
+ * it.
8
+ *
9
+ * A payload stating no files touches neither field, leaving the message's own
10
+ * attachments alone.
11
+ *
12
+ * `state` is only read for a `"card"` payload — it is what `Card.apply` needs
13
+ * to render the container — and is otherwise unused. No caller building an
14
+ * `"embeds"` payload has ever had to pass it, and still does not: it is the
15
+ * third, optional parameter existing two-argument calls already omit.
16
+ */
17
+ export declare function toMessageEditOptions<S>(payload: InteractiveMessagePayload<S>, existing: readonly Attachment[], state?: S): InteractionUpdateOptions;
18
+ //# sourceMappingURL=message-edit-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-edit-options.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/message-edit-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wEAAwE,CAAC;AAGxH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACrC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,EACrC,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,KAAK,CAAC,EAAE,CAAC,GACP,wBAAwB,CAwB1B"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toMessageEditOptions = toMessageEditOptions;
4
+ const message_attachments_1 = require("../../../discord/ui/message-attachments");
5
+ /**
6
+ * The payload as discord.js takes it on an edit, given what the message already
7
+ * carries: a file already up there under a wanted name is kept rather than
8
+ * uploaded a second time, so an unrelated re-render neither drops nor re-sends
9
+ * it.
10
+ *
11
+ * A payload stating no files touches neither field, leaving the message's own
12
+ * attachments alone.
13
+ *
14
+ * `state` is only read for a `"card"` payload — it is what `Card.apply` needs
15
+ * to render the container — and is otherwise unused. No caller building an
16
+ * `"embeds"` payload has ever had to pass it, and still does not: it is the
17
+ * third, optional parameter existing two-argument calls already omit.
18
+ */
19
+ function toMessageEditOptions(payload, existing, state) {
20
+ const { files, allowedMentions } = payload;
21
+ const mentions = allowedMentions === undefined ? {} : { allowedMentions };
22
+ const attachments = files === undefined ? {} : (0, message_attachments_1.planMessageAttachments)(existing, files);
23
+ if (payload.layout === "card") {
24
+ if (state === undefined) {
25
+ // Only reachable once a caller actually builds a `"card"` payload
26
+ // without threading the state its `Card` needs — a programming error
27
+ // in that caller, not something a member's click can trigger.
28
+ throw new Error('toMessageEditOptions: a "card" layout payload needs the state its Card was ' +
29
+ "declared over to call Card.apply, and none was given.");
30
+ }
31
+ return {
32
+ components: [payload.card.apply(state, false), ...(payload.controls ?? [])],
33
+ ...mentions,
34
+ ...attachments,
35
+ };
36
+ }
37
+ const { embeds, components } = payload;
38
+ return { embeds, components, ...mentions, ...attachments };
39
+ }
40
+ //# sourceMappingURL=message-edit-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-edit-options.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/message-edit-options.ts"],"names":[],"mappings":";;AAkBA,oDA4BC;AA5CD,0EAA0E;AAE1E;;;;;;;;;;;;;GAaG;AACH,SAAgB,oBAAoB,CACnC,OAAqC,EACrC,QAA+B,EAC/B,KAAS;IAET,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,QAAQ,GAAG,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,4CAAsB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEvF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,kEAAkE;YAClE,qEAAqE;YACrE,8DAA8D;YAC9D,MAAM,IAAI,KAAK,CACd,6EAA6E;gBAC5E,uDAAuD,CACxD,CAAC;QACH,CAAC;QACD,OAAO;YACN,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC3E,GAAG,QAAQ;YACX,GAAG,WAAW;SACd,CAAC;IACH,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;AAC5D,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { type ChatInputCommandInteraction } from "discord.js";
2
- import { type InteractiveMessageHandle, type InteractiveSelect, type InteractiveView, type StateStore } from "../../../discord/components/interactive-message/interactive-message-collector";
2
+ import { type InteractiveMessageHandle, type InteractiveSelect, type InteractiveView } from "../../../discord/components/interactive-message/interactive-message-collector";
3
+ import { type StateStore } from "../../../discord/components/interactive-message/state-store";
3
4
  import type { Button } from "../../../discord/interaction/button";
4
5
  import type { Logger } from "../../../logger";
5
6
  export interface InteractiveMessageOptions<S> {
@@ -1 +1 @@
1
- {"version":3,"file":"mount-interactive-message.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/mount-interactive-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAgB,MAAM,YAAY,CAAC;AAC5E,OAAO,EAGN,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAEpB,KAAK,UAAU,EAEf,MAAM,wEAAwE,CAAC;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC9C,WAAW,EAAE,2BAA2B,EACxC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,wBAAwB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CA8BvE"}
1
+ {"version":3,"file":"mount-interactive-message.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/mount-interactive-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAgB,MAAM,YAAY,CAAC;AAC5E,OAAO,EAEN,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAEpB,MAAM,wEAAwE,CAAC;AAEhF,OAAO,EAEN,KAAK,UAAU,EACf,MAAM,sDAAsD,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC9C,WAAW,EAAE,2BAA2B,EACxC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,wBAAwB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CA8BvE"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mountInteractiveMessage = mountInteractiveMessage;
4
4
  const discord_js_1 = require("discord.js");
5
5
  const interactive_message_collector_1 = require("../../../discord/components/interactive-message/interactive-message-collector");
6
+ const message_edit_options_1 = require("../../../discord/components/interactive-message/message-edit-options");
7
+ const state_store_1 = require("../../../discord/components/interactive-message/state-store");
6
8
  /**
7
9
  * Send an interactive message and keep its controls live for a bounded time:
8
10
  * renders the initial state, then hands the message to the collector.
@@ -14,11 +16,11 @@ const interactive_message_collector_1 = require("../../../discord/components/int
14
16
  * Call it on an already-deferred interaction.
15
17
  */
16
18
  async function mountInteractiveMessage(interaction, options) {
17
- const store = (0, interactive_message_collector_1.createStateStore)(options.initialState);
19
+ const store = (0, state_store_1.createStateStore)(options.initialState);
18
20
  const initial = options.view.render(store.read());
19
21
  // A deferred reply carries no attachment yet, so every file the first render
20
22
  // states is uploaded — there is nothing up there that could be kept instead.
21
- const editOptions = (0, interactive_message_collector_1.toMessageEditOptions)(initial, [], store.read());
23
+ const editOptions = (0, message_edit_options_1.toMessageEditOptions)(initial, [], store.read());
22
24
  const response = await interaction.editReply(
23
25
  // `IS_COMPONENTS_V2` is set on the *first* send only, never again: Discord
24
26
  // treats it as irreversible on a message — an edit can never clear it —
@@ -1 +1 @@
1
- {"version":3,"file":"mount-interactive-message.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/mount-interactive-message.ts"],"names":[],"mappings":";;AAqCA,0DAiCC;AAtED,2CAA4E;AAC5E,0HASgF;AAiBhF;;;;;;;;;GASG;AACI,KAAK,UAAU,uBAAuB,CAC5C,WAAwC,EACxC,OAAqC;IAErC,MAAM,KAAK,GAAG,IAAA,gDAAgB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAA,oDAAoB,EAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS;IAC3C,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,wDAAwD;IACxD,OAAO,CAAC,MAAM,KAAK,MAAM;QACxB,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,yBAAY,CAAC,cAAc,EAAE;QACxD,CAAC,CAAC,WAAW,CACd,CAAC;IAEF,MAAM,MAAM,GAAG,IAAA,gEAAgC,EAAC;QAC/C,WAAW;QACX,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,iDAAiB;QAC3C,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"mount-interactive-message.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/mount-interactive-message.ts"],"names":[],"mappings":";;AAuCA,0DAiCC;AAxED,2CAA4E;AAC5E,0HAMgF;AAChF,wGAAqG;AACrG,sFAG8D;AAiB9D;;;;;;;;;GASG;AACI,KAAK,UAAU,uBAAuB,CAC5C,WAAwC,EACxC,OAAqC;IAErC,MAAM,KAAK,GAAG,IAAA,8BAAgB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAA,2CAAoB,EAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS;IAC3C,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,wDAAwD;IACxD,OAAO,CAAC,MAAM,KAAK,MAAM;QACxB,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,yBAAY,CAAC,cAAc,EAAE;QACxD,CAAC,CAAC,WAAW,CACd,CAAC;IAEF,MAAM,MAAM,GAAG,IAAA,gEAAgC,EAAC;QAC/C,WAAW;QACX,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,iDAAiB;QAC3C,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The single mutable cell shared by the view and the collector. Kept explicit
3
+ * rather than captured as a closure variable so the two always read the same
4
+ * reference.
5
+ */
6
+ export interface StateStore<S> {
7
+ read(): S;
8
+ write(next: S): void;
9
+ }
10
+ /** Hold a state the collector can advance in place. */
11
+ export declare function createStateStore<S>(initial: S): StateStore<S>;
12
+ //# sourceMappingURL=state-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-store.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/state-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,CAAC;IACV,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;CACrB;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAQ7D"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStateStore = createStateStore;
4
+ /** Hold a state the collector can advance in place. */
5
+ function createStateStore(initial) {
6
+ let state = initial;
7
+ return {
8
+ read: () => state,
9
+ write: (next) => {
10
+ state = next;
11
+ },
12
+ };
13
+ }
14
+ //# sourceMappingURL=state-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-store.js","sourceRoot":"","sources":["../../../../src/discord/components/interactive-message/state-store.ts"],"names":[],"mappings":";;AAWA,4CAQC;AATD,uDAAuD;AACvD,SAAgB,gBAAgB,CAAI,OAAU;IAC7C,IAAI,KAAK,GAAG,OAAO,CAAC;IACpB,OAAO;QACN,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK;QACjB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,KAAK,GAAG,IAAI,CAAC;QACd,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mountPaginator = mountPaginator;
4
- const interactive_message_1 = require("../../../discord/components/interactive-message");
4
+ const interactive_message_collector_1 = require("../../../discord/components/interactive-message/interactive-message-collector");
5
+ const message_edit_options_1 = require("../../../discord/components/interactive-message/message-edit-options");
6
+ const state_store_1 = require("../../../discord/components/interactive-message/state-store");
5
7
  const page_state_1 = require("../../../discord/components/paginator/page-state");
6
8
  const paginator_buttons_1 = require("../../../discord/components/paginator/paginator-buttons");
7
9
  const paginator_view_1 = require("../../../discord/components/paginator/paginator-view");
@@ -17,24 +19,24 @@ const paginator_view_1 = require("../../../discord/components/paginator/paginato
17
19
  async function mountPaginator(interaction, options) {
18
20
  const { items, pageSize, ownerId, render, logger } = options;
19
21
  const count = (0, page_state_1.pageCount)(items.length, pageSize);
20
- const store = (0, interactive_message_1.createStateStore)((0, page_state_1.createPageState)(options.initialPage ?? 1, count));
22
+ const store = (0, state_store_1.createStateStore)((0, page_state_1.createPageState)(options.initialPage ?? 1, count));
21
23
  const buttons = (0, paginator_buttons_1.createPaginatorButtons)(count, (0, paginator_buttons_1.resolveLabels)(options.labels));
22
24
  const view = (0, paginator_view_1.createPaginatorView)({ items, pageSize, count, render, buttons });
23
- const response = await interaction.editReply((0, interactive_message_1.toMessageEditOptions)(view.render(store.read()), []));
25
+ const response = await interaction.editReply((0, message_edit_options_1.toMessageEditOptions)(view.render(store.read()), []));
24
26
  // A single page has nothing to navigate to, so it needs no collector at all —
25
27
  // a pagination-specific rule, which is why it lives here and not in the
26
28
  // generic mechanism.
27
29
  if (count <= 1) {
28
30
  return;
29
31
  }
30
- (0, interactive_message_1.mountInteractiveMessageCollector)({
32
+ (0, interactive_message_collector_1.mountInteractiveMessageCollector)({
31
33
  interaction,
32
34
  response,
33
35
  buttons,
34
36
  view,
35
37
  store,
36
38
  ownerId,
37
- idleMs: options.idleMs ?? interactive_message_1.COLLECTOR_IDLE_MS,
39
+ idleMs: options.idleMs ?? interactive_message_collector_1.COLLECTOR_IDLE_MS,
38
40
  logger,
39
41
  });
40
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mount-paginator.js","sourceRoot":"","sources":["../../../../src/discord/components/paginator/mount-paginator.ts"],"names":[],"mappings":";;AAuCA,wCA6BC;AAnED,kFAKkD;AAClD,0EAAuF;AACvF,wFAI0D;AAC1D,kFAGuD;AAcvD;;;;;;;;GAQG;AACI,KAAK,UAAU,cAAc,CACnC,WAAwC,EACxC,OAA4B;IAE5B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAA,sCAAgB,EAAC,IAAA,4BAAe,EAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,IAAA,0CAAsB,EAAC,KAAK,EAAE,IAAA,iCAAa,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAA,oCAAmB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAA,0CAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAElG,8EAA8E;IAC9E,wEAAwE;IACxE,qBAAqB;IACrB,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IAED,IAAA,sDAAgC,EAAC;QAChC,WAAW;QACX,QAAQ;QACR,OAAO;QACP,IAAI;QACJ,KAAK;QACL,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,uCAAiB;QAC3C,MAAM;KACN,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mount-paginator.js","sourceRoot":"","sources":["../../../../src/discord/components/paginator/mount-paginator.ts"],"names":[],"mappings":";;AAuCA,wCA6BC;AAnED,0HAGgF;AAChF,wGAAqG;AACrG,sFAAwF;AACxF,0EAAuF;AACvF,wFAI0D;AAC1D,kFAGuD;AAcvD;;;;;;;;GAQG;AACI,KAAK,UAAU,cAAc,CACnC,WAAwC,EACxC,OAA4B;IAE5B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAA,8BAAgB,EAAC,IAAA,4BAAe,EAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,IAAA,0CAAsB,EAAC,KAAK,EAAE,IAAA,iCAAa,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAA,oCAAmB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAA,2CAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAElG,8EAA8E;IAC9E,wEAAwE;IACxE,qBAAqB;IACrB,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IAED,IAAA,gEAAgC,EAAC;QAChC,WAAW;QACX,QAAQ;QACR,OAAO;QACP,IAAI;QACJ,KAAK;QACL,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,iDAAiB;QAC3C,MAAM;KACN,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { EmbedBuilder } from "discord.js";
2
- import type { InteractiveMessagePayload, InteractiveView } from "../../../discord/components/interactive-message";
2
+ import type { InteractiveMessagePayload, InteractiveView } from "../../../discord/components/interactive-message/interactive-message-collector";
3
3
  import { type PageState } from "../../../discord/components/paginator/page-state";
4
4
  import { type Button } from "../../../discord/interaction/button";
5
5
  /** Builds the embed shown for one page; supplied by the caller. */
@@ -1 +1 @@
1
- {"version":3,"file":"paginator-view.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/paginator/paginator-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EACX,yBAAyB,EACzB,eAAe,EACf,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,8BAA8B,CAAC;AAE5E,mEAAmE;AACnE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAChC,SAAS,EAAE,CAAC,EAAE,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,KACT,YAAY,CAAC;AAElB;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAEpE,MAAM,WAAW,iBAAiB,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,aAAa,CAuBhF"}
1
+ {"version":3,"file":"paginator-view.d.ts","sourceRoot":"","sources":["../../../../src/discord/components/paginator/paginator-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EACX,yBAAyB,EACzB,eAAe,EACf,MAAM,wEAAwE,CAAC;AAChF,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,8BAA8B,CAAC;AAE5E,mEAAmE;AACnE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAChC,SAAS,EAAE,CAAC,EAAE,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,KACT,YAAY,CAAC;AAElB;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAEpE,MAAM,WAAW,iBAAiB,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,aAAa,CAuBhF"}
@@ -1,5 +1,5 @@
1
1
  import type { EmbedBuilder } from "discord.js";
2
- import { type ComponentHandler } from "../../discord/components/component-router";
2
+ import type { ComponentHandler } from "../../discord/components/component-router";
3
3
  import { type PaginatorLabels } from "../../discord/components/paginator/paginator-buttons";
4
4
  import type { PaginatorPayload } from "../../discord/components/paginator/paginator-view";
5
5
  /** One rendered page: what the caller's data source produces for a page index. */