@league-of-foundry-developers/foundry-vtt-types 13.340.0 → 13.340.1

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 (543) hide show
  1. package/README.md +6 -3
  2. package/package.json +40 -18
  3. package/src/configuration/configuration.d.mts +24 -23
  4. package/src/configuration/documents.d.mts +295 -0
  5. package/src/configuration/globals.d.mts +8 -2
  6. package/src/configuration/index.d.mts +1 -0
  7. package/src/foundry/client/apps/app.d.mts +121 -119
  8. package/src/foundry/client/apps/av/av-config.d.mts +13 -8
  9. package/src/foundry/client/apps/av/cameras.d.mts +11 -11
  10. package/src/foundry/client/apps/dice/dice-config.d.mts +22 -8
  11. package/src/foundry/client/apps/form.d.mts +112 -94
  12. package/src/foundry/client/apps/forms/actor.d.mts +22 -12
  13. package/src/foundry/client/apps/forms/adventure-exporter.d.mts +13 -8
  14. package/src/foundry/client/apps/forms/adventure-importer.d.mts +15 -7
  15. package/src/foundry/client/apps/forms/base-sheet.d.mts +14 -7
  16. package/src/foundry/client/apps/forms/card-config.d.mts +17 -9
  17. package/src/foundry/client/apps/forms/cards-config.d.mts +13 -14
  18. package/src/foundry/client/apps/forms/combat-config.d.mts +7 -7
  19. package/src/foundry/client/apps/forms/combatant-config.d.mts +4 -4
  20. package/src/foundry/client/apps/forms/default-sheets-config.d.mts +1 -1
  21. package/src/foundry/client/apps/forms/effect-config.d.mts +6 -6
  22. package/src/foundry/client/apps/forms/folder-config.d.mts +5 -5
  23. package/src/foundry/client/apps/forms/fonts.d.mts +42 -35
  24. package/src/foundry/client/apps/forms/grid-config.d.mts +11 -11
  25. package/src/foundry/client/apps/forms/image-popout.d.mts +28 -22
  26. package/src/foundry/client/apps/forms/item.d.mts +6 -6
  27. package/src/foundry/client/apps/forms/journal-page-sheet.d.mts +17 -15
  28. package/src/foundry/client/apps/forms/journal-sheet.d.mts +46 -37
  29. package/src/foundry/client/apps/forms/macro-config.d.mts +6 -6
  30. package/src/foundry/client/apps/forms/measure-template.d.mts +8 -8
  31. package/src/foundry/client/apps/forms/ownership.d.mts +5 -5
  32. package/src/foundry/client/apps/forms/playlist-config.d.mts +7 -9
  33. package/src/foundry/client/apps/forms/playlist-sound-config.d.mts +6 -6
  34. package/src/foundry/client/apps/forms/roll-table-config.d.mts +9 -10
  35. package/src/foundry/client/apps/forms/scene-config.d.mts +39 -39
  36. package/src/foundry/client/apps/forms/sheet-config.d.mts +8 -8
  37. package/src/foundry/client/apps/forms/user-config.d.mts +11 -11
  38. package/src/foundry/client/apps/hud/chatbubble.d.mts +14 -9
  39. package/src/foundry/client/apps/hud/container.d.mts +3 -3
  40. package/src/foundry/client/apps/hud/controls.d.mts +124 -84
  41. package/src/foundry/client/apps/hud/hotbar.d.mts +12 -12
  42. package/src/foundry/client/apps/hud/hud.d.mts +4 -4
  43. package/src/foundry/client/apps/hud/menu.d.mts +6 -6
  44. package/src/foundry/client/apps/hud/navigation.d.mts +11 -11
  45. package/src/foundry/client/apps/hud/pause.d.mts +7 -7
  46. package/src/foundry/client/apps/hud/players.d.mts +11 -11
  47. package/src/foundry/client/apps/i18n.d.mts +31 -27
  48. package/src/foundry/client/apps/placeables/drawing-config.d.mts +41 -33
  49. package/src/foundry/client/apps/placeables/drawing-hud.d.mts +4 -4
  50. package/src/foundry/client/apps/placeables/index.d.mts +0 -2
  51. package/src/foundry/client/apps/placeables/note-config.d.mts +27 -17
  52. package/src/foundry/client/apps/placeables/tile-config.d.mts +23 -10
  53. package/src/foundry/client/apps/placeables/tile-hud.d.mts +8 -8
  54. package/src/foundry/client/apps/placeables/token-config.d.mts +84 -63
  55. package/src/foundry/client/apps/placeables/token-hud.d.mts +10 -10
  56. package/src/foundry/client/apps/placeables/wall-config.d.mts +19 -16
  57. package/src/foundry/client/apps/sidebar/apps/chat-popout.d.mts +5 -5
  58. package/src/foundry/client/apps/sidebar/apps/client-settings.d.mts +2 -2
  59. package/src/foundry/client/apps/sidebar/apps/compendium.d.mts +13 -10
  60. package/src/foundry/client/apps/sidebar/apps/invitation-links.d.mts +3 -3
  61. package/src/foundry/client/apps/sidebar/apps/keybindings-config.d.mts +1 -1
  62. package/src/foundry/client/apps/sidebar/apps/module-management.d.mts +6 -6
  63. package/src/foundry/client/apps/sidebar/apps/permission-config.d.mts +6 -6
  64. package/src/foundry/client/apps/sidebar/apps/support-details.d.mts +33 -28
  65. package/src/foundry/client/apps/sidebar/apps/tours-management.d.mts +1 -1
  66. package/src/foundry/client/apps/sidebar/apps/world-config.d.mts +12 -9
  67. package/src/foundry/client/apps/sidebar/directory-tab-mixin.d.mts +40 -32
  68. package/src/foundry/client/apps/sidebar/document-directory.d.mts +44 -37
  69. package/src/foundry/client/apps/sidebar/package-configuration.d.mts +3 -3
  70. package/src/foundry/client/apps/sidebar/sidebar-tab.d.mts +3 -3
  71. package/src/foundry/client/apps/sidebar/sidebar.d.mts +7 -7
  72. package/src/foundry/client/apps/sidebar/tabs/actors-directory.d.mts +4 -4
  73. package/src/foundry/client/apps/sidebar/tabs/cards-directory.d.mts +4 -4
  74. package/src/foundry/client/apps/sidebar/tabs/chat-log.d.mts +34 -29
  75. package/src/foundry/client/apps/sidebar/tabs/combat-tracker.d.mts +15 -15
  76. package/src/foundry/client/apps/sidebar/tabs/compendium-directory.d.mts +21 -12
  77. package/src/foundry/client/apps/sidebar/tabs/items-directory.d.mts +4 -4
  78. package/src/foundry/client/apps/sidebar/tabs/journal-directory.d.mts +4 -4
  79. package/src/foundry/client/apps/sidebar/tabs/macros-directory.d.mts +8 -8
  80. package/src/foundry/client/apps/sidebar/tabs/playlists-directory.d.mts +21 -21
  81. package/src/foundry/client/apps/sidebar/tabs/roll-table-directory.d.mts +4 -4
  82. package/src/foundry/client/apps/sidebar/tabs/scenes-directory.d.mts +6 -6
  83. package/src/foundry/client/apps/sidebar/tabs/settings.d.mts +12 -12
  84. package/src/foundry/client/apps/templates.d.mts +2 -2
  85. package/src/foundry/client/av/clients/simplepeer.d.mts +4 -4
  86. package/src/foundry/client/av/settings.d.mts +16 -13
  87. package/src/foundry/client/config.d.mts +1982 -1823
  88. package/src/foundry/client/core/document-index.d.mts +12 -4
  89. package/src/foundry/client/core/hooks.d.mts +0 -2
  90. package/src/foundry/client/core/image.d.mts +13 -11
  91. package/src/foundry/client/core/issues.d.mts +11 -6
  92. package/src/foundry/client/core/keybindings.d.mts +3 -3
  93. package/src/foundry/client/core/nue.d.mts +1 -1
  94. package/src/foundry/client/core/packages.d.mts +393 -63
  95. package/src/foundry/client/core/settings.d.mts +34 -12
  96. package/src/foundry/client/core/socket.d.mts +2 -2
  97. package/src/foundry/client/core/sorting.d.mts +6 -6
  98. package/src/foundry/client/core/time.d.mts +6 -3
  99. package/src/foundry/client/core/tooltip.d.mts +1 -1
  100. package/src/foundry/client/core/tour.d.mts +58 -49
  101. package/src/foundry/client/core/tours.d.mts +1 -1
  102. package/src/foundry/client/core/utils.d.mts +3 -3
  103. package/src/foundry/client/core/workers.d.mts +24 -17
  104. package/src/foundry/client/data/abstract/canvas-document.d.mts +9 -15
  105. package/src/foundry/client/data/abstract/client-document.d.mts +133 -172
  106. package/src/foundry/client/data/abstract/directory-collection-mixin.d.mts +14 -36
  107. package/src/foundry/client/data/abstract/document-collection.d.mts +89 -65
  108. package/src/foundry/client/data/abstract/world-collection.d.mts +47 -53
  109. package/src/foundry/client/data/collections/actors.d.mts +24 -31
  110. package/src/foundry/client/data/collections/cards.d.mts +10 -6
  111. package/src/foundry/client/data/collections/combats.d.mts +12 -8
  112. package/src/foundry/client/data/collections/compendium-collection.d.mts +79 -66
  113. package/src/foundry/client/data/collections/compendium-folders.d.mts +6 -6
  114. package/src/foundry/client/data/collections/compendium-packs.d.mts +4 -4
  115. package/src/foundry/client/data/collections/fog.d.mts +10 -6
  116. package/src/foundry/client/data/collections/folder.d.mts +15 -10
  117. package/src/foundry/client/data/collections/items.d.mts +11 -7
  118. package/src/foundry/client/data/collections/journal.d.mts +16 -10
  119. package/src/foundry/client/data/collections/macros.d.mts +15 -22
  120. package/src/foundry/client/data/collections/messages.d.mts +14 -10
  121. package/src/foundry/client/data/collections/playlists.d.mts +12 -9
  122. package/src/foundry/client/data/collections/scenes.d.mts +19 -31
  123. package/src/foundry/client/data/collections/settings.d.mts +10 -6
  124. package/src/foundry/client/data/collections/tables.d.mts +11 -7
  125. package/src/foundry/client/data/collections/users.d.mts +14 -11
  126. package/src/foundry/client/data/documents/active-effect.d.mts +652 -88
  127. package/src/foundry/client/data/documents/actor-delta.d.mts +672 -28
  128. package/src/foundry/client/data/documents/actor.d.mts +722 -60
  129. package/src/foundry/client/data/documents/adventure.d.mts +482 -49
  130. package/src/foundry/client/data/documents/ambient-light.d.mts +426 -21
  131. package/src/foundry/client/data/documents/ambient-sound.d.mts +474 -15
  132. package/src/foundry/client/data/documents/card.d.mts +570 -39
  133. package/src/foundry/client/data/documents/cards.d.mts +742 -78
  134. package/src/foundry/client/data/documents/chat-message.d.mts +578 -45
  135. package/src/foundry/client/data/documents/combat.d.mts +701 -71
  136. package/src/foundry/client/data/documents/combatant.d.mts +510 -28
  137. package/src/foundry/client/data/documents/drawing.d.mts +543 -16
  138. package/src/foundry/client/data/documents/fog-exploration.d.mts +413 -27
  139. package/src/foundry/client/data/documents/folder.d.mts +461 -40
  140. package/src/foundry/client/data/documents/item.d.mts +679 -25
  141. package/src/foundry/client/data/documents/journal-entry-page.d.mts +587 -21
  142. package/src/foundry/client/data/documents/journal-entry.d.mts +621 -20
  143. package/src/foundry/client/data/documents/macro.d.mts +530 -25
  144. package/src/foundry/client/data/documents/measured-template.d.mts +480 -16
  145. package/src/foundry/client/data/documents/note.d.mts +495 -18
  146. package/src/foundry/client/data/documents/playlist-sound.d.mts +429 -27
  147. package/src/foundry/client/data/documents/playlist.d.mts +666 -75
  148. package/src/foundry/client/data/documents/region-behavior.d.mts +468 -38
  149. package/src/foundry/client/data/documents/region.d.mts +661 -35
  150. package/src/foundry/client/data/documents/scene.d.mts +986 -149
  151. package/src/foundry/client/data/documents/setting.d.mts +397 -15
  152. package/src/foundry/client/data/documents/table-result.d.mts +479 -17
  153. package/src/foundry/client/data/documents/table.d.mts +663 -80
  154. package/src/foundry/client/data/documents/tile.d.mts +502 -16
  155. package/src/foundry/client/data/documents/token.d.mts +1114 -90
  156. package/src/foundry/client/data/documents/user.d.mts +495 -27
  157. package/src/foundry/client/data/documents/wall.d.mts +550 -15
  158. package/src/foundry/client/game.d.mts +58 -92
  159. package/src/foundry/client/head.d.mts +5 -6
  160. package/src/foundry/client/hooks.d.mts +237 -221
  161. package/src/foundry/client/pixi/board.d.mts +95 -89
  162. package/src/foundry/client/pixi/core/containers/base-canvas-group.d.mts +6 -5
  163. package/src/foundry/client/pixi/core/containers/cached-container.d.mts +5 -5
  164. package/src/foundry/client/pixi/core/containers/full-canvas-container.d.mts +2 -2
  165. package/src/foundry/client/pixi/core/containers/point-source-mesh.d.mts +3 -3
  166. package/src/foundry/client/pixi/core/containers/quad-mesh.d.mts +3 -3
  167. package/src/foundry/client/pixi/core/containers/quadtree.d.mts +23 -21
  168. package/src/foundry/client/pixi/core/containers/sprite-mesh.d.mts +5 -5
  169. package/src/foundry/client/pixi/core/containers/unbound-container.d.mts +5 -5
  170. package/src/foundry/client/pixi/core/interaction/canvas-animation.d.mts +57 -51
  171. package/src/foundry/client/pixi/core/interaction/control-icon.d.mts +3 -3
  172. package/src/foundry/client/pixi/core/interaction/mouse-handler.d.mts +7 -7
  173. package/src/foundry/client/pixi/core/interaction/ping.d.mts +19 -11
  174. package/src/foundry/client/pixi/core/interaction/pings/chevron.d.mts +7 -2
  175. package/src/foundry/client/pixi/core/interaction/pings/pulse.d.mts +29 -23
  176. package/src/foundry/client/pixi/core/interaction/render-flags.d.mts +83 -38
  177. package/src/foundry/client/pixi/core/interaction/resize-handle.d.mts +3 -3
  178. package/src/foundry/client/pixi/core/interaction/targets.d.mts +9 -9
  179. package/src/foundry/client/pixi/core/loader.d.mts +8 -8
  180. package/src/foundry/client/pixi/core/shapes/limited-angle-polygon.d.mts +9 -4
  181. package/src/foundry/client/pixi/core/shapes/polygon-mesher.d.mts +3 -3
  182. package/src/foundry/client/pixi/core/shapes/precise-text.d.mts +3 -3
  183. package/src/foundry/client/pixi/core/shapes/ray.d.mts +23 -17
  184. package/src/foundry/client/pixi/core/shapes/source-polygon.d.mts +19 -14
  185. package/src/foundry/client/pixi/extensions/circle.d.mts +1 -1
  186. package/src/foundry/client/pixi/extensions/observable-transform.d.mts +3 -3
  187. package/src/foundry/client/pixi/groups/effects.d.mts +4 -4
  188. package/src/foundry/client/pixi/groups/environment.d.mts +5 -5
  189. package/src/foundry/client/pixi/groups/hidden.d.mts +3 -3
  190. package/src/foundry/client/pixi/groups/interface.d.mts +6 -6
  191. package/src/foundry/client/pixi/groups/overlay.d.mts +3 -3
  192. package/src/foundry/client/pixi/groups/primary.d.mts +11 -11
  193. package/src/foundry/client/pixi/groups/rendered.d.mts +3 -3
  194. package/src/foundry/client/pixi/layers/base/canvas-layer.d.mts +3 -3
  195. package/src/foundry/client/pixi/layers/base/interaction-layer.d.mts +13 -13
  196. package/src/foundry/client/pixi/layers/base/placeables-layer.d.mts +279 -233
  197. package/src/foundry/client/pixi/layers/controls/cursor.d.mts +17 -8
  198. package/src/foundry/client/pixi/layers/controls/door.d.mts +26 -14
  199. package/src/foundry/client/pixi/layers/controls/layer.d.mts +89 -79
  200. package/src/foundry/client/pixi/layers/controls/ruler.d.mts +121 -96
  201. package/src/foundry/client/pixi/layers/effects/background-effects.d.mts +4 -5
  202. package/src/foundry/client/pixi/layers/effects/coloration-effects.d.mts +6 -4
  203. package/src/foundry/client/pixi/layers/effects/darkness-effects.d.mts +7 -4
  204. package/src/foundry/client/pixi/layers/effects/illumination-effects.d.mts +19 -16
  205. package/src/foundry/client/pixi/layers/effects/visibility.d.mts +101 -84
  206. package/src/foundry/client/pixi/layers/effects/weather/particles/effect.d.mts +13 -4
  207. package/src/foundry/client/pixi/layers/effects/weather/particles/leaves.d.mts +31 -2
  208. package/src/foundry/client/pixi/layers/effects/weather-effects.d.mts +134 -59
  209. package/src/foundry/client/pixi/layers/grid/highlight.d.mts +13 -3
  210. package/src/foundry/client/pixi/layers/grid/layer.d.mts +89 -87
  211. package/src/foundry/client/pixi/layers/grid/mesh.d.mts +36 -15
  212. package/src/foundry/client/pixi/layers/masks/depth.d.mts +3 -3
  213. package/src/foundry/client/pixi/layers/masks/occlusion.d.mts +4 -4
  214. package/src/foundry/client/pixi/layers/masks/vision.d.mts +6 -6
  215. package/src/foundry/client/pixi/layers/placeables/drawings.d.mts +15 -11
  216. package/src/foundry/client/pixi/layers/placeables/lighting.d.mts +11 -10
  217. package/src/foundry/client/pixi/layers/placeables/notes.d.mts +47 -28
  218. package/src/foundry/client/pixi/layers/placeables/regions.d.mts +25 -12
  219. package/src/foundry/client/pixi/layers/placeables/sounds.d.mts +81 -63
  220. package/src/foundry/client/pixi/layers/placeables/templates.d.mts +10 -11
  221. package/src/foundry/client/pixi/layers/placeables/tiles.d.mts +28 -17
  222. package/src/foundry/client/pixi/layers/placeables/tokens.d.mts +67 -46
  223. package/src/foundry/client/pixi/layers/placeables/walls.d.mts +50 -51
  224. package/src/foundry/client/pixi/perception/clockwise-sweep.d.mts +22 -16
  225. package/src/foundry/client/pixi/perception/detection-mode.d.mts +123 -51
  226. package/src/foundry/client/pixi/perception/fog.d.mts +34 -19
  227. package/src/foundry/client/pixi/perception/perception-manager.d.mts +137 -137
  228. package/src/foundry/client/pixi/perception/vision-mode.d.mts +92 -67
  229. package/src/foundry/client/pixi/perception/weiler-atherton-clipping.d.mts +3 -3
  230. package/src/foundry/client/pixi/placeable.d.mts +241 -146
  231. package/src/foundry/client/pixi/placeables/drawing.d.mts +260 -134
  232. package/src/foundry/client/pixi/placeables/light.d.mts +204 -66
  233. package/src/foundry/client/pixi/placeables/note.d.mts +150 -55
  234. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-canvas-object.d.mts +7 -6
  235. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-graphics.d.mts +3 -3
  236. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-occludable-object.d.mts +2 -2
  237. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-sprite-mesh.d.mts +4 -4
  238. package/src/foundry/client/pixi/placeables/region.d.mts +219 -110
  239. package/src/foundry/client/pixi/placeables/sound.d.mts +211 -68
  240. package/src/foundry/client/pixi/placeables/template.d.mts +186 -100
  241. package/src/foundry/client/pixi/placeables/tile.d.mts +211 -142
  242. package/src/foundry/client/pixi/placeables/token.d.mts +911 -568
  243. package/src/foundry/client/pixi/placeables/wall.d.mts +253 -130
  244. package/src/foundry/client/pixi/webgl/extensions/batch-renderer.d.mts +27 -5
  245. package/src/foundry/client/pixi/webgl/extensions/batch-shader-generator.d.mts +3 -3
  246. package/src/foundry/client/pixi/webgl/helpers/framebuffer-snapshot.d.mts +3 -3
  247. package/src/foundry/client/pixi/webgl/helpers/smooth-noise.d.mts +13 -5
  248. package/src/foundry/client/pixi/webgl/helpers/texture-extractor.d.mts +6 -6
  249. package/src/foundry/client/pixi/webgl/shaders/base-shader-mixin.d.mts +2 -2
  250. package/src/foundry/client/pixi/webgl/shaders/base-shader.d.mts +5 -5
  251. package/src/foundry/client/pixi/webgl/shaders/filters/base-filter.d.mts +4 -4
  252. package/src/foundry/client/pixi/webgl/shaders/filters/base-mask-filter.d.mts +3 -3
  253. package/src/foundry/client/pixi/webgl/shaders/filters/blur.d.mts +5 -5
  254. package/src/foundry/client/pixi/webgl/shaders/filters/effects-masking.d.mts +6 -3
  255. package/src/foundry/client/pixi/webgl/shaders/filters/environment.d.mts +3 -3
  256. package/src/foundry/client/pixi/webgl/shaders/filters/glow-overlay.d.mts +4 -4
  257. package/src/foundry/client/pixi/webgl/shaders/filters/invisibility.d.mts +3 -3
  258. package/src/foundry/client/pixi/webgl/shaders/filters/outline-overlay.d.mts +4 -4
  259. package/src/foundry/client/pixi/webgl/shaders/filters/transition.d.mts +6 -6
  260. package/src/foundry/client/pixi/webgl/shaders/filters/visibility.d.mts +8 -5
  261. package/src/foundry/client/pixi/webgl/shaders/filters/vision-mask-filter.d.mts +3 -3
  262. package/src/foundry/client/pixi/webgl/shaders/filters/void.d.mts +3 -3
  263. package/src/foundry/client/pixi/webgl/shaders/filters/weather-occlusion-masks.d.mts +4 -4
  264. package/src/foundry/client/pixi/webgl/shaders/fragment-channel-mixin.d.mts +1 -1
  265. package/src/foundry/client/pixi/webgl/shaders/grid/grid.d.mts +4 -4
  266. package/src/foundry/client/pixi/webgl/shaders/lighting/background-lighting.d.mts +3 -3
  267. package/src/foundry/client/pixi/webgl/shaders/lighting/base-lighting.d.mts +3 -3
  268. package/src/foundry/client/pixi/webgl/shaders/lighting/coloration-lighting.d.mts +3 -3
  269. package/src/foundry/client/pixi/webgl/shaders/lighting/darkness-lighting.d.mts +3 -3
  270. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/bewitching-wave.d.mts +5 -5
  271. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/black-hole.d.mts +3 -3
  272. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/chroma.d.mts +3 -3
  273. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/emanation.d.mts +3 -3
  274. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/energy-field.d.mts +3 -3
  275. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fairy-light.d.mts +6 -6
  276. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/flame.d.mts +5 -5
  277. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fog.d.mts +3 -3
  278. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/force-grid.d.mts +3 -3
  279. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/ghost-light.d.mts +5 -5
  280. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/hexa-dome.d.mts +3 -3
  281. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/light-dome.d.mts +3 -3
  282. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/magical-gloom.d.mts +3 -3
  283. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/pulse.d.mts +5 -5
  284. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/radial-rainbow.d.mts +3 -3
  285. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/revolving-light.d.mts +3 -3
  286. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/roiling-mass.d.mts +3 -3
  287. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/siren-light.d.mts +5 -5
  288. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/smoke-patch.d.mts +6 -5
  289. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/star-light.d.mts +3 -3
  290. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/sunburst.d.mts +5 -5
  291. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/swirling-rainbow.d.mts +4 -3
  292. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/torch.d.mts +5 -5
  293. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/vortex.d.mts +5 -5
  294. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/wave.d.mts +5 -5
  295. package/src/foundry/client/pixi/webgl/shaders/lighting/illumination-lighting.d.mts +3 -3
  296. package/src/foundry/client/pixi/webgl/shaders/region/adjust-darkness-level.d.mts +7 -7
  297. package/src/foundry/client/pixi/webgl/shaders/region/base.d.mts +4 -4
  298. package/src/foundry/client/pixi/webgl/shaders/region/highlight.d.mts +3 -3
  299. package/src/foundry/client/pixi/webgl/shaders/samplers/base-sampler.d.mts +4 -4
  300. package/src/foundry/client/pixi/webgl/shaders/samplers/baseline-illumination.d.mts +3 -3
  301. package/src/foundry/client/pixi/webgl/shaders/samplers/color-adjustment.d.mts +5 -5
  302. package/src/foundry/client/pixi/webgl/shaders/samplers/depth.d.mts +3 -3
  303. package/src/foundry/client/pixi/webgl/shaders/samplers/fog-of-war.d.mts +3 -3
  304. package/src/foundry/client/pixi/webgl/shaders/samplers/occlusion.d.mts +3 -3
  305. package/src/foundry/client/pixi/webgl/shaders/samplers/primary.d.mts +4 -4
  306. package/src/foundry/client/pixi/webgl/shaders/samplers/token-ring.d.mts +4 -6
  307. package/src/foundry/client/pixi/webgl/shaders/vision/background-vision.d.mts +3 -3
  308. package/src/foundry/client/pixi/webgl/shaders/vision/base-vision.d.mts +3 -3
  309. package/src/foundry/client/pixi/webgl/shaders/vision/coloration-vision.d.mts +3 -3
  310. package/src/foundry/client/pixi/webgl/shaders/vision/effects/amplification.d.mts +3 -3
  311. package/src/foundry/client/pixi/webgl/shaders/vision/effects/wave.d.mts +5 -5
  312. package/src/foundry/client/pixi/webgl/shaders/vision/illumination-vision.d.mts +3 -3
  313. package/src/foundry/client/pixi/webgl/shaders/weather/base-weather.d.mts +14 -15
  314. package/src/foundry/client/pixi/webgl/shaders/weather/effect.d.mts +20 -27
  315. package/src/foundry/client/pixi/webgl/shaders/weather/fog.d.mts +5 -5
  316. package/src/foundry/client/pixi/webgl/shaders/weather/rain.d.mts +5 -5
  317. package/src/foundry/client/pixi/webgl/shaders/weather/snow.d.mts +5 -5
  318. package/src/foundry/client/pixi/workers/texture-worker.d.mts +5 -5
  319. package/src/foundry/client/tours/setup-tour.d.mts +15 -10
  320. package/src/foundry/client/ui/dialog.d.mts +3 -3
  321. package/src/foundry/client/ui/dragdrop.d.mts +33 -27
  322. package/src/foundry/client/ui/editor.d.mts +29 -21
  323. package/src/foundry/client/ui/filepicker.d.mts +42 -37
  324. package/src/foundry/client/ui/filter.d.mts +60 -48
  325. package/src/foundry/client/ui/forms.d.mts +22 -22
  326. package/src/foundry/client/ui/prosemirror.d.mts +15 -7
  327. package/src/foundry/client/ui/secrets.d.mts +43 -28
  328. package/src/foundry/client/ui/tabs.d.mts +40 -33
  329. package/src/foundry/client-esm/_module.d.mts +5 -5
  330. package/src/foundry/client-esm/_types.d.mts +2 -1
  331. package/src/foundry/client-esm/applications/api/application.d.mts +93 -31
  332. package/src/foundry/client-esm/applications/api/dialog.d.mts +23 -23
  333. package/src/foundry/client-esm/applications/api/document-sheet.d.mts +85 -32
  334. package/src/foundry/client-esm/applications/api/handlebars-application.d.mts +1 -1
  335. package/src/foundry/client-esm/applications/apps/av/camera-popout.d.mts +1 -1
  336. package/src/foundry/client-esm/applications/apps/av/cameras.d.mts +2 -2
  337. package/src/foundry/client-esm/applications/apps/compendium-art-config.d.mts +4 -5
  338. package/src/foundry/client-esm/applications/apps/file-picker.d.mts +2 -2
  339. package/src/foundry/client-esm/applications/apps/grid-config.d.mts +3 -3
  340. package/src/foundry/client-esm/applications/apps/image-popout.d.mts +1 -1
  341. package/src/foundry/client-esm/applications/apps/permission-config.d.mts +1 -1
  342. package/src/foundry/client-esm/applications/dice/roll-resolver.d.mts +4 -4
  343. package/src/foundry/client-esm/applications/elements/file-picker.d.mts +1 -1
  344. package/src/foundry/client-esm/applications/elements/prosemirror-editor.d.mts +1 -1
  345. package/src/foundry/client-esm/applications/hud/drawing-hud.d.mts +1 -1
  346. package/src/foundry/client-esm/applications/hud/tile-hud.d.mts +1 -1
  347. package/src/foundry/client-esm/applications/hud/token-hud.d.mts +1 -1
  348. package/src/foundry/client-esm/applications/sheets/active-effect-config.d.mts +3 -3
  349. package/src/foundry/client-esm/applications/sheets/actor-sheet.d.mts +2 -2
  350. package/src/foundry/client-esm/applications/sheets/adventure-exporter.d.mts +3 -3
  351. package/src/foundry/client-esm/applications/sheets/adventure-importer.d.mts +3 -3
  352. package/src/foundry/client-esm/applications/sheets/ambient-light-config.d.mts +5 -5
  353. package/src/foundry/client-esm/applications/sheets/ambient-sound-config.d.mts +4 -4
  354. package/src/foundry/client-esm/applications/sheets/card-config.d.mts +3 -3
  355. package/src/foundry/client-esm/applications/sheets/cards-config.d.mts +2 -2
  356. package/src/foundry/client-esm/applications/sheets/combatant-config.d.mts +3 -3
  357. package/src/foundry/client-esm/applications/sheets/drawing-config.d.mts +3 -3
  358. package/src/foundry/client-esm/applications/sheets/folder-config.d.mts +3 -3
  359. package/src/foundry/client-esm/applications/sheets/item-sheet.d.mts +2 -2
  360. package/src/foundry/client-esm/applications/sheets/journal/journal-entry-category-config.d.mts +3 -3
  361. package/src/foundry/client-esm/applications/sheets/journal/journal-entry-page-sheet.d.mts +3 -3
  362. package/src/foundry/client-esm/applications/sheets/journal/journal-entry-sheet.d.mts +3 -3
  363. package/src/foundry/client-esm/applications/sheets/macro-config.d.mts +3 -3
  364. package/src/foundry/client-esm/applications/sheets/note-config.d.mts +3 -3
  365. package/src/foundry/client-esm/applications/sheets/playlist-config.d.mts +3 -3
  366. package/src/foundry/client-esm/applications/sheets/playlist-sound-config.d.mts +3 -3
  367. package/src/foundry/client-esm/applications/sheets/region-behavior-config.d.mts +3 -3
  368. package/src/foundry/client-esm/applications/sheets/region-config.d.mts +3 -3
  369. package/src/foundry/client-esm/applications/sheets/roll-table-config.d.mts +3 -3
  370. package/src/foundry/client-esm/applications/sheets/roll-table-sheet.d.mts +3 -3
  371. package/src/foundry/client-esm/applications/sheets/scene-config.d.mts +3 -3
  372. package/src/foundry/client-esm/applications/sheets/table-result-config.d.mts +3 -3
  373. package/src/foundry/client-esm/applications/sheets/template-config.d.mts +3 -3
  374. package/src/foundry/client-esm/applications/sheets/tile-config.d.mts +3 -3
  375. package/src/foundry/client-esm/applications/sheets/token/mixin.d.mts +1 -0
  376. package/src/foundry/client-esm/applications/sheets/token/token-config.d.mts +3 -3
  377. package/src/foundry/client-esm/applications/sheets/user-config.d.mts +4 -4
  378. package/src/foundry/client-esm/applications/sheets/wall-config.d.mts +3 -3
  379. package/src/foundry/client-esm/applications/sidebar/apps/chat-popout.d.mts +1 -1
  380. package/src/foundry/client-esm/applications/sidebar/sidebar-tab.d.mts +2 -2
  381. package/src/foundry/client-esm/applications/sidebar/tabs/actor-directory.d.mts +1 -1
  382. package/src/foundry/client-esm/applications/sidebar/tabs/cards-directory.d.mts +1 -1
  383. package/src/foundry/client-esm/applications/sidebar/tabs/combat-tracker.d.mts +242 -1
  384. package/src/foundry/client-esm/applications/sidebar/tabs/item-directory.d.mts +1 -1
  385. package/src/foundry/client-esm/applications/sidebar/tabs/journal-directory.d.mts +1 -1
  386. package/src/foundry/client-esm/applications/sidebar/tabs/macro-directory.d.mts +1 -1
  387. package/src/foundry/client-esm/applications/sidebar/tabs/playlist-directory.d.mts +1 -1
  388. package/src/foundry/client-esm/applications/sidebar/tabs/roll-table-directory.d.mts +1 -1
  389. package/src/foundry/client-esm/applications/sidebar/tabs/scene-directory.d.mts +1 -1
  390. package/src/foundry/client-esm/applications/ui/region-legend.d.mts +2 -2
  391. package/src/foundry/client-esm/applications/ux/context-menu.d.mts +56 -36
  392. package/src/foundry/client-esm/audio/_types.d.mts +2 -0
  393. package/src/foundry/client-esm/audio/biquad.d.mts +76 -26
  394. package/src/foundry/client-esm/audio/cache.d.mts +31 -20
  395. package/src/foundry/client-esm/audio/convolver.d.mts +47 -25
  396. package/src/foundry/client-esm/audio/helper.d.mts +124 -80
  397. package/src/foundry/client-esm/audio/sound.d.mts +202 -97
  398. package/src/foundry/client-esm/audio/timeout.d.mts +28 -12
  399. package/src/foundry/client-esm/canvas/edges/collision.d.mts +12 -4
  400. package/src/foundry/client-esm/canvas/edges/edge.d.mts +13 -8
  401. package/src/foundry/client-esm/canvas/edges/edges.d.mts +3 -2
  402. package/src/foundry/client-esm/canvas/edges/vertex.d.mts +12 -10
  403. package/src/foundry/client-esm/canvas/regions/geometry.d.mts +14 -7
  404. package/src/foundry/client-esm/canvas/regions/mesh.d.mts +25 -14
  405. package/src/foundry/client-esm/canvas/regions/polygon-tree.d.mts +50 -19
  406. package/src/foundry/client-esm/canvas/regions/shape.d.mts +45 -34
  407. package/src/foundry/client-esm/canvas/scene-manager.d.mts +7 -6
  408. package/src/foundry/client-esm/canvas/smaa/blend.d.mts +14 -3
  409. package/src/foundry/client-esm/canvas/smaa/edges.d.mts +25 -3
  410. package/src/foundry/client-esm/canvas/smaa/smaa.d.mts +119 -20
  411. package/src/foundry/client-esm/canvas/smaa/weights.d.mts +26 -3
  412. package/src/foundry/client-esm/canvas/sources/base-effect-source.d.mts +69 -39
  413. package/src/foundry/client-esm/canvas/sources/base-light-source.d.mts +66 -40
  414. package/src/foundry/client-esm/canvas/sources/global-light-source.d.mts +78 -19
  415. package/src/foundry/client-esm/canvas/sources/point-darkness-source.d.mts +37 -20
  416. package/src/foundry/client-esm/canvas/sources/point-effect-source.d.mts +39 -20
  417. package/src/foundry/client-esm/canvas/sources/point-light-source.d.mts +41 -12
  418. package/src/foundry/client-esm/canvas/sources/point-movement-source.d.mts +15 -4
  419. package/src/foundry/client-esm/canvas/sources/point-sound-source.d.mts +29 -14
  420. package/src/foundry/client-esm/canvas/sources/point-vision-source.d.mts +84 -39
  421. package/src/foundry/client-esm/canvas/sources/rendered-effect-source.d.mts +115 -41
  422. package/src/foundry/client-esm/canvas/tokens/ring-config.d.mts +83 -21
  423. package/src/foundry/client-esm/canvas/tokens/ring-data.d.mts +66 -93
  424. package/src/foundry/client-esm/canvas/tokens/ring.d.mts +146 -51
  425. package/src/foundry/client-esm/client.d.mts +16 -16
  426. package/src/foundry/client-esm/data/_module.d.mts +1 -1
  427. package/src/foundry/client-esm/data/calendar.d.mts +26 -39
  428. package/src/foundry/client-esm/data/client-backend.d.mts +6 -6
  429. package/src/foundry/client-esm/data/region-behaviors/adjust-darkness-level.d.mts +1 -1
  430. package/src/foundry/client-esm/data/region-behaviors/base.d.mts +5 -5
  431. package/src/foundry/client-esm/data/region-behaviors/display-scrolling-text.d.mts +2 -2
  432. package/src/foundry/client-esm/data/terrain-data.d.mts +1 -1
  433. package/src/foundry/client-esm/dice/parser.d.mts +5 -27
  434. package/src/foundry/client-esm/dice/roll.d.mts +63 -80
  435. package/src/foundry/client-esm/dice/terms/coin.d.mts +4 -8
  436. package/src/foundry/client-esm/dice/terms/dice.d.mts +85 -64
  437. package/src/foundry/client-esm/dice/terms/die.d.mts +7 -7
  438. package/src/foundry/client-esm/dice/terms/fate.d.mts +5 -5
  439. package/src/foundry/client-esm/dice/terms/function.d.mts +13 -16
  440. package/src/foundry/client-esm/dice/terms/numeric.d.mts +2 -4
  441. package/src/foundry/client-esm/dice/terms/operator.d.mts +1 -1
  442. package/src/foundry/client-esm/dice/terms/parenthetical.d.mts +8 -9
  443. package/src/foundry/client-esm/dice/terms/pool.d.mts +13 -28
  444. package/src/foundry/client-esm/dice/terms/string.d.mts +3 -3
  445. package/src/foundry/client-esm/dice/terms/term.d.mts +10 -5
  446. package/src/foundry/client-esm/dice/twister.d.mts +3 -3
  447. package/src/foundry/client-esm/documents/_module.d.mts +1 -1
  448. package/src/foundry/client-esm/helpers/_types.d.mts +12 -46
  449. package/src/foundry/client-esm/helpers/compendium-art.d.mts +57 -4
  450. package/src/foundry/client-esm/packages/_module.d.mts +1 -1
  451. package/src/foundry/client-esm/packages/_types.d.mts +2 -0
  452. package/src/foundry/client-esm/utils/_module.d.mts +1 -1
  453. package/src/foundry/client-esm/utils/_types.d.mts +2 -1
  454. package/src/foundry/common/_types.d.mts +1 -1
  455. package/src/foundry/common/abstract/_module.d.mts +1 -0
  456. package/src/foundry/common/abstract/_types.d.mts +60 -54
  457. package/src/foundry/common/abstract/backend.d.mts +28 -16
  458. package/src/foundry/common/abstract/data.d.mts +133 -116
  459. package/src/foundry/common/abstract/document.d.mts +1233 -440
  460. package/src/foundry/common/abstract/embedded-collection.d.mts +2 -2
  461. package/src/foundry/common/abstract/singleton-collection.d.mts +1 -1
  462. package/src/foundry/common/abstract/type-data.d.mts +35 -43
  463. package/src/foundry/common/config.d.mts +3 -3
  464. package/src/foundry/common/constants.d.mts +27 -26
  465. package/src/foundry/common/data/_types.d.mts +2 -0
  466. package/src/foundry/common/data/data.d.mts +189 -87
  467. package/src/foundry/common/data/fields.d.mts +579 -258
  468. package/src/foundry/common/data/validation-failure.d.mts +9 -4
  469. package/src/foundry/common/documents/_types.d.mts +16 -9
  470. package/src/foundry/common/documents/active-effect.d.mts +280 -180
  471. package/src/foundry/common/documents/actor-delta.d.mts +317 -70
  472. package/src/foundry/common/documents/actor.d.mts +304 -103
  473. package/src/foundry/common/documents/adventure.d.mts +254 -140
  474. package/src/foundry/common/documents/ambient-light.d.mts +267 -76
  475. package/src/foundry/common/documents/ambient-sound.d.mts +267 -110
  476. package/src/foundry/common/documents/card.d.mts +267 -176
  477. package/src/foundry/common/documents/cards.d.mts +299 -128
  478. package/src/foundry/common/documents/chat-message.d.mts +276 -160
  479. package/src/foundry/common/documents/combat.d.mts +300 -91
  480. package/src/foundry/common/documents/combatant.d.mts +283 -88
  481. package/src/foundry/common/documents/drawing.d.mts +286 -207
  482. package/src/foundry/common/documents/fog-exploration.d.mts +258 -72
  483. package/src/foundry/common/documents/folder.d.mts +248 -85
  484. package/src/foundry/common/documents/item.d.mts +305 -101
  485. package/src/foundry/common/documents/journal-entry-page.d.mts +279 -190
  486. package/src/foundry/common/documents/journal-entry.d.mts +294 -70
  487. package/src/foundry/common/documents/macro.d.mts +254 -134
  488. package/src/foundry/common/documents/measured-template.d.mts +293 -137
  489. package/src/foundry/common/documents/note.d.mts +274 -151
  490. package/src/foundry/common/documents/playlist-sound.d.mts +260 -96
  491. package/src/foundry/common/documents/playlist.d.mts +279 -122
  492. package/src/foundry/common/documents/region-behavior.d.mts +305 -64
  493. package/src/foundry/common/documents/region.d.mts +309 -90
  494. package/src/foundry/common/documents/roll-table.d.mts +286 -104
  495. package/src/foundry/common/documents/scene.d.mts +276 -344
  496. package/src/foundry/common/documents/setting.d.mts +229 -55
  497. package/src/foundry/common/documents/table-result.d.mts +267 -96
  498. package/src/foundry/common/documents/tile.d.mts +301 -172
  499. package/src/foundry/common/documents/token.d.mts +350 -452
  500. package/src/foundry/common/documents/user.d.mts +256 -146
  501. package/src/foundry/common/documents/wall.d.mts +272 -157
  502. package/src/foundry/common/grid/_types.d.mts +2 -0
  503. package/src/foundry/common/grid/base.d.mts +58 -37
  504. package/src/foundry/common/grid/hexagonal.d.mts +19 -19
  505. package/src/foundry/common/grid/square.d.mts +1 -1
  506. package/src/foundry/common/packages/_module.d.mts +5 -5
  507. package/src/foundry/common/packages/_types.d.mts +2 -0
  508. package/src/foundry/common/packages/base-module.d.mts +6 -24
  509. package/src/foundry/common/packages/base-package.d.mts +18 -16
  510. package/src/foundry/common/packages/base-system.d.mts +6 -78
  511. package/src/foundry/common/packages/base-world.d.mts +7 -60
  512. package/src/foundry/common/packages/sub-types.d.mts +1 -1
  513. package/src/foundry/common/primitives/array.d.mts +3 -3
  514. package/src/foundry/common/primitives/math.d.mts +7 -1
  515. package/src/foundry/common/primitives/number.d.mts +1 -1
  516. package/src/foundry/common/primitives/set.d.mts +17 -14
  517. package/src/foundry/common/prosemirror/_types.d.mts +2 -0
  518. package/src/foundry/common/prosemirror/dropdown.d.mts +1 -1
  519. package/src/foundry/common/prosemirror/highlight-matches-plugin.d.mts +1 -1
  520. package/src/foundry/common/prosemirror/menu.d.mts +3 -3
  521. package/src/foundry/common/prosemirror/plugin.d.mts +1 -1
  522. package/src/foundry/common/prosemirror/schema/index.d.mts +0 -1
  523. package/src/foundry/common/prosemirror/util.d.mts +1 -1
  524. package/src/foundry/common/utils/bitmask.d.mts +4 -1
  525. package/src/foundry/common/utils/collection.d.mts +59 -24
  526. package/src/foundry/common/utils/event-emitter.d.mts +46 -19
  527. package/src/foundry/common/utils/helpers.d.mts +13 -13
  528. package/src/foundry/common/utils/http.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/tsconfig.json +1 -5
  532. package/src/types/augments/pixi.d.mts +28 -28
  533. package/src/types/config.d.mts +12 -12
  534. package/src/types/documentConfiguration.d.mts +282 -597
  535. package/src/types/lib.d.mts +4 -4
  536. package/src/types/workers/image-compressor.d.mts +1 -1
  537. package/src/utils/index.d.mts +255 -60
  538. package/tsconfig.json +29 -0
  539. package/tsconfig.main.json +8 -0
  540. package/tsconfig.miscellaneous.json +16 -0
  541. package/src/foundry/client/apps/placeables/light-config.d.mts +0 -100
  542. package/src/foundry/client/apps/placeables/sound-config.d.mts +0 -44
  543. package/src/foundry/common/documents/module.d.mts +0 -35
