react-native-audio-api 0.10.0 → 0.10.2

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.
Files changed (75) hide show
  1. package/android/src/main/java/com/swmansion/audioapi/system/AudioFocusListener.kt +2 -0
  2. package/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +1 -0
  3. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +3 -3
  4. package/common/cpp/test/src/AudioParamTest.cpp +1 -1
  5. package/common/cpp/test/src/AudioScheduledSourceTest.cpp +134 -0
  6. package/common/cpp/test/src/ConstantSourceTest.cpp +1 -1
  7. package/common/cpp/test/src/GainTest.cpp +1 -1
  8. package/common/cpp/test/src/MockAudioEventHandlerRegistry.h +4 -4
  9. package/common/cpp/test/src/OscillatorTest.cpp +1 -1
  10. package/common/cpp/test/src/StereoPannerTest.cpp +1 -1
  11. package/common/cpp/test/src/biquad/BiquadFilterTest.h +1 -1
  12. package/ios/audioapi/ios/core/IOSAudioRecorder.h +2 -1
  13. package/lib/commonjs/AudioAPIModule/AudioAPIModule.js +90 -0
  14. package/lib/commonjs/AudioAPIModule/AudioAPIModule.js.map +1 -0
  15. package/lib/commonjs/AudioAPIModule/globals.d.js +6 -0
  16. package/lib/commonjs/AudioAPIModule/globals.d.js.map +1 -0
  17. package/lib/commonjs/AudioAPIModule/index.js +14 -0
  18. package/lib/commonjs/AudioAPIModule/index.js.map +1 -0
  19. package/lib/commonjs/api.js +14 -24
  20. package/lib/commonjs/api.js.map +1 -1
  21. package/lib/commonjs/core/AudioContext.js +4 -7
  22. package/lib/commonjs/core/AudioContext.js.map +1 -1
  23. package/lib/commonjs/core/BaseAudioContext.js +8 -7
  24. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  25. package/lib/commonjs/core/OfflineAudioContext.js +3 -6
  26. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  27. package/lib/commonjs/system/AudioManager.js +1 -7
  28. package/lib/commonjs/system/AudioManager.js.map +1 -1
  29. package/lib/commonjs/utils/index.js +9 -22
  30. package/lib/commonjs/utils/index.js.map +1 -1
  31. package/lib/module/AudioAPIModule/AudioAPIModule.js +87 -0
  32. package/lib/module/AudioAPIModule/AudioAPIModule.js.map +1 -0
  33. package/lib/module/AudioAPIModule/globals.d.js +4 -0
  34. package/lib/module/AudioAPIModule/globals.d.js.map +1 -0
  35. package/lib/module/AudioAPIModule/index.js +4 -0
  36. package/lib/module/AudioAPIModule/index.js.map +1 -0
  37. package/lib/module/api.js +17 -28
  38. package/lib/module/api.js.map +1 -1
  39. package/lib/module/core/AudioContext.js +4 -7
  40. package/lib/module/core/AudioContext.js.map +1 -1
  41. package/lib/module/core/BaseAudioContext.js +9 -8
  42. package/lib/module/core/BaseAudioContext.js.map +1 -1
  43. package/lib/module/core/OfflineAudioContext.js +3 -6
  44. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  45. package/lib/module/system/AudioManager.js +1 -7
  46. package/lib/module/system/AudioManager.js.map +1 -1
  47. package/lib/module/utils/index.js +8 -21
  48. package/lib/module/utils/index.js.map +1 -1
  49. package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts +36 -0
  50. package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts.map +1 -0
  51. package/lib/typescript/AudioAPIModule/index.d.ts +2 -0
  52. package/lib/typescript/AudioAPIModule/index.d.ts.map +1 -0
  53. package/lib/typescript/api.d.ts +17 -26
  54. package/lib/typescript/api.d.ts.map +1 -1
  55. package/lib/typescript/core/AudioContext.d.ts +1 -1
  56. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  57. package/lib/typescript/core/BaseAudioContext.d.ts +4 -4
  58. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  59. package/lib/typescript/core/OfflineAudioContext.d.ts +1 -1
  60. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  61. package/lib/typescript/system/AudioManager.d.ts +2 -2
  62. package/lib/typescript/system/AudioManager.d.ts.map +1 -1
  63. package/lib/typescript/utils/index.d.ts +1 -11
  64. package/lib/typescript/utils/index.d.ts.map +1 -1
  65. package/package.json +6 -2
  66. package/scripts/validate-worklets-version.js +4 -5
  67. package/src/AudioAPIModule/AudioAPIModule.ts +122 -0
  68. package/src/AudioAPIModule/globals.d.ts +35 -0
  69. package/src/AudioAPIModule/index.ts +1 -0
  70. package/src/api.ts +20 -72
  71. package/src/core/AudioContext.ts +4 -7
  72. package/src/core/BaseAudioContext.ts +58 -47
  73. package/src/core/OfflineAudioContext.ts +4 -7
  74. package/src/system/AudioManager.ts +9 -19
  75. package/src/utils/index.ts +9 -35
