react-native-audio-api 0.10.0-nightly-75aa9d0-20251022 → 0.10.0-nightly-325e87a-20251023

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 (37) hide show
  1. package/RNAudioAPI.podspec +3 -0
  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/common/cpp/audioapi/AudioAPIModuleInstaller.h +20 -0
  8. package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
  9. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +0 -10
  10. package/ios/audioapi/ios/AudioAPIModule.h +2 -1
  11. package/ios/audioapi/ios/AudioAPIModule.mm +2 -0
  12. package/ios/audioapi/ios/system/AudioSessionManager.mm +9 -0
  13. package/lib/commonjs/core/AudioContext.js +1 -1
  14. package/lib/commonjs/core/AudioContext.js.map +1 -1
  15. package/lib/commonjs/core/BaseAudioContext.js +16 -25
  16. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  17. package/lib/commonjs/core/OfflineAudioContext.js +1 -1
  18. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  19. package/lib/commonjs/utils/index.js +19 -4
  20. package/lib/commonjs/utils/index.js.map +1 -1
  21. package/lib/module/core/AudioContext.js +2 -2
  22. package/lib/module/core/AudioContext.js.map +1 -1
  23. package/lib/module/core/BaseAudioContext.js +17 -26
  24. package/lib/module/core/BaseAudioContext.js.map +1 -1
  25. package/lib/module/core/OfflineAudioContext.js +2 -2
  26. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  27. package/lib/module/utils/index.js +15 -1
  28. package/lib/module/utils/index.js.map +1 -1
  29. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  30. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  31. package/lib/typescript/utils/index.d.ts +4 -1
  32. package/lib/typescript/utils/index.d.ts.map +1 -1
  33. package/package.json +1 -1
  34. package/src/core/AudioContext.ts +3 -2
  35. package/src/core/BaseAudioContext.ts +44 -60
  36. package/src/core/OfflineAudioContext.ts +2 -2
  37. package/src/utils/index.ts +22 -1
@@ -1,4 +1,5 @@
1
1
  require "json"
2
+ require_relative './scripts/rnaa_utils'
2
3
 
3
4
  package_json = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
5
 
@@ -8,6 +9,8 @@ folly_flags = "-DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-
8
9
  fabric_flags = $new_arch_enabled ? '-DRCT_NEW_ARCH_ENABLED' : ''
9
10
  version_flag = "-DAUDIOAPI_VERSION=#{package_json['version']}"
10
11
 
12
+ worklets_preprocessor_flag = check_if_worklets_enabled() ? '-DRN_AUDIO_API_ENABLE_WORKLETS=1' : ''
13
+
11
14
  Pod::Spec.new do |s|
12
15
  s.name = "RNAudioAPI"
13
16
  s.version = package_json["version"]
@@ -74,6 +74,30 @@ def resolveReactNativeWorkletsDirectory() {
74
74
  return null;
75
75
  }
76
76
 
