react-native-audio-api 0.8.3-nightly-afb3cc1-20251001 → 0.8.3-nightly-e918179-20251003

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 (29) hide show
  1. package/RNAudioAPI.podspec +2 -0
  2. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +1 -1
  3. package/common/cpp/audioapi/external/iphoneos/libcrypto.a +0 -0
  4. package/common/cpp/audioapi/external/iphoneos/libssl.a +0 -0
  5. package/common/cpp/audioapi/external/iphonesimulator/libcrypto.a +0 -0
  6. package/common/cpp/audioapi/external/iphonesimulator/libssl.a +0 -0
  7. package/common/cpp/audioapi/external/libavcodec.xcframework/Info.plist +5 -5
  8. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/libavcodec +0 -0
  9. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
  10. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/libavformat +0 -0
  11. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
  12. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/libavutil +0 -0
  13. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
  14. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/libswresample +0 -0
  15. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
  16. package/common/cpp/audioapi/jsi/JsiPromise.cpp +53 -0
  17. package/common/cpp/audioapi/jsi/JsiPromise.h +19 -0
  18. package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +127 -107
  19. package/lib/commonjs/core/OscillatorNode.js +6 -0
  20. package/lib/commonjs/core/OscillatorNode.js.map +1 -1
  21. package/lib/module/core/OscillatorNode.js +6 -0
  22. package/lib/module/core/OscillatorNode.js.map +1 -1
  23. package/lib/typescript/core/OscillatorNode.d.ts +3 -0
  24. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  25. package/lib/typescript/events/types.d.ts +1 -0
  26. package/lib/typescript/events/types.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/src/core/OscillatorNode.ts +11 -0
  29. package/src/events/types.ts +1 -0
@@ -81,6 +81,8 @@ s.user_target_xcconfig = {
81
81
  -force_load #{lib_dir}/libvorbis.a
82
82
  -force_load #{lib_dir}/libvorbisenc.a
83
83
  -force_load #{lib_dir}/libvorbisfile.a
84
+ -force_load #{lib_dir}/libssl.a
85
+ -force_load #{lib_dir}/libcrypto.a
84
86
  ].join(" "),
85
87
  'HEADER_SEARCH_PATHS' => %W[
86
88
  $(inherited)
@@ -155,7 +155,7 @@ void AudioBufferQueueSourceNode::processWithoutInterpolation(
155
155
  buffers_.pop();
156
156
 
157
157
  std::unordered_map<std::string, EventValue> body = {
158
- {"bufferId", std::to_string(bufferId)}};
158
+ {"bufferId", std::to_string(bufferId)}, {"isLast", buffers_.empty()}};
159
159
  context_->audioEventHandlerRegistry_->invokeHandlerWithEventBody(
160
160
  "ended", onEndedCallbackId_, body);
161
161
 
@@ -8,32 +8,32 @@
8
8
  <key>BinaryPath</key>
9
9
  <string>libavcodec.framework/libavcodec</string>
10
10
  <key>LibraryIdentifier</key>
11
- <string>ios-arm64_x86_64-simulator</string>
11
+ <string>ios-arm64</string>
12
12
  <key>LibraryPath</key>
13
13
  <string>libavcodec.framework</string>
14
14
  <key>SupportedArchitectures</key>
15
15
  <array>
16
16
  <string>arm64</string>
17
- <string>x86_64</string>
18
17
  </array>
19
18
  <key>SupportedPlatform</key>
20
19
  <string>ios</string>
21
- <key>SupportedPlatformVariant</key>
22
- <string>simulator</string>
23
20
  </dict>
24
21
  <dict>
25
22
  <key>BinaryPath</key>
26
23
  <string>libavcodec.framework/libavcodec</string>
27
24
  <key>LibraryIdentifier</key>
28
- <string>ios-arm64</string>
25
+ <string>ios-arm64_x86_64-simulator</string>
29
26
  <key>LibraryPath</key>
30
27
  <string>libavcodec.framework</string>
31
28
  <key>SupportedArchitectures</key>
32
29
  <array>
33
30
  <string>arm64</string>
31
+ <string>x86_64</string>
34
32
  </array>
35
33
  <key>SupportedPlatform</key>
36
34
  <string>ios</string>
35
+ <key>SupportedPlatformVariant</key>
36
+ <string>simulator</string>
37
37
  </dict>
38
38
  </array>
39
39
  <key>CFBundlePackageType</key>
@@ -61,4 +61,57 @@ jsi::Value PromiseVendor::createPromise(
61
61
  return promiseCtor.callAsConstructor(runtime, runPromise);
62
62
  }
63
63
 
64
+ jsi::Value PromiseVendor::createAsyncPromise(
65
+ std::function<std::variant<jsi::Value, std::string>(jsi::Runtime &)>
66
+ &&function) {
67
+ auto &runtime = *runtime_;
68
+ auto callInvoker = callInvoker_;
69
+ auto promiseCtor = runtime.global().getPropertyAsFunction(runtime, "Promise");
70
+ auto promiseLambda = [callInvoker = std::move(callInvoker),
71
+ function = std::move(function)](
72
+ jsi::Runtime &runtime,
73
+ const jsi::Value &thisValue,
74
+ const jsi::Value *arguments,
75
+ size_t count) -> jsi::Value {
76
+ auto resolveLocal = arguments[0].asObject(runtime).asFunction(runtime);
77
+ auto resolve = std::make_shared<jsi::Function>(std::move(resolveLocal));
78
+ auto rejectLocal = arguments[1].asObject(runtime).asFunction(runtime);
79
+ auto reject = std::make_shared<jsi::Function>(std::move(rejectLocal));
80
+
81
+ /// Here we can swap later for thread pool instead of creating a new thread
82
+ /// each time
83
+ std::thread(
84
+ [callInvoker = std::move(callInvoker),
85
+ function = std::move(function),
86
+ resolve = std::move(resolve),
87
+ reject = std::move(reject)](jsi::Runtime &runtime) {
88
+ auto result = function(runtime);
89
+ if (std::holds_alternative<jsi::Value>(result)) {
90
+ auto valueShared = std::make_shared<jsi::Value>(
91
+ std::move(std::get<jsi::Value>(result)));
92
+ callInvoker->invokeAsync(
93
+ [resolve, &runtime, valueShared]() -> void {
94
+ resolve->call(runtime, *valueShared);
95
+ });
96
+ } else {
97
+ auto errorMessage = std::get<std::string>(result);
98
+ callInvoker->invokeAsync(
99
+ [reject, &runtime, errorMessage]() -> void {
100
+ auto error = jsi::JSError(runtime, errorMessage);
101
+ reject->call(runtime, error.value());
102
+ });
103
+ }
104
+ },
105
+ std::ref(runtime))
106
+ .detach();
107
+ return jsi::Value::undefined();
108
+ };
109
+ auto promiseFunction = jsi::Function::createFromHostFunction(
110
+ runtime,
111
+ jsi::PropNameID::forUtf8(runtime, "asyncPromise"),
112
+ 2,
113
+ std::move(promiseLambda));
114
+ return promiseCtor.callAsConstructor(runtime, std::move(promiseFunction));
115
+ }
116
+
64
117
  } // namespace audioapi
