@goldenratio/wolf 0.0.2 → 0.0.3
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 +1 -0
- package/package.json +2 -2
- package/target/types/howl.d.ts +5 -5
- package/target/types/types.d.ts +18 -18
- package/target/wolf.js +24 -17
- 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.3",
|
|
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,4 +1,4 @@
|
|
|
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
3
|
export declare class Howl {
|
|
4
4
|
private readonly howler;
|
|
@@ -10,7 +10,7 @@ export declare class Howl {
|
|
|
10
10
|
_pool: number;
|
|
11
11
|
_preload: boolean | "metadata" | "none";
|
|
12
12
|
_rate: number;
|
|
13
|
-
_sprite:
|
|
13
|
+
_sprite: SoundSpriteDefinitions;
|
|
14
14
|
_src: readonly string[];
|
|
15
15
|
_volume: number;
|
|
16
16
|
_xhr: HowlXHR;
|
|
@@ -107,9 +107,9 @@ export declare class Howl {
|
|
|
107
107
|
loop(loop: boolean): this;
|
|
108
108
|
loop(loop: boolean, id: number): this;
|
|
109
109
|
unload(): void;
|
|
110
|
-
on(event: HowlEventName, fn:
|
|
111
|
-
off(event?: HowlEventName, fn?:
|
|
112
|
-
once(event: HowlEventName, fn:
|
|
110
|
+
on(event: HowlEventName, fn: HowlCallback, id?: number, once?: boolean): this;
|
|
111
|
+
off(event?: HowlEventName, fn?: HowlCallback | number, id?: number): this;
|
|
112
|
+
once(event: HowlEventName, fn: HowlCallback, id?: number): this;
|
|
113
113
|
/**
|
|
114
114
|
* Starts the internal interval to fade a sound.
|
|
115
115
|
*/
|
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,7 +13,7 @@ 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;
|
|
@@ -24,23 +24,23 @@ export interface HowlOptions {
|
|
|
24
24
|
readonly pool?: number;
|
|
25
25
|
readonly preload?: boolean | "metadata" | "none";
|
|
26
26
|
readonly rate?: number;
|
|
27
|
-
readonly sprite?:
|
|
27
|
+
readonly sprite?: SoundSpriteDefinitions;
|
|
28
28
|
readonly volume?: number;
|
|
29
29
|
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?:
|
|
30
|
+
readonly onend?: HowlCallback;
|
|
31
|
+
readonly onfade?: HowlCallback;
|
|
32
|
+
readonly onload?: HowlCallback;
|
|
33
|
+
readonly onloaderror?: HowlCallback;
|
|
34
|
+
readonly onplayerror?: HowlCallback;
|
|
35
|
+
readonly onpause?: HowlCallback;
|
|
36
|
+
readonly onplay?: HowlCallback;
|
|
37
|
+
readonly onstop?: HowlCallback;
|
|
38
|
+
readonly onmute?: HowlCallback;
|
|
39
|
+
readonly onvolume?: HowlCallback;
|
|
40
|
+
readonly onrate?: HowlCallback;
|
|
41
|
+
readonly onseek?: HowlCallback;
|
|
42
|
+
readonly onunlock?: HowlCallback;
|
|
43
|
+
readonly onresume?: HowlCallback;
|
|
44
44
|
}
|
|
45
45
|
export interface WebAudioNodeWithSource extends GainNode {
|
|
46
46
|
bufferSource?: AudioBufferSourceNode;
|
package/target/wolf.js
CHANGED
|
@@ -535,38 +535,45 @@ var Sound = class {
|
|
|
535
535
|
}
|
|
536
536
|
errorListener() {
|
|
537
537
|
const self = this;
|
|
538
|
-
const
|
|
539
|
-
|
|
540
|
-
|
|
538
|
+
const sound = self._node;
|
|
539
|
+
if (sound && "duration" in sound) {
|
|
540
|
+
self.parent._emit("loaderror", self._id, sound.error ? sound.error.code.toString() : "0");
|
|
541
|
+
sound.removeEventListener("error", self._errorFn, false);
|
|
542
|
+
}
|
|
541
543
|
}
|
|
542
544
|
loadListener() {
|
|
543
545
|
const self = this;
|
|
544
546
|
const parent = self.parent;
|
|
545
|
-
const
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
parent._sprite
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
parent._state
|
|
552
|
-
|
|
553
|
-
|
|
547
|
+
const sound = self._node;
|
|
548
|
+
if (sound && "duration" in sound) {
|
|
549
|
+
parent._duration = Math.ceil(sound.duration * 10) / 10;
|
|
550
|
+
if (Object.keys(parent._sprite).length === 0) {
|
|
551
|
+
parent._sprite = { "__default": [0, parent._duration * 1e3] };
|
|
552
|
+
}
|
|
553
|
+
if (parent._state !== "loaded") {
|
|
554
|
+
parent._state = "loaded";
|
|
555
|
+
parent._emit("load");
|
|
556
|
+
parent._loadQueue();
|
|
557
|
+
}
|
|
558
|
+
sound.removeEventListener(this.howler._canPlayEvent, self._loadFn, false);
|
|
554
559
|
}
|
|
555
|
-
html.removeEventListener(this.howler._canPlayEvent, self._loadFn, false);
|
|
556
560
|
}
|
|
557
561
|
endListener() {
|
|
558
562
|
const self = this;
|
|
559
563
|
const parent = self.parent;
|
|
560
|
-
const
|
|
561
|
-
if (
|
|
562
|
-
|
|
564
|
+
const sound = self._node;
|
|
565
|
+
if (!sound) {
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
if ("duration" in sound && parent._duration === Infinity) {
|
|
569
|
+
parent._duration = Math.ceil(sound.duration * 10) / 10;
|
|
563
570
|
const defaultSprite = parent._sprite["__default"];
|
|
564
571
|
if (defaultSprite && defaultSprite[1] === Infinity) {
|
|
565
572
|
defaultSprite[1] = parent._duration * 1e3;
|
|
566
573
|
}
|
|
567
574
|
parent._ended(self);
|
|
568
575
|
}
|
|
569
|
-
|
|
576
|
+
sound.removeEventListener("ended", self._endFn, false);
|
|
570
577
|
}
|
|
571
578
|
};
|
|
572
579
|
|