ms-vite-plugin 1.5.16 → 1.5.17
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/dist/build/index.js +1 -1
- package/docs/api/ui.md +18 -0
- package/docs/apicn/ui.md +18 -0
- package/docs/apilua/ui.md +18 -0
- package/docs/apipython/ui.md +18 -0
- package/package.json +1 -1
package/dist/build/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var x=Object.create;var
|
|
1
|
+
"use strict";var x=Object.create;var L=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var C=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of q(e))!z.call(t,r)&&r!==n&&L(t,r,{get:()=>e[r],enumerable:!(i=N(e,r))||i.enumerable});return t};var W=(t,e,n)=>(n=t!=null?x($(t)):{},C(e||!t||!t.__esModule?L(n,"default",{value:t,enumerable:!0}):n,t));var K=exports&&exports.__createBinding||(Object.create?(function(t,e,n,i){i===void 0&&(i=n);var r=Object.getOwnPropertyDescriptor(e,n);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,i,r)}):(function(t,e,n,i){i===void 0&&(i=n),t[i]=e[n]})),A=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),O=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var i=[];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(i[i.length]=r);return i},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var i=t(e),r=0;r<i.length;r++)i[r]!=="default"&&K(n,e,i[r]);return A(n,e),n}})(),M=exports&&exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildAll=void 0;const T=M(require("archiver")),D=require("child_process"),s=O(require("fs-extra")),F=O(require("os")),o=O(require("path")),B=require("./stopGuardPlugin"),G=require("./luaBundle"),E=require("./scriptProtect"),H=M(require("vite-plugin-bundle-obfuscator"));async function R(t,e){const n=(0,T.default)("zip",{zlib:{level:9}}),i=s.createWriteStream(e);return new Promise((r,c)=>{n.directory(t,!1).on("error",a=>c(a)).pipe(i),i.on("close",()=>r()),n.finalize()})}async function I(t,e){const n=[];async function i(r){const c=await s.readdir(r,{withFileTypes:!0});for(const a of c){const u=o.resolve(r,a.name);a.isDirectory()?await i(u):a.isFile()&&(/^main\.(js|ts)$/.test(a.name)||/_thread\.(js|ts)$/.test(a.name))&&n.push(o.relative(e,u))}}return await i(t),n}function k(){const t=[{cmd:o.join(F.homedir(),".KuaiJSDevloper","python","python.exe"),args:["--version"]},{cmd:o.join(F.homedir(),".KuaiJSDevloper","python","bin","python"),args:["--version"]},{cmd:"python",args:["--version"]},{cmd:"python3",args:["--version"]},{cmd:"python3.14",args:["--version"]}];for(const e of t)try{const n=(0,D.spawnSync)(e.cmd,e.args,{encoding:"utf8"}),i=(n.stdout||n.stderr||"").trim();if(i&&/Python\s+3\.14(\.\d+)?/i.test(i))return{ok:!0,path:e.cmd,version:i}}catch{}return{ok:!1}}async function ee(t){async function e(n){const i=await s.readdir(n,{withFileTypes:!0});for(const r of i){const c=o.join(n,r.name);if(r.isDirectory())if(r.name==="__pycache__"){const a=await s.readdir(c,{withFileTypes:!0});for(const u of a){const P=o.join(c,u.name);if(u.isFile()&&u.name.endsWith(".cpython-314.pyc")){const S=o.dirname(c),b=u.name.replace(/\.cpython-314\.pyc$/,".pyc"),g=o.join(S,b);await s.move(P,g,{overwrite:!0})}}try{await s.remove(c)}catch{}}else await e(c);else if(r.isFile())if(r.name.endsWith(".cpython-314.pyc")){const a=c.replace(".cpython-314.pyc",".pyc");await s.move(c,a,{overwrite:!0})}else r.name.endsWith(".py")&&await s.remove(c)}}await e(t)}const Q=["Minify","Weak","Medium","Strong"];async function U(t){const e=o.join(t,"obfuscator.json");if(!await s.pathExists(e))return{enabled:!0,preset:"Medium",bundle:!0};try{const n=await s.readJSON(e),i=n?.enabled!==!1,r=n?.bundle!==!1,c=V(n?.preset);return{enabled:i,preset:c,bundle:r}}catch(n){return console.error("\u274C \u65E0\u6CD5\u8BFB\u53D6 obfuscator.json"),console.error(n instanceof Error?n.message:String(n)),process.exit(1),{enabled:!0,preset:"Medium",bundle:!0}}}function V(t){if(typeof t!="string")return"Medium";const e=Q.find(n=>n.toLowerCase()===t.trim().toLowerCase());return e||(console.warn(`\u26A0\uFE0F obfuscator.json \u7684 preset \u65E0\u6548: ${t}\uFF0C\u5DF2\u6539\u7528 Medium`),"Medium")}function X(t){const e=o.resolve(__dirname,"..","..");return[o.join(e,"node_modules/@gamely/prometheus-cli/bin/cli.js"),o.join(e,"..","@gamely/prometheus-cli/bin/cli.js")].find(i=>s.pathExistsSync(i))}const Y=async(t=!0,e)=>{const n=o.join(e,"scripts"),i=await s.pathExists(o.join(n,"main.js"))||await s.pathExists(o.join(n,"main.ts")),r=await s.pathExists(o.join(n,"main.py")),c=await s.pathExists(o.join(n,"main.lua"));if(i){console.log("\u{1F680} \u5F00\u59CB\u6784\u5EFAJavaScript\u9879\u76EE...");const{build:d}=await import("vite"),l=o.join(e,"obfuscator.json");await s.pathExists(l)||(console.error("\u274C \u9519\u8BEF: \u5F53\u524D\u76EE\u5F55\u4E0D\u662F\u6709\u6548\u7684 \u5FEB\u70B9JS \u9879\u76EE"),console.error("\u8BF7\u786E\u4FDD\u76EE\u5F55\u5305\u542B\u4EE5\u4E0B\u6587\u4EF6:"),console.error(" - obfuscator.json"),process.exit(1));const j=await s.readJSON(l),m=j.scriptProtect===!0,{enabled:_,scriptProtect:y,...p}=j,f=o.join(e,t?"dist":"msbundle"),h=await I(n,n);await s.remove(f);const w=!t&&m?(0,E.createScriptProtectHelpers)():[];!t&&m&&console.log("\u{1F510} \u5DF2\u542F\u7528 JS \u539F\u751F\u4FDD\u62A4\uFF08scriptProtect=true\uFF09");for(const v of h)await d({root:e,build:{lib:{entry:{[o.basename(v,o.extname(v))]:`./scripts/${v}`},fileName:()=>v.replace(/\.ts$/,".js"),formats:["iife"],name:"KuaiJS"},outDir:t?"dist/scripts":"msbundle/scripts",emptyOutDir:!1,sourcemap:t,minify:!t,target:"safari15"},plugins:[(0,B.createStopGuardPlugin)(),...t?[]:[...m?[(0,E.createScriptProtectPlugin)(w)]:[],_?(0,H.default)({autoExcludeNodeModules:!0,threadPool:!0,options:{...p,target:"browser",debugProtection:!1,disableConsoleOutput:!1,domainLock:[],selfDefending:!1,renameGlobals:!1,renameProperties:!1,reservedNames:[...p.reservedNames||[],...w]}}):[],...m?[(0,E.createKjstEmbedPlugin)()]:[]]]})}if(t)return;const a=o.join(e,"msbundle");if(await s.ensureDir(a),(r||c)&&await s.copy(o.join(e,"scripts"),o.join(a,"scripts")),!r){if(c){const d=await U(e),l=o.join(a,"scripts");if(d.bundle?await(0,G.bundleLuaScripts)(l):console.log("\u2139\uFE0F \u5DF2\u5173\u95ED Lua \u5355\u6587\u4EF6\u5408\u5E76\uFF08obfuscator.json bundle=false\uFF09"),!d.enabled)console.log("\u2139\uFE0F \u5DF2\u5173\u95ED Lua \u6DF7\u6DC6\uFF08obfuscator.json enabled=false\uFF09");else{const j=[],m=async y=>{const p=await s.readdir(y,{withFileTypes:!0});for(const f of p){const h=o.join(y,f.name);f.isDirectory()?await m(h):f.isFile()&&f.name.endsWith(".lua")&&j.push(h)}};await m(l);const _=X(e);_||(console.error("\u274C \u672A\u627E\u5230 @gamely/prometheus-cli\uFF0C\u65E0\u6CD5\u6DF7\u6DC6 Lua"),process.exit(1));for(const y of j){const p=o.relative(l,y);console.log(`\u{1F6E0}\uFE0F \u6DF7\u6DC6 Lua: ${p} (preset=${d.preset})`);const f=(0,D.spawnSync)(process.execPath,[_,p,"--preset",d.preset],{cwd:l,encoding:"utf8"});f.status!==0&&(console.error("\u274C \u6DF7\u6DC6 Lua \u5931\u8D25:",p),console.error(f.stderr||f.stdout||""),process.exit(1));const h=p.replace(/\.lua$/,".obfuscated.lua"),w=o.join(l,h);await s.pathExists(w)&&(await s.remove(y),await s.move(w,y,{overwrite:!0}))}console.log("\u2705 Lua \u6DF7\u6DC6\u5B8C\u6210")}}}await s.copy(o.join(e,"res"),o.join(a,"res")),await s.copy(o.join(e,"ui"),o.join(a,"ui"));for(const d of["logo.jpg","logo.png"]){const l=o.join(e,d);await s.pathExists(l)&&await s.copy(l,o.join(a,d))}const u=o.join(e,"dist"),P=o.join(e,"package.json"),S=o.join(a,"package.json"),b=await s.readJSON(P);delete b.scripts,delete b.devDependencies,delete b.dependencies,await s.writeJSON(S,b,{spaces:2}),await s.emptyDir(u);const g=o.join(u,"ms.zip"),J=o.join(u,"ms.msbundle");await R(a,g),await s.rename(g,J),await s.remove(a)};exports.buildAll=Y;
|
package/docs/api/ui.md
CHANGED
|
@@ -119,6 +119,12 @@ ui.call("loadData", {
|
|
|
119
119
|
});
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
+
### 悬浮窗网页
|
|
123
|
+
|
|
124
|
+
越狱包从悬浮图标打开的网页,文件名固定为项目里的 `ui/floatingWindow.html`。没有这个文件时悬浮网页打不开。主界面 `package.json` 的 `ui.tabs` 不决定这个页面。
|
|
125
|
+
|
|
126
|
+
页面里用 `ms`。脚本用 `ui.callFloatingWindow`、`ui.evalFloatingWindow` 调用这个页面里 `registerUIFunc` 注册的函数。关闭、是否点空白关闭、窗口尺寸也写在这个页面里:`ms.closeWebWindow`、`ms.setWebWindowBlankClose`、`ms.setWebWindowSize`。
|
|
127
|
+
|
|
122
128
|
### callFloatingWindow - 调用越狱悬浮窗网页中的 JavaScript 函数
|
|
123
129
|
|
|
124
130
|
```typescript
|
|
@@ -474,6 +480,18 @@ ms.isTaskRunning()
|
|
|
474
480
|
|
|
475
481
|
### 配置管理方法
|
|
476
482
|
|
|
483
|
+
网页里的配置方法和脚本 `config` 模块读写的是同一份配置。网页写进去,脚本用下表对应的方法就能读到;脚本写进去,网页再取也是这个值。
|
|
484
|
+
|
|
485
|
+
| 网页 | 脚本 |
|
|
486
|
+
| ---- | ---- |
|
|
487
|
+
| `ms.setConfig(key, value)` | `config.set(key, value)` |
|
|
488
|
+
| `ms.getConfig(key)` | `config.get(key)` |
|
|
489
|
+
| `ms.removeConfig(key)` | `config.remove(key)` |
|
|
490
|
+
| `ms.getAllConfig()` | `config.all()` |
|
|
491
|
+
| `ms.setAllConfig(config)` | `config.setAll(config)` |
|
|
492
|
+
|
|
493
|
+
网页方法都返回 Promise。脚本方法直接返回结果。没有这个键时,网页 `ms.getConfig` 得到 `null`,脚本 `config.get` 得到 `undefined`。`ms.setAllConfig` 用传入对象替换整份配置,不在对象里的旧键会被清掉。
|
|
494
|
+
|
|
477
495
|
#### setConfig - 设置配置项
|
|
478
496
|
|
|
479
497
|
```typescript
|
package/docs/apicn/ui.md
CHANGED
|
@@ -107,6 +107,12 @@ $视图.调用函数("loadData", {
|
|
|
107
107
|
});
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
+
### 悬浮窗网页
|
|
111
|
+
|
|
112
|
+
越狱包从悬浮图标打开的网页,文件名固定为项目里的 `ui/floatingWindow.html`。没有这个文件时悬浮网页打不开。主界面 `package.json` 的 `ui.tabs` 不决定这个页面。
|
|
113
|
+
|
|
114
|
+
页面里用 `ms`。脚本用 `$视图.调用悬浮窗函数`、`$视图.执行悬浮窗JS代码`(英文是 `ui.callFloatingWindow`、`ui.evalFloatingWindow`)调用这个页面里 `registerUIFunc` 注册的函数。关闭、是否点空白关闭、窗口尺寸也写在这个页面里:`ms.closeWebWindow`、`ms.setWebWindowBlankClose`、`ms.setWebWindowSize`。
|
|
115
|
+
|
|
110
116
|
### 调用悬浮窗函数 - 调用越狱悬浮窗网页中的 JavaScript 函数
|
|
111
117
|
|
|
112
118
|
```typescript
|
|
@@ -462,6 +468,18 @@ ms.isTaskRunning()
|
|
|
462
468
|
|
|
463
469
|
### 配置管理方法
|
|
464
470
|
|
|
471
|
+
网页里的配置方法和脚本配置模块读写的是同一份配置。网页写进去,脚本用下表对应的方法就能读到;脚本写进去,网页再取也是这个值。
|
|
472
|
+
|
|
473
|
+
| 网页 | 脚本(英文 / 中文) |
|
|
474
|
+
| ---- | ------------------- |
|
|
475
|
+
| `ms.setConfig(key, value)` | `config.set` / `$配置.设置` |
|
|
476
|
+
| `ms.getConfig(key)` | `config.get` / `$配置.获取` |
|
|
477
|
+
| `ms.removeConfig(key)` | `config.remove` / `$配置.删除` |
|
|
478
|
+
| `ms.getAllConfig()` | `config.all` / `$配置.所有配置` |
|
|
479
|
+
| `ms.setAllConfig(config)` | `config.setAll` / `$配置.设置所有` |
|
|
480
|
+
|
|
481
|
+
网页方法都返回 Promise。脚本方法直接返回结果。没有这个键时,网页 `ms.getConfig` 得到 `null`,脚本 `config.get` / `$配置.获取` 得到 `undefined`。`ms.setAllConfig` 用传入对象替换整份配置,不在对象里的旧键会被清掉。
|
|
482
|
+
|
|
465
483
|
#### setConfig() - 设置配置项
|
|
466
484
|
|
|
467
485
|
```typescript
|
package/docs/apilua/ui.md
CHANGED
|
@@ -175,6 +175,12 @@ ui.call("loadData", {
|
|
|
175
175
|
})
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
+
### 悬浮窗网页
|
|
179
|
+
|
|
180
|
+
越狱包从悬浮图标打开的网页,文件名固定为项目里的 `ui/floatingWindow.html`。没有这个文件时悬浮网页打不开。主界面 `package.json` 的 `ui.tabs` 不决定这个页面。
|
|
181
|
+
|
|
182
|
+
页面里用 `ms`。脚本用 `ui.callFloatingWindow`、`ui.evalFloatingWindow` 调用这个页面里 `registerUIFunc` 注册的函数。关闭、是否点空白关闭、窗口尺寸也写在这个页面里:`ms.closeWebWindow`、`ms.setWebWindowBlankClose`、`ms.setWebWindowSize`。
|
|
183
|
+
|
|
178
184
|
### callFloatingWindow - 调用越狱悬浮窗网页中的 JavaScript 函数
|
|
179
185
|
|
|
180
186
|
```lua
|
|
@@ -515,6 +521,18 @@ ms.isTaskRunning()
|
|
|
515
521
|
|
|
516
522
|
### 配置管理方法
|
|
517
523
|
|
|
524
|
+
网页里的配置方法和脚本 `config` 模块读写的是同一份配置。网页写进去,脚本用下表对应的方法就能读到;脚本写进去,网页再取也是这个值。
|
|
525
|
+
|
|
526
|
+
| 网页 | 脚本 |
|
|
527
|
+
| ---- | ---- |
|
|
528
|
+
| `ms.setConfig(key, value)` | `config.set(key, value)` |
|
|
529
|
+
| `ms.getConfig(key)` | `config.get(key)` |
|
|
530
|
+
| `ms.removeConfig(key)` | `config.remove(key)` |
|
|
531
|
+
| `ms.getAllConfig()` | `config.all()` |
|
|
532
|
+
| `ms.setAllConfig(config)` | `config.setAll(config)` |
|
|
533
|
+
|
|
534
|
+
网页方法都返回 Promise。脚本方法直接返回结果。没有这个键时,网页 `ms.getConfig` 得到 `null`,脚本 `config.get` 得到 `nil`。`ms.setAllConfig` 用传入对象替换整份配置,不在对象里的旧键会被清掉。
|
|
535
|
+
|
|
518
536
|
#### setConfig - 设置配置项
|
|
519
537
|
|
|
520
538
|
```typescript
|
package/docs/apipython/ui.md
CHANGED
|
@@ -125,6 +125,12 @@ ui.call("loadData", {
|
|
|
125
125
|
})
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
+
### 悬浮窗网页
|
|
129
|
+
|
|
130
|
+
越狱包从悬浮图标打开的网页,文件名固定为项目里的 `ui/floatingWindow.html`。没有这个文件时悬浮网页打不开。主界面 `package.json` 的 `ui.tabs` 不决定这个页面。
|
|
131
|
+
|
|
132
|
+
页面里用 `ms`。脚本用 `ui.callFloatingWindow`、`ui.evalFloatingWindow` 调用这个页面里 `registerUIFunc` 注册的函数。关闭、是否点空白关闭、窗口尺寸也写在这个页面里:`ms.closeWebWindow`、`ms.setWebWindowBlankClose`、`ms.setWebWindowSize`。
|
|
133
|
+
|
|
128
134
|
### callFloatingWindow - 调用越狱悬浮窗网页中的 JavaScript 函数
|
|
129
135
|
|
|
130
136
|
```python
|
|
@@ -491,6 +497,18 @@ ms.isTaskRunning()
|
|
|
491
497
|
|
|
492
498
|
### 配置管理方法
|
|
493
499
|
|
|
500
|
+
网页里的配置方法和脚本 `config` 模块读写的是同一份配置。网页写进去,脚本用下表对应的方法就能读到;脚本写进去,网页再取也是这个值。
|
|
501
|
+
|
|
502
|
+
| 网页 | 脚本 |
|
|
503
|
+
| ---- | ---- |
|
|
504
|
+
| `ms.setConfig(key, value)` | `config.set(key, value)` |
|
|
505
|
+
| `ms.getConfig(key)` | `config.get(key)` |
|
|
506
|
+
| `ms.removeConfig(key)` | `config.remove(key)` |
|
|
507
|
+
| `ms.getAllConfig()` | `config.all()` |
|
|
508
|
+
| `ms.setAllConfig(config)` | `config.setAll(config)` |
|
|
509
|
+
|
|
510
|
+
网页方法都返回 Promise。脚本方法直接返回结果。没有这个键时,网页 `ms.getConfig` 得到 `null`,脚本 `config.get` 得到 `None`。`ms.setAllConfig` 用传入对象替换整份配置,不在对象里的旧键会被清掉。
|
|
511
|
+
|
|
494
512
|
#### setConfig - 设置配置项
|
|
495
513
|
|
|
496
514
|
```typescript
|