diff --git a/client/android/.gitignore b/client/android/.gitignore
deleted file mode 100644
index 48354a3..0000000
--- a/client/android/.gitignore
+++ /dev/null
@@ -1,101 +0,0 @@
-# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore
-
-# Built application files
-*.apk
-*.aar
-*.ap_
-*.aab
-
-# Files for the ART/Dalvik VM
-*.dex
-
-# Java class files
-*.class
-
-# Generated files
-bin/
-gen/
-out/
-# Uncomment the following line in case you need and you don't have the release build type files in your app
-# release/
-
-# Gradle files
-.gradle/
-build/
-
-# Local configuration file (sdk path, etc)
-local.properties
-
-# Proguard folder generated by Eclipse
-proguard/
-
-# Log Files
-*.log
-
-# Android Studio Navigation editor temp files
-.navigation/
-
-# Android Studio captures folder
-captures/
-
-# IntelliJ
-*.iml
-.idea/workspace.xml
-.idea/tasks.xml
-.idea/gradle.xml
-.idea/assetWizardSettings.xml
-.idea/dictionaries
-.idea/libraries
-# Android Studio 3 in .gitignore file.
-.idea/caches
-.idea/modules.xml
-# Comment next line if keeping position of elements in Navigation Editor is relevant for you
-.idea/navEditor.xml
-
-# Keystore files
-# Uncomment the following lines if you do not want to check your keystore files in.
-#*.jks
-#*.keystore
-
-# External native build folder generated in Android Studio 2.2 and later
-.externalNativeBuild
-.cxx/
-
-# Google Services (e.g. APIs or Firebase)
-# google-services.json
-
-# Freeline
-freeline.py
-freeline/
-freeline_project_description.json
-
-# fastlane
-fastlane/report.xml
-fastlane/Preview.html
-fastlane/screenshots
-fastlane/test_output
-fastlane/readme.md
-
-# Version control
-vcs.xml
-
-# lint
-lint/intermediates/
-lint/generated/
-lint/outputs/
-lint/tmp/
-# lint/reports/
-
-# Android Profiling
-*.hprof
-
-# Cordova plugins for Capacitor
-capacitor-cordova-android-plugins
-
-# Copied web assets
-app/src/main/assets/public
-
-# Generated Config files
-app/src/main/assets/capacitor.config.json
-app/src/main/assets/capacitor.plugins.json
-app/src/main/res/xml/config.xml
diff --git a/client/android/app/.gitignore b/client/android/app/.gitignore
deleted file mode 100644
index 043df80..0000000
--- a/client/android/app/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/build/*
-!/build/.npmkeep
diff --git a/client/android/app/build.gradle b/client/android/app/build.gradle
deleted file mode 100644
index 1d78df7..0000000
--- a/client/android/app/build.gradle
+++ /dev/null
@@ -1,90 +0,0 @@
-apply plugin: 'com.android.application'
-
-android {
- namespace "com.zenkanji.app"
- compileSdk rootProject.ext.compileSdkVersion
- defaultConfig {
- applicationId "com.zenkanji.app"
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 1
- versionName "1.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- aaptOptions {
- ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~'
- }
- }
- signingConfigs {
- release {
- if (file("my-release-key.jks").exists()) {
- storeFile file("my-release-key.jks")
- if (project.hasProperty("RELEASE_KEY_PASSWORD")) {
- storePassword RELEASE_KEY_PASSWORD
- keyPassword RELEASE_KEY_PASSWORD
- } else if (System.getenv("RELEASE_KEY_PASSWORD") != null) {
- storePassword System.getenv("RELEASE_KEY_PASSWORD")
- keyPassword System.getenv("RELEASE_KEY_PASSWORD")
- } else {
- storePassword "missing_password"
- keyPassword "missing_password"
- }
- if (project.hasProperty("RELEASE_KEY_ALIAS")) {
- keyAlias RELEASE_KEY_ALIAS
- } else if (System.getenv("RELEASE_KEY_ALIAS") != null) {
- keyAlias System.getenv("RELEASE_KEY_ALIAS")
- } else {
- keyAlias "my-key-alias"
- }
- }
- }
- }
- buildTypes {
- release {
- signingConfig signingConfigs.release
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
- applicationVariants.all { variant ->
- variant.outputs.all {
- outputFileName = "ZenKanji-${variant.versionName}.apk"
- }
- }
-}
-
-repositories {
- flatDir{
- dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs'
- }
-}
-
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
- implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion"
- implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion"
- implementation project(':capacitor-android')
- testImplementation "junit:junit:$junitVersion"
- androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
- androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
- implementation project(':capacitor-cordova-android-plugins')
-}
-
-apply from: 'capacitor.build.gradle'
-
-try {
- def servicesJSON = file('google-services.json')
- if (servicesJSON.text) {
- apply plugin: 'com.google.gms.google-services'
- }
-} catch(Exception e) {
- logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work")
-}
-
-configurations.all {
- resolutionStrategy {
- force 'org.jetbrains.kotlin:kotlin-stdlib:1.8.22'
- force 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22'
- force 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22'
- }
-}
diff --git a/client/android/app/capacitor.build.gradle b/client/android/app/capacitor.build.gradle
deleted file mode 100644
index fded3bd..0000000
--- a/client/android/app/capacitor.build.gradle
+++ /dev/null
@@ -1,20 +0,0 @@
-// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
-
-android {
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_21
- targetCompatibility JavaVersion.VERSION_21
- }
-}
-
-apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
-dependencies {
- implementation project(':capacitor-app')
- implementation project(':capgo-capacitor-updater')
-
-}
-
-
-if (hasProperty('postBuildExtras')) {
- postBuildExtras()
-}
diff --git a/client/android/app/proguard-rules.pro b/client/android/app/proguard-rules.pro
deleted file mode 100644
index f1b4245..0000000
--- a/client/android/app/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
diff --git a/client/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java b/client/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java
deleted file mode 100644
index f2c2217..0000000
--- a/client/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.getcapacitor.myapp;
-
-import static org.junit.Assert.*;
-
-import android.content.Context;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.platform.app.InstrumentationRegistry;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
-
- @Test
- public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.getcapacitor.app", appContext.getPackageName());
- }
-}
diff --git a/client/android/app/src/main/AndroidManifest.xml b/client/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index ea0ebc3..0000000
--- a/client/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/client/android/app/src/main/java/com/zenkanji/app/MainActivity.java b/client/android/app/src/main/java/com/zenkanji/app/MainActivity.java
deleted file mode 100644
index 995f2c0..0000000
--- a/client/android/app/src/main/java/com/zenkanji/app/MainActivity.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.zenkanji.app;
-
-import com.getcapacitor.BridgeActivity;
-
-public class MainActivity extends BridgeActivity {}
diff --git a/client/android/app/src/main/res/drawable-land-hdpi/splash.png b/client/android/app/src/main/res/drawable-land-hdpi/splash.png
deleted file mode 100644
index d47e1f9..0000000
Binary files a/client/android/app/src/main/res/drawable-land-hdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-ldpi/splash.png b/client/android/app/src/main/res/drawable-land-ldpi/splash.png
deleted file mode 100644
index eaa253f..0000000
Binary files a/client/android/app/src/main/res/drawable-land-ldpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-mdpi/splash.png b/client/android/app/src/main/res/drawable-land-mdpi/splash.png
deleted file mode 100644
index d9e4a60..0000000
Binary files a/client/android/app/src/main/res/drawable-land-mdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-night-hdpi/splash.png b/client/android/app/src/main/res/drawable-land-night-hdpi/splash.png
deleted file mode 100644
index 613df73..0000000
Binary files a/client/android/app/src/main/res/drawable-land-night-hdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-night-ldpi/splash.png b/client/android/app/src/main/res/drawable-land-night-ldpi/splash.png
deleted file mode 100644
index a6c4d20..0000000
Binary files a/client/android/app/src/main/res/drawable-land-night-ldpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-night-mdpi/splash.png b/client/android/app/src/main/res/drawable-land-night-mdpi/splash.png
deleted file mode 100644
index 8de748a..0000000
Binary files a/client/android/app/src/main/res/drawable-land-night-mdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-night-xhdpi/splash.png b/client/android/app/src/main/res/drawable-land-night-xhdpi/splash.png
deleted file mode 100644
index f82128c..0000000
Binary files a/client/android/app/src/main/res/drawable-land-night-xhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png b/client/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png
deleted file mode 100644
index c8fcd1b..0000000
Binary files a/client/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png b/client/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png
deleted file mode 100644
index c0af599..0000000
Binary files a/client/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-xhdpi/splash.png b/client/android/app/src/main/res/drawable-land-xhdpi/splash.png
deleted file mode 100644
index 0a23b3f..0000000
Binary files a/client/android/app/src/main/res/drawable-land-xhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-xxhdpi/splash.png b/client/android/app/src/main/res/drawable-land-xxhdpi/splash.png
deleted file mode 100644
index 0f83bbc..0000000
Binary files a/client/android/app/src/main/res/drawable-land-xxhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-land-xxxhdpi/splash.png b/client/android/app/src/main/res/drawable-land-xxxhdpi/splash.png
deleted file mode 100644
index f2cbe52..0000000
Binary files a/client/android/app/src/main/res/drawable-land-xxxhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-night/splash.png b/client/android/app/src/main/res/drawable-night/splash.png
deleted file mode 100644
index a6c4d20..0000000
Binary files a/client/android/app/src/main/res/drawable-night/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-hdpi/splash.png b/client/android/app/src/main/res/drawable-port-hdpi/splash.png
deleted file mode 100644
index 9306f15..0000000
Binary files a/client/android/app/src/main/res/drawable-port-hdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-ldpi/splash.png b/client/android/app/src/main/res/drawable-port-ldpi/splash.png
deleted file mode 100644
index 9e52924..0000000
Binary files a/client/android/app/src/main/res/drawable-port-ldpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-mdpi/splash.png b/client/android/app/src/main/res/drawable-port-mdpi/splash.png
deleted file mode 100644
index ea2830a..0000000
Binary files a/client/android/app/src/main/res/drawable-port-mdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-night-hdpi/splash.png b/client/android/app/src/main/res/drawable-port-night-hdpi/splash.png
deleted file mode 100644
index 9c398b8..0000000
Binary files a/client/android/app/src/main/res/drawable-port-night-hdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-night-ldpi/splash.png b/client/android/app/src/main/res/drawable-port-night-ldpi/splash.png
deleted file mode 100644
index 71f6d56..0000000
Binary files a/client/android/app/src/main/res/drawable-port-night-ldpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-night-mdpi/splash.png b/client/android/app/src/main/res/drawable-port-night-mdpi/splash.png
deleted file mode 100644
index 038754a..0000000
Binary files a/client/android/app/src/main/res/drawable-port-night-mdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-night-xhdpi/splash.png b/client/android/app/src/main/res/drawable-port-night-xhdpi/splash.png
deleted file mode 100644
index 72494e7..0000000
Binary files a/client/android/app/src/main/res/drawable-port-night-xhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png b/client/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png
deleted file mode 100644
index 0850832..0000000
Binary files a/client/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png b/client/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png
deleted file mode 100644
index e1f5a3b..0000000
Binary files a/client/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-xhdpi/splash.png b/client/android/app/src/main/res/drawable-port-xhdpi/splash.png
deleted file mode 100644
index 767a601..0000000
Binary files a/client/android/app/src/main/res/drawable-port-xhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-xxhdpi/splash.png b/client/android/app/src/main/res/drawable-port-xxhdpi/splash.png
deleted file mode 100644
index 9d4a6f3..0000000
Binary files a/client/android/app/src/main/res/drawable-port-xxhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-port-xxxhdpi/splash.png b/client/android/app/src/main/res/drawable-port-xxxhdpi/splash.png
deleted file mode 100644
index 1c5781a..0000000
Binary files a/client/android/app/src/main/res/drawable-port-xxxhdpi/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/client/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index c7bd21d..0000000
--- a/client/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/client/android/app/src/main/res/drawable/ic_launcher_background.xml b/client/android/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index d5fccc5..0000000
--- a/client/android/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/client/android/app/src/main/res/drawable/splash.png b/client/android/app/src/main/res/drawable/splash.png
deleted file mode 100644
index ea2830a..0000000
Binary files a/client/android/app/src/main/res/drawable/splash.png and /dev/null differ
diff --git a/client/android/app/src/main/res/layout/activity_main.xml b/client/android/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index b5ad138..0000000
--- a/client/android/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
diff --git a/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index 0aa82aa..0000000
--- a/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index 0aa82aa..0000000
--- a/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index d175930..0000000
Binary files a/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
deleted file mode 100644
index 40fbc2a..0000000
Binary files a/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
deleted file mode 100644
index eb2e84d..0000000
Binary files a/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index 604c4c9..0000000
Binary files a/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-ldpi/ic_launcher.png b/client/android/app/src/main/res/mipmap-ldpi/ic_launcher.png
deleted file mode 100644
index d03f89f..0000000
Binary files a/client/android/app/src/main/res/mipmap-ldpi/ic_launcher.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png b/client/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png
deleted file mode 100644
index 7536957..0000000
Binary files a/client/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png b/client/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png
deleted file mode 100644
index a0b4e84..0000000
Binary files a/client/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png b/client/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png
deleted file mode 100644
index ccb5cf3..0000000
Binary files a/client/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 4136afe..0000000
Binary files a/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
deleted file mode 100644
index fa01e06..0000000
Binary files a/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
deleted file mode 100644
index f8953bb..0000000
Binary files a/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index cee6f0b..0000000
Binary files a/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 55d778e..0000000
Binary files a/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
deleted file mode 100644
index 463eada..0000000
Binary files a/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 6d726a0..0000000
Binary files a/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index c72bf44..0000000
Binary files a/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 2ceb024..0000000
Binary files a/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
deleted file mode 100644
index fc01ba7..0000000
Binary files a/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 6782dc8..0000000
Binary files a/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index 405ced6..0000000
Binary files a/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 3a8e37a..0000000
Binary files a/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
deleted file mode 100644
index 8e2952c..0000000
Binary files a/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index e74baf9..0000000
Binary files a/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index dad9917..0000000
Binary files a/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/client/android/app/src/main/res/values/ic_launcher_background.xml b/client/android/app/src/main/res/values/ic_launcher_background.xml
deleted file mode 100644
index c5d5899..0000000
--- a/client/android/app/src/main/res/values/ic_launcher_background.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #FFFFFF
-
\ No newline at end of file
diff --git a/client/android/app/src/main/res/values/strings.xml b/client/android/app/src/main/res/values/strings.xml
deleted file mode 100644
index dea4268..0000000
--- a/client/android/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- Zen Kanji
- Zen Kanji
- com.zenkanji.app
- com.zenkanji.app
-
diff --git a/client/android/app/src/main/res/values/styles.xml b/client/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index be874e5..0000000
--- a/client/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/client/android/app/src/main/res/xml/file_paths.xml b/client/android/app/src/main/res/xml/file_paths.xml
deleted file mode 100644
index bd0c4d8..0000000
--- a/client/android/app/src/main/res/xml/file_paths.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/client/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java b/client/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java
deleted file mode 100644
index 0297327..0000000
--- a/client/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.getcapacitor.myapp;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
-
- @Test
- public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
diff --git a/client/android/build.gradle b/client/android/build.gradle
deleted file mode 100644
index adadaa7..0000000
--- a/client/android/build.gradle
+++ /dev/null
@@ -1,24 +0,0 @@
-buildscript {
-
- repositories {
- google()
- mavenCentral()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:8.7.2'
- classpath 'com.google.gms:google-services:4.4.2'
- }
-}
-
-apply from: "variables.gradle"
-
-allprojects {
- repositories {
- google()
- mavenCentral()
- }
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
diff --git a/client/android/capacitor.settings.gradle b/client/android/capacitor.settings.gradle
deleted file mode 100644
index 94cddac..0000000
--- a/client/android/capacitor.settings.gradle
+++ /dev/null
@@ -1,9 +0,0 @@
-// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
-include ':capacitor-android'
-project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor')
-
-include ':capacitor-app'
-project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android')
-
-include ':capgo-capacitor-updater'
-project(':capgo-capacitor-updater').projectDir = new File('../node_modules/@capgo/capacitor-updater/android')
diff --git a/client/android/gradle.properties b/client/android/gradle.properties
deleted file mode 100644
index 5e2afb4..0000000
--- a/client/android/gradle.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-org.gradle.jvmargs=-Xmx1536m
-android.useAndroidX=true
diff --git a/client/android/gradle/wrapper/gradle-wrapper.jar b/client/android/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index a4b76b9..0000000
Binary files a/client/android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/client/android/gradle/wrapper/gradle-wrapper.properties b/client/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index c1d5e01..0000000
--- a/client/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
-networkTimeout=10000
-validateDistributionUrl=true
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/client/android/gradlew b/client/android/gradlew
deleted file mode 100755
index f5feea6..0000000
--- a/client/android/gradlew
+++ /dev/null
@@ -1,252 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright © 2015-2021 the original authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-##############################################################################
-#
-# Gradle start up script for POSIX generated by Gradle.
-#
-# Important for running:
-#
-# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
-# noncompliant, but you have some other compliant shell such as ksh or
-# bash, then to run this script, type that shell name before the whole
-# command line, like:
-#
-# ksh Gradle
-#
-# Busybox and similar reduced shells will NOT work, because this script
-# requires all of these POSIX shell features:
-# * functions;
-# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
-# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
-# * compound commands having a testable exit status, especially «case»;
-# * various built-in commands including «command», «set», and «ulimit».
-#
-# Important for patching:
-#
-# (2) This script targets any POSIX shell, so it avoids extensions provided
-# by Bash, Ksh, etc; in particular arrays are avoided.
-#
-# The "traditional" practice of packing multiple parameters into a
-# space-separated string is a well documented source of bugs and security
-# problems, so this is (mostly) avoided, by progressively accumulating
-# options in "$@", and eventually passing that to Java.
-#
-# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
-# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
-# see the in-line comments for details.
-#
-# There are tweaks for specific operating systems such as AIX, CygWin,
-# Darwin, MinGW, and NonStop.
-#
-# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
-# within the Gradle project.
-#
-# You can find Gradle at https://github.com/gradle/gradle/.
-#
-##############################################################################
-
-# Attempt to set APP_HOME
-
-# Resolve links: $0 may be a link
-app_path=$0
-
-# Need this for daisy-chained symlinks.
-while
- APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
- [ -h "$app_path" ]
-do
- ls=$( ls -ld "$app_path" )
- link=${ls#*' -> '}
- case $link in #(
- /*) app_path=$link ;; #(
- *) app_path=$APP_HOME$link ;;
- esac
-done
-
-# This is normally unused
-# shellcheck disable=SC2034
-APP_BASE_NAME=${0##*/}
-# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
-' "$PWD" ) || exit
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD=maximum
-
-warn () {
- echo "$*"
-} >&2
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-} >&2
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "$( uname )" in #(
- CYGWIN* ) cygwin=true ;; #(
- Darwin* ) darwin=true ;; #(
- MSYS* | MINGW* ) msys=true ;; #(
- NONSTOP* ) nonstop=true ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD=$JAVA_HOME/jre/sh/java
- else
- JAVACMD=$JAVA_HOME/bin/java
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD=java
- if ! command -v java >/dev/null 2>&1
- then
- die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-fi
-
-# Increase the maximum file descriptors if we can.
-if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
- case $MAX_FD in #(
- max*)
- # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC2039,SC3045
- MAX_FD=$( ulimit -H -n ) ||
- warn "Could not query maximum file descriptor limit"
- esac
- case $MAX_FD in #(
- '' | soft) :;; #(
- *)
- # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC2039,SC3045
- ulimit -n "$MAX_FD" ||
- warn "Could not set maximum file descriptor limit to $MAX_FD"
- esac
-fi
-
-# Collect all arguments for the java command, stacking in reverse order:
-# * args from the command line
-# * the main class name
-# * -classpath
-# * -D...appname settings
-# * --module-path (only if needed)
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if "$cygwin" || "$msys" ; then
- APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
-
- JAVACMD=$( cygpath --unix "$JAVACMD" )
-
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- for arg do
- if
- case $arg in #(
- -*) false ;; # don't mess with options #(
- /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
- [ -e "$t" ] ;; #(
- *) false ;;
- esac
- then
- arg=$( cygpath --path --ignore --mixed "$arg" )
- fi
- # Roll the args list around exactly as many times as the number of
- # args, so each arg winds up back in the position where it started, but
- # possibly modified.
- #
- # NB: a `for` loop captures its iteration list before it begins, so
- # changing the positional parameters here affects neither the number of
- # iterations, nor the values presented in `arg`.
- shift # remove old arg
- set -- "$@" "$arg" # push replacement arg
- done
-fi
-
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Collect all arguments for the java command:
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
-# and any embedded shellness will be escaped.
-# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
-# treated as '${Hostname}' itself on the command line.
-
-set -- \
- "-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
- "$@"
-
-# Stop when "xargs" is not available.
-if ! command -v xargs >/dev/null 2>&1
-then
- die "xargs is not available"
-fi
-
-# Use "xargs" to parse quoted args.
-#
-# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
-#
-# In Bash we could simply go:
-#
-# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
-# set -- "${ARGS[@]}" "$@"
-#
-# but POSIX shell has neither arrays nor command substitution, so instead we
-# post-process each arg (as a line of input to sed) to backslash-escape any
-# character that might be a shell metacharacter, then use eval to reverse
-# that process (while maintaining the separation between arguments), and wrap
-# the whole thing up as a single "set" statement.
-#
-# This will of course break if any of these variables contains a newline or
-# an unmatched quote.
-#
-
-eval "set -- $(
- printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
- xargs -n1 |
- sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
- tr '\n' ' '
- )" '"$@"'
-
-exec "$JAVACMD" "$@"
diff --git a/client/android/gradlew.bat b/client/android/gradlew.bat
deleted file mode 100644
index 9b42019..0000000
--- a/client/android/gradlew.bat
+++ /dev/null
@@ -1,94 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-@rem SPDX-License-Identifier: Apache-2.0
-@rem
-
-@if "%DEBUG%"=="" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%"=="" set DIRNAME=.
-@rem This is normally unused
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if %ERRORLEVEL% equ 0 goto execute
-
-echo. 1>&2
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
-echo. 1>&2
-echo Please set the JAVA_HOME variable in your environment to match the 1>&2
-echo location of your Java installation. 1>&2
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo. 1>&2
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
-echo. 1>&2
-echo Please set the JAVA_HOME variable in your environment to match the 1>&2
-echo location of your Java installation. 1>&2
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if %ERRORLEVEL% equ 0 goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-set EXIT_CODE=%ERRORLEVEL%
-if %EXIT_CODE% equ 0 set EXIT_CODE=1
-if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
-exit /b %EXIT_CODE%
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/client/android/settings.gradle b/client/android/settings.gradle
deleted file mode 100644
index 3b4431d..0000000
--- a/client/android/settings.gradle
+++ /dev/null
@@ -1,5 +0,0 @@
-include ':app'
-include ':capacitor-cordova-android-plugins'
-project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/')
-
-apply from: 'capacitor.settings.gradle'
\ No newline at end of file
diff --git a/client/android/variables.gradle b/client/android/variables.gradle
deleted file mode 100644
index 2c8e408..0000000
--- a/client/android/variables.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-ext {
- minSdkVersion = 23
- compileSdkVersion = 35
- targetSdkVersion = 35
- androidxActivityVersion = '1.9.2'
- androidxAppCompatVersion = '1.7.0'
- androidxCoordinatorLayoutVersion = '1.2.0'
- androidxCoreVersion = '1.15.0'
- androidxFragmentVersion = '1.8.4'
- coreSplashScreenVersion = '1.0.1'
- androidxWebkitVersion = '1.12.1'
- junitVersion = '4.13.2'
- androidxJunitVersion = '1.2.1'
- androidxEspressoCoreVersion = '3.6.1'
- cordovaAndroidVersion = '10.1.1'
-}
\ No newline at end of file
diff --git a/client/package-lock.json b/client/package-lock.json
index a9f86dc..20490da 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -15,7 +15,7 @@
"@eslint/eslintrc": "^3.3.3",
"@eslint/js": "^9.39.2",
"@mdi/font": "^7.3.67",
- "capacitor": "^0.5.6",
+ "capacitor": "^0.1.4",
"eslint-plugin-jsonc": "^2.21.0",
"eslint-plugin-vue": "^9.33.0",
"globals": "^16.5.0",
@@ -651,9 +651,9 @@
}
},
"node_modules/@capacitor/cli": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-7.4.4.tgz",
- "integrity": "sha512-J7ciBE7GlJ70sr2s8oz1+H4ZdNk4MGG41fsakUlDHWva5UWgFIZYMiEdDvGbYazAYTaxN3lVZpH9zil9FfZj+Q==",
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-7.5.0.tgz",
+ "integrity": "sha512-mlohsvLZjWrO5eAVTn1+dABNQwQawcphVp6NQVJZ3I4x2BAoNmJj53QflX7PYGUipL9gF9EM9Yiku3m1McxFZg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -665,13 +665,13 @@
"env-paths": "^2.2.0",
"fs-extra": "^11.2.0",
"kleur": "^4.1.5",
- "native-run": "^2.0.1",
+ "native-run": "^2.0.3",
"open": "^8.4.0",
"plist": "^3.1.0",
"prompts": "^2.4.2",
"rimraf": "^6.0.1",
"semver": "^7.6.3",
- "tar": "^6.1.11",
+ "tar": "^7.5.3",
"tslib": "^2.8.1",
"xml2js": "^0.6.2"
},
@@ -1551,27 +1551,17 @@
"node": ">=16.0.0"
}
},
- "node_modules/@isaacs/balanced-match": {
+ "node_modules/@isaacs/fs-minipass": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
- "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/@isaacs/brace-expansion": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
- "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
- "dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@isaacs/balanced-match": "^4.0.1"
+ "minipass": "^7.0.4"
},
"engines": {
- "node": "20 || >=22"
+ "node": ">=18.0.0"
}
},
"node_modules/@jridgewell/gen-mapping": {
@@ -2038,9 +2028,9 @@
"license": "MIT"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.5.tgz",
- "integrity": "sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz",
+ "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==",
"cpu": [
"arm"
],
@@ -2051,9 +2041,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.5.tgz",
- "integrity": "sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz",
+ "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==",
"cpu": [
"arm64"
],
@@ -2064,9 +2054,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.5.tgz",
- "integrity": "sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz",
+ "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==",
"cpu": [
"arm64"
],
@@ -2077,9 +2067,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.5.tgz",
- "integrity": "sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz",
+ "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==",
"cpu": [
"x64"
],
@@ -2090,9 +2080,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.5.tgz",
- "integrity": "sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz",
+ "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==",
"cpu": [
"arm64"
],
@@ -2103,9 +2093,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.5.tgz",
- "integrity": "sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz",
+ "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==",
"cpu": [
"x64"
],
@@ -2116,9 +2106,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.5.tgz",
- "integrity": "sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz",
+ "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==",
"cpu": [
"arm"
],
@@ -2129,9 +2119,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.5.tgz",
- "integrity": "sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz",
+ "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==",
"cpu": [
"arm"
],
@@ -2142,9 +2132,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.5.tgz",
- "integrity": "sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz",
+ "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==",
"cpu": [
"arm64"
],
@@ -2155,9 +2145,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.5.tgz",
- "integrity": "sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz",
+ "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==",
"cpu": [
"arm64"
],
@@ -2168,9 +2158,22 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.5.tgz",
- "integrity": "sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz",
+ "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz",
+ "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==",
"cpu": [
"loong64"
],
@@ -2181,9 +2184,22 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.5.tgz",
- "integrity": "sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz",
+ "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz",
+ "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==",
"cpu": [
"ppc64"
],
@@ -2194,9 +2210,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.5.tgz",
- "integrity": "sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz",
+ "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==",
"cpu": [
"riscv64"
],
@@ -2207,9 +2223,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.5.tgz",
- "integrity": "sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz",
+ "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==",
"cpu": [
"riscv64"
],
@@ -2220,9 +2236,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.5.tgz",
- "integrity": "sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz",
+ "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==",
"cpu": [
"s390x"
],
@@ -2233,9 +2249,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.5.tgz",
- "integrity": "sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz",
+ "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==",
"cpu": [
"x64"
],
@@ -2246,9 +2262,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.5.tgz",
- "integrity": "sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz",
+ "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==",
"cpu": [
"x64"
],
@@ -2258,10 +2274,23 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz",
+ "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
+ },
"node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.5.tgz",
- "integrity": "sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz",
+ "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==",
"cpu": [
"arm64"
],
@@ -2272,9 +2301,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.5.tgz",
- "integrity": "sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz",
+ "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==",
"cpu": [
"arm64"
],
@@ -2285,9 +2314,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.5.tgz",
- "integrity": "sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz",
+ "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==",
"cpu": [
"ia32"
],
@@ -2298,9 +2327,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.5.tgz",
- "integrity": "sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz",
+ "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==",
"cpu": [
"x64"
],
@@ -2311,9 +2340,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.5.tgz",
- "integrity": "sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz",
+ "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==",
"cpu": [
"x64"
],
@@ -2693,9 +2722,9 @@
}
},
"node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
@@ -3286,14 +3315,24 @@
"license": "CC-BY-4.0"
},
"node_modules/capacitor": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/capacitor/-/capacitor-0.5.6.tgz",
- "integrity": "sha512-xjyv2ztJxD1VayTMGIkh+TNfpdJU9BT3jO4Y5kEsh5MpF+zEdBQYLC/pFD9lNyS6mi8Pm3b/bj0ZUSOKblkfcw==",
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/capacitor/-/capacitor-0.1.4.tgz",
+ "integrity": "sha512-wJjJmi0h0Rcob3WiaZTSEj50W2AhiZH+7C+7nE6zqrxb4rBLZDcvZ+i568LR7ioWCsI+8TAiIKYVKQ0uScmYUw==",
"dependencies": {
- "immutable": "^3.7.3",
- "lodash": "^4.17.21"
+ "lodash": "^2.4.1",
+ "signals": "=1.0.0"
}
},
+ "node_modules/capacitor/node_modules/lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==",
+ "engines": [
+ "node",
+ "rhino"
+ ],
+ "license": "MIT"
+ },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -3336,13 +3375,13 @@
}
},
"node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "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": "ISC",
+ "license": "BlueOak-1.0.0",
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/color-convert": {
@@ -5067,32 +5106,6 @@
"node": ">=14.14"
}
},
- "node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -5258,17 +5271,40 @@
"node": ">=10.13.0"
}
},
+ "node_modules/glob/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/glob/node_modules/brace-expansion": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+ "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
"node_modules/glob/node_modules/minimatch": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
- "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+ "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "@isaacs/brace-expansion": "^5.0.0"
+ "brace-expansion": "^5.0.2"
},
"engines": {
- "node": "20 || >=22"
+ "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -5584,13 +5620,11 @@
}
},
"node_modules/immutable": {
- "version": "3.8.2",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
- "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz",
+ "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==",
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/import-fresh": {
"version": "3.3.1",
@@ -6480,9 +6514,9 @@
}
},
"node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
+ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"license": "MIT"
},
"node_modules/lodash.merge": {
@@ -6617,9 +6651,9 @@
}
},
"node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -6649,30 +6683,16 @@
}
},
"node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "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": "^3.0.0",
- "yallist": "^4.0.0"
+ "minipass": "^7.1.2"
},
"engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minizlib/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": ">= 18"
}
},
"node_modules/mitt": {
@@ -6681,19 +6701,6 @@
"integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
"license": "MIT"
},
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/moo": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz",
@@ -6744,9 +6751,9 @@
}
},
"node_modules/native-run": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/native-run/-/native-run-2.0.1.tgz",
- "integrity": "sha512-XfG1FBZLM50J10xH9361whJRC9SHZ0Bub4iNRhhI61C8Jv0e1ud19muex6sNKB51ibQNUJNuYn25MuYET/rE6w==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/native-run/-/native-run-2.0.3.tgz",
+ "integrity": "sha512-U1PllBuzW5d1gfan+88L+Hky2eZx+9gv3Pf6rNBxKbORxi7boHzqiA6QFGSnqMem4j0A9tZ08NMIs5+0m/VS1Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7722,9 +7729,9 @@
}
},
"node_modules/rollup": {
- "version": "4.53.5",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.5.tgz",
- "integrity": "sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==",
+ "version": "4.59.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz",
+ "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==",
"license": "MIT",
"dependencies": {
"@types/estree": "1.0.8"
@@ -7737,28 +7744,31 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.53.5",
- "@rollup/rollup-android-arm64": "4.53.5",
- "@rollup/rollup-darwin-arm64": "4.53.5",
- "@rollup/rollup-darwin-x64": "4.53.5",
- "@rollup/rollup-freebsd-arm64": "4.53.5",
- "@rollup/rollup-freebsd-x64": "4.53.5",
- "@rollup/rollup-linux-arm-gnueabihf": "4.53.5",
- "@rollup/rollup-linux-arm-musleabihf": "4.53.5",
- "@rollup/rollup-linux-arm64-gnu": "4.53.5",
- "@rollup/rollup-linux-arm64-musl": "4.53.5",
- "@rollup/rollup-linux-loong64-gnu": "4.53.5",
- "@rollup/rollup-linux-ppc64-gnu": "4.53.5",
- "@rollup/rollup-linux-riscv64-gnu": "4.53.5",
- "@rollup/rollup-linux-riscv64-musl": "4.53.5",
- "@rollup/rollup-linux-s390x-gnu": "4.53.5",
- "@rollup/rollup-linux-x64-gnu": "4.53.5",
- "@rollup/rollup-linux-x64-musl": "4.53.5",
- "@rollup/rollup-openharmony-arm64": "4.53.5",
- "@rollup/rollup-win32-arm64-msvc": "4.53.5",
- "@rollup/rollup-win32-ia32-msvc": "4.53.5",
- "@rollup/rollup-win32-x64-gnu": "4.53.5",
- "@rollup/rollup-win32-x64-msvc": "4.53.5",
+ "@rollup/rollup-android-arm-eabi": "4.59.0",
+ "@rollup/rollup-android-arm64": "4.59.0",
+ "@rollup/rollup-darwin-arm64": "4.59.0",
+ "@rollup/rollup-darwin-x64": "4.59.0",
+ "@rollup/rollup-freebsd-arm64": "4.59.0",
+ "@rollup/rollup-freebsd-x64": "4.59.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.59.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.59.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.59.0",
+ "@rollup/rollup-linux-arm64-musl": "4.59.0",
+ "@rollup/rollup-linux-loong64-gnu": "4.59.0",
+ "@rollup/rollup-linux-loong64-musl": "4.59.0",
+ "@rollup/rollup-linux-ppc64-gnu": "4.59.0",
+ "@rollup/rollup-linux-ppc64-musl": "4.59.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.59.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.59.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.59.0",
+ "@rollup/rollup-linux-x64-gnu": "4.59.0",
+ "@rollup/rollup-linux-x64-musl": "4.59.0",
+ "@rollup/rollup-openbsd-x64": "4.59.0",
+ "@rollup/rollup-openharmony-arm64": "4.59.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.59.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.59.0",
+ "@rollup/rollup-win32-x64-gnu": "4.59.0",
+ "@rollup/rollup-win32-x64-msvc": "4.59.0",
"fsevents": "~2.3.2"
}
},
@@ -7901,13 +7911,6 @@
"@parcel/watcher": "^2.4.1"
}
},
- "node_modules/sass/node_modules/immutable": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
- "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
- "devOptional": true,
- "license": "MIT"
- },
"node_modules/sax": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
@@ -8080,6 +8083,11 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/signals": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/signals/-/signals-1.0.0.tgz",
+ "integrity": "sha512-dE3lBiqgrgIvpGHYBy6/kiYKfh0HXRmbg0ocakBKiOefbal6ZeTtNlQlxsu9ADkNzv5OmRwRKu+IaTPSqJdZDg=="
+ },
"node_modules/sirv": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz",
@@ -8741,9 +8749,9 @@
}
},
"node_modules/table/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8765,31 +8773,20 @@
"license": "MIT"
},
"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==",
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.10.tgz",
+ "integrity": "sha512-8mOPs1//5q/rlkNSPcCegA6hiHJYDmSLEI8aMH/CdSQJNWztHC9WHNam5zdQlfpTwB9Xp7IBEsHfV5LKMJGVAw==",
"dev": true,
- "license": "ISC",
+ "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_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": ">=18"
}
},
"node_modules/text-table": {
@@ -9815,11 +9812,14 @@
}
},
"node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "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": "ISC"
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/yauzl": {
"version": "2.10.0",
diff --git a/client/package.json b/client/package.json
index 86fc5c7..007619d 100644
--- a/client/package.json
+++ b/client/package.json
@@ -20,7 +20,7 @@
"@eslint/eslintrc": "^3.3.3",
"@eslint/js": "^9.39.2",
"@mdi/font": "^7.3.67",
- "capacitor": "^0.5.6",
+ "capacitor": "^0.1.4",
"eslint-plugin-jsonc": "^2.21.0",
"eslint-plugin-vue": "^9.33.0",
"globals": "^16.5.0",
diff --git a/client/src/components/kanji/KanjiCanvas.vue b/client/src/components/kanji/KanjiCanvas.vue
index 95e43a7..e3388e0 100644
--- a/client/src/components/kanji/KanjiCanvas.vue
+++ b/client/src/components/kanji/KanjiCanvas.vue
@@ -79,7 +79,9 @@ function handlePointerUp(e) {
if (!controller) return;
if (e.cancelable) e.preventDefault();
- e.target.releasePointerCapture(e.pointerId);
+ try {
+ e.target.releasePointerCapture(e.pointerId);
+ } catch (_) { /* pointer was never captured */ }
controller.endStroke();
}
@@ -110,7 +112,10 @@ onMounted(() => {
});
onBeforeUnmount(() => {
- controller = null;
+ if (controller) {
+ controller.reset();
+ controller = null;
+ }
});
watch(() => props.char, (newChar) => {
@@ -136,6 +141,10 @@ watch(() => store.drawingAccuracy, (newVal) => {
defineExpose({
reset: () => controller?.reset(),
showHint: () => controller?.showHint(),
- drawGuide: () => controller?.showHint(),
+ drawGuide: (enableAutoHint) => {
+ if (!controller) return;
+ if (enableAutoHint) controller.setAutoHint(true);
+ controller.showHint();
+ },
});
diff --git a/client/src/stores/appStore.js b/client/src/stores/appStore.js
index cf6998b..7465bf3 100644
--- a/client/src/stores/appStore.js
+++ b/client/src/stores/appStore.js
@@ -70,7 +70,17 @@ export const useAppStore = defineStore('app', {
this.token = '';
this.user = null;
this.queue = [];
- this.stats = {};
+ this.lessonQueue = [];
+ this.collection = [];
+ this.stats = {
+ distribution: {},
+ forecast: [],
+ queueLength: 0,
+ lessonCount: 0,
+ streak: {},
+ accuracy: {},
+ ghosts: [],
+ };
localStorage.removeItem('zen_token');
localStorage.removeItem('zen_batch_size');
localStorage.removeItem('zen_drawing_accuracy');
diff --git a/client/src/styles/base/_base.scss b/client/src/styles/base/_base.scss
index 0b1520e..f681d4c 100644
--- a/client/src/styles/base/_base.scss
+++ b/client/src/styles/base/_base.scss
@@ -67,3 +67,10 @@ html,
opacity: 0;
transform: translateY(-15px);
}
+
+// Fix for flickering on mobile during transitions
+.v-navigation-drawer--temporary,
+.v-dialog > .v-card {
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
diff --git a/client/src/styles/pages/_collection.scss b/client/src/styles/pages/_collection.scss
index 5ada9c2..35cf8f0 100644
--- a/client/src/styles/pages/_collection.scss
+++ b/client/src/styles/pages/_collection.scss
@@ -99,7 +99,7 @@
.readings-container {
display: grid;
- grid-template-columns: 1fr 1fr;
+ grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
gap: $spacing-sm;
text-align: left;
diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml
index fb948c9..08cb4ec 100644
--- a/docker-compose.dev.yml
+++ b/docker-compose.dev.yml
@@ -11,23 +11,28 @@ services:
- zen-network
server:
- depends_on:
- - mongo
- environment:
- - MONGO_URI=mongodb://mongo:27017/zenkanji
- volumes:
- - ./server:/app
- - /app/node_modules
- ports:
- - "3000:3000"
- command: npm run dev
+ build:
+ context: ./server
+ container_name: zen_server
+ env_file:
+ - ./server/.env
+ networks:
+ - zen-network
client:
- build:
- target: dev-stage
- ports:
- - "5173:5173"
- volumes:
- - ./client:/app
- - /app/node_modules
- command: npm run dev -- --host
+ build:
+ context: ./client
+ container_name: zen_client
+ env_file:
+ - ./client/.env
+ depends_on:
+ - server
+ networks:
+ - zen-network
+
+volumes:
+ mongo-data:
+
+networks:
+ zen-network:
+ driver: bridge
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..fdd708f
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6 @@
+{
+ "name": "zen-kanji",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {}
+}
diff --git a/server/package-lock.json b/server/package-lock.json
index 7e14aad..f4d576f 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -10,6 +10,7 @@
"dependencies": {
"@fastify/cors": "^11.2.0",
"@fastify/jwt": "^10.0.0",
+ "@fastify/rate-limit": "^10.3.0",
"cors": "^2.8.5",
"fastify": "^5.6.2",
"fastify-cors": "^6.0.3",
@@ -677,6 +678,27 @@
"ipaddr.js": "^2.1.0"
}
},
+ "node_modules/@fastify/rate-limit": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@fastify/rate-limit/-/rate-limit-10.3.0.tgz",
+ "integrity": "sha512-eIGkG9XKQs0nyynatApA3EVrojHOuq4l6fhB4eeCk4PIOeadvOJz9/4w3vGI44Go17uaXOWEcPkaD8kuKm7g6Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@lukeed/ms": "^2.0.2",
+ "fastify-plugin": "^5.0.0",
+ "toad-cache": "^3.7.0"
+ }
+ },
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
diff --git a/server/package.json b/server/package.json
index 07f6f56..e063ccc 100644
--- a/server/package.json
+++ b/server/package.json
@@ -12,6 +12,7 @@
"dependencies": {
"@fastify/cors": "^11.2.0",
"@fastify/jwt": "^10.0.0",
+ "@fastify/rate-limit": "^10.3.0",
"cors": "^2.8.5",
"fastify": "^5.6.2",
"fastify-cors": "^6.0.3",
diff --git a/server/server.js b/server/server.js
index f64cabe..9ab58d0 100644
--- a/server/server.js
+++ b/server/server.js
@@ -1,7 +1,8 @@
import Fastify from 'fastify';
import cors from '@fastify/cors';
import jwt from '@fastify/jwt';
-import { PORT, JWT_SECRET } from './src/config/constants.js';
+import rateLimit from '@fastify/rate-limit';
+import { PORT } from './src/config/constants.js';
import { connectDB } from './src/config/db.js';
import routes from './src/routes/v1.js';
import { User } from './src/models/User.js';
@@ -39,6 +40,11 @@ await fastify.register(jwt, {
secret: process.env.JWT_SECRET
});
+await fastify.register(rateLimit, {
+ max: 100,
+ timeWindow: '1 minute'
+});
+
fastify.decorate('authenticate', async function (req, reply) {
try {
const payload = await req.jwtVerify();
@@ -54,9 +60,6 @@ fastify.decorate('authenticate', async function (req, reply) {
reply.code(401).send({ message: 'Session invalid', code: 'INVALID_SESSION' });
return;
}
- if (payload.version !== user.tokenVersion) {
- throw new Error('Session invalid');
- }
req.user = user;
diff --git a/server/src/models/StudyItem.js b/server/src/models/StudyItem.js
index 99b2569..0a041e4 100644
--- a/server/src/models/StudyItem.js
+++ b/server/src/models/StudyItem.js
@@ -11,6 +11,7 @@ const studyItemSchema = new mongoose.Schema({
onyomi: { type: [String], default: [] },
kunyomi: { type: [String], default: [] },
nanori: { type: [String], default: [] },
+ mnemonic: { type: String, default: '' },
radicals: [{
meaning: String,
char: String,
diff --git a/server/src/routes/v1.js b/server/src/routes/v1.js
index b1cf608..06bab4b 100644
--- a/server/src/routes/v1.js
+++ b/server/src/routes/v1.js
@@ -4,7 +4,9 @@ import { submitReview, submitLesson } from '../controllers/review.controller.js'
import { getStats, getQueue, getLessonQueue, getCollection, updateSettings } from '../controllers/collection.controller.js';
async function routes(fastify, options) {
- fastify.post('/api/auth/login', login);
+ fastify.post('/api/auth/login', {
+ config: { rateLimit: { max: 5, timeWindow: '1 minute' } }
+ }, login);
fastify.register(async (privateParams) => {
privateParams.addHook('onRequest', fastify.authenticate);
diff --git a/server/src/services/stats.service.js b/server/src/services/stats.service.js
index eca06a3..bae4fb7 100644
--- a/server/src/services/stats.service.js
+++ b/server/src/services/stats.service.js
@@ -9,14 +9,14 @@ export const getUserStats = async (user) => {
{ $match: { userId: userId } },
{ $group: { _id: "$srsLevel", count: { $sum: 1 } } }
]);
- const dist = { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0 };
+ const dist = { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0 };
srsCounts.forEach(g => { if (dist[g._id] !== undefined) dist[g._id] = g.count; });
const now = new Date();
const next24h = new Date(now.getTime() + 24 * 60 * 60 * 1000);
const upcoming = await StudyItem.find({
userId: userId,
- srsLevel: { $lt: 6, $gt: 0 },
+ srsLevel: { $lt: 10, $gt: 0 },
nextReview: { $lte: next24h }
}).select('nextReview');
@@ -29,7 +29,7 @@ export const getUserStats = async (user) => {
const queueItems = await StudyItem.find({
userId: userId,
- srsLevel: { $lt: 6, $gt: 0 },
+ srsLevel: { $lt: 10, $gt: 0 },
nextReview: { $lte: now }
}).select('srsLevel');
const queueCount = queueItems.length;
diff --git a/server/src/services/sync.service.js b/server/src/services/sync.service.js
index 8c4c0c8..1aa60c5 100644
--- a/server/src/services/sync.service.js
+++ b/server/src/services/sync.service.js
@@ -81,11 +81,15 @@ export const syncWithWaniKani = async (user) => {
.map(rid => radicalMap.get(rid))
.filter(Boolean);
+ const rawMnemonic = d.data.meaning_mnemonic || '';
+ const mnemonic = rawMnemonic.replace(/<[^>]*>/g, '');
+
return {
userId: user._id,
wkSubjectId: d.id,
char: d.data.characters,
meaning: d.data.meanings.find(m => m.primary)?.meaning || 'Unknown',
+ mnemonic,
level: d.data.level,
srsLevel: 0,
nextReview: Date.now(),
diff --git a/server/tests/services/stats.service.test.js b/server/tests/services/stats.service.test.js
index da16f92..af3b784 100644
--- a/server/tests/services/stats.service.test.js
+++ b/server/tests/services/stats.service.test.js
@@ -71,7 +71,7 @@ describe('Stats Service', () => {
expect(stats.ghosts[1].accuracy).toBe(60);
expect(stats.distribution[1]).toBe(5);
- expect(stats.distribution[8]).toBeUndefined();
+ expect(stats.distribution[8]).toBe(2);
expect(stats.heatmap['2023-01-09']).toBe(5);
});
diff --git a/server/tests/utils.test.js b/server/tests/utils.test.js
index 28d3d6f..48db3f9 100644
--- a/server/tests/utils.test.js
+++ b/server/tests/utils.test.js
@@ -24,22 +24,27 @@ describe('Date Utils', () => {
vi.useRealTimers();
});
- it('should add correct hours for levels 1-6', () => {
- const base = new Date('2023-01-01T12:00:00Z');
+ // Helper: getSRSDate adds hours then zeroes out minutes/seconds
+ const expectedDate = (hoursToAdd) => {
+ const d = new Date('2023-01-01T12:00:00Z');
+ d.setUTCHours(d.getUTCHours() + hoursToAdd);
+ d.setUTCMinutes(0, 0, 0);
+ return d.toISOString();
+ };
- expect(getSRSDate(1).toISOString()).toBe(new Date(base.getTime() + 4 * 3600000).toISOString());
- expect(getSRSDate(2).toISOString()).toBe(new Date(base.getTime() + 8 * 3600000).toISOString());
- expect(getSRSDate(3).toISOString()).toBe(new Date(base.getTime() + 24 * 3600000).toISOString());
- expect(getSRSDate(4).toISOString()).toBe(new Date(base.getTime() + 48 * 3600000).toISOString());
- expect(getSRSDate(5).toISOString()).toBe(new Date(base.getTime() + 7 * 24 * 3600000).toISOString());
- expect(getSRSDate(6).toISOString()).toBe(new Date(base.getTime() + 14 * 24 * 3600000).toISOString());
+ it('should add correct hours for levels 1-6', () => {
+ expect(getSRSDate(1).toISOString()).toBe(expectedDate(4)); // 4 hours
+ expect(getSRSDate(2).toISOString()).toBe(expectedDate(8)); // 8 hours
+ expect(getSRSDate(3).toISOString()).toBe(expectedDate(24)); // 1 day
+ expect(getSRSDate(4).toISOString()).toBe(expectedDate(48)); // 2 days
+ expect(getSRSDate(5).toISOString()).toBe(expectedDate(7 * 24)); // 1 week
+ expect(getSRSDate(6).toISOString()).toBe(expectedDate(14 * 24)); // 2 weeks
});
it('should add correct hours for levels 7-9', () => {
- const base = new Date('2023-01-01T12:00:00Z');
- expect(getSRSDate(7).toISOString()).toBe(new Date(base.getTime() + 7 * 24 * 3600000).toISOString());
- expect(getSRSDate(8).toISOString()).toBe(new Date(base.getTime() + 30 * 24 * 3600000).toISOString());
- expect(getSRSDate(9).toISOString()).toBe(new Date(base.getTime() + 90 * 24 * 3600000).toISOString());
+ expect(getSRSDate(7).toISOString()).toBe(expectedDate(30 * 24)); // 30 days
+ expect(getSRSDate(8).toISOString()).toBe(expectedDate(90 * 24)); // 90 days
+ expect(getSRSDate(9).toISOString()).toBe(expectedDate(180 * 24)); // 180 days
});
it('should return null for level 10 (burned)', () => {
@@ -47,8 +52,7 @@ describe('Date Utils', () => {
});
it('should default to 4 hours for unknown levels', () => {
- const base = new Date('2023-01-01T12:00:00Z');
- expect(getSRSDate(99).toISOString()).toBe(new Date(base.getTime() + 4 * 3600000).toISOString());
+ expect(getSRSDate(99).toISOString()).toBe(expectedDate(4));
});
});
});