77
+ def validateWorkletsVersion() {
78
+ def validationScript = file("${projectDir}/../scripts/validate-worklets-version.js")
79
+ if (!validationScript.exists()) {
80
+ logger.error("[AudioAPI] Worklets validation script not found at ${validationScript.absolutePath}")
81
+ return false
82
+ }
83
+
84
+ try {
85
+ def process = ["node", validationScript.absolutePath].execute()
86
+ process.waitForProcessOutput(System.out, System.err)
87
+ def exitCode = process.exitValue()
88
+
89
+ if (exitCode == 0) {
90
+ return true
91
+ } else {
92
+ logger.warn("[AudioAPI] Worklets version validation failed")
93
+ return false
94
+ }
95
+ } catch (Exception e) {
96
+ logger.error("[AudioAPI] Failed to validate worklets version: ${e.message}")
97
+ return false
98
+ }
99
+ }
100
+
77
101
  def toPlatformFileString(String path) {
78
102
  if (Os.isFamily(Os.FAMILY_WINDOWS)) {
79
103
  path = path.replace(File.separatorChar, '/' as char)
@@ -92,7 +116,7 @@ static def supportsNamespace() {
92
116
 
93
117
  def reactNativeRootDir = resolveReactNativeDirectory()
94
118
  def reactNativeWorkletsRootDir = resolveReactNativeWorkletsDirectory()
95
- def isWorkletsAvailable = reactNativeWorkletsRootDir != null
119
+ def isWorkletsAvailable = reactNativeWorkletsRootDir != null && validateWorkletsVersion()
96
120
 
97
121
  def reactProperties = new Properties()
98
122
  file("$reactNativeRootDir/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) }
@@ -123,7 +147,7 @@ android {
123
147
  defaultConfig {
124
148
  minSdkVersion getExtOrIntegerDefault("minSdkVersion")
125
149
  targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
126
-
150
+
127
151
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
128
152
  buildConfigField "boolean", "RN_AUDIO_API_ENABLE_WORKLETS", "${isWorkletsAvailable}"
129
153
 
@@ -51,6 +51,7 @@ void AudioAPIModule::registerNatives() {
51
51
  makeNativeMethod(
52
52
  "invokeHandlerWithEventNameAndEventBody",
53
53
  AudioAPIModule::invokeHandlerWithEventNameAndEventBody),
54
+ makeNativeMethod("closeAllContexts", AudioAPIModule::closeAllContexts),
54
55
  });
55
56
  }
56
57
 
@@ -101,4 +102,8 @@ void AudioAPIModule::invokeHandlerWithEventNameAndEventBody(
101
102
  eventName->toStdString(), body);
102
103
  }
103
104
  }
105
+
106
+ void AudioAPIModule::closeAllContexts() {
107
+ AudioAPIModuleInstaller::closeAllContexts();
108
+ }
104
109
  } // namespace audioapi
@@ -34,6 +34,7 @@ class AudioAPIModule : public jni::HybridClass<AudioAPIModule> {
34
34
 
35
35
  void injectJSIBindings();
36
36
  void invokeHandlerWithEventNameAndEventBody(jni::alias_ref<jni::JString> eventName, jni::alias_ref<jni::JMap<jstring, jobject>> eventBody);
37
+ void closeAllContexts();
37
38
 
38
39
  private:
39
40
  friend HybridBase;
@@ -4,6 +4,7 @@
4
4
  #include <audioapi/core/utils/Constants.h>
5
5
  #include <audioapi/utils/AudioArray.h>
6
6
  #include <audioapi/utils/AudioBus.h>
7
+ #include <jni.h>
7
8
 
8
9
  namespace audioapi {
9
10
 
@@ -49,7 +50,8 @@ bool AudioPlayer::openAudioStream() {
49
50
 
50
51
  bool AudioPlayer::start() {
51
52
  if (mStream_) {
52
- nativeAudioPlayer_->start();
53
+ jni::ThreadScope::WithClassLoader(
54
+ [this]() { nativeAudioPlayer_->start(); });
53
55
  auto result = mStream_->requestStart();
54
56
  return result == oboe::Result::OK;
55
57
  }
@@ -59,7 +61,7 @@ bool AudioPlayer::start() {
59
61
 
60
62
  void AudioPlayer::stop() {
61
63
  if (mStream_) {
62
- nativeAudioPlayer_->stop();
64
+ jni::ThreadScope::WithClassLoader([this]() { nativeAudioPlayer_->stop(); });
63
65
  mStream_->requestStop();
64
66
  }
65
67
  }
@@ -1,6 +1,8 @@
1
1
  package com.swmansion.audioapi
2
2
 
3
3
  import com.facebook.jni.HybridData
4
+ import com.facebook.react.bridge.LifecycleEventListener
5
+ import com.facebook.react.bridge.NativeModule
4
6
  import com.facebook.react.bridge.Promise
5
7
  import com.facebook.react.bridge.ReactApplicationContext
6
8
  import com.facebook.react.bridge.ReadableArray
@@ -16,7 +18,8 @@ import java.lang.ref.WeakReference
16
18
  @ReactModule(name = AudioAPIModule.NAME)
17
19
  class AudioAPIModule(
18
20
  reactContext: ReactApplicationContext,
19
- ) : NativeAudioAPIModuleSpec(reactContext) {
21
+ ) : NativeAudioAPIModuleSpec(reactContext),
22
+ LifecycleEventListener {
20
23
  companion object {
21
24
  const val NAME = NativeAudioAPIModuleSpec.NAME
22
25
  }
@@ -24,6 +27,7 @@ class AudioAPIModule(
24
27
  val reactContext: WeakReference<ReactApplicationContext> = WeakReference(reactContext)
25
28
 
26
29
  private val mHybridData: HybridData
30
+ private var reanimatedModule: NativeModule? = null
27
31
 
28
32
  external fun initHybrid(
29
33
  workletsModule: Any?,
@@ -38,6 +42,8 @@ class AudioAPIModule(
38
42
  eventBody: Map<String, Any>,
39
43
  )
40
44
 
45
+ private external fun closeAllContexts()
46
+
41
47
  init {
42
48
  try {
43
49
  System.loadLibrary("react-native-audio-api")
@@ -47,6 +53,8 @@ class AudioAPIModule(
47
53
  if (BuildConfig.RN_AUDIO_API_ENABLE_WORKLETS) {
48
54
  try {
49
55
  workletsModule = reactContext.getNativeModule("WorkletsModule")
56
+ reanimatedModule = reactContext.getNativeModule("ReanimatedModule")
57
+ reanimatedModule
50
58
  } catch (ex: Exception) {
51
59
  throw RuntimeException("WorkletsModule not found - make sure react-native-worklets is properly installed")
52
60
  }
@@ -64,6 +72,26 @@ class AudioAPIModule(
64
72
  return true
65
73
  }
66
74
 
75
+ override fun onHostResume() {
76
+ // do nothing
77
+ }
78
+
79
+ override fun onHostPause() {
80
+ closeAllContexts()
81
+ }
82
+
83
+ override fun onHostDestroy() {
84
+ // do nothing
85
+ }
86
+
87
+ override fun initialize() {
88
+ reactContext.get()?.addLifecycleEventListener(this)
89
+ }
90
+
91
+ override fun invalidate() {
92
+ // think about cleaning up resources, singletons etc.
93
+ }
94
+
67
95
  override fun getDevicePreferredSampleRate(): Double = MediaSessionManager.getDevicePreferredSampleRate()
68
96
 
69
97
  override fun setAudioSessionActivity(
@@ -16,12 +16,16 @@
16
16
  #include <audioapi/core/utils/worklets/SafeIncludes.h>
17
17
 
18
18
  #include <memory>
19
+ #include <vector>
19
20
 
20
21
  namespace audioapi {
21
22
 
22
23
  using namespace facebook;
23
24
 
24
25
  class AudioAPIModuleInstaller {
26
+ private:
27
+ inline static std::vector<std::weak_ptr<AudioContext>> contexts_ = {};
28
+
25
29
  public:
26
30
  static void injectJSIBindings(
27
31
  jsi::Runtime *jsiRuntime,
@@ -61,6 +65,19 @@ class AudioAPIModuleInstaller {
61
65
  *jsiRuntime, audioEventHandlerRegistryHostObject));
62
66
  }
63
67
 
68
+ static void closeAllContexts() {
69
+ for (auto it = contexts_.begin(); it != contexts_.end(); ++it) {
70
+ auto weakContext = *it;
71
+
72
+ if (auto context = weakContext.lock()) {
73
+ context->close();
74
+ }
75
+
76
+ it = contexts_.erase(it);
77
+ --it;
78
+ }
79
+ }
80
+
64
81
  private:
65
82
  static jsi::Function getCreateAudioContextFunction(
66
83
  jsi::Runtime *jsiRuntime,
@@ -95,6 +112,8 @@ class AudioAPIModuleInstaller {
95
112
  initSuspended,
96
113
  audioEventHandlerRegistry,
97
114
  runtimeRegistry);
115
+ AudioAPIModuleInstaller::contexts_.push_back(audioContext);
116
+
98
117
  auto audioContextHostObject =
99
118
  std::make_shared<AudioContextHostObject>(
100
119
  audioContext, &runtime, jsCallInvoker);
@@ -138,6 +157,7 @@ class AudioAPIModuleInstaller {
138
157
  sampleRate,
139
158
  audioEventHandlerRegistry,
140
159
  runtimeRegistry);
160
+
141
161
  auto audioContextHostObject =
142
162
  std::make_shared<OfflineAudioContextHostObject>(
143
163
  offlineAudioContext, &runtime, jsCallInvoker);
@@ -56,7 +56,7 @@ float AudioParam::getValueAtTime(double time) {
56
56
  void AudioParam::setValueAtTime(float value, double startTime) {
57
57
  auto event = [value, startTime](AudioParam &param) {
58
58
  // Ignore events scheduled before the end of existing automation
59
- if (startTime <= param.getQueueEndTime()) {
59
+ if (startTime < param.getQueueEndTime()) {
60
60
  return;
61
61
  }
62
62
 
@@ -87,7 +87,7 @@ void AudioParam::setValueAtTime(float value, double startTime) {
87
87
  void AudioParam::linearRampToValueAtTime(float value, double endTime) {
88
88
  auto event = [value, endTime](AudioParam &param) {
89
89
  // Ignore events scheduled before the end of existing automation
90
- if (endTime <= param.getQueueEndTime()) {
90
+ if (endTime < param.getQueueEndTime()) {
91
91
  return;
92
92
  }
93
93
 
@@ -5,16 +5,6 @@
5
5
  #include <string>
6
6
  #include <memory>
7
7
 
8
- #ifdef __APPLE__
9
- /// We cannot make any conditional logic inside podspec but it should automatically compile those files
10
- /// they should be accessible if someone has react-native-worklets in node_modules
11
- #if __has_include(<worklets/WorkletRuntime/WorkletRuntime.h>)
12
- #define RN_AUDIO_API_ENABLE_WORKLETS 1
13
- #else
14
- #define RN_AUDIO_API_ENABLE_WORKLETS 0
15
- #endif
16
- #endif
17
-
18
8
  #ifndef RN_AUDIO_API_TEST
19
9
  #define RN_AUDIO_API_TEST 0
20
10
  #endif
@@ -1,5 +1,6 @@
1
1
  #ifdef RCT_NEW_ARCH_ENABLED
2
2
  #import <React/RCTCallInvokerModule.h>
3
+ #import <React/RCTInvalidating.h>
3
4
  #import <rnaudioapi/rnaudioapi.h>
4
5
  #else // RCT_NEW_ARCH_ENABLED
5
6
  #import <React/RCTBridgeModule.h>
@@ -14,7 +15,7 @@
14
15
 
15
16
  @interface AudioAPIModule : RCTEventEmitter
16
17
  #ifdef RCT_NEW_ARCH_ENABLED
17
- <NativeAudioAPIModuleSpec, RCTCallInvokerModule>
18
+ <NativeAudioAPIModuleSpec, RCTCallInvokerModule, RCTInvalidating>
18
19
  #else
19
20
  <RCTBridgeModule>
20
21
  #endif // RCT_NEW_ARCH_ENABLED
@@ -54,6 +54,8 @@ RCT_EXPORT_MODULE(AudioAPIModule);
54
54
 
55
55
  _eventHandler = nullptr;
56
56
 
57
+ audioapi::AudioAPIModuleInstaller::closeAllContexts();
58
+
57
59
  [super invalidate];
58
60
  }
59
61
 
@@ -213,6 +213,15 @@
213
213
 
214
214
  - (void)requestRecordingPermissions:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
215
215
  {
216
+ id value = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSMicrophoneUsageDescription"];
217
+ // if there is no entry NSMicrophoneUsageDescription calling requestRecordPermission will quit an app
218
+ if (value == nil) {
219
+ reject(
220
+ nil,
221
+ @"There is no NSMicrophoneUsageDescription entry in info.plist file. App cannot access microphone without it.",
222
+ nil);
223
+ return;
224
+ }
216
225
  if (@available(iOS 17, *)) {
217
226
  [AVAudioSession.sharedInstance requestRecordPermission:^(BOOL granted) {
218
227
  if (granted) {
@@ -15,7 +15,7 @@ class AudioContext extends _BaseAudioContext.default {
15
15
  throw new _errors.NotSupportedError(`The provided sampleRate is not supported: ${options.sampleRate}`);
16
16
  }
17
17
  let audioRuntime = null;
18
- if (_utils.isWorkletsAvailable) {
18
+ if (_utils.isWorkletsVersionSupported) {
19
19
  audioRuntime = _utils.workletsModule.createWorkletRuntime('AudioWorkletRuntime');
20
20
  }
21
21
  super(global.createAudioContext(options?.sampleRate || _system.default.getDevicePreferredSampleRate(), options?.initSuspended || false, audioRuntime));
@@ -1 +1 @@
1
- {"version":3,"names":["_BaseAudioContext","_interopRequireDefault","require","_system","_errors","_utils","e","__esModule","default","AudioContext","BaseAudioContext","constructor","options","sampleRate","NotSupportedError","audioRuntime","isWorkletsAvailable","workletsModule","createWorkletRuntime","global","createAudioContext","AudioManager","getDevicePreferredSampleRate","initSuspended","close","context","resume","suspend","exports"],"sourceRoot":"../../../src","sources":["core/AudioContext.ts"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAA+D,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhD,MAAMG,YAAY,SAASC,yBAAgB,CAAC;EACzDC,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,IAAIC,yBAAiB,CACzB,6CAA6CF,OAAO,CAACC,UAAU,EACjE,CAAC;IACH;IACA,IAAIE,YAAY,GAAG,IAAI;IACvB,IAAIC,0BAAmB,EAAE;MACvBD,YAAY,GAAGE,qBAAc,CAACC,oBAAoB,CAAC,qBAAqB,CAAC;IAC3E;IAEA,KAAK,CACHC,MAAM,CAACC,kBAAkB,CACvBR,OAAO,EAAEC,UAAU,IAAIQ,eAAY,CAACC,4BAA4B,CAAC,CAAC,EAClEV,OAAO,EAAEW,aAAa,IAAI,KAAK,EAC/BR,YACF,CACF,CAAC;EACH;EAEA,MAAMS,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;AAACC,OAAA,CAAApB,OAAA,GAAAC,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_BaseAudioContext","_interopRequireDefault","require","_system","_errors","_utils","e","__esModule","default","AudioContext","BaseAudioContext","constructor","options","sampleRate","NotSupportedError","audioRuntime","isWorkletsVersionSupported","workletsModule","createWorkletRuntime","global","createAudioContext","AudioManager","getDevicePreferredSampleRate","initSuspended","close","context","resume","suspend","exports"],"sourceRoot":"../../../src","sources":["core/AudioContext.ts"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAsE,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEvD,MAAMG,YAAY,SAASC,yBAAgB,CAAC;EACzDC,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,IAAIC,yBAAiB,CACzB,6CAA6CF,OAAO,CAACC,UAAU,EACjE,CAAC;IACH;IACA,IAAIE,YAAY,GAAG,IAAI;IAEvB,IAAIC,iCAA0B,EAAE;MAC9BD,YAAY,GAAGE,qBAAc,CAACC,oBAAoB,CAAC,qBAAqB,CAAC;IAC3E;IAEA,KAAK,CACHC,MAAM,CAACC,kBAAkB,CACvBR,OAAO,EAAEC,UAAU,IAAIQ,eAAY,CAACC,4BAA4B,CAAC,CAAC,EAClEV,OAAO,EAAEW,aAAa,IAAI,KAAK,EAC/BR,YACF,CACF,CAAC;EACH;EAEA,MAAMS,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;AAACC,OAAA,CAAApB,OAAA,GAAAC,YAAA","ignoreList":[]}
@@ -52,37 +52,28 @@ class BaseAudioContext {
52
52
  if (bufferLength < 1) {
53
53
  throw new _errors.NotSupportedError(`The buffer length provided (${bufferLength}) can not be less than 1`);
54
54
  }
55
- if (_utils.isWorkletsAvailable) {
56
- const shareableWorklet = _utils.workletsModule.makeShareableCloneRecursive((audioBuffers, channelCount) => {
57
- 'worklet';
55
+ (0, _utils.assertWorkletsEnabled)();
56
+ const shareableWorklet = _utils.workletsModule.makeShareableCloneRecursive((audioBuffers, channelCount) => {
57
+ 'worklet';
58
58
 
59
- const floatAudioData = audioBuffers.map(buffer => new Float32Array(buffer));
60
- callback(floatAudioData, channelCount);
61
- });
62
- return new _WorkletNode.default(this, this.context.createWorkletNode(shareableWorklet, workletRuntime === 'UIRuntime', bufferLength, inputChannelCount));
63
- }
64
- /// User does not have worklets as a dependency so he cannot use the worklet API.
65
- throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
59
+ const floatAudioData = audioBuffers.map(buffer => new Float32Array(buffer));
60
+ callback(floatAudioData, channelCount);
61
+ });
62
+ return new _WorkletNode.default(this, this.context.createWorkletNode(shareableWorklet, workletRuntime === 'UIRuntime', bufferLength, inputChannelCount));
66
63
  }
67
64
  createWorkletProcessingNode(callback, workletRuntime = 'AudioRuntime') {
68
- if (_utils.isWorkletsAvailable) {
69
- const shareableWorklet = _utils.workletsModule.makeShareableCloneRecursive((inputBuffers, outputBuffers, framesToProcess, currentTime) => {
70
- 'worklet';
65
+ (0, _utils.assertWorkletsEnabled)();
66
+ const shareableWorklet = _utils.workletsModule.makeShareableCloneRecursive((inputBuffers, outputBuffers, framesToProcess, currentTime) => {
67
+ 'worklet';
71
68
 
72
- const inputData = inputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
73
- const outputData = outputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
74
- callback(inputData, outputData, framesToProcess, currentTime);
75
- });
76
- return new _WorkletProcessingNode.default(this, this.context.createWorkletProcessingNode(shareableWorklet, workletRuntime === 'UIRuntime'));
77
- }
78
- /// User does not have worklets as a dependency so he cannot use the worklet API.
79
- throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
69
+ const inputData = inputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
70
+ const outputData = outputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
71
+ callback(inputData, outputData, framesToProcess, currentTime);
72
+ });
73
+ return new _WorkletProcessingNode.default(this, this.context.createWorkletProcessingNode(shareableWorklet, workletRuntime === 'UIRuntime'));
80
74
  }
81
75
  createWorkletSourceNode(callback, workletRuntime = 'AudioRuntime') {
82
- if (!_utils.isWorkletsAvailable) {
83
- /// User does not have worklets as a dependency so he cannot use the worklet API.
84
- throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
85
- }
76
+ (0, _utils.assertWorkletsEnabled)();
86
77
  const shareableWorklet = _utils.workletsModule.makeShareableCloneRecursive((audioBuffers, framesToProcess, currentTime, startOffset) => {
87
78
  'worklet';
88
79
 
@@ -1 +1 @@
1
- {"version":3,"names":["_errors","require","_utils","_WorkletSourceNode","_interopRequireDefault","_WorkletProcessingNode","_AnalyserNode","_AudioBuffer","_AudioBufferQueueSourceNode","_AudioBufferSourceNode","_AudioDestinationNode","_BiquadFilterNode","_ConstantSourceNode","_GainNode","_OscillatorNode","_PeriodicWave","_RecorderAdapterNode","_StereoPannerNode","_StreamerNode","_WorkletNode","_AudioDecoder","e","__esModule","default","BaseAudioContext","constructor","context","destination","AudioDestinationNode","sampleRate","currentTime","state","decodeAudioData","input","ArrayBuffer","TypeError","decodePCMInBase64","base64String","inputSampleRate","inputChannelCount","isInterleaved","createWorkletNode","callback","bufferLength","workletRuntime","NotSupportedError","isWorkletsAvailable","shareableWorklet","workletsModule","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","WorkletNode","Error","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","WorkletProcessingNode","createWorkletSourceNode","startOffset","WorkletSourceNode","createRecorderAdapter","RecorderAdapterNode","createOscillator","OscillatorNode","createStreamer","StreamerNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createBufferSource","options","pitchCorrection","AudioBufferSourceNode","createBufferQueueSource","AudioBufferQueueSourceNode","createBuffer","numOfChannels","length","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","disableNormalization","PeriodicWave","createAnalyser","AnalyserNode","exports"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_errors","require","_utils","_WorkletSourceNode","_interopRequireDefault","_WorkletProcessingNode","_AnalyserNode","_AudioBuffer","_AudioBufferQueueSourceNode","_AudioBufferSourceNode","_AudioDestinationNode","_BiquadFilterNode","_ConstantSourceNode","_GainNode","_OscillatorNode","_PeriodicWave","_RecorderAdapterNode","_StereoPannerNode","_StreamerNode","_WorkletNode","_AudioDecoder","e","__esModule","default","BaseAudioContext","constructor","context","destination","AudioDestinationNode","sampleRate","currentTime","state","decodeAudioData","input","ArrayBuffer","TypeError","decodePCMInBase64","base64String","inputSampleRate","inputChannelCount","isInterleaved","createWorkletNode","callback","bufferLength","workletRuntime","NotSupportedError","assertWorkletsEnabled","shareableWorklet","workletsModule","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","WorkletNode","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","WorkletProcessingNode","createWorkletSourceNode","startOffset","WorkletSourceNode","createRecorderAdapter","RecorderAdapterNode","createOscillator","OscillatorNode","createStreamer","StreamerNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createBufferSource","options","pitchCorrection","AudioBufferSourceNode","createBufferQueueSource","AudioBufferQueueSourceNode","createBuffer","numOfChannels","length","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","disableNormalization","PeriodicWave","createAnalyser","AnalyserNode","exports"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
@@ -12,7 +12,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
12
12
  class OfflineAudioContext extends _BaseAudioContext.default {
13
13
  constructor(arg0, arg1, arg2) {
14
14
  let audioRuntime = null;
15
- if (_utils.isWorkletsAvailable) {
15
+ if (_utils.isWorkletsVersionSupported) {
16
16
  audioRuntime = _utils.workletsModule.createWorkletRuntime('AudioWorkletRuntime');
17
17
  }
18
18
  if (typeof arg0 === 'object') {
@@ -1 +1 @@
1
- {"version":3,"names":["_BaseAudioContext","_interopRequireDefault","require","_errors","_AudioBuffer","_utils","e","__esModule","default","OfflineAudioContext","BaseAudioContext","constructor","arg0","arg1","arg2","audioRuntime","isWorkletsAvailable","workletsModule","createWorkletRuntime","numberOfChannels","length","sampleRate","global","createOfflineAudioContext","duration","NotSupportedError","isSuspended","isRendering","resume","InvalidStateError","context","suspend","suspendTime","currentTime","startRendering","audioBuffer","AudioBuffer","exports"],"sourceRoot":"../../../src","sources":["core/OfflineAudioContext.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_BaseAudioContext","_interopRequireDefault","require","_errors","_AudioBuffer","_utils","e","__esModule","default","OfflineAudioContext","BaseAudioContext","constructor","arg0","arg1","arg2","audioRuntime","isWorkletsVersionSupported","workletsModule","createWorkletRuntime","numberOfChannels","length","sampleRate","global","createOfflineAudioContext","duration","NotSupportedError","isSuspended","isRendering","resume","InvalidStateError","context","suspend","suspendTime","currentTime","startRendering","audioBuffer","AudioBuffer","exports"],"sourceRoot":"../../../src","sources":["core/OfflineAudioContext.ts"],"mappings":"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","ignoreList":[]}
@@ -3,18 +3,33 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.assertWorkletsEnabled = assertWorkletsEnabled;
6
7
  exports.clamp = clamp;
7
- exports.workletsModule = exports.isWorkletsAvailable = void 0;
8
+ exports.workletsVersion = exports.workletsModule = exports.supportedWorkletsVersions = exports.isWorkletsVersionSupported = void 0;
8
9
  function clamp(value, min, max) {
9
10
  return Math.min(Math.max(value, min), max);
10
11
  }
11
- let isWorkletsAvailable = exports.isWorkletsAvailable = false;
12
+ let isWorkletsAvailable = false;
13
+ let isWorkletsVersionSupported = exports.isWorkletsVersionSupported = false;
14
+ let workletsVersion = exports.workletsVersion = 'unknown';
15
+ const supportedWorkletsVersions = exports.supportedWorkletsVersions = ['0.6.0', '0.6.1'];
12
16
  let workletsModule = exports.workletsModule = void 0;
17
+ function assertWorkletsEnabled() {
18
+ if (!isWorkletsAvailable) {
19
+ throw new Error('[react-native-audio-api]: Worklets are not available. Please install react-native-worklets to use this feature.');
20
+ } else if (!isWorkletsVersionSupported) {
21
+ throw new Error(`[react-native-audio-api]: Worklets version ${workletsVersion} is not supported.
22
+ Please install react-native-worklets of one of the following versions: [${supportedWorkletsVersions.join(', ')}] to use this feature.`);
23
+ }
24
+ }
13
25
  try {
14
26
  exports.workletsModule = workletsModule = require('react-native-worklets');
15
- exports.isWorkletsAvailable = isWorkletsAvailable = true;
27
+ const workletsModuleJson = require('react-native-worklets/package.json');
28
+ exports.isWorkletsVersionSupported = isWorkletsVersionSupported = supportedWorkletsVersions.includes(workletsModuleJson.version);
29
+ isWorkletsAvailable = true;
30
+ exports.workletsVersion = workletsVersion = workletsModuleJson.version;
16
31
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
32
  } catch (error) {
18
- exports.isWorkletsAvailable = isWorkletsAvailable = false;
33
+ isWorkletsAvailable = false;
19
34
  }
20
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["clamp","value","min","max","Math","isWorkletsAvailable","exports","workletsModule","require","error"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;;;;;;AAWO,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;AAEO,IAAIE,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,KAAK;AAC/B,IAAIE,cAAuC,GAAAD,OAAA,CAAAC,cAAA;AAElD,IAAI;EACFD,OAAA,CAAAC,cAAA,GAAAA,cAAc,GAAGC,OAAO,CAAC,uBAAuB,CAAC;EACjDF,OAAA,CAAAD,mBAAA,GAAAA,mBAAmB,GAAG,IAAI;EAC1B;AACF,CAAC,CAAC,OAAOI,KAAK,EAAE;EACdH,OAAA,CAAAD,mBAAA,GAAAA,mBAAmB,GAAG,KAAK;AAC7B","ignoreList":[]}
1
+ {"version":3,"names":["clamp","value","min","max","Math","isWorkletsAvailable","isWorkletsVersionSupported","exports","workletsVersion","supportedWorkletsVersions","workletsModule","assertWorkletsEnabled","Error","join","require","workletsModuleJson","includes","version","error"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;;;;;;;AAWO,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;AACxB,IAAIC,0BAA0B,GAAAC,OAAA,CAAAD,0BAAA,GAAG,KAAK;AACtC,IAAIE,eAAe,GAAAD,OAAA,CAAAC,eAAA,GAAG,SAAS;AAC/B,MAAMC,yBAAyB,GAAAF,OAAA,CAAAE,yBAAA,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AACpD,IAAIC,cAAuC,GAAAH,OAAA,CAAAG,cAAA;AAE3C,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAI,CAACN,mBAAmB,EAAE;IACxB,MAAM,IAAIO,KAAK,CACb,iHACF,CAAC;EACH,CAAC,MAAM,IAAI,CAACN,0BAA0B,EAAE;IACtC,MAAM,IAAIM,KAAK,CACb,8CAA8CJ,eAAe;AACnE,gFAAgFC,yBAAyB,CAACI,IAAI,CAAC,IAAI,CAAC,wBAChH,CAAC;EACH;AACF;AAEA,IAAI;EACFN,OAAA,CAAAG,cAAA,GAAAA,cAAc,GAAGI,OAAO,CAAC,uBAAuB,CAAC;EACjD,MAAMC,kBAAkB,GAAGD,OAAO,CAAC,oCAAoC,CAAC;EACxEP,OAAA,CAAAD,0BAAA,GAAAA,0BAA0B,GAAGG,yBAAyB,CAACO,QAAQ,CAC7DD,kBAAkB,CAACE,OACrB,CAAC;EACDZ,mBAAmB,GAAG,IAAI;EAC1BE,OAAA,CAAAC,eAAA,GAAAA,eAAe,GAAGO,kBAAkB,CAACE,OAAO;EAC5C;AACF,CAAC,CAAC,OAAOC,KAAK,EAAE;EACdb,mBAAmB,GAAG,KAAK;AAC7B","ignoreList":[]}
@@ -3,14 +3,14 @@
3
3
  import BaseAudioContext from "./BaseAudioContext.js";
4
4
  import AudioManager from "../system/index.js";
5
5
  import { NotSupportedError } from "../errors/index.js";
6
- import { isWorkletsAvailable, workletsModule } from "../utils/index.js";
6
+ import { isWorkletsVersionSupported, workletsModule } from "../utils/index.js";
7
7
  export default class AudioContext extends BaseAudioContext {
8
8
  constructor(options) {
9
9
  if (options && options.sampleRate && (options.sampleRate < 8000 || options.sampleRate > 96000)) {
10
10
  throw new NotSupportedError(`The provided sampleRate is not supported: ${options.sampleRate}`);
11
11
  }
12
12
  let audioRuntime = null;
13
- if (isWorkletsAvailable) {
13
+ if (isWorkletsVersionSupported) {
14
14
  audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
15
15
  }
16
16
  super(global.createAudioContext(options?.sampleRate || AudioManager.getDevicePreferredSampleRate(), options?.initSuspended || false, audioRuntime));
@@ -1 +1 @@
1
- {"version":3,"names":["BaseAudioContext","AudioManager","NotSupportedError","isWorkletsAvailable","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,mBAAmB,EAAEC,cAAc,QAAQ,mBAAU;AAE9D,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;IACvB,IAAIN,mBAAmB,EAAE;MACvBM,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
+ {"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";
@@ -47,37 +47,28 @@ export default class BaseAudioContext {
47
47
  if (bufferLength < 1) {
48
48
  throw new NotSupportedError(`The buffer length provided (${bufferLength}) can not be less than 1`);
49
49
  }
50
- if (isWorkletsAvailable) {
51
- const shareableWorklet = workletsModule.makeShareableCloneRecursive((audioBuffers, channelCount) => {
52
- 'worklet';
50
+ assertWorkletsEnabled();
51
+ const shareableWorklet = workletsModule.makeShareableCloneRecursive((audioBuffers, channelCount) => {
52
+ 'worklet';
53
53
 
54
- const floatAudioData = audioBuffers.map(buffer => new Float32Array(buffer));
55
- callback(floatAudioData, channelCount);
56
- });
57
- return new WorkletNode(this, this.context.createWorkletNode(shareableWorklet, workletRuntime === 'UIRuntime', bufferLength, inputChannelCount));
58
- }
59
- /// User does not have worklets as a dependency so he cannot use the worklet API.
60
- throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
54
+ const floatAudioData = audioBuffers.map(buffer => new Float32Array(buffer));
55
+ callback(floatAudioData, channelCount);
56
+ });
57
+ return new WorkletNode(this, this.context.createWorkletNode(shareableWorklet, workletRuntime === 'UIRuntime', bufferLength, inputChannelCount));
61
58
  }
62
59
  createWorkletProcessingNode(callback, workletRuntime = 'AudioRuntime') {
63
- if (isWorkletsAvailable) {
64
- const shareableWorklet = workletsModule.makeShareableCloneRecursive((inputBuffers, outputBuffers, framesToProcess, currentTime) => {
65
- 'worklet';
60
+ assertWorkletsEnabled();
61
+ const shareableWorklet = workletsModule.makeShareableCloneRecursive((inputBuffers, outputBuffers, framesToProcess, currentTime) => {
62
+ 'worklet';
66
63
 
67
- const inputData = inputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
68
- const outputData = outputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
69
- callback(inputData, outputData, framesToProcess, currentTime);
70
- });
71
- return new WorkletProcessingNode(this, this.context.createWorkletProcessingNode(shareableWorklet, workletRuntime === 'UIRuntime'));
72
- }
73
- /// User does not have worklets as a dependency so he cannot use the worklet API.
74
- throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
64
+ const inputData = inputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
65
+ const outputData = outputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
66
+ callback(inputData, outputData, framesToProcess, currentTime);
67
+ });
68
+ return new WorkletProcessingNode(this, this.context.createWorkletProcessingNode(shareableWorklet, workletRuntime === 'UIRuntime'));
75
69
  }
76
70
  createWorkletSourceNode(callback, workletRuntime = 'AudioRuntime') {
77
- if (!isWorkletsAvailable) {
78
- /// User does not have worklets as a dependency so he cannot use the worklet API.
79
- throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
80
- }
71
+ assertWorkletsEnabled();
81
72
  const shareableWorklet = workletsModule.makeShareableCloneRecursive((audioBuffers, framesToProcess, currentTime, startOffset) => {
82
73
  'worklet';
83
74
 
@@ -1 +1 @@
1
- {"version":3,"names":["InvalidAccessError","NotSupportedError","isWorkletsAvailable","workletsModule","WorkletSourceNode","WorkletProcessingNode","AnalyserNode","AudioBuffer","AudioBufferQueueSourceNode","AudioBufferSourceNode","AudioDestinationNode","BiquadFilterNode","ConstantSourceNode","GainNode","OscillatorNode","PeriodicWave","RecorderAdapterNode","StereoPannerNode","StreamerNode","WorkletNode","decodeAudioData","decodePCMInBase64","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","input","ArrayBuffer","TypeError","base64String","inputSampleRate","inputChannelCount","isInterleaved","createWorkletNode","callback","bufferLength","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"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,iBAAiB,QAAQ,oBAAW;AAQjE,SAASC,mBAAmB,EAAEC,cAAc,QAAQ,mBAAU;AAC9D,OAAOC,iBAAiB,MAAM,wBAAqB;AACnD,OAAOC,qBAAqB,MAAM,4BAAyB;AAC3D,OAAOC,YAAY,MAAM,mBAAgB;AACzC,OAAOC,WAAW,MAAM,kBAAe;AACvC,OAAOC,0BAA0B,MAAM,iCAA8B;AACrE,OAAOC,qBAAqB,MAAM,4BAAyB;AAC3D,OAAOC,oBAAoB,MAAM,2BAAwB;AACzD,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,kBAAkB,MAAM,yBAAsB;AACrD,OAAOC,QAAQ,MAAM,eAAY;AACjC,OAAOC,cAAc,MAAM,qBAAkB;AAC7C,OAAOC,YAAY,MAAM,mBAAgB;AACzC,OAAOC,mBAAmB,MAAM,0BAAuB;AACvD,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,YAAY,MAAM,mBAAgB;AACzC,OAAOC,WAAW,MAAM,kBAAe;AACvC,SAASC,eAAe,EAAEC,iBAAiB,QAAQ,mBAAgB;AAEnE,eAAe,MAAMC,gBAAgB,CAAC;EAKpCC,WAAWA,CAACC,OAA0B,EAAE;IACtC,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,WAAW,GAAG,IAAIf,oBAAoB,CAAC,IAAI,EAAEc,OAAO,CAACC,WAAW,CAAC;IACtE,IAAI,CAACC,UAAU,GAAGF,OAAO,CAACE,UAAU;EACtC;EAEA,IAAWC,WAAWA,CAAA,EAAW;IAC/B,OAAO,IAAI,CAACH,OAAO,CAACG,WAAW;EACjC;EAEA,IAAWC,KAAKA,CAAA,EAAiB;IAC/B,OAAO,IAAI,CAACJ,OAAO,CAACI,KAAK;EAC3B;EAEA,MAAaR,eAAeA,CAC1BS,KAA2B,EAC3BH,UAAmB,EACG;IACtB,IAAI,EAAE,OAAOG,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYC,WAAW,CAAC,EAAE;MAChE,MAAM,IAAIC,SAAS,CAAC,uCAAuC,CAAC;IAC9D;IACA,OAAO,MAAMX,eAAe,CAACS,KAAK,EAAEH,UAAU,IAAI,IAAI,CAACA,UAAU,CAAC;EACpE;EAEA,MAAaL,iBAAiBA,CAC5BW,YAAoB,EACpBC,eAAuB,EACvBC,iBAAyB,EACzBC,aAAsB,GAAG,IAAI,EACP;IACtB,OAAO,MAAMd,iBAAiB,CAC5BW,YAAY,EACZC,eAAe,EACfC,iBAAiB,EACjBC,aACF,CAAC;EACH;EAEAC,iBAAiBA,CACfC,QAAwE,EACxEC,YAAoB,EACpBJ,iBAAyB,EACzBK,cAAmC,GAAG,cAAc,EACvC;IACb,IAAIL,iBAAiB,GAAG,CAAC,IAAIA,iBAAiB,GAAG,EAAE,EAAE;MACnD,MAAM,IAAIjC,iBAAiB,CACzB,0CAA0CiC,iBAAiB,6CAC7D,CAAC;IACH;IACA,IAAII,YAAY,GAAG,CAAC,EAAE;MACpB,MAAM,IAAIrC,iBAAiB,CACzB,+BAA+BqC,YAAY,0BAC7C,CAAC;IACH;IAEA,IAAIpC,mBAAmB,EAAE;MACvB,MAAMsC,gBAAgB,GAAGrC,cAAc,CAACsC,2BAA2B,CACjE,CAACC,YAAgC,EAAEC,YAAoB,KAAK;QAC1D,SAAS;;QACT,MAAMC,cAAmC,GAAGF,YAAY,CAACG,GAAG,CACzDC,MAAM,IAAK,IAAIC,YAAY,CAACD,MAAM,CACrC,CAAC;QACDT,QAAQ,CAACO,cAAc,EAAED,YAAY,CAAC;MACxC,CACF,CAAC;MACD,OAAO,IAAIxB,WAAW,CACpB,IAAI,EACJ,IAAI,CAACK,OAAO,CAACY,iBAAiB,CAC5BI,gBAAgB,EAChBD,cAAc,KAAK,WAAW,EAC9BD,YAAY,EACZJ,iBACF,CACF,CAAC;IACH;IACA;IACA,MAAM,IAAIc,KAAK,CACb,yIACF,CAAC;EACH;EAEAC,2BAA2BA,CACzBZ,QAKS,EACTE,cAAmC,GAAG,cAAc,EAC7B;IACvB,IAAIrC,mBAAmB,EAAE;MACvB,MAAMsC,gBAAgB,GAAGrC,cAAc,CAACsC,2BAA2B,CACjE,CACES,YAAgC,EAChCC,aAAiC,EACjCC,eAAuB,EACvBzB,WAAmB,KAChB;QACH,SAAS;;QACT,MAAM0B,SAA8B,GAAGH,YAAY,CAACL,GAAG,CACpDC,MAAM,IAAK,IAAIC,YAAY,CAACD,MAAM,EAAE,CAAC,EAAEM,eAAe,CACzD,CAAC;QACD,MAAME,UAA+B,GAAGH,aAAa,CAACN,GAAG,CACtDC,MAAM,IAAK,IAAIC,YAAY,CAACD,MAAM,EAAE,CAAC,EAAEM,eAAe,CACzD,CAAC;QACDf,QAAQ,CAACgB,SAAS,EAAEC,UAAU,EAAEF,eAAe,EAAEzB,WAAW,CAAC;MAC/D,CACF,CAAC;MACD,OAAO,IAAItB,qBAAqB,CAC9B,IAAI,EACJ,IAAI,CAACmB,OAAO,CAACyB,2BAA2B,CACtCT,gBAAgB,EAChBD,cAAc,KAAK,WACrB,CACF,CAAC;IACH;IACA;IACA,MAAM,IAAIS,KAAK,CACb,yIACF,CAAC;EACH;EAEAO,uBAAuBA,CACrBlB,QAKS,EACTE,cAAmC,GAAG,cAAc,EACjC;IACnB,IAAI,CAACrC,mBAAmB,EAAE;MACxB;MACA,MAAM,IAAI8C,KAAK,CACb,yIACF,CAAC;IACH;IACA,MAAMR,gBAAgB,GAAGrC,cAAc,CAACsC,2BAA2B,CACjE,CACEC,YAAgC,EAChCU,eAAuB,EACvBzB,WAAmB,EACnB6B,WAAmB,KAChB;MACH,SAAS;;MACT,MAAMZ,cAAmC,GAAGF,YAAY,CAACG,GAAG,CACzDC,MAAM,IAAK,IAAIC,YAAY,CAACD,MAAM,CACrC,CAAC;MACDT,QAAQ,CAACO,cAAc,EAAEQ,eAAe,EAAEzB,WAAW,EAAE6B,WAAW,CAAC;IACrE,CACF,CAAC;IACD,OAAO,IAAIpD,iBAAiB,CAC1B,IAAI,EACJ,IAAI,CAACoB,OAAO,CAAC+B,uBAAuB,CAClCf,gBAAgB,EAChBD,cAAc,KAAK,WACrB,CACF,CAAC;EACH;EAEAkB,qBAAqBA,CAAA,EAAwB;IAC3C,OAAO,IAAIzC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAACQ,OAAO,CAACiC,qBAAqB,CAAC,CAAC,CAAC;EAC5E;EAEAC,gBAAgBA,CAAA,EAAmB;IACjC,OAAO,IAAI5C,cAAc,CAAC,IAAI,EAAE,IAAI,CAACU,OAAO,CAACkC,gBAAgB,CAAC,CAAC,CAAC;EAClE;EAEAC,cAAcA,CAAA,EAAiB;IAC7B,OAAO,IAAIzC,YAAY,CAAC,IAAI,EAAE,IAAI,CAACM,OAAO,CAACmC,cAAc,CAAC,CAAC,CAAC;EAC9D;EAEAC,oBAAoBA,CAAA,EAAuB;IACzC,OAAO,IAAIhD,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAACY,OAAO,CAACoC,oBAAoB,CAAC,CAAC,CAAC;EAC1E;EAEAC,UAAUA,CAAA,EAAa;IACrB,OAAO,IAAIhD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACW,OAAO,CAACqC,UAAU,CAAC,CAAC,CAAC;EACtD;EAEAC,kBAAkBA,CAAA,EAAqB;IACrC,OAAO,IAAI7C,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAACO,OAAO,CAACsC,kBAAkB,CAAC,CAAC,CAAC;EACtE;EAEAC,kBAAkBA,CAAA,EAAqB;IACrC,OAAO,IAAIpD,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAACa,OAAO,CAACuC,kBAAkB,CAAC,CAAC,CAAC;EACtE;EAEAC,kBAAkBA,CAChBC,OAA0C,EACnB;IACvB,MAAMC,eAAe,GAAGD,OAAO,EAAEC,eAAe,IAAI,KAAK;IAEzD,OAAO,IAAIzD,qBAAqB,CAC9B,IAAI,EACJ,IAAI,CAACe,OAAO,CAACwC,kBAAkB,CAACE,eAAe,CACjD,CAAC;EACH;EAEAC,uBAAuBA,CACrBF,OAA0C,EACd;IAC5B,MAAMC,eAAe,GAAGD,OAAO,EAAEC,eAAe,IAAI,KAAK;IAEzD,OAAO,IAAI1D,0BAA0B,CACnC,IAAI,EACJ,IAAI,CAACgB,OAAO,CAAC2C,uBAAuB,CAACD,eAAe,CACtD,CAAC;EACH;EAEAE,YAAYA,CACVC,aAAqB,EACrBC,MAAc,EACd5C,UAAkB,EACL;IACb,IAAI2C,aAAa,GAAG,CAAC,IAAIA,aAAa,IAAI,EAAE,EAAE;MAC5C,MAAM,IAAIpE,iBAAiB,CACzB,oCAAoCoE,aAAa,gCACnD,CAAC;IACH;IAEA,IAAIC,MAAM,IAAI,CAAC,EAAE;MACf,MAAM,IAAIrE,iBAAiB,CACzB,kCAAkCqE,MAAM,kDAC1C,CAAC;IACH;IAEA,IAAI5C,UAAU,GAAG,IAAI,IAAIA,UAAU,GAAG,KAAK,EAAE;MAC3C,MAAM,IAAIzB,iBAAiB,CACzB,6BAA6ByB,UAAU,sCACzC,CAAC;IACH;IAEA,OAAO,IAAInB,WAAW,CACpB,IAAI,CAACiB,OAAO,CAAC4C,YAAY,CAACC,aAAa,EAAEC,MAAM,EAAE5C,UAAU,CAC7D,CAAC;EACH;EAEA6C,kBAAkBA,CAChBC,IAAkB,EAClBC,IAAkB,EAClBC,WAAqC,EACvB;IACd,IAAIF,IAAI,CAACF,MAAM,KAAKG,IAAI,CAACH,MAAM,EAAE;MAC/B,MAAM,IAAItE,kBAAkB,CAC1B,4BAA4BwE,IAAI,CAACF,MAAM,oBAAoBG,IAAI,CAACH,MAAM,sBACxE,CAAC;IACH;IAEA,MAAMK,oBAAoB,GAAGD,WAAW,EAAEC,oBAAoB,IAAI,KAAK;IAEvE,OAAO,IAAI5D,YAAY,CACrB,IAAI,CAACS,OAAO,CAAC+C,kBAAkB,CAACC,IAAI,EAAEC,IAAI,EAAEE,oBAAoB,CAClE,CAAC;EACH;EAEAC,cAAcA,CAAA,EAAiB;IAC7B,OAAO,IAAItE,YAAY,CAAC,IAAI,EAAE,IAAI,CAACkB,OAAO,CAACoD,cAAc,CAAC,CAAC,CAAC;EAC9D;AACF","ignoreList":[]}
1
+ {"version":3,"names":["InvalidAccessError","NotSupportedError","assertWorkletsEnabled","workletsModule","WorkletSourceNode","WorkletProcessingNode","AnalyserNode","AudioBuffer","AudioBufferQueueSourceNode","AudioBufferSourceNode","AudioDestinationNode","BiquadFilterNode","ConstantSourceNode","GainNode","OscillatorNode","PeriodicWave","RecorderAdapterNode","StereoPannerNode","StreamerNode","WorkletNode","decodeAudioData","decodePCMInBase64","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","input","ArrayBuffer","TypeError","base64String","inputSampleRate","inputChannelCount","isInterleaved","createWorkletNode","callback","bufferLength","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"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
@@ -3,11 +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
8
  constructor(arg0, arg1, arg2) {
9
9
  let audioRuntime = null;
10
- if (isWorkletsAvailable) {
10
+ if (isWorkletsVersionSupported) {
11
11
  audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
12
12
  }
13
13
  if (typeof arg0 === 'object') {
@@ -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","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;EAOhEO,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;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":[]}
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,25 @@
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;
11
25
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
12
26
  } catch (error) {
13
27
  isWorkletsAvailable = false;
@@ -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;EAC1B;AACF,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 +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;IAwBnC,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":"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"}
@@ -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.10.0-nightly-75aa9d0-20251022",
3
+ "version": "0.10.0-nightly-325e87a-20251023",
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"
@@ -3,7 +3,7 @@ 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
9
  constructor(options?: AudioContextOptions) {
@@ -17,7 +17,8 @@ export default class AudioContext extends BaseAudioContext {
17
17
  );
18
18
  }
19
19
  let audioRuntime = null;
20
- if (isWorkletsAvailable) {
20
+
21
+ if (isWorkletsVersionSupported) {
21
22
  audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
22
23
  }
23
24
 
@@ -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';
@@ -84,30 +84,24 @@ export default class BaseAudioContext {
84
84
  `The buffer length provided (${bufferLength}) can not be less than 1`
85
85
  );
86
86
  }
87
-
88
- if (isWorkletsAvailable) {
89
- const shareableWorklet = workletsModule.makeShareableCloneRecursive(
90
- (audioBuffers: Array<ArrayBuffer>, channelCount: number) => {
91
- 'worklet';
92
- const floatAudioData: Array<Float32Array> = audioBuffers.map(
93
- (buffer) => new Float32Array(buffer)
94
- );
95
- callback(floatAudioData, channelCount);
96
- }
97
- );
98
- return new WorkletNode(
99
- this,
100
- this.context.createWorkletNode(
101
- shareableWorklet,
102
- workletRuntime === 'UIRuntime',
103
- bufferLength,
104
- inputChannelCount
105
- )
106
- );
107
- }
108
- /// User does not have worklets as a dependency so he cannot use the worklet API.
109
- throw new Error(
110
- '[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.'
87
+ assertWorkletsEnabled();
88
+ const shareableWorklet = workletsModule.makeShareableCloneRecursive(
89
+ (audioBuffers: Array<ArrayBuffer>, channelCount: number) => {
90
+ 'worklet';
91
+ const floatAudioData: Array<Float32Array> = audioBuffers.map(
92
+ (buffer) => new Float32Array(buffer)
93
+ );
94
+ callback(floatAudioData, channelCount);
95
+ }
96
+ );
97
+ return new WorkletNode(
98
+ this,
99
+ this.context.createWorkletNode(
100
+ shareableWorklet,
101
+ workletRuntime === 'UIRuntime',
102
+ bufferLength,
103
+ inputChannelCount
104
+ )
111
105
  );
112
106
  }
113
107
 
@@ -120,35 +114,30 @@ export default class BaseAudioContext {
120
114
  ) => void,
121
115
  workletRuntime: AudioWorkletRuntime = 'AudioRuntime'
122
116
  ): WorkletProcessingNode {
123
- if (isWorkletsAvailable) {
124
- const shareableWorklet = workletsModule.makeShareableCloneRecursive(
125
- (
126
- inputBuffers: Array<ArrayBuffer>,
127
- outputBuffers: Array<ArrayBuffer>,
128
- framesToProcess: number,
129
- currentTime: number
130
- ) => {
131
- 'worklet';
132
- const inputData: Array<Float32Array> = inputBuffers.map(
133
- (buffer) => new Float32Array(buffer, 0, framesToProcess)
134
- );
135
- const outputData: Array<Float32Array> = outputBuffers.map(
136
- (buffer) => new Float32Array(buffer, 0, framesToProcess)
137
- );
138
- callback(inputData, outputData, framesToProcess, currentTime);
139
- }
140
- );
141
- return new WorkletProcessingNode(
142
- this,
143
- this.context.createWorkletProcessingNode(
144
- shareableWorklet,
145
- workletRuntime === 'UIRuntime'
146
- )
147
- );
148
- }
149
- /// User does not have worklets as a dependency so he cannot use the worklet API.
150
- throw new Error(
151
- '[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.'
117
+ assertWorkletsEnabled();
118
+ const shareableWorklet = workletsModule.makeShareableCloneRecursive(
119
+ (
120
+ inputBuffers: Array<ArrayBuffer>,
121
+ outputBuffers: Array<ArrayBuffer>,
122
+ framesToProcess: number,
123
+ currentTime: number
124
+ ) => {
125
+ 'worklet';
126
+ const inputData: Array<Float32Array> = inputBuffers.map(
127
+ (buffer) => new Float32Array(buffer, 0, framesToProcess)
128
+ );
129
+ const outputData: Array<Float32Array> = outputBuffers.map(
130
+ (buffer) => new Float32Array(buffer, 0, framesToProcess)
131
+ );
132
+ callback(inputData, outputData, framesToProcess, currentTime);
133
+ }
134
+ );
135
+ return new WorkletProcessingNode(
136
+ this,
137
+ this.context.createWorkletProcessingNode(
138
+ shareableWorklet,
139
+ workletRuntime === 'UIRuntime'
140
+ )
152
141
  );
153
142
  }
154
143
 
@@ -161,12 +150,7 @@ export default class BaseAudioContext {
161
150
  ) => void,
162
151
  workletRuntime: AudioWorkletRuntime = 'AudioRuntime'
163
152
  ): WorkletSourceNode {
164
- if (!isWorkletsAvailable) {
165
- /// User does not have worklets as a dependency so he cannot use the worklet API.
166
- throw new Error(
167
- '[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.'
168
- );
169
- }
153
+ assertWorkletsEnabled();
170
154
  const shareableWorklet = workletsModule.makeShareableCloneRecursive(
171
155
  (
172
156
  audioBuffers: Array<ArrayBuffer>,
@@ -3,7 +3,7 @@ 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;
@@ -18,7 +18,7 @@ export default class OfflineAudioContext extends BaseAudioContext {
18
18
  arg2?: number
19
19
  ) {
20
20
  let audioRuntime = null;
21
- if (isWorkletsAvailable) {
21
+ if (isWorkletsVersionSupported) {
22
22
  audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
23
23
  }
24
24
 
@@ -13,12 +13,33 @@ 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;
22
43
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
44
  } catch (error) {
24
45
  isWorkletsAvailable = false;