@@ -0,0 +1,36 @@
1
+ import type { ShareableWorkletCallback } from '../interfaces';
2
+ interface WorkletRuntime {
3
+ __hostObjectWorkletRuntime: never;
4
+ readonly name: string;
5
+ }
6
+ interface IWorkletsModule {
7
+ makeShareableCloneRecursive: (workletCallback: ShareableWorkletCallback) => ShareableWorkletCallback;
8
+ createWorkletRuntime: (runtimeName: string) => WorkletRuntime;
9
+ }
10
+ declare class AudioAPIModule {
11
+ #private;
12
+ supportedWorkletsVersion: string[];
13
+ constructor();
14
+ get workletsModule(): IWorkletsModule | null;
15
+ /**
16
+ * Indicates whether react-native-worklets are installed in matching version,
17
+ * for usage with react-native-audio-api.
18
+ */
19
+ get canUseWorklets(): boolean;
20
+ /** Returns the installed worklets version or 'unknown'. */
21
+ get workletsVersion(): string;
22
+ /**
23
+ * Indicates whether react-native-worklets are installed, regardless of
24
+ * version support. Useful for asserting compatibility.
25
+ */
26
+ get areWorkletsAvailable(): boolean;
27
+ /**
28
+ * Indicates whether the installed react-native-worklets version is supported.
29
+ * Useful for asserting compatibility.
30
+ */
31
+ get isWorkletsVersionSupported(): boolean;
32
+ createAudioRuntime(): WorkletRuntime | null;
33
+ }
34
+ declare const _default: AudioAPIModule;
35
+ export default _default;
36
+ //# sourceMappingURL=AudioAPIModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioAPIModule.d.ts","sourceRoot":"","sources":["../../../src/AudioAPIModule/AudioAPIModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAK9D,UAAU,cAAc;IACtB,0BAA0B,EAAE,KAAK,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,eAAe;IACvB,2BAA2B,EAAE,CAC3B,eAAe,EAAE,wBAAwB,KACtC,wBAAwB,CAAC;IAE9B,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,cAAc,CAAC;CAC/D;AAED,cAAM,cAAc;;IAMX,wBAAwB,WAAsB;;IAsDrD,IAAI,cAAc,IAAI,eAAe,GAAG,IAAI,CAE3C;IAED;;;OAGG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,2DAA2D;IAC3D,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACH,IAAI,oBAAoB,IAAI,OAAO,CAElC;IAED;;;OAGG;IACH,IAAI,0BAA0B,IAAI,OAAO,CAGxC;IAEM,kBAAkB,IAAI,cAAc,GAAG,IAAI;CAOnD;;AAED,wBAAoC"}
@@ -0,0 +1,2 @@
1
+ export { default } from './AudioAPIModule';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AudioAPIModule/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,41 +1,32 @@
1
- import { AudioRecorderOptions } from './types';
2
- import type { IAudioContext, IAudioDecoder, IAudioRecorder, IAudioStretcher, IOfflineAudioContext, IAudioEventEmitter } from './interfaces';
3
- declare global {
4
- var createAudioContext: (sampleRate: number, initSuspended: boolean, audioWorkletRuntime: any) => IAudioContext;
5
- var createOfflineAudioContext: (numberOfChannels: number, length: number, sampleRate: number, audioWorkletRuntime: any) => IOfflineAudioContext;
6
- var createAudioRecorder: (options: AudioRecorderOptions) => IAudioRecorder;
7
- var createAudioDecoder: () => IAudioDecoder;
8
- var createAudioStretcher: () => IAudioStretcher;
9
- var AudioEventEmitter: IAudioEventEmitter;
10
- }
11
- export { default as WorkletNode } from './core/WorkletNode';
12
- export { default as WorkletSourceNode } from './core/WorkletSourceNode';
13
- export { default as WorkletProcessingNode } from './core/WorkletProcessingNode';
14
- export { default as RecorderAdapterNode } from './core/RecorderAdapterNode';
1
+ import './AudioAPIModule';
2
+ export { default as AnalyserNode } from './core/AnalyserNode';
15
3
  export { default as AudioBuffer } from './core/AudioBuffer';