@@ -2,6 +2,8 @@
2
2
 
3
3
  #include <ReactCommon/CallInvoker.h>
4
4
  #include <jsi/jsi.h>
5
+ #include <variant>
6
+ #include <thread>
5
7
  #include <memory>
6
8
  #include <string>
7
9
  #include <utility>
@@ -34,6 +36,23 @@ class PromiseVendor {
34
36
 
35
37
  jsi::Value createPromise(const std::function<void(std::shared_ptr<Promise>)> &function);
36
38
 
39
+ /// @brief Creates an asynchronous promise.
40
+ /// @param function The function to execute asynchronously. It should return either a jsi::Value on success or a std::string error message on failure.
41
+ /// @return The created promise.
42
+ /// @note The function is executed on a different thread, and the promise is resolved or rejected based on the function's outcome.
43
+ /// @example
44
+ /// ```cpp
45
+ /// auto promise = promiseVendor_->createAsyncPromise(
46
+ /// [](jsi::Runtime& rt) -> std::variant<jsi::Value, std::string> {
47
+ /// // Simulate some heavy work
48
+ /// std::this_thread::sleep_for(std::chrono::seconds(2));
49
+ /// return jsi::String::createFromUtf8(rt, "Promise resolved successfully!");
50
+ /// }
51
+ /// );
52
+ ///
53
+ /// return promise;
54
+ jsi::Value createAsyncPromise(std::function<std::variant<jsi::Value, std::string>(jsi::Runtime&)> &&function);
55
+
37
56
  private:
38
57
  jsi::Runtime *runtime_;
39
58
  std::shared_ptr<react::CallInvoker> callInvoker_;
@@ -1,7 +1,7 @@
1
1
  #!/bin/bash
2
2
 
3
3
  # FFmpeg Mobile Architecture Build Script
4
- # Builds static libraries (.a files) for iOS and Android architectures
4
+ # Builds shared ffmpeg binaries for iOS and Android architectures
5
5
  set -e
6
6
 
7
7
  SOURCE_DIR="/path/to/your/ffmpeg" # Change this to your FFmpeg source directory
@@ -156,11 +156,88 @@ if [ ! -d "${SOURCE_DIR}" ]; then
156
156
  fi
157
157
 
158
158
  # Clean the source directory of any previous builds
159
- echo "Cleaning source directory..."
160
159
  cd "${SOURCE_DIR}"
161
160
  make distclean 2>/dev/null || true
162
161
  cd - > /dev/null
163
162
 
163
+ # Use NDK_ROOT if ANDROID_NDK_ROOT is not set
164
+ NDK_PATH="${ANDROID_NDK_ROOT:-$NDK_ROOT}"
165
+
166
+ if [ ! -d "$NDK_PATH" ]; then
167
+ echo "Android NDK not found. Please set ANDROID_NDK_ROOT or NDK_ROOT environment variable"
168
+ exit 1
169
+ fi
170
+
171
+ API_LEVEL=21
172
+ TOOLCHAIN_PATH="${NDK_PATH}/toolchains/llvm/prebuilt"
173
+ export ANDROID_NDK_ROOT=${NDK_PATH}
174
+
175
+ # Detect host OS for toolchain
176
+ if [[ "$OSTYPE" == "darwin"* ]]; then
177
+ HOST_TAG="darwin-x86_64"
178
+ elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
179
+ HOST_TAG="linux-x86_64"
180
+ else
181
+ echo "Unsupported host OS for Android NDK"
182
+ exit 1
183
+ fi
184
+
185
+ TOOLCHAIN="${TOOLCHAIN_PATH}/${HOST_TAG}"
186
+ PATH=$TOOLCHAIN/bin:$PATH
187
+
188
+ OPENSSL_PREBUILT_FOLDER="$(pwd)/openssl-prebuilt"
189
+ if [ ! -d "$OPENSSL_PREBUILT_FOLDER" ]; then
190
+ echo "Cloning and building OpenSSL..."
191
+ if [ ! -d "openssl" ]; then
192
+ git clone https://github.com/openssl/openssl.git
193
+ fi
194
+ cd openssl
195
+ mkdir -p "${OPENSSL_PREBUILT_FOLDER}/include"
196
+
197
+ # ios-arm
198
+ ./Configure ios64-xcrun no-shared no-asm no-tests
199
+ make build_libs -j10
200
+ mkdir -p ${OPENSSL_PREBUILT_FOLDER}/iphoneos && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/iphoneos"
201
+ cp -r include/crypto include/openssl "${OPENSSL_PREBUILT_FOLDER}/include"
202
+ make clean
203
+
204
+ # arm-simulator
205
+ ./Configure iossimulator-arm64-xcrun no-shared no-asm no-tests
206
+ make build_libs -j10
207
+ mkdir -p ${OPENSSL_PREBUILT_FOLDER}/iphonesimulator && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/iphonesimulator"
208
+ make clean
209
+
210
+ # x86_64-simulator
211
+ ./Configure iossimulator-x86_64-xcrun no-shared no-asm no-tests
212
+ make build_libs -j10
213
+ mkdir -p ${OPENSSL_PREBUILT_FOLDER}/iphonesimulator-x86_64 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/iphonesimulator-x86_64"
214
+ make clean
215
+
216
+ # arm64-v8a
217
+ ./Configure android-arm64 no-shared no-asm no-tests -D__ANDROID_API__=${API_LEVEL}
218
+ make build_libs -j10
219
+ mkdir -p ${OPENSSL_PREBUILT_FOLDER}/arm64-v8a && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/arm64-v8a"
220
+ make clean
221
+
222
+ # armeabi-v7a
223
+ ./Configure android-arm no-shared no-asm no-tests -D__ANDROID_API__=${API_LEVEL}
224
+ make build_libs -j10
225
+ mkdir -p ${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a"
226
+ make clean
227
+
228
+ ./Configure android-x86 no-shared no-asm no-tests -D__ANDROID_API__=${API_LEVEL}
229
+ make build_libs -j10
230
+ mkdir -p ${OPENSSL_PREBUILT_FOLDER}/x86 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/x86"
231
+ make clean
232
+
233
+ ./Configure android-x86_64 no-shared no-asm no-tests -D__ANDROID_API__=${API_LEVEL}
234
+ make build_libs -j10
235
+ mkdir -p ${OPENSSL_PREBUILT_FOLDER}/x86_64 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/x86_64"
236
+ make clean
237
+
238
+ cd .. && rm -rf openssl
239
+ fi
240
+
164
241
  # iOS Architectures
165
242
  if [[ "$OSTYPE" == "darwin"* ]]; then
166
243
  echo "Building for iOS architectures..."
@@ -169,13 +246,13 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
169
246
  IOS_SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-path)
170
247
  IOS_SIM_SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-path)
