react-native-audio-api 0.9.0 → 0.9.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 (101) hide show
  1. package/RNAudioAPI.podspec +5 -2
  2. package/android/build.gradle +26 -2
  3. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +5 -0
  4. package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +1 -0
  5. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +4 -2
  6. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +29 -1
  7. package/android/src/main/jniLibs/arm64-v8a/libavcodec.so +0 -0
  8. package/android/src/main/jniLibs/arm64-v8a/libavformat.so +0 -0
  9. package/android/src/main/jniLibs/arm64-v8a/libavutil.so +0 -0
  10. package/android/src/main/jniLibs/arm64-v8a/libswresample.so +0 -0
  11. package/android/src/main/jniLibs/armeabi-v7a/libavcodec.so +0 -0
  12. package/android/src/main/jniLibs/armeabi-v7a/libavformat.so +0 -0
  13. package/android/src/main/jniLibs/armeabi-v7a/libavutil.so +0 -0
  14. package/android/src/main/jniLibs/armeabi-v7a/libswresample.so +0 -0
  15. package/android/src/main/jniLibs/x86/libavcodec.so +0 -0
  16. package/android/src/main/jniLibs/x86/libavformat.so +0 -0
  17. package/android/src/main/jniLibs/x86/libavutil.so +0 -0
  18. package/android/src/main/jniLibs/x86/libswresample.so +0 -0
  19. package/android/src/main/jniLibs/x86_64/libavcodec.so +0 -0
  20. package/android/src/main/jniLibs/x86_64/libavformat.so +0 -0
  21. package/android/src/main/jniLibs/x86_64/libavutil.so +0 -0
  22. package/android/src/main/jniLibs/x86_64/libswresample.so +0 -0
  23. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +37 -6
  24. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +12 -5
  25. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +3 -8
  26. package/common/cpp/audioapi/core/BaseAudioContext.cpp +12 -6
  27. package/common/cpp/audioapi/core/BaseAudioContext.h +14 -3
  28. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +39 -52
  29. package/common/cpp/audioapi/core/effects/WorkletNode.h +6 -10
  30. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +17 -19
  31. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +2 -5
  32. package/common/cpp/audioapi/core/sources/AudioBuffer.h +1 -0
  33. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +0 -4
  34. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +0 -1
  35. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +0 -2
  36. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +0 -4
  37. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +0 -1
  38. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +16 -6
  39. package/common/cpp/audioapi/core/sources/StreamerNode.h +3 -1
  40. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +14 -16
  41. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +2 -5
  42. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +32 -13
  43. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +75 -2
  44. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +50 -36
  45. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +5 -1
  46. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/libavcodec +0 -0
  47. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
  48. package/common/cpp/audioapi/external/libavformat.xcframework/Info.plist +5 -5
  49. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/libavformat +0 -0
  50. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
  51. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/libavutil +0 -0
  52. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
  53. package/common/cpp/audioapi/external/libswresample.xcframework/Info.plist +5 -5
  54. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/libswresample +0 -0
  55. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
  56. package/common/cpp/audioapi/jsi/AudioArrayBuffer.cpp +2 -2
  57. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +10 -11
  58. package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +1 -1
  59. package/common/cpp/audioapi/utils/AudioBus.cpp +4 -0
  60. package/common/cpp/audioapi/utils/AudioBus.h +1 -0
  61. package/common/cpp/test/CMakeLists.txt +7 -4
  62. package/common/cpp/test/RunTests.sh +2 -2
  63. package/common/cpp/test/{AudioParamTest.cpp → src/AudioParamTest.cpp} +1 -1
  64. package/common/cpp/test/src/ConstantSourceTest.cpp +64 -0
  65. package/common/cpp/test/{GainTest.cpp → src/GainTest.cpp} +11 -10
  66. package/common/cpp/test/{MockAudioEventHandlerRegistry.h → src/MockAudioEventHandlerRegistry.h} +4 -2
  67. package/common/cpp/test/{OscillatorTest.cpp → src/OscillatorTest.cpp} +6 -4
  68. package/common/cpp/test/{StereoPannerTest.cpp → src/StereoPannerTest.cpp} +1 -1
  69. package/ios/audioapi/ios/AudioAPIModule.h +2 -1
  70. package/ios/audioapi/ios/AudioAPIModule.mm +2 -0
  71. package/ios/audioapi/ios/core/IOSAudioRecorder.h +2 -1
  72. package/lib/commonjs/core/AudioContext.js +1 -5
  73. package/lib/commonjs/core/AudioContext.js.map +1 -1
  74. package/lib/commonjs/core/BaseAudioContext.js +16 -25
  75. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  76. package/lib/commonjs/core/OfflineAudioContext.js +1 -5
  77. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  78. package/lib/commonjs/utils/index.js +20 -4
  79. package/lib/commonjs/utils/index.js.map +1 -1
  80. package/lib/module/core/AudioContext.js +2 -6
  81. package/lib/module/core/AudioContext.js.map +1 -1
  82. package/lib/module/core/BaseAudioContext.js +17 -26
  83. package/lib/module/core/BaseAudioContext.js.map +1 -1
  84. package/lib/module/core/OfflineAudioContext.js +2 -6
  85. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  86. package/lib/module/utils/index.js +16 -1
  87. package/lib/module/utils/index.js.map +1 -1
  88. package/lib/typescript/core/AudioContext.d.ts +0 -1
  89. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  90. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  91. package/lib/typescript/core/OfflineAudioContext.d.ts +0 -1
  92. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  93. package/lib/typescript/utils/index.d.ts +4 -1
  94. package/lib/typescript/utils/index.d.ts.map +1 -1
  95. package/package.json +4 -1
  96. package/scripts/rnaa_utils.rb +8 -0
  97. package/scripts/validate-worklets-version.js +28 -0
  98. package/src/core/AudioContext.ts +3 -7
  99. package/src/core/BaseAudioContext.ts +44 -60
  100. package/src/core/OfflineAudioContext.ts +2 -7
  101. package/src/utils/index.ts +23 -1
