@ttmg/cli 0.3.2-beta.5 → 0.3.2-beta.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 (217) hide show
  1. package/dist/index.js +1616 -989
  2. package/dist/index.js.map +1 -1
  3. package/dist/openDataContext/template/open_context.html.hbs +29 -0
  4. package/dist/openDataContext/template/open_context_sdk.js.hbs +16 -0
  5. package/dist/package.json +4 -3
  6. package/dist/public/assets/index-0QsVohJs.js +1 -0
  7. package/dist/public/assets/index-1oO8mc2L.js +1 -0
  8. package/dist/public/assets/index-2LCyHbgv.js +1 -0
  9. package/dist/public/assets/index-5oEydzr8.js +1 -0
  10. package/dist/public/assets/index-7DkNQbVL.js +1 -0
  11. package/dist/public/assets/index-7DkNQbVL.js.br +0 -0
  12. package/dist/public/assets/index-7gXKDEMH.js +1 -0
  13. package/dist/public/assets/index-A5pSGmoW.js +1 -0
  14. package/dist/public/assets/index-A5pSGmoW.js.br +0 -0
  15. package/dist/public/assets/index-B-vfB9Ya.js +1 -0
  16. package/dist/public/assets/index-B0Cw26f2.js +1 -0
  17. package/dist/public/assets/index-B0lMLCEN.js +1 -0
  18. package/dist/public/assets/index-B0lMLCEN.js.br +0 -0
  19. package/dist/public/assets/index-B6HUBYPb.js +1 -0
  20. package/dist/public/assets/index-B7JMUpIM.js +23 -0
  21. package/dist/public/assets/index-B7JMUpIM.js.br +0 -0
  22. package/dist/public/assets/index-B7j-geVc.js +1 -0
  23. package/dist/public/assets/index-B8N8nU5k.js +1 -0
  24. package/dist/public/assets/index-B90t3m2Y.js +1 -0
  25. package/dist/public/assets/index-BA1vKWLl.js +1 -0
  26. package/dist/public/assets/index-BB5kLk47.css +1 -0
  27. package/dist/public/assets/index-BBiD3ZY0.js +1 -0
  28. package/dist/public/assets/index-BEkRt3ox.js +1 -0
  29. package/dist/public/assets/index-BH5OVuUr.js +1 -0
  30. package/dist/public/assets/index-BH5OVuUr.js.br +0 -0
  31. package/dist/public/assets/index-BIJQ2jN-.js +1 -0
  32. package/dist/public/assets/index-BK45hlql.js +1 -0
  33. package/dist/public/assets/index-BK45hlql.js.br +0 -0
  34. package/dist/public/assets/index-BNnfKu4_.js +1 -0
  35. package/dist/public/assets/index-BPf4cmgA.css +1 -0
  36. package/dist/public/assets/index-BQQoGoko.js +1 -0
  37. package/dist/public/assets/index-BR-m6RXi.js +1 -0
  38. package/dist/public/assets/index-BRZmkpre.js +1 -0
  39. package/dist/public/assets/index-BSH4idOV.js +1 -0
  40. package/dist/public/assets/index-BSH4idOV.js.br +0 -0
  41. package/dist/public/assets/index-BSb2BUk_.js +1 -0
  42. package/dist/public/assets/index-BTnlaKEm.js +1 -0
  43. package/dist/public/assets/index-BUT4SrUj.js +1 -0
  44. package/dist/public/assets/index-BUT4SrUj.js.br +0 -0
  45. package/dist/public/assets/index-BWO_zr5E.js +1 -0
  46. package/dist/public/assets/index-BWO_zr5E.js.br +0 -0
  47. package/dist/public/assets/index-Bb28RxEr.js +1 -0
  48. package/dist/public/assets/index-Bb28RxEr.js.br +0 -0
  49. package/dist/public/assets/index-BdGK9RSJ.js +1 -0
  50. package/dist/public/assets/index-Bf6aJOeV.css +1 -0
  51. package/dist/public/assets/index-BfX_lbWX.css +1 -0
  52. package/dist/public/assets/index-BfX_lbWX.css.br +0 -0
  53. package/dist/public/assets/index-BfnzurfX.js +1 -0
  54. package/dist/public/assets/index-BkiB8M4Y.css +1 -0
  55. package/dist/public/assets/index-BkiB8M4Y.css.br +0 -0
  56. package/dist/public/assets/index-BmT98gGj.js +1 -0
  57. package/dist/public/assets/index-BmT98gGj.js.br +0 -0
  58. package/dist/public/assets/index-Bpv7pLX2.js +1 -0
  59. package/dist/public/assets/index-Bpv7pLX2.js.br +0 -0
  60. package/dist/public/assets/index-Bq6YxKLX.css +1 -0
  61. package/dist/public/assets/index-BreEkwI6.js +1 -0
  62. package/dist/public/assets/index-BreEkwI6.js.br +0 -0
  63. package/dist/public/assets/index-Bs8SawoL.js +1 -0
  64. package/dist/public/assets/index-Bs8SawoL.js.br +0 -0
  65. package/dist/public/assets/index-Bue_fL5q.css +1 -0
  66. package/dist/public/assets/index-Bue_fL5q.css.br +0 -0
  67. package/dist/public/assets/index-BujwLBmz.js +1 -0
  68. package/dist/public/assets/index-BvC2EkcY.js +1 -0
  69. package/dist/public/assets/index-Bw3iU4wV.js +1 -0
  70. package/dist/public/assets/index-BwbPFgZF.css +1 -0
  71. package/dist/public/assets/index-ByAY7l0v.js +1 -0
  72. package/dist/public/assets/index-Byxv2SPa.js +1 -0
  73. package/dist/public/assets/index-C250u6X0.css +1 -0
  74. package/dist/public/assets/index-C250u6X0.css.br +0 -0
  75. package/dist/public/assets/index-C2qYQNvg.js +1 -0
  76. package/dist/public/assets/index-C2qYQNvg.js.br +0 -0
  77. package/dist/public/assets/index-C46fvTvh.js +23 -0
  78. package/dist/public/assets/index-C46fvTvh.js.br +0 -0
  79. package/dist/public/assets/index-C4FRfjag.css +1 -0
  80. package/dist/public/assets/index-C4cINkXW.js +1 -0
  81. package/dist/public/assets/index-C4cINkXW.js.br +0 -0
  82. package/dist/public/assets/index-C8f539tK.css +1 -0
  83. package/dist/public/assets/index-C9KcyJn2.js +1 -0
  84. package/dist/public/assets/index-C9_SXd2H.css +1 -0
  85. package/dist/public/assets/index-CAwhcizP.css +1 -0
  86. package/dist/public/assets/index-CAwhcizP.css.br +0 -0
  87. package/dist/public/assets/index-CFwZ2h-R.js +1 -0
  88. package/dist/public/assets/index-CHTG85h6.js +1 -0
  89. package/dist/public/assets/index-CL1kuXlO.js +1 -0
  90. package/dist/public/assets/index-CPibVFVC.js +1 -0
  91. package/dist/public/assets/index-CSEt7Wc0.js +25 -0
  92. package/dist/public/assets/index-CSEt7Wc0.js.br +0 -0
  93. package/dist/public/assets/index-CUlfC1eK.js +1 -0
  94. package/dist/public/assets/index-CUlfC1eK.js.br +0 -0
  95. package/dist/public/assets/index-CV0599Ro.js +1 -0
  96. package/dist/public/assets/index-CV0599Ro.js.br +0 -0
  97. package/dist/public/assets/index-CWMGWfEt.js +1 -0
  98. package/dist/public/assets/index-CWS-rk-J.js +23 -0
  99. package/dist/public/assets/index-CWS-rk-J.js.br +0 -0
  100. package/dist/public/assets/index-CXQMSlbc.js +1 -0
  101. package/dist/public/assets/index-CXQMSlbc.js.br +0 -0
  102. package/dist/public/assets/index-CYyj9uYU.js +1 -0
  103. package/dist/public/assets/index-CYyj9uYU.js.br +0 -0
  104. package/dist/public/assets/index-CZtKeBZm.js +1 -0
  105. package/dist/public/assets/index-Ca67110A.js +1 -0
  106. package/dist/public/assets/index-CdrbgBJX.js +1 -0
  107. package/dist/public/assets/index-CfmWGzK2.js +1 -0
  108. package/dist/public/assets/index-Cfp2WBke.js +1 -0
  109. package/dist/public/assets/index-Cfp2WBke.js.br +0 -0
  110. package/dist/public/assets/index-CgVq-50w.css +1 -0
  111. package/dist/public/assets/index-CgVq-50w.css.br +0 -0
  112. package/dist/public/assets/index-ChblnyYX.js +1 -0
  113. package/dist/public/assets/index-ChceQzYz.js +1 -0
  114. package/dist/public/assets/index-CjzSEyzv.js +1 -0
  115. package/dist/public/assets/index-CluLESuq.js +1 -0
  116. package/dist/public/assets/index-CluLESuq.js.br +0 -0
  117. package/dist/public/assets/index-CnBegIDJ.js +1 -0
  118. package/dist/public/assets/index-Cnuj31jy.js +1 -0
  119. package/dist/public/assets/index-CzYlYBW_.js +1 -0
  120. package/dist/public/assets/index-D-_HSgCe.js +1 -0
  121. package/dist/public/assets/index-D1_vcunJ.js +23 -0
  122. package/dist/public/assets/index-D1_vcunJ.js.br +0 -0
  123. package/dist/public/assets/index-D4s2xpeA.js +1 -0
  124. package/dist/public/assets/index-D5ydsq9J.js +24 -0
  125. package/dist/public/assets/index-D5ydsq9J.js.br +0 -0
  126. package/dist/public/assets/index-D67sKNrw.css +1 -0
  127. package/dist/public/assets/index-D67sKNrw.css.br +0 -0
  128. package/dist/public/assets/index-D6RKE8qm.js +1 -0
  129. package/dist/public/assets/index-D6rLeEiy.js +1 -0
  130. package/dist/public/assets/index-DDC2R7_m.js +1 -0
  131. package/dist/public/assets/index-DDqw8mHL.js +1 -0
  132. package/dist/public/assets/index-DE1GZvdF.js +1 -0
  133. package/dist/public/assets/index-DFD_qEAi.js +1 -0
  134. package/dist/public/assets/index-DFEMmQoM.js +23 -0
  135. package/dist/public/assets/index-DFEMmQoM.js.br +0 -0
  136. package/dist/public/assets/index-DGHL1pSq.js +1 -0
  137. package/dist/public/assets/index-DJ-xo_2v.js +1 -0
  138. package/dist/public/assets/index-DJIK_Un5.js +23 -0
  139. package/dist/public/assets/index-DJIK_Un5.js.br +0 -0
  140. package/dist/public/assets/index-DKK8dOYS.js +1 -0
  141. package/dist/public/assets/index-DNmLdBiH.js +1 -0
  142. package/dist/public/assets/index-DNmLdBiH.js.br +0 -0
  143. package/dist/public/assets/index-DP2DtK77.js +1 -0
  144. package/dist/public/assets/index-DPSts5Re.css +1 -0
  145. package/dist/public/assets/index-DPSts5Re.css.br +0 -0
  146. package/dist/public/assets/index-DT6IV9TH.js +1 -0
  147. package/dist/public/assets/index-DU0eX6vn.js +1 -0
  148. package/dist/public/assets/index-DU0eX6vn.js.br +0 -0
  149. package/dist/public/assets/index-DWVXwBku.js +1 -0
  150. package/dist/public/assets/index-DXFg6tGR.css +1 -0
  151. package/dist/public/assets/index-DaS-23NX.js +1 -0
  152. package/dist/public/assets/index-Db0ve94g.js +1 -0
  153. package/dist/public/assets/index-Db0ve94g.js.br +0 -0
  154. package/dist/public/assets/index-DcTZlirs.js +1 -0
  155. package/dist/public/assets/index-De1gwiJs.js +1 -0
  156. package/dist/public/assets/index-De1gwiJs.js.br +0 -0
  157. package/dist/public/assets/index-DfGgXJTb.js +1 -0
  158. package/dist/public/assets/index-DfGgXJTb.js.br +0 -0
  159. package/dist/public/assets/index-DfZFMeOV.js +1 -0
  160. package/dist/public/assets/index-DfZFMeOV.js.br +0 -0
  161. package/dist/public/assets/index-DjHdTW8H.js +1 -0
  162. package/dist/public/assets/index-DlnMPCtX.js +1 -0
  163. package/dist/public/assets/index-Do_Bcsn1.js +1 -0
  164. package/dist/public/assets/index-DpFldGAl.js +1 -0
  165. package/dist/public/assets/index-DpgkUWkv.css +1 -0
  166. package/dist/public/assets/index-DpgkUWkv.css.br +0 -0
  167. package/dist/public/assets/index-DrFLOJ8g.js +23 -0
  168. package/dist/public/assets/index-DrFLOJ8g.js.br +0 -0
  169. package/dist/public/assets/index-DuBOXL7A.js +23 -0
  170. package/dist/public/assets/index-DuBOXL7A.js.br +0 -0
  171. package/dist/public/assets/index-DxQ0R3Pw.js +1 -0
  172. package/dist/public/assets/index-DyMZ_Lkc.js +1 -0
  173. package/dist/public/assets/index-DzLOWSx9.js +1 -0
  174. package/dist/public/assets/index-DzLOWSx9.js.br +0 -0
  175. package/dist/public/assets/index-FEOLSRkl.js +1 -0
  176. package/dist/public/assets/index-Fi4Rrt8I.js +1 -0
  177. package/dist/public/assets/index-HY89kziJ.js +1 -0
  178. package/dist/public/assets/index-Ifzp5fEn.js +1 -0
  179. package/dist/public/assets/index-J11P4g5S.js +1 -0
  180. package/dist/public/assets/index-J11P4g5S.js.br +0 -0
  181. package/dist/public/assets/index-JSX8aCBJ.js +1 -0
  182. package/dist/public/assets/index-JSX8aCBJ.js.br +0 -0
  183. package/dist/public/assets/index-JvC1YVUI.js +1 -0
  184. package/dist/public/assets/index-MT2NggoZ.js +1 -0
  185. package/dist/public/assets/index-MT2NggoZ.js.br +0 -0
  186. package/dist/public/assets/index-NdyUV0z0.js +1 -0
  187. package/dist/public/assets/index-OVJGZ7cU.js +1 -0
  188. package/dist/public/assets/index-T0nyAjcT.js +24 -0
  189. package/dist/public/assets/index-T0nyAjcT.js.br +0 -0
  190. package/dist/public/assets/index-UfX9eOrO.js +1 -0
  191. package/dist/public/assets/index-UujKgP-l.js +1 -0
  192. package/dist/public/assets/index-V67-RbBt.js +1 -0
  193. package/dist/public/assets/index-V67-RbBt.js.br +0 -0
  194. package/dist/public/assets/index-VzuG_wgX.js +1 -0
  195. package/dist/public/assets/index-XZ5vQlJ4.js +1 -0
  196. package/dist/public/assets/index-XdW2ZDCl.js +1 -0
  197. package/dist/public/assets/index-_ZVXaqDY.js +1 -0
  198. package/dist/public/assets/index-aPvChUsm.js +1 -0
  199. package/dist/public/assets/index-b5aKh2UT.js +1 -0
  200. package/dist/public/assets/index-bgdF_Zeb.js +23 -0
  201. package/dist/public/assets/index-bgdF_Zeb.js.br +0 -0
  202. package/dist/public/assets/index-d9sXoj67.js +1 -0
  203. package/dist/public/assets/index-d9sXoj67.js.br +0 -0
  204. package/dist/public/assets/index-ea8VcG1l.js +1 -0
  205. package/dist/public/assets/index-eoaE1BZf.css +1 -0
  206. package/dist/public/assets/index-eoaE1BZf.css.br +0 -0
  207. package/dist/public/assets/index-gZxXPtMU.js +1 -0
  208. package/dist/public/assets/index-hGMU1JI_.js +1 -0
  209. package/dist/public/assets/index-khqRg3Tb.js +1 -0
  210. package/dist/public/assets/index-nCPCU1qS.js +1 -0
  211. package/dist/public/assets/index-umN-hrVX.js +1 -0
  212. package/dist/public/assets/index-yh4tKekV.css +1 -0
  213. package/dist/public/assets/index-z6YlZek6.js +1 -0
  214. package/dist/public/index.html +2 -2
  215. package/dist/scripts/resetLocalState.js +48 -0
  216. package/dist/scripts/worker.js +62 -12
  217. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ import{j as e,T as s,i as c,V as o}from"./index-CWS-rk-J.js";import{D as n}from"./index-UujKgP-l.js";const a=[{node:"item",name:c("quickStart"),link:"https://bytedance.sg.larkoffice.com/docx/MarqdNvQLoihvjxN4rFllgjBgwb"},{node:"item",name:c("jsApiList"),link:"https://bytedance.larkoffice.com/wiki/GQscwDOQSiPxyjkbzyfckh2pnDg"},{node:"item",name:c("advancedGuide"),link:"https://bytedance.larkoffice.com/wiki/AGqRwu0qQiXZpVkkToUcRP99nwc"},{node:"item",name:c("faq"),link:"https://bytedance.larkoffice.com/wiki/O6aWwFhDBiEglwkcnJ4ccJpdnmb"}],m=()=>e.jsx(n,{trigger:"hover",position:"bottomRight",render:e.jsx(e.Fragment,{children:a.map(i=>e.jsx(n.Item,{onClick:()=>{window.open(i.link)},children:i.name},i.name))}),children:e.jsxs("div",{className:"access-docs",children:[e.jsx(s.Text,{className:"access-docs-text",type:"primary",children:c("docs")}),e.jsx(o,{className:"access-docs-icon"})]})});export{m as AccessDocs};
