From 5d945383e5f29eab267896bd297a10300a0c105d Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Wed, 11 Feb 2026 11:48:16 +0100 Subject: [PATCH 01/26] fix: correct frame data extraction --- .../object_detection/ObjectDetection.cpp | 123 ++++++++++++++++-- 1 file changed, 111 insertions(+), 12 deletions(-) diff --git a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp index 8b5bc022f..f17a4f074 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp @@ -2,14 +2,17 @@ #include #include +#include #include +#include +#include namespace rnexecutorch::models::object_detection { ObjectDetection::ObjectDetection( const std::string &modelSource, std::shared_ptr callInvoker) - : BaseModel(modelSource, callInvoker) { + : VisionModel(modelSource, callInvoker) { auto inputTensors = getAllInputShapes(); if (inputTensors.size() == 0) { throw RnExecutorchError(RnExecutorchErrorCode::UnexpectedNumInputs, @@ -29,14 +32,49 @@ ObjectDetection::ObjectDetection( modelInputShape[modelInputShape.size() - 2]); } +cv::Mat ObjectDetection::preprocessFrame(const cv::Mat &frame) const { + // Get target size from model input shape + const std::vector tensorDims = getAllInputShapes()[0]; + cv::Size tensorSize = cv::Size(tensorDims[tensorDims.size() - 1], + tensorDims[tensorDims.size() - 2]); + + cv::Mat rgb; + + // Convert RGBA/BGRA to RGB if needed (for VisionCamera frames) + if (frame.channels() == 4) { +// Platform-specific color conversion: +// iOS uses BGRA format, Android uses RGBA format +#ifdef __APPLE__ + // iOS: BGRA → RGB + cv::cvtColor(frame, rgb, cv::COLOR_BGRA2RGB); +#else + // Android: RGBA → RGB + cv::cvtColor(frame, rgb, cv::COLOR_RGBA2RGB); +#endif + } else if (frame.channels() == 3) { + // Already RGB + rgb = frame; + } else { + char errorMessage[100]; + std::snprintf(errorMessage, sizeof(errorMessage), + "Unsupported frame format: %d channels", frame.channels()); + throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, + errorMessage); + } + + // Only resize if dimensions don't match + if (rgb.size() != tensorSize) { + cv::Mat resized; + cv::resize(rgb, resized, tensorSize); + return resized; + } + + return rgb; +} + std::vector ObjectDetection::postprocess(const std::vector &tensors, cv::Size originalSize, double detectionThreshold) { - if (detectionThreshold <= 0 || detectionThreshold > 1) { - throw RnExecutorchError(RnExecutorchErrorCode::InvalidConfig, - "Detection threshold must be greater than 0 " - "and less than or equal to 1."); - } float widthRatio = static_cast(originalSize.width) / modelImageSize.width; float heightRatio = @@ -70,14 +108,23 @@ ObjectDetection::postprocess(const std::vector &tensors, scores[i]); } - std::vector output = utils::nonMaxSuppression(detections); - return output; + return utils::nonMaxSuppression(detections); } std::vector -ObjectDetection::generate(std::string imageSource, double detectionThreshold) { - auto [inputTensor, originalSize] = - image_processing::readImageToTensor(imageSource, getAllInputShapes()[0]); +ObjectDetection::runInference(cv::Mat image, double detectionThreshold) { + std::lock_guard lock(inference_mutex_); + + // Store original size for postprocessing + cv::Size originalSize = image.size(); + + // Preprocess the image using model-specific preprocessing + cv::Mat preprocessed = preprocessFrame(image); + + // Create tensor and run inference + const std::vector tensorDims = getAllInputShapes()[0]; + auto inputTensor = + image_processing::getTensorFromMatrix(tensorDims, preprocessed); auto forwardResult = BaseModel::forward(inputTensor); if (!forwardResult.ok()) { @@ -88,4 +135,56 @@ ObjectDetection::generate(std::string imageSource, double detectionThreshold) { return postprocess(forwardResult.get(), originalSize, detectionThreshold); } -} // namespace rnexecutorch::models::object_detection + +std::vector +ObjectDetection::generateFromString(std::string imageSource, + double detectionThreshold) { + // Read image using OpenCV (BGR format) + cv::Mat image = image_processing::readImage(imageSource); + + // Convert BGR to RGB (OpenCV imread returns BGR) + cv::Mat imageRGB; + cv::cvtColor(image, imageRGB, cv::COLOR_BGR2RGB); + + // Use the internal helper - it handles locking, preprocessing, and inference + return runInference(imageRGB, detectionThreshold); +} + +std::vector +ObjectDetection::generateFromFrame(jsi::Runtime &runtime, + const jsi::Value &frameData, + double detectionThreshold) { + // Try-lock: skip frame if model is busy (non-blocking for camera) + if (!inference_mutex_.try_lock()) { + return {}; // Return empty vector, don't block camera thread + } + + // Extract frame (under lock to ensure thread safety) + cv::Mat frame; + { + std::lock_guard lock(inference_mutex_, std::adopt_lock); + auto frameObj = frameData.asObject(runtime); + frame = + rnexecutorch::utils::FrameProcessor::extractFrame(runtime, frameObj); + } + // Lock is automatically released here when going out of scope + + // Use the internal helper - it handles locking, preprocessing, and inference + return runInference(frame, detectionThreshold); +} + +std::vector +ObjectDetection::generateFromPixels(jsi::Runtime &runtime, + const jsi::Value &pixelData, + double detectionThreshold) { + // Convert JSI value to JSTensorViewIn + auto tensorView = + jsi_conversion::getValue(pixelData, runtime); + + // Extract raw pixel data to cv::Mat + cv::Mat image = extractFromPixels(tensorView); + + // Use the internal helper - it handles locking, preprocessing, and inference + return runInference(image, detectionThreshold); +} +} // namespace rnexecutorch::models::object_detection \ No newline at end of file From 303f2fb239beca113bfc845c97186b2d3aef4eda Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Thu, 12 Feb 2026 14:24:02 +0100 Subject: [PATCH 02/26] feat: frame extractor for zero-copy approach --- .../rnexecutorch/utils/FrameExtractor.cpp | 151 + .../rnexecutorch/utils/FrameExtractor.h | 60 + .../src/types/common.ts | 33 + yarn.lock | 3028 ++++++----------- 4 files changed, 1262 insertions(+), 2010 deletions(-) create mode 100644 packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp create mode 100644 packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.h diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp new file mode 100644 index 000000000..f64855131 --- /dev/null +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp @@ -0,0 +1,151 @@ +#include "FrameExtractor.h" +#include + +#ifdef __APPLE__ +#import +#endif + +#ifdef __ANDROID__ +#if __ANDROID_API__ >= 26 +#include +#endif +#endif + +namespace rnexecutorch { +namespace utils { + +cv::Mat FrameExtractor::extractFromNativeBuffer(uint64_t bufferPtr) { +#ifdef __APPLE__ + return extractFromCVPixelBuffer(reinterpret_cast(bufferPtr)); +#elif defined(__ANDROID__) + return extractFromAHardwareBuffer(reinterpret_cast(bufferPtr)); +#else + throw std::runtime_error("NativeBuffer not supported on this platform"); +#endif +} + +#ifdef __APPLE__ +cv::Mat FrameExtractor::extractFromCVPixelBuffer(void *pixelBuffer) { + CVPixelBufferRef buffer = static_cast(pixelBuffer); + + // Get buffer properties + size_t width = CVPixelBufferGetWidth(buffer); + size_t height = CVPixelBufferGetHeight(buffer); + size_t bytesPerRow = CVPixelBufferGetBytesPerRow(buffer); + OSType pixelFormat = CVPixelBufferGetPixelFormatType(buffer); + + // Lock the buffer (Vision Camera should have already locked it, but ensure) + CVPixelBufferLockBaseAddress(buffer, kCVPixelBufferLock_ReadOnly); + void *baseAddress = CVPixelBufferGetBaseAddress(buffer); + + cv::Mat mat; + + // Log pixel format once for debugging + static bool loggedPixelFormat = false; + if (!loggedPixelFormat) { + log(LOG_LEVEL::Debug, "CVPixelBuffer format code: ", pixelFormat); + loggedPixelFormat = true; + } + + if (pixelFormat == kCVPixelFormatType_32BGRA) { + // BGRA format (most common on iOS when using pixelFormat: 'rgb') + if (!loggedPixelFormat) { + log(LOG_LEVEL::Debug, "Extracting from CVPixelBuffer: BGRA format, ", + width, "x", height, ", stride: ", bytesPerRow); + } + mat = cv::Mat(static_cast(height), static_cast(width), CV_8UC4, + baseAddress, bytesPerRow); + } else if (pixelFormat == kCVPixelFormatType_32RGBA) { + // RGBA format + if (!loggedPixelFormat) { + log(LOG_LEVEL::Debug, "Extracting from CVPixelBuffer: RGBA format, ", + width, "x", height, ", stride: ", bytesPerRow); + } + mat = cv::Mat(static_cast(height), static_cast(width), CV_8UC4, + baseAddress, bytesPerRow); + } else if (pixelFormat == kCVPixelFormatType_24RGB) { + // RGB format + if (!loggedPixelFormat) { + log(LOG_LEVEL::Debug, "Extracting from CVPixelBuffer: RGB format, ", + width, "x", height, ", stride: ", bytesPerRow); + } + mat = cv::Mat(static_cast(height), static_cast(width), CV_8UC3, + baseAddress, bytesPerRow); + } else { + CVPixelBufferUnlockBaseAddress(buffer, kCVPixelBufferLock_ReadOnly); + throw std::runtime_error("Unsupported CVPixelBuffer format: " + + std::to_string(pixelFormat)); + } + + // Note: We don't unlock here - Vision Camera manages the lifecycle + // When frame.dispose() is called, Vision Camera will unlock and release + + return mat; +} +#endif + +#ifdef __ANDROID__ +cv::Mat FrameExtractor::extractFromAHardwareBuffer(void *hardwareBuffer) { +#if __ANDROID_API__ >= 26 + AHardwareBuffer *buffer = static_cast(hardwareBuffer); + + // Get buffer description + AHardwareBuffer_Desc desc; + AHardwareBuffer_describe(buffer, &desc); + + // Lock the buffer for CPU read access + void *data = nullptr; + int lockResult = AHardwareBuffer_lock( + buffer, AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN, -1, nullptr, &data); + + if (lockResult != 0) { + throw std::runtime_error("Failed to lock AHardwareBuffer"); + } + + cv::Mat mat; + + // Log format once for debugging + static bool loggedFormat = false; + if (!loggedFormat) { + log(LOG_LEVEL::Debug, "AHardwareBuffer format code: ", desc.format); + loggedFormat = true; + } + + if (desc.format == AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM) { + // RGBA format (expected when using pixelFormat: 'rgb' on Android) + if (!loggedFormat) { + log(LOG_LEVEL::Debug, "Extracting from AHardwareBuffer: RGBA format, ", + desc.width, "x", desc.height, ", stride: ", desc.stride * 4); + } + mat = cv::Mat(desc.height, desc.width, CV_8UC4, data, desc.stride * 4); + } else if (desc.format == AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM) { + // RGBX format (treated as RGBA) + if (!loggedFormat) { + log(LOG_LEVEL::Debug, "Extracting from AHardwareBuffer: RGBX format, ", + desc.width, "x", desc.height, ", stride: ", desc.stride * 4); + } + mat = cv::Mat(desc.height, desc.width, CV_8UC4, data, desc.stride * 4); + } else if (desc.format == AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM) { + // RGB format (less common) + if (!loggedFormat) { + log(LOG_LEVEL::Debug, "Extracting from AHardwareBuffer: RGB format, ", + desc.width, "x", desc.height, ", stride: ", desc.stride * 3); + } + mat = cv::Mat(desc.height, desc.width, CV_8UC3, data, desc.stride * 3); + } else { + AHardwareBuffer_unlock(buffer, nullptr); + throw std::runtime_error("Unsupported AHardwareBuffer format: " + + std::to_string(desc.format)); + } + + // Note: We don't unlock here - Vision Camera manages the lifecycle + + return mat; +#else + throw std::runtime_error("AHardwareBuffer requires Android API 26+"); +#endif // __ANDROID_API__ >= 26 +} +#endif // __ANDROID__ + +} // namespace utils +} // namespace rnexecutorch diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.h b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.h new file mode 100644 index 000000000..a90e6ad23 --- /dev/null +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.h @@ -0,0 +1,60 @@ +#pragma once + +#include +#include + +namespace rnexecutorch { +namespace utils { + +/** + * @brief Utility class for extracting cv::Mat from native platform buffers + * + * Provides zero-copy extraction of frames from: + * - iOS: CVPixelBufferRef + * - Android: AHardwareBuffer + */ +class FrameExtractor { +public: + /** + * @brief Extract cv::Mat from a native buffer pointer + * + * @param bufferPtr Platform-specific buffer pointer (uint64_t) + * - iOS: CVPixelBufferRef + * - Android: AHardwareBuffer* + * @return cv::Mat wrapping the buffer data (zero-copy) + * + * @note The returned cv::Mat does not own the data. + * The caller must ensure the buffer remains valid. + * @note The buffer must be locked before calling and unlocked after use. + */ + static cv::Mat extractFromNativeBuffer(uint64_t bufferPtr); + +#ifdef __APPLE__ + /** + * @brief Extract cv::Mat from CVPixelBuffer (iOS) + * + * @param pixelBuffer CVPixelBufferRef pointer + * @return cv::Mat wrapping the pixel buffer data + * + * @note Assumes buffer is already locked by Vision Camera + * @note Supports kCVPixelFormatType_32BGRA and kCVPixelFormatType_24RGB + */ + static cv::Mat extractFromCVPixelBuffer(void *pixelBuffer); +#endif + +#ifdef __ANDROID__ + /** + * @brief Extract cv::Mat from AHardwareBuffer (Android) + * + * @param hardwareBuffer AHardwareBuffer* pointer + * @return cv::Mat wrapping the hardware buffer data + * + * @note Assumes buffer is already locked by Vision Camera + * @note Supports AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM and R8G8B8_UNORM + */ + static cv::Mat extractFromAHardwareBuffer(void *hardwareBuffer); +#endif +}; + +} // namespace utils +} // namespace rnexecutorch diff --git a/packages/react-native-executorch/src/types/common.ts b/packages/react-native-executorch/src/types/common.ts index 384caa861..439e18597 100644 --- a/packages/react-native-executorch/src/types/common.ts +++ b/packages/react-native-executorch/src/types/common.ts @@ -151,3 +151,36 @@ export type LabelEnum = Readonly>; * @category Types */ export type Triple = readonly [T, T, T]; + +/** + * Frame data for vision model processing. + * Supports two modes: + * 1. ArrayBuffer mode (with memory copy) - Compatible with all platforms + * 2. NativeBuffer mode (zero-copy) - Better performance with Vision Camera v5 + */ +export interface FrameData { + /** + * Raw pixel data as ArrayBuffer (requires memory copy). + * Use this for compatibility or when getNativeBuffer is not available. + */ + data?: ArrayBuffer | ArrayBufferLike; + + /** + * Pointer to native platform buffer (zero-copy, best performance). + * - On iOS: CVPixelBufferRef pointer + * - On Android: AHardwareBuffer* pointer + * + * Obtain from Vision Camera v5: `frame.getNativeBuffer().pointer` + */ + nativeBuffer?: bigint; + + /** + * Frame width in pixels + */ + width: number; + + /** + * Frame height in pixels + */ + height: number; +} diff --git a/yarn.lock b/yarn.lock index 829e4f42f..713348e4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -33,27 +33,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:7.10.4, @babel/code-frame@npm:~7.10.4": - version: 7.10.4 - resolution: "@babel/code-frame@npm:7.10.4" - dependencies: - "@babel/highlight": "npm:^7.10.4" - checksum: 10/4ef9c679515be9cb8eab519fcded953f86226155a599cf7ea209e40e088bb9a51bb5893d3307eae510b07bb3e359d64f2620957a00c27825dbe26ac62aca81f5 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.20.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/code-frame@npm:7.27.1" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.27.1" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.1.1" - checksum: 10/721b8a6e360a1fa0f1c9fe7351ae6c874828e119183688b533c477aa378f1010f37cc9afbfc4722c686d1f5cdd00da02eab4ba7278a0c504fa0d7a321dcd4fdf - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.20.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": version: 7.29.0 resolution: "@babel/code-frame@npm:7.29.0" dependencies: @@ -64,44 +44,23 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/compat-data@npm:7.28.5" - checksum: 10/5a5ff00b187049e847f04bd02e21fbd8094544e5016195c2b45e56fa2e311eeb925b158f52a85624c9e6bacc1ce0323e26c303513723d918a8034e347e22610d +"@babel/code-frame@npm:~7.10.4": + version: 7.10.4 + resolution: "@babel/code-frame@npm:7.10.4" + dependencies: + "@babel/highlight": "npm:^7.10.4" + checksum: 10/4ef9c679515be9cb8eab519fcded953f86226155a599cf7ea209e40e088bb9a51bb5893d3307eae510b07bb3e359d64f2620957a00c27825dbe26ac62aca81f5 languageName: node linkType: hard -"@babel/compat-data@npm:^7.28.6": +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.28.6, @babel/compat-data@npm:^7.29.0": version: 7.29.0 resolution: "@babel/compat-data@npm:7.29.0" checksum: 10/7f21beedb930ed8fbf7eabafc60e6e6521c1d905646bf1317a61b2163339157fe797efeb85962bf55136e166b01fd1a6b526a15974b92a8b877d564dcb6c9580 languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2": - version: 7.28.5 - resolution: "@babel/core@npm:7.28.5" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.5" - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-module-transforms": "npm:^7.28.3" - "@babel/helpers": "npm:^7.28.4" - "@babel/parser": "npm:^7.28.5" - "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.28.5" - "@babel/types": "npm:^7.28.5" - "@jridgewell/remapping": "npm:^2.3.5" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10/2f1e224125179f423f4300d605a0c5a3ef315003281a63b1744405b2605ee2a2ffc5b1a8349aa4f262c72eca31c7e1802377ee04ad2b852a2c88f8ace6cac324 - languageName: node - linkType: hard - -"@babel/core@npm:^7.27.4, @babel/core@npm:^7.29.0": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2, @babel/core@npm:^7.27.4, @babel/core@npm:^7.29.0": version: 7.29.0 resolution: "@babel/core@npm:7.29.0" dependencies: @@ -125,8 +84,8 @@ __metadata: linkType: hard "@babel/eslint-parser@npm:^7.25.1": - version: 7.28.5 - resolution: "@babel/eslint-parser@npm:7.28.5" + version: 7.28.6 + resolution: "@babel/eslint-parser@npm:7.28.6" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -134,24 +93,11 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10/ec8eb061f319fe3854f4c720303bf239625e63c5ddc9391a3c00f17339d417dc5482dc043b64d15506b0e87f26820dfec9ff4880a1862f7c05f4cf1bbf6e34be + checksum: 10/15c0c9c78abcc5f267a34bab95437c37dfc468e3ac5e11094ed26bebd63c7a5b056fa47c005ba74eb9fbed6c79e37f90cbe2a24ed09425921275391fe9a5bbe7 languageName: node linkType: hard -"@babel/generator@npm:^7.20.5, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/generator@npm:7.28.5" - dependencies: - "@babel/parser": "npm:^7.28.5" - "@babel/types": "npm:^7.28.5" - "@jridgewell/gen-mapping": "npm:^0.3.12" - "@jridgewell/trace-mapping": "npm:^0.3.28" - jsesc: "npm:^3.0.2" - checksum: 10/ae618f0a17a6d76c3983e1fd5d9c2f5fdc07703a119efdb813a7d9b8ad4be0a07d4c6f0d718440d2de01a68e321f64e2d63c77fc5d43ae47ae143746ef28ac1f - languageName: node - linkType: hard - -"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1": +"@babel/generator@npm:^7.20.5, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1": version: 7.29.1 resolution: "@babel/generator@npm:7.29.1" dependencies: @@ -173,20 +119,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/helper-compilation-targets@npm:7.27.2" - dependencies: - "@babel/compat-data": "npm:^7.27.2" - "@babel/helper-validator-option": "npm:^7.27.1" - browserslist: "npm:^4.24.0" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10/bd53c30a7477049db04b655d11f4c3500aea3bcbc2497cf02161de2ecf994fec7c098aabbcebe210ffabc2ecbdb1e3ffad23fb4d3f18723b814f423ea1749fe8 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.28.6": +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2, @babel/helper-compilation-targets@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-compilation-targets@npm:7.28.6" dependencies: @@ -199,24 +132,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3, @babel/helper-create-class-features-plugin@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/helper-create-class-features-plugin@npm:7.28.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-member-expression-to-functions": "npm:^7.28.5" - "@babel/helper-optimise-call-expression": "npm:^7.27.1" - "@babel/helper-replace-supers": "npm:^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.5" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/0bbf3dfe91875f642fe7ef38f60647f0df8eb9994d4350b19a4d1a9bdc32629e49e56e9a80afb12eeb6f6bcc6666392b37f32231b7c054fc91a0d5251cd67d5b - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.28.6": +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-create-class-features-plugin@npm:7.28.6" dependencies: @@ -233,7 +149,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1": +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1, @babel/helper-create-regexp-features-plugin@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.28.5" dependencies: @@ -246,18 +162,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.6.5": - version: 0.6.5 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" +"@babel/helper-define-polyfill-provider@npm:^0.6.5, @babel/helper-define-polyfill-provider@npm:^0.6.6": + version: 0.6.6 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.6" dependencies: - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-plugin-utils": "npm:^7.27.1" - debug: "npm:^4.4.1" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + debug: "npm:^4.4.3" lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.22.10" + resolve: "npm:^1.22.11" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/0bdd2d9654d2f650c33976caa1a2afac2c23cf07e83856acdb482423c7bf4542c499ca0bdc723f2961bb36883501f09e9f4fe061ba81c07996daacfba82a6f62 + checksum: 10/1c725c47bafb10ae4527aff6741b44ca49b18bf7005ae4583b15f992783e7c1d7687eab1a5583a373b5494160d46e91e29145280bd850e97d36b8b01bc5fef99 languageName: node linkType: hard @@ -277,7 +193,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.27.1, @babel/helper-member-expression-to-functions@npm:^7.28.5": +"@babel/helper-member-expression-to-functions@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-member-expression-to-functions@npm:7.28.5" dependencies: @@ -287,17 +203,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-module-imports@npm:7.27.1" - dependencies: - "@babel/traverse": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - checksum: 10/58e792ea5d4ae71676e0d03d9fef33e886a09602addc3bd01388a98d87df9fcfd192968feb40ac4aedb7e287ec3d0c17b33e3ecefe002592041a91d8a1998a8d - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.28.6": +"@babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-imports@npm:7.28.6" dependencies: @@ -307,20 +213,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-module-transforms@npm:7.28.3" - dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/598fdd8aa5b91f08542d0ba62a737847d0e752c8b95ae2566bc9d11d371856d6867d93e50db870fb836a6c44cfe481c189d8a2b35ca025a224f070624be9fa87 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.28.6": +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-transforms@npm:7.28.6" dependencies: @@ -342,14 +235,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.27.1 - resolution: "@babel/helper-plugin-utils@npm:7.27.1" - checksum: 10/96136c2428888e620e2ec493c25888f9ceb4a21099dcf3dd4508ea64b58cdedbd5a9fb6c7b352546de84d6c24edafe482318646932a22c449ebd16d16c22d864 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.28.6": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.28.6 resolution: "@babel/helper-plugin-utils@npm:7.28.6" checksum: 10/21c853bbc13dbdddf03309c9a0477270124ad48989e1ad6524b83e83a77524b333f92edd2caae645c5a7ecf264ec6d04a9ebe15aeb54c7f33c037b71ec521e4a @@ -369,20 +255,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-replace-supers@npm:7.27.1" - dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.27.1" - "@babel/helper-optimise-call-expression": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/72e3f8bef744c06874206bf0d80a0abbedbda269586966511c2491df4f6bf6d47a94700810c7a6737345a545dfb8295222e1e72f506bcd0b40edb3f594f739ea - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.28.6": +"@babel/helper-replace-supers@npm:^7.27.1, @babel/helper-replace-supers@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-replace-supers@npm:7.28.6" dependencies: @@ -412,7 +285,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": +"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-validator-identifier@npm:7.28.5" checksum: 10/8e5d9b0133702cfacc7f368bf792f0f8ac0483794877c6dca5fcb73810ee138e27527701826fb58a40a004f3a5ec0a2f3c3dd5e326d262530b119918f3132ba7 @@ -427,23 +300,13 @@ __metadata: linkType: hard "@babel/helper-wrap-function@npm:^7.27.1": - version: 7.28.3 - resolution: "@babel/helper-wrap-function@npm:7.28.3" - dependencies: - "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.28.3" - "@babel/types": "npm:^7.28.2" - checksum: 10/a5ed5fe7b8d9949d3b4f45ccec0b365018b8e444f6a6d794b4c8291e251e680f5b7c79c49c2170de9d14967c78721f59620ce70c5dac2d53c30628ef971d9dce - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/helpers@npm:7.28.4" + version: 7.28.6 + resolution: "@babel/helper-wrap-function@npm:7.28.6" dependencies: - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.4" - checksum: 10/5a70a82e196cf8808f8a449cc4780c34d02edda2bb136d39ce9d26e63b615f18e89a95472230c3ce7695db0d33e7026efeee56f6454ed43480f223007ed205eb + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + checksum: 10/d8a895a75399904746f4127db33593a20021fc55d1a5b5dfeb060b87cc13a8dceea91e70a4951bcd376ba9bd8232b0c04bff9a86c1dab83d691e01852c3b5bcd languageName: node linkType: hard @@ -469,18 +332,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/parser@npm:7.28.5" - dependencies: - "@babel/types": "npm:^7.28.5" - bin: - parser: ./bin/babel-parser.js - checksum: 10/8d9bfb437af6c97a7f6351840b9ac06b4529ba79d6d3def24d6c2996ab38ff7f1f9d301e868ca84a93a3050fadb3d09dbc5105b24634cd281671ac11eebe8df7 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": version: 7.29.0 resolution: "@babel/parser@npm:7.29.0" dependencies: @@ -538,15 +390,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.3" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/eeacdb7fa5ae19e366cbc4da98736b898e05b9abe572aa23093e6be842c6c8284d08af538528ec771073a3749718033be3713ff455ca008d11a7b0e90e62a53d + checksum: 10/9377897aa7cba3a0b78a7c6015799ff71504b2b203329357e42ab3185d44aab07344ba33f5dd53f14d5340c1dc5a2587346343e0859538947bbab0484e72b914 languageName: node linkType: hard @@ -577,15 +429,15 @@ __metadata: linkType: hard "@babel/plugin-proposal-decorators@npm:^7.12.9": - version: 7.28.0 - resolution: "@babel/plugin-proposal-decorators@npm:7.28.0" + version: 7.29.0 + resolution: "@babel/plugin-proposal-decorators@npm:7.29.0" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-syntax-decorators": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-syntax-decorators": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/984a4cc0891ac910ee65793c02299048ad18903855032f3e922476b5bd1e9839dd1ed0505bf3f69956b50b6d4dcbc3c74798bcc4c12d0160c37c187c2330ead4 + checksum: 10/fa7b9aa1a48993ad60b9e118619ed364aa67da4c634b8a755a6f0529a9f61719723fccfdaf3bf0c6ff693eeee0992a67fb311e0cbe8fed7d48de43cdc8ebff2c languageName: node linkType: hard @@ -717,14 +569,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-decorators@npm:7.27.1" +"@babel/plugin-syntax-decorators@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-decorators@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/2dd303f969c7eacb666294493e87d0121122d2b0f6f678855f8e134e0866dc20633cbe1b7351e9eae3874f95657bfdc63dcde68992e99f014111a725467059ca + checksum: 10/6c7544eaa586aba1bcb400eab9304011c1d5be8d9cff02d02c930e70d4023505595c36feca2bf62960f3891d2c3abbc32e116d4c8ab1da63b0fc5329d7694919 languageName: node linkType: hard @@ -740,46 +592,46 @@ __metadata: linkType: hard "@babel/plugin-syntax-export-default-from@npm:^7.0.0, @babel/plugin-syntax-export-default-from@npm:^7.24.7": - version: 7.27.1 - resolution: "@babel/plugin-syntax-export-default-from@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-syntax-export-default-from@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/d9a6a9c51f644a5ed139dbe1e8cf5a38c9b390af27ad2fc6f0eba579ac543b039efff34200744bfc8523132c06aa6de921238bd2088948bb4dce4571cea43438 + checksum: 10/06330b90a4baf9edafe8a4e2e6520d548f83e178c1e832c1ad5018532052996331aedc8c3b4e6b0e51acaef75abe76e25ad3465d3d914658d65acec6908f202a languageName: node linkType: hard "@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.18.0, @babel/plugin-syntax-flow@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-flow@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-syntax-flow@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/7baca3171ed595d04c865b0ce46fca7f21900686df9d7fcd1017036ce78bb5483e33803de810831e68d39cf478953db69f49ae3f3de2e3207bc4ba49a96b6739 + checksum: 10/3dfe5d8168e400376e16937c92648142771b9ba0d9937b04ccdaacd06bf9d854170021b466106d4aa39ba6062b8b5b9b53efddae2c64ca133d4d6fafaa472909 languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" +"@babel/plugin-syntax-import-assertions@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/fb661d630808d67ecb85eabad25aac4e9696a20464bad4c4a6a0d3d40e4dc22557d47e9be3d591ec06429cf048cfe169b8891c373606344d51c4f3ac0f91d6d0 + checksum: 10/25017235e1e2c4ed892aa327a3fa10f4209cc618c6dd7806fc40c07d8d7d24a39743d3d5568b8d1c8f416cffe03c174e78874ded513c9338b07a7ab1dcbab050 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/97973982fff1bbf86b3d1df13380567042887c50e2ae13a400d02a8ff2c9742a60a75e279bfb73019e1cd9710f04be5e6ab81f896e6678dcfcec8b135e8896cf + checksum: 10/6c8c6a5988dbb9799d6027360d1a5ba64faabf551f2ef11ba4eade0c62253b5c85d44ddc8eb643c74b9acb2bcaa664a950bd5de9a5d4aef291c4f2a48223bb4b languageName: node linkType: hard @@ -805,14 +657,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" +"@babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-jsx@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c6d1324cff286a369aa95d99b8abd21dd07821b5d3affd5fe7d6058c84cff9190743287826463ee57a7beecd10fa1e4bc99061df532ee14e188c1c8937b13e3a + checksum: 10/572e38f5c1bb4b8124300e7e3dd13e82ae84a21f90d3f0786c98cd05e63c78ca1f32d1cfe462dfbaf5e7d5102fa7cd8fd741dfe4f3afc2e01a3b2877dcc8c866 languageName: node linkType: hard @@ -904,18 +756,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/87836f7e32af624c2914c73cd6b9803cf324e07d43f61dbb973c6a86f75df725e12540d91fac7141c14b697aa9268fd064220998daced156e96ac3062d7afb41 - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.28.6": +"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" dependencies: @@ -949,29 +790,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" +"@babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.29.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-remap-async-to-generator": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.0" + "@babel/traverse": "npm:^7.29.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/8ad31b9969b203dec572738a872e17b14ef76ca45b4ef5ffa76f3514be417ca233d1a0978e5f8de166412a8a745619eb22b07cc5df96f5ebad8ca500f920f61b + checksum: 10/e2c064a5eb212cbdf14f7c0113e069b845ca0f0ba431c1cc04607d3fc4f3bf1ed70f5c375fe7c61338a45db88bc1a79d270c8d633ce12256e1fce3666c1e6b93 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.24.7, @babel/plugin-transform-async-to-generator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" +"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.24.7, @babel/plugin-transform-async-to-generator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.28.6" dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-module-imports": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-remap-async-to-generator": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/d79d7a7ae7d416f6a48200017d027a6ba94c09c7617eea8b4e9c803630f00094c1a4fc32bf20ce3282567824ce3fcbda51653aac4003c71ea4e681b331338979 + checksum: 10/bca5774263ec01dd2bf71c74bbaf7baa183bf03576636b7826c3346be70c8c8cb15cff549112f2983c36885131a0afde6c443591278c281f733ee17f455aa9b1 languageName: node linkType: hard @@ -986,18 +827,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.25.0, @babel/plugin-transform-block-scoping@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-block-scoping@npm:7.28.5" +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.25.0, @babel/plugin-transform-block-scoping@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/4b695360ede8472262111efb9d5c35b515767e1ead9e272c3e9799235e3f5feeb21d99a66bb23acbba9424465d13e7695a22a22a680c4aa558702ef8aad461d6 + checksum: 10/7ab8a0856024a5360ba16c3569b739385e939bc5a15ad7d811bec8459361a9aa5ee7c5f154a4e2ce79f5d66779c19464e7532600c31a1b6f681db4eb7e1c7bde languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:7.27.1, @babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.27.1": +"@babel/plugin-transform-class-properties@npm:7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" dependencies: @@ -1009,19 +850,31 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.27.1, @babel/plugin-transform-class-static-block@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" +"@babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-class-properties@npm:7.28.6" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.28.3" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/200f30d44b36a768fa3a8cf690db9e333996af2ad14d9fa1b4c91a427ed9302907873b219b4ce87517ca1014a810eb2e929a6a66be68473f72b546fc64d04fbc + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.27.1, @babel/plugin-transform-class-static-block@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-class-static-block@npm:7.28.6" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10/c0ba8f0cbf3699287e5a711907dab3b29f346d9c107faa4e424aa26252e45845d74ca08ee6245bfccf32a8c04bc1d07a89b635e51522592c6044b810a48d3f58 + checksum: 10/bea7836846deefd02d9976ad1b30b5ade0d6329ecd92866db789dcf6aacfaf900b7a77031e25680f8de5ad636a771a5bdca8961361e6218d45d538ec5d9b71cc languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:7.28.4, @babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.4": +"@babel/plugin-transform-classes@npm:7.28.4": version: 7.28.4 resolution: "@babel/plugin-transform-classes@npm:7.28.4" dependencies: @@ -1037,19 +890,35 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-classes@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/template": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-replace-supers": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/101f6d4575447070943d5a9efaa5bea8c552ea3083d73a9612f1a16d38b0a0a7b79a5feb65c6cc4e4fcabf28e85a570b97ccd3294da966e8fbbb6dfb97220eda + checksum: 10/9c3278a314d1c4bcda792bb22aced20e30c735557daf9bcc56397c0f3eb54761b21c770219e4581036a10dabda3e597321ed093bc245d5f4d561e19ceff66a6d languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.28.0, @babel/plugin-transform-destructuring@npm:^7.28.5": +"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-computed-properties@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/template": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/4a5e270f7e1f1e9787cf7cf133d48e3c1e38eb935d29a90331a1324d7c720f589b7b626b2e6485cd5521a7a13f2dbdc89a3e46ecbe7213d5bbb631175267c4aa + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.28.5": version: 7.28.5 resolution: "@babel/plugin-transform-destructuring@npm:7.28.5" dependencies: @@ -1061,15 +930,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" +"@babel/plugin-transform-dotall-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/2173e5b13f403538ffc6bd57b190cedf4caf320abc13a99e5b2721864e7148dbd3bd7c82d92377136af80432818f665fdd9a1fd33bc5549a4c91e24e5ce2413c + checksum: 10/866ffbbdee77fa955063b37c75593db8dbbe46b1ebb64cc788ea437e3a9aa41cb7b9afcee617c678a32b6705baa0892ec8e5d4b8af3bbb0ab1b254514ccdbd37 languageName: node linkType: hard @@ -1084,15 +953,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.29.0" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/2a109613535e6ac79240dced71429e988affd6a5b3d0cd0f563c8d6c208c51ce7bf2c300bc1150502376b26a51f279119b3358f1c0f2d2f8abca3bcd62e1ae46 + checksum: 10/7fa7b773259a578c9e01c80946f75ecc074520064aa7a87a65db06c7df70766e2fa6be78cda55fa9418a14e30b2b9d595484a46db48074d495d9f877a4276065 languageName: node linkType: hard @@ -1107,26 +976,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" +"@babel/plugin-transform-explicit-resource-management@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-transform-destructuring": "npm:^7.28.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/93d7835160bf8623c7b7072898046c9a2a46cf911f38fa2a002de40a11045a65bf9c1663c98f2e4e04615037f63391832c20b45d7bc26a16d39a97995d0669bc + checksum: 10/36d638a253dbdaee5548b4ddd21c04ee4e39914b207437bb64cf79bb41c2caadb4321768d3dba308c1016702649bc44efe751e2052de393004563c7376210d86 languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.5" +"@babel/plugin-transform-exponentiation-operator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/da9bb5acd35c9fba92b802641f9462b82334158a149c78a739a04576a1e62be41057a201a41c022dda263bb73ac1a26521bbc997c7fc067f54d487af297995f4 + checksum: 10/b232152499370435c7cd4bf3321f58e189150e35ca3722ea16533d33434b97294df1342f5499671ec48e62b71c34cdea0ca8cf317ad12594a10f6fc670315e62 languageName: node linkType: hard @@ -1178,14 +1047,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" +"@babel/plugin-transform-json-strings@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-json-strings@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/2c05a02f63b49f47069271b3405a66c3c8038de5b995b0700b1bd9a5e2bb3e67abd01e4604629302a521f4d8122a4233944aefa16559fd4373d256cc5d3da57f + checksum: 10/69d82a1a0a72ed6e6f7969e09cf330516599d79b2b4e680e9dd3c57616a8c6af049b5103456e370ab56642815e80e46ed88bb81e9e059304a85c5fe0bf137c29 languageName: node linkType: hard @@ -1200,14 +1069,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.5" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c76778f4b186cc4f0b7e3658d91c690678bdb2b9d032f189213016d6177f2564709b79b386523b022b7d52e52331fd91f280f7c7bf85d835e0758b4b0d371447 + checksum: 10/36095d5d1cfc680e95298b5389a16016da800ae3379b130dabf557e94652c47b06610407e9fa44aaa03e9b0a5aa7b4b93348123985d44a45e369bf5f3497d149 languageName: node linkType: hard @@ -1234,29 +1103,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1, @babel/plugin-transform-modules-commonjs@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.28.6" dependencies: - "@babel/helper-module-transforms": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-module-transforms": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/9059243a977bc1f13e3dccfc6feb6508890e7c7bb191f7eb56626b20672b4b12338051ca835ab55426875a473181502c8f35b4df58ba251bef63b25866d995fe + checksum: 10/ec6ea2958e778a7e0220f4a75cb5816cecddc6bd98efa10499fff7baabaa29a594d50d787a4ebf8a8ba66fefcf76ca2ded602be0b4554ae3317e53b3b3375b37 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.28.5" +"@babel/plugin-transform-modules-systemjs@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.29.0" dependencies: - "@babel/helper-module-transforms": "npm:^7.28.3" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-module-transforms": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-validator-identifier": "npm:^7.28.5" - "@babel/traverse": "npm:^7.28.5" + "@babel/traverse": "npm:^7.29.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/1b91b4848845eaf6e21663d97a2a6c896553b127deaf3c2e9a2a4f041249277d13ebf71fd42d0ecbc4385e9f76093eff592fe0da0dcf1401b3f38c1615d8c539 + checksum: 10/b3e64728eef02d829510778226da4c06be740fe52e0d45d4aa68b24083096d8ad7df67f2e9e67198b2e85f3237d42bd66f5771f85846f7a746105d05ca2e0cae languageName: node linkType: hard @@ -1272,15 +1141,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.29.0" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/a711c92d9753df26cefc1792481e5cbff4fe4f32b383d76b25e36fa865d8023b1b9aa6338cf18f5c0e864c71a7fbe8115e840872ccd61a914d9953849c68de7d + checksum: 10/ed8c27699ca82a6c01cbfd39f3de16b90cfea4f8146a358057f76df290d308a66a8bd2e6734e6a87f68c18576e15d2d70548a84cd474d26fdf256c3f5ae44d8c languageName: node linkType: hard @@ -1295,7 +1164,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": +"@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" dependencies: @@ -1306,29 +1175,40 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/049b958911de86d32408cd78017940a207e49c054ae9534ab53a32a57122cc592c0aae3c166d6f29bd1a7d75cc779d71883582dd76cb28b2fbb493e842d8ffca + checksum: 10/88106952ca4f4fea8f97222a25f9595c6859d458d76905845dfa54f54e7d345e3dc338932e8c84a9c57a6c88b2f6d9ebff47130ce508a49c2b6e6a9f03858750 languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" +"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.28.6" dependencies: - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/4b5ca60e481e22f0842761a3badca17376a230b5a7e5482338604eb95836c2d0c9c9bde53bdc5c2de1c6a12ae6c12de7464d098bf74b0943f85905ca358f0b68 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.6" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-transform-destructuring": "npm:^7.28.5" "@babel/plugin-transform-parameters": "npm:^7.27.7" - "@babel/traverse": "npm:^7.28.4" + "@babel/traverse": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/aebe464e368cefa5c3ba40316c47b61eb25f891d436b2241021efef5bd0b473c4aa5ba4b9fa0f4b4d5ce4f6bc6b727628d1ca79d54e7b8deebb5369f7dff2984 + checksum: 10/9c8c51a515a5ec98a33a715e82d49f873e58b04b53fa1e826f3c2009f7133cd396d6730553a53d265e096dbfbea17dd100ae38815d0b506c094cb316a7a5519e languageName: node linkType: hard @@ -1344,14 +1224,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7, @babel/plugin-transform-optional-catch-binding@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" +"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7, @babel/plugin-transform-optional-catch-binding@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/f4356b04cf21a98480f9788ea50f1f13ee88e89bb6393ba4b84d1f39a4a84c7928c9a4328e8f4c5b6deb218da68a8fd17bf4f46faec7653ddc20ffaaa5ba49f4 + checksum: 10/ee24a17defec056eb9ef01824d7e4a1f65d531af6b4b79acfd0bcb95ce0b47926e80c61897f36f8c01ce733b069c9acdb1c9ce5ec07a729d0dbf9e8d859fe992 languageName: node linkType: hard @@ -1367,15 +1247,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.5" +"@babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/0bc900bff66d5acc13b057107eaeb6084b4cb0b124654d35b103f71f292d33dba5beac444ab4f92528583585b6e0cf34d64ce9cbb473b15d22375a4a6ed3cbac + checksum: 10/c7cf29f99384a9a98748f04489a122c0106e0316aa64a2e61ef8af74c1057b587b96d9a08eb4e33d2ac17d1aaff1f0a86fae658d429fa7bcce4ef977e0ad684b languageName: node linkType: hard @@ -1390,28 +1270,28 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" +"@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-private-methods@npm:7.28.6" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c76f8f6056946466116e67eb9d8014a2d748ade2062636ab82045c1dac9c233aff10e597777bc5af6f26428beb845ceb41b95007abef7d0484da95789da56662 + checksum: 10/b80179b28f6a165674d0b0d6c6349b13a01dd282b18f56933423c0a33c23fc0626c8f011f859fc20737d021fe966eb8474a5233e4596401482e9ee7fb00e2aa2 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.24.7, @babel/plugin-transform-private-property-in-object@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" +"@babel/plugin-transform-private-property-in-object@npm:^7.24.7, @babel/plugin-transform-private-property-in-object@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.28.6" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/d4466d42a02c5a318d9d7b8102969fd032b17ff044918dfd462d5cc49bd11f5773ee0794781702afdf4727ba11e9be6cbea1e396bc0a7307761bb9a56399012a + checksum: 10/d02008c62fd32ff747b850b8581ab5076b717320e1cb01c7fc66ebf5169095bd922e18cfb269992f85bc7fbd2cc61e5b5af25e2b54aad67411474b789ea94d5f languageName: node linkType: hard @@ -1471,17 +1351,17 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.25.2, @babel/plugin-transform-react-jsx@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-transform-react-jsx@npm:7.28.6" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-syntax-jsx": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-module-imports": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-syntax-jsx": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/e865f194770906398957df23530af9a46009ac3737aaa10026b3925fe0a38fc3254f4b227d3b8807ab66ac92c14323bef561dd2217644052de5a9702af76e2f6 + checksum: 10/c6eade7309f0710b6aac9e747f8c3305633801c035a35efc5e2436742cc466e457ed5848d3dd5dade36e34332cfc50ac92d69a33f7803d66ae2d72f13a76c3bc languageName: node linkType: hard @@ -1497,26 +1377,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" +"@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-regenerator@npm:7.29.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/24da51a659d882e02bd4353da9d8e045e58d967c1cddaf985ad699a9fc9f920a45eff421c4283a248d83dc16590b8956e66fd710be5db8723b274cfea0b51b2f + checksum: 10/c8fa9da74371568c5d34fd7d53de018752550cb10334040ca59e41f34b27f127974bdc5b4d1a1a8e8f3ebcf3cb7f650aa3f2df3b7bf1b7edf67c04493b9e3cb8 languageName: node linkType: hard -"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" +"@babel/plugin-transform-regexp-modifiers@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/f6cb385fe0e798bff7e9b20cf5912bf40e180895ff3610b1ccdce260f3c20daaebb3a99dc087c8168a99151cd3e16b94f4689fd5a4b01cf1834b45c133e620b2 + checksum: 10/5aacc570034c085afa0165137bb9a04cd4299b86eb9092933a96dcc1132c8f591d9d534419988f5f762b2f70d43a3c719a6b8fa05fdd3b2b1820d01cf85500da languageName: node linkType: hard @@ -1532,18 +1412,18 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.0.0, @babel/plugin-transform-runtime@npm:^7.24.7": - version: 7.28.5 - resolution: "@babel/plugin-transform-runtime@npm:7.28.5" + version: 7.29.0 + resolution: "@babel/plugin-transform-runtime@npm:7.29.0" dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-module-imports": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" babel-plugin-polyfill-corejs2: "npm:^0.4.14" babel-plugin-polyfill-corejs3: "npm:^0.13.0" babel-plugin-polyfill-regenerator: "npm:^0.6.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/0d16c90d40dd34f1a981e742ad656ceef619b92d3662ec9ac8d7c8ba79f22bb425c3f9e097333659a4938f03868a53077b1a3aadb7f37504157a0c7af64ec2be + checksum: 10/314cfede923a7fb3aeecf4b282a3090e4a9ae1d84005e9a0365284c5142165a4dccd308455af9013d486a4ad8ada25ccad2fea28c2ec19b086d1ffa0088a69d7 languageName: node linkType: hard @@ -1558,15 +1438,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-spread@npm:7.27.1" +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-spread@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/3edd28b07e1951f32aa2d380d9a0e0ed408c64a5cea2921d02308541042aca18f146b3a61e82e534d4d61cb3225dbc847f4f063aedfff6230b1a41282e95e8a2 + checksum: 10/1fa02ac60ae5e49d46fa2966aaf3f7578cf37255534c2ecf379d65855088a1623c3eea28b9ee6a0b1413b0199b51f9019d0da3fe9da89986bc47e07242415f60 languageName: node linkType: hard @@ -1614,22 +1494,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.25.2, @babel/plugin-transform-typescript@npm:^7.28.5, @babel/plugin-transform-typescript@npm:^7.5.0": - version: 7.28.5 - resolution: "@babel/plugin-transform-typescript@npm:7.28.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-create-class-features-plugin": "npm:^7.28.5" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/plugin-syntax-typescript": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/e4706379df70c2de9d3d3f573ff74a160e05221620a22dd0a64899ab45fddad9e4530fbba33014c75906f13aa78d8044fed80dba85068e11d84ed1f033dea445 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.27.1": +"@babel/plugin-transform-typescript@npm:^7.25.2, @babel/plugin-transform-typescript@npm:^7.27.1, @babel/plugin-transform-typescript@npm:^7.28.5, @babel/plugin-transform-typescript@npm:^7.5.0": version: 7.28.6 resolution: "@babel/plugin-transform-typescript@npm:7.28.6" dependencies: @@ -1655,15 +1520,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" +"@babel/plugin-transform-unicode-property-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/5d99c89537d1ebaac3f526c04b162cf95a47d363d4829f78c6701a2c06ab78a48da66a94f853f85f44a3d72153410ba923e072bed4b7166fa097f503eb14131d + checksum: 10/d14e8c51aa73f592575c1543400fd67d96df6410d75c9dc10dd640fd7eecb37366a2f2368bbdd7529842532eda4af181c921bda95146c6d373c64ea59c6e9991 languageName: node linkType: hard @@ -1679,95 +1544,95 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/295126074c7388ab05c82ef3ed0907a1ee4666bbdd763477ead9aba6eb2c74bdf65669416861ac93d337a4a27640963bb214acadc2697275ce95aab14868d57f + checksum: 10/423971fe2eef9d18782b1c30f5f42613ee510e5b9c08760c5538a0997b36c34495acce261e0e37a27831f81330359230bd1f33c2e1822de70241002b45b7d68e languageName: node linkType: hard "@babel/preset-env@npm:^7.25.2": - version: 7.28.5 - resolution: "@babel/preset-env@npm:7.28.5" + version: 7.29.0 + resolution: "@babel/preset-env@npm:7.29.0" dependencies: - "@babel/compat-data": "npm:^7.28.5" - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/compat-data": "npm:^7.29.0" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-validator-option": "npm:^7.27.1" "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.6" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" - "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" + "@babel/plugin-syntax-import-assertions": "npm:^7.28.6" + "@babel/plugin-syntax-import-attributes": "npm:^7.28.6" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" - "@babel/plugin-transform-async-generator-functions": "npm:^7.28.0" - "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" + "@babel/plugin-transform-async-generator-functions": "npm:^7.29.0" + "@babel/plugin-transform-async-to-generator": "npm:^7.28.6" "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" - "@babel/plugin-transform-block-scoping": "npm:^7.28.5" - "@babel/plugin-transform-class-properties": "npm:^7.27.1" - "@babel/plugin-transform-class-static-block": "npm:^7.28.3" - "@babel/plugin-transform-classes": "npm:^7.28.4" - "@babel/plugin-transform-computed-properties": "npm:^7.27.1" + "@babel/plugin-transform-block-scoping": "npm:^7.28.6" + "@babel/plugin-transform-class-properties": "npm:^7.28.6" + "@babel/plugin-transform-class-static-block": "npm:^7.28.6" + "@babel/plugin-transform-classes": "npm:^7.28.6" + "@babel/plugin-transform-computed-properties": "npm:^7.28.6" "@babel/plugin-transform-destructuring": "npm:^7.28.5" - "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" + "@babel/plugin-transform-dotall-regex": "npm:^7.28.6" "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.29.0" "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" - "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.0" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.5" + "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.6" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.6" "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" "@babel/plugin-transform-for-of": "npm:^7.27.1" "@babel/plugin-transform-function-name": "npm:^7.27.1" - "@babel/plugin-transform-json-strings": "npm:^7.27.1" + "@babel/plugin-transform-json-strings": "npm:^7.28.6" "@babel/plugin-transform-literals": "npm:^7.27.1" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.5" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.6" "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" "@babel/plugin-transform-modules-amd": "npm:^7.27.1" - "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" - "@babel/plugin-transform-modules-systemjs": "npm:^7.28.5" + "@babel/plugin-transform-modules-commonjs": "npm:^7.28.6" + "@babel/plugin-transform-modules-systemjs": "npm:^7.29.0" "@babel/plugin-transform-modules-umd": "npm:^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.29.0" "@babel/plugin-transform-new-target": "npm:^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" - "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" - "@babel/plugin-transform-object-rest-spread": "npm:^7.28.4" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.28.6" + "@babel/plugin-transform-numeric-separator": "npm:^7.28.6" + "@babel/plugin-transform-object-rest-spread": "npm:^7.28.6" "@babel/plugin-transform-object-super": "npm:^7.27.1" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" - "@babel/plugin-transform-optional-chaining": "npm:^7.28.5" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.28.6" + "@babel/plugin-transform-optional-chaining": "npm:^7.28.6" "@babel/plugin-transform-parameters": "npm:^7.27.7" - "@babel/plugin-transform-private-methods": "npm:^7.27.1" - "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" + "@babel/plugin-transform-private-methods": "npm:^7.28.6" + "@babel/plugin-transform-private-property-in-object": "npm:^7.28.6" "@babel/plugin-transform-property-literals": "npm:^7.27.1" - "@babel/plugin-transform-regenerator": "npm:^7.28.4" - "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" + "@babel/plugin-transform-regenerator": "npm:^7.29.0" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.28.6" "@babel/plugin-transform-reserved-words": "npm:^7.27.1" "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" - "@babel/plugin-transform-spread": "npm:^7.27.1" + "@babel/plugin-transform-spread": "npm:^7.28.6" "@babel/plugin-transform-sticky-regex": "npm:^7.27.1" "@babel/plugin-transform-template-literals": "npm:^7.27.1" "@babel/plugin-transform-typeof-symbol": "npm:^7.27.1" "@babel/plugin-transform-unicode-escapes": "npm:^7.27.1" - "@babel/plugin-transform-unicode-property-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.28.6" "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" - "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.28.6" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2: "npm:^0.4.14" - babel-plugin-polyfill-corejs3: "npm:^0.13.0" - babel-plugin-polyfill-regenerator: "npm:^0.6.5" - core-js-compat: "npm:^3.43.0" + babel-plugin-polyfill-corejs2: "npm:^0.4.15" + babel-plugin-polyfill-corejs3: "npm:^0.14.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.6" + core-js-compat: "npm:^3.48.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/e9a5136a7e34553cc70dd6594716144678a2e9ecc971caf6885c380c38fcbed8b387f3af418c9aa4b2d2765964bb4e8a2e14b709c2f165eec6ed13bda32587ea + checksum: 10/211b33ec8644636275f61aa273071d8cbc2a6bb28d82ad246e3831a6aa7d96c610a55b5140bcd21be7f71fb04c3aa4a10eb08665fb5505e153cfdd8dbc8c1c1c languageName: node linkType: hard @@ -1831,24 +1696,13 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.25.0": - version: 7.28.4 - resolution: "@babel/runtime@npm:7.28.4" - checksum: 10/6c9a70452322ea80b3c9b2a412bcf60771819213a67576c8cec41e88a95bb7bf01fc983754cda35dc19603eef52df22203ccbf7777b9d6316932f9fb77c25163 - languageName: node - linkType: hard - -"@babel/template@npm:^7.0.0, @babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": - version: 7.27.2 - resolution: "@babel/template@npm:7.27.2" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/parser": "npm:^7.27.2" - "@babel/types": "npm:^7.27.1" - checksum: 10/fed15a84beb0b9340e5f81566600dbee5eccd92e4b9cc42a944359b1aa1082373391d9d5fc3656981dff27233ec935d0bc96453cf507f60a4b079463999244d8 + version: 7.28.6 + resolution: "@babel/runtime@npm:7.28.6" + checksum: 10/fbcd439cb74d4a681958eb064c509829e3f46d8a4bfaaf441baa81bb6733d1e680bccc676c813883d7741bcaada1d0d04b15aa320ef280b5734e2192b50decf9 languageName: node linkType: hard -"@babel/template@npm:^7.28.6": +"@babel/template@npm:^7.0.0, @babel/template@npm:^7.25.0, @babel/template@npm:^7.28.6, @babel/template@npm:^7.3.3": version: 7.28.6 resolution: "@babel/template@npm:7.28.6" dependencies: @@ -1859,22 +1713,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/traverse@npm:7.28.5" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.5" - "@babel/helper-globals": "npm:^7.28.0" - "@babel/parser": "npm:^7.28.5" - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.5" - debug: "npm:^4.3.1" - checksum: 10/1fce426f5ea494913c40f33298ce219708e703f71cac7ac045ebde64b5a7b17b9275dfa4e05fb92c3f123136913dff62c8113172f4a5de66dab566123dbe7437 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": +"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5, @babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": version: 7.29.0 resolution: "@babel/traverse@npm:7.29.0" dependencies: @@ -1889,17 +1728,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.26.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.28.5 - resolution: "@babel/types@npm:7.28.5" - dependencies: - "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.28.5" - checksum: 10/4256bb9fb2298c4f9b320bde56e625b7091ea8d2433d98dcf524d4086150da0b6555aabd7d0725162670614a9ac5bf036d1134ca13dedc9707f988670f1362d7 - languageName: node - linkType: hard - -"@babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.26.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.5, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.29.0 resolution: "@babel/types@npm:7.29.0" dependencies: @@ -2036,9 +1865,9 @@ __metadata: linkType: hard "@cspell/dict-aws@npm:^4.0.10": - version: 4.0.16 - resolution: "@cspell/dict-aws@npm:4.0.16" - checksum: 10/2b2e48a2d06f9c91b9422428247ae265c7b226bec98ec675d743193c1bbe2244c2fc48e97fe109cee7db0619cfe51ea9c0d319602b2c5c483a89eeaa610bc779 + version: 4.0.17 + resolution: "@cspell/dict-aws@npm:4.0.17" + checksum: 10/9f724e385ffe76a04cb3cd081bf301191c56b31273f5619507ca6baabf8fa00fbe27571d66e89016cd0bbc68cbf97a9920b5247e90e73a60e2eeedb87e1b86c6 languageName: node linkType: hard @@ -2052,9 +1881,9 @@ __metadata: linkType: hard "@cspell/dict-companies@npm:^3.1.15": - version: 3.2.7 - resolution: "@cspell/dict-companies@npm:3.2.7" - checksum: 10/b2754f6328c11d9d17ddbaa217a358280cf5a2b73378e161e62f70c50d51a67d456b6bdaedd63af8024cae52bca96b27a7d052d718d4449de47b2b01113e629b + version: 3.2.10 + resolution: "@cspell/dict-companies@npm:3.2.10" + checksum: 10/e3e6be70cef9be8fa7da86ed2ce1150545062175f6335d30de9bcac2cf509fbfa82d5428333129be823698870df48f78abbff4c6ee50b465efb1951adaa4cdf3 languageName: node linkType: hard @@ -2073,51 +1902,51 @@ __metadata: linkType: hard "@cspell/dict-csharp@npm:^4.0.6": - version: 4.0.7 - resolution: "@cspell/dict-csharp@npm:4.0.7" - checksum: 10/bfc429fc40585905a1b8754eaf1c70fd59911250364bc8ec5f1ce81dfb38cfb27421a8ed4052d81b40832dfb26de8d4e63656a200c5a6459ad0fa9da8e8bb6ae + version: 4.0.8 + resolution: "@cspell/dict-csharp@npm:4.0.8" + checksum: 10/5acb41c32cdce8c3bda7ea74dfb833db92c403813a57373b8781d4aaede005be1342ad946a16139d47162f2405b90869eee477fc033b7cc10d731bb3ff9547db languageName: node linkType: hard "@cspell/dict-css@npm:^4.0.17": - version: 4.0.18 - resolution: "@cspell/dict-css@npm:4.0.18" - checksum: 10/1d829b7e2b3bb7bea5daca179d4de847b7aac761a68984783b226132c986e42504cf4d6410ae69b3103afa4779859c2860810b5373d6bc80709637128c7d397c + version: 4.0.19 + resolution: "@cspell/dict-css@npm:4.0.19" + checksum: 10/293edf2d26b33d85ea5828b499e77e5a6a471f7c8ac754adf7c574dac62363f10d46d1de47afc20b8904554212834b671bbd8e98669e59908856ca1c46c787db languageName: node linkType: hard "@cspell/dict-dart@npm:^2.3.0": - version: 2.3.1 - resolution: "@cspell/dict-dart@npm:2.3.1" - checksum: 10/79764a0499a0267c34febc368ae8dfb47ebe58a79373e48070581a3a8095102a71e8cb88711b7dd431ca559d0d0554803ca2d53051e325903459a670f56c984f + version: 2.3.2 + resolution: "@cspell/dict-dart@npm:2.3.2" + checksum: 10/d4bf20c272110ad6537824199de1224447b798abf225fd3af2b73d8eca4d9e64eac3c2580940d93b07d74744d8e35aea7f2f547ac3ef3e73b0499bf36bb50f74 languageName: node linkType: hard -"@cspell/dict-data-science@npm:^2.0.12, @cspell/dict-data-science@npm:^2.0.8": - version: 2.0.12 - resolution: "@cspell/dict-data-science@npm:2.0.12" - checksum: 10/2eb3492c9de93a5fea57f81bb3daac80c5174dbac5ae981782d27b56438fbc10d96a06973fa07051e5eaf8489a5ce02c37dce5158d601388d5df85c6c0a2b055 +"@cspell/dict-data-science@npm:^2.0.13, @cspell/dict-data-science@npm:^2.0.8": + version: 2.0.13 + resolution: "@cspell/dict-data-science@npm:2.0.13" + checksum: 10/d5aee1a87dace4a401ebe7d9327773a8b21f1e0ae5ce4307f302d60857539f964de334a98c772d6dd88c60e3f3056b9bdd3774fe1bcacb2dbaca9160aef52725 languageName: node linkType: hard "@cspell/dict-django@npm:^4.1.4": - version: 4.1.5 - resolution: "@cspell/dict-django@npm:4.1.5" - checksum: 10/cc0181e0e8e9ede5b4efc11c5a141cf54122721b204c956a7e270573adf1e8ca14e6f80e51b5c071154da17188056b5f4cc3da1f68f84ff2162b62abef3e3ebc + version: 4.1.6 + resolution: "@cspell/dict-django@npm:4.1.6" + checksum: 10/0898787758a64de3a9b9a74febc1e789de30e01403c3c87fe4d99ce992419113297a4a6ddf982c3504f51c4382dd60467288da63cc87e27506f3daba8c03b15a languageName: node linkType: hard "@cspell/dict-docker@npm:^1.1.13": - version: 1.1.16 - resolution: "@cspell/dict-docker@npm:1.1.16" - checksum: 10/dc126d94203fa23c0a9d1466fa634b1ee4b4770d5762dbbbc868198318cf8d860de26d1632700a3e613eb81d27d0e46c72cbf74ba0cca5cca0032dbf056ae472 + version: 1.1.17 + resolution: "@cspell/dict-docker@npm:1.1.17" + checksum: 10/438cc04e0ebcab53b49cecee7ae02c743733b8ec7df4b75075c31574f764aa60353a3cb0db3fb8c80271339d4fc0c1d05864bb6b1ac14891cacfd4098f0b0dce languageName: node linkType: hard "@cspell/dict-dotnet@npm:^5.0.9": - version: 5.0.10 - resolution: "@cspell/dict-dotnet@npm:5.0.10" - checksum: 10/ce9d101cfd1af390e49ac114dd576172a932e95a5e4590289a246477ff6d14711efa5dd794188affed13c45050e0ecda4cf95cd26019c5c04dce33580effdc88 + version: 5.0.12 + resolution: "@cspell/dict-dotnet@npm:5.0.12" + checksum: 10/a49d2f284ce3c3209b9a121dbae174121dc4285300fd8f3babb69da38d2edbabffcbf4c6029e598a2a760be14c29805f57f81c49909ffaa3a3416f0358eb512f languageName: node linkType: hard @@ -2129,9 +1958,9 @@ __metadata: linkType: hard "@cspell/dict-en-common-misspellings@npm:^2.0.10": - version: 2.1.8 - resolution: "@cspell/dict-en-common-misspellings@npm:2.1.8" - checksum: 10/fe8764a14b28269956650092eea34df94ce4e903ff5178e3a504283414cc2ae3b2afc2e2716317d2adde6fe13bc5189eae3577901921f5ef462af1ac2a898b8c + version: 2.1.12 + resolution: "@cspell/dict-en-common-misspellings@npm:2.1.12" + checksum: 10/2f3d608c241694c673cfd0191274554270c82ca18953d84a3224fe7122fe5cb68261ab06f13ff90466266da4835ce1a2f266790f67a19b8f2f1928b3a1d22354 languageName: node linkType: hard @@ -2143,16 +1972,16 @@ __metadata: linkType: hard "@cspell/dict-en_us@npm:^4.4.3": - version: 4.4.24 - resolution: "@cspell/dict-en_us@npm:4.4.24" - checksum: 10/b7a6525d5c6153610e8722266d7d8cbbf4818c741992977a4b8099b0ff7196824b2bb509deba9de66fc2414479bfc4db2f41640e9748e048edd99058aaae2a42 + version: 4.4.29 + resolution: "@cspell/dict-en_us@npm:4.4.29" + checksum: 10/537f254cb34484f6b44a9c935ad8ad32924c950b338c23ee2494c26a65b8eb06cfa16452ef5bf3102322ec4be3a55563a582d8efd3f651b64c41b5ee16f90738 languageName: node linkType: hard "@cspell/dict-filetypes@npm:^3.0.11": - version: 3.0.14 - resolution: "@cspell/dict-filetypes@npm:3.0.14" - checksum: 10/545eee0cb4a80491a1fbb03b964d31569379a775528b090c992ba72d3ae6fe4dfae5c484b5a50226f8e52979238875476c688937096486bebfa0c8f3a72da499 + version: 3.0.16 + resolution: "@cspell/dict-filetypes@npm:3.0.16" + checksum: 10/30f05d175b96cd4bb6d9504af929255987aa922e29223eb3fc00c712a375c0843903935b8c648fe514011904386b7c652ac87a197aa8b65f47695a6e96d3e293 languageName: node linkType: hard @@ -2178,9 +2007,9 @@ __metadata: linkType: hard "@cspell/dict-fullstack@npm:^3.2.6": - version: 3.2.7 - resolution: "@cspell/dict-fullstack@npm:3.2.7" - checksum: 10/cdb69a00663a34cb611c8f3e8f26651a0aa8e50d59de6ebb85724cfdd239382398ca35636bbe64f3573e1da795c15ace297dbf47cb83747439b109f16bab593d + version: 3.2.8 + resolution: "@cspell/dict-fullstack@npm:3.2.8" + checksum: 10/d38cd753542866308ef31b586bc2b58777ff1b08dc094256cebe10b31acf2820614966c3e3391897ea3f5a1958b80499743495fa9b33a0be034070ae21f87781 languageName: node linkType: hard @@ -2192,16 +2021,16 @@ __metadata: linkType: hard "@cspell/dict-git@npm:^3.0.4": - version: 3.0.7 - resolution: "@cspell/dict-git@npm:3.0.7" - checksum: 10/bf88770be43c1bd4c2bea6737edd20939a78b7c0e9ff28e06490394f056637a27f49a6716e0f6ed845eaf2fc1afa85d4bd7cfafb56e3d4dfeb491b49669fd376 + version: 3.1.0 + resolution: "@cspell/dict-git@npm:3.1.0" + checksum: 10/d64ac12882bfff6f02755bf4eaf47d9e340edcf36867a83d5df106dba6e13ab7ccc519c48f12f8312324a4ac674ff468a8499b4ebd9cf264af97f545597614eb languageName: node linkType: hard "@cspell/dict-golang@npm:^6.0.20": - version: 6.0.24 - resolution: "@cspell/dict-golang@npm:6.0.24" - checksum: 10/4c1b4ac025d389759458ab31e73b9cb7a84fa54147f97a71b93f06e69330d9b02af1ba36a4828af1891049e3bb11f659f2c2da53a947dbfe0235ed1d5d26faed + version: 6.0.26 + resolution: "@cspell/dict-golang@npm:6.0.26" + checksum: 10/b229f7e5b78b2839eed501e37719546cee787426f323a4a62feaec1db15422482b8b4d97a126c0c6342c2bf1c6f6dc12ac4e05aa245de4b768c5753d2affe9d4 languageName: node linkType: hard @@ -2220,16 +2049,16 @@ __metadata: linkType: hard "@cspell/dict-html-symbol-entities@npm:^4.0.3": - version: 4.0.4 - resolution: "@cspell/dict-html-symbol-entities@npm:4.0.4" - checksum: 10/1898fc84496526e9c54e125369f3c87412839aee3e00da8aee3fee1c1165d4f2e7944833398b08f07ee58e817999af462f254e9ce06b06323fd665cbe6d01a3e + version: 4.0.5 + resolution: "@cspell/dict-html-symbol-entities@npm:4.0.5" + checksum: 10/050f57152c873bf9725dfec3e7c6b6ce6a0c178ee084fcad48be186bcc965caabf10462d47fc3c9adcae8d5d8d91dc3cf739ab913d2ed7f5f50abec215e9851b languageName: node linkType: hard "@cspell/dict-html@npm:^4.0.11": - version: 4.0.13 - resolution: "@cspell/dict-html@npm:4.0.13" - checksum: 10/856a73c5888d1d4904c9403f7852ec5ab9ac1fb8683af838c5be136691095739f892110974f4266c68f61f51c377b907d0404b532523cbf83ed2b38d330dfd2f + version: 4.0.14 + resolution: "@cspell/dict-html@npm:4.0.14" + checksum: 10/b6047177b6012d467926c27777391cc3f6ebc522c6f4dce01e58a8100dfac61d5cecefc59ba5994728d41c7480d7c9d994d0f8673197740526f6afbed544094a languageName: node linkType: hard @@ -2290,42 +2119,42 @@ __metadata: linkType: hard "@cspell/dict-markdown@npm:^2.0.10": - version: 2.0.13 - resolution: "@cspell/dict-markdown@npm:2.0.13" + version: 2.0.14 + resolution: "@cspell/dict-markdown@npm:2.0.14" peerDependencies: - "@cspell/dict-css": ^4.0.18 - "@cspell/dict-html": ^4.0.13 - "@cspell/dict-html-symbol-entities": ^4.0.4 + "@cspell/dict-css": ^4.0.19 + "@cspell/dict-html": ^4.0.14 + "@cspell/dict-html-symbol-entities": ^4.0.5 "@cspell/dict-typescript": ^3.2.3 - checksum: 10/7f1d131301ff7128b974ab35498fe2842584626c2c8f45a11a30fc245439417caaa7a615611ce324f834648da3593fd5c305999af157d317973c2f2c0a2a8849 + checksum: 10/7ca267a7089bcf63aebb94b2934220aa81e1b747427e7c7998fc6852818a726da8ccaf380e0b76314cfc57504308446361dc6f1daef3cd73f3d60479563c636a languageName: node linkType: hard "@cspell/dict-monkeyc@npm:^1.0.10": - version: 1.0.11 - resolution: "@cspell/dict-monkeyc@npm:1.0.11" - checksum: 10/6e896fd9596261ece639cdad4d03291f4faf92ed27d9257aae1f34f075b13a865287734d170a2e9ea228ac2b7de03eaaec795284b945c8a96ac24684ad56ba7a + version: 1.0.12 + resolution: "@cspell/dict-monkeyc@npm:1.0.12" + checksum: 10/9c952968b50a44d5860f9d9ebce49a71d433f1411d7a074711db176eedaaaf810c0c01bb5e32bc66bb08953b8d4a2c8a19bef394407603d18023d1242a882470 languageName: node linkType: hard "@cspell/dict-node@npm:^5.0.7": - version: 5.0.8 - resolution: "@cspell/dict-node@npm:5.0.8" - checksum: 10/6a008c8b82021e24124f619efdd485683f1dfb3c37ec4fe2b645e8d8002270c221869a19a5e2d17a978acb8d60292e5c5dd056aa0dd35b3e4fedf87e7b8afae4 + version: 5.0.9 + resolution: "@cspell/dict-node@npm:5.0.9" + checksum: 10/b934c9c94e230742a612f3133cc81a62af4073e2f8c50855d37e90bad7860200600b8492988d70f3ba13a055e357554a4abf71f0a437650ae24e5b300d6615ee languageName: node linkType: hard "@cspell/dict-npm@npm:^5.2.1": - version: 5.2.25 - resolution: "@cspell/dict-npm@npm:5.2.25" - checksum: 10/e25141f0f52567dbe09263dd624966fe27d472ccef20f2d5ffdd2b844febe9285d05d2db4a5e501bf075557ba01780807f2ef0c2e6d1f44d095d2420abfd0a22 + version: 5.2.35 + resolution: "@cspell/dict-npm@npm:5.2.35" + checksum: 10/c98bddeb07203be6be2d41dff724779c35459e1e1a1f9c552dd5224b8862a21cb7c13fd32236ba62ad20df0f99b05f8d409a2330c047aaae2ba94dbdf8312984 languageName: node linkType: hard "@cspell/dict-php@npm:^4.0.14": - version: 4.1.0 - resolution: "@cspell/dict-php@npm:4.1.0" - checksum: 10/64ab278a581822381335df5dcf830c449a63e5a5fba5c0bbea4f43a36bd8039b3323392b386be2fc5b751bd6fef0061b338d5ae28d7c12214f2c2def0dcce260 + version: 4.1.1 + resolution: "@cspell/dict-php@npm:4.1.1" + checksum: 10/e81bed158736ea6f2db8d9e116c16cc3f46b455bb3ed673a100166cfee340be38d0cd9bc3f39c5590364c0bb2bd472755f5e4c65a20787d2d7df749ff43f49d1 languageName: node linkType: hard @@ -2337,18 +2166,18 @@ __metadata: linkType: hard "@cspell/dict-public-licenses@npm:^2.0.13": - version: 2.0.15 - resolution: "@cspell/dict-public-licenses@npm:2.0.15" - checksum: 10/a8580441c964a8c3ce4c4fed74189fa5752eb98e56baeb2608753e4deefb202c8f9d9f1869e17c5f2f1fc7bb1976854525ac50750109bb377b4cfa0a4eb12fe2 + version: 2.0.16 + resolution: "@cspell/dict-public-licenses@npm:2.0.16" + checksum: 10/1f227d3d083bdec495d19050347897cf2fe58d3c77143d233a41b300e00981790b46361a651eb592ff60dc8bc772db3f16c0c89cc295ea2b446237031f48efb1 languageName: node linkType: hard "@cspell/dict-python@npm:^4.2.17": - version: 4.2.23 - resolution: "@cspell/dict-python@npm:4.2.23" + version: 4.2.25 + resolution: "@cspell/dict-python@npm:4.2.25" dependencies: - "@cspell/dict-data-science": "npm:^2.0.12" - checksum: 10/ded89d5fd843bf1fe0e3ae3a7386db63c66c00a90d5a122fcff4206cb4c6dec9dfa463fcc841553a3d93b102da62ff9a03aaf359876cc9aec5e2a3c897f04f9c + "@cspell/dict-data-science": "npm:^2.0.13" + checksum: 10/fcbbc2db9a1ff01e16e33df10c1f6575e65eece8b13b1ef3a45481aeaafa6250ad28358a6ec787d4d7a6061907b338c7adb52bc882502cd6ae8904d20b60f10d languageName: node linkType: hard @@ -2360,23 +2189,23 @@ __metadata: linkType: hard "@cspell/dict-ruby@npm:^5.0.8": - version: 5.0.9 - resolution: "@cspell/dict-ruby@npm:5.0.9" - checksum: 10/57a752ff19f9484a042e859254eb6d487b46266f374faeb17e257b3583d94fbd908c0bd308e2a7d3b0169839cdd5a6d9fc12563955b69f26e8667acc43fbfd53 + version: 5.1.0 + resolution: "@cspell/dict-ruby@npm:5.1.0" + checksum: 10/afe89daa54a6c3be62686f4f74fe924dabb4077e9aead71bf26e211885d068066df414857f27da258a130e2e06ecb5eac394225bc120607bebcb08746b6188f9 languageName: node linkType: hard "@cspell/dict-rust@npm:^4.0.11": - version: 4.0.12 - resolution: "@cspell/dict-rust@npm:4.0.12" - checksum: 10/ba928f5538e09887f715713a6899d09ed7b1663c85d33c766adbaf22a95e01fa71d3736d5ff17c3c0f0a387c43756702fb1529e62e714ddec0df6cde9617ad20 + version: 4.1.2 + resolution: "@cspell/dict-rust@npm:4.1.2" + checksum: 10/f618727d8c3af5f3d5e74eca04e9b0685f525d217206c40faf9803aa4fd7b9defc9b5174bff17411ef2d935df7ebe66cb2e38f34b6887a118908e10a5c834376 languageName: node linkType: hard "@cspell/dict-scala@npm:^5.0.7": - version: 5.0.8 - resolution: "@cspell/dict-scala@npm:5.0.8" - checksum: 10/f9d8d748a66cea454fbe3d6dc51dde03d58cf2a28a4a64698ac4022a91b65503b2b6f74206421488d4396949d9b09477699734ca05e28a79a9c2e6a39f65e2c5 + version: 5.0.9 + resolution: "@cspell/dict-scala@npm:5.0.9" + checksum: 10/9b095e052e4c72fe0d0657f11f654cac6e8bbf6f6ac2043e8f1de8641aa7cad46b94416d70aa9dbd8556b1c1cfd0ac522868867e911a707e7b0e2cbcfcbfb5e2 languageName: node linkType: hard @@ -2388,9 +2217,9 @@ __metadata: linkType: hard "@cspell/dict-software-terms@npm:^5.0.5": - version: 5.1.15 - resolution: "@cspell/dict-software-terms@npm:5.1.15" - checksum: 10/7bcdaf626936c85163b4e0153a95d5318da207446a6c9f2ccd705a3f0a49cada14ec678153f9b691f2fbcb2f702f54828c3ce2d4c193d319ebd7407684dc6f30 + version: 5.1.23 + resolution: "@cspell/dict-software-terms@npm:5.1.23" + checksum: 10/69f9149df10071ae0901d71f01a6475f329cd2571973f6d356ebf210e0405a935ec28d5b07d58eff0a861a58e59406c96e7f608ed677ec1126ade90cf6d9f118 languageName: node linkType: hard @@ -2482,15 +2311,15 @@ __metadata: linkType: hard "@dr.pogodin/react-native-fs@npm:^2.36.2": - version: 2.36.2 - resolution: "@dr.pogodin/react-native-fs@npm:2.36.2" + version: 2.37.0 + resolution: "@dr.pogodin/react-native-fs@npm:2.37.0" dependencies: buffer: "npm:^6.0.3" http-status-codes: "npm:^2.3.0" peerDependencies: react: "*" react-native: "*" - checksum: 10/6a4b1c324386c455e01ccf45daf80474364079bc6495f0a65c1468e4e15607951754b81d9d720fb635a8caba5ba94b34719d0140357ce8e168172583e09156d4 + checksum: 10/c66c03a9e814c0c4e3c9b575bc1dc7aedee18e815f45860541b94935cbfdfae8ccb71964c359c420498d120b00a1b997bf5e4739da58a8d681ad33df1d76ef03 languageName: node linkType: hard @@ -2532,13 +2361,13 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.9.0 - resolution: "@eslint-community/eslint-utils@npm:4.9.0" + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10/89b1eb3137e14c379865e60573f524fcc0ee5c4b0c7cd21090673e75e5a720f14b92f05ab2d02704c2314b67e67b6f96f3bb209ded6b890ced7b667aa4bf1fa2 + checksum: 10/863b5467868551c9ae34d03eefe634633d08f623fc7b19d860f8f26eb6f303c1a5934253124163bee96181e45ed22bf27473dccc295937c3078493a4a8c9eddd languageName: node linkType: hard @@ -2583,91 +2412,9 @@ __metadata: languageName: node linkType: hard -"@expo/cli@npm:54.0.18": - version: 54.0.18 - resolution: "@expo/cli@npm:54.0.18" - dependencies: - "@0no-co/graphql.web": "npm:^1.0.8" - "@expo/code-signing-certificates": "npm:^0.0.5" - "@expo/config": "npm:~12.0.11" - "@expo/config-plugins": "npm:~54.0.3" - "@expo/devcert": "npm:^1.2.1" - "@expo/env": "npm:~2.0.8" - "@expo/image-utils": "npm:^0.8.8" - "@expo/json-file": "npm:^10.0.8" - "@expo/metro": "npm:~54.1.0" - "@expo/metro-config": "npm:~54.0.10" - "@expo/osascript": "npm:^2.3.8" - "@expo/package-manager": "npm:^1.9.9" - "@expo/plist": "npm:^0.4.8" - "@expo/prebuild-config": "npm:^54.0.7" - "@expo/schema-utils": "npm:^0.1.8" - "@expo/spawn-async": "npm:^1.7.2" - "@expo/ws-tunnel": "npm:^1.0.1" - "@expo/xcpretty": "npm:^4.3.0" - "@react-native/dev-middleware": "npm:0.81.5" - "@urql/core": "npm:^5.0.6" - "@urql/exchange-retry": "npm:^1.3.0" - accepts: "npm:^1.3.8" - arg: "npm:^5.0.2" - better-opn: "npm:~3.0.2" - bplist-creator: "npm:0.1.0" - bplist-parser: "npm:^0.3.1" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.3.0" - compression: "npm:^1.7.4" - connect: "npm:^3.7.0" - debug: "npm:^4.3.4" - env-editor: "npm:^0.4.1" - expo-server: "npm:^1.0.5" - freeport-async: "npm:^2.0.0" - getenv: "npm:^2.0.0" - glob: "npm:^13.0.0" - lan-network: "npm:^0.1.6" - minimatch: "npm:^9.0.0" - node-forge: "npm:^1.3.1" - npm-package-arg: "npm:^11.0.0" - ora: "npm:^3.4.0" - picomatch: "npm:^3.0.1" - pretty-bytes: "npm:^5.6.0" - pretty-format: "npm:^29.7.0" - progress: "npm:^2.0.3" - prompts: "npm:^2.3.2" - qrcode-terminal: "npm:0.11.0" - require-from-string: "npm:^2.0.2" - requireg: "npm:^0.2.2" - resolve: "npm:^1.22.2" - resolve-from: "npm:^5.0.0" - resolve.exports: "npm:^2.0.3" - semver: "npm:^7.6.0" - send: "npm:^0.19.0" - slugify: "npm:^1.3.4" - source-map-support: "npm:~0.5.21" - stacktrace-parser: "npm:^0.1.10" - structured-headers: "npm:^0.4.1" - tar: "npm:^7.5.2" - terminal-link: "npm:^2.1.1" - undici: "npm:^6.18.2" - wrap-ansi: "npm:^7.0.0" - ws: "npm:^8.12.1" - peerDependencies: - expo: "*" - expo-router: "*" - react-native: "*" - peerDependenciesMeta: - expo-router: - optional: true - react-native: - optional: true - bin: - expo-internal: build/bin/cli - checksum: 10/9a84554d120759be74ee84e2d9e31d7279e67c5992ace7ba51871815169b552f3b30cb6715a9c3685717bde32756e45dbeae6d5200f75b7d2ea877f5f80172e3 - languageName: node - linkType: hard - -"@expo/cli@npm:54.0.22": - version: 54.0.22 - resolution: "@expo/cli@npm:54.0.22" +"@expo/cli@npm:54.0.23": + version: 54.0.23 + resolution: "@expo/cli@npm:54.0.23" dependencies: "@0no-co/graphql.web": "npm:^1.0.8" "@expo/code-signing-certificates": "npm:^0.0.6" @@ -2743,17 +2490,7 @@ __metadata: optional: true bin: expo-internal: build/bin/cli - checksum: 10/c20c89f5737e1f5b055567d6b560a920ea52ed17cab73fd5ab59d8f1640c62f7a9915d9d69eb0c5ebc85bd04505e3ac32ba329ab8f1e15da8a9fcd6c6dd8d808 - languageName: node - linkType: hard - -"@expo/code-signing-certificates@npm:^0.0.5": - version: 0.0.5 - resolution: "@expo/code-signing-certificates@npm:0.0.5" - dependencies: - node-forge: "npm:^1.2.1" - nullthrows: "npm:^1.1.1" - checksum: 10/6783721e2eafff5547500eaf99bee54641f076dc7221e52b48f1494f993040d779fe13ae7d95d3874c483eb545cafbf692315e2da0b0fc24e7a477b84e289617 + checksum: 10/9a41c55aa7f628ad44048c9f41cd8d7f4f73a8bfc01adaa956ddaae87d332ae979eadb52bdab894ef5b1c9b5722486ccdb999057d8b9eed392c827f476feb79f languageName: node linkType: hard @@ -2766,28 +2503,6 @@ __metadata: languageName: node linkType: hard -"@expo/config-plugins@npm:~54.0.3": - version: 54.0.3 - resolution: "@expo/config-plugins@npm:54.0.3" - dependencies: - "@expo/config-types": "npm:^54.0.9" - "@expo/json-file": "npm:~10.0.7" - "@expo/plist": "npm:^0.4.7" - "@expo/sdk-runtime-versions": "npm:^1.0.0" - chalk: "npm:^4.1.2" - debug: "npm:^4.3.5" - getenv: "npm:^2.0.0" - glob: "npm:^13.0.0" - resolve-from: "npm:^5.0.0" - semver: "npm:^7.5.4" - slash: "npm:^3.0.0" - slugify: "npm:^1.6.6" - xcode: "npm:^3.0.1" - xml2js: "npm:0.6.0" - checksum: 10/5eb33583eba8ba87ad19f4775749864fd72fe251be1b9bb1b765f0499fd36d21a7dd936f53c36368454726b72b0a8ea99b1e315bd6c005de1f4541bafb57d1c6 - languageName: node - linkType: hard - "@expo/config-plugins@npm:~54.0.4": version: 54.0.4 resolution: "@expo/config-plugins@npm:54.0.4" @@ -2817,34 +2532,6 @@ __metadata: languageName: node linkType: hard -"@expo/config-types@npm:^54.0.9": - version: 54.0.9 - resolution: "@expo/config-types@npm:54.0.9" - checksum: 10/572ddcf9b8a3d785c0cb0275fbcd2cc4f7004191cda5fa387cf2babfcea79ae04b9d68bf459a9b43538ad35ce09955dfa5e6ebafb6050758cd596cb6e61885b8 - languageName: node - linkType: hard - -"@expo/config@npm:~12.0.11": - version: 12.0.11 - resolution: "@expo/config@npm:12.0.11" - dependencies: - "@babel/code-frame": "npm:~7.10.4" - "@expo/config-plugins": "npm:~54.0.3" - "@expo/config-types": "npm:^54.0.9" - "@expo/json-file": "npm:^10.0.7" - deepmerge: "npm:^4.3.1" - getenv: "npm:^2.0.0" - glob: "npm:^13.0.0" - require-from-string: "npm:^2.0.2" - resolve-from: "npm:^5.0.0" - resolve-workspace-root: "npm:^2.0.0" - semver: "npm:^7.6.0" - slugify: "npm:^1.3.4" - sucrase: "npm:~3.35.1" - checksum: 10/c749457b50a5c2531c5fb7d29c343a7761081f7218199ab65524ff8ab9edb36f5903cde6a35fbd95b792e537a7c4183362bb9061a1bdedff8aae4d731171e4f5 - languageName: node - linkType: hard - "@expo/config@npm:~12.0.13": version: 12.0.13 resolution: "@expo/config@npm:12.0.13" @@ -2893,16 +2580,16 @@ __metadata: languageName: node linkType: hard -"@expo/env@npm:~2.0.7, @expo/env@npm:~2.0.8": - version: 2.0.8 - resolution: "@expo/env@npm:2.0.8" +"@expo/env@npm:~2.0.8": + version: 2.0.11 + resolution: "@expo/env@npm:2.0.11" dependencies: chalk: "npm:^4.0.0" debug: "npm:^4.3.4" dotenv: "npm:~16.4.5" dotenv-expand: "npm:~11.0.6" getenv: "npm:^2.0.0" - checksum: 10/d440e0c7d8f4d438a9f82794435c315b63fc18a9b251ee7238f150255634d2786874cd85ff78589eb0488125d41d57a9b055fb1a25c4e06a08a0330d809e78cd + checksum: 10/bfb307d6b35d47c58f82424c85543325370bbdc0f303cdd4ddfe5d6854e0386ad72166fec6e1da633fc7cb3b0915d7c40642c49773ae31e6faed13569d1b601c languageName: node linkType: hard @@ -2928,8 +2615,8 @@ __metadata: linkType: hard "@expo/image-utils@npm:^0.8.8": - version: 0.8.8 - resolution: "@expo/image-utils@npm:0.8.8" + version: 0.8.12 + resolution: "@expo/image-utils@npm:0.8.12" dependencies: "@expo/spawn-async": "npm:^1.7.2" chalk: "npm:^4.0.0" @@ -2937,65 +2624,18 @@ __metadata: jimp-compact: "npm:0.16.1" parse-png: "npm:^2.1.0" resolve-from: "npm:^5.0.0" - resolve-global: "npm:^1.0.0" semver: "npm:^7.6.0" - temp-dir: "npm:~2.0.0" - unique-string: "npm:~2.0.0" - checksum: 10/f7a2d81785e81e3ba5cabf1ae9acf3923b9320345b1761dfd6ebaaa1dc77f7b08e5a86aead2657223d47b65dec96fb70f012b149149dbf202de4809e5920baf5 - languageName: node - linkType: hard - -"@expo/json-file@npm:^10.0.7, @expo/json-file@npm:^10.0.8, @expo/json-file@npm:~10.0.7": - version: 10.0.8 - resolution: "@expo/json-file@npm:10.0.8" - dependencies: - "@babel/code-frame": "npm:~7.10.4" - json5: "npm:^2.2.3" - checksum: 10/d744edb72ea5a52d8829357fb2adb93be3181a522e3b6b8dc3a32a448c9c76eca603f8a390f1a126f4b16c21a470e0c1b2dde0bcd2cb799d97178e48df93a3b3 - languageName: node - linkType: hard - -"@expo/json-file@npm:^10.0.9, @expo/json-file@npm:~10.0.8": - version: 10.0.9 - resolution: "@expo/json-file@npm:10.0.9" - dependencies: - "@babel/code-frame": "npm:~7.10.4" - json5: "npm:^2.2.3" - checksum: 10/40c758fcdb37b35aa5ca43acd2c882763f073672ccaf53038bf94100a5c511ff90e0d1f900a4c49394ae968bdbabbedfc39f961b7d60a47abecb8ec55c6863da + checksum: 10/fb474558bb4009f39c640fb028a57cfae721e52dae0085bb2505390c6968d30cdc82eb195c15de82f30879c710104c08e60120de8f49613183437701f19dd363 languageName: node linkType: hard -"@expo/metro-config@npm:54.0.10, @expo/metro-config@npm:~54.0.10": - version: 54.0.10 - resolution: "@expo/metro-config@npm:54.0.10" +"@expo/json-file@npm:^10.0.12, @expo/json-file@npm:^10.0.8, @expo/json-file@npm:~10.0.8": + version: 10.0.12 + resolution: "@expo/json-file@npm:10.0.12" dependencies: "@babel/code-frame": "npm:^7.20.0" - "@babel/core": "npm:^7.20.0" - "@babel/generator": "npm:^7.20.5" - "@expo/config": "npm:~12.0.11" - "@expo/env": "npm:~2.0.7" - "@expo/json-file": "npm:~10.0.7" - "@expo/metro": "npm:~54.1.0" - "@expo/spawn-async": "npm:^1.7.2" - browserslist: "npm:^4.25.0" - chalk: "npm:^4.1.0" - debug: "npm:^4.3.2" - dotenv: "npm:~16.4.5" - dotenv-expand: "npm:~11.0.6" - getenv: "npm:^2.0.0" - glob: "npm:^13.0.0" - hermes-parser: "npm:^0.29.1" - jsc-safe-url: "npm:^0.2.4" - lightningcss: "npm:^1.30.1" - minimatch: "npm:^9.0.0" - postcss: "npm:~8.4.32" - resolve-from: "npm:^5.0.0" - peerDependencies: - expo: "*" - peerDependenciesMeta: - expo: - optional: true - checksum: 10/4a2fc2eea0cdc88f52d29d0a70fdb315bdbcc7b5300cb64afcc6a2a756db01449b3a60e401fc662ea13b441dc2287d1b492524ac7e6dece0c23d6d7105e2ebdf + json5: "npm:^2.2.3" + checksum: 10/547f5b9d1c5b10147ef0780d079d853e3b2e8ec0b09080420cb48592060a4399308622fd205aaec5e157c41d37c5b69dffa9aaa96c01fe444b0258f78c3bb85f languageName: node linkType: hard @@ -3053,26 +2693,6 @@ __metadata: languageName: node linkType: hard -"@expo/metro@npm:~54.1.0": - version: 54.1.0 - resolution: "@expo/metro@npm:54.1.0" - dependencies: - metro: "npm:0.83.2" - metro-babel-transformer: "npm:0.83.2" - metro-cache: "npm:0.83.2" - metro-cache-key: "npm:0.83.2" - metro-config: "npm:0.83.2" - metro-core: "npm:0.83.2" - metro-file-map: "npm:0.83.2" - metro-resolver: "npm:0.83.2" - metro-runtime: "npm:0.83.2" - metro-source-map: "npm:0.83.2" - metro-transform-plugins: "npm:0.83.2" - metro-transform-worker: "npm:0.83.2" - checksum: 10/219d1d3b94faa0cfa2af94a3c9c307e63bc1ede1e96da6d2e324c02275b882bd2a814730a4ab1842f8f0117316a0e66e0f02f83bba5620397096b5562f28da51 - languageName: node - linkType: hard - "@expo/metro@npm:~54.2.0": version: 54.2.0 resolution: "@expo/metro@npm:54.2.0" @@ -3096,44 +2716,29 @@ __metadata: linkType: hard "@expo/osascript@npm:^2.3.8": - version: 2.3.8 - resolution: "@expo/osascript@npm:2.3.8" + version: 2.4.2 + resolution: "@expo/osascript@npm:2.4.2" dependencies: "@expo/spawn-async": "npm:^1.7.2" - exec-async: "npm:^2.2.0" - checksum: 10/153ddb710870a29a4f69d2b6a42a492bf03f9707f8bc2c8929540429b3844c0ff3ccdb8f8ff78ee886fa54c3e8a584f7ca1d9718322503fca7c325558f121db6 + checksum: 10/5609b926bd68120b6a01edea0c7b14d4fa9fcd454bbcb49b89988f7acdb540f3b9c1c133acbbd3f9cd6a6937ce2a950c9cdde2a98ec8769d8a8b1481666a67d9 languageName: node linkType: hard "@expo/package-manager@npm:^1.9.10": - version: 1.10.0 - resolution: "@expo/package-manager@npm:1.10.0" - dependencies: - "@expo/json-file": "npm:^10.0.9" - "@expo/spawn-async": "npm:^1.7.2" - chalk: "npm:^4.0.0" - npm-package-arg: "npm:^11.0.0" - ora: "npm:^3.4.0" - resolve-workspace-root: "npm:^2.0.0" - checksum: 10/61dc892764f886fc9bf4b957fbc8b686fc941f2ceb008428752070f61cd44a40bd4d48bef594b3169eacb389d9e44f86c6b0003da8ef1c8ab3948dfd88875328 - languageName: node - linkType: hard - -"@expo/package-manager@npm:^1.9.9": - version: 1.9.9 - resolution: "@expo/package-manager@npm:1.9.9" + version: 1.10.3 + resolution: "@expo/package-manager@npm:1.10.3" dependencies: - "@expo/json-file": "npm:^10.0.8" + "@expo/json-file": "npm:^10.0.12" "@expo/spawn-async": "npm:^1.7.2" chalk: "npm:^4.0.0" npm-package-arg: "npm:^11.0.0" ora: "npm:^3.4.0" resolve-workspace-root: "npm:^2.0.0" - checksum: 10/d39c90599a8f94fcb93a274e6505df60872ef1f574fbb29e653de622a93536db926e3f9219ac4e8249c8380143518b92e95736a4aa0bed220bf33114206974fb + checksum: 10/cac9008ec362af0b54ebf55cb64514e3f4258423f0be9a0d1adb2815380e912783be78750c898e393f7bebe7a1b8288d449052b0ce9f790400d185a29b8274bd languageName: node linkType: hard -"@expo/plist@npm:^0.4.7, @expo/plist@npm:^0.4.8": +"@expo/plist@npm:^0.4.8": version: 0.4.8 resolution: "@expo/plist@npm:0.4.8" dependencies: @@ -3144,26 +2749,6 @@ __metadata: languageName: node linkType: hard -"@expo/prebuild-config@npm:^54.0.7": - version: 54.0.7 - resolution: "@expo/prebuild-config@npm:54.0.7" - dependencies: - "@expo/config": "npm:~12.0.11" - "@expo/config-plugins": "npm:~54.0.3" - "@expo/config-types": "npm:^54.0.9" - "@expo/image-utils": "npm:^0.8.8" - "@expo/json-file": "npm:^10.0.8" - "@react-native/normalize-colors": "npm:0.81.5" - debug: "npm:^4.3.1" - resolve-from: "npm:^5.0.0" - semver: "npm:^7.6.0" - xml2js: "npm:0.6.0" - peerDependencies: - expo: "*" - checksum: 10/6194661c2531041d1f5cc141f07fb2ddf8a558110732d8dcccfe8c7887345f28756bfd2c72fd72da364db274dde7d11fc77b8f39eace18cb215b8364997910c1 - languageName: node - linkType: hard - "@expo/prebuild-config@npm:^54.0.8": version: 54.0.8 resolution: "@expo/prebuild-config@npm:54.0.8" @@ -3215,13 +2800,13 @@ __metadata: linkType: hard "@expo/vector-icons@npm:^15.0.3": - version: 15.0.3 - resolution: "@expo/vector-icons@npm:15.0.3" + version: 15.1.1 + resolution: "@expo/vector-icons@npm:15.1.1" peerDependencies: expo-font: ">=14.0.4" react: "*" react-native: "*" - checksum: 10/8845ed6aeade73d7c684776a134153658549e1ee473e99ac56c355af53d848a4c91f9d218da798f481b117a08b86ab523c9c3f3de0c50b1f111ded644825803c + checksum: 10/204fafd5141c81bd55dd33f6c00cdc48ec1d37b6460be6fa3f851ccb235e1fad1097f22d034470daa49a5b839d058bbcadda1efd349c670c2fdce2ae65fb9bba languageName: node linkType: hard @@ -3233,16 +2818,24 @@ __metadata: linkType: hard "@expo/xcpretty@npm:^4.3.0": - version: 4.3.2 - resolution: "@expo/xcpretty@npm:4.3.2" + version: 4.4.1 + resolution: "@expo/xcpretty@npm:4.4.1" dependencies: - "@babel/code-frame": "npm:7.10.4" + "@babel/code-frame": "npm:^7.20.0" chalk: "npm:^4.1.0" - find-up: "npm:^5.0.0" js-yaml: "npm:^4.1.0" bin: excpretty: build/cli.js - checksum: 10/4d2adaf531d24154898b858d3d0f3b4ec272fa08bb628f94cadee5b1eb505cc1f3a6b0ab7c1cb3d55af0f22c2534b4a9781a6fe7293dc2062fc5784eb376b0bb + checksum: 10/56d4c7d54f2b2d4a04d24f77c8e6926c0760c2983c5ac54018a35b754e261d3f31b7cd509342ff161dfbe852c03d5d62096927130069e6020db29c33ca3fa580 + languageName: node + linkType: hard + +"@gar/promise-retry@npm:^1.0.0": + version: 1.0.2 + resolution: "@gar/promise-retry@npm:1.0.2" + dependencies: + retry: "npm:^0.13.1" + checksum: 10/b91326999ce94677cbe91973079eabc689761a93a045f6a2d34d4070e9305b27f6c54e4021688c7080cb14caf89eafa0c0f300af741b94c20d18608bdb66ca46 languageName: node linkType: hard @@ -3263,9 +2856,9 @@ __metadata: linkType: hard "@huggingface/jinja@npm:^0.5.0": - version: 0.5.3 - resolution: "@huggingface/jinja@npm:0.5.3" - checksum: 10/2797550d8400495facec93c00051ddba17df8849250a0ad61dfc3cd84b05c4013c852a0580e3fa8cf2fd153c9fbe35af2ced5409b1b23effd639f0a03a4c16b4 + version: 0.5.5 + resolution: "@huggingface/jinja@npm:0.5.5" + checksum: 10/9575f8a689ab2c31f2540ea2dd82da2bcddb536196c3de3ae8f3b2fa06f01f47eb6a0513b410bbeac90fea7123733a15bf5d484f45fe3132bc16232a60f0dce3 languageName: node linkType: hard @@ -3294,22 +2887,6 @@ __metadata: languageName: node linkType: hard -"@isaacs/balanced-match@npm:^4.0.1": - version: 4.0.1 - resolution: "@isaacs/balanced-match@npm:4.0.1" - checksum: 10/102fbc6d2c0d5edf8f6dbf2b3feb21695a21bc850f11bc47c4f06aa83bd8884fde3fe9d6d797d619901d96865fdcb4569ac2a54c937992c48885c5e3d9967fe8 - languageName: node - linkType: hard - -"@isaacs/brace-expansion@npm:^5.0.0": - version: 5.0.0 - resolution: "@isaacs/brace-expansion@npm:5.0.0" - dependencies: - "@isaacs/balanced-match": "npm:^4.0.1" - checksum: 10/cf3b7f206aff12128214a1df764ac8cdbc517c110db85249b945282407e3dfc5c6e66286383a7c9391a059fc8e6e6a8ca82262fc9d2590bd615376141fbebd2d - languageName: node - linkType: hard - "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -3762,11 +3339,11 @@ __metadata: linkType: hard "@kesha-antonov/react-native-background-downloader@npm:^4.4.5": - version: 4.4.5 - resolution: "@kesha-antonov/react-native-background-downloader@npm:4.4.5" + version: 4.5.2 + resolution: "@kesha-antonov/react-native-background-downloader@npm:4.5.2" peerDependencies: react-native: ">=0.57.0" - checksum: 10/56c90b08f5efdbc017a373dd3358470b5879f1ccb28b9a25df6b725fb6cc534d7d60c989167e07774f4c8bca530b22ed383322f5f105f8bd58bac2d85914c548 + checksum: 10/2543563caa62aa9362ef4c37dcb11f4b762cb9803869bbdf5a45260c2bbb3ae68336450920594f768ea29500dd6fe04958cbf07a90620617737df5862718343e languageName: node linkType: hard @@ -4239,120 +3816,120 @@ __metadata: languageName: node linkType: hard -"@react-native-community/cli-clean@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-clean@npm:20.0.2" +"@react-native-community/cli-clean@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-clean@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" execa: "npm:^5.0.0" fast-glob: "npm:^3.3.2" - checksum: 10/d839318d979a83c0574b81f2eb765726431e2b3b14aee14621a72c2af527730072af58ab8a9c457e12e137c81ae41329f83f5f56a3d36b08efbed5d7fe6718bf + picocolors: "npm:^1.1.1" + checksum: 10/66580b22ac10ed87aa1a121f5226d1bf88e1d87864cf21bcafc2f450133b908f31e44c784e881cc4cbcccb1cfedcca22bad0f09e0951ed5bd13400b2b724f9c5 languageName: node linkType: hard -"@react-native-community/cli-config-android@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-config-android@npm:20.0.2" +"@react-native-community/cli-config-android@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-config-android@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" fast-glob: "npm:^3.3.2" - fast-xml-parser: "npm:^4.4.1" - checksum: 10/ccbe4998887d722332c6734dbee38d7ea99362000f7afd88af4f7301e87928d669287e78ab112e618f8785e10c483064d1c00ce34368b564152d291eee32cb43 + fast-xml-parser: "npm:^5.3.6" + picocolors: "npm:^1.1.1" + checksum: 10/873af8992640a7585322e01fb99870ddf8894cb69a30d11e2c3babd50c9039ab1c62b630e9a58bbe9249c332c4a66386e9d4250a4200b5f7a5be86635850d43d languageName: node linkType: hard -"@react-native-community/cli-config-apple@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-config-apple@npm:20.0.2" +"@react-native-community/cli-config-apple@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-config-apple@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" execa: "npm:^5.0.0" fast-glob: "npm:^3.3.2" - checksum: 10/5f888674b70d8d52be2ea2f1e513afdf98a43de30d6db224514c7a3a0466ad99a1c8ad4080558b6ac172c92eaca2d1a20691afd0744fbcb8fafedf8e6cd73cf1 + picocolors: "npm:^1.1.1" + checksum: 10/262089e3ca1ba161fa1c4c1945b10a731a5c39db35f07e44c94d1fcf0676819d2eccfced3ec56f724efee31b7c1ff8d6c0b1842363575708f0cf86df5a4315e9 languageName: node linkType: hard -"@react-native-community/cli-config@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-config@npm:20.0.2" +"@react-native-community/cli-config@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-config@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" cosmiconfig: "npm:^9.0.0" deepmerge: "npm:^4.3.0" fast-glob: "npm:^3.3.2" joi: "npm:^17.2.1" - checksum: 10/05658bfeecce40f14d4c91d804b4748d0b514e73a572ff58a3420c41e4cbebe63fa6fb6ecf8f9622227e33891313e3494c7d26c469335f40e234e2470a7b6f6b + picocolors: "npm:^1.1.1" + checksum: 10/c43f19458c514c1108162238abb7f8b096156b6377841c6959d46a7fe6ffea170050a6e77c2eaf19800efd40b865297e8cc04043d38f881e6e36d62eccd81164 languageName: node linkType: hard -"@react-native-community/cli-doctor@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-doctor@npm:20.0.2" +"@react-native-community/cli-doctor@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-doctor@npm:20.1.2" dependencies: - "@react-native-community/cli-config": "npm:20.0.2" - "@react-native-community/cli-platform-android": "npm:20.0.2" - "@react-native-community/cli-platform-apple": "npm:20.0.2" - "@react-native-community/cli-platform-ios": "npm:20.0.2" - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-config": "npm:20.1.2" + "@react-native-community/cli-platform-android": "npm:20.1.2" + "@react-native-community/cli-platform-apple": "npm:20.1.2" + "@react-native-community/cli-platform-ios": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" command-exists: "npm:^1.2.8" deepmerge: "npm:^4.3.0" envinfo: "npm:^7.13.0" execa: "npm:^5.0.0" node-stream-zip: "npm:^1.9.1" ora: "npm:^5.4.1" + picocolors: "npm:^1.1.1" semver: "npm:^7.5.2" wcwidth: "npm:^1.0.1" yaml: "npm:^2.2.1" - checksum: 10/11a4a9ff5da4d471920418e8b4a598f997036d1d8e5d25f5957886b26727a5526789996430575dc422a5251f225df786a40ab42ec9c2c11f112ec980d6e1cc02 + checksum: 10/6e02acff8a0dd27512a347124dbf68b37ac76f33ad05a46a19646acea1101c695167543553d3e8d8e3ce4e3181f04d73840937afde02245d9f4a7671d831ddaa languageName: node linkType: hard -"@react-native-community/cli-platform-android@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-platform-android@npm:20.0.2" +"@react-native-community/cli-platform-android@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-platform-android@npm:20.1.2" dependencies: - "@react-native-community/cli-config-android": "npm:20.0.2" - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-config-android": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" execa: "npm:^5.0.0" logkitty: "npm:^0.7.1" - checksum: 10/465ef6988d335740cb998c51d29f837344e063bd04cf07b3f959e44df7823b2902ee6a25bf036e82581b1d6e1cfacbd8bcf87690f4dc0c6fb4b21f15eb64951e + picocolors: "npm:^1.1.1" + checksum: 10/ff3cd9bd288f4237abc3ab2675efa056feb63bef01d49b843a5ecc7d65bee377512aece43ee4f110c11485640fabded055b61df0149525dc91169dc80b8c7f6e languageName: node linkType: hard -"@react-native-community/cli-platform-apple@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-platform-apple@npm:20.0.2" +"@react-native-community/cli-platform-apple@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-platform-apple@npm:20.1.2" dependencies: - "@react-native-community/cli-config-apple": "npm:20.0.2" - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-config-apple": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" execa: "npm:^5.0.0" - fast-xml-parser: "npm:^4.4.1" - checksum: 10/f316b4f54f6d323319c0df9b6bf3cd7a5aa3b81d170e18755b9dc80297b1989f5c275b779f1044f063392126ec510e172283d06ef9ab8700950d7b36e1cb4d72 + fast-xml-parser: "npm:^5.3.6" + picocolors: "npm:^1.1.1" + checksum: 10/b1d4409f8a081e94400acf41cfefa0c8663afdf8280598e7731a85a4f161f64f381e876fdace394baec0d72db716fb58aa1e18ce8eeacc37fc70c5a261ba71f6 languageName: node linkType: hard -"@react-native-community/cli-platform-ios@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-platform-ios@npm:20.0.2" +"@react-native-community/cli-platform-ios@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-platform-ios@npm:20.1.2" dependencies: - "@react-native-community/cli-platform-apple": "npm:20.0.2" - checksum: 10/a0290feadc079981429143e9829a3030a768593927e0c2bcf546f52c8c22a53a49ea5f9ae9484f7eb390e01a46d7b0d7d9dc3374268d07237c808e6e7e3c50b3 + "@react-native-community/cli-platform-apple": "npm:20.1.2" + checksum: 10/711c5366a62a5dfd26fd987bab126ff958faf29e7e2bfab1d29c1c8dfc12be12c03d8291f2fefab4ea90836fe41e90f7bb626b6fa3a9d023cdc39f726aa34512 languageName: node linkType: hard -"@react-native-community/cli-server-api@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-server-api@npm:20.0.2" +"@react-native-community/cli-server-api@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-server-api@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - body-parser: "npm:^1.20.3" + "@react-native-community/cli-tools": "npm:20.1.2" + body-parser: "npm:^2.2.2" compression: "npm:^1.7.1" connect: "npm:^3.6.5" errorhandler: "npm:^1.5.1" @@ -4360,60 +3937,61 @@ __metadata: open: "npm:^6.2.0" pretty-format: "npm:^29.7.0" serve-static: "npm:^1.13.1" + strict-url-sanitise: "npm:0.0.1" ws: "npm:^6.2.3" - checksum: 10/7771524a0016f200a15c9c5df430b18ada846ef4d426be9d6540a343e69d042b359069aeef156bec7b267bcf43a50f97b8ec7f1514dad55d84c4e16fbd4e176b + checksum: 10/29447084fdc1a0b3f38a62bc781aa71877b835dd8ee5855d30237289350bb3daeb1a27ca9a3b0d97b86d0f85bddcd67c3907968fdaee7c2f5cc7cab72723d1d1 languageName: node linkType: hard -"@react-native-community/cli-tools@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-tools@npm:20.0.2" +"@react-native-community/cli-tools@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-tools@npm:20.1.2" dependencies: "@vscode/sudo-prompt": "npm:^9.0.0" appdirsjs: "npm:^1.2.4" - chalk: "npm:^4.1.2" execa: "npm:^5.0.0" find-up: "npm:^5.0.0" launch-editor: "npm:^2.9.1" mime: "npm:^2.4.1" ora: "npm:^5.4.1" + picocolors: "npm:^1.1.1" prompts: "npm:^2.4.2" semver: "npm:^7.5.2" - checksum: 10/8f1c752a6bffa4dc201446bd4d8a7162ae296e87e3a7f2d87201e79cc9ceadb9ed4daafde83b732d79f54f76c4294e8822fae483c9120c358bc422482d98c045 + checksum: 10/6eeeeb38495c9f6636840da0ef564db99d6e69d7672dd4cdeff4b8cc128d00de56d2ea74c0c7fda6c743d1f0a642d481c44f6cdd38d8f57ccdd53e9608930bca languageName: node linkType: hard -"@react-native-community/cli-types@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-types@npm:20.0.2" +"@react-native-community/cli-types@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-types@npm:20.1.2" dependencies: joi: "npm:^17.2.1" - checksum: 10/b4e708fe759ef995b99bdbe89f0e83a00cba680c01a119d317f445528e8321d89a842e0641ad2a08f4c3793ddb9e02b0045d2e82da66d279cb21ee42961ba9ce + checksum: 10/b40aaa3e5ccdad210f67760be01cff34760b7107c0afc93a394733317a88eca2a8b8490b977c8d74d98822d2c2117a1a7101c33105bcdd03277c071c7daca510 languageName: node linkType: hard "@react-native-community/cli@npm:latest": - version: 20.0.2 - resolution: "@react-native-community/cli@npm:20.0.2" - dependencies: - "@react-native-community/cli-clean": "npm:20.0.2" - "@react-native-community/cli-config": "npm:20.0.2" - "@react-native-community/cli-doctor": "npm:20.0.2" - "@react-native-community/cli-server-api": "npm:20.0.2" - "@react-native-community/cli-tools": "npm:20.0.2" - "@react-native-community/cli-types": "npm:20.0.2" - chalk: "npm:^4.1.2" + version: 20.1.2 + resolution: "@react-native-community/cli@npm:20.1.2" + dependencies: + "@react-native-community/cli-clean": "npm:20.1.2" + "@react-native-community/cli-config": "npm:20.1.2" + "@react-native-community/cli-doctor": "npm:20.1.2" + "@react-native-community/cli-server-api": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" + "@react-native-community/cli-types": "npm:20.1.2" commander: "npm:^9.4.1" deepmerge: "npm:^4.3.0" execa: "npm:^5.0.0" find-up: "npm:^5.0.0" fs-extra: "npm:^8.1.0" graceful-fs: "npm:^4.1.3" + picocolors: "npm:^1.1.1" prompts: "npm:^2.4.2" semver: "npm:^7.5.2" bin: rnc-cli: build/bin.js - checksum: 10/8de75d8ab9c3ffce215e4dcff57832f22e8f8853a212dbd0c2b8e96cff6e6511593d7ed064aba920a8245147b4079a77ab4445461bab97a9e08bf84472a6e8e6 + checksum: 10/85c0f4d2ca4dbbeb47f9439bf0da22abd18a39fccf2736dc47efcc47accbc377c32aa0b75408308fd47a60658e72266e2c645f7f9675a1faf5e4c7dc737c20a8 languageName: node linkType: hard @@ -4805,20 +4383,6 @@ __metadata: languageName: node linkType: hard -"@react-native/metro-babel-transformer@npm:0.81.5": - version: 0.81.5 - resolution: "@react-native/metro-babel-transformer@npm:0.81.5" - dependencies: - "@babel/core": "npm:^7.25.2" - "@react-native/babel-preset": "npm:0.81.5" - hermes-parser: "npm:0.29.1" - nullthrows: "npm:^1.1.1" - peerDependencies: - "@babel/core": "*" - checksum: 10/401cd5e396a0c04865164c8321c29c17b9cdfbfef5efdf771befb77f830fd28c0bafe116f6d51930e684372f37b4a47f143a404341780187ae9e9fab0da39af4 - languageName: node - linkType: hard - "@react-native/metro-babel-transformer@npm:0.81.6": version: 0.81.6 resolution: "@react-native/metro-babel-transformer@npm:0.81.6" @@ -4847,19 +4411,7 @@ __metadata: languageName: node linkType: hard -"@react-native/metro-config@npm:^0.81.5": - version: 0.81.5 - resolution: "@react-native/metro-config@npm:0.81.5" - dependencies: - "@react-native/js-polyfills": "npm:0.81.5" - "@react-native/metro-babel-transformer": "npm:0.81.5" - metro-config: "npm:^0.83.1" - metro-runtime: "npm:^0.83.1" - checksum: 10/13af9cb8f743e8ae51fe0c77db4c61070ef31074b985911ad03b53ec79985f3ba261f1b0026bc62b1b070a3954c8928b73d2d956fc13bad6ece3699b3f5d7254 - languageName: node - linkType: hard - -"@react-native/metro-config@npm:^0.81.6": +"@react-native/metro-config@npm:^0.81.5, @react-native/metro-config@npm:^0.81.6": version: 0.81.6 resolution: "@react-native/metro-config@npm:0.81.6" dependencies: @@ -4908,25 +4460,25 @@ __metadata: linkType: hard "@react-navigation/bottom-tabs@npm:^7.4.0": - version: 7.8.11 - resolution: "@react-navigation/bottom-tabs@npm:7.8.11" + version: 7.15.2 + resolution: "@react-navigation/bottom-tabs@npm:7.15.2" dependencies: - "@react-navigation/elements": "npm:^2.9.1" + "@react-navigation/elements": "npm:^2.9.8" color: "npm:^4.2.3" sf-symbols-typescript: "npm:^2.1.0" peerDependencies: - "@react-navigation/native": ^7.1.24 + "@react-navigation/native": ^7.1.31 react: ">= 18.2.0" react-native: "*" react-native-safe-area-context: ">= 4.0.0" react-native-screens: ">= 4.0.0" - checksum: 10/313f4daf2a02325460ee6f2515adf4273c3f0cec9001f5ea73c77ad5ce25d003fa623b593390af111a1db505a5eb3793bae32fd029dd1f740fe5b7b39e19f923 + checksum: 10/f76179664388dd025c4c6fc5696335407e5769417ffa7a364d601e019e734ac950200071ea417d5de3a1cad26b127251d9237890adbece9ccda56e32c996f807 languageName: node linkType: hard -"@react-navigation/core@npm:^7.14.0": - version: 7.14.0 - resolution: "@react-navigation/core@npm:7.14.0" +"@react-navigation/core@npm:^7.15.1": + version: 7.15.1 + resolution: "@react-navigation/core@npm:7.15.1" dependencies: "@react-navigation/routers": "npm:^7.5.3" escape-string-regexp: "npm:^4.0.0" @@ -4938,93 +4490,73 @@ __metadata: use-sync-external-store: "npm:^1.5.0" peerDependencies: react: ">= 18.2.0" - checksum: 10/fa43ad12304f0dfa60688c73f59ac374c1900d1bad1823ab2b1454ab7e6376d0038ec2a597f67fa09fabe4381bfd210fb048518d61ad4fc44d6d608a0ceb6a1a + checksum: 10/308e7c0748827b47870dbac537b545bc7b4b975d64d136ca18c64970449195a6394ec49608e1063a6374c1da31a984b0e06e12de997babaddd201b400f34d37c languageName: node linkType: hard "@react-navigation/drawer@npm:^7.8.1": - version: 7.8.1 - resolution: "@react-navigation/drawer@npm:7.8.1" + version: 7.9.2 + resolution: "@react-navigation/drawer@npm:7.9.2" dependencies: - "@react-navigation/elements": "npm:^2.9.5" + "@react-navigation/elements": "npm:^2.9.8" color: "npm:^4.2.3" react-native-drawer-layout: "npm:^4.2.2" use-latest-callback: "npm:^0.2.4" peerDependencies: - "@react-navigation/native": ^7.1.28 + "@react-navigation/native": ^7.1.31 react: ">= 18.2.0" react-native: "*" react-native-gesture-handler: ">= 2.0.0" react-native-reanimated: ">= 2.0.0" react-native-safe-area-context: ">= 4.0.0" react-native-screens: ">= 4.0.0" - checksum: 10/1c39458642865379a55ea456937fc6e0eef07b0430b48ece64a2f96f393f81702831ed25981ade1938d1e72701062d4c1c3b60ded377a8edce11d0a3ce7f7af9 + checksum: 10/47b37265d0ee005e6194a0353687b8f36ed33c7f3fd059bbb110abcdeed2ab8a3f8e9fdca8875a02a92eae7794035d5887a66c7f862f84077286f2aec2f21e23 languageName: node linkType: hard -"@react-navigation/elements@npm:^2.9.1": - version: 2.9.1 - resolution: "@react-navigation/elements@npm:2.9.1" +"@react-navigation/elements@npm:^2.9.8": + version: 2.9.8 + resolution: "@react-navigation/elements@npm:2.9.8" dependencies: color: "npm:^4.2.3" use-latest-callback: "npm:^0.2.4" use-sync-external-store: "npm:^1.5.0" peerDependencies: "@react-native-masked-view/masked-view": ">= 0.2.0" - "@react-navigation/native": ^7.1.24 + "@react-navigation/native": ^7.1.31 react: ">= 18.2.0" react-native: "*" react-native-safe-area-context: ">= 4.0.0" peerDependenciesMeta: "@react-native-masked-view/masked-view": optional: true - checksum: 10/ae4bb3be4773d12001a469cd972467cd4f83affe5eded4e972a9af1a14dee54b13bbb6d8481a7166329e028e9943e63d19ff36473d29b095053ca8de773f8939 - languageName: node - linkType: hard - -"@react-navigation/elements@npm:^2.9.5": - version: 2.9.5 - resolution: "@react-navigation/elements@npm:2.9.5" - dependencies: - color: "npm:^4.2.3" - use-latest-callback: "npm:^0.2.4" - use-sync-external-store: "npm:^1.5.0" - peerDependencies: - "@react-native-masked-view/masked-view": ">= 0.2.0" - "@react-navigation/native": ^7.1.28 - react: ">= 18.2.0" - react-native: "*" - react-native-safe-area-context: ">= 4.0.0" - peerDependenciesMeta: - "@react-native-masked-view/masked-view": - optional: true - checksum: 10/b71c367082527dda303dfaa319af930ccbb1622f2cbe018382c8070c91944b59891fcabe048a76590d52ee07eac7ca9acb33e03fdacd8092aff1d58a165b0762 + checksum: 10/b34fc3c69f2bbdf18bf9eecf27c866adc806e90f6bb773f35dc35cd8454c822609ced4446c09feb646002a2ee69e6310b28635627c9132081a325e6b1cc370e7 languageName: node linkType: hard "@react-navigation/native-stack@npm:^7.3.16": - version: 7.8.5 - resolution: "@react-navigation/native-stack@npm:7.8.5" + version: 7.14.2 + resolution: "@react-navigation/native-stack@npm:7.14.2" dependencies: - "@react-navigation/elements": "npm:^2.9.1" + "@react-navigation/elements": "npm:^2.9.8" color: "npm:^4.2.3" sf-symbols-typescript: "npm:^2.1.0" warn-once: "npm:^0.1.1" peerDependencies: - "@react-navigation/native": ^7.1.24 + "@react-navigation/native": ^7.1.31 react: ">= 18.2.0" react-native: "*" react-native-safe-area-context: ">= 4.0.0" react-native-screens: ">= 4.0.0" - checksum: 10/69381f0f938aed5b4ecfd8d980f4d01f510dd2d3a932c59e7e8c9e7f9c64f38c239a1ffe51fb794c238b7e661346799bdada5cb73a4eabf999b8d3c3a84d699a + checksum: 10/d1d1b454d57842d87457c1a556b464fa99d3d94948ffde322fe854d7f5c9909d9bd0e9ee7d051376cb9066fd9619934ce468b2809fd4e8aa3d8b6d6a31cfb3e7 languageName: node linkType: hard "@react-navigation/native@npm:^7.1.28, @react-navigation/native@npm:^7.1.8": - version: 7.1.28 - resolution: "@react-navigation/native@npm:7.1.28" + version: 7.1.31 + resolution: "@react-navigation/native@npm:7.1.31" dependencies: - "@react-navigation/core": "npm:^7.14.0" + "@react-navigation/core": "npm:^7.15.1" escape-string-regexp: "npm:^4.0.0" fast-deep-equal: "npm:^3.1.3" nanoid: "npm:^3.3.11" @@ -5032,7 +4564,7 @@ __metadata: peerDependencies: react: ">= 18.2.0" react-native: "*" - checksum: 10/64f2d3136ad4034315b2aaf81d0ffd3d73425787aebf3ef7934dfb50931d50cbc3322378fdc240df5d795f5c1ab361038c3200cc24c266c8a089706ca1f4edb7 + checksum: 10/b76efac7073055968e7c3300c6812932c0cdec6c9de1bdae0a80ecbee217c2817b0fa5012cd0817d3f6abe9c198032787bfcee4f4ec080b5827510c11c894cc0 languageName: node linkType: hard @@ -5090,9 +4622,9 @@ __metadata: linkType: hard "@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d + version: 0.27.10 + resolution: "@sinclair/typebox@npm:0.27.10" + checksum: 10/1498c5ef1375787e6272528615d5c262afb60873191d2441316359817b1c411917063c8be102ef15b0b5c62243a9daa7aefc8426f20eb406b67038b3eaa0695a languageName: node linkType: hard @@ -5420,11 +4952,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 24.10.1 - resolution: "@types/node@npm:24.10.1" + version: 25.3.1 + resolution: "@types/node@npm:25.3.1" dependencies: - undici-types: "npm:~7.16.0" - checksum: 10/ddac8c97be5f7401e31ea0e9316c6e864993c6cd06689b7f9874ecfb576ef8349f2d14298248a08b94a6dd029570a46a285cddc4d50e524817f1a3730b29a86e + undici-types: "npm:~7.18.0" + checksum: 10/7f999e88e7ff3d2e2ee4efbf1de60d9375577d1ad3e1bee01455ec9d8257da2fb1f83dce4cb8fdf9c05dde9fec9e54f61fc9b1731393b53fc74f254712de9f6e languageName: node linkType: hard @@ -5836,9 +5368,9 @@ __metadata: linkType: hard "@vscode/sudo-prompt@npm:^9.0.0": - version: 9.3.1 - resolution: "@vscode/sudo-prompt@npm:9.3.1" - checksum: 10/233edb992ae5dda69b9c63101f85a7996ff7034cb9b0ea976f3ab06483511a35162a650d8e081ded5f07aa9b2f2bac93e45420d956cf1b1d8a76ac385d4a9581 + version: 9.3.2 + resolution: "@vscode/sudo-prompt@npm:9.3.2" + checksum: 10/2eabbf59ba784c5828d9f45cde2ada83f51796d88dea05ed0c270a98545ad5f47c8d48e54c2ed335273ec75499e9700ee8b48f1d9bf2bb3e42050faf1070d8c3 languageName: node linkType: hard @@ -5872,7 +5404,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:^1.3.7, accepts@npm:^1.3.8, accepts@npm:~1.3.7": +"accepts@npm:^1.3.7, accepts@npm:^1.3.8, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -5902,11 +5434,11 @@ __metadata: linkType: hard "acorn@npm:^8.15.0, acorn@npm:^8.9.0": - version: 8.15.0 - resolution: "acorn@npm:8.15.0" + version: 8.16.0 + resolution: "acorn@npm:8.16.0" bin: acorn: bin/acorn - checksum: 10/77f2de5051a631cf1729c090e5759148459cdb76b5f5c70f890503d629cf5052357b0ce783c0f976dd8a93c5150f59f6d18df1def3f502396a20f81282482fa4 + checksum: 10/690c673bb4d61b38ef82795fab58526471ad7f7e67c0e40c4ff1e10ecd80ce5312554ef633c9995bfc4e6d170cef165711f9ca9e49040b62c0c66fbf2dd3df2b languageName: node linkType: hard @@ -5928,14 +5460,14 @@ __metadata: linkType: hard "ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" + version: 6.14.0 + resolution: "ajv@npm:6.14.0" dependencies: fast-deep-equal: "npm:^3.1.1" fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 10/48d6ad21138d12eb4d16d878d630079a2bda25a04e745c07846a4ad768319533031e28872a9b3c5790fa1ec41aabdf2abed30a56e5a03ebc2cf92184b8ee306c + checksum: 10/c71f14dd2b6f2535d043f74019c8169f7aeb1106bafbb741af96f34fdbf932255c919ddd46344043d03b62ea0ccb319f83667ec5eedf612393f29054fe5ce4a5 languageName: node linkType: hard @@ -6075,23 +5607,23 @@ __metadata: languageName: node linkType: hard -"arkregex@npm:0.0.4": - version: 0.0.4 - resolution: "arkregex@npm:0.0.4" +"arkregex@npm:0.0.5": + version: 0.0.5 + resolution: "arkregex@npm:0.0.5" dependencies: "@ark/util": "npm:0.56.0" - checksum: 10/af9eccf7e931a810ee18196ffa4c97d436d807d6332de9ae4dbc7dec0f315b6cb69990cad40d3344de9464ec191024a1354d3765d19868c668acd4ead5820ea6 + checksum: 10/c5eca109df57639b3245e1e72efe1b43cf881a2234b29736b11f57d29674d9ef78a2dcf54f5381a33690d53ce8989520bc123bb686dcce83f15c44f141c7f8a9 languageName: node linkType: hard "arktype@npm:^2.1.15": - version: 2.1.28 - resolution: "arktype@npm:2.1.28" + version: 2.1.29 + resolution: "arktype@npm:2.1.29" dependencies: "@ark/schema": "npm:0.56.0" "@ark/util": "npm:0.56.0" - arkregex: "npm:0.0.4" - checksum: 10/790503fdbcaf2c549a96d4ffe83938d12221817f7c0d9939e857334e3bbca2895c4d34edfc66e74f2e925e6d97cdb280160ec5af39346f960d4d59e4b75ab3ed + arkregex: "npm:0.0.5" + checksum: 10/091df54e5df0282a26f5de74cc001569483fc61b3297277a51cb8244f277334a549cf8ae3342ca3bbde95bd10172aaa2f86e6c5738e2853b2b66c088a7c9f398 languageName: node linkType: hard @@ -6326,16 +5858,16 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.14": - version: 0.4.14 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" +"babel-plugin-polyfill-corejs2@npm:^0.4.14, babel-plugin-polyfill-corejs2@npm:^0.4.15": + version: 0.4.15 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.15" dependencies: - "@babel/compat-data": "npm:^7.27.7" - "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + "@babel/compat-data": "npm:^7.28.6" + "@babel/helper-define-polyfill-provider": "npm:^0.6.6" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/8ec00a1b821ccbfcc432630da66e98bc417f5301f4ce665269d50d245a18ad3ce8a8af2a007f28e3defcd555bb8ce65f16b0d4b6d131bd788e2b97d8b8953332 + checksum: 10/e5f8a4e716400b2b5c51f7b3c0eec58da92f1d8cc1c6fe2e32555c98bc594be1de7fa1da373f8e42ab098c33867c4cc2931ce648c92aab7a4f4685417707c438 languageName: node linkType: hard @@ -6351,14 +5883,26 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.6.5": - version: 0.6.5 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" +"babel-plugin-polyfill-corejs3@npm:^0.14.0": + version: 0.14.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.14.0" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + "@babel/helper-define-polyfill-provider": "npm:^0.6.6" + core-js-compat: "npm:^3.48.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10/09c854a3bda9a930fbce4b80d52a24e5b0744fccb0c81bf8f470d62296f197a2afe111b2b9ecb0d8a47068de2f938d14b748295953377e47594b0673d53c9396 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.5, babel-plugin-polyfill-regenerator@npm:^0.6.6": + version: 0.6.6 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.6" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.6" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/ed1932fa9a31e0752fd10ebf48ab9513a654987cab1182890839523cb898559d24ae0578fdc475d9f995390420e64eeaa4b0427045b56949dace3c725bc66dbb + checksum: 10/8de7ea32856e75784601cacf8f4e3cbf04ce1fd05d56614b08b7bbe0674d1e59e37ccaa1c7ed16e3b181a63abe5bd43a1ab0e28b8c95618a9ebf0be5e24d6b25 languageName: node linkType: hard @@ -6478,45 +6022,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-expo@npm:~54.0.8": - version: 54.0.8 - resolution: "babel-preset-expo@npm:54.0.8" - dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/plugin-proposal-decorators": "npm:^7.12.9" - "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" - "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" - "@babel/plugin-transform-class-static-block": "npm:^7.27.1" - "@babel/plugin-transform-export-namespace-from": "npm:^7.25.9" - "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" - "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" - "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" - "@babel/plugin-transform-parameters": "npm:^7.24.7" - "@babel/plugin-transform-private-methods": "npm:^7.24.7" - "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" - "@babel/plugin-transform-runtime": "npm:^7.24.7" - "@babel/preset-react": "npm:^7.22.15" - "@babel/preset-typescript": "npm:^7.23.0" - "@react-native/babel-preset": "npm:0.81.5" - babel-plugin-react-compiler: "npm:^1.0.0" - babel-plugin-react-native-web: "npm:~0.21.0" - babel-plugin-syntax-hermes-parser: "npm:^0.29.1" - babel-plugin-transform-flow-enums: "npm:^0.0.2" - debug: "npm:^4.3.4" - resolve-from: "npm:^5.0.0" - peerDependencies: - "@babel/runtime": ^7.20.0 - expo: "*" - react-refresh: ">=0.14.0 <1.0.0" - peerDependenciesMeta: - "@babel/runtime": - optional: true - expo: - optional: true - checksum: 10/7ecd779623fb80cb6eb559dc1b8fcf54e6128bff412336875fb97159abc847ed9aa8f04862d3f5054fbce844ee3fbaac2af16a65ddf26ab92f3855bab86bd57c - languageName: node - linkType: hard - "babel-preset-jest@npm:30.2.0": version: 30.2.0 resolution: "babel-preset-jest@npm:30.2.0" @@ -6548,6 +6053,13 @@ __metadata: languageName: node linkType: hard +"balanced-match@npm:^4.0.2": + version: 4.0.4 + resolution: "balanced-match@npm:4.0.4" + checksum: 10/fb07bb66a0959c2843fc055838047e2a95ccebb837c519614afb067ebfdf2fa967ca8d712c35ced07f2cd26fc6f07964230b094891315ad74f11eba3d53178a0 + languageName: node + linkType: hard + "base64-js@npm:^1.2.3, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" @@ -6556,11 +6068,11 @@ __metadata: linkType: hard "baseline-browser-mapping@npm:^2.9.0": - version: 2.9.2 - resolution: "baseline-browser-mapping@npm:2.9.2" + version: 2.10.0 + resolution: "baseline-browser-mapping@npm:2.10.0" bin: - baseline-browser-mapping: dist/cli.js - checksum: 10/6e42ae4aaaa0becd37a58b00aa4734063a59b752b5bb66776fc73858d8d7eecea007f4af67fba7c48a9022ec243ad6a77aee735d9e063b1220a7f39b8cd39f4b + baseline-browser-mapping: dist/cli.cjs + checksum: 10/8145e076e4299f04c7a412e6ea63803e330153cd89c47b5303f9b56b58078f4c3d5a5b5332c1069da889e76facacca4d43f8940375f7e73ce0a4d96214332953 languageName: node linkType: hard @@ -6598,23 +6110,20 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:^1.20.3": - version: 1.20.4 - resolution: "body-parser@npm:1.20.4" +"body-parser@npm:^2.2.2": + version: 2.2.2 + resolution: "body-parser@npm:2.2.2" dependencies: - bytes: "npm:~3.1.2" - content-type: "npm:~1.0.5" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:~1.2.0" - http-errors: "npm:~2.0.1" - iconv-lite: "npm:~0.4.24" - on-finished: "npm:~2.4.1" - qs: "npm:~6.14.0" - raw-body: "npm:~2.5.3" - type-is: "npm:~1.6.18" - unpipe: "npm:~1.0.0" - checksum: 10/ff67e28d3f426707be8697a75fdf8d564dc50c341b41f054264d8ab6e2924e519c7ce8acc9d0de05328fdc41e1d9f3f200aec9c1cfb1867d6b676a410d97c689 + bytes: "npm:^3.1.2" + content-type: "npm:^1.0.5" + debug: "npm:^4.4.3" + http-errors: "npm:^2.0.0" + iconv-lite: "npm:^0.7.0" + on-finished: "npm:^2.4.1" + qs: "npm:^6.14.1" + raw-body: "npm:^3.0.1" + type-is: "npm:^2.0.1" + checksum: 10/69671f67d4d5ae5974593901a92d639757231da1725ed6de4d35e86cde9ce7650afdf1cd28df9b6f7892ea7f9eb03ccb30c70fe27d679275ae4cb4aae5ce1b21 languageName: node linkType: hard @@ -6662,12 +6171,12 @@ __metadata: languageName: node linkType: hard -"brace-expansion@npm:^2.0.1": - version: 2.0.2 - resolution: "brace-expansion@npm:2.0.2" +"brace-expansion@npm:^5.0.2": + version: 5.0.3 + resolution: "brace-expansion@npm:5.0.3" dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10/01dff195e3646bc4b0d27b63d9bab84d2ebc06121ff5013ad6e5356daa5a9d6b60fa26cf73c74797f2dc3fbec112af13578d51f75228c1112b26c790a87b0488 + balanced-match: "npm:^4.0.2" + checksum: 10/8ba7deae4ca333d52418d2cde3287ac23f44f7330d92c3ecd96a8941597bea8aab02227bd990944d6711dd549bcc6e550fe70be5d94aa02e2fdc88942f480c9b languageName: node linkType: hard @@ -6680,7 +6189,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.20.4, browserslist@npm:^4.24.0, browserslist@npm:^4.25.0, browserslist@npm:^4.28.0": +"browserslist@npm:^4.20.4, browserslist@npm:^4.24.0, browserslist@npm:^4.25.0, browserslist@npm:^4.28.1": version: 4.28.1 resolution: "browserslist@npm:4.28.1" dependencies: @@ -6731,7 +6240,7 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2, bytes@npm:~3.1.2": +"bytes@npm:3.1.2, bytes@npm:^3.1.2, bytes@npm:~3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: 10/a10abf2ba70c784471d6b4f58778c0beeb2b5d405148e66affa91f23a9f13d07603d0a0354667310ae1d6dc141474ffd44e2a074be0f6e2254edb8fc21445388 @@ -6843,9 +6352,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001759": - version: 1.0.30001759 - resolution: "caniuse-lite@npm:1.0.30001759" - checksum: 10/da0ec28dd993dffa99402914903426b9466d2798d41c1dc9341fcb7dd10f58fdd148122e2c65001246c030ba1c939645b7b4597f6321e3246dc792323bb11541 + version: 1.0.30001774 + resolution: "caniuse-lite@npm:1.0.30001774" + checksum: 10/63c87aeac08548847ecd12746144029761707d9eae57750f673543a2b2a6126bca98584dd551818e8dc2a480d11489bebe0027af26de4ee46466e7b216109862 languageName: node linkType: hard @@ -7194,20 +6703,20 @@ __metadata: linkType: hard "comment-json@npm:^4.2.5": - version: 4.4.1 - resolution: "comment-json@npm:4.4.1" + version: 4.5.1 + resolution: "comment-json@npm:4.5.1" dependencies: array-timsort: "npm:^1.0.3" core-util-is: "npm:^1.0.3" esprima: "npm:^4.0.1" - checksum: 10/2d05701e361320c670623b01343ed9ff180f4b4a38291f19ab9e2ef5269f51c8d1011f003fceff8cbf73d293f53a8ffc8ba1f85ccb1f6d0703829155bd628bce + checksum: 10/3bdd2703f26690537f65ef708d62aae3980dba6fc566e82a71d95511b413a6f5f285af9af0415e4739dc6f363db24225e46f5267c576f249100cdb28c3adb00d languageName: node linkType: hard "comment-parser@npm:^1.4.0": - version: 1.4.1 - resolution: "comment-parser@npm:1.4.1" - checksum: 10/16a3260b5e77819ebd9c99b0b65c7d6723b1ff73487bac9ce2d8f016a2847dd689e8663b88e1fad1444bbea89847c42f785708ac86a2c55f614f7095249bbf6b + version: 1.4.5 + resolution: "comment-parser@npm:1.4.5" + checksum: 10/4b5cacc7ab1ec48e3f51b788bd7cda567f5c83040e029e5c92eacf0785735a9b44ac49fdaf73d9bd4af9464aa4cc8cc7184902090b55b0023605a845f2666ba4 languageName: node linkType: hard @@ -7289,7 +6798,7 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.5": +"content-type@npm:^1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 10/585847d98dc7fb8035c02ae2cb76c7a9bd7b25f84c447e5ed55c45c2175e83617c8813871b4ee22f368126af6b2b167df655829007b21aa10302873ea9c62662 @@ -7303,12 +6812,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.43.0": - version: 3.47.0 - resolution: "core-js-compat@npm:3.47.0" +"core-js-compat@npm:^3.43.0, core-js-compat@npm:^3.48.0": + version: 3.48.0 + resolution: "core-js-compat@npm:3.48.0" dependencies: - browserslist: "npm:^4.28.0" - checksum: 10/8555ac0aede2e61e3b37c50d31a9d63bb59e96ef76194bea0521d2778b24d8b20b45bed7bf2fce9df9856872a1c31e03fec1da101507b4dbaba669693dc95f94 + browserslist: "npm:^4.28.1" + checksum: 10/83c326dcfef5e174fd3f8f33c892c66e06d567ce27f323a1197a6c280c0178fe18d3e9c5fb95b00c18b98d6c53fba5c646def5fedaa77310a4297d16dfbe2029 languageName: node linkType: hard @@ -7376,13 +6885,6 @@ __metadata: languageName: node linkType: hard -"crypto-random-string@npm:^2.0.0": - version: 2.0.0 - resolution: "crypto-random-string@npm:2.0.0" - checksum: 10/0283879f55e7c16fdceacc181f87a0a65c53bc16ffe1d58b9d19a6277adcd71900d02bb2c4843dd55e78c51e30e89b0fec618a7f170ebcc95b33182c28f05fd6 - languageName: node - linkType: hard - "cspell-config-lib@npm:8.19.4": version: 8.19.4 resolution: "cspell-config-lib@npm:8.19.4" @@ -7655,7 +7157,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.1": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -7684,11 +7186,11 @@ __metadata: linkType: hard "decode-named-character-reference@npm:^1.0.0": - version: 1.2.0 - resolution: "decode-named-character-reference@npm:1.2.0" + version: 1.3.0 + resolution: "decode-named-character-reference@npm:1.3.0" dependencies: character-entities: "npm:^2.0.0" - checksum: 10/f26b23046c1a137c0b41fa51e3ce07ba8364640322c742a31570999784abc8572fc24cb108a76b14ff72ddb75d35aad3d14b10d7743639112145a2664b9d1864 + checksum: 10/82eb1208abf59d1f1e368285b6880201a3c3f147a4d7ce74e44cd41374ef00c9a376e8595e38002031db63291f91f7f3ff56b9724f715befff8f5566593d6de0 languageName: node linkType: hard @@ -7807,7 +7309,7 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0, destroy@npm:~1.2.0": +"destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10/0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 @@ -7968,9 +7470,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.263": - version: 1.5.266 - resolution: "electron-to-chromium@npm:1.5.266" - checksum: 10/2c7e05d1df189013e01b9fa19f5794dc249b80f330ab87f78674fa7416df153e2d32738d16914eee1112b5d8878b6181336e502215a34c63c255da078de5209d + version: 1.5.302 + resolution: "electron-to-chromium@npm:1.5.302" + checksum: 10/0d31470d04a0d1ea046dd363370081b67e6fe822949b10cfece0a64fd2f8180afb5ccaf14f4294251e444a0af627eb0dc0156242b714c0f10561adf2a21aa5f7 languageName: node linkType: hard @@ -8009,15 +7511,6 @@ __metadata: languageName: node linkType: hard -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - "end-of-stream@npm:^1.1.0": version: 1.4.5 resolution: "end-of-stream@npm:1.4.5" @@ -8071,13 +7564,6 @@ __metadata: languageName: node linkType: hard -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10/1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd - languageName: node - linkType: hard - "error-ex@npm:^1.3.1": version: 1.3.4 resolution: "error-ex@npm:1.3.4" @@ -8097,18 +7583,18 @@ __metadata: linkType: hard "errorhandler@npm:^1.5.1": - version: 1.5.1 - resolution: "errorhandler@npm:1.5.1" + version: 1.5.2 + resolution: "errorhandler@npm:1.5.2" dependencies: - accepts: "npm:~1.3.7" + accepts: "npm:~1.3.8" escape-html: "npm:~1.0.3" - checksum: 10/73b7abb08fb751107e9bebecc33c40c0641a54be8bda8e4a045f3f5cb7b805041927fef5629ea39b1737799eb52fe2499ca531f11ac51b0294ccc4667d72cb91 + checksum: 10/7ce0a598cc2c52840e32b46d2da8c7b0a4594aa67e93db46112cf791d4c8a4a1299af7f7aa65253d2e9d42af4d275c96387c0d186427df5ee93d33670bdac541 languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": - version: 1.24.0 - resolution: "es-abstract@npm:1.24.0" +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.1": + version: 1.24.1 + resolution: "es-abstract@npm:1.24.1" dependencies: array-buffer-byte-length: "npm:^1.0.2" arraybuffer.prototype.slice: "npm:^1.0.4" @@ -8164,7 +7650,7 @@ __metadata: typed-array-length: "npm:^1.0.7" unbox-primitive: "npm:^1.1.0" which-typed-array: "npm:^1.1.19" - checksum: 10/64e07a886f7439cf5ccfc100f9716e6173e10af6071a50a5031afbdde474a3dbc9619d5965da54e55f8908746a9134a46be02af8c732d574b7b81ed3124e2daf + checksum: 10/c84cb69ebae36781309a3ed70ff40b4767a921d3b3518060fac4e08f14ede04491b68e9f318aedf186e349d4af4a40f5d0e4111e46513800e8368551fd09de8c languageName: node linkType: hard @@ -8183,26 +7669,26 @@ __metadata: linkType: hard "es-iterator-helpers@npm:^1.2.1": - version: 1.2.1 - resolution: "es-iterator-helpers@npm:1.2.1" + version: 1.2.2 + resolution: "es-iterator-helpers@npm:1.2.2" dependencies: call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" + call-bound: "npm:^1.0.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.6" + es-abstract: "npm:^1.24.1" es-errors: "npm:^1.3.0" - es-set-tostringtag: "npm:^2.0.3" + es-set-tostringtag: "npm:^2.1.0" function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.6" + get-intrinsic: "npm:^1.3.0" globalthis: "npm:^1.0.4" gopd: "npm:^1.2.0" has-property-descriptors: "npm:^1.0.2" has-proto: "npm:^1.2.0" has-symbols: "npm:^1.1.0" internal-slot: "npm:^1.1.0" - iterator.prototype: "npm:^1.1.4" + iterator.prototype: "npm:^1.1.5" safe-array-concat: "npm:^1.1.3" - checksum: 10/802e0e8427a05ff4a5b0c70c7fdaaeff37cdb81a28694aeb7bfb831c6ab340d8f3deeb67b96732ff9e9699ea240524d5ea8a9a6a335fcd15aa3983b27b06113f + checksum: 10/17b5b2834c4f5719d6ce0e837a4d11c6ba4640bee28290d22ec4daf7106ec3d5fe0ff4f7e5dbaa2b4612e8335934360e964a8f08608d43f2889da106b25481ee languageName: node linkType: hard @@ -8215,7 +7701,7 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": +"es-set-tostringtag@npm:^2.1.0": version: 2.1.0 resolution: "es-set-tostringtag@npm:2.1.0" dependencies: @@ -8355,11 +7841,11 @@ __metadata: linkType: hard "eslint-plugin-prettier@npm:^5.0.1": - version: 5.5.4 - resolution: "eslint-plugin-prettier@npm:5.5.4" + version: 5.5.5 + resolution: "eslint-plugin-prettier@npm:5.5.5" dependencies: - prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.11.7" + prettier-linter-helpers: "npm:^1.0.1" + synckit: "npm:^0.11.12" peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" @@ -8370,7 +7856,7 @@ __metadata: optional: true eslint-config-prettier: optional: true - checksum: 10/5e39e3b7046d4ba0e1111cc2048630ee9d0aa5d5bb00d6230bef56893fdae37cbe2261babfb26db350cc2ad517c81d283b3f8b04cfee4e5aef7cd4bee72f90de + checksum: 10/36c22c2fa2fd7c61ed292af1280e1d8f94dfe1671eacc5a503a249ca4b27fd226dbf6a1820457d611915926946f42729488d2dc7a5c320601e6cf1fad0d28f66 languageName: node linkType: hard @@ -8533,11 +8019,11 @@ __metadata: linkType: hard "esquery@npm:^1.4.2": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a + checksum: 10/4afaf3089367e1f5885caa116ef386dffd8bfd64da21fd3d0e56e938d2667cfb2e5400ab4a825aa70e799bb3741e5b5d63c0b94d86e2d4cf3095c9e64b2f5a15 languageName: node linkType: hard @@ -8585,13 +8071,6 @@ __metadata: languageName: node linkType: hard -"exec-async@npm:^2.2.0": - version: 2.2.0 - resolution: "exec-async@npm:2.2.0" - checksum: 10/35932a49c825245e1fe022848a3ffef71717955149a3af8d56bf15b04a21c8f098581ffe2e4916a9dbd7736ce559365ccd55327e72422136adb9f4af867e1203 - languageName: node - linkType: hard - "execa@npm:^4.0.3": version: 4.1.0 resolution: "execa@npm:4.1.0" @@ -8647,7 +8126,7 @@ __metadata: languageName: node linkType: hard -"expo-asset@npm:12.0.11, expo-asset@npm:~12.0.11": +"expo-asset@npm:12.0.11": version: 12.0.11 resolution: "expo-asset@npm:12.0.11" dependencies: @@ -8695,20 +8174,7 @@ __metadata: languageName: node linkType: hard -"expo-constants@npm:~18.0.11": - version: 18.0.11 - resolution: "expo-constants@npm:18.0.11" - dependencies: - "@expo/config": "npm:~12.0.11" - "@expo/env": "npm:~2.0.8" - peerDependencies: - expo: "*" - react-native: "*" - checksum: 10/4da78ce638b417d1cb958b8f7c56a54a84cd1cd600d8e62751a32ca858b130e8fe1db7d97acc765d667e7668e401247016b62bfc88cd8624cc92e2345bbd4cb8 - languageName: node - linkType: hard - -"expo-constants@npm:~18.0.12, expo-constants@npm:~18.0.13": +"expo-constants@npm:~18.0.11, expo-constants@npm:~18.0.12, expo-constants@npm:~18.0.13": version: 18.0.13 resolution: "expo-constants@npm:18.0.13" dependencies: @@ -8731,30 +8197,7 @@ __metadata: languageName: node linkType: hard -"expo-file-system@npm:~19.0.20": - version: 19.0.20 - resolution: "expo-file-system@npm:19.0.20" - peerDependencies: - expo: "*" - react-native: "*" - checksum: 10/c0ead2eb2f97840fea54f88bcc41f0094d5bef19b6261d768bdaa9fd06e5accf40ce49fe183f84d7042484b7595319cf37691123b699b0f2b00c81068582fbe9 - languageName: node - linkType: hard - -"expo-font@npm:~14.0.10": - version: 14.0.10 - resolution: "expo-font@npm:14.0.10" - dependencies: - fontfaceobserver: "npm:^2.1.0" - peerDependencies: - expo: "*" - react: "*" - react-native: "*" - checksum: 10/3fb7d87c75c818c3c8503d43f9e13b3d237f2e128bcb59e09b8fdad3eaf1aece2ab89030d5cffbeb5b172d7b030df627e4319b0fdd97e6f6d57e27bbdb520f22 - languageName: node - linkType: hard - -"expo-font@npm:~14.0.11": +"expo-font@npm:~14.0.10, expo-font@npm:~14.0.11": version: 14.0.11 resolution: "expo-font@npm:14.0.11" dependencies: @@ -8778,30 +8221,15 @@ __metadata: linkType: hard "expo-linking@npm:~8.0.10": - version: 8.0.10 - resolution: "expo-linking@npm:8.0.10" + version: 8.0.11 + resolution: "expo-linking@npm:8.0.11" dependencies: - expo-constants: "npm:~18.0.11" + expo-constants: "npm:~18.0.12" invariant: "npm:^2.2.4" peerDependencies: react: "*" react-native: "*" - checksum: 10/332353a7ca3dd1112e92ba73d95a51fc22c518725b02bd2aca7fdbd12f26b8879d3bcf3321fc94ca95485ebf00e72b42b64af0b11b611bd91ad4f79303342c31 - languageName: node - linkType: hard - -"expo-modules-autolinking@npm:3.0.23": - version: 3.0.23 - resolution: "expo-modules-autolinking@npm:3.0.23" - dependencies: - "@expo/spawn-async": "npm:^1.7.2" - chalk: "npm:^4.1.0" - commander: "npm:^7.2.0" - require-from-string: "npm:^2.0.2" - resolve-from: "npm:^5.0.0" - bin: - expo-modules-autolinking: bin/expo-modules-autolinking.js - checksum: 10/d16b686a2f8a1b665e2d3bd98c60c94d4a276c24367c8a0bf6d7c81e5ec3c6ac24cec811bc3fc8ec440d7a98355e1123cf9ab3cc830500f325be9a742b50efcb + checksum: 10/b43851e173e5b2b21ac7cfc1fef05ae1cb39209c82af73943abb1e701a767e3759cf4a85e47bb181ab8a0c7b080f9b9d9b7d52f6c54f620f06dad7848e05f336 languageName: node linkType: hard @@ -8820,18 +8248,6 @@ __metadata: languageName: node linkType: hard -"expo-modules-core@npm:3.0.28": - version: 3.0.28 - resolution: "expo-modules-core@npm:3.0.28" - dependencies: - invariant: "npm:^2.2.4" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10/9ee68a2f75b7658d05de3ed54be9039e7a248a1c89ca1bf582d1635d2fff50ac0ac6de7a1d2b315aca5df432f0d67064d2cd2ad63ee2b5cb30c9f738fb92a9c7 - languageName: node - linkType: hard - "expo-modules-core@npm:3.0.29": version: 3.0.29 resolution: "expo-modules-core@npm:3.0.29" @@ -8845,8 +8261,8 @@ __metadata: linkType: hard "expo-router@npm:~6.0.17": - version: 6.0.17 - resolution: "expo-router@npm:6.0.17" + version: 6.0.23 + resolution: "expo-router@npm:6.0.23" dependencies: "@expo/metro-runtime": "npm:^6.1.2" "@expo/schema-utils": "npm:^0.1.8" @@ -8876,8 +8292,8 @@ __metadata: "@react-navigation/drawer": ^7.5.0 "@testing-library/react-native": ">= 12.0.0" expo: "*" - expo-constants: ^18.0.11 - expo-linking: ^8.0.10 + expo-constants: ^18.0.13 + expo-linking: ^8.0.11 react: "*" react-dom: "*" react-native: "*" @@ -8886,7 +8302,7 @@ __metadata: react-native-safe-area-context: ">= 5.4.0" react-native-screens: "*" react-native-web: "*" - react-server-dom-webpack: ~19.0.1 || ~19.1.2 || ~19.2.1 + react-server-dom-webpack: ~19.0.4 || ~19.1.5 || ~19.2.4 peerDependenciesMeta: "@react-navigation/drawer": optional: true @@ -8902,7 +8318,7 @@ __metadata: optional: true react-server-dom-webpack: optional: true - checksum: 10/3d6e6774add5c84045bc07843c09e4e0f25eb65de5cee6d13f53ff61c2daefb47106db70308d0cead96e9166a31faa8cb94eccc23e57f21e9d9446e6f9c9a6fb + checksum: 10/37b92fb8adc038ff5813298235a66bd22ac9a6002d5f016f3ceefa3f96e59910de6e069f0a27b9c23f6b2b40171a6589d31ad944cfe85171a4484937e981676d languageName: node linkType: hard @@ -8925,12 +8341,12 @@ __metadata: languageName: node linkType: hard -"expo@npm:^54.0.0": - version: 54.0.32 - resolution: "expo@npm:54.0.32" +"expo@npm:^54.0.0, expo@npm:^54.0.27": + version: 54.0.33 + resolution: "expo@npm:54.0.33" dependencies: "@babel/runtime": "npm:^7.20.0" - "@expo/cli": "npm:54.0.22" + "@expo/cli": "npm:54.0.23" "@expo/config": "npm:~12.0.13" "@expo/config-plugins": "npm:~54.0.4" "@expo/devtools": "npm:0.1.8" @@ -8967,53 +8383,7 @@ __metadata: expo: bin/cli expo-modules-autolinking: bin/autolinking fingerprint: bin/fingerprint - checksum: 10/78c9b88b98bcf424c00ffdd399b77e6fbf34f2c26a3d420e731bfccd9cdfb54e95f27b539d071155c4144ae7157e2700f9d22d4b2816974b20f8fcf0675bbb05 - languageName: node - linkType: hard - -"expo@npm:^54.0.27": - version: 54.0.27 - resolution: "expo@npm:54.0.27" - dependencies: - "@babel/runtime": "npm:^7.20.0" - "@expo/cli": "npm:54.0.18" - "@expo/config": "npm:~12.0.11" - "@expo/config-plugins": "npm:~54.0.3" - "@expo/devtools": "npm:0.1.8" - "@expo/fingerprint": "npm:0.15.4" - "@expo/metro": "npm:~54.1.0" - "@expo/metro-config": "npm:54.0.10" - "@expo/vector-icons": "npm:^15.0.3" - "@ungap/structured-clone": "npm:^1.3.0" - babel-preset-expo: "npm:~54.0.8" - expo-asset: "npm:~12.0.11" - expo-constants: "npm:~18.0.11" - expo-file-system: "npm:~19.0.20" - expo-font: "npm:~14.0.10" - expo-keep-awake: "npm:~15.0.8" - expo-modules-autolinking: "npm:3.0.23" - expo-modules-core: "npm:3.0.28" - pretty-format: "npm:^29.7.0" - react-refresh: "npm:^0.14.2" - whatwg-url-without-unicode: "npm:8.0.0-3" - peerDependencies: - "@expo/dom-webview": "*" - "@expo/metro-runtime": "*" - react: "*" - react-native: "*" - react-native-webview: "*" - peerDependenciesMeta: - "@expo/dom-webview": - optional: true - "@expo/metro-runtime": - optional: true - react-native-webview: - optional: true - bin: - expo: bin/cli - expo-modules-autolinking: bin/autolinking - fingerprint: bin/fingerprint - checksum: 10/58917b6a363d8908395cf283f1e72f5e5c253619e297896160dafe1d18acb8feb46b76d880d9b52c96954aebe78f7069cf623726ad8921d431d07f9527a0699f + checksum: 10/ed672f78333cf50545ea1cca8181506604150cca01a8aae782da30ddcba185d68f2d48f2ca10dee575a7abbc7913cca3f4c3d34d98373b0e9706b344030fa929 languageName: node linkType: hard @@ -9039,9 +8409,9 @@ __metadata: linkType: hard "fast-equals@npm:^5.2.2": - version: 5.3.3 - resolution: "fast-equals@npm:5.3.3" - checksum: 10/e9af422e313564f9f5db60a655d50e0baec23140da14165b2d191a243fef7c16eac10c4aa1659acd74c00bf1aa623f46e8eee91742af2beb539a6dfb63c8cd96 + version: 5.4.0 + resolution: "fast-equals@npm:5.4.0" + checksum: 10/bea068ceb7825d486d88a17ccc3fe889d1833efefa8dc64c83806e797f66b3ea953ac4aebd96af022d828de315ec87476e76418a5da774217d0ab66de53d68f5 languageName: node linkType: hard @@ -9072,23 +8442,31 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:^4.4.1": - version: 4.5.3 - resolution: "fast-xml-parser@npm:4.5.3" +"fast-xml-builder@npm:^1.0.0": + version: 1.0.0 + resolution: "fast-xml-builder@npm:1.0.0" + checksum: 10/06c04d80545e5c9f4d1d6cca00567b5cc09953a92c6328fa48cfb4d7f42630313b8c2bb62e9cb81accee7bb5e1c5312fcae06c3d20dbe52d969a5938233316da + languageName: node + linkType: hard + +"fast-xml-parser@npm:^5.3.6": + version: 5.4.1 + resolution: "fast-xml-parser@npm:5.4.1" dependencies: - strnum: "npm:^1.1.1" + fast-xml-builder: "npm:^1.0.0" + strnum: "npm:^2.1.2" bin: fxparser: src/cli/cli.js - checksum: 10/ca22bf9d65c10b8447c1034c13403e90ecee210e2b3852690df3d8a42b8a46ec655fae7356096abd98a15b89ddaf11878587b1773e0c3be4cbc2ac4af4c7bf95 + checksum: 10/2b40067c3ad3542ca197d1353bcb0416cd5db20d5c66d74ac176b99af6ff9bd55a6182d36856a2fd477c95b8fc1f07405475f1662a31185480130ba7076c702a languageName: node linkType: hard "fastq@npm:^1.6.0": - version: 1.19.1 - resolution: "fastq@npm:1.19.1" + version: 1.20.1 + resolution: "fastq@npm:1.20.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10/75679dc226316341c4f2a6b618571f51eac96779906faecd8921b984e844d6ae42fabb2df69b1071327d398d5716693ea9c9c8941f64ac9e89ec2032ce59d730 + checksum: 10/ab2fe3a7a108112e7752cfe7fc11683c21e595913a6a593ad0b4415f31dddbfc283775ab66f2c8ccea6ab7cfc116157cbddcfae9798d9de98d08fe0a2c3e97b2 languageName: node linkType: hard @@ -9250,7 +8628,7 @@ __metadata: languageName: node linkType: hard -"fresh@npm:0.5.2": +"fresh@npm:~0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" checksum: 10/64c88e489b5d08e2f29664eb3c79c705ff9a8eb15d3e597198ef76546d4ade295897a44abb0abd2700e7ef784b2e3cbf1161e4fbf16f59129193fd1030d16da1 @@ -9484,13 +8862,13 @@ __metadata: linkType: hard "glob@npm:^13.0.0": - version: 13.0.0 - resolution: "glob@npm:13.0.0" + version: 13.0.6 + resolution: "glob@npm:13.0.6" dependencies: - minimatch: "npm:^10.1.1" - minipass: "npm:^7.1.2" - path-scurry: "npm:^2.0.0" - checksum: 10/de390721d29ee1c9ea41e40ec2aa0de2cabafa68022e237dc4297665a5e4d650776f2573191984ea1640aba1bf0ea34eddef2d8cbfbfc2ad24b5fb0af41d8846 + minimatch: "npm:^10.2.2" + minipass: "npm:^7.1.3" + path-scurry: "npm:^2.0.2" + checksum: 10/201ad69e5f0aa74e1d8c00a481581f8b8c804b6a4fbfabeeb8541f5d756932800331daeba99b58fb9e4cd67e12ba5a7eba5b82fb476691588418060b84353214 languageName: node linkType: hard @@ -9517,15 +8895,6 @@ __metadata: languageName: node linkType: hard -"global-dirs@npm:^0.1.1": - version: 0.1.1 - resolution: "global-dirs@npm:0.1.1" - dependencies: - ini: "npm:^1.3.4" - checksum: 10/10624f5a8ddb8634c22804c6b24f93fb591c3639a6bc78e3584e01a238fc6f7b7965824184e57d63f6df36980b6c191484ad7bc6c35a1599b8f1d64be64c2a4a - languageName: node - linkType: hard - "globals@npm:^13.19.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -9756,20 +9125,7 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: "npm:2.0.0" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - toidentifier: "npm:1.0.1" - checksum: 10/0e7f76ee8ff8a33e58a3281a469815b893c41357378f408be8f6d4aa7d1efafb0da064625518e7078381b6a92325949b119dc38fcb30bdbc4e3a35f78c44c439 - languageName: node - linkType: hard - -"http-errors@npm:~2.0.1": +"http-errors@npm:^2.0.0, http-errors@npm:~2.0.1": version: 2.0.1 resolution: "http-errors@npm:2.0.1" dependencies: @@ -9823,21 +9179,12 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" +"iconv-lite@npm:^0.7.0, iconv-lite@npm:^0.7.2, iconv-lite@npm:~0.7.0": + version: 0.7.2 + resolution: "iconv-lite@npm:0.7.2" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10/24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f - languageName: node - linkType: hard - -"iconv-lite@npm:~0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3" - checksum: 10/6d3a2dac6e5d1fb126d25645c25c3a1209f70cceecc68b8ef51ae0da3cdc078c151fade7524a30b12a3094926336831fca09c666ef55b37e2c69638b5d6bd2e3 + checksum: 10/24c937b532f868e938386b62410b303b7c767ce3d08dc2829cbe59464d5a26ef86ae5ad1af6b34eec43ddfea39e7d101638644b0178d67262fa87015d59f983a languageName: node linkType: hard @@ -9929,7 +9276,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 @@ -9943,7 +9290,7 @@ __metadata: languageName: node linkType: hard -"ini@npm:^1.3.4, ini@npm:~1.3.0": +"ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" checksum: 10/314ae176e8d4deb3def56106da8002b462221c174ddb7ce0c49ee72c8cd1f9044f7b10cc555a7d8850982c3b9ca96fc212122749f5234bc2b6fb05fb942ed566 @@ -10068,7 +9415,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.1": +"is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -10412,10 +9759,10 @@ __metadata: languageName: node linkType: hard -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 10/7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e +"isexe@npm:^4.0.0": + version: 4.0.0 + resolution: "isexe@npm:4.0.0" + checksum: 10/2ead327ef596042ef9c9ec5f236b316acfaedb87f4bb61b3c3d574fb2e9c8a04b67305e04733bde52c24d9622fdebd3270aadb632adfbf9cadef88fe30f479e5 languageName: node linkType: hard @@ -10484,7 +9831,7 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.4": +"iterator.prototype@npm:^1.1.5": version: 1.1.5 resolution: "iterator.prototype@npm:1.1.5" dependencies: @@ -11204,11 +10551,11 @@ __metadata: linkType: hard "jsonrepair@npm:^3.12.0": - version: 3.13.1 - resolution: "jsonrepair@npm:3.13.1" + version: 3.13.2 + resolution: "jsonrepair@npm:3.13.2" bin: jsonrepair: bin/cli.js - checksum: 10/cea418eeafe60ebbbf57207d2029fab7be229814c21dacca8380b3da331bc441ddd575cb2e1b533d0e0402e7291b18576686b7c96e6bc31547b8d996fde0001d + checksum: 10/c0c1ec46af1d8e396c22e4d41e4d85eff2c713afdb71b6634a72ed4f356b79259affadb4e79b31042e4c1634313ddc0b3d7960fd74f5fba918198ecc74fe5e82 languageName: node linkType: hard @@ -11264,12 +10611,12 @@ __metadata: linkType: hard "launch-editor@npm:^2.9.1": - version: 2.12.0 - resolution: "launch-editor@npm:2.12.0" + version: 2.13.1 + resolution: "launch-editor@npm:2.13.1" dependencies: picocolors: "npm:^1.1.1" shell-quote: "npm:^1.8.3" - checksum: 10/43d2b66c674d129f9a96bbae602808a0afa7e6bb6f38de5518479e33b1a542e9772b262304505c2aa363b0185424580b4011a9198082d306e2b419c6f12da5e2 + checksum: 10/641aafaad6bafe5d33a13d89eff29082b032c1c5c1aa19fb9fa3b54ffcf26a3419f461a7583f6450bd5b11863b061b60049e38c2d5135492bf46f2ed3a2cbc0e languageName: node linkType: hard @@ -11300,99 +10647,99 @@ __metadata: languageName: node linkType: hard -"lightningcss-android-arm64@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-android-arm64@npm:1.30.2" +"lightningcss-android-arm64@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-android-arm64@npm:1.31.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"lightningcss-darwin-arm64@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-darwin-arm64@npm:1.30.2" +"lightningcss-darwin-arm64@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-darwin-arm64@npm:1.31.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"lightningcss-darwin-x64@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-darwin-x64@npm:1.30.2" +"lightningcss-darwin-x64@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-darwin-x64@npm:1.31.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"lightningcss-freebsd-x64@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-freebsd-x64@npm:1.30.2" +"lightningcss-freebsd-x64@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-freebsd-x64@npm:1.31.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"lightningcss-linux-arm-gnueabihf@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-arm-gnueabihf@npm:1.30.2" +"lightningcss-linux-arm-gnueabihf@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.31.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"lightningcss-linux-arm64-gnu@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-arm64-gnu@npm:1.30.2" +"lightningcss-linux-arm64-gnu@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-arm64-gnu@npm:1.31.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"lightningcss-linux-arm64-musl@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-arm64-musl@npm:1.30.2" +"lightningcss-linux-arm64-musl@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-arm64-musl@npm:1.31.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"lightningcss-linux-x64-gnu@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-x64-gnu@npm:1.30.2" +"lightningcss-linux-x64-gnu@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-x64-gnu@npm:1.31.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"lightningcss-linux-x64-musl@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-x64-musl@npm:1.30.2" +"lightningcss-linux-x64-musl@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-x64-musl@npm:1.31.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"lightningcss-win32-arm64-msvc@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-win32-arm64-msvc@npm:1.30.2" +"lightningcss-win32-arm64-msvc@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-win32-arm64-msvc@npm:1.31.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"lightningcss-win32-x64-msvc@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-win32-x64-msvc@npm:1.30.2" +"lightningcss-win32-x64-msvc@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-win32-x64-msvc@npm:1.31.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "lightningcss@npm:^1.30.1": - version: 1.30.2 - resolution: "lightningcss@npm:1.30.2" + version: 1.31.1 + resolution: "lightningcss@npm:1.31.1" dependencies: detect-libc: "npm:^2.0.3" - lightningcss-android-arm64: "npm:1.30.2" - lightningcss-darwin-arm64: "npm:1.30.2" - lightningcss-darwin-x64: "npm:1.30.2" - lightningcss-freebsd-x64: "npm:1.30.2" - lightningcss-linux-arm-gnueabihf: "npm:1.30.2" - lightningcss-linux-arm64-gnu: "npm:1.30.2" - lightningcss-linux-arm64-musl: "npm:1.30.2" - lightningcss-linux-x64-gnu: "npm:1.30.2" - lightningcss-linux-x64-musl: "npm:1.30.2" - lightningcss-win32-arm64-msvc: "npm:1.30.2" - lightningcss-win32-x64-msvc: "npm:1.30.2" + lightningcss-android-arm64: "npm:1.31.1" + lightningcss-darwin-arm64: "npm:1.31.1" + lightningcss-darwin-x64: "npm:1.31.1" + lightningcss-freebsd-x64: "npm:1.31.1" + lightningcss-linux-arm-gnueabihf: "npm:1.31.1" + lightningcss-linux-arm64-gnu: "npm:1.31.1" + lightningcss-linux-arm64-musl: "npm:1.31.1" + lightningcss-linux-x64-gnu: "npm:1.31.1" + lightningcss-linux-x64-musl: "npm:1.31.1" + lightningcss-win32-arm64-msvc: "npm:1.31.1" + lightningcss-win32-x64-msvc: "npm:1.31.1" dependenciesMeta: lightningcss-android-arm64: optional: true @@ -11416,7 +10763,7 @@ __metadata: optional: true lightningcss-win32-x64-msvc: optional: true - checksum: 10/d6cc06d9bac295589a49446e9c45a241dfa16f4f81a7318c26cbc0be3e189003ec0da5d9a0fd9bdffc63a3ce05878cc7329277eaac77a826e8b68c73dc96cfda + checksum: 10/3c2b2c2f648b12d9cba623d2e558f74fcce35911077e3d33f97ed521e0ad7a84e2c814628f6e16f64095c4483f6b180dee7b2e441b3ff5f44d142a510785a0c6 languageName: node linkType: hard @@ -11512,9 +10859,9 @@ __metadata: linkType: hard "lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 + version: 4.17.23 + resolution: "lodash@npm:4.17.23" + checksum: 10/82504c88250f58da7a5a4289f57a4f759c44946c005dd232821c7688b5fcfbf4a6268f6a6cdde4b792c91edd2f3b5398c1d2a0998274432cff76def48735e233 languageName: node linkType: hard @@ -11578,9 +10925,9 @@ __metadata: linkType: hard "lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": - version: 11.2.4 - resolution: "lru-cache@npm:11.2.4" - checksum: 10/3b2da74c0b6653767f8164c38c4c4f4d7f0cc10c62bfa512663d94a830191ae6a5af742a8d88a8b30d5f9974652d3adae53931f32069139ad24fa2a18a199aca + version: 11.2.6 + resolution: "lru-cache@npm:11.2.6" + checksum: 10/91222bbd59f793a0a0ad57789388f06b34ac9bb1613433c1d1810457d09db5cd3ec8943227ce2e1f5d6a0a15d6f1a9f129cb2c49ae9b6b10e82d4965fddecbef languageName: node linkType: hard @@ -11603,9 +10950,10 @@ __metadata: linkType: hard "make-fetch-happen@npm:^15.0.0": - version: 15.0.3 - resolution: "make-fetch-happen@npm:15.0.3" + version: 15.0.4 + resolution: "make-fetch-happen@npm:15.0.4" dependencies: + "@gar/promise-retry": "npm:^1.0.0" "@npmcli/agent": "npm:^4.0.0" cacache: "npm:^20.0.1" http-cache-semantics: "npm:^4.1.1" @@ -11615,9 +10963,8 @@ __metadata: minipass-pipeline: "npm:^1.2.4" negotiator: "npm:^1.0.0" proc-log: "npm:^6.0.0" - promise-retry: "npm:^2.0.1" ssri: "npm:^13.0.0" - checksum: 10/78da4fc1df83cb596e2bae25aa0653b8a9c6cbdd6674a104894e03be3acfcd08c70b78f06ef6407fbd6b173f6a60672480d78641e693d05eb71c09c13ee35278 + checksum: 10/4aa75baab500eff4259f2e1a3e76cf01ab3a3cd750037e4bd7b5e22bc5a60f12cc766b3c45e6288accb5ab609e88de5019a8014e0f96f6594b7b03cb504f4b81 languageName: node linkType: hard @@ -11673,8 +11020,8 @@ __metadata: linkType: hard "mdast-util-from-markdown@npm:^2.0.0": - version: 2.0.2 - resolution: "mdast-util-from-markdown@npm:2.0.2" + version: 2.0.3 + resolution: "mdast-util-from-markdown@npm:2.0.3" dependencies: "@types/mdast": "npm:^4.0.0" "@types/unist": "npm:^3.0.0" @@ -11688,7 +11035,7 @@ __metadata: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" unist-util-stringify-position: "npm:^4.0.0" - checksum: 10/69b207913fbcc0469f8c59d922af4d5509b79e809d77c9bd4781543a907fe2ecc8e6433ce0707066a27b117b13f38af3aae4f2d085e18ebd2d3ad5f1a5647902 + checksum: 10/96f2bfb3b240c3d20a57db5d215faed795abf495c65ca2a4d61c0cf796011bc980619aa032d7984b05b67c15edc0eccd12a004a848952d3a598d108cf14901ab languageName: node linkType: hard @@ -11736,10 +11083,10 @@ __metadata: languageName: node linkType: hard -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: 10/38e0984db39139604756903a01397e29e17dcb04207bb3e081412ce725ab17338ecc47220c1b186b6bbe79a658aad1b0d41142884f5a481f36290cdefbe6aa46 +"media-typer@npm:^1.1.0": + version: 1.1.0 + resolution: "media-typer@npm:1.1.0" + checksum: 10/a58dd60804df73c672942a7253ccc06815612326dc1c0827984b1a21704466d7cde351394f47649e56cf7415e6ee2e26e000e81b51b3eebb5a93540e8bf93cbd languageName: node linkType: hard @@ -11766,25 +11113,13 @@ __metadata: "metro-babel-transformer@npm:0.81.5": version: 0.81.5 - resolution: "metro-babel-transformer@npm:0.81.5" - dependencies: - "@babel/core": "npm:^7.25.2" - flow-enums-runtime: "npm:^0.0.6" - hermes-parser: "npm:0.25.1" - nullthrows: "npm:^1.1.1" - checksum: 10/331c079508418378294534e6a7da228dc6b271827c8622a148c1e0dfdd18729f16eeea84e96541e95e7eee126d49180f92540cd39b37a2f96bf5c015456f49a1 - languageName: node - linkType: hard - -"metro-babel-transformer@npm:0.83.2": - version: 0.83.2 - resolution: "metro-babel-transformer@npm:0.83.2" + resolution: "metro-babel-transformer@npm:0.81.5" dependencies: "@babel/core": "npm:^7.25.2" flow-enums-runtime: "npm:^0.0.6" - hermes-parser: "npm:0.32.0" + hermes-parser: "npm:0.25.1" nullthrows: "npm:^1.1.1" - checksum: 10/8ca98216c3fc32757cbb445d2e42042617b5a2399d3d409759b168fbd3d52aadf8bb2b8471e4b204ddf5c654b7b146397edb7693f48a0582e7e4e169cf3bbfbb + checksum: 10/331c079508418378294534e6a7da228dc6b271827c8622a148c1e0dfdd18729f16eeea84e96541e95e7eee126d49180f92540cd39b37a2f96bf5c015456f49a1 languageName: node linkType: hard @@ -11821,15 +11156,6 @@ __metadata: languageName: node linkType: hard -"metro-cache-key@npm:0.83.2": - version: 0.83.2 - resolution: "metro-cache-key@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - checksum: 10/ad60492b1db35b7d4eb1f9ed6f8aa79a051dcb1be3183fcd5b0a810e7c4ba5dba5e9f02e131ccd271d6db2efaa9893ef0e316ef26ebb3ab49cb074fada4de1b5 - languageName: node - linkType: hard - "metro-cache-key@npm:0.83.3": version: 0.83.3 resolution: "metro-cache-key@npm:0.83.3" @@ -11859,18 +11185,6 @@ __metadata: languageName: node linkType: hard -"metro-cache@npm:0.83.2": - version: 0.83.2 - resolution: "metro-cache@npm:0.83.2" - dependencies: - exponential-backoff: "npm:^3.1.1" - flow-enums-runtime: "npm:^0.0.6" - https-proxy-agent: "npm:^7.0.5" - metro-core: "npm:0.83.2" - checksum: 10/3183bcd8e0590ab4630f344f9dd4daa3b2371450e7f4546f2b1128b1386ecece204a74a7e3df49a8f3776b5a4a746fe4aa05f952a97e6f4f61deda80be5c55cf - languageName: node - linkType: hard - "metro-cache@npm:0.83.3": version: 0.83.3 resolution: "metro-cache@npm:0.83.3" @@ -11911,23 +11225,7 @@ __metadata: languageName: node linkType: hard -"metro-config@npm:0.83.2": - version: 0.83.2 - resolution: "metro-config@npm:0.83.2" - dependencies: - connect: "npm:^3.6.5" - flow-enums-runtime: "npm:^0.0.6" - jest-validate: "npm:^29.7.0" - metro: "npm:0.83.2" - metro-cache: "npm:0.83.2" - metro-core: "npm:0.83.2" - metro-runtime: "npm:0.83.2" - yaml: "npm:^2.6.1" - checksum: 10/830696bb515ad421f1a25003d64c01bca580b2485c69266e03faf0c8f36f55283388fda5505f53ae400f8298502f712aab6c76655e45996907588288d2586c6b - languageName: node - linkType: hard - -"metro-config@npm:0.83.3, metro-config@npm:^0.83.1": +"metro-config@npm:0.83.3": version: 0.83.3 resolution: "metro-config@npm:0.83.3" dependencies: @@ -11943,7 +11241,7 @@ __metadata: languageName: node linkType: hard -"metro-config@npm:0.83.4, metro-config@npm:^0.83.3": +"metro-config@npm:0.83.4, metro-config@npm:^0.83.1, metro-config@npm:^0.83.3": version: 0.83.4 resolution: "metro-config@npm:0.83.4" dependencies: @@ -11970,18 +11268,7 @@ __metadata: languageName: node linkType: hard -"metro-core@npm:0.83.2": - version: 0.83.2 - resolution: "metro-core@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - lodash.throttle: "npm:^4.1.1" - metro-resolver: "npm:0.83.2" - checksum: 10/dbbef6b6d0cdb76ff808928cda59086aa4fc04a50ff76be8e19bd181d9cf270f4fe0a6b60883d0230aeeba2ba65a68875af549c83c2cfee5a1f0988ed1b4fccd - languageName: node - linkType: hard - -"metro-core@npm:0.83.3, metro-core@npm:^0.83.1": +"metro-core@npm:0.83.3": version: 0.83.3 resolution: "metro-core@npm:0.83.3" dependencies: @@ -11992,7 +11279,7 @@ __metadata: languageName: node linkType: hard -"metro-core@npm:0.83.4": +"metro-core@npm:0.83.4, metro-core@npm:^0.83.1": version: 0.83.4 resolution: "metro-core@npm:0.83.4" dependencies: @@ -12020,23 +11307,6 @@ __metadata: languageName: node linkType: hard -"metro-file-map@npm:0.83.2": - version: 0.83.2 - resolution: "metro-file-map@npm:0.83.2" - dependencies: - debug: "npm:^4.4.0" - fb-watchman: "npm:^2.0.0" - flow-enums-runtime: "npm:^0.0.6" - graceful-fs: "npm:^4.2.4" - invariant: "npm:^2.2.4" - jest-worker: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - nullthrows: "npm:^1.1.1" - walker: "npm:^1.0.7" - checksum: 10/349a52c74cd02a1db75d0677c82e31750098e74a67bd1e10b2241e296897bfb20de2d8a2f27d7c292e2b3f492a36a191eb3c1bd5d09d5758b8febd36db86e58f - languageName: node - linkType: hard - "metro-file-map@npm:0.83.3": version: 0.83.3 resolution: "metro-file-map@npm:0.83.3" @@ -12081,16 +11351,6 @@ __metadata: languageName: node linkType: hard -"metro-minify-terser@npm:0.83.2": - version: 0.83.2 - resolution: "metro-minify-terser@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - terser: "npm:^5.15.0" - checksum: 10/ee164bdd3ddf797e1b0f9fd71960b662b40fc3abead77521b1e1435291d38cc151442348362d6afee0596d52fcff48cc6a055a04a7928905e9557968e05293ac - languageName: node - linkType: hard - "metro-minify-terser@npm:0.83.3": version: 0.83.3 resolution: "metro-minify-terser@npm:0.83.3" @@ -12169,15 +11429,6 @@ __metadata: languageName: node linkType: hard -"metro-resolver@npm:0.83.2": - version: 0.83.2 - resolution: "metro-resolver@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - checksum: 10/2ba0cdda5c5a3ddac72fd486a310892638ba7d67a736246ec128674dfa6217d6169bdd0f811874435eae37f0201d72735fe7dddfc0c83a9e1439f05994bc293a - languageName: node - linkType: hard - "metro-resolver@npm:0.83.3": version: 0.83.3 resolution: "metro-resolver@npm:0.83.3" @@ -12206,17 +11457,7 @@ __metadata: languageName: node linkType: hard -"metro-runtime@npm:0.83.2": - version: 0.83.2 - resolution: "metro-runtime@npm:0.83.2" - dependencies: - "@babel/runtime": "npm:^7.25.0" - flow-enums-runtime: "npm:^0.0.6" - checksum: 10/1666e0e5c51d39f916642ed3918cf1996f76e82366ba9ca3132d6c11c5c62a1ab1115e4aa325f0fc9b8cefbe62d6ca8d1948cfde2ee78963491deafcbc79adba - languageName: node - linkType: hard - -"metro-runtime@npm:0.83.3, metro-runtime@npm:^0.83.1": +"metro-runtime@npm:0.83.3": version: 0.83.3 resolution: "metro-runtime@npm:0.83.3" dependencies: @@ -12226,7 +11467,7 @@ __metadata: languageName: node linkType: hard -"metro-runtime@npm:0.83.4, metro-runtime@npm:^0.83.3": +"metro-runtime@npm:0.83.4, metro-runtime@npm:^0.83.1, metro-runtime@npm:^0.83.3": version: 0.83.4 resolution: "metro-runtime@npm:0.83.4" dependencies: @@ -12254,25 +11495,7 @@ __metadata: languageName: node linkType: hard -"metro-source-map@npm:0.83.2": - version: 0.83.2 - resolution: "metro-source-map@npm:0.83.2" - dependencies: - "@babel/traverse": "npm:^7.25.3" - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3" - "@babel/types": "npm:^7.25.2" - flow-enums-runtime: "npm:^0.0.6" - invariant: "npm:^2.2.4" - metro-symbolicate: "npm:0.83.2" - nullthrows: "npm:^1.1.1" - ob1: "npm:0.83.2" - source-map: "npm:^0.5.6" - vlq: "npm:^1.0.0" - checksum: 10/6253f6aa9a19ff35d70a08e1a434b9641874392e3cccec6abc8dcbac1c3e9289e348fa37960f16581c386e8f9ba743631ecc8ed5bf42817a5d5c54b6784c63b5 - languageName: node - linkType: hard - -"metro-source-map@npm:0.83.3, metro-source-map@npm:^0.83.1": +"metro-source-map@npm:0.83.3": version: 0.83.3 resolution: "metro-source-map@npm:0.83.3" dependencies: @@ -12290,7 +11513,7 @@ __metadata: languageName: node linkType: hard -"metro-source-map@npm:0.83.4": +"metro-source-map@npm:0.83.4, metro-source-map@npm:^0.83.1": version: 0.83.4 resolution: "metro-source-map@npm:0.83.4" dependencies: @@ -12323,22 +11546,6 @@ __metadata: languageName: node linkType: hard -"metro-symbolicate@npm:0.83.2": - version: 0.83.2 - resolution: "metro-symbolicate@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - invariant: "npm:^2.2.4" - metro-source-map: "npm:0.83.2" - nullthrows: "npm:^1.1.1" - source-map: "npm:^0.5.6" - vlq: "npm:^1.0.0" - bin: - metro-symbolicate: src/index.js - checksum: 10/1ddd82d0f1e236f4eb69c49b319a5446f364aaa421b4301554898abe86d23a452a5fb5113bfef6b6c68c2a697ad3a68fb00919a2f7b9b73a040c92689002a8d4 - languageName: node - linkType: hard - "metro-symbolicate@npm:0.83.3": version: 0.83.3 resolution: "metro-symbolicate@npm:0.83.3" @@ -12385,20 +11592,6 @@ __metadata: languageName: node linkType: hard -"metro-transform-plugins@npm:0.83.2": - version: 0.83.2 - resolution: "metro-transform-plugins@npm:0.83.2" - dependencies: - "@babel/core": "npm:^7.25.2" - "@babel/generator": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.3" - flow-enums-runtime: "npm:^0.0.6" - nullthrows: "npm:^1.1.1" - checksum: 10/e3ebef11d64e5e568fde3fe2edc5d7f1e9508b28c7607c14dd711bc29058cbfc97e53edbfee79bd60f58c189e4d74869d87a30488534024fe88503296a7d095a - languageName: node - linkType: hard - "metro-transform-plugins@npm:0.83.3": version: 0.83.3 resolution: "metro-transform-plugins@npm:0.83.3" @@ -12448,27 +11641,6 @@ __metadata: languageName: node linkType: hard -"metro-transform-worker@npm:0.83.2": - version: 0.83.2 - resolution: "metro-transform-worker@npm:0.83.2" - dependencies: - "@babel/core": "npm:^7.25.2" - "@babel/generator": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.3" - "@babel/types": "npm:^7.25.2" - flow-enums-runtime: "npm:^0.0.6" - metro: "npm:0.83.2" - metro-babel-transformer: "npm:0.83.2" - metro-cache: "npm:0.83.2" - metro-cache-key: "npm:0.83.2" - metro-minify-terser: "npm:0.83.2" - metro-source-map: "npm:0.83.2" - metro-transform-plugins: "npm:0.83.2" - nullthrows: "npm:^1.1.1" - checksum: 10/b4286b1b0511e46e2ec265e24138d03d8a794687260beae297de3d378285cce0e06132280dac62d447dfaf55627432c28463939a63136f3a84c2cf6b880d3865 - languageName: node - linkType: hard - "metro-transform-worker@npm:0.83.3": version: 0.83.3 resolution: "metro-transform-worker@npm:0.83.3" @@ -12561,57 +11733,7 @@ __metadata: languageName: node linkType: hard -"metro@npm:0.83.2": - version: 0.83.2 - resolution: "metro@npm:0.83.2" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/core": "npm:^7.25.2" - "@babel/generator": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.3" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.3" - "@babel/types": "npm:^7.25.2" - accepts: "npm:^1.3.7" - chalk: "npm:^4.0.0" - ci-info: "npm:^2.0.0" - connect: "npm:^3.6.5" - debug: "npm:^4.4.0" - error-stack-parser: "npm:^2.0.6" - flow-enums-runtime: "npm:^0.0.6" - graceful-fs: "npm:^4.2.4" - hermes-parser: "npm:0.32.0" - image-size: "npm:^1.0.2" - invariant: "npm:^2.2.4" - jest-worker: "npm:^29.7.0" - jsc-safe-url: "npm:^0.2.2" - lodash.throttle: "npm:^4.1.1" - metro-babel-transformer: "npm:0.83.2" - metro-cache: "npm:0.83.2" - metro-cache-key: "npm:0.83.2" - metro-config: "npm:0.83.2" - metro-core: "npm:0.83.2" - metro-file-map: "npm:0.83.2" - metro-resolver: "npm:0.83.2" - metro-runtime: "npm:0.83.2" - metro-source-map: "npm:0.83.2" - metro-symbolicate: "npm:0.83.2" - metro-transform-plugins: "npm:0.83.2" - metro-transform-worker: "npm:0.83.2" - mime-types: "npm:^2.1.27" - nullthrows: "npm:^1.1.1" - serialize-error: "npm:^2.1.0" - source-map: "npm:^0.5.6" - throat: "npm:^5.0.0" - ws: "npm:^7.5.10" - yargs: "npm:^17.6.2" - bin: - metro: src/cli.js - checksum: 10/524c0f98ce8be619a345f58c39d19e6d0e5745dfd156c9b0a06201e6d9ad59e4405922f09f56fe92a86df9e06b0e89b173a3136640f1ec69c395b9ca34c1b042 - languageName: node - linkType: hard - -"metro@npm:0.83.3, metro@npm:^0.83.1": +"metro@npm:0.83.3": version: 0.83.3 resolution: "metro@npm:0.83.3" dependencies: @@ -12661,7 +11783,7 @@ __metadata: languageName: node linkType: hard -"metro@npm:0.83.4": +"metro@npm:0.83.4, metro@npm:^0.83.1": version: 0.83.4 resolution: "metro@npm:0.83.4" dependencies: @@ -12981,7 +12103,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.27, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.27, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -13031,30 +12153,30 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^10.1.1": - version: 10.1.1 - resolution: "minimatch@npm:10.1.1" +"minimatch@npm:^10.2.2": + version: 10.2.4 + resolution: "minimatch@npm:10.2.4" dependencies: - "@isaacs/brace-expansion": "npm:^5.0.0" - checksum: 10/110f38921ea527022e90f7a5f43721838ac740d0a0c26881c03b57c261354fb9a0430e40b2c56dfcea2ef3c773768f27210d1106f1f2be19cde3eea93f26f45e + brace-expansion: "npm:^5.0.2" + checksum: 10/aea4874e521c55bb60744685bbffe3d152e5460f84efac3ea936e6bbe2ceba7deb93345fec3f9bb17f7b6946776073a64d40ae32bf5f298ad690308121068a1f languageName: node linkType: hard "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" + version: 3.1.5 + resolution: "minimatch@npm:3.1.5" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634 + checksum: 10/b11a7ee5773cd34c1a0c8436cdbe910901018fb4b6cb47aa508a18d567f6efd2148507959e35fba798389b161b8604a2d704ccef751ea36bd4582f9852b7d63f languageName: node linkType: hard "minimatch@npm:^9.0.0, minimatch@npm:^9.0.4": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" + version: 9.0.8 + resolution: "minimatch@npm:9.0.8" dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 + brace-expansion: "npm:^5.0.2" + checksum: 10/bffa6514fa576a5052cea75b96b1d4086598c3ba45464dffcff14d00c2866805c088072ae21460ade250455c2da72e67556b1c3b830ddaf0b4697dca62f6d744 languageName: node linkType: hard @@ -13075,17 +12197,17 @@ __metadata: linkType: hard "minipass-fetch@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass-fetch@npm:5.0.0" + version: 5.0.2 + resolution: "minipass-fetch@npm:5.0.2" dependencies: - encoding: "npm:^0.1.13" + iconv-lite: "npm:^0.7.2" minipass: "npm:^7.0.3" - minipass-sized: "npm:^1.0.3" + minipass-sized: "npm:^2.0.0" minizlib: "npm:^3.0.1" dependenciesMeta: - encoding: + iconv-lite: optional: true - checksum: 10/4fb7dca630a64e6970a8211dade505bfe260d0b8d60beb348dcdfb95fe35ef91d977b29963929c9017ae0805686aa3f413107dc6bc5deac9b9e26b0b41c3b86c + checksum: 10/4f3f65ea5b20a3a287765ebf21cc73e62031f754944272df2a3039296cc75a8fc2dc50b8a3c4f39ce3ac6e5cc583e8dc664d12c6ab98e0883d263e49f344bc86 languageName: node linkType: hard @@ -13107,12 +12229,12 @@ __metadata: languageName: node linkType: hard -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" +"minipass-sized@npm:^2.0.0": + version: 2.0.0 + resolution: "minipass-sized@npm:2.0.0" dependencies: - minipass: "npm:^3.0.0" - checksum: 10/40982d8d836a52b0f37049a0a7e5d0f089637298e6d9b45df9c115d4f0520682a78258905e5c8b180fb41b593b0a82cc1361d2c74b45f7ada66334f84d1ecfdd + minipass: "npm:^7.1.2" + checksum: 10/3b89adf64ca705662f77481e278eff5ec0a57aeffb5feba7cc8843722b1e7770efc880f2a17d1d4877b2d7bf227873cd46afb4da44c0fd18088b601ea50f96bb languageName: node linkType: hard @@ -13125,10 +12247,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": - version: 7.1.2 - resolution: "minipass@npm:7.1.2" - checksum: 10/c25f0ee8196d8e6036661104bacd743785b2599a21de5c516b32b3fa2b83113ac89a2358465bc04956baab37ffb956ae43be679b2262bf7be15fce467ccd7950 +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": + version: 7.1.3 + resolution: "minipass@npm:7.1.3" + checksum: 10/175e4d5e20980c3cd316ae82d2c031c42f6c746467d8b1905b51060a0ba4461441a0c25bb67c025fd9617f9a3873e152c7b543c6b5ac83a1846be8ade80dffd6 languageName: node linkType: hard @@ -13245,7 +12367,19 @@ __metadata: languageName: node linkType: hard -"node-forge@npm:^1.2.1, node-forge@npm:^1.3.1, node-forge@npm:^1.3.3": +"node-exports-info@npm:^1.6.0": + version: 1.6.0 + resolution: "node-exports-info@npm:1.6.0" + dependencies: + array.prototype.flatmap: "npm:^1.3.3" + es-errors: "npm:^1.3.0" + object.entries: "npm:^1.1.9" + semver: "npm:^6.3.1" + checksum: 10/0a1667d535f499ac1fe6c6d22f8146bc8b68abc76fa355856219202f6cf5f386027e0ff054e66a22d08be02acbc63fcdc9f98d0fbc97993f5eabc66408fdadad + languageName: node + linkType: hard + +"node-forge@npm:^1.3.3": version: 1.3.3 resolution: "node-forge@npm:1.3.3" checksum: 10/f41c31b9296771a4b8c955d58417471712f54f324603a35f8e6cbac19d5e6eaaf5fd5fd14584dfedecbf46a05438ded6eee60a5f2f0822fc5061aaa073cfc75d @@ -13253,8 +12387,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 12.1.0 - resolution: "node-gyp@npm:12.1.0" + version: 12.2.0 + resolution: "node-gyp@npm:12.2.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -13263,12 +12397,12 @@ __metadata: nopt: "npm:^9.0.0" proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" - tar: "npm:^7.5.2" + tar: "npm:^7.5.4" tinyglobby: "npm:^0.2.12" which: "npm:^6.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/d93079236cef1dd7fa4df683708d8708ad255c55865f6656664c8959e4d3963d908ac48e8f9f341705432e979dbbf502a40d68d65a17fe35956a5a05ba6c1cb4 + checksum: 10/4ebab5b77585a637315e969c2274b5520562473fe75de850639a580c2599652fb9f33959ec782ea45a2e149d8f04b548030f472eeeb3dbdf19a7f2ccbc30b908 languageName: node linkType: hard @@ -13357,15 +12491,6 @@ __metadata: languageName: node linkType: hard -"ob1@npm:0.83.2": - version: 0.83.2 - resolution: "ob1@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - checksum: 10/8eb482589b66cf46600d1231c2ea50a365f47ee5db0274795d1d3f5c43112e255b931a41ce1ef8a220f31b4fb985fb269c6a54bf7e9719f90dac3f4001a89a6c - languageName: node - linkType: hard - "ob1@npm:0.83.3": version: 0.83.3 resolution: "ob1@npm:0.83.3" @@ -13455,7 +12580,7 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:2.4.1, on-finished@npm:~2.4.1": +"on-finished@npm:^2.4.1, on-finished@npm:~2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: @@ -13774,13 +12899,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^2.0.0": - version: 2.0.1 - resolution: "path-scurry@npm:2.0.1" +"path-scurry@npm:^2.0.2": + version: 2.0.2 + resolution: "path-scurry@npm:2.0.2" dependencies: lru-cache: "npm:^11.0.0" minipass: "npm:^7.1.2" - checksum: 10/1e9c74e9ccf94d7c16056a5cb2dba9fa23eec1bc221ab15c44765486b9b9975b4cd9a4d55da15b96eadf67d5202e9a2f1cec9023fbb35fe7d9ccd0ff1891f88b + checksum: 10/2b4257422bcb870a4c2d205b3acdbb213a72f5e2250f61c80f79c9d014d010f82bdf8584441612c8e1fa4eb098678f5704a66fa8377d72646bad4be38e57a2c3 languageName: node linkType: hard @@ -13885,93 +13010,34 @@ __metadata: languageName: node linkType: hard -"prettier-linter-helpers@npm:^1.0.0": - version: 1.0.0 - resolution: "prettier-linter-helpers@npm:1.0.0" +"prettier-linter-helpers@npm:^1.0.1": + version: 1.0.1 + resolution: "prettier-linter-helpers@npm:1.0.1" dependencies: fast-diff: "npm:^1.1.2" - checksum: 10/00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 + checksum: 10/2dc35f5036a35f4c4f5e645887edda1436acb63687a7f12b2383e0a6f3c1f76b8a0a4709fe4d82e19157210feb5984b159bb714d43290022911ab53d606474ec languageName: node linkType: hard "prettier-plugin-jsdoc@npm:^1.3.0": - version: 1.7.0 - resolution: "prettier-plugin-jsdoc@npm:1.7.0" + version: 1.8.0 + resolution: "prettier-plugin-jsdoc@npm:1.8.0" dependencies: binary-searching: "npm:^2.0.5" comment-parser: "npm:^1.4.0" mdast-util-from-markdown: "npm:^2.0.0" - prettier-plugin-tailwindcss: "npm:^0.7.1" peerDependencies: prettier: ^3.0.0 - checksum: 10/28f71f429f453e9073c9bf3eff1131f0e461b21ff184f9da54d1f3919a5898817b32abd87440c7e342f2320280b44ff141096bafd20204f950cce60780552d8b - languageName: node - linkType: hard - -"prettier-plugin-tailwindcss@npm:^0.7.1": - version: 0.7.2 - resolution: "prettier-plugin-tailwindcss@npm:0.7.2" - peerDependencies: - "@ianvs/prettier-plugin-sort-imports": "*" - "@prettier/plugin-hermes": "*" - "@prettier/plugin-oxc": "*" - "@prettier/plugin-pug": "*" - "@shopify/prettier-plugin-liquid": "*" - "@trivago/prettier-plugin-sort-imports": "*" - "@zackad/prettier-plugin-twig": "*" - prettier: ^3.0 - prettier-plugin-astro: "*" - prettier-plugin-css-order: "*" - prettier-plugin-jsdoc: "*" - prettier-plugin-marko: "*" - prettier-plugin-multiline-arrays: "*" - prettier-plugin-organize-attributes: "*" - prettier-plugin-organize-imports: "*" - prettier-plugin-sort-imports: "*" - prettier-plugin-svelte: "*" - peerDependenciesMeta: - "@ianvs/prettier-plugin-sort-imports": - optional: true - "@prettier/plugin-hermes": - optional: true - "@prettier/plugin-oxc": - optional: true - "@prettier/plugin-pug": - optional: true - "@shopify/prettier-plugin-liquid": - optional: true - "@trivago/prettier-plugin-sort-imports": - optional: true - "@zackad/prettier-plugin-twig": - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-multiline-arrays: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-svelte: - optional: true - checksum: 10/c77253025d62555e761b0a76df6e5c73d48d96a259ac157de9c21f11a7851fd2b434c27b296b119530895a57fe87c8cf337b0df0bff97b2bc1a0d48a442b0d99 + checksum: 10/f25412b87b74f77606addb718207b6273d41697a04931c52e011c6c637fdebfeca57a1572523cb95e144e808840af1399b5fd72767d14281ea2066c0b8b70b11 languageName: node linkType: hard "prettier@npm:^3.3.3": - version: 3.7.4 - resolution: "prettier@npm:3.7.4" + version: 3.8.1 + resolution: "prettier@npm:3.8.1" bin: prettier: bin/prettier.cjs - checksum: 10/b4d00ea13baed813cb777c444506632fb10faaef52dea526cacd03085f01f6db11fc969ccebedf05bf7d93c3960900994c6adf1b150e28a31afd5cfe7089b313 + checksum: 10/3da1cf8c1ef9bea828aa618553696c312e951f810bee368f6887109b203f18ee869fe88f66e65f9cf60b7cb1f2eae859892c860a300c062ff8ec69c381fc8dbd languageName: node linkType: hard @@ -14025,16 +13091,6 @@ __metadata: languageName: node linkType: hard -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10/96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 - languageName: node - linkType: hard - "promise@npm:^8.3.0": version: 8.3.0 resolution: "promise@npm:8.3.0" @@ -14098,12 +13154,12 @@ __metadata: languageName: node linkType: hard -"qs@npm:~6.14.0": - version: 6.14.0 - resolution: "qs@npm:6.14.0" +"qs@npm:^6.14.1": + version: 6.15.0 + resolution: "qs@npm:6.15.0" dependencies: side-channel: "npm:^1.1.0" - checksum: 10/a60e49bbd51c935a8a4759e7505677b122e23bf392d6535b8fc31c1e447acba2c901235ecb192764013cd2781723dc1f61978b5fdd93cc31d7043d31cdc01974 + checksum: 10/a3458f2f389285c3512e0ebc55522ee370ac7cb720ba9f0eff3e30fb2bb07631caf556c08e2a3d4481a371ac14faa9ceb7442a0610c5a7e55b23a5bdee7b701c languageName: node linkType: hard @@ -14142,15 +13198,15 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:~2.5.3": - version: 2.5.3 - resolution: "raw-body@npm:2.5.3" +"raw-body@npm:^3.0.1": + version: 3.0.2 + resolution: "raw-body@npm:3.0.2" dependencies: bytes: "npm:~3.1.2" http-errors: "npm:~2.0.1" - iconv-lite: "npm:~0.4.24" + iconv-lite: "npm:~0.7.0" unpipe: "npm:~1.0.0" - checksum: 10/f35759fe5a6548e7c529121ead1de4dd163f899749a5896c42e278479df2d9d7f98b5bb17312737c03617765e5a1433e586f717616e5cfbebc13b4738b820601 + checksum: 10/4168c82157bd69175d5bd960e59b74e253e237b358213694946a427a6f750a18b8e150f036fed3421b3e83294b071a4e2bb01037a79ccacdac05360c63d3ebba languageName: node linkType: hard @@ -14209,9 +13265,9 @@ __metadata: linkType: hard "react-is@npm:^19.1.0": - version: 19.2.1 - resolution: "react-is@npm:19.2.1" - checksum: 10/d2d0f2b55710c73af1ee5c17e438a274a52758522af9cb1f1f6df35b233a5eb158f4dc8e38e0c058b090bf7d432f27fc6c59dd016c811109260097cea5268461 + version: 19.2.4 + resolution: "react-is@npm:19.2.4" + checksum: 10/3360fc50a38c23299c5003a709949f2439b2901e77962eea78d892f526f710d05a7777b600b302f853583d1861979b00d7a0a071c89c6562eac5740ac29b9665 languageName: node linkType: hard @@ -14242,8 +13298,8 @@ __metadata: linkType: hard "react-native-builder-bob@npm:^0.40.12": - version: 0.40.16 - resolution: "react-native-builder-bob@npm:0.40.16" + version: 0.40.18 + resolution: "react-native-builder-bob@npm:0.40.18" dependencies: "@babel/core": "npm:^7.25.2" "@babel/plugin-transform-flow-strip-types": "npm:^7.26.5" @@ -14264,12 +13320,12 @@ __metadata: json5: "npm:^2.2.1" kleur: "npm:^4.1.4" prompts: "npm:^2.4.2" - react-native-monorepo-config: "npm:^0.1.8" + react-native-monorepo-config: "npm:^0.3.3" which: "npm:^2.0.2" yargs: "npm:^17.5.1" bin: bob: bin/bob - checksum: 10/7f9c6e02131a833d68df92e6338f86e2880c7404116c5104c7eaa1cb8517ed559f2de591306b6d67e0af39f4f4fef9894b69b3fd624dce35822fb7d4b752776b + checksum: 10/06eddba046a508dff0aa322c823fa57a280e2ed6a6f586de2114ebc11b6bb7863714eaaff8e93d681bb851fb4f9e792b102541211847f0e546f4e9546df6c3de languageName: node linkType: hard @@ -14420,13 +13476,13 @@ __metadata: languageName: node linkType: hard -"react-native-monorepo-config@npm:^0.1.8": - version: 0.1.10 - resolution: "react-native-monorepo-config@npm:0.1.10" +"react-native-monorepo-config@npm:^0.3.3": + version: 0.3.3 + resolution: "react-native-monorepo-config@npm:0.3.3" dependencies: escape-string-regexp: "npm:^5.0.0" fast-glob: "npm:^3.3.3" - checksum: 10/36611eca9cbda6647111e659d5c466fdba002c608172b9d25880b6e3ac95c51f41d15520e06d9d3188c096b0c9182caeba7b9340c64f6b45f1fee331c08b877b + checksum: 10/d301020b38f80010bce38108a9e1b72deee3eb37f1ba5e2f0471dc0737584b8d25158a2e649c38ddbe890b653c29a69ef82d73c522473cfdb2396239ee84fcd8 languageName: node linkType: hard @@ -14836,19 +13892,10 @@ __metadata: languageName: node linkType: hard -"resolve-global@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-global@npm:1.0.0" - dependencies: - global-dirs: "npm:^0.1.1" - checksum: 10/c4e11d33e84bde7516b824503ffbe4b6cce863d5ce485680fd3db997b7c64da1df98321b1fd0703b58be8bc9bc83bc96bd83043f96194386b45eb47229efb6b6 - languageName: node - linkType: hard - "resolve-workspace-root@npm:^2.0.0": - version: 2.0.0 - resolution: "resolve-workspace-root@npm:2.0.0" - checksum: 10/c2de02d213ca327964bd2a1e6cbb17d96d2adbd738b6aa737129ed952ef4f7e52b79452599e1ef99c6cf4f109c937866b7f3abf34f8f41af376e1b08a03523a4 + version: 2.0.1 + resolution: "resolve-workspace-root@npm:2.0.1" + checksum: 10/d10b1897018c291a8c0c6d6a36d174830bc004b7aa2a9e416b9c1e0ea4d8575a68bc4ed9d6f28be5859a3b0d5f70f0ffdc12e6ef0af010f487d91cf7d4ce8ff0 languageName: node linkType: hard @@ -14859,7 +13906,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.22.10, resolve@npm:^1.22.2": +"resolve@npm:^1.22.11, resolve@npm:^1.22.2": version: 1.22.11 resolution: "resolve@npm:1.22.11" dependencies: @@ -14873,15 +13920,18 @@ __metadata: linkType: hard "resolve@npm:^2.0.0-next.5": - version: 2.0.0-next.5 - resolution: "resolve@npm:2.0.0-next.5" + version: 2.0.0-next.6 + resolution: "resolve@npm:2.0.0-next.6" dependencies: - is-core-module: "npm:^2.13.0" + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + node-exports-info: "npm:^1.6.0" + object-keys: "npm:^1.1.1" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/2d6fd28699f901744368e6f2032b4268b4c7b9185fd8beb64f68c93ac6b22e52ae13560ceefc96241a665b985edf9ffd393ae26d2946a7d3a07b7007b7d51e79 + checksum: 10/c95cb98b8d3f9e2a979e6eb8b7e0b0e13f08da62607a45207275f151d640152244568a9a9cd01662a21e3746792177cbf9be1dacb88f7355edf4db49d9ee27e5 languageName: node linkType: hard @@ -14894,7 +13944,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin": +"resolve@patch:resolve@npm%3A^1.22.11#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin": version: 1.22.11 resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" dependencies: @@ -14908,15 +13958,18 @@ __metadata: linkType: hard "resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": - version: 2.0.0-next.5 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" + version: 2.0.0-next.6 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d" dependencies: - is-core-module: "npm:^2.13.0" + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + node-exports-info: "npm:^1.6.0" + object-keys: "npm:^1.1.1" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/05fa778de9d0347c8b889eb7a18f1f06bf0f801b0eb4610b4871a4b2f22e220900cf0ad525e94f990bb8d8921c07754ab2122c0c225ab4cdcea98f36e64fa4c2 + checksum: 10/1b26738af76c80b341075e6bf4b202ef85f85f4a2cbf2934246c3b5f20c682cf352833fc6e32579c6967419226d3ab63e8d321328da052c87a31eaad91e3571a languageName: node linkType: hard @@ -14949,10 +14002,10 @@ __metadata: languageName: node linkType: hard -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10/1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 10/6125ec2e06d6e47e9201539c887defba4e47f63471db304c59e4b82fc63c8e89ca06a77e9d34939a9a42a76f00774b2f46c0d4a4cbb3e287268bd018ed69426d languageName: node linkType: hard @@ -15024,7 +14077,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 @@ -15032,9 +14085,9 @@ __metadata: linkType: hard "sax@npm:>=0.6.0": - version: 1.4.3 - resolution: "sax@npm:1.4.3" - checksum: 10/99161215f23e0b13bc7f94adbaa63a6a2f188fe291c450790d92b5bc3cd7966d574a15dcd5918c30917e17ed68129e34cc3168564263b967f9b8f61869d6ccc4 + version: 1.4.4 + resolution: "sax@npm:1.4.4" + checksum: 10/00ff7b258baa37d98f8abfa0b5c8b3ee739ca37e9b6ecb83405be9e6e5b0b2856394a5eff142db1d987d589b54b139d4236f25830c1e17a2b640efa53c8fda72 languageName: node linkType: hard @@ -15061,7 +14114,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.7.3, semver@npm:^7.1.3, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1": +"semver@npm:7.7.3": version: 7.7.3 resolution: "semver@npm:7.7.3" bin: @@ -15079,7 +14132,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.7.2, semver@npm:^7.7.3": +"semver@npm:^7.1.3, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3": version: 7.7.4 resolution: "semver@npm:7.7.4" bin: @@ -15097,30 +14150,9 @@ __metadata: languageName: node linkType: hard -"send@npm:0.19.0": - version: 0.19.0 - resolution: "send@npm:0.19.0" - dependencies: - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - mime: "npm:1.6.0" - ms: "npm:2.1.3" - on-finished: "npm:2.4.1" - range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 10/1f6064dea0ae4cbe4878437aedc9270c33f2a6650a77b56a16b62d057527f2766d96ee282997dd53ec0339082f2aad935bc7d989b46b48c82fc610800dc3a1d0 - languageName: node - linkType: hard - -"send@npm:^0.19.0": - version: 0.19.1 - resolution: "send@npm:0.19.1" +"send@npm:^0.19.0, send@npm:~0.19.1": + version: 0.19.2 + resolution: "send@npm:0.19.2" dependencies: debug: "npm:2.6.9" depd: "npm:2.0.0" @@ -15128,14 +14160,14 @@ __metadata: encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" + fresh: "npm:~0.5.2" + http-errors: "npm:~2.0.1" mime: "npm:1.6.0" ms: "npm:2.1.3" - on-finished: "npm:2.4.1" + on-finished: "npm:~2.4.1" range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 10/360bf50a839c7bbc181f67c3a0f3424a7ad8016dfebcd9eb90891f4b762b4377da14414c32250d67b53872e884171c27469110626f6c22765caa7c38c207ee1d + statuses: "npm:~2.0.2" + checksum: 10/e932a592f62c58560b608a402d52333a8ae98a5ada076feb5db1d03adaa77c3ca32a7befa1c4fd6dedc186e88f342725b0cb4b3d86835eaf834688b259bef18d languageName: node linkType: hard @@ -15147,14 +14179,14 @@ __metadata: linkType: hard "serve-static@npm:^1.13.1, serve-static@npm:^1.16.2": - version: 1.16.2 - resolution: "serve-static@npm:1.16.2" + version: 1.16.3 + resolution: "serve-static@npm:1.16.3" dependencies: encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" parseurl: "npm:~1.3.3" - send: "npm:0.19.0" - checksum: 10/7fa9d9c68090f6289976b34fc13c50ac8cd7f16ae6bce08d16459300f7fc61fbc2d7ebfa02884c073ec9d6ab9e7e704c89561882bbe338e99fcacb2912fde737 + send: "npm:~0.19.1" + checksum: 10/149d6718dd9e53166784d0a65535e21a7c01249d9c51f57224b786a7306354c6807e7811a9f6c143b45c863b1524721fca2f52b5c81a8b5194e3dde034a03b9c languageName: node linkType: hard @@ -15209,7 +14241,7 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": +"setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: 10/fde1630422502fbbc19e6844346778f99d449986b2f9cdcceb8326730d2f3d9964dbcb03c02aaadaefffecd0f2c063315ebea8b3ad895914bf1afc1747fc172e @@ -15487,11 +14519,11 @@ __metadata: linkType: hard "ssri@npm:^13.0.0": - version: 13.0.0 - resolution: "ssri@npm:13.0.0" + version: 13.0.1 + resolution: "ssri@npm:13.0.1" dependencies: minipass: "npm:^7.0.3" - checksum: 10/fd59bfedf0659c1b83f6e15459162da021f08ec0f5834dd9163296f8b77ee82f9656aa1d415c3d3848484293e0e6aefdd482e863e52ddb53d520bb73da1eeec1 + checksum: 10/ae560d0378d074006a71b06af71bfbe84a3fe1ac6e16c1f07575f69e670d40170507fe52b21bcc23399429bc6a15f4bc3ea8d9bc88e9dfd7e87de564e6da6a72 languageName: node linkType: hard @@ -15520,13 +14552,6 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 10/18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb - languageName: node - linkType: hard - "statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" @@ -15565,6 +14590,13 @@ __metadata: languageName: node linkType: hard +"strict-url-sanitise@npm:0.0.1": + version: 0.0.1 + resolution: "strict-url-sanitise@npm:0.0.1" + checksum: 10/cab6ae551f998f18ea7fb14176a9d835f5b304e5419c61851de897c830ccc20c2848bbb50ced242227114e06a3f6379dcc9179a84bc0a7b8cf81f5192b5b4789 + languageName: node + linkType: hard + "string-length@npm:^4.0.2": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -15737,10 +14769,10 @@ __metadata: languageName: node linkType: hard -"strnum@npm:^1.1.1": - version: 1.1.2 - resolution: "strnum@npm:1.1.2" - checksum: 10/ccd6297a1fdaf0fc8ea0ea904acdae76878d49a4b0d98a70155df4bc081fd88eac5ec99fb150f3d1d1af065c1898d38420705259ba6c39aa850c671bcd54e35d +"strnum@npm:^2.1.2": + version: 2.1.2 + resolution: "strnum@npm:2.1.2" + checksum: 10/7d894dff385e3a5c5b29c012cf0a7ea7962a92c6a299383c3d6db945ad2b6f3e770511356a9774dbd54444c56af1dc7c435dad6466c47293c48173274dd6c631 languageName: node linkType: hard @@ -15837,16 +14869,7 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.11.4, synckit@npm:^0.11.7": - version: 0.11.11 - resolution: "synckit@npm:0.11.11" - dependencies: - "@pkgr/core": "npm:^0.2.9" - checksum: 10/6ecd88212b5be80004376b6ea74babcba284566ff59a50d8803afcaa78c165b5d268635c1dd84532ee3f690a979409e1eda225a8a35bed2d135ffdcea06ce7b0 - languageName: node - linkType: hard - -"synckit@npm:^0.11.8": +"synckit@npm:^0.11.12, synckit@npm:^0.11.4, synckit@npm:^0.11.8": version: 0.11.12 resolution: "synckit@npm:0.11.12" dependencies: @@ -15855,23 +14878,16 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.5.2": - version: 7.5.2 - resolution: "tar@npm:7.5.2" +"tar@npm:^7.5.2, tar@npm:^7.5.4": + version: 7.5.9 + resolution: "tar@npm:7.5.9" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10/dbad9c9a07863cd1bdf8801d563b3280aa7dd0f4a6cead779ff7516d148dc80b4c04639ba732d47f91f04002f57e8c3c6573a717d649daecaac74ce71daa7ad3 - languageName: node - linkType: hard - -"temp-dir@npm:~2.0.0": - version: 2.0.0 - resolution: "temp-dir@npm:2.0.0" - checksum: 10/cc4f0404bf8d6ae1a166e0e64f3f409b423f4d1274d8c02814a59a5529f07db6cd070a749664141b992b2c1af337fa9bb451a460a43bb9bcddc49f235d3115aa + checksum: 10/1213cdde9c22d6acf8809ba5d2a025212ce3517bc99c4a4c6981b7dc0489bf3b164db9c826c9517680889194c9ba57448c8ff0da35eca9a60bb7689bf0b3897d languageName: node linkType: hard @@ -15886,8 +14902,8 @@ __metadata: linkType: hard "terser@npm:^5.15.0": - version: 5.44.1 - resolution: "terser@npm:5.44.1" + version: 5.46.0 + resolution: "terser@npm:5.46.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.15.0" @@ -15895,7 +14911,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/516ece205b7db778c4eddb287a556423cb776b7ca591b06270e558a76aa2d57c8d71d9c3c4410b276d3426beb03516fff7d96ff8b517e10730a72908810c6e33 + checksum: 10/331e4f5a165d91d16ac6a95b510d4f5ef24679e4bc9e1b4e4182e89b7245f614d24ce0def583e2ca3ca45f82ba810991e0c5b66dd4353a6e0b7082786af6bd35 languageName: node linkType: hard @@ -15995,7 +15011,7 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": +"toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 10/952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 @@ -16080,13 +15096,14 @@ __metadata: languageName: node linkType: hard -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" +"type-is@npm:^2.0.1": + version: 2.0.1 + resolution: "type-is@npm:2.0.1" dependencies: - media-typer: "npm:0.3.0" - mime-types: "npm:~2.1.24" - checksum: 10/0bd9eeae5efd27d98fd63519f999908c009e148039d8e7179a074f105362d4fcc214c38b24f6cda79c87e563cbd12083a4691381ed28559220d4a10c2047bed4 + content-type: "npm:^1.0.5" + media-typer: "npm:^1.1.0" + mime-types: "npm:^3.0.0" + checksum: 10/bacdb23c872dacb7bd40fbd9095e6b2fca2895eedbb689160c05534d7d4810a7f4b3fd1ae87e96133c505958f6d602967a68db5ff577b85dd6be76eaa75d58af languageName: node linkType: hard @@ -16189,17 +15206,17 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~7.16.0": - version: 7.16.0 - resolution: "undici-types@npm:7.16.0" - checksum: 10/db43439f69c2d94cc29f75cbfe9de86df87061d6b0c577ebe9bb3255f49b22c50162a7d7eb413b0458b6510b8ca299ac7cff38c3a29fbd31af9f504bcf7fbc0d +"undici-types@npm:~7.18.0": + version: 7.18.2 + resolution: "undici-types@npm:7.18.2" + checksum: 10/e61a5918f624d68420c3ca9d301e9f15b61cba6e97be39fe2ce266dd6151e4afe424d679372638826cb506be33952774e0424141200111a9857e464216c009af languageName: node linkType: hard "undici@npm:^6.18.2": - version: 6.22.0 - resolution: "undici@npm:6.22.0" - checksum: 10/2398de2b460e05f80f994d8a64fcb603aac8f253f8e7ff737067531c1101e1d74644fe5205894b0f7356ea69602d10d6d98c554fcd8b383ec3cc07a3268ec293 + version: 6.23.0 + resolution: "undici@npm:6.23.0" + checksum: 10/56950995e7b628e62c996430445d17995ca9b70f6f2afe760a63da54205660d968bd08f0741b6f4fb008f40aa35c69cce979cd96ced399585d8c897a76a4f1d1 languageName: node linkType: hard @@ -16252,15 +15269,6 @@ __metadata: languageName: node linkType: hard -"unique-string@npm:~2.0.0": - version: 2.0.0 - resolution: "unique-string@npm:2.0.0" - dependencies: - crypto-random-string: "npm:^2.0.0" - checksum: 10/107cae65b0b618296c2c663b8e52e4d1df129e9af04ab38d53b4f2189e96da93f599c85f4589b7ffaf1a11c9327cbb8a34f04c71b8d4950d3e385c2da2a93828 - languageName: node - linkType: hard - "unist-util-stringify-position@npm:^2.0.0": version: 2.0.3 resolution: "unist-util-stringify-position@npm:2.0.3" @@ -16368,8 +15376,8 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.2.0": - version: 1.2.2 - resolution: "update-browserslist-db@npm:1.2.2" + version: 1.2.3 + resolution: "update-browserslist-db@npm:1.2.3" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -16377,7 +15385,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/ae2102d3c83fca35e9deb012d82bfde6f734998ced937e34a3bf239a4b67577108fdd144283aafc0e5e3cf38ca1aecd7714906ba6f562896c762d2f2fa391026 + checksum: 10/059f774300efb4b084a49293143c511f3ae946d40397b5c30914e900cd5691a12b8e61b41dd54ed73d3b56c8204165a0333107dd784ccf8f8c81790bcc423175 languageName: node linkType: hard @@ -16624,8 +15632,8 @@ __metadata: linkType: hard "which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" + version: 1.1.20 + resolution: "which-typed-array@npm:1.1.20" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" @@ -16634,7 +15642,7 @@ __metadata: get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-tostringtag: "npm:^1.0.2" - checksum: 10/12be30fb88567f9863186bee1777f11bea09dd59ed8b3ce4afa7dd5cade75e2f4cc56191a2da165113cc7cf79987ba021dac1e22b5b62aa7e5c56949f2469a68 + checksum: 10/e56da3fc995d330ff012f682476f7883c16b12d36c6717c87c7ca23eb5a5ef957fa89115dacb389b11a9b4e99d5dbe2d12689b4d5d08c050b5aed0eae385b840 languageName: node linkType: hard @@ -16650,13 +15658,13 @@ __metadata: linkType: hard "which@npm:^6.0.0": - version: 6.0.0 - resolution: "which@npm:6.0.0" + version: 6.0.1 + resolution: "which@npm:6.0.1" dependencies: - isexe: "npm:^3.1.1" + isexe: "npm:^4.0.0" bin: node-which: bin/which.js - checksum: 10/df19b2cd8aac94b333fa29b42e8e371a21e634a742a3b156716f7752a5afe1d73fb5d8bce9b89326f453d96879e8fe626eb421e0117eb1a3ce9fd8c97f6b7db9 + checksum: 10/dbea77c7d3058bf6c78bf9659d2dce4d2b57d39a15b826b2af6ac2e5a219b99dc8a831b79fdbc453c0598adb4f3f84cf9c2491fd52beb9f5d2dececcad117f68 languageName: node linkType: hard @@ -16759,8 +15767,8 @@ __metadata: linkType: hard "ws@npm:^8.12.1": - version: 8.18.3 - resolution: "ws@npm:8.18.3" + version: 8.19.0 + resolution: "ws@npm:8.19.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -16769,7 +15777,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/725964438d752f0ab0de582cd48d6eeada58d1511c3f613485b5598a83680bedac6187c765b0fe082e2d8cc4341fc57707c813ae780feee82d0c5efe6a4c61b6 + checksum: 10/26e4901e93abaf73af9f26a93707c95b4845e91a7a347ec8c569e6e9be7f9df066f6c2b817b2d685544e208207898a750b78461e6e8d810c11a370771450c31b languageName: node linkType: hard From ebcddbb344cd32458c3755688df110abe4aa1617 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Fri, 13 Feb 2026 11:29:23 +0100 Subject: [PATCH 03/26] chore: num minSdkVersion to 26 --- packages/react-native-executorch/android/gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-native-executorch/android/gradle.properties b/packages/react-native-executorch/android/gradle.properties index b30a8b11d..97cdd1854 100644 --- a/packages/react-native-executorch/android/gradle.properties +++ b/packages/react-native-executorch/android/gradle.properties @@ -1,5 +1,5 @@ RnExecutorch_kotlinVersion=1.7.0 -RnExecutorch_minSdkVersion=21 +RnExecutorch_minSdkVersion=26 RnExecutorch_targetSdkVersion=31 RnExecutorch_compileSdkVersion=31 -RnExecutorch_ndkversion=21.4.7075529 +RnExecutorch_ndkversion=21.4.7075529 \ No newline at end of file From 491df804607dce08c33fcd27dfbe235c4a0aa2ec Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Mon, 16 Feb 2026 10:37:11 +0100 Subject: [PATCH 04/26] feat: unify frame extraction and preprocessing --- .../rnexecutorch/models/VisionModel.cpp | 20 + .../common/rnexecutorch/models/VisionModel.h | 139 + .../models/classification/Classification.cpp | 2 +- .../rnexecutorch/utils/FrameProcessor.cpp | 142 + .../rnexecutorch/utils/FrameProcessor.h | 109 + .../src/modules/BaseModule.ts | 79 +- yarn.lock | 3026 +++++++++++------ 7 files changed, 2497 insertions(+), 1020 deletions(-) create mode 100644 packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp create mode 100644 packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h create mode 100644 packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp create mode 100644 packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp new file mode 100644 index 000000000..671ed03c8 --- /dev/null +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp @@ -0,0 +1,20 @@ +#include "VisionModel.h" +#include + +namespace rnexecutorch { +namespace models { + +using namespace facebook; + +cv::Mat VisionModel::extractAndPreprocess(jsi::Runtime &runtime, + const jsi::Value &frameData) const { + // Extract frame using FrameProcessor utility + auto frameObj = frameData.asObject(runtime); + cv::Mat frame = utils::FrameProcessor::extractFrame(runtime, frameObj); + + // Apply model-specific preprocessing + return preprocessFrame(frame); +} + +} // namespace models +} // namespace rnexecutorch diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h new file mode 100644 index 000000000..11da49547 --- /dev/null +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h @@ -0,0 +1,139 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace rnexecutorch { +namespace models { + +/** + * @brief Base class for computer vision models that support real-time camera + * input + * + * VisionModel extends BaseModel with thread-safe inference and automatic frame + * extraction from VisionCamera. This class is designed for models that need to + * process camera frames in real-time (e.g., at 30fps). + * + * Thread Safety: + * - All inference operations are protected by a mutex + * - generateFromFrame() uses try_lock() to skip frames when the model is busy + * - This prevents blocking the camera thread and maintains smooth frame rates + * + * Usage: + * Subclasses should: + * 1. Inherit from VisionModel instead of BaseModel + * 2. Implement preprocessFrame() with model-specific preprocessing + * 3. Use inference_mutex_ when calling forward() in custom generate methods + * 4. Use lock_guard for blocking operations (JS API) + * 5. Use try_lock() for non-blocking operations (camera API) + * + * Example: + * @code + * class Classification : public VisionModel { + * public: + * std::unordered_map + * generateFromFrame(jsi::Runtime& runtime, const jsi::Value& frameValue) { + * // try_lock is handled automatically + * auto frameObject = frameValue.asObject(runtime); + * cv::Mat frame = FrameExtractor::extractFrame(runtime, frameObject); + * + * // Lock before inference + * if (!inference_mutex_.try_lock()) { + * return {}; // Skip frame if busy + * } + * std::lock_guard lock(inference_mutex_, std::adopt_lock); + * + * auto preprocessed = preprocessFrame(frame); + * // ... run inference + * } + * }; + * @endcode + */ +class VisionModel : public BaseModel { +public: + /** + * @brief Construct a VisionModel with the same parameters as BaseModel + * + * VisionModel uses the same construction pattern as BaseModel, just adding + * thread-safety on top. + */ + VisionModel(const std::string &modelSource, + std::shared_ptr callInvoker) + : BaseModel(modelSource, callInvoker) {} + + /** + * @brief Virtual destructor for proper cleanup in derived classes + */ + virtual ~VisionModel() = default; + +protected: + /** + * @brief Mutex to ensure thread-safe inference + * + * This mutex protects against race conditions when: + * - generateFromFrame() is called from VisionCamera worklet thread (30fps) + * - generate() is called from JavaScript thread simultaneously + * + * Usage guidelines: + * - Use std::lock_guard for blocking operations (JS API can wait) + * - Use try_lock() for non-blocking operations (camera should skip frames) + * + * @note Marked mutable to allow locking in const methods if needed + */ + mutable std::mutex inference_mutex_; + + /** + * @brief Preprocess a camera frame for model input + * + * This method should implement model-specific preprocessing such as: + * - Resizing to the model's expected input size + * - Color space conversion (e.g., BGR to RGB) + * - Normalization + * - Any other model-specific transformations + * + * @param frame Input frame from camera (already extracted and rotated by + * FrameExtractor) + * @return Preprocessed cv::Mat ready for tensor conversion + * + * @note The input frame is already in RGB format and rotated 90° clockwise + * @note This method is called under mutex protection in generateFromFrame() + */ + virtual cv::Mat preprocessFrame(const cv::Mat &frame) const = 0; + + /** + * @brief Extract and preprocess frame from VisionCamera in one call + * + * This is a convenience method that combines frame extraction and + * preprocessing. It handles both nativeBuffer (zero-copy) and ArrayBuffer + * paths automatically. + * + * @param runtime JSI runtime + * @param frameData JSI value containing frame data from VisionCamera + * + * @return Preprocessed cv::Mat ready for tensor conversion + * + * @throws std::runtime_error if frame extraction fails + * + * @note This method does NOT acquire the inference mutex - caller is + * responsible + * @note Typical usage: + * @code + * cv::Mat preprocessed = extractAndPreprocess(runtime, frameData); + * auto tensor = image_processing::getTensorFromMatrix(dims, preprocessed); + * @endcode + */ + cv::Mat extractAndPreprocess(jsi::Runtime &runtime, + const jsi::Value &frameData) const; +}; + +} // namespace models +// Register VisionModel constructor traits +// Even though VisionModel is abstract, the metaprogramming system needs to know +// its constructor signature for derived classes +REGISTER_CONSTRUCTOR(models::VisionModel, std::string, + std::shared_ptr); + +} // namespace rnexecutorch diff --git a/packages/react-native-executorch/common/rnexecutorch/models/classification/Classification.cpp b/packages/react-native-executorch/common/rnexecutorch/models/classification/Classification.cpp index 0fba07108..b9fad1b88 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/classification/Classification.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/classification/Classification.cpp @@ -73,4 +73,4 @@ Classification::postprocess(const Tensor &tensor) { return probs; } -} // namespace rnexecutorch::models::classification +} // namespace rnexecutorch::models::classification \ No newline at end of file diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp new file mode 100644 index 000000000..02faa072d --- /dev/null +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp @@ -0,0 +1,142 @@ +#include "FrameProcessor.h" +#include "FrameExtractor.h" +#include +#include + +namespace rnexecutorch { +namespace utils { + +cv::Mat FrameProcessor::extractFrame(jsi::Runtime &runtime, + const jsi::Object &frameData) { + // Get frame dimensions + int width = + static_cast(frameData.getProperty(runtime, "width").asNumber()); + int height = + static_cast(frameData.getProperty(runtime, "height").asNumber()); + + // Try zero-copy path first (nativeBuffer) + if (hasNativeBuffer(runtime, frameData)) { + static bool loggedPath = false; + if (!loggedPath) { + log(LOG_LEVEL::Debug, "FrameProcessor: Using zero-copy nativeBuffer"); + loggedPath = true; + } + + try { + return extractFromNativeBuffer(runtime, frameData, width, height); + } catch (const std::exception &e) { + log(LOG_LEVEL::Debug, + "FrameProcessor: nativeBuffer extraction failed: ", e.what()); + log(LOG_LEVEL::Debug, "FrameProcessor: Falling back to ArrayBuffer"); + } + } + + // Fallback to ArrayBuffer path (with copy) + if (frameData.hasProperty(runtime, "data")) { + static bool loggedPath = false; + if (!loggedPath) { + log(LOG_LEVEL::Debug, "FrameProcessor: Using ArrayBuffer (with copy)"); + loggedPath = true; + } + + return extractFromArrayBuffer(runtime, frameData, width, height); + } + + // No valid frame data source + throw std::runtime_error( + "FrameProcessor: No valid frame data (neither nativeBuffer nor data " + "property found)"); +} + +cv::Size FrameProcessor::getFrameSize(jsi::Runtime &runtime, + const jsi::Object &frameData) { + if (!frameData.hasProperty(runtime, "width") || + !frameData.hasProperty(runtime, "height")) { + throw std::runtime_error("FrameProcessor: Frame data missing width or " + "height property"); + } + + int width = + static_cast(frameData.getProperty(runtime, "width").asNumber()); + int height = + static_cast(frameData.getProperty(runtime, "height").asNumber()); + + return cv::Size(width, height); +} + +bool FrameProcessor::hasNativeBuffer(jsi::Runtime &runtime, + const jsi::Object &frameData) { + return frameData.hasProperty(runtime, "nativeBuffer"); +} + +cv::Mat FrameProcessor::extractFromNativeBuffer(jsi::Runtime &runtime, + const jsi::Object &frameData, + int width, int height) { + auto nativeBufferValue = frameData.getProperty(runtime, "nativeBuffer"); + + // Handle bigint pointer value from JavaScript + uint64_t bufferPtr = static_cast( + nativeBufferValue.asBigInt(runtime).asUint64(runtime)); + + // Use FrameExtractor to get cv::Mat from platform-specific buffer + cv::Mat frame = FrameExtractor::extractFromNativeBuffer(bufferPtr); + + // Validate extracted frame dimensions match expected + if (frame.cols != width || frame.rows != height) { + log(LOG_LEVEL::Debug, "FrameProcessor: Dimension mismatch - expected ", + width, "x", height, " but got ", frame.cols, "x", frame.rows); + } + + return frame; +} + +cv::Mat FrameProcessor::extractFromArrayBuffer(jsi::Runtime &runtime, + const jsi::Object &frameData, + int width, int height) { + auto pixelData = frameData.getProperty(runtime, "data"); + auto arrayBuffer = pixelData.asObject(runtime).getArrayBuffer(runtime); + uint8_t *data = arrayBuffer.data(runtime); + size_t bufferSize = arrayBuffer.size(runtime); + + // Determine format based on buffer size + size_t stride = bufferSize / height; + size_t expectedRGBAStride = width * 4; + size_t expectedRGBStride = width * 3; + + cv::Mat frame; + + if (stride == expectedRGBAStride || bufferSize >= width * height * 4) { + // RGBA format with potential padding + frame = cv::Mat(height, width, CV_8UC4, data, stride); + + static bool loggedFormat = false; + if (!loggedFormat) { + log(LOG_LEVEL::Debug, + "FrameProcessor: ArrayBuffer format is RGBA, " + "stride: ", + stride); + loggedFormat = true; + } + } else if (stride >= expectedRGBStride) { + // RGB format + frame = cv::Mat(height, width, CV_8UC3, data, stride); + + static bool loggedFormat = false; + if (!loggedFormat) { + log(LOG_LEVEL::Debug, + "FrameProcessor: ArrayBuffer format is RGB, stride: ", stride); + loggedFormat = true; + } + } else { + throw std::runtime_error( + "FrameProcessor: Unexpected buffer size - expected " + + std::to_string(expectedRGBStride) + " or " + + std::to_string(expectedRGBAStride) + " bytes per row, got " + + std::to_string(stride)); + } + + return frame; +} + +} // namespace utils +} // namespace rnexecutorch diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h new file mode 100644 index 000000000..e37b5bfd6 --- /dev/null +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h @@ -0,0 +1,109 @@ +#pragma once + +#include +#include + +namespace rnexecutorch { +namespace utils { + +using namespace facebook; + +/** + * @brief Utility class for processing camera frames from VisionCamera + * + * Provides high-level helpers for extracting and working with frames from + * react-native-vision-camera in a consistent way across all vision models. + * + * This class abstracts away the complexity of: + * - Handling both nativeBuffer (zero-copy) and ArrayBuffer (with copy) paths + * - Platform-specific buffer formats (CVPixelBuffer on iOS, AHardwareBuffer + * on Android) + * - JSI object property access and type conversions + * + * Usage: + * @code + * auto frameObj = frameData.asObject(runtime); + * cv::Mat frame = FrameProcessor::extractFrame(runtime, frameObj); + * cv::Size size = FrameProcessor::getFrameSize(runtime, frameObj); + * @endcode + */ +class FrameProcessor { +public: + /** + * @brief Extract cv::Mat from VisionCamera frame data + * + * Handles both zero-copy (nativeBuffer) and copy-based (ArrayBuffer) paths + * automatically. Prefers nativeBuffer when available for best performance. + * + * @param runtime JSI runtime + * @param frameData JSI object containing frame data from VisionCamera + * Expected properties: + * - nativeBuffer (optional): BigInt pointer to native buffer + * - data (optional): ArrayBuffer with pixel data + * - width: number + * - height: number + * + * @return cv::Mat wrapping or containing the frame data + * + * @throws std::runtime_error if neither nativeBuffer nor data is available + * @throws std::runtime_error if nativeBuffer extraction fails + * + * @note The returned cv::Mat may not own the data (zero-copy path). + * Caller must ensure the source frame remains valid during use. + */ + static cv::Mat extractFrame(jsi::Runtime &runtime, + const jsi::Object &frameData); + + /** + * @brief Get frame dimensions from VisionCamera frame data + * + * @param runtime JSI runtime + * @param frameData JSI object containing frame data + * + * @return cv::Size with frame width and height + * + * @throws std::runtime_error if width or height properties are missing + */ + static cv::Size getFrameSize(jsi::Runtime &runtime, + const jsi::Object &frameData); + + /** + * @brief Check if frame data has nativeBuffer (zero-copy path available) + * + * @param runtime JSI runtime + * @param frameData JSI object containing frame data + * @return true if nativeBuffer is available, false otherwise + */ + static bool hasNativeBuffer(jsi::Runtime &runtime, + const jsi::Object &frameData); + +private: + /** + * @brief Extract frame from nativeBuffer pointer (zero-copy) + * + * @param runtime JSI runtime + * @param frameData JSI object with nativeBuffer property + * @param width Frame width + * @param height Frame height + * @return cv::Mat wrapping the native buffer data + */ + static cv::Mat extractFromNativeBuffer(jsi::Runtime &runtime, + const jsi::Object &frameData, + int width, int height); + + /** + * @brief Extract frame from ArrayBuffer (with copy) + * + * @param runtime JSI runtime + * @param frameData JSI object with data property + * @param width Frame width + * @param height Frame height + * @return cv::Mat containing or wrapping the array buffer data + */ + static cv::Mat extractFromArrayBuffer(jsi::Runtime &runtime, + const jsi::Object &frameData, int width, + int height); +}; + +} // namespace utils +} // namespace rnexecutorch diff --git a/packages/react-native-executorch/src/modules/BaseModule.ts b/packages/react-native-executorch/src/modules/BaseModule.ts index 6aefc8b2a..315b82249 100644 --- a/packages/react-native-executorch/src/modules/BaseModule.ts +++ b/packages/react-native-executorch/src/modules/BaseModule.ts @@ -1,12 +1,68 @@ import { ResourceSource } from '../types/common'; import { TensorPtr } from '../types/common'; +/** + * Base class for all React Native Executorch modules. + * + * Provides core functionality for loading models, running inference, + * and managing native resources. + * + * @category Base Classes + */ export abstract class BaseModule { /** - * Native module instance + * Native module instance (JSI Host Object) + * @internal */ nativeModule: any = null; + /** + * Process a camera frame directly for real-time inference. + * + * This method is bound to a native JSI function after calling `load()`, + * making it worklet-compatible and safe to call from VisionCamera's + * frame processor thread. + * + * **Performance characteristics:** + * - **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + * frame data is accessed directly without copying (fastest, recommended). + * - **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + * from native to JS, then accessed from native code (slower, fallback). + * + * **Usage with VisionCamera:** + * ```typescript + * const frameOutput = useFrameOutput({ + * pixelFormat: 'rgb', + * onFrame(frame) { + * 'worklet'; + * // Zero-copy approach (recommended) + * const nativeBuffer = frame.getNativeBuffer(); + * const result = model.generateFromFrame( + * { nativeBuffer: nativeBuffer.pointer, width: frame.width, height: frame.height }, + * ...args + * ); + * nativeBuffer.release(); + * frame.dispose(); + * } + * }); + * ``` + * + * @param frameData Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + * @param args Additional model-specific arguments (e.g., threshold, options) + * @returns Model-specific output (e.g., detections, classifications, embeddings) + * + * @see {@link FrameData} for frame data format details + */ + public generateFromFrame!: (frameData: FrameData, ...args: any[]) => any; + + /** + * Load the model and prepare it for inference. + * + * @param modelSource - Resource location of the model binary + * @param onDownloadProgressCallback - Optional callback to monitor download progress (0-1) + * @param args - Additional model-specific loading arguments + */ + abstract load( modelSource: ResourceSource, onDownloadProgressCallback: (_: number) => void, @@ -19,6 +75,7 @@ export abstract class BaseModule { * * @param inputTensor - Array of input tensors. * @returns Array of output tensors. + * @internal */ protected async forwardET(inputTensor: TensorPtr[]): Promise { return await this.nativeModule.forward(inputTensor); @@ -36,11 +93,29 @@ export abstract class BaseModule { } /** - * Unloads the model from memory. + * Unloads the model from memory and releases native resources. + * + * Always call this method when you're done with a model to prevent memory leaks. */ delete() { if (this.nativeModule !== null) { this.nativeModule.unload(); } } + + /** + * Bind JSI methods to this instance for worklet compatibility. + * + * This makes native JSI functions accessible from worklet threads, + * which is essential for VisionCamera frame processing. + * + * @internal + */ + protected bindJSIMethods() { + if (this.nativeModule && this.nativeModule.generateFromFrame) { + // Bind the native JSI method directly to this instance + // This makes it worklet-compatible since JSI functions work across threads + this.generateFromFrame = this.nativeModule.generateFromFrame; + } + } } diff --git a/yarn.lock b/yarn.lock index 713348e4f..829e4f42f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -33,7 +33,27 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.20.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": +"@babel/code-frame@npm:7.10.4, @babel/code-frame@npm:~7.10.4": + version: 7.10.4 + resolution: "@babel/code-frame@npm:7.10.4" + dependencies: + "@babel/highlight": "npm:^7.10.4" + checksum: 10/4ef9c679515be9cb8eab519fcded953f86226155a599cf7ea209e40e088bb9a51bb5893d3307eae510b07bb3e359d64f2620957a00c27825dbe26ac62aca81f5 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.20.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.27.1" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10/721b8a6e360a1fa0f1c9fe7351ae6c874828e119183688b533c477aa378f1010f37cc9afbfc4722c686d1f5cdd00da02eab4ba7278a0c504fa0d7a321dcd4fdf + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": version: 7.29.0 resolution: "@babel/code-frame@npm:7.29.0" dependencies: @@ -44,23 +64,44 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:~7.10.4": - version: 7.10.4 - resolution: "@babel/code-frame@npm:7.10.4" - dependencies: - "@babel/highlight": "npm:^7.10.4" - checksum: 10/4ef9c679515be9cb8eab519fcded953f86226155a599cf7ea209e40e088bb9a51bb5893d3307eae510b07bb3e359d64f2620957a00c27825dbe26ac62aca81f5 +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/compat-data@npm:7.28.5" + checksum: 10/5a5ff00b187049e847f04bd02e21fbd8094544e5016195c2b45e56fa2e311eeb925b158f52a85624c9e6bacc1ce0323e26c303513723d918a8034e347e22610d languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.28.6, @babel/compat-data@npm:^7.29.0": +"@babel/compat-data@npm:^7.28.6": version: 7.29.0 resolution: "@babel/compat-data@npm:7.29.0" checksum: 10/7f21beedb930ed8fbf7eabafc60e6e6521c1d905646bf1317a61b2163339157fe797efeb85962bf55136e166b01fd1a6b526a15974b92a8b877d564dcb6c9580 languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2, @babel/core@npm:^7.27.4, @babel/core@npm:^7.29.0": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2": + version: 7.28.5 + resolution: "@babel/core@npm:7.28.5" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.5" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-module-transforms": "npm:^7.28.3" + "@babel/helpers": "npm:^7.28.4" + "@babel/parser": "npm:^7.28.5" + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" + "@jridgewell/remapping": "npm:^2.3.5" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10/2f1e224125179f423f4300d605a0c5a3ef315003281a63b1744405b2605ee2a2ffc5b1a8349aa4f262c72eca31c7e1802377ee04ad2b852a2c88f8ace6cac324 + languageName: node + linkType: hard + +"@babel/core@npm:^7.27.4, @babel/core@npm:^7.29.0": version: 7.29.0 resolution: "@babel/core@npm:7.29.0" dependencies: @@ -84,8 +125,8 @@ __metadata: linkType: hard "@babel/eslint-parser@npm:^7.25.1": - version: 7.28.6 - resolution: "@babel/eslint-parser@npm:7.28.6" + version: 7.28.5 + resolution: "@babel/eslint-parser@npm:7.28.5" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -93,11 +134,24 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10/15c0c9c78abcc5f267a34bab95437c37dfc468e3ac5e11094ed26bebd63c7a5b056fa47c005ba74eb9fbed6c79e37f90cbe2a24ed09425921275391fe9a5bbe7 + checksum: 10/ec8eb061f319fe3854f4c720303bf239625e63c5ddc9391a3c00f17339d417dc5482dc043b64d15506b0e87f26820dfec9ff4880a1862f7c05f4cf1bbf6e34be + languageName: node + linkType: hard + +"@babel/generator@npm:^7.20.5, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/generator@npm:7.28.5" + dependencies: + "@babel/parser": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10/ae618f0a17a6d76c3983e1fd5d9c2f5fdc07703a119efdb813a7d9b8ad4be0a07d4c6f0d718440d2de01a68e321f64e2d63c77fc5d43ae47ae143746ef28ac1f languageName: node linkType: hard -"@babel/generator@npm:^7.20.5, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1": +"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1": version: 7.29.1 resolution: "@babel/generator@npm:7.29.1" dependencies: @@ -119,7 +173,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2, @babel/helper-compilation-targets@npm:^7.28.6": +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" + dependencies: + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10/bd53c30a7477049db04b655d11f4c3500aea3bcbc2497cf02161de2ecf994fec7c098aabbcebe210ffabc2ecbdb1e3ffad23fb4d3f18723b814f423ea1749fe8 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-compilation-targets@npm:7.28.6" dependencies: @@ -132,7 +199,24 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.6": +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3, @babel/helper-create-class-features-plugin@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-create-class-features-plugin@npm:7.28.5" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-member-expression-to-functions": "npm:^7.28.5" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.5" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/0bbf3dfe91875f642fe7ef38f60647f0df8eb9994d4350b19a4d1a9bdc32629e49e56e9a80afb12eeb6f6bcc6666392b37f32231b7c054fc91a0d5251cd67d5b + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-create-class-features-plugin@npm:7.28.6" dependencies: @@ -149,7 +233,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1, @babel/helper-create-regexp-features-plugin@npm:^7.28.5": +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1": version: 7.28.5 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.28.5" dependencies: @@ -162,18 +246,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.6.5, @babel/helper-define-polyfill-provider@npm:^0.6.6": - version: 0.6.6 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.6" +"@babel/helper-define-polyfill-provider@npm:^0.6.5": + version: 0.6.5 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" dependencies: - "@babel/helper-compilation-targets": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" - debug: "npm:^4.4.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + debug: "npm:^4.4.1" lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.22.11" + resolve: "npm:^1.22.10" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/1c725c47bafb10ae4527aff6741b44ca49b18bf7005ae4583b15f992783e7c1d7687eab1a5583a373b5494160d46e91e29145280bd850e97d36b8b01bc5fef99 + checksum: 10/0bdd2d9654d2f650c33976caa1a2afac2c23cf07e83856acdb482423c7bf4542c499ca0bdc723f2961bb36883501f09e9f4fe061ba81c07996daacfba82a6f62 languageName: node linkType: hard @@ -193,7 +277,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.28.5": +"@babel/helper-member-expression-to-functions@npm:^7.27.1, @babel/helper-member-expression-to-functions@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-member-expression-to-functions@npm:7.28.5" dependencies: @@ -203,7 +287,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.28.6": +"@babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10/58e792ea5d4ae71676e0d03d9fef33e886a09602addc3bd01388a98d87df9fcfd192968feb40ac4aedb7e287ec3d0c17b33e3ecefe002592041a91d8a1998a8d + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-imports@npm:7.28.6" dependencies: @@ -213,7 +307,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.6": +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-module-transforms@npm:7.28.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/598fdd8aa5b91f08542d0ba62a737847d0e752c8b95ae2566bc9d11d371856d6867d93e50db870fb836a6c44cfe481c189d8a2b35ca025a224f070624be9fa87 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-transforms@npm:7.28.6" dependencies: @@ -235,7 +342,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6, @babel/helper-plugin-utils@npm:^7.8.0": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 10/96136c2428888e620e2ec493c25888f9ceb4a21099dcf3dd4508ea64b58cdedbd5a9fb6c7b352546de84d6c24edafe482318646932a22c449ebd16d16c22d864 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-plugin-utils@npm:7.28.6" checksum: 10/21c853bbc13dbdddf03309c9a0477270124ad48989e1ad6524b83e83a77524b333f92edd2caae645c5a7ecf264ec6d04a9ebe15aeb54c7f33c037b71ec521e4a @@ -255,7 +369,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.27.1, @babel/helper-replace-supers@npm:^7.28.6": +"@babel/helper-replace-supers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-replace-supers@npm:7.27.1" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/72e3f8bef744c06874206bf0d80a0abbedbda269586966511c2491df4f6bf6d47a94700810c7a6737345a545dfb8295222e1e72f506bcd0b40edb3f594f739ea + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-replace-supers@npm:7.28.6" dependencies: @@ -285,7 +412,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.28.5": +"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-validator-identifier@npm:7.28.5" checksum: 10/8e5d9b0133702cfacc7f368bf792f0f8ac0483794877c6dca5fcb73810ee138e27527701826fb58a40a004f3a5ec0a2f3c3dd5e326d262530b119918f3132ba7 @@ -300,13 +427,23 @@ __metadata: linkType: hard "@babel/helper-wrap-function@npm:^7.27.1": - version: 7.28.6 - resolution: "@babel/helper-wrap-function@npm:7.28.6" + version: 7.28.3 + resolution: "@babel/helper-wrap-function@npm:7.28.3" dependencies: - "@babel/template": "npm:^7.28.6" - "@babel/traverse": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" - checksum: 10/d8a895a75399904746f4127db33593a20021fc55d1a5b5dfeb060b87cc13a8dceea91e70a4951bcd376ba9bd8232b0c04bff9a86c1dab83d691e01852c3b5bcd + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.3" + "@babel/types": "npm:^7.28.2" + checksum: 10/a5ed5fe7b8d9949d3b4f45ccec0b365018b8e444f6a6d794b4c8291e251e680f5b7c79c49c2170de9d14967c78721f59620ce70c5dac2d53c30628ef971d9dce + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/helpers@npm:7.28.4" + dependencies: + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.4" + checksum: 10/5a70a82e196cf8808f8a449cc4780c34d02edda2bb136d39ce9d26e63b615f18e89a95472230c3ce7695db0d33e7026efeee56f6454ed43480f223007ed205eb languageName: node linkType: hard @@ -332,7 +469,18 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/parser@npm:7.28.5" + dependencies: + "@babel/types": "npm:^7.28.5" + bin: + parser: ./bin/babel-parser.js + checksum: 10/8d9bfb437af6c97a7f6351840b9ac06b4529ba79d6d3def24d6c2996ab38ff7f1f9d301e868ca84a93a3050fadb3d09dbc5105b24634cd281671ac11eebe8df7 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": version: 7.29.0 resolution: "@babel/parser@npm:7.29.0" dependencies: @@ -390,15 +538,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.6" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" - "@babel/traverse": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/9377897aa7cba3a0b78a7c6015799ff71504b2b203329357e42ab3185d44aab07344ba33f5dd53f14d5340c1dc5a2587346343e0859538947bbab0484e72b914 + checksum: 10/eeacdb7fa5ae19e366cbc4da98736b898e05b9abe572aa23093e6be842c6c8284d08af538528ec771073a3749718033be3713ff455ca008d11a7b0e90e62a53d languageName: node linkType: hard @@ -429,15 +577,15 @@ __metadata: linkType: hard "@babel/plugin-proposal-decorators@npm:^7.12.9": - version: 7.29.0 - resolution: "@babel/plugin-proposal-decorators@npm:7.29.0" + version: 7.28.0 + resolution: "@babel/plugin-proposal-decorators@npm:7.28.0" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" - "@babel/plugin-syntax-decorators": "npm:^7.28.6" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-syntax-decorators": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/fa7b9aa1a48993ad60b9e118619ed364aa67da4c634b8a755a6f0529a9f61719723fccfdaf3bf0c6ff693eeee0992a67fb311e0cbe8fed7d48de43cdc8ebff2c + checksum: 10/984a4cc0891ac910ee65793c02299048ad18903855032f3e922476b5bd1e9839dd1ed0505bf3f69956b50b6d4dcbc3c74798bcc4c12d0160c37c187c2330ead4 languageName: node linkType: hard @@ -569,14 +717,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-syntax-decorators@npm:7.28.6" +"@babel/plugin-syntax-decorators@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-decorators@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/6c7544eaa586aba1bcb400eab9304011c1d5be8d9cff02d02c930e70d4023505595c36feca2bf62960f3891d2c3abbc32e116d4c8ab1da63b0fc5329d7694919 + checksum: 10/2dd303f969c7eacb666294493e87d0121122d2b0f6f678855f8e134e0866dc20633cbe1b7351e9eae3874f95657bfdc63dcde68992e99f014111a725467059ca languageName: node linkType: hard @@ -592,46 +740,46 @@ __metadata: linkType: hard "@babel/plugin-syntax-export-default-from@npm:^7.0.0, @babel/plugin-syntax-export-default-from@npm:^7.24.7": - version: 7.28.6 - resolution: "@babel/plugin-syntax-export-default-from@npm:7.28.6" + version: 7.27.1 + resolution: "@babel/plugin-syntax-export-default-from@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/06330b90a4baf9edafe8a4e2e6520d548f83e178c1e832c1ad5018532052996331aedc8c3b4e6b0e51acaef75abe76e25ad3465d3d914658d65acec6908f202a + checksum: 10/d9a6a9c51f644a5ed139dbe1e8cf5a38c9b390af27ad2fc6f0eba579ac543b039efff34200744bfc8523132c06aa6de921238bd2088948bb4dce4571cea43438 languageName: node linkType: hard "@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.18.0, @babel/plugin-syntax-flow@npm:^7.27.1": - version: 7.28.6 - resolution: "@babel/plugin-syntax-flow@npm:7.28.6" + version: 7.27.1 + resolution: "@babel/plugin-syntax-flow@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/3dfe5d8168e400376e16937c92648142771b9ba0d9937b04ccdaacd06bf9d854170021b466106d4aa39ba6062b8b5b9b53efddae2c64ca133d4d6fafaa472909 + checksum: 10/7baca3171ed595d04c865b0ce46fca7f21900686df9d7fcd1017036ce78bb5483e33803de810831e68d39cf478953db69f49ae3f3de2e3207bc4ba49a96b6739 languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.28.6" +"@babel/plugin-syntax-import-assertions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/25017235e1e2c4ed892aa327a3fa10f4209cc618c6dd7806fc40c07d8d7d24a39743d3d5568b8d1c8f416cffe03c174e78874ded513c9338b07a7ab1dcbab050 + checksum: 10/fb661d630808d67ecb85eabad25aac4e9696a20464bad4c4a6a0d3d40e4dc22557d47e9be3d591ec06429cf048cfe169b8891c373606344d51c4f3ac0f91d6d0 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.28.6" +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/6c8c6a5988dbb9799d6027360d1a5ba64faabf551f2ef11ba4eade0c62253b5c85d44ddc8eb643c74b9acb2bcaa664a950bd5de9a5d4aef291c4f2a48223bb4b + checksum: 10/97973982fff1bbf86b3d1df13380567042887c50e2ae13a400d02a8ff2c9742a60a75e279bfb73019e1cd9710f04be5e6ab81f896e6678dcfcec8b135e8896cf languageName: node linkType: hard @@ -657,14 +805,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-syntax-jsx@npm:7.28.6" +"@babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/572e38f5c1bb4b8124300e7e3dd13e82ae84a21f90d3f0786c98cd05e63c78ca1f32d1cfe462dfbaf5e7d5102fa7cd8fd741dfe4f3afc2e01a3b2877dcc8c866 + checksum: 10/c6d1324cff286a369aa95d99b8abd21dd07821b5d3affd5fe7d6058c84cff9190743287826463ee57a7beecd10fa1e4bc99061df532ee14e188c1c8937b13e3a languageName: node linkType: hard @@ -756,7 +904,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.28.6": +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/87836f7e32af624c2914c73cd6b9803cf324e07d43f61dbb973c6a86f75df725e12540d91fac7141c14b697aa9268fd064220998daced156e96ac3062d7afb41 + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" dependencies: @@ -790,29 +949,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.29.0" +"@babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-remap-async-to-generator": "npm:^7.27.1" - "@babel/traverse": "npm:^7.29.0" + "@babel/traverse": "npm:^7.28.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/e2c064a5eb212cbdf14f7c0113e069b845ca0f0ba431c1cc04607d3fc4f3bf1ed70f5c375fe7c61338a45db88bc1a79d270c8d633ce12256e1fce3666c1e6b93 + checksum: 10/8ad31b9969b203dec572738a872e17b14ef76ca45b4ef5ffa76f3514be417ca233d1a0978e5f8de166412a8a745619eb22b07cc5df96f5ebad8ca500f920f61b languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.24.7, @babel/plugin-transform-async-to-generator@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.28.6" +"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.24.7, @babel/plugin-transform-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" dependencies: - "@babel/helper-module-imports": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-remap-async-to-generator": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/bca5774263ec01dd2bf71c74bbaf7baa183bf03576636b7826c3346be70c8c8cb15cff549112f2983c36885131a0afde6c443591278c281f733ee17f455aa9b1 + checksum: 10/d79d7a7ae7d416f6a48200017d027a6ba94c09c7617eea8b4e9c803630f00094c1a4fc32bf20ce3282567824ce3fcbda51653aac4003c71ea4e681b331338979 languageName: node linkType: hard @@ -827,18 +986,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.25.0, @babel/plugin-transform-block-scoping@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-block-scoping@npm:7.28.6" +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.25.0, @babel/plugin-transform-block-scoping@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.5" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/7ab8a0856024a5360ba16c3569b739385e939bc5a15ad7d811bec8459361a9aa5ee7c5f154a4e2ce79f5d66779c19464e7532600c31a1b6f681db4eb7e1c7bde + checksum: 10/4b695360ede8472262111efb9d5c35b515767e1ead9e272c3e9799235e3f5feeb21d99a66bb23acbba9424465d13e7695a22a22a680c4aa558702ef8aad461d6 languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:7.27.1": +"@babel/plugin-transform-class-properties@npm:7.27.1, @babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" dependencies: @@ -850,31 +1009,19 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-class-properties@npm:7.28.6" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/200f30d44b36a768fa3a8cf690db9e333996af2ad14d9fa1b4c91a427ed9302907873b219b4ce87517ca1014a810eb2e929a6a66be68473f72b546fc64d04fbc - languageName: node - linkType: hard - -"@babel/plugin-transform-class-static-block@npm:^7.27.1, @babel/plugin-transform-class-static-block@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-class-static-block@npm:7.28.6" +"@babel/plugin-transform-class-static-block@npm:^7.27.1, @babel/plugin-transform-class-static-block@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-class-features-plugin": "npm:^7.28.3" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10/bea7836846deefd02d9976ad1b30b5ade0d6329ecd92866db789dcf6aacfaf900b7a77031e25680f8de5ad636a771a5bdca8961361e6218d45d538ec5d9b71cc + checksum: 10/c0ba8f0cbf3699287e5a711907dab3b29f346d9c107faa4e424aa26252e45845d74ca08ee6245bfccf32a8c04bc1d07a89b635e51522592c6044b810a48d3f58 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:7.28.4": +"@babel/plugin-transform-classes@npm:7.28.4, @babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.4": version: 7.28.4 resolution: "@babel/plugin-transform-classes@npm:7.28.4" dependencies: @@ -890,35 +1037,19 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-classes@npm:7.28.6" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-compilation-targets": "npm:^7.28.6" - "@babel/helper-globals": "npm:^7.28.0" - "@babel/helper-plugin-utils": "npm:^7.28.6" - "@babel/helper-replace-supers": "npm:^7.28.6" - "@babel/traverse": "npm:^7.28.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/9c3278a314d1c4bcda792bb22aced20e30c735557daf9bcc56397c0f3eb54761b21c770219e4581036a10dabda3e597321ed093bc245d5f4d561e19ceff66a6d - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-computed-properties@npm:7.28.6" +"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" - "@babel/template": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/template": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/4a5e270f7e1f1e9787cf7cf133d48e3c1e38eb935d29a90331a1324d7c720f589b7b626b2e6485cd5521a7a13f2dbdc89a3e46ecbe7213d5bbb631175267c4aa + checksum: 10/101f6d4575447070943d5a9efaa5bea8c552ea3083d73a9612f1a16d38b0a0a7b79a5feb65c6cc4e4fcabf28e85a570b97ccd3294da966e8fbbb6dfb97220eda languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.28.5": +"@babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.28.0, @babel/plugin-transform-destructuring@npm:^7.28.5": version: 7.28.5 resolution: "@babel/plugin-transform-destructuring@npm:7.28.5" dependencies: @@ -930,15 +1061,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.28.6" +"@babel/plugin-transform-dotall-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/866ffbbdee77fa955063b37c75593db8dbbe46b1ebb64cc788ea437e3a9aa41cb7b9afcee617c678a32b6705baa0892ec8e5d4b8af3bbb0ab1b254514ccdbd37 + checksum: 10/2173e5b13f403538ffc6bd57b190cedf4caf320abc13a99e5b2721864e7148dbd3bd7c82d92377136af80432818f665fdd9a1fd33bc5549a4c91e24e5ce2413c languageName: node linkType: hard @@ -953,15 +1084,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.29.0" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/7fa7b773259a578c9e01c80946f75ecc074520064aa7a87a65db06c7df70766e2fa6be78cda55fa9418a14e30b2b9d595484a46db48074d495d9f877a4276065 + checksum: 10/2a109613535e6ac79240dced71429e988affd6a5b3d0cd0f563c8d6c208c51ce7bf2c300bc1150502376b26a51f279119b3358f1c0f2d2f8abca3bcd62e1ae46 languageName: node linkType: hard @@ -976,26 +1107,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-explicit-resource-management@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.6" +"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" - "@babel/plugin-transform-destructuring": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/36d638a253dbdaee5548b4ddd21c04ee4e39914b207437bb64cf79bb41c2caadb4321768d3dba308c1016702649bc44efe751e2052de393004563c7376210d86 + checksum: 10/93d7835160bf8623c7b7072898046c9a2a46cf911f38fa2a002de40a11045a65bf9c1663c98f2e4e04615037f63391832c20b45d7bc26a16d39a97995d0669bc languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.6" +"@babel/plugin-transform-exponentiation-operator@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.5" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/b232152499370435c7cd4bf3321f58e189150e35ca3722ea16533d33434b97294df1342f5499671ec48e62b71c34cdea0ca8cf317ad12594a10f6fc670315e62 + checksum: 10/da9bb5acd35c9fba92b802641f9462b82334158a149c78a739a04576a1e62be41057a201a41c022dda263bb73ac1a26521bbc997c7fc067f54d487af297995f4 languageName: node linkType: hard @@ -1047,14 +1178,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-json-strings@npm:7.28.6" +"@babel/plugin-transform-json-strings@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/69d82a1a0a72ed6e6f7969e09cf330516599d79b2b4e680e9dd3c57616a8c6af049b5103456e370ab56642815e80e46ed88bb81e9e059304a85c5fe0bf137c29 + checksum: 10/2c05a02f63b49f47069271b3405a66c3c8038de5b995b0700b1bd9a5e2bb3e67abd01e4604629302a521f4d8122a4233944aefa16559fd4373d256cc5d3da57f languageName: node linkType: hard @@ -1069,14 +1200,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.6" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.5" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/36095d5d1cfc680e95298b5389a16016da800ae3379b130dabf557e94652c47b06610407e9fa44aaa03e9b0a5aa7b4b93348123985d44a45e369bf5f3497d149 + checksum: 10/c76778f4b186cc4f0b7e3658d91c690678bdb2b9d032f189213016d6177f2564709b79b386523b022b7d52e52331fd91f280f7c7bf85d835e0758b4b0d371447 languageName: node linkType: hard @@ -1103,29 +1234,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1, @babel/plugin-transform-modules-commonjs@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.28.6" +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" dependencies: - "@babel/helper-module-transforms": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/ec6ea2958e778a7e0220f4a75cb5816cecddc6bd98efa10499fff7baabaa29a594d50d787a4ebf8a8ba66fefcf76ca2ded602be0b4554ae3317e53b3b3375b37 + checksum: 10/9059243a977bc1f13e3dccfc6feb6508890e7c7bb191f7eb56626b20672b4b12338051ca835ab55426875a473181502c8f35b4df58ba251bef63b25866d995fe languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.29.0" +"@babel/plugin-transform-modules-systemjs@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.28.5" dependencies: - "@babel/helper-module-transforms": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-module-transforms": "npm:^7.28.3" + "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-validator-identifier": "npm:^7.28.5" - "@babel/traverse": "npm:^7.29.0" + "@babel/traverse": "npm:^7.28.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/b3e64728eef02d829510778226da4c06be740fe52e0d45d4aa68b24083096d8ad7df67f2e9e67198b2e85f3237d42bd66f5771f85846f7a746105d05ca2e0cae + checksum: 10/1b91b4848845eaf6e21663d97a2a6c896553b127deaf3c2e9a2a4f041249277d13ebf71fd42d0ecbc4385e9f76093eff592fe0da0dcf1401b3f38c1615d8c539 languageName: node linkType: hard @@ -1141,15 +1272,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.29.0" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/ed8c27699ca82a6c01cbfd39f3de16b90cfea4f8146a358057f76df290d308a66a8bd2e6734e6a87f68c18576e15d2d70548a84cd474d26fdf256c3f5ae44d8c + checksum: 10/a711c92d9753df26cefc1792481e5cbff4fe4f32b383d76b25e36fa865d8023b1b9aa6338cf18f5c0e864c71a7fbe8115e840872ccd61a914d9953849c68de7d languageName: node linkType: hard @@ -1164,7 +1295,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1": +"@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" dependencies: @@ -1175,40 +1306,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.28.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/88106952ca4f4fea8f97222a25f9595c6859d458d76905845dfa54f54e7d345e3dc338932e8c84a9c57a6c88b2f6d9ebff47130ce508a49c2b6e6a9f03858750 - languageName: node - linkType: hard - -"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.28.6" +"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/4b5ca60e481e22f0842761a3badca17376a230b5a7e5482338604eb95836c2d0c9c9bde53bdc5c2de1c6a12ae6c12de7464d098bf74b0943f85905ca358f0b68 + checksum: 10/049b958911de86d32408cd78017940a207e49c054ae9534ab53a32a57122cc592c0aae3c166d6f29bd1a7d75cc779d71883582dd76cb28b2fbb493e842d8ffca languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.6" +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" dependencies: - "@babel/helper-compilation-targets": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" - "@babel/plugin-transform-destructuring": "npm:^7.28.5" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" "@babel/plugin-transform-parameters": "npm:^7.27.7" - "@babel/traverse": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/9c8c51a515a5ec98a33a715e82d49f873e58b04b53fa1e826f3c2009f7133cd396d6730553a53d265e096dbfbea17dd100ae38815d0b506c094cb316a7a5519e + checksum: 10/aebe464e368cefa5c3ba40316c47b61eb25f891d436b2241021efef5bd0b473c4aa5ba4b9fa0f4b4d5ce4f6bc6b727628d1ca79d54e7b8deebb5369f7dff2984 languageName: node linkType: hard @@ -1224,14 +1344,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7, @babel/plugin-transform-optional-catch-binding@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.28.6" +"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7, @babel/plugin-transform-optional-catch-binding@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/ee24a17defec056eb9ef01824d7e4a1f65d531af6b4b79acfd0bcb95ce0b47926e80c61897f36f8c01ce733b069c9acdb1c9ce5ec07a729d0dbf9e8d859fe992 + checksum: 10/f4356b04cf21a98480f9788ea50f1f13ee88e89bb6393ba4b84d1f39a4a84c7928c9a4328e8f4c5b6deb218da68a8fd17bf4f46faec7653ddc20ffaaa5ba49f4 languageName: node linkType: hard @@ -1247,15 +1367,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.6" +"@babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.5" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c7cf29f99384a9a98748f04489a122c0106e0316aa64a2e61ef8af74c1057b587b96d9a08eb4e33d2ac17d1aaff1f0a86fae658d429fa7bcce4ef977e0ad684b + checksum: 10/0bc900bff66d5acc13b057107eaeb6084b4cb0b124654d35b103f71f292d33dba5beac444ab4f92528583585b6e0cf34d64ce9cbb473b15d22375a4a6ed3cbac languageName: node linkType: hard @@ -1270,28 +1390,28 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-private-methods@npm:7.28.6" +"@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/b80179b28f6a165674d0b0d6c6349b13a01dd282b18f56933423c0a33c23fc0626c8f011f859fc20737d021fe966eb8474a5233e4596401482e9ee7fb00e2aa2 + checksum: 10/c76f8f6056946466116e67eb9d8014a2d748ade2062636ab82045c1dac9c233aff10e597777bc5af6f26428beb845ceb41b95007abef7d0484da95789da56662 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.24.7, @babel/plugin-transform-private-property-in-object@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.28.6" +"@babel/plugin-transform-private-property-in-object@npm:^7.24.7, @babel/plugin-transform-private-property-in-object@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-create-class-features-plugin": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/d02008c62fd32ff747b850b8581ab5076b717320e1cb01c7fc66ebf5169095bd922e18cfb269992f85bc7fbd2cc61e5b5af25e2b54aad67411474b789ea94d5f + checksum: 10/d4466d42a02c5a318d9d7b8102969fd032b17ff044918dfd462d5cc49bd11f5773ee0794781702afdf4727ba11e9be6cbea1e396bc0a7307761bb9a56399012a languageName: node linkType: hard @@ -1351,17 +1471,17 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.25.2, @babel/plugin-transform-react-jsx@npm:^7.27.1": - version: 7.28.6 - resolution: "@babel/plugin-transform-react-jsx@npm:7.28.6" + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-module-imports": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" - "@babel/plugin-syntax-jsx": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c6eade7309f0710b6aac9e747f8c3305633801c035a35efc5e2436742cc466e457ed5848d3dd5dade36e34332cfc50ac92d69a33f7803d66ae2d72f13a76c3bc + checksum: 10/e865f194770906398957df23530af9a46009ac3737aaa10026b3925fe0a38fc3254f4b227d3b8807ab66ac92c14323bef561dd2217644052de5a9702af76e2f6 languageName: node linkType: hard @@ -1377,26 +1497,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/plugin-transform-regenerator@npm:7.29.0" +"@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c8fa9da74371568c5d34fd7d53de018752550cb10334040ca59e41f34b27f127974bdc5b4d1a1a8e8f3ebcf3cb7f650aa3f2df3b7bf1b7edf67c04493b9e3cb8 + checksum: 10/24da51a659d882e02bd4353da9d8e045e58d967c1cddaf985ad699a9fc9f920a45eff421c4283a248d83dc16590b8956e66fd710be5db8723b274cfea0b51b2f languageName: node linkType: hard -"@babel/plugin-transform-regexp-modifiers@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.28.6" +"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/5aacc570034c085afa0165137bb9a04cd4299b86eb9092933a96dcc1132c8f591d9d534419988f5f762b2f70d43a3c719a6b8fa05fdd3b2b1820d01cf85500da + checksum: 10/f6cb385fe0e798bff7e9b20cf5912bf40e180895ff3610b1ccdce260f3c20daaebb3a99dc087c8168a99151cd3e16b94f4689fd5a4b01cf1834b45c133e620b2 languageName: node linkType: hard @@ -1412,18 +1532,18 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.0.0, @babel/plugin-transform-runtime@npm:^7.24.7": - version: 7.29.0 - resolution: "@babel/plugin-transform-runtime@npm:7.29.0" + version: 7.28.5 + resolution: "@babel/plugin-transform-runtime@npm:7.28.5" dependencies: - "@babel/helper-module-imports": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" babel-plugin-polyfill-corejs2: "npm:^0.4.14" babel-plugin-polyfill-corejs3: "npm:^0.13.0" babel-plugin-polyfill-regenerator: "npm:^0.6.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/314cfede923a7fb3aeecf4b282a3090e4a9ae1d84005e9a0365284c5142165a4dccd308455af9013d486a4ad8ada25ccad2fea28c2ec19b086d1ffa0088a69d7 + checksum: 10/0d16c90d40dd34f1a981e742ad656ceef619b92d3662ec9ac8d7c8ba79f22bb425c3f9e097333659a4938f03868a53077b1a3aadb7f37504157a0c7af64ec2be languageName: node linkType: hard @@ -1438,15 +1558,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-spread@npm:7.28.6" +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-spread@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/1fa02ac60ae5e49d46fa2966aaf3f7578cf37255534c2ecf379d65855088a1623c3eea28b9ee6a0b1413b0199b51f9019d0da3fe9da89986bc47e07242415f60 + checksum: 10/3edd28b07e1951f32aa2d380d9a0e0ed408c64a5cea2921d02308541042aca18f146b3a61e82e534d4d61cb3225dbc847f4f063aedfff6230b1a41282e95e8a2 languageName: node linkType: hard @@ -1494,7 +1614,22 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.25.2, @babel/plugin-transform-typescript@npm:^7.27.1, @babel/plugin-transform-typescript@npm:^7.28.5, @babel/plugin-transform-typescript@npm:^7.5.0": +"@babel/plugin-transform-typescript@npm:^7.25.2, @babel/plugin-transform-typescript@npm:^7.28.5, @babel/plugin-transform-typescript@npm:^7.5.0": + version: 7.28.5 + resolution: "@babel/plugin-transform-typescript@npm:7.28.5" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-create-class-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/e4706379df70c2de9d3d3f573ff74a160e05221620a22dd0a64899ab45fddad9e4530fbba33014c75906f13aa78d8044fed80dba85068e11d84ed1f033dea445 + languageName: node + linkType: hard + +"@babel/plugin-transform-typescript@npm:^7.27.1": version: 7.28.6 resolution: "@babel/plugin-transform-typescript@npm:7.28.6" dependencies: @@ -1520,15 +1655,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.28.6" +"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/d14e8c51aa73f592575c1543400fd67d96df6410d75c9dc10dd640fd7eecb37366a2f2368bbdd7529842532eda4af181c921bda95146c6d373c64ea59c6e9991 + checksum: 10/5d99c89537d1ebaac3f526c04b162cf95a47d363d4829f78c6701a2c06ab78a48da66a94f853f85f44a3d72153410ba923e072bed4b7166fa097f503eb14131d languageName: node linkType: hard @@ -1544,95 +1679,95 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.28.6" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/423971fe2eef9d18782b1c30f5f42613ee510e5b9c08760c5538a0997b36c34495acce261e0e37a27831f81330359230bd1f33c2e1822de70241002b45b7d68e + checksum: 10/295126074c7388ab05c82ef3ed0907a1ee4666bbdd763477ead9aba6eb2c74bdf65669416861ac93d337a4a27640963bb214acadc2697275ce95aab14868d57f languageName: node linkType: hard "@babel/preset-env@npm:^7.25.2": - version: 7.29.0 - resolution: "@babel/preset-env@npm:7.29.0" + version: 7.28.5 + resolution: "@babel/preset-env@npm:7.28.5" dependencies: - "@babel/compat-data": "npm:^7.29.0" - "@babel/helper-compilation-targets": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/compat-data": "npm:^7.28.5" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-validator-option": "npm:^7.27.1" "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.6" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.3" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions": "npm:^7.28.6" - "@babel/plugin-syntax-import-attributes": "npm:^7.28.6" + "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" + "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" - "@babel/plugin-transform-async-generator-functions": "npm:^7.29.0" - "@babel/plugin-transform-async-to-generator": "npm:^7.28.6" + "@babel/plugin-transform-async-generator-functions": "npm:^7.28.0" + "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" - "@babel/plugin-transform-block-scoping": "npm:^7.28.6" - "@babel/plugin-transform-class-properties": "npm:^7.28.6" - "@babel/plugin-transform-class-static-block": "npm:^7.28.6" - "@babel/plugin-transform-classes": "npm:^7.28.6" - "@babel/plugin-transform-computed-properties": "npm:^7.28.6" + "@babel/plugin-transform-block-scoping": "npm:^7.28.5" + "@babel/plugin-transform-class-properties": "npm:^7.27.1" + "@babel/plugin-transform-class-static-block": "npm:^7.28.3" + "@babel/plugin-transform-classes": "npm:^7.28.4" + "@babel/plugin-transform-computed-properties": "npm:^7.27.1" "@babel/plugin-transform-destructuring": "npm:^7.28.5" - "@babel/plugin-transform-dotall-regex": "npm:^7.28.6" + "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.29.0" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" - "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.6" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.6" + "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.0" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.5" "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" "@babel/plugin-transform-for-of": "npm:^7.27.1" "@babel/plugin-transform-function-name": "npm:^7.27.1" - "@babel/plugin-transform-json-strings": "npm:^7.28.6" + "@babel/plugin-transform-json-strings": "npm:^7.27.1" "@babel/plugin-transform-literals": "npm:^7.27.1" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.6" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.5" "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" "@babel/plugin-transform-modules-amd": "npm:^7.27.1" - "@babel/plugin-transform-modules-commonjs": "npm:^7.28.6" - "@babel/plugin-transform-modules-systemjs": "npm:^7.29.0" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-systemjs": "npm:^7.28.5" "@babel/plugin-transform-modules-umd": "npm:^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.29.0" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" "@babel/plugin-transform-new-target": "npm:^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.28.6" - "@babel/plugin-transform-numeric-separator": "npm:^7.28.6" - "@babel/plugin-transform-object-rest-spread": "npm:^7.28.6" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" + "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" + "@babel/plugin-transform-object-rest-spread": "npm:^7.28.4" "@babel/plugin-transform-object-super": "npm:^7.27.1" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.28.6" - "@babel/plugin-transform-optional-chaining": "npm:^7.28.6" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.28.5" "@babel/plugin-transform-parameters": "npm:^7.27.7" - "@babel/plugin-transform-private-methods": "npm:^7.28.6" - "@babel/plugin-transform-private-property-in-object": "npm:^7.28.6" + "@babel/plugin-transform-private-methods": "npm:^7.27.1" + "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" "@babel/plugin-transform-property-literals": "npm:^7.27.1" - "@babel/plugin-transform-regenerator": "npm:^7.29.0" - "@babel/plugin-transform-regexp-modifiers": "npm:^7.28.6" + "@babel/plugin-transform-regenerator": "npm:^7.28.4" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" "@babel/plugin-transform-reserved-words": "npm:^7.27.1" "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" - "@babel/plugin-transform-spread": "npm:^7.28.6" + "@babel/plugin-transform-spread": "npm:^7.27.1" "@babel/plugin-transform-sticky-regex": "npm:^7.27.1" "@babel/plugin-transform-template-literals": "npm:^7.27.1" "@babel/plugin-transform-typeof-symbol": "npm:^7.27.1" "@babel/plugin-transform-unicode-escapes": "npm:^7.27.1" - "@babel/plugin-transform-unicode-property-regex": "npm:^7.28.6" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.27.1" "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" - "@babel/plugin-transform-unicode-sets-regex": "npm:^7.28.6" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2: "npm:^0.4.15" - babel-plugin-polyfill-corejs3: "npm:^0.14.0" - babel-plugin-polyfill-regenerator: "npm:^0.6.6" - core-js-compat: "npm:^3.48.0" + babel-plugin-polyfill-corejs2: "npm:^0.4.14" + babel-plugin-polyfill-corejs3: "npm:^0.13.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.5" + core-js-compat: "npm:^3.43.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/211b33ec8644636275f61aa273071d8cbc2a6bb28d82ad246e3831a6aa7d96c610a55b5140bcd21be7f71fb04c3aa4a10eb08665fb5505e153cfdd8dbc8c1c1c + checksum: 10/e9a5136a7e34553cc70dd6594716144678a2e9ecc971caf6885c380c38fcbed8b387f3af418c9aa4b2d2765964bb4e8a2e14b709c2f165eec6ed13bda32587ea languageName: node linkType: hard @@ -1696,13 +1831,24 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.25.0": - version: 7.28.6 - resolution: "@babel/runtime@npm:7.28.6" - checksum: 10/fbcd439cb74d4a681958eb064c509829e3f46d8a4bfaaf441baa81bb6733d1e680bccc676c813883d7741bcaada1d0d04b15aa320ef280b5734e2192b50decf9 + version: 7.28.4 + resolution: "@babel/runtime@npm:7.28.4" + checksum: 10/6c9a70452322ea80b3c9b2a412bcf60771819213a67576c8cec41e88a95bb7bf01fc983754cda35dc19603eef52df22203ccbf7777b9d6316932f9fb77c25163 + languageName: node + linkType: hard + +"@babel/template@npm:^7.0.0, @babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.2" + "@babel/types": "npm:^7.27.1" + checksum: 10/fed15a84beb0b9340e5f81566600dbee5eccd92e4b9cc42a944359b1aa1082373391d9d5fc3656981dff27233ec935d0bc96453cf507f60a4b079463999244d8 languageName: node linkType: hard -"@babel/template@npm:^7.0.0, @babel/template@npm:^7.25.0, @babel/template@npm:^7.28.6, @babel/template@npm:^7.3.3": +"@babel/template@npm:^7.28.6": version: 7.28.6 resolution: "@babel/template@npm:7.28.6" dependencies: @@ -1713,7 +1859,22 @@ __metadata: languageName: node linkType: hard -"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5, @babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": +"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/traverse@npm:7.28.5" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.5" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.28.5" + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.5" + debug: "npm:^4.3.1" + checksum: 10/1fce426f5ea494913c40f33298ce219708e703f71cac7ac045ebde64b5a7b17b9275dfa4e05fb92c3f123136913dff62c8113172f4a5de66dab566123dbe7437 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": version: 7.29.0 resolution: "@babel/traverse@npm:7.29.0" dependencies: @@ -1728,7 +1889,17 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.26.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.5, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.26.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.28.5 + resolution: "@babel/types@npm:7.28.5" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10/4256bb9fb2298c4f9b320bde56e625b7091ea8d2433d98dcf524d4086150da0b6555aabd7d0725162670614a9ac5bf036d1134ca13dedc9707f988670f1362d7 + languageName: node + linkType: hard + +"@babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": version: 7.29.0 resolution: "@babel/types@npm:7.29.0" dependencies: @@ -1865,9 +2036,9 @@ __metadata: linkType: hard "@cspell/dict-aws@npm:^4.0.10": - version: 4.0.17 - resolution: "@cspell/dict-aws@npm:4.0.17" - checksum: 10/9f724e385ffe76a04cb3cd081bf301191c56b31273f5619507ca6baabf8fa00fbe27571d66e89016cd0bbc68cbf97a9920b5247e90e73a60e2eeedb87e1b86c6 + version: 4.0.16 + resolution: "@cspell/dict-aws@npm:4.0.16" + checksum: 10/2b2e48a2d06f9c91b9422428247ae265c7b226bec98ec675d743193c1bbe2244c2fc48e97fe109cee7db0619cfe51ea9c0d319602b2c5c483a89eeaa610bc779 languageName: node linkType: hard @@ -1881,9 +2052,9 @@ __metadata: linkType: hard "@cspell/dict-companies@npm:^3.1.15": - version: 3.2.10 - resolution: "@cspell/dict-companies@npm:3.2.10" - checksum: 10/e3e6be70cef9be8fa7da86ed2ce1150545062175f6335d30de9bcac2cf509fbfa82d5428333129be823698870df48f78abbff4c6ee50b465efb1951adaa4cdf3 + version: 3.2.7 + resolution: "@cspell/dict-companies@npm:3.2.7" + checksum: 10/b2754f6328c11d9d17ddbaa217a358280cf5a2b73378e161e62f70c50d51a67d456b6bdaedd63af8024cae52bca96b27a7d052d718d4449de47b2b01113e629b languageName: node linkType: hard @@ -1902,51 +2073,51 @@ __metadata: linkType: hard "@cspell/dict-csharp@npm:^4.0.6": - version: 4.0.8 - resolution: "@cspell/dict-csharp@npm:4.0.8" - checksum: 10/5acb41c32cdce8c3bda7ea74dfb833db92c403813a57373b8781d4aaede005be1342ad946a16139d47162f2405b90869eee477fc033b7cc10d731bb3ff9547db + version: 4.0.7 + resolution: "@cspell/dict-csharp@npm:4.0.7" + checksum: 10/bfc429fc40585905a1b8754eaf1c70fd59911250364bc8ec5f1ce81dfb38cfb27421a8ed4052d81b40832dfb26de8d4e63656a200c5a6459ad0fa9da8e8bb6ae languageName: node linkType: hard "@cspell/dict-css@npm:^4.0.17": - version: 4.0.19 - resolution: "@cspell/dict-css@npm:4.0.19" - checksum: 10/293edf2d26b33d85ea5828b499e77e5a6a471f7c8ac754adf7c574dac62363f10d46d1de47afc20b8904554212834b671bbd8e98669e59908856ca1c46c787db + version: 4.0.18 + resolution: "@cspell/dict-css@npm:4.0.18" + checksum: 10/1d829b7e2b3bb7bea5daca179d4de847b7aac761a68984783b226132c986e42504cf4d6410ae69b3103afa4779859c2860810b5373d6bc80709637128c7d397c languageName: node linkType: hard "@cspell/dict-dart@npm:^2.3.0": - version: 2.3.2 - resolution: "@cspell/dict-dart@npm:2.3.2" - checksum: 10/d4bf20c272110ad6537824199de1224447b798abf225fd3af2b73d8eca4d9e64eac3c2580940d93b07d74744d8e35aea7f2f547ac3ef3e73b0499bf36bb50f74 + version: 2.3.1 + resolution: "@cspell/dict-dart@npm:2.3.1" + checksum: 10/79764a0499a0267c34febc368ae8dfb47ebe58a79373e48070581a3a8095102a71e8cb88711b7dd431ca559d0d0554803ca2d53051e325903459a670f56c984f languageName: node linkType: hard -"@cspell/dict-data-science@npm:^2.0.13, @cspell/dict-data-science@npm:^2.0.8": - version: 2.0.13 - resolution: "@cspell/dict-data-science@npm:2.0.13" - checksum: 10/d5aee1a87dace4a401ebe7d9327773a8b21f1e0ae5ce4307f302d60857539f964de334a98c772d6dd88c60e3f3056b9bdd3774fe1bcacb2dbaca9160aef52725 +"@cspell/dict-data-science@npm:^2.0.12, @cspell/dict-data-science@npm:^2.0.8": + version: 2.0.12 + resolution: "@cspell/dict-data-science@npm:2.0.12" + checksum: 10/2eb3492c9de93a5fea57f81bb3daac80c5174dbac5ae981782d27b56438fbc10d96a06973fa07051e5eaf8489a5ce02c37dce5158d601388d5df85c6c0a2b055 languageName: node linkType: hard "@cspell/dict-django@npm:^4.1.4": - version: 4.1.6 - resolution: "@cspell/dict-django@npm:4.1.6" - checksum: 10/0898787758a64de3a9b9a74febc1e789de30e01403c3c87fe4d99ce992419113297a4a6ddf982c3504f51c4382dd60467288da63cc87e27506f3daba8c03b15a + version: 4.1.5 + resolution: "@cspell/dict-django@npm:4.1.5" + checksum: 10/cc0181e0e8e9ede5b4efc11c5a141cf54122721b204c956a7e270573adf1e8ca14e6f80e51b5c071154da17188056b5f4cc3da1f68f84ff2162b62abef3e3ebc languageName: node linkType: hard "@cspell/dict-docker@npm:^1.1.13": - version: 1.1.17 - resolution: "@cspell/dict-docker@npm:1.1.17" - checksum: 10/438cc04e0ebcab53b49cecee7ae02c743733b8ec7df4b75075c31574f764aa60353a3cb0db3fb8c80271339d4fc0c1d05864bb6b1ac14891cacfd4098f0b0dce + version: 1.1.16 + resolution: "@cspell/dict-docker@npm:1.1.16" + checksum: 10/dc126d94203fa23c0a9d1466fa634b1ee4b4770d5762dbbbc868198318cf8d860de26d1632700a3e613eb81d27d0e46c72cbf74ba0cca5cca0032dbf056ae472 languageName: node linkType: hard "@cspell/dict-dotnet@npm:^5.0.9": - version: 5.0.12 - resolution: "@cspell/dict-dotnet@npm:5.0.12" - checksum: 10/a49d2f284ce3c3209b9a121dbae174121dc4285300fd8f3babb69da38d2edbabffcbf4c6029e598a2a760be14c29805f57f81c49909ffaa3a3416f0358eb512f + version: 5.0.10 + resolution: "@cspell/dict-dotnet@npm:5.0.10" + checksum: 10/ce9d101cfd1af390e49ac114dd576172a932e95a5e4590289a246477ff6d14711efa5dd794188affed13c45050e0ecda4cf95cd26019c5c04dce33580effdc88 languageName: node linkType: hard @@ -1958,9 +2129,9 @@ __metadata: linkType: hard "@cspell/dict-en-common-misspellings@npm:^2.0.10": - version: 2.1.12 - resolution: "@cspell/dict-en-common-misspellings@npm:2.1.12" - checksum: 10/2f3d608c241694c673cfd0191274554270c82ca18953d84a3224fe7122fe5cb68261ab06f13ff90466266da4835ce1a2f266790f67a19b8f2f1928b3a1d22354 + version: 2.1.8 + resolution: "@cspell/dict-en-common-misspellings@npm:2.1.8" + checksum: 10/fe8764a14b28269956650092eea34df94ce4e903ff5178e3a504283414cc2ae3b2afc2e2716317d2adde6fe13bc5189eae3577901921f5ef462af1ac2a898b8c languageName: node linkType: hard @@ -1972,16 +2143,16 @@ __metadata: linkType: hard "@cspell/dict-en_us@npm:^4.4.3": - version: 4.4.29 - resolution: "@cspell/dict-en_us@npm:4.4.29" - checksum: 10/537f254cb34484f6b44a9c935ad8ad32924c950b338c23ee2494c26a65b8eb06cfa16452ef5bf3102322ec4be3a55563a582d8efd3f651b64c41b5ee16f90738 + version: 4.4.24 + resolution: "@cspell/dict-en_us@npm:4.4.24" + checksum: 10/b7a6525d5c6153610e8722266d7d8cbbf4818c741992977a4b8099b0ff7196824b2bb509deba9de66fc2414479bfc4db2f41640e9748e048edd99058aaae2a42 languageName: node linkType: hard "@cspell/dict-filetypes@npm:^3.0.11": - version: 3.0.16 - resolution: "@cspell/dict-filetypes@npm:3.0.16" - checksum: 10/30f05d175b96cd4bb6d9504af929255987aa922e29223eb3fc00c712a375c0843903935b8c648fe514011904386b7c652ac87a197aa8b65f47695a6e96d3e293 + version: 3.0.14 + resolution: "@cspell/dict-filetypes@npm:3.0.14" + checksum: 10/545eee0cb4a80491a1fbb03b964d31569379a775528b090c992ba72d3ae6fe4dfae5c484b5a50226f8e52979238875476c688937096486bebfa0c8f3a72da499 languageName: node linkType: hard @@ -2007,9 +2178,9 @@ __metadata: linkType: hard "@cspell/dict-fullstack@npm:^3.2.6": - version: 3.2.8 - resolution: "@cspell/dict-fullstack@npm:3.2.8" - checksum: 10/d38cd753542866308ef31b586bc2b58777ff1b08dc094256cebe10b31acf2820614966c3e3391897ea3f5a1958b80499743495fa9b33a0be034070ae21f87781 + version: 3.2.7 + resolution: "@cspell/dict-fullstack@npm:3.2.7" + checksum: 10/cdb69a00663a34cb611c8f3e8f26651a0aa8e50d59de6ebb85724cfdd239382398ca35636bbe64f3573e1da795c15ace297dbf47cb83747439b109f16bab593d languageName: node linkType: hard @@ -2021,16 +2192,16 @@ __metadata: linkType: hard "@cspell/dict-git@npm:^3.0.4": - version: 3.1.0 - resolution: "@cspell/dict-git@npm:3.1.0" - checksum: 10/d64ac12882bfff6f02755bf4eaf47d9e340edcf36867a83d5df106dba6e13ab7ccc519c48f12f8312324a4ac674ff468a8499b4ebd9cf264af97f545597614eb + version: 3.0.7 + resolution: "@cspell/dict-git@npm:3.0.7" + checksum: 10/bf88770be43c1bd4c2bea6737edd20939a78b7c0e9ff28e06490394f056637a27f49a6716e0f6ed845eaf2fc1afa85d4bd7cfafb56e3d4dfeb491b49669fd376 languageName: node linkType: hard "@cspell/dict-golang@npm:^6.0.20": - version: 6.0.26 - resolution: "@cspell/dict-golang@npm:6.0.26" - checksum: 10/b229f7e5b78b2839eed501e37719546cee787426f323a4a62feaec1db15422482b8b4d97a126c0c6342c2bf1c6f6dc12ac4e05aa245de4b768c5753d2affe9d4 + version: 6.0.24 + resolution: "@cspell/dict-golang@npm:6.0.24" + checksum: 10/4c1b4ac025d389759458ab31e73b9cb7a84fa54147f97a71b93f06e69330d9b02af1ba36a4828af1891049e3bb11f659f2c2da53a947dbfe0235ed1d5d26faed languageName: node linkType: hard @@ -2049,16 +2220,16 @@ __metadata: linkType: hard "@cspell/dict-html-symbol-entities@npm:^4.0.3": - version: 4.0.5 - resolution: "@cspell/dict-html-symbol-entities@npm:4.0.5" - checksum: 10/050f57152c873bf9725dfec3e7c6b6ce6a0c178ee084fcad48be186bcc965caabf10462d47fc3c9adcae8d5d8d91dc3cf739ab913d2ed7f5f50abec215e9851b + version: 4.0.4 + resolution: "@cspell/dict-html-symbol-entities@npm:4.0.4" + checksum: 10/1898fc84496526e9c54e125369f3c87412839aee3e00da8aee3fee1c1165d4f2e7944833398b08f07ee58e817999af462f254e9ce06b06323fd665cbe6d01a3e languageName: node linkType: hard "@cspell/dict-html@npm:^4.0.11": - version: 4.0.14 - resolution: "@cspell/dict-html@npm:4.0.14" - checksum: 10/b6047177b6012d467926c27777391cc3f6ebc522c6f4dce01e58a8100dfac61d5cecefc59ba5994728d41c7480d7c9d994d0f8673197740526f6afbed544094a + version: 4.0.13 + resolution: "@cspell/dict-html@npm:4.0.13" + checksum: 10/856a73c5888d1d4904c9403f7852ec5ab9ac1fb8683af838c5be136691095739f892110974f4266c68f61f51c377b907d0404b532523cbf83ed2b38d330dfd2f languageName: node linkType: hard @@ -2119,42 +2290,42 @@ __metadata: linkType: hard "@cspell/dict-markdown@npm:^2.0.10": - version: 2.0.14 - resolution: "@cspell/dict-markdown@npm:2.0.14" + version: 2.0.13 + resolution: "@cspell/dict-markdown@npm:2.0.13" peerDependencies: - "@cspell/dict-css": ^4.0.19 - "@cspell/dict-html": ^4.0.14 - "@cspell/dict-html-symbol-entities": ^4.0.5 + "@cspell/dict-css": ^4.0.18 + "@cspell/dict-html": ^4.0.13 + "@cspell/dict-html-symbol-entities": ^4.0.4 "@cspell/dict-typescript": ^3.2.3 - checksum: 10/7ca267a7089bcf63aebb94b2934220aa81e1b747427e7c7998fc6852818a726da8ccaf380e0b76314cfc57504308446361dc6f1daef3cd73f3d60479563c636a + checksum: 10/7f1d131301ff7128b974ab35498fe2842584626c2c8f45a11a30fc245439417caaa7a615611ce324f834648da3593fd5c305999af157d317973c2f2c0a2a8849 languageName: node linkType: hard "@cspell/dict-monkeyc@npm:^1.0.10": - version: 1.0.12 - resolution: "@cspell/dict-monkeyc@npm:1.0.12" - checksum: 10/9c952968b50a44d5860f9d9ebce49a71d433f1411d7a074711db176eedaaaf810c0c01bb5e32bc66bb08953b8d4a2c8a19bef394407603d18023d1242a882470 + version: 1.0.11 + resolution: "@cspell/dict-monkeyc@npm:1.0.11" + checksum: 10/6e896fd9596261ece639cdad4d03291f4faf92ed27d9257aae1f34f075b13a865287734d170a2e9ea228ac2b7de03eaaec795284b945c8a96ac24684ad56ba7a languageName: node linkType: hard "@cspell/dict-node@npm:^5.0.7": - version: 5.0.9 - resolution: "@cspell/dict-node@npm:5.0.9" - checksum: 10/b934c9c94e230742a612f3133cc81a62af4073e2f8c50855d37e90bad7860200600b8492988d70f3ba13a055e357554a4abf71f0a437650ae24e5b300d6615ee + version: 5.0.8 + resolution: "@cspell/dict-node@npm:5.0.8" + checksum: 10/6a008c8b82021e24124f619efdd485683f1dfb3c37ec4fe2b645e8d8002270c221869a19a5e2d17a978acb8d60292e5c5dd056aa0dd35b3e4fedf87e7b8afae4 languageName: node linkType: hard "@cspell/dict-npm@npm:^5.2.1": - version: 5.2.35 - resolution: "@cspell/dict-npm@npm:5.2.35" - checksum: 10/c98bddeb07203be6be2d41dff724779c35459e1e1a1f9c552dd5224b8862a21cb7c13fd32236ba62ad20df0f99b05f8d409a2330c047aaae2ba94dbdf8312984 + version: 5.2.25 + resolution: "@cspell/dict-npm@npm:5.2.25" + checksum: 10/e25141f0f52567dbe09263dd624966fe27d472ccef20f2d5ffdd2b844febe9285d05d2db4a5e501bf075557ba01780807f2ef0c2e6d1f44d095d2420abfd0a22 languageName: node linkType: hard "@cspell/dict-php@npm:^4.0.14": - version: 4.1.1 - resolution: "@cspell/dict-php@npm:4.1.1" - checksum: 10/e81bed158736ea6f2db8d9e116c16cc3f46b455bb3ed673a100166cfee340be38d0cd9bc3f39c5590364c0bb2bd472755f5e4c65a20787d2d7df749ff43f49d1 + version: 4.1.0 + resolution: "@cspell/dict-php@npm:4.1.0" + checksum: 10/64ab278a581822381335df5dcf830c449a63e5a5fba5c0bbea4f43a36bd8039b3323392b386be2fc5b751bd6fef0061b338d5ae28d7c12214f2c2def0dcce260 languageName: node linkType: hard @@ -2166,18 +2337,18 @@ __metadata: linkType: hard "@cspell/dict-public-licenses@npm:^2.0.13": - version: 2.0.16 - resolution: "@cspell/dict-public-licenses@npm:2.0.16" - checksum: 10/1f227d3d083bdec495d19050347897cf2fe58d3c77143d233a41b300e00981790b46361a651eb592ff60dc8bc772db3f16c0c89cc295ea2b446237031f48efb1 + version: 2.0.15 + resolution: "@cspell/dict-public-licenses@npm:2.0.15" + checksum: 10/a8580441c964a8c3ce4c4fed74189fa5752eb98e56baeb2608753e4deefb202c8f9d9f1869e17c5f2f1fc7bb1976854525ac50750109bb377b4cfa0a4eb12fe2 languageName: node linkType: hard "@cspell/dict-python@npm:^4.2.17": - version: 4.2.25 - resolution: "@cspell/dict-python@npm:4.2.25" + version: 4.2.23 + resolution: "@cspell/dict-python@npm:4.2.23" dependencies: - "@cspell/dict-data-science": "npm:^2.0.13" - checksum: 10/fcbbc2db9a1ff01e16e33df10c1f6575e65eece8b13b1ef3a45481aeaafa6250ad28358a6ec787d4d7a6061907b338c7adb52bc882502cd6ae8904d20b60f10d + "@cspell/dict-data-science": "npm:^2.0.12" + checksum: 10/ded89d5fd843bf1fe0e3ae3a7386db63c66c00a90d5a122fcff4206cb4c6dec9dfa463fcc841553a3d93b102da62ff9a03aaf359876cc9aec5e2a3c897f04f9c languageName: node linkType: hard @@ -2189,23 +2360,23 @@ __metadata: linkType: hard "@cspell/dict-ruby@npm:^5.0.8": - version: 5.1.0 - resolution: "@cspell/dict-ruby@npm:5.1.0" - checksum: 10/afe89daa54a6c3be62686f4f74fe924dabb4077e9aead71bf26e211885d068066df414857f27da258a130e2e06ecb5eac394225bc120607bebcb08746b6188f9 + version: 5.0.9 + resolution: "@cspell/dict-ruby@npm:5.0.9" + checksum: 10/57a752ff19f9484a042e859254eb6d487b46266f374faeb17e257b3583d94fbd908c0bd308e2a7d3b0169839cdd5a6d9fc12563955b69f26e8667acc43fbfd53 languageName: node linkType: hard "@cspell/dict-rust@npm:^4.0.11": - version: 4.1.2 - resolution: "@cspell/dict-rust@npm:4.1.2" - checksum: 10/f618727d8c3af5f3d5e74eca04e9b0685f525d217206c40faf9803aa4fd7b9defc9b5174bff17411ef2d935df7ebe66cb2e38f34b6887a118908e10a5c834376 + version: 4.0.12 + resolution: "@cspell/dict-rust@npm:4.0.12" + checksum: 10/ba928f5538e09887f715713a6899d09ed7b1663c85d33c766adbaf22a95e01fa71d3736d5ff17c3c0f0a387c43756702fb1529e62e714ddec0df6cde9617ad20 languageName: node linkType: hard "@cspell/dict-scala@npm:^5.0.7": - version: 5.0.9 - resolution: "@cspell/dict-scala@npm:5.0.9" - checksum: 10/9b095e052e4c72fe0d0657f11f654cac6e8bbf6f6ac2043e8f1de8641aa7cad46b94416d70aa9dbd8556b1c1cfd0ac522868867e911a707e7b0e2cbcfcbfb5e2 + version: 5.0.8 + resolution: "@cspell/dict-scala@npm:5.0.8" + checksum: 10/f9d8d748a66cea454fbe3d6dc51dde03d58cf2a28a4a64698ac4022a91b65503b2b6f74206421488d4396949d9b09477699734ca05e28a79a9c2e6a39f65e2c5 languageName: node linkType: hard @@ -2217,9 +2388,9 @@ __metadata: linkType: hard "@cspell/dict-software-terms@npm:^5.0.5": - version: 5.1.23 - resolution: "@cspell/dict-software-terms@npm:5.1.23" - checksum: 10/69f9149df10071ae0901d71f01a6475f329cd2571973f6d356ebf210e0405a935ec28d5b07d58eff0a861a58e59406c96e7f608ed677ec1126ade90cf6d9f118 + version: 5.1.15 + resolution: "@cspell/dict-software-terms@npm:5.1.15" + checksum: 10/7bcdaf626936c85163b4e0153a95d5318da207446a6c9f2ccd705a3f0a49cada14ec678153f9b691f2fbcb2f702f54828c3ce2d4c193d319ebd7407684dc6f30 languageName: node linkType: hard @@ -2311,15 +2482,15 @@ __metadata: linkType: hard "@dr.pogodin/react-native-fs@npm:^2.36.2": - version: 2.37.0 - resolution: "@dr.pogodin/react-native-fs@npm:2.37.0" + version: 2.36.2 + resolution: "@dr.pogodin/react-native-fs@npm:2.36.2" dependencies: buffer: "npm:^6.0.3" http-status-codes: "npm:^2.3.0" peerDependencies: react: "*" react-native: "*" - checksum: 10/c66c03a9e814c0c4e3c9b575bc1dc7aedee18e815f45860541b94935cbfdfae8ccb71964c359c420498d120b00a1b997bf5e4739da58a8d681ad33df1d76ef03 + checksum: 10/6a4b1c324386c455e01ccf45daf80474364079bc6495f0a65c1468e4e15607951754b81d9d720fb635a8caba5ba94b34719d0140357ce8e168172583e09156d4 languageName: node linkType: hard @@ -2361,13 +2532,13 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.9.1 - resolution: "@eslint-community/eslint-utils@npm:4.9.1" + version: 4.9.0 + resolution: "@eslint-community/eslint-utils@npm:4.9.0" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10/863b5467868551c9ae34d03eefe634633d08f623fc7b19d860f8f26eb6f303c1a5934253124163bee96181e45ed22bf27473dccc295937c3078493a4a8c9eddd + checksum: 10/89b1eb3137e14c379865e60573f524fcc0ee5c4b0c7cd21090673e75e5a720f14b92f05ab2d02704c2314b67e67b6f96f3bb209ded6b890ced7b667aa4bf1fa2 languageName: node linkType: hard @@ -2412,9 +2583,91 @@ __metadata: languageName: node linkType: hard -"@expo/cli@npm:54.0.23": - version: 54.0.23 - resolution: "@expo/cli@npm:54.0.23" +"@expo/cli@npm:54.0.18": + version: 54.0.18 + resolution: "@expo/cli@npm:54.0.18" + dependencies: + "@0no-co/graphql.web": "npm:^1.0.8" + "@expo/code-signing-certificates": "npm:^0.0.5" + "@expo/config": "npm:~12.0.11" + "@expo/config-plugins": "npm:~54.0.3" + "@expo/devcert": "npm:^1.2.1" + "@expo/env": "npm:~2.0.8" + "@expo/image-utils": "npm:^0.8.8" + "@expo/json-file": "npm:^10.0.8" + "@expo/metro": "npm:~54.1.0" + "@expo/metro-config": "npm:~54.0.10" + "@expo/osascript": "npm:^2.3.8" + "@expo/package-manager": "npm:^1.9.9" + "@expo/plist": "npm:^0.4.8" + "@expo/prebuild-config": "npm:^54.0.7" + "@expo/schema-utils": "npm:^0.1.8" + "@expo/spawn-async": "npm:^1.7.2" + "@expo/ws-tunnel": "npm:^1.0.1" + "@expo/xcpretty": "npm:^4.3.0" + "@react-native/dev-middleware": "npm:0.81.5" + "@urql/core": "npm:^5.0.6" + "@urql/exchange-retry": "npm:^1.3.0" + accepts: "npm:^1.3.8" + arg: "npm:^5.0.2" + better-opn: "npm:~3.0.2" + bplist-creator: "npm:0.1.0" + bplist-parser: "npm:^0.3.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.3.0" + compression: "npm:^1.7.4" + connect: "npm:^3.7.0" + debug: "npm:^4.3.4" + env-editor: "npm:^0.4.1" + expo-server: "npm:^1.0.5" + freeport-async: "npm:^2.0.0" + getenv: "npm:^2.0.0" + glob: "npm:^13.0.0" + lan-network: "npm:^0.1.6" + minimatch: "npm:^9.0.0" + node-forge: "npm:^1.3.1" + npm-package-arg: "npm:^11.0.0" + ora: "npm:^3.4.0" + picomatch: "npm:^3.0.1" + pretty-bytes: "npm:^5.6.0" + pretty-format: "npm:^29.7.0" + progress: "npm:^2.0.3" + prompts: "npm:^2.3.2" + qrcode-terminal: "npm:0.11.0" + require-from-string: "npm:^2.0.2" + requireg: "npm:^0.2.2" + resolve: "npm:^1.22.2" + resolve-from: "npm:^5.0.0" + resolve.exports: "npm:^2.0.3" + semver: "npm:^7.6.0" + send: "npm:^0.19.0" + slugify: "npm:^1.3.4" + source-map-support: "npm:~0.5.21" + stacktrace-parser: "npm:^0.1.10" + structured-headers: "npm:^0.4.1" + tar: "npm:^7.5.2" + terminal-link: "npm:^2.1.1" + undici: "npm:^6.18.2" + wrap-ansi: "npm:^7.0.0" + ws: "npm:^8.12.1" + peerDependencies: + expo: "*" + expo-router: "*" + react-native: "*" + peerDependenciesMeta: + expo-router: + optional: true + react-native: + optional: true + bin: + expo-internal: build/bin/cli + checksum: 10/9a84554d120759be74ee84e2d9e31d7279e67c5992ace7ba51871815169b552f3b30cb6715a9c3685717bde32756e45dbeae6d5200f75b7d2ea877f5f80172e3 + languageName: node + linkType: hard + +"@expo/cli@npm:54.0.22": + version: 54.0.22 + resolution: "@expo/cli@npm:54.0.22" dependencies: "@0no-co/graphql.web": "npm:^1.0.8" "@expo/code-signing-certificates": "npm:^0.0.6" @@ -2490,7 +2743,17 @@ __metadata: optional: true bin: expo-internal: build/bin/cli - checksum: 10/9a41c55aa7f628ad44048c9f41cd8d7f4f73a8bfc01adaa956ddaae87d332ae979eadb52bdab894ef5b1c9b5722486ccdb999057d8b9eed392c827f476feb79f + checksum: 10/c20c89f5737e1f5b055567d6b560a920ea52ed17cab73fd5ab59d8f1640c62f7a9915d9d69eb0c5ebc85bd04505e3ac32ba329ab8f1e15da8a9fcd6c6dd8d808 + languageName: node + linkType: hard + +"@expo/code-signing-certificates@npm:^0.0.5": + version: 0.0.5 + resolution: "@expo/code-signing-certificates@npm:0.0.5" + dependencies: + node-forge: "npm:^1.2.1" + nullthrows: "npm:^1.1.1" + checksum: 10/6783721e2eafff5547500eaf99bee54641f076dc7221e52b48f1494f993040d779fe13ae7d95d3874c483eb545cafbf692315e2da0b0fc24e7a477b84e289617 languageName: node linkType: hard @@ -2503,6 +2766,28 @@ __metadata: languageName: node linkType: hard +"@expo/config-plugins@npm:~54.0.3": + version: 54.0.3 + resolution: "@expo/config-plugins@npm:54.0.3" + dependencies: + "@expo/config-types": "npm:^54.0.9" + "@expo/json-file": "npm:~10.0.7" + "@expo/plist": "npm:^0.4.7" + "@expo/sdk-runtime-versions": "npm:^1.0.0" + chalk: "npm:^4.1.2" + debug: "npm:^4.3.5" + getenv: "npm:^2.0.0" + glob: "npm:^13.0.0" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.5.4" + slash: "npm:^3.0.0" + slugify: "npm:^1.6.6" + xcode: "npm:^3.0.1" + xml2js: "npm:0.6.0" + checksum: 10/5eb33583eba8ba87ad19f4775749864fd72fe251be1b9bb1b765f0499fd36d21a7dd936f53c36368454726b72b0a8ea99b1e315bd6c005de1f4541bafb57d1c6 + languageName: node + linkType: hard + "@expo/config-plugins@npm:~54.0.4": version: 54.0.4 resolution: "@expo/config-plugins@npm:54.0.4" @@ -2532,6 +2817,34 @@ __metadata: languageName: node linkType: hard +"@expo/config-types@npm:^54.0.9": + version: 54.0.9 + resolution: "@expo/config-types@npm:54.0.9" + checksum: 10/572ddcf9b8a3d785c0cb0275fbcd2cc4f7004191cda5fa387cf2babfcea79ae04b9d68bf459a9b43538ad35ce09955dfa5e6ebafb6050758cd596cb6e61885b8 + languageName: node + linkType: hard + +"@expo/config@npm:~12.0.11": + version: 12.0.11 + resolution: "@expo/config@npm:12.0.11" + dependencies: + "@babel/code-frame": "npm:~7.10.4" + "@expo/config-plugins": "npm:~54.0.3" + "@expo/config-types": "npm:^54.0.9" + "@expo/json-file": "npm:^10.0.7" + deepmerge: "npm:^4.3.1" + getenv: "npm:^2.0.0" + glob: "npm:^13.0.0" + require-from-string: "npm:^2.0.2" + resolve-from: "npm:^5.0.0" + resolve-workspace-root: "npm:^2.0.0" + semver: "npm:^7.6.0" + slugify: "npm:^1.3.4" + sucrase: "npm:~3.35.1" + checksum: 10/c749457b50a5c2531c5fb7d29c343a7761081f7218199ab65524ff8ab9edb36f5903cde6a35fbd95b792e537a7c4183362bb9061a1bdedff8aae4d731171e4f5 + languageName: node + linkType: hard + "@expo/config@npm:~12.0.13": version: 12.0.13 resolution: "@expo/config@npm:12.0.13" @@ -2580,16 +2893,16 @@ __metadata: languageName: node linkType: hard -"@expo/env@npm:~2.0.8": - version: 2.0.11 - resolution: "@expo/env@npm:2.0.11" +"@expo/env@npm:~2.0.7, @expo/env@npm:~2.0.8": + version: 2.0.8 + resolution: "@expo/env@npm:2.0.8" dependencies: chalk: "npm:^4.0.0" debug: "npm:^4.3.4" dotenv: "npm:~16.4.5" dotenv-expand: "npm:~11.0.6" getenv: "npm:^2.0.0" - checksum: 10/bfb307d6b35d47c58f82424c85543325370bbdc0f303cdd4ddfe5d6854e0386ad72166fec6e1da633fc7cb3b0915d7c40642c49773ae31e6faed13569d1b601c + checksum: 10/d440e0c7d8f4d438a9f82794435c315b63fc18a9b251ee7238f150255634d2786874cd85ff78589eb0488125d41d57a9b055fb1a25c4e06a08a0330d809e78cd languageName: node linkType: hard @@ -2615,8 +2928,8 @@ __metadata: linkType: hard "@expo/image-utils@npm:^0.8.8": - version: 0.8.12 - resolution: "@expo/image-utils@npm:0.8.12" + version: 0.8.8 + resolution: "@expo/image-utils@npm:0.8.8" dependencies: "@expo/spawn-async": "npm:^1.7.2" chalk: "npm:^4.0.0" @@ -2624,18 +2937,65 @@ __metadata: jimp-compact: "npm:0.16.1" parse-png: "npm:^2.1.0" resolve-from: "npm:^5.0.0" + resolve-global: "npm:^1.0.0" semver: "npm:^7.6.0" - checksum: 10/fb474558bb4009f39c640fb028a57cfae721e52dae0085bb2505390c6968d30cdc82eb195c15de82f30879c710104c08e60120de8f49613183437701f19dd363 + temp-dir: "npm:~2.0.0" + unique-string: "npm:~2.0.0" + checksum: 10/f7a2d81785e81e3ba5cabf1ae9acf3923b9320345b1761dfd6ebaaa1dc77f7b08e5a86aead2657223d47b65dec96fb70f012b149149dbf202de4809e5920baf5 languageName: node linkType: hard -"@expo/json-file@npm:^10.0.12, @expo/json-file@npm:^10.0.8, @expo/json-file@npm:~10.0.8": - version: 10.0.12 - resolution: "@expo/json-file@npm:10.0.12" +"@expo/json-file@npm:^10.0.7, @expo/json-file@npm:^10.0.8, @expo/json-file@npm:~10.0.7": + version: 10.0.8 + resolution: "@expo/json-file@npm:10.0.8" dependencies: - "@babel/code-frame": "npm:^7.20.0" + "@babel/code-frame": "npm:~7.10.4" + json5: "npm:^2.2.3" + checksum: 10/d744edb72ea5a52d8829357fb2adb93be3181a522e3b6b8dc3a32a448c9c76eca603f8a390f1a126f4b16c21a470e0c1b2dde0bcd2cb799d97178e48df93a3b3 + languageName: node + linkType: hard + +"@expo/json-file@npm:^10.0.9, @expo/json-file@npm:~10.0.8": + version: 10.0.9 + resolution: "@expo/json-file@npm:10.0.9" + dependencies: + "@babel/code-frame": "npm:~7.10.4" json5: "npm:^2.2.3" - checksum: 10/547f5b9d1c5b10147ef0780d079d853e3b2e8ec0b09080420cb48592060a4399308622fd205aaec5e157c41d37c5b69dffa9aaa96c01fe444b0258f78c3bb85f + checksum: 10/40c758fcdb37b35aa5ca43acd2c882763f073672ccaf53038bf94100a5c511ff90e0d1f900a4c49394ae968bdbabbedfc39f961b7d60a47abecb8ec55c6863da + languageName: node + linkType: hard + +"@expo/metro-config@npm:54.0.10, @expo/metro-config@npm:~54.0.10": + version: 54.0.10 + resolution: "@expo/metro-config@npm:54.0.10" + dependencies: + "@babel/code-frame": "npm:^7.20.0" + "@babel/core": "npm:^7.20.0" + "@babel/generator": "npm:^7.20.5" + "@expo/config": "npm:~12.0.11" + "@expo/env": "npm:~2.0.7" + "@expo/json-file": "npm:~10.0.7" + "@expo/metro": "npm:~54.1.0" + "@expo/spawn-async": "npm:^1.7.2" + browserslist: "npm:^4.25.0" + chalk: "npm:^4.1.0" + debug: "npm:^4.3.2" + dotenv: "npm:~16.4.5" + dotenv-expand: "npm:~11.0.6" + getenv: "npm:^2.0.0" + glob: "npm:^13.0.0" + hermes-parser: "npm:^0.29.1" + jsc-safe-url: "npm:^0.2.4" + lightningcss: "npm:^1.30.1" + minimatch: "npm:^9.0.0" + postcss: "npm:~8.4.32" + resolve-from: "npm:^5.0.0" + peerDependencies: + expo: "*" + peerDependenciesMeta: + expo: + optional: true + checksum: 10/4a2fc2eea0cdc88f52d29d0a70fdb315bdbcc7b5300cb64afcc6a2a756db01449b3a60e401fc662ea13b441dc2287d1b492524ac7e6dece0c23d6d7105e2ebdf languageName: node linkType: hard @@ -2693,6 +3053,26 @@ __metadata: languageName: node linkType: hard +"@expo/metro@npm:~54.1.0": + version: 54.1.0 + resolution: "@expo/metro@npm:54.1.0" + dependencies: + metro: "npm:0.83.2" + metro-babel-transformer: "npm:0.83.2" + metro-cache: "npm:0.83.2" + metro-cache-key: "npm:0.83.2" + metro-config: "npm:0.83.2" + metro-core: "npm:0.83.2" + metro-file-map: "npm:0.83.2" + metro-resolver: "npm:0.83.2" + metro-runtime: "npm:0.83.2" + metro-source-map: "npm:0.83.2" + metro-transform-plugins: "npm:0.83.2" + metro-transform-worker: "npm:0.83.2" + checksum: 10/219d1d3b94faa0cfa2af94a3c9c307e63bc1ede1e96da6d2e324c02275b882bd2a814730a4ab1842f8f0117316a0e66e0f02f83bba5620397096b5562f28da51 + languageName: node + linkType: hard + "@expo/metro@npm:~54.2.0": version: 54.2.0 resolution: "@expo/metro@npm:54.2.0" @@ -2716,29 +3096,44 @@ __metadata: linkType: hard "@expo/osascript@npm:^2.3.8": - version: 2.4.2 - resolution: "@expo/osascript@npm:2.4.2" + version: 2.3.8 + resolution: "@expo/osascript@npm:2.3.8" dependencies: "@expo/spawn-async": "npm:^1.7.2" - checksum: 10/5609b926bd68120b6a01edea0c7b14d4fa9fcd454bbcb49b89988f7acdb540f3b9c1c133acbbd3f9cd6a6937ce2a950c9cdde2a98ec8769d8a8b1481666a67d9 + exec-async: "npm:^2.2.0" + checksum: 10/153ddb710870a29a4f69d2b6a42a492bf03f9707f8bc2c8929540429b3844c0ff3ccdb8f8ff78ee886fa54c3e8a584f7ca1d9718322503fca7c325558f121db6 languageName: node linkType: hard "@expo/package-manager@npm:^1.9.10": - version: 1.10.3 - resolution: "@expo/package-manager@npm:1.10.3" + version: 1.10.0 + resolution: "@expo/package-manager@npm:1.10.0" + dependencies: + "@expo/json-file": "npm:^10.0.9" + "@expo/spawn-async": "npm:^1.7.2" + chalk: "npm:^4.0.0" + npm-package-arg: "npm:^11.0.0" + ora: "npm:^3.4.0" + resolve-workspace-root: "npm:^2.0.0" + checksum: 10/61dc892764f886fc9bf4b957fbc8b686fc941f2ceb008428752070f61cd44a40bd4d48bef594b3169eacb389d9e44f86c6b0003da8ef1c8ab3948dfd88875328 + languageName: node + linkType: hard + +"@expo/package-manager@npm:^1.9.9": + version: 1.9.9 + resolution: "@expo/package-manager@npm:1.9.9" dependencies: - "@expo/json-file": "npm:^10.0.12" + "@expo/json-file": "npm:^10.0.8" "@expo/spawn-async": "npm:^1.7.2" chalk: "npm:^4.0.0" npm-package-arg: "npm:^11.0.0" ora: "npm:^3.4.0" resolve-workspace-root: "npm:^2.0.0" - checksum: 10/cac9008ec362af0b54ebf55cb64514e3f4258423f0be9a0d1adb2815380e912783be78750c898e393f7bebe7a1b8288d449052b0ce9f790400d185a29b8274bd + checksum: 10/d39c90599a8f94fcb93a274e6505df60872ef1f574fbb29e653de622a93536db926e3f9219ac4e8249c8380143518b92e95736a4aa0bed220bf33114206974fb languageName: node linkType: hard -"@expo/plist@npm:^0.4.8": +"@expo/plist@npm:^0.4.7, @expo/plist@npm:^0.4.8": version: 0.4.8 resolution: "@expo/plist@npm:0.4.8" dependencies: @@ -2749,6 +3144,26 @@ __metadata: languageName: node linkType: hard +"@expo/prebuild-config@npm:^54.0.7": + version: 54.0.7 + resolution: "@expo/prebuild-config@npm:54.0.7" + dependencies: + "@expo/config": "npm:~12.0.11" + "@expo/config-plugins": "npm:~54.0.3" + "@expo/config-types": "npm:^54.0.9" + "@expo/image-utils": "npm:^0.8.8" + "@expo/json-file": "npm:^10.0.8" + "@react-native/normalize-colors": "npm:0.81.5" + debug: "npm:^4.3.1" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.6.0" + xml2js: "npm:0.6.0" + peerDependencies: + expo: "*" + checksum: 10/6194661c2531041d1f5cc141f07fb2ddf8a558110732d8dcccfe8c7887345f28756bfd2c72fd72da364db274dde7d11fc77b8f39eace18cb215b8364997910c1 + languageName: node + linkType: hard + "@expo/prebuild-config@npm:^54.0.8": version: 54.0.8 resolution: "@expo/prebuild-config@npm:54.0.8" @@ -2800,13 +3215,13 @@ __metadata: linkType: hard "@expo/vector-icons@npm:^15.0.3": - version: 15.1.1 - resolution: "@expo/vector-icons@npm:15.1.1" + version: 15.0.3 + resolution: "@expo/vector-icons@npm:15.0.3" peerDependencies: expo-font: ">=14.0.4" react: "*" react-native: "*" - checksum: 10/204fafd5141c81bd55dd33f6c00cdc48ec1d37b6460be6fa3f851ccb235e1fad1097f22d034470daa49a5b839d058bbcadda1efd349c670c2fdce2ae65fb9bba + checksum: 10/8845ed6aeade73d7c684776a134153658549e1ee473e99ac56c355af53d848a4c91f9d218da798f481b117a08b86ab523c9c3f3de0c50b1f111ded644825803c languageName: node linkType: hard @@ -2818,24 +3233,16 @@ __metadata: linkType: hard "@expo/xcpretty@npm:^4.3.0": - version: 4.4.1 - resolution: "@expo/xcpretty@npm:4.4.1" + version: 4.3.2 + resolution: "@expo/xcpretty@npm:4.3.2" dependencies: - "@babel/code-frame": "npm:^7.20.0" + "@babel/code-frame": "npm:7.10.4" chalk: "npm:^4.1.0" + find-up: "npm:^5.0.0" js-yaml: "npm:^4.1.0" bin: excpretty: build/cli.js - checksum: 10/56d4c7d54f2b2d4a04d24f77c8e6926c0760c2983c5ac54018a35b754e261d3f31b7cd509342ff161dfbe852c03d5d62096927130069e6020db29c33ca3fa580 - languageName: node - linkType: hard - -"@gar/promise-retry@npm:^1.0.0": - version: 1.0.2 - resolution: "@gar/promise-retry@npm:1.0.2" - dependencies: - retry: "npm:^0.13.1" - checksum: 10/b91326999ce94677cbe91973079eabc689761a93a045f6a2d34d4070e9305b27f6c54e4021688c7080cb14caf89eafa0c0f300af741b94c20d18608bdb66ca46 + checksum: 10/4d2adaf531d24154898b858d3d0f3b4ec272fa08bb628f94cadee5b1eb505cc1f3a6b0ab7c1cb3d55af0f22c2534b4a9781a6fe7293dc2062fc5784eb376b0bb languageName: node linkType: hard @@ -2856,9 +3263,9 @@ __metadata: linkType: hard "@huggingface/jinja@npm:^0.5.0": - version: 0.5.5 - resolution: "@huggingface/jinja@npm:0.5.5" - checksum: 10/9575f8a689ab2c31f2540ea2dd82da2bcddb536196c3de3ae8f3b2fa06f01f47eb6a0513b410bbeac90fea7123733a15bf5d484f45fe3132bc16232a60f0dce3 + version: 0.5.3 + resolution: "@huggingface/jinja@npm:0.5.3" + checksum: 10/2797550d8400495facec93c00051ddba17df8849250a0ad61dfc3cd84b05c4013c852a0580e3fa8cf2fd153c9fbe35af2ced5409b1b23effd639f0a03a4c16b4 languageName: node linkType: hard @@ -2887,6 +3294,22 @@ __metadata: languageName: node linkType: hard +"@isaacs/balanced-match@npm:^4.0.1": + version: 4.0.1 + resolution: "@isaacs/balanced-match@npm:4.0.1" + checksum: 10/102fbc6d2c0d5edf8f6dbf2b3feb21695a21bc850f11bc47c4f06aa83bd8884fde3fe9d6d797d619901d96865fdcb4569ac2a54c937992c48885c5e3d9967fe8 + languageName: node + linkType: hard + +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" + dependencies: + "@isaacs/balanced-match": "npm:^4.0.1" + checksum: 10/cf3b7f206aff12128214a1df764ac8cdbc517c110db85249b945282407e3dfc5c6e66286383a7c9391a059fc8e6e6a8ca82262fc9d2590bd615376141fbebd2d + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -3339,11 +3762,11 @@ __metadata: linkType: hard "@kesha-antonov/react-native-background-downloader@npm:^4.4.5": - version: 4.5.2 - resolution: "@kesha-antonov/react-native-background-downloader@npm:4.5.2" + version: 4.4.5 + resolution: "@kesha-antonov/react-native-background-downloader@npm:4.4.5" peerDependencies: react-native: ">=0.57.0" - checksum: 10/2543563caa62aa9362ef4c37dcb11f4b762cb9803869bbdf5a45260c2bbb3ae68336450920594f768ea29500dd6fe04958cbf07a90620617737df5862718343e + checksum: 10/56c90b08f5efdbc017a373dd3358470b5879f1ccb28b9a25df6b725fb6cc534d7d60c989167e07774f4c8bca530b22ed383322f5f105f8bd58bac2d85914c548 languageName: node linkType: hard @@ -3816,120 +4239,120 @@ __metadata: languageName: node linkType: hard -"@react-native-community/cli-clean@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-clean@npm:20.1.2" +"@react-native-community/cli-clean@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-clean@npm:20.0.2" dependencies: - "@react-native-community/cli-tools": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.0.2" + chalk: "npm:^4.1.2" execa: "npm:^5.0.0" fast-glob: "npm:^3.3.2" - picocolors: "npm:^1.1.1" - checksum: 10/66580b22ac10ed87aa1a121f5226d1bf88e1d87864cf21bcafc2f450133b908f31e44c784e881cc4cbcccb1cfedcca22bad0f09e0951ed5bd13400b2b724f9c5 + checksum: 10/d839318d979a83c0574b81f2eb765726431e2b3b14aee14621a72c2af527730072af58ab8a9c457e12e137c81ae41329f83f5f56a3d36b08efbed5d7fe6718bf languageName: node linkType: hard -"@react-native-community/cli-config-android@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-config-android@npm:20.1.2" +"@react-native-community/cli-config-android@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-config-android@npm:20.0.2" dependencies: - "@react-native-community/cli-tools": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.0.2" + chalk: "npm:^4.1.2" fast-glob: "npm:^3.3.2" - fast-xml-parser: "npm:^5.3.6" - picocolors: "npm:^1.1.1" - checksum: 10/873af8992640a7585322e01fb99870ddf8894cb69a30d11e2c3babd50c9039ab1c62b630e9a58bbe9249c332c4a66386e9d4250a4200b5f7a5be86635850d43d + fast-xml-parser: "npm:^4.4.1" + checksum: 10/ccbe4998887d722332c6734dbee38d7ea99362000f7afd88af4f7301e87928d669287e78ab112e618f8785e10c483064d1c00ce34368b564152d291eee32cb43 languageName: node linkType: hard -"@react-native-community/cli-config-apple@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-config-apple@npm:20.1.2" +"@react-native-community/cli-config-apple@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-config-apple@npm:20.0.2" dependencies: - "@react-native-community/cli-tools": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.0.2" + chalk: "npm:^4.1.2" execa: "npm:^5.0.0" fast-glob: "npm:^3.3.2" - picocolors: "npm:^1.1.1" - checksum: 10/262089e3ca1ba161fa1c4c1945b10a731a5c39db35f07e44c94d1fcf0676819d2eccfced3ec56f724efee31b7c1ff8d6c0b1842363575708f0cf86df5a4315e9 + checksum: 10/5f888674b70d8d52be2ea2f1e513afdf98a43de30d6db224514c7a3a0466ad99a1c8ad4080558b6ac172c92eaca2d1a20691afd0744fbcb8fafedf8e6cd73cf1 languageName: node linkType: hard -"@react-native-community/cli-config@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-config@npm:20.1.2" +"@react-native-community/cli-config@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-config@npm:20.0.2" dependencies: - "@react-native-community/cli-tools": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.0.2" + chalk: "npm:^4.1.2" cosmiconfig: "npm:^9.0.0" deepmerge: "npm:^4.3.0" fast-glob: "npm:^3.3.2" joi: "npm:^17.2.1" - picocolors: "npm:^1.1.1" - checksum: 10/c43f19458c514c1108162238abb7f8b096156b6377841c6959d46a7fe6ffea170050a6e77c2eaf19800efd40b865297e8cc04043d38f881e6e36d62eccd81164 + checksum: 10/05658bfeecce40f14d4c91d804b4748d0b514e73a572ff58a3420c41e4cbebe63fa6fb6ecf8f9622227e33891313e3494c7d26c469335f40e234e2470a7b6f6b languageName: node linkType: hard -"@react-native-community/cli-doctor@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-doctor@npm:20.1.2" +"@react-native-community/cli-doctor@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-doctor@npm:20.0.2" dependencies: - "@react-native-community/cli-config": "npm:20.1.2" - "@react-native-community/cli-platform-android": "npm:20.1.2" - "@react-native-community/cli-platform-apple": "npm:20.1.2" - "@react-native-community/cli-platform-ios": "npm:20.1.2" - "@react-native-community/cli-tools": "npm:20.1.2" + "@react-native-community/cli-config": "npm:20.0.2" + "@react-native-community/cli-platform-android": "npm:20.0.2" + "@react-native-community/cli-platform-apple": "npm:20.0.2" + "@react-native-community/cli-platform-ios": "npm:20.0.2" + "@react-native-community/cli-tools": "npm:20.0.2" + chalk: "npm:^4.1.2" command-exists: "npm:^1.2.8" deepmerge: "npm:^4.3.0" envinfo: "npm:^7.13.0" execa: "npm:^5.0.0" node-stream-zip: "npm:^1.9.1" ora: "npm:^5.4.1" - picocolors: "npm:^1.1.1" semver: "npm:^7.5.2" wcwidth: "npm:^1.0.1" yaml: "npm:^2.2.1" - checksum: 10/6e02acff8a0dd27512a347124dbf68b37ac76f33ad05a46a19646acea1101c695167543553d3e8d8e3ce4e3181f04d73840937afde02245d9f4a7671d831ddaa + checksum: 10/11a4a9ff5da4d471920418e8b4a598f997036d1d8e5d25f5957886b26727a5526789996430575dc422a5251f225df786a40ab42ec9c2c11f112ec980d6e1cc02 languageName: node linkType: hard -"@react-native-community/cli-platform-android@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-platform-android@npm:20.1.2" +"@react-native-community/cli-platform-android@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-platform-android@npm:20.0.2" dependencies: - "@react-native-community/cli-config-android": "npm:20.1.2" - "@react-native-community/cli-tools": "npm:20.1.2" + "@react-native-community/cli-config-android": "npm:20.0.2" + "@react-native-community/cli-tools": "npm:20.0.2" + chalk: "npm:^4.1.2" execa: "npm:^5.0.0" logkitty: "npm:^0.7.1" - picocolors: "npm:^1.1.1" - checksum: 10/ff3cd9bd288f4237abc3ab2675efa056feb63bef01d49b843a5ecc7d65bee377512aece43ee4f110c11485640fabded055b61df0149525dc91169dc80b8c7f6e + checksum: 10/465ef6988d335740cb998c51d29f837344e063bd04cf07b3f959e44df7823b2902ee6a25bf036e82581b1d6e1cfacbd8bcf87690f4dc0c6fb4b21f15eb64951e languageName: node linkType: hard -"@react-native-community/cli-platform-apple@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-platform-apple@npm:20.1.2" +"@react-native-community/cli-platform-apple@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-platform-apple@npm:20.0.2" dependencies: - "@react-native-community/cli-config-apple": "npm:20.1.2" - "@react-native-community/cli-tools": "npm:20.1.2" + "@react-native-community/cli-config-apple": "npm:20.0.2" + "@react-native-community/cli-tools": "npm:20.0.2" + chalk: "npm:^4.1.2" execa: "npm:^5.0.0" - fast-xml-parser: "npm:^5.3.6" - picocolors: "npm:^1.1.1" - checksum: 10/b1d4409f8a081e94400acf41cfefa0c8663afdf8280598e7731a85a4f161f64f381e876fdace394baec0d72db716fb58aa1e18ce8eeacc37fc70c5a261ba71f6 + fast-xml-parser: "npm:^4.4.1" + checksum: 10/f316b4f54f6d323319c0df9b6bf3cd7a5aa3b81d170e18755b9dc80297b1989f5c275b779f1044f063392126ec510e172283d06ef9ab8700950d7b36e1cb4d72 languageName: node linkType: hard -"@react-native-community/cli-platform-ios@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-platform-ios@npm:20.1.2" +"@react-native-community/cli-platform-ios@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-platform-ios@npm:20.0.2" dependencies: - "@react-native-community/cli-platform-apple": "npm:20.1.2" - checksum: 10/711c5366a62a5dfd26fd987bab126ff958faf29e7e2bfab1d29c1c8dfc12be12c03d8291f2fefab4ea90836fe41e90f7bb626b6fa3a9d023cdc39f726aa34512 + "@react-native-community/cli-platform-apple": "npm:20.0.2" + checksum: 10/a0290feadc079981429143e9829a3030a768593927e0c2bcf546f52c8c22a53a49ea5f9ae9484f7eb390e01a46d7b0d7d9dc3374268d07237c808e6e7e3c50b3 languageName: node linkType: hard -"@react-native-community/cli-server-api@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-server-api@npm:20.1.2" +"@react-native-community/cli-server-api@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-server-api@npm:20.0.2" dependencies: - "@react-native-community/cli-tools": "npm:20.1.2" - body-parser: "npm:^2.2.2" + "@react-native-community/cli-tools": "npm:20.0.2" + body-parser: "npm:^1.20.3" compression: "npm:^1.7.1" connect: "npm:^3.6.5" errorhandler: "npm:^1.5.1" @@ -3937,61 +4360,60 @@ __metadata: open: "npm:^6.2.0" pretty-format: "npm:^29.7.0" serve-static: "npm:^1.13.1" - strict-url-sanitise: "npm:0.0.1" ws: "npm:^6.2.3" - checksum: 10/29447084fdc1a0b3f38a62bc781aa71877b835dd8ee5855d30237289350bb3daeb1a27ca9a3b0d97b86d0f85bddcd67c3907968fdaee7c2f5cc7cab72723d1d1 + checksum: 10/7771524a0016f200a15c9c5df430b18ada846ef4d426be9d6540a343e69d042b359069aeef156bec7b267bcf43a50f97b8ec7f1514dad55d84c4e16fbd4e176b languageName: node linkType: hard -"@react-native-community/cli-tools@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-tools@npm:20.1.2" +"@react-native-community/cli-tools@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-tools@npm:20.0.2" dependencies: "@vscode/sudo-prompt": "npm:^9.0.0" appdirsjs: "npm:^1.2.4" + chalk: "npm:^4.1.2" execa: "npm:^5.0.0" find-up: "npm:^5.0.0" launch-editor: "npm:^2.9.1" mime: "npm:^2.4.1" ora: "npm:^5.4.1" - picocolors: "npm:^1.1.1" prompts: "npm:^2.4.2" semver: "npm:^7.5.2" - checksum: 10/6eeeeb38495c9f6636840da0ef564db99d6e69d7672dd4cdeff4b8cc128d00de56d2ea74c0c7fda6c743d1f0a642d481c44f6cdd38d8f57ccdd53e9608930bca + checksum: 10/8f1c752a6bffa4dc201446bd4d8a7162ae296e87e3a7f2d87201e79cc9ceadb9ed4daafde83b732d79f54f76c4294e8822fae483c9120c358bc422482d98c045 languageName: node linkType: hard -"@react-native-community/cli-types@npm:20.1.2": - version: 20.1.2 - resolution: "@react-native-community/cli-types@npm:20.1.2" +"@react-native-community/cli-types@npm:20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-types@npm:20.0.2" dependencies: joi: "npm:^17.2.1" - checksum: 10/b40aaa3e5ccdad210f67760be01cff34760b7107c0afc93a394733317a88eca2a8b8490b977c8d74d98822d2c2117a1a7101c33105bcdd03277c071c7daca510 + checksum: 10/b4e708fe759ef995b99bdbe89f0e83a00cba680c01a119d317f445528e8321d89a842e0641ad2a08f4c3793ddb9e02b0045d2e82da66d279cb21ee42961ba9ce languageName: node linkType: hard "@react-native-community/cli@npm:latest": - version: 20.1.2 - resolution: "@react-native-community/cli@npm:20.1.2" - dependencies: - "@react-native-community/cli-clean": "npm:20.1.2" - "@react-native-community/cli-config": "npm:20.1.2" - "@react-native-community/cli-doctor": "npm:20.1.2" - "@react-native-community/cli-server-api": "npm:20.1.2" - "@react-native-community/cli-tools": "npm:20.1.2" - "@react-native-community/cli-types": "npm:20.1.2" + version: 20.0.2 + resolution: "@react-native-community/cli@npm:20.0.2" + dependencies: + "@react-native-community/cli-clean": "npm:20.0.2" + "@react-native-community/cli-config": "npm:20.0.2" + "@react-native-community/cli-doctor": "npm:20.0.2" + "@react-native-community/cli-server-api": "npm:20.0.2" + "@react-native-community/cli-tools": "npm:20.0.2" + "@react-native-community/cli-types": "npm:20.0.2" + chalk: "npm:^4.1.2" commander: "npm:^9.4.1" deepmerge: "npm:^4.3.0" execa: "npm:^5.0.0" find-up: "npm:^5.0.0" fs-extra: "npm:^8.1.0" graceful-fs: "npm:^4.1.3" - picocolors: "npm:^1.1.1" prompts: "npm:^2.4.2" semver: "npm:^7.5.2" bin: rnc-cli: build/bin.js - checksum: 10/85c0f4d2ca4dbbeb47f9439bf0da22abd18a39fccf2736dc47efcc47accbc377c32aa0b75408308fd47a60658e72266e2c645f7f9675a1faf5e4c7dc737c20a8 + checksum: 10/8de75d8ab9c3ffce215e4dcff57832f22e8f8853a212dbd0c2b8e96cff6e6511593d7ed064aba920a8245147b4079a77ab4445461bab97a9e08bf84472a6e8e6 languageName: node linkType: hard @@ -4383,6 +4805,20 @@ __metadata: languageName: node linkType: hard +"@react-native/metro-babel-transformer@npm:0.81.5": + version: 0.81.5 + resolution: "@react-native/metro-babel-transformer@npm:0.81.5" + dependencies: + "@babel/core": "npm:^7.25.2" + "@react-native/babel-preset": "npm:0.81.5" + hermes-parser: "npm:0.29.1" + nullthrows: "npm:^1.1.1" + peerDependencies: + "@babel/core": "*" + checksum: 10/401cd5e396a0c04865164c8321c29c17b9cdfbfef5efdf771befb77f830fd28c0bafe116f6d51930e684372f37b4a47f143a404341780187ae9e9fab0da39af4 + languageName: node + linkType: hard + "@react-native/metro-babel-transformer@npm:0.81.6": version: 0.81.6 resolution: "@react-native/metro-babel-transformer@npm:0.81.6" @@ -4411,7 +4847,19 @@ __metadata: languageName: node linkType: hard -"@react-native/metro-config@npm:^0.81.5, @react-native/metro-config@npm:^0.81.6": +"@react-native/metro-config@npm:^0.81.5": + version: 0.81.5 + resolution: "@react-native/metro-config@npm:0.81.5" + dependencies: + "@react-native/js-polyfills": "npm:0.81.5" + "@react-native/metro-babel-transformer": "npm:0.81.5" + metro-config: "npm:^0.83.1" + metro-runtime: "npm:^0.83.1" + checksum: 10/13af9cb8f743e8ae51fe0c77db4c61070ef31074b985911ad03b53ec79985f3ba261f1b0026bc62b1b070a3954c8928b73d2d956fc13bad6ece3699b3f5d7254 + languageName: node + linkType: hard + +"@react-native/metro-config@npm:^0.81.6": version: 0.81.6 resolution: "@react-native/metro-config@npm:0.81.6" dependencies: @@ -4460,25 +4908,25 @@ __metadata: linkType: hard "@react-navigation/bottom-tabs@npm:^7.4.0": - version: 7.15.2 - resolution: "@react-navigation/bottom-tabs@npm:7.15.2" + version: 7.8.11 + resolution: "@react-navigation/bottom-tabs@npm:7.8.11" dependencies: - "@react-navigation/elements": "npm:^2.9.8" + "@react-navigation/elements": "npm:^2.9.1" color: "npm:^4.2.3" sf-symbols-typescript: "npm:^2.1.0" peerDependencies: - "@react-navigation/native": ^7.1.31 + "@react-navigation/native": ^7.1.24 react: ">= 18.2.0" react-native: "*" react-native-safe-area-context: ">= 4.0.0" react-native-screens: ">= 4.0.0" - checksum: 10/f76179664388dd025c4c6fc5696335407e5769417ffa7a364d601e019e734ac950200071ea417d5de3a1cad26b127251d9237890adbece9ccda56e32c996f807 + checksum: 10/313f4daf2a02325460ee6f2515adf4273c3f0cec9001f5ea73c77ad5ce25d003fa623b593390af111a1db505a5eb3793bae32fd029dd1f740fe5b7b39e19f923 languageName: node linkType: hard -"@react-navigation/core@npm:^7.15.1": - version: 7.15.1 - resolution: "@react-navigation/core@npm:7.15.1" +"@react-navigation/core@npm:^7.14.0": + version: 7.14.0 + resolution: "@react-navigation/core@npm:7.14.0" dependencies: "@react-navigation/routers": "npm:^7.5.3" escape-string-regexp: "npm:^4.0.0" @@ -4490,73 +4938,93 @@ __metadata: use-sync-external-store: "npm:^1.5.0" peerDependencies: react: ">= 18.2.0" - checksum: 10/308e7c0748827b47870dbac537b545bc7b4b975d64d136ca18c64970449195a6394ec49608e1063a6374c1da31a984b0e06e12de997babaddd201b400f34d37c + checksum: 10/fa43ad12304f0dfa60688c73f59ac374c1900d1bad1823ab2b1454ab7e6376d0038ec2a597f67fa09fabe4381bfd210fb048518d61ad4fc44d6d608a0ceb6a1a languageName: node linkType: hard "@react-navigation/drawer@npm:^7.8.1": - version: 7.9.2 - resolution: "@react-navigation/drawer@npm:7.9.2" + version: 7.8.1 + resolution: "@react-navigation/drawer@npm:7.8.1" dependencies: - "@react-navigation/elements": "npm:^2.9.8" + "@react-navigation/elements": "npm:^2.9.5" color: "npm:^4.2.3" react-native-drawer-layout: "npm:^4.2.2" use-latest-callback: "npm:^0.2.4" peerDependencies: - "@react-navigation/native": ^7.1.31 + "@react-navigation/native": ^7.1.28 react: ">= 18.2.0" react-native: "*" react-native-gesture-handler: ">= 2.0.0" react-native-reanimated: ">= 2.0.0" react-native-safe-area-context: ">= 4.0.0" react-native-screens: ">= 4.0.0" - checksum: 10/47b37265d0ee005e6194a0353687b8f36ed33c7f3fd059bbb110abcdeed2ab8a3f8e9fdca8875a02a92eae7794035d5887a66c7f862f84077286f2aec2f21e23 + checksum: 10/1c39458642865379a55ea456937fc6e0eef07b0430b48ece64a2f96f393f81702831ed25981ade1938d1e72701062d4c1c3b60ded377a8edce11d0a3ce7f7af9 + languageName: node + linkType: hard + +"@react-navigation/elements@npm:^2.9.1": + version: 2.9.1 + resolution: "@react-navigation/elements@npm:2.9.1" + dependencies: + color: "npm:^4.2.3" + use-latest-callback: "npm:^0.2.4" + use-sync-external-store: "npm:^1.5.0" + peerDependencies: + "@react-native-masked-view/masked-view": ">= 0.2.0" + "@react-navigation/native": ^7.1.24 + react: ">= 18.2.0" + react-native: "*" + react-native-safe-area-context: ">= 4.0.0" + peerDependenciesMeta: + "@react-native-masked-view/masked-view": + optional: true + checksum: 10/ae4bb3be4773d12001a469cd972467cd4f83affe5eded4e972a9af1a14dee54b13bbb6d8481a7166329e028e9943e63d19ff36473d29b095053ca8de773f8939 languageName: node linkType: hard -"@react-navigation/elements@npm:^2.9.8": - version: 2.9.8 - resolution: "@react-navigation/elements@npm:2.9.8" +"@react-navigation/elements@npm:^2.9.5": + version: 2.9.5 + resolution: "@react-navigation/elements@npm:2.9.5" dependencies: color: "npm:^4.2.3" use-latest-callback: "npm:^0.2.4" use-sync-external-store: "npm:^1.5.0" peerDependencies: "@react-native-masked-view/masked-view": ">= 0.2.0" - "@react-navigation/native": ^7.1.31 + "@react-navigation/native": ^7.1.28 react: ">= 18.2.0" react-native: "*" react-native-safe-area-context: ">= 4.0.0" peerDependenciesMeta: "@react-native-masked-view/masked-view": optional: true - checksum: 10/b34fc3c69f2bbdf18bf9eecf27c866adc806e90f6bb773f35dc35cd8454c822609ced4446c09feb646002a2ee69e6310b28635627c9132081a325e6b1cc370e7 + checksum: 10/b71c367082527dda303dfaa319af930ccbb1622f2cbe018382c8070c91944b59891fcabe048a76590d52ee07eac7ca9acb33e03fdacd8092aff1d58a165b0762 languageName: node linkType: hard "@react-navigation/native-stack@npm:^7.3.16": - version: 7.14.2 - resolution: "@react-navigation/native-stack@npm:7.14.2" + version: 7.8.5 + resolution: "@react-navigation/native-stack@npm:7.8.5" dependencies: - "@react-navigation/elements": "npm:^2.9.8" + "@react-navigation/elements": "npm:^2.9.1" color: "npm:^4.2.3" sf-symbols-typescript: "npm:^2.1.0" warn-once: "npm:^0.1.1" peerDependencies: - "@react-navigation/native": ^7.1.31 + "@react-navigation/native": ^7.1.24 react: ">= 18.2.0" react-native: "*" react-native-safe-area-context: ">= 4.0.0" react-native-screens: ">= 4.0.0" - checksum: 10/d1d1b454d57842d87457c1a556b464fa99d3d94948ffde322fe854d7f5c9909d9bd0e9ee7d051376cb9066fd9619934ce468b2809fd4e8aa3d8b6d6a31cfb3e7 + checksum: 10/69381f0f938aed5b4ecfd8d980f4d01f510dd2d3a932c59e7e8c9e7f9c64f38c239a1ffe51fb794c238b7e661346799bdada5cb73a4eabf999b8d3c3a84d699a languageName: node linkType: hard "@react-navigation/native@npm:^7.1.28, @react-navigation/native@npm:^7.1.8": - version: 7.1.31 - resolution: "@react-navigation/native@npm:7.1.31" + version: 7.1.28 + resolution: "@react-navigation/native@npm:7.1.28" dependencies: - "@react-navigation/core": "npm:^7.15.1" + "@react-navigation/core": "npm:^7.14.0" escape-string-regexp: "npm:^4.0.0" fast-deep-equal: "npm:^3.1.3" nanoid: "npm:^3.3.11" @@ -4564,7 +5032,7 @@ __metadata: peerDependencies: react: ">= 18.2.0" react-native: "*" - checksum: 10/b76efac7073055968e7c3300c6812932c0cdec6c9de1bdae0a80ecbee217c2817b0fa5012cd0817d3f6abe9c198032787bfcee4f4ec080b5827510c11c894cc0 + checksum: 10/64f2d3136ad4034315b2aaf81d0ffd3d73425787aebf3ef7934dfb50931d50cbc3322378fdc240df5d795f5c1ab361038c3200cc24c266c8a089706ca1f4edb7 languageName: node linkType: hard @@ -4622,9 +5090,9 @@ __metadata: linkType: hard "@sinclair/typebox@npm:^0.27.8": - version: 0.27.10 - resolution: "@sinclair/typebox@npm:0.27.10" - checksum: 10/1498c5ef1375787e6272528615d5c262afb60873191d2441316359817b1c411917063c8be102ef15b0b5c62243a9daa7aefc8426f20eb406b67038b3eaa0695a + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d languageName: node linkType: hard @@ -4952,11 +5420,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 25.3.1 - resolution: "@types/node@npm:25.3.1" + version: 24.10.1 + resolution: "@types/node@npm:24.10.1" dependencies: - undici-types: "npm:~7.18.0" - checksum: 10/7f999e88e7ff3d2e2ee4efbf1de60d9375577d1ad3e1bee01455ec9d8257da2fb1f83dce4cb8fdf9c05dde9fec9e54f61fc9b1731393b53fc74f254712de9f6e + undici-types: "npm:~7.16.0" + checksum: 10/ddac8c97be5f7401e31ea0e9316c6e864993c6cd06689b7f9874ecfb576ef8349f2d14298248a08b94a6dd029570a46a285cddc4d50e524817f1a3730b29a86e languageName: node linkType: hard @@ -5368,9 +5836,9 @@ __metadata: linkType: hard "@vscode/sudo-prompt@npm:^9.0.0": - version: 9.3.2 - resolution: "@vscode/sudo-prompt@npm:9.3.2" - checksum: 10/2eabbf59ba784c5828d9f45cde2ada83f51796d88dea05ed0c270a98545ad5f47c8d48e54c2ed335273ec75499e9700ee8b48f1d9bf2bb3e42050faf1070d8c3 + version: 9.3.1 + resolution: "@vscode/sudo-prompt@npm:9.3.1" + checksum: 10/233edb992ae5dda69b9c63101f85a7996ff7034cb9b0ea976f3ab06483511a35162a650d8e081ded5f07aa9b2f2bac93e45420d956cf1b1d8a76ac385d4a9581 languageName: node linkType: hard @@ -5404,7 +5872,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:^1.3.7, accepts@npm:^1.3.8, accepts@npm:~1.3.8": +"accepts@npm:^1.3.7, accepts@npm:^1.3.8, accepts@npm:~1.3.7": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -5434,11 +5902,11 @@ __metadata: linkType: hard "acorn@npm:^8.15.0, acorn@npm:^8.9.0": - version: 8.16.0 - resolution: "acorn@npm:8.16.0" + version: 8.15.0 + resolution: "acorn@npm:8.15.0" bin: acorn: bin/acorn - checksum: 10/690c673bb4d61b38ef82795fab58526471ad7f7e67c0e40c4ff1e10ecd80ce5312554ef633c9995bfc4e6d170cef165711f9ca9e49040b62c0c66fbf2dd3df2b + checksum: 10/77f2de5051a631cf1729c090e5759148459cdb76b5f5c70f890503d629cf5052357b0ce783c0f976dd8a93c5150f59f6d18df1def3f502396a20f81282482fa4 languageName: node linkType: hard @@ -5460,14 +5928,14 @@ __metadata: linkType: hard "ajv@npm:^6.12.4": - version: 6.14.0 - resolution: "ajv@npm:6.14.0" + version: 6.12.6 + resolution: "ajv@npm:6.12.6" dependencies: fast-deep-equal: "npm:^3.1.1" fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 10/c71f14dd2b6f2535d043f74019c8169f7aeb1106bafbb741af96f34fdbf932255c919ddd46344043d03b62ea0ccb319f83667ec5eedf612393f29054fe5ce4a5 + checksum: 10/48d6ad21138d12eb4d16d878d630079a2bda25a04e745c07846a4ad768319533031e28872a9b3c5790fa1ec41aabdf2abed30a56e5a03ebc2cf92184b8ee306c languageName: node linkType: hard @@ -5607,23 +6075,23 @@ __metadata: languageName: node linkType: hard -"arkregex@npm:0.0.5": - version: 0.0.5 - resolution: "arkregex@npm:0.0.5" +"arkregex@npm:0.0.4": + version: 0.0.4 + resolution: "arkregex@npm:0.0.4" dependencies: "@ark/util": "npm:0.56.0" - checksum: 10/c5eca109df57639b3245e1e72efe1b43cf881a2234b29736b11f57d29674d9ef78a2dcf54f5381a33690d53ce8989520bc123bb686dcce83f15c44f141c7f8a9 + checksum: 10/af9eccf7e931a810ee18196ffa4c97d436d807d6332de9ae4dbc7dec0f315b6cb69990cad40d3344de9464ec191024a1354d3765d19868c668acd4ead5820ea6 languageName: node linkType: hard "arktype@npm:^2.1.15": - version: 2.1.29 - resolution: "arktype@npm:2.1.29" + version: 2.1.28 + resolution: "arktype@npm:2.1.28" dependencies: "@ark/schema": "npm:0.56.0" "@ark/util": "npm:0.56.0" - arkregex: "npm:0.0.5" - checksum: 10/091df54e5df0282a26f5de74cc001569483fc61b3297277a51cb8244f277334a549cf8ae3342ca3bbde95bd10172aaa2f86e6c5738e2853b2b66c088a7c9f398 + arkregex: "npm:0.0.4" + checksum: 10/790503fdbcaf2c549a96d4ffe83938d12221817f7c0d9939e857334e3bbca2895c4d34edfc66e74f2e925e6d97cdb280160ec5af39346f960d4d59e4b75ab3ed languageName: node linkType: hard @@ -5858,16 +6326,16 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.14, babel-plugin-polyfill-corejs2@npm:^0.4.15": - version: 0.4.15 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.15" +"babel-plugin-polyfill-corejs2@npm:^0.4.14": + version: 0.4.14 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" dependencies: - "@babel/compat-data": "npm:^7.28.6" - "@babel/helper-define-polyfill-provider": "npm:^0.6.6" + "@babel/compat-data": "npm:^7.27.7" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/e5f8a4e716400b2b5c51f7b3c0eec58da92f1d8cc1c6fe2e32555c98bc594be1de7fa1da373f8e42ab098c33867c4cc2931ce648c92aab7a4f4685417707c438 + checksum: 10/8ec00a1b821ccbfcc432630da66e98bc417f5301f4ce665269d50d245a18ad3ce8a8af2a007f28e3defcd555bb8ce65f16b0d4b6d131bd788e2b97d8b8953332 languageName: node linkType: hard @@ -5883,26 +6351,14 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.14.0": - version: 0.14.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.14.0" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.6" - core-js-compat: "npm:^3.48.0" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/09c854a3bda9a930fbce4b80d52a24e5b0744fccb0c81bf8f470d62296f197a2afe111b2b9ecb0d8a47068de2f938d14b748295953377e47594b0673d53c9396 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.6.5, babel-plugin-polyfill-regenerator@npm:^0.6.6": - version: 0.6.6 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.6" +"babel-plugin-polyfill-regenerator@npm:^0.6.5": + version: 0.6.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.6" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/8de7ea32856e75784601cacf8f4e3cbf04ce1fd05d56614b08b7bbe0674d1e59e37ccaa1c7ed16e3b181a63abe5bd43a1ab0e28b8c95618a9ebf0be5e24d6b25 + checksum: 10/ed1932fa9a31e0752fd10ebf48ab9513a654987cab1182890839523cb898559d24ae0578fdc475d9f995390420e64eeaa4b0427045b56949dace3c725bc66dbb languageName: node linkType: hard @@ -6022,6 +6478,45 @@ __metadata: languageName: node linkType: hard +"babel-preset-expo@npm:~54.0.8": + version: 54.0.8 + resolution: "babel-preset-expo@npm:54.0.8" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/plugin-proposal-decorators": "npm:^7.12.9" + "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" + "@babel/plugin-transform-class-static-block": "npm:^7.27.1" + "@babel/plugin-transform-export-namespace-from": "npm:^7.25.9" + "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" + "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" + "@babel/plugin-transform-parameters": "npm:^7.24.7" + "@babel/plugin-transform-private-methods": "npm:^7.24.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" + "@babel/plugin-transform-runtime": "npm:^7.24.7" + "@babel/preset-react": "npm:^7.22.15" + "@babel/preset-typescript": "npm:^7.23.0" + "@react-native/babel-preset": "npm:0.81.5" + babel-plugin-react-compiler: "npm:^1.0.0" + babel-plugin-react-native-web: "npm:~0.21.0" + babel-plugin-syntax-hermes-parser: "npm:^0.29.1" + babel-plugin-transform-flow-enums: "npm:^0.0.2" + debug: "npm:^4.3.4" + resolve-from: "npm:^5.0.0" + peerDependencies: + "@babel/runtime": ^7.20.0 + expo: "*" + react-refresh: ">=0.14.0 <1.0.0" + peerDependenciesMeta: + "@babel/runtime": + optional: true + expo: + optional: true + checksum: 10/7ecd779623fb80cb6eb559dc1b8fcf54e6128bff412336875fb97159abc847ed9aa8f04862d3f5054fbce844ee3fbaac2af16a65ddf26ab92f3855bab86bd57c + languageName: node + linkType: hard + "babel-preset-jest@npm:30.2.0": version: 30.2.0 resolution: "babel-preset-jest@npm:30.2.0" @@ -6053,13 +6548,6 @@ __metadata: languageName: node linkType: hard -"balanced-match@npm:^4.0.2": - version: 4.0.4 - resolution: "balanced-match@npm:4.0.4" - checksum: 10/fb07bb66a0959c2843fc055838047e2a95ccebb837c519614afb067ebfdf2fa967ca8d712c35ced07f2cd26fc6f07964230b094891315ad74f11eba3d53178a0 - languageName: node - linkType: hard - "base64-js@npm:^1.2.3, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" @@ -6068,11 +6556,11 @@ __metadata: linkType: hard "baseline-browser-mapping@npm:^2.9.0": - version: 2.10.0 - resolution: "baseline-browser-mapping@npm:2.10.0" + version: 2.9.2 + resolution: "baseline-browser-mapping@npm:2.9.2" bin: - baseline-browser-mapping: dist/cli.cjs - checksum: 10/8145e076e4299f04c7a412e6ea63803e330153cd89c47b5303f9b56b58078f4c3d5a5b5332c1069da889e76facacca4d43f8940375f7e73ce0a4d96214332953 + baseline-browser-mapping: dist/cli.js + checksum: 10/6e42ae4aaaa0becd37a58b00aa4734063a59b752b5bb66776fc73858d8d7eecea007f4af67fba7c48a9022ec243ad6a77aee735d9e063b1220a7f39b8cd39f4b languageName: node linkType: hard @@ -6110,20 +6598,23 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:^2.2.2": - version: 2.2.2 - resolution: "body-parser@npm:2.2.2" +"body-parser@npm:^1.20.3": + version: 1.20.4 + resolution: "body-parser@npm:1.20.4" dependencies: - bytes: "npm:^3.1.2" - content-type: "npm:^1.0.5" - debug: "npm:^4.4.3" - http-errors: "npm:^2.0.0" - iconv-lite: "npm:^0.7.0" - on-finished: "npm:^2.4.1" - qs: "npm:^6.14.1" - raw-body: "npm:^3.0.1" - type-is: "npm:^2.0.1" - checksum: 10/69671f67d4d5ae5974593901a92d639757231da1725ed6de4d35e86cde9ce7650afdf1cd28df9b6f7892ea7f9eb03ccb30c70fe27d679275ae4cb4aae5ce1b21 + bytes: "npm:~3.1.2" + content-type: "npm:~1.0.5" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:~1.2.0" + http-errors: "npm:~2.0.1" + iconv-lite: "npm:~0.4.24" + on-finished: "npm:~2.4.1" + qs: "npm:~6.14.0" + raw-body: "npm:~2.5.3" + type-is: "npm:~1.6.18" + unpipe: "npm:~1.0.0" + checksum: 10/ff67e28d3f426707be8697a75fdf8d564dc50c341b41f054264d8ab6e2924e519c7ce8acc9d0de05328fdc41e1d9f3f200aec9c1cfb1867d6b676a410d97c689 languageName: node linkType: hard @@ -6171,12 +6662,12 @@ __metadata: languageName: node linkType: hard -"brace-expansion@npm:^5.0.2": - version: 5.0.3 - resolution: "brace-expansion@npm:5.0.3" +"brace-expansion@npm:^2.0.1": + version: 2.0.2 + resolution: "brace-expansion@npm:2.0.2" dependencies: - balanced-match: "npm:^4.0.2" - checksum: 10/8ba7deae4ca333d52418d2cde3287ac23f44f7330d92c3ecd96a8941597bea8aab02227bd990944d6711dd549bcc6e550fe70be5d94aa02e2fdc88942f480c9b + balanced-match: "npm:^1.0.0" + checksum: 10/01dff195e3646bc4b0d27b63d9bab84d2ebc06121ff5013ad6e5356daa5a9d6b60fa26cf73c74797f2dc3fbec112af13578d51f75228c1112b26c790a87b0488 languageName: node linkType: hard @@ -6189,7 +6680,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.20.4, browserslist@npm:^4.24.0, browserslist@npm:^4.25.0, browserslist@npm:^4.28.1": +"browserslist@npm:^4.20.4, browserslist@npm:^4.24.0, browserslist@npm:^4.25.0, browserslist@npm:^4.28.0": version: 4.28.1 resolution: "browserslist@npm:4.28.1" dependencies: @@ -6240,7 +6731,7 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2, bytes@npm:^3.1.2, bytes@npm:~3.1.2": +"bytes@npm:3.1.2, bytes@npm:~3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: 10/a10abf2ba70c784471d6b4f58778c0beeb2b5d405148e66affa91f23a9f13d07603d0a0354667310ae1d6dc141474ffd44e2a074be0f6e2254edb8fc21445388 @@ -6352,9 +6843,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001759": - version: 1.0.30001774 - resolution: "caniuse-lite@npm:1.0.30001774" - checksum: 10/63c87aeac08548847ecd12746144029761707d9eae57750f673543a2b2a6126bca98584dd551818e8dc2a480d11489bebe0027af26de4ee46466e7b216109862 + version: 1.0.30001759 + resolution: "caniuse-lite@npm:1.0.30001759" + checksum: 10/da0ec28dd993dffa99402914903426b9466d2798d41c1dc9341fcb7dd10f58fdd148122e2c65001246c030ba1c939645b7b4597f6321e3246dc792323bb11541 languageName: node linkType: hard @@ -6703,20 +7194,20 @@ __metadata: linkType: hard "comment-json@npm:^4.2.5": - version: 4.5.1 - resolution: "comment-json@npm:4.5.1" + version: 4.4.1 + resolution: "comment-json@npm:4.4.1" dependencies: array-timsort: "npm:^1.0.3" core-util-is: "npm:^1.0.3" esprima: "npm:^4.0.1" - checksum: 10/3bdd2703f26690537f65ef708d62aae3980dba6fc566e82a71d95511b413a6f5f285af9af0415e4739dc6f363db24225e46f5267c576f249100cdb28c3adb00d + checksum: 10/2d05701e361320c670623b01343ed9ff180f4b4a38291f19ab9e2ef5269f51c8d1011f003fceff8cbf73d293f53a8ffc8ba1f85ccb1f6d0703829155bd628bce languageName: node linkType: hard "comment-parser@npm:^1.4.0": - version: 1.4.5 - resolution: "comment-parser@npm:1.4.5" - checksum: 10/4b5cacc7ab1ec48e3f51b788bd7cda567f5c83040e029e5c92eacf0785735a9b44ac49fdaf73d9bd4af9464aa4cc8cc7184902090b55b0023605a845f2666ba4 + version: 1.4.1 + resolution: "comment-parser@npm:1.4.1" + checksum: 10/16a3260b5e77819ebd9c99b0b65c7d6723b1ff73487bac9ce2d8f016a2847dd689e8663b88e1fad1444bbea89847c42f785708ac86a2c55f614f7095249bbf6b languageName: node linkType: hard @@ -6798,7 +7289,7 @@ __metadata: languageName: node linkType: hard -"content-type@npm:^1.0.5": +"content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 10/585847d98dc7fb8035c02ae2cb76c7a9bd7b25f84c447e5ed55c45c2175e83617c8813871b4ee22f368126af6b2b167df655829007b21aa10302873ea9c62662 @@ -6812,12 +7303,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.43.0, core-js-compat@npm:^3.48.0": - version: 3.48.0 - resolution: "core-js-compat@npm:3.48.0" +"core-js-compat@npm:^3.43.0": + version: 3.47.0 + resolution: "core-js-compat@npm:3.47.0" dependencies: - browserslist: "npm:^4.28.1" - checksum: 10/83c326dcfef5e174fd3f8f33c892c66e06d567ce27f323a1197a6c280c0178fe18d3e9c5fb95b00c18b98d6c53fba5c646def5fedaa77310a4297d16dfbe2029 + browserslist: "npm:^4.28.0" + checksum: 10/8555ac0aede2e61e3b37c50d31a9d63bb59e96ef76194bea0521d2778b24d8b20b45bed7bf2fce9df9856872a1c31e03fec1da101507b4dbaba669693dc95f94 languageName: node linkType: hard @@ -6885,6 +7376,13 @@ __metadata: languageName: node linkType: hard +"crypto-random-string@npm:^2.0.0": + version: 2.0.0 + resolution: "crypto-random-string@npm:2.0.0" + checksum: 10/0283879f55e7c16fdceacc181f87a0a65c53bc16ffe1d58b9d19a6277adcd71900d02bb2c4843dd55e78c51e30e89b0fec618a7f170ebcc95b33182c28f05fd6 + languageName: node + linkType: hard + "cspell-config-lib@npm:8.19.4": version: 8.19.4 resolution: "cspell-config-lib@npm:8.19.4" @@ -7157,7 +7655,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.3": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.1": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -7186,11 +7684,11 @@ __metadata: linkType: hard "decode-named-character-reference@npm:^1.0.0": - version: 1.3.0 - resolution: "decode-named-character-reference@npm:1.3.0" + version: 1.2.0 + resolution: "decode-named-character-reference@npm:1.2.0" dependencies: character-entities: "npm:^2.0.0" - checksum: 10/82eb1208abf59d1f1e368285b6880201a3c3f147a4d7ce74e44cd41374ef00c9a376e8595e38002031db63291f91f7f3ff56b9724f715befff8f5566593d6de0 + checksum: 10/f26b23046c1a137c0b41fa51e3ce07ba8364640322c742a31570999784abc8572fc24cb108a76b14ff72ddb75d35aad3d14b10d7743639112145a2664b9d1864 languageName: node linkType: hard @@ -7309,7 +7807,7 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0": +"destroy@npm:1.2.0, destroy@npm:~1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10/0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 @@ -7470,9 +7968,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.263": - version: 1.5.302 - resolution: "electron-to-chromium@npm:1.5.302" - checksum: 10/0d31470d04a0d1ea046dd363370081b67e6fe822949b10cfece0a64fd2f8180afb5ccaf14f4294251e444a0af627eb0dc0156242b714c0f10561adf2a21aa5f7 + version: 1.5.266 + resolution: "electron-to-chromium@npm:1.5.266" + checksum: 10/2c7e05d1df189013e01b9fa19f5794dc249b80f330ab87f78674fa7416df153e2d32738d16914eee1112b5d8878b6181336e502215a34c63c255da078de5209d languageName: node linkType: hard @@ -7511,6 +8009,15 @@ __metadata: languageName: node linkType: hard +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + "end-of-stream@npm:^1.1.0": version: 1.4.5 resolution: "end-of-stream@npm:1.4.5" @@ -7564,6 +8071,13 @@ __metadata: languageName: node linkType: hard +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10/1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd + languageName: node + linkType: hard + "error-ex@npm:^1.3.1": version: 1.3.4 resolution: "error-ex@npm:1.3.4" @@ -7583,18 +8097,18 @@ __metadata: linkType: hard "errorhandler@npm:^1.5.1": - version: 1.5.2 - resolution: "errorhandler@npm:1.5.2" + version: 1.5.1 + resolution: "errorhandler@npm:1.5.1" dependencies: - accepts: "npm:~1.3.8" + accepts: "npm:~1.3.7" escape-html: "npm:~1.0.3" - checksum: 10/7ce0a598cc2c52840e32b46d2da8c7b0a4594aa67e93db46112cf791d4c8a4a1299af7f7aa65253d2e9d42af4d275c96387c0d186427df5ee93d33670bdac541 + checksum: 10/73b7abb08fb751107e9bebecc33c40c0641a54be8bda8e4a045f3f5cb7b805041927fef5629ea39b1737799eb52fe2499ca531f11ac51b0294ccc4667d72cb91 languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.1": - version: 1.24.1 - resolution: "es-abstract@npm:1.24.1" +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": + version: 1.24.0 + resolution: "es-abstract@npm:1.24.0" dependencies: array-buffer-byte-length: "npm:^1.0.2" arraybuffer.prototype.slice: "npm:^1.0.4" @@ -7650,7 +8164,7 @@ __metadata: typed-array-length: "npm:^1.0.7" unbox-primitive: "npm:^1.1.0" which-typed-array: "npm:^1.1.19" - checksum: 10/c84cb69ebae36781309a3ed70ff40b4767a921d3b3518060fac4e08f14ede04491b68e9f318aedf186e349d4af4a40f5d0e4111e46513800e8368551fd09de8c + checksum: 10/64e07a886f7439cf5ccfc100f9716e6173e10af6071a50a5031afbdde474a3dbc9619d5965da54e55f8908746a9134a46be02af8c732d574b7b81ed3124e2daf languageName: node linkType: hard @@ -7669,26 +8183,26 @@ __metadata: linkType: hard "es-iterator-helpers@npm:^1.2.1": - version: 1.2.2 - resolution: "es-iterator-helpers@npm:1.2.2" + version: 1.2.1 + resolution: "es-iterator-helpers@npm:1.2.1" dependencies: call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.24.1" + es-abstract: "npm:^1.23.6" es-errors: "npm:^1.3.0" - es-set-tostringtag: "npm:^2.1.0" + es-set-tostringtag: "npm:^2.0.3" function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" globalthis: "npm:^1.0.4" gopd: "npm:^1.2.0" has-property-descriptors: "npm:^1.0.2" has-proto: "npm:^1.2.0" has-symbols: "npm:^1.1.0" internal-slot: "npm:^1.1.0" - iterator.prototype: "npm:^1.1.5" + iterator.prototype: "npm:^1.1.4" safe-array-concat: "npm:^1.1.3" - checksum: 10/17b5b2834c4f5719d6ce0e837a4d11c6ba4640bee28290d22ec4daf7106ec3d5fe0ff4f7e5dbaa2b4612e8335934360e964a8f08608d43f2889da106b25481ee + checksum: 10/802e0e8427a05ff4a5b0c70c7fdaaeff37cdb81a28694aeb7bfb831c6ab340d8f3deeb67b96732ff9e9699ea240524d5ea8a9a6a335fcd15aa3983b27b06113f languageName: node linkType: hard @@ -7701,7 +8215,7 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.1.0": +"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": version: 2.1.0 resolution: "es-set-tostringtag@npm:2.1.0" dependencies: @@ -7841,11 +8355,11 @@ __metadata: linkType: hard "eslint-plugin-prettier@npm:^5.0.1": - version: 5.5.5 - resolution: "eslint-plugin-prettier@npm:5.5.5" + version: 5.5.4 + resolution: "eslint-plugin-prettier@npm:5.5.4" dependencies: - prettier-linter-helpers: "npm:^1.0.1" - synckit: "npm:^0.11.12" + prettier-linter-helpers: "npm:^1.0.0" + synckit: "npm:^0.11.7" peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" @@ -7856,7 +8370,7 @@ __metadata: optional: true eslint-config-prettier: optional: true - checksum: 10/36c22c2fa2fd7c61ed292af1280e1d8f94dfe1671eacc5a503a249ca4b27fd226dbf6a1820457d611915926946f42729488d2dc7a5c320601e6cf1fad0d28f66 + checksum: 10/5e39e3b7046d4ba0e1111cc2048630ee9d0aa5d5bb00d6230bef56893fdae37cbe2261babfb26db350cc2ad517c81d283b3f8b04cfee4e5aef7cd4bee72f90de languageName: node linkType: hard @@ -8019,11 +8533,11 @@ __metadata: linkType: hard "esquery@npm:^1.4.2": - version: 1.7.0 - resolution: "esquery@npm:1.7.0" + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10/4afaf3089367e1f5885caa116ef386dffd8bfd64da21fd3d0e56e938d2667cfb2e5400ab4a825aa70e799bb3741e5b5d63c0b94d86e2d4cf3095c9e64b2f5a15 + checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a languageName: node linkType: hard @@ -8071,6 +8585,13 @@ __metadata: languageName: node linkType: hard +"exec-async@npm:^2.2.0": + version: 2.2.0 + resolution: "exec-async@npm:2.2.0" + checksum: 10/35932a49c825245e1fe022848a3ffef71717955149a3af8d56bf15b04a21c8f098581ffe2e4916a9dbd7736ce559365ccd55327e72422136adb9f4af867e1203 + languageName: node + linkType: hard + "execa@npm:^4.0.3": version: 4.1.0 resolution: "execa@npm:4.1.0" @@ -8126,7 +8647,7 @@ __metadata: languageName: node linkType: hard -"expo-asset@npm:12.0.11": +"expo-asset@npm:12.0.11, expo-asset@npm:~12.0.11": version: 12.0.11 resolution: "expo-asset@npm:12.0.11" dependencies: @@ -8174,7 +8695,20 @@ __metadata: languageName: node linkType: hard -"expo-constants@npm:~18.0.11, expo-constants@npm:~18.0.12, expo-constants@npm:~18.0.13": +"expo-constants@npm:~18.0.11": + version: 18.0.11 + resolution: "expo-constants@npm:18.0.11" + dependencies: + "@expo/config": "npm:~12.0.11" + "@expo/env": "npm:~2.0.8" + peerDependencies: + expo: "*" + react-native: "*" + checksum: 10/4da78ce638b417d1cb958b8f7c56a54a84cd1cd600d8e62751a32ca858b130e8fe1db7d97acc765d667e7668e401247016b62bfc88cd8624cc92e2345bbd4cb8 + languageName: node + linkType: hard + +"expo-constants@npm:~18.0.12, expo-constants@npm:~18.0.13": version: 18.0.13 resolution: "expo-constants@npm:18.0.13" dependencies: @@ -8197,7 +8731,30 @@ __metadata: languageName: node linkType: hard -"expo-font@npm:~14.0.10, expo-font@npm:~14.0.11": +"expo-file-system@npm:~19.0.20": + version: 19.0.20 + resolution: "expo-file-system@npm:19.0.20" + peerDependencies: + expo: "*" + react-native: "*" + checksum: 10/c0ead2eb2f97840fea54f88bcc41f0094d5bef19b6261d768bdaa9fd06e5accf40ce49fe183f84d7042484b7595319cf37691123b699b0f2b00c81068582fbe9 + languageName: node + linkType: hard + +"expo-font@npm:~14.0.10": + version: 14.0.10 + resolution: "expo-font@npm:14.0.10" + dependencies: + fontfaceobserver: "npm:^2.1.0" + peerDependencies: + expo: "*" + react: "*" + react-native: "*" + checksum: 10/3fb7d87c75c818c3c8503d43f9e13b3d237f2e128bcb59e09b8fdad3eaf1aece2ab89030d5cffbeb5b172d7b030df627e4319b0fdd97e6f6d57e27bbdb520f22 + languageName: node + linkType: hard + +"expo-font@npm:~14.0.11": version: 14.0.11 resolution: "expo-font@npm:14.0.11" dependencies: @@ -8221,15 +8778,30 @@ __metadata: linkType: hard "expo-linking@npm:~8.0.10": - version: 8.0.11 - resolution: "expo-linking@npm:8.0.11" + version: 8.0.10 + resolution: "expo-linking@npm:8.0.10" dependencies: - expo-constants: "npm:~18.0.12" + expo-constants: "npm:~18.0.11" invariant: "npm:^2.2.4" peerDependencies: react: "*" react-native: "*" - checksum: 10/b43851e173e5b2b21ac7cfc1fef05ae1cb39209c82af73943abb1e701a767e3759cf4a85e47bb181ab8a0c7b080f9b9d9b7d52f6c54f620f06dad7848e05f336 + checksum: 10/332353a7ca3dd1112e92ba73d95a51fc22c518725b02bd2aca7fdbd12f26b8879d3bcf3321fc94ca95485ebf00e72b42b64af0b11b611bd91ad4f79303342c31 + languageName: node + linkType: hard + +"expo-modules-autolinking@npm:3.0.23": + version: 3.0.23 + resolution: "expo-modules-autolinking@npm:3.0.23" + dependencies: + "@expo/spawn-async": "npm:^1.7.2" + chalk: "npm:^4.1.0" + commander: "npm:^7.2.0" + require-from-string: "npm:^2.0.2" + resolve-from: "npm:^5.0.0" + bin: + expo-modules-autolinking: bin/expo-modules-autolinking.js + checksum: 10/d16b686a2f8a1b665e2d3bd98c60c94d4a276c24367c8a0bf6d7c81e5ec3c6ac24cec811bc3fc8ec440d7a98355e1123cf9ab3cc830500f325be9a742b50efcb languageName: node linkType: hard @@ -8248,6 +8820,18 @@ __metadata: languageName: node linkType: hard +"expo-modules-core@npm:3.0.28": + version: 3.0.28 + resolution: "expo-modules-core@npm:3.0.28" + dependencies: + invariant: "npm:^2.2.4" + peerDependencies: + react: "*" + react-native: "*" + checksum: 10/9ee68a2f75b7658d05de3ed54be9039e7a248a1c89ca1bf582d1635d2fff50ac0ac6de7a1d2b315aca5df432f0d67064d2cd2ad63ee2b5cb30c9f738fb92a9c7 + languageName: node + linkType: hard + "expo-modules-core@npm:3.0.29": version: 3.0.29 resolution: "expo-modules-core@npm:3.0.29" @@ -8261,8 +8845,8 @@ __metadata: linkType: hard "expo-router@npm:~6.0.17": - version: 6.0.23 - resolution: "expo-router@npm:6.0.23" + version: 6.0.17 + resolution: "expo-router@npm:6.0.17" dependencies: "@expo/metro-runtime": "npm:^6.1.2" "@expo/schema-utils": "npm:^0.1.8" @@ -8292,8 +8876,8 @@ __metadata: "@react-navigation/drawer": ^7.5.0 "@testing-library/react-native": ">= 12.0.0" expo: "*" - expo-constants: ^18.0.13 - expo-linking: ^8.0.11 + expo-constants: ^18.0.11 + expo-linking: ^8.0.10 react: "*" react-dom: "*" react-native: "*" @@ -8302,7 +8886,7 @@ __metadata: react-native-safe-area-context: ">= 5.4.0" react-native-screens: "*" react-native-web: "*" - react-server-dom-webpack: ~19.0.4 || ~19.1.5 || ~19.2.4 + react-server-dom-webpack: ~19.0.1 || ~19.1.2 || ~19.2.1 peerDependenciesMeta: "@react-navigation/drawer": optional: true @@ -8318,7 +8902,7 @@ __metadata: optional: true react-server-dom-webpack: optional: true - checksum: 10/37b92fb8adc038ff5813298235a66bd22ac9a6002d5f016f3ceefa3f96e59910de6e069f0a27b9c23f6b2b40171a6589d31ad944cfe85171a4484937e981676d + checksum: 10/3d6e6774add5c84045bc07843c09e4e0f25eb65de5cee6d13f53ff61c2daefb47106db70308d0cead96e9166a31faa8cb94eccc23e57f21e9d9446e6f9c9a6fb languageName: node linkType: hard @@ -8341,12 +8925,12 @@ __metadata: languageName: node linkType: hard -"expo@npm:^54.0.0, expo@npm:^54.0.27": - version: 54.0.33 - resolution: "expo@npm:54.0.33" +"expo@npm:^54.0.0": + version: 54.0.32 + resolution: "expo@npm:54.0.32" dependencies: "@babel/runtime": "npm:^7.20.0" - "@expo/cli": "npm:54.0.23" + "@expo/cli": "npm:54.0.22" "@expo/config": "npm:~12.0.13" "@expo/config-plugins": "npm:~54.0.4" "@expo/devtools": "npm:0.1.8" @@ -8383,7 +8967,53 @@ __metadata: expo: bin/cli expo-modules-autolinking: bin/autolinking fingerprint: bin/fingerprint - checksum: 10/ed672f78333cf50545ea1cca8181506604150cca01a8aae782da30ddcba185d68f2d48f2ca10dee575a7abbc7913cca3f4c3d34d98373b0e9706b344030fa929 + checksum: 10/78c9b88b98bcf424c00ffdd399b77e6fbf34f2c26a3d420e731bfccd9cdfb54e95f27b539d071155c4144ae7157e2700f9d22d4b2816974b20f8fcf0675bbb05 + languageName: node + linkType: hard + +"expo@npm:^54.0.27": + version: 54.0.27 + resolution: "expo@npm:54.0.27" + dependencies: + "@babel/runtime": "npm:^7.20.0" + "@expo/cli": "npm:54.0.18" + "@expo/config": "npm:~12.0.11" + "@expo/config-plugins": "npm:~54.0.3" + "@expo/devtools": "npm:0.1.8" + "@expo/fingerprint": "npm:0.15.4" + "@expo/metro": "npm:~54.1.0" + "@expo/metro-config": "npm:54.0.10" + "@expo/vector-icons": "npm:^15.0.3" + "@ungap/structured-clone": "npm:^1.3.0" + babel-preset-expo: "npm:~54.0.8" + expo-asset: "npm:~12.0.11" + expo-constants: "npm:~18.0.11" + expo-file-system: "npm:~19.0.20" + expo-font: "npm:~14.0.10" + expo-keep-awake: "npm:~15.0.8" + expo-modules-autolinking: "npm:3.0.23" + expo-modules-core: "npm:3.0.28" + pretty-format: "npm:^29.7.0" + react-refresh: "npm:^0.14.2" + whatwg-url-without-unicode: "npm:8.0.0-3" + peerDependencies: + "@expo/dom-webview": "*" + "@expo/metro-runtime": "*" + react: "*" + react-native: "*" + react-native-webview: "*" + peerDependenciesMeta: + "@expo/dom-webview": + optional: true + "@expo/metro-runtime": + optional: true + react-native-webview: + optional: true + bin: + expo: bin/cli + expo-modules-autolinking: bin/autolinking + fingerprint: bin/fingerprint + checksum: 10/58917b6a363d8908395cf283f1e72f5e5c253619e297896160dafe1d18acb8feb46b76d880d9b52c96954aebe78f7069cf623726ad8921d431d07f9527a0699f languageName: node linkType: hard @@ -8409,9 +9039,9 @@ __metadata: linkType: hard "fast-equals@npm:^5.2.2": - version: 5.4.0 - resolution: "fast-equals@npm:5.4.0" - checksum: 10/bea068ceb7825d486d88a17ccc3fe889d1833efefa8dc64c83806e797f66b3ea953ac4aebd96af022d828de315ec87476e76418a5da774217d0ab66de53d68f5 + version: 5.3.3 + resolution: "fast-equals@npm:5.3.3" + checksum: 10/e9af422e313564f9f5db60a655d50e0baec23140da14165b2d191a243fef7c16eac10c4aa1659acd74c00bf1aa623f46e8eee91742af2beb539a6dfb63c8cd96 languageName: node linkType: hard @@ -8442,31 +9072,23 @@ __metadata: languageName: node linkType: hard -"fast-xml-builder@npm:^1.0.0": - version: 1.0.0 - resolution: "fast-xml-builder@npm:1.0.0" - checksum: 10/06c04d80545e5c9f4d1d6cca00567b5cc09953a92c6328fa48cfb4d7f42630313b8c2bb62e9cb81accee7bb5e1c5312fcae06c3d20dbe52d969a5938233316da - languageName: node - linkType: hard - -"fast-xml-parser@npm:^5.3.6": - version: 5.4.1 - resolution: "fast-xml-parser@npm:5.4.1" +"fast-xml-parser@npm:^4.4.1": + version: 4.5.3 + resolution: "fast-xml-parser@npm:4.5.3" dependencies: - fast-xml-builder: "npm:^1.0.0" - strnum: "npm:^2.1.2" + strnum: "npm:^1.1.1" bin: fxparser: src/cli/cli.js - checksum: 10/2b40067c3ad3542ca197d1353bcb0416cd5db20d5c66d74ac176b99af6ff9bd55a6182d36856a2fd477c95b8fc1f07405475f1662a31185480130ba7076c702a + checksum: 10/ca22bf9d65c10b8447c1034c13403e90ecee210e2b3852690df3d8a42b8a46ec655fae7356096abd98a15b89ddaf11878587b1773e0c3be4cbc2ac4af4c7bf95 languageName: node linkType: hard "fastq@npm:^1.6.0": - version: 1.20.1 - resolution: "fastq@npm:1.20.1" + version: 1.19.1 + resolution: "fastq@npm:1.19.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10/ab2fe3a7a108112e7752cfe7fc11683c21e595913a6a593ad0b4415f31dddbfc283775ab66f2c8ccea6ab7cfc116157cbddcfae9798d9de98d08fe0a2c3e97b2 + checksum: 10/75679dc226316341c4f2a6b618571f51eac96779906faecd8921b984e844d6ae42fabb2df69b1071327d398d5716693ea9c9c8941f64ac9e89ec2032ce59d730 languageName: node linkType: hard @@ -8628,7 +9250,7 @@ __metadata: languageName: node linkType: hard -"fresh@npm:~0.5.2": +"fresh@npm:0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" checksum: 10/64c88e489b5d08e2f29664eb3c79c705ff9a8eb15d3e597198ef76546d4ade295897a44abb0abd2700e7ef784b2e3cbf1161e4fbf16f59129193fd1030d16da1 @@ -8862,13 +9484,13 @@ __metadata: linkType: hard "glob@npm:^13.0.0": - version: 13.0.6 - resolution: "glob@npm:13.0.6" + version: 13.0.0 + resolution: "glob@npm:13.0.0" dependencies: - minimatch: "npm:^10.2.2" - minipass: "npm:^7.1.3" - path-scurry: "npm:^2.0.2" - checksum: 10/201ad69e5f0aa74e1d8c00a481581f8b8c804b6a4fbfabeeb8541f5d756932800331daeba99b58fb9e4cd67e12ba5a7eba5b82fb476691588418060b84353214 + minimatch: "npm:^10.1.1" + minipass: "npm:^7.1.2" + path-scurry: "npm:^2.0.0" + checksum: 10/de390721d29ee1c9ea41e40ec2aa0de2cabafa68022e237dc4297665a5e4d650776f2573191984ea1640aba1bf0ea34eddef2d8cbfbfc2ad24b5fb0af41d8846 languageName: node linkType: hard @@ -8895,6 +9517,15 @@ __metadata: languageName: node linkType: hard +"global-dirs@npm:^0.1.1": + version: 0.1.1 + resolution: "global-dirs@npm:0.1.1" + dependencies: + ini: "npm:^1.3.4" + checksum: 10/10624f5a8ddb8634c22804c6b24f93fb591c3639a6bc78e3584e01a238fc6f7b7965824184e57d63f6df36980b6c191484ad7bc6c35a1599b8f1d64be64c2a4a + languageName: node + linkType: hard + "globals@npm:^13.19.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -9125,7 +9756,20 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:^2.0.0, http-errors@npm:~2.0.1": +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: "npm:2.0.0" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + toidentifier: "npm:1.0.1" + checksum: 10/0e7f76ee8ff8a33e58a3281a469815b893c41357378f408be8f6d4aa7d1efafb0da064625518e7078381b6a92325949b119dc38fcb30bdbc4e3a35f78c44c439 + languageName: node + linkType: hard + +"http-errors@npm:~2.0.1": version: 2.0.1 resolution: "http-errors@npm:2.0.1" dependencies: @@ -9179,12 +9823,21 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.7.0, iconv-lite@npm:^0.7.2, iconv-lite@npm:~0.7.0": - version: 0.7.2 - resolution: "iconv-lite@npm:0.7.2" +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10/24c937b532f868e938386b62410b303b7c767ce3d08dc2829cbe59464d5a26ef86ae5ad1af6b34eec43ddfea39e7d101638644b0178d67262fa87015d59f983a + checksum: 10/24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f + languageName: node + linkType: hard + +"iconv-lite@npm:~0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10/6d3a2dac6e5d1fb126d25645c25c3a1209f70cceecc68b8ef51ae0da3cdc078c151fade7524a30b12a3094926336831fca09c666ef55b37e2c69638b5d6bd2e3 languageName: node linkType: hard @@ -9276,7 +9929,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 @@ -9290,7 +9943,7 @@ __metadata: languageName: node linkType: hard -"ini@npm:~1.3.0": +"ini@npm:^1.3.4, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" checksum: 10/314ae176e8d4deb3def56106da8002b462221c174ddb7ce0c49ee72c8cd1f9044f7b10cc555a7d8850982c3b9ca96fc212122749f5234bc2b6fb05fb942ed566 @@ -9415,7 +10068,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.16.1": +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -9759,10 +10412,10 @@ __metadata: languageName: node linkType: hard -"isexe@npm:^4.0.0": - version: 4.0.0 - resolution: "isexe@npm:4.0.0" - checksum: 10/2ead327ef596042ef9c9ec5f236b316acfaedb87f4bb61b3c3d574fb2e9c8a04b67305e04733bde52c24d9622fdebd3270aadb632adfbf9cadef88fe30f479e5 +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10/7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e languageName: node linkType: hard @@ -9831,7 +10484,7 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.5": +"iterator.prototype@npm:^1.1.4": version: 1.1.5 resolution: "iterator.prototype@npm:1.1.5" dependencies: @@ -10551,11 +11204,11 @@ __metadata: linkType: hard "jsonrepair@npm:^3.12.0": - version: 3.13.2 - resolution: "jsonrepair@npm:3.13.2" + version: 3.13.1 + resolution: "jsonrepair@npm:3.13.1" bin: jsonrepair: bin/cli.js - checksum: 10/c0c1ec46af1d8e396c22e4d41e4d85eff2c713afdb71b6634a72ed4f356b79259affadb4e79b31042e4c1634313ddc0b3d7960fd74f5fba918198ecc74fe5e82 + checksum: 10/cea418eeafe60ebbbf57207d2029fab7be229814c21dacca8380b3da331bc441ddd575cb2e1b533d0e0402e7291b18576686b7c96e6bc31547b8d996fde0001d languageName: node linkType: hard @@ -10611,12 +11264,12 @@ __metadata: linkType: hard "launch-editor@npm:^2.9.1": - version: 2.13.1 - resolution: "launch-editor@npm:2.13.1" + version: 2.12.0 + resolution: "launch-editor@npm:2.12.0" dependencies: picocolors: "npm:^1.1.1" shell-quote: "npm:^1.8.3" - checksum: 10/641aafaad6bafe5d33a13d89eff29082b032c1c5c1aa19fb9fa3b54ffcf26a3419f461a7583f6450bd5b11863b061b60049e38c2d5135492bf46f2ed3a2cbc0e + checksum: 10/43d2b66c674d129f9a96bbae602808a0afa7e6bb6f38de5518479e33b1a542e9772b262304505c2aa363b0185424580b4011a9198082d306e2b419c6f12da5e2 languageName: node linkType: hard @@ -10647,99 +11300,99 @@ __metadata: languageName: node linkType: hard -"lightningcss-android-arm64@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-android-arm64@npm:1.31.1" +"lightningcss-android-arm64@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-android-arm64@npm:1.30.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"lightningcss-darwin-arm64@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-darwin-arm64@npm:1.31.1" +"lightningcss-darwin-arm64@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-darwin-arm64@npm:1.30.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"lightningcss-darwin-x64@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-darwin-x64@npm:1.31.1" +"lightningcss-darwin-x64@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-darwin-x64@npm:1.30.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"lightningcss-freebsd-x64@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-freebsd-x64@npm:1.31.1" +"lightningcss-freebsd-x64@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-freebsd-x64@npm:1.30.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"lightningcss-linux-arm-gnueabihf@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-arm-gnueabihf@npm:1.31.1" +"lightningcss-linux-arm-gnueabihf@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.30.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"lightningcss-linux-arm64-gnu@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-arm64-gnu@npm:1.31.1" +"lightningcss-linux-arm64-gnu@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-linux-arm64-gnu@npm:1.30.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"lightningcss-linux-arm64-musl@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-arm64-musl@npm:1.31.1" +"lightningcss-linux-arm64-musl@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-linux-arm64-musl@npm:1.30.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"lightningcss-linux-x64-gnu@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-x64-gnu@npm:1.31.1" +"lightningcss-linux-x64-gnu@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-linux-x64-gnu@npm:1.30.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"lightningcss-linux-x64-musl@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-x64-musl@npm:1.31.1" +"lightningcss-linux-x64-musl@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-linux-x64-musl@npm:1.30.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"lightningcss-win32-arm64-msvc@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-win32-arm64-msvc@npm:1.31.1" +"lightningcss-win32-arm64-msvc@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-win32-arm64-msvc@npm:1.30.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"lightningcss-win32-x64-msvc@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-win32-x64-msvc@npm:1.31.1" +"lightningcss-win32-x64-msvc@npm:1.30.2": + version: 1.30.2 + resolution: "lightningcss-win32-x64-msvc@npm:1.30.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "lightningcss@npm:^1.30.1": - version: 1.31.1 - resolution: "lightningcss@npm:1.31.1" + version: 1.30.2 + resolution: "lightningcss@npm:1.30.2" dependencies: detect-libc: "npm:^2.0.3" - lightningcss-android-arm64: "npm:1.31.1" - lightningcss-darwin-arm64: "npm:1.31.1" - lightningcss-darwin-x64: "npm:1.31.1" - lightningcss-freebsd-x64: "npm:1.31.1" - lightningcss-linux-arm-gnueabihf: "npm:1.31.1" - lightningcss-linux-arm64-gnu: "npm:1.31.1" - lightningcss-linux-arm64-musl: "npm:1.31.1" - lightningcss-linux-x64-gnu: "npm:1.31.1" - lightningcss-linux-x64-musl: "npm:1.31.1" - lightningcss-win32-arm64-msvc: "npm:1.31.1" - lightningcss-win32-x64-msvc: "npm:1.31.1" + lightningcss-android-arm64: "npm:1.30.2" + lightningcss-darwin-arm64: "npm:1.30.2" + lightningcss-darwin-x64: "npm:1.30.2" + lightningcss-freebsd-x64: "npm:1.30.2" + lightningcss-linux-arm-gnueabihf: "npm:1.30.2" + lightningcss-linux-arm64-gnu: "npm:1.30.2" + lightningcss-linux-arm64-musl: "npm:1.30.2" + lightningcss-linux-x64-gnu: "npm:1.30.2" + lightningcss-linux-x64-musl: "npm:1.30.2" + lightningcss-win32-arm64-msvc: "npm:1.30.2" + lightningcss-win32-x64-msvc: "npm:1.30.2" dependenciesMeta: lightningcss-android-arm64: optional: true @@ -10763,7 +11416,7 @@ __metadata: optional: true lightningcss-win32-x64-msvc: optional: true - checksum: 10/3c2b2c2f648b12d9cba623d2e558f74fcce35911077e3d33f97ed521e0ad7a84e2c814628f6e16f64095c4483f6b180dee7b2e441b3ff5f44d142a510785a0c6 + checksum: 10/d6cc06d9bac295589a49446e9c45a241dfa16f4f81a7318c26cbc0be3e189003ec0da5d9a0fd9bdffc63a3ce05878cc7329277eaac77a826e8b68c73dc96cfda languageName: node linkType: hard @@ -10859,9 +11512,9 @@ __metadata: linkType: hard "lodash@npm:^4.17.21": - version: 4.17.23 - resolution: "lodash@npm:4.17.23" - checksum: 10/82504c88250f58da7a5a4289f57a4f759c44946c005dd232821c7688b5fcfbf4a6268f6a6cdde4b792c91edd2f3b5398c1d2a0998274432cff76def48735e233 + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 languageName: node linkType: hard @@ -10925,9 +11578,9 @@ __metadata: linkType: hard "lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": - version: 11.2.6 - resolution: "lru-cache@npm:11.2.6" - checksum: 10/91222bbd59f793a0a0ad57789388f06b34ac9bb1613433c1d1810457d09db5cd3ec8943227ce2e1f5d6a0a15d6f1a9f129cb2c49ae9b6b10e82d4965fddecbef + version: 11.2.4 + resolution: "lru-cache@npm:11.2.4" + checksum: 10/3b2da74c0b6653767f8164c38c4c4f4d7f0cc10c62bfa512663d94a830191ae6a5af742a8d88a8b30d5f9974652d3adae53931f32069139ad24fa2a18a199aca languageName: node linkType: hard @@ -10950,10 +11603,9 @@ __metadata: linkType: hard "make-fetch-happen@npm:^15.0.0": - version: 15.0.4 - resolution: "make-fetch-happen@npm:15.0.4" + version: 15.0.3 + resolution: "make-fetch-happen@npm:15.0.3" dependencies: - "@gar/promise-retry": "npm:^1.0.0" "@npmcli/agent": "npm:^4.0.0" cacache: "npm:^20.0.1" http-cache-semantics: "npm:^4.1.1" @@ -10963,8 +11615,9 @@ __metadata: minipass-pipeline: "npm:^1.2.4" negotiator: "npm:^1.0.0" proc-log: "npm:^6.0.0" + promise-retry: "npm:^2.0.1" ssri: "npm:^13.0.0" - checksum: 10/4aa75baab500eff4259f2e1a3e76cf01ab3a3cd750037e4bd7b5e22bc5a60f12cc766b3c45e6288accb5ab609e88de5019a8014e0f96f6594b7b03cb504f4b81 + checksum: 10/78da4fc1df83cb596e2bae25aa0653b8a9c6cbdd6674a104894e03be3acfcd08c70b78f06ef6407fbd6b173f6a60672480d78641e693d05eb71c09c13ee35278 languageName: node linkType: hard @@ -11020,8 +11673,8 @@ __metadata: linkType: hard "mdast-util-from-markdown@npm:^2.0.0": - version: 2.0.3 - resolution: "mdast-util-from-markdown@npm:2.0.3" + version: 2.0.2 + resolution: "mdast-util-from-markdown@npm:2.0.2" dependencies: "@types/mdast": "npm:^4.0.0" "@types/unist": "npm:^3.0.0" @@ -11035,7 +11688,7 @@ __metadata: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" unist-util-stringify-position: "npm:^4.0.0" - checksum: 10/96f2bfb3b240c3d20a57db5d215faed795abf495c65ca2a4d61c0cf796011bc980619aa032d7984b05b67c15edc0eccd12a004a848952d3a598d108cf14901ab + checksum: 10/69b207913fbcc0469f8c59d922af4d5509b79e809d77c9bd4781543a907fe2ecc8e6433ce0707066a27b117b13f38af3aae4f2d085e18ebd2d3ad5f1a5647902 languageName: node linkType: hard @@ -11083,10 +11736,10 @@ __metadata: languageName: node linkType: hard -"media-typer@npm:^1.1.0": - version: 1.1.0 - resolution: "media-typer@npm:1.1.0" - checksum: 10/a58dd60804df73c672942a7253ccc06815612326dc1c0827984b1a21704466d7cde351394f47649e56cf7415e6ee2e26e000e81b51b3eebb5a93540e8bf93cbd +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: 10/38e0984db39139604756903a01397e29e17dcb04207bb3e081412ce725ab17338ecc47220c1b186b6bbe79a658aad1b0d41142884f5a481f36290cdefbe6aa46 languageName: node linkType: hard @@ -11117,9 +11770,21 @@ __metadata: dependencies: "@babel/core": "npm:^7.25.2" flow-enums-runtime: "npm:^0.0.6" - hermes-parser: "npm:0.25.1" + hermes-parser: "npm:0.25.1" + nullthrows: "npm:^1.1.1" + checksum: 10/331c079508418378294534e6a7da228dc6b271827c8622a148c1e0dfdd18729f16eeea84e96541e95e7eee126d49180f92540cd39b37a2f96bf5c015456f49a1 + languageName: node + linkType: hard + +"metro-babel-transformer@npm:0.83.2": + version: 0.83.2 + resolution: "metro-babel-transformer@npm:0.83.2" + dependencies: + "@babel/core": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + hermes-parser: "npm:0.32.0" nullthrows: "npm:^1.1.1" - checksum: 10/331c079508418378294534e6a7da228dc6b271827c8622a148c1e0dfdd18729f16eeea84e96541e95e7eee126d49180f92540cd39b37a2f96bf5c015456f49a1 + checksum: 10/8ca98216c3fc32757cbb445d2e42042617b5a2399d3d409759b168fbd3d52aadf8bb2b8471e4b204ddf5c654b7b146397edb7693f48a0582e7e4e169cf3bbfbb languageName: node linkType: hard @@ -11156,6 +11821,15 @@ __metadata: languageName: node linkType: hard +"metro-cache-key@npm:0.83.2": + version: 0.83.2 + resolution: "metro-cache-key@npm:0.83.2" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10/ad60492b1db35b7d4eb1f9ed6f8aa79a051dcb1be3183fcd5b0a810e7c4ba5dba5e9f02e131ccd271d6db2efaa9893ef0e316ef26ebb3ab49cb074fada4de1b5 + languageName: node + linkType: hard + "metro-cache-key@npm:0.83.3": version: 0.83.3 resolution: "metro-cache-key@npm:0.83.3" @@ -11185,6 +11859,18 @@ __metadata: languageName: node linkType: hard +"metro-cache@npm:0.83.2": + version: 0.83.2 + resolution: "metro-cache@npm:0.83.2" + dependencies: + exponential-backoff: "npm:^3.1.1" + flow-enums-runtime: "npm:^0.0.6" + https-proxy-agent: "npm:^7.0.5" + metro-core: "npm:0.83.2" + checksum: 10/3183bcd8e0590ab4630f344f9dd4daa3b2371450e7f4546f2b1128b1386ecece204a74a7e3df49a8f3776b5a4a746fe4aa05f952a97e6f4f61deda80be5c55cf + languageName: node + linkType: hard + "metro-cache@npm:0.83.3": version: 0.83.3 resolution: "metro-cache@npm:0.83.3" @@ -11225,7 +11911,23 @@ __metadata: languageName: node linkType: hard -"metro-config@npm:0.83.3": +"metro-config@npm:0.83.2": + version: 0.83.2 + resolution: "metro-config@npm:0.83.2" + dependencies: + connect: "npm:^3.6.5" + flow-enums-runtime: "npm:^0.0.6" + jest-validate: "npm:^29.7.0" + metro: "npm:0.83.2" + metro-cache: "npm:0.83.2" + metro-core: "npm:0.83.2" + metro-runtime: "npm:0.83.2" + yaml: "npm:^2.6.1" + checksum: 10/830696bb515ad421f1a25003d64c01bca580b2485c69266e03faf0c8f36f55283388fda5505f53ae400f8298502f712aab6c76655e45996907588288d2586c6b + languageName: node + linkType: hard + +"metro-config@npm:0.83.3, metro-config@npm:^0.83.1": version: 0.83.3 resolution: "metro-config@npm:0.83.3" dependencies: @@ -11241,7 +11943,7 @@ __metadata: languageName: node linkType: hard -"metro-config@npm:0.83.4, metro-config@npm:^0.83.1, metro-config@npm:^0.83.3": +"metro-config@npm:0.83.4, metro-config@npm:^0.83.3": version: 0.83.4 resolution: "metro-config@npm:0.83.4" dependencies: @@ -11268,7 +11970,18 @@ __metadata: languageName: node linkType: hard -"metro-core@npm:0.83.3": +"metro-core@npm:0.83.2": + version: 0.83.2 + resolution: "metro-core@npm:0.83.2" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + lodash.throttle: "npm:^4.1.1" + metro-resolver: "npm:0.83.2" + checksum: 10/dbbef6b6d0cdb76ff808928cda59086aa4fc04a50ff76be8e19bd181d9cf270f4fe0a6b60883d0230aeeba2ba65a68875af549c83c2cfee5a1f0988ed1b4fccd + languageName: node + linkType: hard + +"metro-core@npm:0.83.3, metro-core@npm:^0.83.1": version: 0.83.3 resolution: "metro-core@npm:0.83.3" dependencies: @@ -11279,7 +11992,7 @@ __metadata: languageName: node linkType: hard -"metro-core@npm:0.83.4, metro-core@npm:^0.83.1": +"metro-core@npm:0.83.4": version: 0.83.4 resolution: "metro-core@npm:0.83.4" dependencies: @@ -11307,6 +12020,23 @@ __metadata: languageName: node linkType: hard +"metro-file-map@npm:0.83.2": + version: 0.83.2 + resolution: "metro-file-map@npm:0.83.2" + dependencies: + debug: "npm:^4.4.0" + fb-watchman: "npm:^2.0.0" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + nullthrows: "npm:^1.1.1" + walker: "npm:^1.0.7" + checksum: 10/349a52c74cd02a1db75d0677c82e31750098e74a67bd1e10b2241e296897bfb20de2d8a2f27d7c292e2b3f492a36a191eb3c1bd5d09d5758b8febd36db86e58f + languageName: node + linkType: hard + "metro-file-map@npm:0.83.3": version: 0.83.3 resolution: "metro-file-map@npm:0.83.3" @@ -11351,6 +12081,16 @@ __metadata: languageName: node linkType: hard +"metro-minify-terser@npm:0.83.2": + version: 0.83.2 + resolution: "metro-minify-terser@npm:0.83.2" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + terser: "npm:^5.15.0" + checksum: 10/ee164bdd3ddf797e1b0f9fd71960b662b40fc3abead77521b1e1435291d38cc151442348362d6afee0596d52fcff48cc6a055a04a7928905e9557968e05293ac + languageName: node + linkType: hard + "metro-minify-terser@npm:0.83.3": version: 0.83.3 resolution: "metro-minify-terser@npm:0.83.3" @@ -11429,6 +12169,15 @@ __metadata: languageName: node linkType: hard +"metro-resolver@npm:0.83.2": + version: 0.83.2 + resolution: "metro-resolver@npm:0.83.2" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10/2ba0cdda5c5a3ddac72fd486a310892638ba7d67a736246ec128674dfa6217d6169bdd0f811874435eae37f0201d72735fe7dddfc0c83a9e1439f05994bc293a + languageName: node + linkType: hard + "metro-resolver@npm:0.83.3": version: 0.83.3 resolution: "metro-resolver@npm:0.83.3" @@ -11457,7 +12206,17 @@ __metadata: languageName: node linkType: hard -"metro-runtime@npm:0.83.3": +"metro-runtime@npm:0.83.2": + version: 0.83.2 + resolution: "metro-runtime@npm:0.83.2" + dependencies: + "@babel/runtime": "npm:^7.25.0" + flow-enums-runtime: "npm:^0.0.6" + checksum: 10/1666e0e5c51d39f916642ed3918cf1996f76e82366ba9ca3132d6c11c5c62a1ab1115e4aa325f0fc9b8cefbe62d6ca8d1948cfde2ee78963491deafcbc79adba + languageName: node + linkType: hard + +"metro-runtime@npm:0.83.3, metro-runtime@npm:^0.83.1": version: 0.83.3 resolution: "metro-runtime@npm:0.83.3" dependencies: @@ -11467,7 +12226,7 @@ __metadata: languageName: node linkType: hard -"metro-runtime@npm:0.83.4, metro-runtime@npm:^0.83.1, metro-runtime@npm:^0.83.3": +"metro-runtime@npm:0.83.4, metro-runtime@npm:^0.83.3": version: 0.83.4 resolution: "metro-runtime@npm:0.83.4" dependencies: @@ -11495,7 +12254,25 @@ __metadata: languageName: node linkType: hard -"metro-source-map@npm:0.83.3": +"metro-source-map@npm:0.83.2": + version: 0.83.2 + resolution: "metro-source-map@npm:0.83.2" + dependencies: + "@babel/traverse": "npm:^7.25.3" + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3" + "@babel/types": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + invariant: "npm:^2.2.4" + metro-symbolicate: "npm:0.83.2" + nullthrows: "npm:^1.1.1" + ob1: "npm:0.83.2" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + checksum: 10/6253f6aa9a19ff35d70a08e1a434b9641874392e3cccec6abc8dcbac1c3e9289e348fa37960f16581c386e8f9ba743631ecc8ed5bf42817a5d5c54b6784c63b5 + languageName: node + linkType: hard + +"metro-source-map@npm:0.83.3, metro-source-map@npm:^0.83.1": version: 0.83.3 resolution: "metro-source-map@npm:0.83.3" dependencies: @@ -11513,7 +12290,7 @@ __metadata: languageName: node linkType: hard -"metro-source-map@npm:0.83.4, metro-source-map@npm:^0.83.1": +"metro-source-map@npm:0.83.4": version: 0.83.4 resolution: "metro-source-map@npm:0.83.4" dependencies: @@ -11546,6 +12323,22 @@ __metadata: languageName: node linkType: hard +"metro-symbolicate@npm:0.83.2": + version: 0.83.2 + resolution: "metro-symbolicate@npm:0.83.2" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + invariant: "npm:^2.2.4" + metro-source-map: "npm:0.83.2" + nullthrows: "npm:^1.1.1" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + bin: + metro-symbolicate: src/index.js + checksum: 10/1ddd82d0f1e236f4eb69c49b319a5446f364aaa421b4301554898abe86d23a452a5fb5113bfef6b6c68c2a697ad3a68fb00919a2f7b9b73a040c92689002a8d4 + languageName: node + linkType: hard + "metro-symbolicate@npm:0.83.3": version: 0.83.3 resolution: "metro-symbolicate@npm:0.83.3" @@ -11592,6 +12385,20 @@ __metadata: languageName: node linkType: hard +"metro-transform-plugins@npm:0.83.2": + version: 0.83.2 + resolution: "metro-transform-plugins@npm:0.83.2" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.25.0" + "@babel/template": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.3" + flow-enums-runtime: "npm:^0.0.6" + nullthrows: "npm:^1.1.1" + checksum: 10/e3ebef11d64e5e568fde3fe2edc5d7f1e9508b28c7607c14dd711bc29058cbfc97e53edbfee79bd60f58c189e4d74869d87a30488534024fe88503296a7d095a + languageName: node + linkType: hard + "metro-transform-plugins@npm:0.83.3": version: 0.83.3 resolution: "metro-transform-plugins@npm:0.83.3" @@ -11641,6 +12448,27 @@ __metadata: languageName: node linkType: hard +"metro-transform-worker@npm:0.83.2": + version: 0.83.2 + resolution: "metro-transform-worker@npm:0.83.2" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.3" + "@babel/types": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + metro: "npm:0.83.2" + metro-babel-transformer: "npm:0.83.2" + metro-cache: "npm:0.83.2" + metro-cache-key: "npm:0.83.2" + metro-minify-terser: "npm:0.83.2" + metro-source-map: "npm:0.83.2" + metro-transform-plugins: "npm:0.83.2" + nullthrows: "npm:^1.1.1" + checksum: 10/b4286b1b0511e46e2ec265e24138d03d8a794687260beae297de3d378285cce0e06132280dac62d447dfaf55627432c28463939a63136f3a84c2cf6b880d3865 + languageName: node + linkType: hard + "metro-transform-worker@npm:0.83.3": version: 0.83.3 resolution: "metro-transform-worker@npm:0.83.3" @@ -11733,7 +12561,57 @@ __metadata: languageName: node linkType: hard -"metro@npm:0.83.3": +"metro@npm:0.83.2": + version: 0.83.2 + resolution: "metro@npm:0.83.2" + dependencies: + "@babel/code-frame": "npm:^7.24.7" + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.3" + "@babel/template": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.3" + "@babel/types": "npm:^7.25.2" + accepts: "npm:^1.3.7" + chalk: "npm:^4.0.0" + ci-info: "npm:^2.0.0" + connect: "npm:^3.6.5" + debug: "npm:^4.4.0" + error-stack-parser: "npm:^2.0.6" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + hermes-parser: "npm:0.32.0" + image-size: "npm:^1.0.2" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + jsc-safe-url: "npm:^0.2.2" + lodash.throttle: "npm:^4.1.1" + metro-babel-transformer: "npm:0.83.2" + metro-cache: "npm:0.83.2" + metro-cache-key: "npm:0.83.2" + metro-config: "npm:0.83.2" + metro-core: "npm:0.83.2" + metro-file-map: "npm:0.83.2" + metro-resolver: "npm:0.83.2" + metro-runtime: "npm:0.83.2" + metro-source-map: "npm:0.83.2" + metro-symbolicate: "npm:0.83.2" + metro-transform-plugins: "npm:0.83.2" + metro-transform-worker: "npm:0.83.2" + mime-types: "npm:^2.1.27" + nullthrows: "npm:^1.1.1" + serialize-error: "npm:^2.1.0" + source-map: "npm:^0.5.6" + throat: "npm:^5.0.0" + ws: "npm:^7.5.10" + yargs: "npm:^17.6.2" + bin: + metro: src/cli.js + checksum: 10/524c0f98ce8be619a345f58c39d19e6d0e5745dfd156c9b0a06201e6d9ad59e4405922f09f56fe92a86df9e06b0e89b173a3136640f1ec69c395b9ca34c1b042 + languageName: node + linkType: hard + +"metro@npm:0.83.3, metro@npm:^0.83.1": version: 0.83.3 resolution: "metro@npm:0.83.3" dependencies: @@ -11783,7 +12661,7 @@ __metadata: languageName: node linkType: hard -"metro@npm:0.83.4, metro@npm:^0.83.1": +"metro@npm:0.83.4": version: 0.83.4 resolution: "metro@npm:0.83.4" dependencies: @@ -12103,7 +12981,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.27, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.27, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -12153,30 +13031,30 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^10.2.2": - version: 10.2.4 - resolution: "minimatch@npm:10.2.4" +"minimatch@npm:^10.1.1": + version: 10.1.1 + resolution: "minimatch@npm:10.1.1" dependencies: - brace-expansion: "npm:^5.0.2" - checksum: 10/aea4874e521c55bb60744685bbffe3d152e5460f84efac3ea936e6bbe2ceba7deb93345fec3f9bb17f7b6946776073a64d40ae32bf5f298ad690308121068a1f + "@isaacs/brace-expansion": "npm:^5.0.0" + checksum: 10/110f38921ea527022e90f7a5f43721838ac740d0a0c26881c03b57c261354fb9a0430e40b2c56dfcea2ef3c773768f27210d1106f1f2be19cde3eea93f26f45e languageName: node linkType: hard "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.5 - resolution: "minimatch@npm:3.1.5" + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 10/b11a7ee5773cd34c1a0c8436cdbe910901018fb4b6cb47aa508a18d567f6efd2148507959e35fba798389b161b8604a2d704ccef751ea36bd4582f9852b7d63f + checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634 languageName: node linkType: hard "minimatch@npm:^9.0.0, minimatch@npm:^9.0.4": - version: 9.0.8 - resolution: "minimatch@npm:9.0.8" + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" dependencies: - brace-expansion: "npm:^5.0.2" - checksum: 10/bffa6514fa576a5052cea75b96b1d4086598c3ba45464dffcff14d00c2866805c088072ae21460ade250455c2da72e67556b1c3b830ddaf0b4697dca62f6d744 + brace-expansion: "npm:^2.0.1" + checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 languageName: node linkType: hard @@ -12197,17 +13075,17 @@ __metadata: linkType: hard "minipass-fetch@npm:^5.0.0": - version: 5.0.2 - resolution: "minipass-fetch@npm:5.0.2" + version: 5.0.0 + resolution: "minipass-fetch@npm:5.0.0" dependencies: - iconv-lite: "npm:^0.7.2" + encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" - minipass-sized: "npm:^2.0.0" + minipass-sized: "npm:^1.0.3" minizlib: "npm:^3.0.1" dependenciesMeta: - iconv-lite: + encoding: optional: true - checksum: 10/4f3f65ea5b20a3a287765ebf21cc73e62031f754944272df2a3039296cc75a8fc2dc50b8a3c4f39ce3ac6e5cc583e8dc664d12c6ab98e0883d263e49f344bc86 + checksum: 10/4fb7dca630a64e6970a8211dade505bfe260d0b8d60beb348dcdfb95fe35ef91d977b29963929c9017ae0805686aa3f413107dc6bc5deac9b9e26b0b41c3b86c languageName: node linkType: hard @@ -12229,12 +13107,12 @@ __metadata: languageName: node linkType: hard -"minipass-sized@npm:^2.0.0": - version: 2.0.0 - resolution: "minipass-sized@npm:2.0.0" +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" dependencies: - minipass: "npm:^7.1.2" - checksum: 10/3b89adf64ca705662f77481e278eff5ec0a57aeffb5feba7cc8843722b1e7770efc880f2a17d1d4877b2d7bf227873cd46afb4da44c0fd18088b601ea50f96bb + minipass: "npm:^3.0.0" + checksum: 10/40982d8d836a52b0f37049a0a7e5d0f089637298e6d9b45df9c115d4f0520682a78258905e5c8b180fb41b593b0a82cc1361d2c74b45f7ada66334f84d1ecfdd languageName: node linkType: hard @@ -12247,10 +13125,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": - version: 7.1.3 - resolution: "minipass@npm:7.1.3" - checksum: 10/175e4d5e20980c3cd316ae82d2c031c42f6c746467d8b1905b51060a0ba4461441a0c25bb67c025fd9617f9a3873e152c7b543c6b5ac83a1846be8ade80dffd6 +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10/c25f0ee8196d8e6036661104bacd743785b2599a21de5c516b32b3fa2b83113ac89a2358465bc04956baab37ffb956ae43be679b2262bf7be15fce467ccd7950 languageName: node linkType: hard @@ -12367,19 +13245,7 @@ __metadata: languageName: node linkType: hard -"node-exports-info@npm:^1.6.0": - version: 1.6.0 - resolution: "node-exports-info@npm:1.6.0" - dependencies: - array.prototype.flatmap: "npm:^1.3.3" - es-errors: "npm:^1.3.0" - object.entries: "npm:^1.1.9" - semver: "npm:^6.3.1" - checksum: 10/0a1667d535f499ac1fe6c6d22f8146bc8b68abc76fa355856219202f6cf5f386027e0ff054e66a22d08be02acbc63fcdc9f98d0fbc97993f5eabc66408fdadad - languageName: node - linkType: hard - -"node-forge@npm:^1.3.3": +"node-forge@npm:^1.2.1, node-forge@npm:^1.3.1, node-forge@npm:^1.3.3": version: 1.3.3 resolution: "node-forge@npm:1.3.3" checksum: 10/f41c31b9296771a4b8c955d58417471712f54f324603a35f8e6cbac19d5e6eaaf5fd5fd14584dfedecbf46a05438ded6eee60a5f2f0822fc5061aaa073cfc75d @@ -12387,8 +13253,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 12.2.0 - resolution: "node-gyp@npm:12.2.0" + version: 12.1.0 + resolution: "node-gyp@npm:12.1.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -12397,12 +13263,12 @@ __metadata: nopt: "npm:^9.0.0" proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" - tar: "npm:^7.5.4" + tar: "npm:^7.5.2" tinyglobby: "npm:^0.2.12" which: "npm:^6.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/4ebab5b77585a637315e969c2274b5520562473fe75de850639a580c2599652fb9f33959ec782ea45a2e149d8f04b548030f472eeeb3dbdf19a7f2ccbc30b908 + checksum: 10/d93079236cef1dd7fa4df683708d8708ad255c55865f6656664c8959e4d3963d908ac48e8f9f341705432e979dbbf502a40d68d65a17fe35956a5a05ba6c1cb4 languageName: node linkType: hard @@ -12491,6 +13357,15 @@ __metadata: languageName: node linkType: hard +"ob1@npm:0.83.2": + version: 0.83.2 + resolution: "ob1@npm:0.83.2" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10/8eb482589b66cf46600d1231c2ea50a365f47ee5db0274795d1d3f5c43112e255b931a41ce1ef8a220f31b4fb985fb269c6a54bf7e9719f90dac3f4001a89a6c + languageName: node + linkType: hard + "ob1@npm:0.83.3": version: 0.83.3 resolution: "ob1@npm:0.83.3" @@ -12580,7 +13455,7 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:^2.4.1, on-finished@npm:~2.4.1": +"on-finished@npm:2.4.1, on-finished@npm:~2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: @@ -12899,13 +13774,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^2.0.2": - version: 2.0.2 - resolution: "path-scurry@npm:2.0.2" +"path-scurry@npm:^2.0.0": + version: 2.0.1 + resolution: "path-scurry@npm:2.0.1" dependencies: lru-cache: "npm:^11.0.0" minipass: "npm:^7.1.2" - checksum: 10/2b4257422bcb870a4c2d205b3acdbb213a72f5e2250f61c80f79c9d014d010f82bdf8584441612c8e1fa4eb098678f5704a66fa8377d72646bad4be38e57a2c3 + checksum: 10/1e9c74e9ccf94d7c16056a5cb2dba9fa23eec1bc221ab15c44765486b9b9975b4cd9a4d55da15b96eadf67d5202e9a2f1cec9023fbb35fe7d9ccd0ff1891f88b languageName: node linkType: hard @@ -13010,34 +13885,93 @@ __metadata: languageName: node linkType: hard -"prettier-linter-helpers@npm:^1.0.1": - version: 1.0.1 - resolution: "prettier-linter-helpers@npm:1.0.1" +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" dependencies: fast-diff: "npm:^1.1.2" - checksum: 10/2dc35f5036a35f4c4f5e645887edda1436acb63687a7f12b2383e0a6f3c1f76b8a0a4709fe4d82e19157210feb5984b159bb714d43290022911ab53d606474ec + checksum: 10/00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 languageName: node linkType: hard "prettier-plugin-jsdoc@npm:^1.3.0": - version: 1.8.0 - resolution: "prettier-plugin-jsdoc@npm:1.8.0" + version: 1.7.0 + resolution: "prettier-plugin-jsdoc@npm:1.7.0" dependencies: binary-searching: "npm:^2.0.5" comment-parser: "npm:^1.4.0" mdast-util-from-markdown: "npm:^2.0.0" + prettier-plugin-tailwindcss: "npm:^0.7.1" peerDependencies: prettier: ^3.0.0 - checksum: 10/f25412b87b74f77606addb718207b6273d41697a04931c52e011c6c637fdebfeca57a1572523cb95e144e808840af1399b5fd72767d14281ea2066c0b8b70b11 + checksum: 10/28f71f429f453e9073c9bf3eff1131f0e461b21ff184f9da54d1f3919a5898817b32abd87440c7e342f2320280b44ff141096bafd20204f950cce60780552d8b + languageName: node + linkType: hard + +"prettier-plugin-tailwindcss@npm:^0.7.1": + version: 0.7.2 + resolution: "prettier-plugin-tailwindcss@npm:0.7.2" + peerDependencies: + "@ianvs/prettier-plugin-sort-imports": "*" + "@prettier/plugin-hermes": "*" + "@prettier/plugin-oxc": "*" + "@prettier/plugin-pug": "*" + "@shopify/prettier-plugin-liquid": "*" + "@trivago/prettier-plugin-sort-imports": "*" + "@zackad/prettier-plugin-twig": "*" + prettier: ^3.0 + prettier-plugin-astro: "*" + prettier-plugin-css-order: "*" + prettier-plugin-jsdoc: "*" + prettier-plugin-marko: "*" + prettier-plugin-multiline-arrays: "*" + prettier-plugin-organize-attributes: "*" + prettier-plugin-organize-imports: "*" + prettier-plugin-sort-imports: "*" + prettier-plugin-svelte: "*" + peerDependenciesMeta: + "@ianvs/prettier-plugin-sort-imports": + optional: true + "@prettier/plugin-hermes": + optional: true + "@prettier/plugin-oxc": + optional: true + "@prettier/plugin-pug": + optional: true + "@shopify/prettier-plugin-liquid": + optional: true + "@trivago/prettier-plugin-sort-imports": + optional: true + "@zackad/prettier-plugin-twig": + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-svelte: + optional: true + checksum: 10/c77253025d62555e761b0a76df6e5c73d48d96a259ac157de9c21f11a7851fd2b434c27b296b119530895a57fe87c8cf337b0df0bff97b2bc1a0d48a442b0d99 languageName: node linkType: hard "prettier@npm:^3.3.3": - version: 3.8.1 - resolution: "prettier@npm:3.8.1" + version: 3.7.4 + resolution: "prettier@npm:3.7.4" bin: prettier: bin/prettier.cjs - checksum: 10/3da1cf8c1ef9bea828aa618553696c312e951f810bee368f6887109b203f18ee869fe88f66e65f9cf60b7cb1f2eae859892c860a300c062ff8ec69c381fc8dbd + checksum: 10/b4d00ea13baed813cb777c444506632fb10faaef52dea526cacd03085f01f6db11fc969ccebedf05bf7d93c3960900994c6adf1b150e28a31afd5cfe7089b313 languageName: node linkType: hard @@ -13091,6 +14025,16 @@ __metadata: languageName: node linkType: hard +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10/96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 + languageName: node + linkType: hard + "promise@npm:^8.3.0": version: 8.3.0 resolution: "promise@npm:8.3.0" @@ -13154,12 +14098,12 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.14.1": - version: 6.15.0 - resolution: "qs@npm:6.15.0" +"qs@npm:~6.14.0": + version: 6.14.0 + resolution: "qs@npm:6.14.0" dependencies: side-channel: "npm:^1.1.0" - checksum: 10/a3458f2f389285c3512e0ebc55522ee370ac7cb720ba9f0eff3e30fb2bb07631caf556c08e2a3d4481a371ac14faa9ceb7442a0610c5a7e55b23a5bdee7b701c + checksum: 10/a60e49bbd51c935a8a4759e7505677b122e23bf392d6535b8fc31c1e447acba2c901235ecb192764013cd2781723dc1f61978b5fdd93cc31d7043d31cdc01974 languageName: node linkType: hard @@ -13198,15 +14142,15 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:^3.0.1": - version: 3.0.2 - resolution: "raw-body@npm:3.0.2" +"raw-body@npm:~2.5.3": + version: 2.5.3 + resolution: "raw-body@npm:2.5.3" dependencies: bytes: "npm:~3.1.2" http-errors: "npm:~2.0.1" - iconv-lite: "npm:~0.7.0" + iconv-lite: "npm:~0.4.24" unpipe: "npm:~1.0.0" - checksum: 10/4168c82157bd69175d5bd960e59b74e253e237b358213694946a427a6f750a18b8e150f036fed3421b3e83294b071a4e2bb01037a79ccacdac05360c63d3ebba + checksum: 10/f35759fe5a6548e7c529121ead1de4dd163f899749a5896c42e278479df2d9d7f98b5bb17312737c03617765e5a1433e586f717616e5cfbebc13b4738b820601 languageName: node linkType: hard @@ -13265,9 +14209,9 @@ __metadata: linkType: hard "react-is@npm:^19.1.0": - version: 19.2.4 - resolution: "react-is@npm:19.2.4" - checksum: 10/3360fc50a38c23299c5003a709949f2439b2901e77962eea78d892f526f710d05a7777b600b302f853583d1861979b00d7a0a071c89c6562eac5740ac29b9665 + version: 19.2.1 + resolution: "react-is@npm:19.2.1" + checksum: 10/d2d0f2b55710c73af1ee5c17e438a274a52758522af9cb1f1f6df35b233a5eb158f4dc8e38e0c058b090bf7d432f27fc6c59dd016c811109260097cea5268461 languageName: node linkType: hard @@ -13298,8 +14242,8 @@ __metadata: linkType: hard "react-native-builder-bob@npm:^0.40.12": - version: 0.40.18 - resolution: "react-native-builder-bob@npm:0.40.18" + version: 0.40.16 + resolution: "react-native-builder-bob@npm:0.40.16" dependencies: "@babel/core": "npm:^7.25.2" "@babel/plugin-transform-flow-strip-types": "npm:^7.26.5" @@ -13320,12 +14264,12 @@ __metadata: json5: "npm:^2.2.1" kleur: "npm:^4.1.4" prompts: "npm:^2.4.2" - react-native-monorepo-config: "npm:^0.3.3" + react-native-monorepo-config: "npm:^0.1.8" which: "npm:^2.0.2" yargs: "npm:^17.5.1" bin: bob: bin/bob - checksum: 10/06eddba046a508dff0aa322c823fa57a280e2ed6a6f586de2114ebc11b6bb7863714eaaff8e93d681bb851fb4f9e792b102541211847f0e546f4e9546df6c3de + checksum: 10/7f9c6e02131a833d68df92e6338f86e2880c7404116c5104c7eaa1cb8517ed559f2de591306b6d67e0af39f4f4fef9894b69b3fd624dce35822fb7d4b752776b languageName: node linkType: hard @@ -13476,13 +14420,13 @@ __metadata: languageName: node linkType: hard -"react-native-monorepo-config@npm:^0.3.3": - version: 0.3.3 - resolution: "react-native-monorepo-config@npm:0.3.3" +"react-native-monorepo-config@npm:^0.1.8": + version: 0.1.10 + resolution: "react-native-monorepo-config@npm:0.1.10" dependencies: escape-string-regexp: "npm:^5.0.0" fast-glob: "npm:^3.3.3" - checksum: 10/d301020b38f80010bce38108a9e1b72deee3eb37f1ba5e2f0471dc0737584b8d25158a2e649c38ddbe890b653c29a69ef82d73c522473cfdb2396239ee84fcd8 + checksum: 10/36611eca9cbda6647111e659d5c466fdba002c608172b9d25880b6e3ac95c51f41d15520e06d9d3188c096b0c9182caeba7b9340c64f6b45f1fee331c08b877b languageName: node linkType: hard @@ -13892,10 +14836,19 @@ __metadata: languageName: node linkType: hard +"resolve-global@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-global@npm:1.0.0" + dependencies: + global-dirs: "npm:^0.1.1" + checksum: 10/c4e11d33e84bde7516b824503ffbe4b6cce863d5ce485680fd3db997b7c64da1df98321b1fd0703b58be8bc9bc83bc96bd83043f96194386b45eb47229efb6b6 + languageName: node + linkType: hard + "resolve-workspace-root@npm:^2.0.0": - version: 2.0.1 - resolution: "resolve-workspace-root@npm:2.0.1" - checksum: 10/d10b1897018c291a8c0c6d6a36d174830bc004b7aa2a9e416b9c1e0ea4d8575a68bc4ed9d6f28be5859a3b0d5f70f0ffdc12e6ef0af010f487d91cf7d4ce8ff0 + version: 2.0.0 + resolution: "resolve-workspace-root@npm:2.0.0" + checksum: 10/c2de02d213ca327964bd2a1e6cbb17d96d2adbd738b6aa737129ed952ef4f7e52b79452599e1ef99c6cf4f109c937866b7f3abf34f8f41af376e1b08a03523a4 languageName: node linkType: hard @@ -13906,7 +14859,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.22.11, resolve@npm:^1.22.2": +"resolve@npm:^1.22.10, resolve@npm:^1.22.2": version: 1.22.11 resolution: "resolve@npm:1.22.11" dependencies: @@ -13920,18 +14873,15 @@ __metadata: linkType: hard "resolve@npm:^2.0.0-next.5": - version: 2.0.0-next.6 - resolution: "resolve@npm:2.0.0-next.6" + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" dependencies: - es-errors: "npm:^1.3.0" - is-core-module: "npm:^2.16.1" - node-exports-info: "npm:^1.6.0" - object-keys: "npm:^1.1.1" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/c95cb98b8d3f9e2a979e6eb8b7e0b0e13f08da62607a45207275f151d640152244568a9a9cd01662a21e3746792177cbf9be1dacb88f7355edf4db49d9ee27e5 + checksum: 10/2d6fd28699f901744368e6f2032b4268b4c7b9185fd8beb64f68c93ac6b22e52ae13560ceefc96241a665b985edf9ffd393ae26d2946a7d3a07b7007b7d51e79 languageName: node linkType: hard @@ -13944,7 +14894,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.22.11#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin": +"resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin": version: 1.22.11 resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" dependencies: @@ -13958,18 +14908,15 @@ __metadata: linkType: hard "resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": - version: 2.0.0-next.6 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d" + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" dependencies: - es-errors: "npm:^1.3.0" - is-core-module: "npm:^2.16.1" - node-exports-info: "npm:^1.6.0" - object-keys: "npm:^1.1.1" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/1b26738af76c80b341075e6bf4b202ef85f85f4a2cbf2934246c3b5f20c682cf352833fc6e32579c6967419226d3ab63e8d321328da052c87a31eaad91e3571a + checksum: 10/05fa778de9d0347c8b889eb7a18f1f06bf0f801b0eb4610b4871a4b2f22e220900cf0ad525e94f990bb8d8921c07754ab2122c0c225ab4cdcea98f36e64fa4c2 languageName: node linkType: hard @@ -14002,10 +14949,10 @@ __metadata: languageName: node linkType: hard -"retry@npm:^0.13.1": - version: 0.13.1 - resolution: "retry@npm:0.13.1" - checksum: 10/6125ec2e06d6e47e9201539c887defba4e47f63471db304c59e4b82fc63c8e89ca06a77e9d34939a9a42a76f00774b2f46c0d4a4cbb3e287268bd018ed69426d +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10/1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 languageName: node linkType: hard @@ -14077,7 +15024,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 @@ -14085,9 +15032,9 @@ __metadata: linkType: hard "sax@npm:>=0.6.0": - version: 1.4.4 - resolution: "sax@npm:1.4.4" - checksum: 10/00ff7b258baa37d98f8abfa0b5c8b3ee739ca37e9b6ecb83405be9e6e5b0b2856394a5eff142db1d987d589b54b139d4236f25830c1e17a2b640efa53c8fda72 + version: 1.4.3 + resolution: "sax@npm:1.4.3" + checksum: 10/99161215f23e0b13bc7f94adbaa63a6a2f188fe291c450790d92b5bc3cd7966d574a15dcd5918c30917e17ed68129e34cc3168564263b967f9b8f61869d6ccc4 languageName: node linkType: hard @@ -14114,7 +15061,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.7.3": +"semver@npm:7.7.3, semver@npm:^7.1.3, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1": version: 7.7.3 resolution: "semver@npm:7.7.3" bin: @@ -14132,7 +15079,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.3, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3": +"semver@npm:^7.7.2, semver@npm:^7.7.3": version: 7.7.4 resolution: "semver@npm:7.7.4" bin: @@ -14150,9 +15097,30 @@ __metadata: languageName: node linkType: hard -"send@npm:^0.19.0, send@npm:~0.19.1": - version: 0.19.2 - resolution: "send@npm:0.19.2" +"send@npm:0.19.0": + version: 0.19.0 + resolution: "send@npm:0.19.0" + dependencies: + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + mime: "npm:1.6.0" + ms: "npm:2.1.3" + on-finished: "npm:2.4.1" + range-parser: "npm:~1.2.1" + statuses: "npm:2.0.1" + checksum: 10/1f6064dea0ae4cbe4878437aedc9270c33f2a6650a77b56a16b62d057527f2766d96ee282997dd53ec0339082f2aad935bc7d989b46b48c82fc610800dc3a1d0 + languageName: node + linkType: hard + +"send@npm:^0.19.0": + version: 0.19.1 + resolution: "send@npm:0.19.1" dependencies: debug: "npm:2.6.9" depd: "npm:2.0.0" @@ -14160,14 +15128,14 @@ __metadata: encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" etag: "npm:~1.8.1" - fresh: "npm:~0.5.2" - http-errors: "npm:~2.0.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" mime: "npm:1.6.0" ms: "npm:2.1.3" - on-finished: "npm:~2.4.1" + on-finished: "npm:2.4.1" range-parser: "npm:~1.2.1" - statuses: "npm:~2.0.2" - checksum: 10/e932a592f62c58560b608a402d52333a8ae98a5ada076feb5db1d03adaa77c3ca32a7befa1c4fd6dedc186e88f342725b0cb4b3d86835eaf834688b259bef18d + statuses: "npm:2.0.1" + checksum: 10/360bf50a839c7bbc181f67c3a0f3424a7ad8016dfebcd9eb90891f4b762b4377da14414c32250d67b53872e884171c27469110626f6c22765caa7c38c207ee1d languageName: node linkType: hard @@ -14179,14 +15147,14 @@ __metadata: linkType: hard "serve-static@npm:^1.13.1, serve-static@npm:^1.16.2": - version: 1.16.3 - resolution: "serve-static@npm:1.16.3" + version: 1.16.2 + resolution: "serve-static@npm:1.16.2" dependencies: encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" parseurl: "npm:~1.3.3" - send: "npm:~0.19.1" - checksum: 10/149d6718dd9e53166784d0a65535e21a7c01249d9c51f57224b786a7306354c6807e7811a9f6c143b45c863b1524721fca2f52b5c81a8b5194e3dde034a03b9c + send: "npm:0.19.0" + checksum: 10/7fa9d9c68090f6289976b34fc13c50ac8cd7f16ae6bce08d16459300f7fc61fbc2d7ebfa02884c073ec9d6ab9e7e704c89561882bbe338e99fcacb2912fde737 languageName: node linkType: hard @@ -14241,7 +15209,7 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:~1.2.0": +"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: 10/fde1630422502fbbc19e6844346778f99d449986b2f9cdcceb8326730d2f3d9964dbcb03c02aaadaefffecd0f2c063315ebea8b3ad895914bf1afc1747fc172e @@ -14519,11 +15487,11 @@ __metadata: linkType: hard "ssri@npm:^13.0.0": - version: 13.0.1 - resolution: "ssri@npm:13.0.1" + version: 13.0.0 + resolution: "ssri@npm:13.0.0" dependencies: minipass: "npm:^7.0.3" - checksum: 10/ae560d0378d074006a71b06af71bfbe84a3fe1ac6e16c1f07575f69e670d40170507fe52b21bcc23399429bc6a15f4bc3ea8d9bc88e9dfd7e87de564e6da6a72 + checksum: 10/fd59bfedf0659c1b83f6e15459162da021f08ec0f5834dd9163296f8b77ee82f9656aa1d415c3d3848484293e0e6aefdd482e863e52ddb53d520bb73da1eeec1 languageName: node linkType: hard @@ -14552,6 +15520,13 @@ __metadata: languageName: node linkType: hard +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 10/18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb + languageName: node + linkType: hard + "statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" @@ -14590,13 +15565,6 @@ __metadata: languageName: node linkType: hard -"strict-url-sanitise@npm:0.0.1": - version: 0.0.1 - resolution: "strict-url-sanitise@npm:0.0.1" - checksum: 10/cab6ae551f998f18ea7fb14176a9d835f5b304e5419c61851de897c830ccc20c2848bbb50ced242227114e06a3f6379dcc9179a84bc0a7b8cf81f5192b5b4789 - languageName: node - linkType: hard - "string-length@npm:^4.0.2": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -14769,10 +15737,10 @@ __metadata: languageName: node linkType: hard -"strnum@npm:^2.1.2": - version: 2.1.2 - resolution: "strnum@npm:2.1.2" - checksum: 10/7d894dff385e3a5c5b29c012cf0a7ea7962a92c6a299383c3d6db945ad2b6f3e770511356a9774dbd54444c56af1dc7c435dad6466c47293c48173274dd6c631 +"strnum@npm:^1.1.1": + version: 1.1.2 + resolution: "strnum@npm:1.1.2" + checksum: 10/ccd6297a1fdaf0fc8ea0ea904acdae76878d49a4b0d98a70155df4bc081fd88eac5ec99fb150f3d1d1af065c1898d38420705259ba6c39aa850c671bcd54e35d languageName: node linkType: hard @@ -14869,7 +15837,16 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.11.12, synckit@npm:^0.11.4, synckit@npm:^0.11.8": +"synckit@npm:^0.11.4, synckit@npm:^0.11.7": + version: 0.11.11 + resolution: "synckit@npm:0.11.11" + dependencies: + "@pkgr/core": "npm:^0.2.9" + checksum: 10/6ecd88212b5be80004376b6ea74babcba284566ff59a50d8803afcaa78c165b5d268635c1dd84532ee3f690a979409e1eda225a8a35bed2d135ffdcea06ce7b0 + languageName: node + linkType: hard + +"synckit@npm:^0.11.8": version: 0.11.12 resolution: "synckit@npm:0.11.12" dependencies: @@ -14878,16 +15855,23 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.5.2, tar@npm:^7.5.4": - version: 7.5.9 - resolution: "tar@npm:7.5.9" +"tar@npm:^7.5.2": + version: 7.5.2 + resolution: "tar@npm:7.5.2" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10/1213cdde9c22d6acf8809ba5d2a025212ce3517bc99c4a4c6981b7dc0489bf3b164db9c826c9517680889194c9ba57448c8ff0da35eca9a60bb7689bf0b3897d + checksum: 10/dbad9c9a07863cd1bdf8801d563b3280aa7dd0f4a6cead779ff7516d148dc80b4c04639ba732d47f91f04002f57e8c3c6573a717d649daecaac74ce71daa7ad3 + languageName: node + linkType: hard + +"temp-dir@npm:~2.0.0": + version: 2.0.0 + resolution: "temp-dir@npm:2.0.0" + checksum: 10/cc4f0404bf8d6ae1a166e0e64f3f409b423f4d1274d8c02814a59a5529f07db6cd070a749664141b992b2c1af337fa9bb451a460a43bb9bcddc49f235d3115aa languageName: node linkType: hard @@ -14902,8 +15886,8 @@ __metadata: linkType: hard "terser@npm:^5.15.0": - version: 5.46.0 - resolution: "terser@npm:5.46.0" + version: 5.44.1 + resolution: "terser@npm:5.44.1" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.15.0" @@ -14911,7 +15895,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/331e4f5a165d91d16ac6a95b510d4f5ef24679e4bc9e1b4e4182e89b7245f614d24ce0def583e2ca3ca45f82ba810991e0c5b66dd4353a6e0b7082786af6bd35 + checksum: 10/516ece205b7db778c4eddb287a556423cb776b7ca591b06270e558a76aa2d57c8d71d9c3c4410b276d3426beb03516fff7d96ff8b517e10730a72908810c6e33 languageName: node linkType: hard @@ -15011,7 +15995,7 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:~1.0.1": +"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 10/952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 @@ -15096,14 +16080,13 @@ __metadata: languageName: node linkType: hard -"type-is@npm:^2.0.1": - version: 2.0.1 - resolution: "type-is@npm:2.0.1" +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" dependencies: - content-type: "npm:^1.0.5" - media-typer: "npm:^1.1.0" - mime-types: "npm:^3.0.0" - checksum: 10/bacdb23c872dacb7bd40fbd9095e6b2fca2895eedbb689160c05534d7d4810a7f4b3fd1ae87e96133c505958f6d602967a68db5ff577b85dd6be76eaa75d58af + media-typer: "npm:0.3.0" + mime-types: "npm:~2.1.24" + checksum: 10/0bd9eeae5efd27d98fd63519f999908c009e148039d8e7179a074f105362d4fcc214c38b24f6cda79c87e563cbd12083a4691381ed28559220d4a10c2047bed4 languageName: node linkType: hard @@ -15206,17 +16189,17 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~7.18.0": - version: 7.18.2 - resolution: "undici-types@npm:7.18.2" - checksum: 10/e61a5918f624d68420c3ca9d301e9f15b61cba6e97be39fe2ce266dd6151e4afe424d679372638826cb506be33952774e0424141200111a9857e464216c009af +"undici-types@npm:~7.16.0": + version: 7.16.0 + resolution: "undici-types@npm:7.16.0" + checksum: 10/db43439f69c2d94cc29f75cbfe9de86df87061d6b0c577ebe9bb3255f49b22c50162a7d7eb413b0458b6510b8ca299ac7cff38c3a29fbd31af9f504bcf7fbc0d languageName: node linkType: hard "undici@npm:^6.18.2": - version: 6.23.0 - resolution: "undici@npm:6.23.0" - checksum: 10/56950995e7b628e62c996430445d17995ca9b70f6f2afe760a63da54205660d968bd08f0741b6f4fb008f40aa35c69cce979cd96ced399585d8c897a76a4f1d1 + version: 6.22.0 + resolution: "undici@npm:6.22.0" + checksum: 10/2398de2b460e05f80f994d8a64fcb603aac8f253f8e7ff737067531c1101e1d74644fe5205894b0f7356ea69602d10d6d98c554fcd8b383ec3cc07a3268ec293 languageName: node linkType: hard @@ -15269,6 +16252,15 @@ __metadata: languageName: node linkType: hard +"unique-string@npm:~2.0.0": + version: 2.0.0 + resolution: "unique-string@npm:2.0.0" + dependencies: + crypto-random-string: "npm:^2.0.0" + checksum: 10/107cae65b0b618296c2c663b8e52e4d1df129e9af04ab38d53b4f2189e96da93f599c85f4589b7ffaf1a11c9327cbb8a34f04c71b8d4950d3e385c2da2a93828 + languageName: node + linkType: hard + "unist-util-stringify-position@npm:^2.0.0": version: 2.0.3 resolution: "unist-util-stringify-position@npm:2.0.3" @@ -15376,8 +16368,8 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.2.0": - version: 1.2.3 - resolution: "update-browserslist-db@npm:1.2.3" + version: 1.2.2 + resolution: "update-browserslist-db@npm:1.2.2" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -15385,7 +16377,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/059f774300efb4b084a49293143c511f3ae946d40397b5c30914e900cd5691a12b8e61b41dd54ed73d3b56c8204165a0333107dd784ccf8f8c81790bcc423175 + checksum: 10/ae2102d3c83fca35e9deb012d82bfde6f734998ced937e34a3bf239a4b67577108fdd144283aafc0e5e3cf38ca1aecd7714906ba6f562896c762d2f2fa391026 languageName: node linkType: hard @@ -15632,8 +16624,8 @@ __metadata: linkType: hard "which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": - version: 1.1.20 - resolution: "which-typed-array@npm:1.1.20" + version: 1.1.19 + resolution: "which-typed-array@npm:1.1.19" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" @@ -15642,7 +16634,7 @@ __metadata: get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-tostringtag: "npm:^1.0.2" - checksum: 10/e56da3fc995d330ff012f682476f7883c16b12d36c6717c87c7ca23eb5a5ef957fa89115dacb389b11a9b4e99d5dbe2d12689b4d5d08c050b5aed0eae385b840 + checksum: 10/12be30fb88567f9863186bee1777f11bea09dd59ed8b3ce4afa7dd5cade75e2f4cc56191a2da165113cc7cf79987ba021dac1e22b5b62aa7e5c56949f2469a68 languageName: node linkType: hard @@ -15658,13 +16650,13 @@ __metadata: linkType: hard "which@npm:^6.0.0": - version: 6.0.1 - resolution: "which@npm:6.0.1" + version: 6.0.0 + resolution: "which@npm:6.0.0" dependencies: - isexe: "npm:^4.0.0" + isexe: "npm:^3.1.1" bin: node-which: bin/which.js - checksum: 10/dbea77c7d3058bf6c78bf9659d2dce4d2b57d39a15b826b2af6ac2e5a219b99dc8a831b79fdbc453c0598adb4f3f84cf9c2491fd52beb9f5d2dececcad117f68 + checksum: 10/df19b2cd8aac94b333fa29b42e8e371a21e634a742a3b156716f7752a5afe1d73fb5d8bce9b89326f453d96879e8fe626eb421e0117eb1a3ce9fd8c97f6b7db9 languageName: node linkType: hard @@ -15767,8 +16759,8 @@ __metadata: linkType: hard "ws@npm:^8.12.1": - version: 8.19.0 - resolution: "ws@npm:8.19.0" + version: 8.18.3 + resolution: "ws@npm:8.18.3" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -15777,7 +16769,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/26e4901e93abaf73af9f26a93707c95b4845e91a7a347ec8c569e6e9be7f9df066f6c2b817b2d685544e208207898a750b78461e6e8d810c11a370771450c31b + checksum: 10/725964438d752f0ab0de582cd48d6eeada58d1511c3f613485b5598a83680bedac6187c765b0fe082e2d8cc4341fc57707c813ae780feee82d0c5efe6a4c61b6 languageName: node linkType: hard From 9145370ef486243514500d13ae6259a6ce8889d3 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Mon, 16 Feb 2026 11:22:16 +0100 Subject: [PATCH 05/26] feat: remove unused bindJSIMethods --- .../src/modules/BaseModule.ts | 16 ---------------- .../computer_vision/ObjectDetectionModule.ts | 1 - 2 files changed, 17 deletions(-) diff --git a/packages/react-native-executorch/src/modules/BaseModule.ts b/packages/react-native-executorch/src/modules/BaseModule.ts index 315b82249..0870a30b6 100644 --- a/packages/react-native-executorch/src/modules/BaseModule.ts +++ b/packages/react-native-executorch/src/modules/BaseModule.ts @@ -102,20 +102,4 @@ export abstract class BaseModule { this.nativeModule.unload(); } } - - /** - * Bind JSI methods to this instance for worklet compatibility. - * - * This makes native JSI functions accessible from worklet threads, - * which is essential for VisionCamera frame processing. - * - * @internal - */ - protected bindJSIMethods() { - if (this.nativeModule && this.nativeModule.generateFromFrame) { - // Bind the native JSI method directly to this instance - // This makes it worklet-compatible since JSI functions work across threads - this.generateFromFrame = this.nativeModule.generateFromFrame; - } - } } diff --git a/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts b/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts index 95b9e436b..78dfed4f6 100644 --- a/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts +++ b/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts @@ -28,7 +28,6 @@ export class ObjectDetectionModule extends BaseModule { onDownloadProgressCallback, model.modelSource ); - if (!paths?.[0]) { throw new RnExecutorchError( RnExecutorchErrorCode.DownloadInterrupted, From e9c166c50e76e838a2010e02518f90b131873986 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Tue, 17 Feb 2026 13:05:14 +0100 Subject: [PATCH 06/26] feat: initial version of vision model API --- .cspell-wordlist.txt | 1 + .../app/object_detection/index.tsx | 167 +++++++++++++++++- .../rnexecutorch/RnExecutorchInstaller.h | 12 +- .../host_objects/ModelHostObject.h | 21 ++- .../metaprogramming/TypeConcepts.h | 9 +- .../rnexecutorch/models/VisionModel.cpp | 47 ++++- .../common/rnexecutorch/models/VisionModel.h | 42 ++++- .../models/embeddings/image/ImageEmbeddings.h | 2 +- .../models/object_detection/ObjectDetection.h | 18 +- .../BaseSemanticSegmentation.h | 2 +- .../models/style_transfer/StyleTransfer.h | 2 +- .../tests/integration/ObjectDetectionTest.cpp | 25 +-- .../computer_vision/useObjectDetection.ts | 7 +- .../src/hooks/useModule.ts | 38 ++++ .../computer_vision/ObjectDetectionModule.ts | 24 +-- .../modules/computer_vision/VisionModule.ts | 154 ++++++++++++++++ .../src/types/objectDetection.ts | 73 +++++++- 17 files changed, 575 insertions(+), 69 deletions(-) create mode 100644 packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts diff --git a/.cspell-wordlist.txt b/.cspell-wordlist.txt index 1f30267fd..35e679504 100644 --- a/.cspell-wordlist.txt +++ b/.cspell-wordlist.txt @@ -118,3 +118,4 @@ basemodule IMAGENET lraspp LRASPP +worklet diff --git a/apps/computer-vision/app/object_detection/index.tsx b/apps/computer-vision/app/object_detection/index.tsx index 6a43dd920..9e60589fb 100644 --- a/apps/computer-vision/app/object_detection/index.tsx +++ b/apps/computer-vision/app/object_detection/index.tsx @@ -1,16 +1,66 @@ import Spinner from '../../components/Spinner'; -import { BottomBar } from '../../components/BottomBar'; import { getImage } from '../../utils'; import { Detection, useObjectDetection, SSDLITE_320_MOBILENET_V3_LARGE, } from 'react-native-executorch'; -import { View, StyleSheet, Image } from 'react-native'; +import { View, StyleSheet, Image, TouchableOpacity, Text } from 'react-native'; import ImageWithBboxes from '../../components/ImageWithBboxes'; import React, { useContext, useEffect, useState } from 'react'; import { GeneratingContext } from '../../context'; import ScreenWrapper from '../../ScreenWrapper'; +import ColorPalette from '../../colors'; +import { Images } from 'react-native-nitro-image'; + +// Helper function to convert image URI to raw pixel data using NitroImage +async function imageUriToPixelData( + uri: string, + targetWidth: number, + targetHeight: number +): Promise<{ + data: ArrayBuffer; + width: number; + height: number; + channels: number; +}> { + try { + // Load image and resize to target dimensions + const image = await Images.loadFromFileAsync(uri); + const resized = image.resize(targetWidth, targetHeight); + + // Get pixel data as ArrayBuffer (RGBA format) + const pixelData = resized.toRawPixelData(); + const buffer = + pixelData instanceof ArrayBuffer ? pixelData : pixelData.buffer; + + // Calculate actual buffer dimensions (accounts for device pixel ratio) + const bufferSize = buffer?.byteLength || 0; + const totalPixels = bufferSize / 4; // RGBA = 4 bytes per pixel + const aspectRatio = targetWidth / targetHeight; + const actualHeight = Math.sqrt(totalPixels / aspectRatio); + const actualWidth = totalPixels / actualHeight; + + console.log('Requested:', targetWidth, 'x', targetHeight); + console.log('Buffer size:', bufferSize); + console.log( + 'Actual dimensions:', + Math.round(actualWidth), + 'x', + Math.round(actualHeight) + ); + + return { + data: buffer, + width: Math.round(actualWidth), + height: Math.round(actualHeight), + channels: 4, // RGBA + }; + } catch (error) { + console.error('Error loading image with NitroImage:', error); + throw error; + } +} export default function ObjectDetectionScreen() { const [imageUri, setImageUri] = useState(''); @@ -42,10 +92,41 @@ export default function ObjectDetectionScreen() { const runForward = async () => { if (imageUri) { try { - const output = await ssdLite.forward(imageUri); + console.log('Running forward with string URI...'); + const output = await ssdLite.forward(imageUri, 0.5); + console.log('String URI result:', output.length, 'detections'); setResults(output); } catch (e) { - console.error(e); + console.error('Error in runForward:', e); + } + } + }; + + const runForwardPixels = async () => { + if (imageUri && imageDimensions) { + try { + console.log('Converting image to pixel data...'); + // Resize to 640x640 to avoid memory issues + const intermediateSize = 640; + const pixelData = await imageUriToPixelData( + imageUri, + intermediateSize, + intermediateSize + ); + + console.log('Running forward with pixel data...', { + width: pixelData.width, + height: pixelData.height, + channels: pixelData.channels, + dataSize: pixelData.data.byteLength, + }); + + // Run inference using unified forward() API + const output = await ssdLite.forward(pixelData, 0.5); + console.log('Pixel data result:', output.length, 'detections'); + setResults(output); + } catch (e) { + console.error('Error in runForwardPixels:', e); } } }; @@ -81,10 +162,41 @@ export default function ObjectDetectionScreen() { )} - + + {/* Custom bottom bar with two buttons */} + + + handleCameraPress(false)}> + 📷 Gallery + + + + + + Run (String) + + + + Run (Pixels) + + + ); } @@ -129,4 +241,43 @@ const styles = StyleSheet.create({ width: '100%', height: '100%', }, + bottomContainer: { + width: '100%', + gap: 15, + alignItems: 'center', + padding: 16, + flex: 1, + }, + bottomIconsContainer: { + flexDirection: 'row', + justifyContent: 'center', + width: '100%', + }, + iconText: { + fontSize: 16, + color: ColorPalette.primary, + }, + buttonsRow: { + flexDirection: 'row', + width: '100%', + gap: 10, + }, + button: { + height: 50, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: ColorPalette.primary, + color: '#fff', + borderRadius: 8, + }, + halfButton: { + flex: 1, + }, + buttonDisabled: { + opacity: 0.5, + }, + buttonText: { + color: '#fff', + fontSize: 16, + }, }); diff --git a/packages/react-native-executorch/common/rnexecutorch/RnExecutorchInstaller.h b/packages/react-native-executorch/common/rnexecutorch/RnExecutorchInstaller.h index d5c98763d..80b7d18b3 100644 --- a/packages/react-native-executorch/common/rnexecutorch/RnExecutorchInstaller.h +++ b/packages/react-native-executorch/common/rnexecutorch/RnExecutorchInstaller.h @@ -54,8 +54,16 @@ class RnExecutorchInstaller { meta::createConstructorArgsWithCallInvoker( args, runtime, jsCallInvoker); - auto modelImplementationPtr = std::make_shared( - std::make_from_tuple(constructorArgs)); + // This unpacks the tuple and calls the constructor directly inside + // make_shared. It avoids creating a temporary object, so no + // move/copy is required. + auto modelImplementationPtr = std::apply( + [](auto &&...unpackedArgs) { + return std::make_shared( + std::forward(unpackedArgs)...); + }, + std::move(constructorArgs)); + auto modelHostObject = std::make_shared>( modelImplementationPtr, jsCallInvoker); diff --git a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h index 7712b2b9d..9a2e6776e 100644 --- a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h +++ b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h @@ -45,10 +45,11 @@ template class ModelHostObject : public JsiHostObject { "getInputShape")); } - if constexpr (meta::HasGenerate) { - addFunctions(JSI_EXPORT_FUNCTION(ModelHostObject, - promiseHostFunction<&Model::generate>, - "generate")); + if constexpr (meta::HasGenerateFromString) { + addFunctions( + JSI_EXPORT_FUNCTION(ModelHostObject, + promiseHostFunction<&Model::generateFromString>, + "generateFromString")); } if constexpr (meta::HasEncode) { @@ -168,10 +169,22 @@ template class ModelHostObject : public JsiHostObject { addFunctions(JSI_EXPORT_FUNCTION(ModelHostObject, promiseHostFunction<&Model::stream>, "stream")); + } + + // Register generateFromFrame for all VisionModel subclasses + if constexpr (meta::DerivedFromOrSameAs) { addFunctions(JSI_EXPORT_FUNCTION( ModelHostObject, synchronousHostFunction<&Model::streamStop>, "streamStop")); } + + // Register generateFromPixels for models that support it + if constexpr (meta::HasGenerateFromPixels) { + addFunctions( + JSI_EXPORT_FUNCTION(ModelHostObject, + visionHostFunction<&Model::generateFromPixels>, + "generateFromPixels")); + } } // A generic host function that runs synchronously, works analogously to the diff --git a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h index 85a3db449..8100a471b 100644 --- a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h +++ b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h @@ -12,8 +12,13 @@ template concept SameAs = std::is_same_v; template -concept HasGenerate = requires(T t) { - { &T::generate }; +concept HasGenerateFromString = requires(T t) { + { &T::generateFromString }; +}; + +template +concept HasGenerateFromPixels = requires(T t) { + { &T::generateFromPixels }; }; template diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp index 671ed03c8..54c0adfd2 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp @@ -6,8 +6,8 @@ namespace models { using namespace facebook; -cv::Mat VisionModel::extractAndPreprocess(jsi::Runtime &runtime, - const jsi::Value &frameData) const { +cv::Mat VisionModel::extractFromFrame(jsi::Runtime &runtime, + const jsi::Value &frameData) const { // Extract frame using FrameProcessor utility auto frameObj = frameData.asObject(runtime); cv::Mat frame = utils::FrameProcessor::extractFrame(runtime, frameObj); @@ -16,5 +16,48 @@ cv::Mat VisionModel::extractAndPreprocess(jsi::Runtime &runtime, return preprocessFrame(frame); } +cv::Mat VisionModel::extractFromPixels(jsi::Runtime &runtime, + const jsi::Object &pixelData) const { + // Extract width, height, and channels + if (!pixelData.hasProperty(runtime, "width") || + !pixelData.hasProperty(runtime, "height") || + !pixelData.hasProperty(runtime, "channels") || + !pixelData.hasProperty(runtime, "data")) { + throw std::runtime_error( + "Invalid pixel data: must contain width, height, channels, and data"); + } + + int width = pixelData.getProperty(runtime, "width").asNumber(); + int height = pixelData.getProperty(runtime, "height").asNumber(); + int channels = pixelData.getProperty(runtime, "channels").asNumber(); + + // Get the ArrayBuffer + auto dataValue = pixelData.getProperty(runtime, "data"); + if (!dataValue.isObject() || + !dataValue.asObject(runtime).isArrayBuffer(runtime)) { + throw std::runtime_error( + "pixel data 'data' property must be an ArrayBuffer"); + } + + auto arrayBuffer = dataValue.asObject(runtime).getArrayBuffer(runtime); + size_t expectedSize = width * height * channels; + + if (arrayBuffer.size(runtime) != expectedSize) { + throw std::runtime_error( + "ArrayBuffer size does not match width * height * channels"); + } + + // Create cv::Mat and copy the data + // OpenCV uses BGR/BGRA format internally, but we'll create as-is and let + // preprocessFrame handle conversion + int cvType = (channels == 3) ? CV_8UC3 : CV_8UC4; + cv::Mat image(height, width, cvType); + + // Copy data from ArrayBuffer to cv::Mat + std::memcpy(image.data, arrayBuffer.data(runtime), expectedSize); + + return image; +} + } // namespace models } // namespace rnexecutorch diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h index 11da49547..9ba5cf7e4 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h @@ -121,12 +121,48 @@ class VisionModel : public BaseModel { * responsible * @note Typical usage: * @code - * cv::Mat preprocessed = extractAndPreprocess(runtime, frameData); + * cv::Mat preprocessed = extractFromFrame(runtime, frameData); * auto tensor = image_processing::getTensorFromMatrix(dims, preprocessed); * @endcode */ - cv::Mat extractAndPreprocess(jsi::Runtime &runtime, - const jsi::Value &frameData) const; + cv::Mat extractFromFrame(jsi::Runtime &runtime, + const jsi::Value &frameData) const; + + /** + * @brief Extract cv::Mat from raw pixel data (ArrayBuffer) sent from + * JavaScript + * + * This method enables users to run inference on raw pixel data without file + * I/O. Useful for processing images already in memory (e.g., from canvas, + * image library). + * + * @param runtime JSI runtime + * @param pixelData JSI object containing: + * - data: ArrayBuffer with raw pixel values + * - width: number - image width + * - height: number - image height + * - channels: number - number of channels (3 for RGB, 4 for + * RGBA) + * + * @return cv::Mat containing the pixel data + * + * @throws std::runtime_error if pixelData format is invalid + * + * @note The returned cv::Mat owns a copy of the data + * @note Expected pixel format: RGB or RGBA, row-major order + * @note Typical usage from JS: + * @code + * const pixels = new Uint8Array([...]); // Raw pixel data + * const result = model.generateFromPixels({ + * data: pixels.buffer, + * width: 640, + * height: 480, + * channels: 3 + * }, 0.5); + * @endcode + */ + cv::Mat extractFromPixels(jsi::Runtime &runtime, + const jsi::Object &pixelData) const; }; } // namespace models diff --git a/packages/react-native-executorch/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h b/packages/react-native-executorch/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h index 7e114e939..9a1d6429b 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h @@ -27,4 +27,4 @@ class ImageEmbeddings final : public BaseEmbeddings { REGISTER_CONSTRUCTOR(models::embeddings::ImageEmbeddings, std::string, std::shared_ptr); -} // namespace rnexecutorch +} // namespace rnexecutorch \ No newline at end of file diff --git a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h index bba09a6d8..fc554003b 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h @@ -8,7 +8,7 @@ #include "Types.h" #include "rnexecutorch/metaprogramming/ConstructorHelpers.h" -#include +#include #include namespace rnexecutorch { @@ -16,12 +16,24 @@ namespace models::object_detection { using executorch::extension::TensorPtr; using executorch::runtime::EValue; -class ObjectDetection : public BaseModel { +class ObjectDetection : public VisionModel { public: ObjectDetection(const std::string &modelSource, std::shared_ptr callInvoker); [[nodiscard("Registered non-void function")]] std::vector - generate(std::string imageSource, double detectionThreshold); + generateFromString(std::string imageSource, double detectionThreshold); + [[nodiscard("Registered non-void function")]] std::vector + generateFromFrame(jsi::Runtime &runtime, const jsi::Value &frameData, + double detectionThreshold); + [[nodiscard("Registered non-void function")]] std::vector + generateFromPixels(jsi::Runtime &runtime, const jsi::Value &pixelData, + double detectionThreshold); + +protected: + // Internal helper for shared preprocessing and inference logic + std::vector runInference(cv::Mat image, + double detectionThreshold); + cv::Mat preprocessFrame(const cv::Mat &frame) const override; private: std::vector postprocess(const std::vector &tensors, diff --git a/packages/react-native-executorch/common/rnexecutorch/models/semantic_segmentation/BaseSemanticSegmentation.h b/packages/react-native-executorch/common/rnexecutorch/models/semantic_segmentation/BaseSemanticSegmentation.h index 16a9ecfe7..b341183c5 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/semantic_segmentation/BaseSemanticSegmentation.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/semantic_segmentation/BaseSemanticSegmentation.h @@ -59,4 +59,4 @@ class BaseSemanticSegmentation : public BaseModel { REGISTER_CONSTRUCTOR(models::semantic_segmentation::BaseSemanticSegmentation, std::string, std::vector, std::vector, std::shared_ptr); -} // namespace rnexecutorch +} // namespace rnexecutorch \ No newline at end of file diff --git a/packages/react-native-executorch/common/rnexecutorch/models/style_transfer/StyleTransfer.h b/packages/react-native-executorch/common/rnexecutorch/models/style_transfer/StyleTransfer.h index 73744c4d8..8eed3c888 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/style_transfer/StyleTransfer.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/style_transfer/StyleTransfer.h @@ -33,4 +33,4 @@ class StyleTransfer : public BaseModel { REGISTER_CONSTRUCTOR(models::style_transfer::StyleTransfer, std::string, std::shared_ptr); -} // namespace rnexecutorch +} // namespace rnexecutorch \ No newline at end of file diff --git a/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp b/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp index ae80208a6..074ee0751 100644 --- a/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp @@ -29,7 +29,7 @@ template <> struct ModelTraits { } static void callGenerate(ModelType &model) { - (void)model.generate(kValidTestImagePath, 0.5); + (void)model.generateFromString(kValidTestImagePath, 0.5); } }; } // namespace model_tests @@ -43,49 +43,50 @@ INSTANTIATE_TYPED_TEST_SUITE_P(ObjectDetection, CommonModelTest, // ============================================================================ TEST(ObjectDetectionGenerateTests, InvalidImagePathThrows) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - EXPECT_THROW((void)model.generate("nonexistent_image.jpg", 0.5), + EXPECT_THROW((void)model.generateFromString("nonexistent_image.jpg", 0.5), RnExecutorchError); } TEST(ObjectDetectionGenerateTests, EmptyImagePathThrows) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - EXPECT_THROW((void)model.generate("", 0.5), RnExecutorchError); + EXPECT_THROW((void)model.generateFromString("", 0.5), RnExecutorchError); } TEST(ObjectDetectionGenerateTests, MalformedURIThrows) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - EXPECT_THROW((void)model.generate("not_a_valid_uri://bad", 0.5), + EXPECT_THROW((void)model.generateFromString("not_a_valid_uri://bad", 0.5), RnExecutorchError); } TEST(ObjectDetectionGenerateTests, NegativeThresholdThrows) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - EXPECT_THROW((void)model.generate(kValidTestImagePath, -0.1), + EXPECT_THROW((void)model.generateFromString(kValidTestImagePath, -0.1), RnExecutorchError); } TEST(ObjectDetectionGenerateTests, ThresholdAboveOneThrows) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - EXPECT_THROW((void)model.generate(kValidTestImagePath, 1.1), + EXPECT_THROW((void)model.generateFromString(kValidTestImagePath, 1.1), RnExecutorchError); } TEST(ObjectDetectionGenerateTests, ValidImageReturnsResults) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - auto results = model.generate(kValidTestImagePath, 0.3); + auto results = model.generateFromString(kValidTestImagePath, 0.3); EXPECT_GE(results.size(), 0u); } TEST(ObjectDetectionGenerateTests, HighThresholdReturnsFewerResults) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - auto lowThresholdResults = model.generate(kValidTestImagePath, 0.1); - auto highThresholdResults = model.generate(kValidTestImagePath, 0.9); + auto lowThresholdResults = model.generateFromString(kValidTestImagePath, 0.1); + auto highThresholdResults = + model.generateFromString(kValidTestImagePath, 0.9); EXPECT_GE(lowThresholdResults.size(), highThresholdResults.size()); } TEST(ObjectDetectionGenerateTests, DetectionsHaveValidBoundingBoxes) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - auto results = model.generate(kValidTestImagePath, 0.3); + auto results = model.generateFromString(kValidTestImagePath, 0.3); for (const auto &detection : results) { EXPECT_LE(detection.x1, detection.x2); @@ -97,7 +98,7 @@ TEST(ObjectDetectionGenerateTests, DetectionsHaveValidBoundingBoxes) { TEST(ObjectDetectionGenerateTests, DetectionsHaveValidScores) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - auto results = model.generate(kValidTestImagePath, 0.3); + auto results = model.generateFromString(kValidTestImagePath, 0.3); for (const auto &detection : results) { EXPECT_GE(detection.score, 0.0f); @@ -107,7 +108,7 @@ TEST(ObjectDetectionGenerateTests, DetectionsHaveValidScores) { TEST(ObjectDetectionGenerateTests, DetectionsHaveValidLabels) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - auto results = model.generate(kValidTestImagePath, 0.3); + auto results = model.generateFromString(kValidTestImagePath, 0.3); for (const auto &detection : results) { EXPECT_GE(detection.label, 0); diff --git a/packages/react-native-executorch/src/hooks/computer_vision/useObjectDetection.ts b/packages/react-native-executorch/src/hooks/computer_vision/useObjectDetection.ts index 2d52eb706..845f1aa23 100644 --- a/packages/react-native-executorch/src/hooks/computer_vision/useObjectDetection.ts +++ b/packages/react-native-executorch/src/hooks/computer_vision/useObjectDetection.ts @@ -15,9 +15,10 @@ import { export const useObjectDetection = ({ model, preventLoad = false, -}: ObjectDetectionProps): ObjectDetectionType => - useModule({ +}: ObjectDetectionProps): ObjectDetectionType => { + return useModule({ module: ObjectDetectionModule, model, preventLoad: preventLoad, - }); + }) as ObjectDetectionType; +}; diff --git a/packages/react-native-executorch/src/hooks/useModule.ts b/packages/react-native-executorch/src/hooks/useModule.ts index 1a35885d5..624094afb 100644 --- a/packages/react-native-executorch/src/hooks/useModule.ts +++ b/packages/react-native-executorch/src/hooks/useModule.ts @@ -6,6 +6,7 @@ interface Module { load: (...args: any[]) => Promise; forward: (...args: any[]) => Promise; delete: () => void; + nativeModule?: any; // JSI host object with native methods } interface ModuleConstructor { @@ -31,6 +32,7 @@ export const useModule = < const [isGenerating, setIsGenerating] = useState(false); const [downloadProgress, setDownloadProgress] = useState(0); const [moduleInstance] = useState(() => new module()); + const [runOnFrame, setRunOnFrame] = useState(null); useEffect(() => { if (preventLoad) return; @@ -46,6 +48,15 @@ export const useModule = < if (isMounted) setDownloadProgress(progress); }); if (isMounted) setIsReady(true); + + // Extract runOnFrame worklet from VisionModule if available + // Use "state trick" to make the worklet serializable for VisionCamera + if ('runOnFrame' in moduleInstance) { + const worklet = moduleInstance.runOnFrame; + if (worklet) { + setRunOnFrame(() => worklet); + } + } } catch (err) { if (isMounted) setError(parseUnknownError(err)); } @@ -99,5 +110,32 @@ export const useModule = < */ downloadProgress, forward, + + /** + * Synchronous worklet function for real-time VisionCamera frame processing. + * Automatically handles native buffer extraction and cleanup. + * + * Only available for Computer Vision modules that support real-time frame processing + * (e.g., ObjectDetection, Classification, ImageSegmentation). + * Returns `null` if the module doesn't implement frame processing. + * + * **Use this for VisionCamera frame processing in worklets.** + * For async processing, use `forward()` instead. + * + * @example + * ```typescript + * const { runOnFrame } = useObjectDetection({ model: MODEL }); + * + * const frameOutput = useFrameOutput({ + * onFrame(frame) { + * 'worklet'; + * if (!runOnFrame) return; + * const detections = runOnFrame(frame, 0.5); + * frame.dispose(); + * } + * }); + * ``` + */ + runOnFrame, }; }; diff --git a/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts b/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts index 78dfed4f6..0818d9682 100644 --- a/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts +++ b/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts @@ -3,15 +3,15 @@ import { ResourceSource } from '../../types/common'; import { Detection } from '../../types/objectDetection'; import { RnExecutorchErrorCode } from '../../errors/ErrorCodes'; import { parseUnknownError, RnExecutorchError } from '../../errors/errorUtils'; -import { BaseModule } from '../BaseModule'; import { Logger } from '../../common/Logger'; +import { VisionModule } from './VisionModule'; /** * Module for object detection tasks. * * @category Typescript API */ -export class ObjectDetectionModule extends BaseModule { +export class ObjectDetectionModule extends VisionModule { /** * Loads the model, where `modelSource` is a string that specifies the location of the model binary. * To track the download progress, supply a callback function `onDownloadProgressCallback`. @@ -41,24 +41,4 @@ export class ObjectDetectionModule extends BaseModule { throw parseUnknownError(error); } } - - /** - * Executes the model's forward pass, where `imageSource` can be a fetchable resource or a Base64-encoded string. - * `detectionThreshold` can be supplied to alter the sensitivity of the detection. - * - * @param imageSource - The image source to be processed. - * @param detectionThreshold - The threshold for detection sensitivity. Default is 0.7. - * @returns An array of Detection objects representing detected items in the image. - */ - async forward( - imageSource: string, - detectionThreshold: number = 0.7 - ): Promise { - if (this.nativeModule == null) - throw new RnExecutorchError( - RnExecutorchErrorCode.ModuleNotLoaded, - 'The model is currently not loaded. Please load the model before calling forward().' - ); - return await this.nativeModule.generate(imageSource, detectionThreshold); - } } diff --git a/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts new file mode 100644 index 000000000..06acf6654 --- /dev/null +++ b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts @@ -0,0 +1,154 @@ +import { BaseModule } from '../BaseModule'; +import { RnExecutorchErrorCode } from '../../errors/ErrorCodes'; +import { RnExecutorchError } from '../../errors/errorUtils'; + +/** + * Raw pixel data for vision model inference. + */ +export type PixelData = { + data: ArrayBuffer; + width: number; + height: number; + channels: number; +}; + +/** + * VisionCamera Frame object for real-time processing. + */ +export type Frame = { + getNativeBuffer(): { pointer: number; release(): void }; + width: number; + height: number; +}; + +/** + * Base class for computer vision models that support multiple input types. + * + * VisionModule extends BaseModule with: + * - Unified `forward()` API accepting string paths or raw pixel data + * - `runOnFrame` getter for real-time VisionCamera frame processing + * - Shared frame processor creation logic + * + * Subclasses should only implement model-specific loading logic. + * + * @category Typescript API + */ +export abstract class VisionModule extends BaseModule { + /** + * Synchronous worklet function for real-time VisionCamera frame processing. + * + * Only available after the model is loaded. Returns null if not loaded. + * + * **Use this for VisionCamera frame processing in worklets.** + * For async processing, use `forward()` instead. + * + * @example + * ```typescript + * const model = new ClassificationModule(); + * await model.load({ modelSource: MODEL }); + * + * const frameOutput = useFrameOutput({ + * onFrame(frame) { + * 'worklet'; + * if (!model.runOnFrame) return; + * const result = model.runOnFrame(frame); + * frame.dispose(); + * } + * }); + * ``` + */ + get runOnFrame(): ((frame: Frame, ...args: any[]) => TOutput) | null { + if (!this.nativeModule?.generateFromFrame) { + return null; + } + + // Extract pure JSI function reference (runs on JS thread) + const nativeGenerateFromFrame = this.nativeModule.generateFromFrame; + + // Return worklet that captures ONLY the JSI function + return (frame: any, ...args: any[]): TOutput => { + 'worklet'; + + let nativeBuffer: any = null; + try { + nativeBuffer = frame.getNativeBuffer(); + const frameData = { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }; + return nativeGenerateFromFrame(frameData, ...args); + } finally { + if (nativeBuffer?.release) { + nativeBuffer.release(); + } + } + }; + } + + /** + * Executes the model's forward pass with automatic input type detection. + * + * Supports two input types: + * 1. **String path/URI**: File path, URL, or Base64-encoded string + * 2. **PixelData**: Raw pixel data from image libraries (e.g., NitroImage) + * + * **Note**: For VisionCamera frame processing, use `forwardSync` instead. + * This method is async and cannot be called in worklet context. + * + * @param input - Image source (string path or PixelData object) + * @param args - Additional model-specific arguments + * @returns A Promise that resolves to the model output. + * + * @example + * ```typescript + * // String path (async) + * const result1 = await model.forward('file:///path/to/image.jpg'); + * + * // Pixel data (async) + * const result2 = await model.forward({ + * data: pixelBuffer, + * width: 640, + * height: 480, + * channels: 3 + * }); + * + * // For VisionCamera frames, use runOnFrame in worklet: + * const frameOutput = useFrameOutput({ + * onFrame(frame) { + * 'worklet'; + * if (!model.runOnFrame) return; + * const result = model.runOnFrame(frame); + * } + * }); + * ``` + */ + async forward(input: string | PixelData, ...args: any[]): Promise { + if (this.nativeModule == null) + throw new RnExecutorchError( + RnExecutorchErrorCode.ModuleNotLoaded, + 'The model is currently not loaded. Please load the model before calling forward().' + ); + + // Type detection and routing + if (typeof input === 'string') { + // String path → generateFromString() + return await this.nativeModule.generateFromString(input, ...args); + } else if ( + typeof input === 'object' && + 'data' in input && + input.data instanceof ArrayBuffer && + typeof input.width === 'number' && + typeof input.height === 'number' && + typeof input.channels === 'number' + ) { + // Pixel data → generateFromPixels() + return await this.nativeModule.generateFromPixels(input, ...args); + } else { + throw new RnExecutorchError( + RnExecutorchErrorCode.InvalidArgument, + 'Invalid input: expected string path or PixelData object. For VisionCamera frames, use runOnFrame instead.' + ); + } + } +} diff --git a/packages/react-native-executorch/src/types/objectDetection.ts b/packages/react-native-executorch/src/types/objectDetection.ts index 94f7cf5c0..2dddaad64 100644 --- a/packages/react-native-executorch/src/types/objectDetection.ts +++ b/packages/react-native-executorch/src/types/objectDetection.ts @@ -170,14 +170,77 @@ export interface ObjectDetectionType { downloadProgress: number; /** - * Executes the model's forward pass to detect objects within the provided image. - * @param imageSource - A string representing the image source (e.g., a file path, URI, or base64 string) to be processed. - * @param detectionThreshold - An optional number between 0 and 1 representing the minimum confidence score required for an object to be included in the results. Default is 0.7. - * @returns A Promise that resolves to an array of `Detection` objects, where each object typically contains bounding box coordinates, a class label, and a confidence score. + * Executes the model's forward pass with automatic input type detection. + * + * Supports two input types: + * 1. **String path/URI**: File path, URL, or Base64-encoded string + * 2. **PixelData**: Raw pixel data from image libraries (e.g., NitroImage) + * + * **Note**: For VisionCamera frame processing, use `processFrame` instead. + * + * @param input - Image source (string or PixelData object) + * @param detectionThreshold - An optional number between 0 and 1 representing the minimum confidence score. Default is 0.7. + * @returns A Promise that resolves to an array of `Detection` objects. * @throws {RnExecutorchError} If the model is not loaded or is currently processing another image. + * + * @example + * ```typescript + * // String path + * const detections1 = await model.forward('file:///path/to/image.jpg'); + * + * // Pixel data + * const detections2 = await model.forward({ + * data: pixelBuffer, + * width: 640, + * height: 480, + * channels: 3 + * }); + * ``` */ forward: ( - imageSource: string, + input: + | string + | { + data: ArrayBuffer; + width: number; + height: number; + channels: number; + }, detectionThreshold?: number ) => Promise; + + /** + * Synchronous worklet function for real-time VisionCamera frame processing. + * Automatically handles native buffer extraction and cleanup. + * + * **Use this for VisionCamera frame processing in worklets.** + * For async processing, use `forward()` instead. + * + * Available after model is loaded (`isReady: true`). + * + * @example + * ```typescript + * const { runOnFrame, isReady } = useObjectDetection({ model: MODEL }); + * + * const frameOutput = useFrameOutput({ + * onFrame(frame) { + * 'worklet'; + * if (!runOnFrame) return; + * const detections = runOnFrame(frame, 0.5); + * frame.dispose(); + * } + * }); + * ``` + * + * @param frame - VisionCamera Frame object + * @param detectionThreshold - The threshold for detection sensitivity. Default is 0.7. + * @returns Array of Detection objects representing detected items in the frame. + */ + runOnFrame: ((frame: any, detectionThreshold?: number) => Detection[]) | null; + + /** + * Direct reference to the module instance for advanced use cases. + * Most users should use `forward()` for async processing or `runOnFrame` for real-time frame processing. + */ + moduleInstance: any; } From 9e0a82406efcd91306d42d341c631f0c2bc739e3 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Tue, 17 Feb 2026 17:51:10 +0100 Subject: [PATCH 07/26] refactor: errors, logs, unnecessary comments, use existing TensorPtr --- .../app/object_detection/index.tsx | 61 +++++++------- apps/computer-vision/package.json | 3 +- .../host_objects/JsiConversions.h | 19 +++++ .../host_objects/ModelHostObject.h | 62 +++++++++++++- .../rnexecutorch/models/VisionModel.cpp | 69 +++++++++------- .../rnexecutorch/utils/FrameExtractor.cpp | 63 +++++---------- .../rnexecutorch/utils/FrameProcessor.cpp | 80 +++++-------------- .../rnexecutorch/utils/FrameProcessor.h | 14 ++-- .../src/hooks/useModule.ts | 1 - .../modules/computer_vision/VisionModule.ts | 41 +++------- .../src/types/common.ts | 59 +++++++++----- .../src/types/objectDetection.ts | 6 -- 12 files changed, 251 insertions(+), 227 deletions(-) diff --git a/apps/computer-vision/app/object_detection/index.tsx b/apps/computer-vision/app/object_detection/index.tsx index 9e60589fb..54c0eb18f 100644 --- a/apps/computer-vision/app/object_detection/index.tsx +++ b/apps/computer-vision/app/object_detection/index.tsx @@ -13,7 +13,26 @@ import ScreenWrapper from '../../ScreenWrapper'; import ColorPalette from '../../colors'; import { Images } from 'react-native-nitro-image'; -// Helper function to convert image URI to raw pixel data using NitroImage +// Helper function to convert BGRA to RGB +function convertBGRAtoRGB( + buffer: ArrayBuffer, + width: number, + height: number +): ArrayBuffer { + const source = new Uint8Array(buffer); + const rgb = new Uint8Array(width * height * 3); + + for (let i = 0; i < width * height; i++) { + // BGRA format: [B, G, R, A] → RGB: [R, G, B] + rgb[i * 3 + 0] = source[i * 4 + 2]; // R + rgb[i * 3 + 1] = source[i * 4 + 1]; // G + rgb[i * 3 + 2] = source[i * 4 + 0]; // B + } + + return rgb.buffer; +} + +// Helper function to convert image URI to raw RGB pixel data async function imageUriToPixelData( uri: string, targetWidth: number, @@ -29,32 +48,19 @@ async function imageUriToPixelData( const image = await Images.loadFromFileAsync(uri); const resized = image.resize(targetWidth, targetHeight); - // Get pixel data as ArrayBuffer (RGBA format) - const pixelData = resized.toRawPixelData(); + // Get pixel data as ArrayBuffer (BGRA format from NitroImage) + const rawPixelData = resized.toRawPixelData(); const buffer = - pixelData instanceof ArrayBuffer ? pixelData : pixelData.buffer; - - // Calculate actual buffer dimensions (accounts for device pixel ratio) - const bufferSize = buffer?.byteLength || 0; - const totalPixels = bufferSize / 4; // RGBA = 4 bytes per pixel - const aspectRatio = targetWidth / targetHeight; - const actualHeight = Math.sqrt(totalPixels / aspectRatio); - const actualWidth = totalPixels / actualHeight; + rawPixelData instanceof ArrayBuffer ? rawPixelData : rawPixelData.buffer; - console.log('Requested:', targetWidth, 'x', targetHeight); - console.log('Buffer size:', bufferSize); - console.log( - 'Actual dimensions:', - Math.round(actualWidth), - 'x', - Math.round(actualHeight) - ); + // Convert BGRA to RGB as required by the native API + const rgbBuffer = convertBGRAtoRGB(buffer, targetWidth, targetHeight); return { - data: buffer, - width: Math.round(actualWidth), - height: Math.round(actualHeight), - channels: 4, // RGBA + data: rgbBuffer, + width: targetWidth, + height: targetHeight, + channels: 3, // RGB }; } catch (error) { console.error('Error loading image with NitroImage:', error); @@ -106,12 +112,11 @@ export default function ObjectDetectionScreen() { if (imageUri && imageDimensions) { try { console.log('Converting image to pixel data...'); - // Resize to 640x640 to avoid memory issues - const intermediateSize = 640; + // Use original dimensions - let the model resize internally const pixelData = await imageUriToPixelData( imageUri, - intermediateSize, - intermediateSize + imageDimensions.width, + imageDimensions.height ); console.log('Running forward with pixel data...', { @@ -122,7 +127,7 @@ export default function ObjectDetectionScreen() { }); // Run inference using unified forward() API - const output = await ssdLite.forward(pixelData, 0.5); + const output = await ssdLite.forward(pixelData, 0.3); console.log('Pixel data result:', output.length, 'detections'); setResults(output); } catch (e) { diff --git a/apps/computer-vision/package.json b/apps/computer-vision/package.json index ec5894498..822345696 100644 --- a/apps/computer-vision/package.json +++ b/apps/computer-vision/package.json @@ -17,6 +17,7 @@ "@react-navigation/native": "^7.1.28", "@shopify/react-native-skia": "2.4.21", "expo": "^54.0.27", + "expo-build-properties": "~1.0.10", "expo-constants": "~18.0.11", "expo-font": "~14.0.10", "expo-linking": "~8.0.10", @@ -40,7 +41,7 @@ "devDependencies": { "@babel/core": "^7.29.0", "@types/pngjs": "^6.0.5", - "@types/react": "~19.1.10" + "@types/react": "~19.2.0" }, "private": true } diff --git a/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h b/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h index df9abbdef..b4409b0f2 100644 --- a/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h +++ b/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h @@ -360,6 +360,25 @@ inline jsi::Value getJsiValue(uint64_t val, jsi::Runtime &runtime) { return {runtime, bigInt}; } +inline jsi::Value getJsiValue(const std::vector &vec, + jsi::Runtime &runtime) { + jsi::Array array(runtime, vec.size()); + for (size_t i = 0; i < vec.size(); i++) { + // JS numbers are doubles. Large uint64s > 2^53 will lose precision. + array.setValueAtIndex(runtime, i, jsi::Value(static_cast(vec[i]))); + } + return {runtime, array}; +} + +inline jsi::Value getJsiValue(const std::vector &vec, + jsi::Runtime &runtime) { + jsi::Array array(runtime, vec.size()); + for (size_t i = 0; i < vec.size(); i++) { + array.setValueAtIndex(runtime, i, jsi::Value(static_cast(vec[i]))); + } + return {runtime, array}; +} + inline jsi::Value getJsiValue(int val, jsi::Runtime &runtime) { return {runtime, val}; } diff --git a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h index 9a2e6776e..9554f1888 100644 --- a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h +++ b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h @@ -171,14 +171,12 @@ template class ModelHostObject : public JsiHostObject { "stream")); } - // Register generateFromFrame for all VisionModel subclasses if constexpr (meta::DerivedFromOrSameAs) { addFunctions(JSI_EXPORT_FUNCTION( ModelHostObject, synchronousHostFunction<&Model::streamStop>, "streamStop")); } - // Register generateFromPixels for models that support it if constexpr (meta::HasGenerateFromPixels) { addFunctions( JSI_EXPORT_FUNCTION(ModelHostObject, @@ -234,6 +232,66 @@ template class ModelHostObject : public JsiHostObject { } } + template JSI_HOST_FUNCTION(visionHostFunction) { + // 1. Check Argument Count + // (We rely on our new FunctionTraits) + constexpr std::size_t cppArgCount = + meta::FunctionTraits::arity; + + // We expect JS args = (Total C++ Args) - (2 injected args: Runtime + Value) + constexpr std::size_t expectedJsArgs = cppArgCount - 1; + log(LOG_LEVEL::Debug, cppArgCount, count); + if (count != expectedJsArgs) { + throw jsi::JSError(runtime, "Argument count mismatch in vision function"); + } + + try { + // 2. The Magic Trick + // We get a pointer to a dummy function: void dummy(Rest...) {} + // This function has exactly the signature of the arguments we want to + // parse. + auto dummyFuncPtr = &meta::TailSignature::dummy; + + // 3. Let existing helpers do the work + // We pass the dummy pointer. The helper inspects its arguments (Rest...) + // and converts args[0]...args[N] accordingly. + // Note: We pass (args + 1) because JS args[0] is the PixelData, which we + // handle manually. Note: We use expectedJsArgs - 1 because we skipped one + // JS arg. + auto tailArgsTuple = + meta::createArgsTupleFromJsi(dummyFuncPtr, args + 1, runtime); + + // 4. Invoke + using ReturnType = + typename meta::FunctionTraits::return_type; + + if constexpr (std::is_void_v) { + std::apply( + [&](auto &&...tailArgs) { + (model.get()->*FnPtr)( + runtime, + args[0], // 1. PixelData (Manually passed) + std::forward( + tailArgs)...); // 2. The rest (Auto parsed) + }, + std::move(tailArgsTuple)); + return jsi::Value::undefined(); + } else { + auto result = std::apply( + [&](auto &&...tailArgs) { + return (model.get()->*FnPtr)( + runtime, args[0], + std::forward(tailArgs)...); + }, + std::move(tailArgsTuple)); + + return jsi_conversion::getJsiValue(std::move(result), runtime); + } + } catch (const std::exception &e) { + throw jsi::JSError(runtime, e.what()); + } + } + // A generic host function that resolves a promise with a result of a // function. JSI arguments are converted to the types provided in the function // signature, and the return value is converted back to JSI before resolving. diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp index 54c0adfd2..fd2c40ee8 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp @@ -1,4 +1,9 @@ #include "VisionModel.h" +#include +#include +#include +#include +#include #include namespace rnexecutorch { @@ -18,45 +23,47 @@ cv::Mat VisionModel::extractFromFrame(jsi::Runtime &runtime, cv::Mat VisionModel::extractFromPixels(jsi::Runtime &runtime, const jsi::Object &pixelData) const { - // Extract width, height, and channels - if (!pixelData.hasProperty(runtime, "width") || - !pixelData.hasProperty(runtime, "height") || - !pixelData.hasProperty(runtime, "channels") || - !pixelData.hasProperty(runtime, "data")) { - throw std::runtime_error( - "Invalid pixel data: must contain width, height, channels, and data"); - } - - int width = pixelData.getProperty(runtime, "width").asNumber(); - int height = pixelData.getProperty(runtime, "height").asNumber(); - int channels = pixelData.getProperty(runtime, "channels").asNumber(); + // PixelData follows TensorPtr structure (dataPtr, sizes, scalarType) + // Use JSI conversion helper to extract the data + auto tensorView = jsi::fromHostObject(runtime, pixelData); - // Get the ArrayBuffer - auto dataValue = pixelData.getProperty(runtime, "data"); - if (!dataValue.isObject() || - !dataValue.asObject(runtime).isArrayBuffer(runtime)) { - throw std::runtime_error( - "pixel data 'data' property must be an ArrayBuffer"); + // Validate dimensions: sizes must be [height, width, channels] + if (tensorView.sizes.size() != 3) { + char errorMessage[100]; + std::snprintf(errorMessage, sizeof(errorMessage), + "Invalid pixel data: sizes must have 3 elements " + "[height, width, channels], got %zu", + tensorView.sizes.size()); + throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, + errorMessage); } - auto arrayBuffer = dataValue.asObject(runtime).getArrayBuffer(runtime); - size_t expectedSize = width * height * channels; + int height = tensorView.sizes[0]; + int width = tensorView.sizes[1]; + int channels = tensorView.sizes[2]; - if (arrayBuffer.size(runtime) != expectedSize) { - throw std::runtime_error( - "ArrayBuffer size does not match width * height * channels"); + // Pixel data must be RGB (3 channels) and BYTE type + if (channels != 3) { + char errorMessage[100]; + std::snprintf(errorMessage, sizeof(errorMessage), + "Invalid pixel data: expected 3 channels (RGB), got %d", + channels); + throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, + errorMessage); } - // Create cv::Mat and copy the data - // OpenCV uses BGR/BGRA format internally, but we'll create as-is and let - // preprocessFrame handle conversion - int cvType = (channels == 3) ? CV_8UC3 : CV_8UC4; - cv::Mat image(height, width, cvType); + if (tensorView.scalarType != ScalarType::Byte) { + throw RnExecutorchError( + RnExecutorchErrorCode::InvalidUserInput, + "Invalid pixel data: scalarType must be BYTE (Uint8Array)"); + } - // Copy data from ArrayBuffer to cv::Mat - std::memcpy(image.data, arrayBuffer.data(runtime), expectedSize); + // Create cv::Mat directly from dataPtr (zero-copy view) + uint8_t *dataPtr = static_cast(tensorView.dataPtr); + cv::Mat image(height, width, CV_8UC3, dataPtr); - return image; + // Clone to own the data, since JS memory may be GC'd + return image.clone(); } } // namespace models diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp index f64855131..9fbbaeb74 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp @@ -1,4 +1,6 @@ #include "FrameExtractor.h" +#include +#include #include #ifdef __APPLE__ @@ -20,7 +22,8 @@ cv::Mat FrameExtractor::extractFromNativeBuffer(uint64_t bufferPtr) { #elif defined(__ANDROID__) return extractFromAHardwareBuffer(reinterpret_cast(bufferPtr)); #else - throw std::runtime_error("NativeBuffer not supported on this platform"); + throw RnExecutorchError(RnExecutorchErrorCode::NotSupported, + "NativeBuffer not supported on this platform"); #endif } @@ -40,41 +43,25 @@ cv::Mat FrameExtractor::extractFromCVPixelBuffer(void *pixelBuffer) { cv::Mat mat; - // Log pixel format once for debugging - static bool loggedPixelFormat = false; - if (!loggedPixelFormat) { - log(LOG_LEVEL::Debug, "CVPixelBuffer format code: ", pixelFormat); - loggedPixelFormat = true; - } - if (pixelFormat == kCVPixelFormatType_32BGRA) { // BGRA format (most common on iOS when using pixelFormat: 'rgb') - if (!loggedPixelFormat) { - log(LOG_LEVEL::Debug, "Extracting from CVPixelBuffer: BGRA format, ", - width, "x", height, ", stride: ", bytesPerRow); - } mat = cv::Mat(static_cast(height), static_cast(width), CV_8UC4, baseAddress, bytesPerRow); } else if (pixelFormat == kCVPixelFormatType_32RGBA) { // RGBA format - if (!loggedPixelFormat) { - log(LOG_LEVEL::Debug, "Extracting from CVPixelBuffer: RGBA format, ", - width, "x", height, ", stride: ", bytesPerRow); - } mat = cv::Mat(static_cast(height), static_cast(width), CV_8UC4, baseAddress, bytesPerRow); } else if (pixelFormat == kCVPixelFormatType_24RGB) { // RGB format - if (!loggedPixelFormat) { - log(LOG_LEVEL::Debug, "Extracting from CVPixelBuffer: RGB format, ", - width, "x", height, ", stride: ", bytesPerRow); - } mat = cv::Mat(static_cast(height), static_cast(width), CV_8UC3, baseAddress, bytesPerRow); } else { CVPixelBufferUnlockBaseAddress(buffer, kCVPixelBufferLock_ReadOnly); - throw std::runtime_error("Unsupported CVPixelBuffer format: " + - std::to_string(pixelFormat)); + char errorMessage[100]; + std::snprintf(errorMessage, sizeof(errorMessage), + "Unsupported CVPixelBuffer format: %u", pixelFormat); + throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, + errorMessage); } // Note: We don't unlock here - Vision Camera manages the lifecycle @@ -99,50 +86,36 @@ cv::Mat FrameExtractor::extractFromAHardwareBuffer(void *hardwareBuffer) { buffer, AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN, -1, nullptr, &data); if (lockResult != 0) { - throw std::runtime_error("Failed to lock AHardwareBuffer"); + throw RnExecutorchError(RnExecutorchErrorCode::AccessFailed, + "Failed to lock AHardwareBuffer"); } cv::Mat mat; - // Log format once for debugging - static bool loggedFormat = false; - if (!loggedFormat) { - log(LOG_LEVEL::Debug, "AHardwareBuffer format code: ", desc.format); - loggedFormat = true; - } - if (desc.format == AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM) { // RGBA format (expected when using pixelFormat: 'rgb' on Android) - if (!loggedFormat) { - log(LOG_LEVEL::Debug, "Extracting from AHardwareBuffer: RGBA format, ", - desc.width, "x", desc.height, ", stride: ", desc.stride * 4); - } mat = cv::Mat(desc.height, desc.width, CV_8UC4, data, desc.stride * 4); } else if (desc.format == AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM) { // RGBX format (treated as RGBA) - if (!loggedFormat) { - log(LOG_LEVEL::Debug, "Extracting from AHardwareBuffer: RGBX format, ", - desc.width, "x", desc.height, ", stride: ", desc.stride * 4); - } mat = cv::Mat(desc.height, desc.width, CV_8UC4, data, desc.stride * 4); } else if (desc.format == AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM) { // RGB format (less common) - if (!loggedFormat) { - log(LOG_LEVEL::Debug, "Extracting from AHardwareBuffer: RGB format, ", - desc.width, "x", desc.height, ", stride: ", desc.stride * 3); - } mat = cv::Mat(desc.height, desc.width, CV_8UC3, data, desc.stride * 3); } else { AHardwareBuffer_unlock(buffer, nullptr); - throw std::runtime_error("Unsupported AHardwareBuffer format: " + - std::to_string(desc.format)); + char errorMessage[100]; + std::snprintf(errorMessage, sizeof(errorMessage), + "Unsupported AHardwareBuffer format: %u", desc.format); + throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, + errorMessage); } // Note: We don't unlock here - Vision Camera manages the lifecycle return mat; #else - throw std::runtime_error("AHardwareBuffer requires Android API 26+"); + throw RnExecutorchError(RnExecutorchErrorCode::NotSupported, + "AHardwareBuffer requires Android API 26+"); #endif // __ANDROID_API__ >= 26 } #endif // __ANDROID__ diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp index 02faa072d..087aec816 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp @@ -1,7 +1,8 @@ #include "FrameProcessor.h" #include "FrameExtractor.h" +#include +#include #include -#include namespace rnexecutorch { namespace utils { @@ -16,34 +17,21 @@ cv::Mat FrameProcessor::extractFrame(jsi::Runtime &runtime, // Try zero-copy path first (nativeBuffer) if (hasNativeBuffer(runtime, frameData)) { - static bool loggedPath = false; - if (!loggedPath) { - log(LOG_LEVEL::Debug, "FrameProcessor: Using zero-copy nativeBuffer"); - loggedPath = true; - } - try { - return extractFromNativeBuffer(runtime, frameData, width, height); + return extractFromNativeBuffer(runtime, frameData); } catch (const std::exception &e) { - log(LOG_LEVEL::Debug, - "FrameProcessor: nativeBuffer extraction failed: ", e.what()); - log(LOG_LEVEL::Debug, "FrameProcessor: Falling back to ArrayBuffer"); + // Fallback to ArrayBuffer on failure } } // Fallback to ArrayBuffer path (with copy) if (frameData.hasProperty(runtime, "data")) { - static bool loggedPath = false; - if (!loggedPath) { - log(LOG_LEVEL::Debug, "FrameProcessor: Using ArrayBuffer (with copy)"); - loggedPath = true; - } - return extractFromArrayBuffer(runtime, frameData, width, height); } // No valid frame data source - throw std::runtime_error( + throw RnExecutorchError( + RnExecutorchErrorCode::InvalidUserInput, "FrameProcessor: No valid frame data (neither nativeBuffer nor data " "property found)"); } @@ -52,8 +40,9 @@ cv::Size FrameProcessor::getFrameSize(jsi::Runtime &runtime, const jsi::Object &frameData) { if (!frameData.hasProperty(runtime, "width") || !frameData.hasProperty(runtime, "height")) { - throw std::runtime_error("FrameProcessor: Frame data missing width or " - "height property"); + throw RnExecutorchError( + RnExecutorchErrorCode::InvalidUserInput, + "FrameProcessor: Frame data missing width or height property"); } int width = @@ -70,8 +59,7 @@ bool FrameProcessor::hasNativeBuffer(jsi::Runtime &runtime, } cv::Mat FrameProcessor::extractFromNativeBuffer(jsi::Runtime &runtime, - const jsi::Object &frameData, - int width, int height) { + const jsi::Object &frameData) { auto nativeBufferValue = frameData.getProperty(runtime, "nativeBuffer"); // Handle bigint pointer value from JavaScript @@ -79,15 +67,8 @@ cv::Mat FrameProcessor::extractFromNativeBuffer(jsi::Runtime &runtime, nativeBufferValue.asBigInt(runtime).asUint64(runtime)); // Use FrameExtractor to get cv::Mat from platform-specific buffer - cv::Mat frame = FrameExtractor::extractFromNativeBuffer(bufferPtr); - - // Validate extracted frame dimensions match expected - if (frame.cols != width || frame.rows != height) { - log(LOG_LEVEL::Debug, "FrameProcessor: Dimension mismatch - expected ", - width, "x", height, " but got ", frame.cols, "x", frame.rows); - } - - return frame; + // Native buffer contains all metadata (width, height, format) + return FrameExtractor::extractFromNativeBuffer(bufferPtr); } cv::Mat FrameProcessor::extractFromArrayBuffer(jsi::Runtime &runtime, @@ -103,39 +84,22 @@ cv::Mat FrameProcessor::extractFromArrayBuffer(jsi::Runtime &runtime, size_t expectedRGBAStride = width * 4; size_t expectedRGBStride = width * 3; - cv::Mat frame; - if (stride == expectedRGBAStride || bufferSize >= width * height * 4) { // RGBA format with potential padding - frame = cv::Mat(height, width, CV_8UC4, data, stride); - - static bool loggedFormat = false; - if (!loggedFormat) { - log(LOG_LEVEL::Debug, - "FrameProcessor: ArrayBuffer format is RGBA, " - "stride: ", - stride); - loggedFormat = true; - } + return cv::Mat(height, width, CV_8UC4, data, stride); } else if (stride >= expectedRGBStride) { // RGB format - frame = cv::Mat(height, width, CV_8UC3, data, stride); - - static bool loggedFormat = false; - if (!loggedFormat) { - log(LOG_LEVEL::Debug, - "FrameProcessor: ArrayBuffer format is RGB, stride: ", stride); - loggedFormat = true; - } + return cv::Mat(height, width, CV_8UC3, data, stride); } else { - throw std::runtime_error( - "FrameProcessor: Unexpected buffer size - expected " + - std::to_string(expectedRGBStride) + " or " + - std::to_string(expectedRGBAStride) + " bytes per row, got " + - std::to_string(stride)); + char errorMessage[200]; + std::snprintf( + errorMessage, sizeof(errorMessage), + "FrameProcessor: Unexpected buffer size - expected %zu or %zu bytes " + "per row, got %zu", + expectedRGBStride, expectedRGBAStride, stride); + throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, + errorMessage); } - - return frame; } } // namespace utils diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h index e37b5bfd6..0838b6594 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h @@ -45,8 +45,8 @@ class FrameProcessor { * * @return cv::Mat wrapping or containing the frame data * - * @throws std::runtime_error if neither nativeBuffer nor data is available - * @throws std::runtime_error if nativeBuffer extraction fails + * @throws RnExecutorchError if neither nativeBuffer nor data is available + * @throws RnExecutorchError if nativeBuffer extraction fails * * @note The returned cv::Mat may not own the data (zero-copy path). * Caller must ensure the source frame remains valid during use. @@ -62,7 +62,7 @@ class FrameProcessor { * * @return cv::Size with frame width and height * - * @throws std::runtime_error if width or height properties are missing + * @throws RnExecutorchError if width or height properties are missing */ static cv::Size getFrameSize(jsi::Runtime &runtime, const jsi::Object &frameData); @@ -81,15 +81,15 @@ class FrameProcessor { /** * @brief Extract frame from nativeBuffer pointer (zero-copy) * + * Native buffer contains all metadata (width, height, format), so no need to + * pass dimensions separately. + * * @param runtime JSI runtime * @param frameData JSI object with nativeBuffer property - * @param width Frame width - * @param height Frame height * @return cv::Mat wrapping the native buffer data */ static cv::Mat extractFromNativeBuffer(jsi::Runtime &runtime, - const jsi::Object &frameData, - int width, int height); + const jsi::Object &frameData); /** * @brief Extract frame from ArrayBuffer (with copy) diff --git a/packages/react-native-executorch/src/hooks/useModule.ts b/packages/react-native-executorch/src/hooks/useModule.ts index 624094afb..f5f260787 100644 --- a/packages/react-native-executorch/src/hooks/useModule.ts +++ b/packages/react-native-executorch/src/hooks/useModule.ts @@ -6,7 +6,6 @@ interface Module { load: (...args: any[]) => Promise; forward: (...args: any[]) => Promise; delete: () => void; - nativeModule?: any; // JSI host object with native methods } interface ModuleConstructor { diff --git a/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts index 06acf6654..72e797437 100644 --- a/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts +++ b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts @@ -1,25 +1,7 @@ import { BaseModule } from '../BaseModule'; import { RnExecutorchErrorCode } from '../../errors/ErrorCodes'; import { RnExecutorchError } from '../../errors/errorUtils'; - -/** - * Raw pixel data for vision model inference. - */ -export type PixelData = { - data: ArrayBuffer; - width: number; - height: number; - channels: number; -}; - -/** - * VisionCamera Frame object for real-time processing. - */ -export type Frame = { - getNativeBuffer(): { pointer: number; release(): void }; - width: number; - height: number; -}; +import { Frame, PixelData, ScalarType } from '../../types/common'; /** * Base class for computer vision models that support multiple input types. @@ -74,8 +56,6 @@ export abstract class VisionModule extends BaseModule { nativeBuffer = frame.getNativeBuffer(); const frameData = { nativeBuffer: nativeBuffer.pointer, - width: frame.width, - height: frame.height, }; return nativeGenerateFromFrame(frameData, ...args); } finally { @@ -107,10 +87,9 @@ export abstract class VisionModule extends BaseModule { * * // Pixel data (async) * const result2 = await model.forward({ - * data: pixelBuffer, - * width: 640, - * height: 480, - * channels: 3 + * dataPtr: new Uint8Array(pixelBuffer), + * sizes: [480, 640, 3], + * scalarType: ScalarType.BYTE * }); * * // For VisionCamera frames, use runOnFrame in worklet: @@ -136,11 +115,13 @@ export abstract class VisionModule extends BaseModule { return await this.nativeModule.generateFromString(input, ...args); } else if ( typeof input === 'object' && - 'data' in input && - input.data instanceof ArrayBuffer && - typeof input.width === 'number' && - typeof input.height === 'number' && - typeof input.channels === 'number' + 'dataPtr' in input && + input.dataPtr instanceof Uint8Array && + 'sizes' in input && + Array.isArray(input.sizes) && + input.sizes.length === 3 && + 'scalarType' in input && + input.scalarType === ScalarType.BYTE ) { // Pixel data → generateFromPixels() return await this.nativeModule.generateFromPixels(input, ...args); diff --git a/packages/react-native-executorch/src/types/common.ts b/packages/react-native-executorch/src/types/common.ts index 439e18597..7a3ca8afc 100644 --- a/packages/react-native-executorch/src/types/common.ts +++ b/packages/react-native-executorch/src/types/common.ts @@ -151,6 +151,45 @@ export type LabelEnum = Readonly>; * @category Types */ export type Triple = readonly [T, T, T]; +/** + * Represents raw pixel data in RGB format for vision models. + * + * This type extends TensorPtr with constraints specific to image data: + * - dataPtr must be Uint8Array (8-bit unsigned integers) + * - scalarType is always BYTE (ScalarType.BYTE) + * - sizes represents [height, width, channels] where channels must be 3 (RGB) + * + * @category Types + * @example + * ```typescript + * const pixelData: PixelData = { + * dataPtr: new Uint8Array(width * height * 3), // RGB pixel data + * sizes: [height, width, 3], // [height, width, channels] + * scalarType: ScalarType.BYTE + * }; + * ``` + */ +export interface PixelData extends Omit { + /** + * RGB pixel data as Uint8Array. + * Expected format: RGB (3 channels), not RGBA or BGRA. + * Size must equal: width * height * 3 + */ + dataPtr: Uint8Array; + + /** + * Dimensions of the pixel data: [height, width, channels]. + * - sizes[0]: height (number of rows) + * - sizes[1]: width (number of columns) + * - sizes[2]: channels (must be 3 for RGB) + */ + sizes: [number, number, 3]; + + /** + * Scalar type is always BYTE for pixel data. + */ + scalarType: ScalarType.BYTE; +} /** * Frame data for vision model processing. @@ -158,13 +197,7 @@ export type Triple = readonly [T, T, T]; * 1. ArrayBuffer mode (with memory copy) - Compatible with all platforms * 2. NativeBuffer mode (zero-copy) - Better performance with Vision Camera v5 */ -export interface FrameData { - /** - * Raw pixel data as ArrayBuffer (requires memory copy). - * Use this for compatibility or when getNativeBuffer is not available. - */ - data?: ArrayBuffer | ArrayBufferLike; - +export interface Frame { /** * Pointer to native platform buffer (zero-copy, best performance). * - On iOS: CVPixelBufferRef pointer @@ -172,15 +205,5 @@ export interface FrameData { * * Obtain from Vision Camera v5: `frame.getNativeBuffer().pointer` */ - nativeBuffer?: bigint; - - /** - * Frame width in pixels - */ - width: number; - - /** - * Frame height in pixels - */ - height: number; + getNativeBuffer(): { pointer: number; release(): void }; } diff --git a/packages/react-native-executorch/src/types/objectDetection.ts b/packages/react-native-executorch/src/types/objectDetection.ts index 2dddaad64..abb0142a7 100644 --- a/packages/react-native-executorch/src/types/objectDetection.ts +++ b/packages/react-native-executorch/src/types/objectDetection.ts @@ -237,10 +237,4 @@ export interface ObjectDetectionType { * @returns Array of Detection objects representing detected items in the frame. */ runOnFrame: ((frame: any, detectionThreshold?: number) => Detection[]) | null; - - /** - * Direct reference to the module instance for advanced use cases. - * Most users should use `forward()` for async processing or `runOnFrame` for real-time frame processing. - */ - moduleInstance: any; } From 333847f507054034ecea28a71b52aa8e02c2a718 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Tue, 17 Feb 2026 17:51:37 +0100 Subject: [PATCH 08/26] fix: change Frame import in BaseModule --- packages/react-native-executorch/src/modules/BaseModule.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-native-executorch/src/modules/BaseModule.ts b/packages/react-native-executorch/src/modules/BaseModule.ts index 0870a30b6..41a2da6cf 100644 --- a/packages/react-native-executorch/src/modules/BaseModule.ts +++ b/packages/react-native-executorch/src/modules/BaseModule.ts @@ -1,4 +1,4 @@ -import { ResourceSource } from '../types/common'; +import { Frame, ResourceSource } from '../types/common'; import { TensorPtr } from '../types/common'; /** @@ -51,9 +51,9 @@ export abstract class BaseModule { * @param args Additional model-specific arguments (e.g., threshold, options) * @returns Model-specific output (e.g., detections, classifications, embeddings) * - * @see {@link FrameData} for frame data format details + * @see {@link Frame} for frame data format details */ - public generateFromFrame!: (frameData: FrameData, ...args: any[]) => any; + public generateFromFrame!: (frameData: Frame, ...args: any[]) => any; /** * Load the model and prepare it for inference. From d00cd8577ed0528b6b3856220583593ce18a7b4f Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Wed, 18 Feb 2026 12:49:15 +0100 Subject: [PATCH 09/26] feat: use TensorPtrish type for Pixel data input --- .../app/object_detection/index.tsx | 119 ++++++------------ .../rnexecutorch/models/VisionModel.cpp | 13 +- .../common/rnexecutorch/models/VisionModel.h | 29 ++--- .../rnexecutorch/utils/FrameExtractor.cpp | 2 +- .../rnexecutorch/utils/FrameProcessor.cpp | 12 +- .../modules/computer_vision/VisionModule.ts | 2 +- .../src/types/common.ts | 2 +- .../src/types/objectDetection.ts | 22 ++-- 8 files changed, 72 insertions(+), 129 deletions(-) diff --git a/apps/computer-vision/app/object_detection/index.tsx b/apps/computer-vision/app/object_detection/index.tsx index 54c0eb18f..d843682eb 100644 --- a/apps/computer-vision/app/object_detection/index.tsx +++ b/apps/computer-vision/app/object_detection/index.tsx @@ -4,6 +4,8 @@ import { Detection, useObjectDetection, SSDLITE_320_MOBILENET_V3_LARGE, + ScalarType, + PixelData, } from 'react-native-executorch'; import { View, StyleSheet, Image, TouchableOpacity, Text } from 'react-native'; import ImageWithBboxes from '../../components/ImageWithBboxes'; @@ -11,62 +13,6 @@ import React, { useContext, useEffect, useState } from 'react'; import { GeneratingContext } from '../../context'; import ScreenWrapper from '../../ScreenWrapper'; import ColorPalette from '../../colors'; -import { Images } from 'react-native-nitro-image'; - -// Helper function to convert BGRA to RGB -function convertBGRAtoRGB( - buffer: ArrayBuffer, - width: number, - height: number -): ArrayBuffer { - const source = new Uint8Array(buffer); - const rgb = new Uint8Array(width * height * 3); - - for (let i = 0; i < width * height; i++) { - // BGRA format: [B, G, R, A] → RGB: [R, G, B] - rgb[i * 3 + 0] = source[i * 4 + 2]; // R - rgb[i * 3 + 1] = source[i * 4 + 1]; // G - rgb[i * 3 + 2] = source[i * 4 + 0]; // B - } - - return rgb.buffer; -} - -// Helper function to convert image URI to raw RGB pixel data -async function imageUriToPixelData( - uri: string, - targetWidth: number, - targetHeight: number -): Promise<{ - data: ArrayBuffer; - width: number; - height: number; - channels: number; -}> { - try { - // Load image and resize to target dimensions - const image = await Images.loadFromFileAsync(uri); - const resized = image.resize(targetWidth, targetHeight); - - // Get pixel data as ArrayBuffer (BGRA format from NitroImage) - const rawPixelData = resized.toRawPixelData(); - const buffer = - rawPixelData instanceof ArrayBuffer ? rawPixelData : rawPixelData.buffer; - - // Convert BGRA to RGB as required by the native API - const rgbBuffer = convertBGRAtoRGB(buffer, targetWidth, targetHeight); - - return { - data: rgbBuffer, - width: targetWidth, - height: targetHeight, - channels: 3, // RGB - }; - } catch (error) { - console.error('Error loading image with NitroImage:', error); - throw error; - } -} export default function ObjectDetectionScreen() { const [imageUri, setImageUri] = useState(''); @@ -109,30 +55,45 @@ export default function ObjectDetectionScreen() { }; const runForwardPixels = async () => { - if (imageUri && imageDimensions) { - try { - console.log('Converting image to pixel data...'); - // Use original dimensions - let the model resize internally - const pixelData = await imageUriToPixelData( - imageUri, - imageDimensions.width, - imageDimensions.height - ); - - console.log('Running forward with pixel data...', { - width: pixelData.width, - height: pixelData.height, - channels: pixelData.channels, - dataSize: pixelData.data.byteLength, - }); - - // Run inference using unified forward() API - const output = await ssdLite.forward(pixelData, 0.3); - console.log('Pixel data result:', output.length, 'detections'); - setResults(output); - } catch (e) { - console.error('Error in runForwardPixels:', e); + try { + console.log('Testing with hardcoded pixel data...'); + + // Create a simple 320x320 test image (all zeros - black image) + // In a real scenario, you would load actual image pixel data here + const width = 320; + const height = 320; + const channels = 3; // RGB + + // Create a black image (you can replace this with actual pixel data) + const rgbData = new Uint8Array(width * height * channels); + + // Optionally, add some test pattern (e.g., white square in center) + for (let y = 100; y < 220; y++) { + for (let x = 100; x < 220; x++) { + const idx = (y * width + x) * 3; + rgbData[idx + 0] = 255; // R + rgbData[idx + 1] = 255; // G + rgbData[idx + 2] = 255; // B + } } + + const pixelData: PixelData = { + dataPtr: rgbData, + sizes: [height, width, channels], + scalarType: ScalarType.BYTE, + }; + + console.log('Running forward with hardcoded pixel data...', { + sizes: pixelData.sizes, + dataSize: pixelData.dataPtr.byteLength, + }); + + // Run inference using unified forward() API + const output = await ssdLite.forward(pixelData, 0.3); + console.log('Pixel data result:', output.length, 'detections'); + setResults(output); + } catch (e) { + console.error('Error in runForwardPixels:', e); } }; diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp index fd2c40ee8..8155b8819 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp @@ -2,8 +2,6 @@ #include #include #include -#include -#include #include namespace rnexecutorch { @@ -21,12 +19,7 @@ cv::Mat VisionModel::extractFromFrame(jsi::Runtime &runtime, return preprocessFrame(frame); } -cv::Mat VisionModel::extractFromPixels(jsi::Runtime &runtime, - const jsi::Object &pixelData) const { - // PixelData follows TensorPtr structure (dataPtr, sizes, scalarType) - // Use JSI conversion helper to extract the data - auto tensorView = jsi::fromHostObject(runtime, pixelData); - +cv::Mat VisionModel::extractFromPixels(const JSTensorViewIn &tensorView) const { // Validate dimensions: sizes must be [height, width, channels] if (tensorView.sizes.size() != 3) { char errorMessage[100]; @@ -59,11 +52,11 @@ cv::Mat VisionModel::extractFromPixels(jsi::Runtime &runtime, } // Create cv::Mat directly from dataPtr (zero-copy view) + // Data is valid for the duration of this synchronous call uint8_t *dataPtr = static_cast(tensorView.dataPtr); cv::Mat image(height, width, CV_8UC3, dataPtr); - // Clone to own the data, since JS memory may be GC'd - return image.clone(); + return image; } } // namespace models diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h index 9ba5cf7e4..c362d745f 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h @@ -129,40 +129,35 @@ class VisionModel : public BaseModel { const jsi::Value &frameData) const; /** - * @brief Extract cv::Mat from raw pixel data (ArrayBuffer) sent from + * @brief Extract cv::Mat from raw pixel data (TensorPtr) sent from * JavaScript * * This method enables users to run inference on raw pixel data without file * I/O. Useful for processing images already in memory (e.g., from canvas, * image library). * - * @param runtime JSI runtime - * @param pixelData JSI object containing: - * - data: ArrayBuffer with raw pixel values - * - width: number - image width - * - height: number - image height - * - channels: number - number of channels (3 for RGB, 4 for - * RGBA) + * @param tensorView JSTensorViewIn containing: + * - dataPtr: Pointer to raw pixel values (RGB format) + * - sizes: [height, width, channels] - must be 3D + * - scalarType: Must be ScalarType::Byte (Uint8Array) * * @return cv::Mat containing the pixel data * - * @throws std::runtime_error if pixelData format is invalid + * @throws RnExecutorchError if tensorView format is invalid * * @note The returned cv::Mat owns a copy of the data - * @note Expected pixel format: RGB or RGBA, row-major order + * @note Expected pixel format: RGB (3 channels), row-major order * @note Typical usage from JS: * @code - * const pixels = new Uint8Array([...]); // Raw pixel data + * const pixels = new Uint8Array([...]); // Raw RGB pixel data * const result = model.generateFromPixels({ - * data: pixels.buffer, - * width: 640, - * height: 480, - * channels: 3 + * dataPtr: pixels, + * sizes: [480, 640, 3], + * scalarType: ScalarType.BYTE * }, 0.5); * @endcode */ - cv::Mat extractFromPixels(jsi::Runtime &runtime, - const jsi::Object &pixelData) const; + cv::Mat extractFromPixels(const JSTensorViewIn &tensorView) const; }; } // namespace models diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp index 9fbbaeb74..900eae297 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp @@ -86,7 +86,7 @@ cv::Mat FrameExtractor::extractFromAHardwareBuffer(void *hardwareBuffer) { buffer, AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN, -1, nullptr, &data); if (lockResult != 0) { - throw RnExecutorchError(RnExecutorchErrorCode::AccessFailed, + throw RnExecutorchError(RnExecutorchErrorCode::UnknownError, "Failed to lock AHardwareBuffer"); } diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp index 087aec816..5e593dfd0 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp @@ -9,13 +9,8 @@ namespace utils { cv::Mat FrameProcessor::extractFrame(jsi::Runtime &runtime, const jsi::Object &frameData) { - // Get frame dimensions - int width = - static_cast(frameData.getProperty(runtime, "width").asNumber()); - int height = - static_cast(frameData.getProperty(runtime, "height").asNumber()); - // Try zero-copy path first (nativeBuffer) + // Native buffer contains dimensions, so we don't need width/height properties if (hasNativeBuffer(runtime, frameData)) { try { return extractFromNativeBuffer(runtime, frameData); @@ -25,7 +20,12 @@ cv::Mat FrameProcessor::extractFrame(jsi::Runtime &runtime, } // Fallback to ArrayBuffer path (with copy) + // Get frame dimensions for ArrayBuffer path if (frameData.hasProperty(runtime, "data")) { + int width = + static_cast(frameData.getProperty(runtime, "width").asNumber()); + int height = + static_cast(frameData.getProperty(runtime, "height").asNumber()); return extractFromArrayBuffer(runtime, frameData, width, height); } diff --git a/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts index 72e797437..d6a0038ee 100644 --- a/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts +++ b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts @@ -73,7 +73,7 @@ export abstract class VisionModule extends BaseModule { * 1. **String path/URI**: File path, URL, or Base64-encoded string * 2. **PixelData**: Raw pixel data from image libraries (e.g., NitroImage) * - * **Note**: For VisionCamera frame processing, use `forwardSync` instead. + * **Note**: For VisionCamera frame processing, use `runOnFrame` instead. * This method is async and cannot be called in worklet context. * * @param input - Image source (string path or PixelData object) diff --git a/packages/react-native-executorch/src/types/common.ts b/packages/react-native-executorch/src/types/common.ts index 7a3ca8afc..1ebfb3534 100644 --- a/packages/react-native-executorch/src/types/common.ts +++ b/packages/react-native-executorch/src/types/common.ts @@ -205,5 +205,5 @@ export interface Frame { * * Obtain from Vision Camera v5: `frame.getNativeBuffer().pointer` */ - getNativeBuffer(): { pointer: number; release(): void }; + getNativeBuffer(): { pointer: bigint; release(): void }; } diff --git a/packages/react-native-executorch/src/types/objectDetection.ts b/packages/react-native-executorch/src/types/objectDetection.ts index abb0142a7..c2281598a 100644 --- a/packages/react-native-executorch/src/types/objectDetection.ts +++ b/packages/react-native-executorch/src/types/objectDetection.ts @@ -1,5 +1,5 @@ import { RnExecutorchError } from '../errors/errorUtils'; -import { ResourceSource } from './common'; +import { ResourceSource, PixelData, Frame } from './common'; /** * Represents a bounding box for a detected object in an image. @@ -190,22 +190,14 @@ export interface ObjectDetectionType { * * // Pixel data * const detections2 = await model.forward({ - * data: pixelBuffer, - * width: 640, - * height: 480, - * channels: 3 + * dataPtr: new Uint8Array(rgbPixels), + * sizes: [480, 640, 3], + * scalarType: ScalarType.BYTE * }); * ``` */ forward: ( - input: - | string - | { - data: ArrayBuffer; - width: number; - height: number; - channels: number; - }, + input: string | PixelData, detectionThreshold?: number ) => Promise; @@ -236,5 +228,7 @@ export interface ObjectDetectionType { * @param detectionThreshold - The threshold for detection sensitivity. Default is 0.7. * @returns Array of Detection objects representing detected items in the frame. */ - runOnFrame: ((frame: any, detectionThreshold?: number) => Detection[]) | null; + runOnFrame: + | ((frame: Frame, detectionThreshold?: number) => Detection[]) + | null; } From 972d25c5147af185a57bbdfcfa375f394b997791 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Wed, 18 Feb 2026 13:03:22 +0100 Subject: [PATCH 10/26] refactor: add or remove empty lines --- .../rnexecutorch/models/classification/Classification.cpp | 2 +- .../rnexecutorch/models/embeddings/image/ImageEmbeddings.h | 2 +- .../models/semantic_segmentation/BaseSemanticSegmentation.h | 2 +- .../common/rnexecutorch/models/style_transfer/StyleTransfer.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/react-native-executorch/common/rnexecutorch/models/classification/Classification.cpp b/packages/react-native-executorch/common/rnexecutorch/models/classification/Classification.cpp index b9fad1b88..0fba07108 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/classification/Classification.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/classification/Classification.cpp @@ -73,4 +73,4 @@ Classification::postprocess(const Tensor &tensor) { return probs; } -} // namespace rnexecutorch::models::classification \ No newline at end of file +} // namespace rnexecutorch::models::classification diff --git a/packages/react-native-executorch/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h b/packages/react-native-executorch/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h index 9a1d6429b..7e114e939 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h @@ -27,4 +27,4 @@ class ImageEmbeddings final : public BaseEmbeddings { REGISTER_CONSTRUCTOR(models::embeddings::ImageEmbeddings, std::string, std::shared_ptr); -} // namespace rnexecutorch \ No newline at end of file +} // namespace rnexecutorch diff --git a/packages/react-native-executorch/common/rnexecutorch/models/semantic_segmentation/BaseSemanticSegmentation.h b/packages/react-native-executorch/common/rnexecutorch/models/semantic_segmentation/BaseSemanticSegmentation.h index b341183c5..16a9ecfe7 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/semantic_segmentation/BaseSemanticSegmentation.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/semantic_segmentation/BaseSemanticSegmentation.h @@ -59,4 +59,4 @@ class BaseSemanticSegmentation : public BaseModel { REGISTER_CONSTRUCTOR(models::semantic_segmentation::BaseSemanticSegmentation, std::string, std::vector, std::vector, std::shared_ptr); -} // namespace rnexecutorch \ No newline at end of file +} // namespace rnexecutorch diff --git a/packages/react-native-executorch/common/rnexecutorch/models/style_transfer/StyleTransfer.h b/packages/react-native-executorch/common/rnexecutorch/models/style_transfer/StyleTransfer.h index 8eed3c888..73744c4d8 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/style_transfer/StyleTransfer.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/style_transfer/StyleTransfer.h @@ -33,4 +33,4 @@ class StyleTransfer : public BaseModel { REGISTER_CONSTRUCTOR(models::style_transfer::StyleTransfer, std::string, std::shared_ptr); -} // namespace rnexecutorch \ No newline at end of file +} // namespace rnexecutorch From c0f0347b1cd008ecb2faa796e664fd469656ad54 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Thu, 19 Feb 2026 22:34:20 +0100 Subject: [PATCH 11/26] fix: errors after rebase --- .../host_objects/JsiConversions.h | 10 --- .../host_objects/ModelHostObject.h | 7 +- .../metaprogramming/FunctionHelpers.h | 67 ++++++++++++++++++- .../metaprogramming/TypeConcepts.h | 5 ++ 4 files changed, 74 insertions(+), 15 deletions(-) diff --git a/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h b/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h index b4409b0f2..5fc8615ea 100644 --- a/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h +++ b/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h @@ -360,16 +360,6 @@ inline jsi::Value getJsiValue(uint64_t val, jsi::Runtime &runtime) { return {runtime, bigInt}; } -inline jsi::Value getJsiValue(const std::vector &vec, - jsi::Runtime &runtime) { - jsi::Array array(runtime, vec.size()); - for (size_t i = 0; i < vec.size(); i++) { - // JS numbers are doubles. Large uint64s > 2^53 will lose precision. - array.setValueAtIndex(runtime, i, jsi::Value(static_cast(vec[i]))); - } - return {runtime, array}; -} - inline jsi::Value getJsiValue(const std::vector &vec, jsi::Runtime &runtime) { jsi::Array array(runtime, vec.size()); diff --git a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h index 9554f1888..3190bc6f4 100644 --- a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h +++ b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -171,10 +172,10 @@ template class ModelHostObject : public JsiHostObject { "stream")); } - if constexpr (meta::DerivedFromOrSameAs) { + if constexpr (meta::HasGenerateFromFrame) { addFunctions(JSI_EXPORT_FUNCTION( - ModelHostObject, synchronousHostFunction<&Model::streamStop>, - "streamStop")); + ModelHostObject, visionHostFunction<&Model::generateFromFrame>, + "generateFromFrame")); } if constexpr (meta::HasGenerateFromPixels) { diff --git a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h index 8290a810b..a48aa0119 100644 --- a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h +++ b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h @@ -3,12 +3,39 @@ #include #include #include +#include #include namespace rnexecutorch::meta { using namespace facebook; +// ========================================================================= +// 1. Function Traits (Extracts Arity, Return Type, Args) +// ========================================================================= + +template struct FunctionTraits; + +// Specialization for Member Functions +template +struct FunctionTraits { + static constexpr std::size_t arity = sizeof...(Args); + using return_type = R; + using args_tuple = std::tuple; +}; + +// Specialization for const Member Functions +template +struct FunctionTraits { + static constexpr std::size_t arity = sizeof...(Args); + using return_type = R; + using args_tuple = std::tuple; +}; + +// ========================================================================= +// 2. Argument Counting Helpers +// ========================================================================= + template constexpr std::size_t getArgumentCount(R (Model::*f)(Types...)) { return sizeof...(Types); @@ -19,6 +46,10 @@ constexpr std::size_t getArgumentCount(R (Model::*f)(Types...) const) { return sizeof...(Types); } +// ========================================================================= +// 3. JSI -> Tuple Conversion Logic +// ========================================================================= + template std::tuple fillTupleFromArgs(std::index_sequence, const jsi::Value *args, @@ -31,7 +62,6 @@ std::tuple fillTupleFromArgs(std::index_sequence, * arguments for method supplied with a pointer. The types in the tuple are * inferred from the method pointer. */ - template std::tuple createArgsTupleFromJsi(R (Model::*f)(Types...), const jsi::Value *args, @@ -47,4 +77,37 @@ std::tuple createArgsTupleFromJsi(R (Model::*f)(Types...) const, return fillTupleFromArgs(std::index_sequence_for{}, args, runtime); } -} // namespace rnexecutorch::meta \ No newline at end of file + +// Overload for free functions (used by TailSignature dummy) +template +std::tuple createArgsTupleFromJsi(void (*f)(Types...), + const jsi::Value *args, + jsi::Runtime &runtime) { + return fillTupleFromArgs(std::index_sequence_for{}, args, + runtime); +} + +// ========================================================================= +// 4. Tail Signature Helper (Crucial for Vision Functions) +// ========================================================================= + +// Extracts the "Tail" arguments of a function signature, skipping the first +// two arguments (Runtime and FrameValue). +template struct TailSignature; + +// Non-const member function specialization +template +struct TailSignature { + // A dummy function that has the signature of just the "Rest" arguments. + static void dummy(Rest...) {} +}; + +// Const member function specialization +template +struct TailSignature { + static void dummy(Rest...) {} +}; + +} // namespace rnexecutorch::meta diff --git a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h index 8100a471b..f625bf6e7 100644 --- a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h +++ b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h @@ -21,6 +21,11 @@ concept HasGenerateFromPixels = requires(T t) { { &T::generateFromPixels }; }; +template +concept HasGenerateFromFrame = requires(T t) { + { &T::generateFromFrame }; +}; + template concept HasEncode = requires(T t) { { &T::encode }; From 0c26a5ceb50c2df8c8d0200c6d543d872cc147ea Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Fri, 20 Feb 2026 09:27:37 +0100 Subject: [PATCH 12/26] fix: remove redundant preprocessing step --- .../common/rnexecutorch/models/VisionModel.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp index 8155b8819..a81518921 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp @@ -11,12 +11,8 @@ using namespace facebook; cv::Mat VisionModel::extractFromFrame(jsi::Runtime &runtime, const jsi::Value &frameData) const { - // Extract frame using FrameProcessor utility auto frameObj = frameData.asObject(runtime); - cv::Mat frame = utils::FrameProcessor::extractFrame(runtime, frameObj); - - // Apply model-specific preprocessing - return preprocessFrame(frame); + return ::rnexecutorch::utils::FrameProcessor::extractFrame(runtime, frameObj); } cv::Mat VisionModel::extractFromPixels(const JSTensorViewIn &tensorView) const { From c09c65313a71e21cb2318e1799f485a5741f942a Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Mon, 23 Feb 2026 11:46:18 +0100 Subject: [PATCH 13/26] refactor: changes suggested in review --- .cspell-wordlist.txt | 2 + .../rnexecutorch/RnExecutorchInstaller.h | 3 - .../rnexecutorch/models/VisionModel.cpp | 18 +-- .../common/rnexecutorch/models/VisionModel.h | 24 +--- .../object_detection/ObjectDetection.cpp | 41 +------ .../models/object_detection/ObjectDetection.h | 1 - .../rnexecutorch/utils/FrameExtractor.cpp | 50 ++++---- .../rnexecutorch/utils/FrameExtractor.h | 61 +++------- .../rnexecutorch/utils/FrameProcessor.cpp | 102 ++--------------- .../rnexecutorch/utils/FrameProcessor.h | 108 +++--------------- .../src/hooks/useModule.ts | 1 - .../modules/computer_vision/VisionModule.ts | 27 +++-- 12 files changed, 90 insertions(+), 348 deletions(-) diff --git a/.cspell-wordlist.txt b/.cspell-wordlist.txt index 35e679504..f171efaf0 100644 --- a/.cspell-wordlist.txt +++ b/.cspell-wordlist.txt @@ -119,3 +119,5 @@ IMAGENET lraspp LRASPP worklet +worklets +BGRA diff --git a/packages/react-native-executorch/common/rnexecutorch/RnExecutorchInstaller.h b/packages/react-native-executorch/common/rnexecutorch/RnExecutorchInstaller.h index 80b7d18b3..54e8c1cbb 100644 --- a/packages/react-native-executorch/common/rnexecutorch/RnExecutorchInstaller.h +++ b/packages/react-native-executorch/common/rnexecutorch/RnExecutorchInstaller.h @@ -54,9 +54,6 @@ class RnExecutorchInstaller { meta::createConstructorArgsWithCallInvoker( args, runtime, jsCallInvoker); - // This unpacks the tuple and calls the constructor directly inside - // make_shared. It avoids creating a temporary object, so no - // move/copy is required. auto modelImplementationPtr = std::apply( [](auto &&...unpackedArgs) { return std::make_shared( diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp index a81518921..b88310e12 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.cpp @@ -4,19 +4,17 @@ #include #include -namespace rnexecutorch { -namespace models { +namespace rnexecutorch::models { using namespace facebook; cv::Mat VisionModel::extractFromFrame(jsi::Runtime &runtime, const jsi::Value &frameData) const { auto frameObj = frameData.asObject(runtime); - return ::rnexecutorch::utils::FrameProcessor::extractFrame(runtime, frameObj); + return ::rnexecutorch::utils::extractFrame(runtime, frameObj); } cv::Mat VisionModel::extractFromPixels(const JSTensorViewIn &tensorView) const { - // Validate dimensions: sizes must be [height, width, channels] if (tensorView.sizes.size() != 3) { char errorMessage[100]; std::snprintf(errorMessage, sizeof(errorMessage), @@ -27,11 +25,10 @@ cv::Mat VisionModel::extractFromPixels(const JSTensorViewIn &tensorView) const { errorMessage); } - int height = tensorView.sizes[0]; - int width = tensorView.sizes[1]; - int channels = tensorView.sizes[2]; + int32_t height = tensorView.sizes[0]; + int32_t width = tensorView.sizes[1]; + int32_t channels = tensorView.sizes[2]; - // Pixel data must be RGB (3 channels) and BYTE type if (channels != 3) { char errorMessage[100]; std::snprintf(errorMessage, sizeof(errorMessage), @@ -47,13 +44,10 @@ cv::Mat VisionModel::extractFromPixels(const JSTensorViewIn &tensorView) const { "Invalid pixel data: scalarType must be BYTE (Uint8Array)"); } - // Create cv::Mat directly from dataPtr (zero-copy view) - // Data is valid for the duration of this synchronous call uint8_t *dataPtr = static_cast(tensorView.dataPtr); cv::Mat image(height, width, CV_8UC3, dataPtr); return image; } -} // namespace models -} // namespace rnexecutorch +} // namespace rnexecutorch::models diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h index c362d745f..82d544db3 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h @@ -18,17 +18,13 @@ namespace models { * process camera frames in real-time (e.g., at 30fps). * * Thread Safety: - * - All inference operations are protected by a mutex - * - generateFromFrame() uses try_lock() to skip frames when the model is busy - * - This prevents blocking the camera thread and maintains smooth frame rates + * - All inference operations are protected by a mutex via scoped_lock * * Usage: * Subclasses should: * 1. Inherit from VisionModel instead of BaseModel * 2. Implement preprocessFrame() with model-specific preprocessing - * 3. Use inference_mutex_ when calling forward() in custom generate methods - * 4. Use lock_guard for blocking operations (JS API) - * 5. Use try_lock() for non-blocking operations (camera API) + * 3. Delegate to runInference() which handles locking internally * * Example: * @code @@ -36,18 +32,9 @@ namespace models { * public: * std::unordered_map * generateFromFrame(jsi::Runtime& runtime, const jsi::Value& frameValue) { - * // try_lock is handled automatically * auto frameObject = frameValue.asObject(runtime); - * cv::Mat frame = FrameExtractor::extractFrame(runtime, frameObject); - * - * // Lock before inference - * if (!inference_mutex_.try_lock()) { - * return {}; // Skip frame if busy - * } - * std::lock_guard lock(inference_mutex_, std::adopt_lock); - * - * auto preprocessed = preprocessFrame(frame); - * // ... run inference + * cv::Mat frame = utils::extractFrame(runtime, frameObject); + * return runInference(frame); * } * }; * @endcode @@ -64,9 +51,6 @@ class VisionModel : public BaseModel { std::shared_ptr callInvoker) : BaseModel(modelSource, callInvoker) {} - /** - * @brief Virtual destructor for proper cleanup in derived classes - */ virtual ~VisionModel() = default; protected: diff --git a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp index f17a4f074..1ae2460c3 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp @@ -33,26 +33,19 @@ ObjectDetection::ObjectDetection( } cv::Mat ObjectDetection::preprocessFrame(const cv::Mat &frame) const { - // Get target size from model input shape const std::vector tensorDims = getAllInputShapes()[0]; cv::Size tensorSize = cv::Size(tensorDims[tensorDims.size() - 1], tensorDims[tensorDims.size() - 2]); cv::Mat rgb; - // Convert RGBA/BGRA to RGB if needed (for VisionCamera frames) if (frame.channels() == 4) { -// Platform-specific color conversion: -// iOS uses BGRA format, Android uses RGBA format #ifdef __APPLE__ - // iOS: BGRA → RGB cv::cvtColor(frame, rgb, cv::COLOR_BGRA2RGB); #else - // Android: RGBA → RGB cv::cvtColor(frame, rgb, cv::COLOR_RGBA2RGB); #endif } else if (frame.channels() == 3) { - // Already RGB rgb = frame; } else { char errorMessage[100]; @@ -113,15 +106,11 @@ ObjectDetection::postprocess(const std::vector &tensors, std::vector ObjectDetection::runInference(cv::Mat image, double detectionThreshold) { - std::lock_guard lock(inference_mutex_); + std::scoped_lock lock(inference_mutex_); - // Store original size for postprocessing cv::Size originalSize = image.size(); - - // Preprocess the image using model-specific preprocessing cv::Mat preprocessed = preprocessFrame(image); - // Create tensor and run inference const std::vector tensorDims = getAllInputShapes()[0]; auto inputTensor = image_processing::getTensorFromMatrix(tensorDims, preprocessed); @@ -139,14 +128,11 @@ ObjectDetection::runInference(cv::Mat image, double detectionThreshold) { std::vector ObjectDetection::generateFromString(std::string imageSource, double detectionThreshold) { - // Read image using OpenCV (BGR format) - cv::Mat image = image_processing::readImage(imageSource); + cv::Mat imageBGR = image_processing::readImage(imageSource); - // Convert BGR to RGB (OpenCV imread returns BGR) cv::Mat imageRGB; - cv::cvtColor(image, imageRGB, cv::COLOR_BGR2RGB); + cv::cvtColor(imageBGR, imageRGB, cv::COLOR_BGR2RGB); - // Use the internal helper - it handles locking, preprocessing, and inference return runInference(imageRGB, detectionThreshold); } @@ -154,22 +140,9 @@ std::vector ObjectDetection::generateFromFrame(jsi::Runtime &runtime, const jsi::Value &frameData, double detectionThreshold) { - // Try-lock: skip frame if model is busy (non-blocking for camera) - if (!inference_mutex_.try_lock()) { - return {}; // Return empty vector, don't block camera thread - } + auto frameObj = frameData.asObject(runtime); + cv::Mat frame = rnexecutorch::utils::extractFrame(runtime, frameObj); - // Extract frame (under lock to ensure thread safety) - cv::Mat frame; - { - std::lock_guard lock(inference_mutex_, std::adopt_lock); - auto frameObj = frameData.asObject(runtime); - frame = - rnexecutorch::utils::FrameProcessor::extractFrame(runtime, frameObj); - } - // Lock is automatically released here when going out of scope - - // Use the internal helper - it handles locking, preprocessing, and inference return runInference(frame, detectionThreshold); } @@ -177,14 +150,10 @@ std::vector ObjectDetection::generateFromPixels(jsi::Runtime &runtime, const jsi::Value &pixelData, double detectionThreshold) { - // Convert JSI value to JSTensorViewIn auto tensorView = jsi_conversion::getValue(pixelData, runtime); - - // Extract raw pixel data to cv::Mat cv::Mat image = extractFromPixels(tensorView); - // Use the internal helper - it handles locking, preprocessing, and inference return runInference(image, detectionThreshold); } } // namespace rnexecutorch::models::object_detection \ No newline at end of file diff --git a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h index fc554003b..bf231ff0b 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h @@ -30,7 +30,6 @@ class ObjectDetection : public VisionModel { double detectionThreshold); protected: - // Internal helper for shared preprocessing and inference logic std::vector runInference(cv::Mat image, double detectionThreshold); cv::Mat preprocessFrame(const cv::Mat &frame) const override; diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp index 900eae297..3b31bc10f 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp @@ -7,52 +7,35 @@ #import #endif -#ifdef __ANDROID__ -#if __ANDROID_API__ >= 26 +#if defined(__ANDROID__) && __ANDROID_API__ >= 26 #include #endif -#endif -namespace rnexecutorch { -namespace utils { +namespace rnexecutorch::utils { -cv::Mat FrameExtractor::extractFromNativeBuffer(uint64_t bufferPtr) { -#ifdef __APPLE__ - return extractFromCVPixelBuffer(reinterpret_cast(bufferPtr)); -#elif defined(__ANDROID__) - return extractFromAHardwareBuffer(reinterpret_cast(bufferPtr)); -#else - throw RnExecutorchError(RnExecutorchErrorCode::NotSupported, - "NativeBuffer not supported on this platform"); -#endif -} +namespace { #ifdef __APPLE__ -cv::Mat FrameExtractor::extractFromCVPixelBuffer(void *pixelBuffer) { +cv::Mat extractFromCVPixelBuffer(void *pixelBuffer) { CVPixelBufferRef buffer = static_cast(pixelBuffer); - // Get buffer properties size_t width = CVPixelBufferGetWidth(buffer); size_t height = CVPixelBufferGetHeight(buffer); size_t bytesPerRow = CVPixelBufferGetBytesPerRow(buffer); OSType pixelFormat = CVPixelBufferGetPixelFormatType(buffer); - // Lock the buffer (Vision Camera should have already locked it, but ensure) CVPixelBufferLockBaseAddress(buffer, kCVPixelBufferLock_ReadOnly); void *baseAddress = CVPixelBufferGetBaseAddress(buffer); cv::Mat mat; if (pixelFormat == kCVPixelFormatType_32BGRA) { - // BGRA format (most common on iOS when using pixelFormat: 'rgb') mat = cv::Mat(static_cast(height), static_cast(width), CV_8UC4, baseAddress, bytesPerRow); } else if (pixelFormat == kCVPixelFormatType_32RGBA) { - // RGBA format mat = cv::Mat(static_cast(height), static_cast(width), CV_8UC4, baseAddress, bytesPerRow); } else if (pixelFormat == kCVPixelFormatType_24RGB) { - // RGB format mat = cv::Mat(static_cast(height), static_cast(width), CV_8UC3, baseAddress, bytesPerRow); } else { @@ -72,15 +55,13 @@ cv::Mat FrameExtractor::extractFromCVPixelBuffer(void *pixelBuffer) { #endif #ifdef __ANDROID__ -cv::Mat FrameExtractor::extractFromAHardwareBuffer(void *hardwareBuffer) { +cv::Mat extractFromAHardwareBuffer(void *hardwareBuffer) { #if __ANDROID_API__ >= 26 AHardwareBuffer *buffer = static_cast(hardwareBuffer); - // Get buffer description AHardwareBuffer_Desc desc; AHardwareBuffer_describe(buffer, &desc); - // Lock the buffer for CPU read access void *data = nullptr; int lockResult = AHardwareBuffer_lock( buffer, AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN, -1, nullptr, &data); @@ -93,13 +74,10 @@ cv::Mat FrameExtractor::extractFromAHardwareBuffer(void *hardwareBuffer) { cv::Mat mat; if (desc.format == AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM) { - // RGBA format (expected when using pixelFormat: 'rgb' on Android) mat = cv::Mat(desc.height, desc.width, CV_8UC4, data, desc.stride * 4); } else if (desc.format == AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM) { - // RGBX format (treated as RGBA) mat = cv::Mat(desc.height, desc.width, CV_8UC4, data, desc.stride * 4); } else if (desc.format == AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM) { - // RGB format (less common) mat = cv::Mat(desc.height, desc.width, CV_8UC3, data, desc.stride * 3); } else { AHardwareBuffer_unlock(buffer, nullptr); @@ -118,7 +96,19 @@ cv::Mat FrameExtractor::extractFromAHardwareBuffer(void *hardwareBuffer) { "AHardwareBuffer requires Android API 26+"); #endif // __ANDROID_API__ >= 26 } -#endif // __ANDROID__ +#endif + +} // namespace + +cv::Mat extractFromNativeBuffer(uint64_t bufferPtr) { +#ifdef __APPLE__ + return extractFromCVPixelBuffer(reinterpret_cast(bufferPtr)); +#elif defined(__ANDROID__) + return extractFromAHardwareBuffer(reinterpret_cast(bufferPtr)); +#else + throw RnExecutorchError(RnExecutorchErrorCode::NotSupported, + "NativeBuffer not supported on this platform"); +#endif +} -} // namespace utils -} // namespace rnexecutorch +} // namespace rnexecutorch::utils diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.h b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.h index a90e6ad23..f5d7c2094 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.h +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.h @@ -3,58 +3,23 @@ #include #include -namespace rnexecutorch { -namespace utils { +namespace rnexecutorch::utils { /** - * @brief Utility class for extracting cv::Mat from native platform buffers + * @brief Extract cv::Mat from a native platform buffer pointer (zero-copy) * - * Provides zero-copy extraction of frames from: + * Dispatches to the platform-specific implementation: * - iOS: CVPixelBufferRef * - Android: AHardwareBuffer + * + * @param bufferPtr Platform-specific buffer pointer (uint64_t) + * @return cv::Mat wrapping the buffer data (zero-copy) + * + * @throws RnExecutorchError if the platform is unsupported or extraction fails + * + * @note The returned cv::Mat does not own the data. + * Caller must ensure the buffer remains valid during use. */ -class FrameExtractor { -public: - /** - * @brief Extract cv::Mat from a native buffer pointer - * - * @param bufferPtr Platform-specific buffer pointer (uint64_t) - * - iOS: CVPixelBufferRef - * - Android: AHardwareBuffer* - * @return cv::Mat wrapping the buffer data (zero-copy) - * - * @note The returned cv::Mat does not own the data. - * The caller must ensure the buffer remains valid. - * @note The buffer must be locked before calling and unlocked after use. - */ - static cv::Mat extractFromNativeBuffer(uint64_t bufferPtr); - -#ifdef __APPLE__ - /** - * @brief Extract cv::Mat from CVPixelBuffer (iOS) - * - * @param pixelBuffer CVPixelBufferRef pointer - * @return cv::Mat wrapping the pixel buffer data - * - * @note Assumes buffer is already locked by Vision Camera - * @note Supports kCVPixelFormatType_32BGRA and kCVPixelFormatType_24RGB - */ - static cv::Mat extractFromCVPixelBuffer(void *pixelBuffer); -#endif - -#ifdef __ANDROID__ - /** - * @brief Extract cv::Mat from AHardwareBuffer (Android) - * - * @param hardwareBuffer AHardwareBuffer* pointer - * @return cv::Mat wrapping the hardware buffer data - * - * @note Assumes buffer is already locked by Vision Camera - * @note Supports AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM and R8G8B8_UNORM - */ - static cv::Mat extractFromAHardwareBuffer(void *hardwareBuffer); -#endif -}; +cv::Mat extractFromNativeBuffer(uint64_t bufferPtr); -} // namespace utils -} // namespace rnexecutorch +} // namespace rnexecutorch::utils diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp index 5e593dfd0..30238ad5c 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.cpp @@ -2,105 +2,27 @@ #include "FrameExtractor.h" #include #include -#include -namespace rnexecutorch { -namespace utils { +namespace rnexecutorch::utils { -cv::Mat FrameProcessor::extractFrame(jsi::Runtime &runtime, - const jsi::Object &frameData) { - // Try zero-copy path first (nativeBuffer) - // Native buffer contains dimensions, so we don't need width/height properties - if (hasNativeBuffer(runtime, frameData)) { - try { - return extractFromNativeBuffer(runtime, frameData); - } catch (const std::exception &e) { - // Fallback to ArrayBuffer on failure - } - } - - // Fallback to ArrayBuffer path (with copy) - // Get frame dimensions for ArrayBuffer path - if (frameData.hasProperty(runtime, "data")) { - int width = - static_cast(frameData.getProperty(runtime, "width").asNumber()); - int height = - static_cast(frameData.getProperty(runtime, "height").asNumber()); - return extractFromArrayBuffer(runtime, frameData, width, height); - } +namespace { - // No valid frame data source - throw RnExecutorchError( - RnExecutorchErrorCode::InvalidUserInput, - "FrameProcessor: No valid frame data (neither nativeBuffer nor data " - "property found)"); +bool hasNativeBuffer(jsi::Runtime &runtime, const jsi::Object &frameData) { + return frameData.hasProperty(runtime, "nativeBuffer"); } -cv::Size FrameProcessor::getFrameSize(jsi::Runtime &runtime, - const jsi::Object &frameData) { - if (!frameData.hasProperty(runtime, "width") || - !frameData.hasProperty(runtime, "height")) { - throw RnExecutorchError( - RnExecutorchErrorCode::InvalidUserInput, - "FrameProcessor: Frame data missing width or height property"); - } - - int width = - static_cast(frameData.getProperty(runtime, "width").asNumber()); - int height = - static_cast(frameData.getProperty(runtime, "height").asNumber()); - - return cv::Size(width, height); -} +} // namespace -bool FrameProcessor::hasNativeBuffer(jsi::Runtime &runtime, - const jsi::Object &frameData) { - return frameData.hasProperty(runtime, "nativeBuffer"); -} +cv::Mat extractFrame(jsi::Runtime &runtime, const jsi::Object &frameData) { + if (!hasNativeBuffer(runtime, frameData)) { + throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, + "FrameProcessor: No nativeBuffer found in frame"); + } -cv::Mat FrameProcessor::extractFromNativeBuffer(jsi::Runtime &runtime, - const jsi::Object &frameData) { auto nativeBufferValue = frameData.getProperty(runtime, "nativeBuffer"); - - // Handle bigint pointer value from JavaScript uint64_t bufferPtr = static_cast( nativeBufferValue.asBigInt(runtime).asUint64(runtime)); - // Use FrameExtractor to get cv::Mat from platform-specific buffer - // Native buffer contains all metadata (width, height, format) - return FrameExtractor::extractFromNativeBuffer(bufferPtr); -} - -cv::Mat FrameProcessor::extractFromArrayBuffer(jsi::Runtime &runtime, - const jsi::Object &frameData, - int width, int height) { - auto pixelData = frameData.getProperty(runtime, "data"); - auto arrayBuffer = pixelData.asObject(runtime).getArrayBuffer(runtime); - uint8_t *data = arrayBuffer.data(runtime); - size_t bufferSize = arrayBuffer.size(runtime); - - // Determine format based on buffer size - size_t stride = bufferSize / height; - size_t expectedRGBAStride = width * 4; - size_t expectedRGBStride = width * 3; - - if (stride == expectedRGBAStride || bufferSize >= width * height * 4) { - // RGBA format with potential padding - return cv::Mat(height, width, CV_8UC4, data, stride); - } else if (stride >= expectedRGBStride) { - // RGB format - return cv::Mat(height, width, CV_8UC3, data, stride); - } else { - char errorMessage[200]; - std::snprintf( - errorMessage, sizeof(errorMessage), - "FrameProcessor: Unexpected buffer size - expected %zu or %zu bytes " - "per row, got %zu", - expectedRGBStride, expectedRGBAStride, stride); - throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, - errorMessage); - } + return extractFromNativeBuffer(bufferPtr); } - -} // namespace utils -} // namespace rnexecutorch +} // namespace rnexecutorch::utils diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h index 0838b6594..403f4bde9 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameProcessor.h @@ -3,107 +3,25 @@ #include #include -namespace rnexecutorch { -namespace utils { +namespace rnexecutorch::utils { using namespace facebook; /** - * @brief Utility class for processing camera frames from VisionCamera + * @brief Extract cv::Mat from VisionCamera frame data via nativeBuffer * - * Provides high-level helpers for extracting and working with frames from - * react-native-vision-camera in a consistent way across all vision models. + * @param runtime JSI runtime + * @param frameData JSI object containing frame data from VisionCamera + * Expected properties: + * - nativeBuffer: BigInt pointer to native buffer * - * This class abstracts away the complexity of: - * - Handling both nativeBuffer (zero-copy) and ArrayBuffer (with copy) paths - * - Platform-specific buffer formats (CVPixelBuffer on iOS, AHardwareBuffer - * on Android) - * - JSI object property access and type conversions + * @return cv::Mat wrapping the frame data (zero-copy) * - * Usage: - * @code - * auto frameObj = frameData.asObject(runtime); - * cv::Mat frame = FrameProcessor::extractFrame(runtime, frameObj); - * cv::Size size = FrameProcessor::getFrameSize(runtime, frameObj); - * @endcode + * @throws RnExecutorchError if nativeBuffer is not present or extraction fails + * + * @note The returned cv::Mat does not own the data. + * Caller must ensure the source frame remains valid during use. */ -class FrameProcessor { -public: - /** - * @brief Extract cv::Mat from VisionCamera frame data - * - * Handles both zero-copy (nativeBuffer) and copy-based (ArrayBuffer) paths - * automatically. Prefers nativeBuffer when available for best performance. - * - * @param runtime JSI runtime - * @param frameData JSI object containing frame data from VisionCamera - * Expected properties: - * - nativeBuffer (optional): BigInt pointer to native buffer - * - data (optional): ArrayBuffer with pixel data - * - width: number - * - height: number - * - * @return cv::Mat wrapping or containing the frame data - * - * @throws RnExecutorchError if neither nativeBuffer nor data is available - * @throws RnExecutorchError if nativeBuffer extraction fails - * - * @note The returned cv::Mat may not own the data (zero-copy path). - * Caller must ensure the source frame remains valid during use. - */ - static cv::Mat extractFrame(jsi::Runtime &runtime, - const jsi::Object &frameData); - - /** - * @brief Get frame dimensions from VisionCamera frame data - * - * @param runtime JSI runtime - * @param frameData JSI object containing frame data - * - * @return cv::Size with frame width and height - * - * @throws RnExecutorchError if width or height properties are missing - */ - static cv::Size getFrameSize(jsi::Runtime &runtime, - const jsi::Object &frameData); - - /** - * @brief Check if frame data has nativeBuffer (zero-copy path available) - * - * @param runtime JSI runtime - * @param frameData JSI object containing frame data - * @return true if nativeBuffer is available, false otherwise - */ - static bool hasNativeBuffer(jsi::Runtime &runtime, - const jsi::Object &frameData); - -private: - /** - * @brief Extract frame from nativeBuffer pointer (zero-copy) - * - * Native buffer contains all metadata (width, height, format), so no need to - * pass dimensions separately. - * - * @param runtime JSI runtime - * @param frameData JSI object with nativeBuffer property - * @return cv::Mat wrapping the native buffer data - */ - static cv::Mat extractFromNativeBuffer(jsi::Runtime &runtime, - const jsi::Object &frameData); - - /** - * @brief Extract frame from ArrayBuffer (with copy) - * - * @param runtime JSI runtime - * @param frameData JSI object with data property - * @param width Frame width - * @param height Frame height - * @return cv::Mat containing or wrapping the array buffer data - */ - static cv::Mat extractFromArrayBuffer(jsi::Runtime &runtime, - const jsi::Object &frameData, int width, - int height); -}; +cv::Mat extractFrame(jsi::Runtime &runtime, const jsi::Object &frameData); -} // namespace utils -} // namespace rnexecutorch +} // namespace rnexecutorch::utils diff --git a/packages/react-native-executorch/src/hooks/useModule.ts b/packages/react-native-executorch/src/hooks/useModule.ts index f5f260787..82a0bb72f 100644 --- a/packages/react-native-executorch/src/hooks/useModule.ts +++ b/packages/react-native-executorch/src/hooks/useModule.ts @@ -48,7 +48,6 @@ export const useModule = < }); if (isMounted) setIsReady(true); - // Extract runOnFrame worklet from VisionModule if available // Use "state trick" to make the worklet serializable for VisionCamera if ('runOnFrame' in moduleInstance) { const worklet = moduleInstance.runOnFrame; diff --git a/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts index d6a0038ee..eabe50ab0 100644 --- a/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts +++ b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts @@ -15,6 +15,20 @@ import { Frame, PixelData, ScalarType } from '../../types/common'; * * @category Typescript API */ +function isPixelData(input: unknown): input is PixelData { + return ( + typeof input === 'object' && + input !== null && + 'dataPtr' in input && + input.dataPtr instanceof Uint8Array && + 'sizes' in input && + Array.isArray(input.sizes) && + input.sizes.length === 3 && + 'scalarType' in input && + input.scalarType === ScalarType.BYTE + ); +} + export abstract class VisionModule extends BaseModule { /** * Synchronous worklet function for real-time VisionCamera frame processing. @@ -111,19 +125,8 @@ export abstract class VisionModule extends BaseModule { // Type detection and routing if (typeof input === 'string') { - // String path → generateFromString() return await this.nativeModule.generateFromString(input, ...args); - } else if ( - typeof input === 'object' && - 'dataPtr' in input && - input.dataPtr instanceof Uint8Array && - 'sizes' in input && - Array.isArray(input.sizes) && - input.sizes.length === 3 && - 'scalarType' in input && - input.scalarType === ScalarType.BYTE - ) { - // Pixel data → generateFromPixels() + } else if (isPixelData(input)) { return await this.nativeModule.generateFromPixels(input, ...args); } else { throw new RnExecutorchError( From 6491f245f154c94496f10e75bd0760ce090c4e97 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Mon, 23 Feb 2026 13:00:39 +0100 Subject: [PATCH 14/26] fix: not existing error type, add comments to JSI code --- .../host_objects/ModelHostObject.h | 60 +++++++++-------- .../metaprogramming/FunctionHelpers.h | 66 ++++++++----------- .../rnexecutorch/utils/FrameExtractor.cpp | 7 +- 3 files changed, 60 insertions(+), 73 deletions(-) diff --git a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h index 3190bc6f4..abf920223 100644 --- a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h +++ b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h @@ -46,13 +46,6 @@ template class ModelHostObject : public JsiHostObject { "getInputShape")); } - if constexpr (meta::HasGenerateFromString) { - addFunctions( - JSI_EXPORT_FUNCTION(ModelHostObject, - promiseHostFunction<&Model::generateFromString>, - "generateFromString")); - } - if constexpr (meta::HasEncode) { addFunctions(JSI_EXPORT_FUNCTION(ModelHostObject, promiseHostFunction<&Model::encode>, @@ -172,6 +165,13 @@ template class ModelHostObject : public JsiHostObject { "stream")); } + if constexpr (meta::HasGenerateFromString) { + addFunctions( + JSI_EXPORT_FUNCTION(ModelHostObject, + promiseHostFunction<&Model::generateFromString>, + "generateFromString")); + } + if constexpr (meta::HasGenerateFromFrame) { addFunctions(JSI_EXPORT_FUNCTION( ModelHostObject, visionHostFunction<&Model::generateFromFrame>, @@ -181,7 +181,7 @@ template class ModelHostObject : public JsiHostObject { if constexpr (meta::HasGenerateFromPixels) { addFunctions( JSI_EXPORT_FUNCTION(ModelHostObject, - visionHostFunction<&Model::generateFromPixels>, + promiseHostFunction<&Model::generateFromPixels>, "generateFromPixels")); } } @@ -233,36 +233,40 @@ template class ModelHostObject : public JsiHostObject { } } + /** + * Unlike promiseHostFunction, this runs synchronously on the JS thread, + * which is required for VisionCamera worklet frame processors. + * + * The key challenge is argument mapping: the C++ function takes + * (Runtime, frameData, Rest...) but from the JS side, Runtime is injected + * automatically and frameData is JS args[0]. The remaining args (Rest...) + * map to JS args[1..N]. + * + * This is achieved via TailSignature: it extracts the Rest... parameter pack + * from the function pointer type, creates a dummy free function with only + * those types, then uses createArgsTupleFromJsi on that dummy to convert + * args[1..N] — bypassing the manually-handled frameData at args[0]. + * + * Argument mapping: + * C++ params: (Runtime&, frameData, Rest[0], Rest[1], ...) + * JS args: ( args[0], args[1], args[2], ...) + * JS arg count = C++ arity - 1 (Runtime is injected, not counted) + * + */ template JSI_HOST_FUNCTION(visionHostFunction) { - // 1. Check Argument Count - // (We rely on our new FunctionTraits) constexpr std::size_t cppArgCount = meta::FunctionTraits::arity; - - // We expect JS args = (Total C++ Args) - (2 injected args: Runtime + Value) constexpr std::size_t expectedJsArgs = cppArgCount - 1; - log(LOG_LEVEL::Debug, cppArgCount, count); + if (count != expectedJsArgs) { throw jsi::JSError(runtime, "Argument count mismatch in vision function"); } try { - // 2. The Magic Trick - // We get a pointer to a dummy function: void dummy(Rest...) {} - // This function has exactly the signature of the arguments we want to - // parse. auto dummyFuncPtr = &meta::TailSignature::dummy; - - // 3. Let existing helpers do the work - // We pass the dummy pointer. The helper inspects its arguments (Rest...) - // and converts args[0]...args[N] accordingly. - // Note: We pass (args + 1) because JS args[0] is the PixelData, which we - // handle manually. Note: We use expectedJsArgs - 1 because we skipped one - // JS arg. auto tailArgsTuple = meta::createArgsTupleFromJsi(dummyFuncPtr, args + 1, runtime); - // 4. Invoke using ReturnType = typename meta::FunctionTraits::return_type; @@ -270,10 +274,8 @@ template class ModelHostObject : public JsiHostObject { std::apply( [&](auto &&...tailArgs) { (model.get()->*FnPtr)( - runtime, - args[0], // 1. PixelData (Manually passed) - std::forward( - tailArgs)...); // 2. The rest (Auto parsed) + runtime, args[0], + std::forward(tailArgs)...); }, std::move(tailArgsTuple)); return jsi::Value::undefined(); diff --git a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h index a48aa0119..88bf04bf0 100644 --- a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h +++ b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h @@ -10,32 +10,6 @@ namespace rnexecutorch::meta { using namespace facebook; -// ========================================================================= -// 1. Function Traits (Extracts Arity, Return Type, Args) -// ========================================================================= - -template struct FunctionTraits; - -// Specialization for Member Functions -template -struct FunctionTraits { - static constexpr std::size_t arity = sizeof...(Args); - using return_type = R; - using args_tuple = std::tuple; -}; - -// Specialization for const Member Functions -template -struct FunctionTraits { - static constexpr std::size_t arity = sizeof...(Args); - using return_type = R; - using args_tuple = std::tuple; -}; - -// ========================================================================= -// 2. Argument Counting Helpers -// ========================================================================= - template constexpr std::size_t getArgumentCount(R (Model::*f)(Types...)) { return sizeof...(Types); @@ -46,10 +20,6 @@ constexpr std::size_t getArgumentCount(R (Model::*f)(Types...) const) { return sizeof...(Types); } -// ========================================================================= -// 3. JSI -> Tuple Conversion Logic -// ========================================================================= - template std::tuple fillTupleFromArgs(std::index_sequence, const jsi::Value *args, @@ -62,6 +32,7 @@ std::tuple fillTupleFromArgs(std::index_sequence, * arguments for method supplied with a pointer. The types in the tuple are * inferred from the method pointer. */ + template std::tuple createArgsTupleFromJsi(R (Model::*f)(Types...), const jsi::Value *args, @@ -78,7 +49,9 @@ std::tuple createArgsTupleFromJsi(R (Model::*f)(Types...) const, runtime); } -// Overload for free functions (used by TailSignature dummy) +// Free function overload used by visionHostFunction: accepts a dummy free +// function pointer whose parameter types (Rest...) are extracted by +// TailSignature and converted from JSI args. template std::tuple createArgsTupleFromJsi(void (*f)(Types...), const jsi::Value *args, @@ -87,27 +60,40 @@ std::tuple createArgsTupleFromJsi(void (*f)(Types...), runtime); } -// ========================================================================= -// 4. Tail Signature Helper (Crucial for Vision Functions) -// ========================================================================= +// Extracts arity, return type, and argument types from a member function +// pointer at compile time. Used by visionHostFunction to determine the expected +// JS argument count and invoke the correct return path. +template struct FunctionTraits; + +template +struct FunctionTraits { + static constexpr std::size_t arity = sizeof...(Args); + using return_type = R; + using args_tuple = std::tuple; +}; + +template +struct FunctionTraits { + static constexpr std::size_t arity = sizeof...(Args); + using return_type = R; + using args_tuple = std::tuple; +}; -// Extracts the "Tail" arguments of a function signature, skipping the first -// two arguments (Runtime and FrameValue). +// Strips the first two parameters (Runtime& and jsi::Value&) from a member +// function pointer and exposes the remaining types as a dummy free function. +// Used by visionHostFunction to parse only the tail JS args via +// createArgsTupleFromJsi, while frameData at args[0] is passed manually. template struct TailSignature; -// Non-const member function specialization template struct TailSignature { - // A dummy function that has the signature of just the "Rest" arguments. static void dummy(Rest...) {} }; -// Const member function specialization template struct TailSignature { static void dummy(Rest...) {} }; - } // namespace rnexecutorch::meta diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp index 3b31bc10f..51d206cdd 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp @@ -84,15 +84,14 @@ cv::Mat extractFromAHardwareBuffer(void *hardwareBuffer) { char errorMessage[100]; std::snprintf(errorMessage, sizeof(errorMessage), "Unsupported AHardwareBuffer format: %u", desc.format); - throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, - errorMessage); + throw RnExecutorchError(RnExecutorchErrorCode::UnknownError, errorMessage); } // Note: We don't unlock here - Vision Camera manages the lifecycle return mat; #else - throw RnExecutorchError(RnExecutorchErrorCode::NotSupported, + throw RnExecutorchError(RnExecutorchErrorCode::UnknownError, "AHardwareBuffer requires Android API 26+"); #endif // __ANDROID_API__ >= 26 } @@ -106,7 +105,7 @@ cv::Mat extractFromNativeBuffer(uint64_t bufferPtr) { #elif defined(__ANDROID__) return extractFromAHardwareBuffer(reinterpret_cast(bufferPtr)); #else - throw RnExecutorchError(RnExecutorchErrorCode::NotSupported, + throw RnExecutorchError(RnExecutorchErrorCode::UnknownError, "NativeBuffer not supported on this platform"); #endif } From 658c3e9c8b0690057680d7a37046cf3f19d5c684 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Mon, 23 Feb 2026 13:06:50 +0100 Subject: [PATCH 15/26] feat: add new PlatformNotSupported error --- .../common/rnexecutorch/ErrorCodes.h | 5 +++++ .../common/rnexecutorch/utils/FrameExtractor.cpp | 9 +++++---- .../react-native-executorch/src/errors/ErrorCodes.ts | 4 ++++ scripts/errors.config.ts | 4 ++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/react-native-executorch/common/rnexecutorch/ErrorCodes.h b/packages/react-native-executorch/common/rnexecutorch/ErrorCodes.h index f4fd2e7f0..d49f3a175 100644 --- a/packages/react-native-executorch/common/rnexecutorch/ErrorCodes.h +++ b/packages/react-native-executorch/common/rnexecutorch/ErrorCodes.h @@ -75,6 +75,11 @@ enum class RnExecutorchErrorCode : int32_t { * interruptions. */ DownloadInterrupted = 118, + /** + * Thrown when a feature or platform is not supported in the current + * environment. + */ + PlatformNotSupported = 119, /** * Thrown when an error occurs with the tokenizer or tokenization process. */ diff --git a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp index 51d206cdd..baae35dc3 100644 --- a/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/utils/FrameExtractor.cpp @@ -43,7 +43,7 @@ cv::Mat extractFromCVPixelBuffer(void *pixelBuffer) { char errorMessage[100]; std::snprintf(errorMessage, sizeof(errorMessage), "Unsupported CVPixelBuffer format: %u", pixelFormat); - throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, + throw RnExecutorchError(RnExecutorchErrorCode::PlatformNotSupported, errorMessage); } @@ -84,14 +84,15 @@ cv::Mat extractFromAHardwareBuffer(void *hardwareBuffer) { char errorMessage[100]; std::snprintf(errorMessage, sizeof(errorMessage), "Unsupported AHardwareBuffer format: %u", desc.format); - throw RnExecutorchError(RnExecutorchErrorCode::UnknownError, errorMessage); + throw RnExecutorchError(RnExecutorchErrorCode::PlatformNotSupported, + errorMessage); } // Note: We don't unlock here - Vision Camera manages the lifecycle return mat; #else - throw RnExecutorchError(RnExecutorchErrorCode::UnknownError, + throw RnExecutorchError(RnExecutorchErrorCode::PlatformNotSupported, "AHardwareBuffer requires Android API 26+"); #endif // __ANDROID_API__ >= 26 } @@ -105,7 +106,7 @@ cv::Mat extractFromNativeBuffer(uint64_t bufferPtr) { #elif defined(__ANDROID__) return extractFromAHardwareBuffer(reinterpret_cast(bufferPtr)); #else - throw RnExecutorchError(RnExecutorchErrorCode::UnknownError, + throw RnExecutorchError(RnExecutorchErrorCode::PlatformNotSupported, "NativeBuffer not supported on this platform"); #endif } diff --git a/packages/react-native-executorch/src/errors/ErrorCodes.ts b/packages/react-native-executorch/src/errors/ErrorCodes.ts index 3e4e557a1..4ccb1f07f 100644 --- a/packages/react-native-executorch/src/errors/ErrorCodes.ts +++ b/packages/react-native-executorch/src/errors/ErrorCodes.ts @@ -58,6 +58,10 @@ export enum RnExecutorchErrorCode { * Thrown when the number of downloaded files is unexpected, due to download interruptions. */ DownloadInterrupted = 118, + /** + * Thrown when a feature or platform is not supported in the current environment. + */ + PlatformNotSupported = 119, /** * Thrown when an error occurs with the tokenizer or tokenization process. */ diff --git a/scripts/errors.config.ts b/scripts/errors.config.ts index 3e6cf1090..6953eec2e 100644 --- a/scripts/errors.config.ts +++ b/scripts/errors.config.ts @@ -59,6 +59,10 @@ export const errorDefinitions = { * Thrown when the number of downloaded files is unexpected, due to download interruptions. */ DownloadInterrupted: 0x76, + /* + * Thrown when a feature or platform is not supported in the current environment. + */ + PlatformNotSupported: 0x77, /* * Thrown when an error occurs with the tokenizer or tokenization process. From f68318f463e78bc70734d295297a4b28497a9d45 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Mon, 23 Feb 2026 13:38:56 +0100 Subject: [PATCH 16/26] fix: compilation JSI error --- .../common/rnexecutorch/metaprogramming/FunctionHelpers.h | 3 ++- .../models/object_detection/ObjectDetection.cpp | 7 ++----- .../rnexecutorch/models/object_detection/ObjectDetection.h | 3 +-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h index 88bf04bf0..fde81e046 100644 --- a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h +++ b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/FunctionHelpers.h @@ -24,7 +24,8 @@ template std::tuple fillTupleFromArgs(std::index_sequence, const jsi::Value *args, jsi::Runtime &runtime) { - return std::make_tuple(jsi_conversion::getValue(args[I], runtime)...); + return std::tuple{ + jsi_conversion::getValue(args[I], runtime)...}; } /** diff --git a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp index 1ae2460c3..26e85da9c 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp @@ -147,12 +147,9 @@ ObjectDetection::generateFromFrame(jsi::Runtime &runtime, } std::vector -ObjectDetection::generateFromPixels(jsi::Runtime &runtime, - const jsi::Value &pixelData, +ObjectDetection::generateFromPixels(JSTensorViewIn pixelData, double detectionThreshold) { - auto tensorView = - jsi_conversion::getValue(pixelData, runtime); - cv::Mat image = extractFromPixels(tensorView); + cv::Mat image = extractFromPixels(pixelData); return runInference(image, detectionThreshold); } diff --git a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h index bf231ff0b..d32eea95e 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.h @@ -26,8 +26,7 @@ class ObjectDetection : public VisionModel { generateFromFrame(jsi::Runtime &runtime, const jsi::Value &frameData, double detectionThreshold); [[nodiscard("Registered non-void function")]] std::vector - generateFromPixels(jsi::Runtime &runtime, const jsi::Value &pixelData, - double detectionThreshold); + generateFromPixels(JSTensorViewIn pixelData, double detectionThreshold); protected: std::vector runInference(cv::Mat image, From 6b89da38251ae261a3114ba8f97faa0606da195d Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Mon, 23 Feb 2026 18:50:24 +0100 Subject: [PATCH 17/26] feat: add tests for generateFromPixels method --- .../app/object_detection/index.tsx | 133 ++---------------- .../object_detection/ObjectDetection.cpp | 4 + .../common/rnexecutorch/tests/CMakeLists.txt | 5 +- .../tests/integration/ObjectDetectionTest.cpp | 69 +++++++++ .../tests/integration/stubs/jsi_stubs.cpp | 8 ++ .../computer_vision/ObjectDetectionModule.ts | 9 +- .../src/types/objectDetection.ts | 4 +- 7 files changed, 103 insertions(+), 129 deletions(-) diff --git a/apps/computer-vision/app/object_detection/index.tsx b/apps/computer-vision/app/object_detection/index.tsx index d843682eb..6a43dd920 100644 --- a/apps/computer-vision/app/object_detection/index.tsx +++ b/apps/computer-vision/app/object_detection/index.tsx @@ -1,18 +1,16 @@ import Spinner from '../../components/Spinner'; +import { BottomBar } from '../../components/BottomBar'; import { getImage } from '../../utils'; import { Detection, useObjectDetection, SSDLITE_320_MOBILENET_V3_LARGE, - ScalarType, - PixelData, } from 'react-native-executorch'; -import { View, StyleSheet, Image, TouchableOpacity, Text } from 'react-native'; +import { View, StyleSheet, Image } from 'react-native'; import ImageWithBboxes from '../../components/ImageWithBboxes'; import React, { useContext, useEffect, useState } from 'react'; import { GeneratingContext } from '../../context'; import ScreenWrapper from '../../ScreenWrapper'; -import ColorPalette from '../../colors'; export default function ObjectDetectionScreen() { const [imageUri, setImageUri] = useState(''); @@ -44,59 +42,14 @@ export default function ObjectDetectionScreen() { const runForward = async () => { if (imageUri) { try { - console.log('Running forward with string URI...'); - const output = await ssdLite.forward(imageUri, 0.5); - console.log('String URI result:', output.length, 'detections'); + const output = await ssdLite.forward(imageUri); setResults(output); } catch (e) { - console.error('Error in runForward:', e); + console.error(e); } } }; - const runForwardPixels = async () => { - try { - console.log('Testing with hardcoded pixel data...'); - - // Create a simple 320x320 test image (all zeros - black image) - // In a real scenario, you would load actual image pixel data here - const width = 320; - const height = 320; - const channels = 3; // RGB - - // Create a black image (you can replace this with actual pixel data) - const rgbData = new Uint8Array(width * height * channels); - - // Optionally, add some test pattern (e.g., white square in center) - for (let y = 100; y < 220; y++) { - for (let x = 100; x < 220; x++) { - const idx = (y * width + x) * 3; - rgbData[idx + 0] = 255; // R - rgbData[idx + 1] = 255; // G - rgbData[idx + 2] = 255; // B - } - } - - const pixelData: PixelData = { - dataPtr: rgbData, - sizes: [height, width, channels], - scalarType: ScalarType.BYTE, - }; - - console.log('Running forward with hardcoded pixel data...', { - sizes: pixelData.sizes, - dataSize: pixelData.dataPtr.byteLength, - }); - - // Run inference using unified forward() API - const output = await ssdLite.forward(pixelData, 0.3); - console.log('Pixel data result:', output.length, 'detections'); - setResults(output); - } catch (e) { - console.error('Error in runForwardPixels:', e); - } - }; - if (!ssdLite.isReady) { return ( - - {/* Custom bottom bar with two buttons */} - - - handleCameraPress(false)}> - 📷 Gallery - - - - - - Run (String) - - - - Run (Pixels) - - - + ); } @@ -207,43 +129,4 @@ const styles = StyleSheet.create({ width: '100%', height: '100%', }, - bottomContainer: { - width: '100%', - gap: 15, - alignItems: 'center', - padding: 16, - flex: 1, - }, - bottomIconsContainer: { - flexDirection: 'row', - justifyContent: 'center', - width: '100%', - }, - iconText: { - fontSize: 16, - color: ColorPalette.primary, - }, - buttonsRow: { - flexDirection: 'row', - width: '100%', - gap: 10, - }, - button: { - height: 50, - justifyContent: 'center', - alignItems: 'center', - backgroundColor: ColorPalette.primary, - color: '#fff', - borderRadius: 8, - }, - halfButton: { - flex: 1, - }, - buttonDisabled: { - opacity: 0.5, - }, - buttonText: { - color: '#fff', - fontSize: 16, - }, }); diff --git a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp index 26e85da9c..2670cf9dd 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/models/object_detection/ObjectDetection.cpp @@ -106,6 +106,10 @@ ObjectDetection::postprocess(const std::vector &tensors, std::vector ObjectDetection::runInference(cv::Mat image, double detectionThreshold) { + if (detectionThreshold < 0.0 || detectionThreshold > 1.0) { + throw RnExecutorchError(RnExecutorchErrorCode::InvalidUserInput, + "detectionThreshold must be in range [0, 1]"); + } std::scoped_lock lock(inference_mutex_); cv::Size originalSize = image.size(); diff --git a/packages/react-native-executorch/common/rnexecutorch/tests/CMakeLists.txt b/packages/react-native-executorch/common/rnexecutorch/tests/CMakeLists.txt index e2a8c16bf..c45ab9107 100644 --- a/packages/react-native-executorch/common/rnexecutorch/tests/CMakeLists.txt +++ b/packages/react-native-executorch/common/rnexecutorch/tests/CMakeLists.txt @@ -156,8 +156,11 @@ add_rn_test(ObjectDetectionTests integration/ObjectDetectionTest.cpp SOURCES ${RNEXECUTORCH_DIR}/models/object_detection/ObjectDetection.cpp ${RNEXECUTORCH_DIR}/models/object_detection/Utils.cpp + ${RNEXECUTORCH_DIR}/models/VisionModel.cpp + ${RNEXECUTORCH_DIR}/utils/FrameProcessor.cpp + ${RNEXECUTORCH_DIR}/utils/FrameExtractor.cpp ${IMAGE_UTILS_SOURCES} - LIBS opencv_deps + LIBS opencv_deps android ) add_rn_test(ImageEmbeddingsTests integration/ImageEmbeddingsTest.cpp diff --git a/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp b/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp index 074ee0751..93cdbf07c 100644 --- a/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp @@ -1,6 +1,8 @@ #include "BaseModelTests.h" +#include #include #include +#include #include #include @@ -115,6 +117,73 @@ TEST(ObjectDetectionGenerateTests, DetectionsHaveValidLabels) { } } +// ============================================================================ +// generateFromPixels tests +// ============================================================================ +TEST(ObjectDetectionPixelTests, ValidPixelDataReturnsResults) { + ObjectDetection model(kValidObjectDetectionModelPath, nullptr); + constexpr int width = 4, height = 4, channels = 3; + std::vector pixelData(width * height * channels, 128); + JSTensorViewIn tensorView{pixelData.data(), + {height, width, channels}, + executorch::aten::ScalarType::Byte}; + auto results = model.generateFromPixels(tensorView, 0.3); + EXPECT_GE(results.size(), 0u); +} + +TEST(ObjectDetectionPixelTests, WrongSizesLengthThrows) { + ObjectDetection model(kValidObjectDetectionModelPath, nullptr); + std::vector pixelData(16, 0); + JSTensorViewIn tensorView{ + pixelData.data(), {4, 4}, executorch::aten::ScalarType::Byte}; + EXPECT_THROW((void)model.generateFromPixels(tensorView, 0.5), + RnExecutorchError); +} + +TEST(ObjectDetectionPixelTests, WrongChannelCountThrows) { + ObjectDetection model(kValidObjectDetectionModelPath, nullptr); + constexpr int width = 4, height = 4, channels = 4; + std::vector pixelData(width * height * channels, 0); + JSTensorViewIn tensorView{pixelData.data(), + {height, width, channels}, + executorch::aten::ScalarType::Byte}; + EXPECT_THROW((void)model.generateFromPixels(tensorView, 0.5), + RnExecutorchError); +} + +TEST(ObjectDetectionPixelTests, WrongScalarTypeThrows) { + ObjectDetection model(kValidObjectDetectionModelPath, nullptr); + constexpr int width = 4, height = 4, channels = 3; + std::vector pixelData(width * height * channels, 0); + JSTensorViewIn tensorView{pixelData.data(), + {height, width, channels}, + executorch::aten::ScalarType::Float}; + EXPECT_THROW((void)model.generateFromPixels(tensorView, 0.5), + RnExecutorchError); +} + +TEST(ObjectDetectionPixelTests, NegativeThresholdThrows) { + ObjectDetection model(kValidObjectDetectionModelPath, nullptr); + constexpr int width = 4, height = 4, channels = 3; + std::vector pixelData(width * height * channels, 128); + JSTensorViewIn tensorView{pixelData.data(), + {height, width, channels}, + executorch::aten::ScalarType::Byte}; + EXPECT_THROW((void)model.generateFromPixels(tensorView, -0.1), + RnExecutorchError); +} + +TEST(ObjectDetectionPixelTests, ThresholdAboveOneThrows) { + ObjectDetection model(kValidObjectDetectionModelPath, nullptr); + constexpr int width = 4, height = 4, channels = 3; + std::vector pixelData(width * height * channels, 128); + JSTensorViewIn tensorView{pixelData.data(), + {height, width, channels}, + executorch::aten::ScalarType::Byte}; + EXPECT_THROW((void)model.generateFromPixels(tensorView, 1.1), + RnExecutorchError); +} + TEST(ObjectDetectionInheritedTests, GetInputShapeWorks) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); auto shape = model.getInputShape("forward", 0); diff --git a/packages/react-native-executorch/common/rnexecutorch/tests/integration/stubs/jsi_stubs.cpp b/packages/react-native-executorch/common/rnexecutorch/tests/integration/stubs/jsi_stubs.cpp index 39b8ae09c..897a2778e 100644 --- a/packages/react-native-executorch/common/rnexecutorch/tests/integration/stubs/jsi_stubs.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/tests/integration/stubs/jsi_stubs.cpp @@ -14,6 +14,14 @@ namespace facebook::jsi { MutableBuffer::~MutableBuffer() {} Value::~Value() {} Value::Value(Value &&other) noexcept {} + +// Needed to link ObjectDetectionTests: generateFromFrame and FrameProcessor +// pull in these JSI symbols, but they are never called in tests. +Object Value::asObject(Runtime &) const & { __builtin_unreachable(); } +BigInt Value::asBigInt(Runtime &) const & { __builtin_unreachable(); } + +uint64_t BigInt::asUint64(Runtime &) const { return 0; } + } // namespace facebook::jsi namespace facebook::react { diff --git a/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts b/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts index 0818d9682..e62c7221c 100644 --- a/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts +++ b/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts @@ -1,5 +1,5 @@ import { ResourceFetcher } from '../../utils/ResourceFetcher'; -import { ResourceSource } from '../../types/common'; +import { ResourceSource, PixelData } from '../../types/common'; import { Detection } from '../../types/objectDetection'; import { RnExecutorchErrorCode } from '../../errors/ErrorCodes'; import { parseUnknownError, RnExecutorchError } from '../../errors/errorUtils'; @@ -41,4 +41,11 @@ export class ObjectDetectionModule extends VisionModule { throw parseUnknownError(error); } } + + async forward( + input: string | PixelData, + detectionThreshold: number = 0.5 + ): Promise { + return super.forward(input, detectionThreshold); + } } diff --git a/packages/react-native-executorch/src/types/objectDetection.ts b/packages/react-native-executorch/src/types/objectDetection.ts index c2281598a..11953c954 100644 --- a/packages/react-native-executorch/src/types/objectDetection.ts +++ b/packages/react-native-executorch/src/types/objectDetection.ts @@ -179,7 +179,7 @@ export interface ObjectDetectionType { * **Note**: For VisionCamera frame processing, use `processFrame` instead. * * @param input - Image source (string or PixelData object) - * @param detectionThreshold - An optional number between 0 and 1 representing the minimum confidence score. Default is 0.7. + * @param detectionThreshold - An optional number between 0 and 1 representing the minimum confidence score. Default is 0.5. * @returns A Promise that resolves to an array of `Detection` objects. * @throws {RnExecutorchError} If the model is not loaded or is currently processing another image. * @@ -225,7 +225,7 @@ export interface ObjectDetectionType { * ``` * * @param frame - VisionCamera Frame object - * @param detectionThreshold - The threshold for detection sensitivity. Default is 0.7. + * @param detectionThreshold - The threshold for detection sensitivity. Default is 0.5. * @returns Array of Detection objects representing detected items in the frame. */ runOnFrame: From e3d5c8ae92c7199e0fc526c262f77c11fc55a747 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Mon, 23 Feb 2026 19:32:05 +0100 Subject: [PATCH 18/26] feat: add example screen with vision camera to computer vision app --- ...ative-vision-camera@npm-5.0.0-beta.1.patch | 713 ++++++++++++++++++ apps/computer-vision/app.json | 3 +- apps/computer-vision/app/_layout.tsx | 8 + apps/computer-vision/app/index.tsx | 6 + .../app/object_detection_live/index.tsx | 224 ++++++ apps/computer-vision/package.json | 3 + .../src/types/objectDetection.ts | 4 +- 7 files changed, 958 insertions(+), 3 deletions(-) create mode 100644 .yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch create mode 100644 apps/computer-vision/app/object_detection_live/index.tsx diff --git a/.yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch b/.yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch new file mode 100644 index 000000000..73f999e9a --- /dev/null +++ b/.yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch @@ -0,0 +1,713 @@ +diff --git a/lib/expo-plugin/withVisionCamera.js b/lib/expo-plugin/withVisionCamera.js +index 32418a9..f7a8c5c 100644 +--- a/lib/expo-plugin/withVisionCamera.js ++++ b/lib/expo-plugin/withVisionCamera.js +@@ -1,4 +1,4 @@ +-import { AndroidConfig, withPlugins, } from '@expo/config-plugins'; ++const { AndroidConfig, withPlugins } = require('@expo/config-plugins'); + const CAMERA_USAGE = 'Allow $(PRODUCT_NAME) to access your camera'; + const MICROPHONE_USAGE = 'Allow $(PRODUCT_NAME) to access your microphone'; + const withVisionCamera = (config, props = {}) => { +@@ -30,4 +30,4 @@ const withVisionCamera = (config, props = {}) => { + [AndroidConfig.Permissions.withPermissions, androidPermissions], + ]); + }; +-export default withVisionCamera; ++module.exports = withVisionCamera; +diff --git a/cpp/Frame Processors/HybridWorkletQueueFactory.cpp b/cpp/Frame Processors/HybridWorkletQueueFactory.cpp +new file mode 100644 +index 0000000..5da4ef9 +--- /dev/null ++++ b/cpp/Frame Processors/HybridWorkletQueueFactory.cpp +@@ -0,0 +1,50 @@ ++/// ++/// HybridWorkletQueueFactory.cpp ++/// VisionCamera ++/// Copyright © 2025 Marc Rousavy @ Margelo ++/// ++ ++#include "HybridWorkletQueueFactory.hpp" ++ ++#include "JSIConverter+AsyncQueue.hpp" ++#include "NativeThreadAsyncQueue.hpp" ++#include "NativeThreadDispatcher.hpp" ++#include ++#include ++ ++namespace margelo::nitro::camera { ++ ++HybridWorkletQueueFactory::HybridWorkletQueueFactory() : HybridObject(TAG) {} ++ ++void HybridWorkletQueueFactory::loadHybridMethods() { ++ HybridWorkletQueueFactorySpec::loadHybridMethods(); ++ registerHybrids(this, [](Prototype& prototype) { ++ prototype.registerRawHybridMethod("installDispatcher", 1, &HybridWorkletQueueFactory::installDispatcher); ++ }); ++} ++ ++std::shared_ptr HybridWorkletQueueFactory::wrapThreadInQueue(const std::shared_ptr& thread) { ++ return std::make_shared(thread); ++} ++ ++double HybridWorkletQueueFactory::getCurrentThreadMarker() { ++ static std::atomic_size_t threadCounter{1}; ++ static thread_local size_t thisThreadId{0}; ++ if (thisThreadId == 0) { ++ thisThreadId = threadCounter.fetch_add(1); ++ } ++ return static_cast(thisThreadId); ++} ++ ++jsi::Value HybridWorkletQueueFactory::installDispatcher(jsi::Runtime& runtime, const jsi::Value&, const jsi::Value* args, size_t count) { ++ if (count != 1) ++ throw std::runtime_error("installDispatcher(..) must be called with exactly 1 argument!"); ++ auto thread = JSIConverter>::fromJSI(runtime, args[0]); ++ ++ auto dispatcher = std::make_shared(thread); ++ Dispatcher::installRuntimeGlobalDispatcher(runtime, dispatcher); ++ ++ return jsi::Value::undefined(); ++} ++ ++} // namespace margelo::nitro::camera +diff --git a/android/CMakeLists.txt b/android/CMakeLists.txt +index 0000000..1111111 100644 +--- a/android/CMakeLists.txt ++++ b/android/CMakeLists.txt +@@ -20,6 +20,7 @@ + "src/main/cpp" + "../cpp" + "../cpp/Frame Processors" ++ "../nitrogen/generated/shared/c++" + ) + + find_library(LOG_LIB log) +diff --git a/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.cpp b/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.cpp +new file mode 100644 +index 0000000..5da4ef9 +--- /dev/null ++++ b/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.cpp +@@ -0,0 +1,50 @@ ++/// ++/// HybridWorkletQueueFactory.cpp ++/// VisionCamera ++/// Copyright © 2025 Marc Rousavy @ Margelo ++/// ++ ++#include "HybridWorkletQueueFactory.hpp" ++ ++#include "JSIConverter+AsyncQueue.hpp" ++#include "NativeThreadAsyncQueue.hpp" ++#include "NativeThreadDispatcher.hpp" ++#include ++#include ++ ++namespace margelo::nitro::camera { ++ ++HybridWorkletQueueFactory::HybridWorkletQueueFactory() : HybridObject(TAG) {} ++ ++void HybridWorkletQueueFactory::loadHybridMethods() { ++ HybridWorkletQueueFactorySpec::loadHybridMethods(); ++ registerHybrids(this, [](Prototype& prototype) { ++ prototype.registerRawHybridMethod("installDispatcher", 1, &HybridWorkletQueueFactory::installDispatcher); ++ }); ++} ++ ++std::shared_ptr HybridWorkletQueueFactory::wrapThreadInQueue(const std::shared_ptr& thread) { ++ return std::make_shared(thread); ++} ++ ++double HybridWorkletQueueFactory::getCurrentThreadMarker() { ++ static std::atomic_size_t threadCounter{1}; ++ static thread_local size_t thisThreadId{0}; ++ if (thisThreadId == 0) { ++ thisThreadId = threadCounter.fetch_add(1); ++ } ++ return static_cast(thisThreadId); ++} ++ ++jsi::Value HybridWorkletQueueFactory::installDispatcher(jsi::Runtime& runtime, const jsi::Value&, const jsi::Value* args, size_t count) { ++ if (count != 1) ++ throw std::runtime_error("installDispatcher(..) must be called with exactly 1 argument!"); ++ auto thread = JSIConverter>::fromJSI(runtime, args[0]); ++ ++ auto dispatcher = std::make_shared(thread); ++ Dispatcher::installRuntimeGlobalDispatcher(runtime, dispatcher); ++ ++ return jsi::Value::undefined(); ++} ++ ++} // namespace margelo::nitro::camera +diff --git a/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.hpp b/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.hpp +new file mode 100644 +index 0000000..daa16d2 +--- /dev/null ++++ b/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.hpp +@@ -0,0 +1,29 @@ ++/// ++/// HybridWorkletQueueFactory.hpp ++/// VisionCamera ++/// Copyright © 2025 Marc Rousavy @ Margelo ++/// ++ ++#pragma once ++ ++#include "HybridWorkletQueueFactorySpec.hpp" ++#include "JSIConverter+AsyncQueue.hpp" ++#include ++#include ++ ++namespace margelo::nitro::camera { ++ ++class HybridWorkletQueueFactory : public HybridWorkletQueueFactorySpec { ++public: ++ HybridWorkletQueueFactory(); ++ ++public: ++ std::shared_ptr wrapThreadInQueue(const std::shared_ptr& thread) override; ++ double getCurrentThreadMarker() override; ++ ++ jsi::Value installDispatcher(jsi::Runtime& runtime, const jsi::Value&, const jsi::Value* args, size_t count); ++ ++ void loadHybridMethods() override; ++}; ++ ++} // namespace margelo::nitro::camera +diff --git a/nitrogen/generated/shared/c++/JSIConverter+AsyncQueue.hpp b/nitrogen/generated/shared/c++/JSIConverter+AsyncQueue.hpp +new file mode 100644 +index 0000000..5b93f2d +--- /dev/null ++++ b/nitrogen/generated/shared/c++/JSIConverter+AsyncQueue.hpp +@@ -0,0 +1,24 @@ ++/// ++/// JSIConverter+AsyncQueue.swift ++/// VisionCamera ++/// Copyright © 2025 Marc Rousavy @ Margelo ++/// ++ ++#pragma once ++ ++#include ++#include ++#if __has_include() ++#include ++#elif __has_include() ++#include ++#else ++#error react-native-worklets Prefab not found! ++#endif ++ ++namespace margelo::nitro { ++ ++// JSIConverter> is implemented ++// in JSIConverter> ++ ++} +diff --git a/nitrogen/generated/shared/c++/NativeThreadAsyncQueue.hpp b/nitrogen/generated/shared/c++/NativeThreadAsyncQueue.hpp +new file mode 100644 +index 0000000..d5a0958 +--- /dev/null ++++ b/nitrogen/generated/shared/c++/NativeThreadAsyncQueue.hpp +@@ -0,0 +1,34 @@ ++/// ++/// NativeThreadAsyncQueue.hpp ++/// VisionCamera ++/// Copyright © 2025 Marc Rousavy @ Margelo ++/// ++ ++#pragma once ++ ++#include "HybridNativeThreadSpec.hpp" ++#include "JSIConverter+AsyncQueue.hpp" ++#include ++ ++namespace margelo::nitro::camera { ++ ++/** ++ * An implementation of `worklets::AsyncQueue` that uses a `NativeThread` to run its jobs. ++ * ++ * The `NativeThread` (`HybridNativeThreadSpec`) is a platform-implemented object, ++ * e.g. using `DispatchQueue` on iOS. ++ */ ++class NativeThreadAsyncQueue : public worklets::AsyncQueue { ++public: ++ NativeThreadAsyncQueue(std::shared_ptr thread) : _thread(std::move(thread)) {} ++ ++ void push(std::function&& job) override { ++ auto jobCopy = job; ++ _thread->runOnThread(jobCopy); ++ } ++ ++private: ++ std::shared_ptr _thread; ++}; ++ ++} // namespace margelo::nitro::camera +diff --git a/nitrogen/generated/shared/c++/NativeThreadDispatcher.hpp b/nitrogen/generated/shared/c++/NativeThreadDispatcher.hpp +new file mode 100644 +index 0000000..758d2f2 +--- /dev/null ++++ b/nitrogen/generated/shared/c++/NativeThreadDispatcher.hpp +@@ -0,0 +1,36 @@ ++/// ++/// NativeThreadDispatcher.hpp ++/// VisionCamera ++/// Copyright © 2025 Marc Rousavy @ Margelo ++/// ++ ++#pragma once ++ ++#include "HybridNativeThreadSpec.hpp" ++#include "JSIConverter+AsyncQueue.hpp" ++#include ++ ++namespace margelo::nitro::camera { ++ ++/** ++ * An implementation of `nitro::Dispatcher` that uses a `NativeThread` to run its jobs. ++ * ++ * The `NativeThread` (`HybridNativeThreadSpec`) is a platform-implemented object, ++ * e.g. using `DispatchQueue` on iOS. ++ */ ++class NativeThreadDispatcher : public nitro::Dispatcher { ++public: ++ NativeThreadDispatcher(std::shared_ptr thread) : _thread(std::move(thread)) {} ++ ++ void runSync(std::function&&) override { ++ throw std::runtime_error("runSync(...) is not implemented for NativeThreadDispatcher!"); ++ } ++ void runAsync(std::function&& function) override { ++ _thread->runOnThread(function); ++ } ++ ++private: ++ std::shared_ptr _thread; ++}; ++ ++} // namespace margelo::nitro::camera +diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/BoundingBox.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/BoundingBox.kt +new file mode 100644 +index 0000000..aaaaaaa +--- /dev/null ++++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/BoundingBox.kt +@@ -0,0 +1,47 @@ ++/// ++/// BoundingBox.kt ++/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. ++/// https://github.com/mrousavy/nitro ++/// Copyright © Marc Rousavy @ Margelo ++/// ++ ++package com.margelo.nitro.camera ++ ++import androidx.annotation.Keep ++import com.facebook.proguard.annotations.DoNotStrip ++ ++ ++/** ++ * Represents the JavaScript object/struct "BoundingBox". ++ */ ++@DoNotStrip ++@Keep ++data class BoundingBox( ++ @DoNotStrip ++ @Keep ++ val x: Double, ++ @DoNotStrip ++ @Keep ++ val y: Double, ++ @DoNotStrip ++ @Keep ++ val width: Double, ++ @DoNotStrip ++ @Keep ++ val height: Double ++) { ++ /* primary constructor */ ++ ++ companion object { ++ /** ++ * Constructor called from C++ ++ */ ++ @DoNotStrip ++ @Keep ++ @Suppress("unused") ++ @JvmStatic ++ private fun fromCpp(x: Double, y: Double, width: Double, height: Double): BoundingBox { ++ return BoundingBox(x, y, width, height) ++ } ++ } ++} +diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/HybridScannedObjectSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/HybridScannedObjectSpec.kt +new file mode 100644 +index 0000000..bbbbbbb +--- /dev/null ++++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/HybridScannedObjectSpec.kt +@@ -0,0 +1,60 @@ ++/// ++/// HybridScannedObjectSpec.kt ++/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. ++/// https://github.com/mrousavy/nitro ++/// Copyright © Marc Rousavy @ Margelo ++/// ++ ++package com.margelo.nitro.camera ++ ++import androidx.annotation.Keep ++import com.facebook.jni.HybridData ++import com.facebook.proguard.annotations.DoNotStrip ++import com.margelo.nitro.core.HybridObject ++ ++/** ++ * A Kotlin class representing the ScannedObject HybridObject. ++ * Implement this abstract class to create Kotlin-based instances of ScannedObject. ++ */ ++@DoNotStrip ++@Keep ++@Suppress( ++ "KotlinJniMissingFunction", "unused", ++ "RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet", ++ "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ++) ++abstract class HybridScannedObjectSpec: HybridObject() { ++ @DoNotStrip ++ private var mHybridData: HybridData = initHybrid() ++ ++ init { ++ super.updateNative(mHybridData) ++ } ++ ++ override fun updateNative(hybridData: HybridData) { ++ mHybridData = hybridData ++ super.updateNative(hybridData) ++ } ++ ++ // Default implementation of `HybridObject.toString()` ++ override fun toString(): String { ++ return "[HybridObject ScannedObject]" ++ } ++ ++ // Properties ++ @get:DoNotStrip ++ @get:Keep ++ abstract val type: ScannedObjectType ++ ++ @get:DoNotStrip ++ @get:Keep ++ abstract val boundingBox: BoundingBox ++ ++ // Methods ++ ++ private external fun initHybrid(): HybridData ++ ++ companion object { ++ protected const val TAG = "HybridScannedObjectSpec" ++ } ++} +diff --git a/nitrogen/generated/android/c++/JBoundingBox.hpp b/nitrogen/generated/android/c++/JBoundingBox.hpp +new file mode 100644 +index 0000000..ccccccc +--- /dev/null ++++ b/nitrogen/generated/android/c++/JBoundingBox.hpp +@@ -0,0 +1,69 @@ ++/// ++/// JBoundingBox.hpp ++/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. ++/// https://github.com/mrousavy/nitro ++/// Copyright © Marc Rousavy @ Margelo ++/// ++ ++#pragma once ++ ++#include ++#include "BoundingBox.hpp" ++ ++ ++ ++namespace margelo::nitro::camera { ++ ++ using namespace facebook; ++ ++ /** ++ * The C++ JNI bridge between the C++ struct "BoundingBox" and the the Kotlin data class "BoundingBox". ++ */ ++ struct JBoundingBox final: public jni::JavaClass { ++ public: ++ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/camera/BoundingBox;"; ++ ++ public: ++ /** ++ * Convert this Java/Kotlin-based struct to the C++ struct BoundingBox by copying all values to C++. ++ */ ++ [[maybe_unused]] ++ [[nodiscard]] ++ BoundingBox toCpp() const { ++ static const auto clazz = javaClassStatic(); ++ static const auto fieldX = clazz->getField("x"); ++ double x = this->getFieldValue(fieldX); ++ static const auto fieldY = clazz->getField("y"); ++ double y = this->getFieldValue(fieldY); ++ static const auto fieldWidth = clazz->getField("width"); ++ double width = this->getFieldValue(fieldWidth); ++ static const auto fieldHeight = clazz->getField("height"); ++ double height = this->getFieldValue(fieldHeight); ++ return BoundingBox( ++ x, ++ y, ++ width, ++ height ++ ); ++ } ++ ++ public: ++ /** ++ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java. ++ */ ++ [[maybe_unused]] ++ static jni::local_ref fromCpp(const BoundingBox& value) { ++ using JSignature = JBoundingBox(double, double, double, double); ++ static const auto clazz = javaClassStatic(); ++ static const auto create = clazz->getStaticMethod("fromCpp"); ++ return create( ++ clazz, ++ value.x, ++ value.y, ++ value.width, ++ value.height ++ ); ++ } ++ }; ++ ++} // namespace margelo::nitro::camera +diff --git a/nitrogen/generated/android/c++/JHybridScannedObjectSpec.hpp b/nitrogen/generated/android/c++/JHybridScannedObjectSpec.hpp +new file mode 100644 +index 0000000..ddddddd +--- /dev/null ++++ b/nitrogen/generated/android/c++/JHybridScannedObjectSpec.hpp +@@ -0,0 +1,63 @@ ++/// ++/// JHybridScannedObjectSpec.hpp ++/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. ++/// https://github.com/mrousavy/nitro ++/// Copyright © Marc Rousavy @ Margelo ++/// ++ ++#pragma once ++ ++#include ++#include ++#include "HybridScannedObjectSpec.hpp" ++ ++ ++ ++ ++namespace margelo::nitro::camera { ++ ++ using namespace facebook; ++ ++ class JHybridScannedObjectSpec: public jni::HybridClass, ++ public virtual HybridScannedObjectSpec { ++ public: ++ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/camera/HybridScannedObjectSpec;"; ++ static jni::local_ref initHybrid(jni::alias_ref jThis); ++ static void registerNatives(); ++ ++ protected: ++ // C++ constructor (called from Java via `initHybrid()`) ++ explicit JHybridScannedObjectSpec(jni::alias_ref jThis) : ++ HybridObject(HybridScannedObjectSpec::TAG), ++ HybridBase(jThis), ++ _javaPart(jni::make_global(jThis)) {} ++ ++ public: ++ ~JHybridScannedObjectSpec() override { ++ // Hermes GC can destroy JS objects on a non-JNI Thread. ++ jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); ++ } ++ ++ public: ++ size_t getExternalMemorySize() noexcept override; ++ bool equals(const std::shared_ptr& other) override; ++ void dispose() noexcept override; ++ std::string toString() override; ++ ++ public: ++ inline const jni::global_ref& getJavaPart() const noexcept { ++ return _javaPart; ++ } ++ ++ public: ++ // Properties ++ ScannedObjectType getType() override; ++ BoundingBox getBoundingBox() override; ++ ++ private: ++ friend HybridBase; ++ using HybridBase::HybridBase; ++ jni::global_ref _javaPart; ++ }; ++ ++} // namespace margelo::nitro::camera +diff --git a/nitrogen/generated/android/VisionCamera+autolinking.cmake b/nitrogen/generated/android/VisionCamera+autolinking.cmake +index 0000000..1111111 100644 +--- a/nitrogen/generated/android/VisionCamera+autolinking.cmake ++++ b/nitrogen/generated/android/VisionCamera+autolinking.cmake +@@ -112,3 +112,4 @@ + ../nitrogen/generated/android/c++/JHybridPreviewViewSpec.cpp + ../nitrogen/generated/android/c++/views/JHybridPreviewViewStateUpdater.cpp ++ ../nitrogen/generated/android/c++/JHybridScannedObjectSpec.cpp + ) +diff --git a/nitrogen/generated/android/c++/JHybridScannedObjectSpec.cpp b/nitrogen/generated/android/c++/JHybridScannedObjectSpec.cpp +new file mode 100644 +index 0000000..eeeeeee +--- /dev/null ++++ b/nitrogen/generated/android/c++/JHybridScannedObjectSpec.cpp +@@ -0,0 +1,69 @@ ++/// ++/// JHybridScannedObjectSpec.cpp ++/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. ++/// https://github.com/mrousavy/nitro ++/// Copyright © Marc Rousavy @ Margelo ++/// ++ ++#include "JHybridScannedObjectSpec.hpp" ++ ++// Forward declaration of `ScannedObjectType` to properly resolve imports. ++namespace margelo::nitro::camera { enum class ScannedObjectType; } ++// Forward declaration of `BoundingBox` to properly resolve imports. ++namespace margelo::nitro::camera { struct BoundingBox; } ++ ++#include "ScannedObjectType.hpp" ++#include "JScannedObjectType.hpp" ++#include "BoundingBox.hpp" ++#include "JBoundingBox.hpp" ++ ++namespace margelo::nitro::camera { ++ ++ jni::local_ref JHybridScannedObjectSpec::initHybrid(jni::alias_ref jThis) { ++ return makeCxxInstance(jThis); ++ } ++ ++ void JHybridScannedObjectSpec::registerNatives() { ++ registerHybrid({ ++ makeNativeMethod("initHybrid", JHybridScannedObjectSpec::initHybrid), ++ }); ++ } ++ ++ size_t JHybridScannedObjectSpec::getExternalMemorySize() noexcept { ++ static const auto method = javaClassStatic()->getMethod("getMemorySize"); ++ return method(_javaPart); ++ } ++ ++ bool JHybridScannedObjectSpec::equals(const std::shared_ptr& other) { ++ if (auto otherCast = std::dynamic_pointer_cast(other)) { ++ return _javaPart == otherCast->_javaPart; ++ } ++ return false; ++ } ++ ++ void JHybridScannedObjectSpec::dispose() noexcept { ++ static const auto method = javaClassStatic()->getMethod("dispose"); ++ method(_javaPart); ++ } ++ ++ std::string JHybridScannedObjectSpec::toString() { ++ static const auto method = javaClassStatic()->getMethod("toString"); ++ auto javaString = method(_javaPart); ++ return javaString->toStdString(); ++ } ++ ++ // Properties ++ ScannedObjectType JHybridScannedObjectSpec::getType() { ++ static const auto method = javaClassStatic()->getMethod()>("getType"); ++ auto __result = method(_javaPart); ++ return __result->toCpp(); ++ } ++ BoundingBox JHybridScannedObjectSpec::getBoundingBox() { ++ static const auto method = javaClassStatic()->getMethod()>("getBoundingBox"); ++ auto __result = method(_javaPart); ++ return __result->toCpp(); ++ } ++ ++ // Methods ++ ++} // namespace margelo::nitro::camera +diff --git a/android/src/main/java/com/margelo/nitro/camera/hybrids/recording/HybridVideoRecorder.kt b/android/src/main/java/com/margelo/nitro/camera/hybrids/recording/HybridVideoRecorder.kt +index aaaaaaa..bbbbbbb 100644 +--- a/android/src/main/java/com/margelo/nitro/camera/hybrids/recording/HybridVideoRecorder.kt ++++ b/android/src/main/java/com/margelo/nitro/camera/hybrids/recording/HybridVideoRecorder.kt +@@ -55,6 +55,6 @@ + when (event) { + is VideoRecordEvent.Start -> { +- promise.resolve() ++ promise.resolve(Unit) + didResolve = true + } + +@@ -98,27 +98,48 @@ + override fun stopRecording(): Promise { +- return Promise.parallel(executor) { +- val recording = recording ?: throw Error("Not currently recording!") +- recording.stop() +- this.isPaused = false +- this.recording = null +- this.recordedDuration = 0.0 +- this.recordedFileSize = 0.0 +- } ++ val promise = Promise() ++ executor.execute { ++ try { ++ val recording = recording ?: throw Error("Not currently recording!") ++ recording.stop() ++ this.isPaused = false ++ this.recording = null ++ this.recordedDuration = 0.0 ++ this.recordedFileSize = 0.0 ++ promise.resolve(Unit) ++ } catch (e: Throwable) { ++ promise.reject(e) ++ } ++ } ++ return promise + } + + override fun pauseRecording(): Promise { +- return Promise.parallel(executor) { +- val recording = recording ?: throw Error("Not currently recording!") +- recording.pause() +- this.isPaused = true +- } ++ val promise = Promise() ++ executor.execute { ++ try { ++ val recording = recording ?: throw Error("Not currently recording!") ++ recording.pause() ++ this.isPaused = true ++ promise.resolve(Unit) ++ } catch (e: Throwable) { ++ promise.reject(e) ++ } ++ } ++ return promise + } + + override fun resumeRecording(): Promise { +- return Promise.parallel(executor) { +- val recording = recording ?: throw Error("Not currently recording!") +- recording.resume() +- this.isPaused = false +- } ++ val promise = Promise() ++ executor.execute { ++ try { ++ val recording = recording ?: throw Error("Not currently recording!") ++ recording.resume() ++ this.isPaused = false ++ promise.resolve(Unit) ++ } catch (e: Throwable) { ++ promise.reject(e) ++ } ++ } ++ return promise + } + } diff --git a/apps/computer-vision/app.json b/apps/computer-vision/app.json index 4d68c039b..5db8c1390 100644 --- a/apps/computer-vision/app.json +++ b/apps/computer-vision/app.json @@ -25,7 +25,8 @@ "foregroundImage": "./assets/icons/adaptive-icon.png", "backgroundColor": "#ffffff" }, - "package": "com.anonymous.computervision" + "package": "com.anonymous.computervision", + "permissions": ["android.permission.CAMERA"] }, "web": { "favicon": "./assets/icons/favicon.png" diff --git a/apps/computer-vision/app/_layout.tsx b/apps/computer-vision/app/_layout.tsx index 8b66a796c..4ce2f3e5c 100644 --- a/apps/computer-vision/app/_layout.tsx +++ b/apps/computer-vision/app/_layout.tsx @@ -83,6 +83,14 @@ export default function _layout() { headerTitleStyle: { color: ColorPalette.primary }, }} /> + Object Detection + router.navigate('object_detection_live/')} + > + Object Detection Live + router.navigate('ocr/')} diff --git a/apps/computer-vision/app/object_detection_live/index.tsx b/apps/computer-vision/app/object_detection_live/index.tsx new file mode 100644 index 000000000..68fdd4fed --- /dev/null +++ b/apps/computer-vision/app/object_detection_live/index.tsx @@ -0,0 +1,224 @@ +import React, { + useCallback, + useContext, + useEffect, + useMemo, + useRef, + useState, +} from 'react'; +import { + StatusBar, + StyleSheet, + Text, + TouchableOpacity, + View, +} from 'react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; + +import { + Camera, + getCameraFormat, + Templates, + useCameraDevices, + useCameraPermission, + useFrameOutput, +} from 'react-native-vision-camera'; +import { scheduleOnRN } from 'react-native-worklets'; +import { + Detection, + SSDLITE_320_MOBILENET_V3_LARGE, + useObjectDetection, +} from 'react-native-executorch'; +import { GeneratingContext } from '../../context'; +import Spinner from '../../components/Spinner'; +import ColorPalette from '../../colors'; + +export default function ObjectDetectionLiveScreen() { + const insets = useSafeAreaInsets(); + + const model = useObjectDetection({ model: SSDLITE_320_MOBILENET_V3_LARGE }); + const { setGlobalGenerating } = useContext(GeneratingContext); + + useEffect(() => { + setGlobalGenerating(model.isGenerating); + }, [model.isGenerating, setGlobalGenerating]); + + const [detectionCount, setDetectionCount] = useState(0); + const [fps, setFps] = useState(0); + const lastFrameTimeRef = useRef(Date.now()); + + const cameraPermission = useCameraPermission(); + const devices = useCameraDevices(); + const device = devices.find((d) => d.position === 'back') ?? devices[0]; + + const format = useMemo(() => { + if (device == null) return undefined; + try { + return getCameraFormat(device, Templates.Video); + } catch { + return undefined; + } + }, [device]); + + const updateStats = useCallback((results: Detection[]) => { + setDetectionCount(results.length); + const now = Date.now(); + const timeDiff = now - lastFrameTimeRef.current; + if (timeDiff > 0) { + setFps(Math.round(1000 / timeDiff)); + } + lastFrameTimeRef.current = now; + }, []); + + const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + if (!model.runOnFrame) { + frame.dispose(); + return; + } + try { + const result = model.runOnFrame(frame, 0.5); + if (result) { + scheduleOnRN(updateStats, result); + } + } catch { + // ignore frame errors + } finally { + frame.dispose(); + } + }, + }); + + if (!model.isReady) { + return ( + + ); + } + + if (!cameraPermission.hasPermission) { + return ( + + Camera access needed + cameraPermission.requestPermission()} + style={styles.button} + > + Grant Permission + + + ); + } + + if (device == null) { + return ( + + No camera device found + + ); + } + + return ( + + + + + + + + + {detectionCount} + objects + + + + {fps} + fps + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'black', + }, + centered: { + flex: 1, + backgroundColor: 'black', + justifyContent: 'center', + alignItems: 'center', + gap: 16, + }, + message: { + color: 'white', + fontSize: 18, + }, + button: { + paddingHorizontal: 24, + paddingVertical: 12, + backgroundColor: ColorPalette.primary, + borderRadius: 24, + }, + buttonText: { + color: 'white', + fontSize: 15, + fontWeight: '600', + letterSpacing: 0.3, + }, + + // Bottom stats bar + bottomBarWrapper: { + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + alignItems: 'center', + }, + bottomBar: { + flexDirection: 'row', + alignItems: 'center', + backgroundColor: 'rgba(0, 0, 0, 0.55)', + borderRadius: 24, + paddingHorizontal: 28, + paddingVertical: 10, + gap: 24, + }, + statItem: { + alignItems: 'center', + }, + statValue: { + color: 'white', + fontSize: 22, + fontWeight: '700', + letterSpacing: -0.5, + }, + statLabel: { + color: 'rgba(255,255,255,0.55)', + fontSize: 11, + fontWeight: '500', + textTransform: 'uppercase', + letterSpacing: 0.8, + }, + statDivider: { + width: 1, + height: 32, + backgroundColor: 'rgba(255,255,255,0.2)', + }, +}); diff --git a/apps/computer-vision/package.json b/apps/computer-vision/package.json index 822345696..a32f70d5e 100644 --- a/apps/computer-vision/package.json +++ b/apps/computer-vision/package.json @@ -31,11 +31,14 @@ "react-native-gesture-handler": "~2.28.0", "react-native-image-picker": "^7.2.2", "react-native-loading-spinner-overlay": "^3.0.1", + "react-native-nitro-image": "^0.12.0", + "react-native-nitro-modules": "^0.33.9", "react-native-reanimated": "~4.2.2", "react-native-safe-area-context": "~5.6.0", "react-native-screens": "~4.16.0", "react-native-svg": "15.15.3", "react-native-svg-transformer": "^1.5.3", + "react-native-vision-camera": "patch:react-native-vision-camera@npm%3A5.0.0-beta.1#~/.yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch", "react-native-worklets": "0.7.4" }, "devDependencies": { diff --git a/packages/react-native-executorch/src/types/objectDetection.ts b/packages/react-native-executorch/src/types/objectDetection.ts index 11953c954..9532c508f 100644 --- a/packages/react-native-executorch/src/types/objectDetection.ts +++ b/packages/react-native-executorch/src/types/objectDetection.ts @@ -225,10 +225,10 @@ export interface ObjectDetectionType { * ``` * * @param frame - VisionCamera Frame object - * @param detectionThreshold - The threshold for detection sensitivity. Default is 0.5. + * @param detectionThreshold - The threshold for detection sensitivity. * @returns Array of Detection objects representing detected items in the frame. */ runOnFrame: - | ((frame: Frame, detectionThreshold?: number) => Detection[]) + | ((frame: Frame, detectionThreshold: number) => Detection[]) | null; } From 87adfcf2e4290abbdc91a9558772c0193702ef68 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Tue, 24 Feb 2026 09:02:14 +0100 Subject: [PATCH 19/26] feat: suggested changes / improve comments --- .../app/object_detection_live/index.tsx | 2 -- .../rnexecutorch/host_objects/JsiConversions.h | 18 +++++++++--------- .../host_objects/ModelHostObject.h | 6 ++++++ .../metaprogramming/TypeConcepts.h | 5 +++++ .../tests/integration/ObjectDetectionTest.cpp | 10 +++++----- .../computer_vision/ObjectDetectionModule.ts | 1 + .../modules/computer_vision/VisionModule.ts | 9 +++++++-- .../src/types/common.ts | 3 --- .../src/types/objectDetection.ts | 2 +- 9 files changed, 34 insertions(+), 22 deletions(-) diff --git a/apps/computer-vision/app/object_detection_live/index.tsx b/apps/computer-vision/app/object_detection_live/index.tsx index 68fdd4fed..5f8bb2120 100644 --- a/apps/computer-vision/app/object_detection_live/index.tsx +++ b/apps/computer-vision/app/object_detection_live/index.tsx @@ -182,8 +182,6 @@ const styles = StyleSheet.create({ fontWeight: '600', letterSpacing: 0.3, }, - - // Bottom stats bar bottomBarWrapper: { position: 'absolute', bottom: 0, diff --git a/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h b/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h index 5fc8615ea..7b97108b9 100644 --- a/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h +++ b/packages/react-native-executorch/common/rnexecutorch/host_objects/JsiConversions.h @@ -346,6 +346,15 @@ inline jsi::Value getJsiValue(const std::vector &vec, return {runtime, array}; } +inline jsi::Value getJsiValue(const std::vector &vec, + jsi::Runtime &runtime) { + jsi::Array array(runtime, vec.size()); + for (size_t i = 0; i < vec.size(); i++) { + array.setValueAtIndex(runtime, i, jsi::Value(static_cast(vec[i]))); + } + return {runtime, array}; +} + // Conditional as on android, size_t and uint64_t reduce to the same type, // introducing ambiguity template &vec, - jsi::Runtime &runtime) { - jsi::Array array(runtime, vec.size()); - for (size_t i = 0; i < vec.size(); i++) { - array.setValueAtIndex(runtime, i, jsi::Value(static_cast(vec[i]))); - } - return {runtime, array}; -} - inline jsi::Value getJsiValue(int val, jsi::Runtime &runtime) { return {runtime, val}; } diff --git a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h index abf920223..d6489c9be 100644 --- a/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h +++ b/packages/react-native-executorch/common/rnexecutorch/host_objects/ModelHostObject.h @@ -46,6 +46,12 @@ template class ModelHostObject : public JsiHostObject { "getInputShape")); } + if constexpr (meta::HasGenerate) { + addFunctions(JSI_EXPORT_FUNCTION(ModelHostObject, + promiseHostFunction<&Model::generate>, + "generate")); + } + if constexpr (meta::HasEncode) { addFunctions(JSI_EXPORT_FUNCTION(ModelHostObject, promiseHostFunction<&Model::encode>, diff --git a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h index f625bf6e7..2d7612f25 100644 --- a/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h +++ b/packages/react-native-executorch/common/rnexecutorch/metaprogramming/TypeConcepts.h @@ -11,6 +11,11 @@ concept DerivedFromOrSameAs = std::is_base_of_v; template concept SameAs = std::is_same_v; +template +concept HasGenerate = requires(T t) { + { &T::generate }; +}; + template concept HasGenerateFromString = requires(T t) { { &T::generateFromString }; diff --git a/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp b/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp index 93cdbf07c..76c838ca1 100644 --- a/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp +++ b/packages/react-native-executorch/common/rnexecutorch/tests/integration/ObjectDetectionTest.cpp @@ -122,7 +122,7 @@ TEST(ObjectDetectionGenerateTests, DetectionsHaveValidLabels) { // ============================================================================ TEST(ObjectDetectionPixelTests, ValidPixelDataReturnsResults) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - constexpr int width = 4, height = 4, channels = 3; + constexpr int32_t width = 4, height = 4, channels = 3; std::vector pixelData(width * height * channels, 128); JSTensorViewIn tensorView{pixelData.data(), {height, width, channels}, @@ -142,7 +142,7 @@ TEST(ObjectDetectionPixelTests, WrongSizesLengthThrows) { TEST(ObjectDetectionPixelTests, WrongChannelCountThrows) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - constexpr int width = 4, height = 4, channels = 4; + constexpr int32_t width = 4, height = 4, channels = 4; std::vector pixelData(width * height * channels, 0); JSTensorViewIn tensorView{pixelData.data(), {height, width, channels}, @@ -153,7 +153,7 @@ TEST(ObjectDetectionPixelTests, WrongChannelCountThrows) { TEST(ObjectDetectionPixelTests, WrongScalarTypeThrows) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - constexpr int width = 4, height = 4, channels = 3; + constexpr int32_t width = 4, height = 4, channels = 3; std::vector pixelData(width * height * channels, 0); JSTensorViewIn tensorView{pixelData.data(), {height, width, channels}, @@ -164,7 +164,7 @@ TEST(ObjectDetectionPixelTests, WrongScalarTypeThrows) { TEST(ObjectDetectionPixelTests, NegativeThresholdThrows) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - constexpr int width = 4, height = 4, channels = 3; + constexpr int32_t width = 4, height = 4, channels = 3; std::vector pixelData(width * height * channels, 128); JSTensorViewIn tensorView{pixelData.data(), {height, width, channels}, @@ -175,7 +175,7 @@ TEST(ObjectDetectionPixelTests, NegativeThresholdThrows) { TEST(ObjectDetectionPixelTests, ThresholdAboveOneThrows) { ObjectDetection model(kValidObjectDetectionModelPath, nullptr); - constexpr int width = 4, height = 4, channels = 3; + constexpr int32_t width = 4, height = 4, channels = 3; std::vector pixelData(width * height * channels, 128); JSTensorViewIn tensorView{pixelData.data(), {height, width, channels}, diff --git a/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts b/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts index e62c7221c..f056cff62 100644 --- a/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts +++ b/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts @@ -28,6 +28,7 @@ export class ObjectDetectionModule extends VisionModule { onDownloadProgressCallback, model.modelSource ); + if (!paths?.[0]) { throw new RnExecutorchError( RnExecutorchErrorCode.DownloadInterrupted, diff --git a/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts index eabe50ab0..762d09987 100644 --- a/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts +++ b/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts @@ -43,11 +43,16 @@ export abstract class VisionModule extends BaseModule { * const model = new ClassificationModule(); * await model.load({ modelSource: MODEL }); * + * // Use the functional form of setState to store the worklet — passing it + * // directly would cause React to invoke it immediately as an updater fn. + * const [runOnFrame, setRunOnFrame] = useState(null); + * setRunOnFrame(() => model.runOnFrame); + * * const frameOutput = useFrameOutput({ * onFrame(frame) { * 'worklet'; - * if (!model.runOnFrame) return; - * const result = model.runOnFrame(frame); + * if (!runOnFrame) return; + * const result = runOnFrame(frame); * frame.dispose(); * } * }); diff --git a/packages/react-native-executorch/src/types/common.ts b/packages/react-native-executorch/src/types/common.ts index 1ebfb3534..d992214dd 100644 --- a/packages/react-native-executorch/src/types/common.ts +++ b/packages/react-native-executorch/src/types/common.ts @@ -193,9 +193,6 @@ export interface PixelData extends Omit { /** * Frame data for vision model processing. - * Supports two modes: - * 1. ArrayBuffer mode (with memory copy) - Compatible with all platforms - * 2. NativeBuffer mode (zero-copy) - Better performance with Vision Camera v5 */ export interface Frame { /** diff --git a/packages/react-native-executorch/src/types/objectDetection.ts b/packages/react-native-executorch/src/types/objectDetection.ts index 9532c508f..5aaf81833 100644 --- a/packages/react-native-executorch/src/types/objectDetection.ts +++ b/packages/react-native-executorch/src/types/objectDetection.ts @@ -176,7 +176,7 @@ export interface ObjectDetectionType { * 1. **String path/URI**: File path, URL, or Base64-encoded string * 2. **PixelData**: Raw pixel data from image libraries (e.g., NitroImage) * - * **Note**: For VisionCamera frame processing, use `processFrame` instead. + * **Note**: For VisionCamera frame processing, use `runOnFrame` instead. * * @param input - Image source (string or PixelData object) * @param detectionThreshold - An optional number between 0 and 1 representing the minimum confidence score. Default is 0.5. From a8bf2be2db3a2e7595a70ef0c3c01f80234e774a Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Wed, 25 Feb 2026 14:16:42 +0100 Subject: [PATCH 20/26] fix(android): object detection not working on android --- ...ative-vision-camera@npm-5.0.0-beta.1.patch | 713 ------------------ apps/computer-vision/app.json | 13 +- .../app/object_detection_live/index.tsx | 3 +- apps/computer-vision/package.json | 2 +- 4 files changed, 15 insertions(+), 716 deletions(-) delete mode 100644 .yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch diff --git a/.yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch b/.yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch deleted file mode 100644 index 73f999e9a..000000000 --- a/.yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch +++ /dev/null @@ -1,713 +0,0 @@ -diff --git a/lib/expo-plugin/withVisionCamera.js b/lib/expo-plugin/withVisionCamera.js -index 32418a9..f7a8c5c 100644 ---- a/lib/expo-plugin/withVisionCamera.js -+++ b/lib/expo-plugin/withVisionCamera.js -@@ -1,4 +1,4 @@ --import { AndroidConfig, withPlugins, } from '@expo/config-plugins'; -+const { AndroidConfig, withPlugins } = require('@expo/config-plugins'); - const CAMERA_USAGE = 'Allow $(PRODUCT_NAME) to access your camera'; - const MICROPHONE_USAGE = 'Allow $(PRODUCT_NAME) to access your microphone'; - const withVisionCamera = (config, props = {}) => { -@@ -30,4 +30,4 @@ const withVisionCamera = (config, props = {}) => { - [AndroidConfig.Permissions.withPermissions, androidPermissions], - ]); - }; --export default withVisionCamera; -+module.exports = withVisionCamera; -diff --git a/cpp/Frame Processors/HybridWorkletQueueFactory.cpp b/cpp/Frame Processors/HybridWorkletQueueFactory.cpp -new file mode 100644 -index 0000000..5da4ef9 ---- /dev/null -+++ b/cpp/Frame Processors/HybridWorkletQueueFactory.cpp -@@ -0,0 +1,50 @@ -+/// -+/// HybridWorkletQueueFactory.cpp -+/// VisionCamera -+/// Copyright © 2025 Marc Rousavy @ Margelo -+/// -+ -+#include "HybridWorkletQueueFactory.hpp" -+ -+#include "JSIConverter+AsyncQueue.hpp" -+#include "NativeThreadAsyncQueue.hpp" -+#include "NativeThreadDispatcher.hpp" -+#include -+#include -+ -+namespace margelo::nitro::camera { -+ -+HybridWorkletQueueFactory::HybridWorkletQueueFactory() : HybridObject(TAG) {} -+ -+void HybridWorkletQueueFactory::loadHybridMethods() { -+ HybridWorkletQueueFactorySpec::loadHybridMethods(); -+ registerHybrids(this, [](Prototype& prototype) { -+ prototype.registerRawHybridMethod("installDispatcher", 1, &HybridWorkletQueueFactory::installDispatcher); -+ }); -+} -+ -+std::shared_ptr HybridWorkletQueueFactory::wrapThreadInQueue(const std::shared_ptr& thread) { -+ return std::make_shared(thread); -+} -+ -+double HybridWorkletQueueFactory::getCurrentThreadMarker() { -+ static std::atomic_size_t threadCounter{1}; -+ static thread_local size_t thisThreadId{0}; -+ if (thisThreadId == 0) { -+ thisThreadId = threadCounter.fetch_add(1); -+ } -+ return static_cast(thisThreadId); -+} -+ -+jsi::Value HybridWorkletQueueFactory::installDispatcher(jsi::Runtime& runtime, const jsi::Value&, const jsi::Value* args, size_t count) { -+ if (count != 1) -+ throw std::runtime_error("installDispatcher(..) must be called with exactly 1 argument!"); -+ auto thread = JSIConverter>::fromJSI(runtime, args[0]); -+ -+ auto dispatcher = std::make_shared(thread); -+ Dispatcher::installRuntimeGlobalDispatcher(runtime, dispatcher); -+ -+ return jsi::Value::undefined(); -+} -+ -+} // namespace margelo::nitro::camera -diff --git a/android/CMakeLists.txt b/android/CMakeLists.txt -index 0000000..1111111 100644 ---- a/android/CMakeLists.txt -+++ b/android/CMakeLists.txt -@@ -20,6 +20,7 @@ - "src/main/cpp" - "../cpp" - "../cpp/Frame Processors" -+ "../nitrogen/generated/shared/c++" - ) - - find_library(LOG_LIB log) -diff --git a/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.cpp b/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.cpp -new file mode 100644 -index 0000000..5da4ef9 ---- /dev/null -+++ b/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.cpp -@@ -0,0 +1,50 @@ -+/// -+/// HybridWorkletQueueFactory.cpp -+/// VisionCamera -+/// Copyright © 2025 Marc Rousavy @ Margelo -+/// -+ -+#include "HybridWorkletQueueFactory.hpp" -+ -+#include "JSIConverter+AsyncQueue.hpp" -+#include "NativeThreadAsyncQueue.hpp" -+#include "NativeThreadDispatcher.hpp" -+#include -+#include -+ -+namespace margelo::nitro::camera { -+ -+HybridWorkletQueueFactory::HybridWorkletQueueFactory() : HybridObject(TAG) {} -+ -+void HybridWorkletQueueFactory::loadHybridMethods() { -+ HybridWorkletQueueFactorySpec::loadHybridMethods(); -+ registerHybrids(this, [](Prototype& prototype) { -+ prototype.registerRawHybridMethod("installDispatcher", 1, &HybridWorkletQueueFactory::installDispatcher); -+ }); -+} -+ -+std::shared_ptr HybridWorkletQueueFactory::wrapThreadInQueue(const std::shared_ptr& thread) { -+ return std::make_shared(thread); -+} -+ -+double HybridWorkletQueueFactory::getCurrentThreadMarker() { -+ static std::atomic_size_t threadCounter{1}; -+ static thread_local size_t thisThreadId{0}; -+ if (thisThreadId == 0) { -+ thisThreadId = threadCounter.fetch_add(1); -+ } -+ return static_cast(thisThreadId); -+} -+ -+jsi::Value HybridWorkletQueueFactory::installDispatcher(jsi::Runtime& runtime, const jsi::Value&, const jsi::Value* args, size_t count) { -+ if (count != 1) -+ throw std::runtime_error("installDispatcher(..) must be called with exactly 1 argument!"); -+ auto thread = JSIConverter>::fromJSI(runtime, args[0]); -+ -+ auto dispatcher = std::make_shared(thread); -+ Dispatcher::installRuntimeGlobalDispatcher(runtime, dispatcher); -+ -+ return jsi::Value::undefined(); -+} -+ -+} // namespace margelo::nitro::camera -diff --git a/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.hpp b/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.hpp -new file mode 100644 -index 0000000..daa16d2 ---- /dev/null -+++ b/nitrogen/generated/shared/c++/HybridWorkletQueueFactory.hpp -@@ -0,0 +1,29 @@ -+/// -+/// HybridWorkletQueueFactory.hpp -+/// VisionCamera -+/// Copyright © 2025 Marc Rousavy @ Margelo -+/// -+ -+#pragma once -+ -+#include "HybridWorkletQueueFactorySpec.hpp" -+#include "JSIConverter+AsyncQueue.hpp" -+#include -+#include -+ -+namespace margelo::nitro::camera { -+ -+class HybridWorkletQueueFactory : public HybridWorkletQueueFactorySpec { -+public: -+ HybridWorkletQueueFactory(); -+ -+public: -+ std::shared_ptr wrapThreadInQueue(const std::shared_ptr& thread) override; -+ double getCurrentThreadMarker() override; -+ -+ jsi::Value installDispatcher(jsi::Runtime& runtime, const jsi::Value&, const jsi::Value* args, size_t count); -+ -+ void loadHybridMethods() override; -+}; -+ -+} // namespace margelo::nitro::camera -diff --git a/nitrogen/generated/shared/c++/JSIConverter+AsyncQueue.hpp b/nitrogen/generated/shared/c++/JSIConverter+AsyncQueue.hpp -new file mode 100644 -index 0000000..5b93f2d ---- /dev/null -+++ b/nitrogen/generated/shared/c++/JSIConverter+AsyncQueue.hpp -@@ -0,0 +1,24 @@ -+/// -+/// JSIConverter+AsyncQueue.swift -+/// VisionCamera -+/// Copyright © 2025 Marc Rousavy @ Margelo -+/// -+ -+#pragma once -+ -+#include -+#include -+#if __has_include() -+#include -+#elif __has_include() -+#include -+#else -+#error react-native-worklets Prefab not found! -+#endif -+ -+namespace margelo::nitro { -+ -+// JSIConverter> is implemented -+// in JSIConverter> -+ -+} -diff --git a/nitrogen/generated/shared/c++/NativeThreadAsyncQueue.hpp b/nitrogen/generated/shared/c++/NativeThreadAsyncQueue.hpp -new file mode 100644 -index 0000000..d5a0958 ---- /dev/null -+++ b/nitrogen/generated/shared/c++/NativeThreadAsyncQueue.hpp -@@ -0,0 +1,34 @@ -+/// -+/// NativeThreadAsyncQueue.hpp -+/// VisionCamera -+/// Copyright © 2025 Marc Rousavy @ Margelo -+/// -+ -+#pragma once -+ -+#include "HybridNativeThreadSpec.hpp" -+#include "JSIConverter+AsyncQueue.hpp" -+#include -+ -+namespace margelo::nitro::camera { -+ -+/** -+ * An implementation of `worklets::AsyncQueue` that uses a `NativeThread` to run its jobs. -+ * -+ * The `NativeThread` (`HybridNativeThreadSpec`) is a platform-implemented object, -+ * e.g. using `DispatchQueue` on iOS. -+ */ -+class NativeThreadAsyncQueue : public worklets::AsyncQueue { -+public: -+ NativeThreadAsyncQueue(std::shared_ptr thread) : _thread(std::move(thread)) {} -+ -+ void push(std::function&& job) override { -+ auto jobCopy = job; -+ _thread->runOnThread(jobCopy); -+ } -+ -+private: -+ std::shared_ptr _thread; -+}; -+ -+} // namespace margelo::nitro::camera -diff --git a/nitrogen/generated/shared/c++/NativeThreadDispatcher.hpp b/nitrogen/generated/shared/c++/NativeThreadDispatcher.hpp -new file mode 100644 -index 0000000..758d2f2 ---- /dev/null -+++ b/nitrogen/generated/shared/c++/NativeThreadDispatcher.hpp -@@ -0,0 +1,36 @@ -+/// -+/// NativeThreadDispatcher.hpp -+/// VisionCamera -+/// Copyright © 2025 Marc Rousavy @ Margelo -+/// -+ -+#pragma once -+ -+#include "HybridNativeThreadSpec.hpp" -+#include "JSIConverter+AsyncQueue.hpp" -+#include -+ -+namespace margelo::nitro::camera { -+ -+/** -+ * An implementation of `nitro::Dispatcher` that uses a `NativeThread` to run its jobs. -+ * -+ * The `NativeThread` (`HybridNativeThreadSpec`) is a platform-implemented object, -+ * e.g. using `DispatchQueue` on iOS. -+ */ -+class NativeThreadDispatcher : public nitro::Dispatcher { -+public: -+ NativeThreadDispatcher(std::shared_ptr thread) : _thread(std::move(thread)) {} -+ -+ void runSync(std::function&&) override { -+ throw std::runtime_error("runSync(...) is not implemented for NativeThreadDispatcher!"); -+ } -+ void runAsync(std::function&& function) override { -+ _thread->runOnThread(function); -+ } -+ -+private: -+ std::shared_ptr _thread; -+}; -+ -+} // namespace margelo::nitro::camera -diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/BoundingBox.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/BoundingBox.kt -new file mode 100644 -index 0000000..aaaaaaa ---- /dev/null -+++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/BoundingBox.kt -@@ -0,0 +1,47 @@ -+/// -+/// BoundingBox.kt -+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. -+/// https://github.com/mrousavy/nitro -+/// Copyright © Marc Rousavy @ Margelo -+/// -+ -+package com.margelo.nitro.camera -+ -+import androidx.annotation.Keep -+import com.facebook.proguard.annotations.DoNotStrip -+ -+ -+/** -+ * Represents the JavaScript object/struct "BoundingBox". -+ */ -+@DoNotStrip -+@Keep -+data class BoundingBox( -+ @DoNotStrip -+ @Keep -+ val x: Double, -+ @DoNotStrip -+ @Keep -+ val y: Double, -+ @DoNotStrip -+ @Keep -+ val width: Double, -+ @DoNotStrip -+ @Keep -+ val height: Double -+) { -+ /* primary constructor */ -+ -+ companion object { -+ /** -+ * Constructor called from C++ -+ */ -+ @DoNotStrip -+ @Keep -+ @Suppress("unused") -+ @JvmStatic -+ private fun fromCpp(x: Double, y: Double, width: Double, height: Double): BoundingBox { -+ return BoundingBox(x, y, width, height) -+ } -+ } -+} -diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/HybridScannedObjectSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/HybridScannedObjectSpec.kt -new file mode 100644 -index 0000000..bbbbbbb ---- /dev/null -+++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/HybridScannedObjectSpec.kt -@@ -0,0 +1,60 @@ -+/// -+/// HybridScannedObjectSpec.kt -+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. -+/// https://github.com/mrousavy/nitro -+/// Copyright © Marc Rousavy @ Margelo -+/// -+ -+package com.margelo.nitro.camera -+ -+import androidx.annotation.Keep -+import com.facebook.jni.HybridData -+import com.facebook.proguard.annotations.DoNotStrip -+import com.margelo.nitro.core.HybridObject -+ -+/** -+ * A Kotlin class representing the ScannedObject HybridObject. -+ * Implement this abstract class to create Kotlin-based instances of ScannedObject. -+ */ -+@DoNotStrip -+@Keep -+@Suppress( -+ "KotlinJniMissingFunction", "unused", -+ "RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet", -+ "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" -+) -+abstract class HybridScannedObjectSpec: HybridObject() { -+ @DoNotStrip -+ private var mHybridData: HybridData = initHybrid() -+ -+ init { -+ super.updateNative(mHybridData) -+ } -+ -+ override fun updateNative(hybridData: HybridData) { -+ mHybridData = hybridData -+ super.updateNative(hybridData) -+ } -+ -+ // Default implementation of `HybridObject.toString()` -+ override fun toString(): String { -+ return "[HybridObject ScannedObject]" -+ } -+ -+ // Properties -+ @get:DoNotStrip -+ @get:Keep -+ abstract val type: ScannedObjectType -+ -+ @get:DoNotStrip -+ @get:Keep -+ abstract val boundingBox: BoundingBox -+ -+ // Methods -+ -+ private external fun initHybrid(): HybridData -+ -+ companion object { -+ protected const val TAG = "HybridScannedObjectSpec" -+ } -+} -diff --git a/nitrogen/generated/android/c++/JBoundingBox.hpp b/nitrogen/generated/android/c++/JBoundingBox.hpp -new file mode 100644 -index 0000000..ccccccc ---- /dev/null -+++ b/nitrogen/generated/android/c++/JBoundingBox.hpp -@@ -0,0 +1,69 @@ -+/// -+/// JBoundingBox.hpp -+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. -+/// https://github.com/mrousavy/nitro -+/// Copyright © Marc Rousavy @ Margelo -+/// -+ -+#pragma once -+ -+#include -+#include "BoundingBox.hpp" -+ -+ -+ -+namespace margelo::nitro::camera { -+ -+ using namespace facebook; -+ -+ /** -+ * The C++ JNI bridge between the C++ struct "BoundingBox" and the the Kotlin data class "BoundingBox". -+ */ -+ struct JBoundingBox final: public jni::JavaClass { -+ public: -+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/camera/BoundingBox;"; -+ -+ public: -+ /** -+ * Convert this Java/Kotlin-based struct to the C++ struct BoundingBox by copying all values to C++. -+ */ -+ [[maybe_unused]] -+ [[nodiscard]] -+ BoundingBox toCpp() const { -+ static const auto clazz = javaClassStatic(); -+ static const auto fieldX = clazz->getField("x"); -+ double x = this->getFieldValue(fieldX); -+ static const auto fieldY = clazz->getField("y"); -+ double y = this->getFieldValue(fieldY); -+ static const auto fieldWidth = clazz->getField("width"); -+ double width = this->getFieldValue(fieldWidth); -+ static const auto fieldHeight = clazz->getField("height"); -+ double height = this->getFieldValue(fieldHeight); -+ return BoundingBox( -+ x, -+ y, -+ width, -+ height -+ ); -+ } -+ -+ public: -+ /** -+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java. -+ */ -+ [[maybe_unused]] -+ static jni::local_ref fromCpp(const BoundingBox& value) { -+ using JSignature = JBoundingBox(double, double, double, double); -+ static const auto clazz = javaClassStatic(); -+ static const auto create = clazz->getStaticMethod("fromCpp"); -+ return create( -+ clazz, -+ value.x, -+ value.y, -+ value.width, -+ value.height -+ ); -+ } -+ }; -+ -+} // namespace margelo::nitro::camera -diff --git a/nitrogen/generated/android/c++/JHybridScannedObjectSpec.hpp b/nitrogen/generated/android/c++/JHybridScannedObjectSpec.hpp -new file mode 100644 -index 0000000..ddddddd ---- /dev/null -+++ b/nitrogen/generated/android/c++/JHybridScannedObjectSpec.hpp -@@ -0,0 +1,63 @@ -+/// -+/// JHybridScannedObjectSpec.hpp -+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. -+/// https://github.com/mrousavy/nitro -+/// Copyright © Marc Rousavy @ Margelo -+/// -+ -+#pragma once -+ -+#include -+#include -+#include "HybridScannedObjectSpec.hpp" -+ -+ -+ -+ -+namespace margelo::nitro::camera { -+ -+ using namespace facebook; -+ -+ class JHybridScannedObjectSpec: public jni::HybridClass, -+ public virtual HybridScannedObjectSpec { -+ public: -+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/camera/HybridScannedObjectSpec;"; -+ static jni::local_ref initHybrid(jni::alias_ref jThis); -+ static void registerNatives(); -+ -+ protected: -+ // C++ constructor (called from Java via `initHybrid()`) -+ explicit JHybridScannedObjectSpec(jni::alias_ref jThis) : -+ HybridObject(HybridScannedObjectSpec::TAG), -+ HybridBase(jThis), -+ _javaPart(jni::make_global(jThis)) {} -+ -+ public: -+ ~JHybridScannedObjectSpec() override { -+ // Hermes GC can destroy JS objects on a non-JNI Thread. -+ jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); -+ } -+ -+ public: -+ size_t getExternalMemorySize() noexcept override; -+ bool equals(const std::shared_ptr& other) override; -+ void dispose() noexcept override; -+ std::string toString() override; -+ -+ public: -+ inline const jni::global_ref& getJavaPart() const noexcept { -+ return _javaPart; -+ } -+ -+ public: -+ // Properties -+ ScannedObjectType getType() override; -+ BoundingBox getBoundingBox() override; -+ -+ private: -+ friend HybridBase; -+ using HybridBase::HybridBase; -+ jni::global_ref _javaPart; -+ }; -+ -+} // namespace margelo::nitro::camera -diff --git a/nitrogen/generated/android/VisionCamera+autolinking.cmake b/nitrogen/generated/android/VisionCamera+autolinking.cmake -index 0000000..1111111 100644 ---- a/nitrogen/generated/android/VisionCamera+autolinking.cmake -+++ b/nitrogen/generated/android/VisionCamera+autolinking.cmake -@@ -112,3 +112,4 @@ - ../nitrogen/generated/android/c++/JHybridPreviewViewSpec.cpp - ../nitrogen/generated/android/c++/views/JHybridPreviewViewStateUpdater.cpp -+ ../nitrogen/generated/android/c++/JHybridScannedObjectSpec.cpp - ) -diff --git a/nitrogen/generated/android/c++/JHybridScannedObjectSpec.cpp b/nitrogen/generated/android/c++/JHybridScannedObjectSpec.cpp -new file mode 100644 -index 0000000..eeeeeee ---- /dev/null -+++ b/nitrogen/generated/android/c++/JHybridScannedObjectSpec.cpp -@@ -0,0 +1,69 @@ -+/// -+/// JHybridScannedObjectSpec.cpp -+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. -+/// https://github.com/mrousavy/nitro -+/// Copyright © Marc Rousavy @ Margelo -+/// -+ -+#include "JHybridScannedObjectSpec.hpp" -+ -+// Forward declaration of `ScannedObjectType` to properly resolve imports. -+namespace margelo::nitro::camera { enum class ScannedObjectType; } -+// Forward declaration of `BoundingBox` to properly resolve imports. -+namespace margelo::nitro::camera { struct BoundingBox; } -+ -+#include "ScannedObjectType.hpp" -+#include "JScannedObjectType.hpp" -+#include "BoundingBox.hpp" -+#include "JBoundingBox.hpp" -+ -+namespace margelo::nitro::camera { -+ -+ jni::local_ref JHybridScannedObjectSpec::initHybrid(jni::alias_ref jThis) { -+ return makeCxxInstance(jThis); -+ } -+ -+ void JHybridScannedObjectSpec::registerNatives() { -+ registerHybrid({ -+ makeNativeMethod("initHybrid", JHybridScannedObjectSpec::initHybrid), -+ }); -+ } -+ -+ size_t JHybridScannedObjectSpec::getExternalMemorySize() noexcept { -+ static const auto method = javaClassStatic()->getMethod("getMemorySize"); -+ return method(_javaPart); -+ } -+ -+ bool JHybridScannedObjectSpec::equals(const std::shared_ptr& other) { -+ if (auto otherCast = std::dynamic_pointer_cast(other)) { -+ return _javaPart == otherCast->_javaPart; -+ } -+ return false; -+ } -+ -+ void JHybridScannedObjectSpec::dispose() noexcept { -+ static const auto method = javaClassStatic()->getMethod("dispose"); -+ method(_javaPart); -+ } -+ -+ std::string JHybridScannedObjectSpec::toString() { -+ static const auto method = javaClassStatic()->getMethod("toString"); -+ auto javaString = method(_javaPart); -+ return javaString->toStdString(); -+ } -+ -+ // Properties -+ ScannedObjectType JHybridScannedObjectSpec::getType() { -+ static const auto method = javaClassStatic()->getMethod()>("getType"); -+ auto __result = method(_javaPart); -+ return __result->toCpp(); -+ } -+ BoundingBox JHybridScannedObjectSpec::getBoundingBox() { -+ static const auto method = javaClassStatic()->getMethod()>("getBoundingBox"); -+ auto __result = method(_javaPart); -+ return __result->toCpp(); -+ } -+ -+ // Methods -+ -+} // namespace margelo::nitro::camera -diff --git a/android/src/main/java/com/margelo/nitro/camera/hybrids/recording/HybridVideoRecorder.kt b/android/src/main/java/com/margelo/nitro/camera/hybrids/recording/HybridVideoRecorder.kt -index aaaaaaa..bbbbbbb 100644 ---- a/android/src/main/java/com/margelo/nitro/camera/hybrids/recording/HybridVideoRecorder.kt -+++ b/android/src/main/java/com/margelo/nitro/camera/hybrids/recording/HybridVideoRecorder.kt -@@ -55,6 +55,6 @@ - when (event) { - is VideoRecordEvent.Start -> { -- promise.resolve() -+ promise.resolve(Unit) - didResolve = true - } - -@@ -98,27 +98,48 @@ - override fun stopRecording(): Promise { -- return Promise.parallel(executor) { -- val recording = recording ?: throw Error("Not currently recording!") -- recording.stop() -- this.isPaused = false -- this.recording = null -- this.recordedDuration = 0.0 -- this.recordedFileSize = 0.0 -- } -+ val promise = Promise() -+ executor.execute { -+ try { -+ val recording = recording ?: throw Error("Not currently recording!") -+ recording.stop() -+ this.isPaused = false -+ this.recording = null -+ this.recordedDuration = 0.0 -+ this.recordedFileSize = 0.0 -+ promise.resolve(Unit) -+ } catch (e: Throwable) { -+ promise.reject(e) -+ } -+ } -+ return promise - } - - override fun pauseRecording(): Promise { -- return Promise.parallel(executor) { -- val recording = recording ?: throw Error("Not currently recording!") -- recording.pause() -- this.isPaused = true -- } -+ val promise = Promise() -+ executor.execute { -+ try { -+ val recording = recording ?: throw Error("Not currently recording!") -+ recording.pause() -+ this.isPaused = true -+ promise.resolve(Unit) -+ } catch (e: Throwable) { -+ promise.reject(e) -+ } -+ } -+ return promise - } - - override fun resumeRecording(): Promise { -- return Promise.parallel(executor) { -- val recording = recording ?: throw Error("Not currently recording!") -- recording.resume() -- this.isPaused = false -- } -+ val promise = Promise() -+ executor.execute { -+ try { -+ val recording = recording ?: throw Error("Not currently recording!") -+ recording.resume() -+ this.isPaused = false -+ promise.resolve(Unit) -+ } catch (e: Throwable) { -+ promise.reject(e) -+ } -+ } -+ return promise - } - } diff --git a/apps/computer-vision/app.json b/apps/computer-vision/app.json index 5db8c1390..4fcbca2ce 100644 --- a/apps/computer-vision/app.json +++ b/apps/computer-vision/app.json @@ -31,6 +31,17 @@ "web": { "favicon": "./assets/icons/favicon.png" }, - "plugins": ["expo-font", "expo-router"] + "plugins": [ + "expo-font", + "expo-router", + [ + "expo-build-properties", + { + "android": { + "minSdkVersion": 26 + } + } + ] + ] } } diff --git a/apps/computer-vision/app/object_detection_live/index.tsx b/apps/computer-vision/app/object_detection_live/index.tsx index 5f8bb2120..cd1e9cca8 100644 --- a/apps/computer-vision/app/object_detection_live/index.tsx +++ b/apps/computer-vision/app/object_detection_live/index.tsx @@ -54,7 +54,7 @@ export default function ObjectDetectionLiveScreen() { const format = useMemo(() => { if (device == null) return undefined; try { - return getCameraFormat(device, Templates.Video); + return getCameraFormat(device, Templates.FrameProcessing); } catch { return undefined; } @@ -72,6 +72,7 @@ export default function ObjectDetectionLiveScreen() { const frameOutput = useFrameOutput({ pixelFormat: 'rgb', + dropFramesWhileBusy: true, onFrame(frame) { 'worklet'; if (!model.runOnFrame) { diff --git a/apps/computer-vision/package.json b/apps/computer-vision/package.json index a32f70d5e..d7128125d 100644 --- a/apps/computer-vision/package.json +++ b/apps/computer-vision/package.json @@ -38,7 +38,7 @@ "react-native-screens": "~4.16.0", "react-native-svg": "15.15.3", "react-native-svg-transformer": "^1.5.3", - "react-native-vision-camera": "patch:react-native-vision-camera@npm%3A5.0.0-beta.1#~/.yarn/patches/react-native-vision-camera@npm-5.0.0-beta.1.patch", + "react-native-vision-camera": "5.0.0-beta.2", "react-native-worklets": "0.7.4" }, "devDependencies": { From bff75b5eb0588dae21b96a6d44c597855d6aca39 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Wed, 25 Feb 2026 14:38:39 +0100 Subject: [PATCH 21/26] docs: add correct api references --- .../classes/ClassificationModule.md | 90 +++++++- .../classes/ExecutorchModule.md | 90 +++++++- .../classes/ImageEmbeddingsModule.md | 90 +++++++- .../classes/ObjectDetectionModule.md | 202 ++++++++++++++++-- .../classes/SemanticSegmentationModule.md | 92 +++++++- .../classes/StyleTransferModule.md | 90 +++++++- .../classes/TextEmbeddingsModule.md | 90 +++++++- .../classes/TextToImageModule.md | 90 +++++++- .../06-api-reference/classes/VADModule.md | 90 +++++++- .../enumerations/RnExecutorchErrorCode.md | 70 +++--- docs/docs/06-api-reference/index.md | 2 + .../docs/06-api-reference/interfaces/Frame.md | 36 ++++ .../interfaces/ObjectDetectionType.md | 80 ++++++- .../06-api-reference/interfaces/PixelData.md | 65 ++++++ 14 files changed, 1068 insertions(+), 109 deletions(-) create mode 100644 docs/docs/06-api-reference/interfaces/Frame.md create mode 100644 docs/docs/06-api-reference/interfaces/PixelData.md diff --git a/docs/docs/06-api-reference/classes/ClassificationModule.md b/docs/docs/06-api-reference/classes/ClassificationModule.md index dadebddcd..f3cb19464 100644 --- a/docs/docs/06-api-reference/classes/ClassificationModule.md +++ b/docs/docs/06-api-reference/classes/ClassificationModule.md @@ -24,13 +24,87 @@ Module for image classification tasks. ## Properties +### generateFromFrame() + +> **generateFromFrame**: (`frameData`, ...`args`) => `any` + +Defined in: [modules/BaseModule.ts:56](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L56) + +Process a camera frame directly for real-time inference. + +This method is bound to a native JSI function after calling `load()`, +making it worklet-compatible and safe to call from VisionCamera's +frame processor thread. + +**Performance characteristics:** + +- **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + frame data is accessed directly without copying (fastest, recommended). +- **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + from native to JS, then accessed from native code (slower, fallback). + +**Usage with VisionCamera:** + +```typescript +const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + // Zero-copy approach (recommended) + const nativeBuffer = frame.getNativeBuffer(); + const result = model.generateFromFrame( + { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }, + ...args + ); + nativeBuffer.release(); + frame.dispose(); + }, +}); +``` + +#### Parameters + +##### frameData + +[`Frame`](../interfaces/Frame.md) + +Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + +##### args + +...`any`[] + +Additional model-specific arguments (e.g., threshold, options) + +#### Returns + +`any` + +Model-specific output (e.g., detections, classifications, embeddings) + +#### See + +[Frame](../interfaces/Frame.md) for frame data format details + +#### Inherited from + +`BaseModule.generateFromFrame` + +--- + ### nativeModule > **nativeModule**: `any` = `null` -Defined in: [modules/BaseModule.ts:8](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L8) +Defined in: [modules/BaseModule.ts:17](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L17) + +**`Internal`** -Native module instance +Native module instance (JSI Host Object) #### Inherited from @@ -42,9 +116,11 @@ Native module instance > **delete**(): `void` -Defined in: [modules/BaseModule.ts:41](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L41) +Defined in: [modules/BaseModule.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L100) -Unloads the model from memory. +Unloads the model from memory and releases native resources. + +Always call this method when you're done with a model to prevent memory leaks. #### Returns @@ -84,7 +160,9 @@ The classification result. > `protected` **forwardET**(`inputTensor`): `Promise`\<[`TensorPtr`](../interfaces/TensorPtr.md)[]\> -Defined in: [modules/BaseModule.ts:23](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L23) +Defined in: [modules/BaseModule.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L80) + +**`Internal`** Runs the model's forward method with the given input tensors. It returns the output tensors that mimic the structure of output from ExecuTorch. @@ -113,7 +191,7 @@ Array of output tensors. > **getInputShape**(`methodName`, `index`): `Promise`\<`number`[]\> -Defined in: [modules/BaseModule.ts:34](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L34) +Defined in: [modules/BaseModule.ts:91](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L91) Gets the input shape for a given method and index. diff --git a/docs/docs/06-api-reference/classes/ExecutorchModule.md b/docs/docs/06-api-reference/classes/ExecutorchModule.md index 8e45facf4..8592a13ff 100644 --- a/docs/docs/06-api-reference/classes/ExecutorchModule.md +++ b/docs/docs/06-api-reference/classes/ExecutorchModule.md @@ -24,13 +24,87 @@ General module for executing custom Executorch models. ## Properties +### generateFromFrame() + +> **generateFromFrame**: (`frameData`, ...`args`) => `any` + +Defined in: [modules/BaseModule.ts:56](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L56) + +Process a camera frame directly for real-time inference. + +This method is bound to a native JSI function after calling `load()`, +making it worklet-compatible and safe to call from VisionCamera's +frame processor thread. + +**Performance characteristics:** + +- **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + frame data is accessed directly without copying (fastest, recommended). +- **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + from native to JS, then accessed from native code (slower, fallback). + +**Usage with VisionCamera:** + +```typescript +const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + // Zero-copy approach (recommended) + const nativeBuffer = frame.getNativeBuffer(); + const result = model.generateFromFrame( + { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }, + ...args + ); + nativeBuffer.release(); + frame.dispose(); + }, +}); +``` + +#### Parameters + +##### frameData + +[`Frame`](../interfaces/Frame.md) + +Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + +##### args + +...`any`[] + +Additional model-specific arguments (e.g., threshold, options) + +#### Returns + +`any` + +Model-specific output (e.g., detections, classifications, embeddings) + +#### See + +[Frame](../interfaces/Frame.md) for frame data format details + +#### Inherited from + +`BaseModule.generateFromFrame` + +--- + ### nativeModule > **nativeModule**: `any` = `null` -Defined in: [modules/BaseModule.ts:8](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L8) +Defined in: [modules/BaseModule.ts:17](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L17) + +**`Internal`** -Native module instance +Native module instance (JSI Host Object) #### Inherited from @@ -42,9 +116,11 @@ Native module instance > **delete**(): `void` -Defined in: [modules/BaseModule.ts:41](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L41) +Defined in: [modules/BaseModule.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L100) -Unloads the model from memory. +Unloads the model from memory and releases native resources. + +Always call this method when you're done with a model to prevent memory leaks. #### Returns @@ -85,7 +161,9 @@ An array of output tensor pointers. > `protected` **forwardET**(`inputTensor`): `Promise`\<[`TensorPtr`](../interfaces/TensorPtr.md)[]\> -Defined in: [modules/BaseModule.ts:23](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L23) +Defined in: [modules/BaseModule.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L80) + +**`Internal`** Runs the model's forward method with the given input tensors. It returns the output tensors that mimic the structure of output from ExecuTorch. @@ -114,7 +192,7 @@ Array of output tensors. > **getInputShape**(`methodName`, `index`): `Promise`\<`number`[]\> -Defined in: [modules/BaseModule.ts:34](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L34) +Defined in: [modules/BaseModule.ts:91](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L91) Gets the input shape for a given method and index. diff --git a/docs/docs/06-api-reference/classes/ImageEmbeddingsModule.md b/docs/docs/06-api-reference/classes/ImageEmbeddingsModule.md index f7787cd87..9ae05fc40 100644 --- a/docs/docs/06-api-reference/classes/ImageEmbeddingsModule.md +++ b/docs/docs/06-api-reference/classes/ImageEmbeddingsModule.md @@ -24,13 +24,87 @@ Module for generating image embeddings from input images. ## Properties +### generateFromFrame() + +> **generateFromFrame**: (`frameData`, ...`args`) => `any` + +Defined in: [modules/BaseModule.ts:56](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L56) + +Process a camera frame directly for real-time inference. + +This method is bound to a native JSI function after calling `load()`, +making it worklet-compatible and safe to call from VisionCamera's +frame processor thread. + +**Performance characteristics:** + +- **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + frame data is accessed directly without copying (fastest, recommended). +- **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + from native to JS, then accessed from native code (slower, fallback). + +**Usage with VisionCamera:** + +```typescript +const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + // Zero-copy approach (recommended) + const nativeBuffer = frame.getNativeBuffer(); + const result = model.generateFromFrame( + { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }, + ...args + ); + nativeBuffer.release(); + frame.dispose(); + }, +}); +``` + +#### Parameters + +##### frameData + +[`Frame`](../interfaces/Frame.md) + +Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + +##### args + +...`any`[] + +Additional model-specific arguments (e.g., threshold, options) + +#### Returns + +`any` + +Model-specific output (e.g., detections, classifications, embeddings) + +#### See + +[Frame](../interfaces/Frame.md) for frame data format details + +#### Inherited from + +`BaseModule.generateFromFrame` + +--- + ### nativeModule > **nativeModule**: `any` = `null` -Defined in: [modules/BaseModule.ts:8](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L8) +Defined in: [modules/BaseModule.ts:17](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L17) + +**`Internal`** -Native module instance +Native module instance (JSI Host Object) #### Inherited from @@ -42,9 +116,11 @@ Native module instance > **delete**(): `void` -Defined in: [modules/BaseModule.ts:41](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L41) +Defined in: [modules/BaseModule.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L100) -Unloads the model from memory. +Unloads the model from memory and releases native resources. + +Always call this method when you're done with a model to prevent memory leaks. #### Returns @@ -84,7 +160,9 @@ A Float32Array containing the image embeddings. > `protected` **forwardET**(`inputTensor`): `Promise`\<[`TensorPtr`](../interfaces/TensorPtr.md)[]\> -Defined in: [modules/BaseModule.ts:23](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L23) +Defined in: [modules/BaseModule.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L80) + +**`Internal`** Runs the model's forward method with the given input tensors. It returns the output tensors that mimic the structure of output from ExecuTorch. @@ -113,7 +191,7 @@ Array of output tensors. > **getInputShape**(`methodName`, `index`): `Promise`\<`number`[]\> -Defined in: [modules/BaseModule.ts:34](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L34) +Defined in: [modules/BaseModule.ts:91](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L91) Gets the input shape for a given method and index. diff --git a/docs/docs/06-api-reference/classes/ObjectDetectionModule.md b/docs/docs/06-api-reference/classes/ObjectDetectionModule.md index 662bad8ad..8e199979a 100644 --- a/docs/docs/06-api-reference/classes/ObjectDetectionModule.md +++ b/docs/docs/06-api-reference/classes/ObjectDetectionModule.md @@ -6,7 +6,7 @@ Module for object detection tasks. ## Extends -- `BaseModule` +- `VisionModule`\<[`Detection`](../interfaces/Detection.md)[]\> ## Constructors @@ -20,21 +20,141 @@ Module for object detection tasks. #### Inherited from -`BaseModule.constructor` +`VisionModule.constructor` ## Properties +### generateFromFrame() + +> **generateFromFrame**: (`frameData`, ...`args`) => `any` + +Defined in: [modules/BaseModule.ts:56](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L56) + +Process a camera frame directly for real-time inference. + +This method is bound to a native JSI function after calling `load()`, +making it worklet-compatible and safe to call from VisionCamera's +frame processor thread. + +**Performance characteristics:** + +- **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + frame data is accessed directly without copying (fastest, recommended). +- **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + from native to JS, then accessed from native code (slower, fallback). + +**Usage with VisionCamera:** + +```typescript +const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + // Zero-copy approach (recommended) + const nativeBuffer = frame.getNativeBuffer(); + const result = model.generateFromFrame( + { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }, + ...args + ); + nativeBuffer.release(); + frame.dispose(); + }, +}); +``` + +#### Parameters + +##### frameData + +[`Frame`](../interfaces/Frame.md) + +Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + +##### args + +...`any`[] + +Additional model-specific arguments (e.g., threshold, options) + +#### Returns + +`any` + +Model-specific output (e.g., detections, classifications, embeddings) + +#### See + +[Frame](../interfaces/Frame.md) for frame data format details + +#### Inherited from + +`VisionModule.generateFromFrame` + +--- + ### nativeModule > **nativeModule**: `any` = `null` -Defined in: [modules/BaseModule.ts:8](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L8) +Defined in: [modules/BaseModule.ts:17](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L17) + +**`Internal`** + +Native module instance (JSI Host Object) -Native module instance +#### Inherited from + +`VisionModule.nativeModule` + +## Accessors + +### runOnFrame + +#### Get Signature + +> **get** **runOnFrame**(): (`frame`, ...`args`) => `TOutput` \| `null` + +Defined in: [modules/computer_vision/VisionModule.ts:61](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/computer_vision/VisionModule.ts#L61) + +Synchronous worklet function for real-time VisionCamera frame processing. + +Only available after the model is loaded. Returns null if not loaded. + +**Use this for VisionCamera frame processing in worklets.** +For async processing, use `forward()` instead. + +##### Example + +```typescript +const model = new ClassificationModule(); +await model.load({ modelSource: MODEL }); + +// Use the functional form of setState to store the worklet — passing it +// directly would cause React to invoke it immediately as an updater fn. +const [runOnFrame, setRunOnFrame] = useState(null); +setRunOnFrame(() => model.runOnFrame); + +const frameOutput = useFrameOutput({ + onFrame(frame) { + 'worklet'; + if (!runOnFrame) return; + const result = runOnFrame(frame); + frame.dispose(); + }, +}); +``` + +##### Returns + +(`frame`, ...`args`) => `TOutput` \| `null` #### Inherited from -`BaseModule.nativeModule` +`VisionModule.runOnFrame` ## Methods @@ -42,9 +162,11 @@ Native module instance > **delete**(): `void` -Defined in: [modules/BaseModule.ts:41](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L41) +Defined in: [modules/BaseModule.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L100) + +Unloads the model from memory and releases native resources. -Unloads the model from memory. +Always call this method when you're done with a model to prevent memory leaks. #### Returns @@ -52,7 +174,7 @@ Unloads the model from memory. #### Inherited from -`BaseModule.delete` +`VisionModule.delete` --- @@ -60,30 +182,62 @@ Unloads the model from memory. > **forward**(`imageSource`, `detectionThreshold?`): `Promise`\<[`Detection`](../interfaces/Detection.md)[]\> -Defined in: [modules/computer_vision/ObjectDetectionModule.ts:54](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts#L54) +Defined in: [modules/computer_vision/ObjectDetectionModule.ts:46](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts#L46) + +Executes the model's forward pass with automatic input type detection. + +Supports two input types: -Executes the model's forward pass, where `imageSource` can be a fetchable resource or a Base64-encoded string. -`detectionThreshold` can be supplied to alter the sensitivity of the detection. +1. **String path/URI**: File path, URL, or Base64-encoded string +2. **PixelData**: Raw pixel data from image libraries (e.g., NitroImage) + +**Note**: For VisionCamera frame processing, use `runOnFrame` instead. +This method is async and cannot be called in worklet context. #### Parameters -##### imageSource +##### input -`string` +Image source (string path or PixelData object) -The image source to be processed. +`string` | [`PixelData`](../interfaces/PixelData.md) ##### detectionThreshold? -`number` = `0.7` - -The threshold for detection sensitivity. Default is 0.7. +`number` = `0.5` #### Returns `Promise`\<[`Detection`](../interfaces/Detection.md)[]\> -An array of Detection objects representing detected items in the image. +A Promise that resolves to the model output. + +#### Example + +```typescript +// String path (async) +const result1 = await model.forward('file:///path/to/image.jpg'); + +// Pixel data (async) +const result2 = await model.forward({ + dataPtr: new Uint8Array(pixelBuffer), + sizes: [480, 640, 3], + scalarType: ScalarType.BYTE, +}); + +// For VisionCamera frames, use runOnFrame in worklet: +const frameOutput = useFrameOutput({ + onFrame(frame) { + 'worklet'; + if (!model.runOnFrame) return; + const result = model.runOnFrame(frame); + }, +}); +``` + +#### Overrides + +`VisionModule.forward` --- @@ -91,7 +245,9 @@ An array of Detection objects representing detected items in the image. > `protected` **forwardET**(`inputTensor`): `Promise`\<[`TensorPtr`](../interfaces/TensorPtr.md)[]\> -Defined in: [modules/BaseModule.ts:23](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L23) +Defined in: [modules/BaseModule.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L80) + +**`Internal`** Runs the model's forward method with the given input tensors. It returns the output tensors that mimic the structure of output from ExecuTorch. @@ -112,7 +268,7 @@ Array of output tensors. #### Inherited from -`BaseModule.forwardET` +`VisionModule.forwardET` --- @@ -120,7 +276,7 @@ Array of output tensors. > **getInputShape**(`methodName`, `index`): `Promise`\<`number`[]\> -Defined in: [modules/BaseModule.ts:34](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L34) +Defined in: [modules/BaseModule.ts:91](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L91) Gets the input shape for a given method and index. @@ -146,7 +302,7 @@ The input shape as an array of numbers. #### Inherited from -`BaseModule.getInputShape` +`VisionModule.getInputShape` --- @@ -181,4 +337,4 @@ Optional callback to monitor download progress. #### Overrides -`BaseModule.load` +`VisionModule.load` diff --git a/docs/docs/06-api-reference/classes/SemanticSegmentationModule.md b/docs/docs/06-api-reference/classes/SemanticSegmentationModule.md index 861d86e08..b6f23cd74 100644 --- a/docs/docs/06-api-reference/classes/SemanticSegmentationModule.md +++ b/docs/docs/06-api-reference/classes/SemanticSegmentationModule.md @@ -26,13 +26,87 @@ Either a built-in model name (`'deeplab-v3-resnet50'`, ## Properties +### generateFromFrame() + +> **generateFromFrame**: (`frameData`, ...`args`) => `any` + +Defined in: [modules/BaseModule.ts:56](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L56) + +Process a camera frame directly for real-time inference. + +This method is bound to a native JSI function after calling `load()`, +making it worklet-compatible and safe to call from VisionCamera's +frame processor thread. + +**Performance characteristics:** + +- **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + frame data is accessed directly without copying (fastest, recommended). +- **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + from native to JS, then accessed from native code (slower, fallback). + +**Usage with VisionCamera:** + +```typescript +const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + // Zero-copy approach (recommended) + const nativeBuffer = frame.getNativeBuffer(); + const result = model.generateFromFrame( + { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }, + ...args + ); + nativeBuffer.release(); + frame.dispose(); + }, +}); +``` + +#### Parameters + +##### frameData + +[`Frame`](../interfaces/Frame.md) + +Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + +##### args + +...`any`[] + +Additional model-specific arguments (e.g., threshold, options) + +#### Returns + +`any` + +Model-specific output (e.g., detections, classifications, embeddings) + +#### See + +[Frame](../interfaces/Frame.md) for frame data format details + +#### Inherited from + +`BaseModule.generateFromFrame` + +--- + ### nativeModule > **nativeModule**: `any` = `null` -Defined in: [modules/BaseModule.ts:8](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L8) +Defined in: [modules/BaseModule.ts:17](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L17) + +**`Internal`** -Native module instance +Native module instance (JSI Host Object) #### Inherited from @@ -44,9 +118,11 @@ Native module instance > **delete**(): `void` -Defined in: [modules/BaseModule.ts:41](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L41) +Defined in: [modules/BaseModule.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L100) -Unloads the model from memory. +Unloads the model from memory and releases native resources. + +Always call this method when you're done with a model to prevent memory leaks. #### Returns @@ -108,7 +184,9 @@ If the model is not loaded. > `protected` **forwardET**(`inputTensor`): `Promise`\<[`TensorPtr`](../interfaces/TensorPtr.md)[]\> -Defined in: [modules/BaseModule.ts:23](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L23) +Defined in: [modules/BaseModule.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L80) + +**`Internal`** Runs the model's forward method with the given input tensors. It returns the output tensors that mimic the structure of output from ExecuTorch. @@ -137,7 +215,7 @@ Array of output tensors. > **getInputShape**(`methodName`, `index`): `Promise`\<`number`[]\> -Defined in: [modules/BaseModule.ts:34](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L34) +Defined in: [modules/BaseModule.ts:91](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L91) Gets the input shape for a given method and index. @@ -173,6 +251,8 @@ The input shape as an array of numbers. Defined in: [modules/computer_vision/SemanticSegmentationModule.ts:97](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/computer_vision/SemanticSegmentationModule.ts#L97) +Load the model and prepare it for inference. + #### Returns `Promise`\<`void`\> diff --git a/docs/docs/06-api-reference/classes/StyleTransferModule.md b/docs/docs/06-api-reference/classes/StyleTransferModule.md index f65ba4802..fde173d7c 100644 --- a/docs/docs/06-api-reference/classes/StyleTransferModule.md +++ b/docs/docs/06-api-reference/classes/StyleTransferModule.md @@ -24,13 +24,87 @@ Module for style transfer tasks. ## Properties +### generateFromFrame() + +> **generateFromFrame**: (`frameData`, ...`args`) => `any` + +Defined in: [modules/BaseModule.ts:56](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L56) + +Process a camera frame directly for real-time inference. + +This method is bound to a native JSI function after calling `load()`, +making it worklet-compatible and safe to call from VisionCamera's +frame processor thread. + +**Performance characteristics:** + +- **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + frame data is accessed directly without copying (fastest, recommended). +- **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + from native to JS, then accessed from native code (slower, fallback). + +**Usage with VisionCamera:** + +```typescript +const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + // Zero-copy approach (recommended) + const nativeBuffer = frame.getNativeBuffer(); + const result = model.generateFromFrame( + { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }, + ...args + ); + nativeBuffer.release(); + frame.dispose(); + }, +}); +``` + +#### Parameters + +##### frameData + +[`Frame`](../interfaces/Frame.md) + +Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + +##### args + +...`any`[] + +Additional model-specific arguments (e.g., threshold, options) + +#### Returns + +`any` + +Model-specific output (e.g., detections, classifications, embeddings) + +#### See + +[Frame](../interfaces/Frame.md) for frame data format details + +#### Inherited from + +`BaseModule.generateFromFrame` + +--- + ### nativeModule > **nativeModule**: `any` = `null` -Defined in: [modules/BaseModule.ts:8](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L8) +Defined in: [modules/BaseModule.ts:17](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L17) + +**`Internal`** -Native module instance +Native module instance (JSI Host Object) #### Inherited from @@ -42,9 +116,11 @@ Native module instance > **delete**(): `void` -Defined in: [modules/BaseModule.ts:41](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L41) +Defined in: [modules/BaseModule.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L100) -Unloads the model from memory. +Unloads the model from memory and releases native resources. + +Always call this method when you're done with a model to prevent memory leaks. #### Returns @@ -84,7 +160,9 @@ The stylized image as a Base64-encoded string. > `protected` **forwardET**(`inputTensor`): `Promise`\<[`TensorPtr`](../interfaces/TensorPtr.md)[]\> -Defined in: [modules/BaseModule.ts:23](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L23) +Defined in: [modules/BaseModule.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L80) + +**`Internal`** Runs the model's forward method with the given input tensors. It returns the output tensors that mimic the structure of output from ExecuTorch. @@ -113,7 +191,7 @@ Array of output tensors. > **getInputShape**(`methodName`, `index`): `Promise`\<`number`[]\> -Defined in: [modules/BaseModule.ts:34](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L34) +Defined in: [modules/BaseModule.ts:91](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L91) Gets the input shape for a given method and index. diff --git a/docs/docs/06-api-reference/classes/TextEmbeddingsModule.md b/docs/docs/06-api-reference/classes/TextEmbeddingsModule.md index 025c6c8e1..28a10045f 100644 --- a/docs/docs/06-api-reference/classes/TextEmbeddingsModule.md +++ b/docs/docs/06-api-reference/classes/TextEmbeddingsModule.md @@ -24,13 +24,87 @@ Module for generating text embeddings from input text. ## Properties +### generateFromFrame() + +> **generateFromFrame**: (`frameData`, ...`args`) => `any` + +Defined in: [modules/BaseModule.ts:56](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L56) + +Process a camera frame directly for real-time inference. + +This method is bound to a native JSI function after calling `load()`, +making it worklet-compatible and safe to call from VisionCamera's +frame processor thread. + +**Performance characteristics:** + +- **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + frame data is accessed directly without copying (fastest, recommended). +- **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + from native to JS, then accessed from native code (slower, fallback). + +**Usage with VisionCamera:** + +```typescript +const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + // Zero-copy approach (recommended) + const nativeBuffer = frame.getNativeBuffer(); + const result = model.generateFromFrame( + { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }, + ...args + ); + nativeBuffer.release(); + frame.dispose(); + }, +}); +``` + +#### Parameters + +##### frameData + +[`Frame`](../interfaces/Frame.md) + +Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + +##### args + +...`any`[] + +Additional model-specific arguments (e.g., threshold, options) + +#### Returns + +`any` + +Model-specific output (e.g., detections, classifications, embeddings) + +#### See + +[Frame](../interfaces/Frame.md) for frame data format details + +#### Inherited from + +`BaseModule.generateFromFrame` + +--- + ### nativeModule > **nativeModule**: `any` = `null` -Defined in: [modules/BaseModule.ts:8](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L8) +Defined in: [modules/BaseModule.ts:17](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L17) + +**`Internal`** -Native module instance +Native module instance (JSI Host Object) #### Inherited from @@ -42,9 +116,11 @@ Native module instance > **delete**(): `void` -Defined in: [modules/BaseModule.ts:41](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L41) +Defined in: [modules/BaseModule.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L100) -Unloads the model from memory. +Unloads the model from memory and releases native resources. + +Always call this method when you're done with a model to prevent memory leaks. #### Returns @@ -84,7 +160,9 @@ A Float32Array containing the vector embeddings. > `protected` **forwardET**(`inputTensor`): `Promise`\<[`TensorPtr`](../interfaces/TensorPtr.md)[]\> -Defined in: [modules/BaseModule.ts:23](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L23) +Defined in: [modules/BaseModule.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L80) + +**`Internal`** Runs the model's forward method with the given input tensors. It returns the output tensors that mimic the structure of output from ExecuTorch. @@ -113,7 +191,7 @@ Array of output tensors. > **getInputShape**(`methodName`, `index`): `Promise`\<`number`[]\> -Defined in: [modules/BaseModule.ts:34](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L34) +Defined in: [modules/BaseModule.ts:91](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L91) Gets the input shape for a given method and index. diff --git a/docs/docs/06-api-reference/classes/TextToImageModule.md b/docs/docs/06-api-reference/classes/TextToImageModule.md index e2b057a73..b0769de03 100644 --- a/docs/docs/06-api-reference/classes/TextToImageModule.md +++ b/docs/docs/06-api-reference/classes/TextToImageModule.md @@ -36,13 +36,87 @@ Optional callback function that receives the current step index during inference ## Properties +### generateFromFrame() + +> **generateFromFrame**: (`frameData`, ...`args`) => `any` + +Defined in: [modules/BaseModule.ts:56](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L56) + +Process a camera frame directly for real-time inference. + +This method is bound to a native JSI function after calling `load()`, +making it worklet-compatible and safe to call from VisionCamera's +frame processor thread. + +**Performance characteristics:** + +- **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + frame data is accessed directly without copying (fastest, recommended). +- **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + from native to JS, then accessed from native code (slower, fallback). + +**Usage with VisionCamera:** + +```typescript +const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + // Zero-copy approach (recommended) + const nativeBuffer = frame.getNativeBuffer(); + const result = model.generateFromFrame( + { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }, + ...args + ); + nativeBuffer.release(); + frame.dispose(); + }, +}); +``` + +#### Parameters + +##### frameData + +[`Frame`](../interfaces/Frame.md) + +Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + +##### args + +...`any`[] + +Additional model-specific arguments (e.g., threshold, options) + +#### Returns + +`any` + +Model-specific output (e.g., detections, classifications, embeddings) + +#### See + +[Frame](../interfaces/Frame.md) for frame data format details + +#### Inherited from + +`BaseModule.generateFromFrame` + +--- + ### nativeModule > **nativeModule**: `any` = `null` -Defined in: [modules/BaseModule.ts:8](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L8) +Defined in: [modules/BaseModule.ts:17](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L17) + +**`Internal`** -Native module instance +Native module instance (JSI Host Object) #### Inherited from @@ -54,9 +128,11 @@ Native module instance > **delete**(): `void` -Defined in: [modules/BaseModule.ts:41](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L41) +Defined in: [modules/BaseModule.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L100) -Unloads the model from memory. +Unloads the model from memory and releases native resources. + +Always call this method when you're done with a model to prevent memory leaks. #### Returns @@ -115,7 +191,9 @@ A Base64-encoded string representing the generated PNG image. > `protected` **forwardET**(`inputTensor`): `Promise`\<[`TensorPtr`](../interfaces/TensorPtr.md)[]\> -Defined in: [modules/BaseModule.ts:23](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L23) +Defined in: [modules/BaseModule.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L80) + +**`Internal`** Runs the model's forward method with the given input tensors. It returns the output tensors that mimic the structure of output from ExecuTorch. @@ -144,7 +222,7 @@ Array of output tensors. > **getInputShape**(`methodName`, `index`): `Promise`\<`number`[]\> -Defined in: [modules/BaseModule.ts:34](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L34) +Defined in: [modules/BaseModule.ts:91](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L91) Gets the input shape for a given method and index. diff --git a/docs/docs/06-api-reference/classes/VADModule.md b/docs/docs/06-api-reference/classes/VADModule.md index c7d1cc136..6b9ff4120 100644 --- a/docs/docs/06-api-reference/classes/VADModule.md +++ b/docs/docs/06-api-reference/classes/VADModule.md @@ -24,13 +24,87 @@ Module for Voice Activity Detection (VAD) functionalities. ## Properties +### generateFromFrame() + +> **generateFromFrame**: (`frameData`, ...`args`) => `any` + +Defined in: [modules/BaseModule.ts:56](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L56) + +Process a camera frame directly for real-time inference. + +This method is bound to a native JSI function after calling `load()`, +making it worklet-compatible and safe to call from VisionCamera's +frame processor thread. + +**Performance characteristics:** + +- **Zero-copy path**: When using `frame.getNativeBuffer()` from VisionCamera v5, + frame data is accessed directly without copying (fastest, recommended). +- **Copy path**: When using `frame.toArrayBuffer()`, pixel data is copied + from native to JS, then accessed from native code (slower, fallback). + +**Usage with VisionCamera:** + +```typescript +const frameOutput = useFrameOutput({ + pixelFormat: 'rgb', + onFrame(frame) { + 'worklet'; + // Zero-copy approach (recommended) + const nativeBuffer = frame.getNativeBuffer(); + const result = model.generateFromFrame( + { + nativeBuffer: nativeBuffer.pointer, + width: frame.width, + height: frame.height, + }, + ...args + ); + nativeBuffer.release(); + frame.dispose(); + }, +}); +``` + +#### Parameters + +##### frameData + +[`Frame`](../interfaces/Frame.md) + +Frame data object with either nativeBuffer (zero-copy) or data (ArrayBuffer) + +##### args + +...`any`[] + +Additional model-specific arguments (e.g., threshold, options) + +#### Returns + +`any` + +Model-specific output (e.g., detections, classifications, embeddings) + +#### See + +[Frame](../interfaces/Frame.md) for frame data format details + +#### Inherited from + +`BaseModule.generateFromFrame` + +--- + ### nativeModule > **nativeModule**: `any` = `null` -Defined in: [modules/BaseModule.ts:8](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L8) +Defined in: [modules/BaseModule.ts:17](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L17) + +**`Internal`** -Native module instance +Native module instance (JSI Host Object) #### Inherited from @@ -42,9 +116,11 @@ Native module instance > **delete**(): `void` -Defined in: [modules/BaseModule.ts:41](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L41) +Defined in: [modules/BaseModule.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L100) -Unloads the model from memory. +Unloads the model from memory and releases native resources. + +Always call this method when you're done with a model to prevent memory leaks. #### Returns @@ -84,7 +160,9 @@ A promise resolving to an array of detected speech segments. > `protected` **forwardET**(`inputTensor`): `Promise`\<[`TensorPtr`](../interfaces/TensorPtr.md)[]\> -Defined in: [modules/BaseModule.ts:23](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L23) +Defined in: [modules/BaseModule.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L80) + +**`Internal`** Runs the model's forward method with the given input tensors. It returns the output tensors that mimic the structure of output from ExecuTorch. @@ -113,7 +191,7 @@ Array of output tensors. > **getInputShape**(`methodName`, `index`): `Promise`\<`number`[]\> -Defined in: [modules/BaseModule.ts:34](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L34) +Defined in: [modules/BaseModule.ts:91](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/BaseModule.ts#L91) Gets the input shape for a given method and index. diff --git a/docs/docs/06-api-reference/enumerations/RnExecutorchErrorCode.md b/docs/docs/06-api-reference/enumerations/RnExecutorchErrorCode.md index c5cdde479..8af6a41a0 100644 --- a/docs/docs/06-api-reference/enumerations/RnExecutorchErrorCode.md +++ b/docs/docs/06-api-reference/enumerations/RnExecutorchErrorCode.md @@ -8,7 +8,7 @@ Defined in: [errors/ErrorCodes.ts:4](https://github.com/software-mansion/react-n > **AccessFailed**: `34` -Defined in: [errors/ErrorCodes.ts:156](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L156) +Defined in: [errors/ErrorCodes.ts:160](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L160) Could not access a resource. @@ -18,7 +18,7 @@ Could not access a resource. > **DelegateInvalidCompatibility**: `48` -Defined in: [errors/ErrorCodes.ts:172](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L172) +Defined in: [errors/ErrorCodes.ts:176](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L176) Init stage: Backend receives an incompatible delegate version. @@ -28,7 +28,7 @@ Init stage: Backend receives an incompatible delegate version. > **DelegateInvalidHandle**: `50` -Defined in: [errors/ErrorCodes.ts:180](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L180) +Defined in: [errors/ErrorCodes.ts:184](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L184) Execute stage: The handle is invalid. @@ -38,7 +38,7 @@ Execute stage: The handle is invalid. > **DelegateMemoryAllocationFailed**: `49` -Defined in: [errors/ErrorCodes.ts:176](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L176) +Defined in: [errors/ErrorCodes.ts:180](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L180) Init stage: Backend fails to allocate memory. @@ -58,7 +58,7 @@ Thrown when the number of downloaded files is unexpected, due to download interr > **EndOfMethod**: `3` -Defined in: [errors/ErrorCodes.ts:124](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L124) +Defined in: [errors/ErrorCodes.ts:128](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L128) Status indicating there are no more steps of execution to run @@ -88,7 +88,7 @@ An error ocurred when saving a file. This could be, for instance a result image > **Internal**: `1` -Defined in: [errors/ErrorCodes.ts:116](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L116) +Defined in: [errors/ErrorCodes.ts:120](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L120) An internal error occurred. @@ -98,7 +98,7 @@ An internal error occurred. > **InvalidArgument**: `18` -Defined in: [errors/ErrorCodes.ts:136](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L136) +Defined in: [errors/ErrorCodes.ts:140](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L140) User provided an invalid argument. @@ -118,7 +118,7 @@ Thrown when config parameters passed to a model are invalid. For example, when L > **InvalidExternalData**: `36` -Defined in: [errors/ErrorCodes.ts:164](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L164) +Defined in: [errors/ErrorCodes.ts:168](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L168) Error caused by the contents of external data. @@ -148,7 +148,7 @@ Thrown when the type of model source passed by the user is invalid. > **InvalidProgram**: `35` -Defined in: [errors/ErrorCodes.ts:160](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L160) +Defined in: [errors/ErrorCodes.ts:164](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L164) Error caused by the contents of a program. @@ -158,7 +158,7 @@ Error caused by the contents of a program. > **InvalidState**: `2` -Defined in: [errors/ErrorCodes.ts:120](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L120) +Defined in: [errors/ErrorCodes.ts:124](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L124) Status indicating the executor is in an invalid state for a targeted operation. @@ -168,7 +168,7 @@ Status indicating the executor is in an invalid state for a targeted operation. > **InvalidType**: `19` -Defined in: [errors/ErrorCodes.ts:140](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L140) +Defined in: [errors/ErrorCodes.ts:144](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L144) Object is an invalid type for the operation. @@ -198,7 +198,7 @@ Thrown when a language is passed to a multi-language model that is not supported > **MemoryAllocationFailed**: `33` -Defined in: [errors/ErrorCodes.ts:152](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L152) +Defined in: [errors/ErrorCodes.ts:156](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L156) Could not allocate the requested memory. @@ -208,7 +208,7 @@ Could not allocate the requested memory. > **MissingDataChunk**: `161` -Defined in: [errors/ErrorCodes.ts:72](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L72) +Defined in: [errors/ErrorCodes.ts:76](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L76) Thrown when streaming transcription is attempted but audio data chunk is missing. @@ -238,7 +238,7 @@ Thrown when a user tries to run a model that is not yet downloaded or loaded int > **MultilingualConfiguration**: `160` -Defined in: [errors/ErrorCodes.ts:68](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L68) +Defined in: [errors/ErrorCodes.ts:72](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L72) Thrown when there's a configuration mismatch between multilingual and language settings in Speech-to-Text models. @@ -248,7 +248,7 @@ Thrown when there's a configuration mismatch between multilingual and language s > **NotFound**: `32` -Defined in: [errors/ErrorCodes.ts:148](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L148) +Defined in: [errors/ErrorCodes.ts:152](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L152) Requested resource could not be found. @@ -258,7 +258,7 @@ Requested resource could not be found. > **NotImplemented**: `17` -Defined in: [errors/ErrorCodes.ts:132](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L132) +Defined in: [errors/ErrorCodes.ts:136](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L136) Operation is not yet implemented. @@ -268,7 +268,7 @@ Operation is not yet implemented. > **NotSupported**: `16` -Defined in: [errors/ErrorCodes.ts:128](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L128) +Defined in: [errors/ErrorCodes.ts:132](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L132) Operation is not supported in the current context. @@ -278,7 +278,7 @@ Operation is not supported in the current context. > **Ok**: `0` -Defined in: [errors/ErrorCodes.ts:112](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L112) +Defined in: [errors/ErrorCodes.ts:116](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L116) Status indicating a successful operation. @@ -288,7 +288,7 @@ Status indicating a successful operation. > **OperatorMissing**: `20` -Defined in: [errors/ErrorCodes.ts:144](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L144) +Defined in: [errors/ErrorCodes.ts:148](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L148) Operator(s) missing in the operator registry. @@ -298,17 +298,27 @@ Operator(s) missing in the operator registry. > **OutOfResources**: `37` -Defined in: [errors/ErrorCodes.ts:168](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L168) +Defined in: [errors/ErrorCodes.ts:172](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L172) Does not have enough resources to perform the requested operation. --- +### PlatformNotSupported + +> **PlatformNotSupported**: `119` + +Defined in: [errors/ErrorCodes.ts:64](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L64) + +Thrown when a feature or platform is not supported in the current environment. + +--- + ### ResourceFetcherAdapterNotInitialized > **ResourceFetcherAdapterNotInitialized**: `186` -Defined in: [errors/ErrorCodes.ts:108](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L108) +Defined in: [errors/ErrorCodes.ts:112](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L112) Thrown when trying to load resources without fetcher initialization. @@ -318,7 +328,7 @@ Thrown when trying to load resources without fetcher initialization. > **ResourceFetcherAlreadyOngoing**: `183` -Defined in: [errors/ErrorCodes.ts:96](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L96) +Defined in: [errors/ErrorCodes.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L100) Thrown when trying to resume a download that is already ongoing. @@ -328,7 +338,7 @@ Thrown when trying to resume a download that is already ongoing. > **ResourceFetcherAlreadyPaused**: `182` -Defined in: [errors/ErrorCodes.ts:92](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L92) +Defined in: [errors/ErrorCodes.ts:96](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L96) Thrown when trying to pause a download that is already paused. @@ -338,7 +348,7 @@ Thrown when trying to pause a download that is already paused. > **ResourceFetcherDownloadFailed**: `180` -Defined in: [errors/ErrorCodes.ts:84](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L84) +Defined in: [errors/ErrorCodes.ts:88](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L88) Thrown when a resource fails to download. This could be due to invalid URL, or for example a network problem. @@ -348,7 +358,7 @@ Thrown when a resource fails to download. This could be due to invalid URL, or f > **ResourceFetcherDownloadInProgress**: `181` -Defined in: [errors/ErrorCodes.ts:88](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L88) +Defined in: [errors/ErrorCodes.ts:92](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L92) Thrown when a user tries to trigger a download that's already in progress. @@ -358,7 +368,7 @@ Thrown when a user tries to trigger a download that's already in progress. > **ResourceFetcherMissingUri**: `185` -Defined in: [errors/ErrorCodes.ts:104](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L104) +Defined in: [errors/ErrorCodes.ts:108](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L108) Thrown when required URI information is missing for a download operation. @@ -368,7 +378,7 @@ Thrown when required URI information is missing for a download operation. > **ResourceFetcherNotActive**: `184` -Defined in: [errors/ErrorCodes.ts:100](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L100) +Defined in: [errors/ErrorCodes.ts:104](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L104) Thrown when trying to pause, resume, or cancel a download that is not active. @@ -378,7 +388,7 @@ Thrown when trying to pause, resume, or cancel a download that is not active. > **StreamingInProgress**: `163` -Defined in: [errors/ErrorCodes.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L80) +Defined in: [errors/ErrorCodes.ts:84](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L84) Thrown when trying to start a new streaming session while another is already in progress. @@ -388,7 +398,7 @@ Thrown when trying to start a new streaming session while another is already in > **StreamingNotStarted**: `162` -Defined in: [errors/ErrorCodes.ts:76](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L76) +Defined in: [errors/ErrorCodes.ts:80](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L80) Thrown when trying to stop or insert data into a stream that hasn't been started. @@ -408,7 +418,7 @@ Thrown when React Native ExecuTorch threadpool problem occurs. > **TokenizerError**: `167` -Defined in: [errors/ErrorCodes.ts:64](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L64) +Defined in: [errors/ErrorCodes.ts:68](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/errors/ErrorCodes.ts#L68) Thrown when an error occurs with the tokenizer or tokenization process. diff --git a/docs/docs/06-api-reference/index.md b/docs/docs/06-api-reference/index.md index f5bca0cde..7bffecd63 100644 --- a/docs/docs/06-api-reference/index.md +++ b/docs/docs/06-api-reference/index.md @@ -197,6 +197,7 @@ - [RnExecutorchErrorCode](enumerations/RnExecutorchErrorCode.md) - [Logger](classes/Logger.md) - [RnExecutorchError](classes/RnExecutorchError.md) +- [Frame](interfaces/Frame.md) ## TTS Supported Voices @@ -241,6 +242,7 @@ - [OCRDetection](interfaces/OCRDetection.md) - [OCRProps](interfaces/OCRProps.md) - [OCRType](interfaces/OCRType.md) +- [PixelData](interfaces/PixelData.md) - [Point](interfaces/Point.md) - [Segment](interfaces/Segment.md) - [SemanticSegmentationProps](interfaces/SemanticSegmentationProps.md) diff --git a/docs/docs/06-api-reference/interfaces/Frame.md b/docs/docs/06-api-reference/interfaces/Frame.md new file mode 100644 index 000000000..149a3837f --- /dev/null +++ b/docs/docs/06-api-reference/interfaces/Frame.md @@ -0,0 +1,36 @@ +# Interface: Frame + +Defined in: [types/common.ts:197](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/common.ts#L197) + +Frame data for vision model processing. + +## Methods + +### getNativeBuffer() + +> **getNativeBuffer**(): `object` + +Defined in: [types/common.ts:205](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/common.ts#L205) + +Pointer to native platform buffer (zero-copy, best performance). + +- On iOS: CVPixelBufferRef pointer +- On Android: AHardwareBuffer\* pointer + +Obtain from Vision Camera v5: `frame.getNativeBuffer().pointer` + +#### Returns + +`object` + +##### pointer + +> **pointer**: `bigint` + +##### release() + +> **release**(): `void` + +###### Returns + +`void` diff --git a/docs/docs/06-api-reference/interfaces/ObjectDetectionType.md b/docs/docs/06-api-reference/interfaces/ObjectDetectionType.md index a9f28e5cf..4bd5dba98 100644 --- a/docs/docs/06-api-reference/interfaces/ObjectDetectionType.md +++ b/docs/docs/06-api-reference/interfaces/ObjectDetectionType.md @@ -29,36 +29,57 @@ Contains the error object if the model failed to load, download, or encountered ### forward() -> **forward**: (`imageSource`, `detectionThreshold?`) => `Promise`\<[`Detection`](Detection.md)[]\> +> **forward**: (`input`, `detectionThreshold?`) => `Promise`\<[`Detection`](Detection.md)[]\> -Defined in: [types/objectDetection.ts:179](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/objectDetection.ts#L179) +Defined in: [types/objectDetection.ts:199](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/objectDetection.ts#L199) -Executes the model's forward pass to detect objects within the provided image. +Executes the model's forward pass with automatic input type detection. + +Supports two input types: + +1. **String path/URI**: File path, URL, or Base64-encoded string +2. **PixelData**: Raw pixel data from image libraries (e.g., NitroImage) + +**Note**: For VisionCamera frame processing, use `runOnFrame` instead. #### Parameters -##### imageSource +##### input -`string` +Image source (string or PixelData object) -A string representing the image source (e.g., a file path, URI, or base64 string) to be processed. +`string` | [`PixelData`](PixelData.md) ##### detectionThreshold? `number` -An optional number between 0 and 1 representing the minimum confidence score required for an object to be included in the results. Default is 0.7. +An optional number between 0 and 1 representing the minimum confidence score. Default is 0.5. #### Returns `Promise`\<[`Detection`](Detection.md)[]\> -A Promise that resolves to an array of `Detection` objects, where each object typically contains bounding box coordinates, a class label, and a confidence score. +A Promise that resolves to an array of `Detection` objects. #### Throws If the model is not loaded or is currently processing another image. +#### Example + +```typescript +// String path +const detections1 = await model.forward('file:///path/to/image.jpg'); + +// Pixel data +const detections2 = await model.forward({ + dataPtr: new Uint8Array(rgbPixels), + sizes: [480, 640, 3], + scalarType: ScalarType.BYTE, +}); +``` + --- ### isGenerating @@ -78,3 +99,46 @@ Indicates whether the model is currently processing an image. Defined in: [types/objectDetection.ts:160](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/objectDetection.ts#L160) Indicates whether the object detection model is loaded and ready to process images. + +--- + +### runOnFrame + +> **runOnFrame**: (`frame`, `detectionThreshold`) => [`Detection`](Detection.md)[] \| `null` + +Defined in: [types/objectDetection.ts:231](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/objectDetection.ts#L231) + +Synchronous worklet function for real-time VisionCamera frame processing. +Automatically handles native buffer extraction and cleanup. + +**Use this for VisionCamera frame processing in worklets.** +For async processing, use `forward()` instead. + +Available after model is loaded (`isReady: true`). + +#### Example + +```typescript +const { runOnFrame, isReady } = useObjectDetection({ model: MODEL }); + +const frameOutput = useFrameOutput({ + onFrame(frame) { + 'worklet'; + if (!runOnFrame) return; + const detections = runOnFrame(frame, 0.5); + frame.dispose(); + }, +}); +``` + +#### Param + +VisionCamera Frame object + +#### Param + +The threshold for detection sensitivity. + +#### Returns + +Array of Detection objects representing detected items in the frame. diff --git a/docs/docs/06-api-reference/interfaces/PixelData.md b/docs/docs/06-api-reference/interfaces/PixelData.md new file mode 100644 index 000000000..7ef9865aa --- /dev/null +++ b/docs/docs/06-api-reference/interfaces/PixelData.md @@ -0,0 +1,65 @@ +# Interface: PixelData + +Defined in: [types/common.ts:172](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/common.ts#L172) + +Represents raw pixel data in RGB format for vision models. + +This type extends TensorPtr with constraints specific to image data: + +- dataPtr must be Uint8Array (8-bit unsigned integers) +- scalarType is always BYTE (ScalarType.BYTE) +- sizes represents [height, width, channels] where channels must be 3 (RGB) + +## Example + +```typescript +const pixelData: PixelData = { + dataPtr: new Uint8Array(width * height * 3), // RGB pixel data + sizes: [height, width, 3], // [height, width, channels] + scalarType: ScalarType.BYTE, +}; +``` + +## Extends + +- `Omit`\<[`TensorPtr`](TensorPtr.md), `"dataPtr"` \| `"scalarType"`\> + +## Properties + +### dataPtr + +> **dataPtr**: `Uint8Array` + +Defined in: [types/common.ts:178](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/common.ts#L178) + +RGB pixel data as Uint8Array. +Expected format: RGB (3 channels), not RGBA or BGRA. +Size must equal: width _ height _ 3 + +--- + +### scalarType + +> **scalarType**: [`BYTE`](../enumerations/ScalarType.md#byte) + +Defined in: [types/common.ts:191](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/common.ts#L191) + +Scalar type is always BYTE for pixel data. + +--- + +### sizes + +> **sizes**: \[`number`, `number`, `3`\] + +Defined in: [types/common.ts:186](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/types/common.ts#L186) + +Dimensions of the pixel data: [height, width, channels]. + +- sizes[0]: height (number of rows) +- sizes[1]: width (number of columns) +- sizes[2]: channels (must be 3 for RGB) + +#### Overrides + +[`TensorPtr`](TensorPtr.md).[`sizes`](TensorPtr.md#sizes) From a1e8e39aa069e2bfef466d74c5a79917a56963e6 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Thu, 26 Feb 2026 14:12:16 +0100 Subject: [PATCH 22/26] fix: requested changes --- .../app/object_detection_live/index.tsx | 1 - docs/docs/05-utilities/04-error-handling.md | 17 ++++++++-------- .../computer_vision/useObjectDetection.ts | 2 +- .../src/hooks/useModule.ts | 20 ++++++++++++++++--- .../src/types/common.ts | 2 +- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/apps/computer-vision/app/object_detection_live/index.tsx b/apps/computer-vision/app/object_detection_live/index.tsx index cd1e9cca8..3db2c5360 100644 --- a/apps/computer-vision/app/object_detection_live/index.tsx +++ b/apps/computer-vision/app/object_detection_live/index.tsx @@ -42,7 +42,6 @@ export default function ObjectDetectionLiveScreen() { useEffect(() => { setGlobalGenerating(model.isGenerating); }, [model.isGenerating, setGlobalGenerating]); - const [detectionCount, setDetectionCount] = useState(0); const [fps, setFps] = useState(0); const lastFrameTimeRef = useRef(Date.now()); diff --git a/docs/docs/05-utilities/04-error-handling.md b/docs/docs/05-utilities/04-error-handling.md index 7ca9478f7..4b3f0674a 100644 --- a/docs/docs/05-utilities/04-error-handling.md +++ b/docs/docs/05-utilities/04-error-handling.md @@ -83,14 +83,15 @@ These errors occur when trying to perform operations on a model in an invalid st These errors occur when invalid configuration or input is provided. -| Error Code | Description | When It Occurs | How to Handle | -| ---------------------- | ------------------------------------ | ------------------------------------------------------------------------- | ---------------------------------------------------- | -| `InvalidConfig` | Configuration parameters are invalid | Setting parameters outside valid ranges (e.g., `topp` outside [0, 1]) | Check parameter constraints and provide valid values | -| `InvalidUserInput` | Input provided to API is invalid | Passing empty arrays, null values, or malformed data to methods | Validate input before calling methods | -| `InvalidModelSource` | Model source type is invalid | Providing wrong type for model source (e.g., object when string expected) | Ensure model source matches expected type | -| `LanguageNotSupported` | Language not supported by model | Passing unsupported language to multilingual OCR or Speech-to-Text models | Use a supported language or different model | -| `WrongDimensions` | Input tensor dimensions don't match | Providing input with incorrect shape for the model | Check model's expected input dimensions | -| `UnexpectedNumInputs` | Wrong number of inputs provided | Passing more or fewer inputs than model expects | Match the number of inputs to model metadata | +| Error Code | Description | When It Occurs | How to Handle | +| ---------------------- | ------------------------------------ | --------------------------------------------------------------------------------------- | -------------------------------------------------------- | +| `InvalidConfig` | Configuration parameters are invalid | Setting parameters outside valid ranges (e.g., `topp` outside [0, 1]) | Check parameter constraints and provide valid values | +| `InvalidUserInput` | Input provided to API is invalid | Passing empty arrays, null values, or malformed data to methods | Validate input before calling methods | +| `InvalidModelSource` | Model source type is invalid | Providing wrong type for model source (e.g., object when string expected) | Ensure model source matches expected type | +| `LanguageNotSupported` | Language not supported by model | Passing unsupported language to multilingual OCR or Speech-to-Text models | Use a supported language or different model | +| `PlatformNotSupported` | Current platform is not supported | Using features (e.g., camera frame processing) on an unsupported platform or OS version | Ensure you're running on a supported platform/OS version | +| `WrongDimensions` | Input tensor dimensions don't match | Providing input with incorrect shape for the model | Check model's expected input dimensions | +| `UnexpectedNumInputs` | Wrong number of inputs provided | Passing more or fewer inputs than model expects | Match the number of inputs to model metadata | ### File Operations Errors diff --git a/packages/react-native-executorch/src/hooks/computer_vision/useObjectDetection.ts b/packages/react-native-executorch/src/hooks/computer_vision/useObjectDetection.ts index 845f1aa23..27be7478c 100644 --- a/packages/react-native-executorch/src/hooks/computer_vision/useObjectDetection.ts +++ b/packages/react-native-executorch/src/hooks/computer_vision/useObjectDetection.ts @@ -20,5 +20,5 @@ export const useObjectDetection = ({ module: ObjectDetectionModule, model, preventLoad: preventLoad, - }) as ObjectDetectionType; + }); }; diff --git a/packages/react-native-executorch/src/hooks/useModule.ts b/packages/react-native-executorch/src/hooks/useModule.ts index 82a0bb72f..cc1fc1ef2 100644 --- a/packages/react-native-executorch/src/hooks/useModule.ts +++ b/packages/react-native-executorch/src/hooks/useModule.ts @@ -2,6 +2,8 @@ import { useEffect, useState } from 'react'; import { RnExecutorchErrorCode } from '../errors/ErrorCodes'; import { RnExecutorchError, parseUnknownError } from '../errors/errorUtils'; +type RunOnFrame = M extends { runOnFrame: infer R } ? R : never; + interface Module { load: (...args: any[]) => Promise; forward: (...args: any[]) => Promise; @@ -31,7 +33,7 @@ export const useModule = < const [isGenerating, setIsGenerating] = useState(false); const [downloadProgress, setDownloadProgress] = useState(0); const [moduleInstance] = useState(() => new module()); - const [runOnFrame, setRunOnFrame] = useState(null); + const [runOnFrame, setRunOnFrame] = useState | null>(null); useEffect(() => { if (preventLoad) return; @@ -48,9 +50,21 @@ export const useModule = < }); if (isMounted) setIsReady(true); - // Use "state trick" to make the worklet serializable for VisionCamera + // VisionCamera worklets run on a separate JS thread and can only capture + // serializable values (plain functions, primitives). The module instance + // is a class object and is not serializable, so accessing runOnFrame + // directly inside a worklet would fail at runtime. + // + // By extracting the method and storing it in React state, it becomes a + // standalone function reference that the worklet thread can capture and + // call safely. + // + // Note: setState(fn) triggers React's updater form — it calls fn(prevState) + // and stores the return value, not fn itself. Since runOnFrame is a function, + // we wrap it: setState(() => worklet) so React stores the worklet as the + // state value rather than invoking it. if ('runOnFrame' in moduleInstance) { - const worklet = moduleInstance.runOnFrame; + const worklet = moduleInstance.runOnFrame as RunOnFrame; if (worklet) { setRunOnFrame(() => worklet); } diff --git a/packages/react-native-executorch/src/types/common.ts b/packages/react-native-executorch/src/types/common.ts index d992214dd..eaafc6c9b 100644 --- a/packages/react-native-executorch/src/types/common.ts +++ b/packages/react-native-executorch/src/types/common.ts @@ -169,7 +169,7 @@ export type Triple = readonly [T, T, T]; * }; * ``` */ -export interface PixelData extends Omit { +export interface PixelData extends Pick { /** * RGB pixel data as Uint8Array. * Expected format: RGB (3 channels), not RGBA or BGRA. From 6cd551978741ab4aa7989f54e3924056f891fbc5 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Thu, 26 Feb 2026 14:35:57 +0100 Subject: [PATCH 23/26] docs: update api reference --- .cspell-wordlist.txt | 1 + .../classes/ObjectDetectionModule.md | 2 +- .../06-api-reference/interfaces/PixelData.md | 2 +- .../docs/06-api-reference/typedoc-sidebar.cjs | 2 +- yarn.lock | 3117 ++++++----------- 5 files changed, 1109 insertions(+), 2015 deletions(-) diff --git a/.cspell-wordlist.txt b/.cspell-wordlist.txt index f171efaf0..e06bde775 100644 --- a/.cspell-wordlist.txt +++ b/.cspell-wordlist.txt @@ -121,3 +121,4 @@ LRASPP worklet worklets BGRA +RGBA diff --git a/docs/docs/06-api-reference/classes/ObjectDetectionModule.md b/docs/docs/06-api-reference/classes/ObjectDetectionModule.md index 8e199979a..fadb2536c 100644 --- a/docs/docs/06-api-reference/classes/ObjectDetectionModule.md +++ b/docs/docs/06-api-reference/classes/ObjectDetectionModule.md @@ -180,7 +180,7 @@ Always call this method when you're done with a model to prevent memory leaks. ### forward() -> **forward**(`imageSource`, `detectionThreshold?`): `Promise`\<[`Detection`](../interfaces/Detection.md)[]\> +> **forward**(`input`, `detectionThreshold?`): `Promise`\<[`Detection`](../interfaces/Detection.md)[]\> Defined in: [modules/computer_vision/ObjectDetectionModule.ts:46](https://github.com/software-mansion/react-native-executorch/blob/main/packages/react-native-executorch/src/modules/computer_vision/ObjectDetectionModule.ts#L46) diff --git a/docs/docs/06-api-reference/interfaces/PixelData.md b/docs/docs/06-api-reference/interfaces/PixelData.md index 7ef9865aa..1cc9c60be 100644 --- a/docs/docs/06-api-reference/interfaces/PixelData.md +++ b/docs/docs/06-api-reference/interfaces/PixelData.md @@ -22,7 +22,7 @@ const pixelData: PixelData = { ## Extends -- `Omit`\<[`TensorPtr`](TensorPtr.md), `"dataPtr"` \| `"scalarType"`\> +- `Pick`\<[`TensorPtr`](TensorPtr.md), `"sizes"`\> ## Properties diff --git a/docs/docs/06-api-reference/typedoc-sidebar.cjs b/docs/docs/06-api-reference/typedoc-sidebar.cjs index 676ba4747..00abf2925 100644 --- a/docs/docs/06-api-reference/typedoc-sidebar.cjs +++ b/docs/docs/06-api-reference/typedoc-sidebar.cjs @@ -1,4 +1,4 @@ // @ts-check /** @type {import("@docusaurus/plugin-content-docs").SidebarsConfig} */ -const typedocSidebar = {items:[{type:"category",label:"Hooks",items:[{type:"doc",id:"06-api-reference/functions/useClassification",label:"useClassification"},{type:"doc",id:"06-api-reference/functions/useExecutorchModule",label:"useExecutorchModule"},{type:"doc",id:"06-api-reference/functions/useImageEmbeddings",label:"useImageEmbeddings"},{type:"doc",id:"06-api-reference/functions/useLLM",label:"useLLM"},{type:"doc",id:"06-api-reference/functions/useObjectDetection",label:"useObjectDetection"},{type:"doc",id:"06-api-reference/functions/useOCR",label:"useOCR"},{type:"doc",id:"06-api-reference/functions/useSemanticSegmentation",label:"useSemanticSegmentation"},{type:"doc",id:"06-api-reference/functions/useSpeechToText",label:"useSpeechToText"},{type:"doc",id:"06-api-reference/functions/useStyleTransfer",label:"useStyleTransfer"},{type:"doc",id:"06-api-reference/functions/useTextEmbeddings",label:"useTextEmbeddings"},{type:"doc",id:"06-api-reference/functions/useTextToImage",label:"useTextToImage"},{type:"doc",id:"06-api-reference/functions/useTextToSpeech",label:"useTextToSpeech"},{type:"doc",id:"06-api-reference/functions/useTokenizer",label:"useTokenizer"},{type:"doc",id:"06-api-reference/functions/useVAD",label:"useVAD"},{type:"doc",id:"06-api-reference/functions/useVerticalOCR",label:"useVerticalOCR"}]},{type:"category",label:"Interfaces",items:[{type:"doc",id:"06-api-reference/interfaces/ResourceSourceExtended",label:"ResourceSourceExtended"}]},{type:"category",label:"Models - Classification",items:[{type:"doc",id:"06-api-reference/variables/EFFICIENTNET_V2_S",label:"EFFICIENTNET_V2_S"}]},{type:"category",label:"Models - Image Embeddings",items:[{type:"doc",id:"06-api-reference/variables/CLIP_VIT_BASE_PATCH32_IMAGE",label:"CLIP_VIT_BASE_PATCH32_IMAGE"}]},{type:"category",label:"Models - Image Generation",items:[{type:"doc",id:"06-api-reference/variables/BK_SDM_TINY_VPRED_256",label:"BK_SDM_TINY_VPRED_256"},{type:"doc",id:"06-api-reference/variables/BK_SDM_TINY_VPRED_512",label:"BK_SDM_TINY_VPRED_512"}]},{type:"category",label:"Models - LMM",items:[{type:"doc",id:"06-api-reference/variables/HAMMER2_1_0_5B",label:"HAMMER2_1_0_5B"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_0_5B_QUANTIZED",label:"HAMMER2_1_0_5B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_1_5B",label:"HAMMER2_1_1_5B"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_1_5B_QUANTIZED",label:"HAMMER2_1_1_5B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_3B",label:"HAMMER2_1_3B"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_3B_QUANTIZED",label:"HAMMER2_1_3B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/LFM2_5_1_2B_INSTRUCT",label:"LFM2_5_1_2B_INSTRUCT"},{type:"doc",id:"06-api-reference/variables/LFM2_5_1_2B_INSTRUCT_QUANTIZED",label:"LFM2_5_1_2B_INSTRUCT_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_1B",label:"LLAMA3_2_1B"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_1B_QLORA",label:"LLAMA3_2_1B_QLORA"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_1B_SPINQUANT",label:"LLAMA3_2_1B_SPINQUANT"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_3B",label:"LLAMA3_2_3B"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_3B_QLORA",label:"LLAMA3_2_3B_QLORA"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_3B_SPINQUANT",label:"LLAMA3_2_3B_SPINQUANT"},{type:"doc",id:"06-api-reference/variables/PHI_4_MINI_4B",label:"PHI_4_MINI_4B"},{type:"doc",id:"06-api-reference/variables/PHI_4_MINI_4B_QUANTIZED",label:"PHI_4_MINI_4B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_0_5B",label:"QWEN2_5_0_5B"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_0_5B_QUANTIZED",label:"QWEN2_5_0_5B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_1_5B",label:"QWEN2_5_1_5B"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_1_5B_QUANTIZED",label:"QWEN2_5_1_5B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_3B",label:"QWEN2_5_3B"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_3B_QUANTIZED",label:"QWEN2_5_3B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN3_0_6B",label:"QWEN3_0_6B"},{type:"doc",id:"06-api-reference/variables/QWEN3_0_6B_QUANTIZED",label:"QWEN3_0_6B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN3_1_7B",label:"QWEN3_1_7B"},{type:"doc",id:"06-api-reference/variables/QWEN3_1_7B_QUANTIZED",label:"QWEN3_1_7B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN3_4B",label:"QWEN3_4B"},{type:"doc",id:"06-api-reference/variables/QWEN3_4B_QUANTIZED",label:"QWEN3_4B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_1_7B",label:"SMOLLM2_1_1_7B"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_1_7B_QUANTIZED",label:"SMOLLM2_1_1_7B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_135M",label:"SMOLLM2_1_135M"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_135M_QUANTIZED",label:"SMOLLM2_1_135M_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_360M",label:"SMOLLM2_1_360M"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_360M_QUANTIZED",label:"SMOLLM2_1_360M_QUANTIZED"}]},{type:"category",label:"Models - Object Detection",items:[{type:"doc",id:"06-api-reference/variables/SSDLITE_320_MOBILENET_V3_LARGE",label:"SSDLITE_320_MOBILENET_V3_LARGE"}]},{type:"category",label:"Models - Semantic Segmentation",items:[{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_MOBILENET_V3_LARGE",label:"DEEPLAB_V3_MOBILENET_V3_LARGE"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_MOBILENET_V3_LARGE_QUANTIZED",label:"DEEPLAB_V3_MOBILENET_V3_LARGE_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_RESNET101",label:"DEEPLAB_V3_RESNET101"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_RESNET101_QUANTIZED",label:"DEEPLAB_V3_RESNET101_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_RESNET50",label:"DEEPLAB_V3_RESNET50"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_RESNET50_QUANTIZED",label:"DEEPLAB_V3_RESNET50_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/FCN_RESNET101",label:"FCN_RESNET101"},{type:"doc",id:"06-api-reference/variables/FCN_RESNET101_QUANTIZED",label:"FCN_RESNET101_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/FCN_RESNET50",label:"FCN_RESNET50"},{type:"doc",id:"06-api-reference/variables/FCN_RESNET50_QUANTIZED",label:"FCN_RESNET50_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/LRASPP_MOBILENET_V3_LARGE",label:"LRASPP_MOBILENET_V3_LARGE"},{type:"doc",id:"06-api-reference/variables/LRASPP_MOBILENET_V3_LARGE_QUANTIZED",label:"LRASPP_MOBILENET_V3_LARGE_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/SELFIE_SEGMENTATION",label:"SELFIE_SEGMENTATION"}]},{type:"category",label:"Models - Speech To Text",items:[{type:"doc",id:"06-api-reference/variables/WHISPER_BASE",label:"WHISPER_BASE"},{type:"doc",id:"06-api-reference/variables/WHISPER_BASE_EN",label:"WHISPER_BASE_EN"},{type:"doc",id:"06-api-reference/variables/WHISPER_SMALL",label:"WHISPER_SMALL"},{type:"doc",id:"06-api-reference/variables/WHISPER_SMALL_EN",label:"WHISPER_SMALL_EN"},{type:"doc",id:"06-api-reference/variables/WHISPER_TINY",label:"WHISPER_TINY"},{type:"doc",id:"06-api-reference/variables/WHISPER_TINY_EN",label:"WHISPER_TINY_EN"},{type:"doc",id:"06-api-reference/variables/WHISPER_TINY_EN_QUANTIZED",label:"WHISPER_TINY_EN_QUANTIZED"}]},{type:"category",label:"Models - Style Transfer",items:[{type:"doc",id:"06-api-reference/variables/STYLE_TRANSFER_CANDY",label:"STYLE_TRANSFER_CANDY"},{type:"doc",id:"06-api-reference/variables/STYLE_TRANSFER_MOSAIC",label:"STYLE_TRANSFER_MOSAIC"},{type:"doc",id:"06-api-reference/variables/STYLE_TRANSFER_RAIN_PRINCESS",label:"STYLE_TRANSFER_RAIN_PRINCESS"},{type:"doc",id:"06-api-reference/variables/STYLE_TRANSFER_UDNIE",label:"STYLE_TRANSFER_UDNIE"}]},{type:"category",label:"Models - Text Embeddings",items:[{type:"doc",id:"06-api-reference/variables/ALL_MINILM_L6_V2",label:"ALL_MINILM_L6_V2"},{type:"doc",id:"06-api-reference/variables/ALL_MPNET_BASE_V2",label:"ALL_MPNET_BASE_V2"},{type:"doc",id:"06-api-reference/variables/CLIP_VIT_BASE_PATCH32_TEXT",label:"CLIP_VIT_BASE_PATCH32_TEXT"},{type:"doc",id:"06-api-reference/variables/MULTI_QA_MINILM_L6_COS_V1",label:"MULTI_QA_MINILM_L6_COS_V1"},{type:"doc",id:"06-api-reference/variables/MULTI_QA_MPNET_BASE_DOT_V1",label:"MULTI_QA_MPNET_BASE_DOT_V1"}]},{type:"category",label:"Models - Text to Speech",items:[{type:"doc",id:"06-api-reference/variables/KOKORO_MEDIUM",label:"KOKORO_MEDIUM"},{type:"doc",id:"06-api-reference/variables/KOKORO_SMALL",label:"KOKORO_SMALL"}]},{type:"category",label:"Models - Voice Activity Detection",items:[{type:"doc",id:"06-api-reference/variables/FSMN_VAD",label:"FSMN_VAD"}]},{type:"category",label:"OCR Supported Alphabets",items:[{type:"doc",id:"06-api-reference/variables/OCR_ABAZA",label:"OCR_ABAZA"},{type:"doc",id:"06-api-reference/variables/OCR_ADYGHE",label:"OCR_ADYGHE"},{type:"doc",id:"06-api-reference/variables/OCR_AFRIKAANS",label:"OCR_AFRIKAANS"},{type:"doc",id:"06-api-reference/variables/OCR_ALBANIAN",label:"OCR_ALBANIAN"},{type:"doc",id:"06-api-reference/variables/OCR_AVAR",label:"OCR_AVAR"},{type:"doc",id:"06-api-reference/variables/OCR_AZERBAIJANI",label:"OCR_AZERBAIJANI"},{type:"doc",id:"06-api-reference/variables/OCR_BELARUSIAN",label:"OCR_BELARUSIAN"},{type:"doc",id:"06-api-reference/variables/OCR_BOSNIAN",label:"OCR_BOSNIAN"},{type:"doc",id:"06-api-reference/variables/OCR_BULGARIAN",label:"OCR_BULGARIAN"},{type:"doc",id:"06-api-reference/variables/OCR_CHECHEN",label:"OCR_CHECHEN"},{type:"doc",id:"06-api-reference/variables/OCR_CROATIAN",label:"OCR_CROATIAN"},{type:"doc",id:"06-api-reference/variables/OCR_CZECH",label:"OCR_CZECH"},{type:"doc",id:"06-api-reference/variables/OCR_DANISH",label:"OCR_DANISH"},{type:"doc",id:"06-api-reference/variables/OCR_DARGWA",label:"OCR_DARGWA"},{type:"doc",id:"06-api-reference/variables/OCR_DUTCH",label:"OCR_DUTCH"},{type:"doc",id:"06-api-reference/variables/OCR_ENGLISH",label:"OCR_ENGLISH"},{type:"doc",id:"06-api-reference/variables/OCR_ESTONIAN",label:"OCR_ESTONIAN"},{type:"doc",id:"06-api-reference/variables/OCR_FRENCH",label:"OCR_FRENCH"},{type:"doc",id:"06-api-reference/variables/OCR_GERMAN",label:"OCR_GERMAN"},{type:"doc",id:"06-api-reference/variables/OCR_HUNGARIAN",label:"OCR_HUNGARIAN"},{type:"doc",id:"06-api-reference/variables/OCR_ICELANDIC",label:"OCR_ICELANDIC"},{type:"doc",id:"06-api-reference/variables/OCR_INDONESIAN",label:"OCR_INDONESIAN"},{type:"doc",id:"06-api-reference/variables/OCR_INGUSH",label:"OCR_INGUSH"},{type:"doc",id:"06-api-reference/variables/OCR_IRISH",label:"OCR_IRISH"},{type:"doc",id:"06-api-reference/variables/OCR_ITALIAN",label:"OCR_ITALIAN"},{type:"doc",id:"06-api-reference/variables/OCR_JAPANESE",label:"OCR_JAPANESE"},{type:"doc",id:"06-api-reference/variables/OCR_KANNADA",label:"OCR_KANNADA"},{type:"doc",id:"06-api-reference/variables/OCR_KARBADIAN",label:"OCR_KARBADIAN"},{type:"doc",id:"06-api-reference/variables/OCR_KOREAN",label:"OCR_KOREAN"},{type:"doc",id:"06-api-reference/variables/OCR_KURDISH",label:"OCR_KURDISH"},{type:"doc",id:"06-api-reference/variables/OCR_LAK",label:"OCR_LAK"},{type:"doc",id:"06-api-reference/variables/OCR_LATIN",label:"OCR_LATIN"},{type:"doc",id:"06-api-reference/variables/OCR_LATVIAN",label:"OCR_LATVIAN"},{type:"doc",id:"06-api-reference/variables/OCR_LEZGHIAN",label:"OCR_LEZGHIAN"},{type:"doc",id:"06-api-reference/variables/OCR_LITHUANIAN",label:"OCR_LITHUANIAN"},{type:"doc",id:"06-api-reference/variables/OCR_MALAY",label:"OCR_MALAY"},{type:"doc",id:"06-api-reference/variables/OCR_MALTESE",label:"OCR_MALTESE"},{type:"doc",id:"06-api-reference/variables/OCR_MAORI",label:"OCR_MAORI"},{type:"doc",id:"06-api-reference/variables/OCR_MONGOLIAN",label:"OCR_MONGOLIAN"},{type:"doc",id:"06-api-reference/variables/OCR_NORWEGIAN",label:"OCR_NORWEGIAN"},{type:"doc",id:"06-api-reference/variables/OCR_OCCITAN",label:"OCR_OCCITAN"},{type:"doc",id:"06-api-reference/variables/OCR_PALI",label:"OCR_PALI"},{type:"doc",id:"06-api-reference/variables/OCR_POLISH",label:"OCR_POLISH"},{type:"doc",id:"06-api-reference/variables/OCR_PORTUGUESE",label:"OCR_PORTUGUESE"},{type:"doc",id:"06-api-reference/variables/OCR_ROMANIAN",label:"OCR_ROMANIAN"},{type:"doc",id:"06-api-reference/variables/OCR_RUSSIAN",label:"OCR_RUSSIAN"},{type:"doc",id:"06-api-reference/variables/OCR_SERBIAN_CYRILLIC",label:"OCR_SERBIAN_CYRILLIC"},{type:"doc",id:"06-api-reference/variables/OCR_SERBIAN_LATIN",label:"OCR_SERBIAN_LATIN"},{type:"doc",id:"06-api-reference/variables/OCR_SIMPLIFIED_CHINESE",label:"OCR_SIMPLIFIED_CHINESE"},{type:"doc",id:"06-api-reference/variables/OCR_SLOVAK",label:"OCR_SLOVAK"},{type:"doc",id:"06-api-reference/variables/OCR_SLOVENIAN",label:"OCR_SLOVENIAN"},{type:"doc",id:"06-api-reference/variables/OCR_SPANISH",label:"OCR_SPANISH"},{type:"doc",id:"06-api-reference/variables/OCR_SWAHILI",label:"OCR_SWAHILI"},{type:"doc",id:"06-api-reference/variables/OCR_SWEDISH",label:"OCR_SWEDISH"},{type:"doc",id:"06-api-reference/variables/OCR_TABASSARAN",label:"OCR_TABASSARAN"},{type:"doc",id:"06-api-reference/variables/OCR_TAGALOG",label:"OCR_TAGALOG"},{type:"doc",id:"06-api-reference/variables/OCR_TAJIK",label:"OCR_TAJIK"},{type:"doc",id:"06-api-reference/variables/OCR_TELUGU",label:"OCR_TELUGU"},{type:"doc",id:"06-api-reference/variables/OCR_TURKISH",label:"OCR_TURKISH"},{type:"doc",id:"06-api-reference/variables/OCR_UKRAINIAN",label:"OCR_UKRAINIAN"},{type:"doc",id:"06-api-reference/variables/OCR_UZBEK",label:"OCR_UZBEK"},{type:"doc",id:"06-api-reference/variables/OCR_VIETNAMESE",label:"OCR_VIETNAMESE"},{type:"doc",id:"06-api-reference/variables/OCR_WELSH",label:"OCR_WELSH"}]},{type:"category",label:"Other",items:[{type:"doc",id:"06-api-reference/enumerations/RnExecutorchErrorCode",label:"RnExecutorchErrorCode"},{type:"doc",id:"06-api-reference/classes/Logger",label:"Logger"},{type:"doc",id:"06-api-reference/classes/RnExecutorchError",label:"RnExecutorchError"}]},{type:"category",label:"TTS Supported Voices",items:[{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AF_HEART",label:"KOKORO_VOICE_AF_HEART"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AF_RIVER",label:"KOKORO_VOICE_AF_RIVER"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AF_SARAH",label:"KOKORO_VOICE_AF_SARAH"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AM_ADAM",label:"KOKORO_VOICE_AM_ADAM"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AM_MICHAEL",label:"KOKORO_VOICE_AM_MICHAEL"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AM_SANTA",label:"KOKORO_VOICE_AM_SANTA"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_BF_EMMA",label:"KOKORO_VOICE_BF_EMMA"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_BM_DANIEL",label:"KOKORO_VOICE_BM_DANIEL"}]},{type:"category",label:"Types",items:[{type:"doc",id:"06-api-reference/enumerations/CocoLabel",label:"CocoLabel"},{type:"doc",id:"06-api-reference/enumerations/DeeplabLabel",label:"DeeplabLabel"},{type:"doc",id:"06-api-reference/enumerations/DownloadStatus",label:"DownloadStatus"},{type:"doc",id:"06-api-reference/enumerations/HTTP_CODE",label:"HTTP_CODE"},{type:"doc",id:"06-api-reference/enumerations/ScalarType",label:"ScalarType"},{type:"doc",id:"06-api-reference/enumerations/SelfieSegmentationLabel",label:"SelfieSegmentationLabel"},{type:"doc",id:"06-api-reference/enumerations/SourceType",label:"SourceType"},{type:"doc",id:"06-api-reference/interfaces/Bbox",label:"Bbox"},{type:"doc",id:"06-api-reference/interfaces/ChatConfig",label:"ChatConfig"},{type:"doc",id:"06-api-reference/interfaces/ClassificationProps",label:"ClassificationProps"},{type:"doc",id:"06-api-reference/interfaces/ClassificationType",label:"ClassificationType"},{type:"doc",id:"06-api-reference/interfaces/ContextStrategy",label:"ContextStrategy"},{type:"doc",id:"06-api-reference/interfaces/DecodingOptions",label:"DecodingOptions"},{type:"doc",id:"06-api-reference/interfaces/Detection",label:"Detection"},{type:"doc",id:"06-api-reference/interfaces/ExecutorchModuleProps",label:"ExecutorchModuleProps"},{type:"doc",id:"06-api-reference/interfaces/ExecutorchModuleType",label:"ExecutorchModuleType"},{type:"doc",id:"06-api-reference/interfaces/GenerationConfig",label:"GenerationConfig"},{type:"doc",id:"06-api-reference/interfaces/ImageEmbeddingsProps",label:"ImageEmbeddingsProps"},{type:"doc",id:"06-api-reference/interfaces/ImageEmbeddingsType",label:"ImageEmbeddingsType"},{type:"doc",id:"06-api-reference/interfaces/KokoroConfig",label:"KokoroConfig"},{type:"doc",id:"06-api-reference/interfaces/KokoroVoiceExtras",label:"KokoroVoiceExtras"},{type:"doc",id:"06-api-reference/interfaces/LLMConfig",label:"LLMConfig"},{type:"doc",id:"06-api-reference/interfaces/LLMProps",label:"LLMProps"},{type:"doc",id:"06-api-reference/interfaces/LLMType",label:"LLMType"},{type:"doc",id:"06-api-reference/interfaces/Message",label:"Message"},{type:"doc",id:"06-api-reference/interfaces/ObjectDetectionProps",label:"ObjectDetectionProps"},{type:"doc",id:"06-api-reference/interfaces/ObjectDetectionType",label:"ObjectDetectionType"},{type:"doc",id:"06-api-reference/interfaces/OCRDetection",label:"OCRDetection"},{type:"doc",id:"06-api-reference/interfaces/OCRProps",label:"OCRProps"},{type:"doc",id:"06-api-reference/interfaces/OCRType",label:"OCRType"},{type:"doc",id:"06-api-reference/interfaces/Point",label:"Point"},{type:"doc",id:"06-api-reference/interfaces/Segment",label:"Segment"},{type:"doc",id:"06-api-reference/interfaces/SemanticSegmentationProps",label:"SemanticSegmentationProps"},{type:"doc",id:"06-api-reference/interfaces/SemanticSegmentationType",label:"SemanticSegmentationType"},{type:"doc",id:"06-api-reference/interfaces/SpeechToTextModelConfig",label:"SpeechToTextModelConfig"},{type:"doc",id:"06-api-reference/interfaces/SpeechToTextProps",label:"SpeechToTextProps"},{type:"doc",id:"06-api-reference/interfaces/SpeechToTextType",label:"SpeechToTextType"},{type:"doc",id:"06-api-reference/interfaces/StyleTransferProps",label:"StyleTransferProps"},{type:"doc",id:"06-api-reference/interfaces/StyleTransferType",label:"StyleTransferType"},{type:"doc",id:"06-api-reference/interfaces/TensorPtr",label:"TensorPtr"},{type:"doc",id:"06-api-reference/interfaces/TextEmbeddingsProps",label:"TextEmbeddingsProps"},{type:"doc",id:"06-api-reference/interfaces/TextEmbeddingsType",label:"TextEmbeddingsType"},{type:"doc",id:"06-api-reference/interfaces/TextToImageProps",label:"TextToImageProps"},{type:"doc",id:"06-api-reference/interfaces/TextToImageType",label:"TextToImageType"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechConfig",label:"TextToSpeechConfig"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechInput",label:"TextToSpeechInput"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechProps",label:"TextToSpeechProps"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechStreamingInput",label:"TextToSpeechStreamingInput"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechType",label:"TextToSpeechType"},{type:"doc",id:"06-api-reference/interfaces/TokenizerProps",label:"TokenizerProps"},{type:"doc",id:"06-api-reference/interfaces/TokenizerType",label:"TokenizerType"},{type:"doc",id:"06-api-reference/interfaces/ToolCall",label:"ToolCall"},{type:"doc",id:"06-api-reference/interfaces/ToolsConfig",label:"ToolsConfig"},{type:"doc",id:"06-api-reference/interfaces/TranscriptionResult",label:"TranscriptionResult"},{type:"doc",id:"06-api-reference/interfaces/TranscriptionSegment",label:"TranscriptionSegment"},{type:"doc",id:"06-api-reference/interfaces/VADProps",label:"VADProps"},{type:"doc",id:"06-api-reference/interfaces/VADType",label:"VADType"},{type:"doc",id:"06-api-reference/interfaces/VerticalOCRProps",label:"VerticalOCRProps"},{type:"doc",id:"06-api-reference/interfaces/VoiceConfig",label:"VoiceConfig"},{type:"doc",id:"06-api-reference/interfaces/Word",label:"Word"},{type:"doc",id:"06-api-reference/type-aliases/LabelEnum",label:"LabelEnum"},{type:"doc",id:"06-api-reference/type-aliases/LLMTool",label:"LLMTool"},{type:"doc",id:"06-api-reference/type-aliases/MessageRole",label:"MessageRole"},{type:"doc",id:"06-api-reference/type-aliases/ModelNameOf",label:"ModelNameOf"},{type:"doc",id:"06-api-reference/type-aliases/OCRLanguage",label:"OCRLanguage"},{type:"doc",id:"06-api-reference/type-aliases/ResourceSource",label:"ResourceSource"},{type:"doc",id:"06-api-reference/type-aliases/SegmentationLabels",label:"SegmentationLabels"},{type:"doc",id:"06-api-reference/type-aliases/SemanticSegmentationConfig",label:"SemanticSegmentationConfig"},{type:"doc",id:"06-api-reference/type-aliases/SemanticSegmentationModelName",label:"SemanticSegmentationModelName"},{type:"doc",id:"06-api-reference/type-aliases/SemanticSegmentationModelSources",label:"SemanticSegmentationModelSources"},{type:"doc",id:"06-api-reference/type-aliases/SpeechToTextLanguage",label:"SpeechToTextLanguage"},{type:"doc",id:"06-api-reference/type-aliases/TensorBuffer",label:"TensorBuffer"},{type:"doc",id:"06-api-reference/type-aliases/TextToSpeechLanguage",label:"TextToSpeechLanguage"},{type:"doc",id:"06-api-reference/type-aliases/Triple",label:"Triple"},{type:"doc",id:"06-api-reference/variables/SPECIAL_TOKENS",label:"SPECIAL_TOKENS"}]},{type:"category",label:"Typescript API",items:[{type:"doc",id:"06-api-reference/classes/ClassificationModule",label:"ClassificationModule"},{type:"doc",id:"06-api-reference/classes/ExecutorchModule",label:"ExecutorchModule"},{type:"doc",id:"06-api-reference/classes/ImageEmbeddingsModule",label:"ImageEmbeddingsModule"},{type:"doc",id:"06-api-reference/classes/LLMModule",label:"LLMModule"},{type:"doc",id:"06-api-reference/classes/ObjectDetectionModule",label:"ObjectDetectionModule"},{type:"doc",id:"06-api-reference/classes/OCRModule",label:"OCRModule"},{type:"doc",id:"06-api-reference/classes/SemanticSegmentationModule",label:"SemanticSegmentationModule"},{type:"doc",id:"06-api-reference/classes/SpeechToTextModule",label:"SpeechToTextModule"},{type:"doc",id:"06-api-reference/classes/StyleTransferModule",label:"StyleTransferModule"},{type:"doc",id:"06-api-reference/classes/TextEmbeddingsModule",label:"TextEmbeddingsModule"},{type:"doc",id:"06-api-reference/classes/TextToImageModule",label:"TextToImageModule"},{type:"doc",id:"06-api-reference/classes/TextToSpeechModule",label:"TextToSpeechModule"},{type:"doc",id:"06-api-reference/classes/TokenizerModule",label:"TokenizerModule"},{type:"doc",id:"06-api-reference/classes/VADModule",label:"VADModule"},{type:"doc",id:"06-api-reference/classes/VerticalOCRModule",label:"VerticalOCRModule"}]},{type:"category",label:"Utilities - General",items:[{type:"category",label:"ResourceFetcherUtils",items:[{type:"category",label:"Functions",items:[{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/calculateDownloadProgress",label:"calculateDownloadProgress"},{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/getFilenameFromUri",label:"getFilenameFromUri"},{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/hashObject",label:"hashObject"},{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/removeFilePrefix",label:"removeFilePrefix"},{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/triggerHuggingFaceDownloadCounter",label:"triggerHuggingFaceDownloadCounter"}]}],link:{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/index"}},{type:"doc",id:"06-api-reference/classes/ResourceFetcher",label:"ResourceFetcher"},{type:"doc",id:"06-api-reference/interfaces/ExecutorchConfig",label:"ExecutorchConfig"},{type:"doc",id:"06-api-reference/interfaces/ResourceFetcherAdapter",label:"ResourceFetcherAdapter"},{type:"doc",id:"06-api-reference/functions/cleanupExecutorch",label:"cleanupExecutorch"},{type:"doc",id:"06-api-reference/functions/initExecutorch",label:"initExecutorch"}]},{type:"category",label:"Utilities - LLM",items:[{type:"doc",id:"06-api-reference/variables/DEFAULT_CHAT_CONFIG",label:"DEFAULT_CHAT_CONFIG"},{type:"doc",id:"06-api-reference/variables/DEFAULT_CONTEXT_BUFFER_TOKENS",label:"DEFAULT_CONTEXT_BUFFER_TOKENS"},{type:"doc",id:"06-api-reference/variables/DEFAULT_MESSAGE_HISTORY",label:"DEFAULT_MESSAGE_HISTORY"},{type:"doc",id:"06-api-reference/variables/DEFAULT_SYSTEM_PROMPT",label:"DEFAULT_SYSTEM_PROMPT"},{type:"doc",id:"06-api-reference/variables/parseToolCall",label:"parseToolCall"},{type:"doc",id:"06-api-reference/functions/DEFAULT_STRUCTURED_OUTPUT_PROMPT",label:"DEFAULT_STRUCTURED_OUTPUT_PROMPT"},{type:"doc",id:"06-api-reference/functions/fixAndValidateStructuredOutput",label:"fixAndValidateStructuredOutput"},{type:"doc",id:"06-api-reference/functions/getStructuredOutputPrompt",label:"getStructuredOutputPrompt"}]},{type:"category",label:"Utils",items:[{type:"doc",id:"06-api-reference/classes/MessageCountContextStrategy",label:"MessageCountContextStrategy"},{type:"doc",id:"06-api-reference/classes/NoopContextStrategy",label:"NoopContextStrategy"},{type:"doc",id:"06-api-reference/classes/SlidingWindowContextStrategy",label:"SlidingWindowContextStrategy"}]}]}; +const typedocSidebar = {items:[{type:"category",label:"Hooks",items:[{type:"doc",id:"06-api-reference/functions/useClassification",label:"useClassification"},{type:"doc",id:"06-api-reference/functions/useExecutorchModule",label:"useExecutorchModule"},{type:"doc",id:"06-api-reference/functions/useImageEmbeddings",label:"useImageEmbeddings"},{type:"doc",id:"06-api-reference/functions/useLLM",label:"useLLM"},{type:"doc",id:"06-api-reference/functions/useObjectDetection",label:"useObjectDetection"},{type:"doc",id:"06-api-reference/functions/useOCR",label:"useOCR"},{type:"doc",id:"06-api-reference/functions/useSemanticSegmentation",label:"useSemanticSegmentation"},{type:"doc",id:"06-api-reference/functions/useSpeechToText",label:"useSpeechToText"},{type:"doc",id:"06-api-reference/functions/useStyleTransfer",label:"useStyleTransfer"},{type:"doc",id:"06-api-reference/functions/useTextEmbeddings",label:"useTextEmbeddings"},{type:"doc",id:"06-api-reference/functions/useTextToImage",label:"useTextToImage"},{type:"doc",id:"06-api-reference/functions/useTextToSpeech",label:"useTextToSpeech"},{type:"doc",id:"06-api-reference/functions/useTokenizer",label:"useTokenizer"},{type:"doc",id:"06-api-reference/functions/useVAD",label:"useVAD"},{type:"doc",id:"06-api-reference/functions/useVerticalOCR",label:"useVerticalOCR"}]},{type:"category",label:"Interfaces",items:[{type:"doc",id:"06-api-reference/interfaces/ResourceSourceExtended",label:"ResourceSourceExtended"}]},{type:"category",label:"Models - Classification",items:[{type:"doc",id:"06-api-reference/variables/EFFICIENTNET_V2_S",label:"EFFICIENTNET_V2_S"}]},{type:"category",label:"Models - Image Embeddings",items:[{type:"doc",id:"06-api-reference/variables/CLIP_VIT_BASE_PATCH32_IMAGE",label:"CLIP_VIT_BASE_PATCH32_IMAGE"}]},{type:"category",label:"Models - Image Generation",items:[{type:"doc",id:"06-api-reference/variables/BK_SDM_TINY_VPRED_256",label:"BK_SDM_TINY_VPRED_256"},{type:"doc",id:"06-api-reference/variables/BK_SDM_TINY_VPRED_512",label:"BK_SDM_TINY_VPRED_512"}]},{type:"category",label:"Models - LMM",items:[{type:"doc",id:"06-api-reference/variables/HAMMER2_1_0_5B",label:"HAMMER2_1_0_5B"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_0_5B_QUANTIZED",label:"HAMMER2_1_0_5B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_1_5B",label:"HAMMER2_1_1_5B"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_1_5B_QUANTIZED",label:"HAMMER2_1_1_5B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_3B",label:"HAMMER2_1_3B"},{type:"doc",id:"06-api-reference/variables/HAMMER2_1_3B_QUANTIZED",label:"HAMMER2_1_3B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/LFM2_5_1_2B_INSTRUCT",label:"LFM2_5_1_2B_INSTRUCT"},{type:"doc",id:"06-api-reference/variables/LFM2_5_1_2B_INSTRUCT_QUANTIZED",label:"LFM2_5_1_2B_INSTRUCT_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_1B",label:"LLAMA3_2_1B"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_1B_QLORA",label:"LLAMA3_2_1B_QLORA"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_1B_SPINQUANT",label:"LLAMA3_2_1B_SPINQUANT"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_3B",label:"LLAMA3_2_3B"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_3B_QLORA",label:"LLAMA3_2_3B_QLORA"},{type:"doc",id:"06-api-reference/variables/LLAMA3_2_3B_SPINQUANT",label:"LLAMA3_2_3B_SPINQUANT"},{type:"doc",id:"06-api-reference/variables/PHI_4_MINI_4B",label:"PHI_4_MINI_4B"},{type:"doc",id:"06-api-reference/variables/PHI_4_MINI_4B_QUANTIZED",label:"PHI_4_MINI_4B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_0_5B",label:"QWEN2_5_0_5B"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_0_5B_QUANTIZED",label:"QWEN2_5_0_5B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_1_5B",label:"QWEN2_5_1_5B"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_1_5B_QUANTIZED",label:"QWEN2_5_1_5B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_3B",label:"QWEN2_5_3B"},{type:"doc",id:"06-api-reference/variables/QWEN2_5_3B_QUANTIZED",label:"QWEN2_5_3B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN3_0_6B",label:"QWEN3_0_6B"},{type:"doc",id:"06-api-reference/variables/QWEN3_0_6B_QUANTIZED",label:"QWEN3_0_6B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN3_1_7B",label:"QWEN3_1_7B"},{type:"doc",id:"06-api-reference/variables/QWEN3_1_7B_QUANTIZED",label:"QWEN3_1_7B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/QWEN3_4B",label:"QWEN3_4B"},{type:"doc",id:"06-api-reference/variables/QWEN3_4B_QUANTIZED",label:"QWEN3_4B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_1_7B",label:"SMOLLM2_1_1_7B"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_1_7B_QUANTIZED",label:"SMOLLM2_1_1_7B_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_135M",label:"SMOLLM2_1_135M"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_135M_QUANTIZED",label:"SMOLLM2_1_135M_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_360M",label:"SMOLLM2_1_360M"},{type:"doc",id:"06-api-reference/variables/SMOLLM2_1_360M_QUANTIZED",label:"SMOLLM2_1_360M_QUANTIZED"}]},{type:"category",label:"Models - Object Detection",items:[{type:"doc",id:"06-api-reference/variables/SSDLITE_320_MOBILENET_V3_LARGE",label:"SSDLITE_320_MOBILENET_V3_LARGE"}]},{type:"category",label:"Models - Semantic Segmentation",items:[{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_MOBILENET_V3_LARGE",label:"DEEPLAB_V3_MOBILENET_V3_LARGE"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_MOBILENET_V3_LARGE_QUANTIZED",label:"DEEPLAB_V3_MOBILENET_V3_LARGE_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_RESNET101",label:"DEEPLAB_V3_RESNET101"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_RESNET101_QUANTIZED",label:"DEEPLAB_V3_RESNET101_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_RESNET50",label:"DEEPLAB_V3_RESNET50"},{type:"doc",id:"06-api-reference/variables/DEEPLAB_V3_RESNET50_QUANTIZED",label:"DEEPLAB_V3_RESNET50_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/FCN_RESNET101",label:"FCN_RESNET101"},{type:"doc",id:"06-api-reference/variables/FCN_RESNET101_QUANTIZED",label:"FCN_RESNET101_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/FCN_RESNET50",label:"FCN_RESNET50"},{type:"doc",id:"06-api-reference/variables/FCN_RESNET50_QUANTIZED",label:"FCN_RESNET50_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/LRASPP_MOBILENET_V3_LARGE",label:"LRASPP_MOBILENET_V3_LARGE"},{type:"doc",id:"06-api-reference/variables/LRASPP_MOBILENET_V3_LARGE_QUANTIZED",label:"LRASPP_MOBILENET_V3_LARGE_QUANTIZED"},{type:"doc",id:"06-api-reference/variables/SELFIE_SEGMENTATION",label:"SELFIE_SEGMENTATION"}]},{type:"category",label:"Models - Speech To Text",items:[{type:"doc",id:"06-api-reference/variables/WHISPER_BASE",label:"WHISPER_BASE"},{type:"doc",id:"06-api-reference/variables/WHISPER_BASE_EN",label:"WHISPER_BASE_EN"},{type:"doc",id:"06-api-reference/variables/WHISPER_SMALL",label:"WHISPER_SMALL"},{type:"doc",id:"06-api-reference/variables/WHISPER_SMALL_EN",label:"WHISPER_SMALL_EN"},{type:"doc",id:"06-api-reference/variables/WHISPER_TINY",label:"WHISPER_TINY"},{type:"doc",id:"06-api-reference/variables/WHISPER_TINY_EN",label:"WHISPER_TINY_EN"},{type:"doc",id:"06-api-reference/variables/WHISPER_TINY_EN_QUANTIZED",label:"WHISPER_TINY_EN_QUANTIZED"}]},{type:"category",label:"Models - Style Transfer",items:[{type:"doc",id:"06-api-reference/variables/STYLE_TRANSFER_CANDY",label:"STYLE_TRANSFER_CANDY"},{type:"doc",id:"06-api-reference/variables/STYLE_TRANSFER_MOSAIC",label:"STYLE_TRANSFER_MOSAIC"},{type:"doc",id:"06-api-reference/variables/STYLE_TRANSFER_RAIN_PRINCESS",label:"STYLE_TRANSFER_RAIN_PRINCESS"},{type:"doc",id:"06-api-reference/variables/STYLE_TRANSFER_UDNIE",label:"STYLE_TRANSFER_UDNIE"}]},{type:"category",label:"Models - Text Embeddings",items:[{type:"doc",id:"06-api-reference/variables/ALL_MINILM_L6_V2",label:"ALL_MINILM_L6_V2"},{type:"doc",id:"06-api-reference/variables/ALL_MPNET_BASE_V2",label:"ALL_MPNET_BASE_V2"},{type:"doc",id:"06-api-reference/variables/CLIP_VIT_BASE_PATCH32_TEXT",label:"CLIP_VIT_BASE_PATCH32_TEXT"},{type:"doc",id:"06-api-reference/variables/MULTI_QA_MINILM_L6_COS_V1",label:"MULTI_QA_MINILM_L6_COS_V1"},{type:"doc",id:"06-api-reference/variables/MULTI_QA_MPNET_BASE_DOT_V1",label:"MULTI_QA_MPNET_BASE_DOT_V1"}]},{type:"category",label:"Models - Text to Speech",items:[{type:"doc",id:"06-api-reference/variables/KOKORO_MEDIUM",label:"KOKORO_MEDIUM"},{type:"doc",id:"06-api-reference/variables/KOKORO_SMALL",label:"KOKORO_SMALL"}]},{type:"category",label:"Models - Voice Activity Detection",items:[{type:"doc",id:"06-api-reference/variables/FSMN_VAD",label:"FSMN_VAD"}]},{type:"category",label:"OCR Supported Alphabets",items:[{type:"doc",id:"06-api-reference/variables/OCR_ABAZA",label:"OCR_ABAZA"},{type:"doc",id:"06-api-reference/variables/OCR_ADYGHE",label:"OCR_ADYGHE"},{type:"doc",id:"06-api-reference/variables/OCR_AFRIKAANS",label:"OCR_AFRIKAANS"},{type:"doc",id:"06-api-reference/variables/OCR_ALBANIAN",label:"OCR_ALBANIAN"},{type:"doc",id:"06-api-reference/variables/OCR_AVAR",label:"OCR_AVAR"},{type:"doc",id:"06-api-reference/variables/OCR_AZERBAIJANI",label:"OCR_AZERBAIJANI"},{type:"doc",id:"06-api-reference/variables/OCR_BELARUSIAN",label:"OCR_BELARUSIAN"},{type:"doc",id:"06-api-reference/variables/OCR_BOSNIAN",label:"OCR_BOSNIAN"},{type:"doc",id:"06-api-reference/variables/OCR_BULGARIAN",label:"OCR_BULGARIAN"},{type:"doc",id:"06-api-reference/variables/OCR_CHECHEN",label:"OCR_CHECHEN"},{type:"doc",id:"06-api-reference/variables/OCR_CROATIAN",label:"OCR_CROATIAN"},{type:"doc",id:"06-api-reference/variables/OCR_CZECH",label:"OCR_CZECH"},{type:"doc",id:"06-api-reference/variables/OCR_DANISH",label:"OCR_DANISH"},{type:"doc",id:"06-api-reference/variables/OCR_DARGWA",label:"OCR_DARGWA"},{type:"doc",id:"06-api-reference/variables/OCR_DUTCH",label:"OCR_DUTCH"},{type:"doc",id:"06-api-reference/variables/OCR_ENGLISH",label:"OCR_ENGLISH"},{type:"doc",id:"06-api-reference/variables/OCR_ESTONIAN",label:"OCR_ESTONIAN"},{type:"doc",id:"06-api-reference/variables/OCR_FRENCH",label:"OCR_FRENCH"},{type:"doc",id:"06-api-reference/variables/OCR_GERMAN",label:"OCR_GERMAN"},{type:"doc",id:"06-api-reference/variables/OCR_HUNGARIAN",label:"OCR_HUNGARIAN"},{type:"doc",id:"06-api-reference/variables/OCR_ICELANDIC",label:"OCR_ICELANDIC"},{type:"doc",id:"06-api-reference/variables/OCR_INDONESIAN",label:"OCR_INDONESIAN"},{type:"doc",id:"06-api-reference/variables/OCR_INGUSH",label:"OCR_INGUSH"},{type:"doc",id:"06-api-reference/variables/OCR_IRISH",label:"OCR_IRISH"},{type:"doc",id:"06-api-reference/variables/OCR_ITALIAN",label:"OCR_ITALIAN"},{type:"doc",id:"06-api-reference/variables/OCR_JAPANESE",label:"OCR_JAPANESE"},{type:"doc",id:"06-api-reference/variables/OCR_KANNADA",label:"OCR_KANNADA"},{type:"doc",id:"06-api-reference/variables/OCR_KARBADIAN",label:"OCR_KARBADIAN"},{type:"doc",id:"06-api-reference/variables/OCR_KOREAN",label:"OCR_KOREAN"},{type:"doc",id:"06-api-reference/variables/OCR_KURDISH",label:"OCR_KURDISH"},{type:"doc",id:"06-api-reference/variables/OCR_LAK",label:"OCR_LAK"},{type:"doc",id:"06-api-reference/variables/OCR_LATIN",label:"OCR_LATIN"},{type:"doc",id:"06-api-reference/variables/OCR_LATVIAN",label:"OCR_LATVIAN"},{type:"doc",id:"06-api-reference/variables/OCR_LEZGHIAN",label:"OCR_LEZGHIAN"},{type:"doc",id:"06-api-reference/variables/OCR_LITHUANIAN",label:"OCR_LITHUANIAN"},{type:"doc",id:"06-api-reference/variables/OCR_MALAY",label:"OCR_MALAY"},{type:"doc",id:"06-api-reference/variables/OCR_MALTESE",label:"OCR_MALTESE"},{type:"doc",id:"06-api-reference/variables/OCR_MAORI",label:"OCR_MAORI"},{type:"doc",id:"06-api-reference/variables/OCR_MONGOLIAN",label:"OCR_MONGOLIAN"},{type:"doc",id:"06-api-reference/variables/OCR_NORWEGIAN",label:"OCR_NORWEGIAN"},{type:"doc",id:"06-api-reference/variables/OCR_OCCITAN",label:"OCR_OCCITAN"},{type:"doc",id:"06-api-reference/variables/OCR_PALI",label:"OCR_PALI"},{type:"doc",id:"06-api-reference/variables/OCR_POLISH",label:"OCR_POLISH"},{type:"doc",id:"06-api-reference/variables/OCR_PORTUGUESE",label:"OCR_PORTUGUESE"},{type:"doc",id:"06-api-reference/variables/OCR_ROMANIAN",label:"OCR_ROMANIAN"},{type:"doc",id:"06-api-reference/variables/OCR_RUSSIAN",label:"OCR_RUSSIAN"},{type:"doc",id:"06-api-reference/variables/OCR_SERBIAN_CYRILLIC",label:"OCR_SERBIAN_CYRILLIC"},{type:"doc",id:"06-api-reference/variables/OCR_SERBIAN_LATIN",label:"OCR_SERBIAN_LATIN"},{type:"doc",id:"06-api-reference/variables/OCR_SIMPLIFIED_CHINESE",label:"OCR_SIMPLIFIED_CHINESE"},{type:"doc",id:"06-api-reference/variables/OCR_SLOVAK",label:"OCR_SLOVAK"},{type:"doc",id:"06-api-reference/variables/OCR_SLOVENIAN",label:"OCR_SLOVENIAN"},{type:"doc",id:"06-api-reference/variables/OCR_SPANISH",label:"OCR_SPANISH"},{type:"doc",id:"06-api-reference/variables/OCR_SWAHILI",label:"OCR_SWAHILI"},{type:"doc",id:"06-api-reference/variables/OCR_SWEDISH",label:"OCR_SWEDISH"},{type:"doc",id:"06-api-reference/variables/OCR_TABASSARAN",label:"OCR_TABASSARAN"},{type:"doc",id:"06-api-reference/variables/OCR_TAGALOG",label:"OCR_TAGALOG"},{type:"doc",id:"06-api-reference/variables/OCR_TAJIK",label:"OCR_TAJIK"},{type:"doc",id:"06-api-reference/variables/OCR_TELUGU",label:"OCR_TELUGU"},{type:"doc",id:"06-api-reference/variables/OCR_TURKISH",label:"OCR_TURKISH"},{type:"doc",id:"06-api-reference/variables/OCR_UKRAINIAN",label:"OCR_UKRAINIAN"},{type:"doc",id:"06-api-reference/variables/OCR_UZBEK",label:"OCR_UZBEK"},{type:"doc",id:"06-api-reference/variables/OCR_VIETNAMESE",label:"OCR_VIETNAMESE"},{type:"doc",id:"06-api-reference/variables/OCR_WELSH",label:"OCR_WELSH"}]},{type:"category",label:"Other",items:[{type:"doc",id:"06-api-reference/enumerations/RnExecutorchErrorCode",label:"RnExecutorchErrorCode"},{type:"doc",id:"06-api-reference/classes/Logger",label:"Logger"},{type:"doc",id:"06-api-reference/classes/RnExecutorchError",label:"RnExecutorchError"},{type:"doc",id:"06-api-reference/interfaces/Frame",label:"Frame"}]},{type:"category",label:"TTS Supported Voices",items:[{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AF_HEART",label:"KOKORO_VOICE_AF_HEART"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AF_RIVER",label:"KOKORO_VOICE_AF_RIVER"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AF_SARAH",label:"KOKORO_VOICE_AF_SARAH"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AM_ADAM",label:"KOKORO_VOICE_AM_ADAM"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AM_MICHAEL",label:"KOKORO_VOICE_AM_MICHAEL"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_AM_SANTA",label:"KOKORO_VOICE_AM_SANTA"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_BF_EMMA",label:"KOKORO_VOICE_BF_EMMA"},{type:"doc",id:"06-api-reference/variables/KOKORO_VOICE_BM_DANIEL",label:"KOKORO_VOICE_BM_DANIEL"}]},{type:"category",label:"Types",items:[{type:"doc",id:"06-api-reference/enumerations/CocoLabel",label:"CocoLabel"},{type:"doc",id:"06-api-reference/enumerations/DeeplabLabel",label:"DeeplabLabel"},{type:"doc",id:"06-api-reference/enumerations/DownloadStatus",label:"DownloadStatus"},{type:"doc",id:"06-api-reference/enumerations/HTTP_CODE",label:"HTTP_CODE"},{type:"doc",id:"06-api-reference/enumerations/ScalarType",label:"ScalarType"},{type:"doc",id:"06-api-reference/enumerations/SelfieSegmentationLabel",label:"SelfieSegmentationLabel"},{type:"doc",id:"06-api-reference/enumerations/SourceType",label:"SourceType"},{type:"doc",id:"06-api-reference/interfaces/Bbox",label:"Bbox"},{type:"doc",id:"06-api-reference/interfaces/ChatConfig",label:"ChatConfig"},{type:"doc",id:"06-api-reference/interfaces/ClassificationProps",label:"ClassificationProps"},{type:"doc",id:"06-api-reference/interfaces/ClassificationType",label:"ClassificationType"},{type:"doc",id:"06-api-reference/interfaces/ContextStrategy",label:"ContextStrategy"},{type:"doc",id:"06-api-reference/interfaces/DecodingOptions",label:"DecodingOptions"},{type:"doc",id:"06-api-reference/interfaces/Detection",label:"Detection"},{type:"doc",id:"06-api-reference/interfaces/ExecutorchModuleProps",label:"ExecutorchModuleProps"},{type:"doc",id:"06-api-reference/interfaces/ExecutorchModuleType",label:"ExecutorchModuleType"},{type:"doc",id:"06-api-reference/interfaces/GenerationConfig",label:"GenerationConfig"},{type:"doc",id:"06-api-reference/interfaces/ImageEmbeddingsProps",label:"ImageEmbeddingsProps"},{type:"doc",id:"06-api-reference/interfaces/ImageEmbeddingsType",label:"ImageEmbeddingsType"},{type:"doc",id:"06-api-reference/interfaces/KokoroConfig",label:"KokoroConfig"},{type:"doc",id:"06-api-reference/interfaces/KokoroVoiceExtras",label:"KokoroVoiceExtras"},{type:"doc",id:"06-api-reference/interfaces/LLMConfig",label:"LLMConfig"},{type:"doc",id:"06-api-reference/interfaces/LLMProps",label:"LLMProps"},{type:"doc",id:"06-api-reference/interfaces/LLMType",label:"LLMType"},{type:"doc",id:"06-api-reference/interfaces/Message",label:"Message"},{type:"doc",id:"06-api-reference/interfaces/ObjectDetectionProps",label:"ObjectDetectionProps"},{type:"doc",id:"06-api-reference/interfaces/ObjectDetectionType",label:"ObjectDetectionType"},{type:"doc",id:"06-api-reference/interfaces/OCRDetection",label:"OCRDetection"},{type:"doc",id:"06-api-reference/interfaces/OCRProps",label:"OCRProps"},{type:"doc",id:"06-api-reference/interfaces/OCRType",label:"OCRType"},{type:"doc",id:"06-api-reference/interfaces/PixelData",label:"PixelData"},{type:"doc",id:"06-api-reference/interfaces/Point",label:"Point"},{type:"doc",id:"06-api-reference/interfaces/Segment",label:"Segment"},{type:"doc",id:"06-api-reference/interfaces/SemanticSegmentationProps",label:"SemanticSegmentationProps"},{type:"doc",id:"06-api-reference/interfaces/SemanticSegmentationType",label:"SemanticSegmentationType"},{type:"doc",id:"06-api-reference/interfaces/SpeechToTextModelConfig",label:"SpeechToTextModelConfig"},{type:"doc",id:"06-api-reference/interfaces/SpeechToTextProps",label:"SpeechToTextProps"},{type:"doc",id:"06-api-reference/interfaces/SpeechToTextType",label:"SpeechToTextType"},{type:"doc",id:"06-api-reference/interfaces/StyleTransferProps",label:"StyleTransferProps"},{type:"doc",id:"06-api-reference/interfaces/StyleTransferType",label:"StyleTransferType"},{type:"doc",id:"06-api-reference/interfaces/TensorPtr",label:"TensorPtr"},{type:"doc",id:"06-api-reference/interfaces/TextEmbeddingsProps",label:"TextEmbeddingsProps"},{type:"doc",id:"06-api-reference/interfaces/TextEmbeddingsType",label:"TextEmbeddingsType"},{type:"doc",id:"06-api-reference/interfaces/TextToImageProps",label:"TextToImageProps"},{type:"doc",id:"06-api-reference/interfaces/TextToImageType",label:"TextToImageType"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechConfig",label:"TextToSpeechConfig"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechInput",label:"TextToSpeechInput"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechProps",label:"TextToSpeechProps"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechStreamingInput",label:"TextToSpeechStreamingInput"},{type:"doc",id:"06-api-reference/interfaces/TextToSpeechType",label:"TextToSpeechType"},{type:"doc",id:"06-api-reference/interfaces/TokenizerProps",label:"TokenizerProps"},{type:"doc",id:"06-api-reference/interfaces/TokenizerType",label:"TokenizerType"},{type:"doc",id:"06-api-reference/interfaces/ToolCall",label:"ToolCall"},{type:"doc",id:"06-api-reference/interfaces/ToolsConfig",label:"ToolsConfig"},{type:"doc",id:"06-api-reference/interfaces/TranscriptionResult",label:"TranscriptionResult"},{type:"doc",id:"06-api-reference/interfaces/TranscriptionSegment",label:"TranscriptionSegment"},{type:"doc",id:"06-api-reference/interfaces/VADProps",label:"VADProps"},{type:"doc",id:"06-api-reference/interfaces/VADType",label:"VADType"},{type:"doc",id:"06-api-reference/interfaces/VerticalOCRProps",label:"VerticalOCRProps"},{type:"doc",id:"06-api-reference/interfaces/VoiceConfig",label:"VoiceConfig"},{type:"doc",id:"06-api-reference/interfaces/Word",label:"Word"},{type:"doc",id:"06-api-reference/type-aliases/LabelEnum",label:"LabelEnum"},{type:"doc",id:"06-api-reference/type-aliases/LLMTool",label:"LLMTool"},{type:"doc",id:"06-api-reference/type-aliases/MessageRole",label:"MessageRole"},{type:"doc",id:"06-api-reference/type-aliases/ModelNameOf",label:"ModelNameOf"},{type:"doc",id:"06-api-reference/type-aliases/OCRLanguage",label:"OCRLanguage"},{type:"doc",id:"06-api-reference/type-aliases/ResourceSource",label:"ResourceSource"},{type:"doc",id:"06-api-reference/type-aliases/SegmentationLabels",label:"SegmentationLabels"},{type:"doc",id:"06-api-reference/type-aliases/SemanticSegmentationConfig",label:"SemanticSegmentationConfig"},{type:"doc",id:"06-api-reference/type-aliases/SemanticSegmentationModelName",label:"SemanticSegmentationModelName"},{type:"doc",id:"06-api-reference/type-aliases/SemanticSegmentationModelSources",label:"SemanticSegmentationModelSources"},{type:"doc",id:"06-api-reference/type-aliases/SpeechToTextLanguage",label:"SpeechToTextLanguage"},{type:"doc",id:"06-api-reference/type-aliases/TensorBuffer",label:"TensorBuffer"},{type:"doc",id:"06-api-reference/type-aliases/TextToSpeechLanguage",label:"TextToSpeechLanguage"},{type:"doc",id:"06-api-reference/type-aliases/Triple",label:"Triple"},{type:"doc",id:"06-api-reference/variables/SPECIAL_TOKENS",label:"SPECIAL_TOKENS"}]},{type:"category",label:"Typescript API",items:[{type:"doc",id:"06-api-reference/classes/ClassificationModule",label:"ClassificationModule"},{type:"doc",id:"06-api-reference/classes/ExecutorchModule",label:"ExecutorchModule"},{type:"doc",id:"06-api-reference/classes/ImageEmbeddingsModule",label:"ImageEmbeddingsModule"},{type:"doc",id:"06-api-reference/classes/LLMModule",label:"LLMModule"},{type:"doc",id:"06-api-reference/classes/ObjectDetectionModule",label:"ObjectDetectionModule"},{type:"doc",id:"06-api-reference/classes/OCRModule",label:"OCRModule"},{type:"doc",id:"06-api-reference/classes/SemanticSegmentationModule",label:"SemanticSegmentationModule"},{type:"doc",id:"06-api-reference/classes/SpeechToTextModule",label:"SpeechToTextModule"},{type:"doc",id:"06-api-reference/classes/StyleTransferModule",label:"StyleTransferModule"},{type:"doc",id:"06-api-reference/classes/TextEmbeddingsModule",label:"TextEmbeddingsModule"},{type:"doc",id:"06-api-reference/classes/TextToImageModule",label:"TextToImageModule"},{type:"doc",id:"06-api-reference/classes/TextToSpeechModule",label:"TextToSpeechModule"},{type:"doc",id:"06-api-reference/classes/TokenizerModule",label:"TokenizerModule"},{type:"doc",id:"06-api-reference/classes/VADModule",label:"VADModule"},{type:"doc",id:"06-api-reference/classes/VerticalOCRModule",label:"VerticalOCRModule"}]},{type:"category",label:"Utilities - General",items:[{type:"category",label:"ResourceFetcherUtils",items:[{type:"category",label:"Functions",items:[{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/calculateDownloadProgress",label:"calculateDownloadProgress"},{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/getFilenameFromUri",label:"getFilenameFromUri"},{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/hashObject",label:"hashObject"},{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/removeFilePrefix",label:"removeFilePrefix"},{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/functions/triggerHuggingFaceDownloadCounter",label:"triggerHuggingFaceDownloadCounter"}]}],link:{type:"doc",id:"06-api-reference/react-native-executorch/namespaces/ResourceFetcherUtils/index"}},{type:"doc",id:"06-api-reference/classes/ResourceFetcher",label:"ResourceFetcher"},{type:"doc",id:"06-api-reference/interfaces/ExecutorchConfig",label:"ExecutorchConfig"},{type:"doc",id:"06-api-reference/interfaces/ResourceFetcherAdapter",label:"ResourceFetcherAdapter"},{type:"doc",id:"06-api-reference/functions/cleanupExecutorch",label:"cleanupExecutorch"},{type:"doc",id:"06-api-reference/functions/initExecutorch",label:"initExecutorch"}]},{type:"category",label:"Utilities - LLM",items:[{type:"doc",id:"06-api-reference/variables/DEFAULT_CHAT_CONFIG",label:"DEFAULT_CHAT_CONFIG"},{type:"doc",id:"06-api-reference/variables/DEFAULT_CONTEXT_BUFFER_TOKENS",label:"DEFAULT_CONTEXT_BUFFER_TOKENS"},{type:"doc",id:"06-api-reference/variables/DEFAULT_MESSAGE_HISTORY",label:"DEFAULT_MESSAGE_HISTORY"},{type:"doc",id:"06-api-reference/variables/DEFAULT_SYSTEM_PROMPT",label:"DEFAULT_SYSTEM_PROMPT"},{type:"doc",id:"06-api-reference/variables/parseToolCall",label:"parseToolCall"},{type:"doc",id:"06-api-reference/functions/DEFAULT_STRUCTURED_OUTPUT_PROMPT",label:"DEFAULT_STRUCTURED_OUTPUT_PROMPT"},{type:"doc",id:"06-api-reference/functions/fixAndValidateStructuredOutput",label:"fixAndValidateStructuredOutput"},{type:"doc",id:"06-api-reference/functions/getStructuredOutputPrompt",label:"getStructuredOutputPrompt"}]},{type:"category",label:"Utils",items:[{type:"doc",id:"06-api-reference/classes/MessageCountContextStrategy",label:"MessageCountContextStrategy"},{type:"doc",id:"06-api-reference/classes/NoopContextStrategy",label:"NoopContextStrategy"},{type:"doc",id:"06-api-reference/classes/SlidingWindowContextStrategy",label:"SlidingWindowContextStrategy"}]}]}; module.exports = typedocSidebar.items; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 829e4f42f..e9465204a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -33,27 +33,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:7.10.4, @babel/code-frame@npm:~7.10.4": - version: 7.10.4 - resolution: "@babel/code-frame@npm:7.10.4" - dependencies: - "@babel/highlight": "npm:^7.10.4" - checksum: 10/4ef9c679515be9cb8eab519fcded953f86226155a599cf7ea209e40e088bb9a51bb5893d3307eae510b07bb3e359d64f2620957a00c27825dbe26ac62aca81f5 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.20.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/code-frame@npm:7.27.1" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.27.1" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.1.1" - checksum: 10/721b8a6e360a1fa0f1c9fe7351ae6c874828e119183688b533c477aa378f1010f37cc9afbfc4722c686d1f5cdd00da02eab4ba7278a0c504fa0d7a321dcd4fdf - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.20.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": version: 7.29.0 resolution: "@babel/code-frame@npm:7.29.0" dependencies: @@ -64,44 +44,23 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/compat-data@npm:7.28.5" - checksum: 10/5a5ff00b187049e847f04bd02e21fbd8094544e5016195c2b45e56fa2e311eeb925b158f52a85624c9e6bacc1ce0323e26c303513723d918a8034e347e22610d +"@babel/code-frame@npm:~7.10.4": + version: 7.10.4 + resolution: "@babel/code-frame@npm:7.10.4" + dependencies: + "@babel/highlight": "npm:^7.10.4" + checksum: 10/4ef9c679515be9cb8eab519fcded953f86226155a599cf7ea209e40e088bb9a51bb5893d3307eae510b07bb3e359d64f2620957a00c27825dbe26ac62aca81f5 languageName: node linkType: hard -"@babel/compat-data@npm:^7.28.6": +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.28.6, @babel/compat-data@npm:^7.29.0": version: 7.29.0 resolution: "@babel/compat-data@npm:7.29.0" checksum: 10/7f21beedb930ed8fbf7eabafc60e6e6521c1d905646bf1317a61b2163339157fe797efeb85962bf55136e166b01fd1a6b526a15974b92a8b877d564dcb6c9580 languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2": - version: 7.28.5 - resolution: "@babel/core@npm:7.28.5" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.5" - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-module-transforms": "npm:^7.28.3" - "@babel/helpers": "npm:^7.28.4" - "@babel/parser": "npm:^7.28.5" - "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.28.5" - "@babel/types": "npm:^7.28.5" - "@jridgewell/remapping": "npm:^2.3.5" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10/2f1e224125179f423f4300d605a0c5a3ef315003281a63b1744405b2605ee2a2ffc5b1a8349aa4f262c72eca31c7e1802377ee04ad2b852a2c88f8ace6cac324 - languageName: node - linkType: hard - -"@babel/core@npm:^7.27.4, @babel/core@npm:^7.29.0": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2, @babel/core@npm:^7.27.4, @babel/core@npm:^7.29.0": version: 7.29.0 resolution: "@babel/core@npm:7.29.0" dependencies: @@ -125,8 +84,8 @@ __metadata: linkType: hard "@babel/eslint-parser@npm:^7.25.1": - version: 7.28.5 - resolution: "@babel/eslint-parser@npm:7.28.5" + version: 7.28.6 + resolution: "@babel/eslint-parser@npm:7.28.6" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -134,24 +93,11 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10/ec8eb061f319fe3854f4c720303bf239625e63c5ddc9391a3c00f17339d417dc5482dc043b64d15506b0e87f26820dfec9ff4880a1862f7c05f4cf1bbf6e34be - languageName: node - linkType: hard - -"@babel/generator@npm:^7.20.5, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/generator@npm:7.28.5" - dependencies: - "@babel/parser": "npm:^7.28.5" - "@babel/types": "npm:^7.28.5" - "@jridgewell/gen-mapping": "npm:^0.3.12" - "@jridgewell/trace-mapping": "npm:^0.3.28" - jsesc: "npm:^3.0.2" - checksum: 10/ae618f0a17a6d76c3983e1fd5d9c2f5fdc07703a119efdb813a7d9b8ad4be0a07d4c6f0d718440d2de01a68e321f64e2d63c77fc5d43ae47ae143746ef28ac1f + checksum: 10/15c0c9c78abcc5f267a34bab95437c37dfc468e3ac5e11094ed26bebd63c7a5b056fa47c005ba74eb9fbed6c79e37f90cbe2a24ed09425921275391fe9a5bbe7 languageName: node linkType: hard -"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1": +"@babel/generator@npm:^7.20.5, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1": version: 7.29.1 resolution: "@babel/generator@npm:7.29.1" dependencies: @@ -173,20 +119,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/helper-compilation-targets@npm:7.27.2" - dependencies: - "@babel/compat-data": "npm:^7.27.2" - "@babel/helper-validator-option": "npm:^7.27.1" - browserslist: "npm:^4.24.0" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10/bd53c30a7477049db04b655d11f4c3500aea3bcbc2497cf02161de2ecf994fec7c098aabbcebe210ffabc2ecbdb1e3ffad23fb4d3f18723b814f423ea1749fe8 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.28.6": +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2, @babel/helper-compilation-targets@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-compilation-targets@npm:7.28.6" dependencies: @@ -199,24 +132,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3, @babel/helper-create-class-features-plugin@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/helper-create-class-features-plugin@npm:7.28.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-member-expression-to-functions": "npm:^7.28.5" - "@babel/helper-optimise-call-expression": "npm:^7.27.1" - "@babel/helper-replace-supers": "npm:^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.5" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/0bbf3dfe91875f642fe7ef38f60647f0df8eb9994d4350b19a4d1a9bdc32629e49e56e9a80afb12eeb6f6bcc6666392b37f32231b7c054fc91a0d5251cd67d5b - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.28.6": +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-create-class-features-plugin@npm:7.28.6" dependencies: @@ -233,7 +149,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1": +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1, @babel/helper-create-regexp-features-plugin@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.28.5" dependencies: @@ -246,18 +162,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.6.5": - version: 0.6.5 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" +"@babel/helper-define-polyfill-provider@npm:^0.6.5, @babel/helper-define-polyfill-provider@npm:^0.6.6": + version: 0.6.6 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.6" dependencies: - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-plugin-utils": "npm:^7.27.1" - debug: "npm:^4.4.1" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + debug: "npm:^4.4.3" lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.22.10" + resolve: "npm:^1.22.11" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/0bdd2d9654d2f650c33976caa1a2afac2c23cf07e83856acdb482423c7bf4542c499ca0bdc723f2961bb36883501f09e9f4fe061ba81c07996daacfba82a6f62 + checksum: 10/1c725c47bafb10ae4527aff6741b44ca49b18bf7005ae4583b15f992783e7c1d7687eab1a5583a373b5494160d46e91e29145280bd850e97d36b8b01bc5fef99 languageName: node linkType: hard @@ -277,7 +193,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.27.1, @babel/helper-member-expression-to-functions@npm:^7.28.5": +"@babel/helper-member-expression-to-functions@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-member-expression-to-functions@npm:7.28.5" dependencies: @@ -287,17 +203,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-module-imports@npm:7.27.1" - dependencies: - "@babel/traverse": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - checksum: 10/58e792ea5d4ae71676e0d03d9fef33e886a09602addc3bd01388a98d87df9fcfd192968feb40ac4aedb7e287ec3d0c17b33e3ecefe002592041a91d8a1998a8d - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.28.6": +"@babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-imports@npm:7.28.6" dependencies: @@ -307,20 +213,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-module-transforms@npm:7.28.3" - dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/598fdd8aa5b91f08542d0ba62a737847d0e752c8b95ae2566bc9d11d371856d6867d93e50db870fb836a6c44cfe481c189d8a2b35ca025a224f070624be9fa87 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.28.6": +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-transforms@npm:7.28.6" dependencies: @@ -342,14 +235,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.27.1 - resolution: "@babel/helper-plugin-utils@npm:7.27.1" - checksum: 10/96136c2428888e620e2ec493c25888f9ceb4a21099dcf3dd4508ea64b58cdedbd5a9fb6c7b352546de84d6c24edafe482318646932a22c449ebd16d16c22d864 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.28.6": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.28.6 resolution: "@babel/helper-plugin-utils@npm:7.28.6" checksum: 10/21c853bbc13dbdddf03309c9a0477270124ad48989e1ad6524b83e83a77524b333f92edd2caae645c5a7ecf264ec6d04a9ebe15aeb54c7f33c037b71ec521e4a @@ -369,20 +255,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-replace-supers@npm:7.27.1" - dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.27.1" - "@babel/helper-optimise-call-expression": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/72e3f8bef744c06874206bf0d80a0abbedbda269586966511c2491df4f6bf6d47a94700810c7a6737345a545dfb8295222e1e72f506bcd0b40edb3f594f739ea - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.28.6": +"@babel/helper-replace-supers@npm:^7.27.1, @babel/helper-replace-supers@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-replace-supers@npm:7.28.6" dependencies: @@ -412,7 +285,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": +"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-validator-identifier@npm:7.28.5" checksum: 10/8e5d9b0133702cfacc7f368bf792f0f8ac0483794877c6dca5fcb73810ee138e27527701826fb58a40a004f3a5ec0a2f3c3dd5e326d262530b119918f3132ba7 @@ -427,23 +300,13 @@ __metadata: linkType: hard "@babel/helper-wrap-function@npm:^7.27.1": - version: 7.28.3 - resolution: "@babel/helper-wrap-function@npm:7.28.3" - dependencies: - "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.28.3" - "@babel/types": "npm:^7.28.2" - checksum: 10/a5ed5fe7b8d9949d3b4f45ccec0b365018b8e444f6a6d794b4c8291e251e680f5b7c79c49c2170de9d14967c78721f59620ce70c5dac2d53c30628ef971d9dce - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/helpers@npm:7.28.4" + version: 7.28.6 + resolution: "@babel/helper-wrap-function@npm:7.28.6" dependencies: - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.4" - checksum: 10/5a70a82e196cf8808f8a449cc4780c34d02edda2bb136d39ce9d26e63b615f18e89a95472230c3ce7695db0d33e7026efeee56f6454ed43480f223007ed205eb + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + checksum: 10/d8a895a75399904746f4127db33593a20021fc55d1a5b5dfeb060b87cc13a8dceea91e70a4951bcd376ba9bd8232b0c04bff9a86c1dab83d691e01852c3b5bcd languageName: node linkType: hard @@ -469,18 +332,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/parser@npm:7.28.5" - dependencies: - "@babel/types": "npm:^7.28.5" - bin: - parser: ./bin/babel-parser.js - checksum: 10/8d9bfb437af6c97a7f6351840b9ac06b4529ba79d6d3def24d6c2996ab38ff7f1f9d301e868ca84a93a3050fadb3d09dbc5105b24634cd281671ac11eebe8df7 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": version: 7.29.0 resolution: "@babel/parser@npm:7.29.0" dependencies: @@ -538,15 +390,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.3" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/eeacdb7fa5ae19e366cbc4da98736b898e05b9abe572aa23093e6be842c6c8284d08af538528ec771073a3749718033be3713ff455ca008d11a7b0e90e62a53d + checksum: 10/9377897aa7cba3a0b78a7c6015799ff71504b2b203329357e42ab3185d44aab07344ba33f5dd53f14d5340c1dc5a2587346343e0859538947bbab0484e72b914 languageName: node linkType: hard @@ -577,15 +429,15 @@ __metadata: linkType: hard "@babel/plugin-proposal-decorators@npm:^7.12.9": - version: 7.28.0 - resolution: "@babel/plugin-proposal-decorators@npm:7.28.0" + version: 7.29.0 + resolution: "@babel/plugin-proposal-decorators@npm:7.29.0" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-syntax-decorators": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-syntax-decorators": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/984a4cc0891ac910ee65793c02299048ad18903855032f3e922476b5bd1e9839dd1ed0505bf3f69956b50b6d4dcbc3c74798bcc4c12d0160c37c187c2330ead4 + checksum: 10/fa7b9aa1a48993ad60b9e118619ed364aa67da4c634b8a755a6f0529a9f61719723fccfdaf3bf0c6ff693eeee0992a67fb311e0cbe8fed7d48de43cdc8ebff2c languageName: node linkType: hard @@ -717,14 +569,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-decorators@npm:7.27.1" +"@babel/plugin-syntax-decorators@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-decorators@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/2dd303f969c7eacb666294493e87d0121122d2b0f6f678855f8e134e0866dc20633cbe1b7351e9eae3874f95657bfdc63dcde68992e99f014111a725467059ca + checksum: 10/6c7544eaa586aba1bcb400eab9304011c1d5be8d9cff02d02c930e70d4023505595c36feca2bf62960f3891d2c3abbc32e116d4c8ab1da63b0fc5329d7694919 languageName: node linkType: hard @@ -740,46 +592,46 @@ __metadata: linkType: hard "@babel/plugin-syntax-export-default-from@npm:^7.0.0, @babel/plugin-syntax-export-default-from@npm:^7.24.7": - version: 7.27.1 - resolution: "@babel/plugin-syntax-export-default-from@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-syntax-export-default-from@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/d9a6a9c51f644a5ed139dbe1e8cf5a38c9b390af27ad2fc6f0eba579ac543b039efff34200744bfc8523132c06aa6de921238bd2088948bb4dce4571cea43438 + checksum: 10/06330b90a4baf9edafe8a4e2e6520d548f83e178c1e832c1ad5018532052996331aedc8c3b4e6b0e51acaef75abe76e25ad3465d3d914658d65acec6908f202a languageName: node linkType: hard "@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.18.0, @babel/plugin-syntax-flow@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-flow@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-syntax-flow@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/7baca3171ed595d04c865b0ce46fca7f21900686df9d7fcd1017036ce78bb5483e33803de810831e68d39cf478953db69f49ae3f3de2e3207bc4ba49a96b6739 + checksum: 10/3dfe5d8168e400376e16937c92648142771b9ba0d9937b04ccdaacd06bf9d854170021b466106d4aa39ba6062b8b5b9b53efddae2c64ca133d4d6fafaa472909 languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" +"@babel/plugin-syntax-import-assertions@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/fb661d630808d67ecb85eabad25aac4e9696a20464bad4c4a6a0d3d40e4dc22557d47e9be3d591ec06429cf048cfe169b8891c373606344d51c4f3ac0f91d6d0 + checksum: 10/25017235e1e2c4ed892aa327a3fa10f4209cc618c6dd7806fc40c07d8d7d24a39743d3d5568b8d1c8f416cffe03c174e78874ded513c9338b07a7ab1dcbab050 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/97973982fff1bbf86b3d1df13380567042887c50e2ae13a400d02a8ff2c9742a60a75e279bfb73019e1cd9710f04be5e6ab81f896e6678dcfcec8b135e8896cf + checksum: 10/6c8c6a5988dbb9799d6027360d1a5ba64faabf551f2ef11ba4eade0c62253b5c85d44ddc8eb643c74b9acb2bcaa664a950bd5de9a5d4aef291c4f2a48223bb4b languageName: node linkType: hard @@ -805,14 +657,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" +"@babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-jsx@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c6d1324cff286a369aa95d99b8abd21dd07821b5d3affd5fe7d6058c84cff9190743287826463ee57a7beecd10fa1e4bc99061df532ee14e188c1c8937b13e3a + checksum: 10/572e38f5c1bb4b8124300e7e3dd13e82ae84a21f90d3f0786c98cd05e63c78ca1f32d1cfe462dfbaf5e7d5102fa7cd8fd741dfe4f3afc2e01a3b2877dcc8c866 languageName: node linkType: hard @@ -904,18 +756,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/87836f7e32af624c2914c73cd6b9803cf324e07d43f61dbb973c6a86f75df725e12540d91fac7141c14b697aa9268fd064220998daced156e96ac3062d7afb41 - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.28.6": +"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" dependencies: @@ -949,29 +790,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" +"@babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.29.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-remap-async-to-generator": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.0" + "@babel/traverse": "npm:^7.29.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/8ad31b9969b203dec572738a872e17b14ef76ca45b4ef5ffa76f3514be417ca233d1a0978e5f8de166412a8a745619eb22b07cc5df96f5ebad8ca500f920f61b + checksum: 10/e2c064a5eb212cbdf14f7c0113e069b845ca0f0ba431c1cc04607d3fc4f3bf1ed70f5c375fe7c61338a45db88bc1a79d270c8d633ce12256e1fce3666c1e6b93 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.24.7, @babel/plugin-transform-async-to-generator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" +"@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.24.7, @babel/plugin-transform-async-to-generator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.28.6" dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-module-imports": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-remap-async-to-generator": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/d79d7a7ae7d416f6a48200017d027a6ba94c09c7617eea8b4e9c803630f00094c1a4fc32bf20ce3282567824ce3fcbda51653aac4003c71ea4e681b331338979 + checksum: 10/bca5774263ec01dd2bf71c74bbaf7baa183bf03576636b7826c3346be70c8c8cb15cff549112f2983c36885131a0afde6c443591278c281f733ee17f455aa9b1 languageName: node linkType: hard @@ -986,18 +827,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.25.0, @babel/plugin-transform-block-scoping@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-block-scoping@npm:7.28.5" +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.25.0, @babel/plugin-transform-block-scoping@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/4b695360ede8472262111efb9d5c35b515767e1ead9e272c3e9799235e3f5feeb21d99a66bb23acbba9424465d13e7695a22a22a680c4aa558702ef8aad461d6 + checksum: 10/7ab8a0856024a5360ba16c3569b739385e939bc5a15ad7d811bec8459361a9aa5ee7c5f154a4e2ce79f5d66779c19464e7532600c31a1b6f681db4eb7e1c7bde languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:7.27.1, @babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.27.1": +"@babel/plugin-transform-class-properties@npm:7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" dependencies: @@ -1009,19 +850,31 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.27.1, @babel/plugin-transform-class-static-block@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" +"@babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-class-properties@npm:7.28.6" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.28.3" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/200f30d44b36a768fa3a8cf690db9e333996af2ad14d9fa1b4c91a427ed9302907873b219b4ce87517ca1014a810eb2e929a6a66be68473f72b546fc64d04fbc + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.27.1, @babel/plugin-transform-class-static-block@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-class-static-block@npm:7.28.6" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10/c0ba8f0cbf3699287e5a711907dab3b29f346d9c107faa4e424aa26252e45845d74ca08ee6245bfccf32a8c04bc1d07a89b635e51522592c6044b810a48d3f58 + checksum: 10/bea7836846deefd02d9976ad1b30b5ade0d6329ecd92866db789dcf6aacfaf900b7a77031e25680f8de5ad636a771a5bdca8961361e6218d45d538ec5d9b71cc languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:7.28.4, @babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.4": +"@babel/plugin-transform-classes@npm:7.28.4": version: 7.28.4 resolution: "@babel/plugin-transform-classes@npm:7.28.4" dependencies: @@ -1037,19 +890,35 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-classes@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/template": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-replace-supers": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/9c3278a314d1c4bcda792bb22aced20e30c735557daf9bcc56397c0f3eb54761b21c770219e4581036a10dabda3e597321ed093bc245d5f4d561e19ceff66a6d + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-computed-properties@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/template": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/101f6d4575447070943d5a9efaa5bea8c552ea3083d73a9612f1a16d38b0a0a7b79a5feb65c6cc4e4fcabf28e85a570b97ccd3294da966e8fbbb6dfb97220eda + checksum: 10/4a5e270f7e1f1e9787cf7cf133d48e3c1e38eb935d29a90331a1324d7c720f589b7b626b2e6485cd5521a7a13f2dbdc89a3e46ecbe7213d5bbb631175267c4aa languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.28.0, @babel/plugin-transform-destructuring@npm:^7.28.5": +"@babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.28.5": version: 7.28.5 resolution: "@babel/plugin-transform-destructuring@npm:7.28.5" dependencies: @@ -1061,15 +930,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" +"@babel/plugin-transform-dotall-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/2173e5b13f403538ffc6bd57b190cedf4caf320abc13a99e5b2721864e7148dbd3bd7c82d92377136af80432818f665fdd9a1fd33bc5549a4c91e24e5ce2413c + checksum: 10/866ffbbdee77fa955063b37c75593db8dbbe46b1ebb64cc788ea437e3a9aa41cb7b9afcee617c678a32b6705baa0892ec8e5d4b8af3bbb0ab1b254514ccdbd37 languageName: node linkType: hard @@ -1084,15 +953,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.29.0" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/2a109613535e6ac79240dced71429e988affd6a5b3d0cd0f563c8d6c208c51ce7bf2c300bc1150502376b26a51f279119b3358f1c0f2d2f8abca3bcd62e1ae46 + checksum: 10/7fa7b773259a578c9e01c80946f75ecc074520064aa7a87a65db06c7df70766e2fa6be78cda55fa9418a14e30b2b9d595484a46db48074d495d9f877a4276065 languageName: node linkType: hard @@ -1107,26 +976,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" +"@babel/plugin-transform-explicit-resource-management@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-transform-destructuring": "npm:^7.28.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/93d7835160bf8623c7b7072898046c9a2a46cf911f38fa2a002de40a11045a65bf9c1663c98f2e4e04615037f63391832c20b45d7bc26a16d39a97995d0669bc + checksum: 10/36d638a253dbdaee5548b4ddd21c04ee4e39914b207437bb64cf79bb41c2caadb4321768d3dba308c1016702649bc44efe751e2052de393004563c7376210d86 languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.5" +"@babel/plugin-transform-exponentiation-operator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/da9bb5acd35c9fba92b802641f9462b82334158a149c78a739a04576a1e62be41057a201a41c022dda263bb73ac1a26521bbc997c7fc067f54d487af297995f4 + checksum: 10/b232152499370435c7cd4bf3321f58e189150e35ca3722ea16533d33434b97294df1342f5499671ec48e62b71c34cdea0ca8cf317ad12594a10f6fc670315e62 languageName: node linkType: hard @@ -1178,14 +1047,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" +"@babel/plugin-transform-json-strings@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-json-strings@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/2c05a02f63b49f47069271b3405a66c3c8038de5b995b0700b1bd9a5e2bb3e67abd01e4604629302a521f4d8122a4233944aefa16559fd4373d256cc5d3da57f + checksum: 10/69d82a1a0a72ed6e6f7969e09cf330516599d79b2b4e680e9dd3c57616a8c6af049b5103456e370ab56642815e80e46ed88bb81e9e059304a85c5fe0bf137c29 languageName: node linkType: hard @@ -1200,14 +1069,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.5" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c76778f4b186cc4f0b7e3658d91c690678bdb2b9d032f189213016d6177f2564709b79b386523b022b7d52e52331fd91f280f7c7bf85d835e0758b4b0d371447 + checksum: 10/36095d5d1cfc680e95298b5389a16016da800ae3379b130dabf557e94652c47b06610407e9fa44aaa03e9b0a5aa7b4b93348123985d44a45e369bf5f3497d149 languageName: node linkType: hard @@ -1234,29 +1103,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1, @babel/plugin-transform-modules-commonjs@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.28.6" dependencies: - "@babel/helper-module-transforms": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-module-transforms": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/9059243a977bc1f13e3dccfc6feb6508890e7c7bb191f7eb56626b20672b4b12338051ca835ab55426875a473181502c8f35b4df58ba251bef63b25866d995fe + checksum: 10/ec6ea2958e778a7e0220f4a75cb5816cecddc6bd98efa10499fff7baabaa29a594d50d787a4ebf8a8ba66fefcf76ca2ded602be0b4554ae3317e53b3b3375b37 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.28.5" +"@babel/plugin-transform-modules-systemjs@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.29.0" dependencies: - "@babel/helper-module-transforms": "npm:^7.28.3" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-module-transforms": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-validator-identifier": "npm:^7.28.5" - "@babel/traverse": "npm:^7.28.5" + "@babel/traverse": "npm:^7.29.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/1b91b4848845eaf6e21663d97a2a6c896553b127deaf3c2e9a2a4f041249277d13ebf71fd42d0ecbc4385e9f76093eff592fe0da0dcf1401b3f38c1615d8c539 + checksum: 10/b3e64728eef02d829510778226da4c06be740fe52e0d45d4aa68b24083096d8ad7df67f2e9e67198b2e85f3237d42bd66f5771f85846f7a746105d05ca2e0cae languageName: node linkType: hard @@ -1272,15 +1141,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.29.0" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/a711c92d9753df26cefc1792481e5cbff4fe4f32b383d76b25e36fa865d8023b1b9aa6338cf18f5c0e864c71a7fbe8115e840872ccd61a914d9953849c68de7d + checksum: 10/ed8c27699ca82a6c01cbfd39f3de16b90cfea4f8146a358057f76df290d308a66a8bd2e6734e6a87f68c18576e15d2d70548a84cd474d26fdf256c3f5ae44d8c languageName: node linkType: hard @@ -1295,7 +1164,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": +"@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" dependencies: @@ -1306,29 +1175,40 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/049b958911de86d32408cd78017940a207e49c054ae9534ab53a32a57122cc592c0aae3c166d6f29bd1a7d75cc779d71883582dd76cb28b2fbb493e842d8ffca + checksum: 10/88106952ca4f4fea8f97222a25f9595c6859d458d76905845dfa54f54e7d345e3dc338932e8c84a9c57a6c88b2f6d9ebff47130ce508a49c2b6e6a9f03858750 languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" +"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.28.6" dependencies: - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/4b5ca60e481e22f0842761a3badca17376a230b5a7e5482338604eb95836c2d0c9c9bde53bdc5c2de1c6a12ae6c12de7464d098bf74b0943f85905ca358f0b68 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.6" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-transform-destructuring": "npm:^7.28.5" "@babel/plugin-transform-parameters": "npm:^7.27.7" - "@babel/traverse": "npm:^7.28.4" + "@babel/traverse": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/aebe464e368cefa5c3ba40316c47b61eb25f891d436b2241021efef5bd0b473c4aa5ba4b9fa0f4b4d5ce4f6bc6b727628d1ca79d54e7b8deebb5369f7dff2984 + checksum: 10/9c8c51a515a5ec98a33a715e82d49f873e58b04b53fa1e826f3c2009f7133cd396d6730553a53d265e096dbfbea17dd100ae38815d0b506c094cb316a7a5519e languageName: node linkType: hard @@ -1344,14 +1224,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7, @babel/plugin-transform-optional-catch-binding@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" +"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7, @babel/plugin-transform-optional-catch-binding@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/f4356b04cf21a98480f9788ea50f1f13ee88e89bb6393ba4b84d1f39a4a84c7928c9a4328e8f4c5b6deb218da68a8fd17bf4f46faec7653ddc20ffaaa5ba49f4 + checksum: 10/ee24a17defec056eb9ef01824d7e4a1f65d531af6b4b79acfd0bcb95ce0b47926e80c61897f36f8c01ce733b069c9acdb1c9ce5ec07a729d0dbf9e8d859fe992 languageName: node linkType: hard @@ -1367,15 +1247,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.5" +"@babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/0bc900bff66d5acc13b057107eaeb6084b4cb0b124654d35b103f71f292d33dba5beac444ab4f92528583585b6e0cf34d64ce9cbb473b15d22375a4a6ed3cbac + checksum: 10/c7cf29f99384a9a98748f04489a122c0106e0316aa64a2e61ef8af74c1057b587b96d9a08eb4e33d2ac17d1aaff1f0a86fae658d429fa7bcce4ef977e0ad684b languageName: node linkType: hard @@ -1390,28 +1270,28 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" +"@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-private-methods@npm:7.28.6" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c76f8f6056946466116e67eb9d8014a2d748ade2062636ab82045c1dac9c233aff10e597777bc5af6f26428beb845ceb41b95007abef7d0484da95789da56662 + checksum: 10/b80179b28f6a165674d0b0d6c6349b13a01dd282b18f56933423c0a33c23fc0626c8f011f859fc20737d021fe966eb8474a5233e4596401482e9ee7fb00e2aa2 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.24.7, @babel/plugin-transform-private-property-in-object@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" +"@babel/plugin-transform-private-property-in-object@npm:^7.24.7, @babel/plugin-transform-private-property-in-object@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.28.6" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/d4466d42a02c5a318d9d7b8102969fd032b17ff044918dfd462d5cc49bd11f5773ee0794781702afdf4727ba11e9be6cbea1e396bc0a7307761bb9a56399012a + checksum: 10/d02008c62fd32ff747b850b8581ab5076b717320e1cb01c7fc66ebf5169095bd922e18cfb269992f85bc7fbd2cc61e5b5af25e2b54aad67411474b789ea94d5f languageName: node linkType: hard @@ -1471,17 +1351,17 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.25.2, @babel/plugin-transform-react-jsx@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-transform-react-jsx@npm:7.28.6" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-syntax-jsx": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-module-imports": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-syntax-jsx": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/e865f194770906398957df23530af9a46009ac3737aaa10026b3925fe0a38fc3254f4b227d3b8807ab66ac92c14323bef561dd2217644052de5a9702af76e2f6 + checksum: 10/c6eade7309f0710b6aac9e747f8c3305633801c035a35efc5e2436742cc466e457ed5848d3dd5dade36e34332cfc50ac92d69a33f7803d66ae2d72f13a76c3bc languageName: node linkType: hard @@ -1497,26 +1377,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" +"@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-regenerator@npm:7.29.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/24da51a659d882e02bd4353da9d8e045e58d967c1cddaf985ad699a9fc9f920a45eff421c4283a248d83dc16590b8956e66fd710be5db8723b274cfea0b51b2f + checksum: 10/c8fa9da74371568c5d34fd7d53de018752550cb10334040ca59e41f34b27f127974bdc5b4d1a1a8e8f3ebcf3cb7f650aa3f2df3b7bf1b7edf67c04493b9e3cb8 languageName: node linkType: hard -"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" +"@babel/plugin-transform-regexp-modifiers@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/f6cb385fe0e798bff7e9b20cf5912bf40e180895ff3610b1ccdce260f3c20daaebb3a99dc087c8168a99151cd3e16b94f4689fd5a4b01cf1834b45c133e620b2 + checksum: 10/5aacc570034c085afa0165137bb9a04cd4299b86eb9092933a96dcc1132c8f591d9d534419988f5f762b2f70d43a3c719a6b8fa05fdd3b2b1820d01cf85500da languageName: node linkType: hard @@ -1532,18 +1412,18 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.0.0, @babel/plugin-transform-runtime@npm:^7.24.7": - version: 7.28.5 - resolution: "@babel/plugin-transform-runtime@npm:7.28.5" + version: 7.29.0 + resolution: "@babel/plugin-transform-runtime@npm:7.29.0" dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-module-imports": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" babel-plugin-polyfill-corejs2: "npm:^0.4.14" babel-plugin-polyfill-corejs3: "npm:^0.13.0" babel-plugin-polyfill-regenerator: "npm:^0.6.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/0d16c90d40dd34f1a981e742ad656ceef619b92d3662ec9ac8d7c8ba79f22bb425c3f9e097333659a4938f03868a53077b1a3aadb7f37504157a0c7af64ec2be + checksum: 10/314cfede923a7fb3aeecf4b282a3090e4a9ae1d84005e9a0365284c5142165a4dccd308455af9013d486a4ad8ada25ccad2fea28c2ec19b086d1ffa0088a69d7 languageName: node linkType: hard @@ -1558,15 +1438,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-spread@npm:7.27.1" +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-spread@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/3edd28b07e1951f32aa2d380d9a0e0ed408c64a5cea2921d02308541042aca18f146b3a61e82e534d4d61cb3225dbc847f4f063aedfff6230b1a41282e95e8a2 + checksum: 10/1fa02ac60ae5e49d46fa2966aaf3f7578cf37255534c2ecf379d65855088a1623c3eea28b9ee6a0b1413b0199b51f9019d0da3fe9da89986bc47e07242415f60 languageName: node linkType: hard @@ -1614,22 +1494,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.25.2, @babel/plugin-transform-typescript@npm:^7.28.5, @babel/plugin-transform-typescript@npm:^7.5.0": - version: 7.28.5 - resolution: "@babel/plugin-transform-typescript@npm:7.28.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-create-class-features-plugin": "npm:^7.28.5" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/plugin-syntax-typescript": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/e4706379df70c2de9d3d3f573ff74a160e05221620a22dd0a64899ab45fddad9e4530fbba33014c75906f13aa78d8044fed80dba85068e11d84ed1f033dea445 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.27.1": +"@babel/plugin-transform-typescript@npm:^7.25.2, @babel/plugin-transform-typescript@npm:^7.27.1, @babel/plugin-transform-typescript@npm:^7.28.5, @babel/plugin-transform-typescript@npm:^7.5.0": version: 7.28.6 resolution: "@babel/plugin-transform-typescript@npm:7.28.6" dependencies: @@ -1655,15 +1520,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" +"@babel/plugin-transform-unicode-property-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/5d99c89537d1ebaac3f526c04b162cf95a47d363d4829f78c6701a2c06ab78a48da66a94f853f85f44a3d72153410ba923e072bed4b7166fa097f503eb14131d + checksum: 10/d14e8c51aa73f592575c1543400fd67d96df6410d75c9dc10dd640fd7eecb37366a2f2368bbdd7529842532eda4af181c921bda95146c6d373c64ea59c6e9991 languageName: node linkType: hard @@ -1679,95 +1544,95 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/295126074c7388ab05c82ef3ed0907a1ee4666bbdd763477ead9aba6eb2c74bdf65669416861ac93d337a4a27640963bb214acadc2697275ce95aab14868d57f + checksum: 10/423971fe2eef9d18782b1c30f5f42613ee510e5b9c08760c5538a0997b36c34495acce261e0e37a27831f81330359230bd1f33c2e1822de70241002b45b7d68e languageName: node linkType: hard "@babel/preset-env@npm:^7.25.2": - version: 7.28.5 - resolution: "@babel/preset-env@npm:7.28.5" + version: 7.29.0 + resolution: "@babel/preset-env@npm:7.29.0" dependencies: - "@babel/compat-data": "npm:^7.28.5" - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/compat-data": "npm:^7.29.0" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-validator-option": "npm:^7.27.1" "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.6" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" - "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" + "@babel/plugin-syntax-import-assertions": "npm:^7.28.6" + "@babel/plugin-syntax-import-attributes": "npm:^7.28.6" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" - "@babel/plugin-transform-async-generator-functions": "npm:^7.28.0" - "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" + "@babel/plugin-transform-async-generator-functions": "npm:^7.29.0" + "@babel/plugin-transform-async-to-generator": "npm:^7.28.6" "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" - "@babel/plugin-transform-block-scoping": "npm:^7.28.5" - "@babel/plugin-transform-class-properties": "npm:^7.27.1" - "@babel/plugin-transform-class-static-block": "npm:^7.28.3" - "@babel/plugin-transform-classes": "npm:^7.28.4" - "@babel/plugin-transform-computed-properties": "npm:^7.27.1" + "@babel/plugin-transform-block-scoping": "npm:^7.28.6" + "@babel/plugin-transform-class-properties": "npm:^7.28.6" + "@babel/plugin-transform-class-static-block": "npm:^7.28.6" + "@babel/plugin-transform-classes": "npm:^7.28.6" + "@babel/plugin-transform-computed-properties": "npm:^7.28.6" "@babel/plugin-transform-destructuring": "npm:^7.28.5" - "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" + "@babel/plugin-transform-dotall-regex": "npm:^7.28.6" "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.29.0" "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" - "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.0" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.5" + "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.6" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.6" "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" "@babel/plugin-transform-for-of": "npm:^7.27.1" "@babel/plugin-transform-function-name": "npm:^7.27.1" - "@babel/plugin-transform-json-strings": "npm:^7.27.1" + "@babel/plugin-transform-json-strings": "npm:^7.28.6" "@babel/plugin-transform-literals": "npm:^7.27.1" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.5" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.6" "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" "@babel/plugin-transform-modules-amd": "npm:^7.27.1" - "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" - "@babel/plugin-transform-modules-systemjs": "npm:^7.28.5" + "@babel/plugin-transform-modules-commonjs": "npm:^7.28.6" + "@babel/plugin-transform-modules-systemjs": "npm:^7.29.0" "@babel/plugin-transform-modules-umd": "npm:^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.29.0" "@babel/plugin-transform-new-target": "npm:^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" - "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" - "@babel/plugin-transform-object-rest-spread": "npm:^7.28.4" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.28.6" + "@babel/plugin-transform-numeric-separator": "npm:^7.28.6" + "@babel/plugin-transform-object-rest-spread": "npm:^7.28.6" "@babel/plugin-transform-object-super": "npm:^7.27.1" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" - "@babel/plugin-transform-optional-chaining": "npm:^7.28.5" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.28.6" + "@babel/plugin-transform-optional-chaining": "npm:^7.28.6" "@babel/plugin-transform-parameters": "npm:^7.27.7" - "@babel/plugin-transform-private-methods": "npm:^7.27.1" - "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" + "@babel/plugin-transform-private-methods": "npm:^7.28.6" + "@babel/plugin-transform-private-property-in-object": "npm:^7.28.6" "@babel/plugin-transform-property-literals": "npm:^7.27.1" - "@babel/plugin-transform-regenerator": "npm:^7.28.4" - "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" + "@babel/plugin-transform-regenerator": "npm:^7.29.0" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.28.6" "@babel/plugin-transform-reserved-words": "npm:^7.27.1" "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" - "@babel/plugin-transform-spread": "npm:^7.27.1" + "@babel/plugin-transform-spread": "npm:^7.28.6" "@babel/plugin-transform-sticky-regex": "npm:^7.27.1" "@babel/plugin-transform-template-literals": "npm:^7.27.1" "@babel/plugin-transform-typeof-symbol": "npm:^7.27.1" "@babel/plugin-transform-unicode-escapes": "npm:^7.27.1" - "@babel/plugin-transform-unicode-property-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.28.6" "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" - "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.28.6" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2: "npm:^0.4.14" - babel-plugin-polyfill-corejs3: "npm:^0.13.0" - babel-plugin-polyfill-regenerator: "npm:^0.6.5" - core-js-compat: "npm:^3.43.0" + babel-plugin-polyfill-corejs2: "npm:^0.4.15" + babel-plugin-polyfill-corejs3: "npm:^0.14.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.6" + core-js-compat: "npm:^3.48.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/e9a5136a7e34553cc70dd6594716144678a2e9ecc971caf6885c380c38fcbed8b387f3af418c9aa4b2d2765964bb4e8a2e14b709c2f165eec6ed13bda32587ea + checksum: 10/211b33ec8644636275f61aa273071d8cbc2a6bb28d82ad246e3831a6aa7d96c610a55b5140bcd21be7f71fb04c3aa4a10eb08665fb5505e153cfdd8dbc8c1c1c languageName: node linkType: hard @@ -1831,24 +1696,13 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.25.0": - version: 7.28.4 - resolution: "@babel/runtime@npm:7.28.4" - checksum: 10/6c9a70452322ea80b3c9b2a412bcf60771819213a67576c8cec41e88a95bb7bf01fc983754cda35dc19603eef52df22203ccbf7777b9d6316932f9fb77c25163 - languageName: node - linkType: hard - -"@babel/template@npm:^7.0.0, @babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": - version: 7.27.2 - resolution: "@babel/template@npm:7.27.2" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/parser": "npm:^7.27.2" - "@babel/types": "npm:^7.27.1" - checksum: 10/fed15a84beb0b9340e5f81566600dbee5eccd92e4b9cc42a944359b1aa1082373391d9d5fc3656981dff27233ec935d0bc96453cf507f60a4b079463999244d8 + version: 7.28.6 + resolution: "@babel/runtime@npm:7.28.6" + checksum: 10/fbcd439cb74d4a681958eb064c509829e3f46d8a4bfaaf441baa81bb6733d1e680bccc676c813883d7741bcaada1d0d04b15aa320ef280b5734e2192b50decf9 languageName: node linkType: hard -"@babel/template@npm:^7.28.6": +"@babel/template@npm:^7.0.0, @babel/template@npm:^7.25.0, @babel/template@npm:^7.28.6, @babel/template@npm:^7.3.3": version: 7.28.6 resolution: "@babel/template@npm:7.28.6" dependencies: @@ -1859,22 +1713,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/traverse@npm:7.28.5" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.5" - "@babel/helper-globals": "npm:^7.28.0" - "@babel/parser": "npm:^7.28.5" - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.5" - debug: "npm:^4.3.1" - checksum: 10/1fce426f5ea494913c40f33298ce219708e703f71cac7ac045ebde64b5a7b17b9275dfa4e05fb92c3f123136913dff62c8113172f4a5de66dab566123dbe7437 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": +"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5, @babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": version: 7.29.0 resolution: "@babel/traverse@npm:7.29.0" dependencies: @@ -1889,17 +1728,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.26.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.28.5 - resolution: "@babel/types@npm:7.28.5" - dependencies: - "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.28.5" - checksum: 10/4256bb9fb2298c4f9b320bde56e625b7091ea8d2433d98dcf524d4086150da0b6555aabd7d0725162670614a9ac5bf036d1134ca13dedc9707f988670f1362d7 - languageName: node - linkType: hard - -"@babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.26.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.5, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.29.0 resolution: "@babel/types@npm:7.29.0" dependencies: @@ -2036,9 +1865,9 @@ __metadata: linkType: hard "@cspell/dict-aws@npm:^4.0.10": - version: 4.0.16 - resolution: "@cspell/dict-aws@npm:4.0.16" - checksum: 10/2b2e48a2d06f9c91b9422428247ae265c7b226bec98ec675d743193c1bbe2244c2fc48e97fe109cee7db0619cfe51ea9c0d319602b2c5c483a89eeaa610bc779 + version: 4.0.17 + resolution: "@cspell/dict-aws@npm:4.0.17" + checksum: 10/9f724e385ffe76a04cb3cd081bf301191c56b31273f5619507ca6baabf8fa00fbe27571d66e89016cd0bbc68cbf97a9920b5247e90e73a60e2eeedb87e1b86c6 languageName: node linkType: hard @@ -2052,9 +1881,9 @@ __metadata: linkType: hard "@cspell/dict-companies@npm:^3.1.15": - version: 3.2.7 - resolution: "@cspell/dict-companies@npm:3.2.7" - checksum: 10/b2754f6328c11d9d17ddbaa217a358280cf5a2b73378e161e62f70c50d51a67d456b6bdaedd63af8024cae52bca96b27a7d052d718d4449de47b2b01113e629b + version: 3.2.10 + resolution: "@cspell/dict-companies@npm:3.2.10" + checksum: 10/e3e6be70cef9be8fa7da86ed2ce1150545062175f6335d30de9bcac2cf509fbfa82d5428333129be823698870df48f78abbff4c6ee50b465efb1951adaa4cdf3 languageName: node linkType: hard @@ -2073,51 +1902,51 @@ __metadata: linkType: hard "@cspell/dict-csharp@npm:^4.0.6": - version: 4.0.7 - resolution: "@cspell/dict-csharp@npm:4.0.7" - checksum: 10/bfc429fc40585905a1b8754eaf1c70fd59911250364bc8ec5f1ce81dfb38cfb27421a8ed4052d81b40832dfb26de8d4e63656a200c5a6459ad0fa9da8e8bb6ae + version: 4.0.8 + resolution: "@cspell/dict-csharp@npm:4.0.8" + checksum: 10/5acb41c32cdce8c3bda7ea74dfb833db92c403813a57373b8781d4aaede005be1342ad946a16139d47162f2405b90869eee477fc033b7cc10d731bb3ff9547db languageName: node linkType: hard "@cspell/dict-css@npm:^4.0.17": - version: 4.0.18 - resolution: "@cspell/dict-css@npm:4.0.18" - checksum: 10/1d829b7e2b3bb7bea5daca179d4de847b7aac761a68984783b226132c986e42504cf4d6410ae69b3103afa4779859c2860810b5373d6bc80709637128c7d397c + version: 4.0.19 + resolution: "@cspell/dict-css@npm:4.0.19" + checksum: 10/293edf2d26b33d85ea5828b499e77e5a6a471f7c8ac754adf7c574dac62363f10d46d1de47afc20b8904554212834b671bbd8e98669e59908856ca1c46c787db languageName: node linkType: hard "@cspell/dict-dart@npm:^2.3.0": - version: 2.3.1 - resolution: "@cspell/dict-dart@npm:2.3.1" - checksum: 10/79764a0499a0267c34febc368ae8dfb47ebe58a79373e48070581a3a8095102a71e8cb88711b7dd431ca559d0d0554803ca2d53051e325903459a670f56c984f + version: 2.3.2 + resolution: "@cspell/dict-dart@npm:2.3.2" + checksum: 10/d4bf20c272110ad6537824199de1224447b798abf225fd3af2b73d8eca4d9e64eac3c2580940d93b07d74744d8e35aea7f2f547ac3ef3e73b0499bf36bb50f74 languageName: node linkType: hard -"@cspell/dict-data-science@npm:^2.0.12, @cspell/dict-data-science@npm:^2.0.8": - version: 2.0.12 - resolution: "@cspell/dict-data-science@npm:2.0.12" - checksum: 10/2eb3492c9de93a5fea57f81bb3daac80c5174dbac5ae981782d27b56438fbc10d96a06973fa07051e5eaf8489a5ce02c37dce5158d601388d5df85c6c0a2b055 +"@cspell/dict-data-science@npm:^2.0.13, @cspell/dict-data-science@npm:^2.0.8": + version: 2.0.13 + resolution: "@cspell/dict-data-science@npm:2.0.13" + checksum: 10/d5aee1a87dace4a401ebe7d9327773a8b21f1e0ae5ce4307f302d60857539f964de334a98c772d6dd88c60e3f3056b9bdd3774fe1bcacb2dbaca9160aef52725 languageName: node linkType: hard "@cspell/dict-django@npm:^4.1.4": - version: 4.1.5 - resolution: "@cspell/dict-django@npm:4.1.5" - checksum: 10/cc0181e0e8e9ede5b4efc11c5a141cf54122721b204c956a7e270573adf1e8ca14e6f80e51b5c071154da17188056b5f4cc3da1f68f84ff2162b62abef3e3ebc + version: 4.1.6 + resolution: "@cspell/dict-django@npm:4.1.6" + checksum: 10/0898787758a64de3a9b9a74febc1e789de30e01403c3c87fe4d99ce992419113297a4a6ddf982c3504f51c4382dd60467288da63cc87e27506f3daba8c03b15a languageName: node linkType: hard "@cspell/dict-docker@npm:^1.1.13": - version: 1.1.16 - resolution: "@cspell/dict-docker@npm:1.1.16" - checksum: 10/dc126d94203fa23c0a9d1466fa634b1ee4b4770d5762dbbbc868198318cf8d860de26d1632700a3e613eb81d27d0e46c72cbf74ba0cca5cca0032dbf056ae472 + version: 1.1.17 + resolution: "@cspell/dict-docker@npm:1.1.17" + checksum: 10/438cc04e0ebcab53b49cecee7ae02c743733b8ec7df4b75075c31574f764aa60353a3cb0db3fb8c80271339d4fc0c1d05864bb6b1ac14891cacfd4098f0b0dce languageName: node linkType: hard "@cspell/dict-dotnet@npm:^5.0.9": - version: 5.0.10 - resolution: "@cspell/dict-dotnet@npm:5.0.10" - checksum: 10/ce9d101cfd1af390e49ac114dd576172a932e95a5e4590289a246477ff6d14711efa5dd794188affed13c45050e0ecda4cf95cd26019c5c04dce33580effdc88 + version: 5.0.12 + resolution: "@cspell/dict-dotnet@npm:5.0.12" + checksum: 10/a49d2f284ce3c3209b9a121dbae174121dc4285300fd8f3babb69da38d2edbabffcbf4c6029e598a2a760be14c29805f57f81c49909ffaa3a3416f0358eb512f languageName: node linkType: hard @@ -2129,9 +1958,9 @@ __metadata: linkType: hard "@cspell/dict-en-common-misspellings@npm:^2.0.10": - version: 2.1.8 - resolution: "@cspell/dict-en-common-misspellings@npm:2.1.8" - checksum: 10/fe8764a14b28269956650092eea34df94ce4e903ff5178e3a504283414cc2ae3b2afc2e2716317d2adde6fe13bc5189eae3577901921f5ef462af1ac2a898b8c + version: 2.1.12 + resolution: "@cspell/dict-en-common-misspellings@npm:2.1.12" + checksum: 10/2f3d608c241694c673cfd0191274554270c82ca18953d84a3224fe7122fe5cb68261ab06f13ff90466266da4835ce1a2f266790f67a19b8f2f1928b3a1d22354 languageName: node linkType: hard @@ -2143,16 +1972,16 @@ __metadata: linkType: hard "@cspell/dict-en_us@npm:^4.4.3": - version: 4.4.24 - resolution: "@cspell/dict-en_us@npm:4.4.24" - checksum: 10/b7a6525d5c6153610e8722266d7d8cbbf4818c741992977a4b8099b0ff7196824b2bb509deba9de66fc2414479bfc4db2f41640e9748e048edd99058aaae2a42 + version: 4.4.29 + resolution: "@cspell/dict-en_us@npm:4.4.29" + checksum: 10/537f254cb34484f6b44a9c935ad8ad32924c950b338c23ee2494c26a65b8eb06cfa16452ef5bf3102322ec4be3a55563a582d8efd3f651b64c41b5ee16f90738 languageName: node linkType: hard "@cspell/dict-filetypes@npm:^3.0.11": - version: 3.0.14 - resolution: "@cspell/dict-filetypes@npm:3.0.14" - checksum: 10/545eee0cb4a80491a1fbb03b964d31569379a775528b090c992ba72d3ae6fe4dfae5c484b5a50226f8e52979238875476c688937096486bebfa0c8f3a72da499 + version: 3.0.16 + resolution: "@cspell/dict-filetypes@npm:3.0.16" + checksum: 10/30f05d175b96cd4bb6d9504af929255987aa922e29223eb3fc00c712a375c0843903935b8c648fe514011904386b7c652ac87a197aa8b65f47695a6e96d3e293 languageName: node linkType: hard @@ -2178,9 +2007,9 @@ __metadata: linkType: hard "@cspell/dict-fullstack@npm:^3.2.6": - version: 3.2.7 - resolution: "@cspell/dict-fullstack@npm:3.2.7" - checksum: 10/cdb69a00663a34cb611c8f3e8f26651a0aa8e50d59de6ebb85724cfdd239382398ca35636bbe64f3573e1da795c15ace297dbf47cb83747439b109f16bab593d + version: 3.2.8 + resolution: "@cspell/dict-fullstack@npm:3.2.8" + checksum: 10/d38cd753542866308ef31b586bc2b58777ff1b08dc094256cebe10b31acf2820614966c3e3391897ea3f5a1958b80499743495fa9b33a0be034070ae21f87781 languageName: node linkType: hard @@ -2192,16 +2021,16 @@ __metadata: linkType: hard "@cspell/dict-git@npm:^3.0.4": - version: 3.0.7 - resolution: "@cspell/dict-git@npm:3.0.7" - checksum: 10/bf88770be43c1bd4c2bea6737edd20939a78b7c0e9ff28e06490394f056637a27f49a6716e0f6ed845eaf2fc1afa85d4bd7cfafb56e3d4dfeb491b49669fd376 + version: 3.1.0 + resolution: "@cspell/dict-git@npm:3.1.0" + checksum: 10/d64ac12882bfff6f02755bf4eaf47d9e340edcf36867a83d5df106dba6e13ab7ccc519c48f12f8312324a4ac674ff468a8499b4ebd9cf264af97f545597614eb languageName: node linkType: hard "@cspell/dict-golang@npm:^6.0.20": - version: 6.0.24 - resolution: "@cspell/dict-golang@npm:6.0.24" - checksum: 10/4c1b4ac025d389759458ab31e73b9cb7a84fa54147f97a71b93f06e69330d9b02af1ba36a4828af1891049e3bb11f659f2c2da53a947dbfe0235ed1d5d26faed + version: 6.0.26 + resolution: "@cspell/dict-golang@npm:6.0.26" + checksum: 10/b229f7e5b78b2839eed501e37719546cee787426f323a4a62feaec1db15422482b8b4d97a126c0c6342c2bf1c6f6dc12ac4e05aa245de4b768c5753d2affe9d4 languageName: node linkType: hard @@ -2220,16 +2049,16 @@ __metadata: linkType: hard "@cspell/dict-html-symbol-entities@npm:^4.0.3": - version: 4.0.4 - resolution: "@cspell/dict-html-symbol-entities@npm:4.0.4" - checksum: 10/1898fc84496526e9c54e125369f3c87412839aee3e00da8aee3fee1c1165d4f2e7944833398b08f07ee58e817999af462f254e9ce06b06323fd665cbe6d01a3e + version: 4.0.5 + resolution: "@cspell/dict-html-symbol-entities@npm:4.0.5" + checksum: 10/050f57152c873bf9725dfec3e7c6b6ce6a0c178ee084fcad48be186bcc965caabf10462d47fc3c9adcae8d5d8d91dc3cf739ab913d2ed7f5f50abec215e9851b languageName: node linkType: hard "@cspell/dict-html@npm:^4.0.11": - version: 4.0.13 - resolution: "@cspell/dict-html@npm:4.0.13" - checksum: 10/856a73c5888d1d4904c9403f7852ec5ab9ac1fb8683af838c5be136691095739f892110974f4266c68f61f51c377b907d0404b532523cbf83ed2b38d330dfd2f + version: 4.0.14 + resolution: "@cspell/dict-html@npm:4.0.14" + checksum: 10/b6047177b6012d467926c27777391cc3f6ebc522c6f4dce01e58a8100dfac61d5cecefc59ba5994728d41c7480d7c9d994d0f8673197740526f6afbed544094a languageName: node linkType: hard @@ -2290,42 +2119,42 @@ __metadata: linkType: hard "@cspell/dict-markdown@npm:^2.0.10": - version: 2.0.13 - resolution: "@cspell/dict-markdown@npm:2.0.13" + version: 2.0.14 + resolution: "@cspell/dict-markdown@npm:2.0.14" peerDependencies: - "@cspell/dict-css": ^4.0.18 - "@cspell/dict-html": ^4.0.13 - "@cspell/dict-html-symbol-entities": ^4.0.4 + "@cspell/dict-css": ^4.0.19 + "@cspell/dict-html": ^4.0.14 + "@cspell/dict-html-symbol-entities": ^4.0.5 "@cspell/dict-typescript": ^3.2.3 - checksum: 10/7f1d131301ff7128b974ab35498fe2842584626c2c8f45a11a30fc245439417caaa7a615611ce324f834648da3593fd5c305999af157d317973c2f2c0a2a8849 + checksum: 10/7ca267a7089bcf63aebb94b2934220aa81e1b747427e7c7998fc6852818a726da8ccaf380e0b76314cfc57504308446361dc6f1daef3cd73f3d60479563c636a languageName: node linkType: hard "@cspell/dict-monkeyc@npm:^1.0.10": - version: 1.0.11 - resolution: "@cspell/dict-monkeyc@npm:1.0.11" - checksum: 10/6e896fd9596261ece639cdad4d03291f4faf92ed27d9257aae1f34f075b13a865287734d170a2e9ea228ac2b7de03eaaec795284b945c8a96ac24684ad56ba7a + version: 1.0.12 + resolution: "@cspell/dict-monkeyc@npm:1.0.12" + checksum: 10/9c952968b50a44d5860f9d9ebce49a71d433f1411d7a074711db176eedaaaf810c0c01bb5e32bc66bb08953b8d4a2c8a19bef394407603d18023d1242a882470 languageName: node linkType: hard "@cspell/dict-node@npm:^5.0.7": - version: 5.0.8 - resolution: "@cspell/dict-node@npm:5.0.8" - checksum: 10/6a008c8b82021e24124f619efdd485683f1dfb3c37ec4fe2b645e8d8002270c221869a19a5e2d17a978acb8d60292e5c5dd056aa0dd35b3e4fedf87e7b8afae4 + version: 5.0.9 + resolution: "@cspell/dict-node@npm:5.0.9" + checksum: 10/b934c9c94e230742a612f3133cc81a62af4073e2f8c50855d37e90bad7860200600b8492988d70f3ba13a055e357554a4abf71f0a437650ae24e5b300d6615ee languageName: node linkType: hard "@cspell/dict-npm@npm:^5.2.1": - version: 5.2.25 - resolution: "@cspell/dict-npm@npm:5.2.25" - checksum: 10/e25141f0f52567dbe09263dd624966fe27d472ccef20f2d5ffdd2b844febe9285d05d2db4a5e501bf075557ba01780807f2ef0c2e6d1f44d095d2420abfd0a22 + version: 5.2.35 + resolution: "@cspell/dict-npm@npm:5.2.35" + checksum: 10/c98bddeb07203be6be2d41dff724779c35459e1e1a1f9c552dd5224b8862a21cb7c13fd32236ba62ad20df0f99b05f8d409a2330c047aaae2ba94dbdf8312984 languageName: node linkType: hard "@cspell/dict-php@npm:^4.0.14": - version: 4.1.0 - resolution: "@cspell/dict-php@npm:4.1.0" - checksum: 10/64ab278a581822381335df5dcf830c449a63e5a5fba5c0bbea4f43a36bd8039b3323392b386be2fc5b751bd6fef0061b338d5ae28d7c12214f2c2def0dcce260 + version: 4.1.1 + resolution: "@cspell/dict-php@npm:4.1.1" + checksum: 10/e81bed158736ea6f2db8d9e116c16cc3f46b455bb3ed673a100166cfee340be38d0cd9bc3f39c5590364c0bb2bd472755f5e4c65a20787d2d7df749ff43f49d1 languageName: node linkType: hard @@ -2337,18 +2166,18 @@ __metadata: linkType: hard "@cspell/dict-public-licenses@npm:^2.0.13": - version: 2.0.15 - resolution: "@cspell/dict-public-licenses@npm:2.0.15" - checksum: 10/a8580441c964a8c3ce4c4fed74189fa5752eb98e56baeb2608753e4deefb202c8f9d9f1869e17c5f2f1fc7bb1976854525ac50750109bb377b4cfa0a4eb12fe2 + version: 2.0.16 + resolution: "@cspell/dict-public-licenses@npm:2.0.16" + checksum: 10/1f227d3d083bdec495d19050347897cf2fe58d3c77143d233a41b300e00981790b46361a651eb592ff60dc8bc772db3f16c0c89cc295ea2b446237031f48efb1 languageName: node linkType: hard "@cspell/dict-python@npm:^4.2.17": - version: 4.2.23 - resolution: "@cspell/dict-python@npm:4.2.23" + version: 4.2.25 + resolution: "@cspell/dict-python@npm:4.2.25" dependencies: - "@cspell/dict-data-science": "npm:^2.0.12" - checksum: 10/ded89d5fd843bf1fe0e3ae3a7386db63c66c00a90d5a122fcff4206cb4c6dec9dfa463fcc841553a3d93b102da62ff9a03aaf359876cc9aec5e2a3c897f04f9c + "@cspell/dict-data-science": "npm:^2.0.13" + checksum: 10/fcbbc2db9a1ff01e16e33df10c1f6575e65eece8b13b1ef3a45481aeaafa6250ad28358a6ec787d4d7a6061907b338c7adb52bc882502cd6ae8904d20b60f10d languageName: node linkType: hard @@ -2360,23 +2189,23 @@ __metadata: linkType: hard "@cspell/dict-ruby@npm:^5.0.8": - version: 5.0.9 - resolution: "@cspell/dict-ruby@npm:5.0.9" - checksum: 10/57a752ff19f9484a042e859254eb6d487b46266f374faeb17e257b3583d94fbd908c0bd308e2a7d3b0169839cdd5a6d9fc12563955b69f26e8667acc43fbfd53 + version: 5.1.0 + resolution: "@cspell/dict-ruby@npm:5.1.0" + checksum: 10/afe89daa54a6c3be62686f4f74fe924dabb4077e9aead71bf26e211885d068066df414857f27da258a130e2e06ecb5eac394225bc120607bebcb08746b6188f9 languageName: node linkType: hard "@cspell/dict-rust@npm:^4.0.11": - version: 4.0.12 - resolution: "@cspell/dict-rust@npm:4.0.12" - checksum: 10/ba928f5538e09887f715713a6899d09ed7b1663c85d33c766adbaf22a95e01fa71d3736d5ff17c3c0f0a387c43756702fb1529e62e714ddec0df6cde9617ad20 + version: 4.1.2 + resolution: "@cspell/dict-rust@npm:4.1.2" + checksum: 10/f618727d8c3af5f3d5e74eca04e9b0685f525d217206c40faf9803aa4fd7b9defc9b5174bff17411ef2d935df7ebe66cb2e38f34b6887a118908e10a5c834376 languageName: node linkType: hard "@cspell/dict-scala@npm:^5.0.7": - version: 5.0.8 - resolution: "@cspell/dict-scala@npm:5.0.8" - checksum: 10/f9d8d748a66cea454fbe3d6dc51dde03d58cf2a28a4a64698ac4022a91b65503b2b6f74206421488d4396949d9b09477699734ca05e28a79a9c2e6a39f65e2c5 + version: 5.0.9 + resolution: "@cspell/dict-scala@npm:5.0.9" + checksum: 10/9b095e052e4c72fe0d0657f11f654cac6e8bbf6f6ac2043e8f1de8641aa7cad46b94416d70aa9dbd8556b1c1cfd0ac522868867e911a707e7b0e2cbcfcbfb5e2 languageName: node linkType: hard @@ -2388,9 +2217,9 @@ __metadata: linkType: hard "@cspell/dict-software-terms@npm:^5.0.5": - version: 5.1.15 - resolution: "@cspell/dict-software-terms@npm:5.1.15" - checksum: 10/7bcdaf626936c85163b4e0153a95d5318da207446a6c9f2ccd705a3f0a49cada14ec678153f9b691f2fbcb2f702f54828c3ce2d4c193d319ebd7407684dc6f30 + version: 5.1.23 + resolution: "@cspell/dict-software-terms@npm:5.1.23" + checksum: 10/69f9149df10071ae0901d71f01a6475f329cd2571973f6d356ebf210e0405a935ec28d5b07d58eff0a861a58e59406c96e7f608ed677ec1126ade90cf6d9f118 languageName: node linkType: hard @@ -2482,15 +2311,15 @@ __metadata: linkType: hard "@dr.pogodin/react-native-fs@npm:^2.36.2": - version: 2.36.2 - resolution: "@dr.pogodin/react-native-fs@npm:2.36.2" + version: 2.37.0 + resolution: "@dr.pogodin/react-native-fs@npm:2.37.0" dependencies: buffer: "npm:^6.0.3" http-status-codes: "npm:^2.3.0" peerDependencies: react: "*" react-native: "*" - checksum: 10/6a4b1c324386c455e01ccf45daf80474364079bc6495f0a65c1468e4e15607951754b81d9d720fb635a8caba5ba94b34719d0140357ce8e168172583e09156d4 + checksum: 10/c66c03a9e814c0c4e3c9b575bc1dc7aedee18e815f45860541b94935cbfdfae8ccb71964c359c420498d120b00a1b997bf5e4739da58a8d681ad33df1d76ef03 languageName: node linkType: hard @@ -2532,13 +2361,13 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.9.0 - resolution: "@eslint-community/eslint-utils@npm:4.9.0" + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10/89b1eb3137e14c379865e60573f524fcc0ee5c4b0c7cd21090673e75e5a720f14b92f05ab2d02704c2314b67e67b6f96f3bb209ded6b890ced7b667aa4bf1fa2 + checksum: 10/863b5467868551c9ae34d03eefe634633d08f623fc7b19d860f8f26eb6f303c1a5934253124163bee96181e45ed22bf27473dccc295937c3078493a4a8c9eddd languageName: node linkType: hard @@ -2583,91 +2412,9 @@ __metadata: languageName: node linkType: hard -"@expo/cli@npm:54.0.18": - version: 54.0.18 - resolution: "@expo/cli@npm:54.0.18" - dependencies: - "@0no-co/graphql.web": "npm:^1.0.8" - "@expo/code-signing-certificates": "npm:^0.0.5" - "@expo/config": "npm:~12.0.11" - "@expo/config-plugins": "npm:~54.0.3" - "@expo/devcert": "npm:^1.2.1" - "@expo/env": "npm:~2.0.8" - "@expo/image-utils": "npm:^0.8.8" - "@expo/json-file": "npm:^10.0.8" - "@expo/metro": "npm:~54.1.0" - "@expo/metro-config": "npm:~54.0.10" - "@expo/osascript": "npm:^2.3.8" - "@expo/package-manager": "npm:^1.9.9" - "@expo/plist": "npm:^0.4.8" - "@expo/prebuild-config": "npm:^54.0.7" - "@expo/schema-utils": "npm:^0.1.8" - "@expo/spawn-async": "npm:^1.7.2" - "@expo/ws-tunnel": "npm:^1.0.1" - "@expo/xcpretty": "npm:^4.3.0" - "@react-native/dev-middleware": "npm:0.81.5" - "@urql/core": "npm:^5.0.6" - "@urql/exchange-retry": "npm:^1.3.0" - accepts: "npm:^1.3.8" - arg: "npm:^5.0.2" - better-opn: "npm:~3.0.2" - bplist-creator: "npm:0.1.0" - bplist-parser: "npm:^0.3.1" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.3.0" - compression: "npm:^1.7.4" - connect: "npm:^3.7.0" - debug: "npm:^4.3.4" - env-editor: "npm:^0.4.1" - expo-server: "npm:^1.0.5" - freeport-async: "npm:^2.0.0" - getenv: "npm:^2.0.0" - glob: "npm:^13.0.0" - lan-network: "npm:^0.1.6" - minimatch: "npm:^9.0.0" - node-forge: "npm:^1.3.1" - npm-package-arg: "npm:^11.0.0" - ora: "npm:^3.4.0" - picomatch: "npm:^3.0.1" - pretty-bytes: "npm:^5.6.0" - pretty-format: "npm:^29.7.0" - progress: "npm:^2.0.3" - prompts: "npm:^2.3.2" - qrcode-terminal: "npm:0.11.0" - require-from-string: "npm:^2.0.2" - requireg: "npm:^0.2.2" - resolve: "npm:^1.22.2" - resolve-from: "npm:^5.0.0" - resolve.exports: "npm:^2.0.3" - semver: "npm:^7.6.0" - send: "npm:^0.19.0" - slugify: "npm:^1.3.4" - source-map-support: "npm:~0.5.21" - stacktrace-parser: "npm:^0.1.10" - structured-headers: "npm:^0.4.1" - tar: "npm:^7.5.2" - terminal-link: "npm:^2.1.1" - undici: "npm:^6.18.2" - wrap-ansi: "npm:^7.0.0" - ws: "npm:^8.12.1" - peerDependencies: - expo: "*" - expo-router: "*" - react-native: "*" - peerDependenciesMeta: - expo-router: - optional: true - react-native: - optional: true - bin: - expo-internal: build/bin/cli - checksum: 10/9a84554d120759be74ee84e2d9e31d7279e67c5992ace7ba51871815169b552f3b30cb6715a9c3685717bde32756e45dbeae6d5200f75b7d2ea877f5f80172e3 - languageName: node - linkType: hard - -"@expo/cli@npm:54.0.22": - version: 54.0.22 - resolution: "@expo/cli@npm:54.0.22" +"@expo/cli@npm:54.0.23": + version: 54.0.23 + resolution: "@expo/cli@npm:54.0.23" dependencies: "@0no-co/graphql.web": "npm:^1.0.8" "@expo/code-signing-certificates": "npm:^0.0.6" @@ -2743,17 +2490,7 @@ __metadata: optional: true bin: expo-internal: build/bin/cli - checksum: 10/c20c89f5737e1f5b055567d6b560a920ea52ed17cab73fd5ab59d8f1640c62f7a9915d9d69eb0c5ebc85bd04505e3ac32ba329ab8f1e15da8a9fcd6c6dd8d808 - languageName: node - linkType: hard - -"@expo/code-signing-certificates@npm:^0.0.5": - version: 0.0.5 - resolution: "@expo/code-signing-certificates@npm:0.0.5" - dependencies: - node-forge: "npm:^1.2.1" - nullthrows: "npm:^1.1.1" - checksum: 10/6783721e2eafff5547500eaf99bee54641f076dc7221e52b48f1494f993040d779fe13ae7d95d3874c483eb545cafbf692315e2da0b0fc24e7a477b84e289617 + checksum: 10/9a41c55aa7f628ad44048c9f41cd8d7f4f73a8bfc01adaa956ddaae87d332ae979eadb52bdab894ef5b1c9b5722486ccdb999057d8b9eed392c827f476feb79f languageName: node linkType: hard @@ -2766,28 +2503,6 @@ __metadata: languageName: node linkType: hard -"@expo/config-plugins@npm:~54.0.3": - version: 54.0.3 - resolution: "@expo/config-plugins@npm:54.0.3" - dependencies: - "@expo/config-types": "npm:^54.0.9" - "@expo/json-file": "npm:~10.0.7" - "@expo/plist": "npm:^0.4.7" - "@expo/sdk-runtime-versions": "npm:^1.0.0" - chalk: "npm:^4.1.2" - debug: "npm:^4.3.5" - getenv: "npm:^2.0.0" - glob: "npm:^13.0.0" - resolve-from: "npm:^5.0.0" - semver: "npm:^7.5.4" - slash: "npm:^3.0.0" - slugify: "npm:^1.6.6" - xcode: "npm:^3.0.1" - xml2js: "npm:0.6.0" - checksum: 10/5eb33583eba8ba87ad19f4775749864fd72fe251be1b9bb1b765f0499fd36d21a7dd936f53c36368454726b72b0a8ea99b1e315bd6c005de1f4541bafb57d1c6 - languageName: node - linkType: hard - "@expo/config-plugins@npm:~54.0.4": version: 54.0.4 resolution: "@expo/config-plugins@npm:54.0.4" @@ -2817,34 +2532,6 @@ __metadata: languageName: node linkType: hard -"@expo/config-types@npm:^54.0.9": - version: 54.0.9 - resolution: "@expo/config-types@npm:54.0.9" - checksum: 10/572ddcf9b8a3d785c0cb0275fbcd2cc4f7004191cda5fa387cf2babfcea79ae04b9d68bf459a9b43538ad35ce09955dfa5e6ebafb6050758cd596cb6e61885b8 - languageName: node - linkType: hard - -"@expo/config@npm:~12.0.11": - version: 12.0.11 - resolution: "@expo/config@npm:12.0.11" - dependencies: - "@babel/code-frame": "npm:~7.10.4" - "@expo/config-plugins": "npm:~54.0.3" - "@expo/config-types": "npm:^54.0.9" - "@expo/json-file": "npm:^10.0.7" - deepmerge: "npm:^4.3.1" - getenv: "npm:^2.0.0" - glob: "npm:^13.0.0" - require-from-string: "npm:^2.0.2" - resolve-from: "npm:^5.0.0" - resolve-workspace-root: "npm:^2.0.0" - semver: "npm:^7.6.0" - slugify: "npm:^1.3.4" - sucrase: "npm:~3.35.1" - checksum: 10/c749457b50a5c2531c5fb7d29c343a7761081f7218199ab65524ff8ab9edb36f5903cde6a35fbd95b792e537a7c4183362bb9061a1bdedff8aae4d731171e4f5 - languageName: node - linkType: hard - "@expo/config@npm:~12.0.13": version: 12.0.13 resolution: "@expo/config@npm:12.0.13" @@ -2893,16 +2580,16 @@ __metadata: languageName: node linkType: hard -"@expo/env@npm:~2.0.7, @expo/env@npm:~2.0.8": - version: 2.0.8 - resolution: "@expo/env@npm:2.0.8" +"@expo/env@npm:~2.0.8": + version: 2.0.11 + resolution: "@expo/env@npm:2.0.11" dependencies: chalk: "npm:^4.0.0" debug: "npm:^4.3.4" dotenv: "npm:~16.4.5" dotenv-expand: "npm:~11.0.6" getenv: "npm:^2.0.0" - checksum: 10/d440e0c7d8f4d438a9f82794435c315b63fc18a9b251ee7238f150255634d2786874cd85ff78589eb0488125d41d57a9b055fb1a25c4e06a08a0330d809e78cd + checksum: 10/bfb307d6b35d47c58f82424c85543325370bbdc0f303cdd4ddfe5d6854e0386ad72166fec6e1da633fc7cb3b0915d7c40642c49773ae31e6faed13569d1b601c languageName: node linkType: hard @@ -2928,8 +2615,8 @@ __metadata: linkType: hard "@expo/image-utils@npm:^0.8.8": - version: 0.8.8 - resolution: "@expo/image-utils@npm:0.8.8" + version: 0.8.12 + resolution: "@expo/image-utils@npm:0.8.12" dependencies: "@expo/spawn-async": "npm:^1.7.2" chalk: "npm:^4.0.0" @@ -2937,65 +2624,18 @@ __metadata: jimp-compact: "npm:0.16.1" parse-png: "npm:^2.1.0" resolve-from: "npm:^5.0.0" - resolve-global: "npm:^1.0.0" semver: "npm:^7.6.0" - temp-dir: "npm:~2.0.0" - unique-string: "npm:~2.0.0" - checksum: 10/f7a2d81785e81e3ba5cabf1ae9acf3923b9320345b1761dfd6ebaaa1dc77f7b08e5a86aead2657223d47b65dec96fb70f012b149149dbf202de4809e5920baf5 - languageName: node - linkType: hard - -"@expo/json-file@npm:^10.0.7, @expo/json-file@npm:^10.0.8, @expo/json-file@npm:~10.0.7": - version: 10.0.8 - resolution: "@expo/json-file@npm:10.0.8" - dependencies: - "@babel/code-frame": "npm:~7.10.4" - json5: "npm:^2.2.3" - checksum: 10/d744edb72ea5a52d8829357fb2adb93be3181a522e3b6b8dc3a32a448c9c76eca603f8a390f1a126f4b16c21a470e0c1b2dde0bcd2cb799d97178e48df93a3b3 - languageName: node - linkType: hard - -"@expo/json-file@npm:^10.0.9, @expo/json-file@npm:~10.0.8": - version: 10.0.9 - resolution: "@expo/json-file@npm:10.0.9" - dependencies: - "@babel/code-frame": "npm:~7.10.4" - json5: "npm:^2.2.3" - checksum: 10/40c758fcdb37b35aa5ca43acd2c882763f073672ccaf53038bf94100a5c511ff90e0d1f900a4c49394ae968bdbabbedfc39f961b7d60a47abecb8ec55c6863da + checksum: 10/fb474558bb4009f39c640fb028a57cfae721e52dae0085bb2505390c6968d30cdc82eb195c15de82f30879c710104c08e60120de8f49613183437701f19dd363 languageName: node linkType: hard -"@expo/metro-config@npm:54.0.10, @expo/metro-config@npm:~54.0.10": - version: 54.0.10 - resolution: "@expo/metro-config@npm:54.0.10" +"@expo/json-file@npm:^10.0.12, @expo/json-file@npm:^10.0.8, @expo/json-file@npm:~10.0.8": + version: 10.0.12 + resolution: "@expo/json-file@npm:10.0.12" dependencies: "@babel/code-frame": "npm:^7.20.0" - "@babel/core": "npm:^7.20.0" - "@babel/generator": "npm:^7.20.5" - "@expo/config": "npm:~12.0.11" - "@expo/env": "npm:~2.0.7" - "@expo/json-file": "npm:~10.0.7" - "@expo/metro": "npm:~54.1.0" - "@expo/spawn-async": "npm:^1.7.2" - browserslist: "npm:^4.25.0" - chalk: "npm:^4.1.0" - debug: "npm:^4.3.2" - dotenv: "npm:~16.4.5" - dotenv-expand: "npm:~11.0.6" - getenv: "npm:^2.0.0" - glob: "npm:^13.0.0" - hermes-parser: "npm:^0.29.1" - jsc-safe-url: "npm:^0.2.4" - lightningcss: "npm:^1.30.1" - minimatch: "npm:^9.0.0" - postcss: "npm:~8.4.32" - resolve-from: "npm:^5.0.0" - peerDependencies: - expo: "*" - peerDependenciesMeta: - expo: - optional: true - checksum: 10/4a2fc2eea0cdc88f52d29d0a70fdb315bdbcc7b5300cb64afcc6a2a756db01449b3a60e401fc662ea13b441dc2287d1b492524ac7e6dece0c23d6d7105e2ebdf + json5: "npm:^2.2.3" + checksum: 10/547f5b9d1c5b10147ef0780d079d853e3b2e8ec0b09080420cb48592060a4399308622fd205aaec5e157c41d37c5b69dffa9aaa96c01fe444b0258f78c3bb85f languageName: node linkType: hard @@ -3053,26 +2693,6 @@ __metadata: languageName: node linkType: hard -"@expo/metro@npm:~54.1.0": - version: 54.1.0 - resolution: "@expo/metro@npm:54.1.0" - dependencies: - metro: "npm:0.83.2" - metro-babel-transformer: "npm:0.83.2" - metro-cache: "npm:0.83.2" - metro-cache-key: "npm:0.83.2" - metro-config: "npm:0.83.2" - metro-core: "npm:0.83.2" - metro-file-map: "npm:0.83.2" - metro-resolver: "npm:0.83.2" - metro-runtime: "npm:0.83.2" - metro-source-map: "npm:0.83.2" - metro-transform-plugins: "npm:0.83.2" - metro-transform-worker: "npm:0.83.2" - checksum: 10/219d1d3b94faa0cfa2af94a3c9c307e63bc1ede1e96da6d2e324c02275b882bd2a814730a4ab1842f8f0117316a0e66e0f02f83bba5620397096b5562f28da51 - languageName: node - linkType: hard - "@expo/metro@npm:~54.2.0": version: 54.2.0 resolution: "@expo/metro@npm:54.2.0" @@ -3096,44 +2716,29 @@ __metadata: linkType: hard "@expo/osascript@npm:^2.3.8": - version: 2.3.8 - resolution: "@expo/osascript@npm:2.3.8" + version: 2.4.2 + resolution: "@expo/osascript@npm:2.4.2" dependencies: "@expo/spawn-async": "npm:^1.7.2" - exec-async: "npm:^2.2.0" - checksum: 10/153ddb710870a29a4f69d2b6a42a492bf03f9707f8bc2c8929540429b3844c0ff3ccdb8f8ff78ee886fa54c3e8a584f7ca1d9718322503fca7c325558f121db6 + checksum: 10/5609b926bd68120b6a01edea0c7b14d4fa9fcd454bbcb49b89988f7acdb540f3b9c1c133acbbd3f9cd6a6937ce2a950c9cdde2a98ec8769d8a8b1481666a67d9 languageName: node linkType: hard "@expo/package-manager@npm:^1.9.10": - version: 1.10.0 - resolution: "@expo/package-manager@npm:1.10.0" - dependencies: - "@expo/json-file": "npm:^10.0.9" - "@expo/spawn-async": "npm:^1.7.2" - chalk: "npm:^4.0.0" - npm-package-arg: "npm:^11.0.0" - ora: "npm:^3.4.0" - resolve-workspace-root: "npm:^2.0.0" - checksum: 10/61dc892764f886fc9bf4b957fbc8b686fc941f2ceb008428752070f61cd44a40bd4d48bef594b3169eacb389d9e44f86c6b0003da8ef1c8ab3948dfd88875328 - languageName: node - linkType: hard - -"@expo/package-manager@npm:^1.9.9": - version: 1.9.9 - resolution: "@expo/package-manager@npm:1.9.9" + version: 1.10.3 + resolution: "@expo/package-manager@npm:1.10.3" dependencies: - "@expo/json-file": "npm:^10.0.8" + "@expo/json-file": "npm:^10.0.12" "@expo/spawn-async": "npm:^1.7.2" chalk: "npm:^4.0.0" npm-package-arg: "npm:^11.0.0" ora: "npm:^3.4.0" resolve-workspace-root: "npm:^2.0.0" - checksum: 10/d39c90599a8f94fcb93a274e6505df60872ef1f574fbb29e653de622a93536db926e3f9219ac4e8249c8380143518b92e95736a4aa0bed220bf33114206974fb + checksum: 10/cac9008ec362af0b54ebf55cb64514e3f4258423f0be9a0d1adb2815380e912783be78750c898e393f7bebe7a1b8288d449052b0ce9f790400d185a29b8274bd languageName: node linkType: hard -"@expo/plist@npm:^0.4.7, @expo/plist@npm:^0.4.8": +"@expo/plist@npm:^0.4.8": version: 0.4.8 resolution: "@expo/plist@npm:0.4.8" dependencies: @@ -3144,26 +2749,6 @@ __metadata: languageName: node linkType: hard -"@expo/prebuild-config@npm:^54.0.7": - version: 54.0.7 - resolution: "@expo/prebuild-config@npm:54.0.7" - dependencies: - "@expo/config": "npm:~12.0.11" - "@expo/config-plugins": "npm:~54.0.3" - "@expo/config-types": "npm:^54.0.9" - "@expo/image-utils": "npm:^0.8.8" - "@expo/json-file": "npm:^10.0.8" - "@react-native/normalize-colors": "npm:0.81.5" - debug: "npm:^4.3.1" - resolve-from: "npm:^5.0.0" - semver: "npm:^7.6.0" - xml2js: "npm:0.6.0" - peerDependencies: - expo: "*" - checksum: 10/6194661c2531041d1f5cc141f07fb2ddf8a558110732d8dcccfe8c7887345f28756bfd2c72fd72da364db274dde7d11fc77b8f39eace18cb215b8364997910c1 - languageName: node - linkType: hard - "@expo/prebuild-config@npm:^54.0.8": version: 54.0.8 resolution: "@expo/prebuild-config@npm:54.0.8" @@ -3215,13 +2800,13 @@ __metadata: linkType: hard "@expo/vector-icons@npm:^15.0.3": - version: 15.0.3 - resolution: "@expo/vector-icons@npm:15.0.3" + version: 15.1.1 + resolution: "@expo/vector-icons@npm:15.1.1" peerDependencies: expo-font: ">=14.0.4" react: "*" react-native: "*" - checksum: 10/8845ed6aeade73d7c684776a134153658549e1ee473e99ac56c355af53d848a4c91f9d218da798f481b117a08b86ab523c9c3f3de0c50b1f111ded644825803c + checksum: 10/204fafd5141c81bd55dd33f6c00cdc48ec1d37b6460be6fa3f851ccb235e1fad1097f22d034470daa49a5b839d058bbcadda1efd349c670c2fdce2ae65fb9bba languageName: node linkType: hard @@ -3233,16 +2818,24 @@ __metadata: linkType: hard "@expo/xcpretty@npm:^4.3.0": - version: 4.3.2 - resolution: "@expo/xcpretty@npm:4.3.2" + version: 4.4.1 + resolution: "@expo/xcpretty@npm:4.4.1" dependencies: - "@babel/code-frame": "npm:7.10.4" + "@babel/code-frame": "npm:^7.20.0" chalk: "npm:^4.1.0" - find-up: "npm:^5.0.0" js-yaml: "npm:^4.1.0" bin: excpretty: build/cli.js - checksum: 10/4d2adaf531d24154898b858d3d0f3b4ec272fa08bb628f94cadee5b1eb505cc1f3a6b0ab7c1cb3d55af0f22c2534b4a9781a6fe7293dc2062fc5784eb376b0bb + checksum: 10/56d4c7d54f2b2d4a04d24f77c8e6926c0760c2983c5ac54018a35b754e261d3f31b7cd509342ff161dfbe852c03d5d62096927130069e6020db29c33ca3fa580 + languageName: node + linkType: hard + +"@gar/promise-retry@npm:^1.0.0": + version: 1.0.2 + resolution: "@gar/promise-retry@npm:1.0.2" + dependencies: + retry: "npm:^0.13.1" + checksum: 10/b91326999ce94677cbe91973079eabc689761a93a045f6a2d34d4070e9305b27f6c54e4021688c7080cb14caf89eafa0c0f300af741b94c20d18608bdb66ca46 languageName: node linkType: hard @@ -3263,9 +2856,9 @@ __metadata: linkType: hard "@huggingface/jinja@npm:^0.5.0": - version: 0.5.3 - resolution: "@huggingface/jinja@npm:0.5.3" - checksum: 10/2797550d8400495facec93c00051ddba17df8849250a0ad61dfc3cd84b05c4013c852a0580e3fa8cf2fd153c9fbe35af2ced5409b1b23effd639f0a03a4c16b4 + version: 0.5.5 + resolution: "@huggingface/jinja@npm:0.5.5" + checksum: 10/9575f8a689ab2c31f2540ea2dd82da2bcddb536196c3de3ae8f3b2fa06f01f47eb6a0513b410bbeac90fea7123733a15bf5d484f45fe3132bc16232a60f0dce3 languageName: node linkType: hard @@ -3294,22 +2887,6 @@ __metadata: languageName: node linkType: hard -"@isaacs/balanced-match@npm:^4.0.1": - version: 4.0.1 - resolution: "@isaacs/balanced-match@npm:4.0.1" - checksum: 10/102fbc6d2c0d5edf8f6dbf2b3feb21695a21bc850f11bc47c4f06aa83bd8884fde3fe9d6d797d619901d96865fdcb4569ac2a54c937992c48885c5e3d9967fe8 - languageName: node - linkType: hard - -"@isaacs/brace-expansion@npm:^5.0.0": - version: 5.0.0 - resolution: "@isaacs/brace-expansion@npm:5.0.0" - dependencies: - "@isaacs/balanced-match": "npm:^4.0.1" - checksum: 10/cf3b7f206aff12128214a1df764ac8cdbc517c110db85249b945282407e3dfc5c6e66286383a7c9391a059fc8e6e6a8ca82262fc9d2590bd615376141fbebd2d - languageName: node - linkType: hard - "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -3762,11 +3339,11 @@ __metadata: linkType: hard "@kesha-antonov/react-native-background-downloader@npm:^4.4.5": - version: 4.4.5 - resolution: "@kesha-antonov/react-native-background-downloader@npm:4.4.5" + version: 4.5.2 + resolution: "@kesha-antonov/react-native-background-downloader@npm:4.5.2" peerDependencies: react-native: ">=0.57.0" - checksum: 10/56c90b08f5efdbc017a373dd3358470b5879f1ccb28b9a25df6b725fb6cc534d7d60c989167e07774f4c8bca530b22ed383322f5f105f8bd58bac2d85914c548 + checksum: 10/2543563caa62aa9362ef4c37dcb11f4b762cb9803869bbdf5a45260c2bbb3ae68336450920594f768ea29500dd6fe04958cbf07a90620617737df5862718343e languageName: node linkType: hard @@ -4239,120 +3816,120 @@ __metadata: languageName: node linkType: hard -"@react-native-community/cli-clean@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-clean@npm:20.0.2" +"@react-native-community/cli-clean@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-clean@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" execa: "npm:^5.0.0" fast-glob: "npm:^3.3.2" - checksum: 10/d839318d979a83c0574b81f2eb765726431e2b3b14aee14621a72c2af527730072af58ab8a9c457e12e137c81ae41329f83f5f56a3d36b08efbed5d7fe6718bf + picocolors: "npm:^1.1.1" + checksum: 10/66580b22ac10ed87aa1a121f5226d1bf88e1d87864cf21bcafc2f450133b908f31e44c784e881cc4cbcccb1cfedcca22bad0f09e0951ed5bd13400b2b724f9c5 languageName: node linkType: hard -"@react-native-community/cli-config-android@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-config-android@npm:20.0.2" +"@react-native-community/cli-config-android@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-config-android@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" fast-glob: "npm:^3.3.2" - fast-xml-parser: "npm:^4.4.1" - checksum: 10/ccbe4998887d722332c6734dbee38d7ea99362000f7afd88af4f7301e87928d669287e78ab112e618f8785e10c483064d1c00ce34368b564152d291eee32cb43 + fast-xml-parser: "npm:^5.3.6" + picocolors: "npm:^1.1.1" + checksum: 10/873af8992640a7585322e01fb99870ddf8894cb69a30d11e2c3babd50c9039ab1c62b630e9a58bbe9249c332c4a66386e9d4250a4200b5f7a5be86635850d43d languageName: node linkType: hard -"@react-native-community/cli-config-apple@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-config-apple@npm:20.0.2" +"@react-native-community/cli-config-apple@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-config-apple@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" execa: "npm:^5.0.0" fast-glob: "npm:^3.3.2" - checksum: 10/5f888674b70d8d52be2ea2f1e513afdf98a43de30d6db224514c7a3a0466ad99a1c8ad4080558b6ac172c92eaca2d1a20691afd0744fbcb8fafedf8e6cd73cf1 + picocolors: "npm:^1.1.1" + checksum: 10/262089e3ca1ba161fa1c4c1945b10a731a5c39db35f07e44c94d1fcf0676819d2eccfced3ec56f724efee31b7c1ff8d6c0b1842363575708f0cf86df5a4315e9 languageName: node linkType: hard -"@react-native-community/cli-config@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-config@npm:20.0.2" +"@react-native-community/cli-config@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-config@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" cosmiconfig: "npm:^9.0.0" deepmerge: "npm:^4.3.0" fast-glob: "npm:^3.3.2" joi: "npm:^17.2.1" - checksum: 10/05658bfeecce40f14d4c91d804b4748d0b514e73a572ff58a3420c41e4cbebe63fa6fb6ecf8f9622227e33891313e3494c7d26c469335f40e234e2470a7b6f6b + picocolors: "npm:^1.1.1" + checksum: 10/c43f19458c514c1108162238abb7f8b096156b6377841c6959d46a7fe6ffea170050a6e77c2eaf19800efd40b865297e8cc04043d38f881e6e36d62eccd81164 languageName: node linkType: hard -"@react-native-community/cli-doctor@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-doctor@npm:20.0.2" +"@react-native-community/cli-doctor@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-doctor@npm:20.1.2" dependencies: - "@react-native-community/cli-config": "npm:20.0.2" - "@react-native-community/cli-platform-android": "npm:20.0.2" - "@react-native-community/cli-platform-apple": "npm:20.0.2" - "@react-native-community/cli-platform-ios": "npm:20.0.2" - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-config": "npm:20.1.2" + "@react-native-community/cli-platform-android": "npm:20.1.2" + "@react-native-community/cli-platform-apple": "npm:20.1.2" + "@react-native-community/cli-platform-ios": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" command-exists: "npm:^1.2.8" deepmerge: "npm:^4.3.0" envinfo: "npm:^7.13.0" execa: "npm:^5.0.0" node-stream-zip: "npm:^1.9.1" ora: "npm:^5.4.1" + picocolors: "npm:^1.1.1" semver: "npm:^7.5.2" wcwidth: "npm:^1.0.1" yaml: "npm:^2.2.1" - checksum: 10/11a4a9ff5da4d471920418e8b4a598f997036d1d8e5d25f5957886b26727a5526789996430575dc422a5251f225df786a40ab42ec9c2c11f112ec980d6e1cc02 + checksum: 10/6e02acff8a0dd27512a347124dbf68b37ac76f33ad05a46a19646acea1101c695167543553d3e8d8e3ce4e3181f04d73840937afde02245d9f4a7671d831ddaa languageName: node linkType: hard -"@react-native-community/cli-platform-android@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-platform-android@npm:20.0.2" +"@react-native-community/cli-platform-android@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-platform-android@npm:20.1.2" dependencies: - "@react-native-community/cli-config-android": "npm:20.0.2" - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-config-android": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" execa: "npm:^5.0.0" logkitty: "npm:^0.7.1" - checksum: 10/465ef6988d335740cb998c51d29f837344e063bd04cf07b3f959e44df7823b2902ee6a25bf036e82581b1d6e1cfacbd8bcf87690f4dc0c6fb4b21f15eb64951e + picocolors: "npm:^1.1.1" + checksum: 10/ff3cd9bd288f4237abc3ab2675efa056feb63bef01d49b843a5ecc7d65bee377512aece43ee4f110c11485640fabded055b61df0149525dc91169dc80b8c7f6e languageName: node linkType: hard -"@react-native-community/cli-platform-apple@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-platform-apple@npm:20.0.2" +"@react-native-community/cli-platform-apple@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-platform-apple@npm:20.1.2" dependencies: - "@react-native-community/cli-config-apple": "npm:20.0.2" - "@react-native-community/cli-tools": "npm:20.0.2" - chalk: "npm:^4.1.2" + "@react-native-community/cli-config-apple": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" execa: "npm:^5.0.0" - fast-xml-parser: "npm:^4.4.1" - checksum: 10/f316b4f54f6d323319c0df9b6bf3cd7a5aa3b81d170e18755b9dc80297b1989f5c275b779f1044f063392126ec510e172283d06ef9ab8700950d7b36e1cb4d72 + fast-xml-parser: "npm:^5.3.6" + picocolors: "npm:^1.1.1" + checksum: 10/b1d4409f8a081e94400acf41cfefa0c8663afdf8280598e7731a85a4f161f64f381e876fdace394baec0d72db716fb58aa1e18ce8eeacc37fc70c5a261ba71f6 languageName: node linkType: hard -"@react-native-community/cli-platform-ios@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-platform-ios@npm:20.0.2" +"@react-native-community/cli-platform-ios@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-platform-ios@npm:20.1.2" dependencies: - "@react-native-community/cli-platform-apple": "npm:20.0.2" - checksum: 10/a0290feadc079981429143e9829a3030a768593927e0c2bcf546f52c8c22a53a49ea5f9ae9484f7eb390e01a46d7b0d7d9dc3374268d07237c808e6e7e3c50b3 + "@react-native-community/cli-platform-apple": "npm:20.1.2" + checksum: 10/711c5366a62a5dfd26fd987bab126ff958faf29e7e2bfab1d29c1c8dfc12be12c03d8291f2fefab4ea90836fe41e90f7bb626b6fa3a9d023cdc39f726aa34512 languageName: node linkType: hard -"@react-native-community/cli-server-api@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-server-api@npm:20.0.2" +"@react-native-community/cli-server-api@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-server-api@npm:20.1.2" dependencies: - "@react-native-community/cli-tools": "npm:20.0.2" - body-parser: "npm:^1.20.3" + "@react-native-community/cli-tools": "npm:20.1.2" + body-parser: "npm:^2.2.2" compression: "npm:^1.7.1" connect: "npm:^3.6.5" errorhandler: "npm:^1.5.1" @@ -4360,60 +3937,61 @@ __metadata: open: "npm:^6.2.0" pretty-format: "npm:^29.7.0" serve-static: "npm:^1.13.1" + strict-url-sanitise: "npm:0.0.1" ws: "npm:^6.2.3" - checksum: 10/7771524a0016f200a15c9c5df430b18ada846ef4d426be9d6540a343e69d042b359069aeef156bec7b267bcf43a50f97b8ec7f1514dad55d84c4e16fbd4e176b + checksum: 10/29447084fdc1a0b3f38a62bc781aa71877b835dd8ee5855d30237289350bb3daeb1a27ca9a3b0d97b86d0f85bddcd67c3907968fdaee7c2f5cc7cab72723d1d1 languageName: node linkType: hard -"@react-native-community/cli-tools@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-tools@npm:20.0.2" +"@react-native-community/cli-tools@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-tools@npm:20.1.2" dependencies: "@vscode/sudo-prompt": "npm:^9.0.0" appdirsjs: "npm:^1.2.4" - chalk: "npm:^4.1.2" execa: "npm:^5.0.0" find-up: "npm:^5.0.0" launch-editor: "npm:^2.9.1" mime: "npm:^2.4.1" ora: "npm:^5.4.1" + picocolors: "npm:^1.1.1" prompts: "npm:^2.4.2" semver: "npm:^7.5.2" - checksum: 10/8f1c752a6bffa4dc201446bd4d8a7162ae296e87e3a7f2d87201e79cc9ceadb9ed4daafde83b732d79f54f76c4294e8822fae483c9120c358bc422482d98c045 + checksum: 10/6eeeeb38495c9f6636840da0ef564db99d6e69d7672dd4cdeff4b8cc128d00de56d2ea74c0c7fda6c743d1f0a642d481c44f6cdd38d8f57ccdd53e9608930bca languageName: node linkType: hard -"@react-native-community/cli-types@npm:20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-types@npm:20.0.2" +"@react-native-community/cli-types@npm:20.1.2": + version: 20.1.2 + resolution: "@react-native-community/cli-types@npm:20.1.2" dependencies: joi: "npm:^17.2.1" - checksum: 10/b4e708fe759ef995b99bdbe89f0e83a00cba680c01a119d317f445528e8321d89a842e0641ad2a08f4c3793ddb9e02b0045d2e82da66d279cb21ee42961ba9ce + checksum: 10/b40aaa3e5ccdad210f67760be01cff34760b7107c0afc93a394733317a88eca2a8b8490b977c8d74d98822d2c2117a1a7101c33105bcdd03277c071c7daca510 languageName: node linkType: hard "@react-native-community/cli@npm:latest": - version: 20.0.2 - resolution: "@react-native-community/cli@npm:20.0.2" - dependencies: - "@react-native-community/cli-clean": "npm:20.0.2" - "@react-native-community/cli-config": "npm:20.0.2" - "@react-native-community/cli-doctor": "npm:20.0.2" - "@react-native-community/cli-server-api": "npm:20.0.2" - "@react-native-community/cli-tools": "npm:20.0.2" - "@react-native-community/cli-types": "npm:20.0.2" - chalk: "npm:^4.1.2" + version: 20.1.2 + resolution: "@react-native-community/cli@npm:20.1.2" + dependencies: + "@react-native-community/cli-clean": "npm:20.1.2" + "@react-native-community/cli-config": "npm:20.1.2" + "@react-native-community/cli-doctor": "npm:20.1.2" + "@react-native-community/cli-server-api": "npm:20.1.2" + "@react-native-community/cli-tools": "npm:20.1.2" + "@react-native-community/cli-types": "npm:20.1.2" commander: "npm:^9.4.1" deepmerge: "npm:^4.3.0" execa: "npm:^5.0.0" find-up: "npm:^5.0.0" fs-extra: "npm:^8.1.0" graceful-fs: "npm:^4.1.3" + picocolors: "npm:^1.1.1" prompts: "npm:^2.4.2" semver: "npm:^7.5.2" bin: rnc-cli: build/bin.js - checksum: 10/8de75d8ab9c3ffce215e4dcff57832f22e8f8853a212dbd0c2b8e96cff6e6511593d7ed064aba920a8245147b4079a77ab4445461bab97a9e08bf84472a6e8e6 + checksum: 10/85c0f4d2ca4dbbeb47f9439bf0da22abd18a39fccf2736dc47efcc47accbc377c32aa0b75408308fd47a60658e72266e2c645f7f9675a1faf5e4c7dc737c20a8 languageName: node linkType: hard @@ -4805,20 +4383,6 @@ __metadata: languageName: node linkType: hard -"@react-native/metro-babel-transformer@npm:0.81.5": - version: 0.81.5 - resolution: "@react-native/metro-babel-transformer@npm:0.81.5" - dependencies: - "@babel/core": "npm:^7.25.2" - "@react-native/babel-preset": "npm:0.81.5" - hermes-parser: "npm:0.29.1" - nullthrows: "npm:^1.1.1" - peerDependencies: - "@babel/core": "*" - checksum: 10/401cd5e396a0c04865164c8321c29c17b9cdfbfef5efdf771befb77f830fd28c0bafe116f6d51930e684372f37b4a47f143a404341780187ae9e9fab0da39af4 - languageName: node - linkType: hard - "@react-native/metro-babel-transformer@npm:0.81.6": version: 0.81.6 resolution: "@react-native/metro-babel-transformer@npm:0.81.6" @@ -4847,19 +4411,7 @@ __metadata: languageName: node linkType: hard -"@react-native/metro-config@npm:^0.81.5": - version: 0.81.5 - resolution: "@react-native/metro-config@npm:0.81.5" - dependencies: - "@react-native/js-polyfills": "npm:0.81.5" - "@react-native/metro-babel-transformer": "npm:0.81.5" - metro-config: "npm:^0.83.1" - metro-runtime: "npm:^0.83.1" - checksum: 10/13af9cb8f743e8ae51fe0c77db4c61070ef31074b985911ad03b53ec79985f3ba261f1b0026bc62b1b070a3954c8928b73d2d956fc13bad6ece3699b3f5d7254 - languageName: node - linkType: hard - -"@react-native/metro-config@npm:^0.81.6": +"@react-native/metro-config@npm:^0.81.5, @react-native/metro-config@npm:^0.81.6": version: 0.81.6 resolution: "@react-native/metro-config@npm:0.81.6" dependencies: @@ -4908,25 +4460,25 @@ __metadata: linkType: hard "@react-navigation/bottom-tabs@npm:^7.4.0": - version: 7.8.11 - resolution: "@react-navigation/bottom-tabs@npm:7.8.11" + version: 7.15.2 + resolution: "@react-navigation/bottom-tabs@npm:7.15.2" dependencies: - "@react-navigation/elements": "npm:^2.9.1" + "@react-navigation/elements": "npm:^2.9.8" color: "npm:^4.2.3" sf-symbols-typescript: "npm:^2.1.0" peerDependencies: - "@react-navigation/native": ^7.1.24 + "@react-navigation/native": ^7.1.31 react: ">= 18.2.0" react-native: "*" react-native-safe-area-context: ">= 4.0.0" react-native-screens: ">= 4.0.0" - checksum: 10/313f4daf2a02325460ee6f2515adf4273c3f0cec9001f5ea73c77ad5ce25d003fa623b593390af111a1db505a5eb3793bae32fd029dd1f740fe5b7b39e19f923 + checksum: 10/f76179664388dd025c4c6fc5696335407e5769417ffa7a364d601e019e734ac950200071ea417d5de3a1cad26b127251d9237890adbece9ccda56e32c996f807 languageName: node linkType: hard -"@react-navigation/core@npm:^7.14.0": - version: 7.14.0 - resolution: "@react-navigation/core@npm:7.14.0" +"@react-navigation/core@npm:^7.15.1": + version: 7.15.1 + resolution: "@react-navigation/core@npm:7.15.1" dependencies: "@react-navigation/routers": "npm:^7.5.3" escape-string-regexp: "npm:^4.0.0" @@ -4938,93 +4490,73 @@ __metadata: use-sync-external-store: "npm:^1.5.0" peerDependencies: react: ">= 18.2.0" - checksum: 10/fa43ad12304f0dfa60688c73f59ac374c1900d1bad1823ab2b1454ab7e6376d0038ec2a597f67fa09fabe4381bfd210fb048518d61ad4fc44d6d608a0ceb6a1a + checksum: 10/308e7c0748827b47870dbac537b545bc7b4b975d64d136ca18c64970449195a6394ec49608e1063a6374c1da31a984b0e06e12de997babaddd201b400f34d37c languageName: node linkType: hard "@react-navigation/drawer@npm:^7.8.1": - version: 7.8.1 - resolution: "@react-navigation/drawer@npm:7.8.1" + version: 7.9.2 + resolution: "@react-navigation/drawer@npm:7.9.2" dependencies: - "@react-navigation/elements": "npm:^2.9.5" + "@react-navigation/elements": "npm:^2.9.8" color: "npm:^4.2.3" react-native-drawer-layout: "npm:^4.2.2" use-latest-callback: "npm:^0.2.4" peerDependencies: - "@react-navigation/native": ^7.1.28 + "@react-navigation/native": ^7.1.31 react: ">= 18.2.0" react-native: "*" react-native-gesture-handler: ">= 2.0.0" react-native-reanimated: ">= 2.0.0" react-native-safe-area-context: ">= 4.0.0" react-native-screens: ">= 4.0.0" - checksum: 10/1c39458642865379a55ea456937fc6e0eef07b0430b48ece64a2f96f393f81702831ed25981ade1938d1e72701062d4c1c3b60ded377a8edce11d0a3ce7f7af9 - languageName: node - linkType: hard - -"@react-navigation/elements@npm:^2.9.1": - version: 2.9.1 - resolution: "@react-navigation/elements@npm:2.9.1" - dependencies: - color: "npm:^4.2.3" - use-latest-callback: "npm:^0.2.4" - use-sync-external-store: "npm:^1.5.0" - peerDependencies: - "@react-native-masked-view/masked-view": ">= 0.2.0" - "@react-navigation/native": ^7.1.24 - react: ">= 18.2.0" - react-native: "*" - react-native-safe-area-context: ">= 4.0.0" - peerDependenciesMeta: - "@react-native-masked-view/masked-view": - optional: true - checksum: 10/ae4bb3be4773d12001a469cd972467cd4f83affe5eded4e972a9af1a14dee54b13bbb6d8481a7166329e028e9943e63d19ff36473d29b095053ca8de773f8939 + checksum: 10/47b37265d0ee005e6194a0353687b8f36ed33c7f3fd059bbb110abcdeed2ab8a3f8e9fdca8875a02a92eae7794035d5887a66c7f862f84077286f2aec2f21e23 languageName: node linkType: hard -"@react-navigation/elements@npm:^2.9.5": - version: 2.9.5 - resolution: "@react-navigation/elements@npm:2.9.5" +"@react-navigation/elements@npm:^2.9.8": + version: 2.9.8 + resolution: "@react-navigation/elements@npm:2.9.8" dependencies: color: "npm:^4.2.3" use-latest-callback: "npm:^0.2.4" use-sync-external-store: "npm:^1.5.0" peerDependencies: "@react-native-masked-view/masked-view": ">= 0.2.0" - "@react-navigation/native": ^7.1.28 + "@react-navigation/native": ^7.1.31 react: ">= 18.2.0" react-native: "*" react-native-safe-area-context: ">= 4.0.0" peerDependenciesMeta: "@react-native-masked-view/masked-view": optional: true - checksum: 10/b71c367082527dda303dfaa319af930ccbb1622f2cbe018382c8070c91944b59891fcabe048a76590d52ee07eac7ca9acb33e03fdacd8092aff1d58a165b0762 + checksum: 10/b34fc3c69f2bbdf18bf9eecf27c866adc806e90f6bb773f35dc35cd8454c822609ced4446c09feb646002a2ee69e6310b28635627c9132081a325e6b1cc370e7 languageName: node linkType: hard "@react-navigation/native-stack@npm:^7.3.16": - version: 7.8.5 - resolution: "@react-navigation/native-stack@npm:7.8.5" + version: 7.14.2 + resolution: "@react-navigation/native-stack@npm:7.14.2" dependencies: - "@react-navigation/elements": "npm:^2.9.1" + "@react-navigation/elements": "npm:^2.9.8" color: "npm:^4.2.3" sf-symbols-typescript: "npm:^2.1.0" warn-once: "npm:^0.1.1" peerDependencies: - "@react-navigation/native": ^7.1.24 + "@react-navigation/native": ^7.1.31 react: ">= 18.2.0" react-native: "*" react-native-safe-area-context: ">= 4.0.0" react-native-screens: ">= 4.0.0" - checksum: 10/69381f0f938aed5b4ecfd8d980f4d01f510dd2d3a932c59e7e8c9e7f9c64f38c239a1ffe51fb794c238b7e661346799bdada5cb73a4eabf999b8d3c3a84d699a + checksum: 10/d1d1b454d57842d87457c1a556b464fa99d3d94948ffde322fe854d7f5c9909d9bd0e9ee7d051376cb9066fd9619934ce468b2809fd4e8aa3d8b6d6a31cfb3e7 languageName: node linkType: hard "@react-navigation/native@npm:^7.1.28, @react-navigation/native@npm:^7.1.8": - version: 7.1.28 - resolution: "@react-navigation/native@npm:7.1.28" + version: 7.1.31 + resolution: "@react-navigation/native@npm:7.1.31" dependencies: - "@react-navigation/core": "npm:^7.14.0" + "@react-navigation/core": "npm:^7.15.1" escape-string-regexp: "npm:^4.0.0" fast-deep-equal: "npm:^3.1.3" nanoid: "npm:^3.3.11" @@ -5032,7 +4564,7 @@ __metadata: peerDependencies: react: ">= 18.2.0" react-native: "*" - checksum: 10/64f2d3136ad4034315b2aaf81d0ffd3d73425787aebf3ef7934dfb50931d50cbc3322378fdc240df5d795f5c1ab361038c3200cc24c266c8a089706ca1f4edb7 + checksum: 10/b76efac7073055968e7c3300c6812932c0cdec6c9de1bdae0a80ecbee217c2817b0fa5012cd0817d3f6abe9c198032787bfcee4f4ec080b5827510c11c894cc0 languageName: node linkType: hard @@ -5090,9 +4622,9 @@ __metadata: linkType: hard "@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d + version: 0.27.10 + resolution: "@sinclair/typebox@npm:0.27.10" + checksum: 10/1498c5ef1375787e6272528615d5c262afb60873191d2441316359817b1c411917063c8be102ef15b0b5c62243a9daa7aefc8426f20eb406b67038b3eaa0695a languageName: node linkType: hard @@ -5420,11 +4952,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 24.10.1 - resolution: "@types/node@npm:24.10.1" + version: 25.3.1 + resolution: "@types/node@npm:25.3.1" dependencies: - undici-types: "npm:~7.16.0" - checksum: 10/ddac8c97be5f7401e31ea0e9316c6e864993c6cd06689b7f9874ecfb576ef8349f2d14298248a08b94a6dd029570a46a285cddc4d50e524817f1a3730b29a86e + undici-types: "npm:~7.18.0" + checksum: 10/7f999e88e7ff3d2e2ee4efbf1de60d9375577d1ad3e1bee01455ec9d8257da2fb1f83dce4cb8fdf9c05dde9fec9e54f61fc9b1731393b53fc74f254712de9f6e languageName: node linkType: hard @@ -5446,6 +4978,15 @@ __metadata: languageName: node linkType: hard +"@types/react@npm:~19.2.0": + version: 19.2.14 + resolution: "@types/react@npm:19.2.14" + dependencies: + csstype: "npm:^3.2.2" + checksum: 10/fbff239089ee64b6bd9b00543594db498278b06de527ef1b0f71bb0eb09cc4445a71b5dd3c0d3d0257255c4eed94406be40a74ad4a987ade8a8d5dd65c82bc5f + languageName: node + linkType: hard + "@types/semver@npm:^7.3.12": version: 7.7.1 resolution: "@types/semver@npm:7.7.1" @@ -5836,9 +5377,9 @@ __metadata: linkType: hard "@vscode/sudo-prompt@npm:^9.0.0": - version: 9.3.1 - resolution: "@vscode/sudo-prompt@npm:9.3.1" - checksum: 10/233edb992ae5dda69b9c63101f85a7996ff7034cb9b0ea976f3ab06483511a35162a650d8e081ded5f07aa9b2f2bac93e45420d956cf1b1d8a76ac385d4a9581 + version: 9.3.2 + resolution: "@vscode/sudo-prompt@npm:9.3.2" + checksum: 10/2eabbf59ba784c5828d9f45cde2ada83f51796d88dea05ed0c270a98545ad5f47c8d48e54c2ed335273ec75499e9700ee8b48f1d9bf2bb3e42050faf1070d8c3 languageName: node linkType: hard @@ -5872,7 +5413,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:^1.3.7, accepts@npm:^1.3.8, accepts@npm:~1.3.7": +"accepts@npm:^1.3.7, accepts@npm:^1.3.8, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -5902,11 +5443,11 @@ __metadata: linkType: hard "acorn@npm:^8.15.0, acorn@npm:^8.9.0": - version: 8.15.0 - resolution: "acorn@npm:8.15.0" + version: 8.16.0 + resolution: "acorn@npm:8.16.0" bin: acorn: bin/acorn - checksum: 10/77f2de5051a631cf1729c090e5759148459cdb76b5f5c70f890503d629cf5052357b0ce783c0f976dd8a93c5150f59f6d18df1def3f502396a20f81282482fa4 + checksum: 10/690c673bb4d61b38ef82795fab58526471ad7f7e67c0e40c4ff1e10ecd80ce5312554ef633c9995bfc4e6d170cef165711f9ca9e49040b62c0c66fbf2dd3df2b languageName: node linkType: hard @@ -5928,14 +5469,26 @@ __metadata: linkType: hard "ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" + version: 6.14.0 + resolution: "ajv@npm:6.14.0" dependencies: fast-deep-equal: "npm:^3.1.1" fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 10/48d6ad21138d12eb4d16d878d630079a2bda25a04e745c07846a4ad768319533031e28872a9b3c5790fa1ec41aabdf2abed30a56e5a03ebc2cf92184b8ee306c + checksum: 10/c71f14dd2b6f2535d043f74019c8169f7aeb1106bafbb741af96f34fdbf932255c919ddd46344043d03b62ea0ccb319f83667ec5eedf612393f29054fe5ce4a5 + languageName: node + linkType: hard + +"ajv@npm:^8.11.0": + version: 8.18.0 + resolution: "ajv@npm:8.18.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10/bfed9de827a2b27c6d4084324eda76a4e32bdde27410b3e9b81d06e6f8f5c78370fc6b93fe1d869f1939ff1d7c4ae8896960995acb8425e3e9288c8884247c48 languageName: node linkType: hard @@ -6075,23 +5628,23 @@ __metadata: languageName: node linkType: hard -"arkregex@npm:0.0.4": - version: 0.0.4 - resolution: "arkregex@npm:0.0.4" +"arkregex@npm:0.0.5": + version: 0.0.5 + resolution: "arkregex@npm:0.0.5" dependencies: "@ark/util": "npm:0.56.0" - checksum: 10/af9eccf7e931a810ee18196ffa4c97d436d807d6332de9ae4dbc7dec0f315b6cb69990cad40d3344de9464ec191024a1354d3765d19868c668acd4ead5820ea6 + checksum: 10/c5eca109df57639b3245e1e72efe1b43cf881a2234b29736b11f57d29674d9ef78a2dcf54f5381a33690d53ce8989520bc123bb686dcce83f15c44f141c7f8a9 languageName: node linkType: hard "arktype@npm:^2.1.15": - version: 2.1.28 - resolution: "arktype@npm:2.1.28" + version: 2.1.29 + resolution: "arktype@npm:2.1.29" dependencies: "@ark/schema": "npm:0.56.0" "@ark/util": "npm:0.56.0" - arkregex: "npm:0.0.4" - checksum: 10/790503fdbcaf2c549a96d4ffe83938d12221817f7c0d9939e857334e3bbca2895c4d34edfc66e74f2e925e6d97cdb280160ec5af39346f960d4d59e4b75ab3ed + arkregex: "npm:0.0.5" + checksum: 10/091df54e5df0282a26f5de74cc001569483fc61b3297277a51cb8244f277334a549cf8ae3342ca3bbde95bd10172aaa2f86e6c5738e2853b2b66c088a7c9f398 languageName: node linkType: hard @@ -6326,16 +5879,16 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.14": - version: 0.4.14 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" +"babel-plugin-polyfill-corejs2@npm:^0.4.14, babel-plugin-polyfill-corejs2@npm:^0.4.15": + version: 0.4.15 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.15" dependencies: - "@babel/compat-data": "npm:^7.27.7" - "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + "@babel/compat-data": "npm:^7.28.6" + "@babel/helper-define-polyfill-provider": "npm:^0.6.6" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/8ec00a1b821ccbfcc432630da66e98bc417f5301f4ce665269d50d245a18ad3ce8a8af2a007f28e3defcd555bb8ce65f16b0d4b6d131bd788e2b97d8b8953332 + checksum: 10/e5f8a4e716400b2b5c51f7b3c0eec58da92f1d8cc1c6fe2e32555c98bc594be1de7fa1da373f8e42ab098c33867c4cc2931ce648c92aab7a4f4685417707c438 languageName: node linkType: hard @@ -6351,14 +5904,26 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.6.5": - version: 0.6.5 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" +"babel-plugin-polyfill-corejs3@npm:^0.14.0": + version: 0.14.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.14.0" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + "@babel/helper-define-polyfill-provider": "npm:^0.6.6" + core-js-compat: "npm:^3.48.0" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/ed1932fa9a31e0752fd10ebf48ab9513a654987cab1182890839523cb898559d24ae0578fdc475d9f995390420e64eeaa4b0427045b56949dace3c725bc66dbb + checksum: 10/09c854a3bda9a930fbce4b80d52a24e5b0744fccb0c81bf8f470d62296f197a2afe111b2b9ecb0d8a47068de2f938d14b748295953377e47594b0673d53c9396 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.5, babel-plugin-polyfill-regenerator@npm:^0.6.6": + version: 0.6.6 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.6" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.6" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10/8de7ea32856e75784601cacf8f4e3cbf04ce1fd05d56614b08b7bbe0674d1e59e37ccaa1c7ed16e3b181a63abe5bd43a1ab0e28b8c95618a9ebf0be5e24d6b25 languageName: node linkType: hard @@ -6478,45 +6043,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-expo@npm:~54.0.8": - version: 54.0.8 - resolution: "babel-preset-expo@npm:54.0.8" - dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/plugin-proposal-decorators": "npm:^7.12.9" - "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" - "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" - "@babel/plugin-transform-class-static-block": "npm:^7.27.1" - "@babel/plugin-transform-export-namespace-from": "npm:^7.25.9" - "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" - "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" - "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" - "@babel/plugin-transform-parameters": "npm:^7.24.7" - "@babel/plugin-transform-private-methods": "npm:^7.24.7" - "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" - "@babel/plugin-transform-runtime": "npm:^7.24.7" - "@babel/preset-react": "npm:^7.22.15" - "@babel/preset-typescript": "npm:^7.23.0" - "@react-native/babel-preset": "npm:0.81.5" - babel-plugin-react-compiler: "npm:^1.0.0" - babel-plugin-react-native-web: "npm:~0.21.0" - babel-plugin-syntax-hermes-parser: "npm:^0.29.1" - babel-plugin-transform-flow-enums: "npm:^0.0.2" - debug: "npm:^4.3.4" - resolve-from: "npm:^5.0.0" - peerDependencies: - "@babel/runtime": ^7.20.0 - expo: "*" - react-refresh: ">=0.14.0 <1.0.0" - peerDependenciesMeta: - "@babel/runtime": - optional: true - expo: - optional: true - checksum: 10/7ecd779623fb80cb6eb559dc1b8fcf54e6128bff412336875fb97159abc847ed9aa8f04862d3f5054fbce844ee3fbaac2af16a65ddf26ab92f3855bab86bd57c - languageName: node - linkType: hard - "babel-preset-jest@npm:30.2.0": version: 30.2.0 resolution: "babel-preset-jest@npm:30.2.0" @@ -6548,6 +6074,13 @@ __metadata: languageName: node linkType: hard +"balanced-match@npm:^4.0.2": + version: 4.0.4 + resolution: "balanced-match@npm:4.0.4" + checksum: 10/fb07bb66a0959c2843fc055838047e2a95ccebb837c519614afb067ebfdf2fa967ca8d712c35ced07f2cd26fc6f07964230b094891315ad74f11eba3d53178a0 + languageName: node + linkType: hard + "base64-js@npm:^1.2.3, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" @@ -6556,11 +6089,11 @@ __metadata: linkType: hard "baseline-browser-mapping@npm:^2.9.0": - version: 2.9.2 - resolution: "baseline-browser-mapping@npm:2.9.2" + version: 2.10.0 + resolution: "baseline-browser-mapping@npm:2.10.0" bin: - baseline-browser-mapping: dist/cli.js - checksum: 10/6e42ae4aaaa0becd37a58b00aa4734063a59b752b5bb66776fc73858d8d7eecea007f4af67fba7c48a9022ec243ad6a77aee735d9e063b1220a7f39b8cd39f4b + baseline-browser-mapping: dist/cli.cjs + checksum: 10/8145e076e4299f04c7a412e6ea63803e330153cd89c47b5303f9b56b58078f4c3d5a5b5332c1069da889e76facacca4d43f8940375f7e73ce0a4d96214332953 languageName: node linkType: hard @@ -6598,23 +6131,20 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:^1.20.3": - version: 1.20.4 - resolution: "body-parser@npm:1.20.4" +"body-parser@npm:^2.2.2": + version: 2.2.2 + resolution: "body-parser@npm:2.2.2" dependencies: - bytes: "npm:~3.1.2" - content-type: "npm:~1.0.5" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:~1.2.0" - http-errors: "npm:~2.0.1" - iconv-lite: "npm:~0.4.24" - on-finished: "npm:~2.4.1" - qs: "npm:~6.14.0" - raw-body: "npm:~2.5.3" - type-is: "npm:~1.6.18" - unpipe: "npm:~1.0.0" - checksum: 10/ff67e28d3f426707be8697a75fdf8d564dc50c341b41f054264d8ab6e2924e519c7ce8acc9d0de05328fdc41e1d9f3f200aec9c1cfb1867d6b676a410d97c689 + bytes: "npm:^3.1.2" + content-type: "npm:^1.0.5" + debug: "npm:^4.4.3" + http-errors: "npm:^2.0.0" + iconv-lite: "npm:^0.7.0" + on-finished: "npm:^2.4.1" + qs: "npm:^6.14.1" + raw-body: "npm:^3.0.1" + type-is: "npm:^2.0.1" + checksum: 10/69671f67d4d5ae5974593901a92d639757231da1725ed6de4d35e86cde9ce7650afdf1cd28df9b6f7892ea7f9eb03ccb30c70fe27d679275ae4cb4aae5ce1b21 languageName: node linkType: hard @@ -6662,12 +6192,12 @@ __metadata: languageName: node linkType: hard -"brace-expansion@npm:^2.0.1": - version: 2.0.2 - resolution: "brace-expansion@npm:2.0.2" +"brace-expansion@npm:^5.0.2": + version: 5.0.3 + resolution: "brace-expansion@npm:5.0.3" dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10/01dff195e3646bc4b0d27b63d9bab84d2ebc06121ff5013ad6e5356daa5a9d6b60fa26cf73c74797f2dc3fbec112af13578d51f75228c1112b26c790a87b0488 + balanced-match: "npm:^4.0.2" + checksum: 10/8ba7deae4ca333d52418d2cde3287ac23f44f7330d92c3ecd96a8941597bea8aab02227bd990944d6711dd549bcc6e550fe70be5d94aa02e2fdc88942f480c9b languageName: node linkType: hard @@ -6680,7 +6210,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.20.4, browserslist@npm:^4.24.0, browserslist@npm:^4.25.0, browserslist@npm:^4.28.0": +"browserslist@npm:^4.20.4, browserslist@npm:^4.24.0, browserslist@npm:^4.25.0, browserslist@npm:^4.28.1": version: 4.28.1 resolution: "browserslist@npm:4.28.1" dependencies: @@ -6731,7 +6261,7 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2, bytes@npm:~3.1.2": +"bytes@npm:3.1.2, bytes@npm:^3.1.2, bytes@npm:~3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: 10/a10abf2ba70c784471d6b4f58778c0beeb2b5d405148e66affa91f23a9f13d07603d0a0354667310ae1d6dc141474ffd44e2a074be0f6e2254edb8fc21445388 @@ -6843,9 +6373,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001759": - version: 1.0.30001759 - resolution: "caniuse-lite@npm:1.0.30001759" - checksum: 10/da0ec28dd993dffa99402914903426b9466d2798d41c1dc9341fcb7dd10f58fdd148122e2c65001246c030ba1c939645b7b4597f6321e3246dc792323bb11541 + version: 1.0.30001774 + resolution: "caniuse-lite@npm:1.0.30001774" + checksum: 10/63c87aeac08548847ecd12746144029761707d9eae57750f673543a2b2a6126bca98584dd551818e8dc2a480d11489bebe0027af26de4ee46466e7b216109862 languageName: node linkType: hard @@ -7194,20 +6724,20 @@ __metadata: linkType: hard "comment-json@npm:^4.2.5": - version: 4.4.1 - resolution: "comment-json@npm:4.4.1" + version: 4.5.1 + resolution: "comment-json@npm:4.5.1" dependencies: array-timsort: "npm:^1.0.3" core-util-is: "npm:^1.0.3" esprima: "npm:^4.0.1" - checksum: 10/2d05701e361320c670623b01343ed9ff180f4b4a38291f19ab9e2ef5269f51c8d1011f003fceff8cbf73d293f53a8ffc8ba1f85ccb1f6d0703829155bd628bce + checksum: 10/3bdd2703f26690537f65ef708d62aae3980dba6fc566e82a71d95511b413a6f5f285af9af0415e4739dc6f363db24225e46f5267c576f249100cdb28c3adb00d languageName: node linkType: hard "comment-parser@npm:^1.4.0": - version: 1.4.1 - resolution: "comment-parser@npm:1.4.1" - checksum: 10/16a3260b5e77819ebd9c99b0b65c7d6723b1ff73487bac9ce2d8f016a2847dd689e8663b88e1fad1444bbea89847c42f785708ac86a2c55f614f7095249bbf6b + version: 1.4.5 + resolution: "comment-parser@npm:1.4.5" + checksum: 10/4b5cacc7ab1ec48e3f51b788bd7cda567f5c83040e029e5c92eacf0785735a9b44ac49fdaf73d9bd4af9464aa4cc8cc7184902090b55b0023605a845f2666ba4 languageName: node linkType: hard @@ -7246,8 +6776,9 @@ __metadata: "@react-navigation/native": "npm:^7.1.28" "@shopify/react-native-skia": "npm:2.4.21" "@types/pngjs": "npm:^6.0.5" - "@types/react": "npm:~19.1.10" + "@types/react": "npm:~19.2.0" expo: "npm:^54.0.27" + expo-build-properties: "npm:~1.0.10" expo-constants: "npm:~18.0.11" expo-font: "npm:~14.0.10" expo-linking: "npm:~8.0.10" @@ -7261,11 +6792,14 @@ __metadata: react-native-gesture-handler: "npm:~2.28.0" react-native-image-picker: "npm:^7.2.2" react-native-loading-spinner-overlay: "npm:^3.0.1" + react-native-nitro-image: "npm:^0.12.0" + react-native-nitro-modules: "npm:^0.33.9" react-native-reanimated: "npm:~4.2.2" react-native-safe-area-context: "npm:~5.6.0" react-native-screens: "npm:~4.16.0" react-native-svg: "npm:15.15.3" react-native-svg-transformer: "npm:^1.5.3" + react-native-vision-camera: "npm:5.0.0-beta.2" react-native-worklets: "npm:0.7.4" languageName: unknown linkType: soft @@ -7289,7 +6823,7 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.5": +"content-type@npm:^1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 10/585847d98dc7fb8035c02ae2cb76c7a9bd7b25f84c447e5ed55c45c2175e83617c8813871b4ee22f368126af6b2b167df655829007b21aa10302873ea9c62662 @@ -7303,12 +6837,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.43.0": - version: 3.47.0 - resolution: "core-js-compat@npm:3.47.0" +"core-js-compat@npm:^3.43.0, core-js-compat@npm:^3.48.0": + version: 3.48.0 + resolution: "core-js-compat@npm:3.48.0" dependencies: - browserslist: "npm:^4.28.0" - checksum: 10/8555ac0aede2e61e3b37c50d31a9d63bb59e96ef76194bea0521d2778b24d8b20b45bed7bf2fce9df9856872a1c31e03fec1da101507b4dbaba669693dc95f94 + browserslist: "npm:^4.28.1" + checksum: 10/83c326dcfef5e174fd3f8f33c892c66e06d567ce27f323a1197a6c280c0178fe18d3e9c5fb95b00c18b98d6c53fba5c646def5fedaa77310a4297d16dfbe2029 languageName: node linkType: hard @@ -7376,13 +6910,6 @@ __metadata: languageName: node linkType: hard -"crypto-random-string@npm:^2.0.0": - version: 2.0.0 - resolution: "crypto-random-string@npm:2.0.0" - checksum: 10/0283879f55e7c16fdceacc181f87a0a65c53bc16ffe1d58b9d19a6277adcd71900d02bb2c4843dd55e78c51e30e89b0fec618a7f170ebcc95b33182c28f05fd6 - languageName: node - linkType: hard - "cspell-config-lib@npm:8.19.4": version: 8.19.4 resolution: "cspell-config-lib@npm:8.19.4" @@ -7599,7 +7126,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.0.2": +"csstype@npm:^3.0.2, csstype@npm:^3.2.2": version: 3.2.3 resolution: "csstype@npm:3.2.3" checksum: 10/ad41baf7e2ffac65ab544d79107bf7cd1a4bb9bab9ac3302f59ab4ba655d5e30942a8ae46e10ba160c6f4ecea464cc95b975ca2fefbdeeacd6ac63f12f99fe1f @@ -7655,7 +7182,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.1": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -7684,11 +7211,11 @@ __metadata: linkType: hard "decode-named-character-reference@npm:^1.0.0": - version: 1.2.0 - resolution: "decode-named-character-reference@npm:1.2.0" + version: 1.3.0 + resolution: "decode-named-character-reference@npm:1.3.0" dependencies: character-entities: "npm:^2.0.0" - checksum: 10/f26b23046c1a137c0b41fa51e3ce07ba8364640322c742a31570999784abc8572fc24cb108a76b14ff72ddb75d35aad3d14b10d7743639112145a2664b9d1864 + checksum: 10/82eb1208abf59d1f1e368285b6880201a3c3f147a4d7ce74e44cd41374ef00c9a376e8595e38002031db63291f91f7f3ff56b9724f715befff8f5566593d6de0 languageName: node linkType: hard @@ -7807,7 +7334,7 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0, destroy@npm:~1.2.0": +"destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10/0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 @@ -7968,9 +7495,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.263": - version: 1.5.266 - resolution: "electron-to-chromium@npm:1.5.266" - checksum: 10/2c7e05d1df189013e01b9fa19f5794dc249b80f330ab87f78674fa7416df153e2d32738d16914eee1112b5d8878b6181336e502215a34c63c255da078de5209d + version: 1.5.302 + resolution: "electron-to-chromium@npm:1.5.302" + checksum: 10/0d31470d04a0d1ea046dd363370081b67e6fe822949b10cfece0a64fd2f8180afb5ccaf14f4294251e444a0af627eb0dc0156242b714c0f10561adf2a21aa5f7 languageName: node linkType: hard @@ -8009,15 +7536,6 @@ __metadata: languageName: node linkType: hard -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - "end-of-stream@npm:^1.1.0": version: 1.4.5 resolution: "end-of-stream@npm:1.4.5" @@ -8071,13 +7589,6 @@ __metadata: languageName: node linkType: hard -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10/1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd - languageName: node - linkType: hard - "error-ex@npm:^1.3.1": version: 1.3.4 resolution: "error-ex@npm:1.3.4" @@ -8097,18 +7608,18 @@ __metadata: linkType: hard "errorhandler@npm:^1.5.1": - version: 1.5.1 - resolution: "errorhandler@npm:1.5.1" + version: 1.5.2 + resolution: "errorhandler@npm:1.5.2" dependencies: - accepts: "npm:~1.3.7" + accepts: "npm:~1.3.8" escape-html: "npm:~1.0.3" - checksum: 10/73b7abb08fb751107e9bebecc33c40c0641a54be8bda8e4a045f3f5cb7b805041927fef5629ea39b1737799eb52fe2499ca531f11ac51b0294ccc4667d72cb91 + checksum: 10/7ce0a598cc2c52840e32b46d2da8c7b0a4594aa67e93db46112cf791d4c8a4a1299af7f7aa65253d2e9d42af4d275c96387c0d186427df5ee93d33670bdac541 languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": - version: 1.24.0 - resolution: "es-abstract@npm:1.24.0" +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.1": + version: 1.24.1 + resolution: "es-abstract@npm:1.24.1" dependencies: array-buffer-byte-length: "npm:^1.0.2" arraybuffer.prototype.slice: "npm:^1.0.4" @@ -8164,7 +7675,7 @@ __metadata: typed-array-length: "npm:^1.0.7" unbox-primitive: "npm:^1.1.0" which-typed-array: "npm:^1.1.19" - checksum: 10/64e07a886f7439cf5ccfc100f9716e6173e10af6071a50a5031afbdde474a3dbc9619d5965da54e55f8908746a9134a46be02af8c732d574b7b81ed3124e2daf + checksum: 10/c84cb69ebae36781309a3ed70ff40b4767a921d3b3518060fac4e08f14ede04491b68e9f318aedf186e349d4af4a40f5d0e4111e46513800e8368551fd09de8c languageName: node linkType: hard @@ -8183,26 +7694,26 @@ __metadata: linkType: hard "es-iterator-helpers@npm:^1.2.1": - version: 1.2.1 - resolution: "es-iterator-helpers@npm:1.2.1" + version: 1.2.2 + resolution: "es-iterator-helpers@npm:1.2.2" dependencies: call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" + call-bound: "npm:^1.0.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.6" + es-abstract: "npm:^1.24.1" es-errors: "npm:^1.3.0" - es-set-tostringtag: "npm:^2.0.3" + es-set-tostringtag: "npm:^2.1.0" function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.6" + get-intrinsic: "npm:^1.3.0" globalthis: "npm:^1.0.4" gopd: "npm:^1.2.0" has-property-descriptors: "npm:^1.0.2" has-proto: "npm:^1.2.0" has-symbols: "npm:^1.1.0" internal-slot: "npm:^1.1.0" - iterator.prototype: "npm:^1.1.4" + iterator.prototype: "npm:^1.1.5" safe-array-concat: "npm:^1.1.3" - checksum: 10/802e0e8427a05ff4a5b0c70c7fdaaeff37cdb81a28694aeb7bfb831c6ab340d8f3deeb67b96732ff9e9699ea240524d5ea8a9a6a335fcd15aa3983b27b06113f + checksum: 10/17b5b2834c4f5719d6ce0e837a4d11c6ba4640bee28290d22ec4daf7106ec3d5fe0ff4f7e5dbaa2b4612e8335934360e964a8f08608d43f2889da106b25481ee languageName: node linkType: hard @@ -8215,7 +7726,7 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": +"es-set-tostringtag@npm:^2.1.0": version: 2.1.0 resolution: "es-set-tostringtag@npm:2.1.0" dependencies: @@ -8355,11 +7866,11 @@ __metadata: linkType: hard "eslint-plugin-prettier@npm:^5.0.1": - version: 5.5.4 - resolution: "eslint-plugin-prettier@npm:5.5.4" + version: 5.5.5 + resolution: "eslint-plugin-prettier@npm:5.5.5" dependencies: - prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.11.7" + prettier-linter-helpers: "npm:^1.0.1" + synckit: "npm:^0.11.12" peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" @@ -8370,7 +7881,7 @@ __metadata: optional: true eslint-config-prettier: optional: true - checksum: 10/5e39e3b7046d4ba0e1111cc2048630ee9d0aa5d5bb00d6230bef56893fdae37cbe2261babfb26db350cc2ad517c81d283b3f8b04cfee4e5aef7cd4bee72f90de + checksum: 10/36c22c2fa2fd7c61ed292af1280e1d8f94dfe1671eacc5a503a249ca4b27fd226dbf6a1820457d611915926946f42729488d2dc7a5c320601e6cf1fad0d28f66 languageName: node linkType: hard @@ -8533,11 +8044,11 @@ __metadata: linkType: hard "esquery@npm:^1.4.2": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a + checksum: 10/4afaf3089367e1f5885caa116ef386dffd8bfd64da21fd3d0e56e938d2667cfb2e5400ab4a825aa70e799bb3741e5b5d63c0b94d86e2d4cf3095c9e64b2f5a15 languageName: node linkType: hard @@ -8585,13 +8096,6 @@ __metadata: languageName: node linkType: hard -"exec-async@npm:^2.2.0": - version: 2.2.0 - resolution: "exec-async@npm:2.2.0" - checksum: 10/35932a49c825245e1fe022848a3ffef71717955149a3af8d56bf15b04a21c8f098581ffe2e4916a9dbd7736ce559365ccd55327e72422136adb9f4af867e1203 - languageName: node - linkType: hard - "execa@npm:^4.0.3": version: 4.1.0 resolution: "execa@npm:4.1.0" @@ -8647,7 +8151,7 @@ __metadata: languageName: node linkType: hard -"expo-asset@npm:12.0.11, expo-asset@npm:~12.0.11": +"expo-asset@npm:12.0.11": version: 12.0.11 resolution: "expo-asset@npm:12.0.11" dependencies: @@ -8685,30 +8189,29 @@ __metadata: languageName: node linkType: hard -"expo-calendar@npm:~15.0.8": - version: 15.0.8 - resolution: "expo-calendar@npm:15.0.8" +"expo-build-properties@npm:~1.0.10": + version: 1.0.10 + resolution: "expo-build-properties@npm:1.0.10" + dependencies: + ajv: "npm:^8.11.0" + semver: "npm:^7.6.0" peerDependencies: expo: "*" - react-native: "*" - checksum: 10/7a8538af25f3784467b56a352726c7c3e19d0caecff6a0ed9e0946000dbab0f38f8386b8bb38b35f2d384c66dda5dff3984376eb1282ab6775f75f500abd4b7c + checksum: 10/0dde41d659d243268ceae49bba3e4c07b72c245df8124f86fb720bc0556a2c4d03dd75e59e068a07438ef5ba3188b67a7a6516d2a37d3d91429070745b2506a2 languageName: node linkType: hard -"expo-constants@npm:~18.0.11": - version: 18.0.11 - resolution: "expo-constants@npm:18.0.11" - dependencies: - "@expo/config": "npm:~12.0.11" - "@expo/env": "npm:~2.0.8" +"expo-calendar@npm:~15.0.8": + version: 15.0.8 + resolution: "expo-calendar@npm:15.0.8" peerDependencies: expo: "*" react-native: "*" - checksum: 10/4da78ce638b417d1cb958b8f7c56a54a84cd1cd600d8e62751a32ca858b130e8fe1db7d97acc765d667e7668e401247016b62bfc88cd8624cc92e2345bbd4cb8 + checksum: 10/7a8538af25f3784467b56a352726c7c3e19d0caecff6a0ed9e0946000dbab0f38f8386b8bb38b35f2d384c66dda5dff3984376eb1282ab6775f75f500abd4b7c languageName: node linkType: hard -"expo-constants@npm:~18.0.12, expo-constants@npm:~18.0.13": +"expo-constants@npm:~18.0.11, expo-constants@npm:~18.0.12, expo-constants@npm:~18.0.13": version: 18.0.13 resolution: "expo-constants@npm:18.0.13" dependencies: @@ -8731,30 +8234,7 @@ __metadata: languageName: node linkType: hard -"expo-file-system@npm:~19.0.20": - version: 19.0.20 - resolution: "expo-file-system@npm:19.0.20" - peerDependencies: - expo: "*" - react-native: "*" - checksum: 10/c0ead2eb2f97840fea54f88bcc41f0094d5bef19b6261d768bdaa9fd06e5accf40ce49fe183f84d7042484b7595319cf37691123b699b0f2b00c81068582fbe9 - languageName: node - linkType: hard - -"expo-font@npm:~14.0.10": - version: 14.0.10 - resolution: "expo-font@npm:14.0.10" - dependencies: - fontfaceobserver: "npm:^2.1.0" - peerDependencies: - expo: "*" - react: "*" - react-native: "*" - checksum: 10/3fb7d87c75c818c3c8503d43f9e13b3d237f2e128bcb59e09b8fdad3eaf1aece2ab89030d5cffbeb5b172d7b030df627e4319b0fdd97e6f6d57e27bbdb520f22 - languageName: node - linkType: hard - -"expo-font@npm:~14.0.11": +"expo-font@npm:~14.0.10, expo-font@npm:~14.0.11": version: 14.0.11 resolution: "expo-font@npm:14.0.11" dependencies: @@ -8778,30 +8258,15 @@ __metadata: linkType: hard "expo-linking@npm:~8.0.10": - version: 8.0.10 - resolution: "expo-linking@npm:8.0.10" + version: 8.0.11 + resolution: "expo-linking@npm:8.0.11" dependencies: - expo-constants: "npm:~18.0.11" + expo-constants: "npm:~18.0.12" invariant: "npm:^2.2.4" peerDependencies: react: "*" react-native: "*" - checksum: 10/332353a7ca3dd1112e92ba73d95a51fc22c518725b02bd2aca7fdbd12f26b8879d3bcf3321fc94ca95485ebf00e72b42b64af0b11b611bd91ad4f79303342c31 - languageName: node - linkType: hard - -"expo-modules-autolinking@npm:3.0.23": - version: 3.0.23 - resolution: "expo-modules-autolinking@npm:3.0.23" - dependencies: - "@expo/spawn-async": "npm:^1.7.2" - chalk: "npm:^4.1.0" - commander: "npm:^7.2.0" - require-from-string: "npm:^2.0.2" - resolve-from: "npm:^5.0.0" - bin: - expo-modules-autolinking: bin/expo-modules-autolinking.js - checksum: 10/d16b686a2f8a1b665e2d3bd98c60c94d4a276c24367c8a0bf6d7c81e5ec3c6ac24cec811bc3fc8ec440d7a98355e1123cf9ab3cc830500f325be9a742b50efcb + checksum: 10/b43851e173e5b2b21ac7cfc1fef05ae1cb39209c82af73943abb1e701a767e3759cf4a85e47bb181ab8a0c7b080f9b9d9b7d52f6c54f620f06dad7848e05f336 languageName: node linkType: hard @@ -8820,18 +8285,6 @@ __metadata: languageName: node linkType: hard -"expo-modules-core@npm:3.0.28": - version: 3.0.28 - resolution: "expo-modules-core@npm:3.0.28" - dependencies: - invariant: "npm:^2.2.4" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10/9ee68a2f75b7658d05de3ed54be9039e7a248a1c89ca1bf582d1635d2fff50ac0ac6de7a1d2b315aca5df432f0d67064d2cd2ad63ee2b5cb30c9f738fb92a9c7 - languageName: node - linkType: hard - "expo-modules-core@npm:3.0.29": version: 3.0.29 resolution: "expo-modules-core@npm:3.0.29" @@ -8845,8 +8298,8 @@ __metadata: linkType: hard "expo-router@npm:~6.0.17": - version: 6.0.17 - resolution: "expo-router@npm:6.0.17" + version: 6.0.23 + resolution: "expo-router@npm:6.0.23" dependencies: "@expo/metro-runtime": "npm:^6.1.2" "@expo/schema-utils": "npm:^0.1.8" @@ -8876,8 +8329,8 @@ __metadata: "@react-navigation/drawer": ^7.5.0 "@testing-library/react-native": ">= 12.0.0" expo: "*" - expo-constants: ^18.0.11 - expo-linking: ^8.0.10 + expo-constants: ^18.0.13 + expo-linking: ^8.0.11 react: "*" react-dom: "*" react-native: "*" @@ -8886,7 +8339,7 @@ __metadata: react-native-safe-area-context: ">= 5.4.0" react-native-screens: "*" react-native-web: "*" - react-server-dom-webpack: ~19.0.1 || ~19.1.2 || ~19.2.1 + react-server-dom-webpack: ~19.0.4 || ~19.1.5 || ~19.2.4 peerDependenciesMeta: "@react-navigation/drawer": optional: true @@ -8902,7 +8355,7 @@ __metadata: optional: true react-server-dom-webpack: optional: true - checksum: 10/3d6e6774add5c84045bc07843c09e4e0f25eb65de5cee6d13f53ff61c2daefb47106db70308d0cead96e9166a31faa8cb94eccc23e57f21e9d9446e6f9c9a6fb + checksum: 10/37b92fb8adc038ff5813298235a66bd22ac9a6002d5f016f3ceefa3f96e59910de6e069f0a27b9c23f6b2b40171a6589d31ad944cfe85171a4484937e981676d languageName: node linkType: hard @@ -8925,12 +8378,12 @@ __metadata: languageName: node linkType: hard -"expo@npm:^54.0.0": - version: 54.0.32 - resolution: "expo@npm:54.0.32" +"expo@npm:^54.0.0, expo@npm:^54.0.27": + version: 54.0.33 + resolution: "expo@npm:54.0.33" dependencies: "@babel/runtime": "npm:^7.20.0" - "@expo/cli": "npm:54.0.22" + "@expo/cli": "npm:54.0.23" "@expo/config": "npm:~12.0.13" "@expo/config-plugins": "npm:~54.0.4" "@expo/devtools": "npm:0.1.8" @@ -8967,53 +8420,7 @@ __metadata: expo: bin/cli expo-modules-autolinking: bin/autolinking fingerprint: bin/fingerprint - checksum: 10/78c9b88b98bcf424c00ffdd399b77e6fbf34f2c26a3d420e731bfccd9cdfb54e95f27b539d071155c4144ae7157e2700f9d22d4b2816974b20f8fcf0675bbb05 - languageName: node - linkType: hard - -"expo@npm:^54.0.27": - version: 54.0.27 - resolution: "expo@npm:54.0.27" - dependencies: - "@babel/runtime": "npm:^7.20.0" - "@expo/cli": "npm:54.0.18" - "@expo/config": "npm:~12.0.11" - "@expo/config-plugins": "npm:~54.0.3" - "@expo/devtools": "npm:0.1.8" - "@expo/fingerprint": "npm:0.15.4" - "@expo/metro": "npm:~54.1.0" - "@expo/metro-config": "npm:54.0.10" - "@expo/vector-icons": "npm:^15.0.3" - "@ungap/structured-clone": "npm:^1.3.0" - babel-preset-expo: "npm:~54.0.8" - expo-asset: "npm:~12.0.11" - expo-constants: "npm:~18.0.11" - expo-file-system: "npm:~19.0.20" - expo-font: "npm:~14.0.10" - expo-keep-awake: "npm:~15.0.8" - expo-modules-autolinking: "npm:3.0.23" - expo-modules-core: "npm:3.0.28" - pretty-format: "npm:^29.7.0" - react-refresh: "npm:^0.14.2" - whatwg-url-without-unicode: "npm:8.0.0-3" - peerDependencies: - "@expo/dom-webview": "*" - "@expo/metro-runtime": "*" - react: "*" - react-native: "*" - react-native-webview: "*" - peerDependenciesMeta: - "@expo/dom-webview": - optional: true - "@expo/metro-runtime": - optional: true - react-native-webview: - optional: true - bin: - expo: bin/cli - expo-modules-autolinking: bin/autolinking - fingerprint: bin/fingerprint - checksum: 10/58917b6a363d8908395cf283f1e72f5e5c253619e297896160dafe1d18acb8feb46b76d880d9b52c96954aebe78f7069cf623726ad8921d431d07f9527a0699f + checksum: 10/ed672f78333cf50545ea1cca8181506604150cca01a8aae782da30ddcba185d68f2d48f2ca10dee575a7abbc7913cca3f4c3d34d98373b0e9706b344030fa929 languageName: node linkType: hard @@ -9039,9 +8446,9 @@ __metadata: linkType: hard "fast-equals@npm:^5.2.2": - version: 5.3.3 - resolution: "fast-equals@npm:5.3.3" - checksum: 10/e9af422e313564f9f5db60a655d50e0baec23140da14165b2d191a243fef7c16eac10c4aa1659acd74c00bf1aa623f46e8eee91742af2beb539a6dfb63c8cd96 + version: 5.4.0 + resolution: "fast-equals@npm:5.4.0" + checksum: 10/bea068ceb7825d486d88a17ccc3fe889d1833efefa8dc64c83806e797f66b3ea953ac4aebd96af022d828de315ec87476e76418a5da774217d0ab66de53d68f5 languageName: node linkType: hard @@ -9072,23 +8479,38 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:^4.4.1": - version: 4.5.3 - resolution: "fast-xml-parser@npm:4.5.3" +"fast-uri@npm:^3.0.1": + version: 3.1.0 + resolution: "fast-uri@npm:3.1.0" + checksum: 10/818b2c96dc913bcf8511d844c3d2420e2c70b325c0653633f51821e4e29013c2015387944435cd0ef5322c36c9beecc31e44f71b257aeb8e0b333c1d62bb17c2 + languageName: node + linkType: hard + +"fast-xml-builder@npm:^1.0.0": + version: 1.0.0 + resolution: "fast-xml-builder@npm:1.0.0" + checksum: 10/06c04d80545e5c9f4d1d6cca00567b5cc09953a92c6328fa48cfb4d7f42630313b8c2bb62e9cb81accee7bb5e1c5312fcae06c3d20dbe52d969a5938233316da + languageName: node + linkType: hard + +"fast-xml-parser@npm:^5.3.6": + version: 5.4.1 + resolution: "fast-xml-parser@npm:5.4.1" dependencies: - strnum: "npm:^1.1.1" + fast-xml-builder: "npm:^1.0.0" + strnum: "npm:^2.1.2" bin: fxparser: src/cli/cli.js - checksum: 10/ca22bf9d65c10b8447c1034c13403e90ecee210e2b3852690df3d8a42b8a46ec655fae7356096abd98a15b89ddaf11878587b1773e0c3be4cbc2ac4af4c7bf95 + checksum: 10/2b40067c3ad3542ca197d1353bcb0416cd5db20d5c66d74ac176b99af6ff9bd55a6182d36856a2fd477c95b8fc1f07405475f1662a31185480130ba7076c702a languageName: node linkType: hard "fastq@npm:^1.6.0": - version: 1.19.1 - resolution: "fastq@npm:1.19.1" + version: 1.20.1 + resolution: "fastq@npm:1.20.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10/75679dc226316341c4f2a6b618571f51eac96779906faecd8921b984e844d6ae42fabb2df69b1071327d398d5716693ea9c9c8941f64ac9e89ec2032ce59d730 + checksum: 10/ab2fe3a7a108112e7752cfe7fc11683c21e595913a6a593ad0b4415f31dddbfc283775ab66f2c8ccea6ab7cfc116157cbddcfae9798d9de98d08fe0a2c3e97b2 languageName: node linkType: hard @@ -9250,7 +8672,7 @@ __metadata: languageName: node linkType: hard -"fresh@npm:0.5.2": +"fresh@npm:~0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" checksum: 10/64c88e489b5d08e2f29664eb3c79c705ff9a8eb15d3e597198ef76546d4ade295897a44abb0abd2700e7ef784b2e3cbf1161e4fbf16f59129193fd1030d16da1 @@ -9484,13 +8906,13 @@ __metadata: linkType: hard "glob@npm:^13.0.0": - version: 13.0.0 - resolution: "glob@npm:13.0.0" + version: 13.0.6 + resolution: "glob@npm:13.0.6" dependencies: - minimatch: "npm:^10.1.1" - minipass: "npm:^7.1.2" - path-scurry: "npm:^2.0.0" - checksum: 10/de390721d29ee1c9ea41e40ec2aa0de2cabafa68022e237dc4297665a5e4d650776f2573191984ea1640aba1bf0ea34eddef2d8cbfbfc2ad24b5fb0af41d8846 + minimatch: "npm:^10.2.2" + minipass: "npm:^7.1.3" + path-scurry: "npm:^2.0.2" + checksum: 10/201ad69e5f0aa74e1d8c00a481581f8b8c804b6a4fbfabeeb8541f5d756932800331daeba99b58fb9e4cd67e12ba5a7eba5b82fb476691588418060b84353214 languageName: node linkType: hard @@ -9517,15 +8939,6 @@ __metadata: languageName: node linkType: hard -"global-dirs@npm:^0.1.1": - version: 0.1.1 - resolution: "global-dirs@npm:0.1.1" - dependencies: - ini: "npm:^1.3.4" - checksum: 10/10624f5a8ddb8634c22804c6b24f93fb591c3639a6bc78e3584e01a238fc6f7b7965824184e57d63f6df36980b6c191484ad7bc6c35a1599b8f1d64be64c2a4a - languageName: node - linkType: hard - "globals@npm:^13.19.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -9756,20 +9169,7 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: "npm:2.0.0" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - toidentifier: "npm:1.0.1" - checksum: 10/0e7f76ee8ff8a33e58a3281a469815b893c41357378f408be8f6d4aa7d1efafb0da064625518e7078381b6a92325949b119dc38fcb30bdbc4e3a35f78c44c439 - languageName: node - linkType: hard - -"http-errors@npm:~2.0.1": +"http-errors@npm:^2.0.0, http-errors@npm:~2.0.1": version: 2.0.1 resolution: "http-errors@npm:2.0.1" dependencies: @@ -9823,21 +9223,12 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" +"iconv-lite@npm:^0.7.0, iconv-lite@npm:^0.7.2, iconv-lite@npm:~0.7.0": + version: 0.7.2 + resolution: "iconv-lite@npm:0.7.2" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10/24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f - languageName: node - linkType: hard - -"iconv-lite@npm:~0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3" - checksum: 10/6d3a2dac6e5d1fb126d25645c25c3a1209f70cceecc68b8ef51ae0da3cdc078c151fade7524a30b12a3094926336831fca09c666ef55b37e2c69638b5d6bd2e3 + checksum: 10/24c937b532f868e938386b62410b303b7c767ce3d08dc2829cbe59464d5a26ef86ae5ad1af6b34eec43ddfea39e7d101638644b0178d67262fa87015d59f983a languageName: node linkType: hard @@ -9929,7 +9320,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 @@ -9943,7 +9334,7 @@ __metadata: languageName: node linkType: hard -"ini@npm:^1.3.4, ini@npm:~1.3.0": +"ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" checksum: 10/314ae176e8d4deb3def56106da8002b462221c174ddb7ce0c49ee72c8cd1f9044f7b10cc555a7d8850982c3b9ca96fc212122749f5234bc2b6fb05fb942ed566 @@ -10068,7 +9459,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.1": +"is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -10412,10 +9803,10 @@ __metadata: languageName: node linkType: hard -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 10/7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e +"isexe@npm:^4.0.0": + version: 4.0.0 + resolution: "isexe@npm:4.0.0" + checksum: 10/2ead327ef596042ef9c9ec5f236b316acfaedb87f4bb61b3c3d574fb2e9c8a04b67305e04733bde52c24d9622fdebd3270aadb632adfbf9cadef88fe30f479e5 languageName: node linkType: hard @@ -10484,7 +9875,7 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.4": +"iterator.prototype@npm:^1.1.5": version: 1.1.5 resolution: "iterator.prototype@npm:1.1.5" dependencies: @@ -11162,6 +10553,13 @@ __metadata: languageName: node linkType: hard +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10/02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad + languageName: node + linkType: hard + "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" @@ -11204,11 +10602,11 @@ __metadata: linkType: hard "jsonrepair@npm:^3.12.0": - version: 3.13.1 - resolution: "jsonrepair@npm:3.13.1" + version: 3.13.2 + resolution: "jsonrepair@npm:3.13.2" bin: jsonrepair: bin/cli.js - checksum: 10/cea418eeafe60ebbbf57207d2029fab7be229814c21dacca8380b3da331bc441ddd575cb2e1b533d0e0402e7291b18576686b7c96e6bc31547b8d996fde0001d + checksum: 10/c0c1ec46af1d8e396c22e4d41e4d85eff2c713afdb71b6634a72ed4f356b79259affadb4e79b31042e4c1634313ddc0b3d7960fd74f5fba918198ecc74fe5e82 languageName: node linkType: hard @@ -11264,12 +10662,12 @@ __metadata: linkType: hard "launch-editor@npm:^2.9.1": - version: 2.12.0 - resolution: "launch-editor@npm:2.12.0" + version: 2.13.1 + resolution: "launch-editor@npm:2.13.1" dependencies: picocolors: "npm:^1.1.1" shell-quote: "npm:^1.8.3" - checksum: 10/43d2b66c674d129f9a96bbae602808a0afa7e6bb6f38de5518479e33b1a542e9772b262304505c2aa363b0185424580b4011a9198082d306e2b419c6f12da5e2 + checksum: 10/641aafaad6bafe5d33a13d89eff29082b032c1c5c1aa19fb9fa3b54ffcf26a3419f461a7583f6450bd5b11863b061b60049e38c2d5135492bf46f2ed3a2cbc0e languageName: node linkType: hard @@ -11300,99 +10698,99 @@ __metadata: languageName: node linkType: hard -"lightningcss-android-arm64@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-android-arm64@npm:1.30.2" +"lightningcss-android-arm64@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-android-arm64@npm:1.31.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"lightningcss-darwin-arm64@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-darwin-arm64@npm:1.30.2" +"lightningcss-darwin-arm64@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-darwin-arm64@npm:1.31.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"lightningcss-darwin-x64@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-darwin-x64@npm:1.30.2" +"lightningcss-darwin-x64@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-darwin-x64@npm:1.31.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"lightningcss-freebsd-x64@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-freebsd-x64@npm:1.30.2" +"lightningcss-freebsd-x64@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-freebsd-x64@npm:1.31.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"lightningcss-linux-arm-gnueabihf@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-arm-gnueabihf@npm:1.30.2" +"lightningcss-linux-arm-gnueabihf@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.31.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"lightningcss-linux-arm64-gnu@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-arm64-gnu@npm:1.30.2" +"lightningcss-linux-arm64-gnu@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-arm64-gnu@npm:1.31.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"lightningcss-linux-arm64-musl@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-arm64-musl@npm:1.30.2" +"lightningcss-linux-arm64-musl@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-arm64-musl@npm:1.31.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"lightningcss-linux-x64-gnu@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-x64-gnu@npm:1.30.2" +"lightningcss-linux-x64-gnu@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-x64-gnu@npm:1.31.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"lightningcss-linux-x64-musl@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-linux-x64-musl@npm:1.30.2" +"lightningcss-linux-x64-musl@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-linux-x64-musl@npm:1.31.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"lightningcss-win32-arm64-msvc@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-win32-arm64-msvc@npm:1.30.2" +"lightningcss-win32-arm64-msvc@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-win32-arm64-msvc@npm:1.31.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"lightningcss-win32-x64-msvc@npm:1.30.2": - version: 1.30.2 - resolution: "lightningcss-win32-x64-msvc@npm:1.30.2" +"lightningcss-win32-x64-msvc@npm:1.31.1": + version: 1.31.1 + resolution: "lightningcss-win32-x64-msvc@npm:1.31.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "lightningcss@npm:^1.30.1": - version: 1.30.2 - resolution: "lightningcss@npm:1.30.2" + version: 1.31.1 + resolution: "lightningcss@npm:1.31.1" dependencies: detect-libc: "npm:^2.0.3" - lightningcss-android-arm64: "npm:1.30.2" - lightningcss-darwin-arm64: "npm:1.30.2" - lightningcss-darwin-x64: "npm:1.30.2" - lightningcss-freebsd-x64: "npm:1.30.2" - lightningcss-linux-arm-gnueabihf: "npm:1.30.2" - lightningcss-linux-arm64-gnu: "npm:1.30.2" - lightningcss-linux-arm64-musl: "npm:1.30.2" - lightningcss-linux-x64-gnu: "npm:1.30.2" - lightningcss-linux-x64-musl: "npm:1.30.2" - lightningcss-win32-arm64-msvc: "npm:1.30.2" - lightningcss-win32-x64-msvc: "npm:1.30.2" + lightningcss-android-arm64: "npm:1.31.1" + lightningcss-darwin-arm64: "npm:1.31.1" + lightningcss-darwin-x64: "npm:1.31.1" + lightningcss-freebsd-x64: "npm:1.31.1" + lightningcss-linux-arm-gnueabihf: "npm:1.31.1" + lightningcss-linux-arm64-gnu: "npm:1.31.1" + lightningcss-linux-arm64-musl: "npm:1.31.1" + lightningcss-linux-x64-gnu: "npm:1.31.1" + lightningcss-linux-x64-musl: "npm:1.31.1" + lightningcss-win32-arm64-msvc: "npm:1.31.1" + lightningcss-win32-x64-msvc: "npm:1.31.1" dependenciesMeta: lightningcss-android-arm64: optional: true @@ -11416,7 +10814,7 @@ __metadata: optional: true lightningcss-win32-x64-msvc: optional: true - checksum: 10/d6cc06d9bac295589a49446e9c45a241dfa16f4f81a7318c26cbc0be3e189003ec0da5d9a0fd9bdffc63a3ce05878cc7329277eaac77a826e8b68c73dc96cfda + checksum: 10/3c2b2c2f648b12d9cba623d2e558f74fcce35911077e3d33f97ed521e0ad7a84e2c814628f6e16f64095c4483f6b180dee7b2e441b3ff5f44d142a510785a0c6 languageName: node linkType: hard @@ -11512,9 +10910,9 @@ __metadata: linkType: hard "lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 + version: 4.17.23 + resolution: "lodash@npm:4.17.23" + checksum: 10/82504c88250f58da7a5a4289f57a4f759c44946c005dd232821c7688b5fcfbf4a6268f6a6cdde4b792c91edd2f3b5398c1d2a0998274432cff76def48735e233 languageName: node linkType: hard @@ -11578,9 +10976,9 @@ __metadata: linkType: hard "lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": - version: 11.2.4 - resolution: "lru-cache@npm:11.2.4" - checksum: 10/3b2da74c0b6653767f8164c38c4c4f4d7f0cc10c62bfa512663d94a830191ae6a5af742a8d88a8b30d5f9974652d3adae53931f32069139ad24fa2a18a199aca + version: 11.2.6 + resolution: "lru-cache@npm:11.2.6" + checksum: 10/91222bbd59f793a0a0ad57789388f06b34ac9bb1613433c1d1810457d09db5cd3ec8943227ce2e1f5d6a0a15d6f1a9f129cb2c49ae9b6b10e82d4965fddecbef languageName: node linkType: hard @@ -11603,9 +11001,10 @@ __metadata: linkType: hard "make-fetch-happen@npm:^15.0.0": - version: 15.0.3 - resolution: "make-fetch-happen@npm:15.0.3" + version: 15.0.4 + resolution: "make-fetch-happen@npm:15.0.4" dependencies: + "@gar/promise-retry": "npm:^1.0.0" "@npmcli/agent": "npm:^4.0.0" cacache: "npm:^20.0.1" http-cache-semantics: "npm:^4.1.1" @@ -11615,9 +11014,8 @@ __metadata: minipass-pipeline: "npm:^1.2.4" negotiator: "npm:^1.0.0" proc-log: "npm:^6.0.0" - promise-retry: "npm:^2.0.1" ssri: "npm:^13.0.0" - checksum: 10/78da4fc1df83cb596e2bae25aa0653b8a9c6cbdd6674a104894e03be3acfcd08c70b78f06ef6407fbd6b173f6a60672480d78641e693d05eb71c09c13ee35278 + checksum: 10/4aa75baab500eff4259f2e1a3e76cf01ab3a3cd750037e4bd7b5e22bc5a60f12cc766b3c45e6288accb5ab609e88de5019a8014e0f96f6594b7b03cb504f4b81 languageName: node linkType: hard @@ -11673,8 +11071,8 @@ __metadata: linkType: hard "mdast-util-from-markdown@npm:^2.0.0": - version: 2.0.2 - resolution: "mdast-util-from-markdown@npm:2.0.2" + version: 2.0.3 + resolution: "mdast-util-from-markdown@npm:2.0.3" dependencies: "@types/mdast": "npm:^4.0.0" "@types/unist": "npm:^3.0.0" @@ -11688,7 +11086,7 @@ __metadata: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" unist-util-stringify-position: "npm:^4.0.0" - checksum: 10/69b207913fbcc0469f8c59d922af4d5509b79e809d77c9bd4781543a907fe2ecc8e6433ce0707066a27b117b13f38af3aae4f2d085e18ebd2d3ad5f1a5647902 + checksum: 10/96f2bfb3b240c3d20a57db5d215faed795abf495c65ca2a4d61c0cf796011bc980619aa032d7984b05b67c15edc0eccd12a004a848952d3a598d108cf14901ab languageName: node linkType: hard @@ -11736,10 +11134,10 @@ __metadata: languageName: node linkType: hard -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: 10/38e0984db39139604756903a01397e29e17dcb04207bb3e081412ce725ab17338ecc47220c1b186b6bbe79a658aad1b0d41142884f5a481f36290cdefbe6aa46 +"media-typer@npm:^1.1.0": + version: 1.1.0 + resolution: "media-typer@npm:1.1.0" + checksum: 10/a58dd60804df73c672942a7253ccc06815612326dc1c0827984b1a21704466d7cde351394f47649e56cf7415e6ee2e26e000e81b51b3eebb5a93540e8bf93cbd languageName: node linkType: hard @@ -11776,18 +11174,6 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.83.2": - version: 0.83.2 - resolution: "metro-babel-transformer@npm:0.83.2" - dependencies: - "@babel/core": "npm:^7.25.2" - flow-enums-runtime: "npm:^0.0.6" - hermes-parser: "npm:0.32.0" - nullthrows: "npm:^1.1.1" - checksum: 10/8ca98216c3fc32757cbb445d2e42042617b5a2399d3d409759b168fbd3d52aadf8bb2b8471e4b204ddf5c654b7b146397edb7693f48a0582e7e4e169cf3bbfbb - languageName: node - linkType: hard - "metro-babel-transformer@npm:0.83.3": version: 0.83.3 resolution: "metro-babel-transformer@npm:0.83.3" @@ -11821,15 +11207,6 @@ __metadata: languageName: node linkType: hard -"metro-cache-key@npm:0.83.2": - version: 0.83.2 - resolution: "metro-cache-key@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - checksum: 10/ad60492b1db35b7d4eb1f9ed6f8aa79a051dcb1be3183fcd5b0a810e7c4ba5dba5e9f02e131ccd271d6db2efaa9893ef0e316ef26ebb3ab49cb074fada4de1b5 - languageName: node - linkType: hard - "metro-cache-key@npm:0.83.3": version: 0.83.3 resolution: "metro-cache-key@npm:0.83.3" @@ -11859,18 +11236,6 @@ __metadata: languageName: node linkType: hard -"metro-cache@npm:0.83.2": - version: 0.83.2 - resolution: "metro-cache@npm:0.83.2" - dependencies: - exponential-backoff: "npm:^3.1.1" - flow-enums-runtime: "npm:^0.0.6" - https-proxy-agent: "npm:^7.0.5" - metro-core: "npm:0.83.2" - checksum: 10/3183bcd8e0590ab4630f344f9dd4daa3b2371450e7f4546f2b1128b1386ecece204a74a7e3df49a8f3776b5a4a746fe4aa05f952a97e6f4f61deda80be5c55cf - languageName: node - linkType: hard - "metro-cache@npm:0.83.3": version: 0.83.3 resolution: "metro-cache@npm:0.83.3" @@ -11904,30 +11269,14 @@ __metadata: flow-enums-runtime: "npm:^0.0.6" jest-validate: "npm:^29.7.0" metro: "npm:0.81.5" - metro-cache: "npm:0.81.5" - metro-core: "npm:0.81.5" - metro-runtime: "npm:0.81.5" - checksum: 10/181775bdb3676f9ecd81387a31ca5ceda42f982f7871029e3f606d21aa2d62416bbd61df5e2fd0f13a7242a0144bbf10c7fd4af65839058271a1f823f2970c9b - languageName: node - linkType: hard - -"metro-config@npm:0.83.2": - version: 0.83.2 - resolution: "metro-config@npm:0.83.2" - dependencies: - connect: "npm:^3.6.5" - flow-enums-runtime: "npm:^0.0.6" - jest-validate: "npm:^29.7.0" - metro: "npm:0.83.2" - metro-cache: "npm:0.83.2" - metro-core: "npm:0.83.2" - metro-runtime: "npm:0.83.2" - yaml: "npm:^2.6.1" - checksum: 10/830696bb515ad421f1a25003d64c01bca580b2485c69266e03faf0c8f36f55283388fda5505f53ae400f8298502f712aab6c76655e45996907588288d2586c6b + metro-cache: "npm:0.81.5" + metro-core: "npm:0.81.5" + metro-runtime: "npm:0.81.5" + checksum: 10/181775bdb3676f9ecd81387a31ca5ceda42f982f7871029e3f606d21aa2d62416bbd61df5e2fd0f13a7242a0144bbf10c7fd4af65839058271a1f823f2970c9b languageName: node linkType: hard -"metro-config@npm:0.83.3, metro-config@npm:^0.83.1": +"metro-config@npm:0.83.3": version: 0.83.3 resolution: "metro-config@npm:0.83.3" dependencies: @@ -11943,7 +11292,7 @@ __metadata: languageName: node linkType: hard -"metro-config@npm:0.83.4, metro-config@npm:^0.83.3": +"metro-config@npm:0.83.4, metro-config@npm:^0.83.1, metro-config@npm:^0.83.3": version: 0.83.4 resolution: "metro-config@npm:0.83.4" dependencies: @@ -11970,18 +11319,7 @@ __metadata: languageName: node linkType: hard -"metro-core@npm:0.83.2": - version: 0.83.2 - resolution: "metro-core@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - lodash.throttle: "npm:^4.1.1" - metro-resolver: "npm:0.83.2" - checksum: 10/dbbef6b6d0cdb76ff808928cda59086aa4fc04a50ff76be8e19bd181d9cf270f4fe0a6b60883d0230aeeba2ba65a68875af549c83c2cfee5a1f0988ed1b4fccd - languageName: node - linkType: hard - -"metro-core@npm:0.83.3, metro-core@npm:^0.83.1": +"metro-core@npm:0.83.3": version: 0.83.3 resolution: "metro-core@npm:0.83.3" dependencies: @@ -11992,7 +11330,7 @@ __metadata: languageName: node linkType: hard -"metro-core@npm:0.83.4": +"metro-core@npm:0.83.4, metro-core@npm:^0.83.1": version: 0.83.4 resolution: "metro-core@npm:0.83.4" dependencies: @@ -12020,23 +11358,6 @@ __metadata: languageName: node linkType: hard -"metro-file-map@npm:0.83.2": - version: 0.83.2 - resolution: "metro-file-map@npm:0.83.2" - dependencies: - debug: "npm:^4.4.0" - fb-watchman: "npm:^2.0.0" - flow-enums-runtime: "npm:^0.0.6" - graceful-fs: "npm:^4.2.4" - invariant: "npm:^2.2.4" - jest-worker: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - nullthrows: "npm:^1.1.1" - walker: "npm:^1.0.7" - checksum: 10/349a52c74cd02a1db75d0677c82e31750098e74a67bd1e10b2241e296897bfb20de2d8a2f27d7c292e2b3f492a36a191eb3c1bd5d09d5758b8febd36db86e58f - languageName: node - linkType: hard - "metro-file-map@npm:0.83.3": version: 0.83.3 resolution: "metro-file-map@npm:0.83.3" @@ -12081,16 +11402,6 @@ __metadata: languageName: node linkType: hard -"metro-minify-terser@npm:0.83.2": - version: 0.83.2 - resolution: "metro-minify-terser@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - terser: "npm:^5.15.0" - checksum: 10/ee164bdd3ddf797e1b0f9fd71960b662b40fc3abead77521b1e1435291d38cc151442348362d6afee0596d52fcff48cc6a055a04a7928905e9557968e05293ac - languageName: node - linkType: hard - "metro-minify-terser@npm:0.83.3": version: 0.83.3 resolution: "metro-minify-terser@npm:0.83.3" @@ -12169,15 +11480,6 @@ __metadata: languageName: node linkType: hard -"metro-resolver@npm:0.83.2": - version: 0.83.2 - resolution: "metro-resolver@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - checksum: 10/2ba0cdda5c5a3ddac72fd486a310892638ba7d67a736246ec128674dfa6217d6169bdd0f811874435eae37f0201d72735fe7dddfc0c83a9e1439f05994bc293a - languageName: node - linkType: hard - "metro-resolver@npm:0.83.3": version: 0.83.3 resolution: "metro-resolver@npm:0.83.3" @@ -12206,17 +11508,7 @@ __metadata: languageName: node linkType: hard -"metro-runtime@npm:0.83.2": - version: 0.83.2 - resolution: "metro-runtime@npm:0.83.2" - dependencies: - "@babel/runtime": "npm:^7.25.0" - flow-enums-runtime: "npm:^0.0.6" - checksum: 10/1666e0e5c51d39f916642ed3918cf1996f76e82366ba9ca3132d6c11c5c62a1ab1115e4aa325f0fc9b8cefbe62d6ca8d1948cfde2ee78963491deafcbc79adba - languageName: node - linkType: hard - -"metro-runtime@npm:0.83.3, metro-runtime@npm:^0.83.1": +"metro-runtime@npm:0.83.3": version: 0.83.3 resolution: "metro-runtime@npm:0.83.3" dependencies: @@ -12226,7 +11518,7 @@ __metadata: languageName: node linkType: hard -"metro-runtime@npm:0.83.4, metro-runtime@npm:^0.83.3": +"metro-runtime@npm:0.83.4, metro-runtime@npm:^0.83.1, metro-runtime@npm:^0.83.3": version: 0.83.4 resolution: "metro-runtime@npm:0.83.4" dependencies: @@ -12254,25 +11546,7 @@ __metadata: languageName: node linkType: hard -"metro-source-map@npm:0.83.2": - version: 0.83.2 - resolution: "metro-source-map@npm:0.83.2" - dependencies: - "@babel/traverse": "npm:^7.25.3" - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3" - "@babel/types": "npm:^7.25.2" - flow-enums-runtime: "npm:^0.0.6" - invariant: "npm:^2.2.4" - metro-symbolicate: "npm:0.83.2" - nullthrows: "npm:^1.1.1" - ob1: "npm:0.83.2" - source-map: "npm:^0.5.6" - vlq: "npm:^1.0.0" - checksum: 10/6253f6aa9a19ff35d70a08e1a434b9641874392e3cccec6abc8dcbac1c3e9289e348fa37960f16581c386e8f9ba743631ecc8ed5bf42817a5d5c54b6784c63b5 - languageName: node - linkType: hard - -"metro-source-map@npm:0.83.3, metro-source-map@npm:^0.83.1": +"metro-source-map@npm:0.83.3": version: 0.83.3 resolution: "metro-source-map@npm:0.83.3" dependencies: @@ -12290,7 +11564,7 @@ __metadata: languageName: node linkType: hard -"metro-source-map@npm:0.83.4": +"metro-source-map@npm:0.83.4, metro-source-map@npm:^0.83.1": version: 0.83.4 resolution: "metro-source-map@npm:0.83.4" dependencies: @@ -12323,22 +11597,6 @@ __metadata: languageName: node linkType: hard -"metro-symbolicate@npm:0.83.2": - version: 0.83.2 - resolution: "metro-symbolicate@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - invariant: "npm:^2.2.4" - metro-source-map: "npm:0.83.2" - nullthrows: "npm:^1.1.1" - source-map: "npm:^0.5.6" - vlq: "npm:^1.0.0" - bin: - metro-symbolicate: src/index.js - checksum: 10/1ddd82d0f1e236f4eb69c49b319a5446f364aaa421b4301554898abe86d23a452a5fb5113bfef6b6c68c2a697ad3a68fb00919a2f7b9b73a040c92689002a8d4 - languageName: node - linkType: hard - "metro-symbolicate@npm:0.83.3": version: 0.83.3 resolution: "metro-symbolicate@npm:0.83.3" @@ -12385,20 +11643,6 @@ __metadata: languageName: node linkType: hard -"metro-transform-plugins@npm:0.83.2": - version: 0.83.2 - resolution: "metro-transform-plugins@npm:0.83.2" - dependencies: - "@babel/core": "npm:^7.25.2" - "@babel/generator": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.3" - flow-enums-runtime: "npm:^0.0.6" - nullthrows: "npm:^1.1.1" - checksum: 10/e3ebef11d64e5e568fde3fe2edc5d7f1e9508b28c7607c14dd711bc29058cbfc97e53edbfee79bd60f58c189e4d74869d87a30488534024fe88503296a7d095a - languageName: node - linkType: hard - "metro-transform-plugins@npm:0.83.3": version: 0.83.3 resolution: "metro-transform-plugins@npm:0.83.3" @@ -12448,27 +11692,6 @@ __metadata: languageName: node linkType: hard -"metro-transform-worker@npm:0.83.2": - version: 0.83.2 - resolution: "metro-transform-worker@npm:0.83.2" - dependencies: - "@babel/core": "npm:^7.25.2" - "@babel/generator": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.3" - "@babel/types": "npm:^7.25.2" - flow-enums-runtime: "npm:^0.0.6" - metro: "npm:0.83.2" - metro-babel-transformer: "npm:0.83.2" - metro-cache: "npm:0.83.2" - metro-cache-key: "npm:0.83.2" - metro-minify-terser: "npm:0.83.2" - metro-source-map: "npm:0.83.2" - metro-transform-plugins: "npm:0.83.2" - nullthrows: "npm:^1.1.1" - checksum: 10/b4286b1b0511e46e2ec265e24138d03d8a794687260beae297de3d378285cce0e06132280dac62d447dfaf55627432c28463939a63136f3a84c2cf6b880d3865 - languageName: node - linkType: hard - "metro-transform-worker@npm:0.83.3": version: 0.83.3 resolution: "metro-transform-worker@npm:0.83.3" @@ -12561,57 +11784,7 @@ __metadata: languageName: node linkType: hard -"metro@npm:0.83.2": - version: 0.83.2 - resolution: "metro@npm:0.83.2" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/core": "npm:^7.25.2" - "@babel/generator": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.3" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.3" - "@babel/types": "npm:^7.25.2" - accepts: "npm:^1.3.7" - chalk: "npm:^4.0.0" - ci-info: "npm:^2.0.0" - connect: "npm:^3.6.5" - debug: "npm:^4.4.0" - error-stack-parser: "npm:^2.0.6" - flow-enums-runtime: "npm:^0.0.6" - graceful-fs: "npm:^4.2.4" - hermes-parser: "npm:0.32.0" - image-size: "npm:^1.0.2" - invariant: "npm:^2.2.4" - jest-worker: "npm:^29.7.0" - jsc-safe-url: "npm:^0.2.2" - lodash.throttle: "npm:^4.1.1" - metro-babel-transformer: "npm:0.83.2" - metro-cache: "npm:0.83.2" - metro-cache-key: "npm:0.83.2" - metro-config: "npm:0.83.2" - metro-core: "npm:0.83.2" - metro-file-map: "npm:0.83.2" - metro-resolver: "npm:0.83.2" - metro-runtime: "npm:0.83.2" - metro-source-map: "npm:0.83.2" - metro-symbolicate: "npm:0.83.2" - metro-transform-plugins: "npm:0.83.2" - metro-transform-worker: "npm:0.83.2" - mime-types: "npm:^2.1.27" - nullthrows: "npm:^1.1.1" - serialize-error: "npm:^2.1.0" - source-map: "npm:^0.5.6" - throat: "npm:^5.0.0" - ws: "npm:^7.5.10" - yargs: "npm:^17.6.2" - bin: - metro: src/cli.js - checksum: 10/524c0f98ce8be619a345f58c39d19e6d0e5745dfd156c9b0a06201e6d9ad59e4405922f09f56fe92a86df9e06b0e89b173a3136640f1ec69c395b9ca34c1b042 - languageName: node - linkType: hard - -"metro@npm:0.83.3, metro@npm:^0.83.1": +"metro@npm:0.83.3": version: 0.83.3 resolution: "metro@npm:0.83.3" dependencies: @@ -12661,7 +11834,7 @@ __metadata: languageName: node linkType: hard -"metro@npm:0.83.4": +"metro@npm:0.83.4, metro@npm:^0.83.1": version: 0.83.4 resolution: "metro@npm:0.83.4" dependencies: @@ -12981,7 +12154,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.27, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.27, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -13031,30 +12204,30 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^10.1.1": - version: 10.1.1 - resolution: "minimatch@npm:10.1.1" +"minimatch@npm:^10.2.2": + version: 10.2.4 + resolution: "minimatch@npm:10.2.4" dependencies: - "@isaacs/brace-expansion": "npm:^5.0.0" - checksum: 10/110f38921ea527022e90f7a5f43721838ac740d0a0c26881c03b57c261354fb9a0430e40b2c56dfcea2ef3c773768f27210d1106f1f2be19cde3eea93f26f45e + brace-expansion: "npm:^5.0.2" + checksum: 10/aea4874e521c55bb60744685bbffe3d152e5460f84efac3ea936e6bbe2ceba7deb93345fec3f9bb17f7b6946776073a64d40ae32bf5f298ad690308121068a1f languageName: node linkType: hard "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" + version: 3.1.5 + resolution: "minimatch@npm:3.1.5" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634 + checksum: 10/b11a7ee5773cd34c1a0c8436cdbe910901018fb4b6cb47aa508a18d567f6efd2148507959e35fba798389b161b8604a2d704ccef751ea36bd4582f9852b7d63f languageName: node linkType: hard "minimatch@npm:^9.0.0, minimatch@npm:^9.0.4": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" + version: 9.0.8 + resolution: "minimatch@npm:9.0.8" dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 + brace-expansion: "npm:^5.0.2" + checksum: 10/bffa6514fa576a5052cea75b96b1d4086598c3ba45464dffcff14d00c2866805c088072ae21460ade250455c2da72e67556b1c3b830ddaf0b4697dca62f6d744 languageName: node linkType: hard @@ -13075,17 +12248,17 @@ __metadata: linkType: hard "minipass-fetch@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass-fetch@npm:5.0.0" + version: 5.0.2 + resolution: "minipass-fetch@npm:5.0.2" dependencies: - encoding: "npm:^0.1.13" + iconv-lite: "npm:^0.7.2" minipass: "npm:^7.0.3" - minipass-sized: "npm:^1.0.3" + minipass-sized: "npm:^2.0.0" minizlib: "npm:^3.0.1" dependenciesMeta: - encoding: + iconv-lite: optional: true - checksum: 10/4fb7dca630a64e6970a8211dade505bfe260d0b8d60beb348dcdfb95fe35ef91d977b29963929c9017ae0805686aa3f413107dc6bc5deac9b9e26b0b41c3b86c + checksum: 10/4f3f65ea5b20a3a287765ebf21cc73e62031f754944272df2a3039296cc75a8fc2dc50b8a3c4f39ce3ac6e5cc583e8dc664d12c6ab98e0883d263e49f344bc86 languageName: node linkType: hard @@ -13107,12 +12280,12 @@ __metadata: languageName: node linkType: hard -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" +"minipass-sized@npm:^2.0.0": + version: 2.0.0 + resolution: "minipass-sized@npm:2.0.0" dependencies: - minipass: "npm:^3.0.0" - checksum: 10/40982d8d836a52b0f37049a0a7e5d0f089637298e6d9b45df9c115d4f0520682a78258905e5c8b180fb41b593b0a82cc1361d2c74b45f7ada66334f84d1ecfdd + minipass: "npm:^7.1.2" + checksum: 10/3b89adf64ca705662f77481e278eff5ec0a57aeffb5feba7cc8843722b1e7770efc880f2a17d1d4877b2d7bf227873cd46afb4da44c0fd18088b601ea50f96bb languageName: node linkType: hard @@ -13125,10 +12298,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": - version: 7.1.2 - resolution: "minipass@npm:7.1.2" - checksum: 10/c25f0ee8196d8e6036661104bacd743785b2599a21de5c516b32b3fa2b83113ac89a2358465bc04956baab37ffb956ae43be679b2262bf7be15fce467ccd7950 +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": + version: 7.1.3 + resolution: "minipass@npm:7.1.3" + checksum: 10/175e4d5e20980c3cd316ae82d2c031c42f6c746467d8b1905b51060a0ba4461441a0c25bb67c025fd9617f9a3873e152c7b543c6b5ac83a1846be8ade80dffd6 languageName: node linkType: hard @@ -13245,7 +12418,19 @@ __metadata: languageName: node linkType: hard -"node-forge@npm:^1.2.1, node-forge@npm:^1.3.1, node-forge@npm:^1.3.3": +"node-exports-info@npm:^1.6.0": + version: 1.6.0 + resolution: "node-exports-info@npm:1.6.0" + dependencies: + array.prototype.flatmap: "npm:^1.3.3" + es-errors: "npm:^1.3.0" + object.entries: "npm:^1.1.9" + semver: "npm:^6.3.1" + checksum: 10/0a1667d535f499ac1fe6c6d22f8146bc8b68abc76fa355856219202f6cf5f386027e0ff054e66a22d08be02acbc63fcdc9f98d0fbc97993f5eabc66408fdadad + languageName: node + linkType: hard + +"node-forge@npm:^1.3.3": version: 1.3.3 resolution: "node-forge@npm:1.3.3" checksum: 10/f41c31b9296771a4b8c955d58417471712f54f324603a35f8e6cbac19d5e6eaaf5fd5fd14584dfedecbf46a05438ded6eee60a5f2f0822fc5061aaa073cfc75d @@ -13253,8 +12438,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 12.1.0 - resolution: "node-gyp@npm:12.1.0" + version: 12.2.0 + resolution: "node-gyp@npm:12.2.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -13263,12 +12448,12 @@ __metadata: nopt: "npm:^9.0.0" proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" - tar: "npm:^7.5.2" + tar: "npm:^7.5.4" tinyglobby: "npm:^0.2.12" which: "npm:^6.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/d93079236cef1dd7fa4df683708d8708ad255c55865f6656664c8959e4d3963d908ac48e8f9f341705432e979dbbf502a40d68d65a17fe35956a5a05ba6c1cb4 + checksum: 10/4ebab5b77585a637315e969c2274b5520562473fe75de850639a580c2599652fb9f33959ec782ea45a2e149d8f04b548030f472eeeb3dbdf19a7f2ccbc30b908 languageName: node linkType: hard @@ -13357,15 +12542,6 @@ __metadata: languageName: node linkType: hard -"ob1@npm:0.83.2": - version: 0.83.2 - resolution: "ob1@npm:0.83.2" - dependencies: - flow-enums-runtime: "npm:^0.0.6" - checksum: 10/8eb482589b66cf46600d1231c2ea50a365f47ee5db0274795d1d3f5c43112e255b931a41ce1ef8a220f31b4fb985fb269c6a54bf7e9719f90dac3f4001a89a6c - languageName: node - linkType: hard - "ob1@npm:0.83.3": version: 0.83.3 resolution: "ob1@npm:0.83.3" @@ -13455,7 +12631,7 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:2.4.1, on-finished@npm:~2.4.1": +"on-finished@npm:^2.4.1, on-finished@npm:~2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: @@ -13774,13 +12950,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^2.0.0": - version: 2.0.1 - resolution: "path-scurry@npm:2.0.1" +"path-scurry@npm:^2.0.2": + version: 2.0.2 + resolution: "path-scurry@npm:2.0.2" dependencies: lru-cache: "npm:^11.0.0" minipass: "npm:^7.1.2" - checksum: 10/1e9c74e9ccf94d7c16056a5cb2dba9fa23eec1bc221ab15c44765486b9b9975b4cd9a4d55da15b96eadf67d5202e9a2f1cec9023fbb35fe7d9ccd0ff1891f88b + checksum: 10/2b4257422bcb870a4c2d205b3acdbb213a72f5e2250f61c80f79c9d014d010f82bdf8584441612c8e1fa4eb098678f5704a66fa8377d72646bad4be38e57a2c3 languageName: node linkType: hard @@ -13885,93 +13061,34 @@ __metadata: languageName: node linkType: hard -"prettier-linter-helpers@npm:^1.0.0": - version: 1.0.0 - resolution: "prettier-linter-helpers@npm:1.0.0" +"prettier-linter-helpers@npm:^1.0.1": + version: 1.0.1 + resolution: "prettier-linter-helpers@npm:1.0.1" dependencies: fast-diff: "npm:^1.1.2" - checksum: 10/00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 + checksum: 10/2dc35f5036a35f4c4f5e645887edda1436acb63687a7f12b2383e0a6f3c1f76b8a0a4709fe4d82e19157210feb5984b159bb714d43290022911ab53d606474ec languageName: node linkType: hard "prettier-plugin-jsdoc@npm:^1.3.0": - version: 1.7.0 - resolution: "prettier-plugin-jsdoc@npm:1.7.0" + version: 1.8.0 + resolution: "prettier-plugin-jsdoc@npm:1.8.0" dependencies: binary-searching: "npm:^2.0.5" comment-parser: "npm:^1.4.0" mdast-util-from-markdown: "npm:^2.0.0" - prettier-plugin-tailwindcss: "npm:^0.7.1" peerDependencies: prettier: ^3.0.0 - checksum: 10/28f71f429f453e9073c9bf3eff1131f0e461b21ff184f9da54d1f3919a5898817b32abd87440c7e342f2320280b44ff141096bafd20204f950cce60780552d8b - languageName: node - linkType: hard - -"prettier-plugin-tailwindcss@npm:^0.7.1": - version: 0.7.2 - resolution: "prettier-plugin-tailwindcss@npm:0.7.2" - peerDependencies: - "@ianvs/prettier-plugin-sort-imports": "*" - "@prettier/plugin-hermes": "*" - "@prettier/plugin-oxc": "*" - "@prettier/plugin-pug": "*" - "@shopify/prettier-plugin-liquid": "*" - "@trivago/prettier-plugin-sort-imports": "*" - "@zackad/prettier-plugin-twig": "*" - prettier: ^3.0 - prettier-plugin-astro: "*" - prettier-plugin-css-order: "*" - prettier-plugin-jsdoc: "*" - prettier-plugin-marko: "*" - prettier-plugin-multiline-arrays: "*" - prettier-plugin-organize-attributes: "*" - prettier-plugin-organize-imports: "*" - prettier-plugin-sort-imports: "*" - prettier-plugin-svelte: "*" - peerDependenciesMeta: - "@ianvs/prettier-plugin-sort-imports": - optional: true - "@prettier/plugin-hermes": - optional: true - "@prettier/plugin-oxc": - optional: true - "@prettier/plugin-pug": - optional: true - "@shopify/prettier-plugin-liquid": - optional: true - "@trivago/prettier-plugin-sort-imports": - optional: true - "@zackad/prettier-plugin-twig": - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-multiline-arrays: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-svelte: - optional: true - checksum: 10/c77253025d62555e761b0a76df6e5c73d48d96a259ac157de9c21f11a7851fd2b434c27b296b119530895a57fe87c8cf337b0df0bff97b2bc1a0d48a442b0d99 + checksum: 10/f25412b87b74f77606addb718207b6273d41697a04931c52e011c6c637fdebfeca57a1572523cb95e144e808840af1399b5fd72767d14281ea2066c0b8b70b11 languageName: node linkType: hard "prettier@npm:^3.3.3": - version: 3.7.4 - resolution: "prettier@npm:3.7.4" + version: 3.8.1 + resolution: "prettier@npm:3.8.1" bin: prettier: bin/prettier.cjs - checksum: 10/b4d00ea13baed813cb777c444506632fb10faaef52dea526cacd03085f01f6db11fc969ccebedf05bf7d93c3960900994c6adf1b150e28a31afd5cfe7089b313 + checksum: 10/3da1cf8c1ef9bea828aa618553696c312e951f810bee368f6887109b203f18ee869fe88f66e65f9cf60b7cb1f2eae859892c860a300c062ff8ec69c381fc8dbd languageName: node linkType: hard @@ -14025,16 +13142,6 @@ __metadata: languageName: node linkType: hard -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10/96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 - languageName: node - linkType: hard - "promise@npm:^8.3.0": version: 8.3.0 resolution: "promise@npm:8.3.0" @@ -14098,12 +13205,12 @@ __metadata: languageName: node linkType: hard -"qs@npm:~6.14.0": - version: 6.14.0 - resolution: "qs@npm:6.14.0" +"qs@npm:^6.14.1": + version: 6.15.0 + resolution: "qs@npm:6.15.0" dependencies: side-channel: "npm:^1.1.0" - checksum: 10/a60e49bbd51c935a8a4759e7505677b122e23bf392d6535b8fc31c1e447acba2c901235ecb192764013cd2781723dc1f61978b5fdd93cc31d7043d31cdc01974 + checksum: 10/a3458f2f389285c3512e0ebc55522ee370ac7cb720ba9f0eff3e30fb2bb07631caf556c08e2a3d4481a371ac14faa9ceb7442a0610c5a7e55b23a5bdee7b701c languageName: node linkType: hard @@ -14142,15 +13249,15 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:~2.5.3": - version: 2.5.3 - resolution: "raw-body@npm:2.5.3" +"raw-body@npm:^3.0.1": + version: 3.0.2 + resolution: "raw-body@npm:3.0.2" dependencies: bytes: "npm:~3.1.2" http-errors: "npm:~2.0.1" - iconv-lite: "npm:~0.4.24" + iconv-lite: "npm:~0.7.0" unpipe: "npm:~1.0.0" - checksum: 10/f35759fe5a6548e7c529121ead1de4dd163f899749a5896c42e278479df2d9d7f98b5bb17312737c03617765e5a1433e586f717616e5cfbebc13b4738b820601 + checksum: 10/4168c82157bd69175d5bd960e59b74e253e237b358213694946a427a6f750a18b8e150f036fed3421b3e83294b071a4e2bb01037a79ccacdac05360c63d3ebba languageName: node linkType: hard @@ -14209,9 +13316,9 @@ __metadata: linkType: hard "react-is@npm:^19.1.0": - version: 19.2.1 - resolution: "react-is@npm:19.2.1" - checksum: 10/d2d0f2b55710c73af1ee5c17e438a274a52758522af9cb1f1f6df35b233a5eb158f4dc8e38e0c058b090bf7d432f27fc6c59dd016c811109260097cea5268461 + version: 19.2.4 + resolution: "react-is@npm:19.2.4" + checksum: 10/3360fc50a38c23299c5003a709949f2439b2901e77962eea78d892f526f710d05a7777b600b302f853583d1861979b00d7a0a071c89c6562eac5740ac29b9665 languageName: node linkType: hard @@ -14242,8 +13349,8 @@ __metadata: linkType: hard "react-native-builder-bob@npm:^0.40.12": - version: 0.40.16 - resolution: "react-native-builder-bob@npm:0.40.16" + version: 0.40.18 + resolution: "react-native-builder-bob@npm:0.40.18" dependencies: "@babel/core": "npm:^7.25.2" "@babel/plugin-transform-flow-strip-types": "npm:^7.26.5" @@ -14264,12 +13371,12 @@ __metadata: json5: "npm:^2.2.1" kleur: "npm:^4.1.4" prompts: "npm:^2.4.2" - react-native-monorepo-config: "npm:^0.1.8" + react-native-monorepo-config: "npm:^0.3.3" which: "npm:^2.0.2" yargs: "npm:^17.5.1" bin: bob: bin/bob - checksum: 10/7f9c6e02131a833d68df92e6338f86e2880c7404116c5104c7eaa1cb8517ed559f2de591306b6d67e0af39f4f4fef9894b69b3fd624dce35822fb7d4b752776b + checksum: 10/06eddba046a508dff0aa322c823fa57a280e2ed6a6f586de2114ebc11b6bb7863714eaaff8e93d681bb851fb4f9e792b102541211847f0e546f4e9546df6c3de languageName: node linkType: hard @@ -14420,13 +13527,34 @@ __metadata: languageName: node linkType: hard -"react-native-monorepo-config@npm:^0.1.8": - version: 0.1.10 - resolution: "react-native-monorepo-config@npm:0.1.10" +"react-native-monorepo-config@npm:^0.3.3": + version: 0.3.3 + resolution: "react-native-monorepo-config@npm:0.3.3" dependencies: escape-string-regexp: "npm:^5.0.0" fast-glob: "npm:^3.3.3" - checksum: 10/36611eca9cbda6647111e659d5c466fdba002c608172b9d25880b6e3ac95c51f41d15520e06d9d3188c096b0c9182caeba7b9340c64f6b45f1fee331c08b877b + checksum: 10/d301020b38f80010bce38108a9e1b72deee3eb37f1ba5e2f0471dc0737584b8d25158a2e649c38ddbe890b653c29a69ef82d73c522473cfdb2396239ee84fcd8 + languageName: node + linkType: hard + +"react-native-nitro-image@npm:^0.12.0": + version: 0.12.0 + resolution: "react-native-nitro-image@npm:0.12.0" + peerDependencies: + react: "*" + react-native: "*" + react-native-nitro-modules: "*" + checksum: 10/03f165381c35e060d4d05eae3ce029b32a4009482f327e9526840f306181ca87a862b335e12667c55d4ee9f2069542ca93dd112feb7f1822bf7d2ddc38fe58f0 + languageName: node + linkType: hard + +"react-native-nitro-modules@npm:^0.33.9": + version: 0.33.9 + resolution: "react-native-nitro-modules@npm:0.33.9" + peerDependencies: + react: "*" + react-native: "*" + checksum: 10/4ebf4db46d1e4987a0e52054724081aa9712bcd1d505a6dbdd47aebc6afe72a7abaa0e947651d9f3cc594e4eb3dba47fc6f59db27c5a5ed383946e40d96543a0 languageName: node linkType: hard @@ -14522,6 +13650,19 @@ __metadata: languageName: node linkType: hard +"react-native-vision-camera@npm:5.0.0-beta.2": + version: 5.0.0-beta.2 + resolution: "react-native-vision-camera@npm:5.0.0-beta.2" + peerDependencies: + react: "*" + react-native: "*" + react-native-nitro-image: "*" + react-native-nitro-modules: "*" + react-native-worklets: "*" + checksum: 10/1f38d097d001c10b8544d0b931a9387a91c5df1e0677ae53e639962a90589586af02ca658ca5e99a5ca179af8d86bc8365227cf70750f2df4bfb775f4a26fc6d + languageName: node + linkType: hard + "react-native-worklets@npm:0.7.4": version: 0.7.4 resolution: "react-native-worklets@npm:0.7.4" @@ -14836,19 +13977,10 @@ __metadata: languageName: node linkType: hard -"resolve-global@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-global@npm:1.0.0" - dependencies: - global-dirs: "npm:^0.1.1" - checksum: 10/c4e11d33e84bde7516b824503ffbe4b6cce863d5ce485680fd3db997b7c64da1df98321b1fd0703b58be8bc9bc83bc96bd83043f96194386b45eb47229efb6b6 - languageName: node - linkType: hard - "resolve-workspace-root@npm:^2.0.0": - version: 2.0.0 - resolution: "resolve-workspace-root@npm:2.0.0" - checksum: 10/c2de02d213ca327964bd2a1e6cbb17d96d2adbd738b6aa737129ed952ef4f7e52b79452599e1ef99c6cf4f109c937866b7f3abf34f8f41af376e1b08a03523a4 + version: 2.0.1 + resolution: "resolve-workspace-root@npm:2.0.1" + checksum: 10/d10b1897018c291a8c0c6d6a36d174830bc004b7aa2a9e416b9c1e0ea4d8575a68bc4ed9d6f28be5859a3b0d5f70f0ffdc12e6ef0af010f487d91cf7d4ce8ff0 languageName: node linkType: hard @@ -14859,7 +13991,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.22.10, resolve@npm:^1.22.2": +"resolve@npm:^1.22.11, resolve@npm:^1.22.2": version: 1.22.11 resolution: "resolve@npm:1.22.11" dependencies: @@ -14873,15 +14005,18 @@ __metadata: linkType: hard "resolve@npm:^2.0.0-next.5": - version: 2.0.0-next.5 - resolution: "resolve@npm:2.0.0-next.5" + version: 2.0.0-next.6 + resolution: "resolve@npm:2.0.0-next.6" dependencies: - is-core-module: "npm:^2.13.0" + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + node-exports-info: "npm:^1.6.0" + object-keys: "npm:^1.1.1" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/2d6fd28699f901744368e6f2032b4268b4c7b9185fd8beb64f68c93ac6b22e52ae13560ceefc96241a665b985edf9ffd393ae26d2946a7d3a07b7007b7d51e79 + checksum: 10/c95cb98b8d3f9e2a979e6eb8b7e0b0e13f08da62607a45207275f151d640152244568a9a9cd01662a21e3746792177cbf9be1dacb88f7355edf4db49d9ee27e5 languageName: node linkType: hard @@ -14894,7 +14029,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin": +"resolve@patch:resolve@npm%3A^1.22.11#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin": version: 1.22.11 resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" dependencies: @@ -14908,15 +14043,18 @@ __metadata: linkType: hard "resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": - version: 2.0.0-next.5 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" + version: 2.0.0-next.6 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d" dependencies: - is-core-module: "npm:^2.13.0" + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + node-exports-info: "npm:^1.6.0" + object-keys: "npm:^1.1.1" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/05fa778de9d0347c8b889eb7a18f1f06bf0f801b0eb4610b4871a4b2f22e220900cf0ad525e94f990bb8d8921c07754ab2122c0c225ab4cdcea98f36e64fa4c2 + checksum: 10/1b26738af76c80b341075e6bf4b202ef85f85f4a2cbf2934246c3b5f20c682cf352833fc6e32579c6967419226d3ab63e8d321328da052c87a31eaad91e3571a languageName: node linkType: hard @@ -14949,10 +14087,10 @@ __metadata: languageName: node linkType: hard -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10/1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 10/6125ec2e06d6e47e9201539c887defba4e47f63471db304c59e4b82fc63c8e89ca06a77e9d34939a9a42a76f00774b2f46c0d4a4cbb3e287268bd018ed69426d languageName: node linkType: hard @@ -15024,7 +14162,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 @@ -15032,9 +14170,9 @@ __metadata: linkType: hard "sax@npm:>=0.6.0": - version: 1.4.3 - resolution: "sax@npm:1.4.3" - checksum: 10/99161215f23e0b13bc7f94adbaa63a6a2f188fe291c450790d92b5bc3cd7966d574a15dcd5918c30917e17ed68129e34cc3168564263b967f9b8f61869d6ccc4 + version: 1.4.4 + resolution: "sax@npm:1.4.4" + checksum: 10/00ff7b258baa37d98f8abfa0b5c8b3ee739ca37e9b6ecb83405be9e6e5b0b2856394a5eff142db1d987d589b54b139d4236f25830c1e17a2b640efa53c8fda72 languageName: node linkType: hard @@ -15061,7 +14199,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.7.3, semver@npm:^7.1.3, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1": +"semver@npm:7.7.3": version: 7.7.3 resolution: "semver@npm:7.7.3" bin: @@ -15079,7 +14217,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.7.2, semver@npm:^7.7.3": +"semver@npm:^7.1.3, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3": version: 7.7.4 resolution: "semver@npm:7.7.4" bin: @@ -15097,30 +14235,9 @@ __metadata: languageName: node linkType: hard -"send@npm:0.19.0": - version: 0.19.0 - resolution: "send@npm:0.19.0" - dependencies: - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - mime: "npm:1.6.0" - ms: "npm:2.1.3" - on-finished: "npm:2.4.1" - range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 10/1f6064dea0ae4cbe4878437aedc9270c33f2a6650a77b56a16b62d057527f2766d96ee282997dd53ec0339082f2aad935bc7d989b46b48c82fc610800dc3a1d0 - languageName: node - linkType: hard - -"send@npm:^0.19.0": - version: 0.19.1 - resolution: "send@npm:0.19.1" +"send@npm:^0.19.0, send@npm:~0.19.1": + version: 0.19.2 + resolution: "send@npm:0.19.2" dependencies: debug: "npm:2.6.9" depd: "npm:2.0.0" @@ -15128,14 +14245,14 @@ __metadata: encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" + fresh: "npm:~0.5.2" + http-errors: "npm:~2.0.1" mime: "npm:1.6.0" ms: "npm:2.1.3" - on-finished: "npm:2.4.1" + on-finished: "npm:~2.4.1" range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 10/360bf50a839c7bbc181f67c3a0f3424a7ad8016dfebcd9eb90891f4b762b4377da14414c32250d67b53872e884171c27469110626f6c22765caa7c38c207ee1d + statuses: "npm:~2.0.2" + checksum: 10/e932a592f62c58560b608a402d52333a8ae98a5ada076feb5db1d03adaa77c3ca32a7befa1c4fd6dedc186e88f342725b0cb4b3d86835eaf834688b259bef18d languageName: node linkType: hard @@ -15147,14 +14264,14 @@ __metadata: linkType: hard "serve-static@npm:^1.13.1, serve-static@npm:^1.16.2": - version: 1.16.2 - resolution: "serve-static@npm:1.16.2" + version: 1.16.3 + resolution: "serve-static@npm:1.16.3" dependencies: encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" parseurl: "npm:~1.3.3" - send: "npm:0.19.0" - checksum: 10/7fa9d9c68090f6289976b34fc13c50ac8cd7f16ae6bce08d16459300f7fc61fbc2d7ebfa02884c073ec9d6ab9e7e704c89561882bbe338e99fcacb2912fde737 + send: "npm:~0.19.1" + checksum: 10/149d6718dd9e53166784d0a65535e21a7c01249d9c51f57224b786a7306354c6807e7811a9f6c143b45c863b1524721fca2f52b5c81a8b5194e3dde034a03b9c languageName: node linkType: hard @@ -15209,7 +14326,7 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": +"setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: 10/fde1630422502fbbc19e6844346778f99d449986b2f9cdcceb8326730d2f3d9964dbcb03c02aaadaefffecd0f2c063315ebea8b3ad895914bf1afc1747fc172e @@ -15487,11 +14604,11 @@ __metadata: linkType: hard "ssri@npm:^13.0.0": - version: 13.0.0 - resolution: "ssri@npm:13.0.0" + version: 13.0.1 + resolution: "ssri@npm:13.0.1" dependencies: minipass: "npm:^7.0.3" - checksum: 10/fd59bfedf0659c1b83f6e15459162da021f08ec0f5834dd9163296f8b77ee82f9656aa1d415c3d3848484293e0e6aefdd482e863e52ddb53d520bb73da1eeec1 + checksum: 10/ae560d0378d074006a71b06af71bfbe84a3fe1ac6e16c1f07575f69e670d40170507fe52b21bcc23399429bc6a15f4bc3ea8d9bc88e9dfd7e87de564e6da6a72 languageName: node linkType: hard @@ -15520,13 +14637,6 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 10/18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb - languageName: node - linkType: hard - "statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" @@ -15565,6 +14675,13 @@ __metadata: languageName: node linkType: hard +"strict-url-sanitise@npm:0.0.1": + version: 0.0.1 + resolution: "strict-url-sanitise@npm:0.0.1" + checksum: 10/cab6ae551f998f18ea7fb14176a9d835f5b304e5419c61851de897c830ccc20c2848bbb50ced242227114e06a3f6379dcc9179a84bc0a7b8cf81f5192b5b4789 + languageName: node + linkType: hard + "string-length@npm:^4.0.2": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -15737,10 +14854,10 @@ __metadata: languageName: node linkType: hard -"strnum@npm:^1.1.1": - version: 1.1.2 - resolution: "strnum@npm:1.1.2" - checksum: 10/ccd6297a1fdaf0fc8ea0ea904acdae76878d49a4b0d98a70155df4bc081fd88eac5ec99fb150f3d1d1af065c1898d38420705259ba6c39aa850c671bcd54e35d +"strnum@npm:^2.1.2": + version: 2.1.2 + resolution: "strnum@npm:2.1.2" + checksum: 10/7d894dff385e3a5c5b29c012cf0a7ea7962a92c6a299383c3d6db945ad2b6f3e770511356a9774dbd54444c56af1dc7c435dad6466c47293c48173274dd6c631 languageName: node linkType: hard @@ -15837,16 +14954,7 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.11.4, synckit@npm:^0.11.7": - version: 0.11.11 - resolution: "synckit@npm:0.11.11" - dependencies: - "@pkgr/core": "npm:^0.2.9" - checksum: 10/6ecd88212b5be80004376b6ea74babcba284566ff59a50d8803afcaa78c165b5d268635c1dd84532ee3f690a979409e1eda225a8a35bed2d135ffdcea06ce7b0 - languageName: node - linkType: hard - -"synckit@npm:^0.11.8": +"synckit@npm:^0.11.12, synckit@npm:^0.11.4, synckit@npm:^0.11.8": version: 0.11.12 resolution: "synckit@npm:0.11.12" dependencies: @@ -15855,23 +14963,16 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.5.2": - version: 7.5.2 - resolution: "tar@npm:7.5.2" +"tar@npm:^7.5.2, tar@npm:^7.5.4": + version: 7.5.9 + resolution: "tar@npm:7.5.9" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10/dbad9c9a07863cd1bdf8801d563b3280aa7dd0f4a6cead779ff7516d148dc80b4c04639ba732d47f91f04002f57e8c3c6573a717d649daecaac74ce71daa7ad3 - languageName: node - linkType: hard - -"temp-dir@npm:~2.0.0": - version: 2.0.0 - resolution: "temp-dir@npm:2.0.0" - checksum: 10/cc4f0404bf8d6ae1a166e0e64f3f409b423f4d1274d8c02814a59a5529f07db6cd070a749664141b992b2c1af337fa9bb451a460a43bb9bcddc49f235d3115aa + checksum: 10/1213cdde9c22d6acf8809ba5d2a025212ce3517bc99c4a4c6981b7dc0489bf3b164db9c826c9517680889194c9ba57448c8ff0da35eca9a60bb7689bf0b3897d languageName: node linkType: hard @@ -15886,8 +14987,8 @@ __metadata: linkType: hard "terser@npm:^5.15.0": - version: 5.44.1 - resolution: "terser@npm:5.44.1" + version: 5.46.0 + resolution: "terser@npm:5.46.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.15.0" @@ -15895,7 +14996,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/516ece205b7db778c4eddb287a556423cb776b7ca591b06270e558a76aa2d57c8d71d9c3c4410b276d3426beb03516fff7d96ff8b517e10730a72908810c6e33 + checksum: 10/331e4f5a165d91d16ac6a95b510d4f5ef24679e4bc9e1b4e4182e89b7245f614d24ce0def583e2ca3ca45f82ba810991e0c5b66dd4353a6e0b7082786af6bd35 languageName: node linkType: hard @@ -15995,7 +15096,7 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": +"toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 10/952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 @@ -16080,13 +15181,14 @@ __metadata: languageName: node linkType: hard -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" +"type-is@npm:^2.0.1": + version: 2.0.1 + resolution: "type-is@npm:2.0.1" dependencies: - media-typer: "npm:0.3.0" - mime-types: "npm:~2.1.24" - checksum: 10/0bd9eeae5efd27d98fd63519f999908c009e148039d8e7179a074f105362d4fcc214c38b24f6cda79c87e563cbd12083a4691381ed28559220d4a10c2047bed4 + content-type: "npm:^1.0.5" + media-typer: "npm:^1.1.0" + mime-types: "npm:^3.0.0" + checksum: 10/bacdb23c872dacb7bd40fbd9095e6b2fca2895eedbb689160c05534d7d4810a7f4b3fd1ae87e96133c505958f6d602967a68db5ff577b85dd6be76eaa75d58af languageName: node linkType: hard @@ -16189,17 +15291,17 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~7.16.0": - version: 7.16.0 - resolution: "undici-types@npm:7.16.0" - checksum: 10/db43439f69c2d94cc29f75cbfe9de86df87061d6b0c577ebe9bb3255f49b22c50162a7d7eb413b0458b6510b8ca299ac7cff38c3a29fbd31af9f504bcf7fbc0d +"undici-types@npm:~7.18.0": + version: 7.18.2 + resolution: "undici-types@npm:7.18.2" + checksum: 10/e61a5918f624d68420c3ca9d301e9f15b61cba6e97be39fe2ce266dd6151e4afe424d679372638826cb506be33952774e0424141200111a9857e464216c009af languageName: node linkType: hard "undici@npm:^6.18.2": - version: 6.22.0 - resolution: "undici@npm:6.22.0" - checksum: 10/2398de2b460e05f80f994d8a64fcb603aac8f253f8e7ff737067531c1101e1d74644fe5205894b0f7356ea69602d10d6d98c554fcd8b383ec3cc07a3268ec293 + version: 6.23.0 + resolution: "undici@npm:6.23.0" + checksum: 10/56950995e7b628e62c996430445d17995ca9b70f6f2afe760a63da54205660d968bd08f0741b6f4fb008f40aa35c69cce979cd96ced399585d8c897a76a4f1d1 languageName: node linkType: hard @@ -16252,15 +15354,6 @@ __metadata: languageName: node linkType: hard -"unique-string@npm:~2.0.0": - version: 2.0.0 - resolution: "unique-string@npm:2.0.0" - dependencies: - crypto-random-string: "npm:^2.0.0" - checksum: 10/107cae65b0b618296c2c663b8e52e4d1df129e9af04ab38d53b4f2189e96da93f599c85f4589b7ffaf1a11c9327cbb8a34f04c71b8d4950d3e385c2da2a93828 - languageName: node - linkType: hard - "unist-util-stringify-position@npm:^2.0.0": version: 2.0.3 resolution: "unist-util-stringify-position@npm:2.0.3" @@ -16368,8 +15461,8 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.2.0": - version: 1.2.2 - resolution: "update-browserslist-db@npm:1.2.2" + version: 1.2.3 + resolution: "update-browserslist-db@npm:1.2.3" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -16377,7 +15470,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/ae2102d3c83fca35e9deb012d82bfde6f734998ced937e34a3bf239a4b67577108fdd144283aafc0e5e3cf38ca1aecd7714906ba6f562896c762d2f2fa391026 + checksum: 10/059f774300efb4b084a49293143c511f3ae946d40397b5c30914e900cd5691a12b8e61b41dd54ed73d3b56c8204165a0333107dd784ccf8f8c81790bcc423175 languageName: node linkType: hard @@ -16624,8 +15717,8 @@ __metadata: linkType: hard "which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" + version: 1.1.20 + resolution: "which-typed-array@npm:1.1.20" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" @@ -16634,7 +15727,7 @@ __metadata: get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-tostringtag: "npm:^1.0.2" - checksum: 10/12be30fb88567f9863186bee1777f11bea09dd59ed8b3ce4afa7dd5cade75e2f4cc56191a2da165113cc7cf79987ba021dac1e22b5b62aa7e5c56949f2469a68 + checksum: 10/e56da3fc995d330ff012f682476f7883c16b12d36c6717c87c7ca23eb5a5ef957fa89115dacb389b11a9b4e99d5dbe2d12689b4d5d08c050b5aed0eae385b840 languageName: node linkType: hard @@ -16650,13 +15743,13 @@ __metadata: linkType: hard "which@npm:^6.0.0": - version: 6.0.0 - resolution: "which@npm:6.0.0" + version: 6.0.1 + resolution: "which@npm:6.0.1" dependencies: - isexe: "npm:^3.1.1" + isexe: "npm:^4.0.0" bin: node-which: bin/which.js - checksum: 10/df19b2cd8aac94b333fa29b42e8e371a21e634a742a3b156716f7752a5afe1d73fb5d8bce9b89326f453d96879e8fe626eb421e0117eb1a3ce9fd8c97f6b7db9 + checksum: 10/dbea77c7d3058bf6c78bf9659d2dce4d2b57d39a15b826b2af6ac2e5a219b99dc8a831b79fdbc453c0598adb4f3f84cf9c2491fd52beb9f5d2dececcad117f68 languageName: node linkType: hard @@ -16759,8 +15852,8 @@ __metadata: linkType: hard "ws@npm:^8.12.1": - version: 8.18.3 - resolution: "ws@npm:8.18.3" + version: 8.19.0 + resolution: "ws@npm:8.19.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -16769,7 +15862,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/725964438d752f0ab0de582cd48d6eeada58d1511c3f613485b5598a83680bedac6187c765b0fe082e2d8cc4341fc57707c813ae780feee82d0c5efe6a4c61b6 + checksum: 10/26e4901e93abaf73af9f26a93707c95b4845e91a7a347ec8c569e6e9be7f9df066f6c2b817b2d685544e208207898a750b78461e6e8d810c11a370771450c31b languageName: node linkType: hard From 732441e4911f2a375da9dd40c9034d7f8d7c2861 Mon Sep 17 00:00:00 2001 From: Norbert Klockiewicz Date: Fri, 27 Feb 2026 08:45:15 +0100 Subject: [PATCH 24/26] fix: application doesn't start --- apps/computer-vision/metro.config.js | 22 ---------------------- yarn.lock | 10 +++++----- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/apps/computer-vision/metro.config.js b/apps/computer-vision/metro.config.js index 2fd4ca0dd..f8ab2ab96 100644 --- a/apps/computer-vision/metro.config.js +++ b/apps/computer-vision/metro.config.js @@ -1,16 +1,11 @@ // Learn more https://docs.expo.io/guides/customizing-metro const { getDefaultConfig } = require('expo/metro-config'); -const path = require('path'); - -const monorepoRoot = path.resolve(__dirname, '../..'); /** @type {import('expo/metro-config').MetroConfig} */ const config = getDefaultConfig(__dirname); const { transformer, resolver } = config; -config.watchFolders = [monorepoRoot]; - config.transformer = { ...transformer, babelTransformerPath: require.resolve('react-native-svg-transformer/expo'), @@ -19,23 +14,6 @@ config.resolver = { ...resolver, assetExts: resolver.assetExts.filter((ext) => ext !== 'svg'), sourceExts: [...resolver.sourceExts, 'svg'], - nodeModulesPaths: [ - path.resolve(__dirname, 'node_modules'), - path.resolve(monorepoRoot, 'node_modules'), - ], - // Always resolve react and react-native from the monorepo root so that - // workspace packages with their own nested node_modules (e.g. - // packages/react-native-executorch/node_modules/react) don't create a - // second React instance and trigger "Invalid hook call". - resolveRequest: (context, moduleName, platform) => { - if (moduleName === 'react' || moduleName === 'react-native') { - return { - filePath: require.resolve(moduleName, { paths: [monorepoRoot] }), - type: 'sourceFile', - }; - } - return context.resolveRequest(context, moduleName, platform); - }, }; config.resolver.assetExts.push('pte'); diff --git a/yarn.lock b/yarn.lock index e9465204a..e07bf9593 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5533,7 +5533,7 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^6.0.1": +"ansi-regex@npm:^6.2.2": version: 6.2.2 resolution: "ansi-regex@npm:6.2.2" checksum: 10/9b17ce2c6daecc75bcd5966b9ad672c23b184dc3ed9bf3c98a0702f0d2f736c15c10d461913568f2cf527a5e64291c7473358885dd493305c84a1cfed66ba94f @@ -14818,11 +14818,11 @@ __metadata: linkType: hard "strip-ansi@npm:^7.0.1": - version: 7.1.2 - resolution: "strip-ansi@npm:7.1.2" + version: 7.2.0 + resolution: "strip-ansi@npm:7.2.0" dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10/db0e3f9654e519c8a33c50fc9304d07df5649388e7da06d3aabf66d29e5ad65d5e6315d8519d409c15b32fa82c1df7e11ed6f8cd50b0e4404463f0c9d77c8d0b + ansi-regex: "npm:^6.2.2" + checksum: 10/96da3bc6d73cfba1218625a3d66cf7d37a69bf0920d8735b28f9eeaafcdb6c1fe8440e1ae9eb1ba0ca355dbe8702da872e105e2e939fa93e7851b3cb5dd7d316 languageName: node linkType: hard From 6ee9f4d431c202ae41526e575a3320502e604ec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20S=C5=82uszniak?= Date: Fri, 27 Feb 2026 14:03:27 +0100 Subject: [PATCH 25/26] chore: clear apps metro configs and make them run smoothly --- apps/llm/metro.config.js | 21 --------------------- apps/speech/metro.config.js | 21 --------------------- apps/text-embeddings/metro.config.js | 22 ---------------------- package.json | 1 + yarn.lock | 1 + 5 files changed, 2 insertions(+), 64 deletions(-) diff --git a/apps/llm/metro.config.js b/apps/llm/metro.config.js index 90a4ad99b..fa6ef6d8b 100644 --- a/apps/llm/metro.config.js +++ b/apps/llm/metro.config.js @@ -2,15 +2,11 @@ const { getDefaultConfig } = require('expo/metro-config'); const { wrapWithAudioAPIMetroConfig, } = require('react-native-audio-api/metro-config'); -const path = require('path'); -const monorepoRoot = path.resolve(__dirname, '../..'); const config = getDefaultConfig(__dirname); const { transformer, resolver } = config; -config.watchFolders = [monorepoRoot]; - config.transformer = { ...transformer, babelTransformerPath: require.resolve('react-native-svg-transformer/expo'), @@ -19,23 +15,6 @@ config.resolver = { ...resolver, assetExts: resolver.assetExts.filter((ext) => ext !== 'svg'), sourceExts: [...resolver.sourceExts, 'svg'], - nodeModulesPaths: [ - path.resolve(__dirname, 'node_modules'), - path.resolve(monorepoRoot, 'node_modules'), - ], - // Always resolve react and react-native from the monorepo root so that - // workspace packages with their own nested node_modules (e.g. - // packages/react-native-executorch/node_modules/react) don't create a - // second React instance and trigger "Invalid hook call". - resolveRequest: (context, moduleName, platform) => { - if (moduleName === 'react' || moduleName === 'react-native') { - return { - filePath: require.resolve(moduleName, { paths: [monorepoRoot] }), - type: 'sourceFile', - }; - } - return context.resolveRequest(context, moduleName, platform); - }, }; config.resolver.assetExts.push('pte'); diff --git a/apps/speech/metro.config.js b/apps/speech/metro.config.js index 90a4ad99b..fa6ef6d8b 100644 --- a/apps/speech/metro.config.js +++ b/apps/speech/metro.config.js @@ -2,15 +2,11 @@ const { getDefaultConfig } = require('expo/metro-config'); const { wrapWithAudioAPIMetroConfig, } = require('react-native-audio-api/metro-config'); -const path = require('path'); -const monorepoRoot = path.resolve(__dirname, '../..'); const config = getDefaultConfig(__dirname); const { transformer, resolver } = config; -config.watchFolders = [monorepoRoot]; - config.transformer = { ...transformer, babelTransformerPath: require.resolve('react-native-svg-transformer/expo'), @@ -19,23 +15,6 @@ config.resolver = { ...resolver, assetExts: resolver.assetExts.filter((ext) => ext !== 'svg'), sourceExts: [...resolver.sourceExts, 'svg'], - nodeModulesPaths: [ - path.resolve(__dirname, 'node_modules'), - path.resolve(monorepoRoot, 'node_modules'), - ], - // Always resolve react and react-native from the monorepo root so that - // workspace packages with their own nested node_modules (e.g. - // packages/react-native-executorch/node_modules/react) don't create a - // second React instance and trigger "Invalid hook call". - resolveRequest: (context, moduleName, platform) => { - if (moduleName === 'react' || moduleName === 'react-native') { - return { - filePath: require.resolve(moduleName, { paths: [monorepoRoot] }), - type: 'sourceFile', - }; - } - return context.resolveRequest(context, moduleName, platform); - }, }; config.resolver.assetExts.push('pte'); diff --git a/apps/text-embeddings/metro.config.js b/apps/text-embeddings/metro.config.js index 2fd4ca0dd..f8ab2ab96 100644 --- a/apps/text-embeddings/metro.config.js +++ b/apps/text-embeddings/metro.config.js @@ -1,16 +1,11 @@ // Learn more https://docs.expo.io/guides/customizing-metro const { getDefaultConfig } = require('expo/metro-config'); -const path = require('path'); - -const monorepoRoot = path.resolve(__dirname, '../..'); /** @type {import('expo/metro-config').MetroConfig} */ const config = getDefaultConfig(__dirname); const { transformer, resolver } = config; -config.watchFolders = [monorepoRoot]; - config.transformer = { ...transformer, babelTransformerPath: require.resolve('react-native-svg-transformer/expo'), @@ -19,23 +14,6 @@ config.resolver = { ...resolver, assetExts: resolver.assetExts.filter((ext) => ext !== 'svg'), sourceExts: [...resolver.sourceExts, 'svg'], - nodeModulesPaths: [ - path.resolve(__dirname, 'node_modules'), - path.resolve(monorepoRoot, 'node_modules'), - ], - // Always resolve react and react-native from the monorepo root so that - // workspace packages with their own nested node_modules (e.g. - // packages/react-native-executorch/node_modules/react) don't create a - // second React instance and trigger "Invalid hook call". - resolveRequest: (context, moduleName, platform) => { - if (moduleName === 'react' || moduleName === 'react-native') { - return { - filePath: require.resolve(moduleName, { paths: [monorepoRoot] }), - type: 'sourceFile', - }; - } - return context.resolveRequest(context, moduleName, platform); - }, }; config.resolver.assetExts.push('pte'); diff --git a/package.json b/package.json index 661b13ad1..08390944b 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "eslint-plugin-ft-flow": "^2.0.3", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-prettier": "^5.0.1", + "expo-router": "~6.0.17", "prettier": "^3.3.3", "prettier-plugin-jsdoc": "^1.3.0", "typescript": "~5.9.2" diff --git a/yarn.lock b/yarn.lock index e07bf9593..d8df58199 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13416,6 +13416,7 @@ __metadata: eslint-plugin-ft-flow: "npm:^2.0.3" eslint-plugin-markdown: "npm:^5.1.0" eslint-plugin-prettier: "npm:^5.0.1" + expo-router: "npm:~6.0.17" prettier: "npm:^3.3.3" prettier-plugin-jsdoc: "npm:^1.3.0" typescript: "npm:~5.9.2" From 2159eaceb47d669e444ee86e8cdf792d409ad151 Mon Sep 17 00:00:00 2001 From: Mateusz Sluszniak <56299341+msluszniak@users.noreply.github.com> Date: Fri, 27 Feb 2026 15:09:08 +0100 Subject: [PATCH 26/26] Update packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h --- .../common/rnexecutorch/models/VisionModel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h index 82d544db3..4828f2657 100644 --- a/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h +++ b/packages/react-native-executorch/common/rnexecutorch/models/VisionModel.h @@ -62,7 +62,7 @@ class VisionModel : public BaseModel { * - generate() is called from JavaScript thread simultaneously * * Usage guidelines: - * - Use std::lock_guard for blocking operations (JS API can wait) + * - Use std::scoped_lock for blocking operations (JS API can wait) * - Use try_lock() for non-blocking operations (camera should skip frames) * * @note Marked mutable to allow locking in const methods if needed