Skip to content

Commit a692f9f

Browse files
authored
[howler] fix: add missing exports, remove incorrect export and remove private Sound (DefinitelyTyped#66222)
* fix: add missing `Howl` global, `HowlerGlobal` type and `window` * fix: remove incorrect `State` export * fix: `Sound` is a class * fix: remove the `Sound` class, it is private and should never be used * corrected globals and test * fix test * use comment flag instead * fix: object `HowlerGlobal` should not be exported
1 parent dceb846 commit a692f9f

File tree

3 files changed

+52
-38
lines changed

3 files changed

+52
-38
lines changed

types/howler/howler-tests.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import './test/globals';
2+
13
import { Howl, Howler } from 'howler';
24

35
// Set global volume

types/howler/index.d.ts

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@ export type HowlErrorCallback = (soundId: number, error: unknown) => void;
1313
export type SpatialOrientation = [number, number, number];
1414
export type SpatialPosition = [number, number, number];
1515

16-
export enum State {
17-
Unloaded = 'unloaded',
18-
Loading = 'loading',
19-
Loaded = 'loaded',
20-
}
21-
2216
export interface SoundSpriteDefinitions {
2317
[name: string]: [number, number] | [number, number, boolean];
2418
}
@@ -34,10 +28,6 @@ export interface PannerAttributes {
3428
rolloffFactor?: number;
3529
}
3630

37-
export interface Sound {
38-
(howl: Howl): this;
39-
}
40-
4131
export interface HowlListeners {
4232
/** Fires when the sound has been stopped. The first parameter is the ID of the sound. */
4333
onstop?: HowlCallback | undefined;
@@ -269,33 +259,43 @@ export class Howl {
269259
pannerAttr(options: PannerAttributes, id?: number): this;
270260
}
271261

272-
declare global {
273-
class HowlerGlobal {
274-
mute(muted: boolean): this;
275-
stop(): this;
276-
277-
volume(): number;
278-
volume(volume: number): this;
279-
280-
codecs(ext: string): boolean;
281-
unload(): this;
282-
usingWebAudio: boolean;
283-
html5PoolSize: number;
284-
noAudio: boolean;
285-
autoUnlock: boolean;
286-
autoSuspend: boolean;
287-
ctx: AudioContext;
288-
masterGain: GainNode;
289-
290-
stereo(pan: number): this;
291-
292-
pos(): SpatialPosition;
293-
pos(x: number, y?: number, z?: number): this;
294-
295-
orientation(): SpatialOrientation;
296-
orientation(x: number, y?: number, z?: number, xUp?: number, yUp?: number, zUp?: number): this;
297-
}
298-
const Howler: HowlerGlobal;
262+
export interface HowlerGlobal {
263+
mute(muted: boolean): this;
264+
stop(): this;
265+
266+
volume(): number;
267+
volume(volume: number): this;
268+
269+
codecs(ext: string): boolean;
270+
unload(): this;
271+
usingWebAudio: boolean;
272+
html5PoolSize: number;
273+
noAudio: boolean;
274+
autoUnlock: boolean;
275+
autoSuspend: boolean;
276+
ctx: AudioContext;
277+
masterGain: GainNode;
278+
279+
stereo(pan: number): this;
280+
281+
pos(): SpatialPosition;
282+
pos(x: number, y?: number, z?: number): this;
283+
284+
orientation(): SpatialOrientation;
285+
orientation(x: number, y?: number, z?: number, xUp?: number, yUp?: number, zUp?: number): this;
299286
}
300287

301-
export const Howler: HowlerGlobal;
288+
import { Howl as _Howl, HowlerGlobal as _HowlerGlobal } from '.';
289+
export { Howler };
290+
291+
declare global {
292+
// tslint:disable:no-empty-interface
293+
interface Howl extends _Howl {}
294+
interface HowlerGlobal extends _HowlerGlobal {}
295+
var Howl: typeof _Howl;
296+
var HowlerGlobal: {
297+
prototype: _HowlerGlobal;
298+
new (): _HowlerGlobal;
299+
};
300+
var Howler: HowlerGlobal;
301+
}

types/howler/test/globals.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
new globalThis.Howl({ src: 'sound.mp3' });
2+
new this.Howl({ src: 'sound.mp3' });
3+
new window.Howl({ src: 'sound.mp3' });
4+
new Howl({ src: 'sound.mp3' });
5+
6+
globalThis.Howler.volume(0.8);
7+
this.Howler.volume(0.8);
8+
window.Howler.volume(0.8);
9+
Howler.volume(0.8);
10+
11+
let a: Howl = new globalThis.Howl({ src: 'sound.mp3' });
12+
let b: HowlerGlobal = globalThis.Howler;

0 commit comments

Comments
 (0)