@goldenratio/wolf 0.0.3 → 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 CHANGED
@@ -6,6 +6,7 @@
6
6
  - Written in TypeScript (better type safety)
7
7
  - Compatible with [Google Closure Compiler](https://github.com/google/closure-compiler)
8
8
  - ESM only
9
+ - WebAudio only, removed HTML5 audio
9
10
  - Minor bug fixes
10
11
 
11
12
  ## Install
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goldenratio/wolf",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
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",
@@ -1,14 +1,10 @@
1
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
- _autoplay: boolean;
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
9
  _sprite: SoundSpriteDefinitions;
14
10
  _src: readonly string[];
@@ -17,13 +13,12 @@ export declare class Howl {
17
13
  _duration: number;
18
14
  _state: HowlState;
19
15
  _sounds: Sound[];
20
- _endTimers: Record<number, ReturnType<typeof setTimeout> | (() => void)>;
21
- _queue: Array<{
22
- event: string;
23
- action: () => void;
24
- }>;
25
- _playLock: boolean;
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?: string | number, internal?: boolean): number | undefined;
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,7 +95,7 @@ export declare class Howl {
100
95
  */
101
96
  fade(from: number, to: number, len: number, id?: number): this;
102
97
  /**
103
- * loop() from your snippet.
98
+ * loop()
104
99
  */
105
100
  loop(): boolean;
106
101
  loop(id: number): boolean;
@@ -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
  }
@@ -1,28 +1,24 @@
1
1
  import type { Howl } from "./howl.js";
2
- import type { HowlerState, Html5AudioUnlocked } from "./types.js";
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(): void;
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
  }
@@ -1,5 +1,5 @@
1
1
  import type { Howl } from "./howl.js";
2
- import type { SoundNode } from "./types.js";
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?: SoundNode;
18
- _panner?: AudioNode;
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
  }
@@ -18,7 +18,6 @@ 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;
@@ -46,7 +45,3 @@ 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;
@@ -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;