ms-vite-plugin 1.5.4 → 1.5.6

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.
Files changed (71) hide show
  1. package/dist/build/index.js +1 -0
  2. package/dist/cli.js +6 -6
  3. package/dist/device/project.js +1 -0
  4. package/dist/device/usb-forward.d.ts +4 -0
  5. package/dist/device/usb-forward.js +1 -0
  6. package/dist/mcp/device-log.js +1 -1
  7. package/dist/mcp/image-tools.js +1 -1
  8. package/dist/mcp/runtime-tools.js +1 -1
  9. package/dist/mcp-server.js +1 -1
  10. package/dist/packaging/index.js +1 -0
  11. package/dist/usb-forward.d.ts +2 -4
  12. package/dist/usb-forward.js +2 -1
  13. package/package.json +3 -2
  14. package/dist/build.js +0 -1
  15. package/dist/luaObfuscator/addVararg.d.ts +0 -2
  16. package/dist/luaObfuscator/addVararg.js +0 -1
  17. package/dist/luaObfuscator/antiTamper.d.ts +0 -2
  18. package/dist/luaObfuscator/antiTamper.js +0 -26
  19. package/dist/luaObfuscator/ast.d.ts +0 -191
  20. package/dist/luaObfuscator/ast.js +0 -1
  21. package/dist/luaObfuscator/cipher.d.ts +0 -10
  22. package/dist/luaObfuscator/cipher.js +0 -28
  23. package/dist/luaObfuscator/compiler.d.ts +0 -31
  24. package/dist/luaObfuscator/compiler.js +0 -1
  25. package/dist/luaObfuscator/constantArray.d.ts +0 -5
  26. package/dist/luaObfuscator/constantArray.js +0 -1
  27. package/dist/luaObfuscator/flatten.d.ts +0 -2
  28. package/dist/luaObfuscator/flatten.js +0 -1
  29. package/dist/luaObfuscator/index.d.ts +0 -6
  30. package/dist/luaObfuscator/index.js +0 -1
  31. package/dist/luaObfuscator/lexer.d.ts +0 -14
  32. package/dist/luaObfuscator/lexer.js +0 -10
  33. package/dist/luaObfuscator/minify.d.ts +0 -3
  34. package/dist/luaObfuscator/minify.js +0 -1
  35. package/dist/luaObfuscator/numbers.d.ts +0 -2
  36. package/dist/luaObfuscator/numbers.js +0 -1
  37. package/dist/luaObfuscator/opcodes.d.ts +0 -3
  38. package/dist/luaObfuscator/opcodes.js +0 -1
  39. package/dist/luaObfuscator/parser.d.ts +0 -8
  40. package/dist/luaObfuscator/parser.js +0 -1
  41. package/dist/luaObfuscator/rename.d.ts +0 -3
  42. package/dist/luaObfuscator/rename.js +0 -1
  43. package/dist/luaObfuscator/reserved.d.ts +0 -5
  44. package/dist/luaObfuscator/reserved.js +0 -1
  45. package/dist/luaObfuscator/scope.d.ts +0 -11
  46. package/dist/luaObfuscator/scope.js +0 -1
  47. package/dist/luaObfuscator/selftest.d.ts +0 -1
  48. package/dist/luaObfuscator/selftest.js +0 -39
  49. package/dist/luaObfuscator/splitStrings.d.ts +0 -2
  50. package/dist/luaObfuscator/splitStrings.js +0 -1
  51. package/dist/luaObfuscator/strings.d.ts +0 -4
  52. package/dist/luaObfuscator/strings.js +0 -1
  53. package/dist/luaObfuscator/visit.d.ts +0 -5
  54. package/dist/luaObfuscator/visit.js +0 -1
  55. package/dist/luaObfuscator/vmEmit.d.ts +0 -2
  56. package/dist/luaObfuscator/vmEmit.js +0 -281
  57. package/dist/luaObfuscator/wrapInFunction.d.ts +0 -2
  58. package/dist/luaObfuscator/wrapInFunction.js +0 -1
  59. package/dist/packager.js +0 -1
  60. package/dist/project.js +0 -1
  61. /package/dist/{build.d.ts → build/index.d.ts} +0 -0
  62. /package/dist/{luaBundle.d.ts → build/luaBundle.d.ts} +0 -0
  63. /package/dist/{luaBundle.js → build/luaBundle.js} +0 -0
  64. /package/dist/{scriptProtect.d.ts → build/scriptProtect.d.ts} +0 -0
  65. /package/dist/{scriptProtect.js → build/scriptProtect.js} +0 -0
  66. /package/dist/{stopGuardPlugin.d.ts → build/stopGuardPlugin.d.ts} +0 -0
  67. /package/dist/{stopGuardPlugin.js → build/stopGuardPlugin.js} +0 -0
  68. /package/dist/{project.d.ts → device/project.d.ts} +0 -0
  69. /package/dist/{ws-manager.d.ts → device/ws-manager.d.ts} +0 -0
  70. /package/dist/{ws-manager.js → device/ws-manager.js} +0 -0
  71. /package/dist/{packager.d.ts → packaging/index.d.ts} +0 -0