171
248
 
172
- # iOS Device architectures
249
+ # iOS Device architecture
173
250
  build_arch "arm64" "darwin" \
174
251
  "$(xcrun --sdk iphoneos --find clang)" \
175
252
  "$(xcrun --sdk iphoneos --find clang++)" \
176
- "-arch arm64 -mios-version-min=11.0 -isysroot ${IOS_SDK_PATH}" \
177
- "-arch arm64 -mios-version-min=11.0 -isysroot ${IOS_SDK_PATH}" \
178
- "--disable-iconv --disable-zlib"
253
+ "-I${OPENSSL_PREBUILT_FOLDER}/include -arch arm64 -mios-version-min=11.0 -isysroot ${IOS_SDK_PATH}" \
254
+ "-L${OPENSSL_PREBUILT_FOLDER}/iphoneos -arch arm64 -mios-version-min=11.0 -isysroot ${IOS_SDK_PATH}" \
255
+ "--disable-iconv --disable-zlib --enable-openssl --disable-securetransport"
179
256
 
180
257
  fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphoneos/lib/libavcodec.${AVCODEC_VERSION}.dylib"
181
258
  fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphoneos/lib/libavformat.${AVFORMAT_VERSION}.dylib"
@@ -184,12 +261,13 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
184
261
 
185
262
  rm -rf "${OUTPUT_DIR}/ios/iphoneos/share"
186
263
 
264
+ # iOS Simulator arm (Silicon Macs)
187
265
  build_arch "arm64" "darwinsim" \
188
266
  "$(xcrun --sdk iphonesimulator --find clang)" \
189
267
  "$(xcrun --sdk iphonesimulator --find clang++)" \
190
- "-arch arm64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
191
- "-arch arm64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
192
- "--disable-iconv --disable-zlib"
268
+ "-I${OPENSSL_PREBUILT_FOLDER}/include -arch arm64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
269
+ "-L${OPENSSL_PREBUILT_FOLDER}/iphonesimulator -arch arm64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
270
+ "--disable-iconv --disable-zlib --enable-openssl --disable-securetransport"
193
271
 
194
272
  fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphonesimulator_arm64/lib/libavcodec.${AVCODEC_VERSION}.dylib"
195
273
  fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphonesimulator_arm64/lib/libavformat.${AVFORMAT_VERSION}.dylib"
@@ -202,9 +280,9 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
202
280
  build_arch "x86_64" "darwinsim" \
203
281
  "$(xcrun --sdk iphonesimulator --find clang)" \
204
282
  "$(xcrun --sdk iphonesimulator --find clang++)" \