@@ -0,0 +1 @@
1
+ import{j as e,i as t,d as i,D as s}from"./index-CSEt7Wc0.js";const c=[{title:"0.3.2",target:{iOS:">=43.1",Android:">=43.1"},changes:{feature:[{desc:{"zh-CN":"项目预检结果增加 error/warning/info 分级,错误项将阻断调试流程并给出聚合报错信息","en-US":"Project validation adds error/warning/info levels; errors will block debugging and show aggregated messages"},module:"check"},{desc:{"zh-CN":"支持 Cocos 2.0 openDataContext 配置","en-US":"Support Cocos 2.0 openDataContext configuration"},module:"openDataContext"}],optimize:[{desc:{"zh-CN":"启动校验增强:检查是否在小游戏根目录执行,对于分包配置 subPackages 给出明确报错,引导开发者修改为 subpackages","en-US":"Enhance entry validation: ensure running in project root and warn about subPackages typo; subpackages is required"},module:"check"},{desc:{"zh-CN":"优化项目详情查询异常提示","en-US":"Enhance game detail query error message to avoid false negatives"},module:"detail"}]}},{title:"0.3.1",target:{iOS:">=43.1",Android:">=43.1"},changes:{feature:[{desc:{"zh-CN":"支持 unity 小游戏本地一些列调试功能,如 Wasm 分包、包大小校验、一键上传代码包至平台等","en-US":"Support unity debug features, such as Wasm split, package size check, one-click upload code package to platform, etc."},link:"https://bytedance.larkoffice.com/wiki/E5TAwQ1O1iylUXkoQFocfdL0ntG",module:"new"},{desc:{"zh-CN":"增加用户登录过期的异常提示,提醒开发者重新登录","en-US":"Add login expired exception prompt, prompt developers to re-login."},module:"login"}],optimize:[{desc:{"zh-CN":"优化上传代码包至平台功能,开发者只用添加描述后点击上传便可自动压缩当前目录下的代码包上传至开发者平台","en-US":"Optimize upload code package to platform function, developers only need to add a description and click upload to automatically compress the code package in the current directory to the developer platform."},module:"upload"},{desc:{"zh-CN":"优化 ttmg login 终端网络代理异常导致无法登录的报错引导,提示用户检查网络设置","en-US":"Optimize ttmg login terminal network proxy exception login prompt, prompt check network settings."},module:"login"}]}},{title:"0.3.0",target:{iOS:">=43.1",Android:">=43.1"},changes:{feature:[{desc:{"zh-CN":"支持了开发信息蒙层,打开后可以查看游戏 FPS、设备信息、调试开关等信息,便于查看游戏运行状态","en-US":"Support devInfo panel, which can show game FPS, device info, debug switch, etc."},link:"https://bytedance.larkoffice.com/wiki/PaK1wSu0eiPrxrkrqtrcR3VEnjf",module:"devOptions"},{desc:{"zh-CN":"支持删除历史启动模式,便于管理历史启动模式","en-US":"Support delete historical launch mode,keep consistent with client dev options"},module:"devOptions"},{desc:{"zh-CN":"调整调试设置模块名称为开发选项,和客户端内调开发者选项保持一致","en-US":"Rename debug setting module to dev options, keep consistent with client dev options"},module:"devOptions",link:"https://bytedance.larkoffice.com/wiki/PaK1wSu0eiPrxrkrqtrcR3VEnjf"},{desc:{"zh-CN":"调试设置新增定义 vConsole 和 开发信息浮层设置","en-US":"Add debug setting to define vConsole and dev overlay"},module:"devOptions"},{desc:{"zh-CN":"支持了变更日志,用户可以在调试环境下查看游戏的变更记录,部分新功能可通过更多信息查看使用","en-US":"Support change log, user can view game change log in IDE, some new features can be viewed in more info"},module:"new"}],optimize:[{desc:{"zh-CN":"支持了调试设置开关本地缓存,避免每次都需要重新设置","en-US":"Support debug setting cache, avoid setting debug mode every time"},module:"devOptions"}],bugfix:[{desc:{"zh-CN":"修复上传名称为中文的游戏时,平台展示乱码的问题","en-US":"Fix the issue that the platform shows garbled code when the game name is in Chinese"},module:"upload"},{desc:{"zh-CN":"修复启动模式模块,自定义query 参数无法持久化的问题","en-US":"Fix the issue that custom query parameters cannot be persisted in launch mode module"},module:"launchMode"},{desc:{"zh-CN":"修复扫描二维码模块,内容过多,纵向无法滚动问题","en-US":"Fix the issue that the content in scan QR code module is too long, and cannot be scrolled vertically"},module:"scanQrcode"}]}}],d=()=>{const a=s;return e.jsx("div",{className:"change-log-container",children:c.map(n=>e.jsxs("div",{className:"change-log-item",children:[e.jsx("h2",{className:"change-log-title",children:n.title}),e.jsx("div",{className:"change-log-target",children:e.jsxs("div",{className:"change-log-target-title",children:[t("changelogTarget")," iOS ",n.target.iOS," | Android",n.target.Android]})}),n?.changes?.feature?.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:"change-log-feature-title",children:e.jsx(i,{color:"green",size:"large",shape:"circle",type:"solid",children:t("changelogFeature")})}),e.jsx("ul",{className:"change-log-changes-feature",children:n.changes.feature.map(o=>e.jsxs("li",{className:"change-log-change",children:[o.desc[a]," ",o?.link?e.jsx("a",{style:{fontWeight:600,color:"orange"},href:o.link,target:"_blank",rel:"noopener noreferrer",children:t("changelogLink")}):null]},o.desc[a]))})]}),n?.changes?.optimize?.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:"change-log-optimize-title",children:e.jsx(i,{color:"orange",size:"large",shape:"circle",type:"solid",children:t("changelogOptimize")})}),e.jsx("ul",{className:"change-log-changes-optimize",children:n.changes.optimize.map(o=>e.jsx("li",{className:"change-log-change",children:o.desc[a]},o.desc[a]))})]}),n?.changes?.bugfix?.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:"change-log-bugfix-title",children:e.jsx(i,{color:"red",size:"large",shape:"circle",type:"solid",children:t("changelogBugfix")})}),e.jsx("ul",{className:"change-log-changes-bugfix",children:n.changes.bugfix.map(o=>e.jsx("li",{className:"change-log-change",children:o.desc[a]},o.desc[a]))})]})]},n.title))})};export{d as ChangeLog};
@@ -0,0 +1 @@
1
+ import{u as P,r as l,j as e,p as U,aa as m,i as a,c as k,ab as y,h as D,T as x,F as h,f as F,ac as A}from"./index-D5ydsq9J.js";const M=()=>{const{state:{user:r}}=P(),[f,i]=l.useState(!1),[g,o]=l.useState(!1),[j,c]=l.useState(""),[d,n]=l.useState(""),p=l.useRef(null),u=()=>{o(!1),n(""),c("")},v=()=>{i(!1),u(),p.current?.formApi?.reset?.()},C=()=>{r?.email&&i(!0)},N=s=>{const t=s;if(t?.code===0)A.success({title:a("uploadPlatformSuccess"),content:e.jsxs(e.Fragment,{children:[e.jsx("div",{children:a("uploadPlatformDesc")}),e.jsx("div",{style:{marginTop:12,display:"flex",justifyContent:"flex-end"},children:e.jsx(x.Text,{link:!0,onClick:()=>{window.open(t?.data?.detail,"_blank")},children:a("viewOnPlatform")})})]}),duration:10}),i(!1),u();else{const b=t?.error?.StatusMessage||t?.detail||a("uploadPlatformFailed");n(b),o(!1)}},S=s=>{const t=s?.error?.StatusMessage||s?.response?.detail||s?.message||a("uploadPlatformFailed");n(t),o(!1)},T=()=>{o(!0),F({method:"POST",url:"/game/upload",headers:{"ttmg-game-desc":encodeURIComponent(j||"--")}}).then(s=>{N(s)}).catch(s=>{S(s)})};return e.jsxs(e.Fragment,{children:[e.jsx(U,{content:()=>r?.email?null:e.jsx("div",{className:"uploader-login-tip",children:a("loginToUpload")}),children:e.jsxs("div",{className:k("resource-uploader",{"resource-uploader-disabled":!r?.email}),onClick:C,children:[e.jsx(m,{size:"default"}),e.jsx("div",{className:"uploader-text",children:a("upload")})]})}),e.jsx(y,{footer:null,visible:f,onCancel:v,title:a("uploadToPlatform"),children:e.jsxs("div",{className:"uploader-modal-content",children:[g&&e.jsx("div",{className:"upload-loading-container",children:e.jsx("div",{className:"loading-spin",children:e.jsx(D,{size:"large"})})}),d&&e.jsx(x.Text,{style:{color:"red",marginBottom:12,marginTop:12},children:d}),e.jsxs(h,{ref:p,onChange:({values:s})=>{c(s?.gameDescription||"--"),n("")},children:[e.jsx(h.TextArea,{label:a("gameAssetDescription"),placeholder:a("gameAssetDescription"),field:"gameDescription"}),e.jsxs("div",{className:"uploader-button-container",onClick:T,children:[e.jsx(m,{className:"uploader-button-icon"}),e.jsx("div",{className:"uploader-button-text",children:a("uploadGamePackageTip")})]})]})]})})]})};export{M as GameUploader};
@@ -0,0 +1 @@
1
+ import{r as s,j as e,S as b,C as k,T as g}from"./index-D1_vcunJ.js";const m=c=>{const{open:C,onClose:u}=c,[t,n]=s.useState(!0),[o,l]=s.useState(!1),[d,i]=s.useState(!1),[x,E]=s.useState(!1),r=[{label:"是否开启域名校验",description:"开启后,客户端将校验所有请求的域名是否合法,建议开发环境关闭以便调试。",checked:t,onChange:n},{label:"是否开启 IAA Mock",description:"启用后,广告相关接口将返回模拟数据,方便开发和测试广告逻辑。",checked:o,onChange:l},{label:"是否开启 IAP Mock",description:"启用后,内购相关流程将使用模拟支付,避免真实扣费。",checked:d,onChange:i}];return e.jsx("div",{children:e.jsx(b,{vertical:!0,align:"start",spacing:"loose",children:r.map((a,h)=>e.jsxs("div",{children:[e.jsx(k,{checked:a.checked,onChange:p=>a.onChange(p.target.checked),children:a.label}),e.jsx(g.Text,{type:"tertiary",style:{display:"block",marginTop:4},children:a.description})]},h))})})};export{m as DebugSetting};
@@ -0,0 +1 @@
1
+ import{u as P,r as l,j as e,p as U,aa as m,i as a,c as k,ab as y,h as D,T as x,F as h,f as F,ac as A}from"./index-D1_vcunJ.js";const M=()=>{const{state:{user:r}}=P(),[f,i]=l.useState(!1),[g,o]=l.useState(!1),[j,c]=l.useState(""),[d,n]=l.useState(""),p=l.useRef(null),u=()=>{o(!1),n(""),c("")},v=()=>{i(!1),u(),p.current?.formApi?.reset?.()},C=()=>{r?.email&&i(!0)},N=s=>{const t=s;if(t?.code===0)A.success({title:a("uploadPlatformSuccess"),content:e.jsxs(e.Fragment,{children:[e.jsx("div",{children:a("uploadPlatformDesc")}),e.jsx("div",{style:{marginTop:12,display:"flex",justifyContent:"flex-end"},children:e.jsx(x.Text,{link:!0,onClick:()=>{window.open(t?.data?.detail,"_blank")},children:a("viewOnPlatform")})})]}),duration:10}),i(!1),u();else{const b=t?.error?.StatusMessage||t?.detail||a("uploadPlatformFailed");n(b),o(!1)}},S=s=>{const t=s?.error?.StatusMessage||s?.response?.detail||s?.message||a("uploadPlatformFailed");n(t),o(!1)},T=()=>{o(!0),F({method:"POST",url:"/game/upload",headers:{"ttmg-game-desc":encodeURIComponent(j||"--")}}).then(s=>{N(s)}).catch(s=>{S(s)})};return e.jsxs(e.Fragment,{children:[e.jsx(U,{content:()=>r?.email?null:e.jsx("div",{className:"uploader-login-tip",children:a("loginToUpload")}),children:e.jsxs("div",{className:k("resource-uploader",{"resource-uploader-disabled":!r?.email}),onClick:C,children:[e.jsx(m,{size:"default"}),e.jsx("div",{className:"uploader-text",children:a("upload")})]})}),e.jsx(y,{footer:null,visible:f,onCancel:v,title:a("uploadToPlatform"),children:e.jsxs("div",{className:"uploader-modal-content",children:[g&&e.jsx("div",{className:"upload-loading-container",children:e.jsx("div",{className:"loading-spin",children:e.jsx(D,{size:"large"})})}),d&&e.jsx(x.Text,{style:{color:"red",marginBottom:12,marginTop:12},children:d}),e.jsxs(h,{ref:p,onChange:({values:s})=>{c(s?.gameDescription||"--"),n("")},children:[e.jsx(h.TextArea,{label:a("gameAssetDescription"),placeholder:a("gameAssetDescription"),field:"gameDescription"}),e.jsxs("div",{className:"uploader-button-container",onClick:T,children:[e.jsx(m,{className:"uploader-button-icon"}),e.jsx("div",{className:"uploader-button-text",children:a("uploadGamePackageTip")})]})]})]})})]})};export{M as GameUploader};
@@ -0,0 +1 @@
1
+ .semi-descriptions{line-height:20px}.semi-descriptions table,.semi-descriptions tr,.semi-descriptions th,.semi-descriptions td{margin:0;padding:0;border:0}.semi-descriptions th{padding-right:24px}.semi-descriptions .semi-descriptions-item{margin:0;padding-bottom:12px;text-align:left;vertical-align:top}.semi-descriptions-key{font-weight:400;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;min-height:14px;white-space:nowrap;color:var(--semi-color-text-2)}.semi-descriptions-value{font-weight:400;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-0)}.semi-descriptions-center .semi-descriptions-item-th{text-align:right}.semi-descriptions-center .semi-descriptions-item-td,.semi-descriptions-left .semi-descriptions-item-th,.semi-descriptions-left .semi-descriptions-item-td,.semi-descriptions-justify .semi-descriptions-item-th{text-align:left}.semi-descriptions-justify .semi-descriptions-item-td{text-align:right}.semi-descriptions-plain .semi-descriptions-key,.semi-descriptions-plain .semi-descriptions-value{display:inline-block}.semi-descriptions-plain .semi-descriptions-value{padding-left:8px}.semi-descriptions-plain .semi-descriptions-value .semi-tag{vertical-align:middle}.semi-descriptions-double tbody{display:flex;flex-wrap:wrap}.semi-descriptions-double tr{display:inline-flex;flex-direction:column}.semi-descriptions-double .semi-descriptions-item{padding:0;flex:1}.semi-descriptions-double .semi-descriptions-value{font-weight:600}.semi-descriptions-double-small .semi-descriptions-item{padding-right:48px}.semi-descriptions-double-small .semi-descriptions-key{line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;padding-bottom:0;font-size:12px}.semi-descriptions-double-small .semi-descriptions-value{line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px}.semi-descriptions-double-medium .semi-descriptions-item{padding-right:60px}.semi-descriptions-double-medium .semi-descriptions-key{padding-bottom:4px;font-size:14px}.semi-descriptions-double-medium .semi-descriptions-value{line-height:28px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:20px}.semi-descriptions-double-large .semi-descriptions-item{padding-right:80px}.semi-descriptions-double-large .semi-descriptions-key{padding-bottom:4px;font-size:14px}.semi-descriptions-double-large .semi-descriptions-value{line-height:40px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:28px}.semi-descriptions-horizontal table{table-layout:fixed}.semi-descriptions-horizontal table,.semi-descriptions-horizontal tbody{width:100%}.semi-descriptions-horizontal .semi-descriptions-item{flex:0}.semi-rtl .semi-descriptions,.semi-portal-rtl .semi-descriptions{direction:rtl}.semi-rtl .semi-descriptions th,.semi-portal-rtl .semi-descriptions th{direction:rtl;padding-right:0;padding-left:24px}.semi-rtl .semi-descriptions .semi-descriptions-item,.semi-portal-rtl .semi-descriptions .semi-descriptions-item{text-align:right}.semi-rtl .semi-descriptions-center .semi-descriptions-item-th,.semi-portal-rtl .semi-descriptions-center .semi-descriptions-item-th{text-align:left}.semi-rtl .semi-descriptions-center .semi-descriptions-item-td,.semi-portal-rtl .semi-descriptions-center .semi-descriptions-item-td{text-align:right}.semi-rtl .semi-descriptions-left .semi-descriptions-item-th,.semi-rtl .semi-descriptions-left .semi-descriptions-item-td,.semi-portal-rtl .semi-descriptions-left .semi-descriptions-item-th,.semi-portal-rtl .semi-descriptions-left .semi-descriptions-item-td{text-align:left}.semi-rtl .semi-descriptions-justify .semi-descriptions-item-th,.semi-portal-rtl .semi-descriptions-justify .semi-descriptions-item-th{text-align:right}.semi-rtl .semi-descriptions-justify .semi-descriptions-item-td,.semi-portal-rtl .semi-descriptions-justify .semi-descriptions-item-td{text-align:left}.semi-rtl .semi-descriptions-plain .semi-descriptions-key,.semi-rtl .semi-descriptions-plain .semi-descriptions-value,.semi-portal-rtl .semi-descriptions-plain .semi-descriptions-key,.semi-portal-rtl .semi-descriptions-plain .semi-descriptions-value{display:inline-block}.semi-rtl .semi-descriptions-plain .semi-descriptions-value,.semi-portal-rtl .semi-descriptions-plain .semi-descriptions-value{padding-left:0;padding-right:8px}.semi-rtl .semi-descriptions-plain .semi-descriptions-value .semi-tag,.semi-portal-rtl .semi-descriptions-plain .semi-descriptions-value .semi-tag{vertical-align:middle}.semi-rtl .semi-descriptions-double,.semi-portal-rtl .semi-descriptions-double{direction:rtl}.semi-rtl .semi-descriptions-double .semi-descriptions-item,.semi-portal-rtl .semi-descriptions-double .semi-descriptions-item{text-align:right}.semi-rtl .semi-descriptions-double-small .semi-descriptions-item,.semi-portal-rtl .semi-descriptions-double-small .semi-descriptions-item{padding-right:0;padding-left:48px}.semi-rtl .semi-descriptions-double-medium .semi-descriptions-item,.semi-portal-rtl .semi-descriptions-double-medium .semi-descriptions-item{padding-right:0;padding-left:60px}.semi-rtl .semi-descriptions-double-large .semi-descriptions-item,.semi-portal-rtl .semi-descriptions-double-large .semi-descriptions-item{padding-right:0;padding-left:80px}.error-display{width:100%;height:100%;display:flex;overflow:hidden;align-items:center;flex-direction:column;justify-content:center}.error-display-content{margin-top:12px;max-width:70%}.game-detail-loading-container{width:100%;height:100%;display:flex;overflow:hidden;align-items:center;flex-direction:column;justify-content:center}.game-detail-container{width:100%;height:100%;overflow-y:auto;overflow-x:hidden}.terms-privacy-item{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%}.terms-privacy-label{line-height:20px}.terms-privacy-value{line-height:20px;white-space:normal;word-break:break-all}.project-detail-warning{display:flex;align-items:flex-start;width:100%;padding:0;border-radius:0;background:transparent}.project-detail-warning-text{color:#d4380d;line-height:20px;white-space:normal;word-break:break-word}
@@ -0,0 +1 @@
1
+ import{j as e,i as t,d as i,D as s}from"./index-D5ydsq9J.js";const c=[{title:"0.3.2",target:{iOS:">=43.1",Android:">=43.1"},changes:{feature:[{desc:{"zh-CN":"项目预检结果增加 error/warning/info 分级,错误项将阻断调试流程并给出聚合报错信息","en-US":"Project validation adds error/warning/info levels; errors will block debugging and show aggregated messages"},module:"check"},{desc:{"zh-CN":"支持 Cocos 2.0 openDataContext 配置","en-US":"Support Cocos 2.0 openDataContext configuration"},module:"openDataContext"}],optimize:[{desc:{"zh-CN":"启动校验增强:检查是否在小游戏根目录执行,对于分包配置 subPackages 给出明确报错,引导开发者修改为 subpackages","en-US":"Enhance entry validation: ensure running in project root and warn about subPackages typo; subpackages is required"},module:"check"},{desc:{"zh-CN":"优化项目详情查询异常提示","en-US":"Enhance game detail query error message to avoid false negatives"},module:"detail"}]}},{title:"0.3.1",target:{iOS:">=43.1",Android:">=43.1"},changes:{feature:[{desc:{"zh-CN":"支持 unity 小游戏本地一些列调试功能,如 Wasm 分包、包大小校验、一键上传代码包至平台等","en-US":"Support unity debug features, such as Wasm split, package size check, one-click upload code package to platform, etc."},link:"https://bytedance.larkoffice.com/wiki/E5TAwQ1O1iylUXkoQFocfdL0ntG",module:"new"},{desc:{"zh-CN":"增加用户登录过期的异常提示,提醒开发者重新登录","en-US":"Add login expired exception prompt, prompt developers to re-login."},module:"login"}],optimize:[{desc:{"zh-CN":"优化上传代码包至平台功能,开发者只用添加描述后点击上传便可自动压缩当前目录下的代码包上传至开发者平台","en-US":"Optimize upload code package to platform function, developers only need to add a description and click upload to automatically compress the code package in the current directory to the developer platform."},module:"upload"},{desc:{"zh-CN":"优化 ttmg login 终端网络代理异常导致无法登录的报错引导,提示用户检查网络设置","en-US":"Optimize ttmg login terminal network proxy exception login prompt, prompt check network settings."},module:"login"}]}},{title:"0.3.0",target:{iOS:">=43.1",Android:">=43.1"},changes:{feature:[{desc:{"zh-CN":"支持了开发信息蒙层,打开后可以查看游戏 FPS、设备信息、调试开关等信息,便于查看游戏运行状态","en-US":"Support devInfo panel, which can show game FPS, device info, debug switch, etc."},link:"https://bytedance.larkoffice.com/wiki/PaK1wSu0eiPrxrkrqtrcR3VEnjf",module:"devOptions"},{desc:{"zh-CN":"支持删除历史启动模式,便于管理历史启动模式","en-US":"Support delete historical launch mode,keep consistent with client dev options"},module:"devOptions"},{desc:{"zh-CN":"调整调试设置模块名称为开发选项,和客户端内调开发者选项保持一致","en-US":"Rename debug setting module to dev options, keep consistent with client dev options"},module:"devOptions",link:"https://bytedance.larkoffice.com/wiki/PaK1wSu0eiPrxrkrqtrcR3VEnjf"},{desc:{"zh-CN":"调试设置新增定义 vConsole 和 开发信息浮层设置","en-US":"Add debug setting to define vConsole and dev overlay"},module:"devOptions"},{desc:{"zh-CN":"支持了变更日志,用户可以在调试环境下查看游戏的变更记录,部分新功能可通过更多信息查看使用","en-US":"Support change log, user can view game change log in IDE, some new features can be viewed in more info"},module:"new"}],optimize:[{desc:{"zh-CN":"支持了调试设置开关本地缓存,避免每次都需要重新设置","en-US":"Support debug setting cache, avoid setting debug mode every time"},module:"devOptions"}],bugfix:[{desc:{"zh-CN":"修复上传名称为中文的游戏时,平台展示乱码的问题","en-US":"Fix the issue that the platform shows garbled code when the game name is in Chinese"},module:"upload"},{desc:{"zh-CN":"修复启动模式模块,自定义query 参数无法持久化的问题","en-US":"Fix the issue that custom query parameters cannot be persisted in launch mode module"},module:"launchMode"},{desc:{"zh-CN":"修复扫描二维码模块,内容过多,纵向无法滚动问题","en-US":"Fix the issue that the content in scan QR code module is too long, and cannot be scrolled vertically"},module:"scanQrcode"}]}}],d=()=>{const a=s;return e.jsx("div",{className:"change-log-container",children:c.map(n=>e.jsxs("div",{className:"change-log-item",children:[e.jsx("h2",{className:"change-log-title",children:n.title}),e.jsx("div",{className:"change-log-target",children:e.jsxs("div",{className:"change-log-target-title",children:[t("changelogTarget")," iOS ",n.target.iOS," | Android",n.target.Android]})}),n?.changes?.feature?.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:"change-log-feature-title",children:e.jsx(i,{color:"green",size:"large",shape:"circle",type:"solid",children:t("changelogFeature")})}),e.jsx("ul",{className:"change-log-changes-feature",children:n.changes.feature.map(o=>e.jsxs("li",{className:"change-log-change",children:[o.desc[a]," ",o?.link?e.jsx("a",{style:{fontWeight:600,color:"orange"},href:o.link,target:"_blank",rel:"noopener noreferrer",children:t("changelogLink")}):null]},o.desc[a]))})]}),n?.changes?.optimize?.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:"change-log-optimize-title",children:e.jsx(i,{color:"orange",size:"large",shape:"circle",type:"solid",children:t("changelogOptimize")})}),e.jsx("ul",{className:"change-log-changes-optimize",children:n.changes.optimize.map(o=>e.jsx("li",{className:"change-log-change",children:o.desc[a]},o.desc[a]))})]}),n?.changes?.bugfix?.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:"change-log-bugfix-title",children:e.jsx(i,{color:"red",size:"large",shape:"circle",type:"solid",children:t("changelogBugfix")})}),e.jsx("ul",{className:"change-log-changes-bugfix",children:n.changes.bugfix.map(o=>e.jsx("li",{className:"change-log-change",children:o.desc[a]},o.desc[a]))})]})]},n.title))})};export{d as ChangeLog};
@@ -12,8 +12,8 @@
12
12
  rel="stylesheet"
