diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index ddae7d656..f30b6198a 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,50 +1,47 @@
-# This is a basic workflow to help you get started with Actions
-
name: CI
-# Controls when the action will run.
on:
- # Triggers the workflow on push or pull request events
push:
- branches: [master, dev]
pull_request:
branches: [master, dev]
-
- # Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
-# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
- # Build and test the code
build:
- # The type of runner that the job will run on
runs-on: ubuntu-latest
- # Steps represent a sequence of tasks that will be executed as part of the job
steps:
- # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- - uses: actions/checkout@v2
+ # 1. Use updated, secure GitHub action versions
+ - uses: actions/checkout@v4
- - name: Cache
+ # 2. Modernized caching
+ - name: Cache Gradle
uses: actions/cache@v4
with:
- # Cache gradle directories
path: |
~/.gradle/caches
- ~/.gradle/native
~/.gradle/wrapper
- # Key for restoring and saving the cache
- key: ${{ runner.os }}-gradle
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-
+ # 3. Setup Node.js (Upgraded to v20 for modern Ionic/Capacitor compatibility)
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '22'
+
+ # 4. Explicitly setup Java 17 or 21 (Capacitor 6+ prefers Java 17 or 21)
- name: Setup Java
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
- distribution: temurin
- java-version: '17'
+ distribution: 'temurin'
+ java-version: '21'
- name: Setup Android SDK
- uses: android-actions/setup-android@v2
+ uses: android-actions/setup-android@v3
+ # 5. Inject Secrets
- name: Copy aRMT secrets
run: 'echo "$SECRET" > src/assets/data/secret.ts'
shell: bash
@@ -52,35 +49,29 @@ jobs:
SECRET: ${{secrets.SECRET_TS}}
- name: Copy Google-Services.json
- run: 'echo "$SECRET" > google-services.json'
+ run: 'echo "$SECRET" > android/app/google-services.json' # Note: Placed directly into the android project folder
shell: bash
env:
SECRET: ${{secrets.GOOGLE_SERVICES_ANDROID}}
- - name: Install cordova-res
- run: npm i -g cordova-res
-
- - name: Use coturiv/setup-ionic
- uses: coturiv/setup-ionic@v1
- with:
- java-version: 11
-
- - name: Use coturiv/setup-ionic
- uses: coturiv/setup-ionic@v1
- with:
- cordova-version: 11
-
- - name: Setup Node
- uses: actions/setup-node@v2
- with:
- node-version: '16'
-
+ # 6. Install project dependencies and global CLI
- name: Install app dependencies
- run: npm install --force
+ run: |
+ npm install
+ npm install -g @ionic/cli
- name: Run unit tests
- run: npm run test
+ run: npm run test -- --watch=false --browsers=ChromeHeadless
+
+ # 7. Separated compilation steps to prevent hidden subprocess errors
+ - name: Build Web Assets
+ run: npm run build
+
+ - name: Sync Capacitor Android
+ run: npx cap sync android
- - name: Build
+ - name: Build Android Binary (Gradle)
run: |
- ionic capacitor build android
+ cd android
+ chmod +x gradlew
+ ./gradlew assembleDebug --stacktrace
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 1b2e6b112..303eb7e65 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,13 +1,8 @@
-# This is a basic workflow to help you get started with Actions
-
name: Release
-# Controls when the action will run.
on:
release:
types: [published]
-
- # Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
env:
@@ -17,57 +12,56 @@ env:
PLAYSTORE_SERVICE_KEY: service-api.json
PLAYSTORE_TRACK: alpha
-# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
- # Build and test the code
build:
- # The type of runner that the job will run on
runs-on: ubuntu-latest
- # Steps represent a sequence of tasks that will be executed as part of the job
steps:
- # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- - uses: actions/checkout@v2
+ # 1. Update action wrappers to v4
+ - uses: actions/checkout@v4
- - name: Cache
+ - name: Cache Gradle
uses: actions/cache@v4
with:
- # Cache gradle directories
path: |
~/.gradle/caches
- ~/.gradle/native
~/.gradle/wrapper
- # Key for restoring and saving the cache
- key: ${{ runner.os }}-gradle
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-
- - name: Setup Java
- uses: actions/setup-java@v3
+ # 2. Match the Node 20 / Java 17+ baseline from your CI fix
+ - name: Setup Node
+ uses: actions/setup-node@v4
with:
- distribution: temurin
- java-version: '17'
-
- - name: Setup Android SDK
- uses: android-actions/setup-android@v2
+ node-version: '22'
- - name: Setup Node
- uses: actions/setup-node@v2
+ - name: Setup Java
+ uses: actions/setup-java@v4
with:
- node-version: '16'
+ distribution: temurin
+ java-version: '17' # Or '21' depending on your Capacitor target
- - name: Set up Ruby 2.6
+ # 3. Upgraded Ruby (3.0+ is necessary to compile Fastlane on modern Ubuntu environments)
+ - name: Set up Ruby 3.0
uses: ruby/setup-ruby@v1
with:
- ruby-version: 2.6 # Not needed with a .ruby-version file
+ ruby-version: '3.0'
bundler-cache: true
+ - name: Setup Android SDK
+ uses: android-actions/setup-android@v3
+
+ # 4. Inject application variables/secrets
- name: Copy aRMT secrets
run: 'echo "$SECRET" > src/assets/data/secret.ts'
shell: bash
env:
SECRET: ${{secrets.SECRET_TS}}
+ # Fixed: Placing Google Services directly into the native android module folder
- name: Copy Google-Services.json
- run: 'echo "$SECRET" > google-services.json'
+ run: 'echo "$SECRET" > android/app/google-services.json'
shell: bash
env:
SECRET: ${{secrets.GOOGLE_SERVICES_ANDROID}}
@@ -86,33 +80,26 @@ jobs:
env:
SECRET: ${{secrets.RELEASE_KEYSTORE}}
- - name: Install Ionic and Cordova
- run: npm i -g ionic cordova
-
- - name: Install cordova-res
- run: npm i -g cordova-res
+ # 5. Cleaned up global dependencies (Removed Cordova entirely since you are running Capacitor)
+ - name: Install Ionic CLI
+ run: npm i -g @ionic/cli
- name: Install app dependencies
run: npm install
- name: Run unit tests
- run: npm run test
+ run: npm run test -- --watch=false --browsers=ChromeHeadless
- - name: Add Android platform
- run: ionic cordova platform add android
+ # 6. Replaced the "cordova platform add" with the standard web + cap workflow
+ - name: Build Web Assets
+ run: npm run build
- - name: Prepare Android app
- run: npm install
+ - name: Sync Capacitor Android
+ run: npx cap sync android
+ # 7. Use the updated fastlane action (v3.1.0) for smooth Ruby 3 compatibility
- name: Build and Deploy Android app to Play Store
- uses: maierj/fastlane-action@v2.0.1
+ uses: maierj/fastlane-action@v3.1.0
with:
lane: 'android deploy'
- options: '{ "keystore_path": "${KEYSTORE_PATH}", "keystore_password": "${KEYSTORE_PASS}", "keystore_alias": "${KEYSTORE_ALIAS}", "package_name": "${PACKAGE_NAME_ANDROID}", "track": "${PLAYSTORE_TRACK}", "json_key": "${PLAYSTORE_SERVICE_KEY}" }'
- env:
- KEYSTORE_PATH: ${{env.KEYSTORE_PATH}}
- KEYSTORE_PASS: ${{secrets.KEYSTORE_PASS}}
- KEYSTORE_ALIAS: ${{env.KEYSTORE_ALIAS}}
- PACKAGE_NAME_ANDROID: ${{env.PACKAGE_NAME_ANDROID}}
- PLAYSTORE_TRACK: ${{env.PLAYSTORE_TRACK}}
- PLAYSTORE_SERVICE_KEY: ${{env.PLAYSTORE_SERVICE_KEY}}
+ options: '{ "keystore_path": "${{ env.KEYSTORE_PATH }}", "keystore_password": "${{ secrets.KEYSTORE_PASS }}", "keystore_alias": "${{ env.KEYSTORE_ALIAS }}", "package_name": "${{ env.PACKAGE_NAME_ANDROID }}", "track": "${{ env.PLAYSTORE_TRACK }}", "json_key": "${{ env.PLAYSTORE_SERVICE_KEY }}" }'
\ No newline at end of file
diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle
index fead5e65a..5841de06f 100644
--- a/android/app/capacitor.build.gradle
+++ b/android/app/capacitor.build.gradle
@@ -2,14 +2,15 @@
android {
compileOptions {
- sourceCompatibility JavaVersion.VERSION_17
- targetCompatibility JavaVersion.VERSION_17
+ sourceCompatibility JavaVersion.VERSION_21
+ targetCompatibility JavaVersion.VERSION_21
}
}
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
dependencies {
implementation project(':capacitor-community-generic-oauth2')
+ implementation project(':capacitor-community-http')
implementation project(':capacitor-community-keep-awake')
implementation project(':capacitor-firebase-analytics')
implementation project(':capacitor-firebase-messaging')
@@ -28,7 +29,6 @@ dependencies {
implementation project(':capacitor-splash-screen')
implementation project(':capacitor-status-bar')
implementation project(':capacitor-text-zoom')
- implementation project(':capacitor-community-http')
implementation project(':capacitor-grab-intent-extras')
implementation project(':capacitor-voice-recorder')
diff --git a/android/build.gradle b/android/build.gradle
index 93c6de294..30b514cce 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -8,7 +8,7 @@ buildscript {
}
dependencies {
//Updating the Android Gradle Plugin version here to be compatible with the Java version
- classpath 'com.android.tools.build:gradle:8.5.2'
+ classpath 'com.android.tools.build:gradle:8.7.0'
classpath 'com.google.gms:google-services:4.3.15'
// NOTE: Do not place your application dependencies here; they belong
diff --git a/android/capacitor.settings.gradle b/android/capacitor.settings.gradle
index c007080b0..13af9697c 100644
--- a/android/capacitor.settings.gradle
+++ b/android/capacitor.settings.gradle
@@ -5,6 +5,9 @@ project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/
include ':capacitor-community-generic-oauth2'
project(':capacitor-community-generic-oauth2').projectDir = new File('../node_modules/@capacitor-community/generic-oauth2/android')
+include ':capacitor-community-http'
+project(':capacitor-community-http').projectDir = new File('../node_modules/@capacitor-community/http/android')
+
include ':capacitor-community-keep-awake'
project(':capacitor-community-keep-awake').projectDir = new File('../node_modules/@capacitor-community/keep-awake/android')
@@ -59,9 +62,6 @@ project(':capacitor-status-bar').projectDir = new File('../node_modules/@capacit
include ':capacitor-text-zoom'
project(':capacitor-text-zoom').projectDir = new File('../node_modules/@capacitor/text-zoom/android')
-include ':capacitor-community-http'
-project(':capacitor-community-http').projectDir = new File('../node_modules/@capacitor-community/http/android')
-
include ':capacitor-grab-intent-extras'
project(':capacitor-grab-intent-extras').projectDir = new File('../node_modules/capacitor-grab-intent-extras/android')
diff --git a/android/variables.gradle b/android/variables.gradle
index 487509f8a..3726aa420 100644
--- a/android/variables.gradle
+++ b/android/variables.gradle
@@ -1,7 +1,6 @@
ext {
- minSdkVersion = 22
- // Updated to 34 to support latest dependencies
- compileSdkVersion = 34
+ minSdkVersion = 23
+ compileSdkVersion = 35
targetSdkVersion = 35
androidxActivityVersion = '1.7.0'
androidxAppCompatVersion = '1.6.1'
diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj
index 74357d8ae..71b124043 100644
--- a/ios/App/App.xcodeproj/project.pbxproj
+++ b/ios/App/App.xcodeproj/project.pbxproj
@@ -299,7 +299,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 14.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -350,7 +350,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 14.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
@@ -369,7 +369,7 @@
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = B2G939N48B;
INFOPLIST_FILE = App/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 14.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 3.3.15;
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
@@ -397,7 +397,7 @@
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = B2G939N48B;
INFOPLIST_FILE = App/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 14.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 3.3.15;
PRODUCT_BUNDLE_IDENTIFIER = "org.phidatalab.radar-armt";
diff --git a/ios/App/Podfile b/ios/App/Podfile
index ba9650ade..a5d087a22 100644
--- a/ios/App/Podfile
+++ b/ios/App/Podfile
@@ -1,6 +1,6 @@
require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers'
-platform :ios, '14.0'
+platform :ios, '16.0'
use_frameworks!
# workaround to avoid Xcode caching of Pods that requires
@@ -12,6 +12,7 @@ def capacitor_pods
pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
pod 'CapacitorCommunityGenericOauth2', :path => '../../node_modules/@capacitor-community/generic-oauth2'
+ pod 'CapacitorCommunityHttp', :path => '../../node_modules/@capacitor-community/http'
pod 'CapacitorCommunityKeepAwake', :path => '../../node_modules/@capacitor-community/keep-awake'
pod 'CapacitorFirebaseAnalytics', :path => '../../node_modules/@capacitor-firebase/analytics'
pod 'CapacitorFirebaseMessaging', :path => '../../node_modules/@capacitor-firebase/messaging'
@@ -30,7 +31,6 @@ def capacitor_pods
pod 'CapacitorSplashScreen', :path => '../../node_modules/@capacitor/splash-screen'
pod 'CapacitorStatusBar', :path => '../../node_modules/@capacitor/status-bar'
pod 'CapacitorTextZoom', :path => '../../node_modules/@capacitor/text-zoom'
- pod 'CapacitorCommunityHttp', :path => '../../node_modules/@capacitor-community/http'
pod 'PerfoodCapacitorHealthkit', :path => '../../node_modules/@perfood/capacitor-healthkit'
pod 'CapacitorGrabIntentExtras', :path => '../../node_modules/capacitor-grab-intent-extras'
pod 'CapacitorVoiceRecorder', :path => '../../node_modules/capacitor-voice-recorder'
diff --git a/ios/App/Podfile.lock b/ios/App/Podfile.lock
index 7a480303a..5c22b13ca 100644
--- a/ios/App/Podfile.lock
+++ b/ios/App/Podfile.lock
@@ -1,211 +1,195 @@
PODS:
- - Capacitor (5.7.4):
+ - Capacitor (8.3.4):
- CapacitorCordova
- CapacitorApp (5.0.7):
- Capacitor
- - CapacitorAppLauncher (5.0.7):
+ - CapacitorAppLauncher (5.0.8):
- Capacitor
- - CapacitorBrowser (5.2.0):
+ - CapacitorBrowser (5.2.1):
- Capacitor
- CapacitorCommunityGenericOauth2 (6.1.0):
- Capacitor
- OAuthSwift (= 2.2.0)
- - CapacitorCommunityHttp (2.0.0-0):
+ - CapacitorCommunityHttp (2.0.1):
- Capacitor
- CapacitorCommunityKeepAwake (4.0.0):
- Capacitor
- - CapacitorCordova (5.7.4)
- - CapacitorDevice (5.0.7):
+ - CapacitorCordova (8.3.4)
+ - CapacitorDevice (5.0.8):
- Capacitor
- - CapacitorDialog (5.0.7):
+ - CapacitorDialog (5.0.8):
- Capacitor
- - CapacitorFilesystem (5.2.1):
+ - CapacitorFilesystem (5.2.2):
- Capacitor
- - CapacitorFirebaseAnalytics (5.4.1):
+ - CapacitorFirebaseAnalytics (8.2.0):
- Capacitor
- - CapacitorFirebaseAnalytics/Lite (= 5.4.1)
- - CapacitorFirebaseAnalytics/Analytics (5.4.1):
+ - CapacitorFirebaseAnalytics/Lite (= 8.2.0)
+ - CapacitorFirebaseAnalytics/Analytics (8.2.0):
- Capacitor
- - FirebaseAnalytics (~> 10.8)
- - CapacitorFirebaseAnalytics/Lite (5.4.1):
+ - FirebaseAnalytics/Core (~> 12.7.0)
+ - FirebaseAnalytics/IdentitySupport (~> 12.7.0)
+ - CapacitorFirebaseAnalytics/Lite (8.2.0):
- Capacitor
- - CapacitorFirebaseMessaging (5.4.1):
+ - CapacitorFirebaseMessaging (8.2.0):
- Capacitor
- - FirebaseMessaging (~> 10.8)
- - CapacitorFirebaseRemoteConfig (5.4.1):
+ - FirebaseMessaging (~> 12.7.0)
+ - CapacitorFirebaseRemoteConfig (8.2.0):
- Capacitor
- - FirebaseRemoteConfig (~> 10.8)
+ - FirebaseRemoteConfig (~> 12.7.0)
- CapacitorGrabIntentExtras (0.0.4):
- Capacitor
- CapacitorHaptics (5.0.7):
- Capacitor
- - CapacitorKeyboard (5.0.8):
+ - CapacitorKeyboard (5.0.9):
- Capacitor
- - CapacitorLocalNotifications (5.0.7):
+ - CapacitorLocalNotifications (5.0.8):
- Capacitor
- - CapacitorMlkitBarcodeScanning (5.4.0):
+ - CapacitorMlkitBarcodeScanning (8.1.0):
- Capacitor
- - GoogleMLKit/BarcodeScanning (= 4.0.0)
- - CapacitorNetwork (7.0.1):
+ - GoogleMLKit/BarcodeScanning (~> 8.0.0)
+ - CapacitorNetwork (7.0.4):
- Capacitor
- - CapacitorSplashScreen (5.0.7):
+ - CapacitorSplashScreen (5.0.8):
- Capacitor
- CapacitorStatusBar (5.0.7):
- Capacitor
- - CapacitorTextZoom (5.0.7):
+ - CapacitorTextZoom (8.0.1):
- Capacitor
- CapacitorVoiceRecorder (6.0.3):
- Capacitor
- - CordovaPlugins (5.7.4):
+ - CordovaPlugins (8.3.4):
- CapacitorCordova
- - Firebase/CoreOnly (10.21.0):
- - FirebaseCore (= 10.21.0)
- - Firebase/Messaging (10.21.0):
+ - Firebase/CoreOnly (12.7.0):
+ - FirebaseCore (~> 12.7.0)
+ - Firebase/Messaging (12.7.0):
- Firebase/CoreOnly
- - FirebaseMessaging (~> 10.21.0)
- - FirebaseABTesting (10.21.0):
- - FirebaseCore (~> 10.0)
- - FirebaseAnalytics (10.21.0):
- - FirebaseAnalytics/AdIdSupport (= 10.21.0)
- - FirebaseCore (~> 10.0)
- - FirebaseInstallations (~> 10.0)
- - GoogleUtilities/AppDelegateSwizzler (~> 7.11)
- - GoogleUtilities/MethodSwizzler (~> 7.11)
- - GoogleUtilities/Network (~> 7.11)
- - "GoogleUtilities/NSData+zlib (~> 7.11)"
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - FirebaseAnalytics/AdIdSupport (10.21.0):
- - FirebaseCore (~> 10.0)
- - FirebaseInstallations (~> 10.0)
- - GoogleAppMeasurement (= 10.21.0)
- - GoogleUtilities/AppDelegateSwizzler (~> 7.11)
- - GoogleUtilities/MethodSwizzler (~> 7.11)
- - GoogleUtilities/Network (~> 7.11)
- - "GoogleUtilities/NSData+zlib (~> 7.11)"
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - FirebaseCore (10.21.0):
- - FirebaseCoreInternal (~> 10.0)
- - GoogleUtilities/Environment (~> 7.12)
- - GoogleUtilities/Logger (~> 7.12)
- - FirebaseCoreInternal (10.21.0):
- - "GoogleUtilities/NSData+zlib (~> 7.8)"
- - FirebaseInstallations (10.21.0):
- - FirebaseCore (~> 10.0)
- - GoogleUtilities/Environment (~> 7.8)
- - GoogleUtilities/UserDefaults (~> 7.8)
- - PromisesObjC (~> 2.1)
- - FirebaseMessaging (10.21.0):
- - FirebaseCore (~> 10.0)
- - FirebaseInstallations (~> 10.0)
- - GoogleDataTransport (~> 9.3)
- - GoogleUtilities/AppDelegateSwizzler (~> 7.8)
- - GoogleUtilities/Environment (~> 7.8)
- - GoogleUtilities/Reachability (~> 7.8)
- - GoogleUtilities/UserDefaults (~> 7.8)
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - FirebaseRemoteConfig (10.21.0):
- - FirebaseABTesting (~> 10.0)
- - FirebaseCore (~> 10.0)
- - FirebaseInstallations (~> 10.0)
- - FirebaseSharedSwift (~> 10.0)
- - GoogleUtilities/Environment (~> 7.8)
- - "GoogleUtilities/NSData+zlib (~> 7.8)"
- - FirebaseSharedSwift (10.21.0)
- - GoogleAppMeasurement (10.21.0):
- - GoogleAppMeasurement/AdIdSupport (= 10.21.0)
- - GoogleUtilities/AppDelegateSwizzler (~> 7.11)
- - GoogleUtilities/MethodSwizzler (~> 7.11)
- - GoogleUtilities/Network (~> 7.11)
- - "GoogleUtilities/NSData+zlib (~> 7.11)"
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - GoogleAppMeasurement/AdIdSupport (10.21.0):
- - GoogleAppMeasurement/WithoutAdIdSupport (= 10.21.0)
- - GoogleUtilities/AppDelegateSwizzler (~> 7.11)
- - GoogleUtilities/MethodSwizzler (~> 7.11)
- - GoogleUtilities/Network (~> 7.11)
- - "GoogleUtilities/NSData+zlib (~> 7.11)"
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - GoogleAppMeasurement/WithoutAdIdSupport (10.21.0):
- - GoogleUtilities/AppDelegateSwizzler (~> 7.11)
- - GoogleUtilities/MethodSwizzler (~> 7.11)
- - GoogleUtilities/Network (~> 7.11)
- - "GoogleUtilities/NSData+zlib (~> 7.11)"
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - GoogleDataTransport (9.4.0):
- - GoogleUtilities/Environment (~> 7.7)
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - PromisesObjC (< 3.0, >= 1.2)
- - GoogleMLKit/BarcodeScanning (4.0.0):
+ - FirebaseMessaging (~> 12.7.0)
+ - FirebaseABTesting (12.7.0):
+ - FirebaseCore (~> 12.7.0)
+ - FirebaseAnalytics/Core (12.7.0):
+ - FirebaseCore (~> 12.7.0)
+ - FirebaseInstallations (~> 12.7.0)
+ - GoogleAppMeasurement/Core (= 12.7.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
+ - GoogleUtilities/MethodSwizzler (~> 8.1)
+ - GoogleUtilities/Network (~> 8.1)
+ - "GoogleUtilities/NSData+zlib (~> 8.1)"
+ - nanopb (~> 3.30910.0)
+ - FirebaseAnalytics/IdentitySupport (12.7.0):
+ - FirebaseCore (~> 12.7.0)
+ - FirebaseInstallations (~> 12.7.0)
+ - GoogleAppMeasurement/IdentitySupport (= 12.7.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
+ - GoogleUtilities/MethodSwizzler (~> 8.1)
+ - GoogleUtilities/Network (~> 8.1)
+ - "GoogleUtilities/NSData+zlib (~> 8.1)"
+ - nanopb (~> 3.30910.0)
+ - FirebaseCore (12.7.0):
+ - FirebaseCoreInternal (~> 12.7.0)
+ - GoogleUtilities/Environment (~> 8.1)
+ - GoogleUtilities/Logger (~> 8.1)
+ - FirebaseCoreInternal (12.7.0):
+ - "GoogleUtilities/NSData+zlib (~> 8.1)"
+ - FirebaseInstallations (12.7.0):
+ - FirebaseCore (~> 12.7.0)
+ - GoogleUtilities/Environment (~> 8.1)
+ - GoogleUtilities/UserDefaults (~> 8.1)
+ - PromisesObjC (~> 2.4)
+ - FirebaseMessaging (12.7.0):
+ - FirebaseCore (~> 12.7.0)
+ - FirebaseInstallations (~> 12.7.0)
+ - GoogleDataTransport (~> 10.1)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
+ - GoogleUtilities/Environment (~> 8.1)
+ - GoogleUtilities/Reachability (~> 8.1)
+ - GoogleUtilities/UserDefaults (~> 8.1)
+ - nanopb (~> 3.30910.0)
+ - FirebaseRemoteConfig (12.7.0):
+ - FirebaseABTesting (~> 12.7.0)
+ - FirebaseCore (~> 12.7.0)
+ - FirebaseInstallations (~> 12.7.0)
+ - FirebaseRemoteConfigInterop (~> 12.7.0)
+ - FirebaseSharedSwift (~> 12.7.0)
+ - GoogleUtilities/Environment (~> 8.1)
+ - "GoogleUtilities/NSData+zlib (~> 8.1)"
+ - FirebaseRemoteConfigInterop (12.7.0)
+ - FirebaseSharedSwift (12.7.0)
+ - GoogleAppMeasurement/Core (12.7.0):
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
+ - GoogleUtilities/MethodSwizzler (~> 8.1)
+ - GoogleUtilities/Network (~> 8.1)
+ - "GoogleUtilities/NSData+zlib (~> 8.1)"
+ - nanopb (~> 3.30910.0)
+ - GoogleAppMeasurement/IdentitySupport (12.7.0):
+ - GoogleAppMeasurement/Core (= 12.7.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
+ - GoogleUtilities/MethodSwizzler (~> 8.1)
+ - GoogleUtilities/Network (~> 8.1)
+ - "GoogleUtilities/NSData+zlib (~> 8.1)"
+ - nanopb (~> 3.30910.0)
+ - GoogleDataTransport (10.1.0):
+ - nanopb (~> 3.30910.0)
+ - PromisesObjC (~> 2.4)
+ - GoogleMLKit/BarcodeScanning (8.0.0):
- GoogleMLKit/MLKitCore
- - MLKitBarcodeScanning (~> 3.0.0)
- - GoogleMLKit/MLKitCore (4.0.0):
- - MLKitCommon (~> 9.0.0)
- - GoogleToolboxForMac/DebugUtils (2.3.2):
- - GoogleToolboxForMac/Defines (= 2.3.2)
- - GoogleToolboxForMac/Defines (2.3.2)
- - GoogleToolboxForMac/Logger (2.3.2):
- - GoogleToolboxForMac/Defines (= 2.3.2)
- - "GoogleToolboxForMac/NSData+zlib (2.3.2)":
- - GoogleToolboxForMac/Defines (= 2.3.2)
- - "GoogleToolboxForMac/NSDictionary+URLArguments (2.3.2)":
- - GoogleToolboxForMac/DebugUtils (= 2.3.2)
- - GoogleToolboxForMac/Defines (= 2.3.2)
- - "GoogleToolboxForMac/NSString+URLArguments (= 2.3.2)"
- - "GoogleToolboxForMac/NSString+URLArguments (2.3.2)"
- - GoogleUtilities/AppDelegateSwizzler (7.13.0):
+ - MLKitBarcodeScanning (~> 7.0.0)
+ - GoogleMLKit/MLKitCore (8.0.0):
+ - MLKitCommon (~> 13.0.0)
+ - GoogleToolboxForMac/Defines (4.2.1)
+ - GoogleToolboxForMac/Logger (4.2.1):
+ - GoogleToolboxForMac/Defines (= 4.2.1)
+ - "GoogleToolboxForMac/NSData+zlib (4.2.1)":
+ - GoogleToolboxForMac/Defines (= 4.2.1)
+ - GoogleUtilities/AppDelegateSwizzler (8.1.0):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Privacy
- - GoogleUtilities/Environment (7.13.0):
+ - GoogleUtilities/Environment (8.1.0):
- GoogleUtilities/Privacy
- - PromisesObjC (< 3.0, >= 1.2)
- - GoogleUtilities/Logger (7.13.0):
+ - GoogleUtilities/Logger (8.1.0):
- GoogleUtilities/Environment
- GoogleUtilities/Privacy
- - GoogleUtilities/MethodSwizzler (7.13.0):
+ - GoogleUtilities/MethodSwizzler (8.1.0):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- - GoogleUtilities/Network (7.13.0):
+ - GoogleUtilities/Network (8.1.0):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Privacy
- GoogleUtilities/Reachability
- - "GoogleUtilities/NSData+zlib (7.13.0)":
+ - "GoogleUtilities/NSData+zlib (8.1.0)":
- GoogleUtilities/Privacy
- - GoogleUtilities/Privacy (7.13.0)
- - GoogleUtilities/Reachability (7.13.0):
+ - GoogleUtilities/Privacy (8.1.0)
+ - GoogleUtilities/Reachability (8.1.0):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- - GoogleUtilities/UserDefaults (7.13.0):
+ - GoogleUtilities/UserDefaults (8.1.0):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- - GoogleUtilitiesComponents (1.1.0):
- - GoogleUtilities/Logger
- - GTMSessionFetcher/Core (2.3.0)
- - MLImage (1.0.0-beta4)
- - MLKitBarcodeScanning (3.0.0):
- - MLKitCommon (~> 9.0)
- - MLKitVision (~> 5.0)
- - MLKitCommon (9.0.0):
- - GoogleDataTransport (~> 9.0)
- - GoogleToolboxForMac/Logger (~> 2.1)
- - "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
- - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)"
- - GoogleUtilities/UserDefaults (~> 7.0)
- - GoogleUtilitiesComponents (~> 1.0)
- - GTMSessionFetcher/Core (< 3.0, >= 1.1)
- - MLKitVision (5.0.0):
- - GoogleToolboxForMac/Logger (~> 2.1)
- - "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
- - GTMSessionFetcher/Core (< 3.0, >= 1.1)
- - MLImage (= 1.0.0-beta4)
- - MLKitCommon (~> 9.0)
- - nanopb (2.30909.1):
- - nanopb/decode (= 2.30909.1)
- - nanopb/encode (= 2.30909.1)
- - nanopb/decode (2.30909.1)
- - nanopb/encode (2.30909.1)
+ - GTMSessionFetcher/Core (3.5.0)
+ - MLImage (1.0.0-beta7)
+ - MLKitBarcodeScanning (7.0.0):
+ - MLKitCommon (~> 13.0)
+ - MLKitVision (~> 9.0)
+ - MLKitCommon (13.0.0):
+ - GoogleDataTransport (~> 10.0)
+ - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
+ - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
+ - GoogleUtilities/Logger (~> 8.0)
+ - GoogleUtilities/UserDefaults (~> 8.0)
+ - GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
+ - MLKitVision (9.0.0):
+ - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
+ - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
+ - GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
+ - MLImage (= 1.0.0-beta7)
+ - MLKitCommon (~> 13.0)
+ - nanopb (3.30910.0):
+ - nanopb/decode (= 3.30910.0)
+ - nanopb/encode (= 3.30910.0)
+ - nanopb/decode (3.30910.0)
+ - nanopb/encode (3.30910.0)
- OAuthSwift (2.2.0)
- PerfoodCapacitorHealthkit (1.3.2):
- Capacitor
@@ -251,13 +235,13 @@ SPEC REPOS:
- FirebaseInstallations
- FirebaseMessaging
- FirebaseRemoteConfig
+ - FirebaseRemoteConfigInterop
- FirebaseSharedSwift
- GoogleAppMeasurement
- GoogleDataTransport
- GoogleMLKit
- GoogleToolboxForMac
- GoogleUtilities
- - GoogleUtilitiesComponents
- GTMSessionFetcher
- MLImage
- MLKitBarcodeScanning
@@ -322,56 +306,56 @@ EXTERNAL SOURCES:
:path: "../../node_modules/@perfood/capacitor-healthkit"
SPEC CHECKSUMS:
- Capacitor: 0b2c8a082fc0335969bdc7d074072ca8c9e064af
+ Capacitor: d13cad5fa09155679672808cc4ca9fbc2997e1b4
CapacitorApp: b23ce4279972fa24721b9ad7aefdf05e36c29db7
- CapacitorAppLauncher: 3c24de236f37bf7ab79e90ecf5576f962cc7d99e
- CapacitorBrowser: 4dc0624a8c372054f64f31e53c6375ce300b28cc
+ CapacitorAppLauncher: 4584773578ec21018b228fe214430dbb00e13bd5
+ CapacitorBrowser: f13ada96777742309ae17a974e934eda8e102508
CapacitorCommunityGenericOauth2: cd98e4a7b684b9fc4c857d6f904fc3fc11812802
- CapacitorCommunityHttp: 21fc56d3c3b5b360dea544409b9d6dd92a73b925
+ CapacitorCommunityHttp: 8aeef698e0a6d35edbb6bb2dc511de3fbfef6417
CapacitorCommunityKeepAwake: 6106b37df55fd4f06e47a2af701ce0dd6ffae1ba
- CapacitorCordova: a6e87fccc0307dee7aec1560ec9398485f2b0ce7
- CapacitorDevice: b8d2ddde4e7f3711f64eb58a69a776e7fc3e53b8
- CapacitorDialog: 956ded6e159a34ae1689a57d3606184511b1eada
- CapacitorFilesystem: 38c55dd651d8a11c4fc815ab7fc8b21b4152c419
- CapacitorFirebaseAnalytics: 1023995c4b63c90e7dcd12f658375df38da1665d
- CapacitorFirebaseMessaging: ee2a6f40389a0615262c3c20c62663170d6f85e3
- CapacitorFirebaseRemoteConfig: 1b965ab1810567f574155e88d936831fcd5ba300
+ CapacitorCordova: c07921bdcfec6f691bae22274446b4d606ebf6a4
+ CapacitorDevice: 4aceb502ce1142ea45a2aece603169d7479cd271
+ CapacitorDialog: 31f0f4391e42e93c0f0f7731409b92faaf505fc2
+ CapacitorFilesystem: afe2c055f1e379385c80eafdece32751926b2910
+ CapacitorFirebaseAnalytics: bbae7a1f78d18e5571ea2bfdafc3511d075f5ab3
+ CapacitorFirebaseMessaging: 09f9402613a755af4ef37c6ce2fd7b4c02250246
+ CapacitorFirebaseRemoteConfig: b0e0fc1f966a0115c63fc06d1ac663fb9c0fe2b3
CapacitorGrabIntentExtras: d8d09d1f663e289571d68fda33e42b1435418843
CapacitorHaptics: 85a1ecd1d3026089642518d789f0fb81fe93cf80
- CapacitorKeyboard: d878396bca6a0fefb313b1546c169648b5ae812a
- CapacitorLocalNotifications: 40c66684f386e79d421f4099e4bda3d76a6909f8
- CapacitorMlkitBarcodeScanning: 018a1efa45366e5703b372c1b10bc839dfca7dc3
- CapacitorNetwork: 15cb4385f0913a8ceb5e9a4d7af1ec554bdb8de8
- CapacitorSplashScreen: 4ff6258039d0ea77b289edb9503a50ba02d58189
+ CapacitorKeyboard: 38db46e3e9a8024814994b5a909f102f3d27c207
+ CapacitorLocalNotifications: 73765422be07829b2d0a4c7c22a77ea2252ca210
+ CapacitorMlkitBarcodeScanning: 31c6af9f39873ff69e16ed5b39ebe2e1915f16fe
+ CapacitorNetwork: b719d692a8d1310da8d26d6648d3aa1ef1e100e1
+ CapacitorSplashScreen: 0b962a2bee014151569dc59b089ba0e93daeeaf0
CapacitorStatusBar: 37ca5200a1791340c519239521ec2519d384eacb
- CapacitorTextZoom: 6d63527e15bddd528428d15843b12b738a9781f2
+ CapacitorTextZoom: b3c80b09abef831245bc3434b1c03aa898ad4762
CapacitorVoiceRecorder: 27c4c998c2280571d853579f319f6f53f884bdee
- CordovaPlugins: ac50ef79b47bb555918076fd8a3322c897658a3b
- Firebase: 4453b799f72f625384dc23f412d3be92b0e3b2a0
- FirebaseABTesting: 40774deef367dcc7b736b6c26dd59ce0fab42f41
- FirebaseAnalytics: d275f288881d4417f780115dd52c05fa9752d530
- FirebaseCore: 74f647ad9739ea75112ce6c3b3b91f5488ce1122
- FirebaseCoreInternal: 43c1788eaeee9d1b97caaa751af567ce11010d00
- FirebaseInstallations: 390ea1d10a4d02b20c965cbfd527ee9b3b412acb
- FirebaseMessaging: b285329399cc6edd73b5b32864c68454177bcf3f
- FirebaseRemoteConfig: 1dd5164b2183aff07c7726df6b0212ad5154c1fe
- FirebaseSharedSwift: 19b3f709993d6fa1d84941d41c01e3c4c11eab93
- GoogleAppMeasurement: a65314d316443969ed3d3709b3a187448ed6418f
- GoogleDataTransport: bed3a36c04c8552479fbb9b76326e0fc69bddcb2
- GoogleMLKit: 2bd0dc6253c4d4f227aad460f69215a504b2980e
- GoogleToolboxForMac: 8bef7c7c5cf7291c687cf5354f39f9db6399ad34
- GoogleUtilities: d053d902a8edaa9904e1bd00c37535385b8ed152
- GoogleUtilitiesComponents: 679b2c881db3b615a2777504623df6122dd20afe
- GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2
- MLImage: 7bb7c4264164ade9bf64f679b40fb29c8f33ee9b
- MLKitBarcodeScanning: 04e264482c5f3810cb89ebc134ef6b61e67db505
- MLKitCommon: c1b791c3e667091918d91bda4bba69a91011e390
- MLKitVision: 8baa5f46ee3352614169b85250574fde38c36f49
- nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5
+ CordovaPlugins: 641afcfc8b28942f8b339c59f0cd5605e2a5c3cf
+ Firebase: 2d19a10c9a2e48ac532a4303115d3fc9b2798396
+ FirebaseABTesting: 72e4636929660d40844f2a4db15be9d551fc27d6
+ FirebaseAnalytics: e423129866107aeacf6010a280b9c9829f9ea50d
+ FirebaseCore: c7b57863ce0859281a66d16ca36d665c45d332b5
+ FirebaseCoreInternal: 571a2dd8c975410966199623351db3a3265c874d
+ FirebaseInstallations: 6d05424a046b68ca146b4de4376f05b4e9262fc3
+ FirebaseMessaging: b5f7bdc62b91b6102015991fb7bc6fa75f643908
+ FirebaseRemoteConfig: 555e7aea9d097d9eaa5b761522f607c353964988
+ FirebaseRemoteConfigInterop: 0bae7d21510b3a0a79af727961c4973aac585add
+ FirebaseSharedSwift: a652f2174ce29ce333d1f67df955499d2db009f6
+ GoogleAppMeasurement: 8f59e08efecfa1bcd57f0a56fab07d079366268c
+ GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
+ GoogleMLKit: ddd51d7dff36ff28defa69afedd9cdce684fd857
+ GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8
+ GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
+ GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
+ MLImage: 2ab9c968e75f57911c16f4c9d9e8a8e9604a86a1
+ MLKitBarcodeScanning: 72c6437f13a900833b400136be53a8a5d86f42fa
+ MLKitCommon: 26b779f072a182c1603d4c88a101c350cac837b1
+ MLKitVision: fa8dea9012ac59497c79ddbe9ebf32051047ac4c
+ nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
OAuthSwift: 75efbb5bd9a4b2b71a37bd7e986bf3f55ddd54c6
PerfoodCapacitorHealthkit: 0708728954308c0217daa6912deeb73df7cba050
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
-PODFILE CHECKSUM: ca9271ce01fe21f103b377734134f2a263996099
+PODFILE CHECKSUM: 1a8d6fc7b486bbb8291d9ae589b8f48c65672af5
COCOAPODS: 1.16.2
diff --git a/package-lock.json b/package-lock.json
index 37ccdd831..0011e3f61 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -31,7 +31,7 @@
"pako": "^2.1.0",
"@capacitor/app-launcher": "^5.0.7",
"path": "^0.12.7",
- "@capacitor/text-zoom": "^5.0.7",
+ "@capacitor/text-zoom": "^8.0.0",
"yaml": "^1.10.0",
"swiper": "^11.1.1",
"xcode": "^3.0.1",
@@ -39,7 +39,7 @@
"@capacitor/local-notifications": "^5.0.2",
"execa": "^4.0.3",
"emojis-list": "^3.0.0",
- "@capacitor-mlkit/barcode-scanning": "^5.4.0",
+ "@capacitor-mlkit/barcode-scanning": "^8.1.0",
"buffer": "^6.0.3",
"@perfood/capacitor-healthkit": "^1.3.2",
"moment": "^2.29.4",
@@ -59,19 +59,19 @@
"unorm": "^1.6.0",
"avro-js": "^1.11.3",
"dompurify": "^2.2.8",
- "@capacitor-firebase/analytics": "^5.0.0",
+ "@capacitor-firebase/analytics": "^8.2.0",
"@types/pako": "^2.0.3",
"capacitor-voice-recorder": "github:mpgxvii/capacitor-voice-recorder",
"@angular/forms": "~14.3.0",
"smoothscroll-polyfill": "^0.4.4",
"@auth0/angular-jwt": "5.0.0",
"@logisticinfotech/ionic4-datepicker": "^1.4.4",
- "@capacitor-firebase/remote-config": "^5.0.0",
- "@capacitor/ios": "5.7.4",
+ "@capacitor-firebase/remote-config": "^8.2.0",
+ "@capacitor/ios": "^8.3.4",
"follow-redirects": "^1.15.6",
"compare-versions": "^5.0.3",
"eventemitter3": "^5.0.1",
- "@capacitor/core": "5.7.4",
+ "@capacitor/core": "^8.3.4",
"graphlib": "^2.1.8",
"p-limit": "^6.2.0",
"autoprefixer": "^10.0.0",
@@ -84,14 +84,14 @@
"@angular-devkit/build-angular": "~14.2.13",
"@angular/cdk": "^14.2.7",
"ionicons": "^6.1.1",
- "@capacitor-firebase/messaging": "^5.0.0",
+ "@capacitor-firebase/messaging": "^8.2.0",
"snyk": "^1.1089.0",
"@capacitor/keyboard": "^5.0.8",
"@angular/platform-browser": "~14.3.0",
"@capacitor/dialog": "^5.0.2",
"requires-port": "^1.0.0",
"@angular/compiler": "~14.3.0",
- "@capacitor/android": "5.7.4",
+ "@capacitor/android": "^8.3.4",
"firebase": "^10.8.0",
"moment-timezone": "^0.5.40"
},
@@ -120,10 +120,10 @@
"postcss": "^8.1.0",
"jasmine": "^3.6.1",
"patch-package": "^8.0.0",
- "@capacitor/cli": "5.7.4",
+ "@capacitor/cli": "^8.3.4",
"postcss-cli": "^11.0.0",
"karma-cli": "^2.0.0",
- "cordova-sqlite-storage": "^6.0.0",
+ "cordova-sqlite-storage": "^7.0.0",
"karma-browserify": "^7.0.0",
"typescript": "4.6",
"@types/jasmine": "~3.6.0",
@@ -220,6 +220,19 @@
"node": ">=4"
}
},
+ "node_modules/watchify/node_modules/micromatch/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/multicast-dns": {
"version": "7.2.5",
"resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
@@ -391,6 +404,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/pacote/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/parse5-sax-parser": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz",
@@ -1158,8 +1178,8 @@
}
},
"node_modules/@capacitor-community/http": {
- "version": "2.0.0-0",
- "resolved": "git+ssh://git@github.com/mpgxvii/capacitor-http.git#3fb4962e55068af46ac0480afb27708afda16e4d",
+ "version": "2.0.1",
+ "resolved": "git+ssh://git@github.com/mpgxvii/capacitor-http.git#7bc58a8f64733ee3d0b1708566bb6ca1ebdaaa59",
"license": "MIT",
"dependencies": {
"@capacitor/android": "^4.0.0",
@@ -1222,19 +1242,6 @@
"semver": "bin/semver"
}
},
- "node_modules/watchify/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/webpack-dev-server": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz",
@@ -1644,6 +1651,25 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/pacote/node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/write-file-stdout": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/write-file-stdout/-/write-file-stdout-0.0.2.tgz",
@@ -1664,6 +1690,13 @@
"node": ">=0.10.0"
}
},
+ "node_modules/node-gyp/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/table": {
"version": "6.9.0",
"resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
@@ -2805,12 +2838,12 @@
}
},
"node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
- "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz",
+ "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.3"
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -2955,6 +2988,19 @@
"node": ">=0.10.0"
}
},
+ "node_modules/watchify/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/os-locale/node_modules/execa": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
@@ -3555,12 +3601,12 @@
}
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz",
- "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz",
+ "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -3615,14 +3661,24 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
- "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/rimraf/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
"node_modules/@csstools/postcss-trigonometric-functions": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz",
@@ -3732,28 +3788,28 @@
}
},
"node_modules/@capacitor/cli": {
- "version": "5.7.4",
- "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-5.7.4.tgz",
- "integrity": "sha512-Cn7ndfMHWfMT+A/wRoeac4/mAxZWNTlZoD1Mn7UQyVV+iGxZB2JpS9omqha7gBN4xrAuTi/X9FqkzrmR+1V96A==",
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-8.3.4.tgz",
+ "integrity": "sha512-QEmyNdiDDVNYl0Mahm7YTVA/3t2tKcy7FWYDapeKGavS6HDNHZSjyTVwQpUXQbDZrrs/PS2Wau3Aii+LIFwm/A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "semver": "^7.3.7",
- "@ionic/utils-subprocess": "^2.1.11",
- "tslib": "^2.4.0",
- "tar": "^6.1.11",
- "@ionic/utils-fs": "^3.1.6",
- "@ionic/utils-terminal": "^2.3.3",
- "@ionic/cli-framework-output": "^2.2.5",
+ "semver": "^7.6.3",
+ "@ionic/utils-subprocess": "^3.0.1",
+ "tslib": "^2.8.1",
+ "tar": "^7.5.3",
+ "@ionic/utils-terminal": "^2.3.5",
+ "fs-extra": "^11.2.0",
+ "@ionic/cli-framework-output": "^2.2.8",
"prompts": "^2.4.2",
- "debug": "^4.3.4",
- "xml2js": "^0.5.0",
- "native-run": "^2.0.0",
- "kleur": "^4.1.4",
- "plist": "^3.0.5",
- "rimraf": "^4.4.1",
+ "debug": "^4.4.0",
+ "xml2js": "^0.6.2",
+ "native-run": "^2.0.3",
+ "kleur": "^4.1.5",
+ "plist": "^3.1.0",
+ "rimraf": "^6.0.1",
"open": "^8.4.0",
- "commander": "^9.3.0",
+ "commander": "^12.1.0",
"env-paths": "^2.2.0"
},
"bin": {
@@ -3761,7 +3817,7 @@
"capacitor": "bin/capacitor"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=22.0.0"
}
},
"node_modules/json-parse-even-better-errors": {
@@ -3810,14 +3866,14 @@
}
},
"node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
- "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.28.6",
- "@babel/parser": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -4735,6 +4791,20 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/watchify/node_modules/micromatch/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/@parcel/watcher-win32-x64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz",
@@ -5369,14 +5439,14 @@
}
},
"node_modules/@babel/helper-wrap-function/node_modules/@babel/template": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
- "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.28.6",
- "@babel/parser": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -5627,12 +5697,12 @@
}
},
"node_modules/@capacitor/text-zoom": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/@capacitor/text-zoom/-/text-zoom-5.0.8.tgz",
- "integrity": "sha512-AUroX3VFhV7eqGQUO6Z88DIrn3lEn/r4P38Jd+xxMG2gA3epEcR57/vLCruGsHJYYkN5oA/7EeNgWEtK0iKnZA==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@capacitor/text-zoom/-/text-zoom-8.0.1.tgz",
+ "integrity": "sha512-hib9Srjme4DRmbzGYfwAWB5OIl0C3ihjXQNTpMMSVqBUxlHfm3O35H/In6FtNrbJ78ro13Zb0NDDK8o3kLPEnQ==",
"license": "MIT",
"peerDependencies": {
- "@capacitor/core": "^5.0.0"
+ "@capacitor/core": ">=8.0.0"
}
},
"node_modules/path-is-absolute": {
@@ -5906,6 +5976,19 @@
"node": ">=10"
}
},
+ "node_modules/@capacitor/cli/node_modules/semver": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz",
+ "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/colorette": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
@@ -5913,6 +5996,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/stylelint/node_modules/parse-json": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
@@ -6127,13 +6223,13 @@
}
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
- "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz",
+ "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==",
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -6152,12 +6248,13 @@
"license": "MIT"
},
"node_modules/tar/node_modules/minipass": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
- "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
- "license": "ISC",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
"engines": {
- "node": ">=8"
+ "node": ">=16 || 14 >=14.17"
}
},
"node_modules/@firebase/messaging-interop-types": {
@@ -6787,13 +6884,13 @@
}
},
"node_modules/@babel/types": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
- "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz",
+ "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.28.5"
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -6875,9 +6972,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.29.3",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz",
- "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -7011,12 +7108,12 @@
}
},
"node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz",
- "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz",
+ "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -7141,13 +7238,13 @@
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz",
- "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz",
+ "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/template": "^7.28.6"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/template": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -7361,6 +7458,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/@isaacs/fs-minipass/node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -7743,6 +7850,24 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/@capacitor/cli/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/stylelint-order/node_modules/resolve-from": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
@@ -7804,14 +7929,14 @@
}
},
"node_modules/@babel/plugin-transform-function-name": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz",
- "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz",
+ "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -7835,10 +7960,14 @@
}
},
"node_modules/tar/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "license": "ISC"
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/to-object-path": {
"version": "0.3.0",
@@ -8026,12 +8155,12 @@
"license": "ISC"
},
"node_modules/@babel/parser": {
- "version": "7.29.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz",
- "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz",
+ "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.29.0"
+ "@babel/types": "^7.29.7"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -8142,14 +8271,14 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz",
- "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz",
+ "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.28.5",
- "@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/traverse": "^7.28.6"
+ "@babel/helper-member-expression-to-functions": "^7.29.7",
+ "@babel/helper-optimise-call-expression": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -8400,12 +8529,12 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
- "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz",
+ "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.3"
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -8454,12 +8583,12 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz",
- "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz",
+ "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -8525,9 +8654,9 @@
}
},
"node_modules/@capacitor-firebase/remote-config": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/@capacitor-firebase/remote-config/-/remote-config-5.4.1.tgz",
- "integrity": "sha512-wCyQsQjOUzufvFlpbnV5ap4PD801r7NCSK6yidEQqEl5JOlgP+gowx6ilq7sHc/8MsmL0fsDpcQMdoTwuzTmKA==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@capacitor-firebase/remote-config/-/remote-config-8.2.0.tgz",
+ "integrity": "sha512-z3HesLrzfzQLUcyVGGx1Nvg41NJC/mMgp1dgMfAtHUTc6nAW2TOlrr4qsOUQBJ0LPmMoNiNDqN/L7xUE04SrIw==",
"funding": [
{
"type": "github",
@@ -8540,8 +8669,8 @@
],
"license": "Apache-2.0",
"peerDependencies": {
- "@capacitor/core": "^5.0.0",
- "firebase": "^9.0.0 || ^10.0.0"
+ "@capacitor/core": ">=8.0.0",
+ "firebase": "^12.6.0"
},
"peerDependenciesMeta": {
"firebase": {
@@ -8738,12 +8867,12 @@
}
},
"node_modules/@babel/plugin-transform-new-target": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz",
- "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz",
+ "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -9137,13 +9266,13 @@
}
},
"node_modules/@babel/traverse/node_modules/@babel/generator": {
- "version": "7.29.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
- "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz",
+ "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.29.0",
- "@babel/types": "^7.29.0",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -9240,21 +9369,6 @@
"node": ">=0.8.0"
}
},
- "node_modules/postcss-cli/node_modules/fs-extra": {
- "version": "11.3.5",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz",
- "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
"node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
@@ -9336,12 +9450,12 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
- "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/helper-validator-identifier": "^7.29.7",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -9639,13 +9753,13 @@
}
},
"node_modules/commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^12.20.0 || >=14"
+ "node": ">=18"
}
},
"node_modules/is-path-in-cwd": {
@@ -9746,12 +9860,12 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz",
- "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz",
+ "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -9937,12 +10051,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz",
- "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz",
+ "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -10146,14 +10260,14 @@
}
},
"node_modules/@ionic/utils-process": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.11.tgz",
- "integrity": "sha512-Uavxn+x8j3rDlZEk1X7YnaN6wCgbCwYQOeIjv/m94i1dzslqWhqIHEqxEyeE8HsT5Negboagg7GtQiABy+BLbA==",
+ "version": "2.1.12",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.12.tgz",
+ "integrity": "sha512-Jqkgyq7zBs/v/J3YvKtQQiIcxfJyplPgECMWgdO0E1fKrrH8EF0QGHNJ9mJCn6PYe2UtHNS8JJf5G21e09DfYg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ionic/utils-object": "2.1.6",
- "@ionic/utils-terminal": "2.3.4",
+ "@ionic/utils-terminal": "2.3.5",
"debug": "^4.0.0",
"signal-exit": "^3.0.3",
"tree-kill": "^1.2.2",
@@ -10230,9 +10344,9 @@
}
},
"node_modules/@ionic/utils-stream": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.6.tgz",
- "integrity": "sha512-4+Kitey1lTA1yGtnigeYNhV/0tggI3lWBMjC7tBs1K9GXa/q7q4CtOISppdh8QgtOhrhAXS2Igp8rbko/Cj+lA==",
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.7.tgz",
+ "integrity": "sha512-eSELBE7NWNFIHTbTC2jiMvh1ABKGIpGdUIvARsNPMNQhxJB3wpwdiVnoBoTYp+5a6UUIww4Kpg7v6S7iTctH1w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10523,6 +10637,22 @@
"safe-buffer": "^5.1.1"
}
},
+ "node_modules/@ionic/utils-fs/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/snapdragon/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -10673,13 +10803,13 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz",
- "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz",
+ "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.28.5"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -10768,12 +10898,12 @@
}
},
"node_modules/@babel/plugin-transform-literals": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz",
- "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz",
+ "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -11292,14 +11422,14 @@
}
},
"node_modules/@babel/traverse/node_modules/@babel/template": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
- "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.28.6",
- "@babel/parser": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -11351,14 +11481,14 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
- "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.28.6",
- "@babel/helper-validator-identifier": "^7.28.5",
- "@babel/traverse": "^7.28.6"
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -11435,12 +11565,12 @@
}
},
"node_modules/@capacitor/ios": {
- "version": "5.7.4",
- "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-5.7.4.tgz",
- "integrity": "sha512-tQH24WMSYVKYr/Jl1gFImooQmu8OdXUFHoDaPV1WpZIiwbwxbTdwOXeLlGes5U8B8t7xuxTWMWMDt3IwRlDbhQ==",
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-8.3.4.tgz",
+ "integrity": "sha512-XvvnPFWWP/gwwO811ue7nEBKSZqDCIB8hxGgWV6iXA7DSVLqMOEmQdfHj94kkVxof2wL9XWHypu3ayDULo7U5w==",
"license": "MIT",
"peerDependencies": {
- "@capacitor/core": "^5.7.0"
+ "@capacitor/core": "^8.3.0"
}
},
"node_modules/@tsconfig/node12": {
@@ -12075,27 +12205,6 @@
"semver": "bin/semver.js"
}
},
- "node_modules/@ionic/utils-subprocess/node_modules/@ionic/utils-terminal": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.4.tgz",
- "integrity": "sha512-cEiMFl3jklE0sW60r8JHH3ijFTwh/jkdEKWbylSyExQwZ8pPuwoXz7gpkWoJRLuoRHHSvg+wzNYyPJazIHfoJA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/slice-ansi": "^4.0.0",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "tslib": "^2.0.1",
- "untildify": "^4.0.0",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
"node_modules/node-gyp": {
"version": "9.4.1",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz",
@@ -12227,6 +12336,19 @@
"url": "https://opencollective.com/express"
}
},
+ "node_modules/watchify/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/jsonfilter/node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
@@ -12589,20 +12711,18 @@
}
},
"node_modules/rimraf/node_modules/glob": {
- "version": "9.3.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz",
- "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==",
- "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "fs.realpath": "^1.0.0",
- "minimatch": "^8.0.2",
- "minipass": "^4.2.4",
- "path-scurry": "^1.6.1"
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -12784,13 +12904,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz",
- "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz",
+ "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -13149,13 +13269,13 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
- "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.28.6",
- "@babel/helper-validator-option": "^7.27.1",
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
@@ -13645,14 +13765,14 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz",
- "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz",
+ "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/plugin-transform-optional-chaining": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
+ "@babel/plugin-transform-optional-chaining": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -13713,12 +13833,12 @@
}
},
"node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz",
- "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz",
+ "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -14140,13 +14260,13 @@
}
},
"node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz",
- "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz",
+ "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -14518,17 +14638,17 @@
}
},
"node_modules/path-scurry": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
- "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "lru-cache": "^10.2.0",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
},
"engines": {
- "node": ">=16 || 14 >=14.18"
+ "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -14802,13 +14922,13 @@
}
},
"node_modules/@babel/plugin-transform-object-super": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz",
- "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz",
+ "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-replace-supers": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-replace-supers": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -15277,19 +15397,18 @@
}
},
"node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "version": "11.3.5",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz",
+ "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=14.14"
}
},
"node_modules/css-rule-stream/node_modules/isarray": {
@@ -15346,6 +15465,15 @@
"node": ">=0.8"
}
},
+ "node_modules/cacache/node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/needle/node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -15620,13 +15748,13 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.29.2",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz",
- "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.28.6",
- "@babel/types": "^7.29.0"
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -15748,12 +15876,12 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz",
- "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz",
+ "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -15944,9 +16072,9 @@
"license": "MIT"
},
"node_modules/@capacitor-firebase/analytics": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/@capacitor-firebase/analytics/-/analytics-5.4.1.tgz",
- "integrity": "sha512-vhTV5h4mugYuFu9XZ8raRhLUryORmLszr925eNgmkRTi/T8+e82domv08nZgbN1XJJ8+o8mW1Oe6TK3lnNB99A==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@capacitor-firebase/analytics/-/analytics-8.2.0.tgz",
+ "integrity": "sha512-WHXMee80NTduTAHLtNrZdMRpsO/LnV63cMs5c3iK0lSm1lEcnagzpML5IbueqzO92zTjzTP3rZyHy7DHlORr2A==",
"funding": [
{
"type": "github",
@@ -15959,8 +16087,8 @@
],
"license": "Apache-2.0",
"peerDependencies": {
- "@capacitor/core": "^5.0.0",
- "firebase": "^9.0.0 || ^10.0.0"
+ "@capacitor/core": ">=8.0.0",
+ "firebase": "^12.6.0"
},
"peerDependenciesMeta": {
"firebase": {
@@ -15993,13 +16121,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz",
- "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz",
+ "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -16240,9 +16368,9 @@
}
},
"node_modules/cordova-sqlite-storage-dependencies": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cordova-sqlite-storage-dependencies/-/cordova-sqlite-storage-dependencies-4.1.0.tgz",
- "integrity": "sha512-D0ZXfNkS3z9GO+Ha2rC2odvOOMcx/moL8lpVDFxXqcsCEZbJimuki4wZfdrQrGlNd/d7r4DNodljRmO20v6Ntg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cordova-sqlite-storage-dependencies/-/cordova-sqlite-storage-dependencies-5.0.0.tgz",
+ "integrity": "sha512-WjWm1QX+2JyLxjaNmYX2kNzmhrRk8q6n4GQ1PkUc79xR2bmJeO/m3koSuPemnWJdLdlsqDz8dCEHmgQSxhYjcg==",
"dev": true,
"license": "MIT"
},
@@ -16511,13 +16639,13 @@
}
},
"node_modules/rimraf/node_modules/minipass": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
- "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"engines": {
- "node": ">=8"
+ "node": ">=16 || 14 >=14.17"
}
},
"node_modules/end-of-stream": {
@@ -17147,6 +17275,13 @@
"node": ">= 0.10.0"
}
},
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0"
+ },
"node_modules/date-format": {
"version": "4.0.14",
"resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz",
@@ -17182,19 +17317,20 @@
}
},
"node_modules/rimraf": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
- "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
+ "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "glob": "^9.2.0"
+ "glob": "^13.0.3",
+ "package-json-from-dist": "^1.0.1"
},
"bin": {
- "rimraf": "dist/cjs/src/bin.js"
+ "rimraf": "dist/esm/bin.mjs"
},
"engines": {
- "node": ">=14"
+ "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -17588,6 +17724,24 @@
"commander": "^2.11.0"
}
},
+ "node_modules/cacache/node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@angular/compiler-cli": {
"version": "14.3.0",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.3.0.tgz",
@@ -17620,12 +17774,12 @@
}
},
"node_modules/browserify-sign": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz",
- "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==",
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.6.tgz",
+ "integrity": "sha512-sd+Q65fjlWCYWtZKXiKfrUc8d+4jtp/8f0W2NkwzLtoW4bI6UDnWusLWIurHnmurW0XShIRxpwiOX4EoPtXUAg==",
"license": "ISC",
"dependencies": {
- "bn.js": "^5.2.2",
+ "bn.js": "^5.2.3",
"browserify-rsa": "^4.1.1",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
@@ -17849,12 +18003,12 @@
}
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz",
- "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz",
+ "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -18097,12 +18251,12 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz",
- "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz",
+ "integrity": "sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -18128,6 +18282,16 @@
"integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
"license": "MIT"
},
+ "node_modules/pacote/node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.44.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz",
@@ -18450,11 +18614,14 @@
"license": "ISC"
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "version": "11.5.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz",
+ "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==",
"dev": true,
- "license": "ISC"
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
},
"node_modules/regexpp": {
"version": "3.2.0",
@@ -18576,6 +18743,13 @@
"node": ">=0.10.0"
}
},
+ "node_modules/@capacitor/cli/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/postcss-preset-env": {
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz",
@@ -18722,12 +18896,12 @@
}
},
"node_modules/@capacitor/android": {
- "version": "5.7.4",
- "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-5.7.4.tgz",
- "integrity": "sha512-9ETwrCaLaimLHbwGpgfsPS9cHcPMFLmKFdlYsFsYIusMO6aOrcQTA9Q4xVAkr55ava4Wk+pVRniRYsekrbOLdw==",
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-8.3.4.tgz",
+ "integrity": "sha512-7gJjrG3X32Am1QMLqgMztWTYMLMVNE+VZwhekNxhvYizH4mOV05vH+rC9B+f17bCkYZfyu/qXQX6hoY7kLeVZw==",
"license": "MIT",
"peerDependencies": {
- "@capacitor/core": "^5.7.0"
+ "@capacitor/core": "^8.3.0"
}
},
"node_modules/inline-source-map": {
@@ -19329,27 +19503,6 @@
"node": ">=4"
}
},
- "node_modules/@ionic/utils-process/node_modules/@ionic/utils-terminal": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.4.tgz",
- "integrity": "sha512-cEiMFl3jklE0sW60r8JHH3ijFTwh/jkdEKWbylSyExQwZ8pPuwoXz7gpkWoJRLuoRHHSvg+wzNYyPJazIHfoJA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/slice-ansi": "^4.0.0",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "tslib": "^2.0.1",
- "untildify": "^4.0.0",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
"node_modules/globby/node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -19458,17 +19611,17 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
- "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz",
+ "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.29.0",
- "@babel/generator": "^7.29.0",
- "@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.29.0",
- "@babel/template": "^7.28.6",
- "@babel/types": "^7.29.0",
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.7",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7",
"debug": "^4.3.1"
},
"engines": {
@@ -19806,17 +19959,17 @@
}
},
"node_modules/@ionic/utils-subprocess": {
- "version": "2.1.14",
- "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.14.tgz",
- "integrity": "sha512-nGYvyGVjU0kjPUcSRFr4ROTraT3w/7r502f5QJEsMRKTqa4eEzCshtwRk+/mpASm0kgBN5rrjYA5A/OZg8ahqg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-3.0.1.tgz",
+ "integrity": "sha512-cT4te3AQQPeIM9WCwIg8ohroJ8TjsYaMb2G4ZEgv9YzeDqHZ4JpeIKqG2SoaA3GmVQ3sOfhPM6Ox9sxphV/d1A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ionic/utils-array": "2.1.6",
"@ionic/utils-fs": "3.1.7",
- "@ionic/utils-process": "2.1.11",
- "@ionic/utils-stream": "3.1.6",
- "@ionic/utils-terminal": "2.3.4",
+ "@ionic/utils-process": "2.1.12",
+ "@ionic/utils-stream": "3.1.7",
+ "@ionic/utils-terminal": "2.3.5",
"cross-spawn": "^7.0.3",
"debug": "^4.0.0",
"tslib": "^2.0.1"
@@ -19846,12 +19999,12 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz",
- "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz",
+ "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-annotate-as-pure": "^7.29.7",
"regexpu-core": "^6.3.1",
"semver": "^6.3.1"
},
@@ -19897,6 +20050,25 @@
"node": "*"
}
},
+ "node_modules/node-gyp/node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/global-prefix/node_modules/ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
@@ -20891,12 +21063,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz",
- "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz",
+ "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -21603,15 +21775,15 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.29.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz",
- "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz",
+ "integrity": "sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-validator-identifier": "^7.28.5",
- "@babel/traverse": "^7.29.0"
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -22155,13 +22327,13 @@
}
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz",
- "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz",
+ "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -22652,13 +22824,13 @@
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
- "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -22774,12 +22946,12 @@
}
},
"node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz",
- "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz",
+ "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -22798,6 +22970,16 @@
"semver": "bin/semver"
}
},
+ "node_modules/node-gyp/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/import-sort-cli/node_modules/wrap-ansi/node_modules/ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
@@ -23018,12 +23200,12 @@
"license": "ISC"
},
"node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz",
- "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz",
+ "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -23138,9 +23320,9 @@
}
},
"node_modules/@capacitor-firebase/messaging": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/@capacitor-firebase/messaging/-/messaging-5.4.1.tgz",
- "integrity": "sha512-umZawYiWRezoP/05GzsNeXsKSPKWFSW2BPBsul4HgPj94jlwK4Oi188HzVFEhNQjNScA06dwxcK9qnzLvV0H2w==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@capacitor-firebase/messaging/-/messaging-8.2.0.tgz",
+ "integrity": "sha512-zjgvBuJSFfaLVL1sU2zwg68J1nCl+wLvjCNUo5tQJyO8XilUXA0z99BKJx6S6/iSB3+zznxNeoX1Kx54bVpCtg==",
"funding": [
{
"type": "github",
@@ -23153,8 +23335,8 @@
],
"license": "Apache-2.0",
"peerDependencies": {
- "@capacitor/core": "^5.0.0",
- "firebase": "^9.0.0 || ^10.0.0"
+ "@capacitor/core": ">=8.0.0",
+ "firebase": "^12.6.0"
},
"peerDependenciesMeta": {
"firebase": {
@@ -23249,9 +23431,9 @@
}
},
"node_modules/@capacitor-mlkit/barcode-scanning": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/@capacitor-mlkit/barcode-scanning/-/barcode-scanning-5.4.0.tgz",
- "integrity": "sha512-6vmnUm66suMbYnLKlUlBrEX5/xOQYg4laPTGvOL7gmfzcdxvSJA++oHY9L4m3RpDQk3FzmQELSpbIHzvcVYPuw==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@capacitor-mlkit/barcode-scanning/-/barcode-scanning-8.1.0.tgz",
+ "integrity": "sha512-lhOYHZINLOCT0i5YSbSMkouik3zh0BncJouumNTgXCT0/533Z4733jAX9zv+nEd++bE8QHeUl2g0NrewreumnQ==",
"funding": [
{
"type": "github",
@@ -23264,7 +23446,7 @@
],
"license": "Apache-2.0",
"peerDependencies": {
- "@capacitor/core": "^5.0.0"
+ "@capacitor/core": ">=8.0.0"
}
},
"node_modules/doiuse/node_modules/browserslist": {
@@ -23283,12 +23465,12 @@
}
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz",
- "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz",
+ "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -23912,12 +24094,12 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz",
- "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz",
+ "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -24436,13 +24618,13 @@
"license": "ISC"
},
"node_modules/@babel/plugin-transform-for-of": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz",
- "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz",
+ "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -25001,13 +25183,13 @@
"license": "MIT"
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz",
- "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz",
+ "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -25029,6 +25211,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/tar/node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -25506,12 +25698,12 @@
}
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz",
- "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz",
+ "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -25752,9 +25944,9 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -26246,12 +26438,12 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
- "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz",
+ "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.3"
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -26360,6 +26552,16 @@
"node": ">= 4"
}
},
+ "node_modules/watchify/node_modules/micromatch/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/stylefmt/node_modules/postcss-less/node_modules/ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
@@ -26640,17 +26842,17 @@
"license": "MIT"
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz",
- "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz",
+ "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-compilation-targets": "^7.28.6",
- "@babel/helper-globals": "^7.28.0",
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-replace-supers": "^7.28.6",
- "@babel/traverse": "^7.28.6"
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-replace-supers": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -27021,12 +27223,12 @@
}
},
"node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz",
- "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz",
+ "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -27215,14 +27417,14 @@
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz",
- "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz",
+ "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==",
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.28.6",
- "@babel/traverse": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/template": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -27256,9 +27458,9 @@
}
},
"node_modules/brace-expansion": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
- "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
+ "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
@@ -27288,19 +27490,6 @@
"node": ">=4"
}
},
- "node_modules/watchify/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/jszip": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
@@ -27481,19 +27670,6 @@
"integrity": "sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A==",
"license": "MIT"
},
- "node_modules/watchify/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/esbuild-freebsd-64": {
"version": "0.15.5",
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz",
@@ -27632,9 +27808,9 @@
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -27703,13 +27879,13 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz",
- "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz",
+ "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -27837,12 +28013,12 @@
}
},
"node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
- "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz",
+ "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.1"
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -28169,14 +28345,14 @@
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz",
- "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz",
+ "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-wrap-function": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-wrap-function": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -28333,17 +28509,17 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.29.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz",
- "integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz",
+ "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-member-expression-to-functions": "^7.28.5",
- "@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/helper-replace-supers": "^7.28.6",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/traverse": "^7.29.0",
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-member-expression-to-functions": "^7.29.7",
+ "@babel/helper-optimise-call-expression": "^7.29.7",
+ "@babel/helper-replace-supers": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
"semver": "^6.3.1"
},
"engines": {
@@ -29278,14 +29454,14 @@
"license": "MIT"
},
"node_modules/@babel/helpers/node_modules/@babel/template": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
- "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.28.6",
- "@babel/parser": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -29588,9 +29764,9 @@
"license": "MIT"
},
"node_modules/xml2js": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
- "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -29798,9 +29974,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
- "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
+ "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -29849,12 +30025,12 @@
}
},
"node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
- "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz",
+ "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.3"
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -29930,13 +30106,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz",
- "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz",
+ "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -30224,16 +30400,16 @@
}
},
"node_modules/rimraf/node_modules/minimatch": {
- "version": "8.0.7",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.7.tgz",
- "integrity": "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==",
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "brace-expansion": "^5.0.5"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -30403,13 +30579,13 @@
}
},
"node_modules/cordova-sqlite-storage": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cordova-sqlite-storage/-/cordova-sqlite-storage-6.1.0.tgz",
- "integrity": "sha512-ko/edy+u9MJVYrXdB6OXUklH0eIRWpa/Rvang7YkvQvsswc9vZr0pM/Ty6eX0MJtLOMJuCXIOiiHZZZbZSZikw==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cordova-sqlite-storage/-/cordova-sqlite-storage-7.0.0.tgz",
+ "integrity": "sha512-BV1KCNtHnFD37ZQmhztStKsaNxniGlLcUSiQ9wieWH2PpZ0gH/tuWeINrrXGKIt9teTukYRnxFyerQ/Lc9x41A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "cordova-sqlite-storage-dependencies": "4.1.0"
+ "cordova-sqlite-storage-dependencies": "5.0.0"
}
},
"node_modules/is-core-module": {
@@ -30800,9 +30976,9 @@
"license": "MIT"
},
"node_modules/@babel/helper-globals": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
- "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -31860,6 +32036,19 @@
"typescript": "^3.2.4"
}
},
+ "node_modules/rimraf/node_modules/brace-expansion": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
"node_modules/postcss-sass/node_modules/picocolors": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
@@ -31886,6 +32075,12 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/cacache/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
"node_modules/boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
@@ -32312,21 +32507,20 @@
}
},
"node_modules/tar": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
- "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
- "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
- "license": "ISC",
+ "version": "7.5.15",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.15.tgz",
+ "integrity": "sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^5.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/stylelint-order/node_modules/ansi-styles": {
@@ -32886,13 +33080,13 @@
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz",
- "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz",
+ "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==",
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.28.5",
- "@babel/types": "^7.28.5"
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -32937,6 +33131,19 @@
"node": ">=4.0.0"
}
},
+ "node_modules/tar/node_modules/minizlib": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
"node_modules/yaml": {
"version": "1.10.3",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz",
@@ -33141,12 +33348,12 @@
}
},
"node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz",
- "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz",
+ "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -33156,13 +33363,13 @@
}
},
"node_modules/@babel/plugin-transform-spread": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz",
- "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz",
+ "integrity": "sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
diff --git a/package.json b/package.json
index b02470459..c690e5b72 100644
--- a/package.json
+++ b/package.json
@@ -50,28 +50,28 @@
"@angular/router": "~14.3.0",
"@auth0/angular-jwt": "5.0.0",
"@capacitor-community/generic-oauth2": "^6.1.0",
+ "@capacitor-community/http": "github:mpgxvii/capacitor-http",
"@capacitor-community/keep-awake": "^4.0.0",
- "@capacitor-firebase/analytics": "^5.0.0",
- "@capacitor-firebase/messaging": "^5.0.0",
- "@capacitor-firebase/remote-config": "^5.0.0",
- "@capacitor-mlkit/barcode-scanning": "^5.4.0",
- "@capacitor/android": "5.7.4",
+ "@capacitor-firebase/analytics": "^8.2.0",
+ "@capacitor-firebase/messaging": "^8.2.0",
+ "@capacitor-firebase/remote-config": "^8.2.0",
+ "@capacitor-mlkit/barcode-scanning": "^8.1.0",
+ "@capacitor/android": "^8.3.4",
"@capacitor/app": "5.0.7",
"@capacitor/app-launcher": "^5.0.7",
"@capacitor/browser": "^5.2.0",
- "@capacitor/core": "5.7.4",
+ "@capacitor/core": "^8.3.4",
"@capacitor/device": "^5.0.2",
"@capacitor/dialog": "^5.0.2",
"@capacitor/filesystem": "^5.0.2",
"@capacitor/haptics": "5.0.7",
- "@capacitor/ios": "5.7.4",
+ "@capacitor/ios": "^8.3.4",
"@capacitor/keyboard": "^5.0.8",
"@capacitor/local-notifications": "^5.0.2",
"@capacitor/network": "^7.0.1",
"@capacitor/splash-screen": "^5.0.2",
"@capacitor/status-bar": "5.0.7",
- "@capacitor/text-zoom": "^5.0.7",
- "@capacitor-community/http": "github:mpgxvii/capacitor-http",
+ "@capacitor/text-zoom": "^8.0.0",
"@ionic/angular": "^7.7.3",
"@ionic/storage": "2.2.0",
"@logisticinfotech/ionic4-datepicker": "^1.4.4",
@@ -129,13 +129,13 @@
"@angular/compiler-cli": "~14.3.0",
"@angular/language-service": "~14.3.0",
"@angular/platform-server": "~14.3.0",
- "@capacitor/cli": "5.7.4",
+ "@capacitor/cli": "^8.3.4",
"@ionic/angular-toolkit": "^7.0.0",
"@types/jasmine": "~3.6.0",
"@types/jasminewd2": "~2.0.3",
"@types/node": "20.12.2",
"codelyzer": "^6.0.2",
- "cordova-sqlite-storage": "^6.0.0",
+ "cordova-sqlite-storage": "^7.0.0",
"eslint": "^7.6.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsdoc": "30.7.6",
diff --git a/patches/capacitor-grab-intent-extras+0.0.4.patch b/patches/capacitor-grab-intent-extras+0.0.4.patch
new file mode 100644
index 000000000..43aa61212
--- /dev/null
+++ b/patches/capacitor-grab-intent-extras+0.0.4.patch
@@ -0,0 +1,252 @@
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build.gradle b/node_modules/capacitor-grab-intent-extras/android/build.gradle
+index 3de9898..42ff6e8 100644
+--- a/node_modules/capacitor-grab-intent-extras/android/build.gradle
++++ b/node_modules/capacitor-grab-intent-extras/android/build.gradle
+@@ -18,6 +18,7 @@ buildscript {
+ apply plugin: 'com.android.library'
+
+ android {
++ namespace 'es.rentingjob.plugins.capgrabintentextras'
+ compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 32
+ defaultConfig {
+ minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/.transforms/7f1550229defbbb310adf097d08ec00f/results.bin b/node_modules/capacitor-grab-intent-extras/android/build/.transforms/7f1550229defbbb310adf097d08ec00f/results.bin
+new file mode 100644
+index 0000000..0d259dd
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/.transforms/7f1550229defbbb310adf097d08ec00f/results.bin
+@@ -0,0 +1 @@
++o/classes
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/.transforms/7f1550229defbbb310adf097d08ec00f/transformed/classes/classes_dex/classes.dex b/node_modules/capacitor-grab-intent-extras/android/build/.transforms/7f1550229defbbb310adf097d08ec00f/transformed/classes/classes_dex/classes.dex
+new file mode 100644
+index 0000000..f54c2ce
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/.transforms/7f1550229defbbb310adf097d08ec00f/transformed/classes/classes_dex/classes.dex differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml
+new file mode 100644
+index 0000000..4a125be
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml
+@@ -0,0 +1,7 @@
++
++
++
++
++
++
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json
+new file mode 100644
+index 0000000..20a5dea
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json
+@@ -0,0 +1,18 @@
++{
++ "version": 3,
++ "artifactType": {
++ "type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
++ "kind": "Directory"
++ },
++ "applicationId": "es.rentingjob.plugins.capgrabintentextras",
++ "variantName": "debug",
++ "elements": [
++ {
++ "type": "SINGLE",
++ "filters": [],
++ "attributes": [],
++ "outputFile": "AndroidManifest.xml"
++ }
++ ],
++ "elementType": "File"
++}
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar
+new file mode 100644
+index 0000000..75b85bb
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties
+new file mode 100644
+index 0000000..1211b1e
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties
+@@ -0,0 +1,6 @@
++aarFormatVersion=1.0
++aarMetadataVersion=1.0
++minCompileSdk=1
++minCompileSdkExtension=0
++minAndroidGradlePluginVersion=1.0.0
++coreLibraryDesugaringEnabled=false
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json
+new file mode 100644
+index 0000000..9e26dfe
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json
+@@ -0,0 +1 @@
++{}
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt
+new file mode 100644
+index 0000000..e69de29
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar
+new file mode 100644
+index 0000000..b3c85ef
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar
+new file mode 100644
+index 0000000..1a1f54a
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt
+new file mode 100644
+index 0000000..e69de29
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state
+new file mode 100644
+index 0000000..1c983fc
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties
+new file mode 100644
+index 0000000..c8f9f13
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties
+@@ -0,0 +1 @@
++#Tue May 26 04:15:01 PST 2026
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml
+new file mode 100644
+index 0000000..9bc47bd
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml
+@@ -0,0 +1,2 @@
++
++
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
+new file mode 100644
+index 0000000..df6b344
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
+@@ -0,0 +1,2 @@
++
++
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/mergeDebugShaders/merger.xml b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/mergeDebugShaders/merger.xml
+new file mode 100644
+index 0000000..e283442
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/mergeDebugShaders/merger.xml
+@@ -0,0 +1,2 @@
++
++
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/packageDebugAssets/merger.xml b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/packageDebugAssets/merger.xml
+new file mode 100644
+index 0000000..1c9c523
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/incremental/packageDebugAssets/merger.xml
+@@ -0,0 +1,2 @@
++
++
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/es/rentingjob/plugins/capgrabintentextras/GrabIntentExtras.class b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/es/rentingjob/plugins/capgrabintentextras/GrabIntentExtras.class
+new file mode 100644
+index 0000000..a084b36
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/es/rentingjob/plugins/capgrabintentextras/GrabIntentExtras.class differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/es/rentingjob/plugins/capgrabintentextras/GrabIntentExtrasPlugin.class b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/es/rentingjob/plugins/capgrabintentextras/GrabIntentExtrasPlugin.class
+new file mode 100644
+index 0000000..93da3a4
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/es/rentingjob/plugins/capgrabintentextras/GrabIntentExtrasPlugin.class differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt
+new file mode 100644
+index 0000000..78ac5b8
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt
+@@ -0,0 +1,2 @@
++R_DEF: Internal format may change without notice
++local
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt
+new file mode 100644
+index 0000000..77775ea
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt
+@@ -0,0 +1,7 @@
++1
++2
++4
++5
++6
++7
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-capacitor-grab-intent-extras.jar b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-capacitor-grab-intent-extras.jar
+new file mode 100644
+index 0000000..15cb0ec
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-capacitor-grab-intent-extras.jar differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml
+new file mode 100644
+index 0000000..4a125be
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml
+@@ -0,0 +1,7 @@
++
++
++
++
++
++
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json
+new file mode 100644
+index 0000000..0637a08
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json
+@@ -0,0 +1 @@
++[]
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt
+new file mode 100644
+index 0000000..08f4ebe
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt
+@@ -0,0 +1 @@
++0 Warning/Error
+\ No newline at end of file
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar
+new file mode 100644
+index 0000000..8f13546
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt
+new file mode 100644
+index 0000000..22c8777
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt
+@@ -0,0 +1 @@
++es.rentingjob.plugins.capgrabintentextras
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/outputs/aar/capacitor-grab-intent-extras-debug.aar b/node_modules/capacitor-grab-intent-extras/android/build/outputs/aar/capacitor-grab-intent-extras-debug.aar
+new file mode 100644
+index 0000000..e08a4f4
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/outputs/aar/capacitor-grab-intent-extras-debug.aar differ
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/outputs/logs/manifest-merger-debug-report.txt b/node_modules/capacitor-grab-intent-extras/android/build/outputs/logs/manifest-merger-debug-report.txt
+new file mode 100644
+index 0000000..d0e6f48
+--- /dev/null
++++ b/node_modules/capacitor-grab-intent-extras/android/build/outputs/logs/manifest-merger-debug-report.txt
+@@ -0,0 +1,17 @@
++-- Merging decision tree log ---
++manifest
++ADDED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml:1:1-3:12
++INJECTED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml:1:1-3:12
++ package
++ ADDED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml:2:5-56
++ INJECTED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml
++ xmlns:android
++ ADDED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml:1:11-69
++uses-sdk
++INJECTED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml reason: use-sdk injection requested
++INJECTED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml
++INJECTED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml
++ android:targetSdkVersion
++ INJECTED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml
++ android:minSdkVersion
++ INJECTED from /Users/k1787513/RADAR/RADAR-Questionnaire/node_modules/capacitor-grab-intent-extras/android/src/main/AndroidManifest.xml
+diff --git a/node_modules/capacitor-grab-intent-extras/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin b/node_modules/capacitor-grab-intent-extras/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin
+new file mode 100644
+index 0000000..30fa7f6
+Binary files /dev/null and b/node_modules/capacitor-grab-intent-extras/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin differ
diff --git a/src/app/core/services/config/app-config.service.ts b/src/app/core/services/config/app-config.service.ts
index 367df644b..8c5178dde 100644
--- a/src/app/core/services/config/app-config.service.ts
+++ b/src/app/core/services/config/app-config.service.ts
@@ -25,7 +25,7 @@ export class AppConfigService {
SETTINGS_WEEKLYREPORT: StorageKeys.SETTINGS_WEEKLYREPORT
}
- constructor(public storage: StorageService) {}
+ constructor(public storage: StorageService) { }
init(enrolmentDate) {
return Promise.all([
@@ -38,7 +38,7 @@ export class AppConfigService {
}
async getAppVersion() {
- if (Capacitor.isNative) {
+ if (Capacitor.isNativePlatform()) {
const appInfo = await App.getInfo()
return appInfo.version
}
diff --git a/src/app/pages/auth/components/qr-form/qr-form.component.ts b/src/app/pages/auth/components/qr-form/qr-form.component.ts
index 6106d7afe..5bc8f54de 100755
--- a/src/app/pages/auth/components/qr-form/qr-form.component.ts
+++ b/src/app/pages/auth/components/qr-form/qr-form.component.ts
@@ -31,10 +31,10 @@ export class QRFormComponent implements OnDestroy {
// Add the `barcodeScanned` listener
const listener = await BarcodeScanner.addListener(
- 'barcodeScanned',
+ 'barcodesScanned',
async result => {
await listener.remove()
- const data = result.barcode.rawValue
+ const data = result.barcodes[0].rawValue
if (data.includes(this.ORY_KEY)) {
this.ory.emit(data)
}
diff --git a/src/app/pages/questions/components/question/matrix-radio-input/matrix-radio-input.component.html b/src/app/pages/questions/components/question/matrix-radio-input/matrix-radio-input.component.html
index 265868034..d034ead4d 100755
--- a/src/app/pages/questions/components/question/matrix-radio-input/matrix-radio-input.component.html
+++ b/src/app/pages/questions/components/question/matrix-radio-input/matrix-radio-input.component.html
@@ -1,4 +1,4 @@
-
+
diff --git a/src/app/pages/questions/components/question/matrix-radio-input/matrix-radio-input.component.ts b/src/app/pages/questions/components/question/matrix-radio-input/matrix-radio-input.component.ts
index 3453ed8ef..b823961b9 100755
--- a/src/app/pages/questions/components/question/matrix-radio-input/matrix-radio-input.component.ts
+++ b/src/app/pages/questions/components/question/matrix-radio-input/matrix-radio-input.component.ts
@@ -26,8 +26,10 @@ export class MatrixRadioInputComponent implements OnInit, OnChanges {
currentlyShown: boolean
@Input()
previouslyShown: boolean
+ @Input()
+ value: number
- value: number = null
+ selectedValue: number = null
uniqueID: number = uniqueID++
name = `radio-input-${this.uniqueID}`
items: Item[] = Array()
@@ -40,10 +42,12 @@ export class MatrixRadioInputComponent implements OnInit, OnChanges {
value: item.code
})
})
+ // Initialize selectedValue from the input value to restore previous selections
+ this.selectedValue = this.value || null
}
ngOnChanges() {
- if (this.currentlyShown && !this.previouslyShown)
+ if (this.currentlyShown && !this.previouslyShown && !this.selectedValue)
setTimeout(() => this.onInputChange(this.responses[0].code), 100)
}
diff --git a/src/app/pages/questions/components/question/notes-input/notes-input.component.html b/src/app/pages/questions/components/question/notes-input/notes-input.component.html
index 80516977e..86df52b56 100644
--- a/src/app/pages/questions/components/question/notes-input/notes-input.component.html
+++ b/src/app/pages/questions/components/question/notes-input/notes-input.component.html
@@ -1,6 +1,6 @@
*ngSwitchCase="'text'"
(valueChange)="emitAnswer($event)"
(keyboardEvent)="onKeyboardEvent($event)"
- [type]="question.text_validation_type_or_show_slider_number"
+ (showWarningChange)="onWarningFieldChange($event)"
+ [validationType]="question.text_validation_type_or_show_slider_number"
+ [textValidationMin]="question.text_validation_min"
+ [textValidationMax]="question.text_validation_max"
[currentlyShown]="currentlyShown"
+ [canSubmitOnEnter]="canGoNextOnEnter"
>
[responses]="question.select_choices_or_calculations"
[currentlyShown]="currentlyShown"
[previouslyShown]="previouslyShown"
+ [value]="value"
(valueChange)="emitAnswer($event)"
- >
-
+ >
= new EventEmitter()
@Output()
nextAction: EventEmitter = new EventEmitter()
+ @Output()
+ warningState: EventEmitter = new EventEmitter()
sanitizedSectionHeader = ''
sanitizedFieldLabel = ''
@@ -103,7 +108,10 @@ export class QuestionComponent implements OnInit, OnChanges {
QuestionType.checkbox
])
- constructor(private sanitizer: DomSanitizer) {
+ constructor(
+ private sanitizer: DomSanitizer,
+ private answerService: AnswerService
+ ) {
this.value = null
}
@@ -125,6 +133,9 @@ export class QuestionComponent implements OnInit, OnChanges {
setTimeout(() => {
this.showScrollButton = this.isScrollbarVisible()
}, 900)
+
+ // Initialize value from stored answer
+ this.value = this.answerService.answers[this.question.field_name] || null
}
ngOnChanges() {
@@ -143,7 +154,9 @@ export class QuestionComponent implements OnInit, OnChanges {
}
private updateSanitizedHtml() {
- this.sanitizedSectionHeader = this.sanitizeHtml(this.question?.section_header)
+ this.sanitizedSectionHeader = this.sanitizeHtml(
+ this.question?.section_header
+ )
this.sanitizedFieldLabel = this.sanitizeHtml(this.question?.field_label)
}
@@ -240,6 +253,10 @@ export class QuestionComponent implements OnInit, OnChanges {
})
}
+ onWarningFieldChange(showWarning: boolean) {
+ this.warningState.emit(showWarning)
+ }
+
onAudioRecordStart(start: boolean) {
if (start) this.nextAction.emit(NextButtonEventType.DISABLE)
else this.nextAction.emit(NextButtonEventType.ENABLE)
diff --git a/src/app/pages/questions/components/question/text-input/text-input.component.html b/src/app/pages/questions/components/question/text-input/text-input.component.html
index d362664c4..12cd2af28 100644
--- a/src/app/pages/questions/components/question/text-input/text-input.component.html
+++ b/src/app/pages/questions/components/question/text-input/text-input.component.html
@@ -1,39 +1,47 @@
+
+ {{ 'DATE_INPUT_WARNING' | translate }}
+
+
+
+ {{ 'DATE_INPUT_WARNING' | translate }}
+
+
+
+
+
+
+
+
-
+
-
+
+
+ {{
+ isNumericType && useNumberInputWarning
+ ? ('NUMBER_INPUT_WARNING' | translate)
+ : ('TEXT_INPUT_WARNING' | translate)
+ }}
+
-
+
-
+
\ No newline at end of file
diff --git a/src/app/pages/questions/components/question/text-input/text-input.component.ts b/src/app/pages/questions/components/question/text-input/text-input.component.ts
index 481c13751..8574ee6e1 100644
--- a/src/app/pages/questions/components/question/text-input/text-input.component.ts
+++ b/src/app/pages/questions/components/question/text-input/text-input.component.ts
@@ -6,13 +6,19 @@ import {
Output,
ViewChild
} from '@angular/core'
-import { Keyboard } from '@capacitor/keyboard'
import { ModalController } from '@ionic/angular'
import { Ionic4DatepickerModalComponent } from '@logisticinfotech/ionic4-datepicker'
import * as moment from 'moment'
import { LocalizationService } from '../../../../../core/services/misc/localization.service'
import { KeyboardEventType } from '../../../../../shared/enums/events'
+import { InputModeType, ValidationType } from '../../../../../shared/models/question'
+import { DateValidationService } from '../../../services/date-validation.service'
+import {
+ isDateOnlyValidationType,
+ isDateTimeValidationType,
+ isDateValidationType
+} from '../../../validation/date-validation'
@Component({
selector: 'text-input',
@@ -26,14 +32,35 @@ export class TextInputComponent implements OnInit {
valueChange: EventEmitter = new EventEmitter()
@Output()
keyboardEvent: EventEmitter = new EventEmitter()
- @Input()
- type: string
+ @Output()
+ showWarningChange: EventEmitter = new EventEmitter()
@Input()
currentlyShown: boolean
+ @Input()
+ validationType = ''
+ @Input()
+ textValidationMin: string
+ @Input()
+ textValidationMax: string
+
+ /**
+ * Controls whether Enter key submission is allowed.
+ * Set to true when all required questions are answered and current answer is valid.
+ * When false, pressing Enter will show a warning instead of proceeding to the next question.
+ */
+ @Input()
+ canSubmitOnEnter = false
+
+ ValidationType = ValidationType
+ InputModeType = InputModeType
showDatePicker: boolean
+ showDateTimePicker = false
showTimePicker: boolean
showDurationPicker: boolean
+ showWarningField = false
+ useNumberInputWarning = false
+ useDateInputWarning = false
showTextInput = true
showSeconds: boolean
@@ -54,55 +81,83 @@ export class TextInputComponent implements OnInit {
}
textValue = ''
value = {}
- DEFAULT_DATE_FORMAT = 'DD/MM/YYYY'
+ inputModeType = 'text'
+ inputType = 'text'
+ inputStep = 'any'
+ isNumericType = false
+ isIntegerType = false
+ // Regex pattern to validate numeric input (only digits allowed)
+ DIGIT_PATTERN = /^\d*$/
+ // Partial> allows only a subset of ValidationType keys without TypeScript complaining about missing entries
+ INPUT_MODE_MAP: Partial> = {
+ [ValidationType.NUMBER]: InputModeType.NUMBER,
+ [ValidationType.INTEGER]: InputModeType.NUMBER,
+ [ValidationType.EMAIL]: InputModeType.EMAIL,
+ [ValidationType.PHONE]: InputModeType.PHONE
+ }
constructor(
private localization: LocalizationService,
+ private dateValidation: DateValidationService,
public modalCtrl: ModalController
) { }
+ private get dateValidationContext() {
+ return {
+ validationType: this.validationType,
+ textValidationMin: this.textValidationMin,
+ textValidationMax: this.textValidationMax
+ }
+ }
+
ngOnInit() {
- if (this.type.length) {
- this.showDatePicker = this.type.includes('date')
- this.showTimePicker = this.type.includes('time')
- this.showDurationPicker = this.type.includes('duration')
+ if (this.validationType.length) {
+ this.inputModeType =
+ this.INPUT_MODE_MAP[this.validationType as ValidationType] ||
+ InputModeType.TEXT
+
+ this.showDatePicker = isDateOnlyValidationType(this.validationType)
+ this.showDateTimePicker = isDateTimeValidationType(this.validationType)
+ this.showTimePicker = this.validationType === ValidationType.TIME
+ this.showDurationPicker = this.validationType.includes(
+ ValidationType.DURATION
+ )
}
this.showTextInput =
- !this.showDatePicker && !this.showTimePicker && !this.showDurationPicker
- this.showSeconds = this.type.includes('second')
+ !this.showDatePicker &&
+ !this.showDateTimePicker &&
+ !this.showTimePicker &&
+ !this.showDurationPicker
+ this.showSeconds = this.validationType.includes(ValidationType.SECOND)
+ this.isNumericType = this.isNumericValidationType()
+ this.isIntegerType = this.validationType === ValidationType.INTEGER
+ this.inputStep = this.isIntegerType ? '1' : 'any'
+ this.selectedDate = this.localization
+ .moment(Date.now())
+ .format(this.dateValidation.displayFormat)
this.initValues()
}
initValues() {
- if (this.showDatePicker) this.initDates()
- if (this.showTimePicker) this.initTime()
+ if (this.showTimePicker || this.showDateTimePicker) this.initTime()
+ if (this.showDatePicker || this.showDateTimePicker) this.initDates()
if (this.showDurationPicker) this.initDuration()
}
initDates() {
- const momentInstance = this.localization.moment(Date.now()) // Use a local instance
- this.datePickerObj = {
- dateFormat: this.DEFAULT_DATE_FORMAT,
- btnProperties: {
- expand: 'block',
- fill: 'outline',
- size: 'small',
- disabled: '',
- strong: 'true',
- color: 'secondary'
- },
- closeOnSelect: 'true'
- }
+ const momentInstance = this.dateValidation.clampToBounds(
+ this.localization.moment(Date.now()),
+ this.dateValidationContext
+ )
+ this.buildDatePickerObj()
const month = moment.monthsShort()
const day = this.addLeadingZero(Array.from(Array(32).keys()).slice(1, 32))
const year = Array.from(Array(31).keys()).map(d => String(d + 2000))
this.datePickerValues = { day, month, year }
- this.defaultDatePickerValue = {
- day: momentInstance.format('DD'),
- month: momentInstance.format('MMM'),
- year: momentInstance.format('YYYY')
- }
- this.emitAnswer(this.defaultDatePickerValue)
+ this.defaultDatePickerValue =
+ this.dateValidation.toAnswerDateParts(momentInstance)
+ this.selectedDate = momentInstance.format(this.dateValidation.displayFormat)
+ this.emitDateAnswer(this.defaultDatePickerValue)
}
initTime() {
@@ -133,9 +188,13 @@ export class TextInputComponent implements OnInit {
}
datePickerObj: any = {}
- selectedDate: string = this.localization.moment(Date.now()).format(this.DEFAULT_DATE_FORMAT)
+ selectedDate: string
async openDatePicker() {
+ this.dateValidation.applyPickerBounds(
+ this.datePickerObj,
+ this.dateValidationContext
+ )
const datePickerModal = await this.modalCtrl.create({
component: Ionic4DatepickerModalComponent,
cssClass: 'li-ionic4-datePicker',
@@ -147,29 +206,143 @@ export class TextInputComponent implements OnInit {
await datePickerModal.present()
datePickerModal.onDidDismiss().then(data => {
- let date = moment(data.data.date, this.DEFAULT_DATE_FORMAT)
- this.selectedDate = date.isValid() ? date.format(this.DEFAULT_DATE_FORMAT) : this.selectedDate
+ if (!data?.data?.date) return
+
+ const date = this.dateValidation.parseDisplayDate(data.data.date)
+ if (!date) return
- this.defaultDatePickerValue = {
- year: date.format('YYYY'),
- month: date.format('M'),
- day: date.format('D')
+ if (this.dateValidation.isOutOfRange(date, this.dateValidationContext)) {
+ this.setDateWarning(true)
+ return
}
- this.emitAnswer(this.defaultDatePickerValue)
+
+ this.setDateWarning(false)
+ this.selectedDate = date.format(this.dateValidation.displayFormat)
+ this.defaultDatePickerValue =
+ this.dateValidation.toAnswerDateParts(date)
+ this.emitDateAnswer(this.defaultDatePickerValue)
})
}
emitAnswer(value) {
if (!value) value = this.textValue
if (typeof value !== 'string') {
+ if (isDateValidationType(this.validationType)) {
+ this.emitDateAnswer(value as Record)
+ return
+ }
this.value = Object.assign(this.value, value)
this.valueChange.emit(JSON.stringify(this.value))
- } else this.valueChange.emit(value)
+ } else {
+ this.inputValidation(value)
+ this.valueChange.emit(value)
+ }
+ }
+
+ private emitDateAnswer(parts: Record) {
+ this.value = { ...this.value, ...parts }
+ if (
+ !this.dateValidation.isAnswerValid(
+ this.value as Record,
+ this.dateValidationContext,
+ this.defaultTimePickerValue
+ )
+ ) {
+ this.setDateWarning(true)
+ return
+ }
+ this.setDateWarning(false)
+ this.valueChange.emit(JSON.stringify(this.value))
+ }
+
+ inputValidation(value: string) {
+ if (this.isNumericValidationType()) {
+ const invalid = this.isInvalidNumericValue(value)
+ this.showWarningField = invalid
+ this.useNumberInputWarning = invalid
+ } else {
+ this.showWarningField = false
+ this.useNumberInputWarning = false
+ }
+ this.showWarningChange.emit(this.showWarningField)
+ }
+
+ private isNumericValidationType(): boolean {
+ return (
+ this.validationType === ValidationType.NUMBER ||
+ this.validationType === ValidationType.INTEGER
+ )
+ }
+
+ private isInvalidNumericValue(value: string): boolean {
+ if (!this.DIGIT_PATTERN.test(value)) return true
+ return this.isOutOfRange(value)
+ }
+
+ private isOutOfRange(value: string): boolean {
+ if (value === '') return false
+ const numericValue = Number(value)
+ if (Number.isNaN(numericValue)) return false
+ const minValue = this.getBoundValue(this.textValidationMin)
+ const maxValue = this.getBoundValue(this.textValidationMax)
+ if (minValue !== null && numericValue < minValue) return true
+ if (maxValue !== null && numericValue > maxValue) return true
+ return false
+ }
+
+ private getBoundValue(value: string): number | null {
+ if (value === undefined || value === null || value === '') return null
+ const parsedValue = Number(value)
+ return Number.isNaN(parsedValue) ? null : parsedValue
+ }
+
+ private buildDatePickerObj(): void {
+ this.datePickerObj = {
+ dateFormat: this.dateValidation.displayFormat,
+ btnProperties: {
+ expand: 'block',
+ fill: 'outline',
+ size: 'small',
+ disabled: '',
+ strong: 'true',
+ color: 'secondary'
+ },
+ closeOnSelect: 'true'
+ }
+ this.dateValidation.applyPickerBounds(
+ this.datePickerObj,
+ this.dateValidationContext
+ )
+ }
+
+ private setDateWarning(active: boolean): void {
+ this.showWarningField = active
+ this.useDateInputWarning = active
+ this.showWarningChange.emit(active)
}
async emitKeyboardEvent(value) {
value = value.toLowerCase()
- if (value == KeyboardEventType.ENTER) await Keyboard.hide()
+ const isEnter = value === KeyboardEventType.ENTER
+
+ if (isEnter && this.isNumericValidationType()) {
+ this.inputValidation(this.textValue)
+ }
+
+ const isInvalidNumeric =
+ isEnter &&
+ this.isNumericValidationType() &&
+ this.isInvalidNumericValue(this.textValue)
+
+ const shouldBlockEnter =
+ isEnter && (!this.canSubmitOnEnter || isInvalidNumeric)
+
+ if (shouldBlockEnter) {
+ this.useNumberInputWarning = isInvalidNumeric
+ this.showWarningField = true
+ this.showWarningChange.emit(this.showWarningField)
+ return
+ }
this.keyboardEvent.emit(value)
}
diff --git a/src/app/pages/questions/components/question/timed-test/timed-test.component.ts b/src/app/pages/questions/components/question/timed-test/timed-test.component.ts
index 972dea558..59f11b307 100755
--- a/src/app/pages/questions/components/question/timed-test/timed-test.component.ts
+++ b/src/app/pages/questions/components/question/timed-test/timed-test.component.ts
@@ -8,8 +8,6 @@ import {
OnInit,
Output
} from '@angular/core'
-import { Plugins } from '@capacitor/core'
-import { Dialog } from '@capacitor/dialog'
import { Haptics, ImpactStyle } from '@capacitor/haptics'
import { TaskTimer, Timer } from '../../../../../shared/models/timer'
@@ -18,8 +16,6 @@ import {
getSeconds
} from '../../../../../shared/utilities/time'
-const { App, BackgroundTask } = Plugins
-
@Component({
selector: 'timed-test',
templateUrl: 'timed-test.component.html',
@@ -41,13 +37,13 @@ export class TimedTestComponent implements OnInit, OnChanges, OnDestroy {
startTime: number
endTime: number
- constructor(private ref: ChangeDetectorRef) {}
+ constructor(private ref: ChangeDetectorRef) { }
ngOnInit() {
this.initTimer()
}
- ngOnDestroy() {}
+ ngOnDestroy() { }
ngOnChanges() {
if (this.currentlyShown) {
diff --git a/src/app/pages/questions/containers/questions-page.component.html b/src/app/pages/questions/containers/questions-page.component.html
index 0eda28f07..3d0cee1aa 100755
--- a/src/app/pages/questions/containers/questions-page.component.html
+++ b/src/app/pages/questions/containers/questions-page.component.html
@@ -32,8 +32,10 @@
[currentIndex]="currentQuestionGroupId"
[isSectionHeaderHidden]="j != currentQuestionIndices[0]"
[isMatrix]="item.value.length > 1"
+ [canGoNextOnEnter]="canGoNextOnEnter"
(answer)="onAnswer($event)"
(nextAction)="nextAction($event)"
+ (warningState)="handleWarningState($event)"
>
diff --git a/src/app/pages/questions/containers/questions-page.component.ts b/src/app/pages/questions/containers/questions-page.component.ts
index df5368b76..ac562d03a 100644
--- a/src/app/pages/questions/containers/questions-page.component.ts
+++ b/src/app/pages/questions/containers/questions-page.component.ts
@@ -1,4 +1,10 @@
-import { Component, ElementRef, OnInit, ViewChild, OnDestroy } from '@angular/core'
+import {
+ Component,
+ ElementRef,
+ OnInit,
+ ViewChild,
+ OnDestroy
+} from '@angular/core'
import { Router } from '@angular/router'
import { KeepAwake } from '@capacitor-community/keep-awake'
import { NavController, Platform } from '@ionic/angular'
@@ -20,7 +26,8 @@ import {
import {
ExternalApp,
Question,
- QuestionType
+ QuestionType,
+ RequiredField
} from '../../../shared/models/question'
import { Task } from '../../../shared/models/task'
import { AppLauncherService } from '../services/app-launcher.service'
@@ -64,6 +71,9 @@ export class QuestionsPageComponent implements OnInit, OnDestroy {
viewEntered = false
progressCount = 0
retryAlertShownCount = 0
+ isWarningFieldVisible = false
+ canGoNextOnEnter = false
+ RequiredField = RequiredField
SHOW_INTRODUCTION_SET: Set = new Set([
true,
@@ -87,13 +97,13 @@ export class QuestionsPageComponent implements OnInit, OnDestroy {
constructor(
public navCtrl: NavController,
- private questionsService: QuestionsService,
+ public questionsService: QuestionsService,
private usage: UsageService,
private platform: Platform,
private localization: LocalizationService,
private router: Router,
private appLauncher: AppLauncherService,
- private alertService: AlertService,
+ private alertService: AlertService
) {
this.backButtonListener = this.platform.backButton.subscribe(() => {
this.sendCompletionLog()
@@ -201,6 +211,7 @@ export class QuestionsPageComponent implements OnInit, OnDestroy {
onAnswer(event) {
if (event.id) this.questionsService.submitAnswer(event)
+ this.updateToolbarButtons()
}
slideQuestion() {
@@ -273,6 +284,7 @@ export class QuestionsPageComponent implements OnInit, OnDestroy {
this.currentQuestionIndices
this.submitTimestamps()
this.currentQuestionGroupId = this.nextQuestionGroupId
+ this.isWarningFieldVisible = false
this.slideQuestion()
this.updateToolbarButtons()
}
@@ -284,6 +296,7 @@ export class QuestionsPageComponent implements OnInit, OnDestroy {
this.questionOrder[this.questionOrder.length - 1]
this.currentQuestionIndices =
this.allQuestionIndices[this.currentQuestionGroupId]
+ this.isWarningFieldVisible = false
this.updateToolbarButtons()
if (!this.isRightButtonDisabled)
this.questionsService.deleteLastAnswers(currentQuestions)
@@ -294,13 +307,24 @@ export class QuestionsPageComponent implements OnInit, OnDestroy {
// NOTE: Only the first question of each question group is used
const currentQs = this.getCurrentQuestions()
if (!currentQs) return
- this.isRightButtonDisabled =
- !this.questionsService.areAllAnswered(currentQs) &&
+
+ this.canGoNextOnEnter = this.questionsService.areAllAnswered(currentQs)
+
+ const disableByQuestionType =
+ !this.canGoNextOnEnter &&
!this.questionsService.getIsAnyNextEnabled(currentQs)
+
+ this.isRightButtonDisabled =
+ disableByQuestionType || this.isWarningFieldVisible
this.isLeftButtonDisabled =
this.questionsService.getIsAnyPreviousEnabled(currentQs)
}
+ handleWarningState(showWarning: boolean) {
+ this.isWarningFieldVisible = showWarning
+ this.updateToolbarButtons()
+ }
+
exitQuestionnaire() {
this.sendEvent(UsageEventType.QUESTIONNAIRE_CANCELLED)
this.navCtrl.navigateBack('/home')
@@ -438,7 +462,11 @@ export class QuestionsPageComponent implements OnInit, OnDestroy {
}
private initializeSwiper() {
- if (this.slides && this.slides.nativeElement && this.slides.nativeElement.swiper) {
+ if (
+ this.slides &&
+ this.slides.nativeElement &&
+ this.slides.nativeElement.swiper
+ ) {
this.slides.nativeElement.swiper.allowTouchMove = true
this.slides.nativeElement.swiper.threshold = 5
this.slides.nativeElement.swiper.watchSlidesProgress = true
@@ -448,7 +476,11 @@ export class QuestionsPageComponent implements OnInit, OnDestroy {
ngOnDestroy() {
// Cleanup swiper
- if (this.slides && this.slides.nativeElement && this.slides.nativeElement.swiper) {
+ if (
+ this.slides &&
+ this.slides.nativeElement &&
+ this.slides.nativeElement.swiper
+ ) {
this.slides.nativeElement.swiper.destroy(true, true)
}
}
diff --git a/src/app/pages/questions/services/date-validation.service.ts b/src/app/pages/questions/services/date-validation.service.ts
new file mode 100644
index 000000000..43182554f
--- /dev/null
+++ b/src/app/pages/questions/services/date-validation.service.ts
@@ -0,0 +1,161 @@
+import { Injectable } from '@angular/core'
+import { Moment } from 'moment'
+
+import { LocalizationService } from '../../../core/services/misc/localization.service'
+import { DateValidationKeyword } from '../../../shared/models/question'
+import {
+ ANSWER_DATE_FORMATS,
+ BOUND_DATE_FORMAT,
+ BOUND_DATETIME_FORMAT,
+ DateAnswerParts,
+ DATE_DISPLAY_FORMAT,
+ DatePickerBounds,
+ DateValidationContext,
+ edgeOfBound,
+ isDateTimeValidationType,
+ parseDateValidationKeyword
+} from '../validation/date-validation'
+
+@Injectable({ providedIn: 'root' })
+export class DateValidationService {
+ readonly displayFormat = DATE_DISPLAY_FORMAT
+
+ constructor(private localization: LocalizationService) {}
+
+ parseDisplayDate(dateStr: string): Moment | null {
+ const parsed = this.localization.moment(dateStr, this.displayFormat, true)
+ return parsed.isValid() ? parsed : null
+ }
+
+ getPickerBounds(context: DateValidationContext): DatePickerBounds {
+ const min = this.resolveBound(context.textValidationMin, context, 'min')
+ const max = this.resolveBound(context.textValidationMax, context, 'max')
+ return {
+ ...(min && { fromDate: min.toDate() }),
+ ...(max && { toDate: max.toDate() })
+ }
+ }
+
+ applyPickerBounds(
+ pickerConfig: Record,
+ context: DateValidationContext
+ ): void {
+ const { fromDate, toDate } = this.getPickerBounds(context)
+ if (fromDate) pickerConfig.fromDate = fromDate
+ else delete pickerConfig.fromDate
+ if (toDate) pickerConfig.toDate = toDate
+ else delete pickerConfig.toDate
+ }
+
+ toAnswerDateParts(m: Moment): DateAnswerParts {
+ return {
+ day: m.format('DD'),
+ month: m.format('MMM'),
+ year: m.format('YYYY')
+ }
+ }
+
+ momentFromAnswerParts(
+ parts: DateAnswerParts,
+ context: DateValidationContext,
+ defaultTime?: DateAnswerParts
+ ): Moment | null {
+ if (!parts.year || !parts.month || !parts.day) return null
+
+ const date = this.localization.moment(
+ `${parts.year}-${parts.month}-${parts.day}`,
+ ANSWER_DATE_FORMATS,
+ true
+ )
+ if (!date.isValid()) return null
+ if (!isDateTimeValidationType(context.validationType)) {
+ return date.startOf('day')
+ }
+
+ const time = this.localization.moment(
+ `${parts.hour ?? defaultTime?.hour ?? '12'}:${parts.minute ?? defaultTime?.minute ?? '00'}:${parts.second ?? defaultTime?.second ?? '00'} ${parts.ampm ?? defaultTime?.ampm ?? 'AM'}`,
+ 'hh:mm:ss A',
+ true
+ )
+ if (!time.isValid()) return date.startOf('day')
+
+ return date.set({
+ hour: time.hour(),
+ minute: time.minute(),
+ second: time.second()
+ })
+ }
+
+ isAnswerValid(
+ parts: DateAnswerParts,
+ context: DateValidationContext,
+ defaultTime?: DateAnswerParts
+ ): boolean {
+ const value = this.momentFromAnswerParts(parts, context, defaultTime)
+ return !value || !this.isOutOfRange(value, context)
+ }
+
+ clampToBounds(m: Moment, context: DateValidationContext): Moment {
+ const min = this.resolveBound(context.textValidationMin, context, 'min')
+ const max = this.resolveBound(context.textValidationMax, context, 'max')
+ let result = m.clone()
+ if (min?.isAfter(result)) result = min.clone()
+ if (max?.isBefore(result)) result = max.clone()
+ return result
+ }
+
+ isOutOfRange(m: Moment, context: DateValidationContext): boolean {
+ const min = this.resolveBound(context.textValidationMin, context, 'min')
+ const max = this.resolveBound(context.textValidationMax, context, 'max')
+ if (!min && !max) return false
+
+ const value = isDateTimeValidationType(context.validationType)
+ ? m.clone()
+ : m.clone().startOf('day')
+
+ return Boolean(
+ (min && value.isBefore(min)) || (max && value.isAfter(max))
+ )
+ }
+
+ private resolveBound(
+ raw: string | undefined,
+ context: DateValidationContext,
+ role: 'min' | 'max'
+ ): Moment | null {
+ if (!raw?.trim()) return null
+
+ const keyword = parseDateValidationKeyword(raw)
+ if (keyword) return this.boundFromKeyword(keyword, role)
+
+ const parsed = this.parseBoundDate(raw.trim(), context)
+ if (!parsed) return null
+
+ return edgeOfBound(
+ parsed,
+ role,
+ isDateTimeValidationType(context.validationType)
+ )
+ }
+
+ private boundFromKeyword(
+ keyword: DateValidationKeyword,
+ role: 'min' | 'max'
+ ): Moment {
+ const now = this.localization.moment()
+ if (keyword === DateValidationKeyword.NOW) return now.clone()
+ return role === 'min' ? now.clone().startOf('day') : now.clone().endOf('day')
+ }
+
+ private parseBoundDate(raw: string, context: DateValidationContext): Moment | null {
+ const formats = isDateTimeValidationType(context.validationType)
+ ? [BOUND_DATETIME_FORMAT, BOUND_DATE_FORMAT]
+ : [BOUND_DATE_FORMAT]
+
+ for (const format of formats) {
+ const parsed = this.localization.moment(raw, format, true)
+ if (parsed.isValid()) return parsed
+ }
+ return null
+ }
+}
diff --git a/src/app/pages/questions/services/questions.service.ts b/src/app/pages/questions/services/questions.service.ts
index 614cea68f..71de2ec71 100644
--- a/src/app/pages/questions/services/questions.service.ts
+++ b/src/app/pages/questions/services/questions.service.ts
@@ -14,7 +14,8 @@ import { ShowIntroductionType } from '../../../shared/models/assessment'
import {
Question,
QuestionPosition,
- QuestionType
+ QuestionType,
+ RequiredField
} from '../../../shared/models/question'
import { parseAndEvalLogic } from '../../../shared/utilities/parsers'
import { getSeconds } from '../../../shared/utilities/time'
@@ -40,6 +41,12 @@ export class QuestionsService {
DELIMITER = ','
isProgressCountShown = false
+ REQUIRED_FIELD_VALUES: Array = [
+ RequiredField.TRUE,
+ RequiredField.EMPTY,
+ undefined
+ ]
+
constructor(
public questionnaire: QuestionnaireService,
private answerService: AnswerService,
@@ -48,8 +55,7 @@ export class QuestionsService {
private questionnaireProcessor: DefaultQuestionnaireProcessorService,
private remoteConfig: RemoteConfigService,
private util: Utility
- ) {
- }
+ ) { }
getKafkaService() {
return this.questionnaireProcessor.kafka
@@ -164,8 +170,23 @@ export class QuestionsService {
return this.answerService.check(id)
}
- areAllAnswered(questions: Question[]) {
- return questions.every(q => this.isAnswered(q))
+ // Makes a question required if the required_field value is in the REQUIRED_FIELD_VALUES array
+ isRequired(question: Question): boolean {
+ return this.REQUIRED_FIELD_VALUES.includes(question.required_field)
+ }
+
+ // Check if the answer for a question is blank (null, empty string, or empty array)
+ isAnswerBlank(question: Question): boolean {
+ const answer = this.answerService.answers[question.field_name]
+ if (answer == null) return true
+ if (typeof answer === 'string') return answer.trim() === ''
+ if (Array.isArray(answer)) return answer.length === 0
+ return false
+ }
+
+ // Check if all required questions have non-blank answers
+ areAllAnswered(questions: Question[]): boolean {
+ return questions.every(q => !this.isRequired(q) || !this.isAnswerBlank(q))
}
getNextQuestion(groupedQuestions, currentQuestionId): QuestionPosition {
diff --git a/src/app/pages/questions/validation/date-validation.ts b/src/app/pages/questions/validation/date-validation.ts
new file mode 100644
index 000000000..426c6ec76
--- /dev/null
+++ b/src/app/pages/questions/validation/date-validation.ts
@@ -0,0 +1,74 @@
+import { Moment } from 'moment'
+
+import { DateValidationKeyword, ValidationType } from '../../../shared/models/question'
+
+/** Shown in the calendar text field and modal picker. */
+export const DATE_DISPLAY_FORMAT = 'DD/MM/YYYY'
+
+/** Fixed min/max from the questionnaire (typical export format). */
+export const BOUND_DATE_FORMAT = 'YYYY-MM-DD'
+export const BOUND_DATETIME_FORMAT = 'YYYY-MM-DD HH:mm:ss'
+
+/** Parsed from wheel/answer parts (month is short name, e.g. Jan). */
+export const ANSWER_DATE_FORMATS = ['YYYY-MMM-D', 'YYYY-MMM-DD']
+
+export interface DateValidationContext {
+ validationType: string
+ textValidationMin?: string
+ textValidationMax?: string
+}
+
+export interface DatePickerBounds {
+ fromDate?: Date
+ toDate?: Date
+}
+
+export type DateAnswerParts = Record
+type DateBoundRole = 'min' | 'max'
+
+const DATE_ONLY_TYPES = new Set([
+ ValidationType.DATE_DMY,
+ ValidationType.DATE_MDY,
+ ValidationType.DATE_YMD
+])
+
+const DATETIME_TYPES = new Set([
+ ValidationType.DATETIME_DMY,
+ ValidationType.DATETIME_MDY,
+ ValidationType.DATETIME_YMD
+])
+
+export function isDateValidationType(validationType: string): boolean {
+ const type = validationType as ValidationType
+ return DATE_ONLY_TYPES.has(type) || DATETIME_TYPES.has(type)
+}
+
+export function isDateOnlyValidationType(validationType: string): boolean {
+ return DATE_ONLY_TYPES.has(validationType as ValidationType)
+}
+
+export function isDateTimeValidationType(validationType: string): boolean {
+ return DATETIME_TYPES.has(validationType as ValidationType)
+}
+
+export function parseDateValidationKeyword(
+ raw: string
+): DateValidationKeyword | null {
+ const token = raw.trim().toLowerCase()
+ return Object.values(DateValidationKeyword).includes(
+ token as DateValidationKeyword
+ )
+ ? (token as DateValidationKeyword)
+ : null
+}
+
+export function edgeOfBound(
+ m: Moment,
+ role: DateBoundRole,
+ isDatetime: boolean
+): Moment {
+ if (isDatetime) {
+ return role === 'min' ? m.clone().startOf('second') : m.clone().endOf('second')
+ }
+ return role === 'min' ? m.clone().startOf('day') : m.clone().endOf('day')
+}
diff --git a/src/app/shared/models/question.ts b/src/app/shared/models/question.ts
index 093fd189a..91cc6e76b 100755
--- a/src/app/shared/models/question.ts
+++ b/src/app/shared/models/question.ts
@@ -97,6 +97,41 @@ export interface QuestionPosition {
questionIndices: number[]
}
+export enum ValidationType {
+ NUMBER = 'number',
+ EMAIL = 'email',
+ INTEGER = 'integer',
+ DATE_DMY = 'date_dmy',
+ DATE_MDY = 'date_mdy',
+ DATE_YMD = 'date_ymd',
+ DATETIME_DMY = 'datetime_dmy',
+ DATETIME_MDY = 'datetime_mdy',
+ DATETIME_YMD = 'datetime_ymd',
+ DURATION = 'duration',
+ SECOND = 'second',
+ TIME = 'time',
+ PHONE = 'phone'
+}
+
+/** Dynamic min/max keywords for date and datetime text validation (e.g. today, now). */
+export enum DateValidationKeyword {
+ TODAY = 'today',
+ NOW = 'now'
+}
+
+export enum InputModeType {
+ TEXT = 'text',
+ NUMBER = 'numeric',
+ EMAIL = 'email',
+ PHONE = 'phone'
+}
+
+export enum RequiredField {
+ TRUE = 'y',
+ FALSE = 'n',
+ EMPTY = ''
+}
+
export enum WebInputType {
NHS = 'nhs'
}
diff --git a/src/assets/data/localisations.ts b/src/assets/data/localisations.ts
index 7e837bd23..1f6760981 100644
--- a/src/assets/data/localisations.ts
+++ b/src/assets/data/localisations.ts
@@ -31,20 +31,13 @@ export const Localisations = {
hb: 'RADAR-Base-ל'
},
ENROL_WELCOME_DESC: {
- da:
- 'Tak fordi du vil deltage i dette studie. Lad os komme i gang med at opstarte registreringsprocessen.',
- de:
- 'Danke, dass Sie an dieser Studie teilnehmen. Um loszulegen, lassen Sie uns den Registrierungsprozess starten.',
- en:
- "Thank you for taking part in this study. Let's start the enrolment process to get you set up.",
- es:
- 'Gracias por tomar parte en este estudio. Comencemos el proceso de registro para configurarlo',
- it:
- 'Grazie per aver preso parte al nostro studio. Iniziamo il processo di arruolamento.',
- nl:
- 'Bedankt voor uw deelname aan dit onderzoek. Laten we starten met het registratie-proces.',
- pl:
- 'Dziękujemy za wzięcie udziału w badaniu. Przejdź przez proces rejestracji, byś mógł zacząć korzystać z aplikacji',
+ da: 'Tak fordi du vil deltage i dette studie. Lad os komme i gang med at opstarte registreringsprocessen.',
+ de: 'Danke, dass Sie an dieser Studie teilnehmen. Um loszulegen, lassen Sie uns den Registrierungsprozess starten.',
+ en: "Thank you for taking part in this study. Let's start the enrolment process to get you set up.",
+ es: 'Gracias por tomar parte en este estudio. Comencemos el proceso de registro para configurarlo',
+ it: 'Grazie per aver preso parte al nostro studio. Iniziamo il processo di arruolamento.',
+ nl: 'Bedankt voor uw deelname aan dit onderzoek. Laten we starten met het registratie-proces.',
+ pl: 'Dziękujemy za wzięcie udziału w badaniu. Przejdź przez proces rejestracji, byś mógł zacząć korzystać z aplikacji',
hb: 'תודה על השתתפותך במחקר. בוא נתחיל את תהליך ההרשמה.'
},
ENROL_REGISTRATION: {
@@ -58,40 +51,24 @@ export const Localisations = {
hb: 'הרשמה'
},
ENROL_REGISTRATION_DESC: {
- da:
- `Før du kan begynde at anvende app'en, skal vi registrere den først.Du kan enten scanne QR- koden eller indtaste symbolet.`,
- de:
- 'Bevor Sie die App verwenden können, müssen Sie sie zuerst registrieren. Sie können entweder den QR-Code scannen oder das Token eingeben.',
- en:
- 'Before you can start using the app, we need to register it first. You can either scan the QR code or enter the token.',
- es:
- 'Antes de poder usar esta aplicación, debe registrarse. Puede escanear el código QR o ingresar el token.',
- it:
- 'Prima di poter usare questa app, devi registrarti. Puoi scansionare il codice QR o inserire il token.',
- nl:
- 'Voordat u de app kunt gebruiken, moeten we de app eerst registreren. U kunt de QR code scannen of het token invoeren.',
- pl:
- 'Zanim będziesz mógł korzystać z aplikacji, musisz się zarejestrować. Możesz zeskanować kod QR lub wpisać Token',
- hb:
- 'לפני שתוכל להתשתמש באפליקציה אנו צריכים שתרשם אליה. תוכל לעשות זאת באמצעות קוד QR או הזנת טוקן.'
+ da: `Før du kan begynde at anvende app'en, skal vi registrere den først.Du kan enten scanne QR- koden eller indtaste symbolet.`,
+ de: 'Bevor Sie die App verwenden können, müssen Sie sie zuerst registrieren. Sie können entweder den QR-Code scannen oder das Token eingeben.',
+ en: 'Before you can start using the app, we need to register it first. You can either scan the QR code or enter the token.',
+ es: 'Antes de poder usar esta aplicación, debe registrarse. Puede escanear el código QR o ingresar el token.',
+ it: 'Prima di poter usare questa app, devi registrarti. Puoi scansionare il codice QR o inserire il token.',
+ nl: 'Voordat u de app kunt gebruiken, moeten we de app eerst registreren. U kunt de QR code scannen of het token invoeren.',
+ pl: 'Zanim będziesz mógł korzystać z aplikacji, musisz się zarejestrować. Możesz zeskanować kod QR lub wpisać Token',
+ hb: 'לפני שתוכל להתשתמש באפליקציה אנו צריכים שתרשם אליה. תוכל לעשות זאת באמצעות קוד QR או הזנת טוקן.'
},
ENROL_REGISTRATION_SCAN_DESC: {
- da:
- 'Klik på "Scan" knappen og hold kameraet over QR-koden som du får udleveret af forskeren. Du kan se et eksempel på en QR-kode herunder.',
- de:
- 'Klicken Sie auf die Schaltfläche "Scannen" und richten Sie die Kamera auf den von Ihrem Forscher angegebenen QR-Code. Ein Beispiel für einen QR-Code finden Sie unten.',
- en:
- 'Click the "Scan" button and point the camera onto the QR code, given by your researcher. An example QR code is below.',
- es:
- 'Presione el botón "Escanear" e ingrese el código QR que le dio el personal del estudio. A continuación puede ver un ejemplo de código QR',
- it:
- 'Premi il pulsante "Scan" e inquadra il codice QR che hai ricevuto dal personale dello studio. Qui sotto puoi vedere un QR di esempio.',
- nl:
- 'Klik op de "Scan" knop en richt de camera op de QR code die u heeft ontvangen van de onderzoeker. Hieronder staat een voorbeeld van een QR code afgebeeld.',
- pl:
- 'Kliknij przycisk Skanuj i skieruj aparat telefonu na kod QR, który otrzymałeś od badacza. Przykładowy kod QR znajduje się poniżej.',
- hb:
- 'לחץ על כפתור הסריקה וכוון את המצלמה לכיוון קוד הQR שניתן לך על ידי החוקרים. דוגמה לקוד QR מוצגת למטה.'
+ da: 'Klik på "Scan" knappen og hold kameraet over QR-koden som du får udleveret af forskeren. Du kan se et eksempel på en QR-kode herunder.',
+ de: 'Klicken Sie auf die Schaltfläche "Scannen" und richten Sie die Kamera auf den von Ihrem Forscher angegebenen QR-Code. Ein Beispiel für einen QR-Code finden Sie unten.',
+ en: 'Click the "Scan" button and point the camera onto the QR code, given by your researcher. An example QR code is below.',
+ es: 'Presione el botón "Escanear" e ingrese el código QR que le dio el personal del estudio. A continuación puede ver un ejemplo de código QR',
+ it: 'Premi il pulsante "Scan" e inquadra il codice QR che hai ricevuto dal personale dello studio. Qui sotto puoi vedere un QR di esempio.',
+ nl: 'Klik op de "Scan" knop en richt de camera op de QR code die u heeft ontvangen van de onderzoeker. Hieronder staat een voorbeeld van een QR code afgebeeld.',
+ pl: 'Kliknij przycisk Skanuj i skieruj aparat telefonu na kod QR, który otrzymałeś od badacza. Przykładowy kod QR znajduje się poniżej.',
+ hb: 'לחץ על כפתור הסריקה וכוון את המצלמה לכיוון קוד הQR שניתן לך על ידי החוקרים. דוגמה לקוד QR מוצגת למטה.'
},
ENROL_REGISTRATION_NO_QR: {
da: 'Har du ikke en QR-kode?',
@@ -164,22 +141,14 @@ export const Localisations = {
hb: 'התחבר עם הדוא״ל והסיסמה של פורטל הלימודים שלך.'
},
ENROL_REGISTRATION_TOKEN_DESC: {
- da:
- 'Indtast token. Dette skal være tilgængeligt under QR-koden på Management Portal. Hvis ikke, skal du scanne QR-koden.',
- de:
- 'Geben Sie das Token ein. Dies sollte unterhalb des QR-Codes im Management Portal verfügbar sein. Wenn nicht vorhanden, scannen Sie bitte den QR-Code.',
- en:
- 'Enter the token. This should be available below the QR code on Management Portal. If not present, please scan the QR code.',
- es:
- 'Introduzca el token. Esto debería estar disponible debajo del código QR en el Portal de administración. Si no está presente, escanee el código QR.',
- it:
- 'Inserisci il token. Questo dovrebbe essere disponibile sotto il codice QR sul portale di gestione. Se non è presente, scansiona il codice QR.',
- nl:
- 'Voer het token in. Dit moet beschikbaar zijn onder de QR-code op Management Portal. Indien niet aanwezig, scan de QR-code.',
- pl:
- 'Wprowadź Token. Powinien być widoczny poniżej kodu QR w Mahagement Portal. Jeśli go tam nie znajdziesz, zeskanuj kod QR.',
- hb:
- 'הזן את הטוקן. הוא אמור להיות זמין מתחת לקוד הQR בפורטל הניהול. אם הוא לא זמין בבקשה סרוק את קוד הQR.'
+ da: 'Indtast token. Dette skal være tilgængeligt under QR-koden på Management Portal. Hvis ikke, skal du scanne QR-koden.',
+ de: 'Geben Sie das Token ein. Dies sollte unterhalb des QR-Codes im Management Portal verfügbar sein. Wenn nicht vorhanden, scannen Sie bitte den QR-Code.',
+ en: 'Enter the token. This should be available below the QR code on Management Portal. If not present, please scan the QR code.',
+ es: 'Introduzca el token. Esto debería estar disponible debajo del código QR en el Portal de administración. Si no está presente, escanee el código QR.',
+ it: 'Inserisci il token. Questo dovrebbe essere disponibile sotto il codice QR sul portale di gestione. Se non è presente, scansiona il codice QR.',
+ nl: 'Voer het token in. Dit moet beschikbaar zijn onder de QR-code op Management Portal. Indien niet aanwezig, scan de QR-code.',
+ pl: 'Wprowadź Token. Powinien być widoczny poniżej kodu QR w Mahagement Portal. Jeśli go tam nie znajdziesz, zeskanuj kod QR.',
+ hb: 'הזן את הטוקן. הוא אמור להיות זמין מתחת לקוד הQR בפורטל הניהול. אם הוא לא זמין בבקשה סרוק את קוד הQR.'
},
ENROL_REGISTRATION_QR: {
da: 'Har du en QR-kode?',
@@ -202,22 +171,14 @@ export const Localisations = {
hb: 'העדפות'
},
ENROL_PREFERENCES_DESC: {
- da:
- 'Vi sender dig en ugentlig opsummering om de data du har sendt til os. Vælg lige så mange emner du ønsker at modtage information om.',
- de:
- 'Wir senden Ihnen wöchentliche Zusammenfassungen über die Daten, die Sie uns senden. Wählen Sie beliebig viele Themen aus, zu denen Sie Informationen erhalten möchten.',
- en:
- "We will send you weekly summaries about the data you'll be sending us. Feel free to select as many topics you would like to receive information about.",
- es:
- 'Le enviaremos cada semana un resumen de los datos que nos envía. Siéntase libre de seleccionar solo los temas sobre los cuales desea recibir información',
- it:
- 'Ti invieremo ogni settimana un riepilogo dei dati raccolti. Sentiti libero di selezionare solo gli argomenti di cui vuoi ricevere le informazioni.',
- nl:
- 'We zullen u wekelijks samenvattingen sturen over uw verzamelde gegevens. U kunt zelf de onderwerpen selecteren waarover uw informatie wilt ontvangen.',
- pl:
- 'Co tydzień wyślemy Ci podsumowanie zebranych przez nas danych. Wybierz wszystkie tematy, na temat których chciałbyś uzyskiwać informacje.',
- hb:
- 'נשלח לך סיכומים שבועיים על המידע שאתה שולח לנו. תרגיש חופשי לבחור כמה נושאים שתרצה לקבל עליהם מידע.'
+ da: 'Vi sender dig en ugentlig opsummering om de data du har sendt til os. Vælg lige så mange emner du ønsker at modtage information om.',
+ de: 'Wir senden Ihnen wöchentliche Zusammenfassungen über die Daten, die Sie uns senden. Wählen Sie beliebig viele Themen aus, zu denen Sie Informationen erhalten möchten.',
+ en: "We will send you weekly summaries about the data you'll be sending us. Feel free to select as many topics you would like to receive information about.",
+ es: 'Le enviaremos cada semana un resumen de los datos que nos envía. Siéntase libre de seleccionar solo los temas sobre los cuales desea recibir información',
+ it: 'Ti invieremo ogni settimana un riepilogo dei dati raccolti. Sentiti libero di selezionare solo gli argomenti di cui vuoi ricevere le informazioni.',
+ nl: 'We zullen u wekelijks samenvattingen sturen over uw verzamelde gegevens. U kunt zelf de onderwerpen selecteren waarover uw informatie wilt ontvangen.',
+ pl: 'Co tydzień wyślemy Ci podsumowanie zebranych przez nas danych. Wybierz wszystkie tematy, na temat których chciałbyś uzyskiwać informacje.',
+ hb: 'נשלח לך סיכומים שבועיים על המידע שאתה שולח לנו. תרגיש חופשי לבחור כמה נושאים שתרצה לקבל עליהם מידע.'
},
ENROL_REGISTRATION_COMPLETE: {
da: 'Registrering Afsluttet',
@@ -240,20 +201,13 @@ export const Localisations = {
hb: "הכל מוכן! לחץ על 'התחל' כדי להתחיל את משימות המחקר שלך."
},
ENROL_PRIVACY_POLICY_DESC: {
- da:
- "Ved at tilmelde dig undersøgelsen accepterer du indsamling og brug af oplysninger i forhold til vores privatlivspolitik.",
- de:
- "Indem Sie sich für die Studie anmelden, stimmen Sie der Erfassung und Verwendung von Informationen in Bezug auf unsere Datenschutzrichtlinie zu.",
- en:
- "By enrolling in the study, you agree to the collection and use of information in relation to our privacy policy.",
- es:
- "Al inscribirse en el estudio, acepta la recopilación y el uso de información en relación con nuestra política de privacidad.",
- it:
- "Iscrivendoti allo studio, accetti la raccolta e l'utilizzo delle informazioni in relazione alla nostra politica sulla privacy.",
- nl:
- "Door u in te schrijven voor het onderzoek gaat u akkoord met het verzamelen en gebruiken van informatie in verband met ons privacybeleid.",
- pl:
- 'Zapisując się do badania, zgadzasz się na gromadzenie i wykorzystywanie informacji w związku z naszą polityką prywatności.',
+ da: 'Ved at tilmelde dig undersøgelsen accepterer du indsamling og brug af oplysninger i forhold til vores privatlivspolitik.',
+ de: 'Indem Sie sich für die Studie anmelden, stimmen Sie der Erfassung und Verwendung von Informationen in Bezug auf unsere Datenschutzrichtlinie zu.',
+ en: 'By enrolling in the study, you agree to the collection and use of information in relation to our privacy policy.',
+ es: 'Al inscribirse en el estudio, acepta la recopilación y el uso de información en relación con nuestra política de privacidad.',
+ it: "Iscrivendoti allo studio, accetti la raccolta e l'utilizzo delle informazioni in relazione alla nostra politica sulla privacy.",
+ nl: 'Door u in te schrijven voor het onderzoek gaat u akkoord met het verzamelen en gebruiken van informatie in verband met ons privacybeleid.',
+ pl: 'Zapisując się do badania, zgadzasz się na gromadzenie i wykorzystywanie informacji w związku z naszą polityką prywatności.',
hb: `בהצטרפות למחקר, אתה מסכים לאיסוף ושימוש במידע ביחס למדיניות הפרטיות שלנו.`
},
FINISH_THANKS: {
@@ -308,18 +262,12 @@ export const Localisations = {
},
CALENDAR_TASK_MISSED_DESC: {
da: 'Spørgsmålet kan ikke besvares længere.',
- de:
- 'Leider können Sie diesen Fragebogen nur zum angegebenen Zeitpunkt beantworten.',
- en:
- 'Unfortunately, you can only answer this questionnaire at the notified time.',
- es:
- 'Lamentablemente, solo puede responder este cuestionario en el momento de la notificación.',
- it:
- 'Sfortunatamente, puoi rispondere a questo questionario solo al momento della notifica.',
- nl:
- 'Helaas kunt u deze vragenlijst alleen op het aangegeven tijdstip beantwoorden.',
- pl:
- 'Niestety kwestionariusz można wypełniać tylko po otrzymaniu powiadomienia',
+ de: 'Leider können Sie diesen Fragebogen nur zum angegebenen Zeitpunkt beantworten.',
+ en: 'Unfortunately, you can only answer this questionnaire at the notified time.',
+ es: 'Lamentablemente, solo puede responder este cuestionario en el momento de la notificación.',
+ it: 'Sfortunatamente, puoi rispondere a questo questionario solo al momento della notifica.',
+ nl: 'Helaas kunt u deze vragenlijst alleen op het aangegeven tijdstip beantwoorden.',
+ pl: 'Niestety kwestionariusz można wypełniać tylko po otrzymaniu powiadomienia',
hb: '.לצערנו, אתה יכול לענות על השאלון רק כשיש ההתראה'
},
CLINICAL_TASKS: {
@@ -474,13 +422,10 @@ export const Localisations = {
},
SETTINGS_NOTIFICATIONS_NIGHTMOD_DESC: {
da: 'Nattilstand stopper alle notifikationer imellem kl. 22:00 og 07:30.',
- de:
- 'Der Nachtmodus stoppt alle Benachrichtigungen zwischen 22:00 und 07:30.',
+ de: 'Der Nachtmodus stoppt alle Benachrichtigungen zwischen 22:00 und 07:30.',
en: 'Night Mode stops all notifications between 22:00 and 07:30.',
- es:
- 'La modalidad nocturna detiene todas las notificaciones entre las 22 y las 7:30 horas',
- it:
- "La modalità notte bloccherà tutte le notifiche dell'app tra le 22:00 e le 7:30.",
+ es: 'La modalidad nocturna detiene todas las notificaciones entre las 22 y las 7:30 horas',
+ it: "La modalità notte bloccherà tutte le notifiche dell'app tra le 22:00 e le 7:30.",
nl: 'De nachtmodus blokkeert alle notificaties tussen 22:00u en 7:30u.',
pl: 'Tryb nocny blokuje wszystkie powiadomienia między 22:00 a 07:30.',
hb: '.מצב לילה עוצר את כל ההתראות בין 22:00 ל- 7:30 למחרת'
@@ -546,76 +491,44 @@ export const Localisations = {
hb: '.אתה עומד לאפס את האפליקציה'
},
SETTINGS_RESET_ALERT_OPTION_DESC: {
- da:
- 'Vælg at nulstille din cache, tilmelding eller appkonfiguration (dette inkluderer dine meddelelser og plan).
Du kan også vælge at nulstille mere end en mulighed.',
- de:
- 'Wählen Sie, ob Sie Ihren Cache, Ihre Registrierung oder Ihre App-Konfiguration zurücksetzen möchten (dies schließt Ihre Benachrichtigungen und Ihren Zeitplan ein).
Sie können auch mehrere Optionen zurücksetzen.',
- en:
- 'Choose options to reset.
You may also choose to reset more than one option. To do a full reset, select all the options.',
- es:
- 'Elija restablecer su caché, inscripción o configuración de la aplicación (esto incluye sus notificaciones y programación).
También puede optar por restablecer más de una opción.',
- it:
- "Scegli di reimpostare la cache, la registrazione o la configurazione dell'app (ciò include le notifiche e la pianificazione).
Puoi anche scegliere di ripristinare più di un'opzione.",
- nl:
- 'Kies ervoor om uw cache, inschrijving of app-configuratie opnieuw in te stellen (dit omvat uw meldingen en planning).
U kunt er ook voor kiezen om meer dan één optie opnieuw in te stellen.',
- pl:
- 'Wybierz zresetowanie pamięci podręcznej, rejestracji lub konfiguracji aplikacji (dotyczy to również powiadomień i harmonogramu).
Możesz także zresetować więcej niż jedną opcję.',
- hb:
- 'בחר לאפס את זיכרון המטמון, ההרשמה או התצורה של האפליקציה שלך (זה כולל את ההודעות ולוח הזמנים שלך).
אתה יכול גם לבחור לאפס יותר מאפשרות אחת.'
+ da: 'Vælg at nulstille din cache, tilmelding eller appkonfiguration (dette inkluderer dine meddelelser og plan).
Du kan også vælge at nulstille mere end en mulighed.',
+ de: 'Wählen Sie, ob Sie Ihren Cache, Ihre Registrierung oder Ihre App-Konfiguration zurücksetzen möchten (dies schließt Ihre Benachrichtigungen und Ihren Zeitplan ein).
Sie können auch mehrere Optionen zurücksetzen.',
+ en: 'Choose options to reset.
You may also choose to reset more than one option. To do a full reset, select all the options.',
+ es: 'Elija restablecer su caché, inscripción o configuración de la aplicación (esto incluye sus notificaciones y programación).
También puede optar por restablecer más de una opción.',
+ it: "Scegli di reimpostare la cache, la registrazione o la configurazione dell'app (ciò include le notifiche e la pianificazione).
Puoi anche scegliere di ripristinare più di un'opzione.",
+ nl: 'Kies ervoor om uw cache, inschrijving of app-configuratie opnieuw in te stellen (dit omvat uw meldingen en planning).
U kunt er ook voor kiezen om meer dan één optie opnieuw in te stellen.',
+ pl: 'Wybierz zresetowanie pamięci podręcznej, rejestracji lub konfiguracji aplikacji (dotyczy to również powiadomień i harmonogramu).
Możesz także zresetować więcej niż jedną opcję.',
+ hb: 'בחר לאפס את זיכרון המטמון, ההרשמה או התצורה של האפליקציה שלך (זה כולל את ההודעות ולוח הזמנים שלך).
אתה יכול גם לבחור לאפס יותר מאפשרות אחת.'
},
SETTINGS_RESET_ALERT_ENROLMENT_DESC: {
- da:
- 'Ved at nulstille tilmeldingen nulstiller du også konfigs. Når du nulstiller, bliver du logget ud af appen.',
- de:
- 'Durch Zurücksetzen der Registrierung setzen Sie auch die Konfigurationen zurück. Nach dem Zurücksetzen werden Sie von der App abgemeldet.',
- en:
- 'By resetting enrolment, you are also resetting the configs. Once you reset you will be logged out of the app.',
- es:
- 'Al restablecer la inscripción, también restablece las configuraciones. Una vez que reinicie, se cerrará la sesión de la aplicación.',
- it:
- "Ripristinando la registrazione, si ripristinano anche le configurazioni. Una volta ripristinato, verrai disconnesso dall'app.",
- nl:
- 'Door de inschrijving opnieuw in te stellen, zet u ook de configuraties terug. Zodra u opnieuw instelt, wordt u uitgelogd bij de app.',
- pl:
- 'Przez zresetowanie rejestracji resetujesz także konfiguracje. Po zresetowaniu nastąpi wylogowanie z aplikacji.',
- hb:
- "על ידי איפוס הרשמה, אתה מאפס מחדש את הקונפיג 'ים. לאחר שתאפס, תתנתק מהאפליקציה."
+ da: 'Ved at nulstille tilmeldingen nulstiller du også konfigs. Når du nulstiller, bliver du logget ud af appen.',
+ de: 'Durch Zurücksetzen der Registrierung setzen Sie auch die Konfigurationen zurück. Nach dem Zurücksetzen werden Sie von der App abgemeldet.',
+ en: 'By resetting enrolment, you are also resetting the configs. Once you reset you will be logged out of the app.',
+ es: 'Al restablecer la inscripción, también restablece las configuraciones. Una vez que reinicie, se cerrará la sesión de la aplicación.',
+ it: "Ripristinando la registrazione, si ripristinano anche le configurazioni. Una volta ripristinato, verrai disconnesso dall'app.",
+ nl: 'Door de inschrijving opnieuw in te stellen, zet u ook de configuraties terug. Zodra u opnieuw instelt, wordt u uitgelogd bij de app.',
+ pl: 'Przez zresetowanie rejestracji resetujesz także konfiguracje. Po zresetowaniu nastąpi wylogowanie z aplikacji.',
+ hb: "על ידי איפוס הרשמה, אתה מאפס מחדש את הקונפיג 'ים. לאחר שתאפס, תתנתק מהאפליקציה."
},
SETTINGS_RESET_ALERT_CACHE_DESC: {
- da:
- "Ved at nulstille cachen sletter du dine cache-spurgte data, der ikke kunne sendes. Prøv at sende dataene først ved at trykke på 'Send cache-data' i indstillingerne",
- de:
- 'Durch Zurücksetzen des Caches löschen Sie Ihre zwischengespeicherten Fragebogendaten, die nicht gesendet werden konnten. Bitte versuchen Sie zuerst, die Daten zu senden, indem Sie in den Einstellungen auf "Zwischengespeicherte Daten senden" tippen',
- en:
- 'By resetting the cache, you are deleting your cached questionnaire data that failed to send. Please try sending the data first by tapping `Send Cached Data` in the settings.',
- es:
- 'Al restablecer el caché, está eliminando los datos del cuestionario en caché que no se pudieron enviar. Intente enviar los datos primero tocando `Enviar datos en caché` en la configuración',
- it:
- 'Ripristinando la cache, si eliminano i dati del questionario memorizzati nella cache che non è stato possibile inviare. Prova a inviare prima i dati toccando "Invia dati memorizzati nella cache" nelle impostazioni',
- nl:
- "Door de cache opnieuw in te stellen, verwijdert u uw gecachte vragenlijstgegevens die niet konden worden verzonden. Probeer eerst de gegevens te verzenden door in de instellingen op 'Cachegegevens verzenden' te tikken",
- pl:
- 'Przez zresetowanie pamięci podręcznej usuwasz buforowane dane kwestionariusza, których nie udało się wysłać. Spróbuj najpierw wysłać dane, dotykając opcji „Wyślij buforowane dane" w ustawieniach',
- hb:
- "על ידי איפוס המטמון, אתה מוחק את נתוני השאלון המטמון שלך שלא הצליחו לשלוח. אנא נסה לשלוח את הנתונים תחילה על ידי הקשה על 'שלח נתונים במטמון' בהגדרות"
+ da: "Ved at nulstille cachen sletter du dine cache-spurgte data, der ikke kunne sendes. Prøv at sende dataene først ved at trykke på 'Send cache-data' i indstillingerne",
+ de: 'Durch Zurücksetzen des Caches löschen Sie Ihre zwischengespeicherten Fragebogendaten, die nicht gesendet werden konnten. Bitte versuchen Sie zuerst, die Daten zu senden, indem Sie in den Einstellungen auf "Zwischengespeicherte Daten senden" tippen',
+ en: 'By resetting the cache, you are deleting your cached questionnaire data that failed to send. Please try sending the data first by tapping `Send Cached Data` in the settings.',
+ es: 'Al restablecer el caché, está eliminando los datos del cuestionario en caché que no se pudieron enviar. Intente enviar los datos primero tocando `Enviar datos en caché` en la configuración',
+ it: 'Ripristinando la cache, si eliminano i dati del questionario memorizzati nella cache che non è stato possibile inviare. Prova a inviare prima i dati toccando "Invia dati memorizzati nella cache" nelle impostazioni',
+ nl: "Door de cache opnieuw in te stellen, verwijdert u uw gecachte vragenlijstgegevens die niet konden worden verzonden. Probeer eerst de gegevens te verzenden door in de instellingen op 'Cachegegevens verzenden' te tikken",
+ pl: 'Przez zresetowanie pamięci podręcznej usuwasz buforowane dane kwestionariusza, których nie udało się wysłać. Spróbuj najpierw wysłać dane, dotykając opcji „Wyślij buforowane dane" w ustawieniach',
+ hb: "על ידי איפוס המטמון, אתה מוחק את נתוני השאלון המטמון שלך שלא הצליחו לשלוח. אנא נסה לשלוח את הנתונים תחילה על ידי הקשה על 'שלח נתונים במטמון' בהגדרות"
},
SETTINGS_RESET_ALERT_CONFIG_DESC: {
- da:
- 'Ved at nulstille konfigurationerne trækker du spørgeskemaer, regenererer din spørgeskemaplan og omplanlægger meddelelser.',
- de:
- 'Durch Zurücksetzen der Konfigurationen ziehen Sie Fragebögen erneut ab, generieren Ihren Fragebogenplan neu und planen Benachrichtigungen neu.',
- en:
- 'By resetting the configurations, you are re-pulling questionnaires, regenerating your questionnaire schedule, and rescheduling notifications.',
- es:
- 'Al restablecer las configuraciones, está volviendo a extraer los cuestionarios, regenerando la programación de su cuestionario y reprogramando las notificaciones.',
- it:
- 'Ripristinando le configurazioni, si stanno rielaborando i questionari, rigenerando la pianificazione del questionario e riprogrammando le notifiche.',
- nl:
- 'Door de configuraties opnieuw in te stellen, trekt u de vragenlijsten opnieuw, genereert u uw vragenlijstschema opnieuw en plant u de meldingen opnieuw.',
- pl:
- 'Po zresetowaniu konfiguracji ponownie pobierasz kwestionariusze, odnawiasz harmonogram ankiety i ponownie planujesz powiadomienia.',
- hb:
- 'על ידי איפוס התצורות, אתה מושך שאלונים מחדש, מחדש את לוח הזמנים לשאלון שלך ומזמן מחדש התראות.'
+ da: 'Ved at nulstille konfigurationerne trækker du spørgeskemaer, regenererer din spørgeskemaplan og omplanlægger meddelelser.',
+ de: 'Durch Zurücksetzen der Konfigurationen ziehen Sie Fragebögen erneut ab, generieren Ihren Fragebogenplan neu und planen Benachrichtigungen neu.',
+ en: 'By resetting the configurations, you are re-pulling questionnaires, regenerating your questionnaire schedule, and rescheduling notifications.',
+ es: 'Al restablecer las configuraciones, está volviendo a extraer los cuestionarios, regenerando la programación de su cuestionario y reprogramando las notificaciones.',
+ it: 'Ripristinando le configurazioni, si stanno rielaborando i questionari, rigenerando la pianificazione del questionario e riprogrammando le notifiche.',
+ nl: 'Door de configuraties opnieuw in te stellen, trekt u de vragenlijsten opnieuw, genereert u uw vragenlijstschema opnieuw en plant u de meldingen opnieuw.',
+ pl: 'Po zresetowaniu konfiguracji ponownie pobierasz kwestionariusze, odnawiasz harmonogram ankiety i ponownie planujesz powiadomienia.',
+ hb: 'על ידי איפוס התצורות, אתה מושך שאלונים מחדש, מחדש את לוח הזמנים לשאלון שלך ומזמן מחדש התראות.'
},
SETTINGS_ENROLMENT: {
da: 'Inschrijving',
@@ -1178,16 +1091,12 @@ export const Localisations = {
hb: 'זאת התראת מבחן'
},
NOTIFICATION_REMINDER_SOON: {
- da:
- 'RADAR-CNS spørgsmålene skal være færdige imorgen, husk venligst på dette.',
- de:
- 'Der RADAR-CNS Fragebogen muss morgen ausgefüllt werden – bitte denken Sie daran.',
- en:
- 'RADAR-CNS questionnaire needs to be completed tomorrow – please remember.',
+ da: 'RADAR-CNS spørgsmålene skal være færdige imorgen, husk venligst på dette.',
+ de: 'Der RADAR-CNS Fragebogen muss morgen ausgefüllt werden – bitte denken Sie daran.',
+ en: 'RADAR-CNS questionnaire needs to be completed tomorrow – please remember.',
es: 'Recuerde que mañana tendrá que completar el cuestionario RADAR-CNS.',
it: 'Ti ricordiamo che domani dovrai compilare il questionario RADAR-CNS.',
- nl:
- 'Vergeet u s.v.p. niet om de RADAR-CNS vragenlijst uiterlijk morgen in te vullen?',
+ nl: 'Vergeet u s.v.p. niet om de RADAR-CNS vragenlijst uiterlijk morgen in te vullen?',
pl: 'Ankietę RADAR-CNS powinieneś wypełnić jutro – prosimy pamiętaj',
hb: 'נא לזכור ששאלון RADAR-CNS צריך להיענות מחר בבוקר'
},
@@ -1195,12 +1104,9 @@ export const Localisations = {
da: 'Husk at sætte lidt tid af i morgen, til at svare på et par spørgsmål.',
de: 'Denken Sie daran, morgen etwas Zeit für ein paar Fragebögen zu haben.',
en: 'Remember to put some time aside for a few questionnaires tomorrow.',
- es:
- 'Recuerde reservarse el tiempo mañana para contestar algunos cuestionarios',
- it:
- 'Domani ricordati di lasciare del tempo libero per rispondere a brevi questionari.',
- nl:
- 'Vergeet u niet om morgen wat tijd vrij te maken voor het invullen van enkele vragenlijsten?',
+ es: 'Recuerde reservarse el tiempo mañana para contestar algunos cuestionarios',
+ it: 'Domani ricordati di lasciare del tempo libero per rispondere a brevi questionari.',
+ nl: 'Vergeet u niet om morgen wat tijd vrij te maken voor het invullen van enkele vragenlijsten?',
pl: 'Pamiętaj, by jutro zachować trochę czasu na wypełnienie ankiety.',
hb: 'תזכור לפנות קצת זמן להשלים שאלונים מחר'
},
@@ -1245,42 +1151,27 @@ export const Localisations = {
hb: '?פספסת שאלון'
},
NOTIFICATION_REMINDER_FORGOTTEN_DESC: {
- da:
- 'Det ser ud til at du ikke har fået svaret på alle spørgsmålene. Kunne du gøre dette med det samme?',
- de:
- 'Es scheint, Sie haben nicht alle unsere Fragen beantwortet. Könnten Sie dies bitte jetzt nachholen?',
- en:
- "It seems you haven't answered all of our questions. Could you please do that now?",
- es:
- 'Parece que no ha respondido todas las preguntas. ¿Podría hacerlo ahora?',
- it:
- 'Sembra che ti sia dimenticato di rispondere ad alcune domande. Puoi farlo ora?',
- nl:
- 'Het lijkt erop dat u niet alle vragen heeft beantwoord. Zou u dit nu alsnog willen doen?',
- pl:
- 'Wygląda na to, że nie odpowiedziałeś na wszystkie pytania. Czy mógłbyś zrobić to teraz?',
+ da: 'Det ser ud til at du ikke har fået svaret på alle spørgsmålene. Kunne du gøre dette med det samme?',
+ de: 'Es scheint, Sie haben nicht alle unsere Fragen beantwortet. Könnten Sie dies bitte jetzt nachholen?',
+ en: "It seems you haven't answered all of our questions. Could you please do that now?",
+ es: 'Parece que no ha respondido todas las preguntas. ¿Podría hacerlo ahora?',
+ it: 'Sembra che ti sia dimenticato di rispondere ad alcune domande. Puoi farlo ora?',
+ nl: 'Het lijkt erop dat u niet alle vragen heeft beantwoord. Zou u dit nu alsnog willen doen?',
+ pl: 'Wygląda na to, że nie odpowiedziałeś na wszystkie pytania. Czy mógłbyś zrobić to teraz?',
hb: '?נראה שלא ענית על כל השאלות. תוכל לעשות זאת כעת'
},
NOTIFICATION_REMINDER_FORGOTTEN_ALERT_DEFAULT_DESC: {
- da:
- 'Du har ikke nået at svare på dette. Ingen problemer! De næste spørgsmål kommer snart',
- de:
- 'Du hast die letzten Fragen verpasst. Mach dir keine Sorgen! Der nächste Fragebogen wird bald fällig.',
- en:
- "You've missed this one. Dont worry! The next quesionnaire will be due soon.",
- es:
- 'No ha llegado a contestarlo, no se preocupe! El siguiente cuestionario aparecerá pronto.',
- it:
- 'Hai perso questo. Non preoccuparti! Il prossimo quesionario sarà presto disponibile.',
- nl:
- 'Je hebt deze gemist. Maak je geen zorgen! De volgende vragenlijst zal binnenkort verschijnen.',
- pl:
- 'Pominąłeś to pytanie. Nie przejmuj się! Następna ankieta będzie dostępna wkrótce.',
+ da: 'Du har ikke nået at svare på dette. Ingen problemer! De næste spørgsmål kommer snart',
+ de: 'Du hast die letzten Fragen verpasst. Mach dir keine Sorgen! Der nächste Fragebogen wird bald fällig.',
+ en: "You've missed this one. Dont worry! The next quesionnaire will be due soon.",
+ es: 'No ha llegado a contestarlo, no se preocupe! El siguiente cuestionario aparecerá pronto.',
+ it: 'Hai perso questo. Non preoccuparti! Il prossimo quesionario sarà presto disponibile.',
+ nl: 'Je hebt deze gemist. Maak je geen zorgen! De volgende vragenlijst zal binnenkort verschijnen.',
+ pl: 'Pominąłeś to pytanie. Nie przejmuj się! Następna ankieta będzie dostępna wkrótce.',
hb: 'פספסת את שאלון זה. אל תדאג! השאלון הבא יהיה בקרוב'
},
NOTIFICATION_REMINDER_FORGOTTEN_ALERT_LASTOFNIGHT_DESC: {
- da:
- 'Du har ikke nået at svare på sidste spørgsmål. Ingen problemer! Hav en god aften.',
+ da: 'Du har ikke nået at svare på sidste spørgsmål. Ingen problemer! Hav en god aften.',
de: 'Du hast den letzten verpasst. Mach dir keine Sorgen! Gute Nacht.',
en: "You've missed the last one. Dont worry! Have a good night.",
es: 'No ha llegado a contestar el último. No se preocupe! Buenas noches!',
@@ -1330,22 +1221,14 @@ export const Localisations = {
hb: 'נקודות'
},
CREDITS_BODY: {
- da:
- 'Lavet med ♥ til dig af RADAR-Base-samfundet. For mere information click her.',
- de:
- 'Von der RADAR-Base-Community gemacht mit ♥ für Sie gemacht. Für weitere Informationen klicken Sie hier.',
- en:
- 'Made with ♥ for you by the RADAR-Base community. For more information click here.',
- es:
- 'Hecho con ♥ para usted por la comunidad RADAR-Base. Para obtener más información, haga clic en aquí.',
- it:
- 'Fatto con il ♥ per te dalla comunità RADAR-Base. Per maggiori informazioni clicca qui.',
- nl:
- 'Met ♥ voor u gemaakt door de RADAR-Base community. Voor meer informatie klik here.',
- pl:
- 'przygotowane dla Ciebie przez RADAR-Base. Aby uzyskać więcej informacji kliknij aquí.',
- hb:
- 'נעשה עבורך באהבה על ידי קונצרסיום RADAR-Base. למידע נוסף לחץ- http://radar-base.org'
+ da: 'Lavet med ♥ til dig af RADAR-Base-samfundet. For mere information click her.',
+ de: 'Von der RADAR-Base-Community gemacht mit ♥ für Sie gemacht. Für weitere Informationen klicken Sie hier.',
+ en: 'Made with ♥ for you by the RADAR-Base community. For more information click here.',
+ es: 'Hecho con ♥ para usted por la comunidad RADAR-Base. Para obtener más información, haga clic en aquí.',
+ it: 'Fatto con il ♥ per te dalla comunità RADAR-Base. Per maggiori informazioni clicca qui.',
+ nl: 'Met ♥ voor u gemaakt door de RADAR-Base community. Voor meer informatie klik here.',
+ pl: 'przygotowane dla Ciebie przez RADAR-Base. Aby uzyskać więcej informacji kliknij aquí.',
+ hb: 'נעשה עבורך באהבה על ידי קונצרסיום RADAR-Base. למידע נוסף לחץ- http://radar-base.org'
},
TASK_CALENDAR_TITLE: {
da: 'Dagens opgaver',
@@ -1529,11 +1412,9 @@ export const Localisations = {
},
TESTING_NOTIFICATIONS_MESSAGE: {
da: 'Luk nu appen og vent i 3 minutter for testmeddelelsen.',
- de:
- 'Schließen Sie nun die App und warten Sie 3 Minuten auf die Testbenachrichtigung.',
+ de: 'Schließen Sie nun die App und warten Sie 3 Minuten auf die Testbenachrichtigung.',
en: 'Now close the app and wait for 3 minutes for the test notification.',
- es:
- 'Ahora cierre la aplicación y espere 3 minutos para la notificación de prueba.',
+ es: 'Ahora cierre la aplicación y espere 3 minutos para la notificación de prueba.',
it: "Ora chiudi l'app e attendi 3 minuti per la notifica del test.",
nl: 'Sluit nu de app en wacht 3 minuten op de testmelding.',
pl: 'Zamknij aplikację i poczekaj 3 minuty na powiadomienie testowe',
@@ -1580,16 +1461,11 @@ export const Localisations = {
hb: 'המשימה הופסקה, התחל מחדש'
},
AUDIO_TASK_BUTTON_ALERT_DESC: {
- da:
- 'Stop venligst optagelsen, når du er færdig for at aktivere den næste knap.',
- de:
- 'Bitte stoppen Sie die Aufnahme, wenn Sie fertig sind, um die Schaltfläche „Weiter" zu aktivieren.',
- en:
- 'Please stop the recording once you are done in order to enable the next button.',
- es:
- 'Detenga la grabación una vez que haya terminado para habilitar el siguiente botón.',
- it:
- 'Interrompi la registrazione una volta che hai finito per abilitare il pulsante successivo.',
+ da: 'Stop venligst optagelsen, når du er færdig for at aktivere den næste knap.',
+ de: 'Bitte stoppen Sie die Aufnahme, wenn Sie fertig sind, um die Schaltfläche „Weiter" zu aktivieren.',
+ en: 'Please stop the recording once you are done in order to enable the next button.',
+ es: 'Detenga la grabación una vez que haya terminado para habilitar el siguiente botón.',
+ it: 'Interrompi la registrazione una volta che hai finito per abilitare il pulsante successivo.',
nl: 'Stop de opname als u klaar bent om de volgende knop in te schakelen.',
pl: 'Po zakończeniu zatrzymaj nagrywanie, aby włączyć następny przycisk.',
hb: 'אנא עצור את ההקלטה לאחר שתסיים כדי להפעיל את הכפתור הבא.'
@@ -1615,21 +1491,14 @@ export const Localisations = {
hb: 'לשלוח הקלטה?'
},
CONFIG_ERROR_DESC: {
- da:
- 'Vi kunne ikke opdatere din konfiguration lige nu. Det kan skyldes et midlertidigt netværksproblem. Tryk på "Prøv igen" for at prøve igen, eller tryk på "Afskedige" for at fortsætte med at bruge appen. Hvis denne besked vises igen næste gang, du åbner appen, bedes du kontakte din studiekoordinator.',
- de:
- 'Wir konnten Ihre Konfiguration gerade nicht aktualisieren. Das könnte ein vorübergehendes Netzwerkproblem sein. Tippen Sie auf "Wiederholen", um es erneut zu versuchen, oder auf "Entlassen", um die App weiter zu nutzen. Wenn diese Meldung beim nächsten Öffnen der App erneut erscheint, wenden Sie sich bitte an Ihren Studienkoordinator.',
- en:
- 'We couldn’t update your configuration right now. This may be a temporary network issue. You can tap "Retry" to try again, or tap "Dismiss" to continue using the app. If this message appears again next time you open the app, please contact your study coordinator.',
- es:
- 'No pudimos actualizar su configuración ahora mismo. Puede deberse a un problema temporal de red. Puede tocar "Reintentar" para volver a intentarlo, o tocar "Descartar" para seguir usando la aplicación. Si este mensaje aparece de nuevo la próxima vez que abra la aplicación, comuníquese con su coordinador de estudio.',
+ da: 'Vi kunne ikke opdatere din konfiguration lige nu. Det kan skyldes et midlertidigt netværksproblem. Tryk på "Prøv igen" for at prøve igen, eller tryk på "Afskedige" for at fortsætte med at bruge appen. Hvis denne besked vises igen næste gang, du åbner appen, bedes du kontakte din studiekoordinator.',
+ de: 'Wir konnten Ihre Konfiguration gerade nicht aktualisieren. Das könnte ein vorübergehendes Netzwerkproblem sein. Tippen Sie auf "Wiederholen", um es erneut zu versuchen, oder auf "Entlassen", um die App weiter zu nutzen. Wenn diese Meldung beim nächsten Öffnen der App erneut erscheint, wenden Sie sich bitte an Ihren Studienkoordinator.',
+ en: 'We couldn’t update your configuration right now. This may be a temporary network issue. You can tap "Retry" to try again, or tap "Dismiss" to continue using the app. If this message appears again next time you open the app, please contact your study coordinator.',
+ es: 'No pudimos actualizar su configuración ahora mismo. Puede deberse a un problema temporal de red. Puede tocar "Reintentar" para volver a intentarlo, o tocar "Descartar" para seguir usando la aplicación. Si este mensaje aparece de nuevo la próxima vez que abra la aplicación, comuníquese con su coordinador de estudio.',
it: `Non siamo riusciti ad aggiornare la configurazione in questo momento. Potrebbe essere un problema temporaneo di rete. Puoi toccare "Riprovare" per riprovare oppure "Respingere" per continuare a usare l’app. Se questo messaggio ricompare la prossima volta che apri l’app, contatta il tuo coordinatore dello studio.`,
- nl:
- 'We konden je configuratie nu niet bijwerken. Dit kan een tijdelijk netwerkprobleem zijn. Tik op "Probeer opnieuw" om het opnieuw te proberen, of tik op "Afwijzen" om door te gaan met het gebruik van de app. Als dit bericht de volgende keer dat je de app opent weer verschijnt, neem dan contact op met je studiecoördinator.',
- pl:
- 'Nie udało się teraz zaktualizować konfiguracji. To może być chwilowy problem z siecią. Możesz nacisnąć „Spróbuj ponownie”, aby spróbować ponownie, albo „Odwołać”, aby kontynuować korzystanie z aplikacji. Jeśli ten komunikat pojawi się ponownie następnym razem, gdy otworzysz aplikację, skontaktuj się z koordynatorem badania.',
- hb:
- 'לא הצלחנו לעדכן את ההגדרות שלך כרגע. ייתכן שמדובר בבעיה זמנית ברשת. אפשר ללחוץ על "נסה שוב" כדי לנסות שוב, או ללחוץ על "לשחרר" כדי להמשיך להשתמש באפליקציה. אם ההודעה הזו תופיע שוב בפעם הבאה שתפתח/י את האפליקציה, נא ליצור קשר עם רכז/ת המחקר.'
+ nl: 'We konden je configuratie nu niet bijwerken. Dit kan een tijdelijk netwerkprobleem zijn. Tik op "Probeer opnieuw" om het opnieuw te proberen, of tik op "Afwijzen" om door te gaan met het gebruik van de app. Als dit bericht de volgende keer dat je de app opent weer verschijnt, neem dan contact op met je studiecoördinator.',
+ pl: 'Nie udało się teraz zaktualizować konfiguracji. To może być chwilowy problem z siecią. Możesz nacisnąć „Spróbuj ponownie”, aby spróbować ponownie, albo „Odwołać”, aby kontynuować korzystanie z aplikacji. Jeśli ten komunikat pojawi się ponownie następnym razem, gdy otworzysz aplikację, skontaktuj się z koordynatorem badania.',
+ hb: 'לא הצלחנו לעדכן את ההגדרות שלך כרגע. ייתכן שמדובר בבעיה זמנית ברשת. אפשר ללחוץ על "נסה שוב" כדי לנסות שוב, או ללחוץ על "לשחרר" כדי להמשיך להשתמש באפליקציה. אם ההודעה הזו תופיע שוב בפעם הבאה שתפתח/י את האפליקציה, נא ליצור קשר עם רכז/ת המחקר.'
},
SPLASH_STATUS_UPDATING_CONFIG: {
da: 'Opdaterer underretninger og planlæg...',
@@ -1661,6 +1530,36 @@ export const Localisations = {
pl: 'Wprowadź tekst',
hb: 'הזן טקסט'
},
+ NUMBER_INPUT_WARNING: {
+ da: 'Vælg et tal inden for det tilladte interval.',
+ de: 'Bitte wählen Sie eine Zahl innerhalb des zulässigen Bereichs.',
+ en: 'Please choose a number within the allowed range.',
+ es: 'Elija un número dentro del rango permitido.',
+ it: 'Scegli un numero entro l\'intervallo consentito.',
+ nl: 'Kies een getal binnen het toegestane bereik.',
+ pl: 'Wybierz liczbę z dozwolonego zakresu.',
+ hb: 'אנא בחר מספר בטווח המותר.'
+ },
+ DATE_INPUT_WARNING: {
+ da: 'Vælg en dato inden for det tilladte interval.',
+ de: 'Bitte wählen Sie ein Datum innerhalb des zulässigen Bereichs.',
+ en: 'Please choose a date within the allowed range.',
+ es: 'Elija una fecha dentro del rango permitido.',
+ it: 'Scegli una data entro l\'intervallo consentito.',
+ nl: 'Kies een datum binnen het toegestane bereik.',
+ pl: 'Wybierz datę z dozwolonego zakresu.',
+ hb: 'אנא בחר תאריך בטווח המותר.'
+ },
+ TEXT_INPUT_WARNING: {
+ da: 'Skriv venligst dit svar for at fortsætte.',
+ de: 'Bitte schreiben Sie Ihre Antwort, um fortzufahren.',
+ en: 'Please write your answer to continue.',
+ es: 'Por favor, escriba su respuesta para continuar.',
+ it: 'Per favore, scrivi la tua risposta per continuare.',
+ nl: 'Schrijf uw antwoord om door te gaan.',
+ pl: 'Proszę napisać swoją odpowiedź, aby kontynuować.',
+ hb: 'אנא כתוב את התשובה שלך כדי להמשיך.'
+ },
EXTERNAL_APP_LAUNCH_DESC: {
da: 'Afslut spørgeskemaet og start',
de: 'Beenden Sie den Fragebogen und starten Sie',
@@ -1683,14 +1582,12 @@ export const Localisations = {
},
EXTERNAL_APP_FAILURE_ON_VALIDATING: {
da: 'er ikke installeret på din enhed eller understøtter ikke dybe links.',
- de:
- 'nicht auf Ihrem Gerät installiert ist oder Deep Linking nicht unterstützt.',
+ de: 'nicht auf Ihrem Gerät installiert ist oder Deep Linking nicht unterstützt.',
en: 'is not installed on your device or does not support deep linking.',
es: 'no está instalado en su dispositivo o no admite enlaces profundos.',
it: 'non è installato sul tuo dispositivo o non supporta il deep linking.',
nl: 'is niet op uw apparaat geïnstalleerd of ondersteunt geen deeplinking.',
- pl:
- 'nie jest zainstalowany na Twoim urządzeniu lub nie obsługuje precyzyjnych linków.',
+ pl: 'nie jest zainstalowany na Twoim urządzeniu lub nie obsługuje precyzyjnych linków.',
hb: 'אינו מותקן במכשיר שלך או אינו תומך בקישור עמוק.'
},
EXTERNAL_APP_FAILURE_ON_LAUNCH_TITLE: {
@@ -1714,11 +1611,11 @@ export const Localisations = {
hb: 'לא ניתן להפעיל.'
},
DATA_SEND_ERROR_DESC: {
- en: 'We couldn\'t send some data, possibly due to a network issue. Would you like to try again?',
+ en: "We couldn't send some data, possibly due to a network issue. Would you like to try again?",
es: 'No pudimos enviar algunos datos, posiblemente debido a un problema de conexión. ¿Quieres intentarlo de nuevo?',
da: 'Vi kunne ikke sende nogle data, muligvis på grund af netværksproblemer. Vil du prøve igen?',
de: 'Einige Daten konnten möglicherweise aufgrund eines Netzwerkproblems nicht gesendet werden. Möchten Sie es erneut versuchen?',
- fr: 'Nous n\'avons pas pu envoyer certaines données, peut-être en raison d\'un problème de réseau. Voulez-vous réessayer ?',
+ fr: "Nous n'avons pas pu envoyer certaines données, peut-être en raison d'un problème de réseau. Voulez-vous réessayer ?",
it: 'Non siamo riusciti a inviare alcuni dati, forse a causa di un problema di rete. Vuoi riprovare?',
nl: 'We konden sommige gegevens niet verzenden, mogelijk door een netwerkprobleem. Wilt u het opnieuw proberen?',
pl: 'Nie udało się wysłać niektórych danych, prawdopodobnie z powodu problemu z siecią. Czy chcesz spróbować ponownie?',