205
- "-arch x86_64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
206
- "-arch x86_64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
207
- "--disable-iconv --disable-zlib"
283
+ "-I${OPENSSL_PREBUILT_FOLDER}/include -arch x86_64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
284
+ "-L${OPENSSL_PREBUILT_FOLDER}/iphonesimulator-x86_64 -arch x86_64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
285
+ "--disable-iconv --disable-zlib --enable-openssl --disable-securetransport"
208
286
 
209
287
  fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphonesimulator_x86_64/lib/libavcodec.${AVCODEC_VERSION}.dylib"
210
288
  fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphonesimulator_x86_64/lib/libavformat.${AVFORMAT_VERSION}.dylib"
@@ -214,6 +292,7 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
214
292
  rm -rf "${OUTPUT_DIR}/ios/iphonesimulator_x86_64/share"
215
293
 
216
294
  mkdir -p "${OUTPUT_DIR}/ios/iphonesimulator/lib"
295
+ # Create universal simulator libraries
217
296
  lipo -create \
218
297
  "${OUTPUT_DIR}/ios/iphonesimulator_arm64/lib/libavcodec.${AVCODEC_VERSION}.dylib" \
219
298
  "${OUTPUT_DIR}/ios/iphonesimulator_x86_64/lib/libavcodec.${AVCODEC_VERSION}.dylib" \
@@ -238,6 +317,7 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
238
317
  mv "${OUTPUT_DIR}/ios/iphonesimulator/lib/libavformat.${AVFORMAT_VERSION}.dylib" "${OUTPUT_DIR}/ios/iphonesimulator/lib/libavformat.dylib"
239
318
  mv "${OUTPUT_DIR}/ios/iphonesimulator/lib/libavcodec.${AVCODEC_VERSION}.dylib" "${OUTPUT_DIR}/ios/iphonesimulator/lib/libavcodec.dylib"
240
319
 
320
+ # create frameworks from binaries
241
321
  bash ./create_xcframework.sh
242
322
 
243
323
  echo "iOS builds completed!"
@@ -248,114 +328,54 @@ fi
248
328
  # Android Architectures
249
329
  if [ -n "$ANDROID_NDK_ROOT" ] || [ -n "$NDK_ROOT" ]; then
250
330
  echo "Building for Android architectures..."
