@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.
- package/README.md +6 -3
- package/package.json +40 -18
- package/src/configuration/configuration.d.mts +24 -23
- package/src/configuration/documents.d.mts +295 -0
- package/src/configuration/globals.d.mts +8 -2
- package/src/configuration/index.d.mts +1 -0
- package/src/foundry/client/apps/app.d.mts +121 -119
- package/src/foundry/client/apps/av/av-config.d.mts +13 -8
- package/src/foundry/client/apps/av/cameras.d.mts +11 -11
- package/src/foundry/client/apps/dice/dice-config.d.mts +22 -8
- package/src/foundry/client/apps/form.d.mts +112 -94
- package/src/foundry/client/apps/forms/actor.d.mts +22 -12
- package/src/foundry/client/apps/forms/adventure-exporter.d.mts +13 -8
- package/src/foundry/client/apps/forms/adventure-importer.d.mts +15 -7
- package/src/foundry/client/apps/forms/base-sheet.d.mts +14 -7
- package/src/foundry/client/apps/forms/card-config.d.mts +17 -9
- package/src/foundry/client/apps/forms/cards-config.d.mts +13 -14
- package/src/foundry/client/apps/forms/combat-config.d.mts +7 -7
- package/src/foundry/client/apps/forms/combatant-config.d.mts +4 -4
- package/src/foundry/client/apps/forms/default-sheets-config.d.mts +1 -1
- package/src/foundry/client/apps/forms/effect-config.d.mts +6 -6
- package/src/foundry/client/apps/forms/folder-config.d.mts +5 -5
- package/src/foundry/client/apps/forms/fonts.d.mts +42 -35
- package/src/foundry/client/apps/forms/grid-config.d.mts +11 -11
- package/src/foundry/client/apps/forms/image-popout.d.mts +28 -22
- package/src/foundry/client/apps/forms/item.d.mts +6 -6
- package/src/foundry/client/apps/forms/journal-page-sheet.d.mts +17 -15
- package/src/foundry/client/apps/forms/journal-sheet.d.mts +46 -37
- package/src/foundry/client/apps/forms/macro-config.d.mts +6 -6
- package/src/foundry/client/apps/forms/measure-template.d.mts +8 -8
- package/src/foundry/client/apps/forms/ownership.d.mts +5 -5
- package/src/foundry/client/apps/forms/playlist-config.d.mts +7 -9
- package/src/foundry/client/apps/forms/playlist-sound-config.d.mts +6 -6
- package/src/foundry/client/apps/forms/roll-table-config.d.mts +9 -10
- package/src/foundry/client/apps/forms/scene-config.d.mts +39 -39
- package/src/foundry/client/apps/forms/sheet-config.d.mts +8 -8
- package/src/foundry/client/apps/forms/user-config.d.mts +11 -11
- package/src/foundry/client/apps/hud/chatbubble.d.mts +14 -9
- package/src/foundry/client/apps/hud/container.d.mts +3 -3
- package/src/foundry/client/apps/hud/controls.d.mts +124 -84
- package/src/foundry/client/apps/hud/hotbar.d.mts +12 -12
- package/src/foundry/client/apps/hud/hud.d.mts +4 -4
- package/src/foundry/client/apps/hud/menu.d.mts +6 -6
- package/src/foundry/client/apps/hud/navigation.d.mts +11 -11
- package/src/foundry/client/apps/hud/pause.d.mts +7 -7
- package/src/foundry/client/apps/hud/players.d.mts +11 -11
- package/src/foundry/client/apps/i18n.d.mts +31 -27
- package/src/foundry/client/apps/placeables/drawing-config.d.mts +41 -33
- package/src/foundry/client/apps/placeables/drawing-hud.d.mts +4 -4
- package/src/foundry/client/apps/placeables/index.d.mts +0 -2
- package/src/foundry/client/apps/placeables/note-config.d.mts +27 -17
- package/src/foundry/client/apps/placeables/tile-config.d.mts +23 -10
- package/src/foundry/client/apps/placeables/tile-hud.d.mts +8 -8
- package/src/foundry/client/apps/placeables/token-config.d.mts +84 -63
- package/src/foundry/client/apps/placeables/token-hud.d.mts +10 -10
- package/src/foundry/client/apps/placeables/wall-config.d.mts +19 -16
- package/src/foundry/client/apps/sidebar/apps/chat-popout.d.mts +5 -5
- package/src/foundry/client/apps/sidebar/apps/client-settings.d.mts +2 -2
- package/src/foundry/client/apps/sidebar/apps/compendium.d.mts +13 -10
- package/src/foundry/client/apps/sidebar/apps/invitation-links.d.mts +3 -3
- package/src/foundry/client/apps/sidebar/apps/keybindings-config.d.mts +1 -1
- package/src/foundry/client/apps/sidebar/apps/module-management.d.mts +6 -6
- package/src/foundry/client/apps/sidebar/apps/permission-config.d.mts +6 -6
- package/src/foundry/client/apps/sidebar/apps/support-details.d.mts +33 -28
- package/src/foundry/client/apps/sidebar/apps/tours-management.d.mts +1 -1
- package/src/foundry/client/apps/sidebar/apps/world-config.d.mts +12 -9
- package/src/foundry/client/apps/sidebar/directory-tab-mixin.d.mts +40 -32
- package/src/foundry/client/apps/sidebar/document-directory.d.mts +44 -37
- package/src/foundry/client/apps/sidebar/package-configuration.d.mts +3 -3
- package/src/foundry/client/apps/sidebar/sidebar-tab.d.mts +3 -3
- package/src/foundry/client/apps/sidebar/sidebar.d.mts +7 -7
- package/src/foundry/client/apps/sidebar/tabs/actors-directory.d.mts +4 -4
- package/src/foundry/client/apps/sidebar/tabs/cards-directory.d.mts +4 -4
- package/src/foundry/client/apps/sidebar/tabs/chat-log.d.mts +34 -29
- package/src/foundry/client/apps/sidebar/tabs/combat-tracker.d.mts +15 -15
- package/src/foundry/client/apps/sidebar/tabs/compendium-directory.d.mts +21 -12
- package/src/foundry/client/apps/sidebar/tabs/items-directory.d.mts +4 -4
- package/src/foundry/client/apps/sidebar/tabs/journal-directory.d.mts +4 -4
- package/src/foundry/client/apps/sidebar/tabs/macros-directory.d.mts +8 -8
- package/src/foundry/client/apps/sidebar/tabs/playlists-directory.d.mts +21 -21
- package/src/foundry/client/apps/sidebar/tabs/roll-table-directory.d.mts +4 -4
- package/src/foundry/client/apps/sidebar/tabs/scenes-directory.d.mts +6 -6
- package/src/foundry/client/apps/sidebar/tabs/settings.d.mts +12 -12
- package/src/foundry/client/apps/templates.d.mts +2 -2
- package/src/foundry/client/av/clients/simplepeer.d.mts +4 -4
- package/src/foundry/client/av/settings.d.mts +16 -13
- package/src/foundry/client/config.d.mts +1982 -1823
- package/src/foundry/client/core/document-index.d.mts +12 -4
- package/src/foundry/client/core/hooks.d.mts +0 -2
- package/src/foundry/client/core/image.d.mts +13 -11
- package/src/foundry/client/core/issues.d.mts +11 -6
- package/src/foundry/client/core/keybindings.d.mts +3 -3
- package/src/foundry/client/core/nue.d.mts +1 -1
- package/src/foundry/client/core/packages.d.mts +393 -63
- package/src/foundry/client/core/settings.d.mts +34 -12
- package/src/foundry/client/core/socket.d.mts +2 -2
- package/src/foundry/client/core/sorting.d.mts +6 -6
- package/src/foundry/client/core/time.d.mts +6 -3
- package/src/foundry/client/core/tooltip.d.mts +1 -1
- package/src/foundry/client/core/tour.d.mts +58 -49
- package/src/foundry/client/core/tours.d.mts +1 -1
- package/src/foundry/client/core/utils.d.mts +3 -3
- package/src/foundry/client/core/workers.d.mts +24 -17
- package/src/foundry/client/data/abstract/canvas-document.d.mts +9 -15
- package/src/foundry/client/data/abstract/client-document.d.mts +133 -172
- package/src/foundry/client/data/abstract/directory-collection-mixin.d.mts +14 -36
- package/src/foundry/client/data/abstract/document-collection.d.mts +89 -65
- package/src/foundry/client/data/abstract/world-collection.d.mts +47 -53
- package/src/foundry/client/data/collections/actors.d.mts +24 -31
- package/src/foundry/client/data/collections/cards.d.mts +10 -6
- package/src/foundry/client/data/collections/combats.d.mts +12 -8
- package/src/foundry/client/data/collections/compendium-collection.d.mts +79 -66
- package/src/foundry/client/data/collections/compendium-folders.d.mts +6 -6
- package/src/foundry/client/data/collections/compendium-packs.d.mts +4 -4
- package/src/foundry/client/data/collections/fog.d.mts +10 -6
- package/src/foundry/client/data/collections/folder.d.mts +15 -10
- package/src/foundry/client/data/collections/items.d.mts +11 -7
- package/src/foundry/client/data/collections/journal.d.mts +16 -10
- package/src/foundry/client/data/collections/macros.d.mts +15 -22
- package/src/foundry/client/data/collections/messages.d.mts +14 -10
- package/src/foundry/client/data/collections/playlists.d.mts +12 -9
- package/src/foundry/client/data/collections/scenes.d.mts +19 -31
- package/src/foundry/client/data/collections/settings.d.mts +10 -6
- package/src/foundry/client/data/collections/tables.d.mts +11 -7
- package/src/foundry/client/data/collections/users.d.mts +14 -11
- package/src/foundry/client/data/documents/active-effect.d.mts +652 -88
- package/src/foundry/client/data/documents/actor-delta.d.mts +672 -28
- package/src/foundry/client/data/documents/actor.d.mts +722 -60
- package/src/foundry/client/data/documents/adventure.d.mts +482 -49
- package/src/foundry/client/data/documents/ambient-light.d.mts +426 -21
- package/src/foundry/client/data/documents/ambient-sound.d.mts +474 -15
- package/src/foundry/client/data/documents/card.d.mts +570 -39
- package/src/foundry/client/data/documents/cards.d.mts +742 -78
- package/src/foundry/client/data/documents/chat-message.d.mts +578 -45
- package/src/foundry/client/data/documents/combat.d.mts +701 -71
- package/src/foundry/client/data/documents/combatant.d.mts +510 -28
- package/src/foundry/client/data/documents/drawing.d.mts +543 -16
- package/src/foundry/client/data/documents/fog-exploration.d.mts +413 -27
- package/src/foundry/client/data/documents/folder.d.mts +461 -40
- package/src/foundry/client/data/documents/item.d.mts +679 -25
- package/src/foundry/client/data/documents/journal-entry-page.d.mts +587 -21
- package/src/foundry/client/data/documents/journal-entry.d.mts +621 -20
- package/src/foundry/client/data/documents/macro.d.mts +530 -25
- package/src/foundry/client/data/documents/measured-template.d.mts +480 -16
- package/src/foundry/client/data/documents/note.d.mts +495 -18
- package/src/foundry/client/data/documents/playlist-sound.d.mts +429 -27
- package/src/foundry/client/data/documents/playlist.d.mts +666 -75
- package/src/foundry/client/data/documents/region-behavior.d.mts +468 -38
- package/src/foundry/client/data/documents/region.d.mts +661 -35
- package/src/foundry/client/data/documents/scene.d.mts +986 -149
- package/src/foundry/client/data/documents/setting.d.mts +397 -15
- package/src/foundry/client/data/documents/table-result.d.mts +479 -17
- package/src/foundry/client/data/documents/table.d.mts +663 -80
- package/src/foundry/client/data/documents/tile.d.mts +502 -16
- package/src/foundry/client/data/documents/token.d.mts +1114 -90
- package/src/foundry/client/data/documents/user.d.mts +495 -27
- package/src/foundry/client/data/documents/wall.d.mts +550 -15
- package/src/foundry/client/game.d.mts +58 -92
- package/src/foundry/client/head.d.mts +5 -6
- package/src/foundry/client/hooks.d.mts +237 -221
- package/src/foundry/client/pixi/board.d.mts +95 -89
- package/src/foundry/client/pixi/core/containers/base-canvas-group.d.mts +6 -5
- package/src/foundry/client/pixi/core/containers/cached-container.d.mts +5 -5
- package/src/foundry/client/pixi/core/containers/full-canvas-container.d.mts +2 -2
- package/src/foundry/client/pixi/core/containers/point-source-mesh.d.mts +3 -3
- package/src/foundry/client/pixi/core/containers/quad-mesh.d.mts +3 -3
- package/src/foundry/client/pixi/core/containers/quadtree.d.mts +23 -21
- package/src/foundry/client/pixi/core/containers/sprite-mesh.d.mts +5 -5
- package/src/foundry/client/pixi/core/containers/unbound-container.d.mts +5 -5
- package/src/foundry/client/pixi/core/interaction/canvas-animation.d.mts +57 -51
- package/src/foundry/client/pixi/core/interaction/control-icon.d.mts +3 -3
- package/src/foundry/client/pixi/core/interaction/mouse-handler.d.mts +7 -7
- package/src/foundry/client/pixi/core/interaction/ping.d.mts +19 -11
- package/src/foundry/client/pixi/core/interaction/pings/chevron.d.mts +7 -2
- package/src/foundry/client/pixi/core/interaction/pings/pulse.d.mts +29 -23
- package/src/foundry/client/pixi/core/interaction/render-flags.d.mts +83 -38
- package/src/foundry/client/pixi/core/interaction/resize-handle.d.mts +3 -3
- package/src/foundry/client/pixi/core/interaction/targets.d.mts +9 -9
- package/src/foundry/client/pixi/core/loader.d.mts +8 -8
- package/src/foundry/client/pixi/core/shapes/limited-angle-polygon.d.mts +9 -4
- package/src/foundry/client/pixi/core/shapes/polygon-mesher.d.mts +3 -3
- package/src/foundry/client/pixi/core/shapes/precise-text.d.mts +3 -3
- package/src/foundry/client/pixi/core/shapes/ray.d.mts +23 -17
- package/src/foundry/client/pixi/core/shapes/source-polygon.d.mts +19 -14
- package/src/foundry/client/pixi/extensions/circle.d.mts +1 -1
- package/src/foundry/client/pixi/extensions/observable-transform.d.mts +3 -3
- package/src/foundry/client/pixi/groups/effects.d.mts +4 -4
- package/src/foundry/client/pixi/groups/environment.d.mts +5 -5
- package/src/foundry/client/pixi/groups/hidden.d.mts +3 -3
- package/src/foundry/client/pixi/groups/interface.d.mts +6 -6
- package/src/foundry/client/pixi/groups/overlay.d.mts +3 -3
- package/src/foundry/client/pixi/groups/primary.d.mts +11 -11
- package/src/foundry/client/pixi/groups/rendered.d.mts +3 -3
- package/src/foundry/client/pixi/layers/base/canvas-layer.d.mts +3 -3
- package/src/foundry/client/pixi/layers/base/interaction-layer.d.mts +13 -13
- package/src/foundry/client/pixi/layers/base/placeables-layer.d.mts +279 -233
- package/src/foundry/client/pixi/layers/controls/cursor.d.mts +17 -8
- package/src/foundry/client/pixi/layers/controls/door.d.mts +26 -14
- package/src/foundry/client/pixi/layers/controls/layer.d.mts +89 -79
- package/src/foundry/client/pixi/layers/controls/ruler.d.mts +121 -96
- package/src/foundry/client/pixi/layers/effects/background-effects.d.mts +4 -5
- package/src/foundry/client/pixi/layers/effects/coloration-effects.d.mts +6 -4
- package/src/foundry/client/pixi/layers/effects/darkness-effects.d.mts +7 -4
- package/src/foundry/client/pixi/layers/effects/illumination-effects.d.mts +19 -16
- package/src/foundry/client/pixi/layers/effects/visibility.d.mts +101 -84
- package/src/foundry/client/pixi/layers/effects/weather/particles/effect.d.mts +13 -4
- package/src/foundry/client/pixi/layers/effects/weather/particles/leaves.d.mts +31 -2
- package/src/foundry/client/pixi/layers/effects/weather-effects.d.mts +134 -59
- package/src/foundry/client/pixi/layers/grid/highlight.d.mts +13 -3
- package/src/foundry/client/pixi/layers/grid/layer.d.mts +89 -87
- package/src/foundry/client/pixi/layers/grid/mesh.d.mts +36 -15
- package/src/foundry/client/pixi/layers/masks/depth.d.mts +3 -3
- package/src/foundry/client/pixi/layers/masks/occlusion.d.mts +4 -4
- package/src/foundry/client/pixi/layers/masks/vision.d.mts +6 -6
- package/src/foundry/client/pixi/layers/placeables/drawings.d.mts +15 -11
- package/src/foundry/client/pixi/layers/placeables/lighting.d.mts +11 -10
- package/src/foundry/client/pixi/layers/placeables/notes.d.mts +47 -28
- package/src/foundry/client/pixi/layers/placeables/regions.d.mts +25 -12
- package/src/foundry/client/pixi/layers/placeables/sounds.d.mts +81 -63
- package/src/foundry/client/pixi/layers/placeables/templates.d.mts +10 -11
- package/src/foundry/client/pixi/layers/placeables/tiles.d.mts +28 -17
- package/src/foundry/client/pixi/layers/placeables/tokens.d.mts +67 -46
- package/src/foundry/client/pixi/layers/placeables/walls.d.mts +50 -51
- package/src/foundry/client/pixi/perception/clockwise-sweep.d.mts +22 -16
- package/src/foundry/client/pixi/perception/detection-mode.d.mts +123 -51
- package/src/foundry/client/pixi/perception/fog.d.mts +34 -19
- package/src/foundry/client/pixi/perception/perception-manager.d.mts +137 -137
- package/src/foundry/client/pixi/perception/vision-mode.d.mts +92 -67
- package/src/foundry/client/pixi/perception/weiler-atherton-clipping.d.mts +3 -3
- package/src/foundry/client/pixi/placeable.d.mts +241 -146
- package/src/foundry/client/pixi/placeables/drawing.d.mts +260 -134
- package/src/foundry/client/pixi/placeables/light.d.mts +204 -66
- package/src/foundry/client/pixi/placeables/note.d.mts +150 -55
- package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-canvas-object.d.mts +7 -6
- package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-graphics.d.mts +3 -3
- package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-occludable-object.d.mts +2 -2
- package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-sprite-mesh.d.mts +4 -4
- package/src/foundry/client/pixi/placeables/region.d.mts +219 -110
- package/src/foundry/client/pixi/placeables/sound.d.mts +211 -68
- package/src/foundry/client/pixi/placeables/template.d.mts +186 -100
- package/src/foundry/client/pixi/placeables/tile.d.mts +211 -142
- package/src/foundry/client/pixi/placeables/token.d.mts +911 -568
- package/src/foundry/client/pixi/placeables/wall.d.mts +253 -130
- package/src/foundry/client/pixi/webgl/extensions/batch-renderer.d.mts +27 -5
- package/src/foundry/client/pixi/webgl/extensions/batch-shader-generator.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/helpers/framebuffer-snapshot.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/helpers/smooth-noise.d.mts +13 -5
- package/src/foundry/client/pixi/webgl/helpers/texture-extractor.d.mts +6 -6
- package/src/foundry/client/pixi/webgl/shaders/base-shader-mixin.d.mts +2 -2
- package/src/foundry/client/pixi/webgl/shaders/base-shader.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/filters/base-filter.d.mts +4 -4
- package/src/foundry/client/pixi/webgl/shaders/filters/base-mask-filter.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/filters/blur.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/filters/effects-masking.d.mts +6 -3
- package/src/foundry/client/pixi/webgl/shaders/filters/environment.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/filters/glow-overlay.d.mts +4 -4
- package/src/foundry/client/pixi/webgl/shaders/filters/invisibility.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/filters/outline-overlay.d.mts +4 -4
- package/src/foundry/client/pixi/webgl/shaders/filters/transition.d.mts +6 -6
- package/src/foundry/client/pixi/webgl/shaders/filters/visibility.d.mts +8 -5
- package/src/foundry/client/pixi/webgl/shaders/filters/vision-mask-filter.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/filters/void.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/filters/weather-occlusion-masks.d.mts +4 -4
- package/src/foundry/client/pixi/webgl/shaders/fragment-channel-mixin.d.mts +1 -1
- package/src/foundry/client/pixi/webgl/shaders/grid/grid.d.mts +4 -4
- package/src/foundry/client/pixi/webgl/shaders/lighting/background-lighting.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/base-lighting.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/coloration-lighting.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/darkness-lighting.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/bewitching-wave.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/black-hole.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/chroma.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/emanation.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/energy-field.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fairy-light.d.mts +6 -6
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/flame.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fog.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/force-grid.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/ghost-light.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/hexa-dome.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/light-dome.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/magical-gloom.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/pulse.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/radial-rainbow.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/revolving-light.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/roiling-mass.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/siren-light.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/smoke-patch.d.mts +6 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/star-light.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/sunburst.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/swirling-rainbow.d.mts +4 -3
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/torch.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/vortex.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/effects/wave.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/lighting/illumination-lighting.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/region/adjust-darkness-level.d.mts +7 -7
- package/src/foundry/client/pixi/webgl/shaders/region/base.d.mts +4 -4
- package/src/foundry/client/pixi/webgl/shaders/region/highlight.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/samplers/base-sampler.d.mts +4 -4
- package/src/foundry/client/pixi/webgl/shaders/samplers/baseline-illumination.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/samplers/color-adjustment.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/samplers/depth.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/samplers/fog-of-war.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/samplers/occlusion.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/samplers/primary.d.mts +4 -4
- package/src/foundry/client/pixi/webgl/shaders/samplers/token-ring.d.mts +4 -6
- package/src/foundry/client/pixi/webgl/shaders/vision/background-vision.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/vision/base-vision.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/vision/coloration-vision.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/vision/effects/amplification.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/vision/effects/wave.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/vision/illumination-vision.d.mts +3 -3
- package/src/foundry/client/pixi/webgl/shaders/weather/base-weather.d.mts +14 -15
- package/src/foundry/client/pixi/webgl/shaders/weather/effect.d.mts +20 -27
- package/src/foundry/client/pixi/webgl/shaders/weather/fog.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/weather/rain.d.mts +5 -5
- package/src/foundry/client/pixi/webgl/shaders/weather/snow.d.mts +5 -5
- package/src/foundry/client/pixi/workers/texture-worker.d.mts +5 -5
- package/src/foundry/client/tours/setup-tour.d.mts +15 -10
- package/src/foundry/client/ui/dialog.d.mts +3 -3
- package/src/foundry/client/ui/dragdrop.d.mts +33 -27
- package/src/foundry/client/ui/editor.d.mts +29 -21
- package/src/foundry/client/ui/filepicker.d.mts +42 -37
- package/src/foundry/client/ui/filter.d.mts +60 -48
- package/src/foundry/client/ui/forms.d.mts +22 -22
- package/src/foundry/client/ui/prosemirror.d.mts +15 -7
- package/src/foundry/client/ui/secrets.d.mts +43 -28
- package/src/foundry/client/ui/tabs.d.mts +40 -33
- package/src/foundry/client-esm/_module.d.mts +5 -5
- package/src/foundry/client-esm/_types.d.mts +2 -1
- package/src/foundry/client-esm/applications/api/application.d.mts +93 -31
- package/src/foundry/client-esm/applications/api/dialog.d.mts +23 -23
- package/src/foundry/client-esm/applications/api/document-sheet.d.mts +85 -32
- package/src/foundry/client-esm/applications/api/handlebars-application.d.mts +1 -1
- package/src/foundry/client-esm/applications/apps/av/camera-popout.d.mts +1 -1
- package/src/foundry/client-esm/applications/apps/av/cameras.d.mts +2 -2
- package/src/foundry/client-esm/applications/apps/compendium-art-config.d.mts +4 -5
- package/src/foundry/client-esm/applications/apps/file-picker.d.mts +2 -2
- package/src/foundry/client-esm/applications/apps/grid-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/apps/image-popout.d.mts +1 -1
- package/src/foundry/client-esm/applications/apps/permission-config.d.mts +1 -1
- package/src/foundry/client-esm/applications/dice/roll-resolver.d.mts +4 -4
- package/src/foundry/client-esm/applications/elements/file-picker.d.mts +1 -1
- package/src/foundry/client-esm/applications/elements/prosemirror-editor.d.mts +1 -1
- package/src/foundry/client-esm/applications/hud/drawing-hud.d.mts +1 -1
- package/src/foundry/client-esm/applications/hud/tile-hud.d.mts +1 -1
- package/src/foundry/client-esm/applications/hud/token-hud.d.mts +1 -1
- package/src/foundry/client-esm/applications/sheets/active-effect-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/actor-sheet.d.mts +2 -2
- package/src/foundry/client-esm/applications/sheets/adventure-exporter.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/adventure-importer.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/ambient-light-config.d.mts +5 -5
- package/src/foundry/client-esm/applications/sheets/ambient-sound-config.d.mts +4 -4
- package/src/foundry/client-esm/applications/sheets/card-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/cards-config.d.mts +2 -2
- package/src/foundry/client-esm/applications/sheets/combatant-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/drawing-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/folder-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/item-sheet.d.mts +2 -2
- package/src/foundry/client-esm/applications/sheets/journal/journal-entry-category-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/journal/journal-entry-page-sheet.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/journal/journal-entry-sheet.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/macro-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/note-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/playlist-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/playlist-sound-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/region-behavior-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/region-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/roll-table-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/roll-table-sheet.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/scene-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/table-result-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/template-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/tile-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/token/mixin.d.mts +1 -0
- package/src/foundry/client-esm/applications/sheets/token/token-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sheets/user-config.d.mts +4 -4
- package/src/foundry/client-esm/applications/sheets/wall-config.d.mts +3 -3
- package/src/foundry/client-esm/applications/sidebar/apps/chat-popout.d.mts +1 -1
- package/src/foundry/client-esm/applications/sidebar/sidebar-tab.d.mts +2 -2
- package/src/foundry/client-esm/applications/sidebar/tabs/actor-directory.d.mts +1 -1
- package/src/foundry/client-esm/applications/sidebar/tabs/cards-directory.d.mts +1 -1
- package/src/foundry/client-esm/applications/sidebar/tabs/combat-tracker.d.mts +242 -1
- package/src/foundry/client-esm/applications/sidebar/tabs/item-directory.d.mts +1 -1
- package/src/foundry/client-esm/applications/sidebar/tabs/journal-directory.d.mts +1 -1
- package/src/foundry/client-esm/applications/sidebar/tabs/macro-directory.d.mts +1 -1
- package/src/foundry/client-esm/applications/sidebar/tabs/playlist-directory.d.mts +1 -1
- package/src/foundry/client-esm/applications/sidebar/tabs/roll-table-directory.d.mts +1 -1
- package/src/foundry/client-esm/applications/sidebar/tabs/scene-directory.d.mts +1 -1
- package/src/foundry/client-esm/applications/ui/region-legend.d.mts +2 -2
- package/src/foundry/client-esm/applications/ux/context-menu.d.mts +56 -36
- package/src/foundry/client-esm/audio/_types.d.mts +2 -0
- package/src/foundry/client-esm/audio/biquad.d.mts +76 -26
- package/src/foundry/client-esm/audio/cache.d.mts +31 -20
- package/src/foundry/client-esm/audio/convolver.d.mts +47 -25
- package/src/foundry/client-esm/audio/helper.d.mts +124 -80
- package/src/foundry/client-esm/audio/sound.d.mts +202 -97
- package/src/foundry/client-esm/audio/timeout.d.mts +28 -12
- package/src/foundry/client-esm/canvas/edges/collision.d.mts +12 -4
- package/src/foundry/client-esm/canvas/edges/edge.d.mts +13 -8
- package/src/foundry/client-esm/canvas/edges/edges.d.mts +3 -2
- package/src/foundry/client-esm/canvas/edges/vertex.d.mts +12 -10
- package/src/foundry/client-esm/canvas/regions/geometry.d.mts +14 -7
- package/src/foundry/client-esm/canvas/regions/mesh.d.mts +25 -14
- package/src/foundry/client-esm/canvas/regions/polygon-tree.d.mts +50 -19
- package/src/foundry/client-esm/canvas/regions/shape.d.mts +45 -34
- package/src/foundry/client-esm/canvas/scene-manager.d.mts +7 -6
- package/src/foundry/client-esm/canvas/smaa/blend.d.mts +14 -3
- package/src/foundry/client-esm/canvas/smaa/edges.d.mts +25 -3
- package/src/foundry/client-esm/canvas/smaa/smaa.d.mts +119 -20
- package/src/foundry/client-esm/canvas/smaa/weights.d.mts +26 -3
- package/src/foundry/client-esm/canvas/sources/base-effect-source.d.mts +69 -39
- package/src/foundry/client-esm/canvas/sources/base-light-source.d.mts +66 -40
- package/src/foundry/client-esm/canvas/sources/global-light-source.d.mts +78 -19
- package/src/foundry/client-esm/canvas/sources/point-darkness-source.d.mts +37 -20
- package/src/foundry/client-esm/canvas/sources/point-effect-source.d.mts +39 -20
- package/src/foundry/client-esm/canvas/sources/point-light-source.d.mts +41 -12
- package/src/foundry/client-esm/canvas/sources/point-movement-source.d.mts +15 -4
- package/src/foundry/client-esm/canvas/sources/point-sound-source.d.mts +29 -14
- package/src/foundry/client-esm/canvas/sources/point-vision-source.d.mts +84 -39
- package/src/foundry/client-esm/canvas/sources/rendered-effect-source.d.mts +115 -41
- package/src/foundry/client-esm/canvas/tokens/ring-config.d.mts +83 -21
- package/src/foundry/client-esm/canvas/tokens/ring-data.d.mts +66 -93
- package/src/foundry/client-esm/canvas/tokens/ring.d.mts +146 -51
- package/src/foundry/client-esm/client.d.mts +16 -16
- package/src/foundry/client-esm/data/_module.d.mts +1 -1
- package/src/foundry/client-esm/data/calendar.d.mts +26 -39
- package/src/foundry/client-esm/data/client-backend.d.mts +6 -6
- package/src/foundry/client-esm/data/region-behaviors/adjust-darkness-level.d.mts +1 -1
- package/src/foundry/client-esm/data/region-behaviors/base.d.mts +5 -5
- package/src/foundry/client-esm/data/region-behaviors/display-scrolling-text.d.mts +2 -2
- package/src/foundry/client-esm/data/terrain-data.d.mts +1 -1
- package/src/foundry/client-esm/dice/parser.d.mts +5 -27
- package/src/foundry/client-esm/dice/roll.d.mts +63 -80
- package/src/foundry/client-esm/dice/terms/coin.d.mts +4 -8
- package/src/foundry/client-esm/dice/terms/dice.d.mts +85 -64
- package/src/foundry/client-esm/dice/terms/die.d.mts +7 -7
- package/src/foundry/client-esm/dice/terms/fate.d.mts +5 -5
- package/src/foundry/client-esm/dice/terms/function.d.mts +13 -16
- package/src/foundry/client-esm/dice/terms/numeric.d.mts +2 -4
- package/src/foundry/client-esm/dice/terms/operator.d.mts +1 -1
- package/src/foundry/client-esm/dice/terms/parenthetical.d.mts +8 -9
- package/src/foundry/client-esm/dice/terms/pool.d.mts +13 -28
- package/src/foundry/client-esm/dice/terms/string.d.mts +3 -3
- package/src/foundry/client-esm/dice/terms/term.d.mts +10 -5
- package/src/foundry/client-esm/dice/twister.d.mts +3 -3
- package/src/foundry/client-esm/documents/_module.d.mts +1 -1
- package/src/foundry/client-esm/helpers/_types.d.mts +12 -46
- package/src/foundry/client-esm/helpers/compendium-art.d.mts +57 -4
- package/src/foundry/client-esm/packages/_module.d.mts +1 -1
- package/src/foundry/client-esm/packages/_types.d.mts +2 -0
- package/src/foundry/client-esm/utils/_module.d.mts +1 -1
- package/src/foundry/client-esm/utils/_types.d.mts +2 -1
- package/src/foundry/common/_types.d.mts +1 -1
- package/src/foundry/common/abstract/_module.d.mts +1 -0
- package/src/foundry/common/abstract/_types.d.mts +60 -54
- package/src/foundry/common/abstract/backend.d.mts +28 -16
- package/src/foundry/common/abstract/data.d.mts +133 -116
- package/src/foundry/common/abstract/document.d.mts +1233 -440
- package/src/foundry/common/abstract/embedded-collection.d.mts +2 -2
- package/src/foundry/common/abstract/singleton-collection.d.mts +1 -1
- package/src/foundry/common/abstract/type-data.d.mts +35 -43
- package/src/foundry/common/config.d.mts +3 -3
- package/src/foundry/common/constants.d.mts +27 -26
- package/src/foundry/common/data/_types.d.mts +2 -0
- package/src/foundry/common/data/data.d.mts +189 -87
- package/src/foundry/common/data/fields.d.mts +579 -258
- package/src/foundry/common/data/validation-failure.d.mts +9 -4
- package/src/foundry/common/documents/_types.d.mts +16 -9
- package/src/foundry/common/documents/active-effect.d.mts +280 -180
- package/src/foundry/common/documents/actor-delta.d.mts +317 -70
- package/src/foundry/common/documents/actor.d.mts +304 -103
- package/src/foundry/common/documents/adventure.d.mts +254 -140
- package/src/foundry/common/documents/ambient-light.d.mts +267 -76
- package/src/foundry/common/documents/ambient-sound.d.mts +267 -110
- package/src/foundry/common/documents/card.d.mts +267 -176
- package/src/foundry/common/documents/cards.d.mts +299 -128
- package/src/foundry/common/documents/chat-message.d.mts +276 -160
- package/src/foundry/common/documents/combat.d.mts +300 -91
- package/src/foundry/common/documents/combatant.d.mts +283 -88
- package/src/foundry/common/documents/drawing.d.mts +286 -207
- package/src/foundry/common/documents/fog-exploration.d.mts +258 -72
- package/src/foundry/common/documents/folder.d.mts +248 -85
- package/src/foundry/common/documents/item.d.mts +305 -101
- package/src/foundry/common/documents/journal-entry-page.d.mts +279 -190
- package/src/foundry/common/documents/journal-entry.d.mts +294 -70
- package/src/foundry/common/documents/macro.d.mts +254 -134
- package/src/foundry/common/documents/measured-template.d.mts +293 -137
- package/src/foundry/common/documents/note.d.mts +274 -151
- package/src/foundry/common/documents/playlist-sound.d.mts +260 -96
- package/src/foundry/common/documents/playlist.d.mts +279 -122
- package/src/foundry/common/documents/region-behavior.d.mts +305 -64
- package/src/foundry/common/documents/region.d.mts +309 -90
- package/src/foundry/common/documents/roll-table.d.mts +286 -104
- package/src/foundry/common/documents/scene.d.mts +276 -344
- package/src/foundry/common/documents/setting.d.mts +229 -55
- package/src/foundry/common/documents/table-result.d.mts +267 -96
- package/src/foundry/common/documents/tile.d.mts +301 -172
- package/src/foundry/common/documents/token.d.mts +350 -452
- package/src/foundry/common/documents/user.d.mts +256 -146
- package/src/foundry/common/documents/wall.d.mts +272 -157
- package/src/foundry/common/grid/_types.d.mts +2 -0
- package/src/foundry/common/grid/base.d.mts +58 -37
- package/src/foundry/common/grid/hexagonal.d.mts +19 -19
- package/src/foundry/common/grid/square.d.mts +1 -1
- package/src/foundry/common/packages/_module.d.mts +5 -5
- package/src/foundry/common/packages/_types.d.mts +2 -0
- package/src/foundry/common/packages/base-module.d.mts +6 -24
- package/src/foundry/common/packages/base-package.d.mts +18 -16
- package/src/foundry/common/packages/base-system.d.mts +6 -78
- package/src/foundry/common/packages/base-world.d.mts +7 -60
- package/src/foundry/common/packages/sub-types.d.mts +1 -1
- package/src/foundry/common/primitives/array.d.mts +3 -3
- package/src/foundry/common/primitives/math.d.mts +7 -1
- package/src/foundry/common/primitives/number.d.mts +1 -1
- package/src/foundry/common/primitives/set.d.mts +17 -14
- package/src/foundry/common/prosemirror/_types.d.mts +2 -0
- package/src/foundry/common/prosemirror/dropdown.d.mts +1 -1
- package/src/foundry/common/prosemirror/highlight-matches-plugin.d.mts +1 -1
- package/src/foundry/common/prosemirror/menu.d.mts +3 -3
- package/src/foundry/common/prosemirror/plugin.d.mts +1 -1
- package/src/foundry/common/prosemirror/schema/index.d.mts +0 -1
- package/src/foundry/common/prosemirror/util.d.mts +1 -1
- package/src/foundry/common/utils/bitmask.d.mts +4 -1
- package/src/foundry/common/utils/collection.d.mts +59 -24
- package/src/foundry/common/utils/event-emitter.d.mts +46 -19
- package/src/foundry/common/utils/helpers.d.mts +13 -13
- package/src/foundry/common/utils/http.d.mts +2 -2
- package/src/foundry/common/utils/string-tree.d.mts +45 -39
- package/src/foundry/common/utils/word-tree.d.mts +10 -23
- package/src/tsconfig.json +1 -5
- package/src/types/augments/pixi.d.mts +28 -28
- package/src/types/config.d.mts +12 -12
- package/src/types/documentConfiguration.d.mts +282 -597
- package/src/types/lib.d.mts +4 -4
- package/src/types/workers/image-compressor.d.mts +1 -1
- package/src/utils/index.d.mts +255 -60
- package/tsconfig.json +29 -0
- package/tsconfig.main.json +8 -0
- package/tsconfig.miscellaneous.json +16 -0
- package/src/foundry/client/apps/placeables/light-config.d.mts +0 -100
- package/src/foundry/client/apps/placeables/sound-config.d.mts +0 -44
- package/src/foundry/common/documents/module.d.mts +0 -35
package/src/types/lib.d.mts
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
|
1
|
+
import type { Identity } from "fvtt-types/utils";
|
2
2
|
|
3
3
|
declare global {
|
4
4
|
namespace AudioNode {
|
5
|
-
|
6
|
-
|
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(
|
11
|
+
constructor(...args: never);
|
12
12
|
}
|
package/src/utils/index.d.mts
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
import type { Document } from "../foundry/common/abstract/_module.d.mts";
|
2
2
|
|
3
|
-
|
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
|
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 `{ _?:
|
29
|
-
// - `T = never` would regularly always return `unknown`. The fix here is
|
30
|
-
export type GetKey<T, K extends PropertyKey, D = never> = _GetKey<{ _?:
|
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> =
|
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
|
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<
|
122
|
-
Extract<
|
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
|
-
* //
|
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
|
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
|
-
|
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
|
-
|
393
|
-
|
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
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
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
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
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
|
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
|
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
|
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
|
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
|
-
|
756
|
-
|
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
|
-
|
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 (
|
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 (
|
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
|
-
}
|