ha-frp-rn 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/android/build.gradle.kts +51 -0
- package/android/consumer-rules.pro +68 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +8 -0
- package/android/gradlew +179 -0
- package/android/gradlew.bat +83 -0
- package/android/proguard-rules.pro +84 -0
- package/android/settings.gradle.kts +24 -0
- package/android/src/main/java/io/github/acedroidx/frp/FrpConfig.kt +63 -0
- package/android/src/main/java/io/github/acedroidx/frp/FrpModule.kt +115 -0
- package/android/src/main/java/io/github/acedroidx/frp/FrpPackage.kt +16 -0
- package/android/src/main/java/io/github/acedroidx/frp/ShellService.kt +212 -0
- package/android/src/test/java/io/github/acedroidx/frp/FrpConfigTest.kt +104 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/interfaces/frp.d.ts +323 -0
- package/dist/interfaces/frp.d.ts.map +1 -0
- package/dist/interfaces/frp.js +55 -0
- package/dist/interfaces/frp.js.map +1 -0
- package/jniLibs/arm64-v8a/libfrpc.so +0 -0
- package/jniLibs/arm64-v8a/libfrps.so +0 -0
- package/jniLibs/armeabi-v7a/libfrpc.so +0 -0
- package/jniLibs/armeabi-v7a/libfrps.so +0 -0
- package/package.json +10 -4
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
package io.github.acedroidx.frp
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.ReactPackage
|
|
4
|
+
import com.facebook.react.bridge.NativeModule
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.uimanager.ViewManager
|
|
7
|
+
|
|
8
|
+
class FrpPackage : ReactPackage {
|
|
9
|
+
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
|
|
10
|
+
return listOf(FrpModule(reactContext))
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
|
14
|
+
return emptyList()
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
package io.github.acedroidx.frp
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.util.Log
|
|
5
|
+
import java.io.*
|
|
6
|
+
import java.util.concurrent.Executors
|
|
7
|
+
import java.util.concurrent.TimeUnit
|
|
8
|
+
|
|
9
|
+
class ShellService(private val context: Context) {
|
|
10
|
+
|
|
11
|
+
enum class Status {
|
|
12
|
+
STOPPED,
|
|
13
|
+
STARTING,
|
|
14
|
+
RUNNING,
|
|
15
|
+
STOPPING,
|
|
16
|
+
ERROR
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
private var process: Process? = null
|
|
20
|
+
private var status = Status.STOPPED
|
|
21
|
+
private var lastMessage = ""
|
|
22
|
+
private var executorService = Executors.newSingleThreadExecutor()
|
|
23
|
+
private var onStatusChangeListener: ((Status, String) -> Unit)? = null
|
|
24
|
+
private val TAG = "ShellService"
|
|
25
|
+
|
|
26
|
+
fun setOnStatusChangeListener(listener: (Status, String) -> Unit) {
|
|
27
|
+
this.onStatusChangeListener = listener
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* 使用配置路径启动FRP访问者模式
|
|
32
|
+
*
|
|
33
|
+
* @param configPath - 配置文件路径
|
|
34
|
+
*/
|
|
35
|
+
fun startVisitor(configPath: String) {
|
|
36
|
+
startFrp("frpc", configPath)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* 使用配置路径启动FRP服务器模式
|
|
41
|
+
*
|
|
42
|
+
* @param configPath - 配置文件路径
|
|
43
|
+
*/
|
|
44
|
+
fun startServer(configPath: String) {
|
|
45
|
+
startFrp("frps", configPath)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 使用FrpConfig对象启动FRP
|
|
50
|
+
*
|
|
51
|
+
* @param frpConfig - FRP配置对象
|
|
52
|
+
*/
|
|
53
|
+
fun start(frpConfig: FrpConfig) {
|
|
54
|
+
val binaryName = when (frpConfig.type) {
|
|
55
|
+
FrpType.FRPC -> "frpc"
|
|
56
|
+
FrpType.FRPS -> "frps"
|
|
57
|
+
}
|
|
58
|
+
val configPath = frpConfig.getFile(context).absolutePath
|
|
59
|
+
startFrp(binaryName, configPath)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private fun startFrp(binaryName: String, configPath: String) {
|
|
63
|
+
if (status == Status.RUNNING) {
|
|
64
|
+
Log.w(TAG, "FRP is already running")
|
|
65
|
+
return
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
setStatus(Status.STARTING, "Starting $binaryName...")
|
|
69
|
+
|
|
70
|
+
executorService.submit {
|
|
71
|
+
try {
|
|
72
|
+
val binaryPath = extractBinary(binaryName)
|
|
73
|
+
if (binaryPath.isNullOrEmpty()) {
|
|
74
|
+
setStatus(Status.ERROR, "Failed to extract $binaryName")
|
|
75
|
+
return@submit
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
val command = arrayOf(
|
|
79
|
+
binaryPath,
|
|
80
|
+
"-c",
|
|
81
|
+
configPath
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
Log.i(TAG, "Executing: ${command.joinToString(" ")}")
|
|
85
|
+
|
|
86
|
+
val pb = ProcessBuilder(*command)
|
|
87
|
+
.redirectErrorStream(true)
|
|
88
|
+
.directory(File(context.cacheDir, "frp"))
|
|
89
|
+
|
|
90
|
+
process = pb.start()
|
|
91
|
+
setStatus(Status.RUNNING, "$binaryName started successfully")
|
|
92
|
+
|
|
93
|
+
// Read output
|
|
94
|
+
BufferedReader(InputStreamReader(process?.inputStream)).use { reader ->
|
|
95
|
+
var line: String?
|
|
96
|
+
while (reader.readLine().also { line = it } != null) {
|
|
97
|
+
Log.d(TAG, "FRP output: $line")
|
|
98
|
+
lastMessage = line ?: ""
|
|
99
|
+
onStatusChangeListener?.invoke(status, lastMessage)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Wait for process to exit
|
|
104
|
+
val exitCode = process?.waitFor(100, TimeUnit.MILLISECONDS)
|
|
105
|
+
if (exitCode != null && !exitCode) {
|
|
106
|
+
// Process is still running, continue monitoring
|
|
107
|
+
monitorProcess()
|
|
108
|
+
} else {
|
|
109
|
+
val actualExitCode = process?.exitValue() ?: -1
|
|
110
|
+
setStatus(Status.STOPPED, "$binaryName stopped with exit code $actualExitCode")
|
|
111
|
+
}
|
|
112
|
+
} catch (e: Exception) {
|
|
113
|
+
Log.e(TAG, "Error running FRP: ${e.message}", e)
|
|
114
|
+
setStatus(Status.ERROR, "Failed to run $binaryName: ${e.message}")
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
private fun monitorProcess() {
|
|
120
|
+
executorService.submit {
|
|
121
|
+
try {
|
|
122
|
+
process?.waitFor()
|
|
123
|
+
val exitCode = process?.exitValue() ?: -1
|
|
124
|
+
setStatus(Status.STOPPED, "FRP stopped with exit code $exitCode")
|
|
125
|
+
} catch (e: Exception) {
|
|
126
|
+
Log.e(TAG, "Error monitoring FRP process: ${e.message}", e)
|
|
127
|
+
setStatus(Status.ERROR, "Error monitoring FRP: ${e.message}")
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
fun stop() {
|
|
133
|
+
if (status != Status.RUNNING && status != Status.STARTING) {
|
|
134
|
+
Log.w(TAG, "FRP is not running")
|
|
135
|
+
return
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
setStatus(Status.STOPPING, "Stopping FRP...")
|
|
139
|
+
|
|
140
|
+
try {
|
|
141
|
+
process?.destroy()
|
|
142
|
+
process?.waitFor(5, TimeUnit.SECONDS)
|
|
143
|
+
if (process?.isAlive == true) {
|
|
144
|
+
process?.destroyForcibly()
|
|
145
|
+
process?.waitFor(2, TimeUnit.SECONDS)
|
|
146
|
+
}
|
|
147
|
+
setStatus(Status.STOPPED, "FRP stopped")
|
|
148
|
+
} catch (e: Exception) {
|
|
149
|
+
Log.e(TAG, "Error stopping FRP: ${e.message}", e)
|
|
150
|
+
setStatus(Status.ERROR, "Failed to stop FRP: ${e.message}")
|
|
151
|
+
} finally {
|
|
152
|
+
process = null
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
private fun extractBinary(binaryName: String): String? {
|
|
157
|
+
val outputDir = File(context.cacheDir, "frp")
|
|
158
|
+
if (!outputDir.exists()) {
|
|
159
|
+
outputDir.mkdirs()
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
val outputFile = File(outputDir, binaryName)
|
|
163
|
+
if (outputFile.exists() && outputFile.canExecute()) {
|
|
164
|
+
return outputFile.absolutePath
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
val assetPath = "$binaryName"
|
|
169
|
+
val inputStream = context.assets.open(assetPath)
|
|
170
|
+
val outputStream = FileOutputStream(outputFile)
|
|
171
|
+
inputStream.copyTo(outputStream)
|
|
172
|
+
inputStream.close()
|
|
173
|
+
outputStream.close()
|
|
174
|
+
|
|
175
|
+
// Make file executable
|
|
176
|
+
outputFile.setExecutable(true)
|
|
177
|
+
return outputFile.absolutePath
|
|
178
|
+
} catch (e: Exception) {
|
|
179
|
+
Log.e(TAG, "Failed to extract $binaryName: ${e.message}", e)
|
|
180
|
+
return null
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
private fun setStatus(newStatus: Status, message: String) {
|
|
185
|
+
status = newStatus
|
|
186
|
+
lastMessage = message
|
|
187
|
+
Log.i(TAG, "Status: $status, Message: $message")
|
|
188
|
+
onStatusChangeListener?.invoke(newStatus, message)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
fun getStatus(): Status {
|
|
192
|
+
return status
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
fun getLastMessage(): String {
|
|
196
|
+
return lastMessage
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
companion object {
|
|
200
|
+
// Properties for external access
|
|
201
|
+
val Status.status: Status
|
|
202
|
+
get() = this
|
|
203
|
+
val Status.message: String
|
|
204
|
+
get() = when (this) {
|
|
205
|
+
Status.STOPPED -> "Stopped"
|
|
206
|
+
Status.STARTING -> "Starting"
|
|
207
|
+
Status.RUNNING -> "Running"
|
|
208
|
+
Status.STOPPING -> "Stopping"
|
|
209
|
+
Status.ERROR -> "Error"
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
package io.github.acedroidx.frp
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import androidx.test.platform.app.InstrumentationRegistry
|
|
5
|
+
import org.junit.Assert.assertEquals
|
|
6
|
+
import org.junit.Before
|
|
7
|
+
import org.junit.Test
|
|
8
|
+
import java.io.File
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* FrpConfig类的单元测试
|
|
12
|
+
*
|
|
13
|
+
* 测试内容:
|
|
14
|
+
* 1. 构造函数测试
|
|
15
|
+
* 2. toString()方法测试
|
|
16
|
+
* 3. getDir()方法测试
|
|
17
|
+
* 4. getFile()方法测试
|
|
18
|
+
* 5. getLogDir()方法测试
|
|
19
|
+
* 6. getLogFile()方法测试
|
|
20
|
+
*/
|
|
21
|
+
class FrpConfigTest {
|
|
22
|
+
private lateinit var context: Context
|
|
23
|
+
private lateinit var frpcConfig: FrpConfig
|
|
24
|
+
private lateinit var frpsConfig: FrpConfig
|
|
25
|
+
|
|
26
|
+
@Before
|
|
27
|
+
fun setUp() {
|
|
28
|
+
// 获取测试上下文
|
|
29
|
+
context = InstrumentationRegistry.getInstrumentation().targetContext
|
|
30
|
+
|
|
31
|
+
// 创建测试配置对象
|
|
32
|
+
frpcConfig = FrpConfig(FrpType.FRPC, "test-config.toml")
|
|
33
|
+
frpsConfig = FrpConfig(FrpType.FRPS, "server-config.toml")
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 测试构造函数是否正确初始化对象
|
|
38
|
+
*/
|
|
39
|
+
@Test
|
|
40
|
+
fun testConstructor() {
|
|
41
|
+
assertEquals(FrpType.FRPC, frpcConfig.type)
|
|
42
|
+
assertEquals("test-config.toml", frpcConfig.fileName)
|
|
43
|
+
|
|
44
|
+
assertEquals(FrpType.FRPS, frpsConfig.type)
|
|
45
|
+
assertEquals("server-config.toml", frpsConfig.fileName)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 测试toString()方法是否返回预期的字符串
|
|
50
|
+
*/
|
|
51
|
+
@Test
|
|
52
|
+
fun testToString() {
|
|
53
|
+
assertEquals("[FRPC]test-config.toml", frpcConfig.toString())
|
|
54
|
+
assertEquals("[FRPS]server-config.toml", frpsConfig.toString())
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 测试getDir()方法是否返回正确的目录
|
|
59
|
+
*/
|
|
60
|
+
@Test
|
|
61
|
+
fun testGetDir() {
|
|
62
|
+
val expectedFrpcDir = File(context.filesDir, "frpc")
|
|
63
|
+
val expectedFrpsDir = File(context.filesDir, "frps")
|
|
64
|
+
|
|
65
|
+
assertEquals(expectedFrpcDir, frpcConfig.getDir(context))
|
|
66
|
+
assertEquals(expectedFrpsDir, frpsConfig.getDir(context))
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 测试getFile()方法是否返回正确的文件路径
|
|
71
|
+
*/
|
|
72
|
+
@Test
|
|
73
|
+
fun testGetFile() {
|
|
74
|
+
val expectedFrpcFile = File(File(context.filesDir, "frpc"), "test-config.toml")
|
|
75
|
+
val expectedFrpsFile = File(File(context.filesDir, "frps"), "server-config.toml")
|
|
76
|
+
|
|
77
|
+
assertEquals(expectedFrpcFile, frpcConfig.getFile(context))
|
|
78
|
+
assertEquals(expectedFrpsFile, frpsConfig.getFile(context))
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* 测试getLogDir()方法是否返回正确的日志目录
|
|
83
|
+
*/
|
|
84
|
+
@Test
|
|
85
|
+
fun testGetLogDir() {
|
|
86
|
+
val expectedFrpcLogDir = File(context.cacheDir, "logs/frpc")
|
|
87
|
+
val expectedFrpsLogDir = File(context.cacheDir, "logs/frps")
|
|
88
|
+
|
|
89
|
+
assertEquals(expectedFrpcLogDir, frpcConfig.getLogDir(context))
|
|
90
|
+
assertEquals(expectedFrpsLogDir, frpsConfig.getLogDir(context))
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* 测试getLogFile()方法是否返回正确的日志文件路径
|
|
95
|
+
*/
|
|
96
|
+
@Test
|
|
97
|
+
fun testGetLogFile() {
|
|
98
|
+
val expectedFrpcLogFile = File(File(context.cacheDir, "logs/frpc"), "test-config.log")
|
|
99
|
+
val expectedFrpsLogFile = File(File(context.cacheDir, "logs/frps"), "server-config.log")
|
|
100
|
+
|
|
101
|
+
assertEquals(expectedFrpcLogFile, frpcConfig.getLogFile(context))
|
|
102
|
+
assertEquals(expectedFrpsLogFile, frpsConfig.getLogFile(context))
|
|
103
|
+
}
|
|
104
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @FilePath: \ha-frp-rn\src\index.ts
|
|
7
7
|
* @Description: React Native FRP模块入口文件
|
|
8
8
|
*/
|
|
9
|
-
import { IFrpService, FrpConfig, FrpStatus, FrpStats, FrpLogEntry } from '
|
|
9
|
+
import { IFrpService, FrpConfig, FrpStatus, FrpStats, FrpLogEntry } from './interfaces/frp';
|
|
10
10
|
/**
|
|
11
11
|
* FRP配置管理器
|
|
12
12
|
*
|
|
@@ -87,5 +87,6 @@ export declare class ReactNativeFrpService implements IFrpService {
|
|
|
87
87
|
* @returns {ReactNativeFrpService} FRP服务实例
|
|
88
88
|
*/
|
|
89
89
|
export declare function createFrpService(): ReactNativeFrpService;
|
|
90
|
-
export { FrpConfigType, FrpStatus, FrpLogLevel
|
|
90
|
+
export { FrpConfigType, FrpStatus, FrpLogLevel } from './interfaces/frp';
|
|
91
|
+
export type { FrpProxyConfig, FrpVisitorConfig, IFrpService, FrpConfig, FrpStats, FrpLogEntry, IFrpConfigManager } from './interfaces/frp';
|
|
91
92
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAA8B,QAAQ,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAA8B,QAAQ,EAAE,WAAW,EAAqB,MAAM,kBAAkB,CAAC;AAE3I;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,iBAAiB,CAAqB;IAE9C;;;;;OAKG;IACG,SAAS,CAAC,WAAW,GAAE,OAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAmBjE;;;;OAIG;YACW,kBAAkB;IAMhC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;;;OAIG;IACH,cAAc,IAAI,IAAI,GAAG,IAAI;CAG9B;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,WAAW;IACvD,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,aAAa,CAAmB;;IAaxC,OAAO,CAAC,iBAAiB;IAKnB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,iBAAiB,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBvF,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9E,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAM9E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAa/C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAU1D,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAMnD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAM1F,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAKrE,cAAc,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI;IAK/E,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAK7D,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAM7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;OAIG;IACH,gBAAgB,IAAI,gBAAgB;CAGrC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAExD;AAGD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @Description: React Native FRP模块入口文件
|
|
8
8
|
*/
|
|
9
9
|
import { Platform } from 'react-native';
|
|
10
|
-
import { FrpStatus, FrpConfigType } from '
|
|
10
|
+
import { FrpStatus, FrpConfigType } from './interfaces/frp';
|
|
11
11
|
/**
|
|
12
12
|
* FRP配置管理器
|
|
13
13
|
*
|
|
@@ -224,5 +224,5 @@ export function createFrpService() {
|
|
|
224
224
|
return new ReactNativeFrpService();
|
|
225
225
|
}
|
|
226
226
|
// 导出FRP相关类型和枚举
|
|
227
|
-
export { FrpConfigType, FrpStatus, FrpLogLevel } from '
|
|
227
|
+
export { FrpConfigType, FrpStatus, FrpLogLevel } from './interfaces/frp';
|
|
228
228
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAA0B,SAAS,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|