@goldenratio/wolf 0.0.2 → 0.0.4
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 +2 -0
- package/package.json +2 -2
- package/target/types/howl.d.ts +15 -21
- package/target/types/howler.d.ts +10 -16
- package/target/types/sound.d.ts +3 -9
- package/target/types/types.d.ts +18 -23
- package/target/types/utils.d.ts +0 -2
- package/target/wolf.js +173 -466
- package/target/wolf.js.map +2 -2
- package/target/wolf.min.js +1 -1
- package/target/wolf.min.js.map +3 -3
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goldenratio/wolf",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "Port of howler.js in TypeScript (ESM)",
|
|
3
|
+
"version": "0.0.4",
|
|
4
|
+
"description": "Audio library for the modern web. Port of howler.js in TypeScript (ESM)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./target/wolf.js",
|
|
7
7
|
"types": "./target/types/main.d.ts",
|
package/target/types/howl.d.ts
CHANGED
|
@@ -1,29 +1,24 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { HowlCallback, HowlEventName, HowlListener, HowlOptions, HowlState, HowlXHR, SoundSpriteDefinitions, WebAudioNodeWithSource } from "./types.js";
|
|
2
2
|
import { Sound } from "./sound.js";
|
|
3
|
-
export declare class Howl {
|
|
3
|
+
export declare class Howl<TAudioSpriteKey extends string = string> {
|
|
4
4
|
private readonly howler;
|
|
5
|
-
|
|
6
|
-
_format: readonly string[] | undefined;
|
|
7
|
-
_html5: boolean;
|
|
5
|
+
readonly _preload: boolean | "metadata" | "none";
|
|
8
6
|
_muted: boolean;
|
|
9
7
|
_loop: boolean;
|
|
10
|
-
_pool: number;
|
|
11
|
-
_preload: boolean | "metadata" | "none";
|
|
12
8
|
_rate: number;
|
|
13
|
-
_sprite:
|
|
9
|
+
_sprite: SoundSpriteDefinitions;
|
|
14
10
|
_src: readonly string[];
|
|
15
11
|
_volume: number;
|
|
16
12
|
_xhr: HowlXHR;
|
|
17
13
|
_duration: number;
|
|
18
14
|
_state: HowlState;
|
|
19
15
|
_sounds: Sound[];
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
_playLock
|
|
26
|
-
_webAudio: boolean;
|
|
16
|
+
private _format;
|
|
17
|
+
private _autoplay;
|
|
18
|
+
private _pool;
|
|
19
|
+
private _endTimers;
|
|
20
|
+
private _queue;
|
|
21
|
+
private _playLock;
|
|
27
22
|
_onend: HowlListener[];
|
|
28
23
|
_onfade: HowlListener[];
|
|
29
24
|
_onload: HowlListener[];
|
|
@@ -40,7 +35,7 @@ export declare class Howl {
|
|
|
40
35
|
_onresume: HowlListener[];
|
|
41
36
|
constructor(options: HowlOptions);
|
|
42
37
|
load(): void;
|
|
43
|
-
play(spriteOrId?:
|
|
38
|
+
play(spriteOrId?: TAudioSpriteKey | "__default" | number, internal?: boolean): number | undefined;
|
|
44
39
|
state(): HowlState;
|
|
45
40
|
/**
|
|
46
41
|
* Check if a sound (or any sound) is playing.
|
|
@@ -100,16 +95,16 @@ export declare class Howl {
|
|
|
100
95
|
*/
|
|
101
96
|
fade(from: number, to: number, len: number, id?: number): this;
|
|
102
97
|
/**
|
|
103
|
-
* loop()
|
|
98
|
+
* loop()
|
|
104
99
|
*/
|
|
105
100
|
loop(): boolean;
|
|
106
101
|
loop(id: number): boolean;
|
|
107
102
|
loop(loop: boolean): this;
|
|
108
103
|
loop(loop: boolean, id: number): this;
|
|
109
104
|
unload(): void;
|
|
110
|
-
on(event: HowlEventName, fn:
|
|
111
|
-
off(event?: HowlEventName, fn?:
|
|
112
|
-
once(event: HowlEventName, fn:
|
|
105
|
+
on(event: HowlEventName, fn: HowlCallback, id?: number, once?: boolean): this;
|
|
106
|
+
off(event?: HowlEventName, fn?: HowlCallback | number, id?: number): this;
|
|
107
|
+
once(event: HowlEventName, fn: HowlCallback, id?: number): this;
|
|
113
108
|
/**
|
|
114
109
|
* Starts the internal interval to fade a sound.
|
|
115
110
|
*/
|
|
@@ -128,5 +123,4 @@ export declare class Howl {
|
|
|
128
123
|
_getSoundIds(id?: number): number[];
|
|
129
124
|
_refreshBuffer(sound: Sound): void;
|
|
130
125
|
_cleanBuffer(node: WebAudioNodeWithSource): void;
|
|
131
|
-
_clearSound(node: HTMLAudioElement): void;
|
|
132
126
|
}
|
package/target/types/howler.d.ts
CHANGED
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
import type { Howl } from "./howl.js";
|
|
2
|
-
import type { HowlerState
|
|
2
|
+
import type { HowlerState } from "./types.js";
|
|
3
3
|
declare class HowlerGlobal {
|
|
4
|
+
private _codecs;
|
|
5
|
+
private _audioUnlocked?;
|
|
6
|
+
private _mobileUnloaded?;
|
|
7
|
+
private _suspendTimer?;
|
|
8
|
+
private _resumeAfterSuspend?;
|
|
9
|
+
readonly _navigator?: Navigator;
|
|
4
10
|
_counter: number;
|
|
5
|
-
_html5AudioPool: Html5AudioUnlocked[];
|
|
6
|
-
html5PoolSize: number;
|
|
7
|
-
_codecs: Record<string, boolean>;
|
|
8
11
|
_howls: Howl[];
|
|
9
12
|
_muted: boolean;
|
|
10
13
|
_volume: number;
|
|
11
|
-
_canPlayEvent: "canplaythrough" | "canplay";
|
|
12
|
-
readonly _navigator?: Navigator;
|
|
13
|
-
_audioUnlocked?: boolean;
|
|
14
|
-
_mobileUnloaded?: boolean;
|
|
15
14
|
_scratchBuffer?: AudioBuffer;
|
|
16
|
-
_suspendTimer?: ReturnType<typeof setTimeout>;
|
|
17
|
-
_resumeAfterSuspend?: boolean;
|
|
18
15
|
cache: Record<string, AudioBuffer>;
|
|
19
|
-
masterGain?: GainNode;
|
|
20
16
|
noAudio: boolean;
|
|
21
|
-
usingWebAudio: boolean;
|
|
22
17
|
autoSuspend: boolean;
|
|
23
|
-
ctx?: AudioContext;
|
|
24
18
|
autoUnlock: boolean;
|
|
25
19
|
state: HowlerState;
|
|
20
|
+
masterGain?: GainNode;
|
|
21
|
+
ctx?: AudioContext;
|
|
26
22
|
constructor();
|
|
27
23
|
volume(): number;
|
|
28
24
|
volume(volume: number): this;
|
|
@@ -31,10 +27,8 @@ declare class HowlerGlobal {
|
|
|
31
27
|
unload(): this;
|
|
32
28
|
codecs(ext: string): boolean;
|
|
33
29
|
_setup(): void;
|
|
34
|
-
_setupCodecs
|
|
30
|
+
private _setupCodecs;
|
|
35
31
|
_unlockAudio(): void;
|
|
36
|
-
_obtainHtml5Audio(): Html5AudioUnlocked;
|
|
37
|
-
_releaseHtml5Audio(audio: Html5AudioUnlocked): this;
|
|
38
32
|
_autoSuspend(): void;
|
|
39
33
|
_autoResume(): void;
|
|
40
34
|
}
|
package/target/types/sound.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Howl } from "./howl.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { WebAudioNodeWithSource } from "./types.js";
|
|
3
3
|
import type { Howler } from "./howler.js";
|
|
4
4
|
export declare class Sound {
|
|
5
5
|
private readonly howler;
|
|
@@ -14,19 +14,13 @@ export declare class Sound {
|
|
|
14
14
|
_ended: boolean;
|
|
15
15
|
_sprite: string;
|
|
16
16
|
_id: number;
|
|
17
|
-
_node?:
|
|
18
|
-
_panner?:
|
|
17
|
+
_node?: WebAudioNodeWithSource;
|
|
18
|
+
_panner?: WebAudioNodeWithSource;
|
|
19
19
|
_start: number;
|
|
20
20
|
_stop: number;
|
|
21
21
|
_playStart: number;
|
|
22
22
|
_interval?: ReturnType<typeof setTimeout>;
|
|
23
23
|
_fadeTo?: number;
|
|
24
|
-
_errorFn?: (ev: Event) => void;
|
|
25
|
-
_loadFn?: (ev: Event) => void;
|
|
26
|
-
_endFn?: (ev: Event) => void;
|
|
27
24
|
constructor(parent: Howl, howler: typeof Howler);
|
|
28
25
|
reset(): this;
|
|
29
|
-
private errorListener;
|
|
30
|
-
private loadListener;
|
|
31
|
-
private endListener;
|
|
32
26
|
}
|
package/target/types/types.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export type HowlState = "unloaded" | "loading" | "loaded";
|
|
2
2
|
export type HowlerState = "suspended" | "suspending" | "running";
|
|
3
3
|
export type HowlEventName = "end" | "fade" | "load" | "loaderror" | "playerror" | "pause" | "play" | "stop" | "mute" | "volume" | "rate" | "seek" | "unlock" | "resume";
|
|
4
|
-
export type
|
|
4
|
+
export type HowlCallback = (soundId?: number, errorMsg?: string) => void;
|
|
5
5
|
export interface HowlListener {
|
|
6
6
|
readonly id?: number;
|
|
7
|
-
readonly fn:
|
|
7
|
+
readonly fn: HowlCallback;
|
|
8
8
|
readonly once?: boolean;
|
|
9
9
|
}
|
|
10
10
|
export interface HowlXHR {
|
|
@@ -13,40 +13,35 @@ export interface HowlXHR {
|
|
|
13
13
|
readonly headers?: Record<string, string>;
|
|
14
14
|
}
|
|
15
15
|
export type HowlSpriteDef = [startMs: number, durationMs: number, loop?: boolean];
|
|
16
|
-
export type
|
|
16
|
+
export type SoundSpriteDefinitions = Record<string, HowlSpriteDef>;
|
|
17
17
|
export interface HowlOptions {
|
|
18
18
|
readonly src: string | readonly string[];
|
|
19
19
|
readonly autoplay?: boolean;
|
|
20
20
|
readonly format?: string | readonly string[];
|
|
21
|
-
readonly html5?: boolean;
|
|
22
21
|
readonly mute?: boolean;
|
|
23
22
|
readonly loop?: boolean;
|
|
24
23
|
readonly pool?: number;
|
|
25
24
|
readonly preload?: boolean | "metadata" | "none";
|
|
26
25
|
readonly rate?: number;
|
|
27
|
-
readonly sprite?:
|
|
26
|
+
readonly sprite?: SoundSpriteDefinitions;
|
|
28
27
|
readonly volume?: number;
|
|
29
28
|
readonly xhr?: Partial<HowlXHR>;
|
|
30
|
-
readonly onend?:
|
|
31
|
-
readonly onfade?:
|
|
32
|
-
readonly onload?:
|
|
33
|
-
readonly onloaderror?:
|
|
34
|
-
readonly onplayerror?:
|
|
35
|
-
readonly onpause?:
|
|
36
|
-
readonly onplay?:
|
|
37
|
-
readonly onstop?:
|
|
38
|
-
readonly onmute?:
|
|
39
|
-
readonly onvolume?:
|
|
40
|
-
readonly onrate?:
|
|
41
|
-
readonly onseek?:
|
|
42
|
-
readonly onunlock?:
|
|
43
|
-
readonly onresume?:
|
|
29
|
+
readonly onend?: HowlCallback;
|
|
30
|
+
readonly onfade?: HowlCallback;
|
|
31
|
+
readonly onload?: HowlCallback;
|
|
32
|
+
readonly onloaderror?: HowlCallback;
|
|
33
|
+
readonly onplayerror?: HowlCallback;
|
|
34
|
+
readonly onpause?: HowlCallback;
|
|
35
|
+
readonly onplay?: HowlCallback;
|
|
36
|
+
readonly onstop?: HowlCallback;
|
|
37
|
+
readonly onmute?: HowlCallback;
|
|
38
|
+
readonly onvolume?: HowlCallback;
|
|
39
|
+
readonly onrate?: HowlCallback;
|
|
40
|
+
readonly onseek?: HowlCallback;
|
|
41
|
+
readonly onunlock?: HowlCallback;
|
|
42
|
+
readonly onresume?: HowlCallback;
|
|
44
43
|
}
|
|
45
44
|
export interface WebAudioNodeWithSource extends GainNode {
|
|
46
45
|
bufferSource?: AudioBufferSourceNode;
|
|
47
46
|
paused?: boolean;
|
|
48
47
|
}
|
|
49
|
-
export interface Html5AudioUnlocked extends HTMLAudioElement {
|
|
50
|
-
_unlocked?: boolean;
|
|
51
|
-
}
|
|
52
|
-
export type SoundNode = WebAudioNodeWithSource | Html5AudioUnlocked;
|
package/target/types/utils.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { Howl } from "./howl.js";
|
|
2
|
-
import type { Html5AudioUnlocked, SoundNode } from "./types.js";
|
|
3
2
|
import type { Howler } from "./howler.js";
|
|
4
|
-
export declare function isHtml5Audio(node: SoundNode): node is Html5AudioUnlocked;
|
|
5
3
|
export declare function loadBuffer(howl: Howl, howler: typeof Howler): void;
|
|
6
4
|
export declare function safeXhrSend(xhr: XMLHttpRequest): void;
|
|
7
5
|
export declare function loadSound(self: Howl, buffer?: AudioBuffer): void;
|