16
- export { default as AudioBufferSourceNode } from './core/AudioBufferSourceNode';
17
4
  export { default as AudioBufferQueueSourceNode } from './core/AudioBufferQueueSourceNode';
5
+ export { default as AudioBufferSourceNode } from './core/AudioBufferSourceNode';
18
6
  export { default as AudioContext } from './core/AudioContext';
19
- export { default as OfflineAudioContext } from './core/OfflineAudioContext';
7
+ export { decodeAudioData, decodePCMInBase64 } from './core/AudioDecoder';
20
8
  export { default as AudioDestinationNode } from './core/AudioDestinationNode';
21
9
  export { default as AudioNode } from './core/AudioNode';
22
- export { default as AnalyserNode } from './core/AnalyserNode';
23
10
  export { default as AudioParam } from './core/AudioParam';
11
+ export { default as AudioRecorder } from './core/AudioRecorder';
24
12
  export { default as AudioScheduledSourceNode } from './core/AudioScheduledSourceNode';
13
+ export { default as changePlaybackSpeed } from './core/AudioStretcher';
25
14
  export { default as BaseAudioContext } from './core/BaseAudioContext';
26
15
  export { default as BiquadFilterNode } from './core/BiquadFilterNode';
16
+ export { default as ConstantSourceNode } from './core/ConstantSourceNode';
17
+ export { default as ConvolverNode } from './core/ConvolverNode';
27
18
  export { default as GainNode } from './core/GainNode';
19
+ export { default as OfflineAudioContext } from './core/OfflineAudioContext';
28
20
  export { default as OscillatorNode } from './core/OscillatorNode';
21
+ export { default as RecorderAdapterNode } from './core/RecorderAdapterNode';
29
22
  export { default as StereoPannerNode } from './core/StereoPannerNode';
30
- export { default as AudioRecorder } from './core/AudioRecorder';
31
23
  export { default as StreamerNode } from './core/StreamerNode';
32
- export { default as ConstantSourceNode } from './core/ConstantSourceNode';
33
- export { default as AudioManager } from './system';
34
- export { default as ConvolverNode } from './core/ConvolverNode';
24
+ export { default as WorkletNode } from './core/WorkletNode';
25
+ export { default as WorkletProcessingNode } from './core/WorkletProcessingNode';
26
+ export { default as WorkletSourceNode } from './core/WorkletSourceNode';
35
27
  export { default as useSystemVolume } from './hooks/useSystemVolume';
36
- export { decodeAudioData, decodePCMInBase64 } from './core/AudioDecoder';
37
- export { default as changePlaybackSpeed } from './core/AudioStretcher';
38
- export { OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, WindowType, PeriodicWaveConstraints, AudioWorkletRuntime, } from './types';
39
- export { IOSCategory, IOSMode, IOSOption, SessionOptions, MediaState, LockScreenInfo, PermissionStatus, } from './system/types';
40
- export { IndexSizeError, InvalidAccessError, InvalidStateError, RangeError, NotSupportedError, } from './errors';
28
+ export { default as AudioManager } from './system';
29
+ export { AudioWorkletRuntime, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, OscillatorType, PeriodicWaveConstraints, WindowType, } from './types';
30
+ export { IOSCategory, IOSMode, IOSOption, LockScreenInfo, MediaState, PermissionStatus, SessionOptions, } from './system/types';
31
+ export { IndexSizeError, InvalidAccessError, InvalidStateError, NotSupportedError, RangeError, } from './errors';
41
32
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,WAAW,EACX,OAAO,EACP,SAAS,EACT,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,GACX,MAAM,UAAU,CAAC"}
@@ -1,5 +1,5 @@
1
- import BaseAudioContext from './BaseAudioContext';
2
1
  import { AudioContextOptions } from '../types';
2
+ import BaseAudioContext from './BaseAudioContext';
3
3
  export default class AudioContext extends BaseAudioContext {
4
4
  constructor(options?: AudioContextOptions);
5
5
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"AudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/AudioContext.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAI/C,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,gBAAgB;gBAC5C,OAAO,CAAC,EAAE,mBAAmB;IAyBnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAGlC"}
1
+ {"version":3,"file":"AudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/AudioContext.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,gBAAgB;gBAC5C,OAAO,CAAC,EAAE,mBAAmB;IAsBnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAGlC"}
@@ -1,15 +1,13 @@
1
1
  import { IBaseAudioContext } from '../interfaces';
