Merge pull request #6826 from Bertie690/play-tween-typing

[Dev] Update typing for `playTween` utility function
This commit is contained in:
Bertie690 2025-12-05 12:22:13 -05:00 committed by GitHub
parent d8e8dbf8c2
commit 3302d23137
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 16 deletions

View File

@ -54,6 +54,7 @@
"lefthook": "^2.0.4",
"msw": "^2.12.3",
"phaser3spectorjs": "^0.0.8",
"type-fest": "^5.3.0",
"typedoc": "^0.28.14",
"typedoc-github-theme": "^0.3.1",
"typedoc-plugin-coverage": "^4.0.2",

View File

@ -90,6 +90,9 @@ importers:
phaser3spectorjs:
specifier: ^0.0.8
version: 0.0.8
type-fest:
specifier: ^5.3.0
version: 5.3.0
typedoc:
specifier: ^0.28.14
version: 0.28.14(typescript@5.9.3)
@ -1779,8 +1782,8 @@ packages:
resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
engines: {node: '>=6'}
type-fest@5.2.0:
resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==}
type-fest@5.3.0:
resolution: {integrity: sha512-d9CwU93nN0IA1QL+GSNDdwLAu1Ew5ZjTwupvedwg3WdfoH6pIDvYQ2hV0Uc2nKBLPq7NB5apCx57MLS5qlmO5g==}
engines: {node: '>=20'}
typedoc-github-theme@0.3.1:
@ -3288,7 +3291,7 @@ snapshots:
statuses: 2.0.2
strict-event-emitter: 0.5.1
tough-cookie: 6.0.0
type-fest: 5.2.0
type-fest: 5.3.0
until-async: 3.0.2
yargs: 17.7.2
optionalDependencies:
@ -3561,7 +3564,7 @@ snapshots:
minimist: 1.2.8
strip-bom: 3.0.0
type-fest@5.2.0:
type-fest@5.3.0:
dependencies:
tagged-tag: 1.0.0

View File

@ -1,22 +1,19 @@
import { globalScene } from "#app/global-scene";
import type { SceneBase } from "#app/scene-base";
import type { OmitIndexSignature, PickIndexSignature } from "type-fest";
type OmitWithoutIndex<O extends object, K extends keyof O> = PickIndexSignature<O> & Omit<OmitIndexSignature<O>, K>;
interface PlayTweenConfig
extends OmitWithoutIndex<Phaser.Types.Tweens.TweenBuilderConfig, "onComplete" | "onCompleteParams"> {}
/**
* Plays a Tween animation, resolving once the animation completes.
* Play a Tween animation and wait for its animation to complete.
* @param config - The config for a single Tween
* @param scene - The {@linkcode SceneBase} on which the Tween plays; default {@linkcode globalScene}
* @param scene - (Default {@linkcode globalScene}) The {@linkcode SceneBase} on which the Tween plays
* @returns A Promise that resolves once the Tween has been played.
*
* @privateRemarks
* The `config` input should not include an `onComplete` field as that callback is
* used to resolve the Promise containing the Tween animation.
* However, `config`'s type cannot be changed to something like `Omit<TweenBuilderConfig, "onComplete">`
* due to how the type for `TweenBuilderConfig` is defined.
*/
export async function playTween(
config: Phaser.Types.Tweens.TweenBuilderConfig,
scene: SceneBase = globalScene,
): Promise<void> {
export async function playTween(config: PlayTweenConfig, scene: SceneBase = globalScene): Promise<void> {
await new Promise(resolve =>
scene.tweens.add({
...config,