ms-vite-plugin 1.4.52 → 1.4.53

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.js CHANGED
@@ -1 +1 @@
1
- "use strict";var J=Object.create;var O=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var z=(t,e,i,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of $(e))!q.call(t,o)&&o!==i&&O(t,o,{get:()=>e[o],enumerable:!(s=x(e,o))||s.enumerable});return t};var L=(t,e,i)=>(i=t!=null?J(M(t)):{},z(e||!t||!t.__esModule?O(i,"default",{value:t,enumerable:!0}):i,t));var N=exports&&exports.__createBinding||(Object.create?(function(t,e,i,s){s===void 0&&(s=i);var o=Object.getOwnPropertyDescriptor(e,i);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(t,s,o)}):(function(t,e,i,s){s===void 0&&(s=i),t[s]=e[i]})),W=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),_=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(i){var s=[];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(s[s.length]=o);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(e!=null)for(var s=t(e),o=0;o<s.length;o++)s[o]!=="default"&&N(i,e,s[o]);return W(i,e),i}})(),D=exports&&exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildAll=void 0;const A=D(require("archiver")),P=require("child_process"),r=_(require("fs-extra")),E=_(require("os")),n=_(require("path")),K=require("./stopGuardPlugin"),T=D(require("vite-plugin-bundle-obfuscator"));async function C(t,e){const i=(0,A.default)("zip",{zlib:{level:9}}),s=r.createWriteStream(e);return new Promise((o,c)=>{i.directory(t,!1).on("error",a=>c(a)).pipe(s),s.on("close",()=>o()),i.finalize()})}async function G(t,e){const i=[];async function s(o){const c=await r.readdir(o,{withFileTypes:!0});for(const a of c){const u=n.resolve(o,a.name);a.isDirectory()?await s(u):a.isFile()&&(/^main\.(js|ts)$/.test(a.name)||/_thread\.(js|ts)$/.test(a.name))&&i.push(n.relative(e,u))}}return await s(t),i}function B(){const t=[{cmd:n.join(E.homedir(),".KuaiJSDevloper","python","python.exe"),args:["--version"]},{cmd:n.join(E.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 i=(0,P.spawnSync)(e.cmd,e.args,{encoding:"utf8"}),s=(i.stdout||i.stderr||"").trim();if(s&&/Python\s+3\.14(\.\d+)?/i.test(s))return{ok:!0,path:e.cmd,version:s}}catch{}return{ok:!1}}async function R(t){async function e(i){const s=await r.readdir(i,{withFileTypes:!0});for(const o of s){const c=n.join(i,o.name);if(o.isDirectory())if(o.name==="__pycache__"){const a=await r.readdir(c,{withFileTypes:!0});for(const u of a){const b=n.join(c,u.name);if(u.isFile()&&u.name.endsWith(".cpython-314.pyc")){const v=n.dirname(c),m=u.name.replace(/\.cpython-314\.pyc$/,".pyc"),w=n.join(v,m);await r.move(b,w,{overwrite:!0})}}try{await r.remove(c)}catch{}}else await e(c);else if(o.isFile())if(o.name.endsWith(".cpython-314.pyc")){const a=c.replace(".cpython-314.pyc",".pyc");await r.move(c,a,{overwrite:!0})}else o.name.endsWith(".py")&&await r.remove(c)}}await e(t)}const H=async(t=!0,e)=>{const i=n.join(e,"scripts"),s=await r.pathExists(n.join(i,"main.js"))||await r.pathExists(n.join(i,"main.ts")),o=await r.pathExists(n.join(i,"main.py")),c=await r.pathExists(n.join(i,"main.lua"));if(s){console.log("\u{1F680} \u5F00\u59CB\u6784\u5EFAJavaScript\u9879\u76EE...");const{build:l}=await import("vite"),f=n.join(e,"obfuscator.json");await r.pathExists(f)||(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 h=await r.readJSON(f),j=n.join(e,t?"dist":"msbundle"),d=await G(i,i);await r.remove(j);for(const p of d)await l({root:e,build:{lib:{entry:{[n.basename(p,n.extname(p))]:`./scripts/${p}`},fileName:()=>p.replace(/\.ts$/,".js"),formats:["iife"],name:"KuaiJS"},outDir:t?"dist/scripts":"msbundle/scripts",emptyOutDir:!1,sourcemap:t,minify:!t,target:"safari15"},plugins:[(0,K.createStopGuardPlugin)(),...t?[]:[h.enabled?(0,T.default)({autoExcludeNodeModules:!0,threadPool:!0,options:{...h,target:"browser",debugProtection:!1,disableConsoleOutput:!1,domainLock:[],selfDefending:!1,renameGlobals:!1,renameProperties:!1}}):[]]]})}if(t)return;const a=n.join(e,"msbundle");if(await r.ensureDir(a),(o||c)&&await r.copy(n.join(e,"scripts"),n.join(a,"scripts")),o){const l=B();if(l.ok){console.log(`\u2705 \u68C0\u6D4B\u5230 ${l.version} (${l.path})`);const f=(0,P.spawnSync)(l.path,["-m","compileall","scripts"],{encoding:"utf8",cwd:a});f.status===0?(console.log("\u2705 \u6210\u529F\u7F16\u8BD1\u6240\u6709 Python \u6587\u4EF6"),await R(n.join(a,"scripts"))):(console.error("\u274C \u7F16\u8BD1 Python \u6587\u4EF6\u5931\u8D25"),console.error(f.stderr),process.exit(1))}else console.warn("\u26A0\uFE0F \u672A\u68C0\u6D4B\u5230 Python 3.14\uFF0C\u8BF7\u786E\u4FDD\u5728\u76EE\u6807\u8FD0\u884C\u73AF\u5883\u5B89\u88C5 Python 3.14")}else if(c){const l=n.join(a,"scripts"),f=[],h=async d=>{const p=await r.readdir(d,{withFileTypes:!0});for(const y of p){const g=n.join(d,y.name);y.isDirectory()?await h(g):y.isFile()&&y.name.endsWith(".lua")&&f.push(g)}};await h(l);const j=n.resolve(process.cwd(),"node_modules/@gamely/prometheus-cli/bin/cli.js");await r.pathExists(j)||(console.error("\u274C \u672A\u627E\u5230 @gamely/prometheus-cli\uFF0C\u65E0\u6CD5\u6DF7\u6DC6 Lua"),process.exit(1));for(const d of f){const p=n.relative(l,d);console.log(`\u{1F6E0}\uFE0F \u6DF7\u6DC6 Lua: ${p}`);const y=(0,P.spawnSync)(process.execPath,[j,p,"--preset","Medium"],{cwd:l,encoding:"utf8"});y.status!==0&&(console.error("\u274C \u6DF7\u6DC6 Lua \u5931\u8D25:",p),console.error(y.stderr||y.stdout||""),process.exit(1));const g=p.replace(/\.lua$/,".obfuscated.lua"),S=n.join(l,g);await r.pathExists(S)&&(await r.remove(d),await r.move(S,d,{overwrite:!0}))}console.log("\u2705 Lua \u6DF7\u6DC6\u5B8C\u6210")}await r.copy(n.join(e,"res"),n.join(a,"res")),await r.copy(n.join(e,"ui"),n.join(a,"ui"));for(const l of["logo.jpg","logo.png"]){const f=n.join(e,l);await r.pathExists(f)&&await r.copy(f,n.join(a,l))}const u=n.join(e,"dist"),b=n.join(e,"package.json"),v=n.join(a,"package.json"),m=await r.readJSON(b);delete m.scripts,delete m.devDependencies,delete m.dependencies,await r.writeJSON(v,m,{spaces:2}),await r.emptyDir(u);const w=n.join(u,"ms.zip"),F=n.join(u,"ms.msbundle");await C(a,w),await r.rename(w,F),await r.remove(a)};exports.buildAll=H;
1
+ "use strict";var L=Object.create;var D=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var N=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of J(e))!z.call(t,i)&&i!==n&&D(t,i,{get:()=>e[i],enumerable:!(s=x(e,i))||s.enumerable});return t};var q=(t,e,n)=>(n=t!=null?L($(t)):{},N(e||!t||!t.__esModule?D(n,"default",{value:t,enumerable:!0}):n,t));var C=exports&&exports.__createBinding||(Object.create?(function(t,e,n,s){s===void 0&&(s=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,s,i)}):(function(t,e,n,s){s===void 0&&(s=n),t[s]=e[n]})),W=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 s=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(s[s.length]=i);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var s=t(e),i=0;i<s.length;i++)s[i]!=="default"&&C(n,e,s[i]);return W(n,e),n}})(),E=exports&&exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildAll=void 0;const A=E(require("archiver")),S=require("child_process"),r=O(require("fs-extra")),M=O(require("os")),o=O(require("path")),K=require("./stopGuardPlugin"),T=E(require("vite-plugin-bundle-obfuscator"));async function G(t,e){const n=(0,A.default)("zip",{zlib:{level:9}}),s=r.createWriteStream(e);return new Promise((i,c)=>{n.directory(t,!1).on("error",a=>c(a)).pipe(s),s.on("close",()=>i()),n.finalize()})}async function B(t,e){const n=[];async function s(i){const c=await r.readdir(i,{withFileTypes:!0});for(const a of c){const f=o.resolve(i,a.name);a.isDirectory()?await s(f):a.isFile()&&(/^main\.(js|ts)$/.test(a.name)||/_thread\.(js|ts)$/.test(a.name))&&n.push(o.relative(e,f))}}return await s(t),n}function R(){const t=[{cmd:o.join(M.homedir(),".KuaiJSDevloper","python","python.exe"),args:["--version"]},{cmd:o.join(M.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,S.spawnSync)(e.cmd,e.args,{encoding:"utf8"}),s=(n.stdout||n.stderr||"").trim();if(s&&/Python\s+3\.14(\.\d+)?/i.test(s))return{ok:!0,path:e.cmd,version:s}}catch{}return{ok:!1}}async function H(t){async function e(n){const s=await r.readdir(n,{withFileTypes:!0});for(const i of s){const c=o.join(n,i.name);if(i.isDirectory())if(i.name==="__pycache__"){const a=await r.readdir(c,{withFileTypes:!0});for(const f of a){const _=o.join(c,f.name);if(f.isFile()&&f.name.endsWith(".cpython-314.pyc")){const v=o.dirname(c),m=f.name.replace(/\.cpython-314\.pyc$/,".pyc"),w=o.join(v,m);await r.move(_,w,{overwrite:!0})}}try{await r.remove(c)}catch{}}else await e(c);else if(i.isFile())if(i.name.endsWith(".cpython-314.pyc")){const a=c.replace(".cpython-314.pyc",".pyc");await r.move(c,a,{overwrite:!0})}else i.name.endsWith(".py")&&await r.remove(c)}}await e(t)}const I=["Minify","Weak","Medium","Strong"];async function Q(t){const e=o.join(t,"obfuscator.json");if(!await r.pathExists(e))return{enabled:!0,preset:"Medium"};try{const n=await r.readJSON(e),s=n?.enabled!==!1,i=U(n?.preset);return{enabled:s,preset:i}}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"}}}function U(t){if(typeof t!="string")return"Medium";const e=I.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 V(t){return[o.join(t,"node_modules/@gamely/prometheus-cli/bin/cli.js"),o.join(t,"node_modules/ms-vite-plugin/node_modules/@gamely/prometheus-cli/bin/cli.js"),o.resolve(process.cwd(),"node_modules/@gamely/prometheus-cli/bin/cli.js")].find(n=>r.pathExistsSync(n))}const X=async(t=!0,e)=>{const n=o.join(e,"scripts"),s=await r.pathExists(o.join(n,"main.js"))||await r.pathExists(o.join(n,"main.ts")),i=await r.pathExists(o.join(n,"main.py")),c=await r.pathExists(o.join(n,"main.lua"));if(s){console.log("\u{1F680} \u5F00\u59CB\u6784\u5EFAJavaScript\u9879\u76EE...");const{build:l}=await import("vite"),u=o.join(e,"obfuscator.json");await r.pathExists(u)||(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 h=await r.readJSON(u),b=o.join(e,t?"dist":"msbundle"),j=await B(n,n);await r.remove(b);for(const d of j)await l({root:e,build:{lib:{entry:{[o.basename(d,o.extname(d))]:`./scripts/${d}`},fileName:()=>d.replace(/\.ts$/,".js"),formats:["iife"],name:"KuaiJS"},outDir:t?"dist/scripts":"msbundle/scripts",emptyOutDir:!1,sourcemap:t,minify:!t,target:"safari15"},plugins:[(0,K.createStopGuardPlugin)(),...t?[]:[h.enabled?(0,T.default)({autoExcludeNodeModules:!0,threadPool:!0,options:{...h,target:"browser",debugProtection:!1,disableConsoleOutput:!1,domainLock:[],selfDefending:!1,renameGlobals:!1,renameProperties:!1}}):[]]]})}if(t)return;const a=o.join(e,"msbundle");if(await r.ensureDir(a),(i||c)&&await r.copy(o.join(e,"scripts"),o.join(a,"scripts")),i){const l=R();if(l.ok){console.log(`\u2705 \u68C0\u6D4B\u5230 ${l.version} (${l.path})`);const u=(0,S.spawnSync)(l.path,["-m","compileall","scripts"],{encoding:"utf8",cwd:a});u.status===0?(console.log("\u2705 \u6210\u529F\u7F16\u8BD1\u6240\u6709 Python \u6587\u4EF6"),await H(o.join(a,"scripts"))):(console.error("\u274C \u7F16\u8BD1 Python \u6587\u4EF6\u5931\u8D25"),console.error(u.stderr),process.exit(1))}else console.warn("\u26A0\uFE0F \u672A\u68C0\u6D4B\u5230 Python 3.14\uFF0C\u8BF7\u786E\u4FDD\u5728\u76EE\u6807\u8FD0\u884C\u73AF\u5883\u5B89\u88C5 Python 3.14")}else if(c){const l=await Q(e);if(!l.enabled)console.log("\u2139\uFE0F \u5DF2\u5173\u95ED Lua \u6DF7\u6DC6\uFF08obfuscator.json enabled=false\uFF09");else{const u=o.join(a,"scripts"),h=[],b=async d=>{const y=await r.readdir(d,{withFileTypes:!0});for(const p of y){const g=o.join(d,p.name);p.isDirectory()?await b(g):p.isFile()&&p.name.endsWith(".lua")&&h.push(g)}};await b(u);const j=V(e);j||(console.error("\u274C \u672A\u627E\u5230 @gamely/prometheus-cli\uFF0C\u65E0\u6CD5\u6DF7\u6DC6 Lua"),process.exit(1));for(const d of h){const y=o.relative(u,d);console.log(`\u{1F6E0}\uFE0F \u6DF7\u6DC6 Lua: ${y} (preset=${l.preset})`);const p=(0,S.spawnSync)(process.execPath,[j,y,"--preset",l.preset],{cwd:u,encoding:"utf8"});p.status!==0&&(console.error("\u274C \u6DF7\u6DC6 Lua \u5931\u8D25:",y),console.error(p.stderr||p.stdout||""),process.exit(1));const g=y.replace(/\.lua$/,".obfuscated.lua"),P=o.join(u,g);await r.pathExists(P)&&(await r.remove(d),await r.move(P,d,{overwrite:!0}))}console.log("\u2705 Lua \u6DF7\u6DC6\u5B8C\u6210")}}await r.copy(o.join(e,"res"),o.join(a,"res")),await r.copy(o.join(e,"ui"),o.join(a,"ui"));for(const l of["logo.jpg","logo.png"]){const u=o.join(e,l);await r.pathExists(u)&&await r.copy(u,o.join(a,l))}const f=o.join(e,"dist"),_=o.join(e,"package.json"),v=o.join(a,"package.json"),m=await r.readJSON(_);delete m.scripts,delete m.devDependencies,delete m.dependencies,await r.writeJSON(v,m,{spaces:2}),await r.emptyDir(f);const w=o.join(f,"ms.zip"),F=o.join(f,"ms.msbundle");await G(a,w),await r.rename(w,F),await r.remove(a)};exports.buildAll=X;
@@ -37,7 +37,7 @@
37
37
  ├─ .npmrc ← npm 配置文件
38
38
  ├─ .prettierignore ← 代码格式化忽略文件(仅js项目)
39
39
  ├─ .prettierrc.yaml ← 代码格式化配置(需安装 Prettier 插件,仅js项目)
40
- ├─ obfuscator.json ← 代码混淆配置(javascript-obfuscator,仅js项目)
40
+ ├─ obfuscator.json ← 代码混淆配置(JS:javascript-obfuscator;Lua:Prometheus,可开关和选档位)
41
41
  ├─ package.json ← 项目依赖配置文件
42
42
  └─ tsconfig.json ← TypeScript 配置文件(用于js提示和网页提示)
43
43
  ```
@@ -9,6 +9,7 @@
9
9
 
10
10
  - 打开主脚本 `main.js | main.py | main.lua`,右键编辑器,选择 `快点JS` -> `打包应用`
11
11
  - 输入在开发者后台->网络验证管理->软件列表 中获取的 `AppId` 字段
12
+ - JS / Lua 项目可编辑根目录 `obfuscator.json` 决定打包时是否混淆、用哪档强度;Python 打包编译为 `.pyc`,没有该混淆配置
12
13
  - 注意:上传到快点JS热更新服务后,可通过开发者后台->网络验证管理->软件列表的软件编号进行分发
13
14
  - 注意:快点JS上可通过软件面板,输入软件编号进行搜索加载应用
14
15
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ms-vite-plugin",
3
- "version": "1.4.52",
3
+ "version": "1.4.53",
4
4
  "type": "commonjs",
5
5
  "license": "MIT",
6
6
  "publishConfig": {