@@ -1,12 +1,12 @@
1
- export {};
1
+ import type { Identity } from "fvtt-types/utils";
2
2
 
3
3
  declare global {
4
4
  namespace AudioNode {
5
- type Any = AnyAudioNode;
6
- type AnyConstructor = typeof AnyAudioNode;
5
+ interface Any extends AnyAudioNode {}
6
+ interface AnyConstructor extends Identity<typeof AnyAudioNode> {}
7
7
  }
8
8
  }
9
9
 
10
10
  declare abstract class AnyAudioNode extends AudioNode {
11
- constructor(arg0: never, ...args: never[]);
11
+ constructor(...args: never);
12
12
  }
@@ -1,4 +1,4 @@
1
- import type { EmptyObject, InexactPartial } from "../../utils/index.d.mts";
1
+ import type { EmptyObject, InexactPartial } from "fvtt-types/utils";
2
2
 
3
3
  export declare const FORMATS: {
4
4
  RED: typeof PIXI.FORMATS.RED;
@@ -1,12 +1,15 @@
1
1
  import type { Document } from "../foundry/common/abstract/_module.d.mts";
2
2
 
3
- type ConfiguredModuleData<Name extends string> = Name extends keyof ModuleConfig ? ModuleConfig[Name] : EmptyObject;
3
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
4
+ type ConfiguredModuleData<Name extends string> = Name extends keyof ModuleConfig ? ModuleConfig[Name] : {};
4
5
 
5
6
  /**
6
7
  * This type exists due to https://github.com/microsoft/TypeScript/issues/55667
7
8
  * This will be deprecated once this issue is solved.
8
9
  */
9
- export type FixedInstanceType<T extends AnyConstructor> = T extends abstract new (...args: infer _) => infer R
10
+ export type FixedInstanceType<T extends abstract new (...args: never) => any> = T extends abstract new (
11
+ ...args: infer _
12
+ ) => infer R
10
13
  ? R
11
14
  : never;
12
15
 
@@ -25,15 +28,16 @@ export type LoggingLevels = "debug" | "log" | "info" | "warn" | "error";
25
28
  * `GetKey` accesses a property while intentionally ignoring index signatures. This means `GetKey<Record<string, unknown>, "foo">` will return `never`.
26
29
  */
27
30
  // 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
+ // - `T = {}` would regularly always return `unknown`. The fix here adding a single dummy property with `{ _?: unknown } & T`.
32
+ // - `T = never` would regularly always return `unknown`. The fix here is checking if `any` is assignable to it.
33
+ export type GetKey<T, K extends PropertyKey, D = never> = [any] extends [T] ? _GetKey<{ _?: unknown } & T, K, D> : D;
31
34
 
32
35
  type _GetKey<T, K extends PropertyKey, D> = T extends { readonly [_ in K]?: infer V } ? V : D;
33
36
 
34
37
  /**
35
38
  * `Partial` is usually the wrong type.
36
39
  * In order to make it easier to audit unintentional uses of `Partial` this type is provided.
40
+ * Also allows specifying certain keys to make partial.
37
41
  *
38
42
  * ### Picking the right helper type
39
43
  * - Favor `NullishProps` whenever it is valid. Allowing both `null` and
@@ -61,7 +65,14 @@ type _GetKey<T, K extends PropertyKey, D> = T extends { readonly [_ in K]?: infe
61
65
  * The most common time this shows up is with the pattern
62
66
  * `exampleFunction({ prop = "foo" } = {}) { ... }`.
63
67
  */
64
- export type IntentionalPartial<T> = Partial<T>;
68
+ export type IntentionalPartial<T extends object, K extends AllKeysOf<T> = AllKeysOf<T>> = PrettifyType<
69
+ {
70
+ [K2 in keyof T as Extract<K2, K>]?: T[K2];
71
+ } & {
72
+ // Note(LukeAbby): This effectively inlines `Omit<T, K>`, hoping for
73
+ [K2 in keyof T as Exclude<K2, K>]: T[K2];
74
+ }
75
+ >;
65
76
 
66
77
  /**
67
78
  * This type is used to make a constraint where `T` must be statically known to overlap with `U`.
@@ -93,7 +104,7 @@ export type OverlapsWith<T, U> = [Extract<T, U>, any] extends [U, Extract<T, U>]
93
104
  * This is safer than what `OverlapsWith` provides as it ensures that if the type is an array it is an array of `Item`.
94
105
  * Assumes readonly arrays are permitted.
95
106
  *
96
- * Note that `never[]` and `any[]` are still accepted due to the unsoundness of those types.
107
+ * Note that `never[]` and `any[]` are still accepted due to the fundamental nature of these types.
97
108
  *
98
109
  * @example
99
110
  * ```ts
@@ -118,8 +129,8 @@ export type OverlapsWith<T, U> = [Extract<T, U>, any] extends [U, Extract<T, U>]
118
129
  * 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
130
  * ```
120
131
  */
121
- export type ArrayOverlaps<T, Item> =
122
- Extract<T, readonly unknown[]> extends readonly Item[] ? OverlapsWith<T, readonly Item[]> : readonly Item[];
132
+ export type ArrayOverlaps<Arr, T> =
133
+ Extract<Arr, readonly unknown[]> extends readonly T[] ? OverlapsWith<Arr, readonly T[]> : readonly T[];
123
134
 
124
135
  /**
125
136
  * Use this whenever a type is given that should match some constraint but is
@@ -250,6 +261,11 @@ export type ConformRecord<T extends object, V, D extends V = V> = {
250
261
  * this behavior is disabled for functions in most codebases (including this one)
251
262
  * because of the `strictFunctionTypes` compiler flag, implicit under `strict: true`.
252
263
  * See: https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-function-parameters-bivariant
264
+ *
265
+ * Note that this does not work well with exotic functions. Unexpected behavior may occur with:
266
+ * - Overloaded functions.
267
+ * - Functions with additional properties, e.g. `(() => number) & { prop: string }`.
268
+ * - Functions of the shape `(...args: never[]) => T`.
253
269
  */
254
270
  export type ToMethod<T extends AnyFunction> = {
255
271
  method(...args: Parameters<T>): ReturnType<T>;
@@ -375,33 +391,23 @@ export type Brand<BaseType, BrandName extends string> = BaseType & Branded<Brand
375
391
  * // ^ { x: string, y: number }
376
392
  *
377
393
  * function example<T extends { someProp: number } | { anotherProp: string }>(t: T) {
378
- * Object.assign(t, { a: "foo" }, {b: 2}) satisfies ObjectIntersection
379
- * Object.assign(t, { a: "foo" }, {b: 2}) satisfies PrettyObjectIntersection
380
- * // ^ Type 'T & { a: string; } & { b: number; }' does not satisfy the expected type '{ a: string; b: number; }'.
394
+ * Object.assign(t, { a: "foo" }, { b: 2 }) satisfies ObjectIntersection
395
+ * Object.assign(t, { a: "foo" }, { b: 2 }) satisfies PrettyObjectIntersection
396
+ * // ^ Type 'T & { a: string; } & { b: number; }' does not satisfy the expected type '{ a: string; b: number; }'.
381
397
  * // This is an example of changing type behavior. The first line is allowed but the second errors.
382
398
  * // This type of situation will realistically never come up in real code because it's so contrived.
383
- * // Note that this difference only appears when generic, specifically `T extends Object | NonObject`.
399
+ * // Note that this difference only appears when generic, specifically `T extends SomeConcreteObject | U`.
384
400
  * // See https://github.com/microsoft/TypeScript/pull/60726 for some context.
385
401
  * }
386
402
  * ```
387
403
  */
388
- export type PrettifyType<T> = T extends AnyObject
404
+ // Note(LukeAbby): This uses `AnyObject` as a constraint rather than in the body due to this circularity: https://tsplay.dev/NDpRRN
405
+ export type PrettifyType<T extends AnyObject> = T extends unknown
389
406
  ? {
390
407
  [K in keyof T]: T[K];
391
- }
392
- : // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
393
- T & unknown;
394
-
395
- /**
396
- * This behaves the same as {@link PrettifyType | `PrettifyType`} except instead
397
- * 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.
398
- */
399
- export type PrettifyTypeDeep<T> = T extends AnyObject
400
- ? {
401
- [K in keyof T]: PrettifyTypeDeep<T[K]>;
402
- }
403
- : // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
404
- T & unknown;
408
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
409
+ } & unknown
410
+ : never;
405
411
 
406
412
  /**
407
413
  * Convert a union of the form `T1 | T2 | T3 | ...` into an intersection of the form `T1 & T2 & T3 & ...`.
@@ -543,12 +549,14 @@ export type AllKeysOf<T extends object> = T extends unknown ? keyof T : never;
543
549
  *
544
550
  * @internal
545
551
  */
546
- export type InexactPartial<T extends object, K extends AllKeysOf<T> = AllKeysOf<T>> = {
547
- [K2 in keyof T as Extract<K2, K>]?: T[K2] | undefined;
548
- } & {
549
- // Note(LukeAbby): This effectively inlines `Omit<T, K>`, hoping for slightly better type display.
550
- [K2 in keyof T as Exclude<K2, K>]: T[K2];
551
- };
552
+ export type InexactPartial<T extends object, K extends AllKeysOf<T> = AllKeysOf<T>> = PrettifyType<
553
+ {
554
+ [K2 in keyof T as Extract<K2, K>]?: T[K2] | undefined;
555
+ } & {
556
+ // Note(LukeAbby): This effectively inlines `Omit<T, K>` hoping for slightly better performance.
557
+ [K2 in keyof T as Exclude<K2, K>]: T[K2];
558
+ }
559
+ >;
552
560
 
553
561
  /**
554
562
  * Makes select properties in `T` optional and explicitly allows both `null` and
@@ -582,12 +590,14 @@ export type InexactPartial<T extends object, K extends AllKeysOf<T> = AllKeysOf<
582
590
  *
583
591
  * @internal
584
592
  */
585
- export type NullishProps<T extends object, K extends AllKeysOf<T> = AllKeysOf<T>> = {
586
- [K2 in keyof T as Extract<K2, K>]?: T[K2] | null | undefined;
587
- } & {
588
- // Note(LukeAbby): This effectively inlines `Omit<T, K>`, hoping for slightly better type display.
589
- [K2 in keyof T as Exclude<K2, K>]: T[K2];
590
- };
593
+ export type NullishProps<T extends object, K extends AllKeysOf<T> = AllKeysOf<T>> = PrettifyType<
594
+ {
595
+ [K2 in keyof T as Extract<K2, K>]?: T[K2] | null | undefined;
596
+ } & {
597
+ // Note(LukeAbby): This effectively inlines `Omit<T, K>` hoping for slightly better performance.
598
+ [K2 in keyof T as Exclude<K2, K>]: T[K2];
599
+ }
600
+ >;
591
601
 
592
602
  /**
593
603
  * Expand an object that contains keys in dotted notation
@@ -605,7 +615,7 @@ export type Expanded<O> = O extends AnyObject
605
615
  * Union type of the types of the values in `T`
606
616
  * @internal
607
617
  */
608
- export type ValueOf<T> = T extends ReadonlyArray<infer V> ? V : T[keyof T];
618
+ export type ValueOf<T extends object> = T extends ReadonlyArray<infer V> ? V : T[keyof T];
609
619
 
610
620
  type OmitIndex<K extends PropertyKey> = string extends K
611
621
  ? never
@@ -618,7 +628,7 @@ type OmitIndex<K extends PropertyKey> = string extends K
618
628
  /**
619
629
  * Gets the keys of `T` but excluding index signatures unlike `keyof T`. For example `Record<string, any> & { foo: number }` will produce `string` with `keyof` but `foo` with `ConcreteKeys`.
620
630
  */
621
- export type ConcreteKeys<T> = T extends never
631
+ export type ConcreteKeys<T> = [T] extends [never]
622
632
  ? never
623
633
  : keyof {
624
634
  [K in keyof T as OmitIndex<K>]: never;
@@ -629,7 +639,7 @@ export type ConcreteKeys<T> = T extends never
629
639
  */
630
640
  // NOTE(LukeAbby): It may seem easier to write `Pick<T, ConcreteKeys<T>>` but this stops it from being a homomorphic mapped type and regresses its power when given a generic type parameter or `this`.
631
641
  // See: https://www.typescriptlang.org/play/?#code/KYDwDg9gTgLgBDAnmYcDCEB2BjKwbADSwiAzgDwAqAfHALxwDWJEAZnAN4BQccA2oTgBLTExbtKcAIak4pGFBEBzOKAKYAJrMEB+OJmAA3YFDgAufQFcAtgCMTqkOq1xd+ow4ulEdiABtHZ204PQNjUwtCAF0LMJMAbi4AX0SuJBQ4ACVgawhjAElNUABlISVMKRhLPAoaejgABSFsRioAGnQsXHwiElrqalTsPxlZABFKqQBZCA1gP3Ji7AALHKlabl454ak8OFy5vwts3IKikFLyyurgCiXV63Xkri4d0lliy1sZw8WVtcCwE0sg4cCUQJMzQaUAgYAsUkwiHi-EIXgUyhiVjsDiStDUQJcExg01m8z+D3WnB4+3wy1mAAoAJRU3i8AD0bLglGWQlkYBhKCgiDkdMsfg0jl58FslngGggt0wAHIYAA6am8GA80iqg7zVXggyKbDQ2GpVkIbW60l+VVSWzYRK8JLJIA
632
- export type RemoveIndexSignatures<T extends AnyObject> = {
642
+ export type RemoveIndexSignatures<T extends object> = {
633
643
  [K in keyof T as OmitIndex<K>]: T[K];
634
644
  };
635
645
 
@@ -664,7 +674,7 @@ export type Merge<T, U> =
664
674
  : U;
665
675
 
666
676
  /**
667
- * Returns whether the type is a plain object. Excludes functions and arrays while still being friendly to interfaces.
677
+ * Returns whether the type is a plain object. Excludes functions, arrays, and constructors while still being friendly to interfaces.
668
678
  *
669
679
  * @example
670
680
  * ```ts
@@ -681,11 +691,7 @@ export type Merge<T, U> =
681
691
  * type RecordFails = Interface extends Record<string, unknown> ? true : false; // false
682
692
  * ```
683
693
  */
684
- export type IsObject<T> = T extends { readonly [K: string]: any }
685
- ? T extends AnyArray | AnyFunction
686
- ? false
687
- : true
688
- : false;
694
+ export type IsObject<T> = T extends object ? (T extends AnyArray | AnyFunction | AnyConstructor ? false : true) : false;
689
695
 
690
696
  /**
691
697
  * A simple, non-recursive merge type.
@@ -729,13 +735,11 @@ export type GetDataReturnType<T extends object> = GetDataConfigOptions<T>[GetDat
729
735
  * removes all properties rom an object, because an empty interface was given,
730
736
  * or so on.
731
737
  *
732
- * Type params extend `object` instead of `AnyObject` to allow interfaces
733
- *
734
738
  * @example
735
739
  * ```ts
736
740
  * type ObjectArray<T extends Record<string, unknown>> = T[];
737
741
  *
738
- * // As you would hope a union can't be assigned. It errors with:
742
+ * // As you would hope a string can't be assigned in a union or not. It errors with:
739
743
  * // "type 'string' is not assignable to type 'Record<string, unknown>'."
740
744
  * type UnionErrors = ObjectArray<string | { x: number }>;
741
745
  *
@@ -752,8 +756,13 @@ export type GetDataReturnType<T extends object> = GetDataConfigOptions<T>[GetDat
752
756
  * const emptyObject: EmptyObjectArray = [1, "foo", () => 3];
753
757
  * ```
754
758
  */
755
- // eslint-disable-next-line @typescript-eslint/no-empty-object-type
756
- export type HandleEmptyObject<T extends object, D extends object = EmptyObject> = [{}] extends [T] ? D : T;
759
+ export type HandleEmptyObject<O, D = EmptyObject> =
760
+ // Note(LukeAbby): This uses a strict equality test to differentiate types like `{ onlyOptional?: true }`
761
+ // and `object` from `{}`. More naive tests like `[{}] extends [O] ? ... : ...` fails these cases
762
+ // due to particular unsoundness rules around `{}`.
763
+ //
764
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
765
+ (<T>() => T extends {} ? true : false) extends <T>() => T extends O ? true : false ? D : O;
757
766
 
758
767
  /**
759
768
  * This type allows any plain objects. In other words it disallows functions
@@ -820,10 +829,7 @@ export type MutableArray<T> = Array<T>;
820
829
  * - `(...args: any[]) => any` - If someone explicitly accesses the parameters or uses the return value you get `any` which is not safe.
821
830
  * - `(...args: unknown[]) => unknown` - This allows obviously unsound calls like `fn(1, "foo")` because it indicates it can take any arguments.
822
831
  */
823
- // The explicit arg0 does not prevent a function with no arguments from being assigned to `AnyFunction` because any function that takes less arguments can be assigned to one that takes more.
824
- // The point of this is to prevent it from being possible to call with 0 arguments.
825
- // never is used to make it impossible to call with anything besides `never` or `any`. This makes it the most type safe way to define any function.
826
- export type AnyFunction = (arg0: never, ...args: never[]) => unknown;
832
+ export type AnyFunction = (...args: never) => unknown;
827
833
 
828
834
  /**
829
835
  * Use this type to allow any class, abstract class, or class-like constructor.
@@ -842,7 +848,7 @@ export type AnyFunction = (arg0: never, ...args: never[]) => unknown;
842
848
  * const classLike: AnyConstructor = Date;
843
849
  * ```
844
850
  */
845
- export type AnyConstructor = abstract new (arg0: never, ...args: never[]) => unknown;
851
+ export type AnyConstructor = abstract new (...args: never) => unknown;
846
852
 
847
853
  /**
848
854
  * Use this type to allow any class or class-like constructor but disallow
@@ -863,7 +869,7 @@ export type AnyConstructor = abstract new (arg0: never, ...args: never[]) => unk
863
869
  * const abstract: AnyConcreteConstructor = abstract class Abstract { ... }
864
870
  * ```
865
871
  */
866
- export type AnyConcreteConstructor = new (arg0: never, ...args: never[]) => unknown;
872
+ export type AnyConcreteConstructor = new (...args: never) => unknown;
867
873
 
868
874
  /**
869
875
  * This type is equivalent to `Promise<T>` but exists to give an explicit signal
@@ -1089,3 +1095,192 @@ export type Coalesce<T, D, CoalesceType = undefined> = T extends CoalesceType ?
1089
1095
  * See {@link Coalesce | `Coalesce`}.
1090
1096
  */
1091
1097
  export type NullishCoalesce<T, D> = T extends null | undefined ? D : T;
1098
+
1099
+ interface EarlierHook {
1100
+ none: never;
1101
+ init: "none";
1102
+ i18nInit: "none" | "init";
1103
+ setup: "none" | "init" | "i18nInit";
1104
+ ready: "none" | "init" | "i18nInit" | "setup";
1105
+ }
1106
+
1107
+ /**
1108
+ * A hook that's valid to use in {@link AssumeHookRan | `AssumeHookRan`}
1109
+ */
1110
+ export type InitializationHook = keyof EarlierHook;
1111
+
1112
+ /**
1113
+ * All hooks ran so far.
1114
+ *
1115
+ * @example
1116
+ * ```ts
1117
+ * HooksRan<never>; // never
1118
+ * HooksRan<"none">; // "none"
1119
+ * HooksRan<"init">; // "none" | "init"
1120
+ * HooksRan<"i18nInit">; // "none" | "init" | "i18nInit"
1121
+ * HooksRan<"setup">; // "none" | "init" | "i18nInit" | "setup"
1122
+ * HooksRan<"setup">; // "none" | "init" | "i18nInit" | "setup" | "ready"
1123
+ * ```
1124
+ */
1125
+ export type HooksRan<T extends InitializationHook> = EarlierHook[T] | T;
1126
+ type ValidHooksRan = Extract<keyof AssumeHookRan, InitializationHook>;
1127
+
1128
+ /**
1129
+ * Various things within Foundry are only initialized after a certain hook is ran.
1130
+ * `InitializedOn` is useful to help model this pattern.
1131
+ */
1132
+ export type InitializedOn<
1133
+ InitializedTo,
1134
+ InitializedOnHook extends InitializationHook,
1135
+ BeforeInitialization = InitializedTo | undefined,
1136
+ > = Extract<HooksRan<ValidHooksRan>, InitializedOnHook> extends never ? InitializedTo : BeforeInitialization;
1137
+
1138
+ /**
1139
+ * Returns the inputted type. This may seem like a useless type but it exists due to limitations
1140
+ * with the syntax of TypeScript interfaces. For example it's a syntax error to write
1141
+ * `interface Example extends typeof SomeClass {}` but `typeof SomeClass` is a reasonable base type
1142
+ * so to work around this you can write `interface Example extends Identity<typeof SomeClass> {}`
1143
+ */
1144
+ export type Identity<T extends object> = T;
1145
+
1146
+ /**
1147
+ * ### Usage
1148
+ *
1149
+ * Note: See "Background" for an explanation of what a "Discriminated Union" is.
1150
+ *
1151
+ * Use `DiscriminatedUnion` when you want to turn a regular union into a discriminated union. The form
1152
+ * this helper type chooses is
1153
+ * `{ prop1: number; readonly prop2?: never } | { readonly prop1?: never; prop2: string }` as this
1154
+ * is the strictest form of a discriminated union. `readonly prop1?: never` is very similar to
1155
+ * `prop1?: undefined` but `never` is used because with
1156
+ * [`exactOptionalPropertyTypes`](https://www.typescriptlang.org/tsconfig/exactOptionalPropertyTypes.html)
1157
+ * there is an actual difference and `readonly` is there because it prevents erroneous mutation.
1158
+ *
1159
+ * Please note that this type is unsound when you don't know for sure the union can't have
1160
+ * excess properties that interfere with other constituents. For a basic example of this unsoundness:
1161
+ * ```ts
1162
+ * function selectRandom<T, U>(array1: T, array2: U): DiscrimatedUnion<T | U> {
1163
+ * return (Math.random() > 0.5 ? array1 : array2) as DiscrimatedUnion<T | U>;
1164
+ * }
1165
+ *
1166
+ * const obj1 = { prop1: "foo" };
1167
+ * const obj2: { prop2: number } = { prop1: 1, prop2: "bar" };
1168
+ *
1169
+ * const discriminatedUnion = selectRandom(obj1, obj2)
1170
+ *
1171
+ * // If `selectRandom` returned `T | U` then `discriminatedUnion.prop1` would error.
1172
+ * // However because of unsoundly using `DiscrimatedUnion` it doesn't.
1173
+ * const prop1 = discriminatedUnion.prop1;
1174
+ * // ^ `string | undefined`.
1175
+ *
1176
+ * console.log(prop1 !== undefined ? prop1.length : 0);
1177
+ * // ^ Runtime error the 50% of the time that `prop1` is actually `1` at runtime
1178
+ * ```
1179
+ *
1180
+ * ### Background
1181
+ *
1182
+ * A common unintuitive behavior of unions in TypeScript is that if a property only exists on some
1183
+ * members of the union, then access on that property is not allowed:
1184
+ * ```typescript
1185
+ * const member1 = { prop1: "foo" };
1186
+ * const member2 = { prop2: 1 };
1187
+ * const union = Math.random() > 0.5 ? member1 : member2;
1188
+ * // ^ { prop1: string; } | { prop2: number; }
1189
+ *
1190
+ * const prop1 = union.prop1;
1191
+ * ```
1192
+ *
1193
+ * This snippet errors at `union.prop1` with:
1194
+ * ```
1195
+ * Property 'prop1' does not exist on type '{ prop1: number; } | { prop2: number; }'.
1196
+ * Property 'prop1' does not exist on type '{ prop2: number; }'.`
1197
+ * ```
1198
+ *
1199
+ * This error is not very good at explaining why the result can't simply be `number | undefined` but
1200
+ * it can't simply be relaxed. To understand why you need to know that excess properties can always
1201
+ * be assigned to an object. To demonstrate:
1202
+ * ```ts
1203
+ * function takesObj(obj: { prop1: number }) { ... }
1204
+ *
1205
+ * // You may think excess properties aren't allowed because when you try to write code like this,
1206
+ * // it errors.
1207
+ * takesObj({ prop1: 1, prop2: "foo" });
1208
+ * // ^ Object literal may only specify known properties, but 'prop2' does not exist in type '{ prop1: number; }'. Did you mean to write 'prop1'?
1209
+ *
1210
+ * // However this is more of a "lint" than a hard error.
1211
+ * const obj = { prop1: 1, prop2: "foo" };
1212
+ * takesObj(obj); // No error
1213
+ * ```
1214
+ *
1215
+ * This means that the type of `union.prop1` would have to be `unknown` at best because at runtime
1216
+ * there could be any excess properties of any type.
1217
+ *
1218
+ * ### Discriminated Unions
1219
+ *
1220
+ * Discriminated unions are a way to get around this issue. There's several possible ways to express
1221
+ * discriminated unions but the most common version is
1222
+ * `{ prop1: number; prop2?: never } | { prop1?: never; prop1: number }`. The key idea is to
1223
+ * put a property that ensures that `undefined` will be read out. Using `never` specifically avoids
1224
+ * some niche issues.
1225
+ *
1226
+ * In fact TypeScript will automatically create a discriminated union in some cases. For example if
1227
+ * you simplify the snippet above:
1228
+ * ```typescript
1229
+ * const discriminatedUnion = Math.random() > 0.5 ? { prop1: 1 } : { prop2: 2 };
1230
+ * // ^ { prop1: number; prop2?: undefined } | { prop2: number; prop1?: undefined }
1231
+ *
1232
+ * const prop1 = discriminatedUnion.prop1;
1233
+ * // ^ number | undefined
1234
+ * ```
1235
+ *
1236
+ * You'll see TypeScript now has enough information to give `discriminatedUnion` a better type than
1237
+ * `union` had which now makes `discriminatedUnion.prop1` work.
1238
+ *
1239
+ * See:
1240
+ *
1241
+ * {@link https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions}
1242
+ *
1243
+ * {@link https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes-func.html#discriminated-unions}
1244
+ */
1245
+ export type DiscriminatedUnion<U extends object> = _DiscriminatedUnion<U, AllKeysOf<U>>;
1246
+
1247
+ type _DiscriminatedUnion<U extends object, AllKeys extends AllKeysOf<U>> = U extends unknown
1248
+ ? {
1249
+ [K in keyof U]: U[K];
1250
+ } & {
1251
+ readonly [K in Exclude<AllKeys, keyof U>]?: never;
1252
+ }
1253
+ : never;
1254
+
1255
+ /**
1256
+ * Picks keys where the value extends `Value`
1257
+ *
1258
+ * @example
1259
+ * ```typescript
1260
+ * type Picked = PickValue<{ type: "coordinates"; x: 123; y: 456; }, number>;
1261
+ * // ^ { x: 123; y: 456 }
1262
+ * ```
1263
+ */
1264
+ export type PickValue<T extends object, Value> = {
1265
+ [K in keyof T as T[K] extends Value ? K : never]: T[K];
1266
+ };
1267
+
1268
+ /**
1269
+ * Represnts a valid JSON value.
1270
+ */
1271
+ export type JSONValue =
1272
+ | {
1273
+ readonly [K: string]: JSONValue;
1274
+ }
1275
+ | readonly JSONValue[]
1276
+ | number
1277
+ | string
1278
+ | boolean
1279
+ | null
1280
+ | undefined;
1281
+
1282
+ /**
1283
+ * This type represents a constructor such that `typeof SomeConstructor & PhantomConstructor`
1284
+ * simplifies to `typeof SomeConstructor`.
1285
+ */
1286
+ export type PhantomConstructor = new (...args: any[]) => unknown;
package/tsconfig.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig.json",
3
+ "compilerOptions": {
4
+ "types": [],
5
+ "allowImportingTsExtensions": true,
6
+ "allowSyntheticDefaultImports": true,
7
+ "esModuleInterop": true,
8
+ "exactOptionalPropertyTypes": true,
9
+ "module": "ESNext",
10
+ "moduleResolution": "Bundler",
11
+ "noEmit": true,
12
+ "noImplicitOverride": true,
13
+ "strict": true,
14
+ "target": "ESNext",
15
+ "verbatimModuleSyntax": true,
16
+ "noUncheckedSideEffectImports": true,
17
+ "noUncheckedIndexedAccess": true,
18
+ "incremental": true
19
+ },
20
+
21
+ // This root project includes nothing on purpose.
22
+ "include": [],
23
+
24
+ "references": [
25
+ { "path": "./src/tsconfig.json" },
26
+ { "path": "./tsconfig.miscellaneous.json" },
27
+ { "path": "./tests/tsconfig.json" }
28
+ ]
29
+ }
@@ -0,0 +1,8 @@
1
+ // This file exists because for CI the `tests` folder's typechecking must be skipped.
2
+ // This has to exist until tests are fixed.
3
+ {
4
+ "$schema": "https://json.schemastore.org/tsconfig.json",
5
+ "extends": "./tsconfig.json",
6
+
7
+ "references": [{ "path": "./src" }, { "path": "./tsconfig.miscellaneous.json" }]
8
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig.json",
3
+ "extends": "./tsconfig.json",
4
+ "compilerOptions": {
5
+ "allowJs": true,
6
+ "checkJs": true,
7
+ "types": [],
8
+ "outDir": ".typescript-build/miscellaneous",
9
+ "composite": true,
10
+ "noEmit": false,
11
+ "emitDeclarationOnly": true
12
+ },
13
+ // There are miscellaneous JS files at the root of the repo as well as .github, e.g. .lintstagedrc.js and vitest.config.ts
14
+ "include": ["*", ".*", ".github/**/*"],
15
+ "references": []
16
+ }
@@ -1,100 +0,0 @@
1
- import type { InterfaceToObject, AnyObject, DeepPartial, MaybePromise } from "fvtt-types/utils";
2
-
3
- declare global {
4
- /**
5
- * The Application responsible for configuring a single AmbientLight document within a parent Scene.
6
- * @typeParam Options - the type of the options object
7
- */
8
- class AmbientLightConfig<
9
- Options extends
10
- DocumentSheetOptions<AmbientLightDocument.ConfiguredInstance> = DocumentSheetOptions<AmbientLightDocument.ConfiguredInstance>,
11
- > extends DocumentSheet<Options, AmbientLightDocument.ConfiguredInstance> {
12
- /**
13
- * Maintain a copy of the original to show a real-time preview of changes.
14
- */
15
- preview: AmbientLightDocument.ConfiguredInstance;
16
-
17
- /**
18
- * @defaultValue
19
- * ```typescript
20
- * foundry.utils.mergeObject(super.defaultOptions, {
21
- * id: "ambient-light-config",
22
- * classes: ["sheet", "ambient-light-config"],
23
- * title: "LIGHT.ConfigTitle",
24
- * template: "templates/scene/ambient-light-config.html",
25
- * width: 480,
26
- * height: "auto",
27
- * tabs: [{navSelector: ".tabs", contentSelector: "form", initial: "basic"}]
28
- * });
29
- * ```
30
- */
31
- static override get defaultOptions(): DocumentSheetOptions<AmbientLightDocument.ConfiguredInstance>;
32
-
33
- protected override _render(force?: boolean, options?: Application.RenderOptions<Options>): Promise<void>;
34
-
35
- override getData(options?: Partial<Options>): MaybePromise<object>;
36
-
37
- override close(options?: Application.CloseOptions): Promise<void>;
38
-
39
- override activateListeners(html: JQuery): void;
40
-
41
- /**
42
- * Preview the change caused by a change on the form by refreshing the display of the light source
43
- */
44
- protected _onChangeInput(event: JQuery.ChangeEvent): Promise<void>;
45
-
46
- protected _onResetForm(event: PointerEvent): void;
47
-
48
- /**
49
- * Preview changes to the AmbientLight document as if they were true document updates.
50
- * @param change - A change to preview
51
- */
52
- protected _previewChanges(change: DeepPartial<AmbientLightDocument["_source"]>): void;
53
-
54
- /**
55
- * Restore the true data for the AmbientLight document when the form is submitted or closed.
56
- */
57
- protected _resetPreview(): void;
58
-
59
- protected override _onChangeTab(event: MouseEvent | null, tabs: Tabs, active: string): void;
60
-
61
- protected override _getSubmitData(updateData?: AnyObject | null): InterfaceToObject<AmbientLightConfig.FormData>;
62
-
63
- protected override _updateObject(event: Event, formData: AmbientLightConfig.FormData): Promise<unknown>;
64
-
65
- /**
66
- * Refresh the display of the AmbientLight object
67
- * @internal
68
- */
69
- protected _refresh(): void;
70
- }
71
-
72
- namespace AmbientLightConfig {
73
- type Any = AmbientLightConfig<any>;
74
-
75
- interface FormData {
76
- x: AmbientLightDocument["x"];
77
- y: AmbientLightDocument["y"];
78
- rotation: AmbientLightDocument["rotation"];
79
- walls: AmbientLightDocument["walls"];
80
- vision: AmbientLightDocument["vision"];
81
- "config.dim": AmbientLightDocument["config"]["dim"];
82
- "config.bright": AmbientLightDocument["config"]["bright"];
83
- "config.angle": AmbientLightDocument["config"]["angle"];
84
- "config.color": AmbientLightDocument["config"]["color"];
85
- "config.alpha": AmbientLightDocument["config"]["alpha"];
86
- "config.darkness.min": AmbientLightDocument["config"]["darkness"]["min"];
87
- "config.darkness.max": AmbientLightDocument["config"]["darkness"]["max"];
88
- "config.animation.type": AmbientLightDocument["config"]["animation"]["type"];
89
- "config.animation.speed": AmbientLightDocument["config"]["animation"]["speed"];
90
- "config.animation.reverse": AmbientLightDocument["config"]["animation"]["reverse"];
91
- "config.animation.intensity": AmbientLightDocument["config"]["animation"]["intensity"];
92
- "config.coloration": AmbientLightDocument["config"]["coloration"];
93
- "config.luminosity": AmbientLightDocument["config"]["luminosity"];
94
- "config.attenuation": AmbientLightDocument["config"]["attenuation"];
95
- "config.saturation": AmbientLightDocument["config"]["saturation"];
96
- "config.contrast": AmbientLightDocument["config"]["contrast"];
97
- "config.shadows": AmbientLightDocument["config"]["shadows"];
98
- }
99
- }
100
- }