2
- import { AudioBufferBaseSourceNodeOptions, ContextState, PeriodicWaveConstraints, AudioWorkletRuntime, ConvolverNodeOptions } from '../types';
3
- import WorkletSourceNode from './WorkletSourceNode';
4
- import WorkletProcessingNode from './WorkletProcessingNode';
2
+ import { AudioBufferBaseSourceNodeOptions, AudioWorkletRuntime, ContextState, ConvolverNodeOptions, PeriodicWaveConstraints } from '../types';
5
3
  import AnalyserNode from './AnalyserNode';
6
4
  import AudioBuffer from './AudioBuffer';
7
5
  import AudioBufferQueueSourceNode from './AudioBufferQueueSourceNode';
8
- import ConvolverNode from './ConvolverNode';
9
6
  import AudioBufferSourceNode from './AudioBufferSourceNode';
10
7
  import AudioDestinationNode from './AudioDestinationNode';
11
8
  import BiquadFilterNode from './BiquadFilterNode';
12
9
  import ConstantSourceNode from './ConstantSourceNode';
10
+ import ConvolverNode from './ConvolverNode';
13
11
  import GainNode from './GainNode';
14
12
  import OscillatorNode from './OscillatorNode';
15
13
  import PeriodicWave from './PeriodicWave';
@@ -17,6 +15,8 @@ import RecorderAdapterNode from './RecorderAdapterNode';
17
15
  import StereoPannerNode from './StereoPannerNode';
18
16
  import StreamerNode from './StreamerNode';
19
17
  import WorkletNode from './WorkletNode';
