diff --git a/.github/workflows/android-perf.yml b/.github/workflows/android-perf.yml index d9ea4b5a..033ea6d4 100644 --- a/.github/workflows/android-perf.yml +++ b/.github/workflows/android-perf.yml @@ -29,11 +29,11 @@ jobs: device: [single-android, 32bit-android] include: - device: single-android - initPerformanceThresholdSec: 3.25 - procPerformanceThresholdSec: 0.75 + initPerformanceThresholdSec: 4.0 + procPerformanceThresholdSec: 2.3 - device: 32bit-android - initPerformanceThresholdSec: 10.0 - procPerformanceThresholdSec: 4.0 + initPerformanceThresholdSec: 11.0 + procPerformanceThresholdSec: 15.0 steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/go-codestyle.yml b/.github/workflows/go-codestyle.yml index 1a1f7d72..8de15cfd 100644 --- a/.github/workflows/go-codestyle.yml +++ b/.github/workflows/go-codestyle.yml @@ -29,6 +29,8 @@ jobs: uses: golangci/golangci-lint-action@v3 with: working-directory: binding/go + # TODO: figure out why the linter complains about this?? + args: --exclude="could not import C" check-go-micdemo-codestyle: runs-on: ubuntu-latest diff --git a/.github/workflows/go-demos.yml b/.github/workflows/go-demos.yml index d8880c76..d55eaa6b 100644 --- a/.github/workflows/go-demos.yml +++ b/.github/workflows/go-demos.yml @@ -26,11 +26,17 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] - go: [ '1.16', '1.17', '1.18' ] + go: [ '1.16', '1.17', '1.18', '1.19', '1.20', 'stable' ] steps: - uses: actions/checkout@v3 + - name: Set up Mingw + uses: egor-tensin/setup-mingw@v2 + if: ${{ (matrix.os == 'windows-latest') && (matrix.go != 'stable') && (matrix.go < 1.20) }} + with: + version: 11.2.0 + - name: Setup go uses: actions/setup-go@v3 with: diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 6d365879..71973c8c 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -38,11 +38,17 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] - go: [ '1.16', '1.17', '1.18' ] + go: [ '1.16', '1.17', '1.18', '1.19', '1.20', 'stable' ] steps: - uses: actions/checkout@v3 + - name: Set up Mingw + uses: egor-tensin/setup-mingw@v2 + if: ${{ (matrix.os == 'windows-latest') && (matrix.go != 'stable') && (matrix.go < 1.20) }} + with: + version: 11.2.0 + - name: Setup go uses: actions/setup-go@v3 with: @@ -58,7 +64,7 @@ jobs: run: go build - name: Test - run: go test -v -access_key ${{secrets.PV_VALID_ACCESS_KEY}} + run: go test -modfile="go_test.mod" -v -access_key ${{secrets.PV_VALID_ACCESS_KEY}} build-self-hosted: runs-on: ${{ matrix.machine }} @@ -80,4 +86,4 @@ jobs: run: go build - name: Test - run: go test -v -access_key ${{secrets.PV_VALID_ACCESS_KEY}} + run: go test -modfile="go_test.mod" -v -access_key ${{secrets.PV_VALID_ACCESS_KEY}} diff --git a/.github/workflows/ios-perf.yml b/.github/workflows/ios-perf.yml index 272a493e..2805e7ae 100644 --- a/.github/workflows/ios-perf.yml +++ b/.github/workflows/ios-perf.yml @@ -29,8 +29,8 @@ jobs: device: [ios-perf] include: - device: ios-perf - initPerformanceThresholdSec: 1.5 - procPerformanceThresholdSec: 0.2 + initPerformanceThresholdSec: 2.5 + procPerformanceThresholdSec: 0.5 steps: - name: Checkout diff --git a/.github/workflows/java-demos.yml b/.github/workflows/java-demos.yml index 28ea36d8..60f8c061 100644 --- a/.github/workflows/java-demos.yml +++ b/.github/workflows/java-demos.yml @@ -26,14 +26,15 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] + java-version: ['11', '17', '19'] steps: - uses: actions/checkout@v3 - - name: Set up JDK 11 + - name: Set up JDK ${{ matrix.java-version }} uses: actions/setup-java@v3 with: - java-version: '11' + java-version: ${{ matrix.java-version }} distribution: 'temurin' - name: Build diff --git a/.github/workflows/java-perf.yml b/.github/workflows/java-perf.yml index 43c668ef..a22846ff 100644 --- a/.github/workflows/java-perf.yml +++ b/.github/workflows/java-perf.yml @@ -31,14 +31,14 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] include: - os: ubuntu-latest - init_performance_threshold_sec: 2.0 - proc_performance_threshold_sec: 0.5 - - os: windows-latest - init_performance_threshold_sec: 2.1 - proc_performance_threshold_sec: 0.6 + init_performance_threshold_sec: 4.5 + proc_performance_threshold_sec: 1.0 - os: macos-latest - init_performance_threshold_sec: 2.5 - proc_performance_threshold_sec: 0.7 + init_performance_threshold_sec: 5.5 + proc_performance_threshold_sec: 3.0 + - os: windows-latest + init_performance_threshold_sec: 4.5 + proc_performance_threshold_sec: 1.0 steps: - uses: actions/checkout@v3 @@ -64,20 +64,20 @@ jobs: machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, jetson] include: - machine: rpi3-32 - init_performance_threshold_sec: 7.5 - proc_performance_threshold_sec: 3.3 + init_performance_threshold_sec: 14.0 + proc_performance_threshold_sec: 9.3 - machine: rpi3-64 - init_performance_threshold_sec: 8.8 - proc_performance_threshold_sec: 3.3 + init_performance_threshold_sec: 13.5 + proc_performance_threshold_sec: 8.3 - machine: rpi4-32 - init_performance_threshold_sec: 5.6 - proc_performance_threshold_sec: 2.0 + init_performance_threshold_sec: 8.5 + proc_performance_threshold_sec: 4.6 - machine: rpi4-64 - init_performance_threshold_sec: 5.1 - proc_performance_threshold_sec: 1.9 + init_performance_threshold_sec: 7.8 + proc_performance_threshold_sec: 5.0 - machine: jetson - init_performance_threshold_sec: 5.1 - proc_performance_threshold_sec: 2.0 + init_performance_threshold_sec: 7.8 + proc_performance_threshold_sec: 5.5 steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml index 52de5021..6c115811 100644 --- a/.github/workflows/java.yml +++ b/.github/workflows/java.yml @@ -30,14 +30,15 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] + java-version: ['11', '17', '19'] steps: - uses: actions/checkout@v3 - - name: Set up JDK 11 + - name: Set up JDK ${{ matrix.java-version }} uses: actions/setup-java@v3 with: - java-version: '11' + java-version: ${{ matrix.java-version }} distribution: 'temurin' - name: Build diff --git a/.github/workflows/nodejs-codestyle.yml b/.github/workflows/nodejs-codestyle.yml index 5c7520a7..1c3d08e3 100644 --- a/.github/workflows/nodejs-codestyle.yml +++ b/.github/workflows/nodejs-codestyle.yml @@ -27,9 +27,6 @@ jobs: with: node-version: lts/* - - name: Pre-build dependencies - run: npm install yarn - - name: Run Binding Linter run: yarn && yarn lint working-directory: binding/nodejs diff --git a/.github/workflows/nodejs-demos.yml b/.github/workflows/nodejs-demos.yml index 89421029..44a3d2a2 100644 --- a/.github/workflows/nodejs-demos.yml +++ b/.github/workflows/nodejs-demos.yml @@ -29,7 +29,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] - node-version: [14.x, 16.x, 18.x, 20.x] + node-version: [16.x, 18.x, 20.x] steps: - uses: actions/checkout@v3 @@ -39,9 +39,6 @@ jobs: with: node-version: ${{ matrix.node-version }} - - name: Pre-build dependencies - run: npm install yarn - - name: Install dependencies run: yarn install @@ -58,9 +55,6 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Pre-build dependencies - run: npm install --global yarn - - name: Install dependencies run: yarn install diff --git a/.github/workflows/nodejs-perf.yml b/.github/workflows/nodejs-perf.yml index 468fdf96..19010b65 100644 --- a/.github/workflows/nodejs-perf.yml +++ b/.github/workflows/nodejs-perf.yml @@ -32,14 +32,14 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] include: - os: ubuntu-latest - init_performance_threshold_sec: 2.1 - proc_performance_threshold_sec: 0.5 + init_performance_threshold_sec: 3.0 + proc_performance_threshold_sec: 0.75 - os: windows-latest - init_performance_threshold_sec: 2.5 + init_performance_threshold_sec: 3.0 proc_performance_threshold_sec: 0.8 - os: macos-latest - init_performance_threshold_sec: 2.3 - proc_performance_threshold_sec: 0.8 + init_performance_threshold_sec: 3.5 + proc_performance_threshold_sec: 4.0 steps: - uses: actions/checkout@v3 @@ -49,9 +49,6 @@ jobs: with: node-version: lts/* - - name: Pre-build dependencies - run: npm install yarn - - name: Install dependencies run: yarn install @@ -67,27 +64,24 @@ jobs: machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, jetson] include: - machine: rpi3-32 - init_performance_threshold_sec: 7.5 - proc_performance_threshold_sec: 3.0 + init_performance_threshold_sec: 9.0 + proc_performance_threshold_sec: 8.5 - machine: rpi3-64 - init_performance_threshold_sec: 8.5 - proc_performance_threshold_sec: 3.0 + init_performance_threshold_sec: 9.0 + proc_performance_threshold_sec: 7.0 - machine: rpi4-32 - init_performance_threshold_sec: 5.7 - proc_performance_threshold_sec: 2.0 + init_performance_threshold_sec: 6.2 + proc_performance_threshold_sec: 4.0 - machine: rpi4-64 - init_performance_threshold_sec: 5.1 - proc_performance_threshold_sec: 1.9 + init_performance_threshold_sec: 5.5 + proc_performance_threshold_sec: 3.5 - machine: jetson - init_performance_threshold_sec: 5.0 - proc_performance_threshold_sec: 2.0 + init_performance_threshold_sec: 5.5 + proc_performance_threshold_sec: 4.3 steps: - uses: actions/checkout@v3 - - name: Pre-build dependencies - run: npm install --global yarn - - name: Install dependencies run: yarn install diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 9b5a1f4a..8f4684c5 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -29,7 +29,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] - node-version: [14.x, 16.x, 18.x, 20.x] + node-version: [16.x, 18.x, 20.x] steps: - uses: actions/checkout@v3 @@ -39,9 +39,6 @@ jobs: with: node-version: ${{ matrix.node-version }} - - name: Pre-build dependencies - run: npm install yarn - - name: Install dependencies run: yarn install @@ -58,9 +55,6 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Pre-build dependencies - run: npm install --global yarn - - name: Install dependencies run: yarn install diff --git a/.github/workflows/python-codestyle.yml b/.github/workflows/python-codestyle.yml index 09a056f6..56068ef0 100644 --- a/.github/workflows/python-codestyle.yml +++ b/.github/workflows/python-codestyle.yml @@ -3,12 +3,12 @@ name: Python Codestyle on: workflow_dispatch: push: - branches: [master] + branches: [ master ] paths: - 'binding/python/*.py' - 'demo/python/*.py' pull_request: - branches: [master] + branches: [ master, 'v[0-9]+.[0-9]+' ] paths: - 'binding/python/*.py' - 'demo/python/*.py' diff --git a/.github/workflows/python-demos.yml b/.github/workflows/python-demos.yml index a3969050..503f123e 100644 --- a/.github/workflows/python-demos.yml +++ b/.github/workflows/python-demos.yml @@ -3,13 +3,13 @@ name: Python Demos on: workflow_dispatch: push: - branches: [master] + branches: [ master ] paths: - '.github/workflows/python-demos.yml' - 'demo/python/**' - '!demo/python/README.md' pull_request: - branches: [master] + branches: [ master, 'v[0-9]+.[0-9]+' ] paths: - '.github/workflows/python-demos.yml' - 'demo/python/**' diff --git a/.github/workflows/python-perf.yml b/.github/workflows/python-perf.yml index 0013ef12..154bd74f 100644 --- a/.github/workflows/python-perf.yml +++ b/.github/workflows/python-perf.yml @@ -3,7 +3,7 @@ name: Python performance on: workflow_dispatch: push: - branches: [master] + branches: [ master ] paths: - '.github/workflows/python-perf.yml' - 'binding/python/test_cheetah_perf.py' @@ -14,7 +14,7 @@ on: - 'lib/raspberry-pi/**' - 'lib/windows/**' pull_request: - branches: [master] + branches: [ master, 'v[0-9]+.[0-9]+' ] paths: - '.github/workflows/python-perf.yml' - 'binding/python/test_cheetah_perf.py' @@ -39,14 +39,14 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] include: - os: ubuntu-latest - init_performance_threshold_sec: 2.1 - proc_performance_threshold_sec: 0.5 + init_performance_threshold_sec: 4.0 + proc_performance_threshold_sec: 0.8 - os: windows-latest - init_performance_threshold_sec: 2.4 - proc_performance_threshold_sec: 0.6 + init_performance_threshold_sec: 4.0 + proc_performance_threshold_sec: 0.7 - os: macos-latest - init_performance_threshold_sec: 3.0 - proc_performance_threshold_sec: 0.8 + init_performance_threshold_sec: 4.5 + proc_performance_threshold_sec: 2.5 steps: - uses: actions/checkout@v3 @@ -74,20 +74,20 @@ jobs: machine: [rpi3-32, rpi3-64, rpi4-32, rpi4-64, jetson] include: - machine: rpi3-32 - init_performance_threshold_sec: 7.5 - proc_performance_threshold_sec: 3.6 + init_performance_threshold_sec: 9.0 + proc_performance_threshold_sec: 9.0 - machine: rpi3-64 - init_performance_threshold_sec: 8.3 - proc_performance_threshold_sec: 3.5 + init_performance_threshold_sec: 9.0 + proc_performance_threshold_sec: 7.5 - machine: rpi4-32 - init_performance_threshold_sec: 5.7 - proc_performance_threshold_sec: 2.0 + init_performance_threshold_sec: 7.5 + proc_performance_threshold_sec: 4.0 - machine: rpi4-64 - init_performance_threshold_sec: 5.1 - proc_performance_threshold_sec: 1.9 + init_performance_threshold_sec: 7.5 + proc_performance_threshold_sec: 4.0 - machine: jetson - init_performance_threshold_sec: 5.2 - proc_performance_threshold_sec: 1.9 + init_performance_threshold_sec: 7.5 + proc_performance_threshold_sec: 4.0 steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 5bc8fcbc..b9742bc2 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -3,7 +3,7 @@ name: Python on: workflow_dispatch: push: - branches: [master] + branches: [ master ] paths: - '.github/workflows/python.yml' - 'binding/python/**' @@ -15,7 +15,7 @@ on: - 'lib/raspberry-pi/**' - 'lib/windows/**' pull_request: - branches: [master] + branches: [ master, 'v[0-9]+.[0-9]+' ] paths: - '.github/workflows/python.yml' - 'binding/python/**' diff --git a/.github/workflows/react-codestyle.yml b/.github/workflows/react-codestyle.yml index e877f1d9..737996ed 100644 --- a/.github/workflows/react-codestyle.yml +++ b/.github/workflows/react-codestyle.yml @@ -31,6 +31,14 @@ jobs: with: node-version: lts/* + - name: Build Local Web SDK + run: yarn && yarn copywasm && yarn build + working-directory: binding/web + + - name: Build Local React SDK + run: yarn && yarn build + working-directory: binding/react + - name: Pre-build dependencies run: npm install yarn diff --git a/.github/workflows/react-demos.yml b/.github/workflows/react-demos.yml index 6dfc22b7..770f5fd3 100644 --- a/.github/workflows/react-demos.yml +++ b/.github/workflows/react-demos.yml @@ -38,6 +38,14 @@ jobs: - name: Pre-build dependencies run: npm install yarn + - name: Build Local Web SDK + run: yarn && yarn copywasm && yarn build + working-directory: binding/web + + - name: Build Local React SDK + run: yarn && yarn build + working-directory: binding/react + - name: Install dependencies run: yarn install diff --git a/.github/workflows/react-native-tests.yml b/.github/workflows/react-native-tests.yml index 88606396..65e2612d 100644 --- a/.github/workflows/react-native-tests.yml +++ b/.github/workflows/react-native-tests.yml @@ -6,8 +6,6 @@ on: paths: - 'binding/react-native/**' - 'lib/common/**' - - 'lib/android/**' - - 'lib/ios/**' - '.github/workflows/react-native-tests.yml' - 'resources/audio_samples/**' pull_request: @@ -15,8 +13,6 @@ on: paths: - 'binding/react-native/**' - 'lib/common/**' - - 'lib/android/**' - - 'lib/ios/**' - '.github/workflows/react-native-tests.yml' - 'resources/audio_samples/**' @@ -63,7 +59,7 @@ jobs: ./copy_test_resources.sh - name: Cocoapods install working-directory: binding/react-native/test-app/CheetahTestApp/ios - run: pod install + run: pod install --repo-update - name: Inject AppID run: sed -i '.bak' 's:{TESTING_ACCESS_KEY_HERE}:${{secrets.PV_VALID_ACCESS_KEY}}:' Tests.ts diff --git a/.github/workflows/react-native.yml b/.github/workflows/react-native.yml index 3fc646f8..71d4b59d 100644 --- a/.github/workflows/react-native.yml +++ b/.github/workflows/react-native.yml @@ -8,8 +8,6 @@ on: - 'binding/react-native/**' - '!binding/react-native/README.md' - 'lib/common/**' - - 'lib/android/**' - - 'lib/ios/**' - '.github/workflows/react-native.yml' pull_request: branches: [ master, 'v[0-9]+.[0-9]+' ] @@ -17,8 +15,6 @@ on: - 'binding/react-native/**' - '!binding/react-native/README.md' - 'lib/common/**' - - 'lib/android/**' - - 'lib/ios/**' - '.github/workflows/react-native.yml' defaults: @@ -31,7 +27,7 @@ jobs: strategy: matrix: - node-version: [14.x, 16.x, 18.x, 20.x] + node-version: [16.x, 18.x, 20.x] steps: - uses: actions/checkout@v3 @@ -48,4 +44,4 @@ jobs: run: yarn install - name: Build - run: yarn + run: yarn prepare diff --git a/.github/workflows/react.yml b/.github/workflows/react.yml index d2922627..cb25b231 100644 --- a/.github/workflows/react.yml +++ b/.github/workflows/react.yml @@ -44,6 +44,10 @@ jobs: - name: Pre-build dependencies run: npm install yarn + - name: Build Local Web SDK + run: yarn && yarn copywasm && yarn build + working-directory: binding/web + - name: Install dependencies run: yarn install diff --git a/.github/workflows/web-demos.yml b/.github/workflows/web-demos.yml index 0595b6b8..7b09159c 100644 --- a/.github/workflows/web-demos.yml +++ b/.github/workflows/web-demos.yml @@ -25,7 +25,7 @@ jobs: strategy: matrix: - node-version: [14.x, 16.x, 18.x, 20.x] + node-version: [16.x, 18.x, 20.x] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/web-perf.yml b/.github/workflows/web-perf.yml index 0aa782d2..7a5e2da8 100644 --- a/.github/workflows/web-perf.yml +++ b/.github/workflows/web-perf.yml @@ -28,8 +28,8 @@ jobs: node-version: [lts/*] include: - node-version: lts/* - initPerformanceThresholdSec: 4.5 - procPerformanceThresholdSec: 0.45 + initPerformanceThresholdSec: 6.5 + procPerformanceThresholdSec: 0.65 steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/web.yml b/.github/workflows/web.yml index a2920820..04e14e3e 100644 --- a/.github/workflows/web.yml +++ b/.github/workflows/web.yml @@ -27,7 +27,7 @@ jobs: strategy: matrix: - node-version: [14.x, 16.x, 18.x, 20.x] + node-version: [16.x, 18.x, 20.x] steps: - uses: actions/checkout@v3 diff --git a/README.md b/README.md index f01d65b1..b0c3825e 100644 --- a/README.md +++ b/README.md @@ -160,7 +160,7 @@ For more information about Go demos go to [demo/go](./demo/go). ### React Native Demo -To run the React Native Porcupine demo app you will first need to set up your React Native environment. For this, +To run the React Native Cheetah demo app you will first need to set up your React Native environment. For this, please refer to [React Native's documentation](https://reactnative.dev/docs/environment-setup). Once your environment has been set up, navigate to [demo/react-native](./demo/react-native) to run the following commands: diff --git a/binding/android/Cheetah/cheetah/build.gradle b/binding/android/Cheetah/cheetah/build.gradle index 410aab2d..253acca1 100644 --- a/binding/android/Cheetah/cheetah/build.gradle +++ b/binding/android/Cheetah/cheetah/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' ext { PUBLISH_GROUP_ID = 'ai.picovoice' - PUBLISH_VERSION = '1.1.2' + PUBLISH_VERSION = '2.0.0' PUBLISH_ARTIFACT_ID = 'cheetah-android' } @@ -38,7 +38,7 @@ dependencies { } task copyLibs(type: Copy) { - from("${rootDir}/../../lib/android") + from("${rootDir}/../../../lib/android") into("${rootDir}/cheetah/src/main/jniLibs") } diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/Cheetah.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/Cheetah.java index 05794f7b..08f1ef06 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/Cheetah.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/Cheetah.java @@ -25,12 +25,18 @@ */ public class Cheetah { + private static String _sdk = "android"; + static { System.loadLibrary("pv_cheetah"); } private long handle; + public static void setSdk(String sdk) { + Cheetah._sdk = sdk; + } + /** * Constructor. * @@ -48,6 +54,8 @@ private Cheetah( String modelPath, float endpointDuration, boolean enableAutomaticPunctuation) throws CheetahException { + CheetahNative.setSdk(Cheetah._sdk); + handle = CheetahNative.init( accessKey, modelPath, diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/CheetahNative.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/CheetahNative.java index b7d142fa..4f50f809 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/CheetahNative.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/CheetahNative.java @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -14,11 +14,13 @@ class CheetahNative { + static native String getVersion(); + static native int getFrameLength(); static native int getSampleRate(); - static native String getVersion(); + static native void setSdk(String sdk) throws CheetahException; static native long init( String accessKey, diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/CheetahTranscript.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/CheetahTranscript.java index 32c2061f..6c2880cf 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/CheetahTranscript.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/CheetahTranscript.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationException.java index 7a12e1fe..71f11c09 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahActivationException(Throwable cause) { public CheetahActivationException(String message) { super(message); } -} + public CheetahActivationException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationLimitException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationLimitException.java index b365b5ac..63a06c9a 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationLimitException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationLimitException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahActivationLimitException(Throwable cause) { public CheetahActivationLimitException(String message) { super(message); } -} + public CheetahActivationLimitException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationRefusedException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationRefusedException.java index 6ee72ad9..9a2b7673 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationRefusedException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationRefusedException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahActivationRefusedException(Throwable cause) { public CheetahActivationRefusedException(String message) { super(message); } -} + public CheetahActivationRefusedException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationThrottledException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationThrottledException.java index f3688d6d..9d597d2c 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationThrottledException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahActivationThrottledException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahActivationThrottledException(Throwable cause) { public CheetahActivationThrottledException(String message) { super(message); } -} + public CheetahActivationThrottledException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahException.java index e712eefa..f527eba8 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -11,12 +13,42 @@ package ai.picovoice.cheetah; public class CheetahException extends Exception { + private final String message; + private final String[] messageStack; + public CheetahException(Throwable cause) { super(cause); + this.message = cause.getMessage(); + this.messageStack = null; } public CheetahException(String message) { super(message); + this.message = message; + this.messageStack = null; } -} + public CheetahException(String message, String[] messageStack) { + super(message); + this.message = message; + this.messageStack = messageStack; + } + + public String[] getMessageStack() { + return this.messageStack; + } + + @Override + public String getMessage() { + StringBuilder sb = new StringBuilder(message); + if (messageStack != null) { + if (messageStack.length > 0) { + sb.append(":"); + for (int i = 0; i < messageStack.length; i++) { + sb.append(String.format("\n [%d] %s", i, messageStack[i])); + } + } + } + return sb.toString(); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahIOException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahIOException.java index 1b1473f0..853569ed 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahIOException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahIOException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahIOException(Throwable cause) { public CheetahIOException(String message) { super(message); } -} + public CheetahIOException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahInvalidArgumentException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahInvalidArgumentException.java index 4583773a..49bf69cd 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahInvalidArgumentException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahInvalidArgumentException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahInvalidArgumentException(Throwable cause) { public CheetahInvalidArgumentException(String message) { super(message); } -} + public CheetahInvalidArgumentException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahInvalidStateException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahInvalidStateException.java index 2c6c1129..b27ac39f 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahInvalidStateException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahInvalidStateException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahInvalidStateException(Throwable cause) { public CheetahInvalidStateException(String message) { super(message); } -} + public CheetahInvalidStateException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahKeyException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahKeyException.java index 744537f0..d4bebf11 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahKeyException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahKeyException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahKeyException(Throwable cause) { public CheetahKeyException(String message) { super(message); } -} + public CheetahKeyException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahMemoryException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahMemoryException.java index e7026aaf..d6b55af9 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahMemoryException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahMemoryException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahMemoryException(Throwable cause) { public CheetahMemoryException(String message) { super(message); } -} + public CheetahMemoryException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahRuntimeException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahRuntimeException.java index 4b49ba0f..b13c9d0c 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahRuntimeException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahRuntimeException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahRuntimeException(Throwable cause) { public CheetahRuntimeException(String message) { super(message); } -} + public CheetahRuntimeException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahStopIterationException.java b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahStopIterationException.java index 529ae915..9f3326ff 100644 --- a/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahStopIterationException.java +++ b/binding/android/Cheetah/cheetah/src/main/java/ai/picovoice/cheetah/exception/CheetahStopIterationException.java @@ -1,7 +1,9 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and @@ -18,5 +20,8 @@ public CheetahStopIterationException(Throwable cause) { public CheetahStopIterationException(String message) { super(message); } -} + public CheetahStopIterationException(String message, String[] messageStack) { + super(message, messageStack); + } +} diff --git a/binding/android/CheetahTestApp/cheetah-test-app/build.gradle b/binding/android/CheetahTestApp/cheetah-test-app/build.gradle index 356f4006..93995241 100644 --- a/binding/android/CheetahTestApp/cheetah-test-app/build.gradle +++ b/binding/android/CheetahTestApp/cheetah-test-app/build.gradle @@ -116,7 +116,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.4.2' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'ai.picovoice:cheetah-android:1.1.2' + implementation 'ai.picovoice:cheetah-android:2.0.0' // Espresso UI Testing androidTestImplementation 'androidx.test.ext:junit:1.1.3' diff --git a/binding/android/CheetahTestApp/cheetah-test-app/src/androidTest/java/ai/picovoice/cheetah/testapp/CheetahTest.java b/binding/android/CheetahTestApp/cheetah-test-app/src/androidTest/java/ai/picovoice/cheetah/testapp/CheetahTest.java index 69e95ca5..349ec73f 100644 --- a/binding/android/CheetahTestApp/cheetah-test-app/src/androidTest/java/ai/picovoice/cheetah/testapp/CheetahTest.java +++ b/binding/android/CheetahTestApp/cheetah-test-app/src/androidTest/java/ai/picovoice/cheetah/testapp/CheetahTest.java @@ -101,4 +101,31 @@ public void getSampleRate() throws CheetahException { assertTrue(sampleRate > 0); } + + @Test + public void testErrorStack() { + String[] error = {}; + try { + new Cheetah.Builder() + .setAccessKey("invalid") + .setModelPath(defaultModelPath) + .build(appContext); + } catch (CheetahException e) { + error = e.getMessageStack(); + } + + assertTrue(0 < error.length); + assertTrue(error.length <= 8); + + try { + new Cheetah.Builder() + .setAccessKey("invalid") + .setModelPath(defaultModelPath) + .build(appContext); + } catch (CheetahException e) { + for (int i = 0; i < error.length; i++) { + assertEquals(e.getMessageStack()[i], error[i]); + } + } + } } diff --git a/binding/dotnet/Cheetah/Cheetah.cs b/binding/dotnet/Cheetah/Cheetah.cs index 5e2efe43..a994e9e1 100644 --- a/binding/dotnet/Cheetah/Cheetah.cs +++ b/binding/dotnet/Cheetah/Cheetah.cs @@ -19,7 +19,7 @@ namespace Pv /// /// Status codes returned by Cheetah library /// - public enum PvStatus + public enum CheetahStatus { SUCCESS = 0, OUT_OF_MEMORY = 1, @@ -69,7 +69,7 @@ private static IntPtr ImportResolver(string libraryName, Assembly assembly, DllI #endif [DllImport(LIBRARY, CallingConvention = CallingConvention.Cdecl)] - private static extern PvStatus pv_cheetah_init( + private static extern CheetahStatus pv_cheetah_init( IntPtr accessKey, IntPtr modelPath, float endpointDurationSec, @@ -83,17 +83,20 @@ private static extern PvStatus pv_cheetah_init( private static extern void pv_cheetah_delete(IntPtr handle); [DllImport(LIBRARY, CallingConvention = CallingConvention.Cdecl)] - private static extern PvStatus pv_cheetah_process( + private static extern CheetahStatus pv_cheetah_process( IntPtr handle, Int16[] pcm, out IntPtr transcriptPtr, out bool isEndpoint); [DllImport(LIBRARY, CallingConvention = CallingConvention.Cdecl)] - private static extern PvStatus pv_cheetah_flush( + private static extern CheetahStatus pv_cheetah_flush( IntPtr handle, out IntPtr transcriptPtr); + [DllImport(LIBRARY, CallingConvention = CallingConvention.Cdecl)] + private static extern void pv_cheetah_transcript_delete(IntPtr transcriptPtr); + [DllImport(LIBRARY, CallingConvention = CallingConvention.Cdecl)] private static extern IntPtr pv_cheetah_version(); @@ -101,7 +104,14 @@ private static extern PvStatus pv_cheetah_flush( private static extern Int32 pv_cheetah_frame_length(); [DllImport(LIBRARY, CallingConvention = CallingConvention.Cdecl)] - private static extern void pv_free(IntPtr memoryPtr); + + private static extern void pv_set_sdk(string sdk); + + [DllImport(LIBRARY, CallingConvention = CallingConvention.Cdecl)] + private static extern CheetahStatus pv_get_error_stack(out IntPtr messageStack, out int messageStackDepth); + + [DllImport(LIBRARY, CallingConvention = CallingConvention.Cdecl)] + private static extern void pv_free_error_stack(IntPtr messageStack); /// /// Factory method for Cheetah Speech-to-Text engine. @@ -163,7 +173,9 @@ private Cheetah( IntPtr accessKeyPtr = Utils.GetPtrFromUtf8String(accessKey); IntPtr modelPathPtr = Utils.GetPtrFromUtf8String(modelPath); - PvStatus status = pv_cheetah_init( + pv_set_sdk("dotnet"); + + CheetahStatus status = pv_cheetah_init( accessKeyPtr, modelPathPtr, endpointDurationSec, @@ -173,9 +185,10 @@ private Cheetah( Marshal.FreeHGlobal(accessKeyPtr); Marshal.FreeHGlobal(modelPathPtr); - if (status != PvStatus.SUCCESS) + if (status != CheetahStatus.SUCCESS) { - throw PvStatusToException(status); + string[] messageStack = GetMessageStack(); + throw CheetahStatusToException(status, "Cheetah init failed", messageStack); } Version = Utils.GetUtf8StringFromPtr(pv_cheetah_version()); @@ -208,14 +221,16 @@ public CheetahTranscript Process(Int16[] pcm) IntPtr transcriptPtr = IntPtr.Zero; bool isEndpoint = false; - PvStatus status = pv_cheetah_process(_libraryPointer, pcm, out transcriptPtr, out isEndpoint); - if (status != PvStatus.SUCCESS) + CheetahStatus status = pv_cheetah_process(_libraryPointer, pcm, out transcriptPtr, out isEndpoint); + if (status != CheetahStatus.SUCCESS) { - throw PvStatusToException(status, "Cheetah failed to process the audio frame."); + string[] messageStack = GetMessageStack(); + throw CheetahStatusToException(status, "Cheetah failed to process the audio frame.", messageStack); } string transcript = Utils.GetUtf8StringFromPtr(transcriptPtr); - pv_free(transcriptPtr); + pv_cheetah_transcript_delete(transcriptPtr); + return new CheetahTranscript(transcript, isEndpoint); } @@ -228,14 +243,16 @@ public CheetahTranscript Process(Int16[] pcm) public CheetahTranscript Flush() { IntPtr transcriptPtr = IntPtr.Zero; - PvStatus status = pv_cheetah_flush(_libraryPointer, out transcriptPtr); - if (status != PvStatus.SUCCESS) + CheetahStatus status = pv_cheetah_flush(_libraryPointer, out transcriptPtr); + if (status != CheetahStatus.SUCCESS) { - throw PvStatusToException(status, "Cheetah failed to process the audio frame."); + string[] messageStack = GetMessageStack(); + throw CheetahStatusToException(status, "Cheetah failed to flush.", messageStack); } string transcript = Utils.GetUtf8StringFromPtr(transcriptPtr); - pv_free(transcriptPtr); + pv_cheetah_transcript_delete(transcriptPtr); + return new CheetahTranscript(transcript, false); } @@ -261,35 +278,45 @@ public CheetahTranscript Flush() /// Coverts status codes to relevant .NET exceptions /// /// Picovoice library status code. + /// Default error message. + /// Error stack returned from Picovoice library. /// .NET exception - private static Exception PvStatusToException(PvStatus status, string message = "") + private static Exception CheetahStatusToException( + CheetahStatus status, + string message = "", + string[] messageStack = null) { + if (messageStack == null) + { + messageStack = new string[] { }; + } + switch (status) { - case PvStatus.OUT_OF_MEMORY: - return new CheetahMemoryException(message); - case PvStatus.IO_ERROR: - return new CheetahIOException(message); - case PvStatus.INVALID_ARGUMENT: - return new CheetahInvalidArgumentException(message); - case PvStatus.STOP_ITERATION: - return new CheetahStopIterationException(message); - case PvStatus.KEY_ERROR: - return new CheetahKeyException(message); - case PvStatus.INVALID_STATE: - return new CheetahInvalidStateException(message); - case PvStatus.RUNTIME_ERROR: - return new CheetahRuntimeException(message); - case PvStatus.ACTIVATION_ERROR: - return new CheetahActivationException(message); - case PvStatus.ACTIVATION_LIMIT_REACHED: - return new CheetahActivationLimitException(message); - case PvStatus.ACTIVATION_THROTTLED: - return new CheetahActivationThrottledException(message); - case PvStatus.ACTIVATION_REFUSED: - return new CheetahActivationRefusedException(message); + case CheetahStatus.OUT_OF_MEMORY: + return new CheetahMemoryException(message, messageStack); + case CheetahStatus.IO_ERROR: + return new CheetahIOException(message, messageStack); + case CheetahStatus.INVALID_ARGUMENT: + return new CheetahInvalidArgumentException(message, messageStack); + case CheetahStatus.STOP_ITERATION: + return new CheetahStopIterationException(message, messageStack); + case CheetahStatus.KEY_ERROR: + return new CheetahKeyException(message, messageStack); + case CheetahStatus.INVALID_STATE: + return new CheetahInvalidStateException(message, messageStack); + case CheetahStatus.RUNTIME_ERROR: + return new CheetahRuntimeException(message, messageStack); + case CheetahStatus.ACTIVATION_ERROR: + return new CheetahActivationException(message, messageStack); + case CheetahStatus.ACTIVATION_LIMIT_REACHED: + return new CheetahActivationLimitException(message, messageStack); + case CheetahStatus.ACTIVATION_THROTTLED: + return new CheetahActivationThrottledException(message, messageStack); + case CheetahStatus.ACTIVATION_REFUSED: + return new CheetahActivationRefusedException(message, messageStack); default: - return new CheetahException("Unmapped error code returned from Cheetah."); + return new CheetahException("Unmapped error code returned from Cheetah.", messageStack); } } @@ -312,5 +339,29 @@ public void Dispose() { Dispose(); } + + private string[] GetMessageStack() + { + int messageStackDepth; + IntPtr messageStackRef; + + CheetahStatus status = pv_get_error_stack(out messageStackRef, out messageStackDepth); + if (status != CheetahStatus.SUCCESS) + { + throw CheetahStatusToException(status, "Unable to get Cheetah error state"); + } + + int elementSize = Marshal.SizeOf(typeof(IntPtr)); + string[] messageStack = new string[messageStackDepth]; + + for (int i = 0; i < messageStackDepth; i++) + { + messageStack[i] = Marshal.PtrToStringAnsi(Marshal.ReadIntPtr(messageStackRef, i * elementSize)); + } + + pv_free_error_stack(messageStackRef); + + return messageStack; + } } } \ No newline at end of file diff --git a/binding/dotnet/Cheetah/Cheetah.csproj b/binding/dotnet/Cheetah/Cheetah.csproj index b61ca5de..b6b65ffc 100644 --- a/binding/dotnet/Cheetah/Cheetah.csproj +++ b/binding/dotnet/Cheetah/Cheetah.csproj @@ -1,7 +1,7 @@  net6.0;netcoreapp3.0;netstandard2.0 - 1.1.2 + 2.0.0 Picovoice Cheetah Speech-to-Text Engine diff --git a/binding/dotnet/Cheetah/CheetahException.cs b/binding/dotnet/Cheetah/CheetahException.cs index 534fc8b5..22508c3e 100644 --- a/binding/dotnet/Cheetah/CheetahException.cs +++ b/binding/dotnet/Cheetah/CheetahException.cs @@ -15,10 +15,36 @@ namespace Pv { public class CheetahException : Exception { + private readonly string[] _messageStack; + public CheetahException() { } public CheetahException(string message) : base(message) { } + public CheetahException(string message, string[] messageStack) : base(ModifyMessages(message, messageStack)) + { + this._messageStack = messageStack; + } + + public string[] MessageStack + { + get => _messageStack; + } + + private static string ModifyMessages(string message, string[] messageStack) + { + string messageString = message; + if (messageStack.Length > 0) + { + messageString += ":"; + for (int i = 0; i < messageStack.Length; i++) + { + messageString += $"\n [{i}] {messageStack[i]}"; + } + } + return messageString; + } + } public class CheetahMemoryException : CheetahException @@ -26,6 +52,8 @@ public class CheetahMemoryException : CheetahException public CheetahMemoryException() { } public CheetahMemoryException(string message) : base(message) { } + + public CheetahMemoryException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahIOException : CheetahException @@ -33,6 +61,8 @@ public class CheetahIOException : CheetahException public CheetahIOException() { } public CheetahIOException(string message) : base(message) { } + + public CheetahIOException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahInvalidArgumentException : CheetahException @@ -40,6 +70,8 @@ public class CheetahInvalidArgumentException : CheetahException public CheetahInvalidArgumentException() { } public CheetahInvalidArgumentException(string message) : base(message) { } + + public CheetahInvalidArgumentException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahStopIterationException : CheetahException @@ -47,6 +79,8 @@ public class CheetahStopIterationException : CheetahException public CheetahStopIterationException() { } public CheetahStopIterationException(string message) : base(message) { } + + public CheetahStopIterationException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahKeyException : CheetahException @@ -54,6 +88,8 @@ public class CheetahKeyException : CheetahException public CheetahKeyException() { } public CheetahKeyException(string message) : base(message) { } + + public CheetahKeyException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahInvalidStateException : CheetahException @@ -61,6 +97,8 @@ public class CheetahInvalidStateException : CheetahException public CheetahInvalidStateException() { } public CheetahInvalidStateException(string message) : base(message) { } + + public CheetahInvalidStateException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahRuntimeException : CheetahException @@ -68,6 +106,8 @@ public class CheetahRuntimeException : CheetahException public CheetahRuntimeException() { } public CheetahRuntimeException(string message) : base(message) { } + + public CheetahRuntimeException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahActivationException : CheetahException @@ -75,6 +115,8 @@ public class CheetahActivationException : CheetahException public CheetahActivationException() { } public CheetahActivationException(string message) : base(message) { } + + public CheetahActivationException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahActivationLimitException : CheetahException @@ -82,6 +124,8 @@ public class CheetahActivationLimitException : CheetahException public CheetahActivationLimitException() { } public CheetahActivationLimitException(string message) : base(message) { } + + public CheetahActivationLimitException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahActivationThrottledException : CheetahException @@ -89,6 +133,8 @@ public class CheetahActivationThrottledException : CheetahException public CheetahActivationThrottledException() { } public CheetahActivationThrottledException(string message) : base(message) { } + + public CheetahActivationThrottledException(string message, string[] messageStack) : base(message, messageStack) { } } public class CheetahActivationRefusedException : CheetahException @@ -96,6 +142,8 @@ public class CheetahActivationRefusedException : CheetahException public CheetahActivationRefusedException() { } public CheetahActivationRefusedException(string message) : base(message) { } + + public CheetahActivationRefusedException(string message, string[] messageStack) : base(message, messageStack) { } } } \ No newline at end of file diff --git a/binding/dotnet/CheetahTest/CheetahTest.csproj b/binding/dotnet/CheetahTest/CheetahTest.csproj index 40aa4d34..10b485e1 100644 --- a/binding/dotnet/CheetahTest/CheetahTest.csproj +++ b/binding/dotnet/CheetahTest/CheetahTest.csproj @@ -6,6 +6,7 @@ + diff --git a/binding/dotnet/CheetahTest/MainTest.cs b/binding/dotnet/CheetahTest/MainTest.cs index bf8e8c19..081218f6 100644 --- a/binding/dotnet/CheetahTest/MainTest.cs +++ b/binding/dotnet/CheetahTest/MainTest.cs @@ -12,6 +12,9 @@ specific language governing permissions and limitations under the License. using System; using System.Collections.Generic; using System.IO; +using System.Reflection; + +using Fastenshtein; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -44,6 +47,31 @@ private List GetPcmFromFile(string audioFilePath, int expectedSampleRate) return data; } + public static IEnumerable TestParameters + { + get + { + List testParameters = new List(); + + string transcript = "Mr quilter is the apostle of the middle classes and we are glad to welcome his gospel"; + string transcriptWithPunctuation = "Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel."; + + testParameters.Add(new object[] + { + "en", + "test.wav", + transcript, + transcriptWithPunctuation, + 0.025f + }); + + return testParameters; + } + } + + static float GetErrorRate(string transcript, string referenceTranscript) + => Levenshtein.Distance(transcript, referenceTranscript) / (float)referenceTranscript.Length; + [ClassInitialize] public static void ClassInitialize(TestContext _) { @@ -80,16 +108,57 @@ public void TestFrameLength() } [TestMethod] - [DataRow(true, "Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.")] - [DataRow(false, "Mr quilter is the apostle of the middle classes and we are glad to welcome his gospel")] - public void TestProcess(bool enableAutomaticPunctuation, string expectedTranscript) + [DynamicData(nameof(TestParameters))] + public void TestProcess( + string language, + string testAudioFile, + string referenceTranscript, + string _, + float targetErrorRate) + { + using (Cheetah cheetah = Cheetah.Create( + accessKey: ACCESS_KEY, + endpointDurationSec: 0.2f, + enableAutomaticPunctuation: false)) + { + string testAudioPath = Path.Combine(_relativeDir, "resources/audio_samples", testAudioFile); + List pcm = GetPcmFromFile(testAudioPath, cheetah.SampleRate); + + int frameLen = cheetah.FrameLength; + int framecount = (int)Math.Floor((float)(pcm.Count / frameLen)); + + string transcript = ""; + bool isEndpoint = false; + for (int i = 0; i < framecount; i++) + { + int start = i * cheetah.FrameLength; + List frame = pcm.GetRange(start, frameLen); + CheetahTranscript transcriptObj = cheetah.Process(frame.ToArray()); + transcript += transcriptObj.Transcript; + isEndpoint = transcriptObj.IsEndpoint; + } + CheetahTranscript finalTranscriptObj = cheetah.Flush(); + transcript += finalTranscriptObj.Transcript; + + Assert.IsTrue(GetErrorRate(transcript, referenceTranscript) < targetErrorRate); + } + } + + [TestMethod] + [DynamicData(nameof(TestParameters))] + public void TestProcessWithPunctuation( + string language, + string testAudioFile, + string _, + string referenceTranscript, + float targetErrorRate) { using (Cheetah cheetah = Cheetah.Create( accessKey: ACCESS_KEY, endpointDurationSec: 0.2f, - enableAutomaticPunctuation: enableAutomaticPunctuation)) + enableAutomaticPunctuation: true)) { - string testAudioPath = Path.Combine(_relativeDir, "resources/audio_samples/test.wav"); + string testAudioPath = Path.Combine(_relativeDir, "resources/audio_samples", testAudioFile); List pcm = GetPcmFromFile(testAudioPath, cheetah.SampleRate); int frameLen = cheetah.FrameLength; @@ -107,23 +176,27 @@ public void TestProcess(bool enableAutomaticPunctuation, string expectedTranscri } CheetahTranscript finalTranscriptObj = cheetah.Flush(); transcript += finalTranscriptObj.Transcript; - Assert.AreEqual(transcript, expectedTranscript); - Assert.IsTrue(isEndpoint); + + Assert.IsTrue(GetErrorRate(transcript, referenceTranscript) < targetErrorRate); } } [TestMethod] - [DataRow(true, "Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.")] - [DataRow(false, "Mr quilter is the apostle of the middle classes and we are glad to welcome his gospel")] - public void TestCustomModel(bool enableAutomaticPunctuation, string expectedTranscript) + [DynamicData(nameof(TestParameters))] + public void TestCustomModel( + string language, + string testAudioFile, + string referenceTranscript, + string _, + float targetErrorRate) { string testModelPath = Path.Combine(_relativeDir, "lib/common/cheetah_params.pv"); using (Cheetah cheetah = Cheetah.Create( accessKey: ACCESS_KEY, modelPath: testModelPath, - enableAutomaticPunctuation: enableAutomaticPunctuation)) + enableAutomaticPunctuation: false)) { - string testAudioPath = Path.Combine(_relativeDir, "resources/audio_samples/test.wav"); + string testAudioPath = Path.Combine(_relativeDir, "resources/audio_samples", testAudioFile); List pcm = GetPcmFromFile(testAudioPath, cheetah.SampleRate); int frameLen = cheetah.FrameLength; @@ -139,8 +212,93 @@ public void TestCustomModel(bool enableAutomaticPunctuation, string expectedTran } CheetahTranscript finalTranscriptObj = cheetah.Flush(); transcript += finalTranscriptObj.Transcript; - Assert.AreEqual(transcript, expectedTranscript); + + Assert.IsTrue(GetErrorRate(transcript, referenceTranscript) < targetErrorRate); + } + } + + [TestMethod] + public void TestMessageStack() + { + string modelPath = Path.Combine(_relativeDir, "lib/common/cheetah_params.pv"); + + Cheetah c; + string[] messageList = new string[] { }; + + try + { + c = Cheetah.Create( + accessKey: "invalid", + modelPath: modelPath, + enableAutomaticPunctuation: true); + Assert.IsNull(c); + c.Dispose(); + } + catch (CheetahException e) + { + messageList = e.MessageStack; + } + + Assert.IsTrue(0 < messageList.Length); + Assert.IsTrue(messageList.Length < 8); + + try + { + c = Cheetah.Create( + accessKey: "invalid", + modelPath: modelPath, + enableAutomaticPunctuation: true); + Assert.IsNull(c); + c.Dispose(); + } + catch (CheetahException e) + { + for (int i = 0; i < messageList.Length; i++) + { + Assert.AreEqual(messageList[i], e.MessageStack[i]); + } } } + + [TestMethod] + public void TestProcessFlushMessageStack() + { + string modelPath = Path.Combine(_relativeDir, "lib/common/cheetah_params.pv"); + + Cheetah c = Cheetah.Create( + accessKey: ACCESS_KEY, + modelPath: modelPath, + enableAutomaticPunctuation: false); + short[] testPcm = new short[c.FrameLength]; + + var obj = typeof(Cheetah).GetField("_libraryPointer", BindingFlags.NonPublic | BindingFlags.Instance); + IntPtr address = (IntPtr)obj.GetValue(c); + obj.SetValue(c, IntPtr.Zero); + + try + { + CheetahTranscript res = c.Process(testPcm); + Assert.IsTrue(res.Transcript.Length == -1); + } + catch (CheetahException e) + { + Assert.IsTrue(0 < e.MessageStack.Length); + Assert.IsTrue(e.MessageStack.Length < 8); + } + + try + { + CheetahTranscript res = c.Flush(); + Assert.IsTrue(res.Transcript.Length == -1); + } + catch (CheetahException e) + { + Assert.IsTrue(0 < e.MessageStack.Length); + Assert.IsTrue(e.MessageStack.Length < 8); + } + + obj.SetValue(c, address); + c.Dispose(); + } } } \ No newline at end of file diff --git a/binding/flutter/CHANGELOG.md b/binding/flutter/CHANGELOG.md index 80916efc..fd54b0a4 100644 --- a/binding/flutter/CHANGELOG.md +++ b/binding/flutter/CHANGELOG.md @@ -11,4 +11,8 @@ * True-casing and automatic punctuation insertion enabled ## [1.1.1] - 2023-08-24 -* Native packages updated \ No newline at end of file +* Native packages updated + +## [2.0.0] - 2023-11-17 +* Engine improvements +* Improved error reporting diff --git a/binding/flutter/README.md b/binding/flutter/README.md index f91241bf..2b99d847 100644 --- a/binding/flutter/README.md +++ b/binding/flutter/README.md @@ -20,7 +20,7 @@ Cheetah is an on-device speech-to-text engine. Cheetah is: This binding is for running Cheetah on **Flutter 2.8.1+** on the following platforms: - Android 5.0+ (API 21+) -- iOS 9.0+ +- iOS 13.0+ ## Installation diff --git a/binding/flutter/android/build.gradle b/binding/flutter/android/build.gradle index 634c6cb8..024f9baa 100644 --- a/binding/flutter/android/build.gradle +++ b/binding/flutter/android/build.gradle @@ -1,5 +1,5 @@ group 'ai.picovoice.flutter.cheetah' -version '1.1.1' +version '2.0.0' buildscript { repositories { @@ -33,5 +33,5 @@ android { } dependencies { - implementation 'ai.picovoice:cheetah-android:1.1.2' + implementation 'ai.picovoice:cheetah-android:2.0.0' } diff --git a/binding/flutter/android/src/main/java/ai/picovoice/flutter/cheetah/CheetahPlugin.java b/binding/flutter/android/src/main/java/ai/picovoice/flutter/cheetah/CheetahPlugin.java index 5b8afcf1..a76736ed 100644 --- a/binding/flutter/android/src/main/java/ai/picovoice/flutter/cheetah/CheetahPlugin.java +++ b/binding/flutter/android/src/main/java/ai/picovoice/flutter/cheetah/CheetahPlugin.java @@ -42,6 +42,8 @@ public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBindin flutterContext = flutterPluginBinding.getApplicationContext(); channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "cheetah"); channel.setMethodCallHandler(this); + + Cheetah.setSdk("flutter"); } @Override diff --git a/binding/flutter/ios/Classes/SwiftCheetahPlugin.swift b/binding/flutter/ios/Classes/SwiftCheetahPlugin.swift index b772c6e0..ea2722d3 100644 --- a/binding/flutter/ios/Classes/SwiftCheetahPlugin.swift +++ b/binding/flutter/ios/Classes/SwiftCheetahPlugin.swift @@ -1,5 +1,5 @@ // -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // // You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" // file accompanying this source. @@ -28,6 +28,8 @@ public class SwiftCheetahPlugin: NSObject, FlutterPlugin { let methodChannel = FlutterMethodChannel(name: "cheetah", binaryMessenger: registrar.messenger()) registrar.addMethodCallDelegate(instance, channel: methodChannel) + + Cheetah.setSdk(sdk: "flutter") } public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { diff --git a/binding/flutter/ios/cheetah_flutter.podspec b/binding/flutter/ios/cheetah_flutter.podspec index af49080f..36ae5288 100644 --- a/binding/flutter/ios/cheetah_flutter.podspec +++ b/binding/flutter/ios/cheetah_flutter.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'cheetah_flutter' - s.version = '1.1.1' + s.version = '2.0.0' s.summary = 'A Flutter package plugin for Picovoice\'s Cheetah Speech-to-Text engine' s.description = <<-DESC A Flutter package plugin for Picovoice\'s Cheetah Speech-to-Text engine @@ -10,9 +10,9 @@ Pod::Spec.new do |s| s.author = { 'Picovoice' => 'hello@picovoice.ai' } s.source = { :git => "https://github.com/Picovoice/cheetah.git" } s.source_files = 'Classes/**/*' - s.platform = :ios, '9.0' + s.platform = :ios, '13.0' s.dependency 'Flutter' - s.dependency 'Cheetah-iOS', '~> 1.1.0' + s.dependency 'Cheetah-iOS', '~> 2.0.0' s.swift_version = '5.0' end diff --git a/binding/flutter/pubspec.lock b/binding/flutter/pubspec.lock index 58c93100..2514f310 100644 --- a/binding/flutter/pubspec.lock +++ b/binding/flutter/pubspec.lock @@ -5,63 +5,64 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.1" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.1" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: "35d0f481d939de0d640b3db9a7aa36a52cd22054a798a73b4f50bdad5ce12678" + url: "https://pub.dev" source: hosted version: "1.1.2" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: "9fd2163d866769f60f4df8ac1dc59f52498d810c356fe78022e383dd3c57c0e1" + url: "https://pub.dev" source: hosted version: "6.1.0" flutter: @@ -74,109 +75,132 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" lints: dependency: "direct dev" description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.9.1" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.8.3" path_provider: dependency: "direct main" description: name: path_provider - url: "https://pub.dartlang.org" + sha256: e92dee4d38a9044605cb3fb253e9b46eb9375dfcad4515d0379b44ac90797568 + url: "https://pub.dev" source: hosted version: "2.0.9" path_provider_android: dependency: transitive description: name: path_provider_android - url: "https://pub.dartlang.org" + sha256: "32bbab16092df3bedab89ed9f2c1cfaedf25d96a5036f62f16d5e372890d068c" + url: "https://pub.dev" source: hosted version: "2.0.13" path_provider_ios: dependency: transitive description: name: path_provider_ios - url: "https://pub.dartlang.org" + sha256: "943b76e54056386432cdc2731cb303e2f580346b61a1fc73819721767be72309" + url: "https://pub.dev" source: hosted version: "2.0.8" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" + sha256: "1e109f4df28bd95eab71e323008b53d19c4d633bc1ab05b577518773474e9621" + url: "https://pub.dev" source: hosted version: "2.1.5" path_provider_macos: dependency: transitive description: name: path_provider_macos - url: "https://pub.dartlang.org" + sha256: eb58b896ea3a504f0b0fa7870646bda6935a6f752b2a54df33f97070dacca8d4 + url: "https://pub.dev" source: hosted version: "2.0.0" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: c2af5a8a6369992d915f8933dfc23172071001359d17896e83db8be57db8a397 + url: "https://pub.dev" source: hosted version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: "366ad4e3541ea707f859e7148d4d5aba67d589d7936cee04a05c464a277eeb27" + url: "https://pub.dev" source: hosted version: "2.0.5" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: ebc79f16b5f6b609aad4a5e63447d4795d16f7adee46e93ed03200848c006735 + url: "https://pub.dev" source: hosted version: "3.0.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: c2c49e16d42fd6983eb55e44b7f197fdf16b4da7aab7f8e1d21da307cad3fb02 + url: "https://pub.dev" source: hosted version: "2.0.0" process: dependency: transitive description: name: process - url: "https://pub.dartlang.org" + sha256: dc3c073b5bc0db4e0f3dbc6b69f8e9cf2f336dafb3db996242ebdacf94c295dd + url: "https://pub.dev" source: hosted version: "4.2.1" sky_engine: @@ -188,65 +212,74 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" source: hosted - version: "0.4.9" + version: "0.5.1" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: c0ee29e0f6e4ee5a63983aae753640adc15017b34e50424f8b45063426e19c5b + url: "https://pub.dev" source: hosted version: "2.0.5" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: "0186b3f2d66be9a12b0295bddcf8b6f8c0b0cc2f85c6287344e2a6366bc28457" + url: "https://pub.dev" source: hosted version: "0.2.0" sdks: - dart: ">=2.17.0-0 <3.0.0" + dart: ">=3.0.0-0 <4.0.0" flutter: ">=2.8.1" diff --git a/binding/flutter/pubspec.yaml b/binding/flutter/pubspec.yaml index 79d117ff..ab91a7a6 100644 --- a/binding/flutter/pubspec.yaml +++ b/binding/flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: cheetah_flutter description: A Flutter plugin for Picovoice's Cheetah Speech-to-Text engine -version: 1.1.1 +version: 2.0.0 homepage: https://picovoice.ai/ repository: https://github.com/Picovoice/cheetah/ documentation: https://picovoice.ai/docs/cheetah/ diff --git a/binding/go/README.md b/binding/go/README.md index 1ff59b27..4d2b1643 100644 --- a/binding/go/README.md +++ b/binding/go/README.md @@ -17,6 +17,8 @@ Cheetah is an on-device streaming speech-to-text engine. Cheetah is: - go 1.16+ - Runs on Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64), Raspberry Pi (4, 3), and NVIDIA Jetson Nano. +- **Windows**: The Go binding requires `cgo`, which means that you need to install a gcc compiler like [Mingw](http://mingw-w64.org/) to build it properly. + - Go versions less than `1.20` requires `gcc` version `11` or lower. ## Installation diff --git a/binding/go/cheetah.go b/binding/go/cheetah.go index cca34d89..5871e4d2 100644 --- a/binding/go/cheetah.go +++ b/binding/go/cheetah.go @@ -53,12 +53,23 @@ const ( ) type CheetahError struct { - StatusCode PvStatus - Message string + StatusCode PvStatus + Message string + MessageStack []string } func (e *CheetahError) Error() string { - return fmt.Sprintf("%s: %s", pvStatusToString(e.StatusCode), e.Message) + var message strings.Builder + message.WriteString(fmt.Sprintf("%s: %s", pvStatusToString(e.StatusCode), e.Message)) + + if len(e.MessageStack) > 0 { + message.WriteString(":") + } + + for i, value := range e.MessageStack { + message.WriteString(fmt.Sprintf("\n [%d] %s", i, value)) + } + return message.String() } // Cheetah struct @@ -120,8 +131,8 @@ func NewCheetah(accessKey string) Cheetah { func (cheetah *Cheetah) Init() error { if cheetah.AccessKey == "" { return &CheetahError{ - INVALID_ARGUMENT, - "No AccessKey provided to Cheetah"} + StatusCode: INVALID_ARGUMENT, + Message: "No AccessKey provided to Cheetah"} } if cheetah.ModelPath == "" { @@ -134,27 +145,37 @@ func (cheetah *Cheetah) Init() error { if _, err := os.Stat(cheetah.ModelPath); os.IsNotExist(err) { return &CheetahError{ - INVALID_ARGUMENT, - fmt.Sprintf("Specified model file could not be found at %s", cheetah.ModelPath)} + StatusCode: INVALID_ARGUMENT, + Message: fmt.Sprintf("Specified model file could not be found at %s", cheetah.ModelPath)} } if _, err := os.Stat(cheetah.LibraryPath); os.IsNotExist(err) { return &CheetahError{ - INVALID_ARGUMENT, - fmt.Sprintf("Specified library file could not be found at %s", cheetah.LibraryPath)} + StatusCode: INVALID_ARGUMENT, + Message: fmt.Sprintf("Specified library file could not be found at %s", cheetah.LibraryPath)} } if cheetah.EndpointDuration < 0 { return &CheetahError{ - INVALID_ARGUMENT, - "Endpoint duration must be non-negative"} + StatusCode: INVALID_ARGUMENT, + Message: "Endpoint duration must be non-negative"} } ret := nativeCheetah.nativeInit(cheetah) if PvStatus(ret) != SUCCESS { + errorStatus, messageStack := nativeCheetah.nativeGetErrorStack() + if errorStatus != SUCCESS { + return &CheetahError{ + StatusCode: errorStatus, + Message: "Unable to get Cheetah error state", + } + } + return &CheetahError{ - PvStatus(ret), - "Cheetah init failed."} + StatusCode: ret, + Message: "Cheetah init failed", + MessageStack: messageStack, + } } FrameLength = nativeCheetah.nativeFrameLength() @@ -168,8 +189,8 @@ func (cheetah *Cheetah) Init() error { func (cheetah *Cheetah) Delete() error { if cheetah.handle == nil { return &CheetahError{ - INVALID_STATE, - "Cheetah has not been initialized or has already been deleted"} + StatusCode: INVALID_STATE, + Message: "Cheetah has not been initialized or has already been deleted"} } nativeCheetah.nativeDelete(cheetah) @@ -183,21 +204,31 @@ func (cheetah *Cheetah) Delete() error { func (cheetah *Cheetah) Process(pcm []int16) (string, bool, error) { if cheetah.handle == nil { return "", false, &CheetahError{ - INVALID_STATE, - "Cheetah has not been initialized or has already been deleted"} + StatusCode: INVALID_STATE, + Message: "Cheetah has not been initialized or has already been deleted"} } if len(pcm) != FrameLength { return "", false, &CheetahError{ - INVALID_ARGUMENT, - fmt.Sprintf("Input data frame size (%d) does not match required size of %d", len(pcm), FrameLength)} + StatusCode: INVALID_ARGUMENT, + Message: fmt.Sprintf("Input data frame size (%d) does not match required size of %d", len(pcm), FrameLength)} } ret, transcript, isEndpoint := nativeCheetah.nativeProcess(cheetah, pcm) if PvStatus(ret) != SUCCESS { + errorStatus, messageStack := nativeCheetah.nativeGetErrorStack() + if errorStatus != SUCCESS { + return "", false, &CheetahError{ + StatusCode: errorStatus, + Message: "Unable to get Cheetah error state", + } + } + return "", false, &CheetahError{ - PvStatus(ret), - "Cheetah process failed."} + StatusCode: ret, + Message: "Cheetah process failed", + MessageStack: messageStack, + } } return transcript, isEndpoint, nil @@ -208,15 +239,25 @@ func (cheetah *Cheetah) Process(pcm []int16) (string, bool, error) { func (cheetah *Cheetah) Flush() (string, error) { if cheetah.handle == nil { return "", &CheetahError{ - INVALID_STATE, - "Cheetah has not been initialized or has already been deleted"} + StatusCode: INVALID_STATE, + Message: "Cheetah has not been initialized or has already been deleted"} } ret, transcript := nativeCheetah.nativeFlush(cheetah) if PvStatus(ret) != SUCCESS { + errorStatus, messageStack := nativeCheetah.nativeGetErrorStack() + if errorStatus != SUCCESS { + return "", &CheetahError{ + StatusCode: errorStatus, + Message: "Unable to get Cheetah error state", + } + } + return "", &CheetahError{ - PvStatus(ret), - "Cheetah flush failed."} + StatusCode: ret, + Message: "Cheetah flush failed", + MessageStack: messageStack, + } } return transcript, nil diff --git a/binding/go/cheetah_native.go b/binding/go/cheetah_native.go index 07a0c2f0..f5730f9d 100644 --- a/binding/go/cheetah_native.go +++ b/binding/go/cheetah_native.go @@ -1,4 +1,4 @@ -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // // You may not use this file except in compliance with the license. A copy of the license is // located in the "LICENSE" file accompanying this source. @@ -135,6 +135,35 @@ typedef void (*pv_cheetah_delete_func)(void *); void pv_cheetah_delete_wrapper(void *f, void *object) { return ((pv_cheetah_delete_func) f)(object); } + +typedef void (*pv_set_sdk_func)(const char *); + +void pv_set_sdk_wrapper(void *f, const char *sdk) { + return ((pv_set_sdk_func) f)(sdk); +} + +typedef int32_t (*pv_get_error_stack_func)(char ***, int32_t *); + +int32_t pv_get_error_stack_wrapper( + void *f, + char ***message_stack, + int32_t *message_stack_depth) { + return ((pv_get_error_stack_func) f)(message_stack, message_stack_depth); +} + +typedef void (*pv_free_error_stack_func)(char **); + +void pv_free_error_stack_wrapper( + void *f, + char **message_stack) { + return ((pv_free_error_stack_func) f)(message_stack); +} + +typedef void (*pv_cheetah_transcript_delete_func)(void *); + +void pv_cheetah_transcript_delete_wrapper(void* f, char *transcript) { + ((pv_cheetah_transcript_delete_func) f)(transcript); +} */ import "C" @@ -149,18 +178,23 @@ type nativeCheetahInterface interface { nativeDelete(*Cheetah) nativeSampleRate() nativeVersion() + nativeGetErrorStack() } type nativeCheetahType struct { libraryPath unsafe.Pointer - pv_cheetah_init_ptr unsafe.Pointer - pv_cheetah_process_ptr unsafe.Pointer - pv_cheetah_flush_ptr unsafe.Pointer - pv_cheetah_delete_ptr unsafe.Pointer - pv_cheetah_version_ptr unsafe.Pointer - pv_cheetah_frame_length_ptr unsafe.Pointer - pv_sample_rate_ptr unsafe.Pointer + pv_cheetah_init_ptr unsafe.Pointer + pv_cheetah_process_ptr unsafe.Pointer + pv_cheetah_flush_ptr unsafe.Pointer + pv_cheetah_delete_ptr unsafe.Pointer + pv_cheetah_version_ptr unsafe.Pointer + pv_cheetah_frame_length_ptr unsafe.Pointer + pv_sample_rate_ptr unsafe.Pointer + pv_set_sdk_ptr unsafe.Pointer + pv_get_error_stack_ptr unsafe.Pointer + pv_free_error_stack_ptr unsafe.Pointer + pv_cheetah_transcript_delete_ptr unsafe.Pointer } func (nc *nativeCheetahType) nativeInit(cheetah *Cheetah) (status PvStatus) { @@ -184,6 +218,14 @@ func (nc *nativeCheetahType) nativeInit(cheetah *Cheetah) (status PvStatus) { nc.pv_cheetah_version_ptr = C.load_symbol(nc.libraryPath, C.CString("pv_cheetah_version")) nc.pv_cheetah_frame_length_ptr = C.load_symbol(nc.libraryPath, C.CString("pv_cheetah_frame_length")) nc.pv_sample_rate_ptr = C.load_symbol(nc.libraryPath, C.CString("pv_sample_rate")) + nc.pv_set_sdk_ptr = C.load_symbol(nc.libraryPath, C.CString("pv_set_sdk")) + nc.pv_get_error_stack_ptr = C.load_symbol(nc.libraryPath, C.CString("pv_get_error_stack")) + nc.pv_free_error_stack_ptr = C.load_symbol(nc.libraryPath, C.CString("pv_free_error_stack")) + nc.pv_cheetah_transcript_delete_ptr = C.load_symbol(nc.libraryPath, C.CString("pv_cheetah_transcript_delete")) + + C.pv_set_sdk_wrapper( + nc.pv_set_sdk_ptr, + C.CString("go")) var ret = C.pv_cheetah_init_wrapper( nc.pv_cheetah_init_ptr, @@ -210,12 +252,12 @@ func (nc *nativeCheetahType) nativeProcess(cheetah *Cheetah, pcm []int16) (statu (*C.int16_t)(unsafe.Pointer(&pcm[0])), (**C.char)(unsafe.Pointer(&transcriptPtr)), (*C.bool)(unsafe.Pointer(&isEndpoint))) - if (PvStatus(ret) != SUCCESS) { + if PvStatus(ret) != SUCCESS { return PvStatus(ret), "", false } transcript = C.GoString((*C.char)(transcriptPtr)) - C.free(transcriptPtr) + C.pv_cheetah_transcript_delete_wrapper(nc.pv_cheetah_transcript_delete_ptr, (*C.char)(transcriptPtr)) return PvStatus(ret), transcript, isEndpoint } @@ -227,12 +269,12 @@ func (nc *nativeCheetahType) nativeFlush(cheetah *Cheetah) (status PvStatus, tra var ret = C.pv_cheetah_flush_wrapper(nc.pv_cheetah_flush_ptr, cheetah.handle, (**C.char)(unsafe.Pointer(&transcriptPtr))) - if (PvStatus(ret) != SUCCESS) { + if PvStatus(ret) != SUCCESS { return PvStatus(ret), "" } transcript = C.GoString((*C.char)(transcriptPtr)) - C.free(transcriptPtr) + C.pv_cheetah_transcript_delete_wrapper(nc.pv_cheetah_transcript_delete_ptr, (*C.char)(transcriptPtr)) return PvStatus(ret), transcript } @@ -248,3 +290,31 @@ func (nc nativeCheetahType) nativeFrameLength() (frameLength int) { func (nc nativeCheetahType) nativeVersion() (version string) { return C.GoString(C.pv_cheetah_version_wrapper(nc.pv_cheetah_version_ptr)) } + +func (nc *nativeCheetahType) nativeGetErrorStack() (status PvStatus, messageStack []string) { + var messageStackDepthRef C.int32_t + var messageStackRef **C.char + + var ret = C.pv_get_error_stack_wrapper(nc.pv_get_error_stack_ptr, + &messageStackRef, + &messageStackDepthRef) + + if PvStatus(ret) != SUCCESS { + return PvStatus(ret), []string{} + } + + defer C.pv_free_error_stack_wrapper( + nc.pv_free_error_stack_ptr, + messageStackRef) + + messageStackDepth := int(messageStackDepthRef) + messageStackSlice := (*[1 << 28]*C.char)(unsafe.Pointer(messageStackRef))[:messageStackDepth:messageStackDepth] + + messageStack = make([]string, messageStackDepth) + + for i := 0; i < messageStackDepth; i++ { + messageStack[i] = C.GoString(messageStackSlice[i]) + } + + return PvStatus(ret), messageStack +} diff --git a/binding/go/cheetah_test.go b/binding/go/cheetah_test.go index 083be8d9..5e1eed27 100644 --- a/binding/go/cheetah_test.go +++ b/binding/go/cheetah_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // // You may not use this file except in compliance with the license. A copy of the license is // located in the "LICENSE" file accompanying this source. @@ -21,35 +21,63 @@ import ( "os" "path/filepath" "reflect" - "runtime" + "strings" "testing" -) -var ( - testAccessKey string - cheetah Cheetah - testAudioPath string + "github.com/agnivade/levenshtein" ) -var processTestParameters = []struct { - enableAutomaticPunctuation bool +type TestParameters struct { + language string + testAudioFile string transcript string -}{ - {false, "Mr quilter is the apostle of the middle classes and we are glad to welcome his gospel"}, - {true, "Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel."}, + errorRate float32 + enableAutomaticPunctuation bool } +var ( + testAccessKey string + cheetah Cheetah + processTestParameters []TestParameters +) + func TestMain(m *testing.M) { flag.StringVar(&testAccessKey, "access_key", "", "AccessKey for testing") flag.Parse() - _, filename, _, _ := runtime.Caller(0) - dir := filepath.Dir(filename) + processTestParameters = loadTestData() + os.Exit(m.Run()) +} - testAudioPath, _ = filepath.Abs(filepath.Join(dir, "../../resources/audio_samples/test.wav")) +func loadTestData() []TestParameters { + punctuations := []string{"."} + transcript := "Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel." - os.Exit(m.Run()) + testCaseWithPunctuation := TestParameters{ + language: "en", + testAudioFile: "test.wav", + transcript: transcript, + enableAutomaticPunctuation: true, + errorRate: 0.025, + } + processTestParameters = append(processTestParameters, testCaseWithPunctuation) + + transcriptWithoutPunctuation := transcript + for _, p := range punctuations { + transcriptWithoutPunctuation = strings.ReplaceAll(transcriptWithoutPunctuation, p, "") + } + + testCaseWithoutPunctuation := TestParameters{ + language: "en", + testAudioFile: "test.wav", + transcript: transcriptWithoutPunctuation, + enableAutomaticPunctuation: false, + errorRate: 0.025, + } + processTestParameters = append(processTestParameters, testCaseWithoutPunctuation) + + return processTestParameters } func TestVersion(t *testing.T) { @@ -76,8 +104,11 @@ func TestVersion(t *testing.T) { func runProcessTestCase( t *testing.T, - enableAutomaticPunctuation bool, - expectedTranscript string) { + _ string, + testAudioFile string, + referenceTranscript string, + targetErrorRate float32, + enableAutomaticPunctuation bool) { cheetah = NewCheetah(testAccessKey) cheetah.EnableAutomaticPunctuation = enableAutomaticPunctuation @@ -93,13 +124,15 @@ func runProcessTestCase( } }() + testAudioPath, _ := filepath.Abs(filepath.Join("../../resources/audio_samples", testAudioFile)) + data, err := ioutil.ReadFile(testAudioPath) if err != nil { t.Fatalf("Could not read test file: %v", err) } data = data[44:] - var res string + var transcript string frameLengthInBytes := FrameLength * 2 numFrames := len(data) / frameLengthInBytes @@ -115,22 +148,73 @@ func runProcessTestCase( t.Fatalf("Failed to process pcm buffer: %v", err) } - res += partial + transcript += partial } final, err := cheetah.Flush() if err != nil { t.Fatalf("Failed to flush: %v", err) } - res += final + transcript += final - if res != expectedTranscript { - t.Fatalf("Expected '%s' got '%s'", expectedTranscript, res) + errorRate := float32(levenshtein.ComputeDistance(transcript, referenceTranscript)) / float32(len(referenceTranscript)) + if errorRate >= targetErrorRate { + t.Fatalf("Expected '%f' got '%f'", targetErrorRate, errorRate) } } func TestProcess(t *testing.T) { for _, test := range processTestParameters { - runProcessTestCase(t, test.enableAutomaticPunctuation, test.transcript) + runProcessTestCase(t, test.language, test.testAudioFile, test.transcript, test.errorRate, test.enableAutomaticPunctuation) + } +} + +func TestMessageStack(t *testing.T) { + cheetah = NewCheetah("invalid") + cheetah.EnableAutomaticPunctuation = true + err := cheetah.Init() + if err == nil { + log.Fatalf("Expected Cheetah init failure") + } + + err = cheetah.Init() + err2 := cheetah.Init() + + if len(err.Error()) > 1024 { + t.Fatalf("length of error is full: '%d'", len(err.Error())) + } + + if len(err2.Error()) != len(err.Error()) { + t.Fatalf("length of 1st init '%d' does not match 2nd init '%d'", len(err.Error()), len(err2.Error())) + } +} + +func TestProcessFlushMessageStack(t *testing.T) { + cheetah = NewCheetah(testAccessKey) + cheetah.EnableAutomaticPunctuation = true + err := cheetah.Init() + if err != nil { + log.Fatalf("Failed to init cheetah with: %v", err) + } + + address := cheetah.handle + cheetah.handle = nil + + testPcm := make([]int16, FrameLength) + + _, _, err = cheetah.Process(testPcm) + if err == nil { + t.Fatalf("Expected cheetah process to fail") + } + + _, err = cheetah.Flush() + if err == nil { + t.Fatalf("Expected cheetah flush to fail") + } + + cheetah.handle = address + delErr := cheetah.Delete() + if delErr != nil { + t.Fatalf("%v", delErr) } } diff --git a/binding/go/embedded/lib/common/cheetah_params.pv b/binding/go/embedded/lib/common/cheetah_params.pv index f2cbfd85..15e2bd90 100644 Binary files a/binding/go/embedded/lib/common/cheetah_params.pv and b/binding/go/embedded/lib/common/cheetah_params.pv differ diff --git a/binding/go/embedded/lib/jetson/cortex-a57-aarch64/libpv_cheetah.so b/binding/go/embedded/lib/jetson/cortex-a57-aarch64/libpv_cheetah.so index 51818832..d2fad30d 100755 Binary files a/binding/go/embedded/lib/jetson/cortex-a57-aarch64/libpv_cheetah.so and b/binding/go/embedded/lib/jetson/cortex-a57-aarch64/libpv_cheetah.so differ diff --git a/binding/go/embedded/lib/linux/x86_64/libpv_cheetah.so b/binding/go/embedded/lib/linux/x86_64/libpv_cheetah.so index ecb82eff..1982e371 100755 Binary files a/binding/go/embedded/lib/linux/x86_64/libpv_cheetah.so and b/binding/go/embedded/lib/linux/x86_64/libpv_cheetah.so differ diff --git a/binding/go/embedded/lib/mac/arm64/libpv_cheetah.dylib b/binding/go/embedded/lib/mac/arm64/libpv_cheetah.dylib index 46585c08..d170298b 100755 Binary files a/binding/go/embedded/lib/mac/arm64/libpv_cheetah.dylib and b/binding/go/embedded/lib/mac/arm64/libpv_cheetah.dylib differ diff --git a/binding/go/embedded/lib/mac/x86_64/libpv_cheetah.dylib b/binding/go/embedded/lib/mac/x86_64/libpv_cheetah.dylib index c023fbaf..b17cbc17 100755 Binary files a/binding/go/embedded/lib/mac/x86_64/libpv_cheetah.dylib and b/binding/go/embedded/lib/mac/x86_64/libpv_cheetah.dylib differ diff --git a/binding/go/embedded/lib/raspberry-pi/cortex-a53-aarch64/libpv_cheetah.so b/binding/go/embedded/lib/raspberry-pi/cortex-a53-aarch64/libpv_cheetah.so index ced770f1..284378ac 100755 Binary files a/binding/go/embedded/lib/raspberry-pi/cortex-a53-aarch64/libpv_cheetah.so and b/binding/go/embedded/lib/raspberry-pi/cortex-a53-aarch64/libpv_cheetah.so differ diff --git a/binding/go/embedded/lib/raspberry-pi/cortex-a53/libpv_cheetah.so b/binding/go/embedded/lib/raspberry-pi/cortex-a53/libpv_cheetah.so index 501fa127..3ca6b4f6 100755 Binary files a/binding/go/embedded/lib/raspberry-pi/cortex-a53/libpv_cheetah.so and b/binding/go/embedded/lib/raspberry-pi/cortex-a53/libpv_cheetah.so differ diff --git a/binding/go/embedded/lib/raspberry-pi/cortex-a72-aarch64/libpv_cheetah.so b/binding/go/embedded/lib/raspberry-pi/cortex-a72-aarch64/libpv_cheetah.so index d8f471c3..c60a61be 100755 Binary files a/binding/go/embedded/lib/raspberry-pi/cortex-a72-aarch64/libpv_cheetah.so and b/binding/go/embedded/lib/raspberry-pi/cortex-a72-aarch64/libpv_cheetah.so differ diff --git a/binding/go/embedded/lib/raspberry-pi/cortex-a72/libpv_cheetah.so b/binding/go/embedded/lib/raspberry-pi/cortex-a72/libpv_cheetah.so index 22094d64..3cb1d075 100755 Binary files a/binding/go/embedded/lib/raspberry-pi/cortex-a72/libpv_cheetah.so and b/binding/go/embedded/lib/raspberry-pi/cortex-a72/libpv_cheetah.so differ diff --git a/binding/go/embedded/lib/windows/amd64/libpv_cheetah.dll b/binding/go/embedded/lib/windows/amd64/libpv_cheetah.dll index 285b3fb0..282f8edd 100644 Binary files a/binding/go/embedded/lib/windows/amd64/libpv_cheetah.dll and b/binding/go/embedded/lib/windows/amd64/libpv_cheetah.dll differ diff --git a/binding/go/go.mod b/binding/go/go.mod index 22c43c0f..e45ae646 100644 --- a/binding/go/go.mod +++ b/binding/go/go.mod @@ -1,3 +1,3 @@ -module github.com/Picovoice/cheetah/binding/go +module github.com/Picovoice/cheetah/binding/go/v2 go 1.16 diff --git a/binding/go/go_test.mod b/binding/go/go_test.mod new file mode 100644 index 00000000..78edfb1e --- /dev/null +++ b/binding/go/go_test.mod @@ -0,0 +1,5 @@ +module github.com/Picovoice/cheetah/binding/go/v2 + +go 1.16 + +require github.com/agnivade/levenshtein v1.1.1 diff --git a/binding/go/go_test.sum b/binding/go/go_test.sum new file mode 100644 index 00000000..ad74db31 --- /dev/null +++ b/binding/go/go_test.sum @@ -0,0 +1,6 @@ +github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= +github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= +github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= +github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= \ No newline at end of file diff --git a/binding/ios/Cheetah-iOS.podspec b/binding/ios/Cheetah-iOS.podspec index cf7fa14e..b5616768 100644 --- a/binding/ios/Cheetah-iOS.podspec +++ b/binding/ios/Cheetah-iOS.podspec @@ -1,13 +1,13 @@ Pod::Spec.new do |s| s.name = 'Cheetah-iOS' s.module_name = 'Cheetah' - s.version = '1.1.0' + s.version = '2.0.0' s.license = {:type => 'Apache 2.0'} s.summary = 'iOS SDK for Picovoice\'s Cheetah speech-to-text engine.' - s.description = + s.description = <<-DESC Cheetah is an on-device streaming speech-to-text engine. - + Cheetah is: - Private, all voice processing runs locally. - Accurate @@ -23,8 +23,8 @@ Pod::Spec.new do |s| DESC s.homepage = 'https://github.com/Picovoice/cheetah/tree/master/binding/ios' s.author = { 'Picovoice' => 'hello@picovoice.ai' } - s.source = { :git => "https://github.com/Picovoice/cheetah.git", :tag => "Cheetah-iOS-v1.1.0" } - s.ios.deployment_target = '9.0' + s.source = { :git => "https://github.com/Picovoice/cheetah.git", :tag => "Cheetah-iOS-v2.0.0" } + s.ios.deployment_target = '13.0' s.swift_version = '5.0' s.vendored_frameworks = 'lib/ios/PvCheetah.xcframework' s.source_files = 'binding/ios/*.{swift}' diff --git a/binding/ios/Cheetah.swift b/binding/ios/Cheetah.swift index e9a201dc..b71e02c7 100644 --- a/binding/ios/Cheetah.swift +++ b/binding/ios/Cheetah.swift @@ -1,5 +1,5 @@ // -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" // file accompanying this source. // Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on @@ -23,6 +23,12 @@ public class Cheetah { /// Current Cheetah version. public static let version = String(cString: pv_cheetah_version()) + private static var sdk = "ios" + + public static func setSdk(sdk: String) { + self.sdk = sdk + } + /// Constructor. /// /// - Parameters: @@ -52,13 +58,18 @@ public class Cheetah { throw CheetahInvalidArgumentError("EndpointDuration must be a non-negative number.") } + pv_set_sdk(Cheetah.sdk) + let status = pv_cheetah_init( accessKey, modelPathArg, endpointDuration, enableAutomaticPunctuation, &handle) - try checkStatus(status, "Cheetah init failed") + if status != PV_STATUS_SUCCESS { + let messageStack = try getMessageStack() + throw pvStatusToCheetahError(status, "Cheetah init failed", messageStack) + } } deinit { @@ -113,17 +124,20 @@ public class Cheetah { if pcm.count != Cheetah.frameLength { throw CheetahInvalidArgumentError( - "Frame of audio data must contain \(Cheetah.frameLength) samples - - given frame contained \(pcm.count)") + "Frame of audio data must contain \(Cheetah.frameLength) samples" + + " - given frame contained \(pcm.count)") } var cPartialTranscript: UnsafeMutablePointer? var endPoint = false let status = pv_cheetah_process(self.handle, pcm, &cPartialTranscript, &endPoint) - try checkStatus(status, "Cheetah process failed") + if status != PV_STATUS_SUCCESS { + let messageStack = try getMessageStack() + throw pvStatusToCheetahError(status, "Cheetah process failed", messageStack) + } let transcript = String(cString: cPartialTranscript!) - cPartialTranscript?.deallocate() + pv_cheetah_transcript_delete(cPartialTranscript!) return (transcript, endPoint) } @@ -139,10 +153,13 @@ public class Cheetah { var cFinalTranscript: UnsafeMutablePointer? let status = pv_cheetah_flush(self.handle, &cFinalTranscript) - try checkStatus(status, "Cheetah flush failed") + if status != PV_STATUS_SUCCESS { + let messageStack = try getMessageStack() + throw pvStatusToCheetahError(status, "Cheetah flush failed", messageStack) + } let transcript = String(cString: cFinalTranscript!) - cFinalTranscript?.deallocate() + pv_cheetah_transcript_delete(cFinalTranscript!) return transcript } @@ -161,42 +178,59 @@ public class Cheetah { } throw CheetahIOError( - "Could not find file at path '\(filePath)'. If this is a packaged asset, - ensure you have added it to your xcode project." + "Could not find file at path '\(filePath)'. If this is a packaged asset, " + + "ensure you have added it to your xcode project." ) } - private func checkStatus(_ status: pv_status_t, _ message: String) throws { - if status == PV_STATUS_SUCCESS { - return - } - + private func pvStatusToCheetahError( + _ status: pv_status_t, + _ message: String, + _ messageStack: [String] = []) -> CheetahError { switch status { case PV_STATUS_OUT_OF_MEMORY: - throw CheetahMemoryError(message) + return CheetahMemoryError(message, messageStack) case PV_STATUS_IO_ERROR: - throw CheetahIOError(message) + return CheetahIOError(message, messageStack) case PV_STATUS_INVALID_ARGUMENT: - throw CheetahInvalidArgumentError(message) + return CheetahInvalidArgumentError(message, messageStack) case PV_STATUS_STOP_ITERATION: - throw CheetahStopIterationError(message) + return CheetahStopIterationError(message, messageStack) case PV_STATUS_KEY_ERROR: - throw CheetahKeyError(message) + return CheetahKeyError(message, messageStack) case PV_STATUS_INVALID_STATE: - throw CheetahInvalidStateError(message) + return CheetahInvalidStateError(message, messageStack) case PV_STATUS_RUNTIME_ERROR: - throw CheetahRuntimeError(message) + return CheetahRuntimeError(message, messageStack) case PV_STATUS_ACTIVATION_ERROR: - throw CheetahActivationError(message) + return CheetahActivationError(message, messageStack) case PV_STATUS_ACTIVATION_LIMIT_REACHED: - throw CheetahActivationLimitError(message) + return CheetahActivationLimitError(message, messageStack) case PV_STATUS_ACTIVATION_THROTTLED: - throw CheetahActivationThrottledError(message) + return CheetahActivationThrottledError(message, messageStack) case PV_STATUS_ACTIVATION_REFUSED: - throw CheetahActivationRefusedError(message) + return CheetahActivationRefusedError(message, messageStack) default: let pvStatusString = String(cString: pv_status_to_string(status)) - throw CheetahError("\(pvStatusString): \(message)") + return CheetahError("\(pvStatusString): \(message)", messageStack) + } + } + + private func getMessageStack() throws -> [String] { + var messageStackRef: UnsafeMutablePointer?>? + var messageStackDepth: Int32 = 0 + let status = pv_get_error_stack(&messageStackRef, &messageStackDepth) + if status != PV_STATUS_SUCCESS { + throw pvStatusToCheetahError(status, "Unable to get Cheetah error state") } + + var messageStack: [String] = [] + for i in 0..CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - PorcupineDemoApp + CheetahDemoApp CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier diff --git a/binding/ios/CheetahAppTest/CheetahAppTest/ViewController.swift b/binding/ios/CheetahAppTest/CheetahAppTest/ViewController.swift index 8e615640..f3776308 100644 --- a/binding/ios/CheetahAppTest/CheetahAppTest/ViewController.swift +++ b/binding/ios/CheetahAppTest/CheetahAppTest/ViewController.swift @@ -1,5 +1,5 @@ // -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" // file accompanying this source. // Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on @@ -9,10 +9,4 @@ import UIKit -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - } - -} +class ViewController: UIViewController { } diff --git a/binding/ios/CheetahAppTest/CheetahAppTestUITests/CheetahAppTestUITests.swift b/binding/ios/CheetahAppTest/CheetahAppTestUITests/CheetahAppTestUITests.swift index 8545c116..867fa896 100644 --- a/binding/ios/CheetahAppTest/CheetahAppTestUITests/CheetahAppTestUITests.swift +++ b/binding/ios/CheetahAppTest/CheetahAppTestUITests/CheetahAppTestUITests.swift @@ -1,5 +1,5 @@ // -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" // file accompanying this source. // Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on @@ -19,14 +19,6 @@ class CheetahDemoUITests: XCTestCase { let modelURL = Bundle(for: CheetahDemoUITests.self).url(forResource: "cheetah_params", withExtension: "pv")! - override func setUp() { - super.setUp() - } - - override func tearDown() { - super.tearDown() - } - override func setUpWithError() throws { continueAfterFailure = true } @@ -102,4 +94,37 @@ class CheetahDemoUITests: XCTestCase { func testVersion() throws { XCTAssertGreaterThan(Cheetah.version, "") } + + func testMessageStack() throws { + var first_error: String = "" + do { + let cheetah = try Cheetah.init(accessKey: "invalid", modelURL: modelURL) + XCTAssertNil(cheetah) + } catch { + first_error = "\(error.localizedDescription)" + XCTAssert(first_error.count < 1024) + } + + do { + let cheetah = try Cheetah.init(accessKey: "invalid", modelURL: modelURL) + XCTAssertNil(cheetah) + } catch { + XCTAssert("\(error.localizedDescription)".count == first_error.count) + } + } + + func testProcessMessageStack() throws { + let cheetah = try Cheetah(accessKey: accessKey, modelURL: modelURL) + cheetah.delete() + + var testPcm: [Int16] = [] + testPcm.reserveCapacity(Int(Cheetah.frameLength)) + + do { + let res = try cheetah.process(testPcm) + XCTAssertNil(res) + } catch { + XCTAssert("\(error.localizedDescription)".count > 0) + } + } } diff --git a/binding/ios/CheetahAppTest/Podfile b/binding/ios/CheetahAppTest/Podfile index f097b7a7..f94b6ba7 100644 --- a/binding/ios/CheetahAppTest/Podfile +++ b/binding/ios/CheetahAppTest/Podfile @@ -1,14 +1,14 @@ source 'https://cdn.cocoapods.org/' -platform :ios, '9.0' +platform :ios, '13.0' target 'CheetahAppTest' do - pod 'Cheetah-iOS', '~> 1.1.0' + pod 'Cheetah-iOS', '~> 2.0.0' end target 'CheetahAppTestUITests' do - pod 'Cheetah-iOS', '~> 1.1.0' + pod 'Cheetah-iOS', '~> 2.0.0' end target 'PerformanceTest' do - pod 'Cheetah-iOS', '~> 1.1.0' + pod 'Cheetah-iOS', '~> 2.0.0' end diff --git a/binding/ios/CheetahAppTest/Podfile.lock b/binding/ios/CheetahAppTest/Podfile.lock index 4fbf2fdd..c8f2c437 100644 --- a/binding/ios/CheetahAppTest/Podfile.lock +++ b/binding/ios/CheetahAppTest/Podfile.lock @@ -1,16 +1,16 @@ PODS: - - Cheetah-iOS (1.1.0) + - Cheetah-iOS (2.0.0) DEPENDENCIES: - - Cheetah-iOS (~> 1.1.0) + - Cheetah-iOS (~> 2.0.0) SPEC REPOS: trunk: - Cheetah-iOS SPEC CHECKSUMS: - Cheetah-iOS: 6fb7be693878f5b1dec0ea5b6534fbba30954afc + Cheetah-iOS: d98a5edcbf3b74dda6027aeac6a8c0f5997a47a2 -PODFILE CHECKSUM: be70602bbfa54a30183877dfe83545b7f63d2887 +PODFILE CHECKSUM: f90b6033292b2f97cb78c436b08b68d5f6f6c435 -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 diff --git a/binding/ios/CheetahErrors.swift b/binding/ios/CheetahErrors.swift index 9e530cca..da41d259 100644 --- a/binding/ios/CheetahErrors.swift +++ b/binding/ios/CheetahErrors.swift @@ -1,5 +1,5 @@ // -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" // file accompanying this source. // Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on @@ -9,13 +9,22 @@ public class CheetahError: LocalizedError { private let message: String + private let messageStack: [String] - public init (_ message: String) { + public init (_ message: String, _ messageStack: [String] = []) { self.message = message + self.messageStack = messageStack } public var errorDescription: String? { - return message + var messageString = message + if messageStack.count > 0 { + messageString += ":" + for i in 0.. 0) { + sb.append(":"); + for (int i = 0; i < messageStack.length; i++) { + sb.append(String.format("\n [%d] %s", i, messageStack[i])); + } + } + } + return sb.toString(); } } diff --git a/binding/java/src/ai/picovoice/cheetah/exception/CheetahIOException.java b/binding/java/src/ai/picovoice/cheetah/exception/CheetahIOException.java index f05f502b..853569ed 100644 --- a/binding/java/src/ai/picovoice/cheetah/exception/CheetahIOException.java +++ b/binding/java/src/ai/picovoice/cheetah/exception/CheetahIOException.java @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -20,4 +20,8 @@ public CheetahIOException(Throwable cause) { public CheetahIOException(String message) { super(message); } + + public CheetahIOException(String message, String[] messageStack) { + super(message, messageStack); + } } diff --git a/binding/java/src/ai/picovoice/cheetah/exception/CheetahInvalidArgumentException.java b/binding/java/src/ai/picovoice/cheetah/exception/CheetahInvalidArgumentException.java index b20f70f0..49bf69cd 100644 --- a/binding/java/src/ai/picovoice/cheetah/exception/CheetahInvalidArgumentException.java +++ b/binding/java/src/ai/picovoice/cheetah/exception/CheetahInvalidArgumentException.java @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -20,4 +20,8 @@ public CheetahInvalidArgumentException(Throwable cause) { public CheetahInvalidArgumentException(String message) { super(message); } + + public CheetahInvalidArgumentException(String message, String[] messageStack) { + super(message, messageStack); + } } diff --git a/binding/java/src/ai/picovoice/cheetah/exception/CheetahInvalidStateException.java b/binding/java/src/ai/picovoice/cheetah/exception/CheetahInvalidStateException.java index 387d1ee6..b27ac39f 100644 --- a/binding/java/src/ai/picovoice/cheetah/exception/CheetahInvalidStateException.java +++ b/binding/java/src/ai/picovoice/cheetah/exception/CheetahInvalidStateException.java @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -20,4 +20,8 @@ public CheetahInvalidStateException(Throwable cause) { public CheetahInvalidStateException(String message) { super(message); } + + public CheetahInvalidStateException(String message, String[] messageStack) { + super(message, messageStack); + } } diff --git a/binding/java/src/ai/picovoice/cheetah/exception/CheetahKeyException.java b/binding/java/src/ai/picovoice/cheetah/exception/CheetahKeyException.java index 760cbf33..d4bebf11 100644 --- a/binding/java/src/ai/picovoice/cheetah/exception/CheetahKeyException.java +++ b/binding/java/src/ai/picovoice/cheetah/exception/CheetahKeyException.java @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -20,4 +20,8 @@ public CheetahKeyException(Throwable cause) { public CheetahKeyException(String message) { super(message); } + + public CheetahKeyException(String message, String[] messageStack) { + super(message, messageStack); + } } diff --git a/binding/java/src/ai/picovoice/cheetah/exception/CheetahMemoryException.java b/binding/java/src/ai/picovoice/cheetah/exception/CheetahMemoryException.java index b4cad213..d6b55af9 100644 --- a/binding/java/src/ai/picovoice/cheetah/exception/CheetahMemoryException.java +++ b/binding/java/src/ai/picovoice/cheetah/exception/CheetahMemoryException.java @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -20,4 +20,8 @@ public CheetahMemoryException(Throwable cause) { public CheetahMemoryException(String message) { super(message); } + + public CheetahMemoryException(String message, String[] messageStack) { + super(message, messageStack); + } } diff --git a/binding/java/src/ai/picovoice/cheetah/exception/CheetahRuntimeException.java b/binding/java/src/ai/picovoice/cheetah/exception/CheetahRuntimeException.java index ae9fb75b..b13c9d0c 100644 --- a/binding/java/src/ai/picovoice/cheetah/exception/CheetahRuntimeException.java +++ b/binding/java/src/ai/picovoice/cheetah/exception/CheetahRuntimeException.java @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -20,4 +20,8 @@ public CheetahRuntimeException(Throwable cause) { public CheetahRuntimeException(String message) { super(message); } + + public CheetahRuntimeException(String message, String[] messageStack) { + super(message, messageStack); + } } diff --git a/binding/java/src/ai/picovoice/cheetah/exception/CheetahStopIterationException.java b/binding/java/src/ai/picovoice/cheetah/exception/CheetahStopIterationException.java index 859af0e0..9f3326ff 100644 --- a/binding/java/src/ai/picovoice/cheetah/exception/CheetahStopIterationException.java +++ b/binding/java/src/ai/picovoice/cheetah/exception/CheetahStopIterationException.java @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -20,4 +20,8 @@ public CheetahStopIterationException(Throwable cause) { public CheetahStopIterationException(String message) { super(message); } + + public CheetahStopIterationException(String message, String[] messageStack) { + super(message, messageStack); + } } diff --git a/binding/java/test/ai/picovoice/cheetah/CheetahPerformanceTest.java b/binding/java/test/ai/picovoice/cheetah/CheetahPerformanceTest.java index ad909758..9d54b661 100644 --- a/binding/java/test/ai/picovoice/cheetah/CheetahPerformanceTest.java +++ b/binding/java/test/ai/picovoice/cheetah/CheetahPerformanceTest.java @@ -35,7 +35,6 @@ public class CheetahPerformanceTest { @Test void initPerformance() throws Exception { - long[] perfResults = new long[numTestIterations]; for (int i = 0; i < numTestIterations + 1; i++) { long before = System.nanoTime(); diff --git a/binding/java/test/ai/picovoice/cheetah/CheetahTest.java b/binding/java/test/ai/picovoice/cheetah/CheetahTest.java index 9b06d0ef..513b3cdf 100644 --- a/binding/java/test/ai/picovoice/cheetah/CheetahTest.java +++ b/binding/java/test/ai/picovoice/cheetah/CheetahTest.java @@ -33,16 +33,57 @@ public class CheetahTest { private final String accessKey = System.getProperty("pvTestingAccessKey"); @Test - void getVersion() throws Exception { + void getVersion() throws CheetahException { Cheetah cheetah = new Cheetah.Builder() .setAccessKey(accessKey) .build(); - assertTrue(cheetah.getVersion() != null && !cheetah.getVersion().equals("")); + cheetah.delete(); + } + @Test + void getFrameLength() throws CheetahException { + Cheetah cheetah = new Cheetah.Builder() + .setAccessKey(accessKey) + .build(); + assertTrue(cheetah.getFrameLength() > 0); + cheetah.delete(); + } + + @Test + void getSampleRate() throws CheetahException { + Cheetah cheetah = new Cheetah.Builder() + .setAccessKey(accessKey) + .build(); + assertTrue(cheetah.getSampleRate() > 0); cheetah.delete(); } + @Test + void getErrorStack() { + String[] error = {}; + try { + new Cheetah.Builder() + .setAccessKey("invalid") + .build(); + } catch (CheetahException e) { + error = e.getMessageStack(); + } + + assertTrue(0 < error.length); + assertTrue(error.length <= 8); + + try { + new Cheetah.Builder() + .setAccessKey("invalid") + .build(); + } catch (CheetahException e) { + for (int i = 0; i < error.length; i++) { + assertEquals(e.getMessageStack()[i], error[i]); + } + } + } + @ParameterizedTest(name = "test transcribe with automatic punctuation set to ''{0}''") @MethodSource("transcribeProvider") void transcribe(boolean enableAutomaticPunctuation, String referenceTranscript) throws Exception { diff --git a/binding/nodejs/README.md b/binding/nodejs/README.md index 68fb229d..2430e89b 100644 --- a/binding/nodejs/README.md +++ b/binding/nodejs/README.md @@ -15,7 +15,7 @@ Cheetah is an on-device streaming speech-to-text engine. Cheetah is: ## Compatibility -- Node.js 12+ +- Node.js 16+ - Runs on Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64), Raspberry Pi (4, 3), and NVIDIA Jetson Nano. ## Installation diff --git a/binding/nodejs/copy.js b/binding/nodejs/copy.js index b6e73baa..ea288685 100644 --- a/binding/nodejs/copy.js +++ b/binding/nodejs/copy.js @@ -1,5 +1,5 @@ // -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // // You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" // file accompanying this source. @@ -10,7 +10,7 @@ // "use strict"; -const mkdirp = require("mkdirp"); +const { mkdirp } = require("mkdirp"); const ncp = require("ncp").ncp; console.log("Copying library files..."); diff --git a/binding/nodejs/package.json b/binding/nodejs/package.json index 6027173b..00096467 100644 --- a/binding/nodejs/package.json +++ b/binding/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@picovoice/cheetah-node", - "version": "1.1.1", + "version": "2.0.0", "description": "Picovoice Cheetah Node.js binding", "main": "dist/index.js", "types": "dist/types/index.d.ts", @@ -39,13 +39,13 @@ "homepage": "https://picovoice.ai/products/cheetah/", "devDependencies": { "@types/jest": "^27.4.1", - "@types/node": "^17.0.21", + "@types/node": "^18.11.9", "@typescript-eslint/eslint-plugin": "^5.19.0", "@typescript-eslint/parser": "^5.19.0", "eslint": "^8.13.0", "eslint-plugin-jest": "^27.1.6", "jest": "^27.5.1", - "mkdirp": "^1.0.4", + "mkdirp": "^3.0.1", "ncp": "^2.0.0", "npm-run-all": "^4.1.5", "prettier": "^2.6.2", @@ -54,7 +54,7 @@ "wavefile": "^11.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=16.0.0" }, "cpu": [ "!ia32", diff --git a/binding/nodejs/src/cheetah.ts b/binding/nodejs/src/cheetah.ts index 0fb51f7b..bd780903 100644 --- a/binding/nodejs/src/cheetah.ts +++ b/binding/nodejs/src/cheetah.ts @@ -97,9 +97,12 @@ export default class Cheetah { } const pvCheetah = require(libraryPath); // eslint-disable-line + this._pvCheetah = pvCheetah; let cheetahHandleAndStatus: CheetahHandleAndStatus | null = null; try { + pvCheetah.set_sdk("nodejs"); + cheetahHandleAndStatus = pvCheetah.init( accessKey, modelPath, @@ -107,16 +110,15 @@ export default class Cheetah { enableAutomaticPunctuation ); } catch (err: any) { - pvStatusToException(err.code, err); + pvStatusToException(PvStatus[err.code as keyof typeof PvStatus], err); } const status = cheetahHandleAndStatus!.status; if (status !== PvStatus.SUCCESS) { - pvStatusToException(status, 'Cheetah failed to initialize'); + this.handlePvStatus(status, 'Cheetah failed to initialize'); } this._handle = cheetahHandleAndStatus!.handle; - this._pvCheetah = pvCheetah; this._sampleRate = pvCheetah.sample_rate(); this._frameLength = pvCheetah.frame_length(); this._version = pvCheetah.version(); @@ -178,12 +180,12 @@ export default class Cheetah { try { partialTranscriptAndStatus = this._pvCheetah.process(this._handle, pcm); } catch (err: any) { - pvStatusToException(err.code, err); + pvStatusToException(PvStatus[err.code as keyof typeof PvStatus], err); } const status = partialTranscriptAndStatus!.status; if (status !== PvStatus.SUCCESS) { - pvStatusToException(status, 'Cheetah failed to process the audio frame'); + this.handlePvStatus(status, 'Cheetah failed to process the audio frame'); } return [ @@ -210,12 +212,12 @@ export default class Cheetah { try { transcriptAndStatus = this._pvCheetah.flush(this._handle); } catch (err: any) { - pvStatusToException(err.code, err); + pvStatusToException(PvStatus[err.code as keyof typeof PvStatus], err); } const status = transcriptAndStatus!.status; if (status !== PvStatus.SUCCESS) { - pvStatusToException(status, 'Cheetah failed to process the audio frame'); + this.handlePvStatus(status, 'Cheetah failed to flush'); } return transcriptAndStatus!.transcript; @@ -240,4 +242,13 @@ export default class Cheetah { console.warn('Cheetah is not initialized'); } } + + private handlePvStatus(status: PvStatus, message: string): void { + const errorObject = this._pvCheetah.get_error_stack(); + if (errorObject.status === PvStatus.SUCCESS) { + pvStatusToException(status, message, errorObject.message_stack); + } else { + pvStatusToException(status, "Unable to get Cheetah error state"); + } + } } diff --git a/binding/nodejs/src/errors.ts b/binding/nodejs/src/errors.ts index 1e55094b..ea534c67 100644 --- a/binding/nodejs/src/errors.ts +++ b/binding/nodejs/src/errors.ts @@ -12,50 +12,82 @@ import PvStatus from './pv_status_t'; -export class CheetahError extends Error {} +export class CheetahError extends Error { + private readonly _message: string; + private readonly _messageStack: string[]; + + constructor(message: string, messageStack: string[] = []) { + super(CheetahError.errorToString(message, messageStack)); + this._message = message; + this._messageStack = messageStack; + } + + get message(): string { + return this._message; + } + + get messageStack(): string[] { + return this._messageStack; + } + + private static errorToString( + initial: string, + messageStack: string[] + ): string { + let msg = initial; + + if (messageStack.length > 0) { + msg += `: ${messageStack.reduce((acc, value, index) => + acc + '\n [' + index + '] ' + value, '')}`; + } + + return msg; + } +} export class CheetahOutOfMemoryError extends CheetahError {} -export class CheetahIoError extends CheetahError {} +export class CheetahIOError extends CheetahError {} export class CheetahInvalidArgumentError extends CheetahError {} export class CheetahStopIterationError extends CheetahError {} export class CheetahKeyError extends CheetahError {} export class CheetahInvalidStateError extends CheetahError {} export class CheetahRuntimeError extends CheetahError {} export class CheetahActivationError extends CheetahError {} -export class CheetahActivationLimitReached extends CheetahError {} -export class CheetahActivationThrottled extends CheetahError {} -export class CheetahActivationRefused extends CheetahError {} +export class CheetahActivationLimitReachedError extends CheetahError {} +export class CheetahActivationThrottledError extends CheetahError {} +export class CheetahActivationRefusedError extends CheetahError {} export function pvStatusToException( pvStatus: PvStatus, - errorMessage: string + errorMessage: string, + messageStack: string[] = [] ): CheetahError { switch (pvStatus) { case PvStatus.OUT_OF_MEMORY: - throw new CheetahOutOfMemoryError(errorMessage); + throw new CheetahOutOfMemoryError(errorMessage, messageStack); case PvStatus.IO_ERROR: - throw new CheetahIoError(errorMessage); + throw new CheetahIOError(errorMessage, messageStack); case PvStatus.INVALID_ARGUMENT: - throw new CheetahInvalidArgumentError(errorMessage); + throw new CheetahInvalidArgumentError(errorMessage, messageStack); case PvStatus.STOP_ITERATION: - throw new CheetahStopIterationError(errorMessage); + throw new CheetahStopIterationError(errorMessage, messageStack); case PvStatus.KEY_ERROR: - throw new CheetahKeyError(errorMessage); + throw new CheetahKeyError(errorMessage, messageStack); case PvStatus.INVALID_STATE: - throw new CheetahInvalidStateError(errorMessage); + throw new CheetahInvalidStateError(errorMessage, messageStack); case PvStatus.RUNTIME_ERROR: - throw new CheetahRuntimeError(errorMessage); + throw new CheetahRuntimeError(errorMessage, messageStack); case PvStatus.ACTIVATION_ERROR: - throw new CheetahActivationError(errorMessage); + throw new CheetahActivationError(errorMessage, messageStack); case PvStatus.ACTIVATION_LIMIT_REACHED: - throw new CheetahActivationLimitReached(errorMessage); + throw new CheetahActivationLimitReachedError(errorMessage, messageStack); case PvStatus.ACTIVATION_THROTTLED: - throw new CheetahActivationThrottled(errorMessage); + throw new CheetahActivationThrottledError(errorMessage, messageStack); case PvStatus.ACTIVATION_REFUSED: - throw new CheetahActivationRefused(errorMessage); + throw new CheetahActivationRefusedError(errorMessage, messageStack); default: // eslint-disable-next-line no-console console.warn(`Unmapped error code: ${pvStatus}`); - throw new CheetahError(errorMessage); + throw new CheetahError(errorMessage, messageStack); } } diff --git a/binding/nodejs/src/index.ts b/binding/nodejs/src/index.ts index 6f4c4101..a635e706 100644 --- a/binding/nodejs/src/index.ts +++ b/binding/nodejs/src/index.ts @@ -20,38 +20,14 @@ import { CheetahOptions, } from './types'; -import { - CheetahError, - CheetahOutOfMemoryError, - CheetahIoError, - CheetahInvalidArgumentError, - CheetahStopIterationError, - CheetahKeyError, - CheetahInvalidStateError, - CheetahRuntimeError, - CheetahActivationError, - CheetahActivationLimitReached, - CheetahActivationThrottled, - CheetahActivationRefused, -} from './errors'; +import * as CheetahErrors from "./errors"; export { Cheetah, - CheetahActivationError, - CheetahActivationLimitReached, - CheetahActivationRefused, - CheetahActivationThrottled, - CheetahError, + CheetahErrors, CheetahInitOptions, CheetahInputOptions, - CheetahInvalidArgumentError, - CheetahInvalidStateError, - CheetahIoError, - CheetahKeyError, CheetahOptions, - CheetahOutOfMemoryError, - CheetahRuntimeError, - CheetahStopIterationError, checkWaveFile, getInt16Frames, }; diff --git a/binding/nodejs/test/index.test.ts b/binding/nodejs/test/index.test.ts index 9b279315..aaa15be7 100644 --- a/binding/nodejs/test/index.test.ts +++ b/binding/nodejs/test/index.test.ts @@ -12,21 +12,23 @@ import { Cheetah, - CheetahInvalidArgumentError, - getInt16Frames, - checkWaveFile, + CheetahErrors, } from '../src'; import * as fs from 'fs'; -import * as path from 'path'; import { WaveFile } from 'wavefile'; import { getSystemLibraryPath } from '../src/platforms'; -const MODEL_PATH = './lib/common/cheetah_params.pv'; +import { + TRANSCRIPT, + getAudioFile, + getModelPath, + getTestParameters, +} from './test_utils'; -const WAV_PATH = '../../../resources/audio_samples/test.wav'; -const TRANSCRIPT = - 'Mr quilter is the apostle of the middle classes and we are glad to welcome his gospel'; +const MODEL_PATH = getModelPath(); +const TEST_PARAMETERS = getTestParameters(); +const WAV_PATH = "test.wav"; const libraryPath = getSystemLibraryPath(); @@ -34,30 +36,60 @@ const ACCESS_KEY = process.argv .filter(x => x.startsWith('--access_key='))[0] .split('--access_key=')[1]; -function cheetahProcessWaveFile( - engineInstance: Cheetah, - relativeWaveFilePath: string -): [string, boolean] { - const waveFilePath = path.join(__dirname, relativeWaveFilePath); +const levenshteinDistance = (words1: string[], words2: string[]) => { + const res = Array.from( + Array(words1.length + 1), + () => new Array(words2.length + 1) + ); + for (let i = 0; i <= words1.length; i++) { + res[i][0] = i; + } + for (let j = 0; j <= words2.length; j++) { + res[0][j] = j; + } + for (let i = 1; i <= words1.length; i++) { + for (let j = 1; j <= words2.length; j++) { + res[i][j] = Math.min( + res[i - 1][j] + 1, + res[i][j - 1] + 1, + res[i - 1][j - 1] + + (words1[i - 1].toUpperCase() === words2[j - 1].toUpperCase() ? 0 : 1) + ); + } + } + return res[words1.length][words2.length]; +}; + +const characterErrorRate = ( + transcript: string, + expectedTranscript: string +): number => { + const ed = levenshteinDistance( + transcript.split(''), + expectedTranscript.split('') + ); + return ed / expectedTranscript.length; +}; + +const loadPcm = (audioFile: string): Int16Array => { + const waveFilePath = getAudioFile(audioFile); const waveBuffer = fs.readFileSync(waveFilePath); const waveAudioFile = new WaveFile(waveBuffer); - if (!checkWaveFile(waveAudioFile, engineInstance.sampleRate)) { - // eslint-disable-next-line no-console - console.error( - 'Audio file did not meet requirements. Wave file must be 16KHz, 16-bit, linear PCM (mono).' - ); - return ['', false]; - } + const pcm: any = waveAudioFile.getSamples(false, Int16Array); + return pcm; +}; - const frames = getInt16Frames(waveAudioFile, engineInstance.frameLength); +const cheetahProcessWaveFile = ( + engineInstance: Cheetah, + audioFile: string +): [string, boolean] => { + const pcm = loadPcm(audioFile); let transcript = ''; let isEndpoint = false; - for (let i = 0; i < frames.length; i++) { - const frame = frames[i]; - const [partialTranscript, partialIsEndpoint] = - engineInstance.process(frame); + for (let i = 0; i < pcm.length - engineInstance.frameLength; i += engineInstance.frameLength) { + const [partialTranscript, partialIsEndpoint] = engineInstance.process(pcm.slice(i, i + engineInstance.frameLength)); transcript += partialTranscript; isEndpoint = partialIsEndpoint; } @@ -65,41 +97,74 @@ function cheetahProcessWaveFile( transcript += partialTranscript; return [transcript, isEndpoint]; -} - -describe('Defaults', () => { - test('successful process', () => { - let cheetahEngine = new Cheetah(ACCESS_KEY); - - let [transcript, isEndpoint] = cheetahProcessWaveFile( - cheetahEngine, - WAV_PATH - ); - - expect(transcript).toBe(TRANSCRIPT); - expect(isEndpoint).toBe(false); - - cheetahEngine.release(); +}; + + +const testCheetahProcess = ( + _: string, + transcript: string, + testPunctuation: boolean, + errorRate: number, + audioFile: string +) => { + let cheetahEngine = new Cheetah(ACCESS_KEY, { + enableAutomaticPunctuation: testPunctuation, }); - test('successful process with endpoint detection', () => { - let cheetahEngine = new Cheetah(ACCESS_KEY, { endpointDurationSec: 0.2 }); - - let [transcript, isEndpoint] = cheetahProcessWaveFile( - cheetahEngine, - WAV_PATH - ); - - expect(transcript).toBe(TRANSCRIPT); - expect(isEndpoint).toBe(true); - - cheetahEngine.release(); - }); + let [res, __] = cheetahProcessWaveFile(cheetahEngine, audioFile); + + expect( + characterErrorRate(res, transcript) < errorRate + ).toBeTruthy(); + + cheetahEngine.release(); +}; + +describe('successful processes', () => { + it.each(TEST_PARAMETERS)( + 'testing process `%p`', + ( + language: string, + transcript: string, + _: string, + errorRate: number, + audioFile: string + ) => { + testCheetahProcess( + language, + transcript, + false, + errorRate, + audioFile + ); + } + ); + + it.each(TEST_PARAMETERS)( + 'testing process `%p` with punctuation', + ( + language: string, + _: string, + transcriptWithPunctuation: string, + errorRate: number, + audioFile: string + ) => { + testCheetahProcess( + language, + transcriptWithPunctuation, + true, + errorRate, + audioFile + ); + } + ); +}); +describe('Defaults', () => { test('Empty AccessKey', () => { expect(() => { new Cheetah(''); - }).toThrow(CheetahInvalidArgumentError); + }).toThrow(CheetahErrors.CheetahInvalidArgumentError); }); }); @@ -107,14 +172,12 @@ describe('manual paths', () => { test('manual model path', () => { let cheetahEngine = new Cheetah(ACCESS_KEY, { modelPath: MODEL_PATH }); - let [transcript, isEndpoint] = cheetahProcessWaveFile( + let [transcript, _] = cheetahProcessWaveFile( cheetahEngine, WAV_PATH ); expect(transcript).toBe(TRANSCRIPT); - expect(isEndpoint).toBe(false); - cheetahEngine.release(); }); @@ -125,30 +188,34 @@ describe('manual paths', () => { endpointDurationSec: 0.2, }); - let [transcript, isEndpoint] = cheetahProcessWaveFile( + let [transcript, _] = cheetahProcessWaveFile( cheetahEngine, WAV_PATH ); expect(transcript).toBe(TRANSCRIPT); - expect(isEndpoint).toBe(true); - cheetahEngine.release(); }); +}); - test('Enable automatic punctuation', () => { - let cheetahEngine = new Cheetah(ACCESS_KEY, { - enableAutomaticPunctuation: true, - endpointDurationSec: 0.2, - }); - - // eslint-disable-next-line no-unused-vars - let [transcript, _] = cheetahProcessWaveFile(cheetahEngine, WAV_PATH); - - expect(transcript).toBe( - 'Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.' - ); - - cheetahEngine.release(); +describe("error message stack", () => { + test("message stack cleared after read", () => { + let error: string[] = []; + try { + new Cheetah('invalid', { modelPath: MODEL_PATH }); + } catch (e: any) { + error = e.messageStack; + } + + expect(error.length).toBeGreaterThan(0); + expect(error.length).toBeLessThanOrEqual(8); + + try { + new Cheetah('invalid', { modelPath: MODEL_PATH }); + } catch (e: any) { + for (let i = 0; i < error.length; i++) { + expect(error[i]).toEqual(e.messageStack[i]); + } + } }); }); diff --git a/binding/nodejs/test/test_utils.ts b/binding/nodejs/test/test_utils.ts new file mode 100644 index 00000000..93c00575 --- /dev/null +++ b/binding/nodejs/test/test_utils.ts @@ -0,0 +1,41 @@ +// +// Copyright 2023 Picovoice Inc. +// +// You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" +// file accompanying this source. +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. +// +import * as path from 'path'; + +const ROOT_DIR = path.join(__dirname, '../../..'); + +export const TRANSCRIPT = + 'Mr quilter is the apostle of the middle classes and we are glad to welcome his gospel'; +export const TRANSCRIPT_WITH_PUNCTUATION = + 'Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.'; + +export function getModelPath(): string { + return path.join( + ROOT_DIR, + `lib/common/cheetah_params.pv` + ); +} + +export function getAudioFile(audioFile: string): string { + return path.join(ROOT_DIR, 'resources/audio_samples', audioFile); +} + +export function getTestParameters(): [ + string, + string, + string, + number, + string +][] { + return [ + ["en", TRANSCRIPT, TRANSCRIPT_WITH_PUNCTUATION, 0.025, "test.wav"] + ]; +} diff --git a/binding/nodejs/yarn.lock b/binding/nodejs/yarn.lock index 9759e526..70a43790 100644 --- a/binding/nodejs/yarn.lock +++ b/binding/nodejs/yarn.lock @@ -15,157 +15,155 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/highlight" "^7.18.6" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/compat-data@^7.21.5": - version "7.21.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" - integrity sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA== +"@babel/compat-data@^7.22.9": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" - integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-compilation-targets" "^7.21.5" - "@babel/helper-module-transforms" "^7.21.5" - "@babel/helpers" "^7.21.5" - "@babel/parser" "^7.21.8" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" - convert-source-map "^1.7.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" + json5 "^2.2.3" + semver "^6.3.1" -"@babel/generator@^7.21.5", "@babel/generator@^7.7.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.5.tgz#c0c0e5449504c7b7de8236d99338c3e2a340745f" - integrity sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w== +"@babel/generator@^7.23.0", "@babel/generator@^7.7.2": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== dependencies: - "@babel/types" "^7.21.5" + "@babel/types" "^7.23.0" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" - integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w== +"@babel/helper-compilation-targets@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== dependencies: - "@babel/compat-data" "^7.21.5" - "@babel/helper-validator-option" "^7.21.0" - browserslist "^4.21.3" + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" lru-cache "^5.1.1" - semver "^6.3.0" - -"@babel/helper-environment-visitor@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" - integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== - -"@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== - dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" - integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== - dependencies: - "@babel/types" "^7.21.4" - -"@babel/helper-module-transforms@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" - integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw== - dependencies: - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-module-imports" "^7.21.4" - "@babel/helper-simple-access" "^7.21.5" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" - integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== - -"@babel/helper-simple-access@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" - integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== - dependencies: - "@babel/types" "^7.21.5" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" - integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" - integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== - -"@babel/helpers@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08" - integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA== - dependencies: - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8": - version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" - integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -252,44 +250,44 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" - integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/template@^7.20.7", "@babel/template@^7.3.3": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" - integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" - integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.5" - "@babel/types" "^7.21.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/template@^7.22.15", "@babel/template@^7.3.3": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.2", "@babel/traverse@^7.7.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" - integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== dependencies: - "@babel/helper-string-parser" "^7.21.5" - "@babel/helper-validator-identifier" "^7.19.1" + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -304,19 +302,19 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" - integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" - integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== +"@eslint/eslintrc@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" + integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.2" + espree "^9.6.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -324,17 +322,17 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.43.0": - version "8.43.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.43.0.tgz#559ca3d9ddbd6bf907ad524320a0d14b85586af0" - integrity sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg== +"@eslint/js@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" + integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -343,10 +341,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -542,33 +540,28 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -611,9 +604,9 @@ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" - integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + version "7.20.4" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.4.tgz#26a87347e6c6f753b3668398e34496d6d9ac6ac0" + integrity sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -622,50 +615,50 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + version "7.6.7" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.7.tgz#a7aebf15c7bc0eb9abd638bdb5c0b8700399c9d0" + integrity sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.5.tgz#c107216842905afafd3b6e774f6f935da6f5db80" - integrity sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q== + version "7.20.4" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.4.tgz#ec2c06fed6549df8bc0eb4615b683749a4a92e1b" + integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.20.7" "@types/graceful-fs@^4.1.2": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" - integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" @@ -678,131 +671,140 @@ pretty-format "^27.0.0" "@types/json-schema@^7.0.9": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/node@*": - version "18.16.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.3.tgz#6bda7819aae6ea0b386ebc5b24bdf602f1b42b01" - integrity sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q== + version "20.8.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.10.tgz#a5448b895c753ae929c26ce85cab557c6d4a365e" + integrity sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w== + dependencies: + undici-types "~5.26.4" -"@types/node@^17.0.21": - version "17.0.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== +"@types/node@^18.11.9": + version "18.18.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.8.tgz#2b285361f2357c8c8578ec86b5d097c7f464cfd6" + integrity sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ== + dependencies: + undici-types "~5.26.4" "@types/prettier@^2.1.5": - version "2.7.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" - integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/semver@^7.3.12": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" - integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^5.19.0": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz#81382d6ecb92b8dda70e91f9035611cb2fecd1c3" - integrity sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw== + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== dependencies: "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.60.1" - "@typescript-eslint/type-utils" "5.60.1" - "@typescript-eslint/utils" "5.60.1" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" natural-compare-lite "^1.4.0" semver "^7.3.7" tsutils "^3.21.0" "@typescript-eslint/parser@^5.19.0": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.60.1.tgz#0f2f58209c0862a73e3d5a56099abfdfa21d0fd3" - integrity sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q== + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: - "@typescript-eslint/scope-manager" "5.60.1" - "@typescript-eslint/types" "5.60.1" - "@typescript-eslint/typescript-estree" "5.60.1" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz#35abdb47f500c68c08f2f2b4f22c7c79472854bb" - integrity sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "5.60.1" - "@typescript-eslint/visitor-keys" "5.60.1" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz#17770540e98d65ab4730c7aac618003f702893f4" - integrity sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A== +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== dependencies: - "@typescript-eslint/typescript-estree" "5.60.1" - "@typescript-eslint/utils" "5.60.1" + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.60.1.tgz#a17473910f6b8d388ea83c9d7051af89c4eb7561" - integrity sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/typescript-estree@5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz#8c71824b7165b64d5ebd7aa42968899525959834" - integrity sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: - "@typescript-eslint/types" "5.60.1" - "@typescript-eslint/visitor-keys" "5.60.1" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.60.1", "@typescript-eslint/utils@^5.10.0": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.60.1.tgz#6861ebedbefba1ac85482d2bdef6f2ff1eb65b80" - integrity sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ== +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.10.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.60.1" - "@typescript-eslint/types" "5.60.1" - "@typescript-eslint/typescript-estree" "5.60.1" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.60.1": - version "5.60.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz#19a877358bf96318ec35d90bfe6bd1445cce9434" - integrity sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@typescript-eslint/types" "5.60.1" + "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -831,15 +833,10 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -acorn@^8.8.0: - version "8.9.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" - integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== +acorn@^8.2.4, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== agent-base@6: version "6.0.2" @@ -848,7 +845,7 @@ agent-base@6: dependencies: debug "4" -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -922,6 +919,19 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1018,15 +1028,15 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.21.3: - version "4.21.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== +browserslist@^4.21.9: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" bs-logger@0.x: version "0.2.6" @@ -1047,13 +1057,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -1070,12 +1081,12 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001449: - version "1.0.30001482" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz#8b3fad73dc35b2674a5c96df2d4f9f1c561435de" - integrity sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ== +caniuse-lite@^1.0.30001541: + version "1.0.30001561" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da" + integrity sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw== -chalk@^2.0.0, chalk@^2.4.1: +chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1098,14 +1109,14 @@ char-regex@^1.0.2: integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== cliui@^7.0.2: version "7.0.4" @@ -1122,9 +1133,9 @@ co@^4.6.0: integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: version "1.9.3" @@ -1162,11 +1173,16 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -1230,7 +1246,7 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -1240,11 +1256,21 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -1284,10 +1310,10 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -electron-to-chromium@^1.4.284: - version "1.4.381" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.381.tgz#d4c66f4182fbb199a66e807ead82b1e18e8aba88" - integrity sha512-jSbS1KRmmGO6SwssmVQpCy1jENfCJT6hN36W6Dxj5HXUj59cUn6yd4gv5113mfATo6aEj/mPUTkMZmNknFXj6Q== +electron-to-chromium@^1.4.535: + version "1.4.576" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.576.tgz#0c6940fdc0d60f7e34bd742b29d8fa847c9294d1" + integrity sha512-yXsZyXJfAqzWk1WKryr0Wl0MN2D47xodPvEEwlVePBnhU5E7raevLQR+E6b9JAD3GfL/7MbAL9ZtWQQPcLx7wA== emittery@^0.8.1: version "0.8.1" @@ -1306,25 +1332,26 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" - integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.0" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -1332,28 +1359,32 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" + which-typed-array "^1.1.13" es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -1385,21 +1416,20 @@ escape-string-regexp@^4.0.0: integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" estraverse "^5.2.0" esutils "^2.0.2" - optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" eslint-plugin-jest@^27.1.6: - version "27.2.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.2.tgz#be4ded5f91905d9ec89aa8968d39c71f3b072c0c" - integrity sha512-euzbp06F934Z7UDl5ZUaRPLAc9MKjh0rMPERrHT7UhlCEwgb25kBj37TvMgWeHZVkR5I9CayswrpoaqZU1RImw== + version "27.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz#e5c0cf735b3c8cad0ef9db5b565b2fc99f5e55ed" + integrity sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -1411,40 +1441,41 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.13.0: - version "8.43.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.43.0.tgz#3e8c6066a57097adfd9d390b8fc93075f257a094" - integrity sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q== + version "8.53.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" + integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.3" - "@eslint/js" "8.43.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.3" + "@eslint/js" "8.53.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.1" - espree "^9.5.2" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -1454,7 +1485,6 @@ eslint@^8.13.0: globals "^13.19.0" graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" @@ -1464,17 +1494,16 @@ eslint@^8.13.0: lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.2: - version "9.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" @@ -1548,9 +1577,9 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.9: - version "3.3.0" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.0.tgz#7c40cb491e1e2ed5664749e87bfb516dbe8727c0" - integrity sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA== + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -1563,7 +1592,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== @@ -1613,17 +1642,18 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== for-each@^0.3.3: version "0.3.3" @@ -1647,26 +1677,26 @@ fs.realpath@^1.0.0: integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functions-have-names@^1.2.2, functions-have-names@^1.2.3: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -1681,14 +1711,15 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" + has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-package-type@^0.1.0: version "0.1.0" @@ -1740,9 +1771,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -1777,11 +1808,6 @@ graceful-fs@^4.1.2, graceful-fs@^4.2.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - graphemer@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" @@ -1803,11 +1829,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -1826,12 +1852,12 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== dependencies: - function-bind "^1.1.1" + function-bind "^1.1.2" hosted-git-info@^2.1.4: version "2.8.9" @@ -1884,7 +1910,7 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -1919,12 +1945,12 @@ inherits@2: integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: @@ -1961,12 +1987,12 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.11.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" - integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1: version "1.0.5" @@ -2058,16 +2084,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" + which-typed-array "^1.1.11" is-typedarray@^1.0.0: version "1.0.0" @@ -2081,15 +2103,20 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + version "3.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.1.tgz#c680fd1544600460367af5811866c34c44c6f3b1" + integrity sha512-opCrKqbthmq3SKZ10mFMQG9dk3fTa3quaOLD35kJa5ejwZHd9xAr+kLuziiZz2cG32s4lMZxNdmdcEQnTDP4+g== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" @@ -2103,12 +2130,12 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: semver "^6.3.0" istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" + make-dir "^4.0.0" supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: @@ -2121,9 +2148,9 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -2591,6 +2618,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -2611,11 +2643,18 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json5@2.x, json5@^2.2.2: +json5@2.x, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -2634,14 +2673,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -2700,12 +2731,12 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: - semver "^6.0.0" + semver "^7.5.3" make-error@1.x: version "1.3.6" @@ -2766,10 +2797,10 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== ms@2.1.2: version "2.1.2" @@ -2801,10 +2832,10 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== normalize-package-data@^2.3.2: version "2.5.0" @@ -2844,14 +2875,14 @@ npm-run-path@^4.0.1: path-key "^3.0.0" nwsapi@^2.2.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5" - integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g== + version "2.2.7" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -2882,19 +2913,7 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: +optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== @@ -3027,9 +3046,9 @@ pify@^3.0.0: integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-dir@^4.2.0: version "4.2.0" @@ -3043,11 +3062,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - prettier@^2.6.2: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" @@ -3076,9 +3090,9 @@ psl@^1.1.33: integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== punycode@^2.1.0, punycode@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== querystringify@^2.1.1: version "2.2.0" @@ -3104,14 +3118,14 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -regexp.prototype.flags@^1.4.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" require-directory@^2.1.1: version "2.1.1" @@ -3146,11 +3160,11 @@ resolve.exports@^1.1.0: integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== resolve@^1.10.0, resolve@^1.20.0: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -3173,6 +3187,16 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-regex-test@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" @@ -3199,18 +3223,37 @@ saxes@^5.0.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.x, semver@^7.3.2, semver@^7.3.7: +semver@7.x, semver@^7.3.2, semver@^7.3.7, semver@^7.5.3: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.3.0: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -3304,9 +3347,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.13" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" - integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== + version "3.0.16" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== sprintf-js@~1.0.2: version "1.0.3" @@ -3338,40 +3381,40 @@ string-width@^4.1.0, string-width@^4.2.0: strip-ansi "^6.0.1" string.prototype.padend@^3.0.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" - integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz#311ef3a4e3c557dd999cdf88fbdde223f2ac0f95" + integrity sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" @@ -3395,7 +3438,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -3533,13 +3576,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -3555,6 +3591,36 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -3586,15 +3652,20 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + universalify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== -update-browserslist-db@^1.0.10: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -3699,17 +3770,16 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" which@^1.2.9: version "1.3.1" @@ -3725,11 +3795,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -word-wrap@~1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" diff --git a/binding/python/_cheetah.py b/binding/python/_cheetah.py index 219b5f5f..c37911c4 100644 --- a/binding/python/_cheetah.py +++ b/binding/python/_cheetah.py @@ -16,7 +16,27 @@ class CheetahError(Exception): - pass + def __init__(self, message: str = '', message_stack: Sequence[str] = None): + super().__init__(message) + + self._message = message + self._message_stack = list() if message_stack is None else message_stack + + def __str__(self): + message = self._message + if len(self._message_stack) > 0: + message += ':' + for i in range(len(self._message_stack)): + message += '\n [%d] %s' % (i, self._message_stack[i]) + return message + + @property + def message(self) -> str: + return self._message + + @property + def message_stack(self) -> Sequence[str]: + return self._message_stack class CheetahMemoryError(CheetahError): @@ -122,14 +142,28 @@ def __init__( if not os.path.exists(library_path): raise CheetahIOError("Could not find Cheetah's dynamic library at `%s`." % library_path) - library = cdll.LoadLibrary(library_path) - if not os.path.exists(model_path): raise CheetahIOError("Could not find model file at `%s`." % model_path) if endpoint_duration_sec is not None and not endpoint_duration_sec > 0.: raise CheetahInvalidArgumentError("`endpoint_duration_sec` must be either `None` or a positive number") + library = cdll.LoadLibrary(library_path) + + set_sdk_func = library.pv_set_sdk + set_sdk_func.argtypes = [c_char_p] + set_sdk_func.restype = None + + set_sdk_func('python'.encode('utf-8')) + + self._get_error_stack_func = library.pv_get_error_stack + self._get_error_stack_func.argtypes = [POINTER(POINTER(c_char_p)), POINTER(c_int)] + self._get_error_stack_func.restype = self.PicovoiceStatuses + + self._free_error_stack_func = library.pv_free_error_stack + self._free_error_stack_func.argtypes = [POINTER(c_char_p)] + self._free_error_stack_func.restype = None + init_func = library.pv_cheetah_init init_func.argtypes = [c_char_p, c_char_p, c_float, c_bool, POINTER(POINTER(self.CCheetah))] init_func.restype = self.PicovoiceStatuses @@ -143,7 +177,9 @@ def __init__( enable_automatic_punctuation, byref(self._handle)) if status is not self.PicovoiceStatuses.SUCCESS: - raise self._PICOVOICE_STATUS_TO_EXCEPTION[status]() + raise self._PICOVOICE_STATUS_TO_EXCEPTION[status]( + message='Initialization failed', + message_stack=self._get_error_stack()) self._delete_func = library.pv_cheetah_delete self._delete_func.argtypes = [POINTER(self.CCheetah)] @@ -158,6 +194,10 @@ def __init__( self._flush_func.argtypes = [POINTER(self.CCheetah), POINTER(c_char_p)] self._flush_func.restype = self.PicovoiceStatuses + self._transcript_delete_func = library.pv_cheetah_transcript_delete + self._transcript_delete_func.argtypes = [c_char_p] + self._transcript_delete_func.restype = None + version_func = library.pv_cheetah_version version_func.argtypes = [] version_func.restype = c_char_p @@ -192,9 +232,14 @@ def process(self, pcm: Sequence[int]) -> Tuple[str, bool]: byref(c_partial_transcript), byref(is_endpoint)) if status is not self.PicovoiceStatuses.SUCCESS: - raise self._PICOVOICE_STATUS_TO_EXCEPTION[status]() + raise self._PICOVOICE_STATUS_TO_EXCEPTION[status]( + message='Process failed', + message_stack=self._get_error_stack()) + + partial_transcript = c_partial_transcript.value.decode('utf-8') + self._transcript_delete_func(c_partial_transcript) - return c_partial_transcript.value.decode('utf-8'), is_endpoint.value + return partial_transcript, is_endpoint.value def flush(self) -> str: """ @@ -207,9 +252,14 @@ def flush(self) -> str: c_final_transcript = c_char_p() status = self._flush_func(self._handle, byref(c_final_transcript)) if status is not self.PicovoiceStatuses.SUCCESS: - raise self._PICOVOICE_STATUS_TO_EXCEPTION[status]() + raise self._PICOVOICE_STATUS_TO_EXCEPTION[status]( + message='Flush failed', + message_stack=self._get_error_stack()) + + final_transcript = c_final_transcript.value.decode('utf-8') + self._transcript_delete_func(c_final_transcript) - return c_final_transcript.value.decode('utf-8') + return final_transcript def delete(self) -> None: """Releases resources acquired by Cheetah.""" @@ -234,6 +284,21 @@ def frame_length(self) -> int: return self._frame_length + def _get_error_stack(self) -> Sequence[str]: + message_stack_ref = POINTER(c_char_p)() + message_stack_depth = c_int() + status = self._get_error_stack_func(byref(message_stack_ref), byref(message_stack_depth)) + if status is not self.PicovoiceStatuses.SUCCESS: + raise self._PICOVOICE_STATUS_TO_EXCEPTION[status](message='Unable to get Porcupine error state') + + message_stack = list() + for i in range(message_stack_depth.value): + message_stack.append(message_stack_ref[i].decode('utf-8')) + + self._free_error_stack_func(message_stack_ref) + + return message_stack + __all__ = [ 'Cheetah', diff --git a/binding/python/setup.py b/binding/python/setup.py index 7a6ce9b7..af254377 100644 --- a/binding/python/setup.py +++ b/binding/python/setup.py @@ -1,5 +1,5 @@ # -# Copyright 2022 Picovoice Inc. +# Copyright 2022-2023 Picovoice Inc. # # You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" # file accompanying this source. @@ -14,44 +14,41 @@ import setuptools +INCLUDE_FILES = ('../../LICENSE', '__init__.py', '_factory.py', '_cheetah.py', '_util.py') +INCLUDE_LIBS = ('linux', 'mac', 'windows', 'jetson', 'raspberry-pi') + os.system('git clean -dfx') package_folder = os.path.join(os.path.dirname(__file__), 'pvcheetah') os.mkdir(package_folder) +manifest_in = "" -shutil.copy(os.path.join(os.path.dirname(__file__), '../../LICENSE'), package_folder) - -shutil.copy(os.path.join(os.path.dirname(__file__), '__init__.py'), os.path.join(package_folder, '__init__.py')) -shutil.copy(os.path.join(os.path.dirname(__file__), '_cheetah.py'), os.path.join(package_folder, '_cheetah.py')) -shutil.copy(os.path.join(os.path.dirname(__file__), '_factory.py'), os.path.join(package_folder, '_factory.py')) -shutil.copy(os.path.join(os.path.dirname(__file__), '_util.py'), os.path.join(package_folder, '_util.py')) +for rel_path in INCLUDE_FILES: + shutil.copy(os.path.join(os.path.dirname(__file__), rel_path), package_folder) + manifest_in += "include pvcheetah/%s\n" % os.path.basename(rel_path) -platforms = ('jetson', 'linux', 'mac', 'raspberry-pi', 'windows') +model_file = 'lib/common/cheetah_params.pv' +os.makedirs(os.path.join(package_folder, os.path.split(model_file)[0])) +shutil.copy( + os.path.join(os.path.dirname(__file__), '../..', model_file), + os.path.join(package_folder, model_file)) +manifest_in += "include pvcheetah/%s\n" % model_file -os.mkdir(os.path.join(package_folder, 'lib')) -for platform in ('common',) + platforms: +for platform in INCLUDE_LIBS: shutil.copytree( os.path.join(os.path.dirname(__file__), '../../lib', platform), os.path.join(package_folder, 'lib', platform)) - -MANIFEST_IN = """ -include pvcheetah/LICENSE -include pvcheetah/__init__.py -include pvcheetah/_cheetah.py -include pvcheetah/_factory.py -include pvcheetah/_util.py -recursive-include pvcheetah/lib/ * -""" + manifest_in += "recursive-include pvcheetah/lib/%s *\n" % platform with open(os.path.join(os.path.dirname(__file__), 'MANIFEST.in'), 'w') as f: - f.write(MANIFEST_IN.strip('\n ')) + f.write(manifest_in) with open(os.path.join(os.path.dirname(__file__), 'README.md'), 'r') as f: long_description = f.read() setuptools.setup( name="pvcheetah", - version="1.1.3", + version="2.0.0", author="Picovoice", author_email="hello@picovoice.ai", description="Cheetah Speech-to-Text Engine.", diff --git a/binding/python/test_cheetah.py b/binding/python/test_cheetah.py index 9ec2869f..40b42fef 100644 --- a/binding/python/test_cheetah.py +++ b/binding/python/test_cheetah.py @@ -1,5 +1,5 @@ # -# Copyright 2018-2022 Picovoice Inc. +# Copyright 2018-2023 Picovoice Inc. # # You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" # file accompanying this source. @@ -17,51 +17,162 @@ from parameterized import parameterized -from _cheetah import Cheetah +from _cheetah import Cheetah, CheetahError from _util import * +from test_util import * -TEST_PARAMS = [ - [False, "Mr quilter is the apostle of the middle classes and we are glad to welcome his gospel"], - [True, "Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel."], -] + +parameters = load_test_data() class CheetahTestCase(unittest.TestCase): @classmethod def setUpClass(cls): - with wave.open(os.path.join(os.path.dirname(__file__), '../../resources/audio_samples/test.wav'), 'rb') as f: - buffer = f.readframes(f.getnframes()) - cls.pcm = struct.unpack('%dh' % (len(buffer) / struct.calcsize('h')), buffer) + cls._access_key = sys.argv[1] + cls._audio_directory = os.path.join('..', '..', 'resources', 'audio_samples') - @staticmethod - def _create_cheetah(enable_automatic_punctuation: bool) -> Cheetah: + @classmethod + def _create_cheetah(cls, enable_automatic_punctuation: bool) -> Cheetah: return Cheetah( - access_key=sys.argv[1], + access_key=cls._access_key, model_path=default_model_path('../..'), library_path=default_library_path('../..'), enable_automatic_punctuation=enable_automatic_punctuation) - @parameterized.expand(TEST_PARAMS) - def test_transcribe(self, enable_automatic_punctuation: bool, ref: str): - o = self._create_cheetah(enable_automatic_punctuation) + @parameterized.expand(parameters) + def test_process( + self, + _: str, + audio_file: str, + expected_transcript: str, + punctuations: List[str], + error_rate: float): + o = None + + try: + o = self._create_cheetah(False) + + pcm = read_wav_file( + file_name=os.path.join(self._audio_directory, audio_file), + sample_rate=o.sample_rate) + + transcript = '' + num_frames = len(pcm) // o.frame_length + for i in range(num_frames): + frame = pcm[i * o.frame_length:(i + 1) * o.frame_length] + partial_transcript, _ = o.process(frame) + transcript += partial_transcript + + final_transcript = o.flush() + transcript += final_transcript + + normalized_transcript = expected_transcript + for punctuation in punctuations: + normalized_transcript = normalized_transcript.replace(punctuation, "") + + self.assertLessEqual( + get_word_error_rate(transcript, normalized_transcript), + error_rate) + finally: + if o is not None: + o.delete() + + @parameterized.expand(parameters) + def test_process_with_punctuation( + self, + _: str, + audio_file: str, + expected_transcript: str, + punctuations: List[str], + error_rate: float): + o = None + + try: + o = self._create_cheetah(True) + + pcm = read_wav_file( + file_name=os.path.join(self._audio_directory, audio_file), + sample_rate=o.sample_rate) - transcript = '' - num_frames = len(self.pcm) // o.frame_length - for i in range(num_frames): - frame = self.pcm[i * o.frame_length:(i + 1) * o.frame_length] - partial_transcript, _ = o.process(frame) - transcript += partial_transcript + transcript = '' + num_frames = len(pcm) // o.frame_length + for i in range(num_frames): + frame = pcm[i * o.frame_length:(i + 1) * o.frame_length] + partial_transcript, _ = o.process(frame) + transcript += partial_transcript - final_transcript = o.flush() - transcript += final_transcript - print(transcript) - self.assertEqual(transcript, ref) + final_transcript = o.flush() + transcript += final_transcript + + self.assertLessEqual( + get_word_error_rate(transcript, expected_transcript), + error_rate) + finally: + if o is not None: + o.delete() def test_version(self): o = self._create_cheetah(False) self.assertIsInstance(o.version, str) self.assertGreater(len(o.version), 0) + def test_message_stack(self): + relative = '../../' + + error = None + try: + c = Cheetah( + access_key='invalid', + library_path=default_library_path(relative), + model_path=default_model_path(relative), + enable_automatic_punctuation=True) + self.assertIsNone(c) + except CheetahError as e: + error = e.message_stack + + self.assertIsNotNone(error) + self.assertGreater(len(error), 0) + + try: + c = Cheetah( + access_key='invalid', + library_path=default_library_path(relative), + model_path=default_model_path(relative), + enable_automatic_punctuation=True) + self.assertIsNone(c) + except CheetahError as e: + self.assertEqual(len(error), len(e.message_stack)) + self.assertListEqual(list(error), list(e.message_stack)) + + def test_process_flush_message_stack(self): + relative = '../../' + + c = Cheetah( + access_key=sys.argv[1], + library_path=default_library_path(relative), + model_path=default_model_path(relative), + enable_automatic_punctuation=True) + test_pcm = [0] * c._frame_length + + address = c._handle + c._handle = None + + try: + res = c.process(test_pcm) + self.assertIsNone(res) + except CheetahError as e: + self.assertGreater(len(e.message_stack), 0) + self.assertLess(len(e.message_stack), 8) + + try: + res = c.flush() + self.assertIsNone(res) + except CheetahError as e: + self.assertGreater(len(e.message_stack), 0) + self.assertLess(len(e.message_stack), 8) + + c._handle = address + if __name__ == '__main__': if len(sys.argv) != 2: diff --git a/binding/python/test_util.py b/binding/python/test_util.py new file mode 100644 index 00000000..4ba1815e --- /dev/null +++ b/binding/python/test_util.py @@ -0,0 +1,72 @@ +# +# Copyright 2023 Picovoice Inc. +# +# You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" +# file accompanying this source. +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the +# specific language governing permissions and limitations under the License. +# + +import struct +import wave +from typing import * + + +def load_test_data() -> List[Tuple[str, str, str, List[str], float]]: + parameters = [ + ( + "en", + "test.wav", + "Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.", + ["."], + 0.025 + ) + ] + + return parameters + + +def read_wav_file(file_name: str, sample_rate: int) -> Tuple: + wav_file = wave.open(file_name, mode="rb") + channels = wav_file.getnchannels() + num_frames = wav_file.getnframes() + + if wav_file.getframerate() != sample_rate: + raise ValueError( + "Audio file should have a sample rate of %d, got %d" % (sample_rate, wav_file.getframerate())) + + samples = wav_file.readframes(num_frames) + wav_file.close() + + frames = struct.unpack('h' * num_frames * channels, samples) + + if channels == 2: + print("Picovoice processes single-channel audio but stereo file is provided. Processing left channel only.") + + return frames[::channels] + + +def get_word_error_rate(transcript: str, expected_transcript: str, use_cer: bool = False) -> float: + transcript_split = list(transcript) if use_cer else transcript.split() + expected_split = list(expected_transcript) if use_cer else expected_transcript.split() + return _levenshtein_distance(transcript_split, expected_split) / len(transcript) + + +def _levenshtein_distance(words1: Sequence[str], words2: Sequence[str]) -> int: + res = [[0] * (len(words1) + 2) for _ in range(len(words2) + 1)] + for i in range(len(words1) + 1): + res[i][0] = i + for j in range(len(words2) + 1): + res[0][j] = j + + for i in range(1, len(words1) + 1): + for j in range(1, len(words2) + 1): + res[i][j] = min( + res[i - 1][j] + 1, + res[i][j - 1] + 1, + res[i - 1][j - 1] + (0 if words1[i - 1].upper() == words2[j - 1].upper() else 1) + ) + + return res[len(words1)][len(words2)] diff --git a/binding/react-native/android/build.gradle b/binding/react-native/android/build.gradle index e2aab840..8bed9ca1 100644 --- a/binding/react-native/android/build.gradle +++ b/binding/react-native/android/build.gradle @@ -118,5 +118,5 @@ repositories { dependencies { // noinspection GradleDynamicVersion api 'com.facebook.react:react-native:+' - implementation 'ai.picovoice:cheetah-android:1.1.2' + implementation 'ai.picovoice:cheetah-android:2.0.0' } diff --git a/binding/react-native/android/src/main/java/ai/picovoice/reactnative/cheetah/CheetahModule.java b/binding/react-native/android/src/main/java/ai/picovoice/reactnative/cheetah/CheetahModule.java index a1ab9c1e..a743635c 100644 --- a/binding/react-native/android/src/main/java/ai/picovoice/reactnative/cheetah/CheetahModule.java +++ b/binding/react-native/android/src/main/java/ai/picovoice/reactnative/cheetah/CheetahModule.java @@ -35,13 +35,15 @@ * CheetahModule Class. */ public class CheetahModule extends ReactContextBaseJavaModule { - + private final ReactApplicationContext reactContext; private final Map cheetahPool = new HashMap<>(); public CheetahModule(ReactApplicationContext reactContext) { super(reactContext); this.reactContext = reactContext; + + Cheetah.setSdk("react-native"); } @NonNull diff --git a/binding/react-native/cheetah-react-native.podspec b/binding/react-native/cheetah-react-native.podspec index 5216caab..352cc987 100644 --- a/binding/react-native/cheetah-react-native.podspec +++ b/binding/react-native/cheetah-react-native.podspec @@ -10,11 +10,11 @@ Pod::Spec.new do |s| s.license = package["license"] s.authors = package["author"] - s.platforms = { :ios => "11.0" } + s.platforms = { :ios => "13.0" } s.source = { :git => "https://github.com/Picovoice/cheetah.git", :tag => "#{s.version}" } s.source_files = "ios/*.{h,m,mm,swift}" s.dependency "React" - s.dependency "Cheetah-iOS", '~> 1.1.0' + s.dependency "Cheetah-iOS", '~> 2.0.0' end diff --git a/binding/react-native/ios/Cheetah.swift b/binding/react-native/ios/Cheetah.swift index 72cb24ef..5e61cacf 100644 --- a/binding/react-native/ios/Cheetah.swift +++ b/binding/react-native/ios/Cheetah.swift @@ -1,5 +1,5 @@ // -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // // You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" // file accompanying this source. @@ -15,6 +15,11 @@ import Cheetah class PvCheetah: NSObject { private var cheetahPool: [String: Cheetah] = [:] + override init() { + super.init() + Cheetah.setSdk(sdk: "react-native") + } + @objc(create:modelPath:endpointDuration:enableAutomaticPunctuation:resolver:rejecter:) func create( accessKey: String, diff --git a/binding/react-native/package.json b/binding/react-native/package.json index 299d6f06..0b5603f8 100644 --- a/binding/react-native/package.json +++ b/binding/react-native/package.json @@ -1,6 +1,6 @@ { "name": "@picovoice/cheetah-react-native", - "version": "1.1.1", + "version": "2.0.0", "description": "Picovoice Cheetah React Native binding", "main": "lib/commonjs/index", "module": "lib/module/index", diff --git a/binding/react-native/test-app/CheetahTestApp/.ruby-version b/binding/react-native/test-app/CheetahTestApp/.ruby-version deleted file mode 100644 index 49cdd668..00000000 --- a/binding/react-native/test-app/CheetahTestApp/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.7.6 diff --git a/binding/react-native/test-app/CheetahTestApp/Gemfile b/binding/react-native/test-app/CheetahTestApp/Gemfile deleted file mode 100644 index 567e5980..00000000 --- a/binding/react-native/test-app/CheetahTestApp/Gemfile +++ /dev/null @@ -1,6 +0,0 @@ -source 'https://rubygems.org' - -# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby File.read(File.join(__dir__, '.ruby-version')).strip - -gem 'cocoapods', '~> 1.11', '>= 1.11.3' diff --git a/binding/react-native/test-app/CheetahTestApp/ios/CheetahTestApp.xcodeproj/project.pbxproj b/binding/react-native/test-app/CheetahTestApp/ios/CheetahTestApp.xcodeproj/project.pbxproj index ca943e48..e348c785 100644 --- a/binding/react-native/test-app/CheetahTestApp/ios/CheetahTestApp.xcodeproj/project.pbxproj +++ b/binding/react-native/test-app/CheetahTestApp/ios/CheetahTestApp.xcodeproj/project.pbxproj @@ -442,7 +442,7 @@ "$(inherited)", ); INFOPLIST_FILE = CheetahTestAppTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -466,7 +466,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; INFOPLIST_FILE = CheetahTestAppTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -649,7 +649,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", diff --git a/binding/react-native/test-app/CheetahTestApp/ios/Podfile b/binding/react-native/test-app/CheetahTestApp/ios/Podfile index 5d6d4863..7d4629d5 100644 --- a/binding/react-native/test-app/CheetahTestApp/ios/Podfile +++ b/binding/react-native/test-app/CheetahTestApp/ios/Podfile @@ -1,7 +1,7 @@ require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' -platform :ios, min_ios_version_supported +platform :ios, '13.0' prepare_react_native_project! flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled @@ -14,6 +14,7 @@ end target 'CheetahTestApp' do config = use_native_modules! + pod 'Cheetah-iOS', '~> 2.0.0' # Flags change depending on the env values. flags = get_default_flags() diff --git a/binding/react-native/test-app/CheetahTestApp/ios/Podfile.lock b/binding/react-native/test-app/CheetahTestApp/ios/Podfile.lock new file mode 100644 index 00000000..2d65fc26 --- /dev/null +++ b/binding/react-native/test-app/CheetahTestApp/ios/Podfile.lock @@ -0,0 +1,615 @@ +PODS: + - boost (1.76.0) + - Cheetah-iOS (2.0.0) + - cheetah-react-native (2.0.0): + - Cheetah-iOS (~> 2.0.0) + - React + - CocoaAsyncSocket (7.6.5) + - DoubleConversion (1.1.6) + - FBLazyVector (0.71.0) + - FBReactNativeSpec (0.71.0): + - RCT-Folly (= 2021.07.22.00) + - RCTRequired (= 0.71.0) + - RCTTypeSafety (= 0.71.0) + - React-Core (= 0.71.0) + - React-jsi (= 0.71.0) + - ReactCommon/turbomodule/core (= 0.71.0) + - Flipper (0.125.0): + - Flipper-Folly (~> 2.6) + - Flipper-RSocket (~> 1.4) + - Flipper-Boost-iOSX (1.76.0.1.11) + - Flipper-DoubleConversion (3.2.0.1) + - Flipper-Fmt (7.1.7) + - Flipper-Folly (2.6.10): + - Flipper-Boost-iOSX + - Flipper-DoubleConversion + - Flipper-Fmt (= 7.1.7) + - Flipper-Glog + - libevent (~> 2.1.12) + - OpenSSL-Universal (= 1.1.1100) + - Flipper-Glog (0.5.0.5) + - Flipper-PeerTalk (0.0.4) + - Flipper-RSocket (1.4.3): + - Flipper-Folly (~> 2.6) + - FlipperKit (0.125.0): + - FlipperKit/Core (= 0.125.0) + - FlipperKit/Core (0.125.0): + - Flipper (~> 0.125.0) + - FlipperKit/CppBridge + - FlipperKit/FBCxxFollyDynamicConvert + - FlipperKit/FBDefines + - FlipperKit/FKPortForwarding + - SocketRocket (~> 0.6.0) + - FlipperKit/CppBridge (0.125.0): + - Flipper (~> 0.125.0) + - FlipperKit/FBCxxFollyDynamicConvert (0.125.0): + - Flipper-Folly (~> 2.6) + - FlipperKit/FBDefines (0.125.0) + - FlipperKit/FKPortForwarding (0.125.0): + - CocoaAsyncSocket (~> 7.6) + - Flipper-PeerTalk (~> 0.0.4) + - FlipperKit/FlipperKitHighlightOverlay (0.125.0) + - FlipperKit/FlipperKitLayoutHelpers (0.125.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutTextSearchable + - FlipperKit/FlipperKitLayoutIOSDescriptors (0.125.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutHelpers + - YogaKit (~> 1.18) + - FlipperKit/FlipperKitLayoutPlugin (0.125.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutHelpers + - FlipperKit/FlipperKitLayoutIOSDescriptors + - FlipperKit/FlipperKitLayoutTextSearchable + - YogaKit (~> 1.18) + - FlipperKit/FlipperKitLayoutTextSearchable (0.125.0) + - FlipperKit/FlipperKitNetworkPlugin (0.125.0): + - FlipperKit/Core + - FlipperKit/FlipperKitReactPlugin (0.125.0): + - FlipperKit/Core + - FlipperKit/FlipperKitUserDefaultsPlugin (0.125.0): + - FlipperKit/Core + - FlipperKit/SKIOSNetworkPlugin (0.125.0): + - FlipperKit/Core + - FlipperKit/FlipperKitNetworkPlugin + - fmt (6.2.1) + - glog (0.3.5) + - hermes-engine (0.71.0): + - hermes-engine/Pre-built (= 0.71.0) + - hermes-engine/Pre-built (0.71.0) + - ios-voice-processor (1.1.0) + - libevent (2.1.12) + - OpenSSL-Universal (1.1.1100) + - RCT-Folly (2021.07.22.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - RCT-Folly/Default (= 2021.07.22.00) + - RCT-Folly/Default (2021.07.22.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - RCT-Folly/Futures (2021.07.22.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - libevent + - RCTRequired (0.71.0) + - RCTTypeSafety (0.71.0): + - FBLazyVector (= 0.71.0) + - RCTRequired (= 0.71.0) + - React-Core (= 0.71.0) + - React (0.71.0): + - React-Core (= 0.71.0) + - React-Core/DevSupport (= 0.71.0) + - React-Core/RCTWebSocket (= 0.71.0) + - React-RCTActionSheet (= 0.71.0) + - React-RCTAnimation (= 0.71.0) + - React-RCTBlob (= 0.71.0) + - React-RCTImage (= 0.71.0) + - React-RCTLinking (= 0.71.0) + - React-RCTNetwork (= 0.71.0) + - React-RCTSettings (= 0.71.0) + - React-RCTText (= 0.71.0) + - React-RCTVibration (= 0.71.0) + - React-callinvoker (0.71.0) + - React-Codegen (0.71.0): + - FBReactNativeSpec + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-jsi + - React-jsiexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-Core (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.71.0) + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/CoreModulesHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/Default (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/DevSupport (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.71.0) + - React-Core/RCTWebSocket (= 0.71.0) + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-jsinspector (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTActionSheetHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTAnimationHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTBlobHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTImageHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTLinkingHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTNetworkHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTSettingsHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTTextHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTVibrationHeaders (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-Core/RCTWebSocket (0.71.0): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.71.0) + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-perflogger (= 0.71.0) + - Yoga + - React-CoreModules (0.71.0): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.0) + - React-Codegen (= 0.71.0) + - React-Core/CoreModulesHeaders (= 0.71.0) + - React-jsi (= 0.71.0) + - React-RCTImage (= 0.71.0) + - ReactCommon/turbomodule/core (= 0.71.0) + - React-cxxreact (0.71.0): + - boost (= 1.76.0) + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.0) + - React-jsi (= 0.71.0) + - React-jsinspector (= 0.71.0) + - React-logger (= 0.71.0) + - React-perflogger (= 0.71.0) + - React-runtimeexecutor (= 0.71.0) + - React-hermes (0.71.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - RCT-Folly/Futures (= 2021.07.22.00) + - React-cxxreact (= 0.71.0) + - React-jsiexecutor (= 0.71.0) + - React-jsinspector (= 0.71.0) + - React-perflogger (= 0.71.0) + - React-jsi (0.71.0): + - boost (= 1.76.0) + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-jsiexecutor (0.71.0): + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-perflogger (= 0.71.0) + - React-jsinspector (0.71.0) + - React-logger (0.71.0): + - glog + - react-native-voice-processor (1.2.0): + - ios-voice-processor (~> 1.1.0) + - React-Core + - React-perflogger (0.71.0) + - React-RCTActionSheet (0.71.0): + - React-Core/RCTActionSheetHeaders (= 0.71.0) + - React-RCTAnimation (0.71.0): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.0) + - React-Codegen (= 0.71.0) + - React-Core/RCTAnimationHeaders (= 0.71.0) + - React-jsi (= 0.71.0) + - ReactCommon/turbomodule/core (= 0.71.0) + - React-RCTAppDelegate (0.71.0): + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - ReactCommon/turbomodule/core + - React-RCTBlob (0.71.0): + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.71.0) + - React-Core/RCTBlobHeaders (= 0.71.0) + - React-Core/RCTWebSocket (= 0.71.0) + - React-jsi (= 0.71.0) + - React-RCTNetwork (= 0.71.0) + - ReactCommon/turbomodule/core (= 0.71.0) + - React-RCTImage (0.71.0): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.0) + - React-Codegen (= 0.71.0) + - React-Core/RCTImageHeaders (= 0.71.0) + - React-jsi (= 0.71.0) + - React-RCTNetwork (= 0.71.0) + - ReactCommon/turbomodule/core (= 0.71.0) + - React-RCTLinking (0.71.0): + - React-Codegen (= 0.71.0) + - React-Core/RCTLinkingHeaders (= 0.71.0) + - React-jsi (= 0.71.0) + - ReactCommon/turbomodule/core (= 0.71.0) + - React-RCTNetwork (0.71.0): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.0) + - React-Codegen (= 0.71.0) + - React-Core/RCTNetworkHeaders (= 0.71.0) + - React-jsi (= 0.71.0) + - ReactCommon/turbomodule/core (= 0.71.0) + - React-RCTSettings (0.71.0): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.0) + - React-Codegen (= 0.71.0) + - React-Core/RCTSettingsHeaders (= 0.71.0) + - React-jsi (= 0.71.0) + - ReactCommon/turbomodule/core (= 0.71.0) + - React-RCTText (0.71.0): + - React-Core/RCTTextHeaders (= 0.71.0) + - React-RCTVibration (0.71.0): + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.71.0) + - React-Core/RCTVibrationHeaders (= 0.71.0) + - React-jsi (= 0.71.0) + - ReactCommon/turbomodule/core (= 0.71.0) + - React-runtimeexecutor (0.71.0): + - React-jsi (= 0.71.0) + - ReactCommon/turbomodule/bridging (0.71.0): + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.0) + - React-Core (= 0.71.0) + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-logger (= 0.71.0) + - React-perflogger (= 0.71.0) + - ReactCommon/turbomodule/core (0.71.0): + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.0) + - React-Core (= 0.71.0) + - React-cxxreact (= 0.71.0) + - React-jsi (= 0.71.0) + - React-logger (= 0.71.0) + - React-perflogger (= 0.71.0) + - RNFS (2.20.0): + - React-Core + - SocketRocket (0.6.1) + - Yoga (1.14.0) + - YogaKit (1.18.1): + - Yoga (~> 1.14) + +DEPENDENCIES: + - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) + - Cheetah-iOS (~> 2.0.0) + - "cheetah-react-native (from `../node_modules/@picovoice/cheetah-react-native`)" + - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) + - Flipper (= 0.125.0) + - Flipper-Boost-iOSX (= 1.76.0.1.11) + - Flipper-DoubleConversion (= 3.2.0.1) + - Flipper-Fmt (= 7.1.7) + - Flipper-Folly (= 2.6.10) + - Flipper-Glog (= 0.5.0.5) + - Flipper-PeerTalk (= 0.0.4) + - Flipper-RSocket (= 1.4.3) + - FlipperKit (= 0.125.0) + - FlipperKit/Core (= 0.125.0) + - FlipperKit/CppBridge (= 0.125.0) + - FlipperKit/FBCxxFollyDynamicConvert (= 0.125.0) + - FlipperKit/FBDefines (= 0.125.0) + - FlipperKit/FKPortForwarding (= 0.125.0) + - FlipperKit/FlipperKitHighlightOverlay (= 0.125.0) + - FlipperKit/FlipperKitLayoutPlugin (= 0.125.0) + - FlipperKit/FlipperKitLayoutTextSearchable (= 0.125.0) + - FlipperKit/FlipperKitNetworkPlugin (= 0.125.0) + - FlipperKit/FlipperKitReactPlugin (= 0.125.0) + - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0) + - FlipperKit/SKIOSNetworkPlugin (= 0.125.0) + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) + - libevent (~> 2.1.12) + - OpenSSL-Universal (= 1.1.1100) + - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Codegen (from `build/generated/ios`) + - React-Core (from `../node_modules/react-native/`) + - React-Core/DevSupport (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - "react-native-voice-processor (from `../node_modules/@picovoice/react-native-voice-processor`)" + - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - RNFS (from `../node_modules/react-native-fs`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - Cheetah-iOS + - CocoaAsyncSocket + - Flipper + - Flipper-Boost-iOSX + - Flipper-DoubleConversion + - Flipper-Fmt + - Flipper-Folly + - Flipper-Glog + - Flipper-PeerTalk + - Flipper-RSocket + - FlipperKit + - fmt + - ios-voice-processor + - libevent + - OpenSSL-Universal + - SocketRocket + - YogaKit + +EXTERNAL SOURCES: + boost: + :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" + cheetah-react-native: + :path: "../node_modules/@picovoice/cheetah-react-native" + DoubleConversion: + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + FBLazyVector: + :path: "../node_modules/react-native/Libraries/FBLazyVector" + FBReactNativeSpec: + :path: "../node_modules/react-native/React/FBReactNativeSpec" + glog: + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" + RCT-Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTRequired: + :path: "../node_modules/react-native/Libraries/RCTRequired" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Codegen: + :path: build/generated/ios + React-Core: + :path: "../node_modules/react-native/" + React-CoreModules: + :path: "../node_modules/react-native/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-hermes: + :path: "../node_modules/react-native/ReactCommon/hermes" + React-jsi: + :path: "../node_modules/react-native/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native/ReactCommon/jsinspector" + React-logger: + :path: "../node_modules/react-native/ReactCommon/logger" + react-native-voice-processor: + :path: "../node_modules/@picovoice/react-native-voice-processor" + React-perflogger: + :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-RCTActionSheet: + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTAppDelegate: + :path: "../node_modules/react-native/Libraries/AppDelegate" + React-RCTBlob: + :path: "../node_modules/react-native/Libraries/Blob" + React-RCTImage: + :path: "../node_modules/react-native/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native/Libraries/Network" + React-RCTSettings: + :path: "../node_modules/react-native/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native/Libraries/Vibration" + React-runtimeexecutor: + :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + ReactCommon: + :path: "../node_modules/react-native/ReactCommon" + RNFS: + :path: "../node_modules/react-native-fs" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + boost: 57d2868c099736d80fcd648bf211b4431e51a558 + Cheetah-iOS: d98a5edcbf3b74dda6027aeac6a8c0f5997a47a2 + cheetah-react-native: 58a4b8cc29e1aeb342952a32590fc28839e59bba + CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 + DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 + FBLazyVector: 61839cba7a48c570b7ac3e1cd8a4d0948382202f + FBReactNativeSpec: 5a14398ccf5e27c1ca2d7109eb920594ce93c10d + Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 + Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c + Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 + Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b + Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 + Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446 + Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 + Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 + FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 + fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 + glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b + hermes-engine: f6e715aa6c8bd38de6c13bc85e07b0a337edaa89 + ios-voice-processor: 8e32d7f980a06d392d128ef1cd19cf6ddcaca3c1 + libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 + OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c + RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 + RCTRequired: dea3e4163184ea57c50288c15c32c1529265c58f + RCTTypeSafety: a0834ab89159a346731e8aae55ad6e2cce61c327 + React: d877d055ff2137ca0325a4babdef3411e11f3cb7 + React-callinvoker: 77bd2701eee3acac154b11ec219e68d5a1f780ad + React-Codegen: bccc516adc1551ccfe04b0de27e345d38829b204 + React-Core: 4035f59e5bec8f3053583c6108d99c7516deb760 + React-CoreModules: b6a1f76423fea57a03e0d7a2f79d3b55cf193f2c + React-cxxreact: fe5f6ec8ae875bebc71309d1e8ef89bb966d61a6 + React-hermes: 3c8ea5e8f402db2a08b57051206d7f2ba9c75565 + React-jsi: dbf0f82c93bfd828fa05c50f2ee74dc81f711050 + React-jsiexecutor: 060dd495f1e2af3d87216f7ca8a94c55ec885b4f + React-jsinspector: 5061fcbec93fd672183dfb39cc2f65e55a0835db + React-logger: a6c0b3a807a8e81f6d7fea2e72660766f55daa50 + react-native-voice-processor: aefb0845641c7d67dd47e69606ba7ebb38aab5cd + React-perflogger: e5fc4149e9bbb972b8520277f3b23141faa47a36 + React-RCTActionSheet: 991de88216bf03ab9bb1d213d73c62ecbe64ade7 + React-RCTAnimation: b74e3d1bf5280891a573e447b487fa1db0713b5b + React-RCTAppDelegate: f52667f2dbc510f87b7988c5204e8764d50bf0c1 + React-RCTBlob: 6762787c01d5d8d18efed03764b0d58d3b79595a + React-RCTImage: 9ed7eba8dd192a49def2cad2ecaedee7e7e315b4 + React-RCTLinking: 0b58eed9af0645a161b80bf412b6b721e4585c66 + React-RCTNetwork: dc075b0eea00d8a98c928f011d9bc2458acc7092 + React-RCTSettings: 30fb3f498cfaf8a4bb47334ff9ffbe318ef78766 + React-RCTText: a631564e84a227fe24bae7c04446f36faea7fcf5 + React-RCTVibration: 55c91eccdbd435d7634efbe847086944389475b0 + React-runtimeexecutor: ac80782d9d76ba2b0f709f4de0c427fe33c352dc + ReactCommon: 20e38a9be5fe1341b5e422220877cc94034776ba + RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 + SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 + Yoga: c618b544ff8bd8865cdca602f00cbcdb92fd6d31 + YogaKit: f782866e155069a2cca2517aafea43200b01fd5a + +PODFILE CHECKSUM: 4fe55ce4eb9805c8cc4a4c3c47a819b0a0b0a1fc + +COCOAPODS: 1.11.3 diff --git a/binding/react-native/test-app/CheetahTestApp/package.json b/binding/react-native/test-app/CheetahTestApp/package.json index 6d7329a3..2d2e08ab 100644 --- a/binding/react-native/test-app/CheetahTestApp/package.json +++ b/binding/react-native/test-app/CheetahTestApp/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@picovoice/cheetah-react-native": "file:../..", - "@picovoice/react-native-voice-processor": "^1.1.0", + "@picovoice/react-native-voice-processor": "~1.2.0", "base-64": "^1.0.0", "react": "18.2.0", "react-native": "0.71.0", diff --git a/binding/react-native/test-app/CheetahTestApp/yarn.lock b/binding/react-native/test-app/CheetahTestApp/yarn.lock index 48cf6db2..ae13cf2f 100644 --- a/binding/react-native/test-app/CheetahTestApp/yarn.lock +++ b/binding/react-native/test-app/CheetahTestApp/yarn.lock @@ -1442,12 +1442,12 @@ fastq "^1.6.0" "@picovoice/cheetah-react-native@file:../..": - version "1.1.0" + version "2.0.0" -"@picovoice/react-native-voice-processor@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@picovoice/react-native-voice-processor/-/react-native-voice-processor-1.1.0.tgz#fe469f990c3b031411b585f28fc80fc0a9b9de41" - integrity sha512-TzIYL/34VbYhIcKH/LbivZwRpxUiKr4+XW5Gcp8vFdZKGP431SP4Lob2hLhSIu+E/yo1z4xwCELCznMpHyWNhg== +"@picovoice/react-native-voice-processor@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@picovoice/react-native-voice-processor/-/react-native-voice-processor-1.2.0.tgz#82a98b41d9236ababe330dae873062ee0e1b24c3" + integrity sha512-zolTEo3qsqeUwY7JRslV/yhiA+oBrkeogOTxjHIEJ//yEsr7YKlI1PcqTbU5/xjmUiukh62gmwTXhosnQYdasQ== "@react-native-community/cli-clean@^10.0.0": version "10.1.1" diff --git a/binding/react/package.json b/binding/react/package.json index 7270bd3e..953c4bb9 100644 --- a/binding/react/package.json +++ b/binding/react/package.json @@ -1,6 +1,6 @@ { "name": "@picovoice/cheetah-react", - "version": "1.1.0", + "version": "2.0.0", "description": "React hook for Cheetah Web SDK", "entry": "src/index.ts", "module": "dist/esm/index.js", @@ -36,7 +36,7 @@ "test": "cypress run --component" }, "dependencies": { - "@picovoice/cheetah-web": "=1.1.15" + "@picovoice/cheetah-web": "=2.0.0" }, "devDependencies": { "@babel/core": "^7.21.3", diff --git a/binding/react/src/use_cheetah.ts b/binding/react/src/use_cheetah.ts index 512aeb44..016ee2f6 100644 --- a/binding/react/src/use_cheetah.ts +++ b/binding/react/src/use_cheetah.ts @@ -47,8 +47,8 @@ export const useCheetah = (): { const [isListening, setIsListening] = useState(false); const [error, setError] = useState(null); - const errorCallback = useCallback((e: string) => { - setError(new Error(e)); + const errorCallback = useCallback((cheetahError: Error) => { + setError(cheetahError); }, []); const transcriptCallback = useCallback( diff --git a/binding/react/yarn.lock b/binding/react/yarn.lock index 01f41ff8..34bc433c 100644 --- a/binding/react/yarn.lock +++ b/binding/react/yarn.lock @@ -1110,10 +1110,10 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@picovoice/cheetah-web@=1.1.15": - version "1.1.15" - resolved "https://registry.npmjs.org/@picovoice/cheetah-web/-/cheetah-web-1.1.15.tgz" - integrity sha512-UMKOPqZopcMX3fLQaD3eDRAcUph/6CuirNxQ1SUlNXSxlWO9pdsfdpikaoZ8gx59vbw6l/c8bSB3OicV9Gl2Sw== +"@picovoice/cheetah-web@=2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@picovoice/cheetah-web/-/cheetah-web-2.0.0.tgz#d4415c25e324726356f979bed3761a94e884198e" + integrity sha512-WqxHUznNS7Rf8XfJCp0m0l+xeYFDSFhzOTg+b2DJn06x1slhpJA4CiK4egiH7FzhHiJtvqjLF0dO14LA8e1Gpg== dependencies: "@picovoice/web-utils" "=1.3.1" diff --git a/binding/rust/Cargo.toml b/binding/rust/Cargo.toml index 665802d7..3babac7c 100644 --- a/binding/rust/Cargo.toml +++ b/binding/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pv_cheetah" -version = "1.1.0" +version = "2.0.0" edition = "2018" description = "The Rust bindings for Picovoice's Cheetah library" license = "Apache-2.0" @@ -30,5 +30,7 @@ libc = "0.2" libloading = "0.7" [dev-dependencies] -rodio = "0.15" +distance = "0.4.0" itertools = "0.10" +rodio = "0.15" +serde_json = "1.0" diff --git a/binding/rust/src/cheetah.rs b/binding/rust/src/cheetah.rs index 2f63ccec..c2c1ceec 100644 --- a/binding/rust/src/cheetah.rs +++ b/binding/rust/src/cheetah.rs @@ -15,7 +15,7 @@ use std::path::{Path, PathBuf}; use std::ptr::addr_of_mut; use std::sync::Arc; -use libc::{c_char, c_float, c_void}; +use libc::{c_char, c_float}; #[cfg(unix)] use libloading::os::unix::Symbol as RawSymbol; #[cfg(windows)] @@ -25,7 +25,11 @@ use libloading::{Library, Symbol}; use crate::util::{pathbuf_to_cstring, pv_library_path, pv_model_path}; #[repr(C)] -struct CCheetah {} +struct CCheetah { + // Fields suggested by the Rustonomicon: https://doc.rust-lang.org/nomicon/ffi.html#representing-opaque-structs + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} #[repr(C)] #[derive(PartialEq, Clone, Debug)] @@ -63,8 +67,12 @@ type PvCheetahProcessFn = unsafe extern "C" fn( ) -> PvStatus; type PvCheetahFlushFn = unsafe extern "C" fn(object: *mut CCheetah, transcript: *mut *mut c_char) -> PvStatus; +type PvCheetahTranscriptDeleteFn = unsafe extern "C" fn(transcript: *mut c_char); type PvCheetahDeleteFn = unsafe extern "C" fn(object: *mut CCheetah); -type PvFreeFn = unsafe extern "C" fn(*mut c_void); +type PvGetErrorStackFn = + unsafe extern "C" fn(message_stack: *mut *mut *mut c_char, message_stack_depth: *mut i32) -> PvStatus; +type PvFreeErrorStackFn = unsafe extern "C" fn(message_stack: *mut *mut c_char); +type PvSetSdkFn = unsafe extern "C" fn(sdk: *const c_char); #[derive(Clone, Debug)] pub enum CheetahErrorStatus { @@ -77,7 +85,8 @@ pub enum CheetahErrorStatus { #[derive(Clone, Debug)] pub struct CheetahError { status: CheetahErrorStatus, - message: String, + pub message: String, + pub message_stack: Vec, } impl CheetahError { @@ -85,13 +94,35 @@ impl CheetahError { Self { status, message: message.into(), + message_stack: Vec::new(), + } + } + + pub fn new_with_stack( + status: CheetahErrorStatus, + message: impl Into, + message_stack: impl Into> + ) -> Self { + Self { + status, + message: message.into(), + message_stack: message_stack.into(), } } } impl std::fmt::Display for CheetahError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}: {:?}", self.message, self.status) + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { + let mut message_string = String::new(); + message_string.push_str(&format!("{} with status '{:?}'", self.message, self.status)); + + if !self.message_stack.is_empty() { + message_string.push(':'); + for x in 0..self.message_stack.len() { + message_string.push_str(&format!(" [{}] {}\n", x, self.message_stack[x])) + }; + } + write!(f, "{}", message_string) } } @@ -221,21 +252,60 @@ unsafe fn load_library_fn( }) } -fn check_fn_call_status(status: PvStatus, function_name: &str) -> Result<(), CheetahError> { +fn check_fn_call_status( + vtable: &CheetahInnerVTable, + status: PvStatus, + function_name: &str, +) -> Result<(), CheetahError> { match status { PvStatus::SUCCESS => Ok(()), - _ => Err(CheetahError::new( - CheetahErrorStatus::LibraryError(status), - format!("Function '{}' in the cheetah library failed", function_name), - )), + _ => unsafe { + let mut message_stack_ptr: *mut c_char = std::ptr::null_mut(); + let mut message_stack_ptr_ptr = addr_of_mut!(message_stack_ptr); + + let mut message_stack_depth: i32 = 0; + let err_status = (vtable.pv_get_error_stack)( + addr_of_mut!(message_stack_ptr_ptr), + addr_of_mut!(message_stack_depth), + ); + + if err_status != PvStatus::SUCCESS { + return Err(CheetahError::new( + CheetahErrorStatus::LibraryError(err_status), + "Unable to get Cheetah error state", + )); + }; + + let mut message_stack = Vec::new(); + for i in 0..message_stack_depth as usize { + let message = CStr::from_ptr(*message_stack_ptr_ptr.add(i)); + let message = message.to_string_lossy().into_owned(); + message_stack.push(message); + } + + (vtable.pv_free_error_stack)(message_stack_ptr_ptr); + + Err(CheetahError::new_with_stack( + CheetahErrorStatus::LibraryError(status), + format!("'{function_name}' failed"), + message_stack, + )) + }, } } struct CheetahInnerVTable { + pv_cheetah_init: RawSymbol, pv_cheetah_process: RawSymbol, pv_cheetah_flush: RawSymbol, + pv_cheetah_transcript_delete: RawSymbol, pv_cheetah_delete: RawSymbol, - pv_free: RawSymbol, + pv_cheetah_frame_length: RawSymbol, + pv_cheetah_version: RawSymbol, + pv_sample_rate: RawSymbol, + pv_get_error_stack: RawSymbol, + pv_free_error_stack: RawSymbol, + pv_set_sdk: RawSymbol, _lib_guard: Library, } @@ -245,10 +315,17 @@ impl CheetahInnerVTable { // SAFETY: the library will be hold by this struct and therefore the symbols can't outlive the library unsafe { Ok(Self { + pv_cheetah_init: load_library_fn(&lib, b"pv_cheetah_init")?, pv_cheetah_process: load_library_fn(&lib, b"pv_cheetah_process")?, pv_cheetah_flush: load_library_fn(&lib, b"pv_cheetah_flush")?, + pv_cheetah_transcript_delete: load_library_fn(&lib, b"pv_cheetah_transcript_delete")?, pv_cheetah_delete: load_library_fn(&lib, b"pv_cheetah_delete")?, - pv_free: load_library_fn(&lib, b"pv_free")?, + pv_cheetah_frame_length: load_library_fn(&lib, b"pv_cheetah_frame_length")?, + pv_cheetah_version: load_library_fn(&lib, b"pv_cheetah_version")?, + pv_sample_rate: load_library_fn(&lib, b"pv_sample_rate")?, + pv_get_error_stack: load_library_fn(&lib, b"pv_get_error_stack")?, + pv_free_error_stack: load_library_fn(&lib, b"pv_free_error_stack")?, + pv_set_sdk: load_library_fn(&lib, b"pv_set_sdk")?, _lib_guard: lib, }) @@ -313,6 +390,18 @@ impl CheetahInner { ) })?; + let vtable = CheetahInnerVTable::new(lib)?; + + let sdk_string = match CString::new("rust") { + Ok(sdk_string) => sdk_string, + Err(err) => { + return Err(CheetahError::new( + CheetahErrorStatus::ArgumentError, + format!("sdk_string is not a valid C string {err}"), + )) + } + }; + let access_key = match CString::new(access_key) { Ok(access_key) => access_key, Err(err) => { @@ -330,41 +419,34 @@ impl CheetahInner { // safe, because we don't use the raw symbols after this function // anymore. let (frame_length, sample_rate, version) = unsafe { - let pv_cheetah_init = load_library_fn::(&lib, b"pv_cheetah_init")?; - let pv_cheetah_frame_length = - load_library_fn::(&lib, b"pv_cheetah_frame_length")?; - let pv_sample_rate = load_library_fn::(&lib, b"pv_sample_rate")?; - let pv_cheetah_version = - load_library_fn::(&lib, b"pv_cheetah_version")?; - - let status = pv_cheetah_init( + (vtable.pv_set_sdk)(sdk_string.as_ptr()); + + let status = (vtable.pv_cheetah_init)( access_key.as_ptr(), pv_model_path.as_ptr(), endpoint_duration_sec, enable_automatic_punctuation, addr_of_mut!(ccheetah), ); - check_fn_call_status(status, "pv_cheetah_init")?; - - let version = match CStr::from_ptr(pv_cheetah_version()).to_str() { - Ok(string) => string.to_string(), - Err(err) => { - return Err(CheetahError::new( - CheetahErrorStatus::LibraryLoadError, - format!("Failed to get version info from Cheetah Library: {}", err), - )) - } - }; + check_fn_call_status(&vtable, status, "pv_cheetah_init")?; - (pv_cheetah_frame_length(), pv_sample_rate(), version) + let version = CStr::from_ptr((vtable.pv_cheetah_version)()) + .to_string_lossy() + .into_owned(); + + ( + (vtable.pv_cheetah_frame_length)(), + (vtable.pv_sample_rate)(), + version, + ) }; Ok(Self { ccheetah, - frame_length, sample_rate, + frame_length, version, - vtable: CheetahInnerVTable::new(lib)?, + vtable, }) } @@ -391,7 +473,7 @@ impl CheetahInner { addr_of_mut!(is_endpoint), ); - check_fn_call_status(status, "pv_cheetah_process")?; + check_fn_call_status(&self.vtable, status, "pv_cheetah_process")?; let transcript = String::from(CStr::from_ptr(transcript_ptr).to_str().map_err(|_| { @@ -401,7 +483,7 @@ impl CheetahInner { ) })?); - (self.vtable.pv_free)(transcript_ptr as *mut c_void); + (self.vtable.pv_cheetah_transcript_delete)(transcript_ptr); (transcript, is_endpoint) }; @@ -418,7 +500,7 @@ impl CheetahInner { let status = (self.vtable.pv_cheetah_flush)(self.ccheetah, addr_of_mut!(transcript_ptr)); - check_fn_call_status(status, "pv_cheetah_process_file")?; + check_fn_call_status(&self.vtable, status, "pv_cheetah_flush")?; let transcript = String::from(CStr::from_ptr(transcript_ptr).to_str().map_err(|_| { @@ -428,7 +510,7 @@ impl CheetahInner { ) })?); - (self.vtable.pv_free)(transcript_ptr as *mut c_void); + (self.vtable.pv_cheetah_transcript_delete)(transcript_ptr); (transcript, false) }; @@ -450,3 +532,39 @@ impl Drop for CheetahInner { } } } + +#[cfg(test)] +mod tests { + use std::env; + + use crate::util::{pv_library_path, pv_model_path}; + use crate::cheetah::{CheetahInner}; + + #[test] + fn test_process_error_stack() { + let access_key = env::var("PV_ACCESS_KEY") + .expect("Pass the AccessKey in using the PV_ACCESS_KEY env variable"); + + let mut inner = CheetahInner::init( + &access_key.as_str(), + pv_model_path(), + pv_library_path(), + 1.0, + true, + ).expect("Unable to create Cheetah"); + + let test_pcm = vec![0; inner.frame_length as usize]; + let address = inner.ccheetah; + inner.ccheetah = std::ptr::null_mut(); + + let res = inner.process(&test_pcm); + + inner.ccheetah = address; + if let Err(err) = res { + assert!(err.message_stack.len() > 0); + assert!(err.message_stack.len() < 8); + } else { + assert!(res.unwrap().transcript.len() == 0); + } + } +} diff --git a/binding/rust/tests/cheetah_tests.rs b/binding/rust/tests/cheetah_tests.rs index dbc6c109..c1727d34 100644 --- a/binding/rust/tests/cheetah_tests.rs +++ b/binding/rust/tests/cheetah_tests.rs @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -11,23 +11,47 @@ #[cfg(test)] mod tests { + use distance::*; use itertools::Itertools; use rodio::{source::Source, Decoder}; + use serde_json::{json, Value}; use std::env; use std::fs::File; use std::io::BufReader; use cheetah::CheetahBuilder; - #[test] - fn test_process() { + fn load_test_data() -> Value { + let test_json: Value = json!([{ + "language": "en", + "transcript": "Mr quilter is the apostle of the middle classes and we are glad to welcome his gospel", + "transcript_with_punctuation": "Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.", + "error_rate": 0.025, + "audio_file": "test.wav" + }]); + test_json + } + + fn character_error_rate(transcript: &str, expected_transcript: &str) -> f32 { + let distance = levenshtein(transcript, expected_transcript); + return distance as f32 / expected_transcript.len() as f32; + } + + fn run_test_process( + _: &str, + transcript: &str, + test_punctuation: bool, + error_rate: f32, + test_audio: &str, + ) { let access_key = env::var("PV_ACCESS_KEY") .expect("Pass the AccessKey in using the PV_ACCESS_KEY env variable"); let audio_path = format!( - "{}{}", + "{}{}{}", env!("CARGO_MANIFEST_DIR"), - "/../../resources/audio_samples/test.wav", + "/../../resources/audio_samples/", + test_audio ); let audio_file = BufReader::new(File::open(&audio_path).expect(&audio_path)); @@ -35,6 +59,7 @@ mod tests { let cheetah = CheetahBuilder::new() .access_key(access_key) + .enable_automatic_punctuation(test_punctuation) .init() .expect("Unable to create Cheetah"); @@ -52,50 +77,49 @@ mod tests { let final_transcript = cheetah.flush().unwrap(); result = format!("{}{}", result, final_transcript.transcript); - assert_eq!( - result, - "Mr quilter is the apostle of the middle classes and we are glad to welcome his gospel" - ) + assert!(character_error_rate(&result, &transcript) < error_rate); } #[test] - fn test_process_punctuation() { - let access_key = env::var("PV_ACCESS_KEY") - .expect("Pass the AccessKey in using the PV_ACCESS_KEY env variable"); - - let audio_path = format!( - "{}{}", - env!("CARGO_MANIFEST_DIR"), - "/../../resources/audio_samples/test.wav", - ); - - let audio_file = BufReader::new(File::open(&audio_path).expect(&audio_path)); - let source = Decoder::new(audio_file).unwrap(); - - let cheetah = CheetahBuilder::new() - .access_key(access_key) - .enable_automatic_punctuation(true) - .init() - .expect("Unable to create Cheetah"); - - assert_eq!(cheetah.sample_rate(), source.sample_rate()); - - let mut result = String::new(); - for frame in &source.chunks(cheetah.frame_length() as usize) { - let frame = frame.collect_vec(); - if frame.len() == cheetah.frame_length() as usize { - let partial_transcript = cheetah.process(&frame).unwrap(); - result = format!("{}{}", result, partial_transcript.transcript); - } + fn test_process() { + let test_json: Value = load_test_data(); + + for t in test_json.as_array().unwrap() { + let language = t["language"].as_str().unwrap(); + let transcript = t["transcript"].as_str().unwrap(); + let error_rate = t["error_rate"].as_f64().unwrap() as f32; + + let test_audio = t["audio_file"].as_str().unwrap(); + + run_test_process( + language, + transcript, + false, + error_rate, + &test_audio, + ); } + } - let final_transcript = cheetah.flush().unwrap(); - result = format!("{}{}", result, final_transcript.transcript); - - assert_eq!( - result, - "Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel." - ) + #[test] + fn test_process_punctuation() { + let test_json: Value = load_test_data(); + + for t in test_json.as_array().unwrap() { + let language = t["language"].as_str().unwrap(); + let transcript_with_punctuation = t["transcript_with_punctuation"].as_str().unwrap(); + let error_rate = t["error_rate"].as_f64().unwrap() as f32; + + let test_audio = t["audio_file"].as_str().unwrap(); + + run_test_process( + language, + transcript_with_punctuation, + true, + error_rate, + &test_audio, + ); + } } #[test] @@ -110,4 +134,30 @@ mod tests { assert_ne!(cheetah.version(), "") } + + #[test] + fn test_error_stack() { + let mut error_stack = Vec::new(); + + let res = CheetahBuilder::new() + .access_key("invalid") + .enable_automatic_punctuation(true) + .init(); + if let Err(err) = res { + error_stack = err.message_stack + } + + assert!(0 < error_stack.len() && error_stack.len() <= 8); + + let res = CheetahBuilder::new() + .access_key("invalid") + .enable_automatic_punctuation(true) + .init(); + if let Err(err) = res { + assert_eq!(error_stack.len(), err.message_stack.len()); + for i in 0..error_stack.len() { + assert_eq!(error_stack[i], err.message_stack[i]) + } + } + } } diff --git a/binding/web/cypress/tsconfig.json b/binding/web/cypress/tsconfig.json index df1821de..fb78f5f3 100644 --- a/binding/web/cypress/tsconfig.json +++ b/binding/web/cypress/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../tsconfig.json", "compilerOptions": { - "types": ["cypress"] + "types": ["cypress", "node"] }, "include": [ "../test/**/*.ts", diff --git a/binding/web/package.json b/binding/web/package.json index bdb9bfa8..b10c163f 100644 --- a/binding/web/package.json +++ b/binding/web/package.json @@ -3,7 +3,7 @@ "description": "Cheetah Speech-to-Text engine for web browsers (via WebAssembly)", "author": "Picovoice Inc", "license": "Apache-2.0", - "version": "1.1.15", + "version": "2.0.0", "keywords": [ "cheetah", "web", @@ -64,6 +64,6 @@ "wasm-feature-detect": "^1.5.0" }, "engines": { - "node": ">=14" + "node": ">=16" } } diff --git a/binding/web/src/cheetah.ts b/binding/web/src/cheetah.ts index 07565913..d83eb5d8 100644 --- a/binding/web/src/cheetah.ts +++ b/binding/web/src/cheetah.ts @@ -25,7 +25,10 @@ import { import { simd } from 'wasm-feature-detect'; -import { CheetahModel, CheetahOptions, CheetahTranscript } from './types'; +import { CheetahModel, CheetahOptions, CheetahTranscript, PvStatus } from './types'; + +import * as CheetahErrors from "./cheetah_errors" +import { pvStatusToException } from './cheetah_errors'; /** * WebAssembly function types @@ -33,11 +36,15 @@ import { CheetahModel, CheetahOptions, CheetahTranscript } from './types'; type pv_cheetah_init_type = (accessKey: number, modelPath: number, endpointDurationSec: number, enableAutomaticPunctuation: number, object: number) => Promise; type pv_cheetah_process_type = (object: number, pcm: number, transcript: number, isEndpoint: number) => Promise; type pv_cheetah_flush_type = (object: number, transcript: number) => Promise; +type pv_cheetah_transcript_delete_type = (transcript: number) => Promise; type pv_cheetah_delete_type = (object: number) => Promise; type pv_status_to_string_type = (status: number) => Promise type pv_cheetah_frame_length_type = () => Promise; type pv_sample_rate_type = () => Promise; type pv_cheetah_version_type = () => Promise; +type pv_set_sdk_type = (sdk: number) => Promise; +type pv_get_error_stack_type = (messageStack: number, messageStackDepth: number) => Promise; +type pv_free_error_stack_type = (messageStack: number) => Promise; /** * JavaScript/WebAssembly Binding for Cheetah @@ -47,18 +54,24 @@ type CheetahWasmOutput = { aligned_alloc: aligned_alloc_type; memory: WebAssembly.Memory; pvFree: pv_free_type; - objectAddress: number; - pvCheetahDelete: pv_cheetah_delete_type; - pvCheetahProcess: pv_cheetah_process_type; - pvCheetahFlush: pv_cheetah_flush_type; - pvStatusToString: pv_status_to_string_type; - frameLength: number + + frameLength: number; sampleRate: number; version: string; + + objectAddress: number; inputBufferAddress: number; isEndpointAddress: number; transcriptAddressAddress: number; - pvError: PvError; + messageStackAddressAddressAddress: number; + messageStackDepthAddress: number; + + pvCheetahDelete: pv_cheetah_delete_type; + pvCheetahProcess: pv_cheetah_process_type; + pvCheetahFlush: pv_cheetah_flush_type; + pvCheetahTranscriptDelete: pv_cheetah_transcript_delete_type; + pvGetErrorStack: pv_get_error_stack_type; + pvFreeErrorStack: pv_free_error_stack_type; }; const PV_STATUS_SUCCESS = 10000; @@ -67,7 +80,9 @@ export class Cheetah { private readonly _pvCheetahDelete: pv_cheetah_delete_type; private readonly _pvCheetahProcess: pv_cheetah_process_type; private readonly _pvCheetahFlush: pv_cheetah_flush_type; - private readonly _pvStatusToString: pv_status_to_string_type; + private readonly _pvCheetahTranscriptDelete: pv_cheetah_transcript_delete_type; + private readonly _pvGetErrorStack: pv_get_error_stack_type; + private readonly _pvFreeErrorStack: pv_free_error_stack_type; private _wasmMemory: WebAssembly.Memory | undefined; @@ -78,24 +93,25 @@ export class Cheetah { private readonly _inputBufferAddress: number; private readonly _isEndpointAddress: number; private readonly _transcriptAddressAddress: number; + private readonly _messageStackAddressAddressAddress: number; + private readonly _messageStackDepthAddress: number; private static _frameLength: number; private static _sampleRate: number; private static _version: string; private static _wasm: string; private static _wasmSimd: string; + private static _sdk: string = "web"; private static _cheetahMutex = new Mutex(); private readonly _transcriptCallback: (cheetahTranscript: CheetahTranscript) => void; - private readonly _processErrorCallback?: (error: string) => void; - - private readonly _pvError: PvError; + private readonly _processErrorCallback?: (error: CheetahErrors.CheetahError) => void; private constructor( handleWasm: CheetahWasmOutput, transcriptCallback: (cheetahTranscript: CheetahTranscript) => void, - processErrorCallback?: (error: string) => void, + processErrorCallback?: (error: CheetahErrors.CheetahError) => void, ) { Cheetah._frameLength = handleWasm.frameLength; Cheetah._sampleRate = handleWasm.sampleRate; @@ -104,7 +120,9 @@ export class Cheetah { this._pvCheetahDelete = handleWasm.pvCheetahDelete; this._pvCheetahProcess = handleWasm.pvCheetahProcess; this._pvCheetahFlush = handleWasm.pvCheetahFlush; - this._pvStatusToString = handleWasm.pvStatusToString; + this._pvCheetahTranscriptDelete = handleWasm.pvCheetahTranscriptDelete; + this._pvGetErrorStack = handleWasm.pvGetErrorStack; + this._pvFreeErrorStack = handleWasm.pvFreeErrorStack; this._wasmMemory = handleWasm.memory; this._pvFree = handleWasm.pvFree; @@ -112,8 +130,9 @@ export class Cheetah { this._inputBufferAddress = handleWasm.inputBufferAddress; this._isEndpointAddress = handleWasm.isEndpointAddress; this._transcriptAddressAddress = handleWasm.transcriptAddressAddress; + this._messageStackAddressAddressAddress = handleWasm.messageStackAddressAddressAddress; + this._messageStackDepthAddress = handleWasm.messageStackDepthAddress; - this._pvError = handleWasm.pvError; this._processMutex = new Mutex(); this._transcriptCallback = transcriptCallback; @@ -161,6 +180,10 @@ export class Cheetah { } } + public static setSdk(sdk: string): void { + Cheetah._sdk = sdk; + } + /** * Creates an instance of the Picovoice Cheetah Speech-to-Text engine. * Behind the scenes, it requires the WebAssembly code to load and initialize before @@ -211,7 +234,7 @@ export class Cheetah { const { processErrorCallback } = options; if (!isAccessKeyValid(accessKey)) { - throw new Error('Invalid AccessKey'); + throw new CheetahErrors.CheetahInvalidArgumentError('Invalid AccessKey'); } return new Promise((resolve, reject) => { @@ -239,9 +262,9 @@ export class Cheetah { */ public async process(pcm: Int16Array): Promise { if (!(pcm instanceof Int16Array)) { - const error = new Error('The argument \'pcm\' must be provided as an Int16Array'); + const error = new CheetahErrors.CheetahInvalidArgumentError('The argument \'pcm\' must be provided as an Int16Array'); if (this._processErrorCallback) { - this._processErrorCallback(error.toString()); + this._processErrorCallback(error); } else { // eslint-disable-next-line no-console console.error(error); @@ -251,7 +274,7 @@ export class Cheetah { this._processMutex .runExclusive(async () => { if (this._wasmMemory === undefined) { - throw new Error('Attempted to call Cheetah process after release.'); + throw new CheetahErrors.CheetahInvalidStateError('Attempted to call Cheetah process after release.'); } const memoryBuffer = new Int16Array(this._wasmMemory.buffer); @@ -273,14 +296,23 @@ export class Cheetah { const memoryBufferView = new DataView(this._wasmMemory.buffer); if (status !== PV_STATUS_SUCCESS) { - const msg = `process failed with status ${arrayBufferToStringAtIndex( - memoryBufferUint8, - await this._pvStatusToString(status), - )}`; - - throw new Error( - `${msg}\nDetails: ${this._pvError.getErrorString()}` + const messageStack = await Cheetah.getMessageStack( + this._pvGetErrorStack, + this._pvFreeErrorStack, + this._messageStackAddressAddressAddress, + this._messageStackDepthAddress, + memoryBufferView, + memoryBufferUint8 ); + + const error = pvStatusToException(status, "Processing failed", messageStack); + if (this._processErrorCallback) { + this._processErrorCallback(error); + } else { + // eslint-disable-next-line no-console + console.error(error); + } + return; } const isEndpoint = memoryBufferView.getUint8(this._isEndpointAddress) === 1; @@ -294,7 +326,7 @@ export class Cheetah { memoryBufferUint8, transcriptAddress, ); - await this._pvFree(transcriptAddress); + await this._pvCheetahTranscriptDelete(transcriptAddress); this._transcriptCallback({ transcript }); @@ -308,7 +340,7 @@ export class Cheetah { }) .catch(async (error: any) => { if (this._processErrorCallback) { - this._processErrorCallback(error.toString()); + this._processErrorCallback(error); } else { // eslint-disable-next-line no-console console.error(error); @@ -335,14 +367,19 @@ export class Cheetah { resolve(); }) .catch(async (error: any) => { - reject(error); + if (this._processErrorCallback) { + this._processErrorCallback(error); + } else { + // eslint-disable-next-line no-console + console.error(error); + } }); }); } private async cheetahFlush(): Promise { if (this._wasmMemory === undefined) { - throw new Error('Attempted to call Cheetah flush after release.'); + throw new CheetahErrors.CheetahInvalidStateError('Attempted to call Cheetah flush after release.'); } const status = await this._pvCheetahFlush( @@ -354,14 +391,16 @@ export class Cheetah { const memoryBufferView = new DataView(this._wasmMemory.buffer); if (status !== PV_STATUS_SUCCESS) { - const msg = `flush failed with status ${arrayBufferToStringAtIndex( - memoryBufferUint8, - await this._pvStatusToString(status), - )}`; - - throw new Error( - `${msg}\nDetails: ${this._pvError.getErrorString()}` + const messageStack = await Cheetah.getMessageStack( + this._pvGetErrorStack, + this._pvFreeErrorStack, + this._messageStackAddressAddressAddress, + this._messageStackDepthAddress, + memoryBufferView, + memoryBufferUint8 ); + + throw pvStatusToException(status, "Flush failed", messageStack); } const transcriptAddress = memoryBufferView.getInt32( @@ -373,7 +412,7 @@ export class Cheetah { memoryBufferUint8, transcriptAddress, ); - await this._pvFree(transcriptAddress); + await this._pvCheetahTranscriptDelete(transcriptAddress); return transcript; } @@ -383,7 +422,11 @@ export class Cheetah { */ public async release(): Promise { await this._pvCheetahDelete(this._objectAddress); + await this._pvFree(this._messageStackAddressAddressAddress); + await this._pvFree(this._messageStackDepthAddress); await this._pvFree(this._inputBufferAddress); + await this._pvFree(this._isEndpointAddress); + await this._pvFree(this._transcriptAddressAddress); delete this._wasmMemory; this._wasmMemory = undefined; } @@ -403,11 +446,11 @@ export class Cheetah { const { endpointDurationSec = 1.0, enableAutomaticPunctuation = false } = options; if (typeof endpointDurationSec !== 'number' || endpointDurationSec < 0) { - throw new Error('Cheetah endpointDurationSec must be a non-negative number'); + throw new CheetahErrors.CheetahInvalidArgumentError('Cheetah endpointDurationSec must be a non-negative number'); } // A WebAssembly page has a constant size of 64KiB. -> 1MiB ~= 16 pages - const memory = new WebAssembly.Memory({ initial: 3370 }); + const memory = new WebAssembly.Memory({ initial: 3700 }); const memoryBufferUint8 = new Uint8Array(memory.buffer); @@ -420,18 +463,21 @@ export class Cheetah { const pv_cheetah_version = exports.pv_cheetah_version as pv_cheetah_version_type; const pv_cheetah_process = exports.pv_cheetah_process as pv_cheetah_process_type; const pv_cheetah_flush = exports.pv_cheetah_flush as pv_cheetah_flush_type; + const pv_cheetah_transcript_delete = exports.pv_cheetah_transcript_delete as pv_cheetah_transcript_delete_type; const pv_cheetah_delete = exports.pv_cheetah_delete as pv_cheetah_delete_type; const pv_cheetah_init = exports.pv_cheetah_init as pv_cheetah_init_type; - const pv_status_to_string = exports.pv_status_to_string as pv_status_to_string_type; const pv_cheetah_frame_length = exports.pv_cheetah_frame_length as pv_cheetah_frame_length_type; const pv_sample_rate = exports.pv_sample_rate as pv_sample_rate_type; + const pv_set_sdk = exports.pv_set_sdk as pv_set_sdk_type; + const pv_get_error_stack = exports.pv_get_error_stack as pv_get_error_stack_type; + const pv_free_error_stack = exports.pv_free_error_stack as pv_free_error_stack_type; const transcriptAddressAddress = await aligned_alloc( Int32Array.BYTES_PER_ELEMENT, Int32Array.BYTES_PER_ELEMENT, ); if (transcriptAddressAddress === 0) { - throw new Error('malloc failed: Cannot allocate memory'); + throw new CheetahErrors.CheetahOutOfMemoryError('malloc failed: Cannot allocate memory'); } const isEndpointAddress = await aligned_alloc( @@ -439,7 +485,7 @@ export class Cheetah { Uint8Array.BYTES_PER_ELEMENT, ); if (isEndpointAddress === 0) { - throw new Error('malloc failed: Cannot allocate memory'); + throw new CheetahErrors.CheetahOutOfMemoryError('malloc failed: Cannot allocate memory'); } const objectAddressAddress = await aligned_alloc( @@ -447,7 +493,7 @@ export class Cheetah { Int32Array.BYTES_PER_ELEMENT, ); if (objectAddressAddress === 0) { - throw new Error('malloc failed: Cannot allocate memory'); + throw new CheetahErrors.CheetahOutOfMemoryError('malloc failed: Cannot allocate memory'); } const accessKeyAddress = await aligned_alloc( @@ -456,7 +502,7 @@ export class Cheetah { ); if (accessKeyAddress === 0) { - throw new Error('malloc failed: Cannot allocate memory'); + throw new CheetahErrors.CheetahOutOfMemoryError('malloc failed: Cannot allocate memory'); } for (let i = 0; i < accessKey.length; i++) { @@ -471,12 +517,42 @@ export class Cheetah { ); if (modelPathAddress === 0) { - throw new Error('malloc failed: Cannot allocate memory'); + throw new CheetahErrors.CheetahOutOfMemoryError('malloc failed: Cannot allocate memory'); } memoryBufferUint8.set(modelPathEncoded, modelPathAddress); memoryBufferUint8[modelPathAddress + modelPathEncoded.length] = 0; + const sdkEncoded = new TextEncoder().encode(this._sdk); + const sdkAddress = await aligned_alloc( + Uint8Array.BYTES_PER_ELEMENT, + (sdkEncoded.length + 1) * Uint8Array.BYTES_PER_ELEMENT + ); + if (!sdkAddress) { + throw new CheetahErrors.CheetahOutOfMemoryError('malloc failed: Cannot allocate memory'); + } + memoryBufferUint8.set(sdkEncoded, sdkAddress); + memoryBufferUint8[sdkAddress + sdkEncoded.length] = 0; + await pv_set_sdk(sdkAddress); + + const messageStackDepthAddress = await aligned_alloc( + Int32Array.BYTES_PER_ELEMENT, + Int32Array.BYTES_PER_ELEMENT + ); + if (!messageStackDepthAddress) { + throw new CheetahErrors.CheetahOutOfMemoryError('malloc failed: Cannot allocate memory'); + } + + const messageStackAddressAddressAddress = await aligned_alloc( + Int32Array.BYTES_PER_ELEMENT, + Int32Array.BYTES_PER_ELEMENT + ); + if (!messageStackAddressAddressAddress) { + throw new CheetahErrors.CheetahOutOfMemoryError('malloc failed: Cannot allocate memory'); + } + + const memoryBufferView = new DataView(memory.buffer); + const status = await pv_cheetah_init( accessKeyAddress, modelPathAddress, @@ -484,17 +560,20 @@ export class Cheetah { (enableAutomaticPunctuation) ? 1 : 0, objectAddressAddress); if (status !== PV_STATUS_SUCCESS) { - const msg = `'pv_cheetah_init' failed with status ${arrayBufferToStringAtIndex( - memoryBufferUint8, - await pv_status_to_string(status), - )}`; - - throw new Error( - `${msg}\nDetails: ${pvError.getErrorString()}` + const messageStack = await Cheetah.getMessageStack( + pv_get_error_stack, + pv_free_error_stack, + messageStackAddressAddressAddress, + messageStackDepthAddress, + memoryBufferView, + memoryBufferUint8 ); + + throw pvStatusToException(status, "Initialization failed", messageStack, pvError); } - const memoryBufferView = new DataView(memory.buffer); + const objectAddress = memoryBufferView.getInt32(objectAddressAddress, true); + await pv_free(objectAddressAddress); const frameLength = await pv_cheetah_frame_length(); const sampleRate = await pv_sample_rate(); @@ -509,25 +588,60 @@ export class Cheetah { frameLength * Int16Array.BYTES_PER_ELEMENT, ); if (inputBufferAddress === 0) { - throw new Error('malloc failed: Cannot allocate memory'); + throw new CheetahErrors.CheetahOutOfMemoryError('malloc failed: Cannot allocate memory'); } return { aligned_alloc, memory: memory, pvFree: pv_free, - objectAddress: objectAddress, - pvCheetahDelete: pv_cheetah_delete, - pvCheetahProcess: pv_cheetah_process, - pvCheetahFlush: pv_cheetah_flush, - pvStatusToString: pv_status_to_string, + frameLength: frameLength, sampleRate: sampleRate, version: version, + + objectAddress: objectAddress, inputBufferAddress: inputBufferAddress, isEndpointAddress: isEndpointAddress, transcriptAddressAddress: transcriptAddressAddress, - pvError: pvError + messageStackAddressAddressAddress: messageStackAddressAddressAddress, + messageStackDepthAddress: messageStackDepthAddress, + + pvCheetahDelete: pv_cheetah_delete, + pvCheetahProcess: pv_cheetah_process, + pvCheetahFlush: pv_cheetah_flush, + pvCheetahTranscriptDelete: pv_cheetah_transcript_delete, + pvGetErrorStack: pv_get_error_stack, + pvFreeErrorStack: pv_free_error_stack, }; } + + private static async getMessageStack( + pv_get_error_stack: pv_get_error_stack_type, + pv_free_error_stack: pv_free_error_stack_type, + messageStackAddressAddressAddress: number, + messageStackDepthAddress: number, + memoryBufferView: DataView, + memoryBufferUint8: Uint8Array, + ): Promise { + const status = await pv_get_error_stack(messageStackAddressAddressAddress, messageStackDepthAddress); + if (status != PvStatus.SUCCESS) { + throw pvStatusToException(status, "Unable to get Cheetah error state"); + } + + const messageStackAddressAddress = memoryBufferView.getInt32(messageStackAddressAddressAddress, true); + + const messageStackDepth = memoryBufferView.getInt32(messageStackDepthAddress, true); + const messageStack: string[] = []; + for (let i = 0; i < messageStackDepth; i++) { + const messageStackAddress = memoryBufferView.getInt32( + messageStackAddressAddress + (i * Int32Array.BYTES_PER_ELEMENT), true); + const message = arrayBufferToStringAtIndex(memoryBufferUint8, messageStackAddress); + messageStack.push(message); + } + + pv_free_error_stack(messageStackAddressAddress); + + return messageStack; + } } diff --git a/binding/web/src/cheetah_errors.ts b/binding/web/src/cheetah_errors.ts new file mode 100644 index 00000000..283812c7 --- /dev/null +++ b/binding/web/src/cheetah_errors.ts @@ -0,0 +1,191 @@ +// +// Copyright 2023 Picovoice Inc. +// +// You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" +// file accompanying this source. +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. +// + +import { PvError } from "@picovoice/web-utils"; +import { PvStatus } from "./types"; + +class CheetahError extends Error { + private readonly _status: PvStatus; + private readonly _shortMessage: string; + private readonly _messageStack: string[]; + + constructor(status: PvStatus, message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(CheetahError.errorToString(message, messageStack, pvError)); + this._status = status; + this.name = 'CheetahError'; + this._shortMessage = message; + this._messageStack = messageStack; + } + + get status(): PvStatus { + return this._status; + } + + get shortMessage(): string { + return this._shortMessage; + } + + get messageStack(): string[] { + return this._messageStack; + } + + private static errorToString( + initial: string, + messageStack: string[], + pvError: PvError | null = null, + ): string { + let msg = initial; + + if (pvError) { + const pvErrorMessage = pvError.getErrorString(); + if (pvErrorMessage.length > 0) { + msg += `\nDetails: ${pvErrorMessage}`; + } + } + + if (messageStack.length > 0) { + msg += `: ${messageStack.reduce((acc, value, index) => + acc + '\n [' + index + '] ' + value, '')}`; + } + + return msg; + } +} + +class CheetahOutOfMemoryError extends CheetahError { + constructor(message: string, messageStack?: string[], pvError: PvError | null = null) { + super(PvStatus.OUT_OF_MEMORY, message, messageStack, pvError); + this.name = 'CheetahOutOfMemoryError'; + } +} + +class CheetahIOError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.IO_ERROR, message, messageStack, pvError); + this.name = 'CheetahIOError'; + } +} + +class CheetahInvalidArgumentError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.INVALID_ARGUMENT, message, messageStack, pvError); + this.name = 'CheetahInvalidArgumentError'; + } +} + +class CheetahStopIterationError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.STOP_ITERATION, message, messageStack, pvError); + this.name = 'CheetahStopIterationError'; + } +} + +class CheetahKeyError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.KEY_ERROR, message, messageStack, pvError); + this.name = 'CheetahKeyError'; + } +} + +class CheetahInvalidStateError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.INVALID_STATE, message, messageStack, pvError); + this.name = 'CheetahInvalidStateError'; + } +} + +class CheetahRuntimeError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.RUNTIME_ERROR, message, messageStack, pvError); + this.name = 'CheetahRuntimeError'; + } +} + +class CheetahActivationError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.ACTIVATION_ERROR, message, messageStack, pvError); + this.name = 'CheetahActivationError'; + } +} + +class CheetahActivationLimitReachedError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.ACTIVATION_LIMIT_REACHED, message, messageStack, pvError); + this.name = 'CheetahActivationLimitReachedError'; + } +} + +class CheetahActivationThrottledError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.ACTIVATION_THROTTLED, message, messageStack, pvError); + this.name = 'CheetahActivationThrottledError'; + } +} + +class CheetahActivationRefusedError extends CheetahError { + constructor(message: string, messageStack: string[] = [], pvError: PvError | null = null) { + super(PvStatus.ACTIVATION_REFUSED, message, messageStack, pvError); + this.name = 'CheetahActivationRefusedError'; + } +} + +export { + CheetahError, + CheetahOutOfMemoryError, + CheetahIOError, + CheetahInvalidArgumentError, + CheetahStopIterationError, + CheetahKeyError, + CheetahInvalidStateError, + CheetahRuntimeError, + CheetahActivationError, + CheetahActivationLimitReachedError, + CheetahActivationThrottledError, + CheetahActivationRefusedError, +}; + + + +export function pvStatusToException( + pvStatus: PvStatus, + errorMessage: string, + messageStack: string[] = [], + pvError: PvError | null = null +): CheetahError { + switch (pvStatus) { + case PvStatus.OUT_OF_MEMORY: + return new CheetahOutOfMemoryError(errorMessage, messageStack, pvError); + case PvStatus.IO_ERROR: + return new CheetahIOError(errorMessage, messageStack, pvError); + case PvStatus.INVALID_ARGUMENT: + return new CheetahInvalidArgumentError(errorMessage, messageStack, pvError); + case PvStatus.STOP_ITERATION: + return new CheetahStopIterationError(errorMessage, messageStack, pvError); + case PvStatus.KEY_ERROR: + return new CheetahKeyError(errorMessage, messageStack, pvError); + case PvStatus.INVALID_STATE: + return new CheetahInvalidStateError(errorMessage, messageStack, pvError); + case PvStatus.RUNTIME_ERROR: + return new CheetahRuntimeError(errorMessage, messageStack, pvError); + case PvStatus.ACTIVATION_ERROR: + return new CheetahActivationError(errorMessage, messageStack, pvError); + case PvStatus.ACTIVATION_LIMIT_REACHED: + return new CheetahActivationLimitReachedError(errorMessage, messageStack, pvError); + case PvStatus.ACTIVATION_THROTTLED: + return new CheetahActivationThrottledError(errorMessage, messageStack, pvError); + case PvStatus.ACTIVATION_REFUSED: + return new CheetahActivationRefusedError(errorMessage, messageStack, pvError); + default: + // eslint-disable-next-line no-console + console.warn(`Unmapped error code: ${pvStatus}`); + return new CheetahError(pvStatus, errorMessage); + } +} \ No newline at end of file diff --git a/binding/web/src/cheetah_worker.ts b/binding/web/src/cheetah_worker.ts index 46fa2a5b..0f463fc7 100644 --- a/binding/web/src/cheetah_worker.ts +++ b/binding/web/src/cheetah_worker.ts @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -18,9 +18,12 @@ import { CheetahWorkerInitResponse, CheetahWorkerProcessResponse, CheetahWorkerReleaseResponse, + PvStatus, } from './types'; import { loadModel } from '@picovoice/web-utils'; +import { pvStatusToException } from './cheetah_errors'; + export class CheetahWorker { private readonly _worker: Worker; private readonly _version: string; @@ -29,6 +32,7 @@ export class CheetahWorker { private static _wasm: string; private static _wasmSimd: string; + private static _sdk: string = "web"; private constructor(worker: Worker, version: string, frameLength: number, sampleRate: number) { this._worker = worker; @@ -85,6 +89,10 @@ export class CheetahWorker { } } + public static setSdk(sdk: string): void { + CheetahWorker._sdk = sdk; + } + /** * Creates a worker instance of the Picovoice Cheetah Speech-to-Text engine. * Behind the scenes, it requires the WebAssembly code to load and initialize before @@ -115,7 +123,7 @@ export class CheetahWorker { model: CheetahModel, options: CheetahOptions = {}, ): Promise { - const { processErrorCallback, ...rest } = options; + const { processErrorCallback, ...workerOptions } = options; const customWritePath = (model.customWritePath) ? model.customWritePath : 'cheetah_model'; const modelPath = await loadModel({ ...model, customWritePath }); @@ -134,27 +142,29 @@ export class CheetahWorker { break; case 'failed': case 'error': + const error = pvStatusToException(ev.data.status, ev.data.shortMessage, ev.data.messageStack); if (processErrorCallback) { - processErrorCallback(ev.data.message); + processErrorCallback(error); } else { // eslint-disable-next-line no-console - console.error(ev.data.message); + console.error(error); } break; default: // @ts-ignore - processErrorCallback(`Unrecognized command: ${event.data.command}`); + processErrorCallback(pvStatusToException(PvStatus.RUNTIME_ERROR, `Unrecognized command: ${event.data.command}`)); } }; resolve(new CheetahWorker(worker, event.data.version, event.data.frameLength, event.data.sampleRate)); break; case 'failed': case 'error': - reject(event.data.message); + const error = pvStatusToException(event.data.status, event.data.shortMessage, event.data.messageStack); + reject(error); break; default: // @ts-ignore - reject(`Unrecognized command: ${event.data.command}`); + reject(pvStatusToException(PvStatus.RUNTIME_ERROR, `Unrecognized command: ${event.data.command}`)); } }; }); @@ -163,9 +173,10 @@ export class CheetahWorker { command: 'init', accessKey: accessKey, modelPath: modelPath, - options: rest, + options: workerOptions, wasm: this._wasm, wasmSimd: this._wasmSimd, + sdk: this._sdk, }); return returnPromise; @@ -210,11 +221,12 @@ export class CheetahWorker { break; case 'failed': case 'error': - reject(event.data.message); + const error = pvStatusToException(event.data.status, event.data.shortMessage, event.data.messageStack); + reject(error); break; default: // @ts-ignore - reject(`Unrecognized command: ${event.data.command}`); + reject(pvStatusToException(PvStatus.RUNTIME_ERROR, `Unrecognized command: ${event.data.command}`)); } }; }); diff --git a/binding/web/src/cheetah_worker_handler.ts b/binding/web/src/cheetah_worker_handler.ts index 03f73ede..f00db82f 100644 --- a/binding/web/src/cheetah_worker_handler.ts +++ b/binding/web/src/cheetah_worker_handler.ts @@ -1,5 +1,5 @@ /* - Copyright 2022 Picovoice Inc. + Copyright 2022-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -13,7 +13,8 @@ /// import { Cheetah } from './cheetah'; -import { CheetahTranscript, CheetahWorkerRequest } from './types'; +import { CheetahTranscript, CheetahWorkerRequest, PvStatus } from './types'; +import { CheetahError } from "./cheetah_errors"; let cheetah: Cheetah | null = null; @@ -24,10 +25,12 @@ const transcriptCallback = (cheetahTranscript: CheetahTranscript): void => { }); }; -const processErrorCallback = (error: string): void => { +const processErrorCallback = (error: CheetahError): void => { self.postMessage({ command: 'error', - message: error, + status: error.status, + shortMessage: error.shortMessage, + messageStack: error.messageStack }); }; @@ -42,7 +45,8 @@ self.onmessage = async function ( if (cheetah !== null) { self.postMessage({ command: 'error', - message: 'Cheetah already initialized', + status: PvStatus.INVALID_STATE, + shortMessage: 'Cheetah already initialized', }); return; } @@ -62,17 +66,28 @@ self.onmessage = async function ( sampleRate: cheetah.sampleRate, }); } catch (e: any) { - self.postMessage({ - command: 'error', - message: e.message, - }); + if (e instanceof CheetahError) { + self.postMessage({ + command: 'error', + status: e.status, + shortMessage: e.shortMessage, + messageStack: e.messageStack + }); + } else { + self.postMessage({ + command: 'error', + status: PvStatus.RUNTIME_ERROR, + shortMessage: e.message + }); + } } break; case 'process': if (cheetah === null) { self.postMessage({ command: 'error', - message: 'Cheetah not initialized', + status: PvStatus.INVALID_STATE, + shortMessage: 'Cheetah not initialized', }); return; } @@ -82,7 +97,8 @@ self.onmessage = async function ( if (cheetah === null) { self.postMessage({ command: 'error', - message: 'Cheetah not initialized', + status: PvStatus.INVALID_STATE, + shortMEssage: 'Cheetah not initialized', }); return; } @@ -101,8 +117,9 @@ self.onmessage = async function ( default: self.postMessage({ command: 'failed', + status: PvStatus.RUNTIME_ERROR, // @ts-ignore - message: `Unrecognized command: ${event.data.command}`, + shortMessage: `Unrecognized command: ${event.data.command}`, }); } }; diff --git a/binding/web/src/index.ts b/binding/web/src/index.ts index 7a640797..ac18b094 100644 --- a/binding/web/src/index.ts +++ b/binding/web/src/index.ts @@ -16,6 +16,8 @@ import { CheetahWorkerResponse, } from './types'; +import * as CheetahErrors from './cheetah_errors'; + import cheetahWasm from '../lib/pv_cheetah.wasm'; import cheetahWasmSimd from '../lib/pv_cheetah_simd.wasm'; @@ -39,4 +41,5 @@ export { CheetahWorkerReleaseResponse, CheetahWorkerFailureResponse, CheetahWorkerResponse, + CheetahErrors, }; diff --git a/binding/web/src/types.ts b/binding/web/src/types.ts index ad5c575a..c4120325 100644 --- a/binding/web/src/types.ts +++ b/binding/web/src/types.ts @@ -10,6 +10,22 @@ */ import { PvModel } from "@picovoice/web-utils"; +import { CheetahError } from "./cheetah_errors"; + +export enum PvStatus { + SUCCESS = 10000, + OUT_OF_MEMORY, + IO_ERROR, + INVALID_ARGUMENT, + STOP_ITERATION, + KEY_ERROR, + INVALID_STATE, + RUNTIME_ERROR, + ACTIVATION_ERROR, + ACTIVATION_LIMIT_REACHED, + ACTIVATION_THROTTLED, + ACTIVATION_REFUSED, +} /** * CheetahModel types @@ -22,7 +38,7 @@ export type CheetahOptions = { /** @defaultValue false */ enableAutomaticPunctuation?: boolean; /** @defaultValue undefined */ - processErrorCallback?: (error: string) => void + processErrorCallback?: (error: CheetahError) => void }; export type CheetahTranscript = { @@ -38,6 +54,7 @@ export type CheetahWorkerInitRequest = { options: CheetahOptions; wasm: string; wasmSimd: string; + sdk: string; }; export type CheetahWorkerProcessRequest = { @@ -61,7 +78,9 @@ export type CheetahWorkerRequest = export type CheetahWorkerFailureResponse = { command: 'failed' | 'error'; - message: string; + status: PvStatus; + shortMessage: string; + messageStack: string[]; }; export type CheetahWorkerInitResponse = CheetahWorkerFailureResponse | { diff --git a/binding/web/test/cheetah.test.ts b/binding/web/test/cheetah.test.ts index 098f74d9..2cfd9fc3 100644 --- a/binding/web/test/cheetah.test.ts +++ b/binding/web/test/cheetah.test.ts @@ -1,4 +1,5 @@ import { Cheetah, CheetahWorker } from "../"; +import { CheetahError } from "../dist/types/cheetah_error"; // @ts-ignore import cheetahParams from "./cheetah_params"; @@ -164,9 +165,77 @@ const runProcTest = async ( }; describe("Cheetah Binding", function () { + it(`should return process and flush error message stack`, async () => { + let errors: [CheetahError] = []; + + const runProcess = () => new Promise(async resolve => { + const cheetah = await Cheetah.create( + ACCESS_KEY, + () => { }, + { publicPath: '/test/cheetah_params.pv', forceWrite: true }, + { + processErrorCallback: (e: CheetahError) => { + errors.push(e); + resolve(); + } + } + ); + const testPcm = new Int16Array(cheetah.frameLength); + // @ts-ignore + const objectAddress = cheetah._objectAddress; + + // @ts-ignore + cheetah._objectAddress = 0; + await cheetah.process(testPcm); + await cheetah.flush(); + + await delay(1000); + + // @ts-ignore + cheetah._objectAddress = objectAddress; + await cheetah.release(); + }); + + await runProcess(); + expect(errors.length).to.be.gte(0); + + for (let i = 0; i < errors.length; i++) { + expect((errors[i] as CheetahError).messageStack.length).to.be.gt(0); + expect((errors[i] as CheetahError).messageStack.length).to.be.lte(8); + } + }); + for (const instance of [Cheetah, CheetahWorker]) { const instanceString = (instance === CheetahWorker) ? 'worker' : 'main'; + it(`should return correct error message stack (${instanceString})`, async () => { + let messageStack = []; + try { + const cheetah = await instance.create( + "invalidAccessKey", + () => { }, + { publicPath: '/test/cheetah_params.pv', forceWrite: true } + ); + expect(cheetah).to.be.undefined; + } catch (e: any) { + messageStack = e.messageStack; + } + + expect(messageStack.length).to.be.gt(0); + expect(messageStack.length).to.be.lte(8); + + try { + const cheetah = await instance.create( + "invalidAccessKey", + () => { }, + { publicPath: '/test/cheetah_params.pv', forceWrite: true } + ); + expect(cheetah).to.be.undefined; + } catch (e: any) { + expect(messageStack.length).to.be.eq(e.messageStack.length); + } + }); + it(`should be able to init with public path (${instanceString})`, () => { cy.wrap(null).then(async () => { await runInitTest(instance); diff --git a/binding/web/yarn.lock b/binding/web/yarn.lock index bb3e9072..cd8526b6 100644 --- a/binding/web/yarn.lock +++ b/binding/web/yarn.lock @@ -2,69 +2,63 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@ampproject/remapping@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: - "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" - integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/highlight" "^7.22.5" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" - integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/compat-data@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.5.tgz#b1f6c86a02d85d2dd3368a2b67c09add8cd0c255" - integrity sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== "@babel/core@^7.21.3": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89" - integrity sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helpers" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" - convert-source-map "^1.7.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" + json5 "^2.2.3" + semver "^6.3.1" -"@babel/generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.5.tgz#1e7bf768688acfb05cf30b2369ef855e82d984f7" - integrity sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA== +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.23.0" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -73,90 +67,70 @@ "@babel/types" "^7.22.5" "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878" - integrity sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-compilation-targets@^7.17.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" - integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - lru-cache "^5.1.1" - semver "^6.3.0" + "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz#fc7319fc54c5e2fa14b2909cf3c5fd3046813e02" - integrity sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw== +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - browserslist "^4.21.3" + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" lru-cache "^5.1.1" - semver "^6.3.0" + semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz#2192a1970ece4685fbff85b48da2c32fcb130b7c" - integrity sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q== +"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.5" - semver "^6.3.0" - -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz#53ff78472e5ce10a52664272a239787107603ebb" - integrity sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.3.1" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz#bb2bf0debfe39b831986a4efbf4066586819c6e4" - integrity sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" regexpu-core "^5.3.1" - semver "^6.3.0" + semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz#487053f103110f25b9755c5980e031e93ced24d8" - integrity sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg== +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" debug "^4.1.1" lodash.debounce "^4.0.8" resolve "^1.14.2" - semver "^6.1.2" -"@babel/helper-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" - integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" @@ -165,40 +139,30 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" - integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== +"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.22.15" -"@babel/helper-module-imports@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" - integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-transforms@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz#0f65daa0716961b6e96b164034e737f60a80d2ef" - integrity sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" @@ -207,37 +171,28 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== - -"@babel/helper-plugin-utils@^7.22.5": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz#14a38141a7bf2165ad38da61d61cf27b43015da2" - integrity sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g== +"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-wrap-function" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz#71bc5fb348856dea9fdc4eafd7e2e49f585145dc" - integrity sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg== +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" "@babel/helper-simple-access@^7.22.5": version "7.22.5" @@ -253,105 +208,81 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz#88cf11050edb95ed08d596f7a044462189127a08" - integrity sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ== +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - "@babel/helper-string-parser@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-identifier@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== -"@babel/helper-validator-option@^7.18.6": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" - integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== - -"@babel/helper-validator-option@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" - integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== - -"@babel/helper-wrap-function@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz#44d205af19ed8d872b4eefb0d2fa65f45eb34f06" - integrity sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw== +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== dependencies: "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" -"@babel/helpers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.5.tgz#74bb4373eb390d1ceed74a15ef97767e63120820" - integrity sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q== +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" -"@babel/highlight@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" - integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea" - integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" - integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" - integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -486,14 +417,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz#7336356d23380eda9a56314974f053a020dab0c3" - integrity sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg== +"@babel/plugin-transform-async-generator-functions@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" + integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-transform-async-to-generator@^7.22.5": @@ -512,10 +443,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz#8bfc793b3a4b2742c0983fadc1480d843ecea31b" - integrity sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg== +"@babel/plugin-transform-block-scoping@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -527,28 +458,28 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba" - integrity sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA== +"@babel/plugin-transform-class-static-block@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz#635d4e98da741fad814984639f4c0149eb0135e1" - integrity sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ== +"@babel/plugin-transform-classes@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.22.5": @@ -559,10 +490,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz#d3aca7438f6c26c78cdd0b0ba920a336001b27cc" - integrity sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ== +"@babel/plugin-transform-destructuring@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -574,14 +505,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" - integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-duplicate-keys@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" @@ -589,10 +512,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dynamic-import@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e" - integrity sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ== +"@babel/plugin-transform-dynamic-import@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" @@ -605,18 +528,18 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-export-namespace-from@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" - integrity sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg== +"@babel/plugin-transform-export-namespace-from@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-for-of@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" - integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== +"@babel/plugin-transform-for-of@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -629,10 +552,10 @@ "@babel/helper-function-name" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-json-strings@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" - integrity sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A== +"@babel/plugin-transform-json-strings@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -644,10 +567,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-logical-assignment-operators@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c" - integrity sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA== +"@babel/plugin-transform-logical-assignment-operators@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -659,32 +582,32 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" - integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== +"@babel/plugin-transform-modules-amd@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" - integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== +"@babel/plugin-transform-modules-commonjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" - integrity sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ== +"@babel/plugin-transform-modules-systemjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" @@ -709,32 +632,32 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" - integrity sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58" - integrity sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g== +"@babel/plugin-transform-numeric-separator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" - integrity sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ== +"@babel/plugin-transform-object-rest-spread@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-object-super@^7.22.5": version "7.22.5" @@ -744,27 +667,27 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.5" -"@babel/plugin-transform-optional-catch-binding@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333" - integrity sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg== +"@babel/plugin-transform-optional-catch-binding@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz#1003762b9c14295501beb41be72426736bedd1e0" - integrity sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ== +"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" - integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== +"@babel/plugin-transform-parameters@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -776,13 +699,13 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32" - integrity sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ== +"@babel/plugin-transform-private-property-in-object@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" @@ -793,13 +716,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-regenerator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz#cd8a68b228a5f75fa01420e8cc2fc400f0fc32aa" - integrity sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw== +"@babel/plugin-transform-regenerator@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.1" + regenerator-transform "^0.15.2" "@babel/plugin-transform-reserved-words@^7.22.5": version "7.22.5" @@ -809,16 +732,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-runtime@^7.21.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.5.tgz#ca975fb5e260044473c8142e1b18b567d33c2a3b" - integrity sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" + integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== dependencies: - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.3" - babel-plugin-polyfill-corejs3 "^0.8.1" - babel-plugin-polyfill-regenerator "^0.5.0" - semver "^6.3.0" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + semver "^6.3.1" "@babel/plugin-transform-shorthand-properties@^7.22.5": version "7.22.5" @@ -856,10 +779,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-escapes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz#ce0c248522b1cb22c7c992d88301a5ead70e806c" - integrity sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg== +"@babel/plugin-transform-unicode-escapes@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -888,16 +811,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.20.2": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.5.tgz#3da66078b181f3d62512c51cf7014392c511504e" - integrity sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" + integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" + "@babel/compat-data" "^7.23.2" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" @@ -918,69 +841,67 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.23.2" "@babel/plugin-transform-async-to-generator" "^7.22.5" "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.23.0" "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.5" - "@babel/plugin-transform-classes" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.23.0" "@babel/plugin-transform-dotall-regex" "^7.22.5" "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.5" - "@babel/plugin-transform-for-of" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-modules-systemjs" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.23.0" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-modules-systemjs" "^7.23.0" "@babel/plugin-transform-modules-umd" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" - "@babel/plugin-transform-numeric-separator" "^7.22.5" - "@babel/plugin-transform-object-rest-spread" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.5" - "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.23.0" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" "@babel/plugin-transform-reserved-words" "^7.22.5" "@babel/plugin-transform-shorthand-properties" "^7.22.5" "@babel/plugin-transform-spread" "^7.22.5" "@babel/plugin-transform-sticky-regex" "^7.22.5" "@babel/plugin-transform-template-literals" "^7.22.5" "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" "@babel/plugin-transform-unicode-property-regex" "^7.22.5" "@babel/plugin-transform-unicode-regex" "^7.22.5" "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.3" - babel-plugin-polyfill-corejs3 "^0.8.1" - babel-plugin-polyfill-regenerator "^0.5.0" - core-js-compat "^3.30.2" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.23.0" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" esutils "^2.0.2" @@ -989,61 +910,45 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.21.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" - integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== +"@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== dependencies: - regenerator-runtime "^0.13.11" + regenerator-runtime "^0.14.0" -"@babel/runtime@^7.8.4": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" - integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== +"@babel/template@^7.22.15", "@babel/template@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - regenerator-runtime "^0.13.11" - -"@babel/template@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" - integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== - dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" -"@babel/traverse@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.5.tgz#44bd276690db6f4940fdb84e1cb4abd2f729ccd1" - integrity sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ== +"@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.18.6", "@babel/types@^7.4.4": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.0.tgz#1da00d89c2f18b226c9207d96edbeb79316a1819" - integrity sha512-uR7NWq2VNFnDi7EYqiRz2Jv/VQIu38tu64Zy8TX2nQFQ6etJ9V/Rr2msW8BS132mum2rL645qpDrLtAJtVpuow== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" - integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== +"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.4.4": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== dependencies: "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@colors/colors@1.5.0": @@ -1052,9 +957,9 @@ integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== "@cypress/request@^2.88.10": - version "2.88.11" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.11.tgz#5a4c7399bc2d7e7ed56e92ce5acb620c8b187047" - integrity sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w== + version "2.88.12" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590" + integrity sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -1071,7 +976,7 @@ performance-now "^2.1.0" qs "~6.10.3" safe-buffer "^5.1.2" - tough-cookie "~2.5.0" + tough-cookie "^4.1.3" tunnel-agent "^0.6.0" uuid "^8.3.2" @@ -1090,19 +995,19 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" - integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" - integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== +"@eslint/eslintrc@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" + integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.2" + espree "^9.6.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -1110,17 +1015,17 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.43.0": - version "8.43.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.43.0.tgz#559ca3d9ddbd6bf907ad524320a0d14b85586af0" - integrity sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg== +"@eslint/js@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" + integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -1129,63 +1034,50 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": +"@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" - integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.13": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1216,9 +1108,9 @@ commander "^9.2.0" "@rollup/plugin-babel@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-6.0.3.tgz#07ccde15de278c581673034ad6accdb4a153dfeb" - integrity sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg== + version "6.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" + integrity sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw== dependencies: "@babel/helper-module-imports" "^7.18.6" "@rollup/pluginutils" "^5.0.1" @@ -1236,9 +1128,9 @@ magic-string "^0.27.0" "@rollup/plugin-node-resolve@^15.0.1": - version "15.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz#9ffcd8e8c457080dba89bb9fcb583a6778dc757e" - integrity sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA== + version "15.2.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" + integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/resolve" "1.20.2" @@ -1248,9 +1140,9 @@ resolve "^1.22.1" "@rollup/plugin-terser@^0.4.0": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.3.tgz#c2bde2fe3a85e45fa68a454d48f4e73e57f98b30" - integrity sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA== + version "0.4.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz#15dffdb3f73f121aa4fbb37e7ca6be9aeea91962" + integrity sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A== dependencies: serialize-javascript "^6.0.1" smob "^1.0.0" @@ -1265,38 +1157,35 @@ picomatch "^2.2.2" "@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" - integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz#bbb4c175e19ebfeeb8c132c2eea0ecb89941a66c" + integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" picomatch "^2.3.1" -"@types/estree@*": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== - -"@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.4.tgz#d9748f5742171b26218516cf1828b8eafaf8a9fa" + integrity sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw== "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/node@*": - version "18.14.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.0.tgz#94c47b9217bbac49d4a67a967fdcdeed89ebb7d0" - integrity sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A== + version "20.8.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.10.tgz#a5448b895c753ae929c26ce85cab557c6d4a365e" + integrity sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w== + dependencies: + undici-types "~5.26.4" "@types/node@^14.14.31": - version "14.18.51" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.51.tgz#cb90935b89c641201c3d07a595c3e22d1cfaa417" - integrity sha512-P9bsdGFPpVtofEKlhWMVS2qqx1A/rt9QBfihWlklfHHpUpjtYse5AzFz6j4DWrARLYh6gRnw9+5+DJcrq3KvBA== + version "14.18.63" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" + integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== "@types/resolve@1.20.2": version "1.20.2" @@ -1304,9 +1193,9 @@ integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== "@types/semver@^7.3.12": - version "7.3.13" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== "@types/sinonjs__fake-timers@8.1.1": version "8.1.1" @@ -1314,115 +1203,115 @@ integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@^2.3.2": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + version "2.3.5" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.5.tgz#d93dd29cdcd5801d90be968073b09a6b370780e4" + integrity sha512-tAe4Q+OLFOA/AMD+0lq8ovp8t3ysxAOeaScnfNdZpUxaGl51ZMDEITxkvFl1STudQ58mz6gzVGl9VhMKhwRnZQ== "@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + version "2.10.2" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.2.tgz#dab926ef9b41a898bc943f11bca6b0bad6d4b729" + integrity sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA== dependencies: "@types/node" "*" "@typescript-eslint/eslint-plugin@^5.51.0": - version "5.60.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.0.tgz#2f4bea6a3718bed2ba52905358d0f45cd3620d31" - integrity sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg== + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== dependencies: "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.60.0" - "@typescript-eslint/type-utils" "5.60.0" - "@typescript-eslint/utils" "5.60.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" natural-compare-lite "^1.4.0" semver "^7.3.7" tsutils "^3.21.0" "@typescript-eslint/parser@^5.51.0": - version "5.60.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.60.0.tgz#08f4daf5fc6548784513524f4f2f359cebb4068a" - integrity sha512-jBONcBsDJ9UoTWrARkRRCgDz6wUggmH5RpQVlt7BimSwaTkTjwypGzKORXbR4/2Hqjk9hgwlon2rVQAjWNpkyQ== + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: - "@typescript-eslint/scope-manager" "5.60.0" - "@typescript-eslint/types" "5.60.0" - "@typescript-eslint/typescript-estree" "5.60.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.60.0": - version "5.60.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz#ae511967b4bd84f1d5e179bb2c82857334941c1c" - integrity sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "5.60.0" - "@typescript-eslint/visitor-keys" "5.60.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.60.0": - version "5.60.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.60.0.tgz#69b09087eb12d7513d5b07747e7d47f5533aa228" - integrity sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g== +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== dependencies: - "@typescript-eslint/typescript-estree" "5.60.0" - "@typescript-eslint/utils" "5.60.0" + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.60.0": - version "5.60.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.60.0.tgz#3179962b28b4790de70e2344465ec97582ce2558" - integrity sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/typescript-estree@5.60.0": - version "5.60.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz#4ddf1a81d32a850de66642d9b3ad1e3254fb1600" - integrity sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: - "@typescript-eslint/types" "5.60.0" - "@typescript-eslint/visitor-keys" "5.60.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.60.0": - version "5.60.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.60.0.tgz#4667c5aece82f9d4f24a667602f0f300864b554c" - integrity sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ== +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.60.0" - "@typescript-eslint/types" "5.60.0" - "@typescript-eslint/typescript-estree" "5.60.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.60.0": - version "5.60.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz#b48b29da3f5f31dd1656281727004589d2722a66" - integrity sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@typescript-eslint/types" "5.60.0" + "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -acorn@^8.8.2: - version "8.9.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" - integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== +acorn@^8.8.2, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== aggregate-error@^3.0.0: version "3.1.0" @@ -1432,7 +1321,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1483,11 +1372,32 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -1513,9 +1423,9 @@ async-mutex@^0.4.0: tslib "^2.4.0" async@^3.2.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== asynckit@^0.4.0: version "0.4.0" @@ -1542,29 +1452,29 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -babel-plugin-polyfill-corejs2@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz#75044d90ba5043a5fb559ac98496f62f3eb668fd" - integrity sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw== +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.4.0" - semver "^6.1.1" + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.3" + semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz#39248263c38191f0d226f928d666e6db1b4b3a8a" - integrity sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q== +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.0" - core-js-compat "^3.30.1" + "@babel/helper-define-polyfill-provider" "^0.4.3" + core-js-compat "^3.33.1" -babel-plugin-polyfill-regenerator@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz#e7344d88d9ef18a3c47ded99362ae4a757609380" - integrity sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g== +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.0" + "@babel/helper-define-polyfill-provider" "^0.4.3" balanced-match@^1.0.0: version "1.0.2" @@ -1615,15 +1525,15 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.3, browserslist@^4.21.5: - version "4.21.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== +browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" buffer-crc32@~0.2.3: version "0.2.13" @@ -1649,34 +1559,35 @@ builtin-modules@^3.3.0: integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== cachedir@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" - integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== + version "2.4.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d" + integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -caniuse-lite@^1.0.30001449: - version "1.0.30001457" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001457.tgz#6af34bb5d720074e2099432aa522c21555a18301" - integrity sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA== +caniuse-lite@^1.0.30001541: + version "1.0.30001561" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da" + integrity sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -chalk@^2.0.0, chalk@^2.4.1: +chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1699,9 +1610,9 @@ check-more-types@^2.24.0: integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== clean-stack@^2.0.0: version "2.2.0" @@ -1798,17 +1709,17 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.30.1, core-js-compat@^3.30.2: - version "3.31.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.0.tgz#4030847c0766cc0e803dcdfb30055d7ef2064bf1" - integrity sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw== +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" + integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== dependencies: - browserslist "^4.21.5" + browserslist "^4.22.1" core-util-is@1.0.2: version "1.0.2" @@ -1898,9 +1809,9 @@ dashdash@^1.12.0: assert-plus "^1.0.0" dayjs@^1.10.4: - version "1.11.8" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.8.tgz#4282f139c8c19dd6d0c7bd571e30c2d0ba7698ea" - integrity sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ== + version "1.11.10" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== debug@^3.1.0: version "3.2.7" @@ -1922,15 +1833,25 @@ deep-is@^0.1.3: integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: - version "4.3.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" - integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -1961,10 +1882,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.4.284: - version "1.4.306" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.306.tgz#3f16bc14e150ad79803145fffeaf0bee15d3fca7" - integrity sha512-1zGmLFfpcs2v7ELt/1HgLZF6Gm2CCHaAdNKxd9Ge4INSU/HDYWjs7fcWU6eVMmhkpwmh+52ZrGCUU+Ji9OJihA== +electron-to-chromium@^1.4.535: + version "1.4.576" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.576.tgz#0c6940fdc0d60f7e34bd742b29d8fa847c9294d1" + integrity sha512-yXsZyXJfAqzWk1WKryr0Wl0MN2D47xodPvEEwlVePBnhU5E7raevLQR+E6b9JAD3GfL/7MbAL9ZtWQQPcLx7wA== emoji-regex@^8.0.0: version "8.0.0" @@ -1979,11 +1900,12 @@ end-of-stream@^1.1.0: once "^1.4.0" enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== dependencies: ansi-colors "^4.1.1" + strip-ansi "^6.0.1" error-ex@^1.3.1: version "1.3.2" @@ -1992,53 +1914,59 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" - integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.4" - is-array-buffer "^3.0.1" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.2" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" + which-typed-array "^1.1.13" es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -2065,11 +1993,11 @@ escape-string-regexp@^4.0.0: integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-plugin-cypress@^2.12.1: - version "2.13.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.13.3.tgz#5fc1afdc939aaa7daa9181f651f2f35429733ff2" - integrity sha512-nAPjZE5WopCsgJwl3vHm5iafpV+ZRO76Z9hMyRygWhmg5ODXDPd+9MaPl7kdJ2azj+sO87H3P1PRnggIrz848g== + version "2.15.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.1.tgz#336afa7e8e27451afaf65aa359c9509e0a4f3a7b" + integrity sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w== dependencies: - globals "^11.12.0" + globals "^13.20.0" eslint-scope@^5.1.1: version "5.1.1" @@ -2079,45 +2007,41 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.22.0: - version "8.43.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.43.0.tgz#3e8c6066a57097adfd9d390b8fc93075f257a094" - integrity sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q== + version "8.53.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" + integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.3" - "@eslint/js" "8.43.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.3" + "@eslint/js" "8.53.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.1" - espree "^9.5.2" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -2127,7 +2051,6 @@ eslint@^8.22.0: globals "^13.19.0" graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" @@ -2137,17 +2060,16 @@ eslint@^8.22.0: lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.2: - version "9.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" @@ -2244,9 +2166,9 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -2325,17 +2247,18 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== for-each@^0.3.3: version "0.3.3" @@ -2383,26 +2306,26 @@ fs.realpath@^1.0.0: integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functions-have-names@^1.2.2: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -2412,14 +2335,15 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" + has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" @@ -2494,15 +2418,15 @@ global-dirs@^3.0.0: dependencies: ini "2.0.0" -globals@^11.1.0, globals@^11.12.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== +globals@^13.19.0, globals@^13.20.0: + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -2533,14 +2457,9 @@ gopd@^1.0.1: get-intrinsic "^1.1.3" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== graphemer@^1.4.0: version "1.4.0" @@ -2563,11 +2482,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -2586,12 +2505,12 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== dependencies: - function-bind "^1.1.1" + function-bind "^1.1.2" hosted-git-info@^2.1.4: version "2.8.9" @@ -2622,7 +2541,7 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -2658,22 +2577,22 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -internal-slot@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== +internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" -is-array-buffer@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" - integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.0" is-typed-array "^1.1.10" is-arrayish@^0.2.1: @@ -2715,19 +2634,12 @@ is-ci@^3.0.0: dependencies: ci-info "^3.2.0" -is-core-module@^2.11.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" - -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1: version "1.0.5" @@ -2829,16 +2741,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" + which-typed-array "^1.1.11" is-typedarray@~1.0.0: version "1.0.0" @@ -2857,6 +2765,11 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -2894,6 +2807,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -2919,7 +2837,7 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^2.2.2: +json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -2943,6 +2861,13 @@ jsprim@^2.0.2: json-schema "0.4.0" verror "1.10.0" +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + lazy-ass@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" @@ -3144,10 +3069,10 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== normalize-package-data@^2.3.2: version "2.5.0" @@ -3181,10 +3106,10 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -3215,17 +3140,17 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" ospath@^1.2.2: version "1.2.2" @@ -3386,7 +3311,7 @@ proxy-from-env@1.0.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== -psl@^1.1.28: +psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== @@ -3400,9 +3325,9 @@ pump@^3.0.0: once "^1.3.1" punycode@^2.1.0, punycode@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== qs@~6.10.3: version "6.10.5" @@ -3411,6 +3336,11 @@ qs@~6.10.3: dependencies: side-channel "^1.0.4" +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -3433,9 +3363,9 @@ read-pkg@^3.0.0: path-type "^3.0.0" regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" @@ -3444,31 +3374,31 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== -regenerator-transform@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" - integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" regexpu-core@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.1.tgz#66900860f88def39a5cb79ebd9490e84f17bcdfb" - integrity sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ== + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" @@ -3491,26 +3421,22 @@ request-progress@^3.0.0: dependencies: throttleit "^1.0.0" +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.10.0, resolve@^1.14.2: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.1: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== - dependencies: - is-core-module "^2.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -3576,6 +3502,16 @@ rxjs@^7.5.1: dependencies: tslib "^2.1.0" +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -3600,7 +3536,7 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -3619,6 +3555,25 @@ serialize-javascript@^6.0.1: dependencies: randombytes "^2.1.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -3644,9 +3599,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.8.0" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" - integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== side-channel@^1.0.4: version "1.0.4" @@ -3686,9 +3641,9 @@ slice-ansi@^4.0.0: is-fullwidth-code-point "^3.0.0" smob@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/smob/-/smob-1.4.0.tgz#ac9751fe54b1fc1fc8286a628d4e7f824273b95a" - integrity sha512-MqR3fVulhjWuRNSMydnTlweu38UhQ0HXM4buStD/S3mc/BzX3CuM9OmhyQpmtYCvoYdl5ris6TI0ZqH355Ymqg== + version "1.4.1" + resolved "https://registry.yarnpkg.com/smob/-/smob-1.4.1.tgz#66270e7df6a7527664816c5b577a23f17ba6f5b5" + integrity sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ== source-map-support@~0.5.20: version "0.5.21" @@ -3704,9 +3659,9 @@ source-map@^0.6.0: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -3725,14 +3680,14 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + version "3.0.16" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== sshpk@^1.14.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + version "1.18.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -3754,31 +3709,40 @@ string-width@^4.1.0, string-width@^4.2.0: strip-ansi "^6.0.1" string.prototype.padend@^3.0.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" - integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz#311ef3a4e3c557dd999cdf88fbdde223f2ac0f95" + integrity sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" @@ -3797,7 +3761,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -3829,9 +3793,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== terser@^5.17.4: - version "5.18.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.18.1.tgz#6d8642508ae9fb7b48768e48f16d675c89a78460" - integrity sha512-j1n0Ao919h/Ai5r43VAnfV/7azUYW43GPxK7qSATzrsERfW7+y2QW9Cp9ufnRF5CQUWbnLSo7UJokSWCqg4tsQ== + version "5.24.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364" + integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -3872,13 +3836,15 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +tough-cookie@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== dependencies: - psl "^1.1.28" + psl "^1.1.33" punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" tslib@^1.8.1: version "1.14.1" @@ -3886,9 +3852,9 @@ tslib@^1.8.1: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: - version "2.5.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" - integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tsutils@^3.21.0: version "3.21.0" @@ -3926,6 +3892,36 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -3950,6 +3946,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -3973,20 +3974,25 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -update-browserslist-db@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -3998,6 +4004,14 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -4021,9 +4035,9 @@ verror@1.10.0: extsprintf "^1.2.0" wasm-feature-detect@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/wasm-feature-detect/-/wasm-feature-detect-1.5.1.tgz#0db57a7d7f8c26b743dde85386215ae2b135e78a" - integrity sha512-GHr23qmuehNXHY4902/hJ6EV5sUANIJC3R/yMfQ7hWDg3nfhlcJfnIL96R2ohpIwa62araN6aN4bLzzzq5GXkg== + version "1.6.1" + resolved "https://registry.yarnpkg.com/wasm-feature-detect/-/wasm-feature-detect-1.6.1.tgz#21c7c35f9b233d71d2948d4a8b3e2098c452b940" + integrity sha512-R1i9ED8UlLu/foILNB1ck9XS63vdtqU/tP1MCugVekETp/ySCrBZRk5I/zI67cI1wlQYeSonNm1PLjDHZDNg6g== which-boxed-primitive@^1.0.2: version "1.0.2" @@ -4036,17 +4050,16 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" which@^1.2.9: version "1.3.1" @@ -4062,11 +4075,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -word-wrap@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" diff --git a/demo/android/CheetahDemo/cheetah-demo-app/build.gradle b/demo/android/CheetahDemo/cheetah-demo-app/build.gradle index 2685918c..1e22cee8 100644 --- a/demo/android/CheetahDemo/cheetah-demo-app/build.gradle +++ b/demo/android/CheetahDemo/cheetah-demo-app/build.gradle @@ -31,7 +31,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.4.2' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'ai.picovoice:cheetah-android:1.1.2' + implementation 'ai.picovoice:cheetah-android:2.0.0' implementation 'ai.picovoice:android-voice-processor:1.0.2' } diff --git a/demo/android/CheetahDemo/cheetah-demo-app/src/main/java/ai/picovoice/cheetahdemo/MainActivity.java b/demo/android/CheetahDemo/cheetah-demo-app/src/main/java/ai/picovoice/cheetahdemo/MainActivity.java index 6d635622..dbc0f336 100644 --- a/demo/android/CheetahDemo/cheetah-demo-app/src/main/java/ai/picovoice/cheetahdemo/MainActivity.java +++ b/demo/android/CheetahDemo/cheetah-demo-app/src/main/java/ai/picovoice/cheetahdemo/MainActivity.java @@ -61,7 +61,7 @@ protected void onCreate(Bundle savedInstanceState) { .setEnableAutomaticPunctuation(true) .build(getApplicationContext()); } catch (CheetahInvalidArgumentException e) { - displayError(String.format("%s\nEnsure your AccessKey '%s' is valid", e.getMessage(), ACCESS_KEY)); + displayError(e.getMessage()); } catch (CheetahActivationException e) { displayError("AccessKey activation error"); } catch (CheetahActivationLimitException e) { diff --git a/demo/android/CheetahDemo/gradle/wrapper/gradle-wrapper.properties b/demo/android/CheetahDemo/gradle/wrapper/gradle-wrapper.properties index 740ab489..703a15c5 100644 --- a/demo/android/CheetahDemo/gradle/wrapper/gradle-wrapper.properties +++ b/demo/android/CheetahDemo/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Jun 29 23:02:09 PDT 2021 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/demo/c/cheetah_demo_file.c b/demo/c/cheetah_demo_file.c index 223e89e6..b0a77caa 100644 --- a/demo/c/cheetah_demo_file.c +++ b/demo/c/cheetah_demo_file.c @@ -86,6 +86,12 @@ static void print_dl_error(const char *message) { #endif } +void print_error_message(char **message_stack, int32_t message_stack_depth) { + for (int32_t i = 0; i < message_stack_depth; i++) { + fprintf(stderr, " [%d] %s\n", i, message_stack[i]); + } +} + int picovoice_main(int argc, char **argv) { const char *access_key = NULL; const char *model_path = NULL; @@ -172,19 +178,56 @@ int picovoice_main(int argc, char **argv) { exit(1); } - void (*pv_free_func)(void *) = load_symbol(dl_handle, "pv_free"); - if (!pv_free_func) { - print_dl_error("failed to load `pv_free`"); + pv_status_t (*pv_cheetah_transcript_delete_func)(char *) = + load_symbol(dl_handle, "pv_cheetah_transcript_delete"); + if (!pv_cheetah_transcript_delete_func) { + print_dl_error("failed to load `pv_cheetah_transcript_delete`"); + exit(1); + } + + pv_status_t (*pv_get_error_stack_func)(char ***, int32_t *) = load_symbol(dl_handle, "pv_get_error_stack"); + if (!pv_get_error_stack_func) { + print_dl_error("failed to load 'pv_get_error_stack_func'"); + exit(1); + } + + void (*pv_free_error_stack_func)(char **) = load_symbol(dl_handle, "pv_free_error_stack"); + if (!pv_free_error_stack_func) { + print_dl_error("failed to load 'pv_free_error_stack_func'"); exit(1); } struct timeval before; gettimeofday(&before, NULL); + char **message_stack = NULL; + int32_t message_stack_depth = 0; + pv_status_t error_status = PV_STATUS_RUNTIME_ERROR; + pv_cheetah_t *cheetah = NULL; pv_status_t status = pv_cheetah_init_func(access_key, model_path, 0.f, enable_automatic_punctuation, &cheetah); if (status != PV_STATUS_SUCCESS) { - fprintf(stderr, "failed to init with `%s`.\n", pv_status_to_string_func(status)); + fprintf( + stderr, + "Failed to init with `%s`", + pv_status_to_string_func(status)); + error_status = pv_get_error_stack_func(&message_stack, &message_stack_depth); + if (error_status != PV_STATUS_SUCCESS) { + fprintf( + stderr, + ".\nUnable to get Cheetah error state with '%s'.\n", + pv_status_to_string_func(error_status)); + exit(1); + } + + if (message_stack_depth > 0) { + fprintf(stderr, ":\n"); + print_error_message(message_stack, message_stack_depth); + } else { + fprintf(stderr, ".\n"); + } + + pv_free_error_stack_func(message_stack); exit(1); } @@ -237,7 +280,27 @@ int picovoice_main(int argc, char **argv) { bool _ = false; status = pv_cheetah_process_func(cheetah, pcm, &partial_transcript, &_); if (status != PV_STATUS_SUCCESS) { - fprintf(stderr, "`pv_cheetah_process` failed with `%s`\n", pv_status_to_string_func(status)); + fprintf( + stderr, + "Failed to process with `%s`", + pv_status_to_string_func(status)); + error_status = pv_get_error_stack_func(&message_stack, &message_stack_depth); + if (error_status != PV_STATUS_SUCCESS) { + fprintf( + stderr, + ".\nUnable to get Cheetah error state with '%s'.\n", + pv_status_to_string_func(error_status)); + exit(1); + } + + if (message_stack_depth > 0) { + fprintf(stderr, ":\n"); + print_error_message(message_stack, message_stack_depth); + } else { + fprintf(stderr, ".\n"); + } + + pv_free_error_stack_func(message_stack); exit(1); } @@ -249,7 +312,7 @@ int picovoice_main(int argc, char **argv) { fprintf(stdout, "%s", partial_transcript); fflush(stdout); - pv_free_func(partial_transcript); + pv_cheetah_transcript_delete_func(partial_transcript); } gettimeofday(&before, NULL); @@ -257,7 +320,27 @@ int picovoice_main(int argc, char **argv) { char *final_transcript = NULL; status = pv_cheetah_flush_func(cheetah, &final_transcript); if (status != PV_STATUS_SUCCESS) { - fprintf(stderr, "`pv_cheetah_flush` failed with `%s`.\n", pv_status_to_string_func(status)); + fprintf( + stderr, + "Failed to flush with `%s`", + pv_status_to_string_func(status)); + error_status = pv_get_error_stack_func(&message_stack, &message_stack_depth); + if (error_status != PV_STATUS_SUCCESS) { + fprintf( + stderr, + ".\nUnable to get Cheetah error state with '%s'.\n", + pv_status_to_string_func(error_status)); + exit(1); + } + + if (message_stack_depth > 0) { + fprintf(stderr, ":\n"); + print_error_message(message_stack, message_stack_depth); + } else { + fprintf(stderr, ".\n"); + } + + pv_free_error_stack_func(message_stack); exit(1); } @@ -266,7 +349,7 @@ int picovoice_main(int argc, char **argv) { proc_sec += ((double) (after.tv_sec - before.tv_sec)) + (((double) (after.tv_usec - before.tv_usec)) * 1e-6); fprintf(stdout, "%s\n", final_transcript); - pv_free_func(final_transcript); + pv_cheetah_transcript_delete_func(final_transcript); drwav_uninit(&f); } diff --git a/demo/c/cheetah_demo_mic.c b/demo/c/cheetah_demo_mic.c index 021b99d2..47cac339 100644 --- a/demo/c/cheetah_demo_mic.c +++ b/demo/c/cheetah_demo_mic.c @@ -89,6 +89,12 @@ static void print_dl_error(const char *message) { #endif } +void print_error_message(char **message_stack, int32_t message_stack_depth) { + for (int32_t i = 0; i < message_stack_depth; i++) { + fprintf(stderr, " [%d] %s\n", i, message_stack[i]); + } +} + static void show_audio_devices(void) { char **devices = NULL; int32_t count = 0; @@ -217,16 +223,58 @@ int picovoice_main(int argc, char *argv[]) { exit(1); } - void (*pv_free_func)(void *) = load_symbol(dl_handle, "pv_free"); - if (!pv_free_func) { - print_dl_error("failed to load `pv_free`"); + pv_status_t (*pv_cheetah_transcript_delete_func)(char *) = + load_symbol(dl_handle, "pv_cheetah_transcript_delete"); + if (!pv_cheetah_transcript_delete_func) { + print_dl_error("failed to load `pv_cheetah_transcript_delete`"); + exit(1); + } + + pv_status_t (*pv_get_error_stack_func)(char ***, int32_t *) = load_symbol(dl_handle, "pv_get_error_stack"); + if (!pv_get_error_stack_func) { + print_dl_error("failed to load 'pv_get_error_stack_func'"); + exit(1); + } + + void (*pv_free_error_stack_func)(char **) = load_symbol(dl_handle, "pv_free_error_stack"); + if (!pv_free_error_stack_func) { + print_dl_error("failed to load 'pv_free_error_stack_func'"); exit(1); } + char **message_stack = NULL; + int32_t message_stack_depth = 0; + pv_status_t error_status = PV_STATUS_RUNTIME_ERROR; + pv_cheetah_t *cheetah = NULL; - pv_status_t status = pv_cheetah_init_func(access_key, model_path, endpoint_duration_sec, enable_automatic_punctuation, &cheetah); + pv_status_t status = pv_cheetah_init_func( + access_key, + model_path, + endpoint_duration_sec, + enable_automatic_punctuation, + &cheetah); if (status != PV_STATUS_SUCCESS) { - fprintf(stderr, "failed to init with `%s`.\n", pv_status_to_string_func(status)); + fprintf( + stderr, + "Failed to init with `%s`", + pv_status_to_string_func(status)); + error_status = pv_get_error_stack_func(&message_stack, &message_stack_depth); + if (error_status != PV_STATUS_SUCCESS) { + fprintf( + stderr, + ".\nUnable to get Cheetah error state with '%s'.\n", + pv_status_to_string_func(error_status)); + exit(1); + } + + if (message_stack_depth > 0) { + fprintf(stderr, ":\n"); + print_error_message(message_stack, message_stack_depth); + } else { + fprintf(stderr, ".\n"); + } + + pv_free_error_stack_func(message_stack); exit(1); } @@ -236,7 +284,7 @@ int picovoice_main(int argc, char *argv[]) { pv_recorder_t *recorder = NULL; pv_recorder_status_t recorder_status = pv_recorder_init(device_index, frame_length, 1000, true, true, &recorder); if (recorder_status != PV_RECORDER_STATUS_SUCCESS) { - fprintf(stderr, "failed to initialize audio device with `%s`.\n", pv_recorder_status_to_string(recorder_status)); + fprintf(stderr, "Failed to initialize audio device with `%s`.\n", pv_recorder_status_to_string(recorder_status)); exit(1); } @@ -252,14 +300,14 @@ int picovoice_main(int argc, char *argv[]) { fprintf(stdout, "start recording...\n"); recorder_status = pv_recorder_start(recorder); if (recorder_status != PV_RECORDER_STATUS_SUCCESS) { - fprintf(stderr, "failed to start device with %s.\n", pv_recorder_status_to_string(recorder_status)); + fprintf(stderr, "Failed to start device with %s.\n", pv_recorder_status_to_string(recorder_status)); exit(1); } while (!is_interrupted) { recorder_status = pv_recorder_read(recorder, pcm); if (recorder_status != PV_RECORDER_STATUS_SUCCESS) { - fprintf(stderr, "failed to read with `%s`.\n", pv_recorder_status_to_string(recorder_status)); + fprintf(stderr, "Failed to read with `%s`.\n", pv_recorder_status_to_string(recorder_status)); exit(1); } @@ -267,28 +315,68 @@ int picovoice_main(int argc, char *argv[]) { bool is_endpoint = false; status = pv_cheetah_process_func(cheetah, pcm, &partial_transcript, &is_endpoint); if (status != PV_STATUS_SUCCESS) { - fprintf(stderr, "`pv_cheetah_process` failed with `%s`\n", pv_status_to_string_func(status)); + fprintf( + stderr, + "Failed to process with `%s`", + pv_status_to_string_func(status)); + error_status = pv_get_error_stack_func(&message_stack, &message_stack_depth); + if (error_status != PV_STATUS_SUCCESS) { + fprintf( + stderr, + ".\nUnable to get Cheetah error state with '%s'.\n", + pv_status_to_string_func(error_status)); + exit(1); + } + + if (message_stack_depth > 0) { + fprintf(stderr, ":\n"); + print_error_message(message_stack, message_stack_depth); + } else { + fprintf(stderr, ".\n"); + } + + pv_free_error_stack_func(message_stack); exit(1); } fprintf(stdout, "%s", partial_transcript); fflush(stdout); - pv_free_func(partial_transcript); + pv_cheetah_transcript_delete_func(partial_transcript); if (is_endpoint) { char *final_transcript = NULL; status = pv_cheetah_flush_func(cheetah, &final_transcript); if (status != PV_STATUS_SUCCESS) { - fprintf(stderr, "`pv_cheetah_flush` failed with `%s`\n", pv_status_to_string_func(status)); + fprintf( + stderr, + "Failed to flush with `%s`", + pv_status_to_string_func(status)); + error_status = pv_get_error_stack_func(&message_stack, &message_stack_depth); + if (error_status != PV_STATUS_SUCCESS) { + fprintf( + stderr, + ".\nUnable to get Cheetah error state with '%s'.\n", + pv_status_to_string_func(error_status)); + exit(1); + } + + if (message_stack_depth > 0) { + fprintf(stderr, ":\n"); + print_error_message(message_stack, message_stack_depth); + } else { + fprintf(stderr, ".\n"); + } + + pv_free_error_stack_func(message_stack); exit(1); } fprintf(stdout, "%s\n", final_transcript); - pv_free_func(final_transcript); + pv_cheetah_transcript_delete_func(final_transcript); } } fprintf(stdout, "\n"); recorder_status = pv_recorder_stop(recorder); if (recorder_status != PV_RECORDER_STATUS_SUCCESS) { - fprintf(stderr, "failed to stop device with `%s`.\n", pv_recorder_status_to_string(recorder_status)); + fprintf(stderr, "Failed to stop device with `%s`.\n", pv_recorder_status_to_string(recorder_status)); exit(1); } diff --git a/demo/dotnet/CheetahDemo/CheetahDemo.csproj b/demo/dotnet/CheetahDemo/CheetahDemo.csproj index 31a01d5e..57ec20dd 100644 --- a/demo/dotnet/CheetahDemo/CheetahDemo.csproj +++ b/demo/dotnet/CheetahDemo/CheetahDemo.csproj @@ -19,7 +19,7 @@ - + diff --git a/demo/flutter/android/app/build.gradle b/demo/flutter/android/app/build.gradle index 7aaa4411..bf4baa26 100644 --- a/demo/flutter/android/app/build.gradle +++ b/demo/flutter/android/app/build.gradle @@ -25,7 +25,7 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 31 + compileSdkVersion 33 lintOptions { disable 'InvalidPackage' @@ -35,7 +35,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "ai.picovoice.flutter.cheetahdemo" minSdkVersion 21 - targetSdkVersion 31 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/demo/flutter/ios/Podfile b/demo/flutter/ios/Podfile index 313ea4a1..8324249c 100644 --- a/demo/flutter/ios/Podfile +++ b/demo/flutter/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '11.0' +platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -28,6 +28,7 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe flutter_ios_podfile_setup target 'Runner' do + pod 'Cheetah-iOS', '~> 2.0.0' use_frameworks! use_modular_headers! diff --git a/demo/flutter/ios/Podfile.lock b/demo/flutter/ios/Podfile.lock index edc294e0..3cf87094 100644 --- a/demo/flutter/ios/Podfile.lock +++ b/demo/flutter/ios/Podfile.lock @@ -1,7 +1,7 @@ PODS: - - Cheetah-iOS (1.1.0) - - cheetah_flutter (1.1.1): - - Cheetah-iOS (~> 1.1.0) + - Cheetah-iOS (2.0.0) + - cheetah_flutter (2.0.0): + - Cheetah-iOS (~> 2.0.0) - Flutter - Flutter (1.0.0) - flutter_voice_processor (1.1.0): @@ -14,6 +14,7 @@ PODS: - Flutter DEPENDENCIES: + - Cheetah-iOS (~> 2.0.0) - cheetah_flutter (from `.symlinks/plugins/cheetah_flutter/ios`) - Flutter (from `Flutter`) - flutter_voice_processor (from `.symlinks/plugins/flutter_voice_processor/ios`) @@ -38,14 +39,14 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/path_provider_ios/ios" SPEC CHECKSUMS: - Cheetah-iOS: 6fb7be693878f5b1dec0ea5b6534fbba30954afc - cheetah_flutter: 1733299241a5babdc9ed3d0f3fdd4c14991e30cf - Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a + Cheetah-iOS: d98a5edcbf3b74dda6027aeac6a8c0f5997a47a2 + cheetah_flutter: 3f7be021953be4901655a0f4d9741bf8ac5f3413 + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_voice_processor: 53afbf59ad3feb82f4a379fea9ed8dc98495210f - integration_test: a1e7d09bd98eca2fc37aefd79d4f41ad37bdbbe5 + integration_test: 13825b8a9334a850581300559b8839134b124670 ios-voice-processor: 8e32d7f980a06d392d128ef1cd19cf6ddcaca3c1 path_provider_ios: 7d7ce634493af4477d156294792024ec3485acd5 -PODFILE CHECKSUM: 7368163408c647b7eb699d0d788ba6718e18fb8d +PODFILE CHECKSUM: fa538244b9317538f8f97c51ffbb5162f461f06e COCOAPODS: 1.11.3 diff --git a/demo/flutter/ios/Runner.xcodeproj/project.pbxproj b/demo/flutter/ios/Runner.xcodeproj/project.pbxproj index c9ca4ee8..c39069fa 100644 --- a/demo/flutter/ios/Runner.xcodeproj/project.pbxproj +++ b/demo/flutter/ios/Runner.xcodeproj/project.pbxproj @@ -339,7 +339,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; STRIP_STYLE = "non-global"; @@ -429,7 +429,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -479,7 +479,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; STRIP_STYLE = "non-global"; diff --git a/demo/flutter/lib/main.dart b/demo/flutter/lib/main.dart index 4c6b25bd..2b49b2a3 100644 --- a/demo/flutter/lib/main.dart +++ b/demo/flutter/lib/main.dart @@ -61,9 +61,6 @@ class _MyAppState extends State { try { _cheetahManager = await CheetahManager.create( accessKey, modelPath, transcriptCallback, errorCallback); - } on CheetahInvalidArgumentException catch (ex) { - errorCallback(CheetahInvalidArgumentException( - "${ex.message}\nEnsure your accessKey '$accessKey' is a valid access key.")); } on CheetahActivationException { errorCallback(CheetahActivationException("AccessKey activation error.")); } on CheetahActivationLimitException { diff --git a/demo/flutter/pubspec.lock b/demo/flutter/pubspec.lock index 3fe8db24..13361a81 100644 --- a/demo/flutter/pubspec.lock +++ b/demo/flutter/pubspec.lock @@ -1,90 +1,78 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.11" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.0" cheetah_flutter: dependency: "direct main" description: name: cheetah_flutter - url: "https://pub.dartlang.org" + sha256: c1283f35cc175f589b5e77dec23e8f6f85477e26bf7b194b7d468387a20ddb3f + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "2.0.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - crypto: - dependency: transitive - description: - name: crypto - url: "https://pub.dartlang.org" + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "1.17.1" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.1" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: "35d0f481d939de0d640b3db9a7aa36a52cd22054a798a73b4f50bdad5ce12678" + url: "https://pub.dev" source: hosted version: "1.1.2" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.1.4" flutter: dependency: "direct main" description: flutter @@ -104,7 +92,8 @@ packages: dependency: "direct main" description: name: flutter_voice_processor - url: "https://pub.dartlang.org" + sha256: fb511a2f0ca9540c4b7c6715515389d27b5bbd332138ab3a300078fb243a0caf + url: "https://pub.dev" source: hosted version: "1.1.0" fuchsia_remote_debug_protocol: @@ -117,109 +106,132 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" lints: dependency: "direct dev" description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.9.1" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.8.3" path_provider: dependency: transitive description: name: path_provider - url: "https://pub.dartlang.org" + sha256: e92dee4d38a9044605cb3fb253e9b46eb9375dfcad4515d0379b44ac90797568 + url: "https://pub.dev" source: hosted version: "2.0.9" path_provider_android: dependency: transitive description: name: path_provider_android - url: "https://pub.dartlang.org" + sha256: c69109bae02c6116bd8ac81319b13eb73dfae02ef74690d2a1a98c1ddd3aaefc + url: "https://pub.dev" source: hosted version: "2.0.11" path_provider_ios: dependency: transitive description: name: path_provider_ios - url: "https://pub.dartlang.org" + sha256: "038d0141ff5d08c60ed071eee2758b68c50c42a1c10066a1fb6c28ab32fac84c" + url: "https://pub.dev" source: hosted version: "2.0.7" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" + sha256: "1e109f4df28bd95eab71e323008b53d19c4d633bc1ab05b577518773474e9621" + url: "https://pub.dev" source: hosted version: "2.1.5" path_provider_macos: dependency: transitive description: name: path_provider_macos - url: "https://pub.dartlang.org" + sha256: "0adeb313e1f2c3fc52baeeee59b0fe9c2d1f7da56fd96a9234e1702ec653a453" + url: "https://pub.dev" source: hosted version: "2.0.5" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: "3dc0d51b07f85fec3746d9f4e8d31c73bb173cafa2e763f03f8df2e8d1878882" + url: "https://pub.dev" source: hosted version: "2.0.3" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: "366ad4e3541ea707f859e7148d4d5aba67d589d7936cee04a05c464a277eeb27" + url: "https://pub.dev" source: hosted version: "2.0.5" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.dev" source: hosted version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "075f927ebbab4262ace8d0b283929ac5410c0ac4e7fc123c76429564facfb757" + url: "https://pub.dev" source: hosted version: "2.1.2" process: dependency: transitive description: name: process - url: "https://pub.dartlang.org" + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" source: hosted version: "4.2.4" sky_engine: @@ -231,93 +243,98 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" sync_http: dependency: transitive description: name: sync_http - url: "https://pub.dartlang.org" + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.3.1" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" source: hosted - version: "0.4.9" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" + version: "0.5.1" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.dartlang.org" + sha256: f6deed8ed625c52864792459709183da231ebf66ff0cf09e69b573227c377efe + url: "https://pub.dev" source: hosted - version: "8.2.2" + version: "11.3.0" webdriver: dependency: transitive description: name: webdriver - url: "https://pub.dartlang.org" + sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" + url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.0.2" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: cde1e6d546d8cfd0b3c72bc6f29d980fa629d1cb107f38e2a039ca5d10d79e41 + url: "https://pub.dev" source: hosted version: "2.4.1" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: "060b6e1c891d956f72b5ac9463466c37cce3fa962a921532fc001e86fe93438e" + url: "https://pub.dev" source: hosted version: "0.2.0+1" sdks: - dart: ">=2.17.0-0 <3.0.0" + dart: ">=3.0.0-0 <4.0.0" flutter: ">=2.8.1" diff --git a/demo/flutter/pubspec.yaml b/demo/flutter/pubspec.yaml index c698f346..b1d27705 100644 --- a/demo/flutter/pubspec.yaml +++ b/demo/flutter/pubspec.yaml @@ -3,7 +3,7 @@ description: Demonstrates how to use the cheetah plugin. publish_to: 'none' -version: 1.0.0 +version: 2.0.0 environment: sdk: ">=2.14.0 <3.0.0" @@ -14,7 +14,7 @@ dependencies: sdk: flutter flutter_voice_processor: ^1.1.0 - cheetah_flutter: ^1.1.1 + cheetah_flutter: ^2.0.0 dev_dependencies: integration_test: diff --git a/demo/go/filedemo/cheetah_file_demo.go b/demo/go/filedemo/cheetah_file_demo.go index 32b5be85..9710804b 100644 --- a/demo/go/filedemo/cheetah_file_demo.go +++ b/demo/go/filedemo/cheetah_file_demo.go @@ -1,4 +1,4 @@ -// Copyright 2022 Picovoice Inc. +// Copyright 2022-2023 Picovoice Inc. // // You may not use this file except in compliance with the license. A copy of the license is // located in the "LICENSE" file accompanying this source. @@ -17,7 +17,7 @@ import ( "os" "path/filepath" - cheetah "github.com/Picovoice/cheetah/binding/go" + cheetah "github.com/Picovoice/cheetah/binding/go/v2" "github.com/go-audio/audio" "github.com/go-audio/wav" ) diff --git a/demo/go/go.mod b/demo/go/go.mod index 79052e67..16a86cba 100644 --- a/demo/go/go.mod +++ b/demo/go/go.mod @@ -3,8 +3,9 @@ module cheetahdemo go 1.16 require ( - github.com/Picovoice/cheetah/binding/go v1.1.3 + github.com/Picovoice/cheetah/binding/go/v2 v2.0.0 github.com/Picovoice/pvrecorder/binding/go v1.2.1 + github.com/agnivade/levenshtein v1.1.1 // indirect github.com/go-audio/audio v1.0.0 github.com/go-audio/wav v1.0.0 ) diff --git a/demo/go/go.sum b/demo/go/go.sum index 648ceb59..571407f5 100644 --- a/demo/go/go.sum +++ b/demo/go/go.sum @@ -1,7 +1,11 @@ -github.com/Picovoice/cheetah/binding/go v1.1.3 h1:YmSguA8aLXbJUN6aWseejXXXg/FsiblIClUpg9Zlqgc= -github.com/Picovoice/cheetah/binding/go v1.1.3/go.mod h1:+7UFRMp3uyXYt/wZ0bFCqifjue7p4O7A0+LP09FWN+o= +github.com/Picovoice/cheetah/binding/go/v2 v2.0.0 h1:BiMaqxjeQetR0cF8rhX+gTq7kMMZroE7aBZVvfpx2Ns= +github.com/Picovoice/cheetah/binding/go/v2 v2.0.0/go.mod h1:BKQPVuV+8xxEBLuCdwTxgj4bVsUTiuQg4YJ7oJt9uh4= github.com/Picovoice/pvrecorder/binding/go v1.2.1 h1:p99fkYMFbTS4g4WwbhSPkT9PHvlEoVYGaNoqxCITiEo= github.com/Picovoice/pvrecorder/binding/go v1.2.1/go.mod h1:gQdvBAjoKmRxMFh8W9cVKWcqHsWvu+d13sCPVFm7dhg= +github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= +github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= +github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/go-audio/audio v1.0.0 h1:zS9vebldgbQqktK4H0lUqWrG8P0NxCJVqcj7ZpNnwd4= github.com/go-audio/audio v1.0.0/go.mod h1:6uAu0+H2lHkwdGsAY+j2wHPNPpPoeg5AaEFh9FlA+Zs= github.com/go-audio/riff v1.0.0 h1:d8iCGbDvox9BfLagY94fBynxSPHO80LmZCaOsmKxokA= diff --git a/demo/go/micdemo/cheetah_mic_demo.go b/demo/go/micdemo/cheetah_mic_demo.go index 9161ac93..450c8995 100644 --- a/demo/go/micdemo/cheetah_mic_demo.go +++ b/demo/go/micdemo/cheetah_mic_demo.go @@ -18,7 +18,7 @@ import ( "os/signal" "path/filepath" - cheetah "github.com/Picovoice/cheetah/binding/go" + cheetah "github.com/Picovoice/cheetah/binding/go/v2" pvrecorder "github.com/Picovoice/pvrecorder/binding/go" "github.com/go-audio/wav" ) @@ -67,7 +67,6 @@ func main() { if err != nil { log.Fatal(err) } - defer func() { err := c.Delete() diff --git a/demo/ios/CheetahDemo/CheetahDemo/ViewModel.swift b/demo/ios/CheetahDemo/CheetahDemo/ViewModel.swift index 834a0784..85628e22 100644 --- a/demo/ios/CheetahDemo/CheetahDemo/ViewModel.swift +++ b/demo/ios/CheetahDemo/CheetahDemo/ViewModel.swift @@ -51,7 +51,7 @@ class ViewModel: ObservableObject { state = UIState.READY } catch let error as CheetahInvalidArgumentError { - errorMessage = "\(error.localizedDescription)\nEnsure your AccessKey '\(ACCESS_KEY)' is valid." + errorMessage = "\(error.localizedDescription)" } catch is CheetahActivationError { errorMessage = "ACCESS_KEY activation error" } catch is CheetahActivationRefusedError { diff --git a/demo/ios/CheetahDemo/Podfile b/demo/ios/CheetahDemo/Podfile index 07469de2..89c96448 100644 --- a/demo/ios/CheetahDemo/Podfile +++ b/demo/ios/CheetahDemo/Podfile @@ -1,7 +1,7 @@ source 'https://cdn.cocoapods.org/' -platform :ios, '11.0' +platform :ios, '13.0' target 'CheetahDemo' do - pod 'Cheetah-iOS', '~> 1.1.0' + pod 'Cheetah-iOS', '~> 2.0.0' pod 'ios-voice-processor', '~> 1.1.0' end diff --git a/demo/ios/CheetahDemo/Podfile.lock b/demo/ios/CheetahDemo/Podfile.lock index 56786c9e..5650d028 100644 --- a/demo/ios/CheetahDemo/Podfile.lock +++ b/demo/ios/CheetahDemo/Podfile.lock @@ -1,9 +1,9 @@ PODS: - - Cheetah-iOS (1.1.0) + - Cheetah-iOS (2.0.0) - ios-voice-processor (1.1.0) DEPENDENCIES: - - Cheetah-iOS (~> 1.1.0) + - Cheetah-iOS (~> 2.0.0) - ios-voice-processor (~> 1.1.0) SPEC REPOS: @@ -12,9 +12,9 @@ SPEC REPOS: - ios-voice-processor SPEC CHECKSUMS: - Cheetah-iOS: 6fb7be693878f5b1dec0ea5b6534fbba30954afc + Cheetah-iOS: d98a5edcbf3b74dda6027aeac6a8c0f5997a47a2 ios-voice-processor: 8e32d7f980a06d392d128ef1cd19cf6ddcaca3c1 -PODFILE CHECKSUM: 9b9aa7cee64517773071f86ed45a3b16f8ffddad +PODFILE CHECKSUM: 26feb763b95a821d785ddd8a03bd5182cd65fdd2 COCOAPODS: 1.11.3 diff --git a/demo/java/build.gradle b/demo/java/build.gradle index 3e19bfff..eabcaa8e 100644 --- a/demo/java/build.gradle +++ b/demo/java/build.gradle @@ -15,14 +15,14 @@ sourceSets { } dependencies { - implementation 'ai.picovoice:cheetah-java:1.1.1' + implementation 'ai.picovoice:cheetah-java:2.0.0' implementation 'commons-cli:commons-cli:1.4' } jar { manifest { attributes "Main-Class": "ai.picovoice.cheetahdemo.MicDemo", - "Class-Path": "cheetah-1.1.1.jar;commons-cli-1.4.jar" + "Class-Path": "cheetah-2.0.0.jar;commons-cli-1.4.jar" } from sourceSets.main.output exclude "**/FileDemo.class" @@ -33,7 +33,7 @@ jar { task fileDemoJar(type: Jar) { manifest { attributes "Main-Class": "ai.picovoice.cheetahdemo.FileDemo", - "Class-Path": "cheetah-1.1.1.jar;commons-cli-1.4.jar" + "Class-Path": "cheetah-2.0.0.jar;commons-cli-1.4.jar" } from sourceSets.main.output exclude "**/MicDemo.class" diff --git a/demo/java/gradle/wrapper/gradle-wrapper.properties b/demo/java/gradle/wrapper/gradle-wrapper.properties index d2880ba8..774fae87 100644 --- a/demo/java/gradle/wrapper/gradle-wrapper.properties +++ b/demo/java/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/demo/nodejs/package.json b/demo/nodejs/package.json index 733f6b73..d3eacb41 100644 --- a/demo/nodejs/package.json +++ b/demo/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@picovoice/cheetah-node-demo", - "version": "1.1.4", + "version": "2.0.0", "description": "Picovoice Cheetah Node.js file-based and microphone demos", "scripts": { "file": "node file.js", @@ -16,7 +16,7 @@ "author": "Picovoice Inc.", "license": "Apache-2.0", "dependencies": { - "@picovoice/cheetah-node": "^1.1.1", + "@picovoice/cheetah-node": "=2.0.0", "@picovoice/pvrecorder-node": "^1.2.1", "commander": "^6.1.0", "readline": "^1.3.0", @@ -30,7 +30,7 @@ "directory": "demo/nodejs" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" }, "cpu": [ "!ia32", diff --git a/demo/nodejs/yarn.lock b/demo/nodejs/yarn.lock index 24370679..e727b7c0 100644 --- a/demo/nodejs/yarn.lock +++ b/demo/nodejs/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@picovoice/cheetah-node@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@picovoice/cheetah-node/-/cheetah-node-1.1.1.tgz#56068802b287d0f2590699bf8b85f05a283f0dd9" - integrity sha512-EnbbOjDBerscyOzqYTXOf8LqY9NsO7Ro5xn5C1z51puQW3voNhtoZeV86ObgDXGki+cpjGw/BwFxYsUN7lVY4w== +"@picovoice/cheetah-node@=2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@picovoice/cheetah-node/-/cheetah-node-2.0.0.tgz#147b22f60f9c3f9c33d8703d07324be479be01d4" + integrity sha512-UrodmClxc2ImMjG3nBrZ/tHEt2hBDRbZQeYfGAWQVIKNRQkk0zqFMlJe/Fu5Wrpu/yc1T6PaCuesftBGl10Zfg== "@picovoice/pvrecorder-node@^1.2.1": version "1.2.1" diff --git a/demo/python/requirements.txt b/demo/python/requirements.txt index 5c874acf..280aec39 100644 --- a/demo/python/requirements.txt +++ b/demo/python/requirements.txt @@ -1,2 +1,2 @@ -pvcheetah==1.1.3 +pvcheetah==2.0.0 pvrecorder==1.2.1 diff --git a/demo/python/setup.py b/demo/python/setup.py index ed130af0..aa5c1f68 100644 --- a/demo/python/setup.py +++ b/demo/python/setup.py @@ -28,7 +28,7 @@ setuptools.setup( name="pvcheetahdemo", - version="1.1.6", + version="2.0.0", author="Picovoice", author_email="hello@picovoice.ai", description="Cheetah speech-to-text engine demos", @@ -36,7 +36,7 @@ long_description_content_type="text/markdown", url="https://github.com/Picovoice/cheetah", packages=["pvcheetahdemo"], - install_requires=["pvcheetah==1.1.3", "pvrecorder==1.2.1"], + install_requires=["pvcheetah==2.0.0", "pvrecorder==1.2.1"], include_package_data=True, classifiers=[ "Development Status :: 5 - Production/Stable", diff --git a/demo/react-native/App.tsx b/demo/react-native/App.tsx index f93c0a84..b9408e94 100644 --- a/demo/react-native/App.tsx +++ b/demo/react-native/App.tsx @@ -125,7 +125,7 @@ export default class App extends Component { handleError(err: any) { let errorMessage: string; if (err instanceof CheetahErrors.CheetahInvalidArgumentError) { - errorMessage = `${err.message}\nPlease make sure accessKey ${this._accessKey} is a valid access key.`; + errorMessage = `${err.message}`; } else if (err instanceof CheetahErrors.CheetahActivationError) { errorMessage = 'AccessKey activation error'; } else if (err instanceof CheetahErrors.CheetahActivationLimitError) { diff --git a/demo/react-native/android/gradle/wrapper/gradle-wrapper.properties b/demo/react-native/android/gradle/wrapper/gradle-wrapper.properties index 991f0739..d42b2de8 100644 --- a/demo/react-native/android/gradle/wrapper/gradle-wrapper.properties +++ b/demo/react-native/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Nov 02 11:32:43 PDT 2021 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/demo/react-native/ios/CheetahDemo.xcodeproj/project.pbxproj b/demo/react-native/ios/CheetahDemo.xcodeproj/project.pbxproj index 7955d3bc..d3808ef8 100644 --- a/demo/react-native/ios/CheetahDemo.xcodeproj/project.pbxproj +++ b/demo/react-native/ios/CheetahDemo.xcodeproj/project.pbxproj @@ -295,7 +295,7 @@ DEVELOPMENT_TEAM = 65723695GD; ENABLE_BITCODE = NO; INFOPLIST_FILE = CheetahDemo/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( "$(inherited)", @@ -320,7 +320,7 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 65723695GD; INFOPLIST_FILE = CheetahDemo/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( "$(inherited)", @@ -382,7 +382,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; LIBRARY_SEARCH_PATHS = ( "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", @@ -434,7 +434,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; LIBRARY_SEARCH_PATHS = ( "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", diff --git a/demo/react-native/ios/Podfile b/demo/react-native/ios/Podfile index e5a81214..fd1c675e 100644 --- a/demo/react-native/ios/Podfile +++ b/demo/react-native/ios/Podfile @@ -1,9 +1,10 @@ require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' -platform :ios, '11.0' +platform :ios, '13.0' target 'CheetahDemo' do config = use_native_modules! + pod 'Cheetah-iOS', '~> 2.0.0' use_react_native!(:path => config["reactNativePath"]) end diff --git a/demo/react-native/ios/Podfile.lock b/demo/react-native/ios/Podfile.lock index 8b16da5d..2b8b1bf8 100644 --- a/demo/react-native/ios/Podfile.lock +++ b/demo/react-native/ios/Podfile.lock @@ -1,8 +1,8 @@ PODS: - boost (1.76.0) - - Cheetah-iOS (1.1.0) - - cheetah-react-native (1.1.1): - - Cheetah-iOS (~> 1.1.0) + - Cheetah-iOS (2.0.0) + - cheetah-react-native (2.0.0): + - Cheetah-iOS (~> 2.0.0) - React - DoubleConversion (1.1.6) - FBLazyVector (0.68.7) @@ -299,6 +299,7 @@ PODS: DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) + - Cheetah-iOS (~> 2.0.0) - "cheetah-react-native (from `../node_modules/@picovoice/cheetah-react-native`)" - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) @@ -416,8 +417,8 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: a7c83b31436843459a1961bfd74b96033dc77234 - Cheetah-iOS: 6fb7be693878f5b1dec0ea5b6534fbba30954afc - cheetah-react-native: a7b750ffeff3fbcab49335a5f0d84f06cbce4815 + Cheetah-iOS: d98a5edcbf3b74dda6027aeac6a8c0f5997a47a2 + cheetah-react-native: 58a4b8cc29e1aeb342952a32590fc28839e59bba DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 FBLazyVector: 63b89dc85804d5817261f56dc4cfb43a9b6d57f5 FBReactNativeSpec: 1fa200a9862d9369a53b6fddbbfcdc22bab24062 @@ -454,6 +455,6 @@ SPEC CHECKSUMS: RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 Yoga: 0bc4b37c3b8a345336ff601e2cf7d9704bab7e93 -PODFILE CHECKSUM: eecdda7e5ef8e4b3162634729aaad4fa0babb35b +PODFILE CHECKSUM: ee702823999352222dce8488a268138e2c400719 -COCOAPODS: 1.12.1 +COCOAPODS: 1.11.3 diff --git a/demo/react-native/package.json b/demo/react-native/package.json index 632c4733..edfa3ec0 100644 --- a/demo/react-native/package.json +++ b/demo/react-native/package.json @@ -1,6 +1,6 @@ { "name": "cheetah-react-native-demo", - "version": "1.0.0", + "version": "2.0.0", "private": true, "scripts": { "start": "react-native start", @@ -16,7 +16,7 @@ "postinstall": "node copy.js" }, "dependencies": { - "@picovoice/cheetah-react-native": "^1.1.1", + "@picovoice/cheetah-react-native": "~2.0.0", "@picovoice/react-native-voice-processor": "^1.2.0", "@react-native-picker/picker": "^1.9.2", "react": "^17.0.2", diff --git a/demo/react-native/yarn.lock b/demo/react-native/yarn.lock index a7623431..f0cd2eec 100644 --- a/demo/react-native/yarn.lock +++ b/demo/react-native/yarn.lock @@ -1090,10 +1090,10 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@picovoice/cheetah-react-native@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@picovoice/cheetah-react-native/-/cheetah-react-native-1.1.1.tgz#1cc7957fea53c63e0c7c7de87373d197c3471080" - integrity sha512-cB8rsZKJY1F61gcPaaYJIEZ9hHTRWYgiKyK1Laa9e4d212O5Rnu2ggLVp//dOs8EY7YK6cQ1puJ8h+wTvqgx9Q== +"@picovoice/cheetah-react-native@~2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@picovoice/cheetah-react-native/-/cheetah-react-native-2.0.0.tgz#5884d8c3b5d7b2ddc0bbc305e0e14dacb88f4192" + integrity sha512-hHdT/0i2DbfMOj95NPQmSRK0Y3r4Vby7mYQgZ1AslK6S5+5I1g3jck/Q38l8SVOyPhrBLGzZlywaNyClBQo3zg== "@picovoice/react-native-voice-processor@^1.2.0": version "1.2.0" diff --git a/demo/react/package.json b/demo/react/package.json index 161be518..6f0ddd24 100644 --- a/demo/react/package.json +++ b/demo/react/package.json @@ -1,10 +1,10 @@ { "name": "cheetah-react-demo", - "version": "1.1.0", + "version": "2.0.0", "private": true, "description": "Cheetah React demo (made with Create React App)", "dependencies": { - "@picovoice/cheetah-react": "~1.1.0", + "@picovoice/cheetah-react": "~2.0.0", "@picovoice/web-voice-processor": "~4.0.8", "@types/node": "^18.11.9", "@types/react": "^18.0.17", diff --git a/demo/react/yarn.lock b/demo/react/yarn.lock index 54258930..90353a26 100644 --- a/demo/react/yarn.lock +++ b/demo/react/yarn.lock @@ -1608,17 +1608,17 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@picovoice/cheetah-react@~1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@picovoice/cheetah-react/-/cheetah-react-1.1.0.tgz#6be98cb02735c9ab2bd203739c50495f59bf0fd7" - integrity sha512-v1QmQ6th+p7y6DtHGeR3u5AOel9yH6Svsab/zdSfymRNZfDk+H+GrczMRkL17D7pknm7KnB0xrFXu0Df/NX/UA== +"@picovoice/cheetah-react@~2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@picovoice/cheetah-react/-/cheetah-react-2.0.0.tgz#00bdd9377f2d141d07e6a08a9d57183cda7c9090" + integrity sha512-t6x3RVzmeUpm4+r/0+b6VMJhmzSVuoyXgvquU/K4HpM0gsJIfIruZOzTOEDsnVae/rmw61v98spxT9NjorZZ8g== dependencies: - "@picovoice/cheetah-web" "=1.1.15" + "@picovoice/cheetah-web" "=2.0.0" -"@picovoice/cheetah-web@=1.1.15": - version "1.1.15" - resolved "https://registry.yarnpkg.com/@picovoice/cheetah-web/-/cheetah-web-1.1.15.tgz#9545212be4d59dec6fbbcbaba9f9800b741c8732" - integrity sha512-UMKOPqZopcMX3fLQaD3eDRAcUph/6CuirNxQ1SUlNXSxlWO9pdsfdpikaoZ8gx59vbw6l/c8bSB3OicV9Gl2Sw== +"@picovoice/cheetah-web@=2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@picovoice/cheetah-web/-/cheetah-web-2.0.0.tgz#d4415c25e324726356f979bed3761a94e884198e" + integrity sha512-WqxHUznNS7Rf8XfJCp0m0l+xeYFDSFhzOTg+b2DJn06x1slhpJA4CiK4egiH7FzhHiJtvqjLF0dO14LA8e1Gpg== dependencies: "@picovoice/web-utils" "=1.3.1" diff --git a/demo/rust/filedemo/Cargo.lock b/demo/rust/filedemo/Cargo.lock index b56690a2..311e4c32 100644 --- a/demo/rust/filedemo/Cargo.lock +++ b/demo/rust/filedemo/Cargo.lock @@ -125,9 +125,9 @@ checksum = "648001efe5d5c0102d8cea768e348da85d90af8ba91f0bea908f157951493cd4" [[package]] name = "pv_cheetah" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2924b4d578bab4f12bc6137e353f39514b382e4c5fdc8511e570d1fbd582eab5" +checksum = "8dbc9bf92574ffb65e919487c09bbd916f7d31a2db0fe67d63fff0c4e8af483d" dependencies = [ "libc", "libloading", @@ -135,7 +135,7 @@ dependencies = [ [[package]] name = "pv_cheetah_filedemo" -version = "1.1.0" +version = "2.0.0" dependencies = [ "clap", "hound", diff --git a/demo/rust/filedemo/Cargo.toml b/demo/rust/filedemo/Cargo.toml index d76cd4a5..1f983990 100644 --- a/demo/rust/filedemo/Cargo.toml +++ b/demo/rust/filedemo/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "pv_cheetah_filedemo" -version = "1.1.0" +version = "2.0.0" edition = "2018" [dependencies] clap = "3.2.16" hound = "3.4.0" itertools = "0.10.3" -pv_cheetah = "=1.1.0" +pv_cheetah = "=2.0.0" diff --git a/demo/rust/micdemo/Cargo.lock b/demo/rust/micdemo/Cargo.lock index f99b2d03..e143616d 100644 --- a/demo/rust/micdemo/Cargo.lock +++ b/demo/rust/micdemo/Cargo.lock @@ -267,9 +267,9 @@ dependencies = [ [[package]] name = "pv_cheetah" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2924b4d578bab4f12bc6137e353f39514b382e4c5fdc8511e570d1fbd582eab5" +checksum = "8dbc9bf92574ffb65e919487c09bbd916f7d31a2db0fe67d63fff0c4e8af483d" dependencies = [ "libc", "libloading 0.7.4", @@ -277,7 +277,7 @@ dependencies = [ [[package]] name = "pv_cheetah_micdemo" -version = "1.1.0" +version = "2.0.0" dependencies = [ "chrono", "clap", diff --git a/demo/rust/micdemo/Cargo.toml b/demo/rust/micdemo/Cargo.toml index b87a55d4..9c397081 100644 --- a/demo/rust/micdemo/Cargo.toml +++ b/demo/rust/micdemo/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pv_cheetah_micdemo" -version = "1.1.0" +version = "2.0.0" edition = "2018" [dependencies] @@ -9,5 +9,5 @@ clap = "3.2.16" ctrlc = "3.2.2" hound = "3.4.0" itertools = "0.10.3" -pv_cheetah = "=1.1.0" +pv_cheetah = "=2.0.0" pv_recorder = "=1.2.1" diff --git a/demo/web/index.html b/demo/web/index.html index c1a3b570..66800d85 100644 --- a/demo/web/index.html +++ b/demo/web/index.html @@ -78,7 +78,7 @@

Cheetah Web Demo

onclick="startCheetah(document.getElementById('accessKey').value)" />
-
+

diff --git a/demo/web/package.json b/demo/web/package.json index 787094c2..115944a0 100644 --- a/demo/web/package.json +++ b/demo/web/package.json @@ -1,6 +1,6 @@ { "name": "cheetah-web-demo", - "version": "1.0.0", + "version": "2.0.0", "description": "A basic demo to show how to use Cheetah for web browsers, using the IIFE version of the library", "main": "index.js", "private": true, @@ -18,7 +18,7 @@ "author": "Picovoice Inc", "license": "Apache-2.0", "dependencies": { - "@picovoice/cheetah-web": "~1.1.15", + "@picovoice/cheetah-web": "~2.0.0", "@picovoice/web-voice-processor": "~4.0.8" }, "devDependencies": { diff --git a/demo/web/yarn.lock b/demo/web/yarn.lock index 7fea8a3e..4c0de79c 100644 --- a/demo/web/yarn.lock +++ b/demo/web/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@picovoice/cheetah-web@~1.1.15": - version "1.1.15" - resolved "https://registry.yarnpkg.com/@picovoice/cheetah-web/-/cheetah-web-1.1.15.tgz#9545212be4d59dec6fbbcbaba9f9800b741c8732" - integrity sha512-UMKOPqZopcMX3fLQaD3eDRAcUph/6CuirNxQ1SUlNXSxlWO9pdsfdpikaoZ8gx59vbw6l/c8bSB3OicV9Gl2Sw== +"@picovoice/cheetah-web@~2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@picovoice/cheetah-web/-/cheetah-web-2.0.0.tgz#d4415c25e324726356f979bed3761a94e884198e" + integrity sha512-WqxHUznNS7Rf8XfJCp0m0l+xeYFDSFhzOTg+b2DJn06x1slhpJA4CiK4egiH7FzhHiJtvqjLF0dO14LA8e1Gpg== dependencies: "@picovoice/web-utils" "=1.3.1" diff --git a/include/pv_cheetah.h b/include/pv_cheetah.h index 9733de9e..c6d1fdd6 100644 --- a/include/pv_cheetah.h +++ b/include/pv_cheetah.h @@ -90,6 +90,13 @@ PV_API pv_status_t pv_cheetah_process(pv_cheetah_t *object, const int16_t *pcm, */ PV_API pv_status_t pv_cheetah_flush(pv_cheetah_t *object, char **transcript); +/** + * Deletes transcript returned from `pv_cheetah_process()` or `pv_cheetah_flush()` + * + * @param transcript transcription string returned from `pv_cheetah_process()` or `pv_cheetah_flush()` + */ +PV_API void pv_cheetah_transcript_delete(char *transcript); + /** * Getter for version. * diff --git a/lib/android/arm64-v8a/libpv_cheetah.so b/lib/android/arm64-v8a/libpv_cheetah.so index ce2ee12a..ff82b7f3 100755 Binary files a/lib/android/arm64-v8a/libpv_cheetah.so and b/lib/android/arm64-v8a/libpv_cheetah.so differ diff --git a/lib/android/armeabi-v7a/libpv_cheetah.so b/lib/android/armeabi-v7a/libpv_cheetah.so index f88b3731..5feb410c 100755 Binary files a/lib/android/armeabi-v7a/libpv_cheetah.so and b/lib/android/armeabi-v7a/libpv_cheetah.so differ diff --git a/lib/android/x86/libpv_cheetah.so b/lib/android/x86/libpv_cheetah.so index 82c4c4e6..da774bd0 100755 Binary files a/lib/android/x86/libpv_cheetah.so and b/lib/android/x86/libpv_cheetah.so differ diff --git a/lib/android/x86_64/libpv_cheetah.so b/lib/android/x86_64/libpv_cheetah.so index bcae6621..68366c0c 100755 Binary files a/lib/android/x86_64/libpv_cheetah.so and b/lib/android/x86_64/libpv_cheetah.so differ diff --git a/lib/common/cheetah_params.pv b/lib/common/cheetah_params.pv index f2cbfd85..15e2bd90 100644 Binary files a/lib/common/cheetah_params.pv and b/lib/common/cheetah_params.pv differ diff --git a/lib/ios/PvCheetah.xcframework/Info.plist b/lib/ios/PvCheetah.xcframework/Info.plist index 64b4293b..f6dea71b 100644 --- a/lib/ios/PvCheetah.xcframework/Info.plist +++ b/lib/ios/PvCheetah.xcframework/Info.plist @@ -6,26 +6,24 @@ LibraryIdentifier - ios-arm64_armv7 + ios-arm64 LibraryPath PvCheetah.framework SupportedArchitectures arm64 - armv7 SupportedPlatform ios LibraryIdentifier - ios-arm64_i386_x86_64-simulator + ios-arm64_x86_64-simulator LibraryPath PvCheetah.framework SupportedArchitectures arm64 - i386 x86_64 SupportedPlatform diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Headers/PvCheetah.h b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Headers/PvCheetah.h similarity index 100% rename from lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Headers/PvCheetah.h rename to lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Headers/PvCheetah.h diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Headers/picovoice.h b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Headers/picovoice.h similarity index 51% rename from lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Headers/picovoice.h rename to lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Headers/picovoice.h index 485e23c0..3f13d705 100644 --- a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Headers/picovoice.h +++ b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Headers/picovoice.h @@ -1,5 +1,5 @@ /* - Copyright 2018-2021 Picovoice Inc. + Copyright 2018-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -31,17 +31,7 @@ PV_API int32_t pv_sample_rate(void); * Status codes. */ typedef enum { - -#ifdef __PV_PLATFORM_WASM__ - - PV_STATUS_SUCCESS = 10000, - -#else - PV_STATUS_SUCCESS = 0, - -#endif - PV_STATUS_OUT_OF_MEMORY, PV_STATUS_IO_ERROR, PV_STATUS_INVALID_ARGUMENT, @@ -63,6 +53,32 @@ typedef enum { */ PV_API const char *pv_status_to_string(pv_status_t status); +/** + * If a function returns a failure (any pv_status_t other than PV_STATUS_SUCCESS), this function can be called + * to get a series of error messages related to the failure. This function can only be called only once per + * failure status on another function. The memory for `message_stack` must be freed using `pv_free_error_stack`. + * + * Regardless of the return status of this function, if `message_stack` is not `NULL`, then `message_stack` + * contains valid memory. However, a failure status on this function indicates that future error messages + * may not be reported. + * + * @param[out] message_stack Array of messages relating to the failure. Messages are NULL terminated strings. + * The array and messages must be freed using `pv_free_error_stack`. + * @param[out] message_stack_depth The number of messages in the `message_stack` array. + */ +PV_API pv_status_t pv_get_error_stack( + char ***message_stack, + int32_t *message_stack_depth); + +/** + * This function frees the memory used by error messages allocated by `pv_get_error_stack`. + * + * @param message_stack Array of messages relating to the failure, allocated from `pv_get_error_stack`. + */ +PV_API void pv_free_error_stack(char **message_stack); + +PV_API void pv_set_sdk(const char *sdk); + #ifdef __cplusplus } diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Headers/pv_cheetah.h b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Headers/pv_cheetah.h similarity index 94% rename from lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Headers/pv_cheetah.h rename to lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Headers/pv_cheetah.h index 9733de9e..18884951 100644 --- a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Headers/pv_cheetah.h +++ b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Headers/pv_cheetah.h @@ -74,7 +74,7 @@ PV_API void pv_cheetah_delete(pv_cheetah_t *object); * `NULL`. * @return Status code. Returns `PV_STATUS_INVALID_ARGUMENT` or `PV_STATUS_OUT_OF_MEMORY`, * `PV_STATUS_RUNTIME_ERROR`, `PV_STATUS_ACTIVATION_ERROR`, `PV_STATUS_ACTIVATION_LIMIT_REACHED`, - * `PV_STATUS_ACTIVATION_THROTTLED`, or `PV_STATUS_ACTIVATION_REFUSED` on failure + * `PV_STATUS_ACTIVATION_THROTTLED`, or `PV_STATUS_ACTIVATION_REFUSED` on failure. */ PV_API pv_status_t pv_cheetah_process(pv_cheetah_t *object, const int16_t *pcm, char **transcript, bool *is_endpoint); @@ -86,10 +86,17 @@ PV_API pv_status_t pv_cheetah_process(pv_cheetah_t *object, const int16_t *pcm, * @param[out] transcript Any remaining transcribed text. If none is available then an empty string is returned. * @return Status code. Returns `PV_STATUS_INVALID_ARGUMENT` or `PV_STATUS_OUT_OF_MEMORY`, * `PV_STATUS_RUNTIME_ERROR`, `PV_STATUS_ACTIVATION_ERROR`, `PV_STATUS_ACTIVATION_LIMIT_REACHED`, - * `PV_STATUS_ACTIVATION_THROTTLED`, or `PV_STATUS_ACTIVATION_REFUSED` on failure + * `PV_STATUS_ACTIVATION_THROTTLED`, or `PV_STATUS_ACTIVATION_REFUSED` on failure. */ PV_API pv_status_t pv_cheetah_flush(pv_cheetah_t *object, char **transcript); +/** + * Deletes transcript returned from `pv_cheetah_process()` or `pv_cheetah_flush()` + * + * @param transcript transcription string returned from `pv_cheetah_process()` or `pv_cheetah_flush()` + */ +PV_API void pv_cheetah_transcript_delete(char *transcript); + /** * Getter for version. * diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Info.plist b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Info.plist new file mode 100644 index 00000000..e36d2e10 Binary files /dev/null and b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Info.plist differ diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Modules/module.modulemap b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Modules/module.modulemap similarity index 100% rename from lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Modules/module.modulemap rename to lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/Modules/module.modulemap diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/PvCheetah b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/PvCheetah new file mode 100755 index 00000000..42a13e10 Binary files /dev/null and b/lib/ios/PvCheetah.xcframework/ios-arm64/PvCheetah.framework/PvCheetah differ diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Info.plist b/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Info.plist deleted file mode 100644 index 357e8f16..00000000 Binary files a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Info.plist and /dev/null differ diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/PvCheetah b/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/PvCheetah deleted file mode 100755 index 290d3334..00000000 Binary files a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/PvCheetah and /dev/null differ diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/PvCheetah b/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/PvCheetah deleted file mode 100755 index 4da107e5..00000000 Binary files a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/PvCheetah and /dev/null differ diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Headers/PvCheetah.h b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Headers/PvCheetah.h similarity index 100% rename from lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Headers/PvCheetah.h rename to lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Headers/PvCheetah.h diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Headers/picovoice.h b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Headers/picovoice.h similarity index 51% rename from lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Headers/picovoice.h rename to lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Headers/picovoice.h index 485e23c0..3f13d705 100644 --- a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Headers/picovoice.h +++ b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Headers/picovoice.h @@ -1,5 +1,5 @@ /* - Copyright 2018-2021 Picovoice Inc. + Copyright 2018-2023 Picovoice Inc. You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE" file accompanying this source. @@ -31,17 +31,7 @@ PV_API int32_t pv_sample_rate(void); * Status codes. */ typedef enum { - -#ifdef __PV_PLATFORM_WASM__ - - PV_STATUS_SUCCESS = 10000, - -#else - PV_STATUS_SUCCESS = 0, - -#endif - PV_STATUS_OUT_OF_MEMORY, PV_STATUS_IO_ERROR, PV_STATUS_INVALID_ARGUMENT, @@ -63,6 +53,32 @@ typedef enum { */ PV_API const char *pv_status_to_string(pv_status_t status); +/** + * If a function returns a failure (any pv_status_t other than PV_STATUS_SUCCESS), this function can be called + * to get a series of error messages related to the failure. This function can only be called only once per + * failure status on another function. The memory for `message_stack` must be freed using `pv_free_error_stack`. + * + * Regardless of the return status of this function, if `message_stack` is not `NULL`, then `message_stack` + * contains valid memory. However, a failure status on this function indicates that future error messages + * may not be reported. + * + * @param[out] message_stack Array of messages relating to the failure. Messages are NULL terminated strings. + * The array and messages must be freed using `pv_free_error_stack`. + * @param[out] message_stack_depth The number of messages in the `message_stack` array. + */ +PV_API pv_status_t pv_get_error_stack( + char ***message_stack, + int32_t *message_stack_depth); + +/** + * This function frees the memory used by error messages allocated by `pv_get_error_stack`. + * + * @param message_stack Array of messages relating to the failure, allocated from `pv_get_error_stack`. + */ +PV_API void pv_free_error_stack(char **message_stack); + +PV_API void pv_set_sdk(const char *sdk); + #ifdef __cplusplus } diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Headers/pv_cheetah.h b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Headers/pv_cheetah.h similarity index 94% rename from lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Headers/pv_cheetah.h rename to lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Headers/pv_cheetah.h index 9733de9e..18884951 100644 --- a/lib/ios/PvCheetah.xcframework/ios-arm64_armv7/PvCheetah.framework/Headers/pv_cheetah.h +++ b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Headers/pv_cheetah.h @@ -74,7 +74,7 @@ PV_API void pv_cheetah_delete(pv_cheetah_t *object); * `NULL`. * @return Status code. Returns `PV_STATUS_INVALID_ARGUMENT` or `PV_STATUS_OUT_OF_MEMORY`, * `PV_STATUS_RUNTIME_ERROR`, `PV_STATUS_ACTIVATION_ERROR`, `PV_STATUS_ACTIVATION_LIMIT_REACHED`, - * `PV_STATUS_ACTIVATION_THROTTLED`, or `PV_STATUS_ACTIVATION_REFUSED` on failure + * `PV_STATUS_ACTIVATION_THROTTLED`, or `PV_STATUS_ACTIVATION_REFUSED` on failure. */ PV_API pv_status_t pv_cheetah_process(pv_cheetah_t *object, const int16_t *pcm, char **transcript, bool *is_endpoint); @@ -86,10 +86,17 @@ PV_API pv_status_t pv_cheetah_process(pv_cheetah_t *object, const int16_t *pcm, * @param[out] transcript Any remaining transcribed text. If none is available then an empty string is returned. * @return Status code. Returns `PV_STATUS_INVALID_ARGUMENT` or `PV_STATUS_OUT_OF_MEMORY`, * `PV_STATUS_RUNTIME_ERROR`, `PV_STATUS_ACTIVATION_ERROR`, `PV_STATUS_ACTIVATION_LIMIT_REACHED`, - * `PV_STATUS_ACTIVATION_THROTTLED`, or `PV_STATUS_ACTIVATION_REFUSED` on failure + * `PV_STATUS_ACTIVATION_THROTTLED`, or `PV_STATUS_ACTIVATION_REFUSED` on failure. */ PV_API pv_status_t pv_cheetah_flush(pv_cheetah_t *object, char **transcript); +/** + * Deletes transcript returned from `pv_cheetah_process()` or `pv_cheetah_flush()` + * + * @param transcript transcription string returned from `pv_cheetah_process()` or `pv_cheetah_flush()` + */ +PV_API void pv_cheetah_transcript_delete(char *transcript); + /** * Getter for version. * diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Info.plist b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Info.plist similarity index 68% rename from lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Info.plist rename to lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Info.plist index 2549a52b..aaa20a75 100644 Binary files a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Info.plist and b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Info.plist differ diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Modules/module.modulemap b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Modules/module.modulemap similarity index 100% rename from lib/ios/PvCheetah.xcframework/ios-arm64_i386_x86_64-simulator/PvCheetah.framework/Modules/module.modulemap rename to lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/Modules/module.modulemap diff --git a/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/PvCheetah b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/PvCheetah new file mode 100755 index 00000000..a4318bf4 Binary files /dev/null and b/lib/ios/PvCheetah.xcframework/ios-arm64_x86_64-simulator/PvCheetah.framework/PvCheetah differ diff --git a/lib/java/jetson/cortex-a57-aarch64/libpv_cheetah_jni.so b/lib/java/jetson/cortex-a57-aarch64/libpv_cheetah_jni.so index f9858233..2c9f9335 100755 Binary files a/lib/java/jetson/cortex-a57-aarch64/libpv_cheetah_jni.so and b/lib/java/jetson/cortex-a57-aarch64/libpv_cheetah_jni.so differ diff --git a/lib/java/linux/x86_64/libpv_cheetah_jni.so b/lib/java/linux/x86_64/libpv_cheetah_jni.so index f64f1589..ecda8bff 100755 Binary files a/lib/java/linux/x86_64/libpv_cheetah_jni.so and b/lib/java/linux/x86_64/libpv_cheetah_jni.so differ diff --git a/lib/java/mac/arm64/libpv_cheetah_jni.dylib b/lib/java/mac/arm64/libpv_cheetah_jni.dylib index 85b00bbe..1974e7de 100755 Binary files a/lib/java/mac/arm64/libpv_cheetah_jni.dylib and b/lib/java/mac/arm64/libpv_cheetah_jni.dylib differ diff --git a/lib/java/mac/x86_64/libpv_cheetah_jni.dylib b/lib/java/mac/x86_64/libpv_cheetah_jni.dylib index 10f91c45..e591d8c7 100755 Binary files a/lib/java/mac/x86_64/libpv_cheetah_jni.dylib and b/lib/java/mac/x86_64/libpv_cheetah_jni.dylib differ diff --git a/lib/java/raspberry-pi/cortex-a53-aarch64/libpv_cheetah_jni.so b/lib/java/raspberry-pi/cortex-a53-aarch64/libpv_cheetah_jni.so index 9fbec8c0..3e1e9d22 100755 Binary files a/lib/java/raspberry-pi/cortex-a53-aarch64/libpv_cheetah_jni.so and b/lib/java/raspberry-pi/cortex-a53-aarch64/libpv_cheetah_jni.so differ diff --git a/lib/java/raspberry-pi/cortex-a53/libpv_cheetah_jni.so b/lib/java/raspberry-pi/cortex-a53/libpv_cheetah_jni.so index 4c209a31..b8b87a86 100755 Binary files a/lib/java/raspberry-pi/cortex-a53/libpv_cheetah_jni.so and b/lib/java/raspberry-pi/cortex-a53/libpv_cheetah_jni.so differ diff --git a/lib/java/raspberry-pi/cortex-a72-aarch64/libpv_cheetah_jni.so b/lib/java/raspberry-pi/cortex-a72-aarch64/libpv_cheetah_jni.so index 1999ad97..96ab6488 100755 Binary files a/lib/java/raspberry-pi/cortex-a72-aarch64/libpv_cheetah_jni.so and b/lib/java/raspberry-pi/cortex-a72-aarch64/libpv_cheetah_jni.so differ diff --git a/lib/java/raspberry-pi/cortex-a72/libpv_cheetah_jni.so b/lib/java/raspberry-pi/cortex-a72/libpv_cheetah_jni.so index 04125a8d..ad8de587 100755 Binary files a/lib/java/raspberry-pi/cortex-a72/libpv_cheetah_jni.so and b/lib/java/raspberry-pi/cortex-a72/libpv_cheetah_jni.so differ diff --git a/lib/java/windows/amd64/libpv_cheetah_jni.dll b/lib/java/windows/amd64/libpv_cheetah_jni.dll index c610554a..570ee392 100644 Binary files a/lib/java/windows/amd64/libpv_cheetah_jni.dll and b/lib/java/windows/amd64/libpv_cheetah_jni.dll differ diff --git a/lib/jetson/cortex-a57-aarch64/libpv_cheetah.so b/lib/jetson/cortex-a57-aarch64/libpv_cheetah.so index e08ead9b..d2fad30d 100755 Binary files a/lib/jetson/cortex-a57-aarch64/libpv_cheetah.so and b/lib/jetson/cortex-a57-aarch64/libpv_cheetah.so differ diff --git a/lib/linux/x86_64/libpv_cheetah.so b/lib/linux/x86_64/libpv_cheetah.so index f3987d11..1982e371 100755 Binary files a/lib/linux/x86_64/libpv_cheetah.so and b/lib/linux/x86_64/libpv_cheetah.so differ diff --git a/lib/mac/arm64/libpv_cheetah.dylib b/lib/mac/arm64/libpv_cheetah.dylib index 7eaea1ef..d170298b 100755 Binary files a/lib/mac/arm64/libpv_cheetah.dylib and b/lib/mac/arm64/libpv_cheetah.dylib differ diff --git a/lib/mac/x86_64/libpv_cheetah.dylib b/lib/mac/x86_64/libpv_cheetah.dylib index c5842bff..b17cbc17 100755 Binary files a/lib/mac/x86_64/libpv_cheetah.dylib and b/lib/mac/x86_64/libpv_cheetah.dylib differ diff --git a/lib/node/jetson/cortex-a57-aarch64/pv_cheetah.node b/lib/node/jetson/cortex-a57-aarch64/pv_cheetah.node index d0dd15f4..8f9a9a62 100755 Binary files a/lib/node/jetson/cortex-a57-aarch64/pv_cheetah.node and b/lib/node/jetson/cortex-a57-aarch64/pv_cheetah.node differ diff --git a/lib/node/linux/x86_64/pv_cheetah.node b/lib/node/linux/x86_64/pv_cheetah.node index 67ee5ea0..80bc57e2 100755 Binary files a/lib/node/linux/x86_64/pv_cheetah.node and b/lib/node/linux/x86_64/pv_cheetah.node differ diff --git a/lib/node/mac/arm64/pv_cheetah.node b/lib/node/mac/arm64/pv_cheetah.node index 3006a254..a261f44f 100755 Binary files a/lib/node/mac/arm64/pv_cheetah.node and b/lib/node/mac/arm64/pv_cheetah.node differ diff --git a/lib/node/mac/x86_64/pv_cheetah.node b/lib/node/mac/x86_64/pv_cheetah.node index 87de9d44..3f0d13b9 100755 Binary files a/lib/node/mac/x86_64/pv_cheetah.node and b/lib/node/mac/x86_64/pv_cheetah.node differ diff --git a/lib/node/raspberry-pi/cortex-a53-aarch64/pv_cheetah.node b/lib/node/raspberry-pi/cortex-a53-aarch64/pv_cheetah.node index fd398c6c..719cc7ac 100755 Binary files a/lib/node/raspberry-pi/cortex-a53-aarch64/pv_cheetah.node and b/lib/node/raspberry-pi/cortex-a53-aarch64/pv_cheetah.node differ diff --git a/lib/node/raspberry-pi/cortex-a53/pv_cheetah.node b/lib/node/raspberry-pi/cortex-a53/pv_cheetah.node index d22fd971..72ae265f 100755 Binary files a/lib/node/raspberry-pi/cortex-a53/pv_cheetah.node and b/lib/node/raspberry-pi/cortex-a53/pv_cheetah.node differ diff --git a/lib/node/raspberry-pi/cortex-a72-aarch64/pv_cheetah.node b/lib/node/raspberry-pi/cortex-a72-aarch64/pv_cheetah.node index 9063e83a..c62fe946 100755 Binary files a/lib/node/raspberry-pi/cortex-a72-aarch64/pv_cheetah.node and b/lib/node/raspberry-pi/cortex-a72-aarch64/pv_cheetah.node differ diff --git a/lib/node/raspberry-pi/cortex-a72/pv_cheetah.node b/lib/node/raspberry-pi/cortex-a72/pv_cheetah.node index c7343064..5d77ccc8 100755 Binary files a/lib/node/raspberry-pi/cortex-a72/pv_cheetah.node and b/lib/node/raspberry-pi/cortex-a72/pv_cheetah.node differ diff --git a/lib/node/windows/amd64/pv_cheetah.node b/lib/node/windows/amd64/pv_cheetah.node index f7948efe..66cc8829 100644 Binary files a/lib/node/windows/amd64/pv_cheetah.node and b/lib/node/windows/amd64/pv_cheetah.node differ diff --git a/lib/raspberry-pi/cortex-a53-aarch64/libpv_cheetah.so b/lib/raspberry-pi/cortex-a53-aarch64/libpv_cheetah.so index 6b8bc56d..284378ac 100755 Binary files a/lib/raspberry-pi/cortex-a53-aarch64/libpv_cheetah.so and b/lib/raspberry-pi/cortex-a53-aarch64/libpv_cheetah.so differ diff --git a/lib/raspberry-pi/cortex-a53/libpv_cheetah.so b/lib/raspberry-pi/cortex-a53/libpv_cheetah.so index b780f011..3ca6b4f6 100755 Binary files a/lib/raspberry-pi/cortex-a53/libpv_cheetah.so and b/lib/raspberry-pi/cortex-a53/libpv_cheetah.so differ diff --git a/lib/raspberry-pi/cortex-a72-aarch64/libpv_cheetah.so b/lib/raspberry-pi/cortex-a72-aarch64/libpv_cheetah.so index e8e61bb5..c60a61be 100755 Binary files a/lib/raspberry-pi/cortex-a72-aarch64/libpv_cheetah.so and b/lib/raspberry-pi/cortex-a72-aarch64/libpv_cheetah.so differ diff --git a/lib/raspberry-pi/cortex-a72/libpv_cheetah.so b/lib/raspberry-pi/cortex-a72/libpv_cheetah.so index 291bcea6..3cb1d075 100755 Binary files a/lib/raspberry-pi/cortex-a72/libpv_cheetah.so and b/lib/raspberry-pi/cortex-a72/libpv_cheetah.so differ diff --git a/lib/wasm/pv_cheetah.wasm b/lib/wasm/pv_cheetah.wasm index 5a1ebafa..73ab1968 100755 Binary files a/lib/wasm/pv_cheetah.wasm and b/lib/wasm/pv_cheetah.wasm differ diff --git a/lib/wasm/pv_cheetah_simd.wasm b/lib/wasm/pv_cheetah_simd.wasm index 83931dc6..33835e35 100755 Binary files a/lib/wasm/pv_cheetah_simd.wasm and b/lib/wasm/pv_cheetah_simd.wasm differ diff --git a/lib/windows/amd64/libpv_cheetah.dll b/lib/windows/amd64/libpv_cheetah.dll index 4989479a..282f8edd 100644 Binary files a/lib/windows/amd64/libpv_cheetah.dll and b/lib/windows/amd64/libpv_cheetah.dll differ diff --git a/resources/.lint/java/suppress.xml b/resources/.lint/java/suppress.xml index 290f2c28..02787ef3 100644 --- a/resources/.lint/java/suppress.xml +++ b/resources/.lint/java/suppress.xml @@ -10,7 +10,7 @@ - + diff --git a/resources/.lint/spell-check/.cspell.json b/resources/.lint/spell-check/.cspell.json index 51441d07..c53b232c 100644 --- a/resources/.lint/spell-check/.cspell.json +++ b/resources/.lint/spell-check/.cspell.json @@ -37,6 +37,10 @@ "**/AndroidManifest.xml", "**/activity_main.xml", + // go + "**/go*.sum", + "**/go*.mod", + // ios "**/*.xcconfig", "**/*.podspec", diff --git a/resources/.lint/spell-check/dict.txt b/resources/.lint/spell-check/dict.txt index 4c5f22f4..50131e04 100644 --- a/resources/.lint/spell-check/dict.txt +++ b/resources/.lint/spell-check/dict.txt @@ -1,4 +1,5 @@ aarch +agnivade androidx armv7l calcsize @@ -24,6 +25,7 @@ drwav dylib endpointing exopackage +Fastenshtein filedemo framecount gradlew @@ -65,6 +67,7 @@ repr RGBO rodio RTLD +Rustonomicon signup stdbool stdint