diff --git a/app/src/main/java/org/autojs/autojs/app/tool/JsonSocketClientTool.kt b/app/src/main/java/org/autojs/autojs/app/tool/JsonSocketClientTool.kt index 3b55323e..0c145556 100644 --- a/app/src/main/java/org/autojs/autojs/app/tool/JsonSocketClientTool.kt +++ b/app/src/main/java/org/autojs/autojs/app/tool/JsonSocketClientTool.kt @@ -15,7 +15,7 @@ import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import org.autojs.autojs.app.DialogUtils import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs.pluginclient.DevPluginService import org.autojs.autojs.pluginclient.JsonSocketClient import org.autojs.autojs.ui.common.NotAskAgainDialog diff --git a/app/src/main/java/org/autojs/autojs/core/accessibility/WindowInfo.kt b/app/src/main/java/org/autojs/autojs/core/accessibility/WindowInfo.kt index 8c2ff0f0..5a836a29 100644 --- a/app/src/main/java/org/autojs/autojs/core/accessibility/WindowInfo.kt +++ b/app/src/main/java/org/autojs/autojs/core/accessibility/WindowInfo.kt @@ -2,7 +2,7 @@ package org.autojs.autojs.core.accessibility import android.content.Context import android.view.accessibility.AccessibilityWindowInfo -import org.autojs.autojs.extension.ArrayExtensions.toHashCode +import org.autojs.autojs.rhino.extension.IterableExtensions.toHashCode import org.autojs.autojs.util.ObjectUtils import org.autojs.autojs.util.StringUtils.str import org.autojs.autojs6.R diff --git a/app/src/main/java/org/autojs/autojs/core/automator/UiObject.kt b/app/src/main/java/org/autojs/autojs/core/automator/UiObject.kt index 6bbf6b4f..5ed76461 100644 --- a/app/src/main/java/org/autojs/autojs/core/automator/UiObject.kt +++ b/app/src/main/java/org/autojs/autojs/core/automator/UiObject.kt @@ -11,10 +11,10 @@ import org.autojs.autojs.app.GlobalAppContext import org.autojs.autojs.core.accessibility.AccessibilityNodeInfoAllocator import org.autojs.autojs.core.accessibility.AccessibilityNodeInfoHelper import org.autojs.autojs.core.accessibility.UiSelector -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsUndefined -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsUndefined +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException import org.autojs.autojs.util.DisplayUtils.toRoundIntX diff --git a/app/src/main/java/org/autojs/autojs/core/automator/UiObjectCollection.kt b/app/src/main/java/org/autojs/autojs/core/automator/UiObjectCollection.kt index 92dce544..913a9717 100644 --- a/app/src/main/java/org/autojs/autojs/core/automator/UiObjectCollection.kt +++ b/app/src/main/java/org/autojs/autojs/core/automator/UiObjectCollection.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.core.automator import org.autojs.autojs.core.accessibility.UiSelector -import org.autojs.autojs.extension.ArrayExtensions.toHashCode +import org.autojs.autojs.rhino.extension.IterableExtensions.toHashCode import org.autojs.autojs.tool.Consumer import org.autojs.autojs.util.RhinoUtils import org.mozilla.javascript.Scriptable diff --git a/app/src/main/java/org/autojs/autojs/core/console/ConsoleImpl.kt b/app/src/main/java/org/autojs/autojs/core/console/ConsoleImpl.kt index b0cc7b41..1f8aeedf 100644 --- a/app/src/main/java/org/autojs/autojs/core/console/ConsoleImpl.kt +++ b/app/src/main/java/org/autojs/autojs/core/console/ConsoleImpl.kt @@ -26,7 +26,7 @@ import org.autojs.autojs.annotation.OmniColor import org.autojs.autojs.annotation.ScriptInterface import org.autojs.autojs.core.pref.Language import org.autojs.autojs.core.ui.inflater.util.Gravities -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs.permission.DisplayOverOtherAppsPermission import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.AbstractConsole diff --git a/app/src/main/java/org/autojs/autojs/core/crypto/Crypto.kt b/app/src/main/java/org/autojs/autojs/core/crypto/Crypto.kt index 1c3e3923..ba8b143a 100644 --- a/app/src/main/java/org/autojs/autojs/core/crypto/Crypto.kt +++ b/app/src/main/java/org/autojs/autojs/core/crypto/Crypto.kt @@ -4,8 +4,9 @@ package org.autojs.autojs.core.crypto import android.util.Base64 import org.autojs.autojs.annotation.ScriptInterface -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.util.ArrayUtils +import org.autojs.autojs.core.crypto.Crypto.input +import org.autojs.autojs.rhino.extension.NativeArrayExtensions.jsBytesToByteArray +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.util.RhinoUtils.newNativeObject import org.mozilla.javascript.NativeArray import org.mozilla.javascript.NativeObject @@ -116,7 +117,7 @@ object Crypto { when (val iv = options.prop("iv")) { is String -> cipher.init(mode, niceKey.toKeySpec(transformation), IvParameterSpec(iv.toByteArray())) is ByteArray -> cipher.init(mode, niceKey.toKeySpec(transformation), IvParameterSpec(iv)) - is NativeArray -> cipher.init(mode, niceKey.toKeySpec(transformation), IvParameterSpec(ArrayUtils.jsBytesToByteArray(iv))) + is NativeArray -> cipher.init(mode, niceKey.toKeySpec(transformation), IvParameterSpec(iv.jsBytesToByteArray())) is AlgorithmParameterSpec -> cipher.init(mode, niceKey.toKeySpec(transformation), iv) else -> cipher.init(mode, niceKey.toKeySpec(transformation)) } @@ -158,7 +159,7 @@ object Crypto { private fun input(input: Any, options: NativeObject, callback: (bytes: ByteArray, start: Int, length: Int) -> Unit) { when (input) { is ByteArray -> callback(input, 0, input.size) - is NativeArray -> callback(ArrayUtils.jsBytesToByteArray(input), 0, input.size) + is NativeArray -> callback(input.jsBytesToByteArray(), 0, input.size) is String -> when (options.prop("input")) { "file" -> { val fis = FileInputStream(input) diff --git a/app/src/main/java/org/autojs/autojs/core/image/ImageWrapper.kt b/app/src/main/java/org/autojs/autojs/core/image/ImageWrapper.kt index 0592e40d..2e948061 100644 --- a/app/src/main/java/org/autojs/autojs/core/image/ImageWrapper.kt +++ b/app/src/main/java/org/autojs/autojs/core/image/ImageWrapper.kt @@ -9,7 +9,7 @@ import androidx.core.graphics.get import org.autojs.autojs.annotation.ScriptInterface import org.autojs.autojs.core.opencv.Mat import org.autojs.autojs.core.opencv.OpenCVHelper -import org.autojs.autojs.extension.AnyExtensions.toRuntimePath +import org.autojs.autojs.rhino.extension.AnyExtensions.toRuntimePath import org.autojs.autojs.pio.UncheckedIOException import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.Images diff --git a/app/src/main/java/org/autojs/autojs/core/plugin/Plugin.kt b/app/src/main/java/org/autojs/autojs/core/plugin/Plugin.kt index 110a6eda..715547af 100644 --- a/app/src/main/java/org/autojs/autojs/core/plugin/Plugin.kt +++ b/app/src/main/java/org/autojs/autojs/core/plugin/Plugin.kt @@ -6,8 +6,8 @@ import android.content.ServiceConnection import android.content.pm.ApplicationInfo import android.os.IBinder import org.autojs.autojs.annotation.ScriptInterface -import org.autojs.autojs.extension.ArrayExtensions.toHashCode import org.autojs.autojs.rhino.TopLevelScope +import org.autojs.autojs.rhino.extension.IterableExtensions.toHashCode import org.autojs.autojs.runtime.api.Plugins.PluginRuntime import java.lang.reflect.Method diff --git a/app/src/main/java/org/autojs/autojs/core/plugin/center/PluginInfoDialogManager.kt b/app/src/main/java/org/autojs/autojs/core/plugin/center/PluginInfoDialogManager.kt index 07a9a6ac..795c06ee 100644 --- a/app/src/main/java/org/autojs/autojs/core/plugin/center/PluginInfoDialogManager.kt +++ b/app/src/main/java/org/autojs/autojs/core/plugin/center/PluginInfoDialogManager.kt @@ -18,9 +18,9 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.autojs.autojs.app.DialogUtils.showAdaptive -import org.autojs.autojs.extension.MaterialDialogExtensions.makeSettingsLaunchable -import org.autojs.autojs.extension.MaterialDialogExtensions.makeTextCopyable -import org.autojs.autojs.extension.MaterialDialogExtensions.setCopyableTextIfAbsent +import org.autojs.autojs.util.MaterialDialogUtils.makeSettingsLaunchable +import org.autojs.autojs.util.MaterialDialogUtils.makeTextCopyable +import org.autojs.autojs.util.MaterialDialogUtils.setCopyableTextIfAbsent import org.autojs.autojs.runtime.api.augment.converter.core.Bytes import org.autojs.autojs.theme.ThemeColorManager import org.autojs.autojs.util.ColorUtils diff --git a/app/src/main/java/org/autojs/autojs/core/plugin/center/PluginInstallActions.kt b/app/src/main/java/org/autojs/autojs/core/plugin/center/PluginInstallActions.kt index 23e3e639..f3200caa 100644 --- a/app/src/main/java/org/autojs/autojs/core/plugin/center/PluginInstallActions.kt +++ b/app/src/main/java/org/autojs/autojs/core/plugin/center/PluginInstallActions.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.LifecycleCoroutineScope import com.afollestad.materialdialogs.DialogAction import com.afollestad.materialdialogs.MaterialDialog import kotlinx.coroutines.launch -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs6.R object PluginInstallActions { diff --git a/app/src/main/java/org/autojs/autojs/core/record/GlobalActionRecorder.java b/app/src/main/java/org/autojs/autojs/core/record/GlobalActionRecorder.java index f95d47bf..433294df 100644 --- a/app/src/main/java/org/autojs/autojs/core/record/GlobalActionRecorder.java +++ b/app/src/main/java/org/autojs/autojs/core/record/GlobalActionRecorder.java @@ -10,7 +10,7 @@ import org.autojs.autojs.core.record.inputevent.InputEventRecorder; import org.autojs.autojs.core.record.inputevent.InputEventToAutoFileRecorder; import org.autojs.autojs.core.record.inputevent.InputEventToRootAutomatorRecorder; import org.autojs.autojs.core.record.inputevent.TouchRecorder; -import org.autojs.autojs.extension.MaterialDialogExtensions; +import org.autojs.autojs.util.MaterialDialogUtils; import org.autojs.autojs.ui.common.ScriptOperations; import org.autojs.autojs.util.ClipboardUtils; import org.autojs.autojs.util.ViewUtils; @@ -183,7 +183,7 @@ public class GlobalActionRecorder implements Recorder.OnStateChangedListener { .positiveText(R.string.dialog_button_confirm) .positiveColorRes(R.color.dialog_button_attraction) .canceledOnTouchOutside(false); - MaterialDialogExtensions.choiceWidgetThemeColor(builder); + MaterialDialogUtils.choiceWidgetThemeColor(builder); DialogUtils.showAdaptive(builder.build()); } diff --git a/app/src/main/java/org/autojs/autojs/core/ui/attribute/WebViewAttributes.kt b/app/src/main/java/org/autojs/autojs/core/ui/attribute/WebViewAttributes.kt index da51ff5e..783e306b 100644 --- a/app/src/main/java/org/autojs/autojs/core/ui/attribute/WebViewAttributes.kt +++ b/app/src/main/java/org/autojs/autojs/core/ui/attribute/WebViewAttributes.kt @@ -4,7 +4,7 @@ import android.view.View import android.webkit.WebView import org.autojs.autojs.core.ui.inflater.ResourceParser import org.autojs.autojs.core.ui.inflater.util.Strings -import org.autojs.autojs.extension.StringExtensions.isUri +import org.autojs.autojs.util.StringUtils.isUri import org.autojs.autojs.runtime.ScriptRuntime open class WebViewAttributes(scriptRuntime: ScriptRuntime, resourceParser: ResourceParser, view: View) : ViewGroupAttributes(scriptRuntime, resourceParser, view) { diff --git a/app/src/main/java/org/autojs/autojs/engine/RhinoJavaScriptEngine.kt b/app/src/main/java/org/autojs/autojs/engine/RhinoJavaScriptEngine.kt index 0216bef1..f81f705d 100644 --- a/app/src/main/java/org/autojs/autojs/engine/RhinoJavaScriptEngine.kt +++ b/app/src/main/java/org/autojs/autojs/engine/RhinoJavaScriptEngine.kt @@ -7,10 +7,10 @@ import android.util.Log import android.view.View import org.autojs.autojs.core.ui.ViewExtras import org.autojs.autojs.engine.module.AssetAndUrlModuleSourceProvider -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.pio.PFiles import org.autojs.autojs.pio.UncheckedIOException import org.autojs.autojs.project.ScriptConfig diff --git a/app/src/main/java/org/autojs/autojs/execution/ExecutionConfig.kt b/app/src/main/java/org/autojs/autojs/execution/ExecutionConfig.kt index 633f327a..c35dc210 100644 --- a/app/src/main/java/org/autojs/autojs/execution/ExecutionConfig.kt +++ b/app/src/main/java/org/autojs/autojs/execution/ExecutionConfig.kt @@ -2,8 +2,8 @@ package org.autojs.autojs.execution import android.os.Parcel import android.os.Parcelable -import org.autojs.autojs.extension.ArrayExtensions.toHashCode import org.autojs.autojs.project.ScriptConfig +import org.autojs.autojs.rhino.extension.IterableExtensions.toHashCode /** * Created by Stardust on Feb 1, 2017. diff --git a/app/src/main/java/org/autojs/autojs/extension/ArrayExtensions.kt b/app/src/main/java/org/autojs/autojs/extension/ArrayExtensions.kt deleted file mode 100644 index 76eb581a..00000000 --- a/app/src/main/java/org/autojs/autojs/extension/ArrayExtensions.kt +++ /dev/null @@ -1,93 +0,0 @@ -package org.autojs.autojs.extension - -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.util.RhinoUtils.UNDEFINED -import org.autojs.autojs.util.RhinoUtils.newNativeObject -import org.autojs.autojs.util.RhinoUtils.withRhinoContext -import org.mozilla.javascript.Context -import org.mozilla.javascript.NativeArray -import org.mozilla.javascript.NativeObject -import org.mozilla.javascript.Wrapper - -object ArrayExtensions { - - // @Hint by JetBrains AI Assistant on Oct 25, 2024. - // ! 31 is a prime number that acts as a mixer for hash code calculation. - // ! Multiplying by the prime number 31 helps to evenly distribute the hash values - // ! across different properties and reduce collisions. - // ! zh-CN (translated by Jetbrains AI Assistant on Oct 25, 2024): - // ! 31 是一个质数, 它的作用类似于混合器, 用于哈希码的计算. - // ! 乘以质数 31 可以帮助在不同属性值上更均匀地分散哈希值, 减少碰撞. - fun Iterable.toHashCode(initial: Int = 0): Int = fold(initial) { acc, o -> - 31 * acc + when (o) { - null -> 0 - is Int -> o - is Long -> o.hashCode() - is Float -> o.hashCode() - is Double -> o.hashCode() - is Byte -> o.hashCode() - is Short -> o.hashCode() - is CharSequence -> o.hashCode() - is Array<*> -> o.contentHashCode() - is ByteArray -> o.contentHashCode() - is CharArray -> o.contentHashCode() - is ShortArray -> o.contentHashCode() - is IntArray -> o.contentHashCode() - is LongArray -> o.contentHashCode() - is FloatArray -> o.contentHashCode() - is DoubleArray -> o.contentHashCode() - is BooleanArray -> o.contentHashCode() - else -> o.hashCode() - } - } - - fun Array.unshiftWith(thisObj: Any?): Array { - return Array(this.size + 1) { if (it == 0) thisObj else this[it - 1] } - } - - fun Array.symmetricDifference(other: Array): Set { - val a = this.asIterable() subtract other.asIterable().toSet() - val b = other.asIterable() subtract this.asIterable().toSet() - return a union b - } - - fun Iterable<*>.toNativeArray(): NativeArray { - return withRhinoContext { cx -> - val standardObjects = cx.initStandardObjects() - cx.newArray(standardObjects, this.map { Context.javaToJS(it, standardObjects) }.toTypedArray()) as NativeArray - } - } - - fun Array<*>.toNativeArray(): NativeArray { - return withRhinoContext { cx -> - val standardObjects = cx.initStandardObjects() - cx.newArray(standardObjects, this.toList().map { Context.javaToJS(it, standardObjects) }.toTypedArray()) as NativeArray - } - } - - fun Map.toNativeObject(): NativeObject = newNativeObject().also { o -> - forEach { entry: Map.Entry -> - val key = Context.toString(entry.key) - when (val value = entry.value) { - is String -> o.put(key, o, value) - is Number -> o.put(key, o, Context.toNumber(value)) - is Boolean -> o.put(key, o, Context.toBoolean(value)) - is Wrapper -> o.put(key, o, value.unwrap()) - is Unit -> o.put(key, o, UNDEFINED) - is List<*> -> o.put(key, o, value.toNativeArray()) - is Array<*> -> o.put(key, o, value.toNativeArray()) - is Map<*, *> -> o.put(key, o, value.toNativeObject()) - is Pair<*, *> -> o.put(key, o, newNativeObject().also { newObj -> - newObj.put(Context.toString(value.first), o, value.second) - }) - else -> o.put(key, o, Context.javaToJS(value, o)) - } - } - } - - fun Array.jsArrayBrief(separator: String = ", ", appendPaddingSpace: Boolean = true) = when (appendPaddingSpace) { - true -> "[ ${this.joinToString(separator) { it.jsBrief() }} ]" - else -> "[${this.joinToString(separator) { it.jsBrief() }}]" - } - -} diff --git a/app/src/main/java/org/autojs/autojs/extension/StringExtensions.kt b/app/src/main/java/org/autojs/autojs/extension/StringExtensions.kt deleted file mode 100644 index 887fe9f5..00000000 --- a/app/src/main/java/org/autojs/autojs/extension/StringExtensions.kt +++ /dev/null @@ -1,78 +0,0 @@ -package org.autojs.autojs.extension - -import androidx.core.net.toUri -import java.io.File -import java.text.Normalizer - -object StringExtensions { - - val String.estimateVisualWidth: Int - get() { - var width = 0 - var i = 0 - while (i < length) { - // 取 code point (可能是两位 surrogates 拼成一个 code point) - val cp = codePointAt(i) - // 移动下标, 跳过组合过的 surrogate - i += Character.charCount(cp) - - // 简易判断: 东亚全宽/Emoji 等 - width += if (isLikelyFullwidth(cp)) 2 else 1 - } - return width - } - - fun String.toDoubleOrNaN() = this.toDoubleOrNull() ?: Double.NaN - - fun String.padStart(length: Int, padStr: String) = when { - this.length >= length || padStr.isEmpty() -> this - else -> getPadding(length, padStr) + this - } - - fun String.padEnd(length: Int, padStr: String) = when { - this.length >= length || padStr.isEmpty() -> this - else -> this + getPadding(length, padStr) - } - - private fun String.getPadding(length: Int, padStr: String): String { - val repeatTimes = (length - this.length) / padStr.length - val remainderStr = padStr.take((length - this.length) % padStr.length) - return padStr.repeat(repeatTimes) + remainderStr - } - - fun CharSequence.looseMatches(reference: CharSequence): Boolean { - return this.toString().normalizeForMatch() == reference.toString().normalizeForMatch() - } - - private fun String.normalizeForMatch(): String { - return Normalizer.normalize(this, Normalizer.Form.NFD) - .trim() - .replace(Regex("\\p{M}"), "") // 移除组合符号, 如上标符号 - .replace(Regex("[^\\p{L}\\p{N}@.|]+"), "") // 只保留 [字母/数字/特定符号] - .lowercase() - } - - private fun isLikelyFullwidth(codePoint: Int) = when (codePoint) { - // CJK 中日韩统一表意文字 - in 0x4E00..0x9FFF -> true - // 常见的 Emoji 起始, 又或者判断 Character.getType(cp) - in 0x1F300..0x1FAFF -> true - // East Asian Fullwidth, Wide 等范围, 可参考 EastAsianWidth.txt - else -> false - } - - @JvmStatic - fun String.isUri(): Boolean { - if (isBlank()) return false - val uri = runCatching { this.toUri() }.getOrNull() ?: return false - uri.scheme?.lowercase() ?: return false - return true - } - - @JvmStatic - fun String.toFile(): File { - val path = this - return File(path) - } - -} diff --git a/app/src/main/java/org/autojs/autojs/extension/ViewExtensions.kt b/app/src/main/java/org/autojs/autojs/extension/ViewExtensions.kt deleted file mode 100644 index 53c6b157..00000000 --- a/app/src/main/java/org/autojs/autojs/extension/ViewExtensions.kt +++ /dev/null @@ -1,76 +0,0 @@ -package org.autojs.autojs.extension - -import android.annotation.SuppressLint -import android.os.Build -import android.view.View -import android.widget.PopupMenu -import android.widget.TextView -import androidx.appcompat.widget.Toolbar -import org.autojs.autojs.util.ViewUtils.onceGlobalLayout - -/** - * Created by SuperMonster003 on May 7, 2025. - */ -object ViewExtensions { - - fun PopupMenu.setForceShowIconCompat() { - val popup = this - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - popup.setForceShowIcon(true) - } else { - runCatching { - @SuppressLint("DiscouragedPrivateApi") - val field = PopupMenu::class.java.getDeclaredField("mPopup") - field.isAccessible = true - // MenuPopupHelper - val helper = field.get(popup) - val method = helper.javaClass.getDeclaredMethod("setForceShowIcon", Boolean::class.javaPrimitiveType) - method.invoke(helper, true) - } - } - } - - val Toolbar.titleView: TextView? - get() = this.findViewById(androidx.appcompat.R.id.action_bar_title) - ?: runCatching { - Toolbar::class.java.getDeclaredField("mTitleTextView").apply { isAccessible = true }.get(this@titleView) as TextView? - }.getOrNull() - - val Toolbar.subtitleView: TextView? - get() = this.findViewById(androidx.appcompat.R.id.action_bar_subtitle) - ?: runCatching { - Toolbar::class.java.getDeclaredField("mSubtitleTextView").apply { isAccessible = true }.get(this@subtitleView) as TextView? - }.getOrNull() - - @JvmStatic - fun Toolbar.setOnTitleViewClickListener(l: View.OnClickListener?) { - this.setOnTitleViewClickListener(l, withFallback = true) - } - - @JvmStatic - fun Toolbar.setOnTitleViewClickListener(l: View.OnClickListener?, withFallback: Boolean) { - this.onceGlobalLayout { - this.titleView?.setOnClickListener(l) ?: run { if (withFallback) this.setOnClickListener(l) } - } - } - - @JvmStatic - fun Toolbar.setOnSubtitleViewClickListener(l: View.OnClickListener?) { - this.onceGlobalLayout { - this.subtitleView?.setOnClickListener(l) - } - } - - @JvmStatic - fun Toolbar.setOnTitleViewLongClickListener(l: View.OnLongClickListener?) { - this.setOnTitleViewLongClickListener(l, withFallback = true) - } - - @JvmStatic - fun Toolbar.setOnTitleViewLongClickListener(l: View.OnLongClickListener?, withFallback: Boolean) { - this.onceGlobalLayout { - this.titleView?.setOnLongClickListener(l) ?: run { if (withFallback) this.setOnLongClickListener(l) } - } - } - -} diff --git a/app/src/main/java/org/autojs/autojs/permission/AllFilesAccessPermission.kt b/app/src/main/java/org/autojs/autojs/permission/AllFilesAccessPermission.kt index 77a107b4..8388065d 100644 --- a/app/src/main/java/org/autojs/autojs/permission/AllFilesAccessPermission.kt +++ b/app/src/main/java/org/autojs/autojs/permission/AllFilesAccessPermission.kt @@ -10,7 +10,7 @@ import android.os.Environment import android.provider.Settings import androidx.annotation.RequiresApi import androidx.core.app.ActivityCompat -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs.permission.Base.getPermissionsToRequest import org.autojs.autojs.ui.common.NotAskAgainDialog import org.autojs.autojs.ui.main.MainActivity diff --git a/app/src/main/java/org/autojs/autojs/permission/DisplayOverOtherAppsPermission.kt b/app/src/main/java/org/autojs/autojs/permission/DisplayOverOtherAppsPermission.kt index 689209f3..98bf62cb 100644 --- a/app/src/main/java/org/autojs/autojs/permission/DisplayOverOtherAppsPermission.kt +++ b/app/src/main/java/org/autojs/autojs/permission/DisplayOverOtherAppsPermission.kt @@ -4,7 +4,7 @@ import android.content.Context import android.os.Handler import android.os.Looper import ezy.assist.compat.SettingsCompat -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs.ui.common.NotAskAgainDialog import org.autojs.autojs.ui.main.drawer.PermissionItemHelper import org.autojs.autojs.util.IntentUtils diff --git a/app/src/main/java/org/autojs/autojs/permission/PostNotificationsPermission.kt b/app/src/main/java/org/autojs/autojs/permission/PostNotificationsPermission.kt index 804ce1e7..08a7069a 100644 --- a/app/src/main/java/org/autojs/autojs/permission/PostNotificationsPermission.kt +++ b/app/src/main/java/org/autojs/autojs/permission/PostNotificationsPermission.kt @@ -6,6 +6,7 @@ import androidx.fragment.app.FragmentActivity import org.autojs.autojs.core.pref.Pref import org.autojs.autojs.runtime.api.Permissions import org.autojs.autojs.ui.main.drawer.PermissionItemHelper +import org.autojs.autojs.util.ContextUtils.findActivity import org.autojs.autojs.util.NotificationUtils import org.autojs.autojs6.R @@ -24,8 +25,8 @@ class PostNotificationsPermission(override val context: Context) : PermissionIte override fun urge() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - when (val ctx = context) { - is FragmentActivity -> Permissions.getRequestMultiplePermissionsLauncher(ctx).let { + when (val activity = context.findActivity()) { + is FragmentActivity -> Permissions.getRequestMultiplePermissionsLauncher(activity).let { NotificationUtils.requestPermission(it) } } diff --git a/app/src/main/java/org/autojs/autojs/extension/FlexibleArray.kt b/app/src/main/java/org/autojs/autojs/rhino/ArgumentGuards.kt similarity index 83% rename from app/src/main/java/org/autojs/autojs/extension/FlexibleArray.kt rename to app/src/main/java/org/autojs/autojs/rhino/ArgumentGuards.kt index 3c7ae378..8c18796f 100644 --- a/app/src/main/java/org/autojs/autojs/extension/FlexibleArray.kt +++ b/app/src/main/java/org/autojs/autojs/rhino/ArgumentGuards.kt @@ -1,13 +1,10 @@ -package org.autojs.autojs.extension +package org.autojs.autojs.rhino import org.autojs.autojs.app.GlobalAppContext import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException import org.autojs.autojs.util.RhinoUtils -import org.autojs.autojs.util.RhinoUtils.UNDEFINED -import org.autojs.autojs6.R.plurals as R_plurals -import org.autojs.autojs6.R.string as R_string -open class FlexibleArray { +open class ArgumentGuards { companion object { @@ -16,12 +13,12 @@ open class FlexibleArray { fun ensureArgumentsNotEmpty(args: Array, function: (arrayArgs: Array) -> R): R { if (args.isNotEmpty()) return unwrapAndInvokeAll(args, function) - throw WrappedIllegalArgumentException(context.getString(R_string.error_arguments_cannot_be_empty)) + throw WrappedIllegalArgumentException(context.getString(org.autojs.autojs6.R.string.error_arguments_cannot_be_empty)) } fun ensureArgumentsIsEmpty(args: Array, function: () -> R): R { if (args.isEmpty()) return function.invoke() - throw WrappedIllegalArgumentException(context.getString(R_string.error_arguments_must_be_empty)) + throw WrappedIllegalArgumentException(context.getString(org.autojs.autojs6.R.string.error_arguments_must_be_empty)) } fun ensureArgumentsOnlyOne(args: Array, function: (singleArg: Any?) -> R): R { @@ -30,8 +27,8 @@ open class FlexibleArray { fun ensureArgumentsOnlyOne(args: Array, preventUnwrapped: Boolean, function: (singleArg: Any?) -> R): R { return when { - args.isEmpty() -> throw WrappedIllegalArgumentException(context.getString(R_string.error_arguments_cannot_be_empty)) - args.size > 1 -> throw WrappedIllegalArgumentException(resources.getQuantityString(R_plurals.error_method_only_accepts_n_arguments, 1, 1)) + args.isEmpty() -> throw WrappedIllegalArgumentException(context.getString(org.autojs.autojs6.R.string.error_arguments_cannot_be_empty)) + args.size > 1 -> throw WrappedIllegalArgumentException(resources.getQuantityString(org.autojs.autojs6.R.plurals.error_method_only_accepts_n_arguments, 1, 1)) preventUnwrapped -> invokeFirst(args, function) else -> unwrapAndInvokeFirst(args, function) } @@ -39,23 +36,23 @@ open class FlexibleArray { fun ensureArgumentsAtLeast(args: Array, n: Int, function: (arrayArgs: Array) -> R): R { if (args.size >= n) return unwrapAndInvokeAll(args, function) - throw WrappedIllegalArgumentException(resources.getQuantityString(R_plurals.error_method_only_accepts_no_less_than_n_arguments, n, n)) + throw WrappedIllegalArgumentException(resources.getQuantityString(org.autojs.autojs6.R.plurals.error_method_only_accepts_no_less_than_n_arguments, n, n)) } fun ensureArgumentsAtMost(args: Array, n: Int, function: (arrayArgs: Array) -> R): R { if (args.size <= n) return unwrapAndInvokeAll(args, function) - throw WrappedIllegalArgumentException(resources.getQuantityString(R_plurals.error_method_only_accepts_no_more_than_n_arguments, n, n)) + throw WrappedIllegalArgumentException(resources.getQuantityString(org.autojs.autojs6.R.plurals.error_method_only_accepts_no_more_than_n_arguments, n, n)) } fun ensureArgumentsLength(args: Array, n: Int, function: (arrayArgs: Array) -> R): R { if (args.size == n) return unwrapAndInvokeAll(args, function) - throw WrappedIllegalArgumentException(resources.getQuantityString(R_plurals.error_method_only_accepts_n_arguments, n, n)) + throw WrappedIllegalArgumentException(resources.getQuantityString(org.autojs.autojs6.R.plurals.error_method_only_accepts_n_arguments, n, n)) } fun ensureArgumentsLengthInRange(args: Array, range: IntRange, function: (arrayArgs: Array) -> R): R { if (args.size in range) return unwrapAndInvokeAll(args, function) val (min, max) = range.run { first to last } - throw WrappedIllegalArgumentException(context.getString(R_string.error_method_only_accepts_a_number_of_arguments_in_the_range_n_to_m, min, max)) + throw WrappedIllegalArgumentException(context.getString(org.autojs.autojs6.R.string.error_method_only_accepts_a_number_of_arguments_in_the_range_n_to_m, min, max)) } fun unwrap(o: Any?): Any? = RhinoUtils.unwrap(o) @@ -65,7 +62,7 @@ open class FlexibleArray { } private fun invokeFirst(args: Array, function: (arg: Any?) -> R): R { - return args[0].let { o -> function.invoke(if (o is Unit) UNDEFINED else o) } + return args[0].let { o -> function.invoke(if (o is Unit) RhinoUtils.UNDEFINED else o) } } private fun unwrapAndInvokeFirst(args: Array, function: (arg: Any?) -> R): R { diff --git a/app/src/main/java/org/autojs/autojs/rhino/ProxyObject.kt b/app/src/main/java/org/autojs/autojs/rhino/ProxyObject.kt index 361bfb41..fec2bfd8 100644 --- a/app/src/main/java/org/autojs/autojs/rhino/ProxyObject.kt +++ b/app/src/main/java/org/autojs/autojs/rhino/ProxyObject.kt @@ -1,6 +1,6 @@ package org.autojs.autojs.rhino -import org.autojs.autojs.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp import org.autojs.autojs.util.RhinoUtils.NOT_CONSTRUCTABLE import org.autojs.autojs.util.RhinoUtils.callFunction import org.autojs.autojs.util.RhinoUtils.newBaseFunction diff --git a/app/src/main/java/org/autojs/autojs/extension/AnyExtensions.kt b/app/src/main/java/org/autojs/autojs/rhino/extension/AnyExtensions.kt similarity index 79% rename from app/src/main/java/org/autojs/autojs/extension/AnyExtensions.kt rename to app/src/main/java/org/autojs/autojs/rhino/extension/AnyExtensions.kt index b764594c..a2c6d1ff 100644 --- a/app/src/main/java/org/autojs/autojs/extension/AnyExtensions.kt +++ b/app/src/main/java/org/autojs/autojs/rhino/extension/AnyExtensions.kt @@ -1,7 +1,9 @@ -package org.autojs.autojs.extension +package org.autojs.autojs.rhino.extension -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ArrayExtensions.toNativeObject +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.ArrayExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.MapExtensions.toNativeObject import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.global.IsNullish import org.autojs.autojs.runtime.api.augment.global.Species @@ -15,7 +17,7 @@ import org.mozilla.javascript.ConsString import org.mozilla.javascript.Context import org.mozilla.javascript.NativeError import org.mozilla.javascript.Scriptable -import org.mozilla.javascript.UniqueTag.NOT_FOUND +import org.mozilla.javascript.UniqueTag import org.mozilla.javascript.Wrapper import java.math.BigInteger @@ -102,27 +104,27 @@ object AnyExtensions { fun Any?.isJsNullish() = IsNullish.invoke(this) - fun Any?.isJsArray() = this != NOT_FOUND && this is Scriptable && "Array" == this.className + fun Any?.isJsArray() = this != UniqueTag.NOT_FOUND && this is Scriptable && "Array" == this.className - fun Any?.isJsBoolean() = this != NOT_FOUND && js_typeof(this) == "boolean" + fun Any?.isJsBoolean() = this != UniqueTag.NOT_FOUND && js_typeof(this) == "boolean" - fun Any?.isJsNumber() = this != NOT_FOUND && js_typeof(this) == "number" + fun Any?.isJsNumber() = this != UniqueTag.NOT_FOUND && js_typeof(this) == "number" - fun Any?.isJsString() = this != NOT_FOUND && js_typeof(this) == "string" + fun Any?.isJsString() = this != UniqueTag.NOT_FOUND && js_typeof(this) == "string" - fun Any?.isJsSymbol() = this != NOT_FOUND && js_typeof(this) == "symbol" + fun Any?.isJsSymbol() = this != UniqueTag.NOT_FOUND && js_typeof(this) == "symbol" - fun Any?.isJsUndefined() = this == NOT_FOUND || js_typeof(this) == "undefined" + fun Any?.isJsUndefined() = this == UniqueTag.NOT_FOUND || js_typeof(this) == "undefined" - fun Any?.isJsObject() = this != NOT_FOUND && js_typeof(this) == "object" && this != null + fun Any?.isJsObject() = this != UniqueTag.NOT_FOUND && js_typeof(this) == "object" && this != null fun Any?.isJsNonNullObject() = this != null && this.isJsObject() - fun Any?.isJsBigInt() = this != NOT_FOUND && js_typeof(this) == "bigint" + fun Any?.isJsBigInt() = this != UniqueTag.NOT_FOUND && js_typeof(this) == "bigint" - fun Any?.isJsFunction() = this != NOT_FOUND && js_typeof(this) == "function" + fun Any?.isJsFunction() = this != UniqueTag.NOT_FOUND && js_typeof(this) == "function" - fun Any?.isJsXml() = this != NOT_FOUND && js_typeof(this) == "xml" + fun Any?.isJsXml() = this != UniqueTag.NOT_FOUND && js_typeof(this) == "xml" fun Any?.isJsRegExp() = this.isJsObject() && Species.isRegExpRhino(this) @@ -139,4 +141,4 @@ object AnyExtensions { return scriptRuntime.files.nonNullPath(coerceString(this, ".")) } -} +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/rhino/extension/ArrayExtensions.kt b/app/src/main/java/org/autojs/autojs/rhino/extension/ArrayExtensions.kt new file mode 100644 index 00000000..9fa98a23 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/rhino/extension/ArrayExtensions.kt @@ -0,0 +1,22 @@ +package org.autojs.autojs.rhino.extension + +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.util.RhinoUtils.withRhinoContext +import org.mozilla.javascript.Context +import org.mozilla.javascript.NativeArray + +object ArrayExtensions { + + fun Array<*>.toNativeArray(): NativeArray { + return withRhinoContext { cx -> + val standardObjects = cx.initStandardObjects() + cx.newArray(standardObjects, this.toList().map { Context.javaToJS(it, standardObjects) }.toTypedArray()) as NativeArray + } + } + + fun Array.jsArrayBrief(separator: String = ", ", appendPaddingSpace: Boolean = true) = when (appendPaddingSpace) { + true -> "[ ${this.joinToString(separator) { it.jsBrief() }} ]" + else -> "[${this.joinToString(separator) { it.jsBrief() }}]" + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/rhino/extension/IterableExtensions.kt b/app/src/main/java/org/autojs/autojs/rhino/extension/IterableExtensions.kt new file mode 100644 index 00000000..defc6a62 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/rhino/extension/IterableExtensions.kt @@ -0,0 +1,46 @@ +package org.autojs.autojs.rhino.extension + +import org.autojs.autojs.util.RhinoUtils +import org.mozilla.javascript.Context +import org.mozilla.javascript.NativeArray + +object IterableExtensions { + + fun Iterable<*>.toNativeArray(): NativeArray { + return RhinoUtils.withRhinoContext { cx -> + val standardObjects = cx.initStandardObjects() + cx.newArray(standardObjects, this.map { Context.javaToJS(it, standardObjects) }.toTypedArray()) as NativeArray + } + } + + // @Hint by JetBrains AI Assistant on Oct 25, 2024. + // ! 31 is a prime number that acts as a mixer for hash code calculation. + // ! Multiplying by the prime number 31 helps to evenly distribute the hash values + // ! across different properties and reduce collisions. + // ! zh-CN (translated by Jetbrains AI Assistant on Oct 25, 2024): + // ! 31 是一个质数, 它的作用类似于混合器, 用于哈希码的计算. + // ! 乘以质数 31 可以帮助在不同属性值上更均匀地分散哈希值, 减少碰撞. + fun Iterable.toHashCode(initial: Int = 0): Int = fold(initial) { acc, o -> + 31 * acc + when (o) { + null -> 0 + is Int -> o + is Long -> o.hashCode() + is Float -> o.hashCode() + is Double -> o.hashCode() + is Byte -> o.hashCode() + is Short -> o.hashCode() + is CharSequence -> o.hashCode() + is Array<*> -> o.contentHashCode() + is ByteArray -> o.contentHashCode() + is CharArray -> o.contentHashCode() + is ShortArray -> o.contentHashCode() + is IntArray -> o.contentHashCode() + is LongArray -> o.contentHashCode() + is FloatArray -> o.contentHashCode() + is DoubleArray -> o.contentHashCode() + is BooleanArray -> o.contentHashCode() + else -> o.hashCode() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/rhino/extension/MapExtensions.kt b/app/src/main/java/org/autojs/autojs/rhino/extension/MapExtensions.kt new file mode 100644 index 00000000..a8fa3b41 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/rhino/extension/MapExtensions.kt @@ -0,0 +1,34 @@ +package org.autojs.autojs.rhino.extension + +import org.autojs.autojs.rhino.extension.ArrayExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.util.RhinoUtils.UNDEFINED +import org.autojs.autojs.util.RhinoUtils.newNativeObject +import org.mozilla.javascript.Context +import org.mozilla.javascript.NativeObject +import org.mozilla.javascript.Wrapper + +object MapExtensions { + + fun Map.toNativeObject(): NativeObject = newNativeObject().also { o -> + forEach { entry: Map.Entry -> + val key = Context.toString(entry.key) + when (val value = entry.value) { + is String -> o.put(key, o, value) + is Number -> o.put(key, o, Context.toNumber(value)) + is Boolean -> o.put(key, o, Context.toBoolean(value)) + is Wrapper -> o.put(key, o, value.unwrap()) + is Unit -> o.put(key, o, UNDEFINED) + is List<*> -> o.put(key, o, value.toNativeArray()) + is Array<*> -> o.put(key, o, value.toNativeArray()) + is Map<*, *> -> o.put(key, o, value.toNativeObject()) + is Pair<*, *> -> o.put(key, o, newNativeObject().also { newObj -> + newObj.put(Context.toString(value.first), o, value.second) + }) + else -> o.put(key, o, Context.javaToJS(value, o)) + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/rhino/extension/NativeArrayExtensions.kt b/app/src/main/java/org/autojs/autojs/rhino/extension/NativeArrayExtensions.kt new file mode 100644 index 00000000..07085640 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/rhino/extension/NativeArrayExtensions.kt @@ -0,0 +1,25 @@ +package org.autojs.autojs.rhino.extension + +import org.mozilla.javascript.NativeArray + +object NativeArrayExtensions { + + @JvmStatic + fun NativeArray.jsBytesToByteArray(): ByteArray { + val size = this.size + val bytes = ByteArray(size) + for (i in 0 until size) { + val number = this[i] + if (number is Number) { + bytes[i] = number.toByte() + } + } + return bytes + } + + @JvmStatic + fun NativeArray.jsBytesToString(): String { + return String(this.jsBytesToByteArray()) + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/extension/NumberExtensions.kt b/app/src/main/java/org/autojs/autojs/rhino/extension/NumberExtensions.kt similarity index 52% rename from app/src/main/java/org/autojs/autojs/extension/NumberExtensions.kt rename to app/src/main/java/org/autojs/autojs/rhino/extension/NumberExtensions.kt index 3bb45b64..8d54b276 100644 --- a/app/src/main/java/org/autojs/autojs/extension/NumberExtensions.kt +++ b/app/src/main/java/org/autojs/autojs/rhino/extension/NumberExtensions.kt @@ -1,6 +1,4 @@ -package org.autojs.autojs.extension - -import java.math.RoundingMode +package org.autojs.autojs.rhino.extension object NumberExtensions { @@ -17,13 +15,4 @@ object NumberExtensions { else -> this.toString() } - @JvmStatic - @JvmOverloads - fun Double.roundToString(scale: Int, stripTrailingZeros: Boolean = true): String { - return toBigDecimal() - .setScale(scale, RoundingMode.HALF_UP) - .let { if (stripTrailingZeros) it.stripTrailingZeros() else it } - .toPlainString() - } - -} +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/extension/ScriptableExtensions.kt b/app/src/main/java/org/autojs/autojs/rhino/extension/ScriptableExtensions.kt similarity index 86% rename from app/src/main/java/org/autojs/autojs/extension/ScriptableExtensions.kt rename to app/src/main/java/org/autojs/autojs/rhino/extension/ScriptableExtensions.kt index 728f2cdf..3eb35212 100644 --- a/app/src/main/java/org/autojs/autojs/extension/ScriptableExtensions.kt +++ b/app/src/main/java/org/autojs/autojs/rhino/extension/ScriptableExtensions.kt @@ -1,6 +1,6 @@ -package org.autojs.autojs.extension +package org.autojs.autojs.rhino.extension -import org.autojs.autojs.util.RhinoUtils.undefined +import org.autojs.autojs.util.RhinoUtils import org.mozilla.javascript.Scriptable import org.mozilla.javascript.ScriptableObject import org.mozilla.javascript.Wrapper @@ -16,7 +16,7 @@ object ScriptableExtensions { * Searches the prototype chain for a property named `key`. * * @param key A property name - * @return The value of a property with name `key` found in this object or any object in its prototype chain, or [Scriptable.NOT_FOUND] if not found + * @return The value of a property with name `key` found in this object or any object in its prototype chain, or [org.mozilla.javascript.Scriptable.NOT_FOUND] if not found */ fun Scriptable.getProp(key: String): Any? = ScriptableObject.getProperty(this, key).let { if (it is Wrapper) it.unwrap() else it @@ -53,7 +53,7 @@ object ScriptableExtensions { * @param value The initial value of the property * @param attributes The attributes of the JavaScript property */ - fun Scriptable.defineProp(key: String, value: Any?, attributes: Int = ScriptableObject.EMPTY) = undefined { ScriptableObject.defineProperty(this, key, value, attributes) } + fun Scriptable.defineProp(key: String, value: Any?, attributes: Int = ScriptableObject.EMPTY) = RhinoUtils.undefined { ScriptableObject.defineProperty(this, key, value, attributes) } /** * Puts a named property in this object or in an object in its prototype chain. @@ -66,7 +66,7 @@ object ScriptableExtensions { * @param key A property key * @param value Any JavaScript value accepted by [Scriptable.put] */ - fun Scriptable.putProp(key: String, value: Any?) = undefined { ScriptableObject.putProperty(this, key, value) } + fun Scriptable.putProp(key: String, value: Any?) = RhinoUtils.undefined { ScriptableObject.putProperty(this, key, value) } /** * Removes the property from this object or its prototype chain. @@ -79,4 +79,4 @@ object ScriptableExtensions { */ fun Scriptable.deleteProp(key: String): Boolean = ScriptableObject.deleteProperty(this, key) -} +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/extension/ScriptableObjectExtensions.kt b/app/src/main/java/org/autojs/autojs/rhino/extension/ScriptableObjectExtensions.kt similarity index 78% rename from app/src/main/java/org/autojs/autojs/extension/ScriptableObjectExtensions.kt rename to app/src/main/java/org/autojs/autojs/rhino/extension/ScriptableObjectExtensions.kt index 44388f55..44584e9b 100644 --- a/app/src/main/java/org/autojs/autojs/extension/ScriptableObjectExtensions.kt +++ b/app/src/main/java/org/autojs/autojs/rhino/extension/ScriptableObjectExtensions.kt @@ -1,9 +1,9 @@ -package org.autojs.autojs.extension +package org.autojs.autojs.rhino.extension -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.util.StringUtils.str -import org.autojs.autojs6.R.string as R_string +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.util.StringUtils +import org.autojs.autojs6.R import org.mozilla.javascript.ScriptableObject /** @@ -13,13 +13,13 @@ object ScriptableObjectExtensions { fun ScriptableObject.acquire(name: String): Any { val propValue = this.prop(name) - require(!propValue.isJsNullish()) { str(R_string.error_required_property_is_nullish_or_does_not_exist, name) } + require(!propValue.isJsNullish()) { StringUtils.str(R.string.error_required_property_is_nullish_or_does_not_exist, name) } return propValue!! } fun ScriptableObject.acquire(name: String, transformer: (o: Any) -> R): R { val result = transformer(acquire(name)) - require(!result.isJsNullish()) { str(R_string.error_the_transformer_for_required_property_cannot_return_nullish, name) } + require(!result.isJsNullish()) { StringUtils.str(org.autojs.autojs6.R.string.error_the_transformer_for_required_property_cannot_return_nullish, name) } return result!! } @@ -65,4 +65,4 @@ object ScriptableObjectExtensions { return defaultValue } -} +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/runtime/ConsoleTimeTable.kt b/app/src/main/java/org/autojs/autojs/runtime/ConsoleTimeTable.kt index f55c7571..933b9f1c 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/ConsoleTimeTable.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/ConsoleTimeTable.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime import android.os.SystemClock -import org.autojs.autojs.extension.NumberExtensions.jsString +import org.autojs.autojs.rhino.extension.NumberExtensions.jsString import org.autojs.autojs.runtime.api.augment.console.Console import java.util.concurrent.ConcurrentHashMap diff --git a/app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt b/app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt index ecc027a3..578fe84b 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt @@ -19,9 +19,9 @@ import org.autojs.autojs.core.image.capture.ScreenCaptureRequester import org.autojs.autojs.core.looper.Loopers import org.autojs.autojs.core.pref.Pref import org.autojs.autojs.engine.ScriptEngineService -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.deleteProp -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.deleteProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.lang.ThreadCompat import org.autojs.autojs.pio.PFiles import org.autojs.autojs.pio.UncheckedIOException diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/Engines.kt b/app/src/main/java/org/autojs/autojs/runtime/api/Engines.kt index 1896a8b2..ad5094cd 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/Engines.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/Engines.kt @@ -5,7 +5,7 @@ import org.autojs.autojs.engine.JavaScriptEngine import org.autojs.autojs.engine.ScriptEngine import org.autojs.autojs.execution.ExecutionConfig import org.autojs.autojs.execution.ScriptExecution -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.script.AutoFileSource import org.autojs.autojs.script.JavaScriptFileSource diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/Images.java b/app/src/main/java/org/autojs/autojs/runtime/api/Images.java index bcba9d79..74498c96 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/Images.java +++ b/app/src/main/java/org/autojs/autojs/runtime/api/Images.java @@ -34,7 +34,7 @@ import org.autojs.autojs.core.opencv.OpenCVHelper; import org.autojs.autojs.core.pref.Language; import org.autojs.autojs.core.pref.Pref; import org.autojs.autojs.core.ui.inflater.util.Drawables; -import org.autojs.autojs.extension.AnyExtensions; +import org.autojs.autojs.rhino.extension.AnyExtensions; import org.autojs.autojs.pio.UncheckedIOException; import org.autojs.autojs.runtime.ScriptRuntime; import org.autojs.autojs.runtime.api.ImageFeatureMatching.FeatureMatchingDescriptor; diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/Recorder.kt b/app/src/main/java/org/autojs/autojs/runtime/api/Recorder.kt index 0da25e1a..1ffc0dcd 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/Recorder.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/Recorder.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime.api -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.util.RhinoUtils.callFunction import org.autojs.autojs.util.RhinoUtils.coerceLongNumber diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/SQLite.kt b/app/src/main/java/org/autojs/autojs/runtime/api/SQLite.kt index bbe06c61..7e0f2340 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/SQLite.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/SQLite.kt @@ -5,11 +5,11 @@ import android.content.Context import android.database.Cursor import org.autojs.autojs.annotation.ScriptInterface import org.autojs.autojs.core.database.Database -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.jsUnwrapped -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ArrayExtensions.toNativeObject +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsUnwrapped +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.MapExtensions.toNativeObject import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.util.RhinoUtils.coerceBoolean import org.autojs.autojs.util.RhinoUtils.coerceString diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/UI.kt b/app/src/main/java/org/autojs/autojs/runtime/api/UI.kt index 9be778f7..08ba6720 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/UI.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/UI.kt @@ -6,7 +6,7 @@ import android.view.View import org.autojs.autojs.core.ui.inflater.DynamicLayoutInflater import org.autojs.autojs.core.ui.inflater.ResourceParser import org.autojs.autojs.core.ui.inflater.util.Drawables -import org.autojs.autojs.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief import org.autojs.autojs.rhino.ProxyObject import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.util.RhinoUtils.newNativeObject diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/Util.kt b/app/src/main/java/org/autojs/autojs/runtime/api/Util.kt index 34b8267d..74c31b66 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/Util.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/Util.kt @@ -1,6 +1,6 @@ package org.autojs.autojs.runtime.api -import org.autojs.autojs.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief object Util { diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/Augmentable.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/Augmentable.kt index 111b4dc9..989c53b6 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/Augmentable.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/Augmentable.kt @@ -2,12 +2,12 @@ package org.autojs.autojs.runtime.api.augment import android.content.Context import org.autojs.autojs.app.GlobalAppContext -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.rhino.ProxyObject import org.autojs.autojs.rhino.ProxyObject.Companion.AUGMENTED_CUSTOM_TO_STRING_KEY import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_GETTER_KEY @@ -59,7 +59,7 @@ import org.mozilla.javascript.ScriptRuntime as RhinoScriptRuntime * * Created by SuperMonster003 on May 21, 2024. */ -abstract class Augmentable(private val scriptRuntime: ScriptRuntime? = null) : FlexibleArray() { +abstract class Augmentable(private val scriptRuntime: ScriptRuntime? = null) : ArgumentGuards() { private var mIsOriginalKeyName = false @@ -549,7 +549,7 @@ abstract class Augmentable(private val scriptRuntime: ScriptRuntime? = null) : F }?.call(message) }.getOrNull() - companion object : FlexibleArray() { + companion object : ArgumentGuards() { // @Caution by SuperMonster003 on Oct 5, 2025. // ! These constants are "bit flags", each value is a power of 2, with only one bit being 1 in binary. diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/AugmentableProxy.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/AugmentableProxy.kt index 7633ad75..37ef74f5 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/AugmentableProxy.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/AugmentableProxy.kt @@ -1,9 +1,9 @@ package org.autojs.autojs.runtime.api.augment -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.rhino.ProxyObject import org.autojs.autojs.rhino.ProxyObject.Companion.AUGMENTED_OBJECT_KEY import org.autojs.autojs.runtime.ScriptRuntime diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/app/App.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/app/App.kt index ba870039..5e3f1b07 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/app/App.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/app/App.kt @@ -12,15 +12,15 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.deleteProp -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.deleteProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.external.receiver.BaseBroadcastReceiver import org.autojs.autojs.ipc.LayoutInspectEventBus import org.autojs.autojs.runtime.ScriptRuntime @@ -104,7 +104,7 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { ::killDual.name to AS_GLOBAL, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { private const val PROTOCOL_FILE = "file://" diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/autojs/Autojs.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/autojs/Autojs.kt index e47814d4..f4053391 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/autojs/Autojs.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/autojs/Autojs.kt @@ -5,14 +5,14 @@ import android.content.pm.PackageManager import android.provider.Settings import android.provider.Settings.System import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.rhino.ProxyObject import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_GETTER_KEY import org.autojs.autojs.runtime.ScriptRuntime @@ -105,7 +105,7 @@ class Autojs(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRunti }) } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoRuntimeFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/autojs/Version.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/autojs/Version.kt index 60eb84e7..00e45357 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/autojs/Version.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/autojs/Version.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime.api.augment.autojs import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.util.RhinoUtils.coerceBoolean import org.autojs.autojs.util.RhinoUtils.coerceString diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Auto.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Auto.kt index d4046489..4f0c895d 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Auto.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Auto.kt @@ -9,12 +9,13 @@ import org.autojs.autojs.core.accessibility.AccessibilityTool import org.autojs.autojs.core.accessibility.SimpleActionAutomator.Companion.AccessibilityEventCallback import org.autojs.autojs.core.automator.AccessibilityEventWrapper import org.autojs.autojs.core.automator.UiObject -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.extension.ArrayExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable @@ -111,7 +112,7 @@ class Auto(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime return@ensureArgumentsAtMost UNDEFINED } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { val accessibilityTool by lazy { AccessibilityTool(globalContext) } diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Automator.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Automator.kt index 6f2c0622..bb64a86a 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Automator.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Automator.kt @@ -11,13 +11,13 @@ import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.automator.UiObject import org.autojs.autojs.core.automator.action.ActionTarget import org.autojs.autojs.core.image.ImageWrapper -import org.autojs.autojs.extension.AnyExtensions.isJsArray -import org.autojs.autojs.extension.AnyExtensions.isJsFunction -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsNumber -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsArray +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsFunction +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNumber +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.ScriptException @@ -76,7 +76,7 @@ class Automator(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { ::splitScreen.name to AS_GLOBAL, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { /** * TypeScript Declarations: diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/RootAutomatorNativeObject.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/RootAutomatorNativeObject.kt index e582adbd..e30c61e1 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/RootAutomatorNativeObject.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/RootAutomatorNativeObject.kt @@ -1,6 +1,6 @@ package org.autojs.autojs.runtime.api.augment.automator -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.util.RhinoUtils import org.autojs.autojs.util.RhinoUtils.withRhinoContext diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/barcode/Barcode.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/barcode/Barcode.kt index c91613ae..3878b09f 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/barcode/Barcode.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/barcode/Barcode.kt @@ -2,10 +2,10 @@ package org.autojs.autojs.runtime.api.augment.barcode import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.image.ImageWrapper -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.WrappedBarcode import org.autojs.autojs.runtime.api.augment.Augmentable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/barcode/QrCode.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/barcode/QrCode.kt index f9b4d475..15c1a54c 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/barcode/QrCode.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/barcode/QrCode.kt @@ -2,7 +2,7 @@ package org.autojs.autojs.runtime.api.augment.barcode import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.image.ImageWrapper -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.WrappedBarcode import org.autojs.autojs.runtime.api.augment.Augmentable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/base64/Base64.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/base64/Base64.kt index 692f8402..15bdad91 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/base64/Base64.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/base64/Base64.kt @@ -2,7 +2,8 @@ package org.autojs.autojs.runtime.api.augment.base64 import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.NativeArrayExtensions.jsBytesToByteArray import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException import org.autojs.autojs.util.ArrayUtils @@ -62,7 +63,7 @@ object Base64 : Augmentable() { o.isJsNullish() -> throw WrappedIllegalArgumentException("Cannot convert o ($o) to byte[]") o is String -> o.toByteArray(encoding) o is ByteArray -> o - o is NativeArray -> ArrayUtils.jsBytesToByteArray(o) + o is NativeArray -> o.jsBytesToByteArray() else -> toBytes(o.toString()) } diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/canvas/Canvas.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/canvas/Canvas.kt index bfde9c76..b03dc167 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/canvas/Canvas.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/canvas/Canvas.kt @@ -3,9 +3,9 @@ package org.autojs.autojs.runtime.api.augment.canvas import android.graphics.Bitmap import org.autojs.autojs.core.graphics.ScriptCanvas import org.autojs.autojs.core.image.ImageWrapper -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Constructable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/colors/ColorNativeObject.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/colors/ColorNativeObject.kt index 5e39179f..f237caca 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/colors/ColorNativeObject.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/colors/ColorNativeObject.kt @@ -3,13 +3,13 @@ package org.autojs.autojs.runtime.api.augment.colors import android.graphics.Color.BLACK import org.autojs.autojs.annotation.RhinoFunctionObjectBody import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.ArrayExtensions.unshiftWith -import org.autojs.autojs.extension.FlexibleArray.Companion.ensureArgumentsIsEmpty -import org.autojs.autojs.extension.FlexibleArray.Companion.ensureArgumentsOnlyOne +import org.autojs.autojs.rhino.ArgumentGuards.Companion.ensureArgumentsIsEmpty +import org.autojs.autojs.rhino.ArgumentGuards.Companion.ensureArgumentsOnlyOne import org.autojs.autojs.runtime.api.StringReadable import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.colors.Colors.parseRelativePercentage import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException +import org.autojs.autojs.util.ArrayUtils.unshiftWith import org.autojs.autojs.util.RhinoUtils import org.autojs.autojs.util.RhinoUtils.NOT_CONSTRUCTABLE import org.autojs.autojs.util.RhinoUtils.newBaseFunction diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/colors/Colors.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/colors/Colors.kt index c3830a8d..b226fa5e 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/colors/Colors.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/colors/Colors.kt @@ -12,16 +12,16 @@ import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface import org.autojs.autojs.core.image.ColorDetector import org.autojs.autojs.core.image.ColorTable -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.jsSpecies -import org.autojs.autojs.extension.ArrayExtensions.jsArrayBrief -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ArrayExtensions.toNativeObject -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsSpecies +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.extension.ArrayExtensions.jsArrayBrief +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.MapExtensions.toNativeObject +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.SimpleGetterProxy import org.autojs.autojs.runtime.api.augment.jsox.Numberx diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/console/Console.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/console/Console.kt index bb5542ec..119d57ca 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/console/Console.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/console/Console.kt @@ -7,14 +7,14 @@ import org.apache.log4j.LogManager import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.console.ConsoleImpl import org.autojs.autojs.core.console.ConsoleImpl.Companion.DEFAULT_EXIT_ON_CLOSE_TIMEOUT -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.ScriptableExtensions.hasProp -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.extension.ScriptableExtensions.hasProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.rhino.ProxyObject import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.AugmentableProxy @@ -155,7 +155,7 @@ class Console(scriptRuntime: ScriptRuntime) : AugmentableProxy(scriptRuntime) { }.prop(NativeError.STACK_TAG) } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { private const val FUNC_NAME_TRACE = "trace" diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/continuation/Continuation.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/continuation/Continuation.kt index 3b8e607f..856a9cad 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/continuation/Continuation.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/continuation/Continuation.kt @@ -2,7 +2,7 @@ package org.autojs.autojs.runtime.api.augment.continuation import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.FlexibleArray +import org.autojs.autojs.rhino.ArgumentGuards import org.autojs.autojs.project.ScriptConfig.Companion.FEATURE_CONTINUATION import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable @@ -28,7 +28,7 @@ class Continuation(private val scriptRuntime: ScriptRuntime) : Augmentable(scrip // ::delay.name, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic fun isEnabled(scriptRuntime: ScriptRuntime) = scriptRuntime.engines.myEngine().hasFeature(FEATURE_CONTINUATION) diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/continuation/Creator.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/continuation/Creator.kt index cefc013d..61ce6266 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/continuation/Creator.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/continuation/Creator.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime.api.augment.continuation -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief import org.autojs.autojs.rhino.continuation.Continuation import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.util.RhinoUtils.UNDEFINED diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/converter/Bytes.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/converter/Bytes.kt index a96ccdcb..98c97a56 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/converter/Bytes.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/converter/Bytes.kt @@ -3,13 +3,13 @@ package org.autojs.autojs.runtime.api.augment.converter import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsBoolean -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsNumber -import org.autojs.autojs.extension.AnyExtensions.isJsObject -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsBoolean +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNumber +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsObject +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable import org.autojs.autojs.runtime.api.augment.converter.core.Bytes.AUTO diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/converter/core/Bytes.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/converter/core/Bytes.kt index 333f726f..976f6613 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/converter/core/Bytes.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/converter/core/Bytes.kt @@ -2,9 +2,9 @@ package org.autojs.autojs.runtime.api.augment.converter.core -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsNumber -import org.autojs.autojs.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNumber +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief import org.autojs.autojs.util.RhinoUtils.MAX_SAFE_INT_IEEE754_BD import org.autojs.autojs.util.RhinoUtils.MIN_SAFE_INT_IEEE754_BD import org.autojs.autojs.util.RhinoUtils.coerceBoolean diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/device/Device.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/device/Device.kt index 4d3b6454..e3df0b47 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/device/Device.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/device/Device.kt @@ -4,11 +4,11 @@ import android.provider.Settings import androidx.core.net.toUri import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.ScreenMetrics import org.autojs.autojs.runtime.api.augment.Augmentable @@ -61,7 +61,7 @@ class Device(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { "density" to Supplier { ScreenMetrics.deviceScreenDensity }, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { const val KEY_POINTER_LOCATION = "pointer_location" diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/dialogs/Dialogs.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/dialogs/Dialogs.kt index b1cd2981..346bc7c5 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/dialogs/Dialogs.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/dialogs/Dialogs.kt @@ -13,19 +13,19 @@ import org.autojs.autojs.core.ui.dialog.JsDialog import org.autojs.autojs.core.ui.dialog.JsDialogBuilder import org.autojs.autojs.core.ui.nativeview.NativeView import org.autojs.autojs.event.BackCompat.TAG_KEY_INSTALLED -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.isJsXml -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.jsUnwrapped -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.FlexibleArray.Companion.component3 -import org.autojs.autojs.extension.FlexibleArray.Companion.component4 -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component4 +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsXml +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsUnwrapped +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.colors.Colors @@ -67,46 +67,30 @@ class Dialogs(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { companion object { - private const val CVT_DEFAULT = 0x0001 - private const val CVT_DEFAULT_STRICT_BOOLEAN = 0x0002 - private const val CVT_COLOR_INT = 0x0003 + private enum class PropertyConverter { + COLOR_INT, BOOLEAN, + } private val propertySetterMap = mapOf( - "title" to CVT_DEFAULT, - "titleColor" to CVT_COLOR_INT, - "buttonRippleColor" to CVT_COLOR_INT, - "icon" to CVT_DEFAULT, - "iconRes" to CVT_DEFAULT, - "content" to CVT_DEFAULT, - "contentColor" to CVT_COLOR_INT, - "contentColorRes" to CVT_DEFAULT, - "contentLineSpacing" to CVT_DEFAULT, - "items" to CVT_DEFAULT, - "itemsColor" to CVT_COLOR_INT, - "itemsColorRes" to CVT_DEFAULT, + "titleColor" to PropertyConverter.COLOR_INT, + "buttonRippleColor" to PropertyConverter.COLOR_INT, + "contentColor" to PropertyConverter.COLOR_INT, + "itemsColor" to PropertyConverter.COLOR_INT, "positive" to "positiveText", - "positiveColor" to CVT_COLOR_INT, - "positiveColorRes" to CVT_DEFAULT, + "positiveColor" to PropertyConverter.COLOR_INT, "neutral" to "neutralText", - "neutralColor" to CVT_COLOR_INT, - "neutralColorRes" to CVT_DEFAULT, + "neutralColor" to PropertyConverter.COLOR_INT, "negative" to "negativeText", - "negativeColor" to CVT_COLOR_INT, - "negativeColorRes" to CVT_DEFAULT, - "linkColor" to CVT_COLOR_INT, - "linkColorRes" to CVT_DEFAULT, + "negativeColor" to PropertyConverter.COLOR_INT, + "linkColor" to PropertyConverter.COLOR_INT, "bg" to "background", "background" to "backgroundColor", "bgColor" to "backgroundColor", - "backgroundColor" to CVT_COLOR_INT, + "backgroundColor" to PropertyConverter.COLOR_INT, "bgColorRes" to "backgroundColorRes", - "backgroundColorRes" to CVT_DEFAULT, - "cancelable" to CVT_DEFAULT, - "canceledOnTouchOutside" to CVT_DEFAULT, - "autoDismiss" to CVT_DEFAULT, - "limitIconToDefaultSize" to CVT_DEFAULT_STRICT_BOOLEAN, - "alwaysCallSingleChoiceCallback" to CVT_DEFAULT_STRICT_BOOLEAN, - "alwaysCallMultiChoiceCallback" to CVT_DEFAULT_STRICT_BOOLEAN, + "limitIconToDefaultSize" to PropertyConverter.BOOLEAN, + "alwaysCallSingleChoiceCallback" to PropertyConverter.BOOLEAN, + "alwaysCallMultiChoiceCallback" to PropertyConverter.BOOLEAN, ) private val presetLinkifyMasks = listOf("all", "emailAddresses", "mapAddresses", "phoneNumbers", "webUrls") @@ -114,23 +98,27 @@ class Dialogs(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { private val presetAnimations = listOf("default", "activity", "dialog", "inputMethod", "toast", "translucent") private val customJsPropertiesForBuild: Set = setOf( - "preset", + "animation", + "background", + "checkBoxChecked", + "checkBoxPrompt", + "customView", + "dimAmount", "inputHint", "inputPrefill", - "items", - "progress", - "checkBoxPrompt", - "checkBoxChecked", - "customView", - "stubborn", - "theme", + "inputSingleLine", + "itemsSelectedIndex", + "itemsSelectedIndices", + "itemsSelectMode", + "keepScreenOn", "linkify", "onBackKey", "onBackPressed", - "dimAmount", - "animation", - "keepScreenOn", - "inputSingleLine", + "preset", + "progress", + "stubborn", + "theme", + "wrapInScrollView", ) @JvmStatic @@ -480,16 +468,13 @@ class Dialogs(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { private fun applyDialogProperty(builder: JsDialogBuilder, name: String, value: Any?) { when (val propertySetter = propertySetterMap[name]) { - CVT_DEFAULT -> invokeJavaMethod(builder, name, arrayOf(value)) - CVT_DEFAULT_STRICT_BOOLEAN -> { - if (value == true) { - invokeJavaMethod(builder, name, emptyArray()) - } - } - CVT_COLOR_INT -> { + PropertyConverter.COLOR_INT -> { val colorInt = Colors.toIntRhino(value) invokeJavaMethod(builder, name, arrayOf(colorInt)) } + PropertyConverter.BOOLEAN if coerceBoolean(value, false) -> { + invokeJavaMethod(builder, name, emptyArray()) + } is String -> when (propertySetter) { in propertySetterMap -> { applyDialogProperty(builder, propertySetter, value) diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/engines/Engines.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/engines/Engines.kt index 97af4856..bc0ebfd3 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/engines/Engines.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/engines/Engines.kt @@ -5,12 +5,12 @@ import org.autojs.autojs.engine.JavaScriptEngine import org.autojs.autojs.engine.ScriptEngine import org.autojs.autojs.execution.ExecutionConfig import org.autojs.autojs.execution.ScriptExecution -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.toRuntimePath -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.toRuntimePath +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.AsEmitter import org.autojs.autojs.runtime.api.augment.Augmentable @@ -58,7 +58,7 @@ class Engines(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRunt } } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic fun emit(scriptRuntime: ScriptRuntime, eventName: String, vararg args: Any?) { diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/events/Events.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/events/Events.kt index 1a11de72..5faf25dc 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/events/Events.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/events/Events.kt @@ -3,12 +3,12 @@ package org.autojs.autojs.runtime.api.augment.events import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.eventloop.EventEmitter import org.autojs.autojs.core.looper.MainThreadProxy -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.jsSpecies -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.hasProp +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsSpecies +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.hasProp import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException @@ -31,7 +31,7 @@ class Events(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { ::__asEmitter__.name to (READONLY or DONTENUM or PERMANENT), ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @Suppress("FunctionName") diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/files/Files.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/files/Files.kt index b8ac4d01..0dc1228d 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/files/Files.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/files/Files.kt @@ -1,8 +1,8 @@ package org.autojs.autojs.runtime.api.augment.files import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.FlexibleArray +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.ArgumentGuards import org.autojs.autojs.pio.PFileInterface import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable @@ -22,7 +22,7 @@ class Files(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { ::toFile.name, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoRuntimeFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/floaty/Floaty.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/floaty/Floaty.kt index 39a878b9..b8d21260 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/floaty/Floaty.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/floaty/Floaty.kt @@ -5,11 +5,11 @@ import android.view.ViewGroup import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.floaty.BaseResizableFloatyWindow import org.autojs.autojs.core.ui.ViewExtras -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp import org.autojs.autojs.rhino.ProxyJavaObject import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_GETTER_KEY import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_OBJECT_KEY @@ -45,7 +45,7 @@ class Floaty(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { ::getClip.name, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoRuntimeFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/formatter/Bytes.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/formatter/Bytes.kt index 9bc9ab8e..e8967173 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/formatter/Bytes.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/formatter/Bytes.kt @@ -3,13 +3,13 @@ package org.autojs.autojs.runtime.api.augment.formatter import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsBoolean -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsNumber -import org.autojs.autojs.extension.AnyExtensions.isJsObject -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsBoolean +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNumber +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsObject +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable import org.autojs.autojs.runtime.api.augment.converter.core.Bytes.AUTO diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/global/Global.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/global/Global.kt index 12723aaa..aa4e36ba 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/global/Global.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/global/Global.kt @@ -5,12 +5,12 @@ import io.github.g00fy2.versioncompare.Version import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.automator.UiObject -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.NumberExtensions.jsString -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.NumberExtensions.jsString +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.ScreenMetrics import org.autojs.autojs.runtime.api.augment.Augmentable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/Http.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/Http.kt index 2ace1c60..31ae8e08 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/Http.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/Http.kt @@ -10,15 +10,15 @@ import okhttp3.Response import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.http.MutableOkHttp -import org.autojs.autojs.extension.AnyExtensions.isJsFunction -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.FlexibleArray.Companion.component3 -import org.autojs.autojs.extension.FlexibleArray.Companion.component4 -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsFunction +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component4 +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.Mime import org.autojs.autojs.runtime.api.augment.Augmentable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/HttpSaveResult.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/HttpSaveResult.kt index b0f788d7..aabcd146 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/HttpSaveResult.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/HttpSaveResult.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime.api.augment.http import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.FlexibleArray.Companion.ensureArgumentsIsEmpty +import org.autojs.autojs.rhino.ArgumentGuards.Companion.ensureArgumentsIsEmpty import org.autojs.autojs.runtime.api.StringReadable import org.autojs.autojs.runtime.api.augment.converter.core.Bytes import org.autojs.autojs.util.RhinoUtils diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/RequestBuilder.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/RequestBuilder.kt index 8a9fe87d..2ec473bb 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/RequestBuilder.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/RequestBuilder.kt @@ -4,10 +4,10 @@ import android.annotation.SuppressLint import okhttp3.OkHttpClient import okhttp3.Request import org.autojs.autojs.core.http.MutableOkHttp -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.http.Http.Companion.DEFAULT_TIMEOUT import org.autojs.autojs.runtime.api.augment.http.Http.Companion.KEY_CLIENT diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/RequestBuilderHelper.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/RequestBuilderHelper.kt index d9c12a1a..eb79cc99 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/RequestBuilderHelper.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/RequestBuilderHelper.kt @@ -9,12 +9,12 @@ import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody import okhttp3.RequestBody.Companion.toRequestBody import okio.BufferedSink -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsNumber -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.toRuntimePath -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNumber +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.toRuntimePath +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.pio.PFile import org.autojs.autojs.pio.PFileInterface import org.autojs.autojs.runtime.ScriptRuntime diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/ResponseBodyNativeObject.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/ResponseBodyNativeObject.kt index 3b0dde17..70367a49 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/ResponseBodyNativeObject.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/ResponseBodyNativeObject.kt @@ -2,11 +2,11 @@ package org.autojs.autojs.runtime.api.augment.http import okhttp3.ResponseBody import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.toRuntimePath -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.toRuntimePath +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.pio.PFile import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException @@ -83,7 +83,7 @@ class ResponseBodyNativeObject( return lengthHint <= cacheThresholdBytes } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoStandardFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/ResponseWrapper.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/ResponseWrapper.kt index 7df024d2..029f7313 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/ResponseWrapper.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/http/ResponseWrapper.kt @@ -1,8 +1,8 @@ package org.autojs.autojs.runtime.api.augment.http import okhttp3.Response -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.util.RhinoUtils.newNativeObject import org.mozilla.javascript.NativeArray diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/images/Images.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/images/Images.kt index 0b963d39..af8b5988 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/images/Images.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/images/Images.kt @@ -11,25 +11,25 @@ import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.image.ColorDetector import org.autojs.autojs.core.image.ImageWrapper import org.autojs.autojs.core.image.capture.ScreenCapturer -import org.autojs.autojs.extension.AnyExtensions.isJsArray -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsNumber -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.jsSpecies -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ArrayExtensions.toNativeObject -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.FlexibleArray.Companion.component3 -import org.autojs.autojs.extension.FlexibleArray.Companion.component4 -import org.autojs.autojs.extension.FlexibleArray.Companion.component5 -import org.autojs.autojs.extension.FlexibleArray.Companion.component6 -import org.autojs.autojs.extension.FlexibleArray.Companion.component7 -import org.autojs.autojs.extension.ScriptableExtensions.hasProp -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire -import org.autojs.autojs.extension.StringExtensions.isUri +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsArray +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNumber +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsSpecies +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component4 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component5 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component6 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component7 +import org.autojs.autojs.rhino.extension.ArrayExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.MapExtensions.toNativeObject +import org.autojs.autojs.rhino.extension.ScriptableExtensions.hasProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.util.StringUtils.isUri import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.ImageFeatureMatching import org.autojs.autojs.runtime.api.ImageSimilarity diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/images/MatchingResult.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/images/MatchingResult.kt index 0f830150..c6c9526c 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/images/MatchingResult.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/images/MatchingResult.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime.api.augment.images import org.autojs.autojs.core.image.TemplateMatching -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray import kotlin.math.roundToInt class MatchingResult(private val matchedList: List) { @@ -14,12 +14,12 @@ class MatchingResult(private val matchedList: List) { fun first() = matchedList.firstOrNull() fun last() = matchedList.lastOrNull() - fun leftmost() = findMax(Companion.comparators["left"]) - fun rightmost() = findMax(Companion.comparators["right"]) - fun topmost() = findMax(Companion.comparators["top"]) - fun bottommost() = findMax(Companion.comparators["bottom"]) - fun best() = findMax(Companion.comparators["best"]) - fun worst() = findMax(Companion.comparators["worst"]) + fun leftmost() = findMax(comparators["left"]) + fun rightmost() = findMax(comparators["right"]) + fun topmost() = findMax(comparators["top"]) + fun bottommost() = findMax(comparators["bottom"]) + fun best() = findMax(comparators["best"]) + fun worst() = findMax(comparators["worst"]) fun findMax(comparator: Comparator?): TemplateMatching.Match? { return comparator?.let { matchedList.maxWithOrNull(it) } @@ -33,7 +33,7 @@ class MatchingResult(private val matchedList: List) { var comparator: ((TemplateMatching.Match, TemplateMatching.Match) -> Int)? = null direction.split("-").forEach { s -> - val tmpComparator = Companion.comparators[s] ?: throw Exception("Unknown direction '$s' in '$direction'") + val tmpComparator = comparators[s] ?: throw Exception("Unknown direction '$s' in '$direction'") comparator = when (comparator) { null -> tmpComparator else -> { l, r -> diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Arrayx.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Arrayx.kt index 4ea9e2a7..47190b9f 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Arrayx.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Arrayx.kt @@ -3,13 +3,15 @@ package org.autojs.autojs.runtime.api.augment.jsox import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.annotation.RhinoRuntimeFunctionWithThisObjInterface -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ArrayExtensions.unshiftWith -import org.autojs.autojs.extension.FlexibleArray +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.util.Util.ensureArrayTypeRhino +import org.autojs.autojs.util.ArrayUtils.unshiftWith import org.autojs.autojs.util.RhinoUtils.coerceArray import org.autojs.autojs.util.RhinoUtils.coerceFunction import org.autojs.autojs.util.RhinoUtils.undefined @@ -140,7 +142,7 @@ class Arrayx(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRunti } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoRuntimeFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/JsBuildInObjectExtensible.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/JsBuildInObjectExtensible.kt index 10a11589..53951c1a 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/JsBuildInObjectExtensible.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/JsBuildInObjectExtensible.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime.api.augment.jsox import org.autojs.autojs.AutoJs -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Augmentable.Companion.refineAttributes diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Jsox.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Jsox.kt index 9de75ebe..77fba1d7 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Jsox.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Jsox.kt @@ -2,8 +2,8 @@ package org.autojs.autojs.runtime.api.augment.jsox import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.jsSpecies -import org.autojs.autojs.extension.FlexibleArray +import org.autojs.autojs.rhino.extension.AnyExtensions.jsSpecies +import org.autojs.autojs.rhino.ArgumentGuards import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable @@ -26,7 +26,7 @@ class Jsox(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime override fun invoke(vararg args: Any?): Undefined = extendRhinoWithRuntime(scriptRuntime, *args) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { private val presetModules = listOf("Mathx", "Numberx", "Arrayx") diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Mathx.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Mathx.kt index b11b215b..59dc12d0 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Mathx.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Mathx.kt @@ -2,10 +2,10 @@ package org.autojs.autojs.runtime.api.augment.jsox import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsArray -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsArray +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException @@ -65,7 +65,7 @@ class Mathx(private val scriptRuntime: ScriptRuntime) : Augmentable(), JsBuildIn extendBuildInObjectInternal(scriptRuntime, this, "Math") } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @Deprecated("Deprecated in Java", ReplaceWith("randomInt")) @JvmStatic diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Numberx.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Numberx.kt index ea09f557..59ce71d0 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Numberx.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/jsox/Numberx.kt @@ -3,21 +3,24 @@ package org.autojs.autojs.runtime.api.augment.jsox import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.annotation.RhinoRuntimeFunctionWithThisObjInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ArrayExtensions.unshiftWith -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.NumberExtensions.jsString -import org.autojs.autojs.extension.StringExtensions.padEnd -import org.autojs.autojs.extension.StringExtensions.padStart -import org.autojs.autojs.extension.StringExtensions.toDoubleOrNaN +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.NumberExtensions.jsString import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable -import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException import org.autojs.autojs.runtime.exception.ShouldNeverHappenException +import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException +import org.autojs.autojs.util.ArrayUtils.unshiftWith import org.autojs.autojs.util.RhinoUtils import org.autojs.autojs.util.RhinoUtils.toFunctionName +import org.autojs.autojs.util.StringUtils.padEnd +import org.autojs.autojs.util.StringUtils.padStart +import org.autojs.autojs.util.StringUtils.toDoubleOrNaN import org.mozilla.javascript.Context import org.mozilla.javascript.NativeArray import org.mozilla.javascript.Scriptable @@ -107,7 +110,7 @@ class Numberx(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRunt } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { const val DEFAULT_PADDING_STRING = "0" diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/mediainfo/MediainfoNativeObject.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/mediainfo/MediainfoNativeObject.kt index 8de3fd58..4bf360ec 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/mediainfo/MediainfoNativeObject.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/mediainfo/MediainfoNativeObject.kt @@ -2,11 +2,11 @@ package org.autojs.autojs.runtime.api.augment.mediainfo import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray.Companion.ensureArgumentsIsEmpty -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.getProp +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards.Companion.ensureArgumentsIsEmpty +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.getProp import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.StringReadable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/notice/Channel.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/notice/Channel.kt index 9457f4d6..115ab5de 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/notice/Channel.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/notice/Channel.kt @@ -7,10 +7,10 @@ import android.app.NotificationManager import android.os.Build import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.console.Console diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/notice/Notice.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/notice/Notice.kt index 58c7dae6..63448d28 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/notice/Notice.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/notice/Notice.kt @@ -6,10 +6,10 @@ import androidx.core.app.NotificationCompat.BigTextStyle import androidx.core.app.NotificationCompat.Builder import androidx.core.app.NotificationManagerCompat import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.AppUtils import org.autojs.autojs.runtime.api.augment.Augmentable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/Ocr.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/Ocr.kt index 0a3e451d..bb7bdbc2 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/Ocr.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/Ocr.kt @@ -2,17 +2,17 @@ package org.autojs.autojs.runtime.api.augment.ocr import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.image.ImageWrapper -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.jsSpecies -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.FlexibleArray.Companion.component3 -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsSpecies +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.OcrResult import org.autojs.autojs.runtime.api.augment.Augmentable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/OcrPaddle.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/OcrPaddle.kt index f7815a74..88951a40 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/OcrPaddle.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ocr/OcrPaddle.kt @@ -6,7 +6,7 @@ import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.apkbuilder.ApkBuilder import org.autojs.autojs.core.image.ImageWrapper import org.autojs.autojs.core.plugin.ocr.PaddleOcrPluginHost -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.OcrResult import org.autojs.autojs.runtime.api.augment.Augmentable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/opencc/OpenCC.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/opencc/OpenCC.kt index 77eb0fbc..8e292343 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/opencc/OpenCC.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/opencc/OpenCC.kt @@ -4,7 +4,7 @@ import com.zqc.opencc.android.lib.ChineseConverter import com.zqc.opencc.android.lib.ConversionType import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin/Pinyin.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin/Pinyin.kt index 306cabfb..242b7d94 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin/Pinyin.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin/Pinyin.kt @@ -4,9 +4,12 @@ import com.huaban.analysis.jieba.CharsDictionaryDatabase import com.huaban.analysis.jieba.JiebaSegmenter import com.huaban.analysis.jieba.PhrasesDictionaryDatabase import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable import org.autojs.autojs.runtime.api.augment.pinyin.PinyinCore.DefaultOptions diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin/PinyinCore.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin/PinyinCore.kt index 22468725..9a305c3a 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin/PinyinCore.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin/PinyinCore.kt @@ -1,8 +1,8 @@ package org.autojs.autojs.runtime.api.augment.pinyin -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsUnwrapped -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsUnwrapped +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.util.RhinoUtils.coerceBoolean import org.autojs.autojs.util.RhinoUtils.coerceString import org.autojs.autojs.util.RhinoUtils.newNativeObject diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin4j/Pinyin4j.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin4j/Pinyin4j.kt index cde1fe0d..894744f5 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin4j/Pinyin4j.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/pinyin4j/Pinyin4j.kt @@ -14,7 +14,7 @@ import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType.WITH_U_AND_COLON import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType.WITH_U_UNICODE import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType.WITH_V import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable import org.autojs.autojs.util.RhinoUtils.coerceString diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/plugins/Plugins.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/plugins/Plugins.kt index b77331b8..061d70f0 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/plugins/Plugins.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/plugins/Plugins.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime.api.augment.plugins import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.FlexibleArray +import org.autojs.autojs.rhino.ArgumentGuards import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable @@ -23,7 +23,7 @@ class Plugins(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRunt load(scriptRuntime, arrayOf(o)) } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoRuntimeFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/s13n/S13n.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/s13n/S13n.kt index dc386ae1..d55cf806 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/s13n/S13n.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/s13n/S13n.kt @@ -4,12 +4,12 @@ package org.autojs.autojs.runtime.api.augment.s13n import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsObject -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsObject +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.colors.Colors import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/selector/Selector.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/selector/Selector.kt index 13e7e07e..cb6a587e 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/selector/Selector.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/selector/Selector.kt @@ -3,11 +3,11 @@ package org.autojs.autojs.runtime.api.augment.selector import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.accessibility.UiSelector import org.autojs.autojs.core.automator.UiObject -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsUnwrapped -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.hasProp +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsUnwrapped +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.hasProp import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable @@ -142,7 +142,7 @@ class Selector(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRun } @Suppress("SameParameterValue") - companion object : FlexibleArray() { + companion object : ArgumentGuards() { private val scopeAugmentMethodBlacklist = listOf( UiSelector::plus.name, diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/shell/Shell.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/shell/Shell.kt index 022c2fbf..367d0eea 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/shell/Shell.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/shell/Shell.kt @@ -3,9 +3,9 @@ package org.autojs.autojs.runtime.api.augment.shell import android.util.Log import android.view.KeyEvent import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.AbstractShell import org.autojs.autojs.runtime.api.augment.Augmentable @@ -58,7 +58,7 @@ class Shell(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntim override fun invoke(vararg args: Any?): AbstractShell.Result = execCommand(scriptRuntime, args) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { private val TAG = Shell::class.java.simpleName diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/shizuku/Shizuku.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/shizuku/Shizuku.kt index 952104be..52f501a1 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/shizuku/Shizuku.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/shizuku/Shizuku.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime.api.augment.shizuku import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.AbstractShell import org.autojs.autojs.runtime.api.WrappedShizuku diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/sqlite/SQLite.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/sqlite/SQLite.kt index 2c201db5..11aac81c 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/sqlite/SQLite.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/sqlite/SQLite.kt @@ -3,11 +3,11 @@ package org.autojs.autojs.runtime.api.augment.sqlite import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.database.Database import org.autojs.autojs.core.database.Database.DatabaseCallback -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.jsSanitize -import org.autojs.autojs.extension.AnyExtensions.jsTryToJava -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsSanitize +import org.autojs.autojs.rhino.extension.AnyExtensions.jsTryToJava +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.SQLite.Companion.DEFAULT_READ_ONLY import org.autojs.autojs.runtime.api.SQLite.Companion.DEFAULT_VERSION diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/storages/StorageNativeObject.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/storages/StorageNativeObject.kt index 97653fb1..c83710bd 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/storages/StorageNativeObject.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/storages/StorageNativeObject.kt @@ -2,9 +2,9 @@ package org.autojs.autojs.runtime.api.augment.storages import org.autojs.autojs.annotation.RhinoStandardFunctionInterface import org.autojs.autojs.core.storage.LocalStorage -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards import org.autojs.autojs.runtime.api.StringReadable import org.autojs.autojs.util.RhinoUtils import org.autojs.autojs.util.RhinoUtils.UNDEFINED @@ -45,7 +45,7 @@ class StorageNativeObject(@JvmField val name: String) : NativeObject(), StringRe override fun toStringReadable() = "Storage { name: $name, size: ${storage.size()} }" @Suppress("UNUSED_PARAMETER") - internal object Getter : FlexibleArray() { + internal object Getter : ArgumentGuards() { private val className = StorageNativeObject::class.java.simpleName diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/storages/Storages.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/storages/Storages.kt index aac7d830..563e88bc 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/storages/Storages.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/storages/Storages.kt @@ -4,8 +4,8 @@ import android.content.Context.MODE_PRIVATE import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface import org.autojs.autojs.core.storage.LocalStorage -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException import org.mozilla.javascript.Context diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/sysprops/Sysprops.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/sysprops/Sysprops.kt index 4ce7cb53..7d438bbe 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/sysprops/Sysprops.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/sysprops/Sysprops.kt @@ -1,9 +1,9 @@ package org.autojs.autojs.runtime.api.augment.sysprops import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.ArrayExtensions.toNativeObject -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.MapExtensions.toNativeObject +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/tasks/Tasks.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/tasks/Tasks.kt index f5890b3c..b20cf4d6 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/tasks/Tasks.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/tasks/Tasks.kt @@ -3,15 +3,15 @@ package org.autojs.autojs.runtime.api.augment.tasks import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.execution.ExecutionConfig -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.toRuntimePath -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.acquire -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.toRuntimePath +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.acquire +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.external.receiver.DynamicBroadcastReceivers +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.threads.Threads @@ -61,7 +61,7 @@ class Tasks(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { ::daysToTimeFlag.name, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { private val daysOfWeekFlatList: List = listOf( "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/threads/Threads.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/threads/Threads.kt index a76b8ea4..933b9c96 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/threads/Threads.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/threads/Threads.kt @@ -2,9 +2,9 @@ package org.autojs.autojs.runtime.api.augment.threads import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.looper.TimerThread -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.ScriptInterruptedException @@ -35,7 +35,7 @@ class Threads(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { ::sync.name, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoRuntimeFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/threads/VolatileDisposeNativeObject.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/threads/VolatileDisposeNativeObject.kt index c44ef1d0..eac4b75b 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/threads/VolatileDisposeNativeObject.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/threads/VolatileDisposeNativeObject.kt @@ -1,10 +1,10 @@ package org.autojs.autojs.runtime.api.augment.threads import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.FlexibleArray.Companion.component3 +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 import org.autojs.autojs.util.RhinoUtils import org.autojs.autojs.util.RhinoUtils.UNDEFINED import org.autojs.autojs.util.RhinoUtils.coerceLongNumber @@ -75,7 +75,7 @@ class VolatileDisposeNativeObject : NativeObject() { RuntimeException(e) } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoStandardFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/timers/SetIntervalExt.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/timers/SetIntervalExt.kt index 27eb2ad0..f11276ae 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/timers/SetIntervalExt.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/timers/SetIntervalExt.kt @@ -1,6 +1,6 @@ package org.autojs.autojs.runtime.api.augment.timers -import org.autojs.autojs.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.util.RhinoUtils import org.mozilla.javascript.BaseFunction diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/timers/Timers.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/timers/Timers.kt index d6e488fc..6deff39e 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/timers/Timers.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/timers/Timers.kt @@ -3,9 +3,9 @@ package org.autojs.autojs.runtime.api.augment.timers import org.autojs.autojs.AutoJs import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.ShouldNeverHappenException @@ -38,7 +38,7 @@ open class Timers(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { ::keepAlive.name, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoRuntimeFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/toast/Toast.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/toast/Toast.kt index a0af36dd..c15d7827 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/toast/Toast.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/toast/Toast.kt @@ -3,7 +3,7 @@ package org.autojs.autojs.runtime.api.augment.toast import org.autojs.autojs.AutoJs import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.FlexibleArray +import org.autojs.autojs.rhino.ArgumentGuards import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable @@ -30,7 +30,7 @@ class Toast(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntim // ! 2. Android Studio 自带的安卓虚拟设备 (安卓 9.0 x86 架构) override fun invoke(vararg args: Any?): Undefined = call(scriptRuntime, args) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoRuntimeFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/toast/ToastParser.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/toast/ToastParser.kt index c4a086c9..c1ecada1 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/toast/ToastParser.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/toast/ToastParser.kt @@ -1,7 +1,7 @@ package org.autojs.autojs.runtime.api.augment.toast import org.autojs.autojs.AutoJs -import org.autojs.autojs.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.util.RhinoUtils.coerceString import org.mozilla.javascript.Context diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UI.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UI.kt index 4bb6e11a..57842c22 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UI.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UI.kt @@ -20,17 +20,17 @@ import org.autojs.autojs.core.ui.nativeview.NativeView import org.autojs.autojs.core.ui.widget.JsListView import org.autojs.autojs.core.ui.widget.JsWebView import org.autojs.autojs.execution.ScriptExecuteActivity -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.jsSanitize -import org.autojs.autojs.extension.AnyExtensions.jsUnwrapped -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.FlexibleArray.Companion.component3 -import org.autojs.autojs.extension.FlexibleArray.Companion.component4 -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsSanitize +import org.autojs.autojs.rhino.extension.AnyExtensions.jsUnwrapped +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component4 +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_GETTER_KEY import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_OBJECT_KEY import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_SETTER_KEY diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UIWidget.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UIWidget.kt index cbf1fe5b..88fa0779 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UIWidget.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UIWidget.kt @@ -2,12 +2,12 @@ package org.autojs.autojs.runtime.api.augment.ui import android.view.View import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableExtensions.hasProp -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableExtensions.hasProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException import org.autojs.autojs.util.RhinoUtils.NOT_CONSTRUCTABLE import org.autojs.autojs.util.RhinoUtils.UNDEFINED @@ -25,7 +25,7 @@ import org.mozilla.javascript.ScriptableObject import org.mozilla.javascript.Undefined @Suppress("unused", "UNUSED_PARAMETER") -object UIWidget : FlexibleArray() { +object UIWidget : ArgumentGuards() { @JvmStatic @RhinoStandardFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Inspect.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Inspect.kt index ea7c3c04..f84a538b 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Inspect.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Inspect.kt @@ -2,19 +2,19 @@ package org.autojs.autojs.runtime.api.augment.util import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.core.automator.UiObjectCollection -import org.autojs.autojs.extension.AnyExtensions.isJsNonNullObject -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ArrayExtensions.toNativeObject -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.ScriptableExtensions.prop -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 import org.autojs.autojs.rhino.ProxyObject import org.autojs.autojs.rhino.ProxyObject.Companion.AUGMENTED_CUSTOM_TO_STRING_KEY import org.autojs.autojs.rhino.ProxyObject.Companion.AUGMENTED_OBJECT_KEY import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_GETTER_KEY import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_SETTER_KEY +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNonNullObject +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.MapExtensions.toNativeObject +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire import org.autojs.autojs.runtime.api.StringReadable import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Java.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Java.kt index ee5c6cf7..e6ea6521 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Java.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Java.kt @@ -2,10 +2,10 @@ package org.autojs.autojs.runtime.api.augment.util import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException import org.autojs.autojs.util.RhinoUtils.newNativeArray diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCode.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCode.kt index 9244ae5a..e43bd027 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCode.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCode.kt @@ -2,8 +2,8 @@ package org.autojs.autojs.runtime.api.augment.util import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable import org.mozilla.javascript.Context diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCodeNativeObject.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCodeNativeObject.kt index d0a62768..44fb35a3 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCodeNativeObject.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCodeNativeObject.kt @@ -3,10 +3,10 @@ package org.autojs.autojs.runtime.api.augment.util import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoFunctionObjectBody import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.FlexibleArray.Companion.ensureArgumentsAtMost -import org.autojs.autojs.extension.FlexibleArray.Companion.ensureArgumentsIsEmpty +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.ArgumentGuards.Companion.ensureArgumentsAtMost +import org.autojs.autojs.rhino.ArgumentGuards.Companion.ensureArgumentsIsEmpty +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray import org.autojs.autojs.runtime.api.StringReadable import org.autojs.autojs.util.RhinoUtils import org.autojs.autojs.util.RhinoUtils.NOT_CONSTRUCTABLE diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCodeParser.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCodeParser.kt index 70dee43f..7bf4ed1a 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCodeParser.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/MorseCodeParser.kt @@ -1,6 +1,6 @@ package org.autojs.autojs.runtime.api.augment.util -import org.autojs.autojs.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish import org.autojs.autojs.runtime.api.Device import org.autojs.autojs.util.RhinoUtils.UNDEFINED import org.mozilla.javascript.Context diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Util.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Util.kt index 9c41258e..4cd34a98 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Util.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Util.kt @@ -4,28 +4,28 @@ import org.autojs.autojs.AutoJs import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsArray -import org.autojs.autojs.extension.AnyExtensions.isJsBigInt -import org.autojs.autojs.extension.AnyExtensions.isJsBoolean -import org.autojs.autojs.extension.AnyExtensions.isJsDate -import org.autojs.autojs.extension.AnyExtensions.isJsError -import org.autojs.autojs.extension.AnyExtensions.isJsFunction -import org.autojs.autojs.extension.AnyExtensions.isJsNonNullObject -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsNumber -import org.autojs.autojs.extension.AnyExtensions.isJsObject -import org.autojs.autojs.extension.AnyExtensions.isJsRegExp -import org.autojs.autojs.extension.AnyExtensions.isJsString -import org.autojs.autojs.extension.AnyExtensions.isJsSymbol -import org.autojs.autojs.extension.AnyExtensions.isJsUndefined -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.FlexibleArray.Companion.component3 -import org.autojs.autojs.extension.NumberExtensions.jsString -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsArray +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsBigInt +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsBoolean +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsDate +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsError +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsFunction +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNonNullObject +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNumber +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsObject +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsRegExp +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsString +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsSymbol +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsUndefined +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 +import org.autojs.autojs.rhino.extension.NumberExtensions.jsString +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.global.Species import org.autojs.autojs.runtime.api.augment.util.Inspect.inspectRhino @@ -815,7 +815,7 @@ object Util : Augmentable() { return func.call(cx, scope, null, args) } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoStandardFunctionInterface fun toString(cx: Context, thisObj: Scriptable, args: Array, funObj: Function): String = ensureArgumentsIsEmpty(args) { diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/VersionCodes.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/VersionCodes.kt index 46fe9a07..06234008 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/VersionCodes.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/VersionCodes.kt @@ -2,12 +2,12 @@ package org.autojs.autojs.runtime.api.augment.util import org.autojs.autojs.annotation.RhinoSingletonFunctionInterface import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.NumberExtensions.jsString -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.NumberExtensions.jsString +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException import org.autojs.autojs.util.RhinoUtils.newNativeArray @@ -120,7 +120,7 @@ object VersionCodes : Augmentable() { }.timeInMillis } - companion object : FlexibleArray() { + companion object : ArgumentGuards() { private val monthMap: Map = mapOf( "jan" to 1, "feb" to 2, "mar" to 3, "apr" to 4, "may" to 5, "jun" to 6, diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/web/Web.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/web/Web.kt index d468d9c1..a44eab7d 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/web/Web.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/web/Web.kt @@ -4,10 +4,10 @@ import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.core.web.InjectableWebClient import org.autojs.autojs.core.web.InjectableWebView -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsUnwrapped -import org.autojs.autojs.extension.FlexibleArray -import org.autojs.autojs.extension.ScriptableExtensions.prop +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsUnwrapped +import org.autojs.autojs.rhino.ArgumentGuards +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException @@ -25,7 +25,7 @@ class Web(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) { ::newWebSocket.name to AS_GLOBAL, ) - companion object : FlexibleArray() { + companion object : ArgumentGuards() { @JvmStatic @RhinoRuntimeFunctionInterface diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/zip/Zip.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/zip/Zip.kt index 1c7026ce..8cca1067 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/zip/Zip.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/zip/Zip.kt @@ -2,16 +2,16 @@ package org.autojs.autojs.runtime.api.augment.zip import okhttp3.internal.closeQuietly import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.FlexibleArray.Companion.component1 -import org.autojs.autojs.extension.FlexibleArray.Companion.component2 -import org.autojs.autojs.extension.FlexibleArray.Companion.component3 -import org.autojs.autojs.extension.StringExtensions.toFile +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component1 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component2 +import org.autojs.autojs.rhino.ArgumentGuards.Companion.component3 import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.augment.Augmentable import org.autojs.autojs.runtime.api.augment.Invokable import org.autojs.autojs.util.RhinoUtils.coerceString +import org.autojs.autojs.util.StringUtils.toFile import org.mozilla.javascript.NativeObject import java.io.File import java.time.LocalDateTime.now diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/zip/ZipNativeObject.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/zip/ZipNativeObject.kt index 06389260..16acbd58 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/zip/ZipNativeObject.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/zip/ZipNativeObject.kt @@ -13,15 +13,15 @@ import net.lingala.zip4j.model.enums.CompressionMethod import net.lingala.zip4j.model.enums.EncryptionMethod import org.autojs.autojs.annotation.RhinoFunctionBody import org.autojs.autojs.annotation.RhinoStandardFunctionInterface -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.isJsNumber -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.ArrayExtensions.toNativeArray -import org.autojs.autojs.extension.FlexibleArray.Companion.ensureArgumentsIsEmpty -import org.autojs.autojs.extension.FlexibleArray.Companion.ensureArgumentsLengthInRange -import org.autojs.autojs.extension.FlexibleArray.Companion.ensureArgumentsOnlyOne -import org.autojs.autojs.extension.ScriptableObjectExtensions.inquire -import org.autojs.autojs.extension.StringExtensions.toFile +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNumber +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.ArgumentGuards.Companion.ensureArgumentsIsEmpty +import org.autojs.autojs.rhino.ArgumentGuards.Companion.ensureArgumentsLengthInRange +import org.autojs.autojs.rhino.ArgumentGuards.Companion.ensureArgumentsOnlyOne +import org.autojs.autojs.rhino.extension.IterableExtensions.toNativeArray +import org.autojs.autojs.rhino.extension.ScriptableObjectExtensions.inquire +import org.autojs.autojs.util.StringUtils.toFile import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.StringReadable import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException diff --git a/app/src/main/java/org/autojs/autojs/theme/ThemeColor.kt b/app/src/main/java/org/autojs/autojs/theme/ThemeColor.kt index 7e10b27b..9fefadd0 100644 --- a/app/src/main/java/org/autojs/autojs/theme/ThemeColor.kt +++ b/app/src/main/java/org/autojs/autojs/theme/ThemeColor.kt @@ -5,7 +5,7 @@ import androidx.annotation.ColorRes import androidx.core.content.ContextCompat import org.autojs.autojs.annotation.ScriptInterface import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.extension.ArrayExtensions.toHashCode +import org.autojs.autojs.rhino.extension.IterableExtensions.toHashCode import org.autojs.autojs6.R /** diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorInfoDialogManager.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorInfoDialogManager.kt index a753a251..6c56283c 100644 --- a/app/src/main/java/org/autojs/autojs/theme/app/ColorInfoDialogManager.kt +++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorInfoDialogManager.kt @@ -14,8 +14,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.autojs.autojs.app.DialogUtils.showAdaptive -import org.autojs.autojs.extension.MaterialDialogExtensions.makeTextCopyable -import org.autojs.autojs.extension.MaterialDialogExtensions.setCopyableText +import org.autojs.autojs.util.MaterialDialogUtils.makeTextCopyable +import org.autojs.autojs.util.MaterialDialogUtils.setCopyableText import org.autojs.autojs.runtime.api.augment.colors.Colors import org.autojs.autojs.util.ColorUtils import org.autojs.autojs6.R diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt index fd91ad7a..6c5c598f 100644 --- a/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt +++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorItemsActivity.kt @@ -23,8 +23,6 @@ import androidx.recyclerview.widget.RecyclerView.VERTICAL import androidx.recyclerview.widget.ThemeColorRecyclerView import org.autojs.autojs.core.image.ColorItems import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.extension.ViewExtensions.setOnSubtitleViewClickListener -import org.autojs.autojs.extension.ViewExtensions.setOnTitleViewClickListener import org.autojs.autojs.theme.ThemeChangeNotifier import org.autojs.autojs.theme.ThemeColorManager import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_ID_DEFAULT @@ -37,6 +35,8 @@ import org.autojs.autojs.util.ViewUtils import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar import org.autojs.autojs.util.ViewUtils.onceGlobalLayout import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByColorLuminance +import org.autojs.autojs.util.ViewUtils.setOnSubtitleViewClickListener +import org.autojs.autojs.util.ViewUtils.setOnTitleViewClickListener import org.autojs.autojs6.R import org.autojs.autojs6.databinding.MtActivityColorItemsBinding import kotlin.properties.Delegates diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt index 5b0cf441..427e2cd9 100644 --- a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt +++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt @@ -12,8 +12,8 @@ import androidx.recyclerview.widget.RecyclerView.VERTICAL import androidx.recyclerview.widget.ThemeColorRecyclerView import org.autojs.autojs.core.image.ColorItems import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.extension.ViewExtensions.setOnSubtitleViewClickListener -import org.autojs.autojs.extension.ViewExtensions.setOnTitleViewClickListener +import org.autojs.autojs.util.ViewUtils.setOnSubtitleViewClickListener +import org.autojs.autojs.util.ViewUtils.setOnTitleViewClickListener import org.autojs.autojs.theme.ThemeChangeNotifier import org.autojs.autojs.theme.ThemeColorManager import org.autojs.autojs.util.ViewUtils diff --git a/app/src/main/java/org/autojs/autojs/theme/preference/MaterialListPreference.kt b/app/src/main/java/org/autojs/autojs/theme/preference/MaterialListPreference.kt index 47a6060f..17344aa5 100644 --- a/app/src/main/java/org/autojs/autojs/theme/preference/MaterialListPreference.kt +++ b/app/src/main/java/org/autojs/autojs/theme/preference/MaterialListPreference.kt @@ -7,8 +7,8 @@ import android.util.AttributeSet import com.afollestad.materialdialogs.MaterialDialog import org.autojs.autojs.app.DialogUtils.showAdaptive import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.extension.MaterialDialogExtensions.choiceWidgetThemeColor -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.choiceWidgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs.ui.common.NotAskAgainDialog import org.autojs.autojs6.R diff --git a/app/src/main/java/org/autojs/autojs/timing/ExactAlarmPermissionHelper.kt b/app/src/main/java/org/autojs/autojs/timing/ExactAlarmPermissionHelper.kt index ddffeb98..b0364c42 100644 --- a/app/src/main/java/org/autojs/autojs/timing/ExactAlarmPermissionHelper.kt +++ b/app/src/main/java/org/autojs/autojs/timing/ExactAlarmPermissionHelper.kt @@ -8,7 +8,7 @@ import android.provider.Settings import androidx.annotation.RequiresApi import androidx.core.net.toUri import org.autojs.autojs.app.DialogUtils.showAdaptive -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs.ui.common.NotAskAgainDialog import org.autojs.autojs.util.IntentUtils.startSafely import org.autojs.autojs.util.StringUtils.key diff --git a/app/src/main/java/org/autojs/autojs/ui/common/ScriptOperations.java b/app/src/main/java/org/autojs/autojs/ui/common/ScriptOperations.java index 4a80a0d1..d7f3c8df 100644 --- a/app/src/main/java/org/autojs/autojs/ui/common/ScriptOperations.java +++ b/app/src/main/java/org/autojs/autojs/ui/common/ScriptOperations.java @@ -22,7 +22,7 @@ import io.reactivex.subjects.PublishSubject; import org.autojs.autojs.app.DialogUtils; import org.autojs.autojs.app.GlobalAppContext; import org.autojs.autojs.core.pref.Pref; -import org.autojs.autojs.extension.MaterialDialogExtensions; +import org.autojs.autojs.util.MaterialDialogUtils; import org.autojs.autojs.external.ScriptIntents; import org.autojs.autojs.model.explorer.Explorer; import org.autojs.autojs.model.explorer.ExplorerDirPage; @@ -196,12 +196,12 @@ public class ScriptOperations { .positiveText(R.string.dialog_button_confirm) .positiveColorRes(R.color.dialog_button_attraction) .negativeText(R.string.dialog_button_back); - MaterialDialogExtensions.choiceWidgetThemeColor(builderDefaultPrefix); + MaterialDialogUtils.choiceWidgetThemeColor(builderDefaultPrefix); MaterialDialog dialogDefaultPrefix = builderDefaultPrefix.build(); DialogUtils.showAdaptive(dialogDefaultPrefix); }) .autoDismiss(false); - MaterialDialogExtensions.widgetThemeColor(builder); + MaterialDialogUtils.widgetThemeColor(builder); MaterialDialog dialog = builder.build(); dialogRef.set(dialog); @@ -338,7 +338,7 @@ public class ScriptOperations { input.onComplete(); }) .canceledOnTouchOutside(false); - MaterialDialogExtensions.widgetThemeColor(builder); + MaterialDialogUtils.widgetThemeColor(builder); DialogUtils.showAdaptive(builder.build()); return input; } diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.kt b/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.kt index 545e33c8..98dfc69d 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.kt @@ -28,8 +28,8 @@ import org.autojs.autojs.app.OnActivityResultDelegate.DelegateHost import org.autojs.autojs.core.permission.OnRequestPermissionsResultCallback import org.autojs.autojs.core.permission.PermissionRequestProxyActivity import org.autojs.autojs.core.permission.RequestPermissionCallbacks -import org.autojs.autojs.extension.ViewExtensions.setOnTitleViewClickListener -import org.autojs.autojs.extension.ViewExtensions.titleView +import org.autojs.autojs.util.ViewUtils.setOnTitleViewClickListener +import org.autojs.autojs.util.ViewUtils.titleView import org.autojs.autojs.pio.PFiles import org.autojs.autojs.storage.file.TmpScriptFiles import org.autojs.autojs.theme.widget.ThemeColorToolbar diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/EditorMenu.java b/app/src/main/java/org/autojs/autojs/ui/edit/EditorMenu.java index d57d2936..dd723112 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/EditorMenu.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/EditorMenu.java @@ -10,7 +10,7 @@ import com.afollestad.materialdialogs.MaterialDialog; import io.reactivex.android.schedulers.AndroidSchedulers; import org.autojs.autojs.core.pref.Language; import org.autojs.autojs.core.pref.Pref; -import org.autojs.autojs.extension.MaterialDialogExtensions; +import org.autojs.autojs.util.MaterialDialogUtils; import org.autojs.autojs.model.indices.AndroidClass; import org.autojs.autojs.model.indices.ClassSearchingItem; import org.autojs.autojs.script.JavaScriptFileSource; @@ -75,7 +75,7 @@ public class EditorMenu { .content(R.string.hint_long_click_run_to_debug) .positiveText(R.string.dialog_button_dismiss) .positiveColorRes(R.color.dialog_button_default); - MaterialDialogExtensions.widgetThemeColor(builder); + MaterialDialogUtils.widgetThemeColor(builder); builder.show(); return tryDoing(mEditorView::debug); } @@ -248,7 +248,7 @@ public class EditorMenu { .onPositive((dialog, which) -> dialog.dismiss()) .autoDismiss(false); - MaterialDialogExtensions.choiceWidgetThemeColor(builder); + MaterialDialogUtils.choiceWidgetThemeColor(builder); // TODO by SuperMonster003 on Oct 17, 2022. // ! Implementation for "scale view". @@ -330,7 +330,7 @@ public class EditorMenu { builder.positiveColorRes(R.color.dialog_button_attraction); builder.negativeText(R.string.dialog_button_cancel); builder.negativeColorRes(R.color.dialog_button_default); - MaterialDialogExtensions.widgetThemeColor(builder); + MaterialDialogUtils.widgetThemeColor(builder); builder.show(); } diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.kt b/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.kt index cf006d69..591e052d 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.kt +++ b/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.kt @@ -33,7 +33,7 @@ import org.autojs.autojs.engine.JavaScriptEngine import org.autojs.autojs.engine.ScriptEngine import org.autojs.autojs.event.BackPressedHandler.HostActivity import org.autojs.autojs.execution.ScriptExecution -import org.autojs.autojs.extension.MaterialDialogExtensions.choiceWidgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.choiceWidgetThemeColor import org.autojs.autojs.model.autocomplete.AutoCompletion import org.autojs.autojs.model.autocomplete.CodeCompletions import org.autojs.autojs.model.autocomplete.Symbols diff --git a/app/src/main/java/org/autojs/autojs/ui/error/ErrorDialogActivity.java b/app/src/main/java/org/autojs/autojs/ui/error/ErrorDialogActivity.java index 550e87ac..5f5693fe 100644 --- a/app/src/main/java/org/autojs/autojs/ui/error/ErrorDialogActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/error/ErrorDialogActivity.java @@ -4,7 +4,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; import com.afollestad.materialdialogs.MaterialDialog; -import org.autojs.autojs.extension.MaterialDialogExtensions; +import org.autojs.autojs.util.MaterialDialogUtils; import org.autojs.autojs.ui.BaseActivity; import org.autojs.autojs.util.ClipboardUtils; import org.autojs.autojs.util.IntentUtils; @@ -65,7 +65,7 @@ public class ErrorDialogActivity extends BaseActivity { var materialDialog = builder.show(); - MaterialDialogExtensions.makeTextCopyable(materialDialog, materialDialog.getContentView()); + MaterialDialogUtils.makeTextCopyable(materialDialog, materialDialog.getContentView()); } /** diff --git a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.kt b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.kt index 0b81a1b0..3189351a 100644 --- a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.kt +++ b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.kt @@ -30,7 +30,7 @@ import org.autojs.autojs.core.pref.Pref.putInt import org.autojs.autojs.core.pref.Pref.putLinkedList import org.autojs.autojs.core.pref.Pref.putString import org.autojs.autojs.core.pref.Pref.remove -import org.autojs.autojs.extension.ViewExtensions.setForceShowIconCompat +import org.autojs.autojs.util.ViewUtils.setForceShowIconCompat import org.autojs.autojs.model.explorer.Explorer import org.autojs.autojs.model.explorer.ExplorerChangeEvent import org.autojs.autojs.model.explorer.ExplorerDirPage diff --git a/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/NodeInfoView.kt b/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/NodeInfoView.kt index 95a0a682..e1154b0f 100644 --- a/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/NodeInfoView.kt +++ b/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/NodeInfoView.kt @@ -12,7 +12,7 @@ import androidx.recyclerview.widget.RecyclerView import androidx.viewbinding.ViewBinding import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration import org.autojs.autojs.core.accessibility.NodeInfo -import org.autojs.autojs.extension.NumberExtensions.jsString +import org.autojs.autojs.rhino.extension.NumberExtensions.jsString import org.autojs.autojs.util.ClipboardUtils import org.autojs.autojs.util.ViewUtils import org.autojs.autojs6.R diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt index 64612c62..3e557d8b 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt @@ -31,8 +31,8 @@ import org.autojs.autojs.core.pref.Pref import org.autojs.autojs.event.BackPressedHandler import org.autojs.autojs.event.BackPressedHandler.DoublePressExit import org.autojs.autojs.event.BackPressedHandler.HostActivity -import org.autojs.autojs.extension.ViewExtensions.setOnTitleViewLongClickListener import org.autojs.autojs.model.explorer.Explorers +import org.autojs.autojs.permission.AbleToUrge import org.autojs.autojs.permission.AllFilesAccessPermission import org.autojs.autojs.permission.DisplayOverOtherAppsPermission import org.autojs.autojs.permission.PostNotificationsPermission @@ -63,6 +63,7 @@ import org.autojs.autojs.util.ViewUtils.excludeFloatingActionButtonFromBottomNav import org.autojs.autojs.util.ViewUtils.onceGlobalLayout import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByThemeColorLuminance import org.autojs.autojs.util.ViewUtils.setNavigationIconColorByThemeColorLuminance +import org.autojs.autojs.util.ViewUtils.setOnTitleViewLongClickListener import org.autojs.autojs.util.WorkingDirectoryUtils import org.autojs.autojs6.R import org.autojs.autojs6.databinding.ActivityMainBinding @@ -77,7 +78,7 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { override val handleStatusBarThemeColorAutomatically = false private val mBackPressedCallback = object : OnBackPressedCallback(true) { - + // override fun onBackPressed() { // val fragment = mPagerAdapter.getStoredFragment(mViewPager.currentItem) // if ((fragment as? BackPressedHandler)?.onBackPressed(this) == true) { @@ -88,7 +89,7 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { // super.onBackPressed() // } // } - + override fun handleOnBackPressed() { val fragment = mPagerAdapter.getStoredFragment(mViewPager.currentItem) @@ -184,9 +185,11 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { FloatyWindowManger.refreshCircularMenuIfNeeded(this) - PostNotificationsPermission(this).urgeIfNeeded() - AllFilesAccessPermission(this).urgeIfNeeded() - DisplayOverOtherAppsPermission(this).urgeIfNeeded() + listOf( + PostNotificationsPermission(this), + AllFilesAccessPermission(this), + DisplayOverOtherAppsPermission(this), + ).forEach { it.urgeIfNeeded() } } override fun onPostResume() { diff --git a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerMenuToggleableItem.kt b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerMenuToggleableItem.kt index 3774a384..e1d06087 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerMenuToggleableItem.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerMenuToggleableItem.kt @@ -7,7 +7,7 @@ import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs.ui.common.NotAskAgainDialog import org.autojs.autojs.util.ViewUtils import org.autojs.autojs6.R diff --git a/app/src/main/java/org/autojs/autojs/ui/main/scripts/ApkInfoDialogManager.kt b/app/src/main/java/org/autojs/autojs/ui/main/scripts/ApkInfoDialogManager.kt index a8c43f53..7a89dedb 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/scripts/ApkInfoDialogManager.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/scripts/ApkInfoDialogManager.kt @@ -26,9 +26,9 @@ import kotlinx.coroutines.selects.select import kotlinx.coroutines.withContext import net.dongliu.apk.parser.ApkFile import org.autojs.autojs.app.DialogUtils.showAdaptive -import org.autojs.autojs.extension.MaterialDialogExtensions.makeSettingsLaunchable -import org.autojs.autojs.extension.MaterialDialogExtensions.makeTextCopyable -import org.autojs.autojs.extension.MaterialDialogExtensions.setCopyableTextIfAbsent +import org.autojs.autojs.util.MaterialDialogUtils.makeSettingsLaunchable +import org.autojs.autojs.util.MaterialDialogUtils.makeTextCopyable +import org.autojs.autojs.util.MaterialDialogUtils.setCopyableTextIfAbsent import org.autojs.autojs.external.fileprovider.AppFileProvider import org.autojs.autojs.pio.PFiles import org.autojs.autojs.runtime.api.AppUtils diff --git a/app/src/main/java/org/autojs/autojs/ui/main/scripts/EditableFileInfoDialogManager.kt b/app/src/main/java/org/autojs/autojs/ui/main/scripts/EditableFileInfoDialogManager.kt index bf12fb66..a96aa95f 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/scripts/EditableFileInfoDialogManager.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/scripts/EditableFileInfoDialogManager.kt @@ -14,8 +14,8 @@ import kotlinx.coroutines.cancel import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.autojs.autojs.app.DialogUtils.showAdaptive -import org.autojs.autojs.extension.MaterialDialogExtensions.makeTextCopyable -import org.autojs.autojs.extension.MaterialDialogExtensions.setCopyableTextIfAbsent +import org.autojs.autojs.util.MaterialDialogUtils.makeTextCopyable +import org.autojs.autojs.util.MaterialDialogUtils.setCopyableTextIfAbsent import org.autojs.autojs.external.fileprovider.AppFileProvider import org.autojs.autojs.pio.PFiles import org.autojs.autojs.runtime.api.Mime diff --git a/app/src/main/java/org/autojs/autojs/ui/main/scripts/MediaInfoDialogManager.kt b/app/src/main/java/org/autojs/autojs/ui/main/scripts/MediaInfoDialogManager.kt index 29f9cbaa..fd98e226 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/scripts/MediaInfoDialogManager.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/scripts/MediaInfoDialogManager.kt @@ -18,8 +18,8 @@ import kotlinx.coroutines.cancel import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.autojs.autojs.app.DialogUtils.showAdaptive -import org.autojs.autojs.extension.MaterialDialogExtensions.makeTextCopyable -import org.autojs.autojs.extension.MaterialDialogExtensions.setCopyableText +import org.autojs.autojs.util.MaterialDialogUtils.makeTextCopyable +import org.autojs.autojs.util.MaterialDialogUtils.setCopyableText import org.autojs.autojs.model.explorer.ExplorerItem import org.autojs.autojs.util.ViewUtils import org.autojs.autojs6.R diff --git a/app/src/main/java/org/autojs/autojs/ui/project/BuildActivity.java b/app/src/main/java/org/autojs/autojs/ui/project/BuildActivity.java index 51934758..db07fea9 100644 --- a/app/src/main/java/org/autojs/autojs/ui/project/BuildActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/project/BuildActivity.java @@ -35,7 +35,7 @@ import net.dongliu.apk.parser.bean.ApkMeta; import org.autojs.autojs.apkbuilder.ApkBuilder; import org.autojs.autojs.apkbuilder.keystore.KeyStore; import org.autojs.autojs.core.pref.Language; -import org.autojs.autojs.extension.MaterialDialogExtensions; +import org.autojs.autojs.util.MaterialDialogUtils; import org.autojs.autojs.external.fileprovider.AppFileProvider; import org.autojs.autojs.model.explorer.Explorers; import org.autojs.autojs.model.script.ScriptFile; @@ -422,7 +422,7 @@ public class BuildActivity extends BaseActivity implements ApkBuilder.ProgressCa getString(R.string.uri_autojs6_download_link)); builder.positiveText(R.string.dialog_button_dismiss); builder.positiveColorRes(R.color.dialog_button_hint); - MaterialDialogExtensions.widgetThemeColor(builder); + MaterialDialogUtils.widgetThemeColor(builder); MaterialDialog dialog = builder.show(); if (dialog != null) { TextView contentView = dialog.getContentView(); diff --git a/app/src/main/java/org/autojs/autojs/ui/settings/AboutActivity.kt b/app/src/main/java/org/autojs/autojs/ui/settings/AboutActivity.kt index a134e3df..0b999593 100644 --- a/app/src/main/java/org/autojs/autojs/ui/settings/AboutActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/settings/AboutActivity.kt @@ -11,7 +11,7 @@ import com.afollestad.materialdialogs.MaterialDialog import com.jaredrummler.android.widget.AnimatedSvgView import de.psdev.licensesdialog.LicenseResolver import de.psdev.licensesdialog.LicensesDialog -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs.network.UpdateChecker import org.autojs.autojs.network.UpdateChecker.PromptMode import org.autojs.autojs.ui.BaseActivity diff --git a/app/src/main/java/org/autojs/autojs/ui/settings/LauncherIconPreference.kt b/app/src/main/java/org/autojs/autojs/ui/settings/LauncherIconPreference.kt index c75e3b03..c88bde61 100644 --- a/app/src/main/java/org/autojs/autojs/ui/settings/LauncherIconPreference.kt +++ b/app/src/main/java/org/autojs/autojs/ui/settings/LauncherIconPreference.kt @@ -13,7 +13,7 @@ import android.util.AttributeSet import androidx.preference.PreferenceManager import com.afollestad.materialdialogs.MaterialDialog import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor +import org.autojs.autojs.util.MaterialDialogUtils.widgetThemeColor import org.autojs.autojs.external.shortcut.ShortcutActivity import org.autojs.autojs.theme.preference.MaterialListPreference import org.autojs.autojs.ui.common.NotAskAgainDialog diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/AdaptiveTitleToolbar.kt b/app/src/main/java/org/autojs/autojs/ui/widget/AdaptiveTitleToolbar.kt index fb91cf21..3883b68d 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/AdaptiveTitleToolbar.kt +++ b/app/src/main/java/org/autojs/autojs/ui/widget/AdaptiveTitleToolbar.kt @@ -5,7 +5,7 @@ import android.content.res.Configuration import android.util.AttributeSet import androidx.annotation.StyleRes import androidx.appcompat.widget.Toolbar -import org.autojs.autojs.extension.ViewExtensions.titleView +import org.autojs.autojs.util.ViewUtils.titleView import org.autojs.autojs6.R /** diff --git a/app/src/main/java/org/autojs/autojs/util/ArrayUtils.kt b/app/src/main/java/org/autojs/autojs/util/ArrayUtils.kt index a3997520..aecdaa65 100644 --- a/app/src/main/java/org/autojs/autojs/util/ArrayUtils.kt +++ b/app/src/main/java/org/autojs/autojs/util/ArrayUtils.kt @@ -1,74 +1,46 @@ -package org.autojs.autojs.util; +package org.autojs.autojs.util -import androidx.annotation.NonNull; - -import org.jetbrains.annotations.Contract; -import org.mozilla.javascript.NativeArray; - -import java.lang.reflect.Array; -import java.util.List; -import java.util.Objects; -import java.util.stream.IntStream; +import java.lang.reflect.Array as JavaArray /** * Created by Stardust on May 8, 2017. + * Transformed by SuperMonster003 on Jan 23, 2026. */ -public class ArrayUtils { +object ArrayUtils { - @NonNull - @Contract(pure = true) - public static Integer[] box(@NonNull int[] array) { - Integer[] box = new Integer[array.length]; - for (int i = 0; i < array.length; i++) { - box[i] = array[i]; - } - return box; + @JvmStatic + fun box(array: IntArray): Array { + return Array(array.size) { i -> array[i] } } - @NonNull - @Contract(pure = true) - public static int[] unbox(@NonNull Integer[] array) { - int[] unbox = new int[array.length]; - for (int i = 0; i < array.length; i++) { - unbox[i] = array[i]; - } - return unbox; + @JvmStatic + fun unbox(array: Array): IntArray { + return IntArray(array.size) { i -> array[i] } } - @NonNull - public static String[] toStringArray(@NonNull List list) { - int i = 0; - String[] str = new String[list.size()]; - for (Object o : list) { - str[i] = o == null ? null : o.toString(); - } - return str; + @JvmStatic + fun toStringArray(list: List<*>): Array { + return Array(list.size) { i -> list[i]?.toString() } } - @NonNull - @SuppressWarnings("unchecked") - public static T[] merge(@NonNull T[] a1, @NonNull T[] a2) { - T[] a = (T[]) Array.newInstance(Objects.requireNonNull(a1.getClass().getComponentType()), a1.length + a2.length); - System.arraycopy(a1, 0, a, 0, a1.length); - System.arraycopy(a2, 0, a, a1.length, a2.length); - return a; + @JvmStatic + @Suppress("UNCHECKED_CAST") + fun merge(a1: Array, a2: Array): Array { + val componentType = requireNotNull(a1.javaClass.componentType) + val result = JavaArray.newInstance(componentType, a1.size + a2.size) as Array + System.arraycopy(a1, 0, result, 0, a1.size) + System.arraycopy(a2, 0, result, a1.size, a2.size) + return result } - @NonNull - public static byte[] jsBytesToByteArray(@NonNull NativeArray values) { - var bytes = new byte[values.size()]; - IntStream.range(0, values.size()).forEach(i -> { - Object number = values.get(i); - if (number instanceof Number) { - bytes[i] = ((Number) number).byteValue(); - } - }); - return bytes; + fun Array.unshiftWith(thisObj: Any?): Array { + return Array(this.size + 1) { if (it == 0) thisObj else this[it - 1] } } - @NonNull - public static String jsBytesToString(@NonNull NativeArray values) { - return new java.lang.String(jsBytesToByteArray(values)); + fun Array.symmetricDifference(other: Array): Set { + val a = this.asIterable() subtract other.asIterable().toSet() + val b = other.asIterable() subtract this.asIterable().toSet() + return a union b } } diff --git a/app/src/main/java/org/autojs/autojs/util/IterableUtils.kt b/app/src/main/java/org/autojs/autojs/util/IterableUtils.kt new file mode 100644 index 00000000..7f72f6a7 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/util/IterableUtils.kt @@ -0,0 +1,13 @@ +package org.autojs.autojs.util + +import org.autojs.autojs.util.StringUtils.looseKey + +object IterableUtils { + + @JvmStatic + fun Iterable.containsLoosely(value: String): Boolean { + val key = value.looseKey() + return any { it.looseKey() == key } + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/extension/MaterialDialogExtensions.kt b/app/src/main/java/org/autojs/autojs/util/MaterialDialogUtils.kt similarity index 94% rename from app/src/main/java/org/autojs/autojs/extension/MaterialDialogExtensions.kt rename to app/src/main/java/org/autojs/autojs/util/MaterialDialogUtils.kt index b3bca19d..148e2b02 100644 --- a/app/src/main/java/org/autojs/autojs/extension/MaterialDialogExtensions.kt +++ b/app/src/main/java/org/autojs/autojs/util/MaterialDialogUtils.kt @@ -1,4 +1,4 @@ -package org.autojs.autojs.extension +package org.autojs.autojs.util import android.view.View import android.widget.TextView @@ -8,12 +8,10 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.autojs.autojs.theme.ThemeColorHelper -import org.autojs.autojs.util.ClipboardUtils -import org.autojs.autojs.util.IntentUtils -import org.autojs.autojs.util.ViewUtils import org.autojs.autojs6.R +import kotlin.text.isNullOrBlank -object MaterialDialogExtensions { +object MaterialDialogUtils { fun MaterialDialog.makeSettingsLaunchable(viewGetter: (dialog: MaterialDialog) -> View?, packageName: String?) { viewGetter(this)?.setOnClickListener { @@ -98,4 +96,4 @@ object MaterialDialogExtensions { private fun TextView.isEllipsisSix() = text == context.getString(R.string.ellipsis_six) private fun TextView.isNullOrBlank() = text.isNullOrBlank() -} +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/util/NotificationUtils.kt b/app/src/main/java/org/autojs/autojs/util/NotificationUtils.kt index 3a3ea06d..e504d023 100644 --- a/app/src/main/java/org/autojs/autojs/util/NotificationUtils.kt +++ b/app/src/main/java/org/autojs/autojs/util/NotificationUtils.kt @@ -1,6 +1,6 @@ package org.autojs.autojs.util -import android.Manifest.permission.POST_NOTIFICATIONS +import android.Manifest import android.app.Notification import android.app.NotificationChannel import android.app.NotificationManager @@ -76,7 +76,7 @@ object NotificationUtils { intent: Intent?, priority: Int?, ) { - if (ActivityCompat.checkSelfPermission(globalAppContext, POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) { + if (ActivityCompat.checkSelfPermission(globalAppContext, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) { throw RuntimeException(globalAppContext.getString(R.string.error_no_post_notifications_permission)) } NotificationManagerCompat.from(globalAppContext).notify( @@ -176,7 +176,7 @@ object NotificationUtils { @JvmStatic fun requestPermission(launcher: ActivityResultLauncher>) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - launcher.launch(arrayOf(POST_NOTIFICATIONS)) + launcher.launch(arrayOf(Manifest.permission.POST_NOTIFICATIONS)) } else { launchSettings() } diff --git a/app/src/main/java/org/autojs/autojs/util/NumberUtils.kt b/app/src/main/java/org/autojs/autojs/util/NumberUtils.kt new file mode 100644 index 00000000..2a2d703e --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/util/NumberUtils.kt @@ -0,0 +1,16 @@ +package org.autojs.autojs.util + +import java.math.RoundingMode + +object NumberUtils { + + @JvmStatic + @JvmOverloads + fun Double.roundToString(scale: Int, stripTrailingZeros: Boolean = true): String { + return toBigDecimal() + .setScale(scale, RoundingMode.HALF_UP) + .let { if (stripTrailingZeros) it.stripTrailingZeros() else it } + .toPlainString() + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/util/RhinoUtils.kt b/app/src/main/java/org/autojs/autojs/util/RhinoUtils.kt index 2da001f7..b337a762 100644 --- a/app/src/main/java/org/autojs/autojs/util/RhinoUtils.kt +++ b/app/src/main/java/org/autojs/autojs/util/RhinoUtils.kt @@ -9,13 +9,13 @@ import android.os.Parcelable import org.autojs.autojs.AutoJs import org.autojs.autojs.annotation.RhinoStandardFunctionInterface import org.autojs.autojs.core.automator.UiObjectCollection -import org.autojs.autojs.extension.AnyExtensions.isJsNullish -import org.autojs.autojs.extension.AnyExtensions.jsBrief -import org.autojs.autojs.extension.AnyExtensions.jsSpecies -import org.autojs.autojs.extension.AnyExtensions.jsUnwrapped -import org.autojs.autojs.extension.ScriptableExtensions.defineProp -import org.autojs.autojs.extension.ScriptableExtensions.prop import org.autojs.autojs.rhino.TopLevelScope +import org.autojs.autojs.rhino.extension.AnyExtensions.isJsNullish +import org.autojs.autojs.rhino.extension.AnyExtensions.jsBrief +import org.autojs.autojs.rhino.extension.AnyExtensions.jsSpecies +import org.autojs.autojs.rhino.extension.AnyExtensions.jsUnwrapped +import org.autojs.autojs.rhino.extension.ScriptableExtensions.defineProp +import org.autojs.autojs.rhino.extension.ScriptableExtensions.prop import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.api.ScriptPromiseAdapter import org.autojs.autojs.runtime.exception.ScriptInterruptedException @@ -1022,4 +1022,4 @@ object RhinoUtils { } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/autojs/autojs/util/StringUtils.kt b/app/src/main/java/org/autojs/autojs/util/StringUtils.kt index e271194a..d51cf414 100644 --- a/app/src/main/java/org/autojs/autojs/util/StringUtils.kt +++ b/app/src/main/java/org/autojs/autojs/util/StringUtils.kt @@ -2,15 +2,18 @@ package org.autojs.autojs.util import android.content.res.Configuration import android.text.TextUtils +import androidx.core.net.toUri import com.ibm.icu.text.CharsetDetector import com.ibm.icu.text.CharsetMatch import org.autojs.autojs.annotation.LocaleNonRelated import org.autojs.autojs.app.GlobalAppContext import org.autojs.autojs.core.pref.Language -import org.autojs.autojs.extension.NumberExtensions.roundToString +import org.autojs.autojs.util.NumberUtils.roundToString import org.opencv.core.Point +import java.io.File import java.nio.charset.Charset import java.nio.charset.StandardCharsets +import java.text.Normalizer import java.util.* import kotlin.math.min import kotlin.math.pow @@ -190,18 +193,6 @@ object StringUtils { } } - @JvmStatic - fun String.uppercaseFirstChar(): String { - val s = this - return if (s.isEmpty()) s else s.replaceFirstChar { s[0].uppercaseChar() } - } - - @JvmStatic - fun String.lowercaseFirstChar(): String { - val s = this - return if (s.isEmpty()) s else s.replaceFirstChar { s[0].lowercaseChar() } - } - @JvmStatic @Deprecated("Deprecated since v6.6.0", ReplaceWith("uppercaseFirstChar(s)")) fun toUpperCaseFirst(s: String) = s.uppercaseFirstChar() @@ -276,6 +267,103 @@ object StringUtils { return bytes.copyOfRange(bom.size, bytes.size) } + val String.estimateVisualWidth: Int + get() { + var width = 0 + var i = 0 + while (i < length) { + // 取 code point (可能是两位 surrogates 拼成一个 code point) + val cp = codePointAt(i) + // 移动下标, 跳过组合过的 surrogate + i += Character.charCount(cp) + + // 简易判断: 东亚全宽/Emoji 等 + width += if (isLikelyFullwidth(cp)) 2 else 1 + } + return width + } + + fun String.toDoubleOrNaN() = this.toDoubleOrNull() ?: Double.NaN + + fun String.padStart(length: Int, padStr: String) = when { + this.length >= length || padStr.isEmpty() -> this + else -> getPadding(length, padStr) + this + } + + fun String.padEnd(length: Int, padStr: String) = when { + this.length >= length || padStr.isEmpty() -> this + else -> this + getPadding(length, padStr) + } + + private fun String.getPadding(length: Int, padStr: String): String { + val repeatTimes = (length - this.length) / padStr.length + val remainderStr = padStr.take((length - this.length) % padStr.length) + return padStr.repeat(repeatTimes) + remainderStr + } + + fun CharSequence.looseMatches(reference: CharSequence): Boolean { + return this.toString().normalizeForMatch() == reference.toString().normalizeForMatch() + } + + private fun String.normalizeForMatch(): String { + return Normalizer.normalize(this, Normalizer.Form.NFD) + .trim() + .replace(Regex("\\p{M}"), "") // 移除组合符号, 如上标符号 + .replace(Regex("[^\\p{L}\\p{N}@.|]+"), "") // 只保留 [字母/数字/特定符号] + .lowercase() + } + + private fun isLikelyFullwidth(codePoint: Int) = when (codePoint) { + // CJK 中日韩统一表意文字 + in 0x4E00..0x9FFF -> true + // 常见的 Emoji 起始, 又或者判断 Character.getType(cp) + in 0x1F300..0x1FAFF -> true + // East Asian Fullwidth, Wide 等范围, 可参考 EastAsianWidth.txt + else -> false + } + + @JvmStatic + fun String.isUri(): Boolean { + if (isBlank()) return false + val uri = runCatching { this.toUri() }.getOrNull() ?: return false + uri.scheme?.lowercase() ?: return false + return true + } + + @JvmStatic + fun String.toFile(): File { + val path = this + return File(path) + } + + @JvmStatic + fun String.uppercaseFirstChar(): String { + val s = this + return if (s.isEmpty()) s else s.replaceFirstChar { s[0].uppercaseChar() } + } + + @JvmStatic + fun String.lowercaseFirstChar(): String { + val s = this + return if (s.isEmpty()) s else s.replaceFirstChar { s[0].lowercaseChar() } + } + + @JvmStatic + fun String.looseKey(): String = + buildString(length) { + for (c in this@looseKey) { + if (c.isLetterOrDigit()) append(c.lowercaseChar()) + } + } + + @JvmStatic + fun String.equalsLoosely(other: String): Boolean = + this.looseKey() == other.looseKey() + + @JvmStatic + fun String.isLooselyIn(list: Iterable): Boolean = + list.any { this.equalsLoosely(it) } + class CharsetMatchWrapper(private val charsetMatch: CharsetMatch?) { val name: String? by lazy { charsetMatch?.name } @@ -292,4 +380,23 @@ object StringUtils { } -} \ No newline at end of file + class LooseMatcher(options: Iterable) { + + private val keySet: Set + + init { + val map = HashMap(16) + for (opt in options) { + val key = opt.looseKey() + val prev = map.putIfAbsent(key, opt) + require(prev == null) { + "Loose key collision: \"$prev\" and \"$opt\" both normalize to \"$key\"" + } + } + keySet = map.keys + } + + fun contains(value: String): Boolean = value.looseKey() in keySet + } + +} diff --git a/app/src/main/java/org/autojs/autojs/util/ViewUtils.kt b/app/src/main/java/org/autojs/autojs/util/ViewUtils.kt index b6a38b19..fccffd3e 100644 --- a/app/src/main/java/org/autojs/autojs/util/ViewUtils.kt +++ b/app/src/main/java/org/autojs/autojs/util/ViewUtils.kt @@ -44,6 +44,7 @@ import android.view.inputmethod.InputMethodManager import android.widget.EditText import android.widget.FrameLayout import android.widget.ImageView +import android.widget.PopupMenu import android.widget.TextView import android.widget.Toast import androidx.annotation.ColorInt @@ -107,6 +108,18 @@ object ViewUtils { get() = Pref.getBoolean(R.string.key_night_mode_enabled, false) set(b) = Pref.putBoolean(R.string.key_night_mode_enabled, b) + val Toolbar.titleView: TextView? + get() = this.findViewById(androidx.appcompat.R.id.action_bar_title) + ?: runCatching { + Toolbar::class.java.getDeclaredField("mTitleTextView").apply { isAccessible = true }.get(this@titleView) as TextView? + }.getOrNull() + + val Toolbar.subtitleView: TextView? + get() = this.findViewById(androidx.appcompat.R.id.action_bar_subtitle) + ?: runCatching { + Toolbar::class.java.getDeclaredField("mSubtitleTextView").apply { isAccessible = true }.get(this@subtitleView) as TextView? + }.getOrNull() + @JvmStatic @Suppress("FunctionName") fun `$`(view: View, @IdRes resId: Int): V { @@ -1262,6 +1275,54 @@ object ViewUtils { imm.hideSoftInputFromWindow(target.windowToken, 0) } + fun PopupMenu.setForceShowIconCompat() { + val popup = this + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + popup.setForceShowIcon(true) + } else { + runCatching { + @SuppressLint("DiscouragedPrivateApi") + val field = PopupMenu::class.java.getDeclaredField("mPopup") + field.isAccessible = true + // MenuPopupHelper + val helper = field.get(popup) + val method = helper.javaClass.getDeclaredMethod("setForceShowIcon", Boolean::class.javaPrimitiveType) + method.invoke(helper, true) + } + } + } + + @JvmStatic + fun Toolbar.setOnTitleViewClickListener(l: View.OnClickListener?) { + this.setOnTitleViewClickListener(l, withFallback = true) + } + + @JvmStatic + fun Toolbar.setOnTitleViewClickListener(l: View.OnClickListener?, withFallback: Boolean) { + this.onceGlobalLayout { + this.titleView?.setOnClickListener(l) ?: run { if (withFallback) this.setOnClickListener(l) } + } + } + + @JvmStatic + fun Toolbar.setOnSubtitleViewClickListener(l: View.OnClickListener?) { + this.onceGlobalLayout { + this.subtitleView?.setOnClickListener(l) + } + } + + @JvmStatic + fun Toolbar.setOnTitleViewLongClickListener(l: View.OnLongClickListener?) { + this.setOnTitleViewLongClickListener(l, withFallback = true) + } + + @JvmStatic + fun Toolbar.setOnTitleViewLongClickListener(l: View.OnLongClickListener?, withFallback: Boolean) { + this.onceGlobalLayout { + this.titleView?.setOnLongClickListener(l) ?: run { if (withFallback) this.setOnLongClickListener(l) } + } + } + enum class MODE(val key: String) { DAY(key(R.string.key_night_mode_always_off)), diff --git a/version.properties b/version.properties index aabdf598..b50ccbe6 100644 --- a/version.properties +++ b/version.properties @@ -1,5 +1,5 @@ -#Thu Jan 22 15:46:07 CST 2026 -BUILD_TIME=1769067967886 +#Sat Jan 24 16:10:49 CST 2026 +BUILD_TIME=1769242249875 COMPILE_SDK_VERSION=36 IMAGE_QUANT_CMAKE_VERSION=3.22.1 IMAGE_QUANT_NDK_VERSION=26.1.10909125 @@ -27,6 +27,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13 RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3 TARGET_SDK_VERSION=36 TARGET_SDK_VERSION_INRT=29 -VERSION_BUILD=3647 -VERSION_NAME=6.7.0 Alpha17 +VERSION_BUILD=3652 +VERSION_NAME=6.7.0 Alpha18 VSCODE_EXT_REQUIRED_VERSION=1.0.13