18
+ import WorkletProcessingNode from './WorkletProcessingNode';
19
+ import WorkletSourceNode from './WorkletSourceNode';
20
20
  export default class BaseAudioContext {
21
21
  readonly destination: AudioDestinationNode;
22
22
  readonly sampleRate: number;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/BaseAudioContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/BaseAudioContext.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import BaseAudioContext from './BaseAudioContext';
2
1
  import { OfflineAudioContextOptions } from '../types';
3
2
  import AudioBuffer from './AudioBuffer';
3
+ import BaseAudioContext from './BaseAudioContext';
4
4
  export default class OfflineAudioContext extends BaseAudioContext {
5
5
  private isSuspended;
6
6
  private isRendering;
@@ -1 +1 @@
1
- {"version":3,"file":"OfflineAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/OfflineAudioContext.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,gBAAgB;IAC/D,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,0BAA0B;gBACnC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAsClE,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAkB5B,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsBhD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;CAa7C"}
1
+ {"version":3,"file":"OfflineAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/OfflineAudioContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,gBAAgB;IAC/D,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,0BAA0B;gBACnC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAmClE,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAkB5B,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsBhD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;CAa7C"}
@@ -1,6 +1,6 @@
1
- import { SessionOptions, LockScreenInfo, PermissionStatus, AudioDevicesInfo } from './types';
2
- import { SystemEventName, SystemEventCallback, RemoteCommandEventName } from '../events/types';
3
1
  import { AudioEventSubscription } from '../events';
2
+ import { RemoteCommandEventName, SystemEventCallback, SystemEventName } from '../events/types';
3
+ import { AudioDevicesInfo, LockScreenInfo, PermissionStatus, SessionOptions } from './types';
4
4
  declare class AudioManager {
5
5
  private readonly audioEventEmitter;
6
6
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"AudioManager.d.ts","sourceRoot":"","sources":["../../../src/system/AudioManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAqB,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAYtE,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;;IAKtD,4BAA4B,IAAI,MAAM;IAItC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3D,sBAAsB,CAAC,OAAO,EAAE,cAAc;IAS9C,wBAAwB;IAIxB,iBAAiB,CAAC,IAAI,EAAE,cAAc;IAItC,mBAAmB;IAInB,yBAAyB,CAAC,OAAO,EAAE,OAAO;IAI1C;;;;;;;;;;;;OAYG;IACH,sBAAsB,CAAC,OAAO,EAAE,OAAO;IAIvC,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAIrC,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO;IAIlE,sBAAsB,CAAC,IAAI,SAAS,eAAe,EACjD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAClC,sBAAsB;IAInB,2BAA2B,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIxD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAItD,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAGlD;;AAED,wBAAkC"}
1
+ {"version":3,"file":"AudioManager.d.ts","sourceRoot":"","sources":["../../../src/system/AudioManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;;IAKtD,4BAA4B,IAAI,MAAM;IAItC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3D,sBAAsB,CAAC,OAAO,EAAE,cAAc;IAS9C,wBAAwB;IAIxB,iBAAiB,CAAC,IAAI,EAAE,cAAc;IAItC,mBAAmB;IAInB,yBAAyB,CAAC,OAAO,EAAE,OAAO;IAI1C;;;;;;;;;;;;OAYG;IACH,sBAAsB,CAAC,OAAO,EAAE,OAAO;IAIvC,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAIrC,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO;IAIlE,sBAAsB,CAAC,IAAI,SAAS,eAAe,EACjD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAClC,sBAAsB;IAInB,2BAA2B,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIxD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAItD,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAGlD;;AAED,wBAAkC"}
@@ -1,13 +1,3 @@
1
- import type { ShareableWorkletCallback } from '../interfaces';
2
- interface SimplifiedWorkletModule {
3
- makeShareableCloneRecursive: (workletCallback: ShareableWorkletCallback) => ShareableWorkletCallback;
4
- createWorkletRuntime: (options?: any) => any;
5
- }
6
- export declare function clamp(value: number, min: number, max: number): number;
7
- export declare let isWorkletsVersionSupported: boolean;
8
- export declare let workletsVersion: string;
9
- export declare const supportedWorkletsVersions: string[];
10
- export declare let workletsModule: SimplifiedWorkletModule;
11
1
  export declare function assertWorkletsEnabled(): void;
12
- export {};
2
+ export declare function clamp(value: number, min: number, max: number): number;
13
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,UAAU,uBAAuB;IAC/B,2BAA2B,EAAE,CAC3B,eAAe,EAAE,wBAAwB,KACtC,wBAAwB,CAAC;IAG9B,oBAAoB,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;CAC9C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAGD,eAAO,IAAI,0BAA0B,SAAQ,CAAC;AAC9C,eAAO,IAAI,eAAe,QAAY,CAAC;AACvC,eAAO,MAAM,yBAAyB,UAAqB,CAAC;AAC5D,eAAO,IAAI,cAAc,EAAE,uBAAuB,CAAC;AAEnD,wBAAgB,qBAAqB,SAWpC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,SAapC;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.10.0",
3
+ "version": "0.10.2",
4
4
  "description": "react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification",
5
5
  "bin": {
6
6
  "setup-rn-audio-api-web": "./scripts/setup-rn-audio-api-web.js"
@@ -84,7 +84,7 @@
84
84
  "peerDependencies": {
85
85
  "react": "*",
86
86
  "react-native": "*",
87
- "react-native-worklets": "~0.6.0"
87
+ "react-native-worklets": "*"
88
88
  },
89
89
  "devDependencies": {
90
90
  "@babel/cli": "^7.20.0",
@@ -107,6 +107,7 @@
107
107
  "@types/node": "^18.0.0",
108
108
  "@types/react": "^19.1.1",
109
109
  "@types/react-test-renderer": "^19.1.0",
110
+ "@types/semver": "7.7.1",
110
111
  "babel-plugin-module-resolver": "^4.1.0",
111
112
  "commitlint": "^17.0.2",
112
113
  "del-cli": "^5.1.0",
@@ -158,5 +159,8 @@
158
159
  "type": "module-legacy",
159
160
  "languages": "cpp",
160
161
  "version": "0.37.1"
162
+ },
163
+ "dependencies": {
164
+ "semver": "^7.7.3"
161
165
  }
162
166
  }
@@ -1,9 +1,8 @@
1
1
  'use strict';
2
+
2
3
  const semverPrerelease = require('semver/functions/prerelease');
3
- const validWorkletsVersions = [
4
- '0.6.0',
5
- '0.6.1',
6
- ];
4
+
5
+ const validWorkletsVersions = ['0.6.0', '0.6.1'];
7
6
 
8
7
  function validateVersion() {
9
8
  let workletsVersion;
@@ -22,7 +21,7 @@ function validateVersion() {
22
21
 
23
22
  if (!validateVersion()) {
24
23
  console.warn(
25
- '[RNAudioApi] Incompatible version of react-native-audio-worklets detected. Please install a compatible version if you want to use worklet nodes in react-native-audio-api.',
24
+ '[RNAudioApi] Incompatible version of react-native-audio-worklets detected. Please install a compatible version if you want to use worklet nodes in react-native-audio-api.'
26
25
  );
27
26
  process.exit(1);
28
27
  }
@@ -0,0 +1,122 @@
1
+ import type { ShareableWorkletCallback } from '../interfaces';
2
+ import { NativeAudioAPIModule } from '../specs';
3
+
4
+ // Hint: Copied from react-native-worklets
5
+ // Doesn't really matter what is inside, just need a unique type
6
+ interface WorkletRuntime {
7
+ __hostObjectWorkletRuntime: never;
8
+ readonly name: string;
9
+ }
10
+
11
+ interface IWorkletsModule {
12
+ makeShareableCloneRecursive: (
13
+ workletCallback: ShareableWorkletCallback
14
+ ) => ShareableWorkletCallback;
15
+
16
+ createWorkletRuntime: (runtimeName: string) => WorkletRuntime;
17
+ }
18
+
19
+ class AudioAPIModule {
20
+ #workletsModule_: IWorkletsModule | null = null;
21
+ #canUseWorklets_ = false;
22
+ #workletsVersion = 'unknown';
23
+ #workletsAvailable_ = false;
24
+
25
+ public supportedWorkletsVersion = ['0.6.0', '0.6.1'];
26
+
27
+ constructor() {
28
+ // Important! Verify and import worklets first
29
+ // otherwise the native module installation might crash
30
+ // if react-native-worklets is not imported before audio-api
31
+ this.#verifyWorklets();
32
+
33
+ if (this.#verifyInstallation()) {
34
+ return;
35
+ }
36
+
37
+ if (!NativeAudioAPIModule) {
38
+ throw new Error(
39
+ `Failed to install react-native-audio-api: The native module could not be found.`
40
+ );
41
+ }
42
+
43
+ NativeAudioAPIModule.install();
44
+ }
45
+
46
+ #verifyWorklets(): boolean {
47
+ try {
48
+ const workletsPackage = require('react-native-worklets');
49
+ const workletsPackageJson = require('react-native-worklets/package.json');
50
+ this.#workletsVersion = workletsPackageJson.version;
51
+ this.#workletsAvailable_ = true;
52
+
53
+ this.#canUseWorklets_ = this.supportedWorkletsVersion.includes(
54
+ workletsPackageJson.version
55
+ );
56
+
57
+ if (this.#canUseWorklets_) {
58
+ this.#workletsModule_ = workletsPackage;
59
+ }
60
+
61
+ return this.#canUseWorklets_;
62
+ } catch {
63
+ this.#canUseWorklets_ = false;
64
+ return false;
65
+ }
66
+ }
67
+
68
+ #verifyInstallation(): boolean {
69
+ return (
70
+ global.createAudioContext != null &&
71
+ global.createOfflineAudioContext != null &&
72
+ global.createAudioRecorder != null &&
73
+ global.createAudioDecoder != null &&
74
+ global.createAudioStretcher != null &&
75
+ global.AudioEventEmitter != null
76
+ );
77
+ }
78
+
79
+ get workletsModule(): IWorkletsModule | null {
80
+ return this.#workletsModule_;
81
+ }
82
+
83
+ /**
84
+ * Indicates whether react-native-worklets are installed in matching version,
85
+ * for usage with react-native-audio-api.
86
+ */
87
+ get canUseWorklets(): boolean {
88
+ return this.#canUseWorklets_;
89
+ }
90
+
91
+ /** Returns the installed worklets version or 'unknown'. */
92
+ get workletsVersion(): string {
93
+ return this.#workletsVersion;
94
+ }
95
+
96
+ /**
97
+ * Indicates whether react-native-worklets are installed, regardless of
98
+ * version support. Useful for asserting compatibility.
99
+ */
100
+ get areWorkletsAvailable(): boolean {
101
+ return this.#workletsAvailable_;
102
+ }
103
+
104
+ /**
105
+ * Indicates whether the installed react-native-worklets version is supported.
106
+ * Useful for asserting compatibility.
107
+ */
108
+ get isWorkletsVersionSupported(): boolean {
109
+ // Note: if areWorkletsAvailable is true, canUseWorklets is equivalent to version check
110
+ return this.#canUseWorklets_;
111
+ }
112
+
113
+ public createAudioRuntime(): WorkletRuntime | null {
114
+ if (!this.#canUseWorklets_) {
115
+ return null;
116
+ }
117
+
118
+ return this.#workletsModule_!.createWorkletRuntime('AudioWorkletRuntime');
119
+ }
120
+ }
121
+
122
+ export default new AudioAPIModule();
@@ -0,0 +1,35 @@
1
+ import type {
2
+ IAudioContext,
3
+ IAudioDecoder,
4
+ IAudioEventEmitter,
5
+ IAudioRecorder,
6
+ IAudioStretcher,
7
+ IOfflineAudioContext,
8
+ } from '../interfaces';
9
+ import type { AudioRecorderOptions } from '../types';
10
+
11
+ /* eslint-disable no-var */
12
+ declare global {
13
+ var createAudioContext: (
14
+ sampleRate: number,
15
+ initSuspended: boolean,
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ audioWorkletRuntime: any
18
+ ) => IAudioContext;
19
+ var createOfflineAudioContext: (
20
+ numberOfChannels: number,
21
+ length: number,
22
+ sampleRate: number,
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ audioWorkletRuntime: any
25
+ ) => IOfflineAudioContext;
26
+
27
+ var createAudioRecorder: (options: AudioRecorderOptions) => IAudioRecorder;
28
+
29
+ var createAudioDecoder: () => IAudioDecoder;
30
+
31
+ var createAudioStretcher: () => IAudioStretcher;
32
+
33
+ var AudioEventEmitter: IAudioEventEmitter;
34
+ }
35
+ /* eslint-disable no-var */
@@ -0,0 +1 @@
1
+ export { default } from './AudioAPIModule';
package/src/api.ts CHANGED
@@ -1,110 +1,58 @@
1
- import { NativeAudioAPIModule } from './specs';
2
- import { AudioRecorderOptions } from './types';
3
- import type {
4
- IAudioContext,
5
- IAudioDecoder,
6
- IAudioRecorder,
7
- IAudioStretcher,
8
- IOfflineAudioContext,
9
- IAudioEventEmitter,
10
- } from './interfaces';
1
+ import './AudioAPIModule';
11
2
 
12
- /* eslint-disable no-var */
13
- declare global {
14
- var createAudioContext: (
15
- sampleRate: number,
16
- initSuspended: boolean,
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
- audioWorkletRuntime: any
19
- ) => IAudioContext;
20
- var createOfflineAudioContext: (
21
- numberOfChannels: number,
22
- length: number,
23
- sampleRate: number,
24
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
- audioWorkletRuntime: any
26
- ) => IOfflineAudioContext;
27
-
28
- var createAudioRecorder: (options: AudioRecorderOptions) => IAudioRecorder;
29
-
30
- var createAudioDecoder: () => IAudioDecoder;
31
-
32
- var createAudioStretcher: () => IAudioStretcher;
33
-
34
- var AudioEventEmitter: IAudioEventEmitter;
35
- }
36
- /* eslint-disable no-var */
37
-
38
- if (
39
- global.createAudioContext == null ||
40
- global.createOfflineAudioContext == null ||
41
- global.createAudioRecorder == null ||
42
- global.createAudioDecoder == null ||
43
- global.createAudioStretcher == null ||
44
- global.AudioEventEmitter == null
45
- ) {
46
- if (!NativeAudioAPIModule) {
47
- throw new Error(
48
- `Failed to install react-native-audio-api: The native module could not be found.`
49
- );
50
- }
51
-
52
- NativeAudioAPIModule.install();
53
- }
54
-
55
- export { default as WorkletNode } from './core/WorkletNode';
56
- export { default as WorkletSourceNode } from './core/WorkletSourceNode';
57
- export { default as WorkletProcessingNode } from './core/WorkletProcessingNode';
58
- export { default as RecorderAdapterNode } from './core/RecorderAdapterNode';
3
+ export { default as AnalyserNode } from './core/AnalyserNode';
59
4
  export { default as AudioBuffer } from './core/AudioBuffer';
60
- export { default as AudioBufferSourceNode } from './core/AudioBufferSourceNode';
61
5
  export { default as AudioBufferQueueSourceNode } from './core/AudioBufferQueueSourceNode';
6
+ export { default as AudioBufferSourceNode } from './core/AudioBufferSourceNode';
62
7
  export { default as AudioContext } from './core/AudioContext';
63
- export { default as OfflineAudioContext } from './core/OfflineAudioContext';
8
+ export { decodeAudioData, decodePCMInBase64 } from './core/AudioDecoder';
64
9
  export { default as AudioDestinationNode } from './core/AudioDestinationNode';
65
10
  export { default as AudioNode } from './core/AudioNode';
66
- export { default as AnalyserNode } from './core/AnalyserNode';
67
11
  export { default as AudioParam } from './core/AudioParam';
12
+ export { default as AudioRecorder } from './core/AudioRecorder';
68
13
  export { default as AudioScheduledSourceNode } from './core/AudioScheduledSourceNode';
14
+ export { default as changePlaybackSpeed } from './core/AudioStretcher';
69
15
  export { default as BaseAudioContext } from './core/BaseAudioContext';
70
16
  export { default as BiquadFilterNode } from './core/BiquadFilterNode';
17
+ export { default as ConstantSourceNode } from './core/ConstantSourceNode';
18
+ export { default as ConvolverNode } from './core/ConvolverNode';
71
19
  export { default as GainNode } from './core/GainNode';
20
+ export { default as OfflineAudioContext } from './core/OfflineAudioContext';
72
21
  export { default as OscillatorNode } from './core/OscillatorNode';
22
+ export { default as RecorderAdapterNode } from './core/RecorderAdapterNode';
73
23
  export { default as StereoPannerNode } from './core/StereoPannerNode';
74
- export { default as AudioRecorder } from './core/AudioRecorder';
75
24
  export { default as StreamerNode } from './core/StreamerNode';
76
- export { default as ConstantSourceNode } from './core/ConstantSourceNode';
77
- export { default as AudioManager } from './system';
78
- export { default as ConvolverNode } from './core/ConvolverNode';
25
+ export { default as WorkletNode } from './core/WorkletNode';
26
+ export { default as WorkletProcessingNode } from './core/WorkletProcessingNode';
27
+ export { default as WorkletSourceNode } from './core/WorkletSourceNode';
79
28
  export { default as useSystemVolume } from './hooks/useSystemVolume';
80
- export { decodeAudioData, decodePCMInBase64 } from './core/AudioDecoder';
81
- export { default as changePlaybackSpeed } from './core/AudioStretcher';
29
+ export { default as AudioManager } from './system';
82
30
 
83
31
  export {
84
- OscillatorType,
32
+ AudioWorkletRuntime,
85
33
  BiquadFilterType,
86
34
  ChannelCountMode,
87
35
  ChannelInterpretation,
88
36
  ContextState,
89
- WindowType,
37
+ OscillatorType,
90
38
  PeriodicWaveConstraints,
91
- AudioWorkletRuntime,
39
+ WindowType,
92
40
  } from './types';
93
41
 
94
42
  export {
95
43
  IOSCategory,
96
44
  IOSMode,
97
45
  IOSOption,
98
- SessionOptions,
99
- MediaState,
100
46
  LockScreenInfo,
47
+ MediaState,
101
48
  PermissionStatus,
49
+ SessionOptions,
102
50
  } from './system/types';
103
51
 
104
52
  export {
105
53
  IndexSizeError,
106
54
  InvalidAccessError,
107
55
  InvalidStateError,
108
- RangeError,
109
56
  NotSupportedError,
57
+ RangeError,
110
58
  } from './errors';
@@ -1,9 +1,9 @@
1
+ import AudioAPIModule from '../AudioAPIModule';
2
+ import { NotSupportedError } from '../errors';
1
3
  import { IAudioContext } from '../interfaces';
2
- import BaseAudioContext from './BaseAudioContext';
3
4
  import AudioManager from '../system';
4
5
  import { AudioContextOptions } from '../types';
5
- import { NotSupportedError } from '../errors';
6
- import { isWorkletsVersionSupported, workletsModule } from '../utils';
6
+ import BaseAudioContext from './BaseAudioContext';
7
7
 
8
8
  export default class AudioContext extends BaseAudioContext {
9
9
  constructor(options?: AudioContextOptions) {
@@ -16,11 +16,8 @@ export default class AudioContext extends BaseAudioContext {
16
16
  `The provided sampleRate is not supported: ${options.sampleRate}`
17
17
  );
18
18
  }
19
- let audioRuntime = null;
20
19
 
21
- if (isWorkletsVersionSupported) {
22
- audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
23
- }
20
+ const audioRuntime = AudioAPIModule.createAudioRuntime();
24
21
 
25
22
  super(
26
23
  global.createAudioContext(