@flighthq/audio 0.5.1-next.1069.554a2ac → 0.5.1-next.1201.9b49dee

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
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/audio`. The `@flight
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/audio@0.5.1-next.1069.554a2ac](https://github.com/flighthq/flight/tree/554a2acc3fecf189b89b0729308ff890a15c21cc/packages/audio)
17
- - [License](https://github.com/flighthq/flight/blob/554a2acc3fecf189b89b0729308ff890a15c21cc/LICENSE.md)
16
+ - [Source for @flighthq/audio@0.5.1-next.1201.9b49dee](https://github.com/flighthq/flight/tree/9b49dee3f22f6b2838c3d237edcc77bca65734f2/packages/audio)
17
+ - [License](https://github.com/flighthq/flight/blob/9b49dee3f22f6b2838c3d237edcc77bca65734f2/LICENSE.md)
@@ -1,5 +1,5 @@
1
- import type { HasMediaAudioCodec } from '@flighthq/types/contract';
2
- export declare function canPlayAudioType(host: Readonly<HasMediaAudioCodec>, mimeType: string): boolean;
1
+ import type { HostAudioProvider } from '@flighthq/types/contract';
2
+ export declare function canPlayAudioType(hostAudio: Readonly<HostAudioProvider>, mimeType: string): boolean;
3
3
  export declare function detectAudioMimeType(data: ArrayBuffer | Uint8Array): string | null;
4
4
  export declare function getAudioMimeTypeEssence(mimeType: string): string;
5
5
  export declare function getAudioMimeTypeParameter(mimeType: string, name: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"audioFormat.d.ts","sourceRoot":"","sources":["../src/audioFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG9F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CA6BjF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBvF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoB7D"}
1
+ {"version":3,"file":"audioFormat.d.ts","sourceRoot":"","sources":["../src/audioFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGlG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CA6BjF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBvF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoB7D"}
@@ -1,7 +1,7 @@
1
- export function canPlayAudioType(host, mimeType) {
1
+ export function canPlayAudioType(hostAudio, mimeType) {
2
2
  if (mimeType === '')
3
3
  return false;
4
- return host.media.audioCodec.canPlayType(mimeType);
4
+ return hostAudio.canPlayType(mimeType);
5
5
  }
6
6
  export function detectAudioMimeType(data) {
7
7
  const b = data instanceof Uint8Array ? data : new Uint8Array(data);
@@ -1 +1 @@
1
- {"version":3,"file":"audioFormat.js","sourceRoot":"","sources":["../src/audioFormat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audioFormat.js","sourceRoot":"","sources":["../src/audioFormat.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import type { AudioResource, AudioResourceUrl, HasMediaAudioCodec, HasNetHttp } from '@flighthq/types/contract';
1
+ import type { AudioResource, AudioResourceUrl, HostAudioProvider, HostNetProvider } from '@flighthq/types/contract';
2
2
  export declare function createAudioResourceFromSamples(channels: readonly Float32Array[], sampleRate: number): AudioResource;
3
3
  export declare function loadAudioResourceFromBase64(context: AudioContext, base64: string, mimeType: string, signal?: AbortSignal): Promise<AudioResource>;
4
4
  export declare function loadAudioResourceFromBlob(context: AudioContext, blob: Blob, signal?: AbortSignal): Promise<AudioResource>;
5
5
  export declare function loadAudioResourceFromBytes(context: AudioContext, bytes: Uint8Array, mimeType?: string, signal?: AbortSignal): Promise<AudioResource>;
6
- export declare function loadAudioResourceFromUrl(host: HasNetHttp, context: AudioContext, url: string, signal?: AbortSignal): Promise<AudioResource>;
7
- export declare function loadAudioResourceFromUrls(host: HasNetHttp & HasMediaAudioCodec, context: AudioContext, sources: readonly AudioResourceUrl[], signal?: AbortSignal): Promise<AudioResource>;
8
- export declare function selectAudioResourceUrl(host: Readonly<HasMediaAudioCodec>, sources: readonly AudioResourceUrl[]): string | null;
6
+ export declare function loadAudioResourceFromUrl(hostNet: Readonly<HostNetProvider>, context: AudioContext, url: string, signal?: AbortSignal): Promise<AudioResource>;
7
+ export declare function loadAudioResourceFromUrls(hostNet: Readonly<HostNetProvider>, hostAudio: Readonly<HostAudioProvider>, context: AudioContext, sources: readonly AudioResourceUrl[], signal?: AbortSignal): Promise<AudioResource>;
8
+ export declare function selectAudioResourceUrl(hostAudio: Readonly<HostAudioProvider>, sources: readonly AudioResourceUrl[]): string | null;
9
9
  //# sourceMappingURL=audioResourceFrom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audioResourceFrom.d.ts","sourceRoot":"","sources":["../src/audioResourceFrom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAWhH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAUnH;AAGD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAGxB;AAID,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,UAAU,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAIxB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAExB;AA2BD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,UAAU,GAAG,kBAAkB,EACrC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,SAAS,gBAAgB,EAAE,EACpC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,OAAO,EAAE,SAAS,gBAAgB,EAAE,GACnC,MAAM,GAAG,IAAI,CAEf"}
1
+ {"version":3,"file":"audioResourceFrom.d.ts","sourceRoot":"","sources":["../src/audioResourceFrom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAWpH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAUnH;AAGD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAGxB;AAID,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,UAAU,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAIxB;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAClC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAExB;AA2BD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAClC,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACtC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,SAAS,gBAAgB,EAAE,EACpC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACtC,OAAO,EAAE,SAAS,gBAAgB,EAAE,GACnC,MAAM,GAAG,IAAI,CAEf"}
@@ -39,12 +39,12 @@ export async function loadAudioResourceFromBytes(context, bytes, mimeType, signa
39
39
  throw new Error(`Failed to decode audio${mimeType === undefined ? '' : `: ${mimeType}`}`);
40
40
  return resource;
41
41
  }
42
- export async function loadAudioResourceFromUrl(host, context, url, signal) {
43
- return _loadAudioResourceFromUrl(host, context, url, inferAudioMimeType(url) ?? undefined, signal);
42
+ export async function loadAudioResourceFromUrl(hostNet, context, url, signal) {
43
+ return _loadAudioResourceFromUrl(hostNet, context, url, inferAudioMimeType(url) ?? undefined, signal);
44
44
  }
45
- async function _loadAudioResourceFromUrl(host, context, url, mimeType, signal) {
46
- const response = await sendNetRequest(host, { method: 'GET', responseType: 'arraybuffer', url }, signal === undefined ? undefined : { signal });
47
- // The NetBackend reports network failures and non-2xx responses alike through the response, before
45
+ async function _loadAudioResourceFromUrl(hostNet, context, url, mimeType, signal) {
46
+ const response = await sendNetRequest(hostNet, { method: 'GET', responseType: 'arraybuffer', url }, signal === undefined ? undefined : { signal });
47
+ // The HostNetProvider reports network failures and non-2xx responses alike through the response, before
48
48
  // the audio decoder can misdiagnose an HTTP error body as invalid audio. This function retains its
49
49
  // existing reject-on-failure contract; the transport itself remains caller-replaceable.
50
50
  if (!response.ok)
@@ -53,20 +53,20 @@ async function _loadAudioResourceFromUrl(host, context, url, mimeType, signal) {
53
53
  throw new Error(`Failed to load audio: ${url} (invalid body)`);
54
54
  return loadAudioResourceFromBytes(context, new Uint8Array(response.body), response.headers['content-type'] ?? mimeType, signal);
55
55
  }
56
- export async function loadAudioResourceFromUrls(host, context, sources, signal) {
57
- const selected = _selectAudioResourceSource(host, sources);
56
+ export async function loadAudioResourceFromUrls(hostNet, hostAudio, context, sources, signal) {
57
+ const selected = _selectAudioResourceSource(hostAudio, sources);
58
58
  if (selected === null)
59
59
  return createAudioResource();
60
60
  const mimeType = selected.type ?? inferAudioMimeType(selected.url) ?? undefined;
61
- return _loadAudioResourceFromUrl(host, context, selected.url, mimeType, signal);
61
+ return _loadAudioResourceFromUrl(hostNet, context, selected.url, mimeType, signal);
62
62
  }
63
- export function selectAudioResourceUrl(host, sources) {
64
- return _selectAudioResourceSource(host, sources)?.url ?? null;
63
+ export function selectAudioResourceUrl(hostAudio, sources) {
64
+ return _selectAudioResourceSource(hostAudio, sources)?.url ?? null;
65
65
  }
66
- function _selectAudioResourceSource(host, sources) {
66
+ function _selectAudioResourceSource(hostAudio, sources) {
67
67
  for (const source of sources) {
68
68
  const type = source.type ?? inferAudioMimeType(source.url) ?? '';
69
- if (hasAudioDecoder(type) || canPlayAudioType(host, type))
69
+ if (hasAudioDecoder(type) || canPlayAudioType(hostAudio, type))
70
70
  return source;
71
71
  }
72
72
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"audioResourceFrom.js","sourceRoot":"","sources":["../src/audioResourceFrom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audioResourceFrom.js","sourceRoot":"","sources":["../src/audioResourceFrom.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/audio",
3
- "version": "0.5.1-next.1069.554a2ac",
3
+ "version": "0.5.1-next.1201.9b49dee",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,9 +38,9 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/entity": "0.5.1-next.1069.554a2ac",
42
- "@flighthq/net": "0.5.1-next.1069.554a2ac",
43
- "@flighthq/types": "0.5.1-next.1069.554a2ac"
41
+ "@flighthq/entity": "0.5.1-next.1201.9b49dee",
42
+ "@flighthq/net": "0.5.1-next.1201.9b49dee",
43
+ "@flighthq/types": "0.5.1-next.1201.9b49dee"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "^5.3.0"
@@ -1,5 +1,5 @@
1
1
  import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
- import type { AudioBackend, Entity, HasMediaAudioCodec } from '@flighthq/types/contract';
2
+ import type { HostAudioProvider, Entity } from '@flighthq/types/contract';
3
3
 
4
4
  import {
5
5
  canPlayAudioType,
@@ -9,7 +9,7 @@ import {
9
9
  inferAudioMimeType,
10
10
  } from './audioFormat';
11
11
 
12
- function hostWith(canPlay: (type: string) => boolean): HasMediaAudioCodec {
12
+ function hostWith(canPlay: (type: string) => boolean): { readonly media: { readonly audioCodec: HostAudioProvider } } {
13
13
  return {
14
14
  media: {
15
15
  audioCodec: (() => {
@@ -18,22 +18,22 @@ function hostWith(canPlay: (type: string) => boolean): HasMediaAudioCodec {
18
18
  return finishEntity(out);
19
19
  })(),
20
20
  },
21
- } as HasMediaAudioCodec;
21
+ } as { readonly media: { readonly audioCodec: HostAudioProvider } };
22
22
  }
23
23
 
24
24
  describe('canPlayAudioType', () => {
25
25
  const host = hostWith((type) => type === 'audio/mpeg');
26
26
 
27
27
  it('returns false for the empty string without probing', () => {
28
- expect(canPlayAudioType(host, '')).toBe(false);
28
+ expect(canPlayAudioType(host.media.audioCodec, '')).toBe(false);
29
29
  });
30
30
 
31
31
  it('returns true for a type the backend reports as playable', () => {
32
- expect(canPlayAudioType(host, 'audio/mpeg')).toBe(true);
32
+ expect(canPlayAudioType(host.media.audioCodec, 'audio/mpeg')).toBe(true);
33
33
  });
34
34
 
35
35
  it('returns false for a type the backend cannot play', () => {
36
- expect(canPlayAudioType(host, 'audio/x-unknown')).toBe(false);
36
+ expect(canPlayAudioType(host.media.audioCodec, 'audio/x-unknown')).toBe(false);
37
37
  });
38
38
  });
39
39
 
@@ -1,5 +1,5 @@
1
1
  import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
- import type { AudioDecoder, HasMediaAudioCodec, HasNetHttp, NetBackend } from '@flighthq/types/contract';
2
+ import type { AudioDecoder, HostAudioProvider, HostNetProvider } from '@flighthq/types/contract';
3
3
 
4
4
  import { getAudioDecoderMimeTypes, registerAudioDecoder, unregisterAudioDecoder } from './audioDecoderRegistry';
5
5
  import { createAudioResource } from './audioResource';
@@ -13,18 +13,22 @@ import {
13
13
  selectAudioResourceUrl,
14
14
  } from './audioResourceFrom';
15
15
 
16
- function fakeAudioCodecHost(canPlay: (type: string) => boolean): HasMediaAudioCodec {
16
+ function fakeAudioCodecHost(canPlay: (type: string) => boolean): {
17
+ readonly media: { readonly audioCodec: HostAudioProvider };
18
+ } {
17
19
  const out = allocateEntity<any>();
18
20
  out.canPlayType = canPlay;
19
21
  return {
20
22
  media: {
21
23
  audioCodec: finishEntity(out),
22
24
  },
23
- } as HasMediaAudioCodec;
25
+ } as { readonly media: { readonly audioCodec: HostAudioProvider } };
24
26
  }
25
27
 
26
- function fakeNetHost(backend?: Pick<NetBackend, 'sendNetRequest'>): HasNetHttp {
27
- const out = allocateEntity<NetBackend>();
28
+ function fakeNetHost(backend?: Pick<HostNetProvider, 'sendNetRequest'>): {
29
+ readonly net: { readonly http: HostNetProvider };
30
+ } {
31
+ const out = allocateEntity<HostNetProvider>();
28
32
  Object.assign(
29
33
  out,
30
34
  backend ?? {
@@ -40,8 +44,10 @@ function fakeNetHost(backend?: Pick<NetBackend, 'sendNetRequest'>): HasNetHttp {
40
44
 
41
45
  function fakeNetAudioHost(
42
46
  canPlay: (type: string) => boolean,
43
- backend?: Pick<NetBackend, 'sendNetRequest'>,
44
- ): HasNetHttp & HasMediaAudioCodec {
47
+ backend?: Pick<HostNetProvider, 'sendNetRequest'>,
48
+ ): { readonly net: { readonly http: HostNetProvider } } & {
49
+ readonly media: { readonly audioCodec: HostAudioProvider };
50
+ } {
45
51
  return { ...fakeNetHost(backend), ...fakeAudioCodecHost(canPlay) };
46
52
  }
47
53
 
@@ -247,7 +253,7 @@ describe('loadAudioResourceFromUrl', () => {
247
253
  });
248
254
  const host = fakeNetHost({ sendNetRequest: mockSendNetRequest });
249
255
 
250
- const resource = await loadAudioResourceFromUrl(host, mockContext, 'sound.mp3');
256
+ const resource = await loadAudioResourceFromUrl(host.net.http, mockContext, 'sound.mp3');
251
257
 
252
258
  expect(resource.buffer).toBe(decodedBuffer);
253
259
  expect(mockSendNetRequest).toHaveBeenCalledWith(
@@ -267,7 +273,7 @@ describe('loadAudioResourceFromUrl', () => {
267
273
  url: 'sound.mp3',
268
274
  }),
269
275
  });
270
- const resource = await loadAudioResourceFromUrl(host, mockContext, 'sound.mp3');
276
+ const resource = await loadAudioResourceFromUrl(host.net.http, mockContext, 'sound.mp3');
271
277
  expect(resource.buffer).toBe(decodedBuffer);
272
278
  });
273
279
 
@@ -284,7 +290,7 @@ describe('loadAudioResourceFromUrl', () => {
284
290
  }),
285
291
  });
286
292
  await expect(
287
- loadAudioResourceFromUrl(host, { decodeAudioData } as unknown as AudioContext, 'missing.mp3'),
293
+ loadAudioResourceFromUrl(host.net.http, { decodeAudioData } as unknown as AudioContext, 'missing.mp3'),
288
294
  ).rejects.toThrow('Failed to load audio: missing.mp3 (404 Not Found)');
289
295
  expect(decodeAudioData).not.toHaveBeenCalled();
290
296
  });
@@ -302,7 +308,7 @@ describe('loadAudioResourceFromUrl', () => {
302
308
  }),
303
309
  });
304
310
  const controller = new AbortController();
305
- const promise = loadAudioResourceFromUrl(host, context, 'sound.mp3', controller.signal);
311
+ const promise = loadAudioResourceFromUrl(host.net.http, context, 'sound.mp3', controller.signal);
306
312
  await Promise.resolve();
307
313
  controller.abort(new Error('cancelled'));
308
314
  finishDecode();
@@ -313,7 +319,7 @@ describe('loadAudioResourceFromUrl', () => {
313
319
  describe('loadAudioResourceFromUrls', () => {
314
320
  it('resolves with a null-buffer resource when sources is empty', async () => {
315
321
  const host = fakeNetAudioHost(() => false);
316
- const resource = await loadAudioResourceFromUrls(host, mockContext, []);
322
+ const resource = await loadAudioResourceFromUrls(host.net.http, host.media.audioCodec, mockContext, []);
317
323
  expect(resource.buffer).toBeNull();
318
324
  });
319
325
 
@@ -328,7 +334,10 @@ describe('loadAudioResourceFromUrls', () => {
328
334
  });
329
335
  const host = fakeNetAudioHost((type) => type === 'audio/ogg', { sendNetRequest: mockSendNetRequest });
330
336
 
331
- const resource = await loadAudioResourceFromUrls(host, mockContext, [{ url: 'sound.mp3' }, { url: 'sound.ogg' }]);
337
+ const resource = await loadAudioResourceFromUrls(host.net.http, host.media.audioCodec, mockContext, [
338
+ { url: 'sound.mp3' },
339
+ { url: 'sound.ogg' },
340
+ ]);
332
341
 
333
342
  expect(resource.buffer).toBe(decodedBuffer);
334
343
  expect(mockSendNetRequest).toHaveBeenCalledWith(
@@ -352,7 +361,7 @@ describe('loadAudioResourceFromUrls', () => {
352
361
  }),
353
362
  });
354
363
 
355
- const resource = await loadAudioResourceFromUrls(host, mockContext, [
364
+ const resource = await loadAudioResourceFromUrls(host.net.http, host.media.audioCodec, mockContext, [
356
365
  { type: 'audio/vnd.acme.custom', url: 'sound.custom' },
357
366
  ]);
358
367
 
@@ -366,24 +375,23 @@ describe('selectAudioResourceUrl', () => {
366
375
  const host = fakeAudioCodecHost((type) => type === 'audio/ogg');
367
376
 
368
377
  it('returns the first source whose inferred type is playable', () => {
369
- expect(selectAudioResourceUrl(host, [{ url: 'a.mp3' }, { url: 'b.ogg' }])).toBe('b.ogg');
378
+ expect(selectAudioResourceUrl(host.media.audioCodec, [{ url: 'a.mp3' }, { url: 'b.ogg' }])).toBe('b.ogg');
370
379
  });
371
380
 
372
381
  it('honours an explicit type over the URL extension', () => {
373
- expect(selectAudioResourceUrl(host, [{ type: 'audio/ogg', url: 'stream' }])).toBe('stream');
382
+ expect(selectAudioResourceUrl(host.media.audioCodec, [{ type: 'audio/ogg', url: 'stream' }])).toBe('stream');
374
383
  });
375
384
 
376
385
  it('returns null when no source is playable', () => {
377
- expect(selectAudioResourceUrl(host, [{ url: 'a.mp3' }, { url: 'b.wav' }])).toBeNull();
386
+ expect(selectAudioResourceUrl(host.media.audioCodec, [{ url: 'a.mp3' }, { url: 'b.wav' }])).toBeNull();
378
387
  });
379
388
 
380
389
  it('returns a source handled by a registered decoder', () => {
381
390
  registerAudioDecoder('audio/vnd.acme.custom', async () => createAudioResource());
382
391
  expect(
383
- selectAudioResourceUrl(
384
- fakeAudioCodecHost(() => false),
385
- [{ type: 'audio/vnd.acme.custom', url: 'sound.custom' }],
386
- ),
392
+ selectAudioResourceUrl(fakeAudioCodecHost(() => false).media.audioCodec, [
393
+ { type: 'audio/vnd.acme.custom', url: 'sound.custom' },
394
+ ]),
387
395
  ).toBe('sound.custom');
388
396
  });
389
397
  });