13
13
  />
14
14
  <title>TikTok Mini Games DevTool</title>
15
- <script type="module" crossorigin src="/assets/index-BrY3F5Qq.js"></script>
16
- <link rel="stylesheet" crossorigin href="/assets/index-C3n9EBdl.css">
15
+ <script type="module" crossorigin src="/assets/index-DrFLOJ8g.js"></script>
16
+ <link rel="stylesheet" crossorigin href="/assets/index-C250u6X0.css">
17
17
  </head>
18
18
  <body>
19
19
  <div id="root"></div>
@@ -0,0 +1,48 @@
1
+ const fs = require('fs');
2
+ const os = require('os');
3
+ const path = require('path');
4
+
5
+ const args = process.argv.slice(2);
6
+ const isDryRun = args.includes('--dry-run');
7
+
8
+ const rcPath = process.env.TTMGRC_PATH || path.join(os.homedir(), '.ttmgrc');
9
+ const targets = [
10
+ { path: rcPath, type: 'file', label: 'TTMG config (.ttmgrc)' },
11
+ { path: path.join(os.homedir(), '__TTMG__'), type: 'dir', label: 'TTMG temp dir' },
12
+ {
13
+ path: path.join(os.homedir(), '.my-chrome-dev-profile'),
14
+ type: 'dir',
15
+ label: 'Chrome debug profile',
16
+ },
17
+ {
18
+ path: path.resolve(__dirname, '../.ttmgrc.test'),
19
+ type: 'file',
20
+ label: 'TTMG test config (.ttmgrc.test)',
21
+ },
22
+ ];
23
+
24
+ function removeTarget(target) {
25
+ if (!fs.existsSync(target.path)) {
26
+ console.log(`[skip] ${target.label}: ${target.path}`);
27
+ return;
28
+ }
29
+
30
+ if (isDryRun) {
31
+ console.log(`[dry-run] remove ${target.label}: ${target.path}`);
32
+ return;
33
+ }
34
+
35
+ fs.rmSync(target.path, { recursive: true, force: true });
36
+ console.log(`[done] removed ${target.label}: ${target.path}`);
37
+ }
38
+
39
+ console.log('Resetting local TTMG state...');
40
+ if (isDryRun) {
41
+ console.log('Dry run mode enabled. No files will be removed.');
42
+ }
43
+
44
+ for (const target of targets) {
45
+ removeTarget(target);
46
+ }
47
+
48
+ console.log(isDryRun ? 'Dry run completed.' : 'Local state reset completed.');
@@ -10,6 +10,47 @@ const semver = require('semver');
10
10
  const { parentPort } = require('worker_threads');
