@league-of-foundry-developers/foundry-vtt-types 12.331.3-beta → 12.331.5

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 (559) hide show
  1. package/README.md +17 -18
  2. package/package.json +91 -32
  3. package/src/configuration/configuration.d.mts +316 -0
  4. package/src/configuration/documents.d.mts +295 -0
  5. package/src/configuration/globals.d.mts +357 -0
  6. package/src/configuration/index.d.mts +5 -0
  7. package/src/foundry/client/apps/app.d.mts +129 -122
  8. package/src/foundry/client/apps/av/av-config.d.mts +12 -7
  9. package/src/foundry/client/apps/av/cameras.d.mts +12 -7
  10. package/src/foundry/client/apps/dice/dice-config.d.mts +59 -0
  11. package/src/foundry/client/apps/dice/index.d.mts +1 -0
  12. package/src/foundry/client/apps/form.d.mts +114 -86
  13. package/src/foundry/client/apps/forms/actor.d.mts +21 -11
  14. package/src/foundry/client/apps/forms/adventure-exporter.d.mts +12 -7
  15. package/src/foundry/client/apps/forms/adventure-importer.d.mts +14 -6
  16. package/src/foundry/client/apps/forms/base-sheet.d.mts +16 -8
  17. package/src/foundry/client/apps/forms/card-config.d.mts +16 -8
  18. package/src/foundry/client/apps/forms/cards-config.d.mts +15 -14
  19. package/src/foundry/client/apps/forms/combat-config.d.mts +7 -7
  20. package/src/foundry/client/apps/forms/combatant-config.d.mts +3 -3
  21. package/src/foundry/client/apps/forms/default-sheets-config.d.mts +1 -1
  22. package/src/foundry/client/apps/forms/effect-config.d.mts +7 -7
  23. package/src/foundry/client/apps/forms/folder-config.d.mts +10 -5
  24. package/src/foundry/client/apps/forms/fonts.d.mts +42 -35
  25. package/src/foundry/client/apps/forms/grid-config.d.mts +12 -13
  26. package/src/foundry/client/apps/forms/image-popout.d.mts +29 -23
  27. package/src/foundry/client/apps/forms/item.d.mts +9 -9
  28. package/src/foundry/client/apps/forms/journal-page-sheet.d.mts +16 -14
  29. package/src/foundry/client/apps/forms/journal-sheet.d.mts +48 -38
  30. package/src/foundry/client/apps/forms/macro-config.d.mts +7 -7
  31. package/src/foundry/client/apps/forms/measure-template.d.mts +10 -12
  32. package/src/foundry/client/apps/forms/ownership.d.mts +5 -5
  33. package/src/foundry/client/apps/forms/playlist-config.d.mts +8 -10
  34. package/src/foundry/client/apps/forms/playlist-sound-config.d.mts +7 -7
  35. package/src/foundry/client/apps/forms/roll-table-config.d.mts +11 -10
  36. package/src/foundry/client/apps/forms/scene-config.d.mts +40 -41
  37. package/src/foundry/client/apps/forms/sheet-config.d.mts +9 -21
  38. package/src/foundry/client/apps/forms/user-config.d.mts +13 -12
  39. package/src/foundry/client/apps/hud/chatbubble.d.mts +18 -6
  40. package/src/foundry/client/apps/hud/container.d.mts +4 -4
  41. package/src/foundry/client/apps/hud/controls.d.mts +126 -81
  42. package/src/foundry/client/apps/hud/hotbar.d.mts +17 -12
  43. package/src/foundry/client/apps/hud/hud.d.mts +5 -5
  44. package/src/foundry/client/apps/hud/menu.d.mts +10 -3
  45. package/src/foundry/client/apps/hud/navigation.d.mts +14 -9
  46. package/src/foundry/client/apps/hud/pause.d.mts +9 -4
  47. package/src/foundry/client/apps/hud/players.d.mts +14 -9
  48. package/src/foundry/client/apps/i18n.d.mts +31 -27
  49. package/src/foundry/client/apps/index.d.mts +1 -0
  50. package/src/foundry/client/apps/placeables/drawing-config.d.mts +41 -33
  51. package/src/foundry/client/apps/placeables/drawing-hud.d.mts +5 -5
  52. package/src/foundry/client/apps/placeables/index.d.mts +0 -2
  53. package/src/foundry/client/apps/placeables/note-config.d.mts +28 -18
  54. package/src/foundry/client/apps/placeables/tile-config.d.mts +23 -10
  55. package/src/foundry/client/apps/placeables/tile-hud.d.mts +10 -5
  56. package/src/foundry/client/apps/placeables/token-config.d.mts +91 -58
  57. package/src/foundry/client/apps/placeables/token-hud.d.mts +12 -7
  58. package/src/foundry/client/apps/placeables/wall-config.d.mts +21 -17
  59. package/src/foundry/client/apps/sidebar/apps/chat-popout.d.mts +5 -5
  60. package/src/foundry/client/apps/sidebar/apps/client-settings.d.mts +3 -3
  61. package/src/foundry/client/apps/sidebar/apps/compendium.d.mts +15 -13
  62. package/src/foundry/client/apps/sidebar/apps/invitation-links.d.mts +3 -3
  63. package/src/foundry/client/apps/sidebar/apps/keybindings-config.d.mts +3 -2
  64. package/src/foundry/client/apps/sidebar/apps/module-management.d.mts +6 -6
  65. package/src/foundry/client/apps/sidebar/apps/permission-config.d.mts +6 -6
  66. package/src/foundry/client/apps/sidebar/apps/support-details.d.mts +34 -29
  67. package/src/foundry/client/apps/sidebar/apps/tours-management.d.mts +2 -2
  68. package/src/foundry/client/apps/sidebar/apps/world-config.d.mts +13 -10
  69. package/src/foundry/client/apps/sidebar/directory-tab-mixin.d.mts +50 -35
  70. package/src/foundry/client/apps/sidebar/document-directory.d.mts +52 -38
  71. package/src/foundry/client/apps/sidebar/package-configuration.d.mts +4 -4
  72. package/src/foundry/client/apps/sidebar/sidebar-tab.d.mts +3 -3
  73. package/src/foundry/client/apps/sidebar/sidebar.d.mts +9 -4
  74. package/src/foundry/client/apps/sidebar/tabs/actors-directory.d.mts +11 -2
  75. package/src/foundry/client/apps/sidebar/tabs/cards-directory.d.mts +11 -2
  76. package/src/foundry/client/apps/sidebar/tabs/chat-log.d.mts +39 -27
  77. package/src/foundry/client/apps/sidebar/tabs/combat-tracker.d.mts +21 -12
  78. package/src/foundry/client/apps/sidebar/tabs/compendium-directory.d.mts +30 -15
  79. package/src/foundry/client/apps/sidebar/tabs/items-directory.d.mts +11 -2
  80. package/src/foundry/client/apps/sidebar/tabs/journal-directory.d.mts +11 -2
  81. package/src/foundry/client/apps/sidebar/tabs/macros-directory.d.mts +14 -5
  82. package/src/foundry/client/apps/sidebar/tabs/playlists-directory.d.mts +30 -22
  83. package/src/foundry/client/apps/sidebar/tabs/roll-table-directory.d.mts +11 -2
  84. package/src/foundry/client/apps/sidebar/tabs/scenes-directory.d.mts +14 -5
  85. package/src/foundry/client/apps/sidebar/tabs/settings.d.mts +23 -5
  86. package/src/foundry/client/apps/templates.d.mts +1 -1
  87. package/src/foundry/client/av/client.d.mts +1 -1
  88. package/src/foundry/client/av/clients/simplepeer.d.mts +11 -1
  89. package/src/foundry/client/av/master.d.mts +2 -2
  90. package/src/foundry/client/av/settings.d.mts +17 -15
  91. package/src/foundry/client/config.d.mts +444 -312
  92. package/src/foundry/client/core/document-index.d.mts +11 -3
  93. package/src/foundry/client/core/hooks.d.mts +2 -4
  94. package/src/foundry/client/core/image.d.mts +14 -13
  95. package/src/foundry/client/core/issues.d.mts +9 -4
  96. package/src/foundry/client/core/keybindings.d.mts +5 -5
  97. package/src/foundry/client/core/nue.d.mts +1 -1
  98. package/src/foundry/client/core/packages.d.mts +400 -62
  99. package/src/foundry/client/core/settings.d.mts +62 -38
  100. package/src/foundry/client/core/socket.d.mts +2 -2
  101. package/src/foundry/client/core/sorting.d.mts +6 -6
  102. package/src/foundry/client/core/time.d.mts +6 -3
  103. package/src/foundry/client/core/tooltip.d.mts +2 -2
  104. package/src/foundry/client/core/tour.d.mts +59 -50
  105. package/src/foundry/client/core/tours.d.mts +1 -1
  106. package/src/foundry/client/core/utils.d.mts +33 -10
  107. package/src/foundry/client/core/video.d.mts +1 -1
  108. package/src/foundry/client/core/workers.d.mts +24 -17
  109. package/src/foundry/client/data/abstract/canvas-document.d.mts +22 -28
  110. package/src/foundry/client/data/abstract/client-document.d.mts +238 -206
  111. package/src/foundry/client/data/abstract/directory-collection-mixin.d.mts +24 -40
  112. package/src/foundry/client/data/abstract/document-collection.d.mts +96 -68
  113. package/src/foundry/client/data/abstract/world-collection.d.mts +53 -54
  114. package/src/foundry/client/data/collections/actors.d.mts +30 -28
  115. package/src/foundry/client/data/collections/cards.d.mts +16 -3
  116. package/src/foundry/client/data/collections/combats.d.mts +18 -5
  117. package/src/foundry/client/data/collections/compendium-collection.d.mts +84 -101
  118. package/src/foundry/client/data/collections/compendium-folders.d.mts +6 -6
  119. package/src/foundry/client/data/collections/compendium-packs.d.mts +5 -5
  120. package/src/foundry/client/data/collections/fog.d.mts +16 -3
  121. package/src/foundry/client/data/collections/folder.d.mts +20 -6
  122. package/src/foundry/client/data/collections/items.d.mts +17 -4
  123. package/src/foundry/client/data/collections/journal.d.mts +22 -7
  124. package/src/foundry/client/data/collections/macros.d.mts +21 -19
  125. package/src/foundry/client/data/collections/messages.d.mts +19 -6
  126. package/src/foundry/client/data/collections/playlists.d.mts +17 -5
  127. package/src/foundry/client/data/collections/scenes.d.mts +24 -27
  128. package/src/foundry/client/data/collections/settings.d.mts +16 -3
  129. package/src/foundry/client/data/collections/tables.d.mts +18 -5
  130. package/src/foundry/client/data/collections/users.d.mts +22 -10
  131. package/src/foundry/client/data/documents/active-effect.d.mts +780 -112
  132. package/src/foundry/client/data/documents/actor-delta.d.mts +705 -31
  133. package/src/foundry/client/data/documents/actor.d.mts +806 -98
  134. package/src/foundry/client/data/documents/adventure.d.mts +522 -59
  135. package/src/foundry/client/data/documents/ambient-light.d.mts +427 -20
  136. package/src/foundry/client/data/documents/ambient-sound.d.mts +478 -14
  137. package/src/foundry/client/data/documents/card.d.mts +598 -44
  138. package/src/foundry/client/data/documents/cards.d.mts +862 -169
  139. package/src/foundry/client/data/documents/chat-message.d.mts +668 -77
  140. package/src/foundry/client/data/documents/combat.d.mts +757 -107
  141. package/src/foundry/client/data/documents/combatant.d.mts +545 -32
  142. package/src/foundry/client/data/documents/drawing.d.mts +545 -14
  143. package/src/foundry/client/data/documents/fog-exploration.d.mts +465 -30
  144. package/src/foundry/client/data/documents/folder.d.mts +567 -51
  145. package/src/foundry/client/data/documents/index.d.mts +2 -0
  146. package/src/foundry/client/data/documents/item.d.mts +691 -24
  147. package/src/foundry/client/data/documents/journal-entry-page.d.mts +654 -55
  148. package/src/foundry/client/data/documents/journal-entry.d.mts +631 -35
  149. package/src/foundry/client/data/documents/macro.d.mts +560 -31
  150. package/src/foundry/client/data/documents/measured-template.d.mts +484 -15
  151. package/src/foundry/client/data/documents/note.d.mts +498 -15
  152. package/src/foundry/client/data/documents/playlist-sound.d.mts +443 -45
  153. package/src/foundry/client/data/documents/playlist.d.mts +710 -99
  154. package/src/foundry/client/data/documents/region-behavior.d.mts +516 -0
  155. package/src/foundry/client/data/documents/region.d.mts +789 -0
  156. package/src/foundry/client/data/documents/scene.d.mts +1216 -159
  157. package/src/foundry/client/data/documents/setting.d.mts +406 -23
  158. package/src/foundry/client/data/documents/table-result.d.mts +488 -14
  159. package/src/foundry/client/data/documents/table.d.mts +667 -78
  160. package/src/foundry/client/data/documents/tile.d.mts +505 -14
  161. package/src/foundry/client/data/documents/token.d.mts +1191 -143
  162. package/src/foundry/client/data/documents/user.d.mts +613 -57
  163. package/src/foundry/client/data/documents/wall.d.mts +555 -14
  164. package/src/foundry/client/game.d.mts +60 -92
  165. package/src/foundry/client/head.d.mts +9 -9
  166. package/src/foundry/client/hooks.d.mts +259 -248
  167. package/src/foundry/client/pixi/board.d.mts +107 -94
  168. package/src/foundry/client/pixi/core/containers/base-canvas-group.d.mts +97 -25
  169. package/src/foundry/client/pixi/core/containers/cached-container.d.mts +37 -19
  170. package/src/foundry/client/pixi/core/containers/full-canvas-container.d.mts +7 -10
  171. package/src/foundry/client/pixi/core/containers/point-source-mesh.d.mts +25 -15
  172. package/src/foundry/client/pixi/core/containers/quad-mesh.d.mts +16 -6
  173. package/src/foundry/client/pixi/core/containers/quadtree.d.mts +113 -54
  174. package/src/foundry/client/pixi/core/containers/sprite-mesh.d.mts +69 -26
  175. package/src/foundry/client/pixi/core/containers/unbound-container.d.mts +20 -2
  176. package/src/foundry/client/pixi/core/interaction/canvas-animation.d.mts +164 -99
  177. package/src/foundry/client/pixi/core/interaction/control-icon.d.mts +61 -22
  178. package/src/foundry/client/pixi/core/interaction/mouse-handler.d.mts +120 -53
  179. package/src/foundry/client/pixi/core/interaction/ping.d.mts +62 -31
  180. package/src/foundry/client/pixi/core/interaction/pings/chevron.d.mts +23 -10
  181. package/src/foundry/client/pixi/core/interaction/pings/pulse.d.mts +91 -34
  182. package/src/foundry/client/pixi/core/interaction/render-flags.d.mts +69 -30
  183. package/src/foundry/client/pixi/core/interaction/resize-handle.d.mts +35 -5
  184. package/src/foundry/client/pixi/core/interaction/targets.d.mts +21 -18
  185. package/src/foundry/client/pixi/core/loader.d.mts +86 -76
  186. package/src/foundry/client/pixi/core/shapes/limited-angle-polygon.d.mts +42 -17
  187. package/src/foundry/client/pixi/core/shapes/polygon-mesher.d.mts +92 -64
  188. package/src/foundry/client/pixi/core/shapes/precise-text.d.mts +28 -10
  189. package/src/foundry/client/pixi/core/shapes/ray.d.mts +47 -23
  190. package/src/foundry/client/pixi/core/shapes/source-polygon.d.mts +170 -75
  191. package/src/foundry/client/pixi/extensions/circle.d.mts +128 -125
  192. package/src/foundry/client/pixi/extensions/graphics.d.mts +3 -1
  193. package/src/foundry/client/pixi/extensions/observable-transform.d.mts +5 -4
  194. package/src/foundry/client/pixi/extensions/polygon.d.mts +154 -134
  195. package/src/foundry/client/pixi/extensions/rectangle.d.mts +242 -259
  196. package/src/foundry/client/pixi/groups/effects.d.mts +75 -24
  197. package/src/foundry/client/pixi/groups/environment.d.mts +68 -19
  198. package/src/foundry/client/pixi/groups/hidden.d.mts +27 -11
  199. package/src/foundry/client/pixi/groups/interface.d.mts +62 -38
  200. package/src/foundry/client/pixi/groups/overlay.d.mts +19 -7
  201. package/src/foundry/client/pixi/groups/primary.d.mts +66 -44
  202. package/src/foundry/client/pixi/groups/rendered.d.mts +19 -7
  203. package/src/foundry/client/pixi/layers/base/canvas-layer.d.mts +11 -15
  204. package/src/foundry/client/pixi/layers/base/interaction-layer.d.mts +29 -28
  205. package/src/foundry/client/pixi/layers/base/placeables-layer.d.mts +306 -272
  206. package/src/foundry/client/pixi/layers/controls/cursor.d.mts +18 -9
  207. package/src/foundry/client/pixi/layers/controls/door.d.mts +32 -11
  208. package/src/foundry/client/pixi/layers/controls/layer.d.mts +89 -77
  209. package/src/foundry/client/pixi/layers/controls/ruler.d.mts +121 -96
  210. package/src/foundry/client/pixi/layers/effects/background-effects.d.mts +9 -12
  211. package/src/foundry/client/pixi/layers/effects/coloration-effects.d.mts +9 -10
  212. package/src/foundry/client/pixi/layers/effects/darkness-effects.d.mts +8 -8
  213. package/src/foundry/client/pixi/layers/effects/illumination-effects.d.mts +22 -22
  214. package/src/foundry/client/pixi/layers/effects/visibility.d.mts +106 -86
  215. package/src/foundry/client/pixi/layers/effects/weather/particles/effect.d.mts +14 -5
  216. package/src/foundry/client/pixi/layers/effects/weather/particles/leaves.d.mts +31 -2
  217. package/src/foundry/client/pixi/layers/effects/weather-effects.d.mts +137 -65
  218. package/src/foundry/client/pixi/layers/grid/highlight.d.mts +14 -4
  219. package/src/foundry/client/pixi/layers/grid/layer.d.mts +92 -92
  220. package/src/foundry/client/pixi/layers/grid/mesh.d.mts +37 -16
  221. package/src/foundry/client/pixi/layers/masks/depth.d.mts +12 -7
  222. package/src/foundry/client/pixi/layers/masks/occlusion.d.mts +19 -12
  223. package/src/foundry/client/pixi/layers/masks/vision.d.mts +104 -18
  224. package/src/foundry/client/pixi/layers/placeables/drawings.d.mts +16 -15
  225. package/src/foundry/client/pixi/layers/placeables/index.d.mts +1 -0
  226. package/src/foundry/client/pixi/layers/placeables/lighting.d.mts +12 -14
  227. package/src/foundry/client/pixi/layers/placeables/notes.d.mts +49 -32
  228. package/src/foundry/client/pixi/layers/placeables/regions.d.mts +113 -0
  229. package/src/foundry/client/pixi/layers/placeables/sounds.d.mts +81 -67
  230. package/src/foundry/client/pixi/layers/placeables/templates.d.mts +11 -15
  231. package/src/foundry/client/pixi/layers/placeables/tiles.d.mts +30 -21
  232. package/src/foundry/client/pixi/layers/placeables/tokens.d.mts +66 -52
  233. package/src/foundry/client/pixi/layers/placeables/walls.d.mts +54 -57
  234. package/src/foundry/client/pixi/perception/clockwise-sweep.d.mts +62 -27
  235. package/src/foundry/client/pixi/perception/detection-mode.d.mts +121 -47
  236. package/src/foundry/client/pixi/perception/fog.d.mts +38 -15
  237. package/src/foundry/client/pixi/perception/perception-manager.d.mts +136 -136
  238. package/src/foundry/client/pixi/perception/vision-mode.d.mts +91 -64
  239. package/src/foundry/client/pixi/perception/weiler-atherton-clipping.d.mts +44 -16
  240. package/src/foundry/client/pixi/placeable.d.mts +239 -137
  241. package/src/foundry/client/pixi/placeables/drawing.d.mts +255 -133
  242. package/src/foundry/client/pixi/placeables/index.d.mts +1 -0
  243. package/src/foundry/client/pixi/placeables/light.d.mts +193 -64
  244. package/src/foundry/client/pixi/placeables/note.d.mts +145 -54
  245. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-canvas-object.d.mts +30 -8
  246. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-graphics.d.mts +41 -11
  247. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-occludable-object.d.mts +59 -18
  248. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-sprite-mesh.d.mts +120 -37
  249. package/src/foundry/client/pixi/placeables/region.d.mts +280 -0
  250. package/src/foundry/client/pixi/placeables/sound.d.mts +205 -66
  251. package/src/foundry/client/pixi/placeables/template.d.mts +181 -100
  252. package/src/foundry/client/pixi/placeables/tile.d.mts +206 -140
  253. package/src/foundry/client/pixi/placeables/token.d.mts +916 -449
  254. package/src/foundry/client/pixi/placeables/wall.d.mts +249 -129
  255. package/src/foundry/client/pixi/webgl/extensions/batch-renderer.d.mts +72 -33
  256. package/src/foundry/client/pixi/webgl/extensions/batch-shader-generator.d.mts +10 -9
  257. package/src/foundry/client/pixi/webgl/helpers/{framebugger-snapshot.d.mts → framebuffer-snapshot.d.mts} +10 -9
  258. package/src/foundry/client/pixi/webgl/helpers/index.d.mts +1 -1
  259. package/src/foundry/client/pixi/webgl/helpers/smooth-noise.d.mts +38 -23
  260. package/src/foundry/client/pixi/webgl/helpers/texture-extractor.d.mts +82 -53
  261. package/src/foundry/client/pixi/webgl/shaders/base-shader-mixin.d.mts +12 -12
  262. package/src/foundry/client/pixi/webgl/shaders/base-shader.d.mts +45 -28
  263. package/src/foundry/client/pixi/webgl/shaders/filters/base-filter.d.mts +12 -11
  264. package/src/foundry/client/pixi/webgl/shaders/filters/base-mask-filter.d.mts +12 -10
  265. package/src/foundry/client/pixi/webgl/shaders/filters/blur.d.mts +22 -20
  266. package/src/foundry/client/pixi/webgl/shaders/filters/effects-masking.d.mts +36 -32
  267. package/src/foundry/client/pixi/webgl/shaders/filters/environment.d.mts +10 -9
  268. package/src/foundry/client/pixi/webgl/shaders/filters/glow-overlay.d.mts +12 -11
  269. package/src/foundry/client/pixi/webgl/shaders/filters/invisibility.d.mts +10 -9
  270. package/src/foundry/client/pixi/webgl/shaders/filters/outline-overlay.d.mts +12 -11
  271. package/src/foundry/client/pixi/webgl/shaders/filters/transition.d.mts +67 -60
  272. package/src/foundry/client/pixi/webgl/shaders/filters/visibility.d.mts +24 -17
  273. package/src/foundry/client/pixi/webgl/shaders/filters/vision-mask-filter.d.mts +13 -10
  274. package/src/foundry/client/pixi/webgl/shaders/filters/void.d.mts +10 -9
  275. package/src/foundry/client/pixi/webgl/shaders/filters/weather-occlusion-masks.d.mts +11 -10
  276. package/src/foundry/client/pixi/webgl/shaders/fragment-channel-mixin.d.mts +20 -14
  277. package/src/foundry/client/pixi/webgl/shaders/grid/grid.d.mts +12 -11
  278. package/src/foundry/client/pixi/webgl/shaders/lighting/background-lighting.d.mts +10 -9
  279. package/src/foundry/client/pixi/webgl/shaders/lighting/base-lighting.d.mts +33 -33
  280. package/src/foundry/client/pixi/webgl/shaders/lighting/coloration-lighting.d.mts +10 -9
  281. package/src/foundry/client/pixi/webgl/shaders/lighting/darkness-lighting.d.mts +10 -9
  282. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/bewitching-wave.d.mts +19 -17
  283. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/black-hole.d.mts +10 -9
  284. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/chroma.d.mts +10 -9
  285. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/emanation.d.mts +10 -9
  286. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/energy-field.d.mts +10 -9
  287. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fairy-light.d.mts +19 -17
  288. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/flame.d.mts +19 -17
  289. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fog.d.mts +10 -9
  290. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/force-grid.d.mts +10 -8
  291. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/ghost-light.d.mts +19 -17
  292. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/hexa-dome.d.mts +10 -9
  293. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/light-dome.d.mts +10 -9
  294. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/magical-gloom.d.mts +10 -9
  295. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/pulse.d.mts +19 -17
  296. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/radial-rainbow.d.mts +10 -9
  297. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/revolving-light.d.mts +10 -9
  298. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/roiling-mass.d.mts +10 -9
  299. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/siren-light.d.mts +19 -17
  300. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/smoke-patch.d.mts +20 -17
  301. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/star-light.d.mts +10 -9
  302. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/sunburst.d.mts +19 -17
  303. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/swirling-rainbow.d.mts +10 -9
  304. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/torch.d.mts +19 -17
  305. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/vortex.d.mts +19 -17
  306. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/wave.d.mts +19 -17
  307. package/src/foundry/client/pixi/webgl/shaders/lighting/illumination-lighting.d.mts +10 -9
  308. package/src/foundry/client/pixi/webgl/shaders/region/adjust-darkness-level.d.mts +71 -29
  309. package/src/foundry/client/pixi/webgl/shaders/region/base.d.mts +54 -10
  310. package/src/foundry/client/pixi/webgl/shaders/region/highlight.d.mts +69 -9
  311. package/src/foundry/client/pixi/webgl/shaders/samplers/base-sampler.d.mts +24 -25
  312. package/src/foundry/client/pixi/webgl/shaders/samplers/baseline-illumination.d.mts +10 -9
  313. package/src/foundry/client/pixi/webgl/shaders/samplers/color-adjustment.d.mts +38 -29
  314. package/src/foundry/client/pixi/webgl/shaders/samplers/depth.d.mts +21 -17
  315. package/src/foundry/client/pixi/webgl/shaders/samplers/fog-of-war.d.mts +10 -9
  316. package/src/foundry/client/pixi/webgl/shaders/samplers/occlusion.d.mts +20 -18
  317. package/src/foundry/client/pixi/webgl/shaders/samplers/primary.d.mts +11 -2
  318. package/src/foundry/client/pixi/webgl/shaders/samplers/token-ring.d.mts +28 -2
  319. package/src/foundry/client/pixi/webgl/shaders/vision/background-vision.d.mts +10 -9
  320. package/src/foundry/client/pixi/webgl/shaders/vision/base-vision.d.mts +11 -9
  321. package/src/foundry/client/pixi/webgl/shaders/vision/coloration-vision.d.mts +10 -9
  322. package/src/foundry/client/pixi/webgl/shaders/vision/effects/amplification.d.mts +10 -9
  323. package/src/foundry/client/pixi/webgl/shaders/vision/effects/wave.d.mts +19 -17
  324. package/src/foundry/client/pixi/webgl/shaders/vision/illumination-vision.d.mts +10 -9
  325. package/src/foundry/client/pixi/webgl/shaders/weather/base-weather.d.mts +40 -36
  326. package/src/foundry/client/pixi/webgl/shaders/weather/effect.d.mts +27 -33
  327. package/src/foundry/client/pixi/webgl/shaders/weather/fog.d.mts +17 -16
  328. package/src/foundry/client/pixi/webgl/shaders/weather/rain.d.mts +19 -18
  329. package/src/foundry/client/pixi/webgl/shaders/weather/snow.d.mts +15 -14
  330. package/src/foundry/client/pixi/workers/texture-worker.d.mts +33 -53
  331. package/src/foundry/client/tours/setup-tour.d.mts +15 -10
  332. package/src/foundry/client/ui/context.d.mts +48 -40
  333. package/src/foundry/client/ui/dialog.d.mts +137 -126
  334. package/src/foundry/client/ui/drag.d.mts +1 -1
  335. package/src/foundry/client/ui/dragdrop.d.mts +34 -28
  336. package/src/foundry/client/ui/editor.d.mts +29 -21
  337. package/src/foundry/client/ui/filepicker.d.mts +43 -38
  338. package/src/foundry/client/ui/filter.d.mts +62 -50
  339. package/src/foundry/client/ui/forms.d.mts +22 -22
  340. package/src/foundry/client/ui/notifications.d.mts +10 -3
  341. package/src/foundry/client/ui/prosemirror.d.mts +15 -7
  342. package/src/foundry/client/ui/secrets.d.mts +42 -27
  343. package/src/foundry/client/ui/tabs.d.mts +40 -33
  344. package/src/foundry/client-esm/applications/_module.d.mts +3 -3
  345. package/src/foundry/client-esm/applications/_types.d.mts +0 -2
  346. package/src/foundry/client-esm/applications/api/_module.d.mts +2 -2
  347. package/src/foundry/client-esm/applications/api/application.d.mts +28 -19
  348. package/src/foundry/client-esm/applications/api/dialog.d.mts +20 -22
  349. package/src/foundry/client-esm/applications/api/document-sheet.d.mts +26 -12
  350. package/src/foundry/client-esm/applications/api/handlebars-application.d.mts +142 -126
  351. package/src/foundry/client-esm/applications/apps/_module.d.mts +2 -2
  352. package/src/foundry/client-esm/applications/apps/compendium-art-config.d.mts +10 -10
  353. package/src/foundry/client-esm/applications/apps/permission-config.d.mts +3 -3
  354. package/src/foundry/client-esm/applications/dice/_module.d.mts +2 -2
  355. package/src/foundry/client-esm/applications/dice/roll-resolver.d.mts +14 -2
  356. package/src/foundry/client-esm/applications/elements/_module.d.mts +2 -2
  357. package/src/foundry/client-esm/applications/elements/document-tags.d.mts +2 -0
  358. package/src/foundry/client-esm/applications/elements/file-picker.d.mts +1 -1
  359. package/src/foundry/client-esm/applications/elements/multi-select.d.mts +15 -5
  360. package/src/foundry/client-esm/applications/elements/string-tags.d.mts +1 -1
  361. package/src/foundry/client-esm/applications/forms/fields.d.mts +1 -1
  362. package/src/foundry/client-esm/applications/sheets/_module.d.mts +2 -2
  363. package/src/foundry/client-esm/applications/sheets/actor-sheet.d.mts +3 -3
  364. package/src/foundry/client-esm/applications/sheets/ambient-light-config.d.mts +10 -8
  365. package/src/foundry/client-esm/applications/sheets/ambient-sound-config.d.mts +9 -7
  366. package/src/foundry/client-esm/applications/sheets/item-sheet.d.mts +3 -3
  367. package/src/foundry/client-esm/applications/sheets/region-behavior-config.d.mts +30 -5
  368. package/src/foundry/client-esm/applications/sheets/region-config.d.mts +36 -5
  369. package/src/foundry/client-esm/applications/sheets/user-config.d.mts +8 -7
  370. package/src/foundry/client-esm/applications/ui/_module.d.mts +2 -2
  371. package/src/foundry/client-esm/applications/ui/region-legend.d.mts +45 -3
  372. package/src/foundry/client-esm/audio/_module.d.mts +2 -3
  373. package/src/foundry/client-esm/audio/_types.d.mts +2 -0
  374. package/src/foundry/client-esm/audio/biquad.d.mts +76 -26
  375. package/src/foundry/client-esm/audio/cache.d.mts +31 -20
  376. package/src/foundry/client-esm/audio/convolver.d.mts +47 -25
  377. package/src/foundry/client-esm/audio/helper.d.mts +124 -80
  378. package/src/foundry/client-esm/audio/sound.d.mts +230 -126
  379. package/src/foundry/client-esm/audio/timeout.d.mts +28 -12
  380. package/src/foundry/client-esm/canvas/_module.d.mts +2 -2
  381. package/src/foundry/client-esm/canvas/edges/_module.d.mts +2 -2
  382. package/src/foundry/client-esm/canvas/edges/collision.d.mts +69 -18
  383. package/src/foundry/client-esm/canvas/edges/edge.d.mts +110 -41
  384. package/src/foundry/client-esm/canvas/edges/edges.d.mts +10 -0
  385. package/src/foundry/client-esm/canvas/edges/vertex.d.mts +56 -26
  386. package/src/foundry/client-esm/canvas/regions/_module.d.mts +6 -11
  387. package/src/foundry/client-esm/canvas/regions/geometry.d.mts +38 -0
  388. package/src/foundry/client-esm/canvas/regions/mesh.d.mts +72 -0
  389. package/src/foundry/client-esm/canvas/regions/polygon-tree.d.mts +130 -0
  390. package/src/foundry/client-esm/canvas/regions/shape.d.mts +129 -0
  391. package/src/foundry/client-esm/canvas/scene-manager.d.mts +13 -3
  392. package/src/foundry/client-esm/canvas/smaa/blend.d.mts +14 -3
  393. package/src/foundry/client-esm/canvas/smaa/edges.d.mts +25 -3
  394. package/src/foundry/client-esm/canvas/smaa/smaa.d.mts +121 -23
  395. package/src/foundry/client-esm/canvas/smaa/weights.d.mts +26 -3
  396. package/src/foundry/client-esm/canvas/sources/_module.d.mts +2 -2
  397. package/src/foundry/client-esm/canvas/sources/base-effect-source.d.mts +84 -40
  398. package/src/foundry/client-esm/canvas/sources/base-light-source.d.mts +103 -39
  399. package/src/foundry/client-esm/canvas/sources/global-light-source.d.mts +89 -15
  400. package/src/foundry/client-esm/canvas/sources/point-darkness-source.d.mts +71 -27
  401. package/src/foundry/client-esm/canvas/sources/point-effect-source.d.mts +49 -20
  402. package/src/foundry/client-esm/canvas/sources/point-light-source.d.mts +57 -16
  403. package/src/foundry/client-esm/canvas/sources/point-movement-source.d.mts +31 -4
  404. package/src/foundry/client-esm/canvas/sources/point-sound-source.d.mts +45 -12
  405. package/src/foundry/client-esm/canvas/sources/point-vision-source.d.mts +98 -52
  406. package/src/foundry/client-esm/canvas/sources/rendered-effect-source.d.mts +180 -69
  407. package/src/foundry/client-esm/canvas/tokens/_module.d.mts +2 -3
  408. package/src/foundry/client-esm/canvas/tokens/ring-config.d.mts +175 -2
  409. package/src/foundry/client-esm/canvas/tokens/ring-data.d.mts +142 -2
  410. package/src/foundry/client-esm/canvas/tokens/ring.d.mts +284 -2
  411. package/src/foundry/client-esm/client.d.mts +47 -54
  412. package/src/foundry/client-esm/data/_module.d.mts +2 -2
  413. package/src/foundry/client-esm/data/client-backend.d.mts +22 -23
  414. package/src/foundry/client-esm/data/region-behaviors/_module.d.mts +11 -14
  415. package/src/foundry/client-esm/data/region-behaviors/adjust-darkness-level.d.mts +56 -0
  416. package/src/foundry/client-esm/data/region-behaviors/base.d.mts +59 -0
  417. package/src/foundry/client-esm/data/region-behaviors/display-scrolling-text.d.mts +64 -0
  418. package/src/foundry/client-esm/data/region-behaviors/execute-macro.d.mts +27 -0
  419. package/src/foundry/client-esm/data/region-behaviors/execute-script.d.mts +23 -0
  420. package/src/foundry/client-esm/data/region-behaviors/pause-game.d.mts +23 -0
  421. package/src/foundry/client-esm/data/region-behaviors/suppress-weather.d.mts +17 -0
  422. package/src/foundry/client-esm/data/region-behaviors/teleport-token.d.mts +32 -0
  423. package/src/foundry/client-esm/data/region-behaviors/toggle-behavior.d.mts +31 -0
  424. package/src/foundry/client-esm/dice/_module.d.mts +2 -3
  425. package/src/foundry/client-esm/dice/parser.d.mts +11 -25
  426. package/src/foundry/client-esm/dice/roll.d.mts +112 -89
  427. package/src/foundry/client-esm/dice/terms/_module.d.mts +2 -3
  428. package/src/foundry/client-esm/dice/terms/coin.d.mts +8 -5
  429. package/src/foundry/client-esm/dice/terms/dice.d.mts +93 -63
  430. package/src/foundry/client-esm/dice/terms/die.d.mts +11 -4
  431. package/src/foundry/client-esm/dice/terms/fate.d.mts +9 -2
  432. package/src/foundry/client-esm/dice/terms/function.d.mts +18 -18
  433. package/src/foundry/client-esm/dice/terms/numeric.d.mts +3 -5
  434. package/src/foundry/client-esm/dice/terms/operator.d.mts +2 -2
  435. package/src/foundry/client-esm/dice/terms/parenthetical.d.mts +9 -10
  436. package/src/foundry/client-esm/dice/terms/pool.d.mts +25 -31
  437. package/src/foundry/client-esm/dice/terms/string.d.mts +4 -4
  438. package/src/foundry/client-esm/dice/terms/term.d.mts +18 -4
  439. package/src/foundry/client-esm/dice/twister.d.mts +3 -3
  440. package/src/foundry/client-esm/helpers/_module.d.mts +2 -2
  441. package/src/foundry/client-esm/helpers/_types.d.mts +12 -46
  442. package/src/foundry/client-esm/helpers/compendium-art.d.mts +56 -4
  443. package/src/foundry/common/abstract/_types.d.mts +60 -54
  444. package/src/foundry/common/abstract/backend.d.mts +51 -45
  445. package/src/foundry/common/abstract/data.d.mts +265 -236
  446. package/src/foundry/common/abstract/document.d.mts +1449 -464
  447. package/src/foundry/common/abstract/embedded-collection-delta.d.mts +1 -1
  448. package/src/foundry/common/abstract/embedded-collection.d.mts +37 -7
  449. package/src/foundry/common/abstract/module.d.mts +3 -2
  450. package/src/foundry/common/abstract/singleton-collection.d.mts +1 -1
  451. package/src/foundry/common/abstract/socket.d.mts +1 -1
  452. package/src/foundry/common/abstract/type-data.d.mts +61 -55
  453. package/src/foundry/common/config.d.mts +11 -3
  454. package/src/foundry/common/constants.d.mts +261 -231
  455. package/src/foundry/common/data/data.d.mts +238 -102
  456. package/src/foundry/common/data/fields.d.mts +1334 -874
  457. package/src/foundry/common/data/module.d.mts +2 -2
  458. package/src/foundry/common/data/validation-failure.d.mts +12 -9
  459. package/src/foundry/common/documents/_module.d.mts +4 -2
  460. package/src/foundry/common/documents/_types.d.mts +22 -56
  461. package/src/foundry/common/documents/active-effect.d.mts +358 -194
  462. package/src/foundry/common/documents/actor-delta.d.mts +403 -73
  463. package/src/foundry/common/documents/actor.d.mts +359 -117
  464. package/src/foundry/common/documents/adventure.d.mts +312 -142
  465. package/src/foundry/common/documents/ambient-light.d.mts +296 -75
  466. package/src/foundry/common/documents/ambient-sound.d.mts +296 -109
  467. package/src/foundry/common/documents/card.d.mts +321 -187
  468. package/src/foundry/common/documents/cards.d.mts +353 -125
  469. package/src/foundry/common/documents/chat-message.d.mts +338 -167
  470. package/src/foundry/common/documents/combat.d.mts +358 -94
  471. package/src/foundry/common/documents/combatant.d.mts +323 -92
  472. package/src/foundry/common/documents/drawing.d.mts +327 -206
  473. package/src/foundry/common/documents/fog-exploration.d.mts +303 -69
  474. package/src/foundry/common/documents/folder.d.mts +307 -82
  475. package/src/foundry/common/documents/item.d.mts +377 -100
  476. package/src/foundry/common/documents/journal-entry-page.d.mts +327 -187
  477. package/src/foundry/common/documents/journal-entry.d.mts +345 -68
  478. package/src/foundry/common/documents/macro.d.mts +325 -139
  479. package/src/foundry/common/documents/measured-template.d.mts +328 -138
  480. package/src/foundry/common/documents/note.d.mts +312 -151
  481. package/src/foundry/common/documents/playlist-sound.d.mts +309 -102
  482. package/src/foundry/common/documents/playlist.d.mts +341 -131
  483. package/src/foundry/common/documents/region-behavior.d.mts +360 -0
  484. package/src/foundry/common/documents/region.d.mts +355 -0
  485. package/src/foundry/common/documents/roll-table.d.mts +320 -102
  486. package/src/foundry/common/documents/scene.d.mts +437 -350
  487. package/src/foundry/common/documents/setting.d.mts +285 -54
  488. package/src/foundry/common/documents/table-result.d.mts +326 -103
  489. package/src/foundry/common/documents/tile.d.mts +337 -172
  490. package/src/foundry/common/documents/token.d.mts +396 -447
  491. package/src/foundry/common/documents/user.d.mts +296 -173
  492. package/src/foundry/common/documents/wall.d.mts +303 -156
  493. package/src/foundry/common/grid/_module.d.mts +3 -3
  494. package/src/foundry/common/grid/base.d.mts +66 -49
  495. package/src/foundry/common/grid/gridless.d.mts +2 -2
  496. package/src/foundry/common/grid/hexagonal.d.mts +35 -28
  497. package/src/foundry/common/grid/square.d.mts +3 -3
  498. package/src/foundry/common/packages/base-module.d.mts +6 -24
  499. package/src/foundry/common/packages/base-package.d.mts +56 -31
  500. package/src/foundry/common/packages/base-system.d.mts +45 -63
  501. package/src/foundry/common/packages/base-world.d.mts +15 -61
  502. package/src/foundry/common/packages/module.d.mts +7 -7
  503. package/src/foundry/common/packages/sub-types.d.mts +4 -6
  504. package/src/foundry/common/primitives/array.d.mts +4 -4
  505. package/src/foundry/common/primitives/math.d.mts +7 -1
  506. package/src/foundry/common/primitives/number.d.mts +2 -2
  507. package/src/foundry/common/primitives/set.d.mts +17 -14
  508. package/src/foundry/common/primitives/string.d.mts +1 -1
  509. package/src/foundry/common/prosemirror/_module.d.mts +15 -15
  510. package/src/foundry/common/prosemirror/dirty-plugin.d.mts +1 -1
  511. package/src/foundry/common/prosemirror/dom-parser.d.mts +2 -1
  512. package/src/foundry/common/prosemirror/dropdown.d.mts +1 -1
  513. package/src/foundry/common/prosemirror/highlight-matches-plugin.d.mts +2 -2
  514. package/src/foundry/common/prosemirror/image-plugin.d.mts +1 -1
  515. package/src/foundry/common/prosemirror/menu.d.mts +3 -3
  516. package/src/foundry/common/prosemirror/paste-transformer.d.mts +1 -1
  517. package/src/foundry/common/prosemirror/plugin.d.mts +2 -2
  518. package/src/foundry/common/prosemirror/schema/index.d.mts +0 -1
  519. package/src/foundry/common/prosemirror/schema/lists.d.mts +2 -0
  520. package/src/foundry/common/prosemirror/util.d.mts +1 -1
  521. package/src/foundry/common/types.d.mts +3 -3
  522. package/src/foundry/common/utils/bitmask.d.mts +23 -11
  523. package/src/foundry/common/utils/collection.d.mts +61 -38
  524. package/src/foundry/common/utils/color.d.mts +20 -2
  525. package/src/foundry/common/utils/event-emitter.d.mts +32 -17
  526. package/src/foundry/common/utils/helpers.d.mts +36 -26
  527. package/src/foundry/common/utils/http.d.mts +2 -2
  528. package/src/foundry/common/utils/module.d.mts +2 -2
  529. package/src/foundry/common/utils/string-tree.d.mts +45 -39
  530. package/src/foundry/common/utils/word-tree.d.mts +10 -23
  531. package/src/foundry/index.d.mts +0 -1
  532. package/src/foundry/{clipper → public/scripts/clipper}/clipper.d.mts +58 -16
  533. package/src/foundry/public/scripts/index.d.mts +1 -0
  534. package/src/foundry/public/scripts/workers/image-compressor.d.mts +23 -0
  535. package/src/foundry/public/scripts/workers/index.d.mts +1 -0
  536. package/{index-lenient.d.mts → src/index-lenient.d.mts} +2 -0
  537. package/src/index.d.mts +6 -0
  538. package/src/tsconfig.json +15 -0
  539. package/src/types/augments/particles.d.mts +29 -0
  540. package/src/types/augments/pixi.d.mts +1024 -21
  541. package/src/types/augments/smooth.d.mts +31 -0
  542. package/src/types/augments/tinyMCE.d.mts +1 -1
  543. package/src/types/config.d.mts +18 -313
  544. package/src/types/documentConfiguration.d.mts +286 -542
  545. package/src/types/index.d.mts +1 -1
  546. package/src/types/lib.d.mts +12 -0
  547. package/src/types/workers/image-compressor.d.mts +176 -0
  548. package/src/utils/index.d.mts +1279 -0
  549. package/tsconfig.json +29 -0
  550. package/tsconfig.main.json +8 -0
  551. package/tsconfig.miscellaneous.json +16 -0
  552. package/index.d.mts +0 -5
  553. package/src/foundry/client/apps/placeables/light-config.d.mts +0 -100
  554. package/src/foundry/client/apps/placeables/sound-config.d.mts +0 -43
  555. package/src/foundry/common/documents/module.d.mts +0 -35
  556. package/src/foundry/common/primitives/regex.d.mts +0 -12
  557. package/src/types/helperTypes.d.mts +0 -583
  558. package/src/types/utils.d.mts +0 -539
  559. /package/src/foundry/{clipper → public/scripts/clipper}/index.d.mts +0 -0