251
-
252
- # Use NDK_ROOT if ANDROID_NDK_ROOT is not set
253
- NDK_PATH="${ANDROID_NDK_ROOT:-$NDK_ROOT}"
254
-
255
- if [ ! -d "$NDK_PATH" ]; then
256
- echo "Android NDK not found. Please set ANDROID_NDK_ROOT or NDK_ROOT environment variable"
257
- else
258
- API_LEVEL=21
259
- TOOLCHAIN_PATH="${NDK_PATH}/toolchains/llvm/prebuilt"
260
-
261
- # Detect host OS for toolchain
262
- if [[ "$OSTYPE" == "darwin"* ]]; then
263
- HOST_TAG="darwin-x86_64"
264
- elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
265
- HOST_TAG="linux-x86_64"
266
- else
267
- echo "Unsupported host OS for Android NDK"
268
- exit 1
269
- fi
270
-
271
- TOOLCHAIN="${TOOLCHAIN_PATH}/${HOST_TAG}"
272
-
273
- OPENSSL_PREBUILT_FOLDER="$(pwd)/openssl-prebuilt"
274
- if [ ! -d "$OPENSSL_PREBUILT_FOLDER" ]; then
275
- echo "Cloning and building OpenSSL for Android..."
276
- if [ ! -d "openssl" ]; then
277
- git clone https://github.com/openssl/openssl.git
278
- fi
279
- cd openssl
280
- export ANDROID_NDK_ROOT=${NDK_PATH}
281
- PATH=$TOOLCHAIN/bin:$PATH
282
- mkdir -p "${OPENSSL_PREBUILT_FOLDER}/include"
283
-
284
- # arm64-v8a
285
- ./Configure android-arm64 no-shared no-asm -D__ANDROID_API__=${API_LEVEL}
286
- make -j10
287
- mkdir -p ${OPENSSL_PREBUILT_FOLDER}/arm64-v8a && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/arm64-v8a"
288
- cp -r include/crypto include/openssl "${OPENSSL_PREBUILT_FOLDER}/include"
289
- make clean
290
-
291
- # armeabi-v7a
292
- ./Configure android-arm no-shared no-asm -D__ANDROID_API__=${API_LEVEL}
293
- make -j10
294
- mkdir -p ${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a"
295
- make clean
296
-
297
- ./Configure android-x86 no-shared no-asm -D__ANDROID_API__=${API_LEVEL}
298
- make -j10
299
- mkdir -p ${OPENSSL_PREBUILT_FOLDER}/x86 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/x86"
300
- make clean
301
-
302
- ./Configure android-x86_64 no-shared no-asm -D__ANDROID_API__=${API_LEVEL}
303
- make -j10
304
- mkdir -p ${OPENSSL_PREBUILT_FOLDER}/x86_64 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/x86_64"
305
- make clean
306
-
307
- cd .. && rm -rf openssl
308
- fi
309
331
 
310
- # ARM64-v8a
311
- build_arch "aarch64" "android" \
312
- "${TOOLCHAIN}/bin/aarch64-linux-android${API_LEVEL}-clang" \
313
- "${TOOLCHAIN}/bin/aarch64-linux-android${API_LEVEL}-clang++" \
314
- "-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
315
- "-L${OPENSSL_PREBUILT_FOLDER}/arm64-v8a -L${TOOLCHAIN}/sysroot/usr/lib/aarch64-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
316
- "--enable-openssl --extra-libs=-lz"
317
-
318
- rm -rf ${OUTPUT_DIR}/android/arm64-v8a/share
319
-
320
- # ARMv7a
321
- build_arch "armv7a" "android" \
322
- "${TOOLCHAIN}/bin/armv7a-linux-androideabi${API_LEVEL}-clang" \
323
- "${TOOLCHAIN}/bin/armv7a-linux-androideabi${API_LEVEL}-clang++" \
324
- "-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
325
- "-L${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a -L${TOOLCHAIN}/sysroot/usr/lib/arm-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
326
- "--enable-openssl --extra-libs=-lz"
332
+ # ARM64-v8a
333
+ build_arch "aarch64" "android" \
334
+ "${TOOLCHAIN}/bin/aarch64-linux-android${API_LEVEL}-clang" \
335
+ "${TOOLCHAIN}/bin/aarch64-linux-android${API_LEVEL}-clang++" \
336
+ "-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
337
+ "-L${OPENSSL_PREBUILT_FOLDER}/arm64-v8a -L${TOOLCHAIN}/sysroot/usr/lib/aarch64-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
338
+ "--enable-openssl --extra-libs=-lz"
339
+
340
+ rm -rf ${OUTPUT_DIR}/android/arm64-v8a/share
341
+
342
+ # ARMv7a
343
+ build_arch "armv7a" "android" \
344
+ "${TOOLCHAIN}/bin/armv7a-linux-androideabi${API_LEVEL}-clang" \
345
+ "${TOOLCHAIN}/bin/armv7a-linux-androideabi${API_LEVEL}-clang++" \
346
+ "-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
347
+ "-L${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a -L${TOOLCHAIN}/sysroot/usr/lib/arm-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
348
+ "--enable-openssl --extra-libs=-lz"
327
349
 
328
- rm -rf ${OUTPUT_DIR}/android/armeabi-v7a/share
350
+ rm -rf ${OUTPUT_DIR}/android/armeabi-v7a/share
329
351
 
330
- # x86
331
- build_arch "x86" "android" \
332
- "${TOOLCHAIN}/bin/i686-linux-android${API_LEVEL}-clang" \
333
- "${TOOLCHAIN}/bin/i686-linux-android${API_LEVEL}-clang++" \
334
- "-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/darwin-x86_64/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
335
- "-L${OPENSSL_PREBUILT_FOLDER}/x86 -L${TOOLCHAIN}/darwin-x86_64/sysroot/usr/lib/i686-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
336
- "--enable-openssl --extra-libs=-lz"
352
+ # x86
353
+ build_arch "x86" "android" \
354
+ "${TOOLCHAIN}/bin/i686-linux-android${API_LEVEL}-clang" \
355
+ "${TOOLCHAIN}/bin/i686-linux-android${API_LEVEL}-clang++" \
356
+ "-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/darwin-x86_64/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
357
+ "-L${OPENSSL_PREBUILT_FOLDER}/x86 -L${TOOLCHAIN}/darwin-x86_64/sysroot/usr/lib/i686-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
358
+ "--enable-openssl --extra-libs=-lz"
337
359
 
338
- rm -rf ${OUTPUT_DIR}/android/x86/share
360
+ rm -rf ${OUTPUT_DIR}/android/x86/share
339
361
 
340
362
 
341
- # x86_64
342
- build_arch "x86_64" "android" \
343
- "${TOOLCHAIN}/bin/x86_64-linux-android${API_LEVEL}-clang" \
344
- "${TOOLCHAIN}/bin/x86_64-linux-android${API_LEVEL}-clang++" \
345
- "-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/darwin-x86_64/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
346
- "-L${OPENSSL_PREBUILT_FOLDER}/x86_64 -L${TOOLCHAIN}/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
347
- "--enable-openssl --extra-libs=-lz"
363
+ # x86_64
364
+ build_arch "x86_64" "android" \
365
+ "${TOOLCHAIN}/bin/x86_64-linux-android${API_LEVEL}-clang" \
366
+ "${TOOLCHAIN}/bin/x86_64-linux-android${API_LEVEL}-clang++" \
367
+ "-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/darwin-x86_64/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
368
+ "-L${OPENSSL_PREBUILT_FOLDER}/x86_64 -L${TOOLCHAIN}/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
369
+ "--enable-openssl --extra-libs=-lz"
348
370
 
349
- rm -rf ${OUTPUT_DIR}/android/x86_64/share
371
+ rm -rf ${OUTPUT_DIR}/android/x86_64/share
350
372
 
351
373
 
352
- echo "Android builds completed!"
353
- fi
374
+ echo "Android builds completed!"
354
375
  else
355
376
  echo "Skipping Android builds (ANDROID_NDK_ROOT or NDK_ROOT not set)"
356
377
  fi
357
378
 
358
379
  rm -rf "${BUILD_DIR}"
359
380
 
360
- echo ""
361
381
  echo "All FFmpeg builds completed!"
@@ -27,6 +27,12 @@ class OscillatorNode extends _AudioScheduledSourceNode.default {
27
27
  setPeriodicWave(wave) {
28
28
  this.node.setPeriodicWave(wave.periodicWave);
29
29
  }
30
+ get onEnded() {
31
+ return super.onEnded;
32
+ }
33
+ set onEnded(callback) {
34
+ super.onEnded = callback;
35
+ }
30
36
  }
31
37
  exports.default = OscillatorNode;
32
38
  //# sourceMappingURL=OscillatorNode.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_AudioScheduledSourceNode","_interopRequireDefault","require","_AudioParam","_errors","e","__esModule","default","OscillatorNode","AudioScheduledSourceNode","constructor","context","node","frequency","AudioParam","detune","type","value","InvalidStateError","setPeriodicWave","wave","periodicWave","exports"],"sourceRoot":"../../../src","sources":["core/OscillatorNode.ts"],"mappings":";;;;;;AAEA,IAAAA,yBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,OAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE/B,MAAMG,cAAc,SAASC,iCAAwB,CAAC;EAInEC,WAAWA,CAACC,OAAyB,EAAEC,IAAqB,EAAE;IAC5D,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IACpB,IAAI,CAACC,SAAS,GAAG,IAAIC,mBAAU,CAACF,IAAI,CAACC,SAAS,EAAEF,OAAO,CAAC;IACxD,IAAI,CAACI,MAAM,GAAG,IAAID,mBAAU,CAACF,IAAI,CAACG,MAAM,EAAEJ,OAAO,CAAC;IAClD,IAAI,CAACK,IAAI,GAAGJ,IAAI,CAACI,IAAI;EACvB;EAEA,IAAWA,IAAIA,CAAA,EAAmB;IAChC,OAAQ,IAAI,CAACJ,IAAI,CAAqBI,IAAI;EAC5C;EAEA,IAAWA,IAAIA,CAACC,KAAqB,EAAE;IACrC,IAAIA,KAAK,KAAK,QAAQ,EAAE;MACtB,MAAM,IAAIC,yBAAiB,CACzB,uGACF,CAAC;IACH;IAEC,IAAI,CAACN,IAAI,CAAqBI,IAAI,GAAGC,KAAK;EAC7C;EAEOE,eAAeA,CAACC,IAAkB,EAAQ;IAC9C,IAAI,CAACR,IAAI,CAAqBO,eAAe,CAACC,IAAI,CAACC,YAAY,CAAC;EACnE;AACF;AAACC,OAAA,CAAAf,OAAA,GAAAC,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_AudioScheduledSourceNode","_interopRequireDefault","require","_AudioParam","_errors","e","__esModule","default","OscillatorNode","AudioScheduledSourceNode","constructor","context","node","frequency","AudioParam","detune","type","value","InvalidStateError","setPeriodicWave","wave","periodicWave","onEnded","callback","exports"],"sourceRoot":"../../../src","sources":["core/OscillatorNode.ts"],"mappings":";;;;;;AAEA,IAAAA,yBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,OAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG/B,MAAMG,cAAc,SAASC,iCAAwB,CAAC;EAInEC,WAAWA,CAACC,OAAyB,EAAEC,IAAqB,EAAE;IAC5D,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IACpB,IAAI,CAACC,SAAS,GAAG,IAAIC,mBAAU,CAACF,IAAI,CAACC,SAAS,EAAEF,OAAO,CAAC;IACxD,IAAI,CAACI,MAAM,GAAG,IAAID,mBAAU,CAACF,IAAI,CAACG,MAAM,EAAEJ,OAAO,CAAC;IAClD,IAAI,CAACK,IAAI,GAAGJ,IAAI,CAACI,IAAI;EACvB;EAEA,IAAWA,IAAIA,CAAA,EAAmB;IAChC,OAAQ,IAAI,CAACJ,IAAI,CAAqBI,IAAI;EAC5C;EAEA,IAAWA,IAAIA,CAACC,KAAqB,EAAE;IACrC,IAAIA,KAAK,KAAK,QAAQ,EAAE;MACtB,MAAM,IAAIC,yBAAiB,CACzB,uGACF,CAAC;IACH;IAEC,IAAI,CAACN,IAAI,CAAqBI,IAAI,GAAGC,KAAK;EAC7C;EAEOE,eAAeA,CAACC,IAAkB,EAAQ;IAC9C,IAAI,CAACR,IAAI,CAAqBO,eAAe,CAACC,IAAI,CAACC,YAAY,CAAC;EACnE;EAEA,IAAoBC,OAAOA,CAAA,EAAkD;IAC3E,OAAO,KAAK,CAACA,OAAO;EACtB;EAEA,IAAoBA,OAAOA,CACzBC,QAAkD,EAClD;IACA,KAAK,CAACD,OAAO,GAAGC,QAAQ;EAC1B;AACF;AAACC,OAAA,CAAAjB,OAAA,GAAAC,cAAA","ignoreList":[]}
@@ -22,5 +22,11 @@ export default class OscillatorNode extends AudioScheduledSourceNode {
22
22
  setPeriodicWave(wave) {
23
23
  this.node.setPeriodicWave(wave.periodicWave);
24
24
  }
25
+ get onEnded() {
26
+ return super.onEnded;
27
+ }
28
+ set onEnded(callback) {
29
+ super.onEnded = callback;
30
+ }
25
31
  }
26
32
  //# sourceMappingURL=OscillatorNode.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AudioScheduledSourceNode","AudioParam","InvalidStateError","OscillatorNode","constructor","context","node","frequency","detune","type","value","setPeriodicWave","wave","periodicWave"],"sourceRoot":"../../../src","sources":["core/OscillatorNode.ts"],"mappings":";;AAEA,OAAOA,wBAAwB,MAAM,+BAA4B;AACjE,OAAOC,UAAU,MAAM,iBAAc;AAGrC,SAASC,iBAAiB,QAAQ,oBAAW;AAE7C,eAAe,MAAMC,cAAc,SAASH,wBAAwB,CAAC;EAInEI,WAAWA,CAACC,OAAyB,EAAEC,IAAqB,EAAE;IAC5D,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IACpB,IAAI,CAACC,SAAS,GAAG,IAAIN,UAAU,CAACK,IAAI,CAACC,SAAS,EAAEF,OAAO,CAAC;IACxD,IAAI,CAACG,MAAM,GAAG,IAAIP,UAAU,CAACK,IAAI,CAACE,MAAM,EAAEH,OAAO,CAAC;IAClD,IAAI,CAACI,IAAI,GAAGH,IAAI,CAACG,IAAI;EACvB;EAEA,IAAWA,IAAIA,CAAA,EAAmB;IAChC,OAAQ,IAAI,CAACH,IAAI,CAAqBG,IAAI;EAC5C;EAEA,IAAWA,IAAIA,CAACC,KAAqB,EAAE;IACrC,IAAIA,KAAK,KAAK,QAAQ,EAAE;MACtB,MAAM,IAAIR,iBAAiB,CACzB,uGACF,CAAC;IACH;IAEC,IAAI,CAACI,IAAI,CAAqBG,IAAI,GAAGC,KAAK;EAC7C;EAEOC,eAAeA,CAACC,IAAkB,EAAQ;IAC9C,IAAI,CAACN,IAAI,CAAqBK,eAAe,CAACC,IAAI,CAACC,YAAY,CAAC;EACnE;AACF","ignoreList":[]}
1
+ {"version":3,"names":["AudioScheduledSourceNode","AudioParam","InvalidStateError","OscillatorNode","constructor","context","node","frequency","detune","type","value","setPeriodicWave","wave","periodicWave","onEnded","callback"],"sourceRoot":"../../../src","sources":["core/OscillatorNode.ts"],"mappings":";;AAEA,OAAOA,wBAAwB,MAAM,+BAA4B;AACjE,OAAOC,UAAU,MAAM,iBAAc;AAGrC,SAASC,iBAAiB,QAAQ,oBAAW;AAG7C,eAAe,MAAMC,cAAc,SAASH,wBAAwB,CAAC;EAInEI,WAAWA,CAACC,OAAyB,EAAEC,IAAqB,EAAE;IAC5D,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IACpB,IAAI,CAACC,SAAS,GAAG,IAAIN,UAAU,CAACK,IAAI,CAACC,SAAS,EAAEF,OAAO,CAAC;IACxD,IAAI,CAACG,MAAM,GAAG,IAAIP,UAAU,CAACK,IAAI,CAACE,MAAM,EAAEH,OAAO,CAAC;IAClD,IAAI,CAACI,IAAI,GAAGH,IAAI,CAACG,IAAI;EACvB;EAEA,IAAWA,IAAIA,CAAA,EAAmB;IAChC,OAAQ,IAAI,CAACH,IAAI,CAAqBG,IAAI;EAC5C;EAEA,IAAWA,IAAIA,CAACC,KAAqB,EAAE;IACrC,IAAIA,KAAK,KAAK,QAAQ,EAAE;MACtB,MAAM,IAAIR,iBAAiB,CACzB,uGACF,CAAC;IACH;IAEC,IAAI,CAACI,IAAI,CAAqBG,IAAI,GAAGC,KAAK;EAC7C;EAEOC,eAAeA,CAACC,IAAkB,EAAQ;IAC9C,IAAI,CAACN,IAAI,CAAqBK,eAAe,CAACC,IAAI,CAACC,YAAY,CAAC;EACnE;EAEA,IAAoBC,OAAOA,CAAA,EAAkD;IAC3E,OAAO,KAAK,CAACA,OAAO;EACtB;EAEA,IAAoBA,OAAOA,CACzBC,QAAkD,EAClD;IACA,KAAK,CAACD,OAAO,GAAGC,QAAQ;EAC1B;AACF","ignoreList":[]}
@@ -4,6 +4,7 @@ import AudioScheduledSourceNode from './AudioScheduledSourceNode';
4
4
  import AudioParam from './AudioParam';
5
5
  import BaseAudioContext from './BaseAudioContext';
6
6
  import PeriodicWave from './PeriodicWave';
7
+ import { EventEmptyType } from '../events/types';
7
8
  export default class OscillatorNode extends AudioScheduledSourceNode {
8
9
  readonly frequency: AudioParam;
9
10
  readonly detune: AudioParam;
@@ -11,5 +12,7 @@ export default class OscillatorNode extends AudioScheduledSourceNode {
11
12
  get type(): OscillatorType;
12
13
  set type(value: OscillatorType);
13
14
  setPeriodicWave(wave: PeriodicWave): void;
15
+ get onEnded(): ((event: EventEmptyType) => void) | undefined;
16
+ set onEnded(callback: ((event: EventEmptyType) => void) | null);
14
17
  }
15
18
  //# sourceMappingURL=OscillatorNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OscillatorNode.d.ts","sourceRoot":"","sources":["../../../src/core/OscillatorNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,wBAAwB;IAClE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe;IAO5D,IAAW,IAAI,IAAI,cAAc,CAEhC;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,cAAc,EAQpC;IAEM,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAGjD"}
1
+ {"version":3,"file":"OscillatorNode.d.ts","sourceRoot":"","sources":["../../../src/core/OscillatorNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,wBAAwB;IAClE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe;IAO5D,IAAW,IAAI,IAAI,cAAc,CAEhC;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,cAAc,EAQpC;IAEM,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIhD,IAAoB,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAE3E;IAED,IAAoB,OAAO,CACzB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,IAAI,EAGnD;CACF"}
@@ -32,6 +32,7 @@ type SystemEvents = RemoteCommandEvents & {
32
32
  };
33
33
  export interface OnEndedEventType extends EventEmptyType {
34
34
  bufferId: string | undefined;
35
+ isLast: boolean | undefined;
35
36
  }
36
37
  export interface OnAudioReadyEventType {
37
38
  buffer: AudioBuffer;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/events/types.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAE9C,MAAM,WAAW,cAAc;CAAG;AAElC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,sBAAsB;IAC9B,MAAM,EACF,SAAS,GACT,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,4BAA4B,CAAC;CAClC;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC;IAC3B,qBAAqB,EAAE,cAAc,CAAC;IACtC,wBAAwB,EAAE,kBAAkB,CAAC;IAC7C,eAAe,EAAE,cAAc,CAAC;IAChC,mBAAmB,EAAE,cAAc,CAAC;IACpC,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,cAAc,CAAC;IAClC,kBAAkB,EAAE,cAAc,CAAC;IACnC,4BAA4B,EAAE,kBAAkB,CAAC;CAClD;AAED,KAAK,YAAY,GAAG,mBAAmB,GAAG;IACxC,YAAY,EAAE,kBAAkB,CAAC;IACjC,YAAY,EAAE,uBAAuB,CAAC;IACtC,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,qBAAqB,CAAC;IAClC,eAAe,EAAE,kBAAkB,CAAC;IACpC,UAAU,EAAE,cAAc,CAAC;IAC3B,kBAAkB,EAAE,cAAc,CAAC;CACpC;AAED,KAAK,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAEjD,MAAM,MAAM,sBAAsB,GAAG,MAAM,mBAAmB,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC;AACjD,MAAM,MAAM,mBAAmB,CAAC,IAAI,SAAS,eAAe,IAAI,CAC9D,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KACtB,IAAI,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC;AACrD,MAAM,MAAM,qBAAqB,CAAC,IAAI,SAAS,iBAAiB,IAAI,CAClE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,KACxB,IAAI,CAAC;AAEV,MAAM,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC;AAC/C,MAAM,MAAM,kBAAkB,CAAC,IAAI,SAAS,cAAc,IAAI,CAC5D,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KACrB,IAAI,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/events/types.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAE9C,MAAM,WAAW,cAAc;CAAG;AAElC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,sBAAsB;IAC9B,MAAM,EACF,SAAS,GACT,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,4BAA4B,CAAC;CAClC;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC;IAC3B,qBAAqB,EAAE,cAAc,CAAC;IACtC,wBAAwB,EAAE,kBAAkB,CAAC;IAC7C,eAAe,EAAE,cAAc,CAAC;IAChC,mBAAmB,EAAE,cAAc,CAAC;IACpC,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,cAAc,CAAC;IAClC,kBAAkB,EAAE,cAAc,CAAC;IACnC,4BAA4B,EAAE,kBAAkB,CAAC;CAClD;AAED,KAAK,YAAY,GAAG,mBAAmB,GAAG;IACxC,YAAY,EAAE,kBAAkB,CAAC;IACjC,YAAY,EAAE,uBAAuB,CAAC;IACtC,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,qBAAqB,CAAC;IAClC,eAAe,EAAE,kBAAkB,CAAC;IACpC,UAAU,EAAE,cAAc,CAAC;IAC3B,kBAAkB,EAAE,cAAc,CAAC;CACpC;AAED,KAAK,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAEjD,MAAM,MAAM,sBAAsB,GAAG,MAAM,mBAAmB,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC;AACjD,MAAM,MAAM,mBAAmB,CAAC,IAAI,SAAS,eAAe,IAAI,CAC9D,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KACtB,IAAI,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC;AACrD,MAAM,MAAM,qBAAqB,CAAC,IAAI,SAAS,iBAAiB,IAAI,CAClE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,KACxB,IAAI,CAAC;AAEV,MAAM,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC;AAC/C,MAAM,MAAM,kBAAkB,CAAC,IAAI,SAAS,cAAc,IAAI,CAC5D,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KACrB,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.8.3-nightly-afb3cc1-20251001",
3
+ "version": "0.8.3-nightly-e918179-20251003",
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"
@@ -5,6 +5,7 @@ import AudioParam from './AudioParam';
5
5
  import BaseAudioContext from './BaseAudioContext';
6
6
  import PeriodicWave from './PeriodicWave';
7
7
  import { InvalidStateError } from '../errors';
8
+ import { EventEmptyType } from '../events/types';
8
9
 
9
10
  export default class OscillatorNode extends AudioScheduledSourceNode {
10
11
  readonly frequency: AudioParam;
@@ -34,4 +35,14 @@ export default class OscillatorNode extends AudioScheduledSourceNode {
34
35
  public setPeriodicWave(wave: PeriodicWave): void {
35
36
  (this.node as IOscillatorNode).setPeriodicWave(wave.periodicWave);
36
37
  }
38
+
39
+ public override get onEnded(): ((event: EventEmptyType) => void) | undefined {
40
+ return super.onEnded as ((event: EventEmptyType) => void) | undefined;
41
+ }
42
+
43
+ public override set onEnded(
44
+ callback: ((event: EventEmptyType) => void) | null
45
+ ) {
46
+ super.onEnded = callback;
47
+ }
37
48
  }
@@ -46,6 +46,7 @@ type SystemEvents = RemoteCommandEvents & {
46
46
 
47
47
  export interface OnEndedEventType extends EventEmptyType {
48
48
  bufferId: string | undefined;
49
+ isLast: boolean | undefined;
49
50
  }
50
51
 
51
52
  export interface OnAudioReadyEventType {