11
11
  const { execSync } = require('child_process');
12
12
 
13
+ const messages = {
14
+ 'en-US': {
15
+ 'worker.compile.missingClientKey': 'Missing clientKey',
16
+ 'worker.compile.tempDir': 'Game local debug assets temp directory: {dir}',
17
+ 'worker.compile.initOutputFailed':
18
+ 'Failed to initialize output directory: {error}',
19
+ 'worker.compile.buildFailed': 'Build failed',
20
+ 'worker.update.noGlobalInstall': 'Global install of {pkgName} was not detected',
21
+ 'worker.update.available': 'Update available!',
22
+ 'worker.update.changelog': 'Changelog:',
23
+ 'worker.update.toUpdate': 'To update, run:',
24
+ },
25
+ 'zh-CN': {
26
+ 'worker.compile.missingClientKey': '缺少 clientKey',
27
+ 'worker.compile.tempDir': '游戏本地调试资源临时目录:{dir}',
28
+ 'worker.compile.initOutputFailed': '初始化输出目录失败:{error}',
29
+ 'worker.compile.buildFailed': '构建失败',
30
+ 'worker.update.noGlobalInstall': '未检测到全局安装的 {pkgName}',
31
+ 'worker.update.available': '检测到可用更新!',
32
+ 'worker.update.changelog': '更新日志:',
33
+ 'worker.update.toUpdate': '执行以下命令升级:',
34
+ },
35
+ };
36
+
37
+ let currentLang = 'en-US';
38
+
39
+ function setWorkerLanguage(lang) {
40
+ currentLang = lang === 'zh-CN' ? 'zh-CN' : 'en-US';
41
+ }
42
+
43
+ function t(key, params = {}) {
44
+ const template =
45
+ (messages[currentLang] && messages[currentLang][key]) ||
46
+ messages['en-US'][key] ||
47
+ key;
48
+ return template.replace(/\{(\w+)\}/g, (_, token) => {
49
+ if (params[token] === undefined) return `{${token}}`;
50
+ return String(params[token]);
51
+ });
52
+ }
53
+
13
54
  /**
14
55
  * 获取 npm 最新版本
15
56
  */