@@ -1,78 +1,650 @@
1
- import type { InexactPartial } from "../../../../types/utils.d.mts";
1
+ import type { ConfiguredChatMessage } from "../../../../configuration/index.d.mts";
2
+ import type { AnyObject, InterfaceToObject, Merge, NullishProps } from "#utils";
3
+ import type { documents } from "../../../client-esm/client.d.mts";
2
4
  import type Document from "../../../common/abstract/document.d.mts";
3
- import type { DocumentDatabaseOperations } from "../../../common/abstract/document.d.mts";
5
+ import type { DataSchema, SchemaField } from "../../../common/data/fields.d.mts";
6
+ import type { fields } from "../../../common/data/module.d.mts";
4
7
  import type BaseChatMessage from "../../../common/documents/chat-message.d.mts";
5
8
 
6
9
  declare global {
7
10
  namespace ChatMessage {
8
- type Metadata = Document.MetadataFor<ChatMessage>;
11
+ /**
12
+ * The document's name.
13
+ */
14
+ type Name = "ChatMessage";
9
15
 
10
- type ConfiguredClass = Document.ConfiguredClassForName<"ChatMessage">;
11
- type ConfiguredInstance = Document.ConfiguredInstanceForName<"ChatMessage">;
16
+ /**
17
+ * The arguments to construct the document.
18
+ */
19
+ type ConstructorArgs = Document.ConstructorParameters<CreateData, Parent>;
12
20
 
13
- /* eslint-disable @typescript-eslint/no-empty-object-type */
14
- interface DatabaseOperations
15
- extends DocumentDatabaseOperations<
16
- ChatMessage,
17
- { rollMode: foundry.CONST.DICE_ROLL_MODES; chatBubble: boolean },
18
- {},
19
- {}
21
+ /**
22
+ * The documents embedded within `ChatMessage`.
23
+ */
24
+ type Hierarchy = Readonly<Document.HierarchyOf<Schema>>;
25
+
26
+ /**
27
+ * The implementation of the `ChatMessage` document instance configured through `CONFIG.ChatMessage.documentClass` in Foundry and
28
+ * {@link DocumentClassConfig | `DocumentClassConfig`} or {@link ConfiguredChatMessage | `fvtt-types/configuration/ConfiguredChatMessage`} in fvtt-types.
29
+ */
30
+ type Implementation = Document.ImplementationFor<Name>;
31
+
32
+ /**
33
+ * The implementation of the `ChatMessage` document configured through `CONFIG.ChatMessage.documentClass` in Foundry and
34
+ * {@link DocumentClassConfig | `DocumentClassConfig`} in fvtt-types.
35
+ */
36
+ type ImplementationClass = Document.ImplementationClassFor<Name>;
37
+
38
+ /**
39
+ * A document's metadata is special information about the document ranging anywhere from its name,
40
+ * whether it's indexed, or to the permissions a user has over it.
41
+ */
42
+ interface Metadata
43
+ extends Merge<
44
+ Document.Metadata.Default,
45
+ Readonly<{
46
+ name: "ChatMessage";
47
+ collection: "messages";
48
+ label: string;
49
+ labelPlural: string;
50
+ hasTypeData: true;
51
+ isPrimary: true;
52
+ permissions: Metadata.Permissions;
53
+ schemaVersion: string;
54
+ }>
20
55
  > {}
21
- /* eslint-enable @typescript-eslint/no-empty-object-type */
22
56
 
23
- // Helpful aliases
24
- type TypeNames = BaseChatMessage.TypeNames;
25
- type ConstructorData = BaseChatMessage.ConstructorData;
26
- type UpdateData = BaseChatMessage.UpdateData;
27
- type Schema = BaseChatMessage.Schema;
28
- type Source = BaseChatMessage.Source;
57
+ namespace Metadata {
58
+ /**
59
+ * The permissions for whether a certain user can create, update, or delete this document.
60
+ */
61
+ interface Permissions {
62
+ create(user: User.Internal.Implementation, doc: Implementation): boolean;
63
+ update(user: User.Internal.Implementation, doc: Implementation, data: UpdateData): boolean;
64
+ }
65
+ }
29
66
 
30
- interface GetSpeakerOptions {
31
- /** The Scene in which the speaker resides */
32
- scene: Scene | null;
67
+ /**
68
+ * Allowed subtypes of `ChatMessage`. This is configured through various methods. Modern Foundry
69
+ * recommends registering using [Data Models](https://foundryvtt.com/article/system-data-models/)
70
+ * under {@link CONFIG.ChatMessage.dataModels | `CONFIG.ChatMessage.dataModels`}. This corresponds to
71
+ * fvtt-type's {@link DataModelConfig | `DataModelConfig`}.
72
+ *
73
+ * Subtypes can also be registered through a `template.json` though this is discouraged.
74
+ * The corresponding fvtt-type configs are {@link SourceConfig | `SourceConfig`} and
75
+ * {@link DataConfig | `DataConfig`}.
76
+ */
77
+ type SubType = Game.Model.TypeNames<"ChatMessage">;
78
+
79
+ /**
80
+ * `ConfiguredSubTypes` represents the subtypes a user explicitly registered. This excludes
81
+ * subtypes like the Foundry builtin subtype `"base"` and the catch-all subtype for arbitrary
82
+ * module subtypes `${string}.${string}`.
83
+ *
84
+ * @see {@link SubType} for more information.
85
+ */
86
+ type ConfiguredSubTypes = Document.ConfiguredSubTypesOf<"ChatMessage">;
87
+
88
+ /**
89
+ * `Known` represents the types of `ChatMessage` that a user explicitly registered.
90
+ *
91
+ * @see {@link ConfiguredSubTypes} for more information.
92
+ */
93
+ type Known = ChatMessage.OfType<ChatMessage.ConfiguredSubTypes>;
94
+
95
+ /**
96
+ * `OfType` returns an instance of `ChatMessage` with the corresponding type. This works with both the
97
+ * builtin `ChatMessage` class or a custom subclass if that is set up in
98
+ * {@link ConfiguredChatMessage | `fvtt-types/configuration/ConfiguredChatMessage`}.
99
+ */
100
+ // eslint-disable-next-line @typescript-eslint/no-restricted-types
101
+ type OfType<Type extends SubType> = Document.Internal.OfType<ConfiguredChatMessage<Type>, ChatMessage<Type>>;
102
+
103
+ /**
104
+ * `SystemOfType` returns the system property for a specific `ChatMessage` subtype.
105
+ */
106
+ type SystemOfType<Type extends SubType> = Document.Internal.SystemOfType<_SystemMap, Type>;
107
+
108
+ /**
109
+ * @internal
110
+ */
111
+ interface _SystemMap extends Document.Internal.SystemMap<"ChatMessage"> {}
112
+
113
+ /**
114
+ * A document's parent is something that can contain it.
115
+ * For example an `Item` can be contained by an `Actor` which makes `Actor` one of its possible parents.
116
+ */
117
+ type Parent = null;
118
+
119
+ /**
120
+ * A document's descendants are any child documents, grandchild documents, etc.
121
+ * This is a union of all instances, or never if the document doesn't have any descendants.
122
+ */
123
+ type Descendant = never;
124
+
125
+ /**
126
+ * A document's descendants are any child documents, grandchild documents, etc.
127
+ * This is a union of all classes, or never if the document doesn't have any descendants.
128
+ */
129
+ type DescendantClass = never;
130
+
131
+ /**
132
+ * Types of `CompendiumCollection` this document might be contained in.
133
+ * Note that `this.pack` will always return a string; this is the type for `game.packs.get(this.pack)`
134
+ */
135
+ // Note: Takes any document in the heritage chain (i.e. itself or any parent, transitive or not) that can be contained in a compendium.
136
+ type Pack = never;
137
+
138
+ /**
139
+ * An embedded document is a document contained in another.
140
+ * For example an `Item` can be contained by an `Actor` which means `Item` can be embedded in `Actor`.
141
+ *
142
+ * If this is `never` it is because there are no embeddable documents (or there's a bug!).
143
+ */
144
+ type Embedded = never;
145
+
146
+ /**
147
+ * The name of the world or embedded collection this document can find itself in.
148
+ * For example an `Item` is always going to be inside a collection with a key of `items`.
149
+ * This is a fixed string per document type and is primarily useful for {@link ClientDocumentMixin | `Descendant Document Events`}.
150
+ */
151
+ type ParentCollectionName = Metadata["collection"];
152
+
153
+ /**
154
+ * The world collection that contains `ChatMessage`s. Will be `never` if none exists.
155
+ */
156
+ type CollectionClass = Messages.ConfiguredClass;
157
+
158
+ /**
159
+ * The world collection that contains `ChatMessage`s. Will be `never` if none exists.
160
+ */
161
+ type Collection = Messages.Configured;
162
+
163
+ /**
164
+ * An instance of `ChatMessage` that comes from the database but failed validation meaning that
165
+ * its `system` and `_source` could theoretically be anything.
166
+ */
167
+ interface Invalid<out SubType extends ChatMessage.SubType = ChatMessage.SubType>
168
+ extends Document.Invalid<OfType<SubType>> {}
169
+
170
+ /**
171
+ * An instance of `ChatMessage` that comes from the database.
172
+ */
173
+ interface Stored<out SubType extends ChatMessage.SubType = ChatMessage.SubType>
174
+ extends Document.Stored<OfType<SubType>> {}
175
+
176
+ /**
177
+ * The data put in {@link ChatMessage._source | `ChatMessage#_source`}. This data is what was
178
+ * persisted to the database and therefore it must be valid JSON.
179
+ *
180
+ * For example a {@link fields.SetField | `SetField`} is persisted to the database as an array
181
+ * but initialized as a {@link Set | `Set`}.
182
+ */
183
+ interface Source extends fields.SchemaField.SourceData<Schema> {}
184
+
185
+ /**
186
+ * @deprecated {@link ChatMessage.Source | `ChatMessage.Source`}
187
+ */
188
+ type PersistedData = Source;
189
+
190
+ /**
191
+ * The data necessary to create a document. Used in places like {@link ChatMessage.create | `ChatMessage.create`}
192
+ * and {@link ChatMessage | `new ChatMessage(...)`}.
193
+ *
194
+ * For example a {@link fields.SetField | `SetField`} can accept any {@link Iterable | `Iterable`}
195
+ * with the right values. This means you can pass a `Set` instance, an array of values,
196
+ * a generator, or any other iterable.
197
+ */
198
+ interface CreateData extends fields.SchemaField.CreateData<Schema> {}
199
+
200
+ /**
201
+ * The data after a {@link foundry.abstract.Document | `Document`} has been initialized, for example
202
+ * {@link ChatMessage.name | `ChatMessage#name`}.
203
+ *
204
+ * This is data transformed from {@link ChatMessage.Source | `ChatMessage.Source`} and turned into more
205
+ * convenient runtime data structures. For example a {@link fields.SetField | `SetField`} is
206
+ * persisted to the database as an array of values but at runtime it is a `Set` instance.
207
+ */
208
+ interface InitializedData extends fields.SchemaField.InitializedData<Schema> {}
209
+
210
+ /**
211
+ * The data used to update a document, for example {@link ChatMessage.update | `ChatMessage#update`}.
212
+ * It is a distinct type from {@link ChatMessage.CreateData | `DeepPartial<ChatMessage.CreateData>`} because
213
+ * it has different rules for `null` and `undefined`.
214
+ */
215
+ interface UpdateData extends fields.SchemaField.UpdateData<Schema> {}
216
+
217
+ /**
218
+ * The schema for {@link ChatMessage | `ChatMessage`}. This is the source of truth for how an ChatMessage document
219
+ * must be structured.
220
+ *
221
+ * Foundry uses this schema to validate the structure of the {@link ChatMessage | `ChatMessage`}. For example
222
+ * a {@link fields.StringField | `StringField`} will enforce that the value is a string. More
223
+ * complex fields like {@link fields.SetField | `SetField`} goes through various conversions
224
+ * starting as an array in the database, initialized as a set, and allows updates with any
225
+ * iterable.
226
+ */
227
+ interface Schema extends DataSchema {
228
+ /**
229
+ * The _id which uniquely identifies this ChatMessage document
230
+ * @defaultValue `null`
231
+ */
232
+ _id: fields.DocumentIdField;
233
+
234
+ /** @defaultValue `"base"` */
235
+ type: fields.DocumentTypeField<typeof BaseChatMessage, { initial: typeof CONST.BASE_DOCUMENT_TYPE }>;
236
+
237
+ system: fields.TypeDataField<typeof BaseChatMessage>;
238
+
239
+ /**
240
+ * The message type from CONST.CHAT_MESSAGE_STYLES
241
+ * @defaultValue `CONST.CHAT_MESSAGE_STYLES.OTHER`
242
+ */
243
+ // FIXME: overrides to enforce the branded type
244
+ style: fields.NumberField<
245
+ {
246
+ required: true;
247
+ choices: CONST.CHAT_MESSAGE_STYLES[];
248
+ initial: typeof CONST.CHAT_MESSAGE_STYLES.OTHER;
249
+ validationError: "must be a value in CONST.CHAT_MESSAGE_TYPES";
250
+ },
251
+ CONST.CHAT_MESSAGE_STYLES | null | undefined,
252
+ CONST.CHAT_MESSAGE_STYLES,
253
+ CONST.CHAT_MESSAGE_STYLES
254
+ >;
255
+
256
+ /**
257
+ * The _id of the User document who generated this message
258
+ * @defaultValue `game?.user?.id`
259
+ */
260
+ author: fields.ForeignDocumentField<typeof documents.BaseUser, { nullable: false; initial: () => string }>;
261
+
262
+ /**
263
+ * The timestamp at which point this message was generated
264
+ * @defaultValue `Date.now()`
265
+ */
266
+ timestamp: fields.NumberField<{ required: true; nullable: false; initial: typeof Date.now }>;
267
+
268
+ /**
269
+ * An optional flavor text message which summarizes this message
270
+ * @defaultValue `""`
271
+ */
272
+ flavor: fields.HTMLField;
273
+
274
+ /**
275
+ * The HTML content of this chat message
276
+ * @defaultValue `""`
277
+ */
278
+ content: fields.HTMLField<{ textSearch: true }>;
279
+
280
+ /**
281
+ * A ChatSpeakerData object which describes the origin of the ChatMessage
282
+ */
283
+ speaker: fields.SchemaField<SpeakerSchema>;
284
+
285
+ /**
286
+ * An array of User _id values to whom this message is privately whispered
287
+ * @defaultValue `[]`
288
+ */
289
+ whisper: fields.ArrayField<fields.ForeignDocumentField<typeof documents.BaseUser, { idOnly: true }>>;
290
+
291
+ /**
292
+ * Is this message sent blindly where the creating User cannot see it?
293
+ * @defaultValue `false`
294
+ */
295
+ blind: fields.BooleanField;
296
+
297
+ /**
298
+ * Serialized content of any Roll instances attached to the ChatMessage
299
+ * @defaultValue `[]`
300
+ */
301
+ rolls: fields.ArrayField<
302
+ fields.JSONField<
303
+ { validate: (rollJson: string) => void },
304
+ // TODO: Figure out why passing whole Roll objects doesn't lose `terms` complex objects without calling `.toJSON()`
305
+ fields.JSONField.AssignmentType<{ validate: (rollJson: string) => void }> | Roll.Any,
306
+ Roll
307
+ >
308
+ >;
309
+
310
+ /**
311
+ * The URL of an audio file which plays when this message is received
312
+ * @defaultValue `null`
313
+ */
314
+ sound: fields.FilePathField<{ categories: ["AUDIO"] }>;
315
+
316
+ /**
317
+ * Is this message styled as an emote?
318
+ * @defaultValue `false`
319
+ */
320
+ emote: fields.BooleanField;
321
+
322
+ /**
323
+ * An object of optional key/value flags
324
+ * @defaultValue `{}`
325
+ */
326
+ flags: fields.ObjectField.FlagsField<Name, InterfaceToObject<CoreFlags>>;
327
+
328
+ _stats: fields.DocumentStatsField;
329
+ }
330
+
331
+ interface SpeakerSchema extends DataSchema {
332
+ /**
333
+ * The _id of the Scene where this message was created
334
+ * @defaultValue `null`
335
+ */
336
+ scene: fields.ForeignDocumentField<typeof documents.BaseScene, { idOnly: true }>;
337
+
338
+ /**
339
+ * The _id of the Actor who generated this message
340
+ * @defaultValue `null`
341
+ */
342
+ actor: fields.ForeignDocumentField<typeof documents.BaseActor, { idOnly: true }>;
343
+
344
+ /**
345
+ * The _id of the Token who generated this message
346
+ * @defaultValue `null`
347
+ */
348
+ token: fields.ForeignDocumentField<typeof documents.BaseToken, { idOnly: true }>;
349
+
350
+ /**
351
+ * An overridden alias name used instead of the Actor or Token name
352
+ * @defaultValue `undefined`
353
+ */
354
+ alias: fields.StringField;
355
+ }
356
+
357
+ interface SpeakerData extends fields.SchemaField.InitializedData<SpeakerSchema> {}
358
+
359
+ namespace Database {
360
+ /** Options passed along in Get operations for ChatMessages */
361
+ interface Get extends foundry.abstract.types.DatabaseGetOperation<ChatMessage.Parent> {}
362
+
363
+ /** Options passed along in Create operations for ChatMessages */
364
+ interface Create<Temporary extends boolean | undefined = boolean | undefined>
365
+ extends foundry.abstract.types.DatabaseCreateOperation<ChatMessage.CreateData, ChatMessage.Parent, Temporary> {
366
+ rollMode?: foundry.CONST.DICE_ROLL_MODES;
367
+ chatBubble?: boolean;
368
+ }
369
+
370
+ /** Options passed along in Delete operations for ChatMessages */
371
+ interface Delete extends foundry.abstract.types.DatabaseDeleteOperation<ChatMessage.Parent> {}
372
+
373
+ /** Options passed along in Update operations for ChatMessages */
374
+ interface Update
375
+ extends foundry.abstract.types.DatabaseUpdateOperation<ChatMessage.UpdateData, ChatMessage.Parent> {}
33
376
 
34
- /** The Actor whom is speaking */
35
- actor: Actor | null | undefined;
377
+ /** Operation for {@link ChatMessage.createDocuments | `ChatMessage.createDocuments`} */
378
+ interface CreateDocumentsOperation<Temporary extends boolean | undefined>
379
+ extends Document.Database.CreateOperation<ChatMessage.Database.Create<Temporary>> {}
36
380
 
37
- /** The Token whom is speaking */
38
- token: TokenDocument | Token | null | undefined;
381
+ /** Operation for {@link ChatMessage.updateDocuments | `ChatMessage.updateDocuments`} */
382
+ interface UpdateDocumentsOperation
383
+ extends Document.Database.UpdateDocumentsOperation<ChatMessage.Database.Update> {}
384
+
385
+ /** Operation for {@link ChatMessage.deleteDocuments | `ChatMessage.deleteDocuments`} */
386
+ interface DeleteDocumentsOperation
387
+ extends Document.Database.DeleteDocumentsOperation<ChatMessage.Database.Delete> {}
388
+
389
+ /** Operation for {@link ChatMessage.create | `ChatMessage.create`} */
390
+ interface CreateOperation<Temporary extends boolean | undefined>
391
+ extends Document.Database.CreateOperation<ChatMessage.Database.Create<Temporary>> {}
392
+
393
+ /** Operation for {@link ChatMessage.update | `ChatMessage#update`} */
394
+ interface UpdateOperation extends Document.Database.UpdateOperation<Update> {}
395
+
396
+ interface DeleteOperation extends Document.Database.DeleteOperation<Delete> {}
397
+
398
+ /** Options for {@link ChatMessage.get | `ChatMessage.get`} */
399
+ interface GetOptions extends Document.Database.GetOptions {}
400
+
401
+ /** Options for {@link ChatMessage._preCreate | `ChatMessage#_preCreate`} */
402
+ interface PreCreateOptions extends Document.Database.PreCreateOptions<Create> {}
403
+
404
+ /** Options for {@link ChatMessage._onCreate | `ChatMessage#_onCreate`} */
405
+ interface OnCreateOptions extends Document.Database.CreateOptions<Create> {}
406
+
407
+ /** Operation for {@link ChatMessage._preCreateOperation | `ChatMessage._preCreateOperation`} */
408
+ interface PreCreateOperation extends Document.Database.PreCreateOperationStatic<ChatMessage.Database.Create> {}
409
+
410
+ /** Operation for {@link ChatMessage._onCreateOperation | `ChatMessage#_onCreateOperation`} */
411
+ interface OnCreateOperation extends ChatMessage.Database.Create {}
412
+
413
+ /** Options for {@link ChatMessage._preUpdate | `ChatMessage#_preUpdate`} */
414
+ interface PreUpdateOptions extends Document.Database.PreUpdateOptions<Update> {}
415
+
416
+ /** Options for {@link ChatMessage._onUpdate | `ChatMessage#_onUpdate`} */
417
+ interface OnUpdateOptions extends Document.Database.UpdateOptions<Update> {}
418
+
419
+ /** Operation for {@link ChatMessage._preUpdateOperation | `ChatMessage._preUpdateOperation`} */
420
+ interface PreUpdateOperation extends ChatMessage.Database.Update {}
421
+
422
+ /** Operation for {@link ChatMessage._onUpdateOperation | `ChatMessage._preUpdateOperation`} */
423
+ interface OnUpdateOperation extends ChatMessage.Database.Update {}
424
+
425
+ /** Options for {@link ChatMessage._preDelete | `ChatMessage#_preDelete`} */
426
+ interface PreDeleteOptions extends Document.Database.PreDeleteOperationInstance<Delete> {}
427
+
428
+ /** Options for {@link ChatMessage._onDelete | `ChatMessage#_onDelete`} */
429
+ interface OnDeleteOptions extends Document.Database.DeleteOptions<Delete> {}
430
+
431
+ /** Options for {@link ChatMessage._preDeleteOperation | `ChatMessage#_preDeleteOperation`} */
432
+ interface PreDeleteOperation extends ChatMessage.Database.Delete {}
433
+
434
+ /** Options for {@link ChatMessage._onDeleteOperation | `ChatMessage#_onDeleteOperation`} */
435
+ interface OnDeleteOperation extends ChatMessage.Database.Delete {}
436
+
437
+ /** Context for {@link ChatMessage._onDeleteOperation | `ChatMessage._onDeleteOperation`} */
438
+ interface OnDeleteDocumentsContext extends Document.ModificationContext<ChatMessage.Parent> {}
439
+
440
+ /** Context for {@link ChatMessage._onCreateDocuments | `ChatMessage._onCreateDocuments`} */
441
+ interface OnCreateDocumentsContext extends Document.ModificationContext<ChatMessage.Parent> {}
442
+
443
+ /** Context for {@link ChatMessage._onUpdateDocuments | `ChatMessage._onUpdateDocuments`} */
444
+ interface OnUpdateDocumentsContext extends Document.ModificationContext<ChatMessage.Parent> {}
445
+
446
+ /**
447
+ * Options for {@link ChatMessage._preCreateDescendantDocuments | `ChatMessage#_preCreateDescendantDocuments`}
448
+ * and {@link ChatMessage._onCreateDescendantDocuments | `ChatMessage#_onCreateDescendantDocuments`}
449
+ */
450
+ interface CreateOptions extends Document.Database.CreateOptions<ChatMessage.Database.Create> {}
451
+
452
+ /**
453
+ * Options for {@link ChatMessage._preUpdateDescendantDocuments | `ChatMessage#_preUpdateDescendantDocuments`}
454
+ * and {@link ChatMessage._onUpdateDescendantDocuments | `ChatMessage#_onUpdateDescendantDocuments`}
455
+ */
456
+ interface UpdateOptions extends Document.Database.UpdateOptions<ChatMessage.Database.Update> {}
457
+
458
+ /**
459
+ * Options for {@link ChatMessage._preDeleteDescendantDocuments | `ChatMessage#_preDeleteDescendantDocuments`}
460
+ * and {@link ChatMessage._onDeleteDescendantDocuments | `ChatMessage#_onDeleteDescendantDocuments`}
461
+ */
462
+ interface DeleteOptions extends Document.Database.DeleteOptions<ChatMessage.Database.Delete> {}
463
+ }
464
+
465
+ /**
466
+ * The flags that are available for this document in the form `{ [scope: string]: { [key: string]: unknown } }`.
467
+ */
468
+ interface Flags extends Document.ConfiguredFlagsForName<Name> {}
469
+
470
+ namespace Flags {
471
+ /**
472
+ * The valid scopes for the flags on this document e.g. `"core"` or `"dnd5e"`.
473
+ */
474
+ type Scope = Document.FlagKeyOf<Flags>;
475
+
476
+ /**
477
+ * The valid keys for a certain scope for example if the scope is "core" then a valid key may be `"sheetLock"` or `"viewMode"`.
478
+ */
479
+ type Key<Scope extends Flags.Scope> = Document.FlagKeyOf<Document.FlagGetKey<Flags, Scope>>;
480
+
481
+ /**
482
+ * Gets the type of a particular flag given a `Scope` and a `Key`.
483
+ */
484
+ type Get<Scope extends Flags.Scope, Key extends Flags.Key<Scope>> = Document.GetFlag<Name, Scope, Key>;
485
+ }
486
+
487
+ interface CoreFlags {
488
+ core?: {
489
+ canPopout?: boolean;
490
+ initiativeRoll?: boolean;
491
+ nue?: boolean;
492
+ RollTable?: string;
493
+ };
494
+ }
495
+
496
+ /** @internal */
497
+ interface _BaseSpeakerOptions {
498
+ /** The Token who is speaking */
499
+ token: TokenDocument.Implementation | Token.Object;
500
+
501
+ /** The Actor who is speaking */
502
+ actor: Actor.Implementation;
503
+
504
+ /** The Scene in which the speaker resides */
505
+ scene: Scene.Implementation;
39
506
 
40
507
  /** The name of the speaker to display */
41
- alias: string | undefined;
508
+ alias: string;
509
+ }
510
+
511
+ interface GetSpeakerOptions extends NullishProps<_BaseSpeakerOptions> {}
512
+
513
+ /** @remarks `token` is required, `alias` falls back to `token.name` */
514
+ interface GetSpeakerFromTokenOptions extends NullishProps<Pick<_BaseSpeakerOptions, "token" | "alias">, "alias"> {}
515
+
516
+ /** @remarks `actor` is required, `scene` falls back to `canvas.scene`, `alias` falls back to `actor.name` */
517
+ interface GetSpeakerFromActorOptions
518
+ extends NullishProps<Pick<_BaseSpeakerOptions, "scene" | "actor" | "alias">, "scene" | "alias"> {}
519
+
520
+ /** @remarks `user` is required, `scene` falls back to `canvas.scene`, `alias` falls back to `user.name` */
521
+ interface GetSpeakerFromUserOptions extends NullishProps<Pick<_BaseSpeakerOptions, "scene" | "alias">> {
522
+ /** The User who is speaking */
523
+ user: User.Implementation;
42
524
  }
43
525
 
526
+ /** @internal */
527
+ type _SpeakerData = SchemaField.InitializedData<ChatMessage.SpeakerSchema>;
528
+
529
+ interface SpeakerData extends _SpeakerData {}
530
+
531
+ /**
532
+ * @remarks
533
+ * {@linkcode ChatMessage.getWhisperRecipients} has a couple special-cased values, and a couple fallback behaviors.
534
+ * _ALL_ comparisons are case-**in**sensitive, compared lowercase.
535
+ * - `"GM"` or `"DM"` inputs returns `game.users.filter(u => u.isGM)`
536
+ * - `"players"` returns `game.users.players`
537
+ * - Then if any User names match, returns all that do
538
+ * - Then returns any Users whose assigned `character` matches
539
+ * - Finally returns `[]`
540
+ */
541
+ type WhisperRecipient = "GM" | "DM" | "players" | (string & {});
542
+
543
+ /**
544
+ * @remarks Serves two purposes:
545
+ * - Template context for either calling `renderTemplate` on `CONFIG.ChatMessage.template` or passing to {@link ChatMessage._renderRollContent | `ChatMessage#_renderRollContent`}
546
+ * - Context passed to the {@linkcode Hooks.StaticCallbacks.renderChatMessage | `renderChatMessage`} hook.
547
+ */
44
548
  interface MessageData {
45
- message: Document.ToObjectFalseType<ChatMessage>;
46
- user: Document.Stored<User.ConfiguredInstance>;
47
- author: User.ConfiguredInstance | undefined;
549
+ /** @remarks This is the return of `ChatMessage#toObject(false)`, but that doesn't seem to make a difference */
550
+ message: ChatMessage.Source;
551
+
552
+ /** @remarks Always `game.user` */
553
+ user: User.Stored;
554
+
555
+ /** @remarks The message's {@link ChatMessage.author | `author`} */
556
+ author: User.Implementation;
557
+
558
+ /** @remarks The message's {@link ChatMessage.alias | `alias`} */
48
559
  alias: string;
560
+
561
+ /** @remarks Possibly more than one class name, space-separated */
49
562
  cssClass: string;
50
- isWhisper: boolean;
563
+
564
+ /**
565
+ * @remarks The `.length` of the message's {@link ChatMessage.whisper | `whisper`} array,
566
+ * despite the name implying a `boolean`
567
+ */
568
+ isWhisper: number;
569
+
570
+ /**
571
+ * @remarks Always `game.user.isGM`. Foundry comments: "Only GM users are allowed to have the
572
+ * trash-bin icon in the chat log itself"
573
+ */
51
574
  canDelete: boolean;
575
+
576
+ /**
577
+ * @remarks A `", "`-separated list of the `name`s of the `User`s whose IDs are in the message's
578
+ * {@link ChatMessage.whisper | `whisper`} array
579
+ */
52
580
  whisperTo: string;
53
581
  }
582
+
583
+ type PassableRollMode = CONST.DICE_ROLL_MODES | "roll";
584
+
585
+ /**
586
+ * @deprecated {@link ChatMessage.DatabaseOperation | `ChatMessage.DatabaseOperation`}
587
+ */
588
+ /* eslint-disable @typescript-eslint/no-empty-object-type */
589
+ interface DatabaseOperations
590
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
591
+ extends Document.Database.Operations<
592
+ ChatMessage.Implementation,
593
+ { rollMode: foundry.CONST.DICE_ROLL_MODES; chatBubble: boolean },
594
+ {},
595
+ {}
596
+ > {}
597
+ /* eslint-enable @typescript-eslint/no-empty-object-type */
598
+
599
+ /**
600
+ * @deprecated {@link ChatMessage.SubType | `ChatMessage.SubType`}
601
+ */
602
+ type TypeNames = ChatMessage.SubType;
603
+
604
+ /**
605
+ * @deprecated {@link ChatMessage.CreateData | `ChatMessage.CreateData`}
606
+ */
607
+ interface ConstructorData extends ChatMessage.CreateData {}
608
+
609
+ /**
610
+ * @deprecated {@link ChatMessage.implementation | `ChatMessage.ImplementationClass`}
611
+ */
612
+ type ConfiguredClass = ImplementationClass;
613
+
614
+ /**
615
+ * @deprecated {@link ChatMessage.Implementation | `ChatMessage.Implementation`}
616
+ */
617
+ type ConfiguredInstance = Implementation;
54
618
  }
55
619
 
56
620
  /**
57
621
  * The client-side ChatMessage document which extends the common BaseChatMessage abstraction.
58
622
  * Each ChatMessage document contains ChatMessageData which defines its data schema.
59
623
  *
60
- * @see {@link Messages} The world-level collection of ChatMessage documents
624
+ * @see {@link Messages | `Messages`} The world-level collection of ChatMessage documents
61
625
  *
62
626
  */
63
- class ChatMessage extends ClientDocumentMixin(foundry.documents.BaseChatMessage) {
64
- static override metadata: ChatMessage.Metadata;
627
+ class ChatMessage<out SubType extends ChatMessage.SubType = ChatMessage.SubType> extends ClientDocumentMixin(
628
+ foundry.documents.BaseChatMessage,
629
+ )<SubType> {
630
+ /**
631
+ * @param data - Initial data from which to construct the `ChatMessage`
632
+ * @param context - Construction context options
633
+ */
634
+ constructor(...args: ChatMessage.ConstructorArgs);
65
635
 
66
636
  /**
67
637
  * Is the display of dice rolls in this message collapsed (false) or expanded (true)
68
638
  * @defaultValue `false`
69
- * @internal
639
+ * @private
640
+ * @remarks Toggled in {@link ChatLog._onDiceRollClick | `ChatLog#_onDiceRollClick`}
70
641
  */
71
642
  protected _rollExpanded: boolean;
72
643
 
73
644
  /**
74
645
  * Is this ChatMessage currently displayed in the sidebar ChatLog?
75
646
  * @defaultValue `false`
647
+ * @remarks Set `true` in {@link ChatLog.postOne | `ChatLog#postOne`} and {@link ChatLog._renderBatch | `ChatLog#_renderBatch`}
76
648
  */
77
649
  logged: boolean;
78
650
 
@@ -105,6 +677,10 @@ declare global {
105
677
  */
106
678
  get visible(): boolean;
107
679
 
680
+ /**
681
+ * @remarks Initializes `this.rolls` from an array of JSON-serializable objects to instances of their listed Roll class,
682
+ * dropping any that throw when passed to {@linkcode Roll.fromData}
683
+ */
108
684
  override prepareDerivedData(): void;
109
685
 
110
686
  /**
@@ -114,89 +690,69 @@ declare global {
114
690
  * @returns The modified ChatMessage data with rollMode preferences applied
115
691
  */
116
692
  static applyRollMode(
117
- chatData: foundry.documents.BaseChatMessage.ConstructorData,
118
- rollMode: keyof typeof CONFIG.Dice.rollModes | "roll",
119
- ): foundry.documents.BaseChatMessage.ConstructorData;
693
+ chatData: ChatMessage.CreateData,
694
+ rollMode: ChatMessage.PassableRollMode,
695
+ ): ChatMessage.CreateData;
120
696
 
121
697
  /**
122
698
  * Update the data of a ChatMessage instance to apply a requested rollMode
123
699
  * @param rollMode - The rollMode preference to apply to this message data
700
+ * @remarks Only calls `this.updateSource`, doesn't db update messages already stored
124
701
  */
125
- applyRollMode(rollMode: keyof typeof CONFIG.Dice.rollModes | "roll"): void;
702
+ applyRollMode(rollMode: ChatMessage.PassableRollMode): void;
126
703
 
127
704
  /**
128
705
  * Attempt to determine who is the speaking character (and token) for a certain Chat Message
129
706
  * First assume that the currently controlled Token is the speaker
130
707
  *
131
- * @param options - (default: `{}`)
708
+ * @param options - Options which affect speaker identification (default: `{}`)
132
709
  *
133
710
  * @returns The identified speaker data
134
711
  */
135
- static getSpeaker(options?: InexactPartial<ChatMessage.GetSpeakerOptions>): ChatMessage["_source"]["speaker"];
712
+ // options: not null (destructured)
713
+ static getSpeaker(options?: ChatMessage.GetSpeakerOptions): ChatMessage.SpeakerData;
136
714
 
137
715
  /**
138
716
  * A helper to prepare the speaker object based on a target TokenDocument
139
717
  * @param options - Options which affect speaker identification
140
718
  * @returns The identified speaker data
141
719
  */
142
- protected static _getSpeakerFromToken(options: {
143
- /** The TokenDocument of the speaker */
144
- token: TokenDocument;
145
-
146
- /** The name of the speaker to display */
147
- alias?: string | undefined;
148
- }): ChatMessage["_source"]["speaker"];
720
+ protected static _getSpeakerFromToken(options: ChatMessage.GetSpeakerFromTokenOptions): ChatMessage.SpeakerData;
149
721
 
150
722
  /**
151
723
  * A helper to prepare the speaker object based on a target Actor
152
724
  * @param options - Options which affect speaker identification
153
725
  * @returns The identified speaker data
154
726
  */
155
- protected static _getSpeakerFromActor(options: {
156
- /** The Scene is which the speaker resides */
157
- scene?: Scene | undefined;
158
-
159
- /** The Actor that is speaking */
160
- actor: Actor;
161
-
162
- /** The name of the speaker to display */
163
- alias?: string | undefined;
164
- }): ChatMessage["_source"]["speaker"];
727
+ protected static _getSpeakerFromActor(options: ChatMessage.GetSpeakerFromActorOptions): ChatMessage.SpeakerData;
165
728
 
166
729
  /**
167
730
  * A helper to prepare the speaker object based on a target User
168
731
  * @param options - Options which affect speaker identification
169
732
  * @returns The identified speaker data
170
733
  */
171
- protected static _getSpeakerFromUser(options: {
172
- /** The Scene in which the speaker resides */
173
- scene?: Scene | undefined;
174
-
175
- /** The User who is speaking */
176
- user: User;
177
-
178
- /** The name of the speaker to display */
179
- alias?: string | undefined;
180
- }): ChatMessage["_source"]["speaker"];
734
+ protected static _getSpeakerFromUser(options: ChatMessage.GetSpeakerFromUserOptions): ChatMessage.SpeakerData;
181
735
 
182
736
  /**
183
737
  * Obtain an Actor instance which represents the speaker of this message (if any)
184
738
  * @param speaker - The speaker data object
739
+ * @remarks `speaker` has no parameter default, if it's falsey this returns `null`
185
740
  */
186
- static getSpeakerActor(speaker: ChatMessage["_source"]["speaker"]): Actor.ConfiguredInstance | null;
741
+ static getSpeakerActor(speaker?: ChatMessage.SpeakerData | null): Actor.Implementation | null;
187
742
 
188
743
  /**
189
744
  * Obtain a data object used to evaluate any dice rolls associated with this particular chat message
190
745
  */
191
- getRollData(): Record<string, unknown>;
746
+ getRollData(): AnyObject;
192
747
 
193
748
  /**
194
749
  * Given a string whisper target, return an Array of the user IDs which should be targeted for the whisper
195
750
  *
196
751
  * @param name - The target name of the whisper target
197
752
  * @returns An array of User instances
753
+ * @remarks See {@linkcode ChatMessage.WhisperRecipient}
198
754
  */
199
- static getWhisperRecipients(name: string): Document.Stored<User.ConfiguredInstance>[];
755
+ static getWhisperRecipients(name: ChatMessage.WhisperRecipient): User.Stored[];
200
756
 
201
757
  /**
202
758
  * Render the HTML for the ChatMessage which should be added to the log
@@ -212,19 +768,54 @@ declare global {
212
768
 
213
769
  /**
214
770
  * Render HTML for the array of Roll objects included in this message.
215
- * @param isPrivate - Is the chat message private?
771
+ * @param isPrivate - Is the chat message private? (default: `false`)
216
772
  * @returns The rendered HTML string
773
+ * @remarks `isPrivate` is passed into {@link Roll.render | `Roll#render`} where it has a parameter default of `false`
217
774
  */
218
- protected _renderRollHTML(isPrivate: boolean): Promise<string>;
775
+ protected _renderRollHTML(isPrivate?: boolean | null): Promise<string>;
219
776
 
220
- /**
221
- * @privateRemarks _preCreate, _onCreate, _onUpdate, and _onDelete are all overridden but with no signature changes.
222
- * For type simplicity they are left off. These methods historically have been the source of a large amount of computation from tsc.
223
- */
777
+ // _preCreate, _onCreate, _onUpdate, and _onDelete are all overridden but with no signature changes.
778
+ // For type simplicity they are left off. These methods historically have been the source of a large amount of computation from tsc.
224
779
 
225
780
  /**
226
781
  * Export the content of the chat message into a standardized log format
227
782
  */
228
783
  export(): string;
784
+
785
+ /*
786
+ * After this point these are not really overridden methods.
787
+ * They are here because Foundry's documents are complex and have lots of edge cases.
788
+ * There are DRY ways of representing this but this ends up being harder to understand
789
+ * for end users extending these functions, especially for static methods. There are also a
790
+ * number of methods that don't make sense to call directly on `Document` like `createDocuments`,
791
+ * as there is no data that can safely construct every possible document. Finally keeping definitions
792
+ * separate like this helps against circularities.
793
+ */
794
+
795
+ // ClientDocument overrides
796
+
797
+ // Descendant Document operations have been left out because ChatMessage does not have any descendant documents.
798
+
799
+ // context: not null (destructured)
800
+ static override defaultName(context?: Document.DefaultNameContext<"ChatMessage", ChatMessage.Parent>): string;
801
+
802
+ // data: not null (parameter default only), context: not null (destructured)
803
+ static override createDialog(
804
+ data?: Document.CreateDialogData<ChatMessage.CreateData>,
805
+ context?: Document.CreateDialogContext<"ChatMessage", ChatMessage.Parent>,
806
+ ): Promise<ChatMessage.Stored | null | undefined>;
807
+
808
+ // options: not null (parameter default only)
809
+ static override fromDropData(
810
+ data: Document.DropData<ChatMessage.Implementation>,
811
+ options?: AnyObject,
812
+ ): Promise<ChatMessage.Implementation | undefined>;
813
+
814
+ static override fromImport(
815
+ source: ChatMessage.Source,
816
+ context?: Document.FromImportContext<ChatMessage.Parent> | null,
817
+ ): Promise<ChatMessage.Implementation>;
818
+
819
+ override _onClickDocumentLink(event: MouseEvent): ClientDocument.OnClickDocumentLinkReturn;
229
820
  }
230
821
  }