@@ -1,281 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.emitVm=j;const p=require("./cipher"),d=require("./minify"),s=require("./opcodes");function h(e){let n=2166136261^e.code.length;return n=Math.imul(n,16777619)^e.consts.length,n>>>0}function b(e,n,l){if(e.t==="nil")return"nil";if(e.t==="bool")return e.v?"true":"false";if(e.t==="num")return e.raw;const a=(0,p.foldEncrypt)(e.v,n,l);return`D(${(0,d.escapeLuaString)(a)},${l})`}function u(e,n,l,a){const i=e.code.map((t,o)=>{const r=e.ops[o];return`{${n[r]},${t[1]},${t[2]},${t[3]}}`}).join(","),c=e.consts.map((t,o)=>b(t,l,a+o*131>>>0||1)).join(","),R=e.protos.map((t,o)=>u(t,n,l,a+(o+1)*4099>>>0)).join(","),f=e.upvals.map(t=>`{${t.inStack?1:0},${t.index}}`).join(",");return`{p={${i}},k={${c}},t={${R}},u={${f}},n=${e.numparams},v=${e.isVararg?"true":"false"}}`}function j(e){const n=h(e)||1,l=(0,s.shuffleOpcodes)(n),a=(0,p.createFoldMixParams)(n),i=s.OPCODE_NAMES.join(","),c=s.OPCODE_NAMES.map(f=>String(l[f])).join(","),R=u(e,l,a,n);return`(function()
2
- ${(0,p.emitFoldDecoderLua)(a,"D")}
3
- local ${i}=${c}
4
- local function G(u)
5
- if u.R then
6
- return u.R[u.i]
7
- end
8
- return u.v
9
- end
10
- local function S(u,x)
11
- if u.R then
12
- u.R[u.i]=x
13
- else
14
- u.v=x
15
- end
16
- end
17
- local function C(u)
18
- if u.R then
19
- u.v=u.R[u.i]
20
- u.R=nil
21
- u.i=nil
22
- end
23
- end
24
- local function V(P,U,A)
25
- local R={}
26
- local K=P.k
27
- local code=P.p
28
- local top=0
29
- local pc=1
30
- local open={}
31
- for i=1,P.n do
32
- R[i]=A[i]
33
- end
34
- local VA={}
35
- if P.v then
36
- for i=P.n+1,A.n do
37
- VA[#VA+1]=A[i]
38
- end
39
- end
40
- local function rk(x)
41
- if x<0 then
42
- return K[-x]
43
- end
44
- return R[x]
45
- end
46
- while true do
47
- local i=code[pc]
48
- if not i then
49
- return
50
- end
51
- local op=i[1]
52
- local a=i[2]
53
- local b=i[3]
54
- local c=i[4]
55
- pc=pc+1
56
- if op==MOVE then
57
- R[a]=R[b]
58
- elseif op==LOADK then
59
- R[a]=K[b]
60
- elseif op==LOADBOOL then
61
- R[a]=b~=0
62
- elseif op==LOADNIL then
63
- R[a]=nil
64
- elseif op==GETGLOBAL then
65
- R[a]=_ENV[K[b]]
66
- elseif op==SETGLOBAL then
67
- _ENV[K[b]]=R[a]
68
- elseif op==GETTABLE then
69
- R[a]=R[b][rk(c)]
70
- elseif op==SETTABLE then
71
- R[a][rk(b)]=rk(c)
72
- elseif op==NEWTABLE then
73
- R[a]={}
74
- elseif op==SELF then
75
- R[a+1]=R[b]
76
- R[a]=R[b][rk(c)]
77
- elseif op==ADD then
78
- R[a]=R[b]+R[c]
79
- elseif op==SUB then
80
- R[a]=R[b]-R[c]
81
- elseif op==MUL then
82
- R[a]=R[b]*R[c]
83
- elseif op==DIV then
84
- R[a]=R[b]/R[c]
85
- elseif op==IDIV then
86
- R[a]=R[b]//R[c]
87
- elseif op==MOD then
88
- R[a]=R[b]%R[c]
89
- elseif op==POW then
90
- R[a]=R[b]^R[c]
91
- elseif op==BAND then
92
- R[a]=R[b]&R[c]
93
- elseif op==BOR then
94
- R[a]=R[b]|R[c]
95
- elseif op==BXOR then
96
- R[a]=R[b]~R[c]
97
- elseif op==SHL then
98
- R[a]=R[b]<<R[c]
99
- elseif op==SHR then
100
- R[a]=R[b]>>R[c]
101
- elseif op==UNM then
102
- R[a]=-R[b]
103
- elseif op==BNOT then
104
- R[a]=~R[b]
105
- elseif op==NOT then
106
- R[a]=not R[b]
107
- elseif op==LEN then
108
- R[a]=#R[b]
109
- elseif op==CONCAT then
110
- R[a]=R[b]..R[c]
111
- elseif op==JMP then
112
- pc=pc+b
113
- elseif op==EQ then
114
- local eq=R[a]==R[b]
115
- local want=c==0
116
- if eq==want then
117
- pc=pc+1
118
- end
119
- elseif op==LT then
120
- local lt=R[a]<R[b]
121
- local want=c==0
122
- if lt==want then
123
- pc=pc+1
124
- end
125
- elseif op==LE then
126
- local le=R[a]<=R[b]
127
- local want=c==0
128
- if le==want then
129
- pc=pc+1
130
- end
131
- elseif op==TEST then
132
- -- C=0\uFF1A\u771F\u5219\u8DF3\u8FC7 JMP\uFF1BC=1\uFF1A\u5047\u5219\u8DF3\u8FC7\uFF08or\uFF09\u3002\u4E0D\u7528 and/or\uFF0C\u65B9\u4FBF\u518D\u7F16\u8BD1\u3002
133
- local take=false
134
- if c==0 then
135
- if R[a] then
136
- take=true
137
- end
138
- else
139
- if not R[a] then
140
- take=true
141
- end
142
- end
143
- if take then
144
- pc=pc+1
145
- end
146
- elseif op==CALL then
147
- local n=b
148
- local args={}
149
- local an=n
150
- if n<0 then
151
- an=0
152
- local last=top
153
- if last<a then
154
- last=a
155
- end
156
- for j=a+1,last do
157
- an=an+1
158
- args[an]=R[j]
159
- end
160
- else
161
- for j=1,n do
162
- args[j]=R[a+j]
163
- end
164
- end
165
- local rets=table.pack(R[a](table.unpack(args,1,an)))
166
- if c==0 then
167
- elseif c<0 then
168
- for j=1,rets.n do
169
- R[a+j-1]=rets[j]
170
- end
171
- top=a+rets.n-1
172
- else
173
- for j=1,c do
174
- R[a+j-1]=rets[j]
175
- end
176
- top=a+c-1
177
- end
178
- elseif op==RETURN then
179
- for _,u in pairs(open) do
180
- C(u)
181
- end
182
- if b==0 then
183
- return
184
- end
185
- if b<0 then
186
- return table.unpack(R,a,top)
187
- end
188
- return table.unpack(R,a,a+b-1)
189
- elseif op==FORPREP then
190
- R[a]=R[a]-R[a+2]
191
- pc=pc+b
192
- elseif op==FORLOOP then
193
- R[a]=R[a]+R[a+2]
194
- local idx=R[a]
195
- local lim=R[a+1]
196
- local step=R[a+2]
197
- local cont=false
198
- if step>=0 then
199
- if idx<=lim then
200
- cont=true
201
- end
202
- else
203
- if idx>=lim then
204
- cont=true
205
- end
206
- end
207
- if cont then
208
- R[a+3]=idx
209
- pc=pc+b
210
- end
211
- elseif op==TFORCALL then
212
- local rets=table.pack(R[a](R[a+1],R[a+2]))
213
- for j=1,b do
214
- R[a+2+j]=rets[j]
215
- end
216
- elseif op==TFORLOOP then
217
- if R[a+3]~=nil then
218
- R[a+2]=R[a+3]
219
- else
220
- pc=pc+b
221
- end
222
- elseif op==CLOSURE then
223
- local Q=P.t[b]
224
- local nu={}
225
- for j=1,#Q.u do
226
- local sp=Q.u[j]
227
- if sp[1]==1 then
228
- local rg=sp[2]
229
- if not open[rg] then
230
- open[rg]={R=R,i=rg}
231
- end
232
- nu[j]=open[rg]
233
- else
234
- nu[j]=U[sp[2]]
235
- end
236
- end
237
- R[a]=function(...)
238
- return V(Q,nu,table.pack(...))
239
- end
240
- elseif op==VARARG then
241
- if b<0 then
242
- for j=1,#VA do
243
- R[a+j-1]=VA[j]
244
- end
245
- top=a+#VA-1
246
- else
247
- for j=1,b do
248
- R[a+j-1]=VA[j]
249
- end
250
- end
251
- elseif op==SETLIST then
252
- for j=1,c do
253
- R[a][j]=R[b+j-1]
254
- end
255
- elseif op==GETUPVAL then
256
- R[a]=G(U[b])
257
- elseif op==SETUPVAL then
258
- S(U[b],R[a])
259
- elseif op==CLOSE then
260
- if open[a] then
261
- C(open[a])
262
- open[a]=nil
263
- end
264
- local v=R[a]
265
- if type(v)=="table" then
266
- local mt=getmetatable(v)
267
- local cl=v.close
268
- if not cl then
269
- if mt then
270
- cl=mt.__close
271
- end
272
- end
273
- if cl then
274
- pcall(cl,v)
275
- end
276
- end
277
- end
278
- end
279
- end
280
- V(${R},{},table.pack())
281
- end)()`}
@@ -1,2 +0,0 @@
1
- import type { Chunk } from "./ast";
2
- export declare function wrapInFunction(chunk: Chunk): void;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.wrapInFunction=t;function t(e){const r=e.body;e.body=[{type:"CallStat",exp:{type:"CallExpr",callee:{type:"ParenExpr",exp:{type:"FuncExpr",params:[],vararg:!0,body:{type:"Block",body:r}}},args:[{type:"VarargExpr"}]}}]}
package/dist/packager.js DELETED
@@ -1 +0,0 @@
1
- "use strict";var s=exports&&exports.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=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,r,i)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),f=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),u=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),i=0;i<r.length;i++)r[i]!=="default"&&s(n,e,r[i]);return f(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.packageProject=b;const l=require("child_process"),a=u(require("fs-extra")),c=u(require("path")),_=require("util"),d=require("./build"),E=(0,_.promisify)(l.execFile),o={ENCRYPT_TIMEOUT:3e4,BUNDLE_NAME:"ms.msbundle",ENCRYPTED_BUNDLE_NAME:"enc.msbundle"};function w(){return c.resolve(__dirname,"..")}function h(){const t=process.platform,e=process.arch;let n;if(t==="darwin")n=c.join("bin","mac","ms-bundle-enc");else if(t==="win32"&&e==="x64")n=c.join("bin","win","ms-bundle-enc.exe");else throw new Error(`\u4E0D\u652F\u6301\u7684\u7CFB\u7EDF\u5E73\u53F0: ${t}-${e}`);return c.join(w(),n)}async function p(t){const e=h();if(!await a.pathExists(e))throw new Error(`\u672A\u627E\u5230\u52A0\u5BC6\u5DE5\u5177: ${e}`);process.platform==="win32"||await a.chmod(e,493),await E(e,[t],{cwd:c.dirname(t),timeout:o.ENCRYPT_TIMEOUT});const r=c.join(c.dirname(t),o.ENCRYPTED_BUNDLE_NAME);if(!await a.pathExists(r))throw new Error("\u52A0\u5BC6\u5DE5\u5177\u672A\u751F\u6210 enc.msbundle \u6587\u4EF6");return await a.remove(t),r}async function b(t){await(0,d.buildAll)(!1,t);const e=c.join(t,"dist",o.BUNDLE_NAME);if(!await a.pathExists(e))throw new Error(`\u6784\u5EFA\u5931\u8D25\uFF0C\u672A\u627E\u5230 ${o.BUNDLE_NAME} \u6587\u4EF6`);return p(e)}
package/dist/project.js DELETED
@@ -1 +0,0 @@
1
- "use strict";var D=exports&&exports.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,s)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),F=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),v=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var n=[];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[n.length]=s);return n},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var n=t(e),s=0;s<n.length;s++)n[s]!=="default"&&D(r,e,n[s]);return F(r,e),r}})(),I=exports&&exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getScreenshotOnDevice=C,exports.getScreenshotBase64OnDevice=U,exports.getSourceOnDevice=k,exports.getCurrentLogLinesOnDevice=A,exports.runOnDevice=z,exports.runUIOnDevice=G,exports.stopOnDevice=V;const f=v(require("fs-extra")),w=v(require("path")),T=require("./build"),N=I(require("crc")),h=require("./ws-manager");function g(t){const e=t.ip?.trim(),r=(t.port??"9800").trim(),n=Number.parseInt(r,10);if(!e)throw new Error("\u8BF7\u901A\u8FC7 --ip \u6307\u5B9A\u8BBE\u5907 IP \u5730\u5740");if(!Number.isInteger(n)||n<1||n>65535)throw new Error(`\u65E0\u6548\u7AEF\u53E3: ${r}`);return{ip:e,port:n}}function q(t){const e=(t.wsPort??"31111").trim(),r=(t.wsWaitMs??"30000").trim(),n=Number.parseInt(e,10),s=Number.parseInt(r,10);if(!Number.isInteger(n)||n<1||n>65535)throw new Error(`\u65E0\u6548 ws \u7AEF\u53E3: ${e}`);if(!Number.isInteger(s)||s<1)throw new Error(`\u65E0\u6548 ws \u7B49\u5F85\u65F6\u95F4: ${r}`);return{wsPort:n,wsWaitMs:s}}function d(t){const e=(t.transport??"http").trim().toLowerCase();if(e!=="http"&&e!=="ws")throw new Error(`\u65E0\u6548 transport: ${e}`);return e}async function j(t){const e=await f.readFile(t);return N.default.crc32(e).toString(16).padStart(8,"0")}async function b(t,e){const r=[];async function n(s){const c=await f.readdir(s,{withFileTypes:!0});for(const i of c){const o=w.join(s,i.name);if(i.isDirectory())await n(o);else if(i.isFile()){const a=w.relative(t,o).replace(/\\/g,"/"),l=await f.stat(o);r.push({path:o,bundlePath:`${e}/${a}`,size:l.size,crc32:await j(o)})}}}return await f.pathExists(t)&&await n(t),r}async function E(t){const e=w.join(t,"package.json"),r=await f.readJSON(e),n=r.name,s=r.appVersion;if(!n)throw new Error("\u8BF7\u5728 package.json \u4E2D\u6DFB\u52A0 name \u5B57\u6BB5");if(!s)throw new Error("\u8BF7\u5728 package.json \u4E2D\u6DFB\u52A0 appVersion \u5B57\u6BB5");return{projectName:n,appVersion:s,packageJsonPath:e}}async function _(t){let e=w.join(t,"dist","scripts");const r=await f.pathExists(w.join(t,"scripts","main.py")),n=await f.pathExists(w.join(t,"scripts","main.lua"));(r||n)&&(e=w.join(t,"scripts"));const s=w.join(t,"ui"),c=w.join(t,"res"),i=w.join(t,"package.json"),o=[{path:i,bundlePath:"package.json",size:(await f.stat(i)).size,crc32:await j(i)}],[a,l,u]=await Promise.all([b(e,"scripts"),b(s,"ui"),b(c,"res")]);return o.push(...a,...l,...u),o}async function O(t){await(0,T.buildAll)(!0,t)}async function B(t,e,r){const n=new URL(`http://${t}:${e}/api/files`);n.searchParams.set("projectName",r);const s=await fetch(n.toString(),{method:"GET"});if(!s.ok)throw new Error(`\u6587\u4EF6\u5217\u8868\u8BF7\u6C42\u5931\u8D25: ${s.statusText}`);const c=await s.json();return Array.isArray(c)?c:[]}async function L(t){const e=await h.WSManager.request("files",{projectName:t});if(!e.success)throw new Error(`\u6587\u4EF6\u5217\u8868\u8BF7\u6C42\u5931\u8D25: ${String(e.message??"unknown")}`);const r=e.data;return Array.isArray(r)?r:[]}async function M(t,e,r){const{projectName:n,appVersion:s}=await E(t);console.log("\u{1F50E} \u6B63\u5728\u83B7\u53D6\u8BBE\u5907\u6587\u4EF6\u5217\u8868...");const c=await B(e,r,n),i=new Map(c.map(u=>[u.path,u]));console.log("\u{1F4C2} \u6B63\u5728\u5206\u6790\u9879\u76EE\u6587\u4EF6...");const o=await _(t),a=[];for(const u of o){const p=i.get(u.bundlePath),y=u.bundlePath.includes("main.js")||u.bundlePath.includes("main.py")||u.bundlePath.includes("main.lua");if(!p){a.push(u);continue}const S=p.size!==u.size||p.crc32.toLowerCase()!==u.crc32.toLowerCase();(y||S)&&a.push(u)}if(console.log(`\u{1F4E6} \u53D1\u73B0 ${a.length} \u4E2A\u6587\u4EF6\u9700\u8981\u540C\u6B65`),a.length===0){console.log("\u2705 \u65E0\u9700\u540C\u6B65\u6587\u4EF6");return}let l=0;for(const u of a){l+=1,console.log(`\u2B06\uFE0F [${l}/${a.length}] \u540C\u6B65 ${u.bundlePath}`);const p=await f.readFile(u.path),y=new URL(`http://${e}:${r}/debug/patchSync`);y.searchParams.set("path",u.bundlePath),y.searchParams.set("projectName",n),y.searchParams.set("appVersion",s);const S=await fetch(y.toString(),{method:"POST",headers:{"Content-Type":"application/octet-stream"},body:p});if(!S.ok)throw new Error(`\u540C\u6B65\u5931\u8D25: ${u.bundlePath} (\u72B6\u6001\u7801: ${S.status})`)}console.log(`\u2705 \u540C\u6B65\u5B8C\u6210\uFF0C\u5171 ${a.length} \u4E2A\u6587\u4EF6`)}async function W(t){const{projectName:e,appVersion:r}=await E(t);console.log("\u{1F50E} \u6B63\u5728\u83B7\u53D6\u8BBE\u5907\u6587\u4EF6\u5217\u8868...");const n=await L(e),s=new Map(n.map(a=>[a.path,a]));console.log("\u{1F4C2} \u6B63\u5728\u5206\u6790\u9879\u76EE\u6587\u4EF6...");const c=await _(t),i=[];for(const a of c){const l=s.get(a.bundlePath),u=a.bundlePath.includes("main.js")||a.bundlePath.includes("main.py")||a.bundlePath.includes("main.lua");if(!l){i.push(a);continue}const p=l.size!==a.size||l.crc32.toLowerCase()!==a.crc32.toLowerCase();(u||p)&&i.push(a)}if(console.log(`\u{1F4E6} \u53D1\u73B0 ${i.length} \u4E2A\u6587\u4EF6\u9700\u8981\u540C\u6B65`),i.length===0){console.log("\u2705 \u65E0\u9700\u540C\u6B65\u6587\u4EF6");return}let o=0;for(const a of i){o+=1,console.log(`\u2B06\uFE0F [${o}/${i.length}] \u540C\u6B65 ${a.bundlePath}`);const l=await f.readFile(a.path),u=await h.WSManager.request("patchSync",{path:a.bundlePath,data:l.toString("base64"),projectName:e,appVersion:r});if(!u.success)throw new Error(`\u540C\u6B65\u5931\u8D25: ${a.bundlePath} ${String(u.message??"")}`)}console.log(`\u2705 \u540C\u6B65\u5B8C\u6210\uFF0C\u5171 ${i.length} \u4E2A\u6587\u4EF6`)}async function m(t,e,r){const n=`http://${e}:${r}/api/${t}`,s=await fetch(n,{method:"GET"});if(!s.ok)throw new Error(`${t} \u5931\u8D25\uFF0C\u72B6\u6001\u7801: ${s.status}`)}async function C(t){if(d(t)==="ws"){await $(t);const o=await h.WSManager.request("screenshot");if(!o.success||typeof o.data!="string")throw new Error(`\u622A\u56FE\u5931\u8D25: ${String(o.message??"unknown")}`);return Buffer.from(o.data,"base64")}const{ip:r,port:n}=g(t),s=`http://${r}:${n}/api/screenshot`,c=await fetch(s,{method:"GET"});if(!c.ok)throw new Error(`\u622A\u56FE\u5931\u8D25\uFF0C\u72B6\u6001\u7801: ${c.status}`);const i=await c.arrayBuffer();return Buffer.from(i)}async function U(t){if(d(t)==="ws"){await $(t);const o=await h.WSManager.request("screenshot");if(!o.success||typeof o.data!="string")throw new Error(`\u622A\u56FE(base64)\u5931\u8D25: ${String(o.message??"unknown")}`);return o.data}const{ip:r,port:n}=g(t),s=`http://${r}:${n}/api/screenshotBase64`,c=await fetch(s,{method:"GET"});if(!c.ok)throw new Error(`\u622A\u56FE(base64)\u5931\u8D25\uFF0C\u72B6\u6001\u7801: ${c.status}`);const i=await c.json();if(!i.success||typeof i.data!="string")throw new Error(`\u622A\u56FE(base64)\u5931\u8D25: ${String(i.message??"unknown")}`);return i.data}async function k(t,e=50,r=120,n=1){const s=d(t);if(!Number.isInteger(e)||e<1)throw new Error(`\u65E0\u6548 maxDepth: ${e}`);if(!Number.isInteger(r)||r<1)throw new Error(`\u65E0\u6548 timeout: ${r}`);if(!Number.isInteger(n)||n!==1&&n!==2&&n!==3)throw new Error(`\u65E0\u6548 mode: ${n}`);if(s==="ws"){await $(t);const l=await h.WSManager.request("source",{max_depth:e,timeout:r,maxDepth:e,mode:n});if(!l.success||typeof l.data!="string")throw new Error(`\u83B7\u53D6\u8282\u70B9\u5931\u8D25: ${String(l.message??"unknown")}`);return l.data}const{ip:c,port:i}=g(t),o=new URL(`http://${c}:${i}/api/source`);o.searchParams.set("max_depth",String(e)),o.searchParams.set("timeout",String(r)),o.searchParams.set("mode",String(n));const a=await fetch(o.toString(),{method:"GET"});if(!a.ok)throw new Error(`\u83B7\u53D6\u8282\u70B9\u5931\u8D25\uFF0C\u72B6\u6001\u7801: ${a.status}`);return a.text()}async function A(t,e=200){if(d(t)!=="http")throw new Error("\u83B7\u53D6\u65E5\u5FD7\u5931\u8D25: \u5F53\u524D\u65E5\u5FD7\u884C\u63A5\u53E3\u4EC5\u652F\u6301 http \u4F20\u8F93");if(!Number.isInteger(e)||e<1||e>5e3)throw new Error(`\u83B7\u53D6\u65E5\u5FD7\u5931\u8D25: \u65E0\u6548 count ${e}`);const{ip:n,port:s}=g(t),c=new URL(`http://${n}:${s}/logger/current/lines`);c.searchParams.set("count",String(e));const i=await fetch(c.toString(),{method:"GET"});if(i.status===404)return{lines:[],hasMore:!1};if(!i.ok)throw new Error(`\u83B7\u53D6\u65E5\u5FD7\u5931\u8D25\uFF0C\u72B6\u6001\u7801: ${i.status}`);const o=await i.json();return{lines:Array.isArray(o.lines)?o.lines.map(a=>String(a)):[],hasMore:o.hasMore===!0}}async function P(t){const e=await h.WSManager.request(t);if(!e.success)throw new Error(`${t} \u5931\u8D25: ${String(e.message??"unknown")}`)}async function $(t){const{wsPort:e,wsWaitMs:r}=q(t),n=h.WSManager.get();n.isStarted()||await n.start(e),h.WSManager.isConnected()||(console.log("\u231B \u7B49\u5F85\u8BBE\u5907\u901A\u8FC7 WS \u8FDE\u63A5..."),await n.waitForClient(r))}async function z(t){const e=t.workspacePath?w.resolve(t.workspacePath):process.cwd(),r=d(t);if(console.log(`\u{1F527} \u5F00\u59CB\u6784\u5EFA\u9879\u76EE: ${e}`),await O(e),r==="ws"){await $(t),console.log("\u{1F4E6} \u5F00\u59CB\u901A\u8FC7 WS \u540C\u6B65\u9879\u76EE\u5230\u8BBE\u5907"),await W(e),console.log("\u{1F680} \u5F00\u59CB\u901A\u8FC7 WS \u8FD0\u884C\u9879\u76EE"),await P("run"),console.log("\u2705 \u8FD0\u884C\u8BF7\u6C42\u5DF2\u53D1\u9001");return}const{ip:n,port:s}=g(t);console.log(`\u{1F4E6} \u5F00\u59CB\u540C\u6B65\u9879\u76EE\u5230\u8BBE\u5907: ${n}:${s}`),await M(e,n,s),console.log(`\u{1F680} \u5F00\u59CB\u8FD0\u884C\u9879\u76EE: ${n}:${s}`),await m("run",n,s),console.log("\u2705 \u8FD0\u884C\u8BF7\u6C42\u5DF2\u53D1\u9001")}async function G(t){const e=t.workspacePath?w.resolve(t.workspacePath):process.cwd(),r=d(t);if(console.log(`\u{1F527} \u5F00\u59CB\u6784\u5EFA\u9879\u76EE: ${e}`),await O(e),r==="ws"){await $(t),console.log("\u{1F4E6} \u5F00\u59CB\u901A\u8FC7 WS \u540C\u6B65\u9879\u76EE\u5230\u8BBE\u5907"),await W(e),console.log("\u{1F5BC}\uFE0F \u5F00\u59CB\u901A\u8FC7 WS \u9884\u89C8 UI"),await P("runUI"),console.log("\u2705 UI \u9884\u89C8\u8BF7\u6C42\u5DF2\u53D1\u9001");return}const{ip:n,port:s}=g(t);console.log(`\u{1F4E6} \u5F00\u59CB\u540C\u6B65\u9879\u76EE\u5230\u8BBE\u5907: ${n}:${s}`),await M(e,n,s),console.log(`\u{1F5BC}\uFE0F \u5F00\u59CB\u9884\u89C8 UI: ${n}:${s}`),await m("runUI",n,s),console.log("\u2705 UI \u9884\u89C8\u8BF7\u6C42\u5DF2\u53D1\u9001")}async function V(t){if(d(t)==="ws"){await $(t),console.log("\u{1F6D1} \u5F00\u59CB\u901A\u8FC7 WS \u505C\u6B62\u9879\u76EE"),await P("stop"),console.log("\u2705 \u505C\u6B62\u8BF7\u6C42\u5DF2\u53D1\u9001");return}const{ip:r,port:n}=g(t);console.log(`\u{1F6D1} \u5F00\u59CB\u505C\u6B62\u9879\u76EE: ${r}:${n}`),await m("stop",r,n),console.log("\u2705 \u505C\u6B62\u8BF7\u6C42\u5DF2\u53D1\u9001")}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes