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

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 +74 -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 +5 -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 +397 -61
  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 +21 -16
  110. package/src/foundry/client/data/abstract/client-document.d.mts +153 -183
  111. package/src/foundry/client/data/abstract/directory-collection-mixin.d.mts +23 -39
  112. package/src/foundry/client/data/abstract/document-collection.d.mts +96 -68
  113. package/src/foundry/client/data/abstract/world-collection.d.mts +47 -55
  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 +81 -99
  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 +19 -7
  131. package/src/foundry/client/data/documents/active-effect.d.mts +677 -85
  132. package/src/foundry/client/data/documents/actor-delta.d.mts +670 -27
  133. package/src/foundry/client/data/documents/actor.d.mts +718 -64
  134. package/src/foundry/client/data/documents/adventure.d.mts +480 -46
  135. package/src/foundry/client/data/documents/ambient-light.d.mts +423 -19
  136. package/src/foundry/client/data/documents/ambient-sound.d.mts +473 -14
  137. package/src/foundry/client/data/documents/card.d.mts +567 -36
  138. package/src/foundry/client/data/documents/cards.d.mts +744 -87
  139. package/src/foundry/client/data/documents/chat-message.d.mts +574 -42
  140. package/src/foundry/client/data/documents/combat.d.mts +699 -69
  141. package/src/foundry/client/data/documents/combatant.d.mts +504 -24
  142. package/src/foundry/client/data/documents/drawing.d.mts +540 -14
  143. package/src/foundry/client/data/documents/fog-exploration.d.mts +416 -21
  144. package/src/foundry/client/data/documents/folder.d.mts +468 -35
  145. package/src/foundry/client/data/documents/index.d.mts +2 -0
  146. package/src/foundry/client/data/documents/item.d.mts +677 -20
  147. package/src/foundry/client/data/documents/journal-entry-page.d.mts +585 -19
  148. package/src/foundry/client/data/documents/journal-entry.d.mts +619 -18
  149. package/src/foundry/client/data/documents/macro.d.mts +528 -25
  150. package/src/foundry/client/data/documents/measured-template.d.mts +478 -14
  151. package/src/foundry/client/data/documents/note.d.mts +491 -15
  152. package/src/foundry/client/data/documents/playlist-sound.d.mts +426 -24
  153. package/src/foundry/client/data/documents/playlist.d.mts +665 -74
  154. package/src/foundry/client/data/documents/region-behavior.d.mts +507 -0
  155. package/src/foundry/client/data/documents/region.d.mts +784 -0
  156. package/src/foundry/client/data/documents/scene.d.mts +983 -147
  157. package/src/foundry/client/data/documents/setting.d.mts +395 -13
  158. package/src/foundry/client/data/documents/table-result.d.mts +476 -14
  159. package/src/foundry/client/data/documents/table.d.mts +661 -78
  160. package/src/foundry/client/data/documents/tile.d.mts +499 -14
  161. package/src/foundry/client/data/documents/token.d.mts +1111 -94
  162. package/src/foundry/client/data/documents/user.d.mts +493 -25
  163. package/src/foundry/client/data/documents/wall.d.mts +548 -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 +257 -237
  167. package/src/foundry/client/pixi/board.d.mts +106 -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 +76 -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 +238 -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 +199 -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 +36 -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 +141 -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 +57 -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 +115 -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 +132 -154
  446. package/src/foundry/common/abstract/document.d.mts +1306 -438
  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 +58 -55
  453. package/src/foundry/common/config.d.mts +5 -3
  454. package/src/foundry/common/constants.d.mts +261 -231
  455. package/src/foundry/common/data/data.d.mts +200 -94
  456. package/src/foundry/common/data/fields.d.mts +700 -644
  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 -50
  461. package/src/foundry/common/documents/active-effect.d.mts +280 -179
  462. package/src/foundry/common/documents/actor-delta.d.mts +318 -69
  463. package/src/foundry/common/documents/actor.d.mts +305 -117
  464. package/src/foundry/common/documents/adventure.d.mts +266 -141
  465. package/src/foundry/common/documents/ambient-light.d.mts +268 -75
  466. package/src/foundry/common/documents/ambient-sound.d.mts +268 -109
  467. package/src/foundry/common/documents/card.d.mts +267 -174
  468. package/src/foundry/common/documents/cards.d.mts +299 -126
  469. package/src/foundry/common/documents/chat-message.d.mts +276 -158
  470. package/src/foundry/common/documents/combat.d.mts +300 -89
  471. package/src/foundry/common/documents/combatant.d.mts +275 -88
  472. package/src/foundry/common/documents/drawing.d.mts +286 -206
  473. package/src/foundry/common/documents/fog-exploration.d.mts +258 -70
  474. package/src/foundry/common/documents/folder.d.mts +252 -81
  475. package/src/foundry/common/documents/item.d.mts +305 -99
  476. package/src/foundry/common/documents/journal-entry-page.d.mts +279 -189
  477. package/src/foundry/common/documents/journal-entry.d.mts +294 -68
  478. package/src/foundry/common/documents/macro.d.mts +254 -132
  479. package/src/foundry/common/documents/measured-template.d.mts +293 -139
  480. package/src/foundry/common/documents/note.d.mts +274 -149
  481. package/src/foundry/common/documents/playlist-sound.d.mts +260 -94
  482. package/src/foundry/common/documents/playlist.d.mts +279 -120
  483. package/src/foundry/common/documents/region-behavior.d.mts +329 -0
  484. package/src/foundry/common/documents/region.d.mts +327 -0
  485. package/src/foundry/common/documents/roll-table.d.mts +286 -102
  486. package/src/foundry/common/documents/scene.d.mts +276 -336
  487. package/src/foundry/common/documents/setting.d.mts +229 -54
  488. package/src/foundry/common/documents/table-result.d.mts +267 -94
  489. package/src/foundry/common/documents/tile.d.mts +301 -170
  490. package/src/foundry/common/documents/token.d.mts +351 -445
  491. package/src/foundry/common/documents/user.d.mts +256 -144
  492. package/src/foundry/common/documents/wall.d.mts +273 -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 +23 -21
  500. package/src/foundry/common/packages/base-system.d.mts +6 -63
  501. package/src/foundry/common/packages/base-world.d.mts +8 -61
  502. package/src/foundry/common/packages/module.d.mts +7 -7
  503. package/src/foundry/common/packages/sub-types.d.mts +2 -2
  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 +20 -312
  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,583 +0,0 @@
