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.
- package/dist/build/index.js +1 -0
- package/dist/cli.js +6 -6
- package/dist/device/project.js +1 -0
- package/dist/device/usb-forward.d.ts +4 -0
- package/dist/device/usb-forward.js +1 -0
- package/dist/mcp/device-log.js +1 -1
- package/dist/mcp/image-tools.js +1 -1
- package/dist/mcp/runtime-tools.js +1 -1
- package/dist/mcp-server.js +1 -1
- package/dist/packaging/index.js +1 -0
- package/dist/usb-forward.d.ts +2 -4
- package/dist/usb-forward.js +2 -1
- package/package.json +3 -2
- package/dist/build.js +0 -1
- package/dist/luaObfuscator/addVararg.d.ts +0 -2
- package/dist/luaObfuscator/addVararg.js +0 -1
- package/dist/luaObfuscator/antiTamper.d.ts +0 -2
- package/dist/luaObfuscator/antiTamper.js +0 -26
- package/dist/luaObfuscator/ast.d.ts +0 -191
- package/dist/luaObfuscator/ast.js +0 -1
- package/dist/luaObfuscator/cipher.d.ts +0 -10
- package/dist/luaObfuscator/cipher.js +0 -28
- package/dist/luaObfuscator/compiler.d.ts +0 -31
- package/dist/luaObfuscator/compiler.js +0 -1
- package/dist/luaObfuscator/constantArray.d.ts +0 -5
- package/dist/luaObfuscator/constantArray.js +0 -1
- package/dist/luaObfuscator/flatten.d.ts +0 -2
- package/dist/luaObfuscator/flatten.js +0 -1
- package/dist/luaObfuscator/index.d.ts +0 -6
- package/dist/luaObfuscator/index.js +0 -1
- package/dist/luaObfuscator/lexer.d.ts +0 -14
- package/dist/luaObfuscator/lexer.js +0 -10
- package/dist/luaObfuscator/minify.d.ts +0 -3
- package/dist/luaObfuscator/minify.js +0 -1
- package/dist/luaObfuscator/numbers.d.ts +0 -2
- package/dist/luaObfuscator/numbers.js +0 -1
- package/dist/luaObfuscator/opcodes.d.ts +0 -3
- package/dist/luaObfuscator/opcodes.js +0 -1
- package/dist/luaObfuscator/parser.d.ts +0 -8
- package/dist/luaObfuscator/parser.js +0 -1
- package/dist/luaObfuscator/rename.d.ts +0 -3
- package/dist/luaObfuscator/rename.js +0 -1
- package/dist/luaObfuscator/reserved.d.ts +0 -5
- package/dist/luaObfuscator/reserved.js +0 -1
- package/dist/luaObfuscator/scope.d.ts +0 -11
- package/dist/luaObfuscator/scope.js +0 -1
- package/dist/luaObfuscator/selftest.d.ts +0 -1
- package/dist/luaObfuscator/selftest.js +0 -39
- package/dist/luaObfuscator/splitStrings.d.ts +0 -2
- package/dist/luaObfuscator/splitStrings.js +0 -1
- package/dist/luaObfuscator/strings.d.ts +0 -4
- package/dist/luaObfuscator/strings.js +0 -1
- package/dist/luaObfuscator/visit.d.ts +0 -5
- package/dist/luaObfuscator/visit.js +0 -1
- package/dist/luaObfuscator/vmEmit.d.ts +0 -2
- package/dist/luaObfuscator/vmEmit.js +0 -281
- package/dist/luaObfuscator/wrapInFunction.d.ts +0 -2
- package/dist/luaObfuscator/wrapInFunction.js +0 -1
- package/dist/packager.js +0 -1
- package/dist/project.js +0 -1
- /package/dist/{build.d.ts → build/index.d.ts} +0 -0
- /package/dist/{luaBundle.d.ts → build/luaBundle.d.ts} +0 -0
- /package/dist/{luaBundle.js → build/luaBundle.js} +0 -0
- /package/dist/{scriptProtect.d.ts → build/scriptProtect.d.ts} +0 -0
- /package/dist/{scriptProtect.js → build/scriptProtect.js} +0 -0
- /package/dist/{stopGuardPlugin.d.ts → build/stopGuardPlugin.d.ts} +0 -0
- /package/dist/{stopGuardPlugin.js → build/stopGuardPlugin.js} +0 -0
- /package/dist/{project.d.ts → device/project.d.ts} +0 -0
- /package/dist/{ws-manager.d.ts → device/ws-manager.d.ts} +0 -0
- /package/dist/{ws-manager.js → device/ws-manager.js} +0 -0
- /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 +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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|