From e4e6361dc2ad82564d268b79f64a2e886fcfa54c Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Thu, 7 May 2026 15:32:43 +0200 Subject: [PATCH 01/20] feat: bump Android SDK to 18.3.0 --- package.json | 2 +- plugin.xml | 2 +- src/android/talsec.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 34f4ff7..5fec4b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cordova-talsec-plugin-freerasp", - "version": "8.3.1", + "version": "8.4.0", "description": "Cordova plugin for improving app security and threat monitoring on Android and iOS mobile devices.", "cordova": { "id": "cordova-talsec-plugin-freerasp", diff --git a/plugin.xml b/plugin.xml index 2bd5a4d..4635fda 100644 --- a/plugin.xml +++ b/plugin.xml @@ -2,7 +2,7 @@ + version="8.4.0"> freerasp Talsec (info@talsec.app) diff --git a/src/android/talsec.gradle b/src/android/talsec.gradle index 18ece97..a983add 100644 --- a/src/android/talsec.gradle +++ b/src/android/talsec.gradle @@ -9,7 +9,7 @@ repositories { } dependencies { - implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-Cordova:18.0.4" + implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-Cordova:18.3.0" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1" } From 57ed3c0c6b9e35e9d08fbf0f0272092119fa9f5b Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Thu, 7 May 2026 15:32:48 +0200 Subject: [PATCH 02/20] feat!: rename reason to reasons in SuspiciousAppInfo --- .../models/CordovaSuspiciousAppInfo.kt | 2 +- src/android/utils/Extensions.kt | 38 ++++++++++++++++++- www/src/types/types.ts | 30 ++++++++++++++- 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/src/android/models/CordovaSuspiciousAppInfo.kt b/src/android/models/CordovaSuspiciousAppInfo.kt index 54814f8..201a916 100644 --- a/src/android/models/CordovaSuspiciousAppInfo.kt +++ b/src/android/models/CordovaSuspiciousAppInfo.kt @@ -9,7 +9,7 @@ import kotlinx.serialization.Serializable @Serializable data class CordovaSuspiciousAppInfo( val packageInfo: CordovaPackageInfo, - val reason: String, + val reasons: Set, val permissions: Set? ) diff --git a/src/android/utils/Extensions.kt b/src/android/utils/Extensions.kt index ee0e5d2..774dfeb 100644 --- a/src/android/utils/Extensions.kt +++ b/src/android/utils/Extensions.kt @@ -7,6 +7,10 @@ import android.util.Log import com.aheaditec.talsec.cordova.models.CordovaPackageInfo import com.aheaditec.talsec.cordova.models.CordovaSuspiciousAppInfo import com.aheaditec.talsec_security.security.api.SuspiciousAppInfo +import com.aheaditec.talsec_security.security.api.SuspiciousAppDetectionConfig +import com.aheaditec.talsec_security.security.api.MalwareScanScope +import com.aheaditec.talsec_security.security.api.ScopeType +import com.aheaditec.talsec_security.security.api.ReasonMode import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import org.json.JSONArray @@ -69,7 +73,7 @@ internal fun JSONObject.getStringSafe(key: String): String? { internal fun SuspiciousAppInfo.toCordovaSuspiciousAppInfo(context: Context): CordovaSuspiciousAppInfo { return CordovaSuspiciousAppInfo( packageInfo = this.packageInfo.toCordovaPackageInfo(context), - reason = this.reason, + reasons = this.reasons, permissions = this.permissions ) } @@ -87,6 +91,38 @@ internal fun PackageInfo.toCordovaPackageInfo(context: Context): CordovaPackageI ) } +internal fun JSONObject.toMalwareScanScope(): MalwareScanScope { + val scopeStr = this.getStringSafe("scanScope") ?: "" + val scanScope = ScopeType.entries.firstOrNull { it.name == scopeStr } ?: ScopeType.SIDELOADED_ONLY + val trustedInstallSources = this.getArraySafe("trustedInstallSources").toSet() + return MalwareScanScope( + scanScope = scanScope, + trustedInstallSources = trustedInstallSources.ifEmpty { null } + ) +} + +internal fun JSONObject.toSuspiciousAppDetectionConfig(): SuspiciousAppDetectionConfig { + val packageNames = this.getArraySafe("packageNames").toSet().ifEmpty { null } + val hashes = this.getArraySafe("hashes").toSet().ifEmpty { null } + val requestedPermissions = this.getNestedArraySafe("requestedPermissions") + .map { it.toSet() }.toSet().ifEmpty { null } + val grantedPermissions = this.getNestedArraySafe("grantedPermissions") + .map { it.toSet() }.toSet().ifEmpty { null } + val malwareScanScope = if (this.has("malwareScanScope")) + this.getJSONObject("malwareScanScope").toMalwareScanScope() else null + val reasonModeStr = this.getStringSafe("reasonMode") ?: "" + val reasonMode = ReasonMode.entries.firstOrNull { it.name == reasonModeStr } + ?: ReasonMode.HIGHEST_CONFIDENCE + return SuspiciousAppDetectionConfig( + packageNames = packageNames, + hashes = hashes, + requestedPermissions = requestedPermissions, + grantedPermissions = grantedPermissions, + malwareScanScope = malwareScanScope, + reasonMode = reasonMode + ) +} + /** * Convert the Talsec's SuspiciousAppInfo to base64-encoded json array, * which can be then sent to Cordova diff --git a/www/src/types/types.ts b/www/src/types/types.ts index 0d8433e..2b9ae78 100644 --- a/www/src/types/types.ts +++ b/www/src/types/types.ts @@ -11,6 +11,30 @@ export type TalsecAndroidConfig = { certificateHashes: string[]; supportedAlternativeStores?: string[]; malwareConfig?: TalsecMalwareConfig; + suspiciousAppDetectionConfig?: SuspiciousAppDetectionConfig; +}; + +export type ScopeType = + | 'SIDELOADED_ONLY' + | 'SIDELOADED_AND_SYSTEM_EXCLUDE_OEM' + | 'SIDELOADED_AND_OEM' + | 'SIDELOADED_AND_SYSTEM_AND_OEM' + | 'ALL'; + +export type ReasonMode = 'ALL' | 'HIGHEST_CONFIDENCE'; + +export type MalwareScanScope = { + scanScope: ScopeType; + trustedInstallSources?: string[]; +}; + +export type SuspiciousAppDetectionConfig = { + packageNames?: string[]; + hashes?: string[]; + requestedPermissions?: string[][]; + grantedPermissions?: string[][]; + malwareScanScope?: MalwareScanScope; + reasonMode?: ReasonMode; }; export type TalsecIosConfig = { @@ -19,15 +43,19 @@ export type TalsecIosConfig = { }; export type TalsecMalwareConfig = { + /** @deprecated Use SuspiciousAppDetectionConfig instead */ blacklistedHashes?: string[]; + /** @deprecated Use SuspiciousAppDetectionConfig instead */ blacklistedPackageNames?: string[]; + /** @deprecated Use SuspiciousAppDetectionConfig instead */ suspiciousPermissions?: string[][]; + /** @deprecated Use SuspiciousAppDetectionConfig instead */ whitelistedInstallationSources?: string[]; }; export type SuspiciousAppInfo = { packageInfo: PackageInfo; - reason: string; + reasons: string[]; permissions?: string[]; }; From 1e9a0d9fee97ab12139436bf05ca0dc613547ec8 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Thu, 7 May 2026 15:33:30 +0200 Subject: [PATCH 03/20] feat: add SuspiciousAppDetectionConfig to API --- example/src/app/app.component.ts | 14 +++++++++----- .../malware-item/malware-item.component.html | 4 ++-- src/android/TalsecPlugin.kt | 6 ++++++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/example/src/app/app.component.ts b/example/src/app/app.component.ts index cceed04..2ae6d91 100644 --- a/example/src/app/app.component.ts +++ b/example/src/app/app.component.ts @@ -29,10 +29,10 @@ export class AppComponent implements OnInit { androidConfig: { packageName: 'io.ionic.starter', certificateHashes: ['AKoRuyLMM91E7lX/Zqp3u4jMmd0A7hH/Iqozu0TMVd0='], - malwareConfig: { - blacklistedHashes: ['FgvSehLMM91E7lX/Zqp3u4jMmd0A7hH/Iqozu0TMVd0u'], - blacklistedPackageNames: ['io.ionic.starter'], - suspiciousPermissions: [ + suspiciousAppDetectionConfig: { + hashes: ['FgvSehLMM91E7lX/Zqp3u4jMmd0A7hH/Iqozu0TMVd0u'], + packageNames: ['io.ionic.starter'], + requestedPermissions: [ [ 'android.permission.INTERNET', 'android.permission.ACCESS_COARSE_LOCATION', @@ -40,7 +40,11 @@ export class AppComponent implements OnInit { ['android.permission.BLUETOOTH'], ['android.permission.BATTERY_STATS'], ], - whitelistedInstallationSources: ['com.apkpure.aegon'], + malwareScanScope: { + scanScope: 'SIDELOADED_ONLY', + trustedInstallSources: ['com.apkpure.aegon'], + }, + reasonMode: 'HIGHEST_CONFIDENCE', }, }, iosConfig: { diff --git a/example/src/app/components/malware-item/malware-item.component.html b/example/src/app/components/malware-item/malware-item.component.html index 1f5a3dc..2ef80a6 100644 --- a/example/src/app/components/malware-item/malware-item.component.html +++ b/example/src/app/components/malware-item/malware-item.component.html @@ -65,8 +65,8 @@ Not specified
} - Detection reason:
- {{ susApp.reason }}Detection reasons:
+ {{ susApp.reasons.join(', ') }}
diff --git a/src/android/TalsecPlugin.kt b/src/android/TalsecPlugin.kt index ed9f839..0652c28 100644 --- a/src/android/TalsecPlugin.kt +++ b/src/android/TalsecPlugin.kt @@ -20,6 +20,7 @@ import com.aheaditec.talsec.cordova.utils.getArraySafe import com.aheaditec.talsec.cordova.utils.getBooleanSafe import com.aheaditec.talsec.cordova.utils.getNestedArraySafe import com.aheaditec.talsec.cordova.utils.getStringSafe +import com.aheaditec.talsec.cordova.utils.toSuspiciousAppDetectionConfig import com.aheaditec.talsec_security.security.api.SuspiciousAppInfo import com.aheaditec.talsec_security.security.api.Talsec import com.aheaditec.talsec_security.security.api.TalsecConfig @@ -303,6 +304,11 @@ class TalsecPlugin : CordovaPlugin() { talsecBuilder.blacklistedPackageNames(malwareConfig.getArraySafe("blacklistedPackageNames")) talsecBuilder.suspiciousPermissions(malwareConfig.getNestedArraySafe("suspiciousPermissions")) } + if (androidConfig.has("suspiciousAppDetectionConfig")) { + val suspiciousAppDetectionConfig = androidConfig.getJSONObject("suspiciousAppDetectionConfig") + .toSuspiciousAppDetectionConfig() + talsecBuilder.suspiciousAppDetection(suspiciousAppDetectionConfig) + } return talsecBuilder.build() } From de2409d4f1a62adc5f35ec9324a140cddff8124d Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Thu, 7 May 2026 15:34:05 +0200 Subject: [PATCH 04/20] chore: update changelog for 8.4.0 --- CHANGELOG.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 86900ac..6e50d8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,50 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [8.4.0] - 2026-05-07 + +- Android SDK version: 18.3.0 +- iOS SDK version: 6.14.4 + +### Breaking + +- `SuspiciousAppInfo.reason` (String) renamed to `reasons` (string[]) +- Value `"blacklist"` in `reasons` renamed to `"blocklist"` + +### Cordova + +#### Deprecated + +- `blacklistedPackageNames`, `blacklistedHashes`, `suspiciousPermissions`, `whitelistedInstallationSources` are deprecated but remain functional — use `SuspiciousAppDetectionConfig` instead + +### Android + +#### Added + +- Added a new sub-check for `HMA` detection to the root detector +- Added a new sub-check for `KernelSU` detection to the root detector +- Added a new sub-check for `Frida Server` detection to the hook detector +- Added Huawei App Market provider to HMA detection queries +- New API class `SuspiciousAppDetectionConfig` that can be used to configure malware detection +- New API for malware detection configuration in `TalsecConfig`, see `TalsecConfig.Builder#suspiciousAppDetection` + +#### Fixed + +- Fixed `VerifyError` caused by `JaCoCo` bytecode instrumentation +- Fixed a potential cause of crash in the multi-instance detector +- Fixed crash caused by unhandled `SecurityException` thrown by `UsageStatsManager` in root detection +- Fixed manifest merge conflicts in HMA detection providers +- Fixed Java interoperability of `ScreenProtector` methods +- Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0) + +#### Changed + +- Fine-tuned `KernelSU` detection +- Fine-tuned hook detection +- Fine-tuned location spoofing detection +- Modified malware incident log structure for better aggregation +- Old malware configuration API methods in `TalsecConfig.Builder` tagged as deprecated (but remain functional): `blacklistedPackageNames`, `blacklistedHashes`, `suspiciousPermissions`, `whitelistedInstallationSources` + ## [8.3.1] - 2026-03-24 - Android SDK version: 18.0.4 From abc985469ed19b30ffdddf5528cfecafafb9fa40 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Mon, 11 May 2026 15:15:25 +0200 Subject: [PATCH 05/20] fix: update malware parser and dist to use renamed reasons field --- www/dist/talsec.js | 2 +- www/dist/types/types/types.d.ts | 21 ++++++++++++++++++++- www/src/utils/malware.ts | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/www/dist/talsec.js b/www/dist/talsec.js index cc98824..bd8a260 100644 --- a/www/dist/talsec.js +++ b/www/dist/talsec.js @@ -247,7 +247,7 @@ var toSuspiciousAppInfo = (base64Value) => { const packageInfo = data.packageInfo; return { packageInfo, - reason: data.reason, + reasons: data.reasons, permissions: data.permissions }; }; diff --git a/www/dist/types/types/types.d.ts b/www/dist/types/types/types.d.ts index bb54bd2..53f2303 100644 --- a/www/dist/types/types/types.d.ts +++ b/www/dist/types/types/types.d.ts @@ -10,20 +10,39 @@ export type TalsecAndroidConfig = { certificateHashes: string[]; supportedAlternativeStores?: string[]; malwareConfig?: TalsecMalwareConfig; + suspiciousAppDetectionConfig?: SuspiciousAppDetectionConfig; +}; +export type ScopeType = 'SIDELOADED_ONLY' | 'SIDELOADED_AND_SYSTEM_EXCLUDE_OEM' | 'SIDELOADED_AND_OEM' | 'SIDELOADED_AND_SYSTEM_AND_OEM' | 'ALL'; +export type ReasonMode = 'ALL' | 'HIGHEST_CONFIDENCE'; +export type MalwareScanScope = { + scanScope: ScopeType; + trustedInstallSources?: string[]; +}; +export type SuspiciousAppDetectionConfig = { + packageNames?: string[]; + hashes?: string[]; + requestedPermissions?: string[][]; + grantedPermissions?: string[][]; + malwareScanScope?: MalwareScanScope; + reasonMode?: ReasonMode; }; export type TalsecIosConfig = { appBundleIds: string; appTeamId: string; }; export type TalsecMalwareConfig = { + /** @deprecated Use SuspiciousAppDetectionConfig instead */ blacklistedHashes?: string[]; + /** @deprecated Use SuspiciousAppDetectionConfig instead */ blacklistedPackageNames?: string[]; + /** @deprecated Use SuspiciousAppDetectionConfig instead */ suspiciousPermissions?: string[][]; + /** @deprecated Use SuspiciousAppDetectionConfig instead */ whitelistedInstallationSources?: string[]; }; export type SuspiciousAppInfo = { packageInfo: PackageInfo; - reason: string; + reasons: string[]; permissions?: string[]; }; export type PackageInfo = { diff --git a/www/src/utils/malware.ts b/www/src/utils/malware.ts index 841b611..6a62ab1 100644 --- a/www/src/utils/malware.ts +++ b/www/src/utils/malware.ts @@ -18,7 +18,7 @@ const toSuspiciousAppInfo = (base64Value: string): SuspiciousAppInfo => { const packageInfo = data.packageInfo as PackageInfo; return { packageInfo, - reason: data.reason, + reasons: data.reasons, permissions: data.permissions, } as SuspiciousAppInfo; }; From 21232b47640f772f2d5b89277571cf403fce59b3 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Tue, 12 May 2026 15:27:18 +0200 Subject: [PATCH 06/20] fix: simplify enum parsing and fix MalwareScanScope types in Extensions.kt --- src/android/utils/Extensions.kt | 34 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/android/utils/Extensions.kt b/src/android/utils/Extensions.kt index 774dfeb..8f28e76 100644 --- a/src/android/utils/Extensions.kt +++ b/src/android/utils/Extensions.kt @@ -91,14 +91,14 @@ internal fun PackageInfo.toCordovaPackageInfo(context: Context): CordovaPackageI ) } +private inline fun > String?.toEnumOrDefault(default: T): T = + if (this == null) default + else try { enumValueOf(this) } catch (_: IllegalArgumentException) { default } + internal fun JSONObject.toMalwareScanScope(): MalwareScanScope { - val scopeStr = this.getStringSafe("scanScope") ?: "" - val scanScope = ScopeType.entries.firstOrNull { it.name == scopeStr } ?: ScopeType.SIDELOADED_ONLY - val trustedInstallSources = this.getArraySafe("trustedInstallSources").toSet() - return MalwareScanScope( - scanScope = scanScope, - trustedInstallSources = trustedInstallSources.ifEmpty { null } - ) + val scanScope = optString("scanScope").toEnumOrDefault(ScopeType.SIDELOADED_ONLY) + val trustedInstallSources = this.getArraySafe("trustedInstallSources").toList() + return MalwareScanScope(scanScope, trustedInstallSources.ifEmpty { null }) } internal fun JSONObject.toSuspiciousAppDetectionConfig(): SuspiciousAppDetectionConfig { @@ -108,18 +108,16 @@ internal fun JSONObject.toSuspiciousAppDetectionConfig(): SuspiciousAppDetection .map { it.toSet() }.toSet().ifEmpty { null } val grantedPermissions = this.getNestedArraySafe("grantedPermissions") .map { it.toSet() }.toSet().ifEmpty { null } - val malwareScanScope = if (this.has("malwareScanScope")) - this.getJSONObject("malwareScanScope").toMalwareScanScope() else null - val reasonModeStr = this.getStringSafe("reasonMode") ?: "" - val reasonMode = ReasonMode.entries.firstOrNull { it.name == reasonModeStr } - ?: ReasonMode.HIGHEST_CONFIDENCE + val malwareScanScope = optJSONObject("malwareScanScope")?.toMalwareScanScope() + ?: MalwareScanScope(ScopeType.SIDELOADED_ONLY, emptyList()) + val reasonMode = optString("reasonMode").toEnumOrDefault(ReasonMode.HIGHEST_CONFIDENCE) return SuspiciousAppDetectionConfig( - packageNames = packageNames, - hashes = hashes, - requestedPermissions = requestedPermissions, - grantedPermissions = grantedPermissions, - malwareScanScope = malwareScanScope, - reasonMode = reasonMode + packageNames, + hashes, + requestedPermissions, + grantedPermissions, + malwareScanScope, + reasonMode ) } From 74789baa17c3ac65804fd544382dbb84ca4d4f86 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Tue, 12 May 2026 15:31:29 +0200 Subject: [PATCH 07/20] fix: add TalsecConfig type annotation to config in example app --- example/src/app/app.component.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/example/src/app/app.component.ts b/example/src/app/app.component.ts index 2ae6d91..40e5804 100644 --- a/example/src/app/app.component.ts +++ b/example/src/app/app.component.ts @@ -1,7 +1,11 @@ import { Component, OnInit, NgZone } from '@angular/core'; import { commonChecks, iosChecks, androidChecks } from './utils/checks'; import { SuspiciousAppsService } from './services/suspicious-apps.service'; -import { SuspiciousAppInfo, Talsec } from 'cordova-talsec-plugin-freerasp'; +import { + SuspiciousAppInfo, + Talsec, + TalsecConfig, +} from 'cordova-talsec-plugin-freerasp'; declare var cordova: any; declare var talsec: Talsec; @@ -25,7 +29,7 @@ export class AppComponent implements OnInit { toastColor: 'success' | 'warning' = 'success'; checksFinished = false; - config = { + config: TalsecConfig = { androidConfig: { packageName: 'io.ionic.starter', certificateHashes: ['AKoRuyLMM91E7lX/Zqp3u4jMmd0A7hH/Iqozu0TMVd0='], From 28cc3182700b1e57b6704270d82ebf132315f5d6 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Wed, 13 May 2026 14:50:02 +0200 Subject: [PATCH 08/20] fix: update example app for SDK 18.3.0 compatibility --- example/package-lock.json | 2 +- example/package.json | 2 +- example/src/app/app.component.ts | 6 ++++-- .../app/components/malware-item/malware-item.component.ts | 5 ++++- package-lock.json | 4 ++-- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/example/package-lock.json b/example/package-lock.json index 5479cb1..138d084 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -62,7 +62,7 @@ }, "..": { "name": "cordova-talsec-plugin-freerasp", - "version": "8.3.0", + "version": "8.4.0", "dev": true, "license": "MIT", "devDependencies": { diff --git a/example/package.json b/example/package.json index 529144b..554b1c8 100644 --- a/example/package.json +++ b/example/package.json @@ -76,4 +76,4 @@ "ios" ] } -} \ No newline at end of file +} diff --git a/example/src/app/app.component.ts b/example/src/app/app.component.ts index 40e5804..9ae17e3 100644 --- a/example/src/app/app.component.ts +++ b/example/src/app/app.component.ts @@ -5,6 +5,8 @@ import { SuspiciousAppInfo, Talsec, TalsecConfig, + ScopeType, + ReasonMode, } from 'cordova-talsec-plugin-freerasp'; declare var cordova: any; @@ -45,10 +47,10 @@ export class AppComponent implements OnInit { ['android.permission.BATTERY_STATS'], ], malwareScanScope: { - scanScope: 'SIDELOADED_ONLY', + scanScope: 'SIDELOADED_ONLY' as ScopeType, trustedInstallSources: ['com.apkpure.aegon'], }, - reasonMode: 'HIGHEST_CONFIDENCE', + reasonMode: 'HIGHEST_CONFIDENCE' as ReasonMode, }, }, iosConfig: { diff --git a/example/src/app/components/malware-item/malware-item.component.ts b/example/src/app/components/malware-item/malware-item.component.ts index 9e3e6e8..1adf632 100644 --- a/example/src/app/components/malware-item/malware-item.component.ts +++ b/example/src/app/components/malware-item/malware-item.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core'; import { SuspiciousAppInfo, Talsec } from 'cordova-talsec-plugin-freerasp'; declare var talsec: Talsec; @@ -11,6 +11,8 @@ export class MalwareItemComponent implements OnInit { @Input() susApp!: SuspiciousAppInfo; expanded = false; + constructor(private cdr: ChangeDetectorRef) {} + ngOnInit(): void { this.loadAppIcon(); } @@ -19,6 +21,7 @@ export class MalwareItemComponent implements OnInit { this.susApp.packageInfo.appIcon = await talsec.getAppIcon( this.susApp.packageInfo.packageName, ); + this.cdr.detectChanges(); } toggleExpanded() { diff --git a/package-lock.json b/package-lock.json index 771af8e..e47306b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cordova-talsec-plugin-freerasp", - "version": "8.3.0", + "version": "8.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cordova-talsec-plugin-freerasp", - "version": "8.3.0", + "version": "8.4.0", "license": "MIT", "devDependencies": { "@cordova/eslint-config": "^5.0.0", From 8ad55a856d280bdddf0294fabdf084131edd2ca3 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Fri, 15 May 2026 14:16:42 +0200 Subject: [PATCH 09/20] refactor: tighten SuspiciousAppDetectionConfig parsing --- src/android/utils/Extensions.kt | 16 ++++------- www/dist/talsec.js | 29 ++++++++++++++++++- www/dist/types/api/methods/native.d.ts | 2 ++ www/dist/types/types/types.d.ts | 4 +-- www/src/api/methods/cordova.ts | 4 +-- www/src/api/methods/native.ts | 40 ++++++++++++++++++++++++++ www/src/types/types.ts | 4 +-- 7 files changed, 82 insertions(+), 17 deletions(-) diff --git a/src/android/utils/Extensions.kt b/src/android/utils/Extensions.kt index 8f28e76..006ee40 100644 --- a/src/android/utils/Extensions.kt +++ b/src/android/utils/Extensions.kt @@ -91,14 +91,11 @@ internal fun PackageInfo.toCordovaPackageInfo(context: Context): CordovaPackageI ) } -private inline fun > String?.toEnumOrDefault(default: T): T = - if (this == null) default - else try { enumValueOf(this) } catch (_: IllegalArgumentException) { default } - internal fun JSONObject.toMalwareScanScope(): MalwareScanScope { - val scanScope = optString("scanScope").toEnumOrDefault(ScopeType.SIDELOADED_ONLY) - val trustedInstallSources = this.getArraySafe("trustedInstallSources").toList() - return MalwareScanScope(scanScope, trustedInstallSources.ifEmpty { null }) + val scanScope = ScopeType.valueOf(getString("scanScope")) + val trustedInstallSources = optJSONArray("trustedInstallSources") + ?.toPrimitiveArray()?.toList() + return MalwareScanScope(scanScope, trustedInstallSources) } internal fun JSONObject.toSuspiciousAppDetectionConfig(): SuspiciousAppDetectionConfig { @@ -108,9 +105,8 @@ internal fun JSONObject.toSuspiciousAppDetectionConfig(): SuspiciousAppDetection .map { it.toSet() }.toSet().ifEmpty { null } val grantedPermissions = this.getNestedArraySafe("grantedPermissions") .map { it.toSet() }.toSet().ifEmpty { null } - val malwareScanScope = optJSONObject("malwareScanScope")?.toMalwareScanScope() - ?: MalwareScanScope(ScopeType.SIDELOADED_ONLY, emptyList()) - val reasonMode = optString("reasonMode").toEnumOrDefault(ReasonMode.HIGHEST_CONFIDENCE) + val malwareScanScope = getJSONObject("malwareScanScope").toMalwareScanScope() + val reasonMode = ReasonMode.valueOf(getString("reasonMode")) return SuspiciousAppDetectionConfig( packageNames, hashes, diff --git a/www/dist/talsec.js b/www/dist/talsec.js index bd8a260..5732ac3 100644 --- a/www/dist/talsec.js +++ b/www/dist/talsec.js @@ -24,6 +24,7 @@ __export(talsec_exports, { blockScreenCapture: () => blockScreenCapture, getAppIcon: () => getAppIcon, isScreenCaptureBlocked: () => isScreenCaptureBlocked, + normalizeConfig: () => normalizeConfig, onInvalidCallback: () => onInvalidCallback, removeExternalId: () => removeExternalId, start: () => start, @@ -38,6 +39,31 @@ var ScreenCaptureStatus = { }; // www/src/api/methods/native.ts +var DEFAULT_MALWARE_SCAN_SCOPE = { + scanScope: "SIDELOADED_ONLY" +}; +var DEFAULT_REASON_MODE = "HIGHEST_CONFIDENCE"; +var withSuspiciousAppDetectionDefaults = (config) => ({ + ...config, + malwareScanScope: config.malwareScanScope ?? DEFAULT_MALWARE_SCAN_SCOPE, + reasonMode: config.reasonMode ?? DEFAULT_REASON_MODE +}); +var normalizeAndroidConfig = (androidConfig) => { + if (!androidConfig.suspiciousAppDetectionConfig) return androidConfig; + return { + ...androidConfig, + suspiciousAppDetectionConfig: withSuspiciousAppDetectionDefaults( + androidConfig.suspiciousAppDetectionConfig + ) + }; +}; +var normalizeConfig = (config) => { + if (!config.androidConfig) return config; + return { + ...config, + androidConfig: normalizeAndroidConfig(config.androidConfig) + }; +}; var storeExternalId = (externalId) => { return new Promise((resolve, reject) => { cordova.exec( @@ -426,7 +452,7 @@ var start = async (config, eventListenerConfig, raspExecutionStateActions) => { }, "TalsecPlugin", "start", - [config] + [normalizeConfig(config)] ); }); }; @@ -436,6 +462,7 @@ var start = async (config, eventListenerConfig, raspExecutionStateActions) => { blockScreenCapture, getAppIcon, isScreenCaptureBlocked, + normalizeConfig, onInvalidCallback, removeExternalId, start, diff --git a/www/dist/types/api/methods/native.d.ts b/www/dist/types/api/methods/native.d.ts index 9714cb5..e313d38 100644 --- a/www/dist/types/api/methods/native.d.ts +++ b/www/dist/types/api/methods/native.d.ts @@ -1,3 +1,5 @@ +import { TalsecConfig } from '../../types/types'; +export declare const normalizeConfig: (config: TalsecConfig) => TalsecConfig; export declare const storeExternalId: (externalId: string) => Promise; export declare const removeExternalId: () => Promise; export declare const addToWhitelist: (packageName: string) => Promise; diff --git a/www/dist/types/types/types.d.ts b/www/dist/types/types/types.d.ts index 53f2303..821a56f 100644 --- a/www/dist/types/types/types.d.ts +++ b/www/dist/types/types/types.d.ts @@ -23,8 +23,8 @@ export type SuspiciousAppDetectionConfig = { hashes?: string[]; requestedPermissions?: string[][]; grantedPermissions?: string[][]; - malwareScanScope?: MalwareScanScope; - reasonMode?: ReasonMode; + malwareScanScope: MalwareScanScope; + reasonMode: ReasonMode; }; export type TalsecIosConfig = { appBundleIds: string; diff --git a/www/src/api/methods/cordova.ts b/www/src/api/methods/cordova.ts index 869c115..324c921 100644 --- a/www/src/api/methods/cordova.ts +++ b/www/src/api/methods/cordova.ts @@ -5,7 +5,7 @@ import { } from '../../types/types'; import { registerThreatListener } from '../listeners/threat'; import { registerRaspExecutionStateListener } from '../listeners/raspExecutionState'; -import { onInvalidCallback } from './native'; +import { normalizeConfig, onInvalidCallback } from './native'; export const start = async ( config: TalsecConfig, @@ -32,7 +32,7 @@ export const start = async ( }, 'TalsecPlugin', 'start', - [config], + [normalizeConfig(config)], ); }); }; diff --git a/www/src/api/methods/native.ts b/www/src/api/methods/native.ts index 2ef4ede..7846340 100644 --- a/www/src/api/methods/native.ts +++ b/www/src/api/methods/native.ts @@ -1,4 +1,44 @@ import { ScreenCaptureStatus } from '../../models/screenCaptureStatus'; +import { + MalwareScanScope, + ReasonMode, + SuspiciousAppDetectionConfig, + TalsecAndroidConfig, + TalsecConfig, +} from '../../types/types'; + +const DEFAULT_MALWARE_SCAN_SCOPE: MalwareScanScope = { + scanScope: 'SIDELOADED_ONLY', +}; +const DEFAULT_REASON_MODE: ReasonMode = 'HIGHEST_CONFIDENCE'; + +const withSuspiciousAppDetectionDefaults = ( + config: SuspiciousAppDetectionConfig, +): SuspiciousAppDetectionConfig => ({ + ...config, + malwareScanScope: config.malwareScanScope ?? DEFAULT_MALWARE_SCAN_SCOPE, + reasonMode: config.reasonMode ?? DEFAULT_REASON_MODE, +}); + +const normalizeAndroidConfig = ( + androidConfig: TalsecAndroidConfig, +): TalsecAndroidConfig => { + if (!androidConfig.suspiciousAppDetectionConfig) return androidConfig; + return { + ...androidConfig, + suspiciousAppDetectionConfig: withSuspiciousAppDetectionDefaults( + androidConfig.suspiciousAppDetectionConfig, + ), + }; +}; + +export const normalizeConfig = (config: TalsecConfig): TalsecConfig => { + if (!config.androidConfig) return config; + return { + ...config, + androidConfig: normalizeAndroidConfig(config.androidConfig), + }; +}; export const storeExternalId = (externalId: string): Promise => { return new Promise((resolve, reject) => { diff --git a/www/src/types/types.ts b/www/src/types/types.ts index 2b9ae78..7d96db9 100644 --- a/www/src/types/types.ts +++ b/www/src/types/types.ts @@ -33,8 +33,8 @@ export type SuspiciousAppDetectionConfig = { hashes?: string[]; requestedPermissions?: string[][]; grantedPermissions?: string[][]; - malwareScanScope?: MalwareScanScope; - reasonMode?: ReasonMode; + malwareScanScope: MalwareScanScope; + reasonMode: ReasonMode; }; export type TalsecIosConfig = { From 8b93617a3ad6d396c569227a3eae0807a3ebef61 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Fri, 15 May 2026 14:19:29 +0200 Subject: [PATCH 10/20] feat!: remove deprecated MalwareConfig API --- src/android/TalsecPlugin.kt | 8 -------- www/dist/types/types/types.d.ts | 11 ----------- www/src/types/types.ts | 12 ------------ 3 files changed, 31 deletions(-) diff --git a/src/android/TalsecPlugin.kt b/src/android/TalsecPlugin.kt index 0652c28..bb7ec8b 100644 --- a/src/android/TalsecPlugin.kt +++ b/src/android/TalsecPlugin.kt @@ -18,7 +18,6 @@ import com.aheaditec.talsec.cordova.utils.ScreenCaptureStatus import com.aheaditec.talsec.cordova.utils.toEncodedJsonArray import com.aheaditec.talsec.cordova.utils.getArraySafe import com.aheaditec.talsec.cordova.utils.getBooleanSafe -import com.aheaditec.talsec.cordova.utils.getNestedArraySafe import com.aheaditec.talsec.cordova.utils.getStringSafe import com.aheaditec.talsec.cordova.utils.toSuspiciousAppDetectionConfig import com.aheaditec.talsec_security.security.api.SuspiciousAppInfo @@ -297,13 +296,6 @@ class TalsecPlugin : CordovaPlugin() { .prod(json.getBooleanSafe("isProd")) .killOnBypass(json.getBooleanSafe("killOnBypass", false)) - if (androidConfig.has("malwareConfig")) { - val malwareConfig = androidConfig.getJSONObject("malwareConfig") - talsecBuilder.whitelistedInstallationSources(malwareConfig.getArraySafe("whitelistedInstallationSources")) - talsecBuilder.blacklistedHashes(malwareConfig.getArraySafe("blacklistedHashes")) - talsecBuilder.blacklistedPackageNames(malwareConfig.getArraySafe("blacklistedPackageNames")) - talsecBuilder.suspiciousPermissions(malwareConfig.getNestedArraySafe("suspiciousPermissions")) - } if (androidConfig.has("suspiciousAppDetectionConfig")) { val suspiciousAppDetectionConfig = androidConfig.getJSONObject("suspiciousAppDetectionConfig") .toSuspiciousAppDetectionConfig() diff --git a/www/dist/types/types/types.d.ts b/www/dist/types/types/types.d.ts index 821a56f..4c6c24b 100644 --- a/www/dist/types/types/types.d.ts +++ b/www/dist/types/types/types.d.ts @@ -9,7 +9,6 @@ export type TalsecAndroidConfig = { packageName: string; certificateHashes: string[]; supportedAlternativeStores?: string[]; - malwareConfig?: TalsecMalwareConfig; suspiciousAppDetectionConfig?: SuspiciousAppDetectionConfig; }; export type ScopeType = 'SIDELOADED_ONLY' | 'SIDELOADED_AND_SYSTEM_EXCLUDE_OEM' | 'SIDELOADED_AND_OEM' | 'SIDELOADED_AND_SYSTEM_AND_OEM' | 'ALL'; @@ -30,16 +29,6 @@ export type TalsecIosConfig = { appBundleIds: string; appTeamId: string; }; -export type TalsecMalwareConfig = { - /** @deprecated Use SuspiciousAppDetectionConfig instead */ - blacklistedHashes?: string[]; - /** @deprecated Use SuspiciousAppDetectionConfig instead */ - blacklistedPackageNames?: string[]; - /** @deprecated Use SuspiciousAppDetectionConfig instead */ - suspiciousPermissions?: string[][]; - /** @deprecated Use SuspiciousAppDetectionConfig instead */ - whitelistedInstallationSources?: string[]; -}; export type SuspiciousAppInfo = { packageInfo: PackageInfo; reasons: string[]; diff --git a/www/src/types/types.ts b/www/src/types/types.ts index 7d96db9..5d7953a 100644 --- a/www/src/types/types.ts +++ b/www/src/types/types.ts @@ -10,7 +10,6 @@ export type TalsecAndroidConfig = { packageName: string; certificateHashes: string[]; supportedAlternativeStores?: string[]; - malwareConfig?: TalsecMalwareConfig; suspiciousAppDetectionConfig?: SuspiciousAppDetectionConfig; }; @@ -42,17 +41,6 @@ export type TalsecIosConfig = { appTeamId: string; }; -export type TalsecMalwareConfig = { - /** @deprecated Use SuspiciousAppDetectionConfig instead */ - blacklistedHashes?: string[]; - /** @deprecated Use SuspiciousAppDetectionConfig instead */ - blacklistedPackageNames?: string[]; - /** @deprecated Use SuspiciousAppDetectionConfig instead */ - suspiciousPermissions?: string[][]; - /** @deprecated Use SuspiciousAppDetectionConfig instead */ - whitelistedInstallationSources?: string[]; -}; - export type SuspiciousAppInfo = { packageInfo: PackageInfo; reasons: string[]; From 0921c8e22f784a289017090a529d949cf30ba296 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Fri, 15 May 2026 14:25:35 +0200 Subject: [PATCH 11/20] chore: bump to 9.0.0 --- CHANGELOG.md | 9 +++++---- package-lock.json | 4 ++-- package.json | 2 +- plugin.xml | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e50d8e..5464bb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [8.4.0] - 2026-05-07 +## [9.0.0] - 2026-05-15 - Android SDK version: 18.3.0 - iOS SDK version: 6.14.4 @@ -14,12 +14,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `SuspiciousAppInfo.reason` (String) renamed to `reasons` (string[]) - Value `"blacklist"` in `reasons` renamed to `"blocklist"` +- Removed `TalsecMalwareConfig` type and `TalsecAndroidConfig.malwareConfig` field +- `SuspiciousAppDetectionConfig.malwareScanScope` and `reasonMode` are now required ### Cordova -#### Deprecated +#### Removed -- `blacklistedPackageNames`, `blacklistedHashes`, `suspiciousPermissions`, `whitelistedInstallationSources` are deprecated but remain functional — use `SuspiciousAppDetectionConfig` instead +- `TalsecMalwareConfig` type and `TalsecAndroidConfig.malwareConfig` field ### Android @@ -47,7 +49,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fine-tuned hook detection - Fine-tuned location spoofing detection - Modified malware incident log structure for better aggregation -- Old malware configuration API methods in `TalsecConfig.Builder` tagged as deprecated (but remain functional): `blacklistedPackageNames`, `blacklistedHashes`, `suspiciousPermissions`, `whitelistedInstallationSources` ## [8.3.1] - 2026-03-24 diff --git a/package-lock.json b/package-lock.json index e47306b..5f0aca4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cordova-talsec-plugin-freerasp", - "version": "8.4.0", + "version": "9.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cordova-talsec-plugin-freerasp", - "version": "8.4.0", + "version": "9.0.0", "license": "MIT", "devDependencies": { "@cordova/eslint-config": "^5.0.0", diff --git a/package.json b/package.json index 5fec4b8..97e4595 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cordova-talsec-plugin-freerasp", - "version": "8.4.0", + "version": "9.0.0", "description": "Cordova plugin for improving app security and threat monitoring on Android and iOS mobile devices.", "cordova": { "id": "cordova-talsec-plugin-freerasp", diff --git a/plugin.xml b/plugin.xml index 4635fda..a01ab2b 100644 --- a/plugin.xml +++ b/plugin.xml @@ -2,7 +2,7 @@ + version="9.0.0"> freerasp Talsec (info@talsec.app) From 558998b5c10e675ec1f299f05011ba6adad09b23 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Fri, 15 May 2026 15:02:00 +0200 Subject: [PATCH 12/20] chore: add package and package-lock --- example/package-lock.json | 1343 +++++++++++++++++++++++++++++++------ example/package.json | 6 +- 2 files changed, 1148 insertions(+), 201 deletions(-) diff --git a/example/package-lock.json b/example/package-lock.json index 138d084..a3c27ad 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -39,13 +39,13 @@ "@types/jasmine": "~5.1.0", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", - "cordova-android": "^14.0.1", - "cordova-ios": "^8.0.0", + "cordova-android": "^15.0.0", + "cordova-ios": "^8.0.1", "cordova-plugin-device": "2.0.2", "cordova-plugin-ionic-keyboard": "^2.0.5", "cordova-plugin-splashscreen": "5.0.2", "cordova-plugin-statusbar": "^2.4.2", - "cordova-talsec-plugin-freerasp": "file:..", + "cordova-talsec-plugin-freerasp": "file:temp_plugin/package", "eslint": "^8.57.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^48.2.1", @@ -62,8 +62,8 @@ }, "..": { "name": "cordova-talsec-plugin-freerasp", - "version": "8.4.0", - "dev": true, + "version": "9.0.0", + "extraneous": true, "license": "MIT", "devDependencies": { "@cordova/eslint-config": "^5.0.0", @@ -2450,6 +2450,23 @@ "node": ">=0.1.90" } }, + "node_modules/@cordova/eslint-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@cordova/eslint-config/-/eslint-config-5.1.0.tgz", + "integrity": "sha512-9Da72mSQli08ylGf6jYKWJo67LSu6HWlDPELJsW+bVVos3b0ZMxXsHUCluwrlmZ+sxCFq7VhxAFjK+2/YQFncw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "eslint": "^8.31.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.27.2", + "eslint-plugin-n": "^15.6.1", + "eslint-plugin-promise": "^6.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz", @@ -2727,6 +2744,23 @@ "node": ">=18" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/netbsd-x64": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", @@ -2772,6 +2806,23 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", @@ -3506,6 +3557,19 @@ "node": ">=8" } }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -4414,6 +4478,13 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, "node_modules/@sindresorhus/merge-streams": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", @@ -4520,6 +4591,13 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", "devOptional": true }, + "node_modules/@types/cordova": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-11.0.3.tgz", + "integrity": "sha512-kyuRQ40/NWQVhqGIHq78Ehu2Bf9Mlg0LhmSmis6ZFJK7z933FRfYi8tHe/k/0fB+PGfCf95rJC6TO7dopaFvAg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/cors": { "version": "2.8.17", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", @@ -5177,13 +5255,13 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz", + "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==", "dev": true, "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=14.6" } }, "node_modules/@xtuc/ieee754": { @@ -5943,6 +6021,16 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", @@ -6400,6 +6488,16 @@ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -6623,37 +6721,37 @@ } }, "node_modules/cordova-android": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-14.0.1.tgz", - "integrity": "sha512-HMBMdGu/JlSQtmBuDEpKWf/pE75SpF3FksxZ+mqYuL3qSIN8lN/QsNurwYaPAP7zWXN2DNpvwlpOJItS5VhdLg==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-15.0.0.tgz", + "integrity": "sha512-EpFSKUtBLJ7bTpuVD7NeC6toAooi5PI6VIR2jd8Ut5PJu7HSR5tPRwS87Q1DS03RSyDTlroB64JPUWC0pmAhnw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "android-versions": "^2.1.0", - "cordova-common": "^5.0.1", - "dedent": "^1.5.3", + "android-versions": "^2.1.1", + "cordova-common": "^6.0.0", + "dedent": "^1.7.1", "execa": "^5.1.1", "fast-glob": "^3.3.3", "is-path-inside": "^3.0.3", - "nopt": "^8.1.0", + "nopt": "^9.0.0", "properties-parser": "^0.6.0", - "semver": "^7.7.1", - "string-argv": "^0.3.1", + "semver": "^7.7.4", + "string-argv": "^0.3.2", "untildify": "^4.0.0", - "which": "^5.0.0" + "which": "^6.0.1" }, "engines": { - "node": ">=20.5.0" + "node": ">=20.17.0 || >=22.9.0" } }, "node_modules/cordova-android/node_modules/abbrev": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", - "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", + "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", "dev": true, "license": "ISC", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/cordova-android/node_modules/fast-glob": { @@ -6674,35 +6772,35 @@ } }, "node_modules/cordova-android/node_modules/isexe": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", - "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/cordova-android/node_modules/nopt": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", - "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", + "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", "dev": true, "license": "ISC", "dependencies": { - "abbrev": "^3.0.0" + "abbrev": "^4.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/cordova-android/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "dev": true, "license": "ISC", "bin": { @@ -6713,43 +6811,38 @@ } }, "node_modules/cordova-android/node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/cordova-common": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-5.0.1.tgz", - "integrity": "sha512-OA2NQ6wvhNz4GytPYwTdlA9xfG7Yf7ufkj4u97m3rUfoL/AECwwj0GVT2CYpk/0Fk6HyuHA3QYCxfDPYsKzI1A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-6.0.0.tgz", + "integrity": "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@netflix/nerror": "^1.1.3", "ansi": "^0.3.1", "bplist-parser": "^0.3.2", - "cross-spawn": "^7.0.6", "elementtree": "^0.1.7", "endent": "^2.1.0", "fast-glob": "^3.3.3", - "lodash.zip": "^4.2.0", - "plist": "^3.1.0", - "q": "^1.5.1", - "read-chunk": "^3.2.0", - "strip-bom": "^4.0.0" + "plist": "^3.1.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=20.9.0" } }, "node_modules/cordova-common/node_modules/fast-glob": { @@ -6769,20 +6862,10 @@ "node": ">=8.6.0" } }, - "node_modules/cordova-common/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/cordova-ios": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-8.0.0.tgz", - "integrity": "sha512-QsynOV8rnRIhDC3qwM1KdRr1gy5RaqzVCzdOaB+DSBPeR5wVEUGpyyJO0FzlCACzY5X25iDc5O3kbn/F06dJ5Q==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-8.0.1.tgz", + "integrity": "sha512-jktJmh0XMHdkKZuQXgh1Dv6WtfB3BXBH27U2LX0+cvcELgymIy59eJ5ckPuqu/kNAroUqRc9Tf+zUqG3HGvcmQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6811,42 +6894,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/cordova-ios/node_modules/cordova-common": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-6.0.0.tgz", - "integrity": "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@netflix/nerror": "^1.1.3", - "ansi": "^0.3.1", - "bplist-parser": "^0.3.2", - "elementtree": "^0.1.7", - "endent": "^2.1.0", - "fast-glob": "^3.3.3", - "plist": "^3.1.0" - }, - "engines": { - "node": ">=20.9.0" - } - }, - "node_modules/cordova-ios/node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/cordova-ios/node_modules/isexe": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", @@ -6874,9 +6921,9 @@ } }, "node_modules/cordova-ios/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "dev": true, "license": "ISC", "bin": { @@ -6970,7 +7017,7 @@ } }, "node_modules/cordova-talsec-plugin-freerasp": { - "resolved": "..", + "resolved": "temp_plugin/package", "link": true }, "node_modules/core-js-compat": { @@ -7274,9 +7321,9 @@ } }, "node_modules/dedent": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", - "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -7443,6 +7490,13 @@ "node": ">=8" } }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -8022,6 +8076,49 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-prettier": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -8068,6 +8165,52 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, "node_modules/eslint-plugin-import": { "version": "2.31.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", @@ -8219,6 +8362,56 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-prefer-arrow": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.2.tgz", @@ -8228,33 +8421,100 @@ "eslint": ">=2.0.0" } }, - "node_modules/eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "node_modules/eslint-plugin-prettier": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", + "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "prettier-linter-helpers": "^1.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/eslint-plugin-promise": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", + "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", "dev": true, + "license": "ISC", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" - } + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", @@ -8691,6 +8951,13 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -9229,6 +9496,29 @@ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -11007,13 +11297,6 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", - "dev": true, - "license": "MIT" - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -11222,6 +11505,91 @@ "node": ">=8.0" } }, + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-colored-level-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", + "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "loglevel": "^1.4.1" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -12380,16 +12748,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -12459,16 +12817,6 @@ "node": ">= 4" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "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", @@ -12710,7 +13058,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "devOptional": true, + "optional": true, "engines": { "node": ">=6" } @@ -12814,13 +13162,13 @@ } }, "node_modules/plist": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", - "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.1.tgz", + "integrity": "sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==", "dev": true, "license": "MIT", "dependencies": { - "@xmldom/xmldom": "^0.8.8", + "@xmldom/xmldom": "^0.9.10", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" }, @@ -12981,9 +13329,10 @@ } }, "node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -12994,6 +13343,86 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prettier-eslint": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.4.2.tgz", + "integrity": "sha512-vtJAQEkaN8fW5QKl08t7A5KCjlZuDUNeIlr9hgolMS5s3+uzbfRHDwaRnzrdqnY2YpHDmeDS/8zY0MKQHXJtaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/parser": "^6.21.0", + "common-tags": "^1.8.2", + "dlv": "^1.1.3", + "eslint": "^8.57.1", + "indent-string": "^4.0.0", + "lodash.merge": "^4.6.2", + "loglevel-colored-level-prefix": "^1.0.0", + "prettier": "^3.5.3", + "pretty-format": "^29.7.0", + "require-relative": "^0.8.7", + "tslib": "^2.8.1", + "vue-eslint-parser": "^9.4.3" + }, + "engines": { + "node": ">=16.10.0" + }, + "funding": { + "url": "https://opencollective.com/prettier-eslint" + }, + "peerDependencies": { + "prettier-plugin-svelte": "^3.0.0", + "svelte-eslint-parser": "*" + }, + "peerDependenciesMeta": { + "prettier-plugin-svelte": { + "optional": true + }, + "svelte-eslint-parser": { + "optional": true + } + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/proc-log": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", @@ -13069,18 +13498,6 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "devOptional": true }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", @@ -13153,19 +13570,12 @@ "node": ">= 0.8" } }, - "node_modules/read-chunk": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", - "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "with-open-file": "^0.1.6" - }, - "engines": { - "node": ">=6" - } + "license": "MIT" }, "node_modules/readable-stream": { "version": "3.6.2", @@ -13259,6 +13669,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, "node_modules/regexpu-core": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", @@ -13318,6 +13741,13 @@ "node": ">=0.10.0" } }, + "node_modules/require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", + "dev": true, + "license": "MIT" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -14834,9 +15264,10 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tuf-js": { "version": "2.2.1", @@ -15708,6 +16139,48 @@ "node": ">=0.10.0" } }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/watchpack": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", @@ -16158,21 +16631,6 @@ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" }, - "node_modules/with-open-file": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", - "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0", - "p-try": "^2.1.0", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -16368,6 +16826,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", "dev": true, "license": "MIT", "bin": { @@ -16475,6 +16934,494 @@ "version": "0.14.10", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==" + }, + "temp_plugin/package": { + "name": "cordova-talsec-plugin-freerasp", + "version": "9.0.0", + "dev": true, + "license": "MIT", + "devDependencies": { + "@cordova/eslint-config": "^5.0.0", + "@types/cordova": "^11.0.2", + "@types/node": "^20.8.10", + "@typescript-eslint/eslint-plugin": "^6.9.1", + "@typescript-eslint/parser": "^6.9.1", + "esbuild": "^0.27.2", + "eslint": "^8.40.0", + "eslint-config-prettier": "^8.10.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-prettier": "^4.2.1", + "prettier": "^3.0.3", + "prettier-eslint": "^16.1.2", + "typescript": "^5.2.2" + } + }, + "temp_plugin/package/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "temp_plugin/package/node_modules/@types/node": { + "version": "20.19.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz", + "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "temp_plugin/package/node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "temp_plugin/package/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" } } } diff --git a/example/package.json b/example/package.json index 554b1c8..4ad1cc7 100644 --- a/example/package.json +++ b/example/package.json @@ -41,13 +41,13 @@ "@types/jasmine": "~5.1.0", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", - "cordova-android": "^14.0.1", - "cordova-ios": "^8.0.0", + "cordova-android": "^15.0.0", + "cordova-ios": "^8.0.1", "cordova-plugin-device": "2.0.2", "cordova-plugin-ionic-keyboard": "^2.0.5", "cordova-plugin-splashscreen": "5.0.2", "cordova-plugin-statusbar": "^2.4.2", - "cordova-talsec-plugin-freerasp": "file:..", + "cordova-talsec-plugin-freerasp": "file:temp_plugin/package", "eslint": "^8.57.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^48.2.1", From 02aac2f4014e561ee79f62d0b223802e6c3d5ad1 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Tue, 19 May 2026 16:35:20 +0200 Subject: [PATCH 13/20] refactor: rename MalwareScanScope to ScanScope and extract config utils --- example/package-lock.json | 1094 +------------------------------ example/package.json | 2 +- src/android/utils/Extensions.kt | 6 +- www/dist/talsec.js | 12 +- www/src/api/methods/cordova.ts | 3 +- www/src/api/methods/native.ts | 41 +- www/src/types/types.ts | 4 +- www/src/utils/config.ts | 40 ++ 8 files changed, 82 insertions(+), 1120 deletions(-) create mode 100644 www/src/utils/config.ts diff --git a/example/package-lock.json b/example/package-lock.json index a3c27ad..ca42868 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -45,7 +45,7 @@ "cordova-plugin-ionic-keyboard": "^2.0.5", "cordova-plugin-splashscreen": "5.0.2", "cordova-plugin-statusbar": "^2.4.2", - "cordova-talsec-plugin-freerasp": "file:temp_plugin/package", + "cordova-talsec-plugin-freerasp": "file:..", "eslint": "^8.57.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^48.2.1", @@ -63,7 +63,7 @@ "..": { "name": "cordova-talsec-plugin-freerasp", "version": "9.0.0", - "extraneous": true, + "dev": true, "license": "MIT", "devDependencies": { "@cordova/eslint-config": "^5.0.0", @@ -2450,23 +2450,6 @@ "node": ">=0.1.90" } }, - "node_modules/@cordova/eslint-config": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@cordova/eslint-config/-/eslint-config-5.1.0.tgz", - "integrity": "sha512-9Da72mSQli08ylGf6jYKWJo67LSu6HWlDPELJsW+bVVos3b0ZMxXsHUCluwrlmZ+sxCFq7VhxAFjK+2/YQFncw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "eslint": "^8.31.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.27.2", - "eslint-plugin-n": "^15.6.1", - "eslint-plugin-promise": "^6.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/@discoveryjs/json-ext": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz", @@ -2744,23 +2727,6 @@ "node": ">=18" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", - "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/netbsd-x64": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", @@ -2806,23 +2772,6 @@ "node": ">=18" } }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", - "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/sunos-x64": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", @@ -3557,19 +3506,6 @@ "node": ">=8" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -4478,13 +4414,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, "node_modules/@sindresorhus/merge-streams": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", @@ -4591,13 +4520,6 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", "devOptional": true }, - "node_modules/@types/cordova": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-11.0.3.tgz", - "integrity": "sha512-kyuRQ40/NWQVhqGIHq78Ehu2Bf9Mlg0LhmSmis6ZFJK7z933FRfYi8tHe/k/0fB+PGfCf95rJC6TO7dopaFvAg==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/cors": { "version": "2.8.17", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", @@ -6021,16 +5943,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", @@ -6488,16 +6400,6 @@ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -7017,7 +6919,7 @@ } }, "node_modules/cordova-talsec-plugin-freerasp": { - "resolved": "temp_plugin/package", + "resolved": "..", "link": true }, "node_modules/core-js-compat": { @@ -7490,13 +7392,6 @@ "node": ">=8" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, - "license": "MIT" - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -8076,49 +7971,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -8165,52 +8017,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-plugin-import": { "version": "2.31.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", @@ -8362,56 +8168,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-n/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint-plugin-prefer-arrow": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.2.tgz", @@ -8421,44 +8177,6 @@ "eslint": ">=2.0.0" } }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", - "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, "node_modules/eslint-scope": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", @@ -8475,35 +8193,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -8951,13 +8640,6 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -9496,29 +9178,6 @@ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -11505,120 +11164,35 @@ "node": ">=8.0" } }, - "node_modules/loglevel": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", - "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/loglevel-colored-level-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", - "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==", - "dev": true, - "license": "MIT", + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dependencies": { - "chalk": "^1.1.3", - "loglevel": "^1.4.1" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, - "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-fetch-happen": { @@ -13343,86 +12917,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/prettier-eslint": { - "version": "16.4.2", - "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.4.2.tgz", - "integrity": "sha512-vtJAQEkaN8fW5QKl08t7A5KCjlZuDUNeIlr9hgolMS5s3+uzbfRHDwaRnzrdqnY2YpHDmeDS/8zY0MKQHXJtaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/parser": "^6.21.0", - "common-tags": "^1.8.2", - "dlv": "^1.1.3", - "eslint": "^8.57.1", - "indent-string": "^4.0.0", - "lodash.merge": "^4.6.2", - "loglevel-colored-level-prefix": "^1.0.0", - "prettier": "^3.5.3", - "pretty-format": "^29.7.0", - "require-relative": "^0.8.7", - "tslib": "^2.8.1", - "vue-eslint-parser": "^9.4.3" - }, - "engines": { - "node": ">=16.10.0" - }, - "funding": { - "url": "https://opencollective.com/prettier-eslint" - }, - "peerDependencies": { - "prettier-plugin-svelte": "^3.0.0", - "svelte-eslint-parser": "*" - }, - "peerDependenciesMeta": { - "prettier-plugin-svelte": { - "optional": true - }, - "svelte-eslint-parser": { - "optional": true - } - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", - "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/proc-log": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", @@ -13570,13 +13064,6 @@ "node": ">= 0.8" } }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -13669,19 +13156,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", @@ -13741,13 +13215,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", - "dev": true, - "license": "MIT" - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -16139,48 +15606,6 @@ "node": ">=0.10.0" } }, - "node_modules/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/watchpack": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", @@ -16938,7 +16363,7 @@ "temp_plugin/package": { "name": "cordova-talsec-plugin-freerasp", "version": "9.0.0", - "dev": true, + "extraneous": true, "license": "MIT", "devDependencies": { "@cordova/eslint-config": "^5.0.0", @@ -16955,473 +16380,6 @@ "prettier-eslint": "^16.1.2", "typescript": "^5.2.2" } - }, - "temp_plugin/package/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", - "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/android-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", - "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/android-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", - "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/android-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", - "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", - "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/darwin-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", - "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", - "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", - "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/linux-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", - "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/linux-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", - "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/linux-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", - "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/linux-loong64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", - "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", - "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", - "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", - "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/linux-s390x": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", - "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/linux-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", - "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", - "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", - "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", - "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/sunos-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", - "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/win32-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", - "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/win32-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", - "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@esbuild/win32-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", - "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "temp_plugin/package/node_modules/@types/node": { - "version": "20.19.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz", - "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "temp_plugin/package/node_modules/esbuild": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", - "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.7", - "@esbuild/android-arm": "0.27.7", - "@esbuild/android-arm64": "0.27.7", - "@esbuild/android-x64": "0.27.7", - "@esbuild/darwin-arm64": "0.27.7", - "@esbuild/darwin-x64": "0.27.7", - "@esbuild/freebsd-arm64": "0.27.7", - "@esbuild/freebsd-x64": "0.27.7", - "@esbuild/linux-arm": "0.27.7", - "@esbuild/linux-arm64": "0.27.7", - "@esbuild/linux-ia32": "0.27.7", - "@esbuild/linux-loong64": "0.27.7", - "@esbuild/linux-mips64el": "0.27.7", - "@esbuild/linux-ppc64": "0.27.7", - "@esbuild/linux-riscv64": "0.27.7", - "@esbuild/linux-s390x": "0.27.7", - "@esbuild/linux-x64": "0.27.7", - "@esbuild/netbsd-arm64": "0.27.7", - "@esbuild/netbsd-x64": "0.27.7", - "@esbuild/openbsd-arm64": "0.27.7", - "@esbuild/openbsd-x64": "0.27.7", - "@esbuild/openharmony-arm64": "0.27.7", - "@esbuild/sunos-x64": "0.27.7", - "@esbuild/win32-arm64": "0.27.7", - "@esbuild/win32-ia32": "0.27.7", - "@esbuild/win32-x64": "0.27.7" - } - }, - "temp_plugin/package/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" } } } diff --git a/example/package.json b/example/package.json index 4ad1cc7..0f7b084 100644 --- a/example/package.json +++ b/example/package.json @@ -47,7 +47,7 @@ "cordova-plugin-ionic-keyboard": "^2.0.5", "cordova-plugin-splashscreen": "5.0.2", "cordova-plugin-statusbar": "^2.4.2", - "cordova-talsec-plugin-freerasp": "file:temp_plugin/package", + "cordova-talsec-plugin-freerasp": "file:..", "eslint": "^8.57.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^48.2.1", diff --git a/src/android/utils/Extensions.kt b/src/android/utils/Extensions.kt index 006ee40..e8b429a 100644 --- a/src/android/utils/Extensions.kt +++ b/src/android/utils/Extensions.kt @@ -91,7 +91,7 @@ internal fun PackageInfo.toCordovaPackageInfo(context: Context): CordovaPackageI ) } -internal fun JSONObject.toMalwareScanScope(): MalwareScanScope { +internal fun JSONObject.toScanScope(): MalwareScanScope { val scanScope = ScopeType.valueOf(getString("scanScope")) val trustedInstallSources = optJSONArray("trustedInstallSources") ?.toPrimitiveArray()?.toList() @@ -105,14 +105,14 @@ internal fun JSONObject.toSuspiciousAppDetectionConfig(): SuspiciousAppDetection .map { it.toSet() }.toSet().ifEmpty { null } val grantedPermissions = this.getNestedArraySafe("grantedPermissions") .map { it.toSet() }.toSet().ifEmpty { null } - val malwareScanScope = getJSONObject("malwareScanScope").toMalwareScanScope() + val scanScope = getJSONObject("scanScope").toScanScope() val reasonMode = ReasonMode.valueOf(getString("reasonMode")) return SuspiciousAppDetectionConfig( packageNames, hashes, requestedPermissions, grantedPermissions, - malwareScanScope, + scanScope, reasonMode ) } diff --git a/www/dist/talsec.js b/www/dist/talsec.js index 5732ac3..a1c8559 100644 --- a/www/dist/talsec.js +++ b/www/dist/talsec.js @@ -38,21 +38,21 @@ var ScreenCaptureStatus = { BLOCKED: 1 }; -// www/src/api/methods/native.ts -var DEFAULT_MALWARE_SCAN_SCOPE = { +// www/src/utils/config.ts +var DEFAULT_SCAN_SCOPE = { scanScope: "SIDELOADED_ONLY" }; var DEFAULT_REASON_MODE = "HIGHEST_CONFIDENCE"; -var withSuspiciousAppDetectionDefaults = (config) => ({ +var withDefaults = (config) => ({ ...config, - malwareScanScope: config.malwareScanScope ?? DEFAULT_MALWARE_SCAN_SCOPE, + scanScope: config.scanScope ?? DEFAULT_SCAN_SCOPE, reasonMode: config.reasonMode ?? DEFAULT_REASON_MODE }); var normalizeAndroidConfig = (androidConfig) => { if (!androidConfig.suspiciousAppDetectionConfig) return androidConfig; return { ...androidConfig, - suspiciousAppDetectionConfig: withSuspiciousAppDetectionDefaults( + suspiciousAppDetectionConfig: withDefaults( androidConfig.suspiciousAppDetectionConfig ) }; @@ -64,6 +64,8 @@ var normalizeConfig = (config) => { androidConfig: normalizeAndroidConfig(config.androidConfig) }; }; + +// www/src/api/methods/native.ts var storeExternalId = (externalId) => { return new Promise((resolve, reject) => { cordova.exec( diff --git a/www/src/api/methods/cordova.ts b/www/src/api/methods/cordova.ts index 324c921..ccc1e9d 100644 --- a/www/src/api/methods/cordova.ts +++ b/www/src/api/methods/cordova.ts @@ -5,7 +5,8 @@ import { } from '../../types/types'; import { registerThreatListener } from '../listeners/threat'; import { registerRaspExecutionStateListener } from '../listeners/raspExecutionState'; -import { normalizeConfig, onInvalidCallback } from './native'; +import { onInvalidCallback } from './native'; +import { normalizeConfig } from '../../utils/config'; export const start = async ( config: TalsecConfig, diff --git a/www/src/api/methods/native.ts b/www/src/api/methods/native.ts index 7846340..f24e620 100644 --- a/www/src/api/methods/native.ts +++ b/www/src/api/methods/native.ts @@ -1,44 +1,5 @@ import { ScreenCaptureStatus } from '../../models/screenCaptureStatus'; -import { - MalwareScanScope, - ReasonMode, - SuspiciousAppDetectionConfig, - TalsecAndroidConfig, - TalsecConfig, -} from '../../types/types'; - -const DEFAULT_MALWARE_SCAN_SCOPE: MalwareScanScope = { - scanScope: 'SIDELOADED_ONLY', -}; -const DEFAULT_REASON_MODE: ReasonMode = 'HIGHEST_CONFIDENCE'; - -const withSuspiciousAppDetectionDefaults = ( - config: SuspiciousAppDetectionConfig, -): SuspiciousAppDetectionConfig => ({ - ...config, - malwareScanScope: config.malwareScanScope ?? DEFAULT_MALWARE_SCAN_SCOPE, - reasonMode: config.reasonMode ?? DEFAULT_REASON_MODE, -}); - -const normalizeAndroidConfig = ( - androidConfig: TalsecAndroidConfig, -): TalsecAndroidConfig => { - if (!androidConfig.suspiciousAppDetectionConfig) return androidConfig; - return { - ...androidConfig, - suspiciousAppDetectionConfig: withSuspiciousAppDetectionDefaults( - androidConfig.suspiciousAppDetectionConfig, - ), - }; -}; - -export const normalizeConfig = (config: TalsecConfig): TalsecConfig => { - if (!config.androidConfig) return config; - return { - ...config, - androidConfig: normalizeAndroidConfig(config.androidConfig), - }; -}; +export { normalizeConfig } from '../../utils/config'; export const storeExternalId = (externalId: string): Promise => { return new Promise((resolve, reject) => { diff --git a/www/src/types/types.ts b/www/src/types/types.ts index 5d7953a..df15540 100644 --- a/www/src/types/types.ts +++ b/www/src/types/types.ts @@ -22,7 +22,7 @@ export type ScopeType = export type ReasonMode = 'ALL' | 'HIGHEST_CONFIDENCE'; -export type MalwareScanScope = { +export type ScanScope = { scanScope: ScopeType; trustedInstallSources?: string[]; }; @@ -32,7 +32,7 @@ export type SuspiciousAppDetectionConfig = { hashes?: string[]; requestedPermissions?: string[][]; grantedPermissions?: string[][]; - malwareScanScope: MalwareScanScope; + scanScope: ScanScope; reasonMode: ReasonMode; }; diff --git a/www/src/utils/config.ts b/www/src/utils/config.ts new file mode 100644 index 0000000..875143e --- /dev/null +++ b/www/src/utils/config.ts @@ -0,0 +1,40 @@ +import { + ReasonMode, + ScanScope, + SuspiciousAppDetectionConfig, + TalsecAndroidConfig, + TalsecConfig, +} from '../types/types'; + +const DEFAULT_SCAN_SCOPE: ScanScope = { + scanScope: 'SIDELOADED_ONLY', +}; +const DEFAULT_REASON_MODE: ReasonMode = 'HIGHEST_CONFIDENCE'; + +const withDefaults = ( + config: SuspiciousAppDetectionConfig, +): SuspiciousAppDetectionConfig => ({ + ...config, + scanScope: config.scanScope ?? DEFAULT_SCAN_SCOPE, + reasonMode: config.reasonMode ?? DEFAULT_REASON_MODE, +}); + +const normalizeAndroidConfig = ( + androidConfig: TalsecAndroidConfig, +): TalsecAndroidConfig => { + if (!androidConfig.suspiciousAppDetectionConfig) return androidConfig; + return { + ...androidConfig, + suspiciousAppDetectionConfig: withDefaults( + androidConfig.suspiciousAppDetectionConfig, + ), + }; +}; + +export const normalizeConfig = (config: TalsecConfig): TalsecConfig => { + if (!config.androidConfig) return config; + return { + ...config, + androidConfig: normalizeAndroidConfig(config.androidConfig), + }; +}; From 0f4d431d547ec0517fd4223d5b5ff4208ce58554 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Tue, 19 May 2026 18:02:36 +0200 Subject: [PATCH 14/20] chore: regenerate dist types --- www/dist/types/api/methods/native.d.ts | 3 +-- www/dist/types/types/types.d.ts | 4 ++-- www/dist/types/utils/config.d.ts | 2 ++ 3 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 www/dist/types/utils/config.d.ts diff --git a/www/dist/types/api/methods/native.d.ts b/www/dist/types/api/methods/native.d.ts index e313d38..73a0c30 100644 --- a/www/dist/types/api/methods/native.d.ts +++ b/www/dist/types/api/methods/native.d.ts @@ -1,5 +1,4 @@ -import { TalsecConfig } from '../../types/types'; -export declare const normalizeConfig: (config: TalsecConfig) => TalsecConfig; +export { normalizeConfig } from '../../utils/config'; export declare const storeExternalId: (externalId: string) => Promise; export declare const removeExternalId: () => Promise; export declare const addToWhitelist: (packageName: string) => Promise; diff --git a/www/dist/types/types/types.d.ts b/www/dist/types/types/types.d.ts index 4c6c24b..503190e 100644 --- a/www/dist/types/types/types.d.ts +++ b/www/dist/types/types/types.d.ts @@ -13,7 +13,7 @@ export type TalsecAndroidConfig = { }; export type ScopeType = 'SIDELOADED_ONLY' | 'SIDELOADED_AND_SYSTEM_EXCLUDE_OEM' | 'SIDELOADED_AND_OEM' | 'SIDELOADED_AND_SYSTEM_AND_OEM' | 'ALL'; export type ReasonMode = 'ALL' | 'HIGHEST_CONFIDENCE'; -export type MalwareScanScope = { +export type ScanScope = { scanScope: ScopeType; trustedInstallSources?: string[]; }; @@ -22,7 +22,7 @@ export type SuspiciousAppDetectionConfig = { hashes?: string[]; requestedPermissions?: string[][]; grantedPermissions?: string[][]; - malwareScanScope: MalwareScanScope; + scanScope: ScanScope; reasonMode: ReasonMode; }; export type TalsecIosConfig = { diff --git a/www/dist/types/utils/config.d.ts b/www/dist/types/utils/config.d.ts new file mode 100644 index 0000000..0abf33d --- /dev/null +++ b/www/dist/types/utils/config.d.ts @@ -0,0 +1,2 @@ +import { TalsecConfig } from '../types/types'; +export declare const normalizeConfig: (config: TalsecConfig) => TalsecConfig; From 67da050b222a0ca2c532cef34b114f3b44d6c547 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Fri, 22 May 2026 16:29:42 +0200 Subject: [PATCH 15/20] fix: example app fix --- example/src/app/app.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/src/app/app.component.ts b/example/src/app/app.component.ts index 9ae17e3..86bd11e 100644 --- a/example/src/app/app.component.ts +++ b/example/src/app/app.component.ts @@ -46,7 +46,7 @@ export class AppComponent implements OnInit { ['android.permission.BLUETOOTH'], ['android.permission.BATTERY_STATS'], ], - malwareScanScope: { + scanScope: { scanScope: 'SIDELOADED_ONLY' as ScopeType, trustedInstallSources: ['com.apkpure.aegon'], }, From efde1d7a3691c90f997cd3470f8e02aff9d6e1bb Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Wed, 27 May 2026 16:14:30 +0200 Subject: [PATCH 16/20] docs: update changelog --- CHANGELOG.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5464bb8..6317d72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,10 +27,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Added -- Added a new sub-check for `HMA` detection to the root detector -- Added a new sub-check for `KernelSU` detection to the root detector -- Added a new sub-check for `Frida Server` detection to the hook detector -- Added Huawei App Market provider to HMA detection queries - New API class `SuspiciousAppDetectionConfig` that can be used to configure malware detection - New API for malware detection configuration in `TalsecConfig`, see `TalsecConfig.Builder#suspiciousAppDetection` @@ -38,15 +34,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed `VerifyError` caused by `JaCoCo` bytecode instrumentation - Fixed a potential cause of crash in the multi-instance detector -- Fixed crash caused by unhandled `SecurityException` thrown by `UsageStatsManager` in root detection -- Fixed manifest merge conflicts in HMA detection providers - Fixed Java interoperability of `ScreenProtector` methods - Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0) #### Changed -- Fine-tuned `KernelSU` detection -- Fine-tuned hook detection - Fine-tuned location spoofing detection - Modified malware incident log structure for better aggregation From 52a65ebf959d443ff59b0ba49593f1b5e3989752 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Thu, 28 May 2026 10:36:41 +0200 Subject: [PATCH 17/20] refactor: rename normalizeConfig to withDefaults and remove redundant type assertions --- example/src/app/app.component.ts | 6 ++---- www/src/api/methods/cordova.ts | 4 ++-- www/src/api/methods/native.ts | 2 +- www/src/utils/config.ts | 6 +++--- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/example/src/app/app.component.ts b/example/src/app/app.component.ts index 86bd11e..aeb68b0 100644 --- a/example/src/app/app.component.ts +++ b/example/src/app/app.component.ts @@ -5,8 +5,6 @@ import { SuspiciousAppInfo, Talsec, TalsecConfig, - ScopeType, - ReasonMode, } from 'cordova-talsec-plugin-freerasp'; declare var cordova: any; @@ -47,10 +45,10 @@ export class AppComponent implements OnInit { ['android.permission.BATTERY_STATS'], ], scanScope: { - scanScope: 'SIDELOADED_ONLY' as ScopeType, + scanScope: 'SIDELOADED_ONLY', trustedInstallSources: ['com.apkpure.aegon'], }, - reasonMode: 'HIGHEST_CONFIDENCE' as ReasonMode, + reasonMode: 'HIGHEST_CONFIDENCE', }, }, iosConfig: { diff --git a/www/src/api/methods/cordova.ts b/www/src/api/methods/cordova.ts index ccc1e9d..8ee1a5d 100644 --- a/www/src/api/methods/cordova.ts +++ b/www/src/api/methods/cordova.ts @@ -6,7 +6,7 @@ import { import { registerThreatListener } from '../listeners/threat'; import { registerRaspExecutionStateListener } from '../listeners/raspExecutionState'; import { onInvalidCallback } from './native'; -import { normalizeConfig } from '../../utils/config'; +import { withDefaults } from '../../utils/config'; export const start = async ( config: TalsecConfig, @@ -33,7 +33,7 @@ export const start = async ( }, 'TalsecPlugin', 'start', - [normalizeConfig(config)], + [withDefaults(config)], ); }); }; diff --git a/www/src/api/methods/native.ts b/www/src/api/methods/native.ts index f24e620..adee404 100644 --- a/www/src/api/methods/native.ts +++ b/www/src/api/methods/native.ts @@ -1,5 +1,5 @@ import { ScreenCaptureStatus } from '../../models/screenCaptureStatus'; -export { normalizeConfig } from '../../utils/config'; +export { withDefaults } from '../../utils/config'; export const storeExternalId = (externalId: string): Promise => { return new Promise((resolve, reject) => { diff --git a/www/src/utils/config.ts b/www/src/utils/config.ts index 875143e..2d18b17 100644 --- a/www/src/utils/config.ts +++ b/www/src/utils/config.ts @@ -11,7 +11,7 @@ const DEFAULT_SCAN_SCOPE: ScanScope = { }; const DEFAULT_REASON_MODE: ReasonMode = 'HIGHEST_CONFIDENCE'; -const withDefaults = ( +const withDetectionDefaults = ( config: SuspiciousAppDetectionConfig, ): SuspiciousAppDetectionConfig => ({ ...config, @@ -25,13 +25,13 @@ const normalizeAndroidConfig = ( if (!androidConfig.suspiciousAppDetectionConfig) return androidConfig; return { ...androidConfig, - suspiciousAppDetectionConfig: withDefaults( + suspiciousAppDetectionConfig: withDetectionDefaults( androidConfig.suspiciousAppDetectionConfig, ), }; }; -export const normalizeConfig = (config: TalsecConfig): TalsecConfig => { +export const withDefaults = (config: TalsecConfig): TalsecConfig => { if (!config.androidConfig) return config; return { ...config, From 539f05bcee1d149a6a2a1d61bb44bfc0db76d39e Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Thu, 28 May 2026 10:42:49 +0200 Subject: [PATCH 18/20] chore: regenerate dist --- www/dist/talsec.js | 16 ++++++++-------- www/dist/types/api/methods/native.d.ts | 2 +- www/dist/types/utils/config.d.ts | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/www/dist/talsec.js b/www/dist/talsec.js index a1c8559..50e2928 100644 --- a/www/dist/talsec.js +++ b/www/dist/talsec.js @@ -24,11 +24,11 @@ __export(talsec_exports, { blockScreenCapture: () => blockScreenCapture, getAppIcon: () => getAppIcon, isScreenCaptureBlocked: () => isScreenCaptureBlocked, - normalizeConfig: () => normalizeConfig, onInvalidCallback: () => onInvalidCallback, removeExternalId: () => removeExternalId, start: () => start, - storeExternalId: () => storeExternalId + storeExternalId: () => storeExternalId, + withDefaults: () => withDefaults }); module.exports = __toCommonJS(talsec_exports); @@ -43,7 +43,7 @@ var DEFAULT_SCAN_SCOPE = { scanScope: "SIDELOADED_ONLY" }; var DEFAULT_REASON_MODE = "HIGHEST_CONFIDENCE"; -var withDefaults = (config) => ({ +var withDetectionDefaults = (config) => ({ ...config, scanScope: config.scanScope ?? DEFAULT_SCAN_SCOPE, reasonMode: config.reasonMode ?? DEFAULT_REASON_MODE @@ -52,12 +52,12 @@ var normalizeAndroidConfig = (androidConfig) => { if (!androidConfig.suspiciousAppDetectionConfig) return androidConfig; return { ...androidConfig, - suspiciousAppDetectionConfig: withDefaults( + suspiciousAppDetectionConfig: withDetectionDefaults( androidConfig.suspiciousAppDetectionConfig ) }; }; -var normalizeConfig = (config) => { +var withDefaults = (config) => { if (!config.androidConfig) return config; return { ...config, @@ -454,7 +454,7 @@ var start = async (config, eventListenerConfig, raspExecutionStateActions) => { }, "TalsecPlugin", "start", - [normalizeConfig(config)] + [withDefaults(config)] ); }); }; @@ -464,9 +464,9 @@ var start = async (config, eventListenerConfig, raspExecutionStateActions) => { blockScreenCapture, getAppIcon, isScreenCaptureBlocked, - normalizeConfig, onInvalidCallback, removeExternalId, start, - storeExternalId + storeExternalId, + withDefaults }); diff --git a/www/dist/types/api/methods/native.d.ts b/www/dist/types/api/methods/native.d.ts index 73a0c30..e87e702 100644 --- a/www/dist/types/api/methods/native.d.ts +++ b/www/dist/types/api/methods/native.d.ts @@ -1,4 +1,4 @@ -export { normalizeConfig } from '../../utils/config'; +export { withDefaults } from '../../utils/config'; export declare const storeExternalId: (externalId: string) => Promise; export declare const removeExternalId: () => Promise; export declare const addToWhitelist: (packageName: string) => Promise; diff --git a/www/dist/types/utils/config.d.ts b/www/dist/types/utils/config.d.ts index 0abf33d..683e00a 100644 --- a/www/dist/types/utils/config.d.ts +++ b/www/dist/types/utils/config.d.ts @@ -1,2 +1,2 @@ import { TalsecConfig } from '../types/types'; -export declare const normalizeConfig: (config: TalsecConfig) => TalsecConfig; +export declare const withDefaults: (config: TalsecConfig) => TalsecConfig; From d193118902c50d321f67c8907b3168dfeccab9b2 Mon Sep 17 00:00:00 2001 From: martinzigrai Date: Thu, 28 May 2026 10:55:57 +0200 Subject: [PATCH 19/20] refactor: remove withDefaults from public API --- www/dist/talsec.js | 60 +++++++++++++------------- www/dist/types/api/methods/native.d.ts | 1 - www/src/api/methods/native.ts | 1 - 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/www/dist/talsec.js b/www/dist/talsec.js index 50e2928..11504d8 100644 --- a/www/dist/talsec.js +++ b/www/dist/talsec.js @@ -27,8 +27,7 @@ __export(talsec_exports, { onInvalidCallback: () => onInvalidCallback, removeExternalId: () => removeExternalId, start: () => start, - storeExternalId: () => storeExternalId, - withDefaults: () => withDefaults + storeExternalId: () => storeExternalId }); module.exports = __toCommonJS(talsec_exports); @@ -38,33 +37,6 @@ var ScreenCaptureStatus = { BLOCKED: 1 }; -// www/src/utils/config.ts -var DEFAULT_SCAN_SCOPE = { - scanScope: "SIDELOADED_ONLY" -}; -var DEFAULT_REASON_MODE = "HIGHEST_CONFIDENCE"; -var withDetectionDefaults = (config) => ({ - ...config, - scanScope: config.scanScope ?? DEFAULT_SCAN_SCOPE, - reasonMode: config.reasonMode ?? DEFAULT_REASON_MODE -}); -var normalizeAndroidConfig = (androidConfig) => { - if (!androidConfig.suspiciousAppDetectionConfig) return androidConfig; - return { - ...androidConfig, - suspiciousAppDetectionConfig: withDetectionDefaults( - androidConfig.suspiciousAppDetectionConfig - ) - }; -}; -var withDefaults = (config) => { - if (!config.androidConfig) return config; - return { - ...config, - androidConfig: normalizeAndroidConfig(config.androidConfig) - }; -}; - // www/src/api/methods/native.ts var storeExternalId = (externalId) => { return new Promise((resolve, reject) => { @@ -433,6 +405,33 @@ var registerRaspExecutionStateListener = async (config) => { ); }; +// www/src/utils/config.ts +var DEFAULT_SCAN_SCOPE = { + scanScope: "SIDELOADED_ONLY" +}; +var DEFAULT_REASON_MODE = "HIGHEST_CONFIDENCE"; +var withDetectionDefaults = (config) => ({ + ...config, + scanScope: config.scanScope ?? DEFAULT_SCAN_SCOPE, + reasonMode: config.reasonMode ?? DEFAULT_REASON_MODE +}); +var normalizeAndroidConfig = (androidConfig) => { + if (!androidConfig.suspiciousAppDetectionConfig) return androidConfig; + return { + ...androidConfig, + suspiciousAppDetectionConfig: withDetectionDefaults( + androidConfig.suspiciousAppDetectionConfig + ) + }; +}; +var withDefaults = (config) => { + if (!config.androidConfig) return config; + return { + ...config, + androidConfig: normalizeAndroidConfig(config.androidConfig) + }; +}; + // www/src/api/methods/cordova.ts var start = async (config, eventListenerConfig, raspExecutionStateActions) => { await registerThreatListener(eventListenerConfig); @@ -467,6 +466,5 @@ var start = async (config, eventListenerConfig, raspExecutionStateActions) => { onInvalidCallback, removeExternalId, start, - storeExternalId, - withDefaults + storeExternalId }); diff --git a/www/dist/types/api/methods/native.d.ts b/www/dist/types/api/methods/native.d.ts index e87e702..9714cb5 100644 --- a/www/dist/types/api/methods/native.d.ts +++ b/www/dist/types/api/methods/native.d.ts @@ -1,4 +1,3 @@ -export { withDefaults } from '../../utils/config'; export declare const storeExternalId: (externalId: string) => Promise; export declare const removeExternalId: () => Promise; export declare const addToWhitelist: (packageName: string) => Promise; diff --git a/www/src/api/methods/native.ts b/www/src/api/methods/native.ts index adee404..2ef4ede 100644 --- a/www/src/api/methods/native.ts +++ b/www/src/api/methods/native.ts @@ -1,5 +1,4 @@ import { ScreenCaptureStatus } from '../../models/screenCaptureStatus'; -export { withDefaults } from '../../utils/config'; export const storeExternalId = (externalId: string): Promise => { return new Promise((resolve, reject) => { From 42927e55555198b9ad63530a20e2905c3284a8b7 Mon Sep 17 00:00:00 2001 From: Tomas Psota Date: Thu, 28 May 2026 14:06:36 +0200 Subject: [PATCH 20/20] refactor: rename ScanScope.scanScope field to scopeType Rename the `scanScope: ScopeType` field inside the `ScanScope` type to `scopeType` so the field name matches its type name. Update the JSON key, default config, example app, Kotlin native bridge, and dist files accordingly. Co-authored-by: Cursor --- example/src/app/app.component.ts | 2 +- src/android/utils/Extensions.kt | 4 ++-- www/dist/talsec.js | 2 +- www/dist/types/types/types.d.ts | 2 +- www/src/types/types.ts | 2 +- www/src/utils/config.ts | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/example/src/app/app.component.ts b/example/src/app/app.component.ts index aeb68b0..3913a8b 100644 --- a/example/src/app/app.component.ts +++ b/example/src/app/app.component.ts @@ -45,7 +45,7 @@ export class AppComponent implements OnInit { ['android.permission.BATTERY_STATS'], ], scanScope: { - scanScope: 'SIDELOADED_ONLY', + scopeType: 'SIDELOADED_ONLY', trustedInstallSources: ['com.apkpure.aegon'], }, reasonMode: 'HIGHEST_CONFIDENCE', diff --git a/src/android/utils/Extensions.kt b/src/android/utils/Extensions.kt index e8b429a..66d907f 100644 --- a/src/android/utils/Extensions.kt +++ b/src/android/utils/Extensions.kt @@ -92,10 +92,10 @@ internal fun PackageInfo.toCordovaPackageInfo(context: Context): CordovaPackageI } internal fun JSONObject.toScanScope(): MalwareScanScope { - val scanScope = ScopeType.valueOf(getString("scanScope")) + val scopeType = ScopeType.valueOf(getString("scopeType")) val trustedInstallSources = optJSONArray("trustedInstallSources") ?.toPrimitiveArray()?.toList() - return MalwareScanScope(scanScope, trustedInstallSources) + return MalwareScanScope(scopeType, trustedInstallSources) } internal fun JSONObject.toSuspiciousAppDetectionConfig(): SuspiciousAppDetectionConfig { diff --git a/www/dist/talsec.js b/www/dist/talsec.js index 11504d8..dde16b8 100644 --- a/www/dist/talsec.js +++ b/www/dist/talsec.js @@ -407,7 +407,7 @@ var registerRaspExecutionStateListener = async (config) => { // www/src/utils/config.ts var DEFAULT_SCAN_SCOPE = { - scanScope: "SIDELOADED_ONLY" + scopeType: "SIDELOADED_ONLY" }; var DEFAULT_REASON_MODE = "HIGHEST_CONFIDENCE"; var withDetectionDefaults = (config) => ({ diff --git a/www/dist/types/types/types.d.ts b/www/dist/types/types/types.d.ts index 503190e..5f601c5 100644 --- a/www/dist/types/types/types.d.ts +++ b/www/dist/types/types/types.d.ts @@ -14,7 +14,7 @@ export type TalsecAndroidConfig = { export type ScopeType = 'SIDELOADED_ONLY' | 'SIDELOADED_AND_SYSTEM_EXCLUDE_OEM' | 'SIDELOADED_AND_OEM' | 'SIDELOADED_AND_SYSTEM_AND_OEM' | 'ALL'; export type ReasonMode = 'ALL' | 'HIGHEST_CONFIDENCE'; export type ScanScope = { - scanScope: ScopeType; + scopeType: ScopeType; trustedInstallSources?: string[]; }; export type SuspiciousAppDetectionConfig = { diff --git a/www/src/types/types.ts b/www/src/types/types.ts index df15540..167bfab 100644 --- a/www/src/types/types.ts +++ b/www/src/types/types.ts @@ -23,7 +23,7 @@ export type ScopeType = export type ReasonMode = 'ALL' | 'HIGHEST_CONFIDENCE'; export type ScanScope = { - scanScope: ScopeType; + scopeType: ScopeType; trustedInstallSources?: string[]; }; diff --git a/www/src/utils/config.ts b/www/src/utils/config.ts index 2d18b17..dcb024c 100644 --- a/www/src/utils/config.ts +++ b/www/src/utils/config.ts @@ -7,7 +7,7 @@ import { } from '../types/types'; const DEFAULT_SCAN_SCOPE: ScanScope = { - scanScope: 'SIDELOADED_ONLY', + scopeType: 'SIDELOADED_ONLY', }; const DEFAULT_REASON_MODE: ReasonMode = 'HIGHEST_CONFIDENCE';