ms-vite-plugin 1.5.9 → 1.5.11

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.
@@ -0,0 +1,231 @@
1
+ # 动态库模块 (JBDylib)
2
+
3
+ 模块表是内置全局 `jbdylib`,直接调用即可。不要 `require` 宿主模块。
4
+
5
+ 仅越狱包可用。免越狱包没有 `jbdylib`。
6
+
7
+ 把动态库放到脚本项目的 `res` 目录,用相对路径 `open`,再用 `define` / `defineAll` 绑定签名,之后按符号名调用。定义请用冒号 `lib:define(...)`,新符号才会挂到当前表上。同一进程重复打开同一路径会复用已加载的库。未 `define` 的符号不能调用。C 符号名不能与 `define` / `defineAll` / `call` / `symbol` 重名。
8
+
9
+ ## 类型
10
+
11
+ `retType` / `argTypes` 使用下面的类型名:
12
+
13
+ | 类型 | 说明 |
14
+ | ---- | ---- |
15
+ | `void` | 无返回值;调用成功时返回 `true` |
16
+ | `bool` | 布尔 |
17
+ | `int` | 32 位整数 |
18
+ | `uint` | 32 位无符号整数 |
19
+ | `int64` | 64 位整数 |
20
+ | `uint64` | 64 位无符号整数 |
21
+ | `float` | 32 位浮点 |
22
+ | `double` | 64 位浮点 |
23
+ | `string` | C 字符串 |
24
+ | `pointer` | 指针 |
25
+
26
+ 只支持常见 C 标量类型。整数、指针、字符串参数合计最多 8 个,浮点参数最多 8 个。不支持结构体、C++ 方法和可变参数。指针用 `"0x..."` 字符串。
27
+
28
+ `defineAll` / `open` 第二参数里,每个函数可以写成:
29
+
30
+ | 写法 | 含义 |
31
+ | ---- | ---- |
32
+ | `"void"` 或 `{ "void" }` | 返回 `void`,无参数 |
33
+ | `{ "int", { "int", "int" } }` | 返回 `int`,两个 `int` 参数 |
34
+ | `{ "int", "int", "int" }` | 同上,参数类型也可以扁平写在返回类型后面 |
35
+
36
+ ## API 参考
37
+
38
+ ### open - 从 `res` 加载动态库,返回库对象。
39
+
40
+ ```lua
41
+ ---@param name string
42
+ ---@param defs table|nil
43
+ ---@return JbDylibLib|nil
44
+ function open(name, defs) end
45
+ ```
46
+
47
+ **参数:**
48
+
49
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
50
+ | ------ | --------- | -------- | ------ | ------------------------------------------------------------ |
51
+ | `name` | string | 是 | - | 相对 `res` 的动态库路径,例如 `"mylib.dylib"` 或 `"libs/mylib.dylib"` |
52
+ | `defs` | table\|nil | 否 | `nil` | 打开后立刻批量绑定的函数表 |
53
+
54
+ **返回值:**
55
+
56
+ | 类型 | 描述 |
57
+ | ------------------ | ---------------------------------- |
58
+ | `JbDylibLib\|nil` | 加载成功返回库对象,失败返回 `nil` |
59
+
60
+ **示例:**
61
+
62
+ ```lua
63
+ local lib = jbdylib.open("mylib.dylib", {
64
+ mylib_add = { "int", { "int", "int" } },
65
+ mylib_get_name = { "string" },
66
+ mylib_touch = { "void" },
67
+ })
68
+ if lib then
69
+ print(lib.mylib_add(1, 2))
70
+ end
71
+ ```
72
+
73
+ ### isLoaded - 查询动态库是否已加载。
74
+
75
+ ```lua
76
+ ---@param name string
77
+ ---@return boolean
78
+ function isLoaded(name) end
79
+ ```
80
+
81
+ **参数:**
82
+
83
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
84
+ | ------ | ------ | -------- | ------ | ------------------------ |
85
+ | `name` | string | 是 | - | 相对 `res` 的动态库路径 |
86
+
87
+ **返回值:**
88
+
89
+ | 类型 | 描述 |
90
+ | --------- | ---------------------------- |
91
+ | `boolean` | 已加载为 `true`,否则 `false` |
92
+
93
+ **示例:**
94
+
95
+ ```lua
96
+ if not jbdylib.isLoaded("mylib.dylib") then
97
+ jbdylib.open("mylib.dylib")
98
+ end
99
+ ```
100
+
101
+ ## 库对象
102
+
103
+ `open` 返回的库对象。先定义签名,再按符号名调用。
104
+
105
+ ```lua
106
+ ---@class JbDylibLib
107
+ ---@field define fun(self, symbol: string, retType: string, argTypes?: string[]): boolean
108
+ ---@field defineAll fun(self, specs: table): boolean
109
+ ---@field call fun(self, symbol: string, ...): any
110
+ ---@field symbol fun(self, name: string): string|nil
111
+ ```
112
+
113
+ ### define - 绑定一个导出函数的签名。
114
+
115
+ ```lua
116
+ ---@param symbol string
117
+ ---@param retType string
118
+ ---@param argTypes string[]|nil
119
+ ---@return boolean
120
+ function define(symbol, retType, argTypes) end
121
+ ```
122
+
123
+ **参数:**
124
+
125
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
126
+ | ---------- | ------------- | -------- | ------ | ------------------------------ |
127
+ | `symbol` | string | 是 | - | 导出符号名,例如 `"mylib_add"` |
128
+ | `retType` | string | 是 | - | 返回类型 |
129
+ | `argTypes` | string[]\|nil | 否 | `{}` | 每个参数的类型,无参数时可省略 |
130
+
131
+ **返回值:**
132
+
133
+ | 类型 | 描述 |
134
+ | --------- | ---------------------------------------- |
135
+ | `boolean` | 签名合法且符号存在为 `true`,否则 `false` |
136
+
137
+ **示例:**
138
+
139
+ ```lua
140
+ local lib = jbdylib.open("mylib.dylib")
141
+ lib:define("mylib_add", "int", { "int", "int" })
142
+ print(lib.mylib_add(1, 2))
143
+ ```
144
+
145
+ ### defineAll - 批量绑定导出函数。
146
+
147
+ ```lua
148
+ ---@param specs table
149
+ ---@return boolean
150
+ function defineAll(specs) end
151
+ ```
152
+
153
+ **参数:**
154
+
155
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
156
+ | ------- | ----- | -------- | ------ | ------------------------ |
157
+ | `specs` | table | 是 | - | 键为符号名,值为函数定义 |
158
+
159
+ **返回值:**
160
+
161
+ | 类型 | 描述 |
162
+ | --------- | ---------------------------------------------- |
163
+ | `boolean` | 全部成功为 `true`;失败项会跳过,其余仍会绑定 |
164
+
165
+ **示例:**
166
+
167
+ ```lua
168
+ lib:defineAll({
169
+ mylib_add = { "int", { "int", "int" } },
170
+ mylib_touch = { "void" },
171
+ })
172
+ ```
173
+
174
+ ### call - 按已绑定签名调用导出函数。
175
+
176
+ ```lua
177
+ ---@param symbol string
178
+ ---@param ... any
179
+ ---@return any
180
+ function call(symbol, ...) end
181
+ ```
182
+
183
+ **参数:**
184
+
185
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
186
+ | -------- | ------ | -------- | ------ | -------------------------- |
187
+ | `symbol` | string | 是 | - | 已绑定的导出符号名 |
188
+ | `...` | any | 否 | - | 与定义时参数类型对应的实参 |
189
+
190
+ **返回值:**
191
+
192
+ | 类型 | 描述 |
193
+ | ----- | -------------------------------------------------- |
194
+ | `any` | 调用成功返回结果;`void` 成功返回 `true`;失败返回 `nil` |
195
+
196
+ **示例:**
197
+
198
+ ```lua
199
+ local sum = lib:call("mylib_add", 1, 2)
200
+ print(sum)
201
+
202
+ lib:define("mylib_touch", "void")
203
+ lib:call("mylib_touch")
204
+ ```
205
+
206
+ ### symbol - 解析导出符号地址。
207
+
208
+ ```lua
209
+ ---@param name string
210
+ ---@return string|nil
211
+ function symbol(name) end
212
+ ```
213
+
214
+ **参数:**
215
+
216
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
217
+ | ------ | ------ | -------- | ------ | ---------- |
218
+ | `name` | string | 是 | - | 导出符号名 |
219
+
220
+ **返回值:**
221
+
222
+ | 类型 | 描述 |
223
+ | ------------- | -------------------------------------- |
224
+ | `string\|nil` | 成功返回 `"0x..."` 地址,失败返回 `nil` |
225
+
226
+ **示例:**
227
+
228
+ ```lua
229
+ local addr = lib:symbol("mylib_add")
230
+ print(addr)
231
+ ```
@@ -0,0 +1,63 @@
1
+ # 终端模块 (JBShell)
2
+
3
+ 模块表是内置全局 `jbshell`,直接调用即可。不要 `require` 宿主模块。
4
+
5
+ 仅越狱包可用。免越狱包没有 `jbshell`。
6
+
7
+ 用 `exec` 执行一条 shell 命令,同步等到结束或超时,返回 `code`、`stdout`、`stderr`。命令走 `sh -c`。`stdout` / `stderr` 各最多 8MB。
8
+
9
+ ## 类型
10
+
11
+ ```lua
12
+ ---@class JbShellResult
13
+ ---@field code integer
14
+ ---@field stdout string
15
+ ---@field stderr string
16
+ ```
17
+
18
+ | 字段 | 类型 | 描述 |
19
+ | -------- | ------- | -------------------------------------------- |
20
+ | `code` | integer | 退出码;超时为 `-1`;被信号结束后为 `128 + 信号` |
21
+ | `stdout` | string | 标准输出文本 |
22
+ | `stderr` | string | 标准错误文本 |
23
+
24
+ ## API 参考
25
+
26
+ ### exec - 执行一条 shell 命令,等到结束或超时。
27
+
28
+ ```lua
29
+ ---@param command string
30
+ ---@param timeoutMs integer|nil
31
+ ---@return JbShellResult|nil
32
+ function exec(command, timeoutMs) end
33
+ ```
34
+
35
+ **参数:**
36
+
37
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
38
+ | ----------- | ------------- | -------- | ------- | ---------------------------------------------- |
39
+ | `command` | string | 是 | - | 交给 `sh -c` 的命令 |
40
+ | `timeoutMs` | integer\|nil | 否 | `30000` | 等待上限毫秒;`<= 0` 时用默认值,最长 `3600000` |
41
+
42
+ **返回值:**
43
+
44
+ | 类型 | 描述 |
45
+ | ----------------------- | ------------------------------------------------------------ |
46
+ | `JbShellResult\|nil` | 启动成功返回结果;空命令或启动失败返回 `nil`。超时仍返回已捕获输出,`code` 为 `-1` |
47
+
48
+ **示例:**
49
+
50
+ ```lua
51
+ local r = jbshell.exec("printf hello")
52
+ if r then
53
+ logi(r.code)
54
+ logi(r.stdout)
55
+ end
56
+
57
+ local failed = jbshell.exec("printf boom 1>&2; exit 7")
58
+ logi(failed.code)
59
+ logi(failed.stderr)
60
+
61
+ local timed = jbshell.exec("sleep 5", 300)
62
+ logi(timed.code)
63
+ ```
@@ -0,0 +1,225 @@
1
+ # 系统模块 (JBSystem)
2
+
3
+ 模块表是内置全局 `jbsystem`,直接调用即可。不要 `require` 宿主模块。
4
+
5
+ 仅越狱包可用。免越狱包没有 `jbsystem`。
6
+
7
+ `respring` 重启 SpringBoard。`reboot` 重启用户空间,不是重启整机。这两项调用后当前 App 和脚本通常会被系统结束。`restartSelf` 重启当前 App 进程,调用后当前脚本会结束,App 随后会被重新拉起。
8
+
9
+ 还可读写「允许 App 请求跟踪」「个性化广告」和定位服务总开关。不同 iOS 版本中,这些设置项的名称或位置可能略有不同。
10
+
11
+ ## API 参考
12
+
13
+ ### respring - 重启 SpringBoard(Respring)。
14
+
15
+ ```lua
16
+ ---@return boolean
17
+ function respring() end
18
+ ```
19
+
20
+ **返回值:**
21
+
22
+ | 类型 | 描述 |
23
+ | --------- | ------------------------ |
24
+ | `boolean` | 成功为 `true` |
25
+
26
+ **示例:**
27
+
28
+ ```lua
29
+ jbsystem.respring()
30
+ ```
31
+
32
+ ### reboot - 重启用户空间。
33
+
34
+ 不是重启整机。
35
+
36
+ ```lua
37
+ ---@return boolean
38
+ function reboot() end
39
+ ```
40
+
41
+ **返回值:**
42
+
43
+ | 类型 | 描述 |
44
+ | --------- | ------------------------ |
45
+ | `boolean` | 成功为 `true` |
46
+
47
+ **示例:**
48
+
49
+ ```lua
50
+ jbsystem.reboot()
51
+ ```
52
+
53
+ ### restartSelf - 重启当前 App 进程。
54
+
55
+ 调用后当前脚本会结束,App 随后会被重新拉起。
56
+
57
+ ```lua
58
+ ---@return boolean
59
+ function restartSelf() end
60
+ ```
61
+
62
+ **返回值:**
63
+
64
+ | 类型 | 描述 |
65
+ | --------- | ----------------------- |
66
+ | `boolean` | 成功为 `true` |
67
+
68
+ **示例:**
69
+
70
+ ```lua
71
+ jbsystem.restartSelf()
72
+ ```
73
+
74
+ ### getUserTracking - 读取「允许 App 请求跟踪」总开关。
75
+
76
+ 对应 `设置 > 隐私与安全性 > 跟踪 > 允许 App 请求跟踪`。
77
+
78
+ ```lua
79
+ ---@return boolean|nil
80
+ function getUserTracking() end
81
+ ```
82
+
83
+ **返回值:**
84
+
85
+ | 类型 | 描述 |
86
+ | ---------------- | ------------------------------ |
87
+ | `boolean \| nil` | 当前是否允许;读失败返回 `nil` |
88
+
89
+ **示例:**
90
+
91
+ ```lua
92
+ local allow = jbsystem.getUserTracking()
93
+ if type(allow) == "boolean" then
94
+ jbsystem.setUserTracking(false)
95
+ jbsystem.setUserTracking(allow)
96
+ end
97
+ ```
98
+
99
+ ### setUserTracking - 设置「允许 App 请求跟踪」总开关。
100
+
101
+ ```lua
102
+ ---@param enabled boolean
103
+ ---@return boolean
104
+ function setUserTracking(enabled) end
105
+ ```
106
+
107
+ **参数:**
108
+
109
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
110
+ | --------- | --------- | -------- | ------ | ------------------------------------------ |
111
+ | `enabled` | `boolean` | 是 | - | `true` 允许 App 弹跟踪请求,`false` 不允许 |
112
+
113
+ **返回值:**
114
+
115
+ | 类型 | 描述 |
116
+ | --------- | ----------------------- |
117
+ | `boolean` | 成功为 `true` |
118
+
119
+ **示例:**
120
+
121
+ ```lua
122
+ jbsystem.setUserTracking(false)
123
+ ```
124
+
125
+ ### getPersonalizedAdvertising - 读取「个性化广告」开关。
126
+
127
+ 对应 `设置 > 隐私与安全性 > Apple 广告 > 个性化广告`。
128
+
129
+ ```lua
130
+ ---@return boolean|nil
131
+ function getPersonalizedAdvertising() end
132
+ ```
133
+
134
+ **返回值:**
135
+
136
+ | 类型 | 描述 |
137
+ | ---------------- | ------------------------------ |
138
+ | `boolean \| nil` | 当前是否允许;读失败返回 `nil` |
139
+
140
+ **示例:**
141
+
142
+ ```lua
143
+ local allow = jbsystem.getPersonalizedAdvertising()
144
+ if type(allow) == "boolean" then
145
+ jbsystem.setPersonalizedAdvertising(false)
146
+ jbsystem.setPersonalizedAdvertising(allow)
147
+ end
148
+ ```
149
+
150
+ ### setPersonalizedAdvertising - 设置「个性化广告」开关。
151
+
152
+ ```lua
153
+ ---@param enabled boolean
154
+ ---@return boolean
155
+ function setPersonalizedAdvertising(enabled) end
156
+ ```
157
+
158
+ **参数:**
159
+
160
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
161
+ | --------- | --------- | -------- | ------ | ------------------------------------ |
162
+ | `enabled` | `boolean` | 是 | - | `true` 允许个性化广告,`false` 不允许 |
163
+
164
+ **返回值:**
165
+
166
+ | 类型 | 描述 |
167
+ | --------- | ----------------------- |
168
+ | `boolean` | 成功为 `true` |
169
+
170
+ **示例:**
171
+
172
+ ```lua
173
+ jbsystem.setPersonalizedAdvertising(false)
174
+ ```
175
+
176
+ ### getLocationServices - 读取定位服务总开关。
177
+
178
+ 对应 `设置 > 隐私与安全性 > 定位服务` 总开关。
179
+
180
+ ```lua
181
+ ---@return boolean|nil
182
+ function getLocationServices() end
183
+ ```
184
+
185
+ **返回值:**
186
+
187
+ | 类型 | 描述 |
188
+ | ---------------- | ------------------------------ |
189
+ | `boolean \| nil` | 当前是否开启;读失败返回 `nil` |
190
+
191
+ **示例:**
192
+
193
+ ```lua
194
+ local enabled = jbsystem.getLocationServices()
195
+ if type(enabled) == "boolean" then
196
+ jbsystem.setLocationServices(false)
197
+ jbsystem.setLocationServices(enabled)
198
+ end
199
+ ```
200
+
201
+ ### setLocationServices - 设置定位服务总开关。
202
+
203
+ ```lua
204
+ ---@param enabled boolean
205
+ ---@return boolean
206
+ function setLocationServices(enabled) end
207
+ ```
208
+
209
+ **参数:**
210
+
211
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
212
+ | --------- | --------- | -------- | ------ | -------------------------------- |
213
+ | `enabled` | `boolean` | 是 | - | `true` 开启定位服务,`false` 关闭 |
214
+
215
+ **返回值:**
216
+
217
+ | 类型 | 描述 |
218
+ | --------- | ----------------------- |
219
+ | `boolean` | 成功为 `true` |
220
+
221
+ **示例:**
222
+
223
+ ```lua
224
+ jbsystem.setLocationServices(false)
225
+ ```