ms-vite-plugin 1.4.80 → 1.4.82
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 +1 -1
- package/dist/luaObfuscator/addVararg.js +1 -1
- package/dist/luaObfuscator/flatten.js +1 -1
- package/dist/luaObfuscator/rename.js +1 -1
- package/dist/luaObfuscator/scope.js +1 -1
- package/dist/mcp/image-codec.d.ts +10 -0
- package/dist/mcp/image-codec.js +1 -0
- package/dist/mcp/image-tools.js +5 -8
- package/package.json +4 -2
package/dist/build.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var F=Object.create;var J=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var q=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var C=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of N(e))!z.call(t,s)&&s!==o&&J(t,s,{get:()=>e[s],enumerable:!(i=$(e,s))||i.enumerable});return t};var W=(t,e,o)=>(o=t!=null?F(q(t)):{},C(e||!t||!t.__esModule?J(o,"default",{value:t,enumerable:!0}):o,t));var K=exports&&exports.__createBinding||(Object.create?(function(t,e,o,i){i===void 0&&(i=o);var s=Object.getOwnPropertyDescriptor(e,o);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[o]}}),Object.defineProperty(t,i,s)}):(function(t,e,o,i){i===void 0&&(i=o),t[i]=e[o]})),T=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),E=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(o){var i=[];for(var s in o)Object.prototype.hasOwnProperty.call(o,s)&&(i[i.length]=s);return i},t(e)};return function(e){if(e&&e.__esModule)return e;var o={};if(e!=null)for(var i=t(e),s=0;s<i.length;s++)i[s]!=="default"&&K(o,e,i[s]);return T(o,e),o}})(),L=exports&&exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildAll=void 0;const A=L(require("archiver")),P=require("child_process"),r=E(require("fs-extra")),M=E(require("os")),n=E(require("path")),B=require("./stopGuardPlugin"),G=require("./luaBundle"),x=require("./scriptProtect"),H=L(require("vite-plugin-bundle-obfuscator"));async function R(t,e){const o=(0,A.default)("zip",{zlib:{level:9}}),i=r.createWriteStream(e);return new Promise((s,a)=>{o.directory(t,!1).on("error",c=>a(c)).pipe(i),i.on("close",()=>s()),o.finalize()})}function I(t){const e=n.join(t,"node_modules","typescript","lib","tsc.js");return r.pathExistsSync(e)?e:void 0}function Q(t){const e=n.join(t,"tsconfig.json");r.pathExistsSync(e)||(console.error("\u274C \u672A\u627E\u5230 tsconfig.json\uFF0C\u65E0\u6CD5\u8FDB\u884C\u7C7B\u578B\u6821\u9A8C"),process.exit(1));const o=I(t);o||(console.error("\u274C \u672A\u627E\u5230 typescript\uFF0C\u8BF7\u5B89\u88C5\u540E\u91CD\u8BD5"),process.exit(1));const i=n.join(t,"tsconfig.kuaijs-build.json");r.writeJsonSync(i,{extends:"./tsconfig.json",include:["env.d.ts","scripts/**/*"],exclude:["node_modules","dist","msbundle","ui","res"],compilerOptions:{noEmit:!0,allowJs:!0,checkJs:!0,skipLibCheck:!0}}),console.log("\u{1F50E} \u6B63\u5728\u8FDB\u884C\u7C7B\u578B\u6821\u9A8C...");try{const s=(0,P.spawnSync)(process.execPath,[o,"--noEmit","--pretty","-p",i],{cwd:t,stdio:"inherit"});s.status!==0&&(console.error("\u274C \u7C7B\u578B\u6821\u9A8C\u5931\u8D25"),process.exit(s.status??1))}finally{r.removeSync(i)}console.log("\u2705 \u7C7B\u578B\u6821\u9A8C\u901A\u8FC7")}async function U(t,e){const o=[];async function i(s){const a=await r.readdir(s,{withFileTypes:!0});for(const c of a){const f=n.resolve(s,c.name);c.isDirectory()?await i(f):c.isFile()&&(/^main\.(js|ts)$/.test(c.name)||/_thread\.(js|ts)$/.test(c.name))&&o.push(n.relative(e,f))}}return await i(t),o}function V(){const t=[{cmd:n.join(M.homedir(),".KuaiJSDevloper","python","python.exe"),args:["--version"]},{cmd:n.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 o=(0,P.spawnSync)(e.cmd,e.args,{encoding:"utf8"}),i=(o.stdout||o.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 X(t){async function e(o){const i=await r.readdir(o,{withFileTypes:!0});for(const s of i){const a=n.join(o,s.name);if(s.isDirectory())if(s.name==="__pycache__"){const c=await r.readdir(a,{withFileTypes:!0});for(const f of c){const S=n.join(a,f.name);if(f.isFile()&&f.name.endsWith(".cpython-314.pyc")){const O=n.dirname(a),b=f.name.replace(/\.cpython-314\.pyc$/,".pyc"),w=n.join(O,b);await r.move(S,w,{overwrite:!0})}}try{await r.remove(a)}catch{}}else await e(a);else if(s.isFile())if(s.name.endsWith(".cpython-314.pyc")){const c=a.replace(".cpython-314.pyc",".pyc");await r.move(a,c,{overwrite:!0})}else s.name.endsWith(".py")&&await r.remove(a)}}await e(t)}const Y=["Minify","Weak","Medium","Strong"];async function Z(t){const e=n.join(t,"obfuscator.json");if(!await r.pathExists(e))return{enabled:!0,preset:"Medium",bundle:!0};try{const o=await r.readJSON(e),i=o?.enabled!==!1,s=o?.bundle!==!1,a=k(o?.preset);return{enabled:i,preset:a,bundle:s}}catch(o){return console.error("\u274C \u65E0\u6CD5\u8BFB\u53D6 obfuscator.json"),console.error(o instanceof Error?o.message:String(o)),process.exit(1),{enabled:!0,preset:"Medium",bundle:!0}}}function k(t){if(typeof t!="string")return"Medium";const e=Y.find(o=>o.toLowerCase()===t.trim().toLowerCase());return e||(console.warn(`\u26A0\uFE0F obfuscator.json \u7684 preset \u65E0\u6548: ${t}\uFF0C\u5DF2\u6539\u7528 Medium`),"Medium")}function ee(t){return[n.join(t,"node_modules/@gamely/prometheus-cli/bin/cli.js"),n.join(t,"node_modules/ms-vite-plugin/node_modules/@gamely/prometheus-cli/bin/cli.js"),n.resolve(process.cwd(),"node_modules/@gamely/prometheus-cli/bin/cli.js")].find(o=>r.pathExistsSync(o))}const te=async(t=!0,e)=>{const o=n.join(e,"scripts"),i=await r.pathExists(n.join(o,"main.js"))||await r.pathExists(n.join(o,"main.ts")),s=await r.pathExists(n.join(o,"main.py")),a=await r.pathExists(n.join(o,"main.lua"));if(i){console.log("\u{1F680} \u5F00\u59CB\u6784\u5EFAJavaScript\u9879\u76EE..."),Q(e);const{build:l}=await import("vite"),u=n.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 j=await r.readJSON(u),m=j.scriptProtect===!0,{enabled:_,scriptProtect:y,...p}=j,d=n.join(e,t?"dist":"msbundle"),h=await U(o,o);await r.remove(d);const g=!t&&m?(0,x.createScriptProtectHelpers)():[];!t&&m&&console.log("\u{1F510} \u5DF2\u542F\u7528 JS \u539F\u751F\u4FDD\u62A4\uFF08scriptProtect=true\uFF09");for(const v of h)await l({root:e,build:{lib:{entry:{[n.basename(v,n.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,x.createScriptProtectPlugin)(g)]:[],_?(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||[],...g]}}):[],...m?[(0,x.createKjstEmbedPlugin)()]:[]]]})}if(t)return;const c=n.join(e,"msbundle");if(await r.ensureDir(c),(s||a)&&await r.copy(n.join(e,"scripts"),n.join(c,"scripts")),s){const l=V();if(l.ok){console.log(`\u2705 \u68C0\u6D4B\u5230 ${l.version} (${l.path})`);const u=(0,P.spawnSync)(l.path,["-m","compileall","scripts"],{encoding:"utf8",cwd:c});u.status===0?(console.log("\u2705 \u6210\u529F\u7F16\u8BD1\u6240\u6709 Python \u6587\u4EF6"),await X(n.join(c,"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(a){const l=await Z(e),u=n.join(c,"scripts");if(l.bundle?await(0,G.bundleLuaScripts)(u):console.log("\u2139\uFE0F \u5DF2\u5173\u95ED Lua \u5355\u6587\u4EF6\u5408\u5E76\uFF08obfuscator.json bundle=false\uFF09"),!l.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 r.readdir(y,{withFileTypes:!0});for(const d of p){const h=n.join(y,d.name);d.isDirectory()?await m(h):d.isFile()&&d.name.endsWith(".lua")&&j.push(h)}};await m(u);const _=ee(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=n.relative(u,y);console.log(`\u{1F6E0}\uFE0F \u6DF7\u6DC6 Lua: ${p} (preset=${l.preset})`);const d=(0,P.spawnSync)(process.execPath,[_,p,"--preset",l.preset],{cwd:u,encoding:"utf8"});d.status!==0&&(console.error("\u274C \u6DF7\u6DC6 Lua \u5931\u8D25:",p),console.error(d.stderr||d.stdout||""),process.exit(1));const h=p.replace(/\.lua$/,".obfuscated.lua"),g=n.join(u,h);await r.pathExists(g)&&(await r.remove(y),await r.move(g,y,{overwrite:!0}))}console.log("\u2705 Lua \u6DF7\u6DC6\u5B8C\u6210")}}await r.copy(n.join(e,"res"),n.join(c,"res")),await r.copy(n.join(e,"ui"),n.join(c,"ui"));for(const l of["logo.jpg","logo.png"]){const u=n.join(e,l);await r.pathExists(u)&&await r.copy(u,n.join(c,l))}const f=n.join(e,"dist"),S=n.join(e,"package.json"),O=n.join(c,"package.json"),b=await r.readJSON(S);delete b.scripts,delete b.devDependencies,delete b.dependencies,await r.writeJSON(O,b,{spaces:2}),await r.emptyDir(f);const w=n.join(f,"ms.zip"),D=n.join(f,"ms.msbundle");await R(c,w),await r.rename(w,D),await r.remove(c)};exports.buildAll=te;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.addVararg=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.addVararg=o;function c(t){t.vararg=!0,s(t.body.body)}function a(t){switch(t.type){case"FuncExpr":c(t);break;case"UnaryExpr":a(t.arg);break;case"BinaryExpr":a(t.left),a(t.right);break;case"TableExpr":for(const e of t.fields)e.kind==="index"&&a(e.key),a(e.value);break;case"IndexExpr":a(t.object),a(t.index);break;case"MemberExpr":a(t.object);break;case"CallExpr":a(t.callee);for(const e of t.args)a(e);break;case"MethodCallExpr":a(t.object);for(const e of t.args)a(e);break;case"ParenExpr":a(t.exp);break;default:break}}function s(t){for(const e of t)switch(e.type){case"DoStat":case"WhileStat":case"RepeatStat":case"ForNumStat":case"ForInStat":if(e.type==="WhileStat"&&a(e.cond),e.type==="RepeatStat"&&a(e.cond),e.type==="ForNumStat"&&(a(e.start),a(e.end),e.step&&a(e.step)),e.type==="ForInStat")for(const r of e.exps)a(r);s(e.body.body);break;case"IfStat":for(const r of e.clauses)a(r.cond),s(r.body.body);e.elseBody&&s(e.elseBody.body);break;case"FuncStat":case"LocalFuncStat":c(e.func);break;case"LocalStat":if(e.exps)for(const r of e.exps)a(r);break;case"AssignStat":for(const r of e.vars)a(r);for(const r of e.exps)a(r);break;case"CallStat":a(e.exp);break;case"ReturnStat":for(const r of e.exps)a(r);break;default:break}}function o(t){s(t.body)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.flattenControlFlow=C;function m(e){return{type:"NumberLiteral",raw:String(e),value:e}}function y(e){return{type:"NameExpr",name:e}}function b(e,t){return{type:"AssignStat",vars:e.map(a=>y(a)),exps:t}}function u(e,t){return b([e.stateName],[typeof t=="number"?m(t):t])}function k(e,t,a){return{type:"BinaryExpr",op:"or",left:{type:"BinaryExpr",op:"and",left:y(e),right:m(t)},right:m(a)}}function E(e,t,a){return{type:"BinaryExpr",op:e,left:t,right:a}}function S(e){const t=`__t${e.nextTemp}`;return e.nextTemp+=1,e.temps.push(t),t}function x(e){const t=e.nextState;return e.nextState+=1,e.states.set(t,[]),t}function r(e,t,a){e.states.get(t).push(a)}function L(e,t){for(const a of e)if(a.type==="LocalStat")for(const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.flattenControlFlow=C;function m(e){return{type:"NumberLiteral",raw:String(e),value:e}}function y(e){return{type:"NameExpr",name:e}}function b(e,t){return{type:"AssignStat",vars:e.map(a=>y(a)),exps:t}}function u(e,t){return b([e.stateName],[typeof t=="number"?m(t):t])}function k(e,t,a){return{type:"BinaryExpr",op:"or",left:{type:"BinaryExpr",op:"and",left:y(e),right:m(t)},right:m(a)}}function E(e,t,a){return{type:"BinaryExpr",op:e,left:t,right:a}}function S(e){const t=`__t${e.nextTemp}`;return e.nextTemp+=1,e.temps.push(t),t}function x(e){const t=e.nextState;return e.nextState+=1,e.states.set(t,[]),t}function r(e,t,a){e.states.get(t).push(a)}function L(e,t){for(const a of e)if(a.type==="LocalStat")for(const n of a.names)t.push(n.name);else if(a.type==="LocalFuncStat")t.push(a.name);else if(a.type==="ForNumStat")t.push(a.name),L(a.body.body,t);else if(a.type==="ForInStat")t.push(...a.names),L(a.body.body,t);else if(a.type==="DoStat"||a.type==="WhileStat"||a.type==="RepeatStat")L(a.body.body,t);else if(a.type==="IfStat"){for(const n of a.clauses)L(n.body.body,t);a.elseBody&&L(a.elseBody.body,t)}}function h(e,t,a,n){if(e.length===0)return t;const p=e.map(()=>x(a));for(let s=0;s<e.length;s+=1){const c=e[s];c.type==="LabelStat"&&a.userLabels.set(c.name,p[s])}for(let s=0;s<e.length;s+=1){const c=s+1<e.length?p[s+1]:t;I(a,p[s],e[s],c,n)}return p[0]}function I(e,t,a,n,p){switch(a.type){case"EmptyStat":case"LabelStat":r(e,t,u(e,n));return;case"AssignStat":case"CallStat":case"FuncStat":r(e,t,a),r(e,t,u(e,n));return;case"LocalStat":a.exps&&a.exps.length>0&&r(e,t,b(a.names.map(s=>s.name),a.exps)),r(e,t,u(e,n));return;case"LocalFuncStat":r(e,t,b([a.name],[a.func])),r(e,t,u(e,n));return;case"ReturnStat":r(e,t,a);return;case"BreakStat":r(e,t,u(e,p));return;case"GotoStat":{const s=e.userLabels.get(a.name);if(s===void 0)throw new Error(`goto \u672A\u5B9A\u4E49\u6807\u7B7E ::${a.name}::`);r(e,t,u(e,s));return}case"DoStat":r(e,t,u(e,h(a.body.body,n,e,p)));return;case"IfStat":{const s=S(e);let c=t;for(let l=0;l<a.clauses.length;l+=1){const f=l===a.clauses.length-1,d=h(a.clauses[l].body.body,n,e,p);let i=n;f?a.elseBody&&(i=h(a.elseBody.body,n,e,p)):i=x(e),r(e,c,b([s],[a.clauses[l].cond])),r(e,c,u(e,k(s,d,i))),f||(c=i)}a.clauses.length===0&&r(e,t,u(e,n));return}case"WhileStat":{const s=S(e),c=h(a.body.body,t,e,n);r(e,t,b([s],[a.cond])),r(e,t,u(e,k(s,c,n)));return}case"RepeatStat":{const s=S(e),c=x(e),l=h(a.body.body,c,e,n);r(e,t,u(e,l)),r(e,c,b([s],[a.cond])),r(e,c,u(e,k(s,n,l)));return}case"ForNumStat":{const s=a.name,c=S(e),l=S(e),f=S(e),d=x(e),i=x(e),F=x(e),g=x(e),N=h(a.body.body,g,e,n);r(e,t,b([s],[a.start])),r(e,t,b([c],[a.end])),r(e,t,b([l],[a.step??m(1)])),r(e,t,u(e,d)),r(e,d,b([f],[E(">=",y(l),m(0))])),r(e,d,u(e,k(f,i,F))),r(e,i,b([f],[E("<=",y(s),y(c))])),r(e,i,u(e,k(f,N,n))),r(e,F,b([f],[E(">=",y(s),y(c))])),r(e,F,u(e,k(f,N,n))),r(e,g,b([s],[E("+",y(s),y(l))])),r(e,g,u(e,d));return}case"ForInStat":{const s=S(e),c=S(e),l=S(e),f=S(e),d=x(e),i=[b([l],[y(a.names[0])]),...a.body.body],F=h(i,d,e,n),g=a.exps.slice();for(;g.length<3;)g.push({type:"NilLiteral"});r(e,t,b([s,c,l],g.slice(0,3))),r(e,t,u(e,d)),r(e,d,{type:"AssignStat",vars:a.names.map(N=>y(N)),exps:[{type:"CallExpr",callee:y(s),args:[y(c),y(l)]}]}),r(e,d,b([f],[E("~=",y(a.names[0]),{type:"NilLiteral"})])),r(e,d,u(e,k(f,F,n)));return}default:r(e,t,u(e,n))}}function v(e,t){const a=e.slice();let n=t>>>0||1;for(let p=a.length-1;p>0;p-=1){n=Math.imul(n,1664525)+1013904223>>>0;const s=n%(p+1),c=a[p];a[p]=a[s],a[s]=c}return a}function w(e,t){if(e.length===0)return e;const a={states:new Map,temps:[],nextState:1,nextTemp:1,stateName:"__s",userLabels:new Map},n=[];L(e,n);const p=h(e,0,a,0),s=[...new Set([...n,...a.temps,a.stateName])],c=v([...a.states.keys()],t).map(l=>({cond:E("==",y(a.stateName),m(l)),body:{type:"Block",body:a.states.get(l)}}));return[{type:"LocalStat",names:s.map(l=>({name:l}))},b([a.stateName],[m(p)]),{type:"WhileStat",cond:E("~=",y(a.stateName),m(0)),body:{type:"Block",body:[{type:"IfStat",clauses:c}]}}]}function o(e,t){switch(e.type){case"FuncExpr":B(e.body.body,t),e.body.body=w(e.body.body,t);break;case"UnaryExpr":o(e.arg,t);break;case"BinaryExpr":o(e.left,t),o(e.right,t);break;case"TableExpr":for(const a of e.fields)a.kind==="index"&&o(a.key,t),o(a.value,t);break;case"IndexExpr":o(e.object,t),o(e.index,t);break;case"MemberExpr":o(e.object,t);break;case"CallExpr":o(e.callee,t);for(const a of e.args)o(a,t);break;case"MethodCallExpr":o(e.object,t);for(const a of e.args)o(a,t);break;case"ParenExpr":o(e.exp,t);break;default:break}}function B(e,t){for(const a of e)switch(a.type){case"DoStat":case"WhileStat":case"RepeatStat":case"ForNumStat":case"ForInStat":if((a.type==="WhileStat"||a.type==="RepeatStat")&&o(a.cond,t),a.type==="ForNumStat"&&(o(a.start,t),o(a.end,t),a.step&&o(a.step,t)),a.type==="ForInStat")for(const n of a.exps)o(n,t);B(a.body.body,t);break;case"IfStat":for(const n of a.clauses)o(n.cond,t),B(n.body.body,t);a.elseBody&&B(a.elseBody.body,t);break;case"FuncStat":case"LocalFuncStat":B(a.func.body.body,t),a.func.body.body=w(a.func.body.body,t);break;case"LocalStat":if(a.exps)for(const n of a.exps)o(n,t);break;case"AssignStat":for(const n of a.vars)o(n,t);for(const n of a.exps)o(n,t);break;case"CallStat":o(a.exp,t);break;case"ReturnStat":for(const n of a.exps)o(n,t);break;default:break}}function C(e,t){B(e.body,t),e.body=w(e.body,t)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shortName=o,exports.renameLocals=c;const u=require("./reserved"),d=require("./scope"),l="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function o(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shortName=o,exports.renameLocals=c;const u=require("./reserved"),d=require("./scope"),l="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function o(r){let e=r,t="";do t=l[e%l.length]+t,e=Math.floor(e/l.length)-1;while(e>=0);return u.luaKeywords.has(t)?`_${t}`:t}function c(r){let e=0;const t=new Set;(0,d.collectAndRename)(r,(a,s)=>{if(a.newName!==a.original)return;let n=o(e);for(e+=1;s.has(n)||t.has(n)||u.luaKeywords.has(n);)n=o(e),e+=1;a.newName=n,t.add(n),s.add(n)})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveLocal=i,exports.collectAndRename=x;function i(e,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveLocal=i,exports.collectAndRename=x;function i(e,c){let n=e;for(;n;){const a=n.locals.get(c);if(a)return a;n=n.parent}}function o(e){return{parent:e,locals:new Map}}function f(e,c){const n=e.locals.get(c);if(n)return n;const a={original:c,newName:c};return e.locals.set(c,a),a}function x(e,c){const n=new Set,a={locals:new Map};d(e.body,a,n,c)}function u(e,c,n,a){d(e.body,c,n,a)}function d(e,c,n,a){for(const s of e)b(s,c,n,a)}function m(e,c,n,a){const s=o(c),r=e.params.slice();for(let l=0;l<r.length;l+=1){const p=f(s,r[l]);a(p,n),e.params[l]=p.newName}u(e.body,s,n,a)}function b(e,c,n,a){switch(e.type){case"EmptyStat":case"BreakStat":case"GotoStat":case"LabelStat":return;case"DoStat":u(e.body,o(c),n,a);return;case"WhileStat":t(e.cond,c,n,a),u(e.body,o(c),n,a);return;case"RepeatStat":{const s=o(c);u(e.body,s,n,a),t(e.cond,s,n,a);return}case"IfStat":for(const s of e.clauses)t(s.cond,c,n,a),u(s.body,o(c),n,a);e.elseBody&&u(e.elseBody,o(c),n,a);return;case"ForNumStat":{t(e.start,c,n,a),t(e.end,c,n,a),e.step&&t(e.step,c,n,a);const s=o(c),r=f(s,e.name);a(r,n),e.name=r.newName,u(e.body,s,n,a);return}case"ForInStat":{for(const r of e.exps)t(r,c,n,a);const s=o(c);for(let r=0;r<e.names.length;r+=1){const l=f(s,e.names[r]);a(l,n),e.names[r]=l.newName}u(e.body,s,n,a);return}case"FuncStat":{const s=i(c,e.name.base);s&&(e.name.base=s.newName),m(e.func,c,n,a);return}case"LocalFuncStat":{const s=f(c,e.name);a(s,n),e.name=s.newName,m(e.func,c,n,a);return}case"LocalStat":if(e.exps)for(const s of e.exps)t(s,c,n,a);for(let s=0;s<e.names.length;s+=1){const r=f(c,e.names[s].name);a(r,n),e.names[s].name=r.newName}return;case"AssignStat":for(const s of e.vars)t(s,c,n,a);for(const s of e.exps)t(s,c,n,a);return;case"CallStat":t(e.exp,c,n,a);return;case"ReturnStat":for(const s of e.exps)t(s,c,n,a);return}}function t(e,c,n,a){switch(e.type){case"NilLiteral":case"BoolLiteral":case"NumberLiteral":case"StringLiteral":case"VarargExpr":return;case"NameExpr":{const s=i(c,e.name);s&&(e.name=s.newName);return}case"UnaryExpr":t(e.arg,c,n,a);return;case"BinaryExpr":t(e.left,c,n,a),t(e.right,c,n,a);return;case"FuncExpr":m(e,c,n,a);return;case"TableExpr":for(const s of e.fields)s.kind==="index"&&t(s.key,c,n,a),t(s.value,c,n,a);return;case"IndexExpr":t(e.object,c,n,a),t(e.index,c,n,a);return;case"MemberExpr":t(e.object,c,n,a);return;case"CallExpr":t(e.callee,c,n,a);for(const s of e.args)t(s,c,n,a);return;case"MethodCallExpr":t(e.object,c,n,a);for(const s of e.args)t(s,c,n,a);return;case"ParenExpr":t(e.exp,c,n,a);return}}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type RgbaImage = {
|
|
2
|
+
data: Buffer;
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
};
|
|
6
|
+
export declare function decodeImageToRgba(input: string | Buffer): Promise<RgbaImage>;
|
|
7
|
+
export declare function cropRgbaImage(image: RgbaImage, x: number, y: number, width: number, height: number): RgbaImage;
|
|
8
|
+
export declare function encodeRgbaToPngFile(image: RgbaImage, outputPath: string): Promise<{
|
|
9
|
+
size: number;
|
|
10
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var l=exports&&exports.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),s=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),g=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(r[r.length]=a);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),a=0;a<r.length;a++)r[a]!=="default"&&l(n,t,r[a]);return s(n,t),n}})(),h=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.decodeImageToRgba=y,exports.cropRgbaImage=P,exports.encodeRgbaToPngFile=v;const f=g(require("fs-extra")),_=h(require("jpeg-js")),o=require("pngjs");function w(e){return e.length>=8&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71&&e[4]===13&&e[5]===10&&e[6]===26&&e[7]===10}function p(e){return e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255}function d(e){return Buffer.isBuffer(e)?e:Buffer.from(e)}async function y(e){const t=typeof e=="string"?await f.readFile(e):e;if(t.length===0)throw new Error("\u56FE\u7247\u5185\u5BB9\u4E3A\u7A7A");if(w(t)){const n=o.PNG.sync.read(t);return{data:d(n.data),width:n.width,height:n.height}}if(p(t)){const n=_.default.decode(t,{formatAsRGBA:!0,maxMemoryUsageInMB:256});return{data:d(n.data),width:n.width,height:n.height}}throw new Error("\u4EC5\u652F\u6301 PNG / JPEG \u56FE\u7247")}function P(e,t,n,r,a){if(t+r>e.width||n+a>e.height)throw new Error(`\u88C1\u5207\u8303\u56F4\u8D85\u51FA\u56FE\u7247\u5C3A\u5BF8: image=${e.width}x${e.height}, crop=${t},${n},${r},${a}`);const c=Buffer.alloc(r*a*4);for(let i=0;i<a;i+=1){const u=((n+i)*e.width+t)*4;e.data.copy(c,i*r*4,u,u+r*4)}return{data:c,width:r,height:a}}async function v(e,t){const n=new o.PNG({width:e.width,height:e.height});e.data.copy(n.data);const r=o.PNG.sync.write(n);return await f.outputFile(t,r),{size:r.length}}
|
package/dist/mcp/image-tools.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
"use strict";var B=exports&&exports.__createBinding||(Object.create?(function(
|
|
2
|
-
`)}async function
|
|
3
|
-
`)}async function
|
|
4
|
-
`)}async function
|
|
5
|
-
`)}function
|
|
6
|
-
`))}),r.registerTool("screen_crop",{title:"Screen Crop",description:"\u4ECE\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u622A\u56FE\u4E2D\u6309\u5750\u6807\u88C1\u5207 PNG \u6587\u4EF6\uFF0C\u9002\u5408\u81EA\u52A8\u622A\u53D6\u627E\u56FE\u6A21\u677F\u3002",inputSchema:{x:l.number().int().min(0).describe("\u88C1\u5207\u8D77\u70B9 x"),y:l.number().int().min(0).describe("\u88C1\u5207\u8D77\u70B9 y"),width:l.number().int().min(1).describe("\u88C1\u5207\u5BBD\u5EA6"),height:l.number().int().min(1).describe("\u88C1\u5207\u9AD8\u5EA6"),outputPath:l.string().min(1).optional().describe("\u53EF\u9009\u8F93\u51FA\u8DEF\u5F84\uFF1B\u4E0D\u4F20\u5219\u5199\u5165\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55")}},async({x:t,y:e,width:n,height:i,outputPath:o})=>{const a=await(0,f.resolveRuntimeHttpTarget)(),s=await(0,C.getScreenshotOnDevice)((0,f.createRuntimeHttpRequestOptions)(a)),c=await(0,d.default)(s).metadata(),u=c.width??0,p=c.height??0;if(t+n>u||e+i>p)return(0,f.createTextToolResult)(`\u88C1\u5207\u8303\u56F4\u8D85\u51FA\u622A\u56FE\u5C3A\u5BF8: image=${u}x${p}, crop=${t},${e},${n},${i}`,!0);const m=D(o,"ms-mcp-screen-crop","png");await b.ensureDir(h.dirname(m));const g=await(0,d.default)(s).extract({left:t,top:e,width:n,height:i}).png().toFile(m);return(0,f.createTextToolResult)(["\u5C4F\u5E55\u88C1\u56FE\u6210\u529F",`device: ${a.label}`,`output: ${m}`,`screen: ${u}x${p}`,`crop: x=${t}, y=${e}, width=${n}, height=${i}`,`size: ${g.size} bytes`].join(`
|
|
7
|
-
`))}),r.registerTool("image_pick_color",{title:"Image Pick Color",description:"\u8BFB\u53D6\u672C\u5730\u56FE\u7247\u6307\u5B9A\u5750\u6807\u989C\u8272\uFF0C\u8FD4\u56DE hex/rgb/rgba\uFF0C\u9002\u5408\u751F\u6210\u627E\u8272\u4EE3\u7801\u3002",inputSchema:{imagePath:l.string().min(1).describe("\u8F93\u5165\u56FE\u7247\u8DEF\u5F84"),x:l.number().int().min(0).describe("\u76EE\u6807\u5750\u6807 x"),y:l.number().int().min(0).describe("\u76EE\u6807\u5750\u6807 y"),radius:l.number().int().min(0).max(20).optional().default(0).describe("\u91C7\u6837\u534A\u5F84\uFF0C0 \u8868\u793A\u53EA\u53D6\u5355\u70B9\uFF0C\u9ED8\u8BA4 0")}},async({imagePath:t,x:e,y:n,radius:i})=>{const o=await _(t),a=await T(o),s=S(a.data,a.width,a.height,e,n,i);return(0,f.createTextToolResult)(x(o,e,n,i,a.width,a.height,s.color,s.sampleCount))}),r.registerTool("screen_pick_color",{title:"Screen Pick Color",description:"\u4ECE\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u622A\u56FE\u4E2D\u8BFB\u53D6\u6307\u5B9A\u5750\u6807\u989C\u8272\uFF0C\u8FD4\u56DE hex/rgb/rgba\uFF0C\u9002\u5408\u81EA\u52A8\u751F\u6210\u627E\u8272\u4EE3\u7801\u3002",inputSchema:{x:l.number().int().min(0).describe("\u76EE\u6807\u5750\u6807 x"),y:l.number().int().min(0).describe("\u76EE\u6807\u5750\u6807 y"),radius:l.number().int().min(0).max(20).optional().default(0).describe("\u91C7\u6837\u534A\u5F84\uFF0C0 \u8868\u793A\u53EA\u53D6\u5355\u70B9\uFF0C\u9ED8\u8BA4 0")}},async({x:t,y:e,radius:n})=>{const i=await(0,f.resolveRuntimeHttpTarget)(),o=await(0,C.getScreenshotOnDevice)((0,f.createRuntimeHttpRequestOptions)(i)),a=await T(o),s=S(a.data,a.width,a.height,t,e,n);return(0,f.createTextToolResult)(x(i.label,t,e,n,a.width,a.height,s.color,s.sampleCount))}),r.registerTool("image_make_transparent",{title:"Image Make Transparent",description:"\u5C06\u56FE\u7247\u4E2D\u63A5\u8FD1\u6307\u5B9A\u989C\u8272\u6216\u89D2\u843D\u80CC\u666F\u8272\u7684\u50CF\u7D20\u8BBE\u4E3A\u900F\u660E\uFF0C\u5E76\u8F93\u51FA PNG \u6587\u4EF6\uFF0C\u9002\u5408\u5236\u4F5C\u627E\u56FE\u6A21\u677F\u900F\u660E\u56FE\u3002",inputSchema:{imagePath:l.string().min(1).describe("\u8F93\u5165\u56FE\u7247\u8DEF\u5F84"),outputPath:l.string().min(1).optional().describe("\u53EF\u9009\u8F93\u51FA\u8DEF\u5F84\uFF1B\u4E0D\u4F20\u5219\u5728\u8F93\u5165\u56FE\u7247\u540C\u76EE\u5F55\u751F\u6210 *-transparent.png"),transparentColor:l.string().min(1).optional().describe("\u8981\u900F\u660E\u5316\u7684\u989C\u8272\uFF0C\u683C\u5F0F #RRGGBB\uFF1B\u4E0D\u4F20\u5219\u4ECE\u6307\u5B9A\u89D2\u843D\u91C7\u6837"),sampleCorner:l.enum(["topLeft","topRight","bottomLeft","bottomRight"]).optional().default("topLeft").describe("\u672A\u4F20 transparentColor \u65F6\u91C7\u6837\u7684\u80CC\u666F\u89D2\u843D\uFF0C\u9ED8\u8BA4 topLeft"),tolerance:l.number().int().min(0).max(441).optional().default(24).describe("RGB \u6B27\u6C0F\u8DDD\u79BB\u5BB9\u5DEE\uFF0C\u9ED8\u8BA4 24\uFF0C\u6700\u5927 441")}},async({imagePath:t,outputPath:e,transparentColor:n,sampleCorner:i,tolerance:o})=>{const a=await _(t),s=R(a,e,"transparent"),{data:c,info:u}=await(0,d.default)(a).ensureAlpha().raw().toBuffer({resolveWithObject:!0}),p=n?I(n):M(c,u.width,u.height,i);let m=0;for(let $=0;$<c.length;$+=4)z(c,$,p,o)&&(c[$+3]=0,m+=1);await b.ensureDir(h.dirname(s));const g=await(0,d.default)(c,{raw:{width:u.width,height:u.height,channels:4}}).png().toFile(s);return(0,f.createTextToolResult)(["\u900F\u660E\u56FE\u5236\u4F5C\u6210\u529F",`input: ${a}`,`output: ${s}`,`image: ${u.width}x${u.height}`,`transparentColor: ${j(p)}`,`tolerance: ${o}`,`transparentPixels: ${m}`,`size: ${g.size} bytes`].join(`
|
|
8
|
-
`))})}
|
|
1
|
+
"use strict";var B=exports&&exports.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),D=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),T=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&B(n,t,r[i]);return D(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.cropLocalImage=M,exports.cropDeviceScreen=j,exports.pickLocalImageColor=O,exports.pickDeviceScreenColor=G,exports.makeLocalImageTransparent=L,exports.registerImageTools=H;const E=T(require("fs-extra")),q=T(require("os")),h=T(require("path")),s=T(require("zod/v4")),v=require("../project"),g=require("./image-codec"),l=require("./tool-utils");function I(e,t,n){if(t&&t.trim())return h.resolve(t.trim());const r=h.parse(h.resolve(e));return h.join(r.dir,`${r.name}-${n}.png`)}function z(e,t,n){return e&&e.trim()?h.resolve(e.trim()):h.join(q.tmpdir(),`${t}-${Date.now()}-${Math.random().toString(36).slice(2,8)}.${n}`)}async function _(e){const t=h.resolve(e.trim());if(!await E.pathExists(t))throw new Error(`\u56FE\u7247\u4E0D\u5B58\u5728: ${t}`);return t}function N(e){const t=e.trim().replace(/^#/,"");if(!/^[0-9a-fA-F]{6}$/.test(t))throw new Error("transparentColor \u5FC5\u987B\u662F #RRGGBB \u6216 RRGGBB \u683C\u5F0F\u3002");return{r:Number.parseInt(t.slice(0,2),16),g:Number.parseInt(t.slice(2,4),16),b:Number.parseInt(t.slice(4,6),16)}}function C(e){return`#${e.r.toString(16).padStart(2,"0")}${e.g.toString(16).padStart(2,"0")}${e.b.toString(16).padStart(2,"0")}`}function k(e,t,n,r){const i=r==="topRight"||r==="bottomRight"?t-1:0,o=((r==="bottomLeft"||r==="bottomRight"?n-1:0)*t+i)*4;return{r:e[o]??0,g:e[o+1]??0,b:e[o+2]??0}}function F(e,t,n,r){const i=(e[t]??0)-n.r,a=(e[t+1]??0)-n.g,o=(e[t+2]??0)-n.b;return Math.sqrt(i*i+a*a+o*o)<=r}function S(e,t,n,r,i,a){if(r>=t||i>=n)throw new Error(`\u5750\u6807\u8D85\u51FA\u56FE\u7247\u8303\u56F4: image=${t}x${n}, point=${r},${i}`);const o=Math.max(0,r-a),c=Math.min(t-1,r+a),u=Math.max(0,i-a),m=Math.min(n-1,i+a);let p=0,$=0,b=0,P=0,d=0;for(let y=u;y<=m;y+=1)for(let R=o;R<=c;R+=1){const w=(y*t+R)*4;p+=e[w]??0,$+=e[w+1]??0,b+=e[w+2]??0,P+=e[w+3]??0,d+=1}return{color:{r:Math.round(p/d),g:Math.round($/d),b:Math.round(b/d),a:Math.round(P/d)},sampleCount:d}}function x(e,t,n,r,i,a,o,c){return["\u53D6\u8272\u6210\u529F",`source: ${e}`,`image: ${i}x${a}`,`point: x=${t}, y=${n}`,`radius: ${r}`,`samplePixels: ${c}`,`hex: ${C(o)}`,`rgb: ${o.r},${o.g},${o.b}`,`rgba: ${o.r},${o.g},${o.b},${o.a}`].join(`
|
|
2
|
+
`)}function f(e){return(0,l.createTextToolResult)(e instanceof Error?e.message:String(e),!0)}async function M(e,t,n,r,i,a){const o=await _(e),c=I(o,a,"crop"),u=await(0,g.decodeImageToRgba)(o),m=(0,g.cropRgbaImage)(u,t,n,r,i),p=await(0,g.encodeRgbaToPngFile)(m,c);return["\u56FE\u7247\u88C1\u5207\u6210\u529F",`input: ${o}`,`output: ${c}`,`crop: x=${t}, y=${n}, width=${r}, height=${i}`,`size: ${p.size} bytes`].join(`
|
|
3
|
+
`)}async function j(e,t,n,r,i,a){const o=await(0,v.getScreenshotOnDevice)({ip:e.ip,port:e.port,transport:"http"}),c=await(0,g.decodeImageToRgba)(o);if(t+r>c.width||n+i>c.height)throw new Error(`\u88C1\u5207\u8303\u56F4\u8D85\u51FA\u622A\u56FE\u5C3A\u5BF8: image=${c.width}x${c.height}, crop=${t},${n},${r},${i}`);const u=(0,g.cropRgbaImage)(c,t,n,r,i),m=z(a,"ms-mcp-screen-crop","png"),p=await(0,g.encodeRgbaToPngFile)(u,m);return["\u5C4F\u5E55\u88C1\u56FE\u6210\u529F",`device: ${e.label}`,`output: ${m}`,`screen: ${c.width}x${c.height}`,`crop: x=${t}, y=${n}, width=${r}, height=${i}`,`size: ${p.size} bytes`].join(`
|
|
4
|
+
`)}async function O(e,t,n,r){const i=await _(e),a=await(0,g.decodeImageToRgba)(i),o=S(a.data,a.width,a.height,t,n,r);return x(i,t,n,r,a.width,a.height,o.color,o.sampleCount)}async function G(e,t,n,r){const i=await(0,v.getScreenshotOnDevice)({ip:e.ip,port:e.port,transport:"http"}),a=await(0,g.decodeImageToRgba)(i),o=S(a.data,a.width,a.height,t,n,r);return x(e.label,t,n,r,a.width,a.height,o.color,o.sampleCount)}async function L(e,t,n,r,i){const a=await _(e),o=I(a,t,"transparent"),c=await(0,g.decodeImageToRgba)(a),u=Buffer.from(c.data),m=n?N(n):k(u,c.width,c.height,r);let p=0;for(let b=0;b<u.length;b+=4)F(u,b,m,i)&&(u[b+3]=0,p+=1);const $=await(0,g.encodeRgbaToPngFile)({data:u,width:c.width,height:c.height},o);return["\u900F\u660E\u56FE\u5236\u4F5C\u6210\u529F",`input: ${a}`,`output: ${o}`,`image: ${c.width}x${c.height}`,`transparentColor: ${C(m)}`,`tolerance: ${i}`,`transparentPixels: ${p}`,`size: ${$.size} bytes`].join(`
|
|
5
|
+
`)}function H(e){e.registerTool("image_crop",{title:"Image Crop",description:"\u88C1\u5207\u672C\u5730\u56FE\u7247\u5E76\u8F93\u51FA PNG \u6587\u4EF6\uFF0C\u9002\u5408\u4ECE\u622A\u56FE\u4E2D\u88C1\u51FA\u627E\u56FE\u6A21\u677F\u3002",inputSchema:{imagePath:s.string().min(1).describe("\u8F93\u5165\u56FE\u7247\u8DEF\u5F84"),x:s.number().int().min(0).describe("\u88C1\u5207\u8D77\u70B9 x"),y:s.number().int().min(0).describe("\u88C1\u5207\u8D77\u70B9 y"),width:s.number().int().min(1).describe("\u88C1\u5207\u5BBD\u5EA6"),height:s.number().int().min(1).describe("\u88C1\u5207\u9AD8\u5EA6"),outputPath:s.string().min(1).optional().describe("\u53EF\u9009\u8F93\u51FA\u8DEF\u5F84\uFF1B\u4E0D\u4F20\u5219\u5728\u8F93\u5165\u56FE\u7247\u540C\u76EE\u5F55\u751F\u6210 *-crop.png")}},async({imagePath:t,x:n,y:r,width:i,height:a,outputPath:o})=>{try{return(0,l.createTextToolResult)(await M(t,n,r,i,a,o))}catch(c){return f(c)}}),e.registerTool("screen_crop",{title:"Screen Crop",description:"\u4ECE\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u622A\u56FE\u4E2D\u6309\u5750\u6807\u88C1\u5207 PNG \u6587\u4EF6\uFF0C\u9002\u5408\u81EA\u52A8\u622A\u53D6\u627E\u56FE\u6A21\u677F\u3002",inputSchema:{x:s.number().int().min(0).describe("\u88C1\u5207\u8D77\u70B9 x"),y:s.number().int().min(0).describe("\u88C1\u5207\u8D77\u70B9 y"),width:s.number().int().min(1).describe("\u88C1\u5207\u5BBD\u5EA6"),height:s.number().int().min(1).describe("\u88C1\u5207\u9AD8\u5EA6"),outputPath:s.string().min(1).optional().describe("\u53EF\u9009\u8F93\u51FA\u8DEF\u5F84\uFF1B\u4E0D\u4F20\u5219\u5199\u5165\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55")}},async({x:t,y:n,width:r,height:i,outputPath:a})=>{try{const o=await(0,l.resolveRuntimeHttpTarget)();return(0,l.createTextToolResult)(await j(o,t,n,r,i,a))}catch(o){return f(o)}}),e.registerTool("image_pick_color",{title:"Image Pick Color",description:"\u8BFB\u53D6\u672C\u5730\u56FE\u7247\u6307\u5B9A\u5750\u6807\u989C\u8272\uFF0C\u8FD4\u56DE hex/rgb/rgba\uFF0C\u9002\u5408\u751F\u6210\u627E\u8272\u4EE3\u7801\u3002",inputSchema:{imagePath:s.string().min(1).describe("\u8F93\u5165\u56FE\u7247\u8DEF\u5F84"),x:s.number().int().min(0).describe("\u76EE\u6807\u5750\u6807 x"),y:s.number().int().min(0).describe("\u76EE\u6807\u5750\u6807 y"),radius:s.number().int().min(0).max(20).optional().default(0).describe("\u91C7\u6837\u534A\u5F84\uFF0C0 \u8868\u793A\u53EA\u53D6\u5355\u70B9\uFF0C\u9ED8\u8BA4 0")}},async({imagePath:t,x:n,y:r,radius:i})=>{try{return(0,l.createTextToolResult)(await O(t,n,r,i))}catch(a){return f(a)}}),e.registerTool("screen_pick_color",{title:"Screen Pick Color",description:"\u4ECE\u5F53\u524D\u9ED8\u8BA4\u8BBE\u5907\u622A\u56FE\u4E2D\u8BFB\u53D6\u6307\u5B9A\u5750\u6807\u989C\u8272\uFF0C\u8FD4\u56DE hex/rgb/rgba\uFF0C\u9002\u5408\u81EA\u52A8\u751F\u6210\u627E\u8272\u4EE3\u7801\u3002",inputSchema:{x:s.number().int().min(0).describe("\u76EE\u6807\u5750\u6807 x"),y:s.number().int().min(0).describe("\u76EE\u6807\u5750\u6807 y"),radius:s.number().int().min(0).max(20).optional().default(0).describe("\u91C7\u6837\u534A\u5F84\uFF0C0 \u8868\u793A\u53EA\u53D6\u5355\u70B9\uFF0C\u9ED8\u8BA4 0")}},async({x:t,y:n,radius:r})=>{try{const i=await(0,l.resolveRuntimeHttpTarget)();return(0,l.createTextToolResult)(await G(i,t,n,r))}catch(i){return f(i)}}),e.registerTool("image_make_transparent",{title:"Image Make Transparent",description:"\u5C06\u56FE\u7247\u4E2D\u63A5\u8FD1\u6307\u5B9A\u989C\u8272\u6216\u89D2\u843D\u80CC\u666F\u8272\u7684\u50CF\u7D20\u8BBE\u4E3A\u900F\u660E\uFF0C\u5E76\u8F93\u51FA PNG \u6587\u4EF6\uFF0C\u9002\u5408\u5236\u4F5C\u627E\u56FE\u6A21\u677F\u900F\u660E\u56FE\u3002",inputSchema:{imagePath:s.string().min(1).describe("\u8F93\u5165\u56FE\u7247\u8DEF\u5F84"),outputPath:s.string().min(1).optional().describe("\u53EF\u9009\u8F93\u51FA\u8DEF\u5F84\uFF1B\u4E0D\u4F20\u5219\u5728\u8F93\u5165\u56FE\u7247\u540C\u76EE\u5F55\u751F\u6210 *-transparent.png"),transparentColor:s.string().min(1).optional().describe("\u8981\u900F\u660E\u5316\u7684\u989C\u8272\uFF0C\u683C\u5F0F #RRGGBB\uFF1B\u4E0D\u4F20\u5219\u4ECE\u6307\u5B9A\u89D2\u843D\u91C7\u6837"),sampleCorner:s.enum(["topLeft","topRight","bottomLeft","bottomRight"]).optional().default("topLeft").describe("\u672A\u4F20 transparentColor \u65F6\u91C7\u6837\u7684\u80CC\u666F\u89D2\u843D\uFF0C\u9ED8\u8BA4 topLeft"),tolerance:s.number().int().min(0).max(441).optional().default(24).describe("RGB \u6B27\u6C0F\u8DDD\u79BB\u5BB9\u5DEE\uFF0C\u9ED8\u8BA4 24\uFF0C\u6700\u5927 441")}},async({imagePath:t,outputPath:n,transparentColor:r,sampleCorner:i,tolerance:a})=>{try{return(0,l.createTextToolResult)(await L(t,n,r,i,a))}catch(o){return f(o)}})}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ms-vite-plugin",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.82",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -28,8 +28,9 @@
|
|
|
28
28
|
"commander": "^14.0.3",
|
|
29
29
|
"crc": "^4.3.2",
|
|
30
30
|
"fs-extra": "^11.3.5",
|
|
31
|
+
"jpeg-js": "^0.4.4",
|
|
31
32
|
"magic-string": "^0.30.21",
|
|
32
|
-
"
|
|
33
|
+
"pngjs": "^7.0.0",
|
|
33
34
|
"uuid": "^14.0.0",
|
|
34
35
|
"vite": "^8.0.13",
|
|
35
36
|
"vite-plugin-bundle-obfuscator": "^1.12.0",
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
"@types/crc": "^4.0.0",
|
|
42
43
|
"@types/fs-extra": "^11.0.4",
|
|
43
44
|
"@types/node": "^25.9.0",
|
|
45
|
+
"@types/pngjs": "^6.0.5",
|
|
44
46
|
"@types/uuid": "^11.0.0",
|
|
45
47
|
"@types/ws": "^8.18.1",
|
|
46
48
|
"esbuild": "^0.28.2",
|