1
- import type { DatabaseOperationMap, Operation } from "../foundry/common/abstract/document.d.mts";
2
- import type Document from "../foundry/common/abstract/document.d.mts";
3
- import type { ConfiguredDocuments } from "./documentConfiguration.d.mts";
4
- import type { AnyFunction, AnyObject, EmptyObject } from "./utils.d.mts";
5
-
6
- export type ModuleRequiredOrOptional<Name extends string> = Name extends keyof RequiredModules ? never : undefined;
7
-
8
- export type ConfiguredModuleData<Name extends string> = Name extends keyof ModuleConfig
9
- ? ModuleConfig[Name]
10
- : EmptyObject;
11
-
12
- export type ConfiguredModule<Name extends string> =
13
- ModuleRequiredOrOptional<Name> extends never
14
- ? ConfiguredModuleData<Name>
15
- :
16
- | ({ active: true } & ConfiguredModuleData<Name>)
17
- // flawed, can't use `key in module` this way, but omitting the Partial Record type kills nullish
18
- // collocating, which is probably the better DX.
19
- | ({ active: false } & Record<keyof ConfiguredModuleData<Name>, undefined>);
20
-
21
- /** Keys of functions of console.log / globalThis.logger */
22
- export type LoggingLevels = "debug" | "log" | "info" | "warn" | "error";
23
-
24
- /**
25
- * `GetKey` accesses a property while intentionally ignoring index signatures. This means `GetKey<Record<string, unknown>, "foo">` will return `never`.
26
- */
27
- // Note(LukeAbby): There are two tricky cases:
28
- // - `T = {}` would regularly always return `unknown`. The fix here adding a single dummy property `{ _?: any } & T`.
29
- // - `T = never` would regularly always return `unknown`. The fix here is adding `_GetKey` which makes the type distributive and therefore `never` as an input becomes `never` in the output.
30
- export type GetKey<T, K extends PropertyKey, D = never> = _GetKey<{ _?: any } & T, K, D>;
31
-
32
- type _GetKey<T, K extends PropertyKey, D> = T extends { readonly [_ in K]?: infer V } ? V : D;
33
-
34
- /**
35
- * `Partial` is usually the wrong type.
36
- * In order to make it easier to audit unintentional uses of `Partial` this type is provided.
37
- *
38
- * ### Picking the right helper type
39
- * - Favor `NullishProps` whenever it is valid. Allowing both `null` and
40
- * `undefined` is convenient for the end user and it is very common that
41
- * wherever `undefined` is valid so is `null`. For some examples it is valid
42
- * for `options.prop ??= "default"`, `options.prop ||= "default"`,
43
- * `if (options.prop) { ... }`, `if (options.prop == null)`, or so on.
44
- * - Use `IntentionalPartial` when an explicit `undefined` is problematic but
45
- * leaving off the property entirely is fine. This primarily occurs when
46
- * patterns like `options = { ...defaultOptions, ...options }`,
47
- * `Object.assign({}, defaultOptions, options)`,
48
- * `foundry.utils.mergeObject(defaultOptions, options)`, or so on.
49
- *
50
- * Note that {@link foundry.utils.mergeObject | `foundry.utils.mergeObject`}
51
- * also expands the object. So once `ExpandsTo` exists you should also use
52
- * that helper type.
53
- *
54
- * What these patterns have in common is that if `options` looks like
55
- * `{ prop: undefined }` that will override whatever is in `defaultOptions`
56
- * and may cause issues. Note that even if you see one of these patterns you
57
- * also need to ensure that `undefined` would cause issues down the road
58
- * before using `IntentionalPartial` as it could be an intended way of
59
- * resetting a property.
60
- * - Use `InexactPartial` when `null` is problematic but `undefined` is not.
61
- * The most common time this shows up is with the pattern
62
- * `exampleFunction({ prop = "foo" } = {}) { ... }`.
63
- */
64
- export type IntentionalPartial<T> = Partial<T>;
65
-
66
- /**
67
- * This type is used to make a constraint where `T` must be statically known to overlap with `U`.
68
- *
69
- * @example
70
- * ```ts
71
- * // The `const T` allows inference to be a bit more specific. This is useful for a utility type like this.`
72
- * function takesNumber<const T>(input: OverlapsWith<T, number>): void {
73
- * // This function body is an example of a method this might be useful for.
74
- * // If the input isn't an number it simply returns in this case.
75
- * if (typeof input !== "number") {
76
- * return;
77
- * }
78
- *
79
- * // Assumes, unchecked, that `element` is a number.
80
- * // This means an input like `number[] | string[]` would be unsound as it could be a string.
81
- * element + 1;
82
- * }
83
- *
84
- * takesNumber(1); // Ok!
85
- * takesNumber("foo"); // Error, statically known to never an number and so presumed to be a mistake.
86
- * takesNumber(Math.random() > 0.5 ? 1 : "foo"); // Ok, `"foo"` doesn't actually cause any runtime issues, it was just disallowed above because then it'd never do anything useful.
87
- * ```
88
- */
89
- export type OverlapsWith<T, U> = [Extract<T, U>, any] extends [U, Extract<T, U>] ? T : U extends T ? T : U;
90
-
91
- /**
92
- * Used to build a constraint where `T` to overlap with `Item[]` but disallows unrelated arrays.
93
- * This is safer than what `OverlapsWith` provides as it ensures that if the type is an array it is an array of `Item`.
94
- * Assumes readonly arrays are permitted.
95
- *
96
- * Note that `never[]` and `any[]` are still accepted due to the unsoundness of those types.
97
- *
98
- * @example
99
- * ```ts
100
- * // The `const T` allows inference to be a bit more specific. This is useful for a utility type like this.`
101
- * function takesNumericArray<const T>(input: ArrayOverlaps<T, number>): void {
102
- * // This function body is an example of a method this might be useful for.
103
- * // If the input isn't an array it simply returns in this case.
104
- * if (!Array.isArray(input)) {
105
- * return;
106
- * }
107
- *
108
- * for (const element of input) {
109
- * // Assumes, unchecked, that `element` is a number.
110
- * // This means an input like `number[] | string[]` would be unsound as it could be a string.
111
- * element + 1;
112
- * }
113
- * }
114
- *
115
- * takesNumericArray([1, 2, 3]); // Ok!
116
- * takesNumericArray("foo"); // Error, statically known to never an array and so presumed to be a mistake.
117
- * takesNumericArray(Math.random() > 0.5 ? [1, 2, 3] : "foo"); // Ok, `"foo"` doesn't actually cause any runtime issues, it was just disallowed above because then it'd never do anything useful.
118
- * takesNumericArray(Math.random() > 0.5 ? [1, 2, 3] : ["foo", "bar"]); // Error, at runtime it could be an array of the wrong type and that isn't handled. Notably this would succeed with `OverlapsWith`.
119
- * ```
120
- */
121
- export type ArrayOverlaps<T, Item> =
122
- Extract<T, readonly unknown[]> extends readonly Item[] ? OverlapsWith<T, readonly Item[]> : readonly Item[];
123
-
124
- /**
125
- * Use this whenever a type is given that should match some constraint but is
126
- * not guaranteed to. For example when additional properties can be declaration
127
- * merged into an interface. When the type does not conform then `ConformTo` is
128
- * used instead.
129
- *
130
- * See `MustConform` for a version that throws a compilation error when the type
131
- * cannot be statically known to conform.
132
- */
133
- export type MakeConform<T, ConformTo> = [T] extends [ConformTo] ? T : ConformTo;
134
-
135
- /**
136
- * This is useful when you want to ensure that a type conforms to a certain
137
- * constraint. If it is not guaranteed to conform then a compilation error is
138
- * thrown. This makes it too conservative in some cases.
139
- */
140
- export type MustConform<T extends ConformTo, ConformTo> = T;
141
-
142
- /**
143
- * This allows you to treat all interfaces as a plain object. But beware, if the
144
- * interface represents a function, array, or constructor then these will be
145
- * stripped from the interface.
146
- *
147
- * This is generally intended for cases where an interface is given in order to
148
- * be declaration merged and then must be assigned to a plain object type.
149
- *
150
- * The constraint `T extends object` is used because `object` includes functions
151
- * and arrays etc. This is crucial to allow interfaces to be given to this type.
152
- */
153
- export type InterfaceToObject<T extends object> = {
154
- // Mapped types are no-ops on most types (even primitives like string) but for
155
- // functions, classes, and arrays they convert them to "proper" objects by
156
- // stripping constructors/function signatures. One side effect is a type like
157
- // `() => number` will result in `{}`.
158
- [K in keyof T]: T[K];
159
- };
160
-
161
- /**
162
- * This is a helper type that allows you to ensure that a record conforms to a
163
- * certain shape. This is useful when you want to ensure that a record has all
164
- * keys of a certain type.
165
- *
166
- * When a value does not conform it is replaced with `never` to indicate that
167
- * there is an issue.
168
- */
169
- export type ConformRecord<T extends object, V> = {
170
- [K in keyof T]: T[K] extends V ? T[K] : never;
171
- };
172
-
173
- /**
174
- * This is a helper type that gets the right DatabaseOperation (including the
175
- * proper options) for a particular Document type.
176
- */
177
- export type DatabaseOperationsFor<
178
- Name extends Document.Type,
179
- ConcreteOperation extends Operation,
180
- > = DatabaseOperationMap[Name][ConcreteOperation];
181
-
182
- /**
183
- * Converts a regular function type into a function derived from a method.
184
- *
185
- * Methods have a special exception in TypeScript that allows unsound subtyping
186
- * that unfortunately has been deeply engrained into not just JavaScript codebases
187
- * but the core APIs of JavaScript itself in the DOM.
188
- *
189
- * It might seem odd to want to opt-in to this unsoundness but it's unfortunately
190
- * useful in several cases, such as when you have a property like
191
- * `prop: ((arg: Options) => number) | undefined` and you want to meet the expectations
192
- * from other similar methods.
193
- *
194
- * @example
195
- * ```typescript
196
- * declare class ExampleBaseClass {
197
- * // This demonstrates a typical example of where the allowed unsoundness is useful.
198
- * methodOne(arg: { x: string }): number;
199
- *
200
- * // This helps demonstrates an example that may be easier to recognize as unsound.
201
- * methodTwo(arg: string): number;
202
- *
203
- * functionProperty: (arg: string) => number;
204
- * methodLikeProperty: ToMethod<(arg: string) => number>;
205
- * }
206
- *
207
- * // TypeScript allows this without any errors.
208
- * declare class MethodSubclassing extends ExampleBaseClass {
209
- * // It's a very common thing for subclasses to ask for extra arguments.
210
- * methodOne(arg: { x: string; y: string }): number;
211
- *
212
- * // Only taking `"foo" | "bar"` should seem pretty unsound.
213
- * // The above is actually equally unsound but it's less obvious to many people.
214
- * methodTwo(arg: "foo" | "bar"): number;
215
- * }
216
- *
217
- * const exampleMethodSubclass: ExampleBaseClass = new MethodSubclassing();
218
- *
219
- * // This is allowed, however at runtime `MethodSubclassing#methodOne` could
220
- * // will almost certainly error as it has the required property `y`.
221
- * // The reason why there's no errors is an intentional unsoundness in TypeScript.
222
- * exampleMethodSubclass.methodOne({ x: "foo" });
223
- *
224
- * // Similarly this is allowed.
225
- * // Both methods show taking arguments that are 'subtypes' of the original.
226
- * // In the case of functions this is unsound as demonstrated because in both
227
- * // examples you're substituting a function that has to be able to be called
228
- * // with a wide variety of arguments with one that will error for many of them.
229
- * exampleMethodSubclass.methodTwo("lorem");
230
- *
231
- * declare class PropertySubclassing extends ExampleBaseClass {
232
- * // This errors right here. This preventative error is because of the prior
233
- * // explained unsoundness. It errors here because there's really only 3
234
- * // places to error at compile time to prevent a runtime error:
235
- * // 1. At the call site when a subclass is used unsoundly. Unfortunately
236
- * // at this point it's too late to know for certain if it's a subclass
237
- * // or not. For example there could be a guarded condition to avoid
238
- * // subclasses that TypeScript can't possibly track.
239
- * // 2. When trying to assign `PropertySubclassing` to `ExampleBaseClass`.
240
- * // This would be a feasible alternative but would likely come as a
241
- * // surprise as the subclass could have been used for quite a while
242
- * // before trying to be assigned to its superclass.
243
- * // 3. Error at the definition. This is where TypeScript has chosen to error.
244
- * // The error is unfortunately not the most intuitive but it is correct.
245
- * functionProperty: (arg: "foo" | "bar") => number;
246
- * }
247
- *
248
- * declare class MethodLikeSubclassing {
249
- * // This is unsound but by using the `ToMethod` in the parent class it's allowed.
250
- * methodLikeProperty: (arg: "foo" | "bar") => number;
251
- * }
252
- * ```
253
- *
254
- * The TypeScript FAQ explains this in a way that may either be intuitive and
255
- * explain all lingering questions or be confusing and muddle the waters.
256
- * It's also worth mentioning that it claims all function parameters work this way,
257
- * this behavior is disabled for functions in most codebases (including this one)
258
- * because of the `strictFunctionTypes` compiler flag, implicit under `strict: true`.
259
- * See: https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-function-parameters-bivariant
260
- */
261
- export type ToMethod<T extends AnyFunction> = {
262
- method(...args: Parameters<T>): ReturnType<T>;
263
- }["method"];
264
-
265
- // Deprecated types, to be removed in the first stable v12 release or at the latest v13.
266
-
267
- /**
268
- * @deprecated {@link Document.SystemType | `Document.SystemType`}.
269
- */
270
- type DocumentTypeWithTypeData = Document.SystemType;
271
-
272
- /**
273
- * @deprecated {@link Document.AnyConstructor | `Document.ConstructorDataFor`}.
274
- */
275
- export type ConstructorDataType<T extends Document.AnyConstructor> = Document.ConstructorDataFor<T>;
276
-
277
- /**
278
- * @deprecated {@link Document.AnyConstructor | `Document.AnyConstructor`}.
279
- */
280
- export type DocumentConstructor = Document.AnyConstructor;
281
-
282
- /**
283
- * @deprecated {@link Document.ToConfiguredClass | `Document.ToConfiguredClass`}.
284
- */
285
- export type ConfiguredDocumentClass<ConcreteDocument extends Document.AnyConstructor> =
286
- Document.ToConfiguredClass<ConcreteDocument>;
287
-
288
- /**
289
- * @deprecated {@link Document.ToConfiguredInstance | `Document.Configured.Instance`}.
290
- */
291
- export type ConfiguredDocumentInstance<ConcreteDocument extends Document.AnyConstructor> =
292
- Document.ToConfiguredInstance<ConcreteDocument>;
293
-
294
- /**
295
- * @deprecated {@link Document.Type | `Document.Type`}.
296
- */
297
- export type DocumentType = Document.Type;
298
-
299
- /**
300
- * @deprecated {@link Document.PlaceableType | `Document.PlaceableType`}.
301
- */
302
- export type PlaceableDocumentType = Document.PlaceableType;
303
-
304
- export type ConfiguredSheetClass<T extends Document.AnyConstructor> = GetKey<
305
- GetKey<CONFIG, T["metadata"]["name"]>,
306
- "sheetClass",
307
- T
308
- >;
309
-
310
- export type ObjectClass<T extends Document.AnyConstructor> = GetKey<
311
- GetKey<CONFIG, T["metadata"]["name"]>,
312
- "objectClass",
313
- T
314
- >;
315
-
316
- export type LayerClass<T extends Document.AnyConstructor> = GetKey<
317
- GetKey<CONFIG, T["metadata"]["name"]>,
318
- "layerClass",
319
- T
320
- >;
321
-
322
- /**
323
- * Actual document types that go in folders
324
- */
325
- export type FolderDocumentTypes = Exclude<foundry.CONST.FOLDER_DOCUMENT_TYPES, "Compendium">;
326
-
327
- export type MaybeEmpty<T extends AnyObject> =
328
- | T
329
- | {
330
- [K in keyof T]?: never;
331
- };
332
-
333
- /**
334
- * The following uses `extends object` instead of `AnyObject` to allow `O = typeof SomeClass`
335
- */
336
- export type PropertiesOfType<O extends object, T> = {
337
- [K in keyof O]: [O[K], T] extends [T, O[K]] ? K : never;
338
- }[keyof O];
339
-
340
- /**
341
- * @deprecated {@link Document.SubTypesOf | `Document.SubTypesOf`}.
342
- */
343
- export type DocumentSubTypes<T extends Document.Type> = Document.SubTypesOf<T>;
344
-
345
- /**
346
- * @deprecated {@link Document.ConfiguredClassForName | `Document.ConfiguredClassForName`}.
347
- */
348
- export type ConfiguredDocumentClassForName<Name extends Document.Type> = ConfiguredDocuments[Name];
349
-
350
- /**
351
- * @deprecated {@link Document.ConfiguredInstanceForName | `Document.ConfiguredInstanceForName`}.
352
- */
353
- export type ConfiguredDocumentInstanceForName<Name extends Document.Type> = Document.ConfiguredInstanceForName<Name>;
354
-
355
- /**
356
- * @deprecated {@link Document.ConfiguredObjectClassForName | `Document.ConfiguredObjectClassForName`}.
357
- */
358
- export type ConfiguredObjectClassForName<Name extends Document.PlaceableType> =
359
- Document.ConfiguredObjectClassForName<Name>;
360
-
361
- /**
362
- * @deprecated {@link PlaceablesLayer.ConfiguredClassForName | `PlaceablesLayer.ConfiguredClassForName`}.
363
- */
364
- export type ConfiguredLayerClassForName<Name extends Document.PlaceableType> = CONFIG[Name]["layerClass"];
365
-
366
- /**
367
- * See {@link Document.ConfiguredDataForName | `Document.ConfiguredDataForName`}.
368
- */
369
- export type ConfiguredData<Name extends string> = Document.ConfiguredDataForName<MakeConform<Name, Document.Type>>;
370
-
371
- /**
372
- * See {@link Document.ConfiguredDataForName | `Document.ConfiguredDataForName`}.
373
- */
374
- export type ConfiguredSource<Name extends string> = Document.ConfiguredDataForName<MakeConform<Name, Document.Type>>;
375
-
376
- /**
377
- * See {@link Document.ConfiguredFlagsForName | `Document.ConfiguredFlagsForName`}.
378
- */
379
- export type ConfiguredFlags<Name extends string> = Document.ConfiguredFlagsForName<MakeConform<Name, Document.Type>>;
380
-
381
- /**
382
- * @deprecated {@link Document.ToObjectFalseType | `Document.ToObjectFalseType`}.
383
- */
384
- export type ToObjectFalseType<T> = Document.ToObjectFalseType<MakeConform<T, Document.Internal.Instance.Any>>;
385
-
386
- /**
387
- * @deprecated {@link PropertyKey | `PropertyKey`}
388
- */
389
- export type AnyKey = keyof any;
390
-
391
- declare class Branded<in out BrandName extends string> {
392
- #brand: BrandName;
393
- }
394
-
395
- /**
396
- * Brands a type such that is behaves just like the input type while preventing
397
- * assignment to it. This is useful to create types that indicate a specific
398
- * invariant that the type must adhere to that a more basic type wouldn't have.
399
- *
400
- * Note: You can brand most types but due to its implementation this
401
- * helper is incompatible with `any`, `unknown`, and `never`. See "Brand Implementation"
402
- * for more details.
403
- *
404
- * For example enum members can be branded to prevent an arbitrary number from
405
- * being mistakenly used in their place:
406
- *
407
- * @example
408
- * ```ts
409
- * type NUMBER_ENUM = Brand<number, "NUMBER_ENUM">;
410
- *
411
- * const NUMBER_ENUM: {
412
- * X: NUMBER_ENUM,
413
- * Y: NUMBER_ENUM
414
- * };
415
- *
416
- * function useNumberEnum(value: NUMBER_ENUM) { ... }
417
- * usesNumberEnum(NUMBER_ENUM.X); // Works.
418
- * usesNumberEnum(1); // Error.
419
- * ```
420
- *
421
- * ### Brand Implementation
422
- *
423
- * The fundamental trick of the implementation is that it intersects the base
424
- * type with a compile-time only marker property. This marker property will not
425
- * exist on the base type and so prevents assignment just like how `{ foo: string }`
426
- * can't be assigned to `{ foo: string; bar: number }` because it's missing a property.
427
- *
428
- * A more basic implementation might look like this:
429
- *
430
- * ```ts
431
- * type Brand<BaseType, BrandName extends string> = BaseType & { brandType: BrandName };
432
- * ```
433
- *
434
- * But this has two problems:
435
- * - In theory anyone can add this `brandType` property.
436
- * - The `brandType` property is accessible and visible, e.g.
437
- * `keyof Brand<BaseType, BrandName>` would include `brandType` because it's a visible property.
438
- *
439
- * The implementation here solves both of these problems by using a private class field.
440
- * This class is unexported and so due to the way that private class properties work this
441
- * means there is no other way to create a compatible property (outside of `any`). Using a
442
- * class also has the added benefit that the type parameter can be specifically marked as
443
- * invariant for a bit of extra protection.
444
- *
445
- * This does mean that `Brand` only works with types where an intersection is meaningful.
446
- * These are the problematic types:
447
- * - `any` will become `any` still because `any & T` is still `any`. This makes `Brand` useless.
448
- * - `never` stays `never` because `never & T` is `never`. This makes `Brand` useless.
449
- * - `unknown` becomes `Branded` because `unknown & T` is `T`. This is a problem because `unknown` can be any type, e.g. `number` but `Branded<unknown, BrandName>` is always an object.
450
- *
451
- * Unfortunately there aren't really good workarounds either.
452
- */
453
- export type Brand<BaseType, BrandName extends string> = BaseType & Branded<BrandName>;
454
-
455
- /**
456
- * An at a best effort level expands a type from something complex that shows up like
457
- * `DeepPartial<{ x: { y: number } }>` in intellisense to `{ x?: { y?: number } }`.
458
- * This is useful for when you want to see what a type looks like in a more human
459
- * readable form.
460
- *
461
- * Using this type is a performance tradeoff, might increase the likelihood of
462
- * circularities, and technically in some extremely niche cases changes the type behavior.
463
- * ```@example
464
- * // The implementation of this type is outside the scope of this example.
465
- * // See UnionToIntersection.
466
- * type UnionToIntersection<U> = (U extends unknown ? (arg: U) => void : never) extends (arg: infer I) => void ? I : never;
467
- *
468
- * type ObjectIntersection = UnionToIntersection<{ x: string } | { y: number }>;
469
- * // ^ { x: string } & { y: number }
470
- *
471
- * type PrettyObjectIntersection = PrettifyType<ObjectIntersection>;
472
- * // ^ { x: string, y: number }
473
- *
474
- * function example<T extends { someProp: number } | { anotherProp: string }>(t: T) {
475
- * Object.assign(t, { a: "foo" }, {b: 2}) satisfies ObjectIntersection
476
- * Object.assign(t, { a: "foo" }, {b: 2}) satisfies PrettyObjectIntersection
477
- * // ^ Type 'T & { a: string; } & { b: number; }' does not satisfy the expected type '{ a: string; b: number; }'.
478
- * // This is an example of changing type behavior. The first line is allowed but the second errors.
479
- * // This type of situation will realistically never come up in real code because it's so contrived.
480
- * // Note that this difference only appears when generic, specifically `T extends Object | NonObject`.
481
- * // See https://github.com/microsoft/TypeScript/pull/60726 for some context.
482
- * }
483
- * ```
484
- */
485
- export type PrettifyType<T> = T extends AnyObject
486
- ? {
487
- [K in keyof T]: T[K];
488
- }
489
- : T & unknown;
490
-
491
- /**
492
- * This behaves the same as {@link PrettifyType | `PrettifyType`} except instead
493
- * of prettifying only the first level it prettifies all levels of an object. of prettifying only the first level it prettifies all levels of an object.
494
- */
495
- export type PrettifyTypeDeep<T> = T extends AnyObject
496
- ? {
497
- [K in keyof T]: PrettifyTypeDeep<T[K]>;
498
- }
499
- : T & unknown;
500
-
501
- /**
502
- * Convert a union of the form `T1 | T2 | T3 | ...` into an intersection of the form `T1 & T2 & T3 & ...`.
503
- *
504
- * ### Implementation Details
505
- *
506
- * Breaking this type down into steps evaluation begins with the expression
507
- * `U extends unknown ? ... : never`. Note that `U` is a "bare type parameter",
508
- * that is written directly as opposed to being wrapped like `U[]`. Because of
509
- * this the type is distributive.
510
- *
511
- * Distributivity means that `U extends unknown ? (arg: U) => void : never` turns the input
512
- * of the form `T1 | T2 | T3 | ...` into `((arg: T1) => void) | ((arg: T2) => void) | ((arg: T3) => void)`.
513
- * Let's call this new union `FunctionUnion`
514
- *
515
- * Finally `FunctionUnion extends (arg: infer I) => void ? I : never` is evaluated.
516
- * This results in `T1 & T2 & T3 | ...` as promised... but why? Even with distributivity
517
- * in play, normally `(T extends unknown ? F<T> : never) extends F<infer T> ? T : never`
518
- * would just be a complex way of writing `T`.
519
- *
520
- * The complete answer is fairly deep and is unlikely to make sense unless you are
521
- * already well versed in this area. In particular it lies in what happens when `F<T>`
522
- * puts `T` into a contravariant position. In this case inferring `T` back out
523
- * requires an intersection effectively because the covariant assignment rules
524
- * are flipped.
525
- *
526
- * That explanation is unlikely to have helped much and so let's run through two
527
- * examples.
528
- *
529
- * First, a refresher:
530
- * ```ts
531
- * function takesX(arg: { x: number }): number { ... }
532
- * function takesY(arg: { y: string }): string { ... }
533
- *
534
- * let output = ...;
535
- * if (Math.random() > 0.5) {
536
- * output = takesX({ x: 1 });
537
- * } else {
538
- * output = takesY({ y: "example" });
539
- * }
540
- * ```
541
- *
542
- * What is the best type for `output` in this case? Of course, it'd be `number | string`.
543
- *
544
- * What about this example?
545
- * ```ts
546
- * function takesX(arg: { x: number }): number { ... }
547
- * function takesY(arg: { y: string }): string { ... }
548
- *
549
- * let input = ...;
550
- * if (Math.random() > 0.5) {
551
- * takesX(input);
552
- * } else {
553
- * takesY(input);
554
- * }
555
- * ```
556
- *
557
- * What is the best type for `input` in this case? It might be tempting to say `{ x: number } | { y: string }`
558
- * similarly to how `output` was `number | string`. But that's not quite right. The correct type for `input` is
559
- * actually `{ x: number } & { y: string }`. The reason why this is the case is that it's unpredictable whether
560
- * `takesX` or `takesY` will be called. This means that `input` must be able to used to call both functions.
561
- *
562
- * This is analogous to asking these two questions at the type level:
563
- * ```ts
564
- * type Functions = typeof takesX | typeof takesY;
565
- * type Output = Functions extends (...args: any[]) => infer Output ? Output : never;
566
- * // ^ number | string
567
- * type Input = Functions extends (arg: infer Input) => any ? Input : never;
568
- * // ^ { x: number } & { y: string }
569
- * ```
570
- *
571
- * And if you reflect on the inciting code, `FunctionUnion extends (arg: infer I) => void ? I : never`
572
- * you'll see that it's effectively doing the same thing.
573
- *
574
- * If you want to read more see TypeScript's handbook section on
575
- * [Distributive Conditional Types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types)
576
- * for more information on distributivity. There is also a section on
577
- * [Variance](https://www.typescriptlang.org/docs/handbook/2/generics.html#variance-annotations)
578
- * in general but it unfortunately doesn't touch too much on specific details and
579
- * the emergent behavior of variance like this.
580
- */
581
- export type UnionToIntersection<U> = (U extends unknown ? (arg: U) => void : never) extends (arg: infer I) => void
582
- ? I
583
- : never;