@@ -63,11 +104,12 @@ function getGlobalVersion(pkgName) {
63
104
 
64
105
  async function compile(context = {}) {
65
106
  try {
66
- const { clientKey, outputDir, entryDir, devPort, mode } = context;
107
+ const { clientKey, outputDir, entryDir, devPort, mode, lang } = context;
108
+ setWorkerLanguage(lang);
67
109
 
68
110
  // 参数校验
69
111
  if (!clientKey) {
70
- const message = '缺少 clientKey';
112
+ const message = t('worker.compile.missingClientKey');
71
113
  if (mode !== 'watch') {
72
114
  parentPort?.postMessage({ type: 'error', error: message });
73
115
  return;
@@ -79,8 +121,9 @@ async function compile(context = {}) {
79
121
  try {
80
122
  console.log(
81
123
  chalk(
82
- `🔍 Game local debug assets temp directory`,
83
- chalk.yellow.underline(outputDir),
124
+ `🔍 ${t('worker.compile.tempDir', {
125
+ dir: chalk.yellow.underline(outputDir),
126
+ })}`,
84
127
  ),
85
128
  );
86
129
  if (fs.existsSync(outputDir)) {
@@ -90,7 +133,9 @@ async function compile(context = {}) {
90
133
  // 目录操作失败也上报
91
134
  parentPort?.postMessage({
92
135
  type: 'error',
93
- error: `初始化输出目录失败: ${e?.message || e}`,
136
+ error: t('worker.compile.initOutputFailed', {
137
+ error: e?.message || e,
138
+ }),
94
139
  });
95
140
  return;
96
141
  }
@@ -118,6 +163,8 @@ async function compile(context = {}) {
118
163
  // 如果 ttmg-pack 支持透传选项,可考虑加上 stdio/并发等设置:
119
164
  // spawnOptions: { stdio: ['ignore', 'pipe', 'pipe'] },
120
165
  // concurrency: 4,
166
+ }, {
167
+ lang,
121
168
  });
122
169
  if (fs.existsSync(path.join(outputDir, '__TTMG_TEMP__'))) {
123
170
  fs.rmSync(path.join(outputDir, '__TTMG_TEMP__'), {
@@ -131,7 +178,7 @@ async function compile(context = {}) {
131
178
  type: 'status',
132
179
  status: 'end',
133
180
  isSuccess: false,
134
- errorMsg: errorMsg || '构建失败',
181
+ errorMsg: errorMsg || t('worker.compile.buildFailed'),
135
182
  });
136
183
  } else {
137
184
  parentPort?.postMessage({
@@ -149,8 +196,9 @@ async function compile(context = {}) {
149
196
  }
150
197
  }
151
198
 
152
- async function checkUpdate() {
199
+ async function checkUpdate(context = {}) {
153
200
  try {
201
+ setWorkerLanguage(context?.lang);
154
202
  const pkgName = '@ttmg/cli';
155
203
  const [oldVersion, newVersion] = await Promise.all([
156
204
  getGlobalVersion(pkgName),
@@ -162,7 +210,9 @@ async function checkUpdate() {
162
210
  }
163
211
 
164
212
  if (!oldVersion) {
165
- console.log(chalk.yellow(`未检测到全局安装的 ${pkgName}`));
213
+ console.log(
214
+ chalk.yellow(t('worker.update.noGlobalInstall', { pkgName })),
215
+ );
166
216
  return;
167
217
  }
168
218
 
@@ -177,9 +227,9 @@ async function checkUpdate() {
177
227
  if (oldVersionIsBeta && oldVersionMajor >= newVersionMajor) return;
178
228
 
179
229
  const message = `
180
- ${chalk.bold('Update available!')} ${chalk.red(oldVersion)} ${chalk.white('→')} ${chalk.green(newVersion)}.
181
- ${chalk.magenta('Changelog:')} ${chalk.cyan(`https://npmjs.com/package/${pkgName}/v/${newVersion}`)}
182
- To update, run: ${chalk.magenta(`npm i -g ${pkgName}`)}
230
+ ${chalk.bold(t('worker.update.available'))} ${chalk.red(oldVersion)} ${chalk.white('→')} ${chalk.green(newVersion)}.
231
+ ${chalk.magenta(t('worker.update.changelog'))} ${chalk.cyan(`https://npmjs.com/package/${pkgName}/v/${newVersion}`)}
232
+ ${t('worker.update.toUpdate')} ${chalk.magenta(`npm i -g ${pkgName}`)}
183
233
  `.trim();
184
234
 
185
235
  // 动态引入 boxen,避免主线程初始化时不必要的 require
@@ -204,7 +254,7 @@ if (parentPort) {
204
254
  if (msg?.type === 'compile') {
205
255
  await compile(msg.context);
206
256
  } else if (msg?.type === 'checkUpdate') {
207
- await checkUpdate();
257
+ await checkUpdate({ lang: msg?.lang });
208
258
  }
209
259
  } catch (e) {
210
260
  parentPort.postMessage({ type: 'error', error: e?.message || String(e) });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttmg/cli",
3
- "version": "0.3.2-beta.5",
3
+ "version": "0.3.2-beta.6",
4
4
  "description": "TikTok Mini Game Command Line Tool",
5
5
  "license": "ISC",
6
6
  "bin": {
@@ -12,7 +12,8 @@
12
12
  "scripts": {
13
13
  "prepublish": "npm run build",
14
14
  "build": "node scripts/build.js",
15
- "setup": "node scripts/setup.js"
15
+ "setup": "node scripts/setup.js",
16
+ "reset:local-state": "node scripts/resetLocalState.js"
16
17
  },
17
18
  "keywords": [
18
19
  "TTMG",
@@ -49,7 +50,7 @@
49
50
  "prettier": "^3.6.2",
50
51
  "qs": "6.12.1",
51
52
  "semver": "^7.7.2",
52
- "ttmg-pack": "0.4.0",
53
+ "ttmg-pack": "0.4.3",
53
54
  "ws": "^8.18.3"
54
55
  },
55
56
  "devDependencies": {