@@ -1 +1 @@
1
- {"version":3,"names":["BaseAudioContext","AudioManager","NotSupportedError","isWorkletsAvailable","workletsModule","AudioContext","_audioRuntime","constructor","options","sampleRate","audioRuntime","createWorkletRuntime","global","createAudioContext","getDevicePreferredSampleRate","initSuspended","close","context","resume","suspend"],"sourceRoot":"../../../src","sources":["core/AudioContext.ts"],"mappings":";;AACA,OAAOA,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,YAAY,MAAM,oBAAW;AAEpC,SAASC,iBAAiB,QAAQ,oBAAW;AAC7C,SAASC,mBAAmB,EAAEC,cAAc,QAAQ,mBAAU;AAE9D,eAAe,MAAMC,YAAY,SAASL,gBAAgB,CAAC;EACzD;EACA;EACQM,aAAa,GAAQ,IAAI;EAEjCC,WAAWA,CAACC,OAA6B,EAAE;IACzC,IACEA,OAAO,IACPA,OAAO,CAACC,UAAU,KACjBD,OAAO,CAACC,UAAU,GAAG,IAAI,IAAID,OAAO,CAACC,UAAU,GAAG,KAAK,CAAC,EACzD;MACA,MAAM,IAAIP,iBAAiB,CACzB,6CAA6CM,OAAO,CAACC,UAAU,EACjE,CAAC;IACH;IACA,IAAIC,YAAY,GAAG,IAAI;IACvB,IAAIP,mBAAmB,EAAE;MACvBO,YAAY,GAAGN,cAAc,CAACO,oBAAoB,CAAC,qBAAqB,CAAC;IAC3E;IAEA,KAAK,CACHC,MAAM,CAACC,kBAAkB,CACvBL,OAAO,EAAEC,UAAU,IAAIR,YAAY,CAACa,4BAA4B,CAAC,CAAC,EAClEN,OAAO,EAAEO,aAAa,IAAI,KAAK,EAC/BL,YACF,CACF,CAAC;IACD,IAAI,CAACJ,aAAa,GAAGI,YAAY;EACnC;EAEA,MAAMM,KAAKA,CAAA,EAAkB;IAC3B,OAAQ,IAAI,CAACC,OAAO,CAAmBD,KAAK,CAAC,CAAC;EAChD;EAEA,MAAME,MAAMA,CAAA,EAAqB;IAC/B,OAAQ,IAAI,CAACD,OAAO,CAAmBC,MAAM,CAAC,CAAC;EACjD;EAEA,MAAMC,OAAOA,CAAA,EAAqB;IAChC,OAAQ,IAAI,CAACF,OAAO,CAAmBE,OAAO,CAAC,CAAC;EAClD;AACF","ignoreList":[]}
1
+ {"version":3,"names":["BaseAudioContext","AudioManager","NotSupportedError","isWorkletsVersionSupported","workletsModule","AudioContext","constructor","options","sampleRate","audioRuntime","createWorkletRuntime","global","createAudioContext","getDevicePreferredSampleRate","initSuspended","close","context","resume","suspend"],"sourceRoot":"../../../src","sources":["core/AudioContext.ts"],"mappings":";;AACA,OAAOA,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,YAAY,MAAM,oBAAW;AAEpC,SAASC,iBAAiB,QAAQ,oBAAW;AAC7C,SAASC,0BAA0B,EAAEC,cAAc,QAAQ,mBAAU;AAErE,eAAe,MAAMC,YAAY,SAASL,gBAAgB,CAAC;EACzDM,WAAWA,CAACC,OAA6B,EAAE;IACzC,IACEA,OAAO,IACPA,OAAO,CAACC,UAAU,KACjBD,OAAO,CAACC,UAAU,GAAG,IAAI,IAAID,OAAO,CAACC,UAAU,GAAG,KAAK,CAAC,EACzD;MACA,MAAM,IAAIN,iBAAiB,CACzB,6CAA6CK,OAAO,CAACC,UAAU,EACjE,CAAC;IACH;IACA,IAAIC,YAAY,GAAG,IAAI;IAEvB,IAAIN,0BAA0B,EAAE;MAC9BM,YAAY,GAAGL,cAAc,CAACM,oBAAoB,CAAC,qBAAqB,CAAC;IAC3E;IAEA,KAAK,CACHC,MAAM,CAACC,kBAAkB,CACvBL,OAAO,EAAEC,UAAU,IAAIP,YAAY,CAACY,4BAA4B,CAAC,CAAC,EAClEN,OAAO,EAAEO,aAAa,IAAI,KAAK,EAC/BL,YACF,CACF,CAAC;EACH;EAEA,MAAMM,KAAKA,CAAA,EAAkB;IAC3B,OAAQ,IAAI,CAACC,OAAO,CAAmBD,KAAK,CAAC,CAAC;EAChD;EAEA,MAAME,MAAMA,CAAA,EAAqB;IAC/B,OAAQ,IAAI,CAACD,OAAO,CAAmBC,MAAM,CAAC,CAAC;EACjD;EAEA,MAAMC,OAAOA,CAAA,EAAqB;IAChC,OAAQ,IAAI,CAACF,OAAO,CAAmBE,OAAO,CAAC,CAAC;EAClD;AACF","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { InvalidAccessError, NotSupportedError } from "../errors/index.js";
4
- import { isWorkletsAvailable, workletsModule } from "../utils/index.js";
4
+ import { assertWorkletsEnabled, workletsModule } from "../utils/index.js";
5
5
  import WorkletSourceNode from "./WorkletSourceNode.js";
6
6
  import WorkletProcessingNode from "./WorkletProcessingNode.js";
7
7
  import AnalyserNode from "./AnalyserNode.js";
@@ -37,37 +37,28 @@ export default class BaseAudioContext {
37
37
  if (bufferLength < 1) {
38
38
  throw new NotSupportedError(`The buffer length provided (${bufferLength}) can not be less than 1`);
39
39
  }
40
- if (isWorkletsAvailable) {
41
- const shareableWorklet = workletsModule.makeShareableCloneRecursive((audioBuffers, channelCount) => {
42
- 'worklet';
40
+ assertWorkletsEnabled();
41
+ const shareableWorklet = workletsModule.makeShareableCloneRecursive((audioBuffers, channelCount) => {
42
+ 'worklet';
43
43
 
44
- const floatAudioData = audioBuffers.map(buffer => new Float32Array(buffer));
45
- callback(floatAudioData, channelCount);
46
- });
47
- return new WorkletNode(this, this.context.createWorkletNode(shareableWorklet, workletRuntime === 'UIRuntime', bufferLength, inputChannelCount));
48
- }
49
- /// User does not have worklets as a dependency so he cannot use the worklet API.
50
- throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
44
+ const floatAudioData = audioBuffers.map(buffer => new Float32Array(buffer));
45
+ callback(floatAudioData, channelCount);
46
+ });
47
+ return new WorkletNode(this, this.context.createWorkletNode(shareableWorklet, workletRuntime === 'UIRuntime', bufferLength, inputChannelCount));
51
48
  }
52
49
  createWorkletProcessingNode(callback, workletRuntime = 'AudioRuntime') {
53
- if (isWorkletsAvailable) {
54
- const shareableWorklet = workletsModule.makeShareableCloneRecursive((inputBuffers, outputBuffers, framesToProcess, currentTime) => {
55
- 'worklet';
50
+ assertWorkletsEnabled();
51
+ const shareableWorklet = workletsModule.makeShareableCloneRecursive((inputBuffers, outputBuffers, framesToProcess, currentTime) => {
52
+ 'worklet';
56
53
 
57
- const inputData = inputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
58
- const outputData = outputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
59
- callback(inputData, outputData, framesToProcess, currentTime);
60
- });
61
- return new WorkletProcessingNode(this, this.context.createWorkletProcessingNode(shareableWorklet, workletRuntime === 'UIRuntime'));
62
- }
63
- /// User does not have worklets as a dependency so he cannot use the worklet API.
64
- throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
54
+ const inputData = inputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
55
+ const outputData = outputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
56
+ callback(inputData, outputData, framesToProcess, currentTime);
57
+ });
58
+ return new WorkletProcessingNode(this, this.context.createWorkletProcessingNode(shareableWorklet, workletRuntime === 'UIRuntime'));
65
59
  }
66
60
  createWorkletSourceNode(callback, workletRuntime = 'AudioRuntime') {
67
- if (!isWorkletsAvailable) {
68
- /// User does not have worklets as a dependency so he cannot use the worklet API.
69
- throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
70
- }
61
+ assertWorkletsEnabled();
71
62
  const shareableWorklet = workletsModule.makeShareableCloneRecursive((audioBuffers, framesToProcess, currentTime, startOffset) => {
72
63
  'worklet';
73
64
 
@@ -1 +1 @@
1
- {"version":3,"names":["InvalidAccessError","NotSupportedError","isWorkletsAvailable","workletsModule","WorkletSourceNode","WorkletProcessingNode","AnalyserNode","AudioBuffer","AudioBufferQueueSourceNode","AudioBufferSourceNode","AudioDestinationNode","BiquadFilterNode","GainNode","OscillatorNode","PeriodicWave","RecorderAdapterNode","StereoPannerNode","StreamerNode","WorkletNode","ConstantSourceNode","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","createWorkletNode","callback","bufferLength","inputChannelCount","workletRuntime","shareableWorklet","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","Error","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","createWorkletSourceNode","startOffset","createRecorderAdapter","createOscillator","createStreamer","createConstantSource","createGain","createStereoPanner","createBiquadFilter","createBufferSource","options","pitchCorrection","createBufferQueueSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser","decodeAudioDataSource","sourcePath","startsWith","replace","decodeAudioData","data","Uint8Array","decodePCMInBase64Data","base64","playbackRate","decodePCMAudioDataInBase64"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["InvalidAccessError","NotSupportedError","assertWorkletsEnabled","workletsModule","WorkletSourceNode","WorkletProcessingNode","AnalyserNode","AudioBuffer","AudioBufferQueueSourceNode","AudioBufferSourceNode","AudioDestinationNode","BiquadFilterNode","GainNode","OscillatorNode","PeriodicWave","RecorderAdapterNode","StereoPannerNode","StreamerNode","WorkletNode","ConstantSourceNode","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","createWorkletNode","callback","bufferLength","inputChannelCount","workletRuntime","shareableWorklet","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","createWorkletSourceNode","startOffset","createRecorderAdapter","createOscillator","createStreamer","createConstantSource","createGain","createStereoPanner","createBiquadFilter","createBufferSource","options","pitchCorrection","createBufferQueueSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser","decodeAudioDataSource","sourcePath","startsWith","replace","decodeAudioData","data","Uint8Array","decodePCMInBase64Data","base64","playbackRate","decodePCMAudioDataInBase64"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
@@ -3,14 +3,11 @@
3
3
  import BaseAudioContext from "./BaseAudioContext.js";
4
4
  import { InvalidStateError, NotSupportedError } from "../errors/index.js";
5
5
  import AudioBuffer from "./AudioBuffer.js";
6
- import { isWorkletsAvailable, workletsModule } from "../utils/index.js";
6
+ import { isWorkletsVersionSupported, workletsModule } from "../utils/index.js";
7
7
  export default class OfflineAudioContext extends BaseAudioContext {
8
- // We need to keep here a reference to this runtime to better manage its lifecycle
9
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
10
-
11
8
  constructor(arg0, arg1, arg2) {
12
9
  let audioRuntime = null;
13
- if (isWorkletsAvailable) {
10
+ if (isWorkletsVersionSupported) {
14
11
  audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
15
12
  }
16
13
  if (typeof arg0 === 'object') {
@@ -29,7 +26,6 @@ export default class OfflineAudioContext extends BaseAudioContext {
29
26
  }
30
27
  this.isSuspended = false;
31
28
  this.isRendering = false;
32
- this._audioRuntime = audioRuntime;
33
29
  }
34
30
  async resume() {
35
31
  if (!this.isRendering) {
@@ -1 +1 @@
1
- {"version":3,"names":["BaseAudioContext","InvalidStateError","NotSupportedError","AudioBuffer","isWorkletsAvailable","workletsModule","OfflineAudioContext","constructor","arg0","arg1","arg2","audioRuntime","createWorkletRuntime","numberOfChannels","length","sampleRate","global","createOfflineAudioContext","duration","isSuspended","isRendering","_audioRuntime","resume","context","suspend","suspendTime","currentTime","startRendering","audioBuffer"],"sourceRoot":"../../../src","sources":["core/OfflineAudioContext.ts"],"mappings":";;AACA,OAAOA,gBAAgB,MAAM,uBAAoB;AAEjD,SAASC,iBAAiB,EAAEC,iBAAiB,QAAQ,oBAAW;AAChE,OAAOC,WAAW,MAAM,kBAAe;AACvC,SAASC,mBAAmB,EAAEC,cAAc,QAAQ,mBAAU;AAE9D,eAAe,MAAMC,mBAAmB,SAASN,gBAAgB,CAAC;EAKhE;EACA;;EAKAO,WAAWA,CACTC,IAAyC,EACzCC,IAAa,EACbC,IAAa,EACb;IACA,IAAIC,YAAY,GAAG,IAAI;IACvB,IAAIP,mBAAmB,EAAE;MACvBO,YAAY,GAAGN,cAAc,CAACO,oBAAoB,CAAC,qBAAqB,CAAC;IAC3E;IAEA,IAAI,OAAOJ,IAAI,KAAK,QAAQ,EAAE;MAC5B,MAAM;QAAEK,gBAAgB;QAAEC,MAAM;QAAEC;MAAW,CAAC,GAAGP,IAAI;MACrD,KAAK,CACHQ,MAAM,CAACC,yBAAyB,CAC9BJ,gBAAgB,EAChBC,MAAM,EACNC,UAAU,EACVJ,YACF,CACF,CAAC;MAED,IAAI,CAACO,QAAQ,GAAGJ,MAAM,GAAGC,UAAU;IACrC,CAAC,MAAM,IACL,OAAOP,IAAI,KAAK,QAAQ,IACxB,OAAOC,IAAI,KAAK,QAAQ,IACxB,OAAOC,IAAI,KAAK,QAAQ,EACxB;MACA,KAAK,CAACM,MAAM,CAACC,yBAAyB,CAACT,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,YAAY,CAAC,CAAC;MACvE,IAAI,CAACO,QAAQ,GAAGT,IAAI,GAAGC,IAAI;IAC7B,CAAC,MAAM;MACL,MAAM,IAAIR,iBAAiB,CAAC,+BAA+B,CAAC;IAC9D;IAEA,IAAI,CAACiB,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,aAAa,GAAGV,YAAY;EACnC;EAEA,MAAMW,MAAMA,CAAA,EAAuB;IACjC,IAAI,CAAC,IAAI,CAACF,WAAW,EAAE;MACrB,MAAM,IAAInB,iBAAiB,CACzB,sDACF,CAAC;IACH;IAEA,IAAI,CAAC,IAAI,CAACkB,WAAW,EAAE;MACrB,MAAM,IAAIlB,iBAAiB,CACzB,4DACF,CAAC;IACH;IAEA,IAAI,CAACkB,WAAW,GAAG,KAAK;IAExB,MAAO,IAAI,CAACI,OAAO,CAA0BD,MAAM,CAAC,CAAC;EACvD;EAEA,MAAME,OAAOA,CAACC,WAAmB,EAAsB;IACrD,IAAIA,WAAW,GAAG,CAAC,EAAE;MACnB,MAAM,IAAIxB,iBAAiB,CAAC,2CAA2C,CAAC;IAC1E;IAEA,IAAIwB,WAAW,GAAG,IAAI,CAACF,OAAO,CAACG,WAAW,EAAE;MAC1C,MAAM,IAAIzB,iBAAiB,CACzB,sDAAsDwB,WAAW,EACnE,CAAC;IACH;IAEA,IAAIA,WAAW,GAAG,IAAI,CAACP,QAAQ,EAAE;MAC/B,MAAM,IAAIjB,iBAAiB,CACzB,8DAA8DwB,WAAW,EAC3E,CAAC;IACH;IAEA,IAAI,CAACN,WAAW,GAAG,IAAI;IAEvB,MAAO,IAAI,CAACI,OAAO,CAA0BC,OAAO,CAACC,WAAW,CAAC;EACnE;EAEA,MAAME,cAAcA,CAAA,EAAyB;IAC3C,IAAI,IAAI,CAACP,WAAW,EAAE;MACpB,MAAM,IAAInB,iBAAiB,CAAC,0CAA0C,CAAC;IACzE;IAEA,IAAI,CAACmB,WAAW,GAAG,IAAI;IAEvB,MAAMQ,WAAW,GAAG,MAClB,IAAI,CAACL,OAAO,CACZI,cAAc,CAAC,CAAC;IAElB,OAAO,IAAIxB,WAAW,CAACyB,WAAW,CAAC;EACrC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["BaseAudioContext","InvalidStateError","NotSupportedError","AudioBuffer","isWorkletsVersionSupported","workletsModule","OfflineAudioContext","constructor","arg0","arg1","arg2","audioRuntime","createWorkletRuntime","numberOfChannels","length","sampleRate","global","createOfflineAudioContext","duration","isSuspended","isRendering","resume","context","suspend","suspendTime","currentTime","startRendering","audioBuffer"],"sourceRoot":"../../../src","sources":["core/OfflineAudioContext.ts"],"mappings":";;AACA,OAAOA,gBAAgB,MAAM,uBAAoB;AAEjD,SAASC,iBAAiB,EAAEC,iBAAiB,QAAQ,oBAAW;AAChE,OAAOC,WAAW,MAAM,kBAAe;AACvC,SAASC,0BAA0B,EAAEC,cAAc,QAAQ,mBAAU;AAErE,eAAe,MAAMC,mBAAmB,SAASN,gBAAgB,CAAC;EAOhEO,WAAWA,CACTC,IAAyC,EACzCC,IAAa,EACbC,IAAa,EACb;IACA,IAAIC,YAAY,GAAG,IAAI;IACvB,IAAIP,0BAA0B,EAAE;MAC9BO,YAAY,GAAGN,cAAc,CAACO,oBAAoB,CAAC,qBAAqB,CAAC;IAC3E;IAEA,IAAI,OAAOJ,IAAI,KAAK,QAAQ,EAAE;MAC5B,MAAM;QAAEK,gBAAgB;QAAEC,MAAM;QAAEC;MAAW,CAAC,GAAGP,IAAI;MACrD,KAAK,CACHQ,MAAM,CAACC,yBAAyB,CAC9BJ,gBAAgB,EAChBC,MAAM,EACNC,UAAU,EACVJ,YACF,CACF,CAAC;MAED,IAAI,CAACO,QAAQ,GAAGJ,MAAM,GAAGC,UAAU;IACrC,CAAC,MAAM,IACL,OAAOP,IAAI,KAAK,QAAQ,IACxB,OAAOC,IAAI,KAAK,QAAQ,IACxB,OAAOC,IAAI,KAAK,QAAQ,EACxB;MACA,KAAK,CAACM,MAAM,CAACC,yBAAyB,CAACT,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,YAAY,CAAC,CAAC;MACvE,IAAI,CAACO,QAAQ,GAAGT,IAAI,GAAGC,IAAI;IAC7B,CAAC,MAAM;MACL,MAAM,IAAIR,iBAAiB,CAAC,+BAA+B,CAAC;IAC9D;IAEA,IAAI,CAACiB,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,WAAW,GAAG,KAAK;EAC1B;EAEA,MAAMC,MAAMA,CAAA,EAAuB;IACjC,IAAI,CAAC,IAAI,CAACD,WAAW,EAAE;MACrB,MAAM,IAAInB,iBAAiB,CACzB,sDACF,CAAC;IACH;IAEA,IAAI,CAAC,IAAI,CAACkB,WAAW,EAAE;MACrB,MAAM,IAAIlB,iBAAiB,CACzB,4DACF,CAAC;IACH;IAEA,IAAI,CAACkB,WAAW,GAAG,KAAK;IAExB,MAAO,IAAI,CAACG,OAAO,CAA0BD,MAAM,CAAC,CAAC;EACvD;EAEA,MAAME,OAAOA,CAACC,WAAmB,EAAsB;IACrD,IAAIA,WAAW,GAAG,CAAC,EAAE;MACnB,MAAM,IAAIvB,iBAAiB,CAAC,2CAA2C,CAAC;IAC1E;IAEA,IAAIuB,WAAW,GAAG,IAAI,CAACF,OAAO,CAACG,WAAW,EAAE;MAC1C,MAAM,IAAIxB,iBAAiB,CACzB,sDAAsDuB,WAAW,EACnE,CAAC;IACH;IAEA,IAAIA,WAAW,GAAG,IAAI,CAACN,QAAQ,EAAE;MAC/B,MAAM,IAAIjB,iBAAiB,CACzB,8DAA8DuB,WAAW,EAC3E,CAAC;IACH;IAEA,IAAI,CAACL,WAAW,GAAG,IAAI;IAEvB,MAAO,IAAI,CAACG,OAAO,CAA0BC,OAAO,CAACC,WAAW,CAAC;EACnE;EAEA,MAAME,cAAcA,CAAA,EAAyB;IAC3C,IAAI,IAAI,CAACN,WAAW,EAAE;MACpB,MAAM,IAAInB,iBAAiB,CAAC,0CAA0C,CAAC;IACzE;IAEA,IAAI,CAACmB,WAAW,GAAG,IAAI;IAEvB,MAAMO,WAAW,GAAG,MAClB,IAAI,CAACL,OAAO,CACZI,cAAc,CAAC,CAAC;IAElB,OAAO,IAAIvB,WAAW,CAACwB,WAAW,CAAC;EACrC;AACF","ignoreList":[]}
@@ -3,11 +3,26 @@
3
3
  export function clamp(value, min, max) {
4
4
  return Math.min(Math.max(value, min), max);
5
5
  }
6
- export let isWorkletsAvailable = false;
6
+ let isWorkletsAvailable = false;
7
+ export let isWorkletsVersionSupported = false;
8
+ export let workletsVersion = 'unknown';
9
+ export const supportedWorkletsVersions = ['0.6.0', '0.6.1'];
7
10
  export let workletsModule;
11
+ export function assertWorkletsEnabled() {
12
+ if (!isWorkletsAvailable) {
13
+ throw new Error('[react-native-audio-api]: Worklets are not available. Please install react-native-worklets to use this feature.');
14
+ } else if (!isWorkletsVersionSupported) {
15
+ throw new Error(`[react-native-audio-api]: Worklets version ${workletsVersion} is not supported.
16
+ Please install react-native-worklets of one of the following versions: [${supportedWorkletsVersions.join(', ')}] to use this feature.`);
17
+ }
18
+ }
8
19
  try {
9
20
  workletsModule = require('react-native-worklets');
21
+ const workletsModuleJson = require('react-native-worklets/package.json');
22
+ isWorkletsVersionSupported = supportedWorkletsVersions.includes(workletsModuleJson.version);
10
23
  isWorkletsAvailable = true;
24
+ workletsVersion = workletsModuleJson.version;
25
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
26
  } catch (error) {
12
27
  isWorkletsAvailable = false;
13
28
  }
@@ -1 +1 @@
1
- {"version":3,"names":["clamp","value","min","max","Math","isWorkletsAvailable","workletsModule","require","error"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;AAWA,OAAO,SAASA,KAAKA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAU;EACrE,OAAOC,IAAI,CAACF,GAAG,CAACE,IAAI,CAACD,GAAG,CAACF,KAAK,EAAEC,GAAG,CAAC,EAAEC,GAAG,CAAC;AAC5C;AAEA,OAAO,IAAIE,mBAAmB,GAAG,KAAK;AACtC,OAAO,IAAIC,cAAuC;AAElD,IAAI;EACFA,cAAc,GAAGC,OAAO,CAAC,uBAAuB,CAAC;EACjDF,mBAAmB,GAAG,IAAI;AAC5B,CAAC,CAAC,OAAOG,KAAK,EAAE;EACdH,mBAAmB,GAAG,KAAK;AAC7B","ignoreList":[]}
1
+ {"version":3,"names":["clamp","value","min","max","Math","isWorkletsAvailable","isWorkletsVersionSupported","workletsVersion","supportedWorkletsVersions","workletsModule","assertWorkletsEnabled","Error","join","require","workletsModuleJson","includes","version","error"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;AAWA,OAAO,SAASA,KAAKA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAU;EACrE,OAAOC,IAAI,CAACF,GAAG,CAACE,IAAI,CAACD,GAAG,CAACF,KAAK,EAAEC,GAAG,CAAC,EAAEC,GAAG,CAAC;AAC5C;AAEA,IAAIE,mBAAmB,GAAG,KAAK;AAC/B,OAAO,IAAIC,0BAA0B,GAAG,KAAK;AAC7C,OAAO,IAAIC,eAAe,GAAG,SAAS;AACtC,OAAO,MAAMC,yBAAyB,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3D,OAAO,IAAIC,cAAuC;AAElD,OAAO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAI,CAACL,mBAAmB,EAAE;IACxB,MAAM,IAAIM,KAAK,CACb,iHACF,CAAC;EACH,CAAC,MAAM,IAAI,CAACL,0BAA0B,EAAE;IACtC,MAAM,IAAIK,KAAK,CACb,8CAA8CJ,eAAe;AACnE,gFAAgFC,yBAAyB,CAACI,IAAI,CAAC,IAAI,CAAC,wBAChH,CAAC;EACH;AACF;AAEA,IAAI;EACFH,cAAc,GAAGI,OAAO,CAAC,uBAAuB,CAAC;EACjD,MAAMC,kBAAkB,GAAGD,OAAO,CAAC,oCAAoC,CAAC;EACxEP,0BAA0B,GAAGE,yBAAyB,CAACO,QAAQ,CAC7DD,kBAAkB,CAACE,OACrB,CAAC;EACDX,mBAAmB,GAAG,IAAI;EAC1BE,eAAe,GAAGO,kBAAkB,CAACE,OAAO;EAC5C;AACF,CAAC,CAAC,OAAOC,KAAK,EAAE;EACdZ,mBAAmB,GAAG,KAAK;AAC7B","ignoreList":[]}
@@ -1,7 +1,6 @@
1
1
  import BaseAudioContext from './BaseAudioContext';
2
2
  import { AudioContextOptions } from '../types';
3
3
  export default class AudioContext extends BaseAudioContext {
4
- private _audioRuntime;
5
4
  constructor(options?: AudioContextOptions);
6
5
  close(): Promise<void>;
7
6
  resume(): Promise<boolean>;
@@ -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;IAGxD,OAAO,CAAC,aAAa,CAAa;gBAEtB,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":"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 +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":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,gCAAgC,EAChC,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAElB,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBAExB,OAAO,EAAE,iBAAiB;IAMtC,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,iBAAiB,CACf,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,EACxE,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,cAAc,GAAE,mBAAoC,GACnD,WAAW;IAgCd,2BAA2B,CACzB,QAAQ,EAAE,CACR,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAC9B,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,EAC/B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,KAChB,IAAI,EACT,cAAc,GAAE,mBAAoC,GACnD,qBAAqB;IA4BxB,uBAAuB,CACrB,QAAQ,EAAE,CACR,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAC9B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,KAChB,IAAI,EACT,cAAc,GAAE,mBAAoC,GACnD,iBAAiB;IAyBpB,qBAAqB,IAAI,mBAAmB;IAI5C,gBAAgB,IAAI,cAAc;IAIlC,cAAc,IAAI,YAAY;IAI9B,oBAAoB,IAAI,kBAAkB;IAI1C,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,CAChB,OAAO,CAAC,EAAE,gCAAgC,GACzC,qBAAqB;IASxB,uBAAuB,CACrB,OAAO,CAAC,EAAE,gCAAgC,GACzC,0BAA0B;IAS7B,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAcf,cAAc,IAAI,YAAY;IAI9B,iDAAiD;IAC3C,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWrE,8CAA8C;IACxC,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAMxD,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,MAAY,GACzB,OAAO,CAAC,WAAW,CAAC;CAKxB"}
@@ -5,7 +5,6 @@ export default class OfflineAudioContext extends BaseAudioContext {
5
5
  private isSuspended;
6
6
  private isRendering;
7
7
  private duration;
8
- private _audioRuntime;
9
8
  constructor(options: OfflineAudioContextOptions);
10
9
  constructor(numberOfChannels: number, length: number, sampleRate: number);
11
10
  resume(): Promise<undefined>;
@@ -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;IAIzB,OAAO,CAAC,aAAa,CAAM;gBAEf,OAAO,EAAE,0BAA0B;gBACnC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAuClE,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":"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"}
@@ -4,7 +4,10 @@ interface SimplifiedWorkletModule {
4
4
  createWorkletRuntime: (options?: any) => any;
5
5
  }
6
6
  export declare function clamp(value: number, min: number, max: number): number;
7
- export declare let isWorkletsAvailable: boolean;
7
+ export declare let isWorkletsVersionSupported: boolean;
8
+ export declare let workletsVersion: string;
9
+ export declare const supportedWorkletsVersions: string[];
8
10
  export declare let workletsModule: SimplifiedWorkletModule;
11
+ export declare function assertWorkletsEnabled(): void;
9
12
  export {};
10
13
  //# 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;AAED,eAAO,IAAI,mBAAmB,SAAQ,CAAC;AACvC,eAAO,IAAI,cAAc,EAAE,uBAAuB,CAAC"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.9.0",
3
+ "version": "0.9.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"
@@ -35,6 +35,9 @@
35
35
  "!**/.*",
36
36
  "!**/node_modules",
37
37
  "scripts/setup-rn-audio-api-web.js",
38
+ "scripts/rnaa_utils.rb",
39
+ "scripts/validate-worklets-version.js",
40
+ "scripts/download-prebuilt-binaries.sh",
38
41
  "app.plugin.js"
39
42
  ],
40
43
  "scripts": {
@@ -0,0 +1,8 @@
1
+ def check_if_worklets_enabled()
2
+ validate_worklets_script = File.expand_path(File.join(__dir__, 'validate-worklets-version.js'))
3
+ unless system("node \"#{validate_worklets_script}\"")
4
+ # If the validation script fails, we assume worklets are not present or have an incompatible version
5
+ return false
6
+ end
7
+ true
8
+ end
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+ const semverPrerelease = require('semver/functions/prerelease');
3
+ const validWorkletsVersions = [
4
+ '0.6.0',
5
+ '0.6.1',
6
+ ];
7
+
8
+ function validateVersion() {
9
+ let workletsVersion;
10
+ try {
11
+ const { version } = require('react-native-worklets/package.json');
12
+ workletsVersion = version;
13
+ } catch (e) {
14
+ return false;
15
+ }
16
+ if (semverPrerelease(workletsVersion)) {
17
+ return true;
18
+ }
19
+
20
+ return validWorkletsVersions.includes(workletsVersion);
21
+ }
22
+
23
+ if (!validateVersion()) {
24
+ console.error(
25
+ 'Incompatible version of react-native-audio-worklets detected. Please install a compatible version.',
26
+ );
27
+ process.exit(1);
28
+ }
@@ -3,13 +3,9 @@ import BaseAudioContext from './BaseAudioContext';
3
3
  import AudioManager from '../system';
4
4
  import { AudioContextOptions } from '../types';
5
5
  import { NotSupportedError } from '../errors';
6
- import { isWorkletsAvailable, workletsModule } from '../utils';
6
+ import { isWorkletsVersionSupported, workletsModule } from '../utils';
7
7
 
8
8
  export default class AudioContext extends BaseAudioContext {
9
- // We need to keep here a reference to this runtime to better manage its lifecycle
10
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
11
- private _audioRuntime: any = null;
12
-
13
9
  constructor(options?: AudioContextOptions) {
14
10
  if (
15
11
  options &&
@@ -21,7 +17,8 @@ export default class AudioContext extends BaseAudioContext {
21
17
  );
22
18
  }
23
19
  let audioRuntime = null;
24
- if (isWorkletsAvailable) {
20
+
21
+ if (isWorkletsVersionSupported) {
25
22
  audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
26
23
  }
27
24
 
@@ -32,7 +29,6 @@ export default class AudioContext extends BaseAudioContext {
32
29
  audioRuntime
33
30
  )
34
31
  );
35
- this._audioRuntime = audioRuntime;
36
32
  }
37
33
 
38
34
  async close(): Promise<void> {
@@ -6,7 +6,7 @@ import {
6
6
  PeriodicWaveConstraints,
7
7
  AudioWorkletRuntime,
8
8
  } from '../types';
9
- import { isWorkletsAvailable, workletsModule } from '../utils';
9
+ import { assertWorkletsEnabled, workletsModule } from '../utils';
10
10
  import WorkletSourceNode from './WorkletSourceNode';
11
11
  import WorkletProcessingNode from './WorkletProcessingNode';
12
12
  import AnalyserNode from './AnalyserNode';
@@ -59,30 +59,24 @@ export default class BaseAudioContext {
59
59
  `The buffer length provided (${bufferLength}) can not be less than 1`
60
60
  );
61
61
  }
62
-
63
- if (isWorkletsAvailable) {
64
- const shareableWorklet = workletsModule.makeShareableCloneRecursive(
65
- (audioBuffers: Array<ArrayBuffer>, channelCount: number) => {
66
- 'worklet';
67
- const floatAudioData: Array<Float32Array> = audioBuffers.map(
68
- (buffer) => new Float32Array(buffer)
69
- );
70
- callback(floatAudioData, channelCount);
71
- }
72
- );
73
- return new WorkletNode(
74
- this,
75
- this.context.createWorkletNode(
76
- shareableWorklet,
77
- workletRuntime === 'UIRuntime',
78
- bufferLength,
79
- inputChannelCount
80
- )
81
- );
82
- }
83
- /// User does not have worklets as a dependency so he cannot use the worklet API.
84
- throw new Error(
85
- '[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.'
62
+ assertWorkletsEnabled();
63
+ const shareableWorklet = workletsModule.makeShareableCloneRecursive(
64
+ (audioBuffers: Array<ArrayBuffer>, channelCount: number) => {
65
+ 'worklet';
66
+ const floatAudioData: Array<Float32Array> = audioBuffers.map(
67
+ (buffer) => new Float32Array(buffer)
68
+ );
69
+ callback(floatAudioData, channelCount);
70
+ }
71
+ );
72
+ return new WorkletNode(
73
+ this,
74
+ this.context.createWorkletNode(
75
+ shareableWorklet,
76
+ workletRuntime === 'UIRuntime',
77
+ bufferLength,
78
+ inputChannelCount
79
+ )
86
80
  );
87
81
  }
88
82
 
@@ -95,35 +89,30 @@ export default class BaseAudioContext {
95
89
  ) => void,
96
90
  workletRuntime: AudioWorkletRuntime = 'AudioRuntime'
97
91
  ): WorkletProcessingNode {
98
- if (isWorkletsAvailable) {
99
- const shareableWorklet = workletsModule.makeShareableCloneRecursive(
100
- (
101
- inputBuffers: Array<ArrayBuffer>,
102
- outputBuffers: Array<ArrayBuffer>,
103
- framesToProcess: number,
104
- currentTime: number
105
- ) => {
106
- 'worklet';
107
- const inputData: Array<Float32Array> = inputBuffers.map(
108
- (buffer) => new Float32Array(buffer, 0, framesToProcess)
109
- );
110
- const outputData: Array<Float32Array> = outputBuffers.map(
111
- (buffer) => new Float32Array(buffer, 0, framesToProcess)
112
- );
113
- callback(inputData, outputData, framesToProcess, currentTime);
114
- }
115
- );
116
- return new WorkletProcessingNode(
117
- this,
118
- this.context.createWorkletProcessingNode(
119
- shareableWorklet,
120
- workletRuntime === 'UIRuntime'
121
- )
122
- );
123
- }
124
- /// User does not have worklets as a dependency so he cannot use the worklet API.
125
- throw new Error(
126
- '[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.'
92
+ assertWorkletsEnabled();
93
+ const shareableWorklet = workletsModule.makeShareableCloneRecursive(
94
+ (
95
+ inputBuffers: Array<ArrayBuffer>,
96
+ outputBuffers: Array<ArrayBuffer>,
97
+ framesToProcess: number,
98
+ currentTime: number
99
+ ) => {
100
+ 'worklet';
101
+ const inputData: Array<Float32Array> = inputBuffers.map(
102
+ (buffer) => new Float32Array(buffer, 0, framesToProcess)
103
+ );
104
+ const outputData: Array<Float32Array> = outputBuffers.map(
105
+ (buffer) => new Float32Array(buffer, 0, framesToProcess)
106
+ );
107
+ callback(inputData, outputData, framesToProcess, currentTime);
108
+ }
109
+ );
110
+ return new WorkletProcessingNode(
111
+ this,
112
+ this.context.createWorkletProcessingNode(
113
+ shareableWorklet,
114
+ workletRuntime === 'UIRuntime'
115
+ )
127
116
  );
128
117
  }
129
118
 
@@ -136,12 +125,7 @@ export default class BaseAudioContext {
136
125
  ) => void,
137
126
  workletRuntime: AudioWorkletRuntime = 'AudioRuntime'
138
127
  ): WorkletSourceNode {
139
- if (!isWorkletsAvailable) {
140
- /// User does not have worklets as a dependency so he cannot use the worklet API.
141
- throw new Error(
142
- '[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.'
143
- );
144
- }
128
+ assertWorkletsEnabled();
145
129
  const shareableWorklet = workletsModule.makeShareableCloneRecursive(
146
130
  (
147
131
  audioBuffers: Array<ArrayBuffer>,
@@ -3,17 +3,13 @@ import BaseAudioContext from './BaseAudioContext';
3
3
  import { OfflineAudioContextOptions } from '../types';
4
4
  import { InvalidStateError, NotSupportedError } from '../errors';
5
5
  import AudioBuffer from './AudioBuffer';
6
- import { isWorkletsAvailable, workletsModule } from '../utils';
6
+ import { isWorkletsVersionSupported, workletsModule } from '../utils';
7
7
 
8
8
  export default class OfflineAudioContext extends BaseAudioContext {
9
9
  private isSuspended: boolean;
10
10
  private isRendering: boolean;
11
11
  private duration: number;
12
12
 
13
- // We need to keep here a reference to this runtime to better manage its lifecycle
14
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
15
- private _audioRuntime: any;
16
-
17
13
  constructor(options: OfflineAudioContextOptions);
18
14
  constructor(numberOfChannels: number, length: number, sampleRate: number);
19
15
  constructor(
@@ -22,7 +18,7 @@ export default class OfflineAudioContext extends BaseAudioContext {
22
18
  arg2?: number
23
19
  ) {
24
20
  let audioRuntime = null;
25
- if (isWorkletsAvailable) {
21
+ if (isWorkletsVersionSupported) {
26
22
  audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
27
23
  }
28
24
 
@@ -51,7 +47,6 @@ export default class OfflineAudioContext extends BaseAudioContext {
51
47
 
52
48
  this.isSuspended = false;
53
49
  this.isRendering = false;
54
- this._audioRuntime = audioRuntime;
55
50
  }
56
51
 
57
52
  async resume(): Promise<undefined> {
@@ -13,12 +13,34 @@ export function clamp(value: number, min: number, max: number): number {
13
13
  return Math.min(Math.max(value, min), max);
14
14
  }
15
15
 
16
- export let isWorkletsAvailable = false;
16
+ let isWorkletsAvailable = false;
17
+ export let isWorkletsVersionSupported = false;
18
+ export let workletsVersion = 'unknown';
19
+ export const supportedWorkletsVersions = ['0.6.0', '0.6.1'];
17
20
  export let workletsModule: SimplifiedWorkletModule;
18
21
 
22
+ export function assertWorkletsEnabled() {
23
+ if (!isWorkletsAvailable) {
24
+ throw new Error(
25
+ '[react-native-audio-api]: Worklets are not available. Please install react-native-worklets to use this feature.'
26
+ );
27
+ } else if (!isWorkletsVersionSupported) {
28
+ throw new Error(
29
+ `[react-native-audio-api]: Worklets version ${workletsVersion} is not supported.
30
+ Please install react-native-worklets of one of the following versions: [${supportedWorkletsVersions.join(', ')}] to use this feature.`
31
+ );
32
+ }
33
+ }
34
+
19
35
  try {
20
36
  workletsModule = require('react-native-worklets');
37
+ const workletsModuleJson = require('react-native-worklets/package.json');
38
+ isWorkletsVersionSupported = supportedWorkletsVersions.includes(
39
+ workletsModuleJson.version
40
+ );
21
41
  isWorkletsAvailable = true;
42
+ workletsVersion = workletsModuleJson.version;
43
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
22
44
  } catch (error) {
23
45
  isWorkletsAvailable = false;
24
46
  }