mbler 0.1.3-alpha → 0.1.3-alpha-r2

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 (178) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +15 -6
  3. package/bin/mbler.js +12 -12
  4. package/bin/minify.js +58 -44
  5. package/lib/build/base.js +1 -297
  6. package/lib/build/build-g-config.json +12 -12
  7. package/lib/build/getModule.js +1 -182
  8. package/lib/build/index.js +1 -370
  9. package/lib/build/manifest.build.js +1 -103
  10. package/lib/build/mcVersion.js +1 -86
  11. package/lib/build/utils.js +1 -6
  12. package/lib/code-processor/c-handler-export.js +1 -12
  13. package/lib/code-processor/index.js +1 -141
  14. package/lib/code-processor/mtreehandler.js +1 -164
  15. package/lib/commander/index.js +1 -154
  16. package/lib/data/includes.json +13 -13
  17. package/lib/data/version.json +88 -88
  18. package/lib/git/clone.js +1 -28
  19. package/lib/git/index.js +1 -12
  20. package/lib/git/pull.js +1 -100
  21. package/lib/lang/__translate.js +1 -93
  22. package/lib/lang/en.js +1 -128
  23. package/lib/lang/index.js +1 -78
  24. package/lib/lang/zh.js +1 -146
  25. package/lib/loger/colors.js +1 -13
  26. package/lib/loger/index.js +1 -136
  27. package/lib/mcx/ast/index.js +1 -11
  28. package/lib/mcx/ast/prop.js +1 -78
  29. package/lib/mcx/ast/tag.js +1 -246
  30. package/lib/mcx/compile-component/lib.js +1 -106
  31. package/lib/mcx/compile-component/types.js +1 -2
  32. package/lib/mcx/compile-component/utils.js +1 -26
  33. package/lib/mcx/compile-mcx/compile.js +1 -34
  34. package/lib/mcx/compile-mcx/compiler/bundler.js +1 -0
  35. package/lib/mcx/compile-mcx/compiler/compileData.js +1 -0
  36. package/lib/mcx/compile-mcx/compiler/compileMain.js +1 -0
  37. package/lib/mcx/compile-mcx/compiler/index.js +1 -0
  38. package/lib/mcx/compile-mcx/compiler/utils.js +1 -0
  39. package/lib/mcx/compile-mcx/context.js +1 -19
  40. package/lib/mcx/compile-mcx/index.js +1 -10
  41. package/lib/mcx/compile-mcx/mcx/index.js +1 -2
  42. package/lib/mcx/compile-mcx/mcx/types.js +1 -2
  43. package/lib/mcx/compile-mcx/template/module.js +1 -42
  44. package/lib/mcx/compile-mcx/types.js +1 -2
  45. package/lib/mcx/compile-mcx/utils.node.js +1 -207
  46. package/lib/mcx/index.js +1 -13
  47. package/lib/mcx/test/index.js +1 -7
  48. package/lib/mcx/test.js +1 -21
  49. package/lib/mcx/types.js +1 -2
  50. package/lib/mcx/utils.js +1 -86
  51. package/lib/module-handler/index.js +1 -482
  52. package/lib/modules/create-game/mbler.config.json +13 -13
  53. package/lib/modules/create-game/src/Runner/RunnerManager.js +1 -113
  54. package/lib/modules/create-game/src/Runner/scriptRunner.js +1 -70
  55. package/lib/modules/create-game/src/config.js +1 -27
  56. package/lib/modules/create-game/src/constants.js +1 -19
  57. package/lib/modules/create-game/src/createGameModule.js +1 -24
  58. package/lib/modules/create-game/src/gameComponent/common/autoStop.js +1 -38
  59. package/lib/modules/create-game/src/gameComponent/common/lazyLoader.js +1 -76
  60. package/lib/modules/create-game/src/gameComponent/common/stopWatch/onTimeEvent.js +1 -36
  61. package/lib/modules/create-game/src/gameComponent/common/stopWatch/stopWatch.js +1 -90
  62. package/lib/modules/create-game/src/gameComponent/common/stopWatch/tickEvent.js +1 -29
  63. package/lib/modules/create-game/src/gameComponent/common/timer/onTimeEvent.js +1 -36
  64. package/lib/modules/create-game/src/gameComponent/common/timer/tickEvent.js +1 -29
  65. package/lib/modules/create-game/src/gameComponent/common/timer/timer.js +1 -87
  66. package/lib/modules/create-game/src/gameComponent/gameComponent.js +1 -53
  67. package/lib/modules/create-game/src/gameComponent/index.js +1 -31
  68. package/lib/modules/create-game/src/gameComponent/player/blockInteractionBlocker.js +1 -40
  69. package/lib/modules/create-game/src/gameComponent/player/entityInteractionBlocker.js +1 -48
  70. package/lib/modules/create-game/src/gameComponent/player/healthIndicator.js +1 -48
  71. package/lib/modules/create-game/src/gameComponent/player/regionMonitor.js +1 -22
  72. package/lib/modules/create-game/src/gameComponent/player/respawn.js +1 -59
  73. package/lib/modules/create-game/src/gameComponent/player/spawnProtector.js +1 -69
  74. package/lib/modules/create-game/src/gameComponent/region/regionProtecter.js +1 -53
  75. package/lib/modules/create-game/src/gameComponent/region/regionTeamChooser.js +1 -71
  76. package/lib/modules/create-game/src/gameComponent/region/regionTeamCleaner.js +1 -20
  77. package/lib/modules/create-game/src/gameComponent/view/infoScoreboard.js +1 -77
  78. package/lib/modules/create-game/src/gameComponent/view/teamScoreboard.js +1 -83
  79. package/lib/modules/create-game/src/gameContext.js +1 -6
  80. package/lib/modules/create-game/src/gameEngine.js +1 -139
  81. package/lib/modules/create-game/src/gameEvent/eventManager.js +1 -108
  82. package/lib/modules/create-game/src/gameEvent/eventSignal.js +1 -28
  83. package/lib/modules/create-game/src/gameEvent/events/buttonPush.js +1 -41
  84. package/lib/modules/create-game/src/gameEvent/events/inSlot.js +1 -77
  85. package/lib/modules/create-game/src/gameEvent/events/interval.js +1 -51
  86. package/lib/modules/create-game/src/gameEvent/events/itemUse.js +1 -36
  87. package/lib/modules/create-game/src/gameEvent/events/onBlock.js +1 -106
  88. package/lib/modules/create-game/src/gameEvent/events/regionEvents.js +1 -105
  89. package/lib/modules/create-game/src/gameEvent/events/signClick.js +1 -45
  90. package/lib/modules/create-game/src/gameEvent/gameEvent.js +1 -54
  91. package/lib/modules/create-game/src/gameEvent/index.js +1 -20
  92. package/lib/modules/create-game/src/gameEvent/mapEventSignal.js +1 -101
  93. package/lib/modules/create-game/src/gameEvent/subscription.js +1 -17
  94. package/lib/modules/create-game/src/gamePlayer/gamePlayer.js +1 -102
  95. package/lib/modules/create-game/src/gamePlayer/groupBuilder.js +1 -38
  96. package/lib/modules/create-game/src/gamePlayer/groupSet.js +1 -96
  97. package/lib/modules/create-game/src/gamePlayer/index.js +1 -25
  98. package/lib/modules/create-game/src/gamePlayer/playerGroup.js +1 -145
  99. package/lib/modules/create-game/src/gamePlayer/playerManager.js +1 -57
  100. package/lib/modules/create-game/src/gameRegion/gameRegion.js +1 -229
  101. package/lib/modules/create-game/src/gameRegion/index.js +1 -43
  102. package/lib/modules/create-game/src/gameRegion/regionHelper.js +1 -79
  103. package/lib/modules/create-game/src/gameState/common/autoStop.js +1 -39
  104. package/lib/modules/create-game/src/gameState/gameState.js +1 -169
  105. package/lib/modules/create-game/src/gameState/index.js +1 -7
  106. package/lib/modules/create-game/src/gameState/types.js +1 -35
  107. package/lib/modules/create-game/src/gameStructure/gameStructure.js +1 -36
  108. package/lib/modules/create-game/src/main.js +1 -86
  109. package/lib/modules/create-game/src/system/gameCommand.js +1 -107
  110. package/lib/modules/create-game/src/system/gameManager.js +1 -124
  111. package/lib/modules/create-game/src/system/globalPlayerManager.js +1 -119
  112. package/lib/modules/create-game/src/utils/GameError.js +1 -31
  113. package/lib/modules/create-game/src/utils/algorithm.js +1 -95
  114. package/lib/modules/create-game/src/utils/chunk.js +1 -63
  115. package/lib/modules/create-game/src/utils/deferredObject.js +1 -27
  116. package/lib/modules/create-game/src/utils/duration.js +1 -25
  117. package/lib/modules/create-game/src/utils/func.js +1 -20
  118. package/lib/modules/create-game/src/utils/index.js +1 -52
  119. package/lib/modules/create-game/src/utils/interfaces.js +1 -2
  120. package/lib/modules/create-game/src/utils/logger.js +1 -47
  121. package/lib/modules/create-game/src/utils/random.js +1 -76
  122. package/lib/modules/create-game/src/utils/vanila-data.js +1 -123
  123. package/lib/modules/create-game/src/utils/vector.js +1 -96
  124. package/lib/modules/gameLib/mbler.config.json +15 -15
  125. package/lib/modules/gameLib/src/config.js +1 -134
  126. package/lib/modules/gameLib/src/data.js +1 -77
  127. package/lib/modules/gameLib/src/entity.js +1 -256
  128. package/lib/modules/gameLib/src/event.js +1 -285
  129. package/lib/modules/gameLib/src/index.js +1 -20
  130. package/lib/modules/gameLib/src/loger.js +1 -21
  131. package/lib/modules/gameLib/src/ui.js +1 -209
  132. package/lib/modules/gameLib/src/utils.js +1 -122
  133. package/lib/modules/gutils/mbler.config.json +11 -11
  134. package/lib/modules/gutils/src/index.js +1 -22
  135. package/lib/modules/innerDef.json +4 -4
  136. package/lib/runTemp/File.js +1 -54
  137. package/lib/runTemp/config.json +3 -3
  138. package/lib/runTemp/index.js +1 -137
  139. package/lib/runTemp/securityFile.js +1 -93
  140. package/lib/start/addPack.js +1 -3
  141. package/lib/start/clean.js +1 -84
  142. package/lib/start/create.js +1 -146
  143. package/lib/start/dev.js +1 -99
  144. package/lib/start/getResConfig.js +1 -3
  145. package/lib/start/incg.js +1 -3
  146. package/lib/start/index.js +1 -207
  147. package/lib/start/init.js +1 -125
  148. package/lib/start/rechce.js +1 -57
  149. package/lib/start/unaddPack.js +1 -3
  150. package/lib/start/unincg.js +1 -67
  151. package/lib/start/version.js +1 -73
  152. package/lib/utils/index.js +1 -298
  153. package/lib/uuid/index.js +1 -27
  154. package/package.json +49 -1
  155. package/test/2x sword/behavior/scripts/index.js +24 -24
  156. package/test/2x sword/mbler.config.json +11 -11
  157. package/test/2x sword/package.json +13 -13
  158. package/test/README.md +7 -7
  159. package/test/des/index.js +19 -19
  160. package/test/des/mbler.config.json +4 -4
  161. package/test/des/package.json +6 -6
  162. package/test/initializer/index.js +5 -5
  163. package/test/initializer/mbler.config.json +4 -4
  164. package/test/initializer/package.json +6 -6
  165. package/test/mbler-int/behavior/res/items/mang_one_int.json +21 -21
  166. package/test/mbler-int/behavior/scripts/index.js +7 -7
  167. package/test/mbler-int/behavior/scripts/lib/event/index.js +19 -19
  168. package/test/mbler-int/behavior/scripts/lib/ui/Lore.js +18 -18
  169. package/test/mbler-int/behavior/scripts/lib/ui/baseUi.js +6 -6
  170. package/test/mbler-int/behavior/scripts/lib/ui/index.js +206 -206
  171. package/test/mbler-int/behavior/scripts/lib/utils/index.js +51 -51
  172. package/test/mbler-int/mbler.config.json +18 -18
  173. package/test/mbler-int/package.json +12 -12
  174. package/test/script-mbler/behavior/scripts/index.js +5 -0
  175. package/test/script-mbler/behavior/scripts/index.ts +5 -5
  176. package/test/script-mbler/mbler.config.json +14 -14
  177. package/test/script-mbler/package.json +15 -15
  178. package/lib/mcx/compile-mcx/_compile.js +0 -602
@@ -1,154 +1 @@
1
- "use strict";
2
- // input-handler.ts
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.Input = void 0;
38
- const readline = __importStar(require("readline"));
39
- // 启用 raw mode 和键盘事件
40
- process.stdin.setRawMode(true);
41
- readline.emitKeypressEvents(process.stdin);
42
- const promises = [];
43
- const tasks = [];
44
- process.on('exit', (code) => {
45
- process.stdout.write('\x1b[?25h');
46
- });
47
- click("c", {
48
- ctrl: true
49
- }).then(() => process.exit(0));
50
- /**
51
- * 监听键盘输入并触发对应的 Promise 或任务
52
- */
53
- function handler(name, { ctrl, alt }, raw) {
54
- // 查找是否有匹配的 Promise 等待触发
55
- const find = promises.find((e) => e.name === name && e.ctrl === ctrl && e.alt === alt);
56
- if (find) {
57
- find.resolve();
58
- promises.splice(promises.indexOf(find), 1);
59
- }
60
- // 通知所有注册的监听任务
61
- tasks.forEach((item) => item(name, ctrl, alt, raw));
62
- }
63
- /**
64
- * 模拟等待某个按键被按下,返回一个 Promise
65
- */
66
- function click(name, { ctrl = false, alt = false }) {
67
- return new Promise((resolve) => {
68
- promises.push({
69
- name,
70
- ctrl: ctrl || false,
71
- alt: alt || false,
72
- resolve
73
- });
74
- });
75
- }
76
- /**
77
- * 工具类:提供控制台交互功能,比如高亮菜单渲染、交互式选择等
78
- */
79
- class Input {
80
- /**
81
- * 渲染一个字符串数组,高亮当前选中的项
82
- * @param arr 菜单项数组
83
- * @param index 当前选中索引
84
- * @returns 格式化后的字符串
85
- */
86
- static render(arr, index) {
87
- return arr
88
- .map((item, pindex) => {
89
- if (pindex === index)
90
- return '\x1b[1m\x1b[32m' + item + '\x1b[0m'; // 亮绿,高亮
91
- return '\x1b[1m\x1b[33m' + item + '\x1b[0m'; // 亮黄
92
- })
93
- .join(' ');
94
- }
95
- /**
96
- * 提供一个交互式菜单选择器
97
- * @param tip 提示文本
98
- * @param arr 选项数组
99
- * @returns 用户选中的选项内容(Promise<string>)
100
- */
101
- static select(tip, arr) {
102
- let index = 0;
103
- let win = false;
104
- console.log(`\x1b[2K\x1b[47m\x1b[1m\x1b[30m${tip} (按 b 确认,n 键选择下一个) \x1b[0m\x1b[?25l`);
105
- console.log(Input.render(arr, index) + '\n\x1b[1A');
106
- const handlerNext = () => {
107
- if (win)
108
- return;
109
- index++;
110
- if (index >= arr.length)
111
- index = 0;
112
- console.log(`\x1b[1A${Input.render(arr, index)}\n\x1b[1A`);
113
- click('n', {
114
- ctrl: false,
115
- alt: false
116
- }).then(handlerNext);
117
- };
118
- return new Promise((resolve) => {
119
- // 监听 n 按键来切换选项
120
- click('n', {
121
- ctrl: false,
122
- alt: false
123
- }).then(handlerNext);
124
- // 监听 b 按键来确认选择
125
- click('b', {
126
- ctrl: false,
127
- alt: false
128
- }).then(() => {
129
- win = true;
130
- process.stdout.
131
- write('\x1b[?25h');
132
- resolve(arr[index]);
133
- });
134
- });
135
- }
136
- /**
137
- * 注册一个全局任务,每次按键都会被调用
138
- * @param task 回调函数
139
- */
140
- static use(task) {
141
- tasks.push(task);
142
- }
143
- }
144
- exports.Input = Input;
145
- // 监听键盘输入事件
146
- process.stdin.on('keypress', (str, key) => {
147
- const rawKeyName = key?.name || '';
148
- const ctrl = Boolean(key?.ctrl);
149
- const alt = Boolean(key?.alt);
150
- handler(rawKeyName, {
151
- ctrl,
152
- alt
153
- }, str);
154
- });
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var n=e(t),s=0;s<n.length;s++)"default"!==n[s]&&__createBinding(r,t,n[s]);return __setModuleDefault(r,t),r}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.Input=void 0;const readline=__importStar(require("readline"));process.stdin.setRawMode(!0),readline.emitKeypressEvents(process.stdin);const promises=[],tasks=[];function handler(e,{ctrl:t,alt:r},n){const s=promises.find(n=>n.name===e&&n.ctrl===t&&n.alt===r);s&&(s.resolve(),promises.splice(promises.indexOf(s),1)),tasks.forEach(s=>s(e,t,r,n))}function click(e,{ctrl:t=!1,alt:r=!1}){return new Promise(n=>{promises.push({name:e,ctrl:t||!1,alt:r||!1,resolve:n})})}process.on("exit",e=>{process.stdout.write("[?25h")}),click("c",{ctrl:!0}).then(()=>process.exit(0));class Input{static render(e,t){return e.map((e,r)=>r===t?""+e+"":""+e+"").join(" ")}static select(e,t){let r=0,n=!1;console.log(`${e} (按 b 确认,n 键选择下一个) [?25l`),console.log(Input.render(t,r)+"\n");const s=()=>{n||(r++,r>=t.length&&(r=0),console.log(`${Input.render(t,r)}\n`),click("n",{ctrl:!1,alt:!1}).then(s))};return new Promise(e=>{click("n",{ctrl:!1,alt:!1}).then(s),click("b",{ctrl:!1,alt:!1}).then(()=>{n=!0,process.stdout.write("[?25h"),e(t[r])})})}static use(e){tasks.push(e)}}exports.Input=Input,process.stdin.on("keypress",(e,t)=>{handler(t?.name||"",{ctrl:Boolean(t?.ctrl),alt:Boolean(t?.alt)},e)});
@@ -1,13 +1,13 @@
1
- [
2
- "items",
3
- "entities",
4
- "texts",
5
- "pack_icon.png",
6
- "recipes",
7
- "functions",
8
- "loot_tables",
9
- "blocks",
10
- "animation_controllers",
11
- "spawn_rules",
12
- "animations"
13
- ]
1
+ [
2
+ "items",
3
+ "entities",
4
+ "texts",
5
+ "pack_icon.png",
6
+ "recipes",
7
+ "functions",
8
+ "loot_tables",
9
+ "blocks",
10
+ "animation_controllers",
11
+ "spawn_rules",
12
+ "animations"
13
+ ]
@@ -1,89 +1,89 @@
1
- {
2
- "description": "版本表",
3
- "version": [
4
- {
5
- "range": [
6
- "1.21.130",
7
- "1.21.139"
8
- ],
9
- "format": {
10
- "server": "2.4.0",
11
- "server_ui": "2.0.0"
12
- },
13
- "beta": {
14
- "server": "2.5.0-beta",
15
- "server_ui": "2.1.0-beta"
16
- }
17
- },
18
- {
19
- "range": [
20
- "1.21.120",
21
- "1.21.129"
22
- ],
23
- "format": {
24
- "server": "2.3.0",
25
- "server_ui": "2.0.0"
26
- },
27
- "beta": {
28
- "server": "2.4.0-beta",
29
- "server_ui": "2.1.0-beta"
30
- }
31
- },
32
- {
33
- "range": [
34
- "1.21.110",
35
- "1.21.119"
36
- ],
37
- "format": {
38
- "server": "2.2.0",
39
- "server_ui": "2.0.0"
40
- },
41
- "beta": {
42
- "server": "2.3.0-beta",
43
- "server_ui": "2.1.0-beta"
44
- }
45
- },
46
- {
47
- "range": [
48
- "1.21.90",
49
- "1.21.109"
50
- ],
51
- "format": {
52
- "server": "2.1.0",
53
- "server_ui": "2.0.0"
54
- },
55
- "beta": {
56
- "server": "2.2.0-beta",
57
- "server_ui": "2.1.0-beta"
58
- }
59
- },
60
- {
61
- "range": [
62
- "1.21.70",
63
- "1.21.89"
64
- ],
65
- "format": {
66
- "server": "1.19.0",
67
- "server_ui": "1.3.0"
68
- },
69
- "beta": {
70
- "server": "2.0.0-beta",
71
- "server_ui": "2.0.0-beta"
72
- }
73
- },
74
- {
75
- "range": [
76
- "1.21.60",
77
- "1.21.69"
78
- ],
79
- "format": {
80
- "server": "1.17.0",
81
- "server_ui": "1.3.0"
82
- },
83
- "beta": {
84
- "server": "1.18.0-beta",
85
- "server_ui": "1.4.0-beta"
86
- }
87
- }
88
- ]
1
+ {
2
+ "description": "版本表",
3
+ "version": [
4
+ {
5
+ "range": [
6
+ "1.21.130",
7
+ "1.21.139"
8
+ ],
9
+ "format": {
10
+ "server": "2.4.0",
11
+ "server_ui": "2.0.0"
12
+ },
13
+ "beta": {
14
+ "server": "2.5.0-beta",
15
+ "server_ui": "2.1.0-beta"
16
+ }
17
+ },
18
+ {
19
+ "range": [
20
+ "1.21.120",
21
+ "1.21.129"
22
+ ],
23
+ "format": {
24
+ "server": "2.3.0",
25
+ "server_ui": "2.0.0"
26
+ },
27
+ "beta": {
28
+ "server": "2.4.0-beta",
29
+ "server_ui": "2.1.0-beta"
30
+ }
31
+ },
32
+ {
33
+ "range": [
34
+ "1.21.110",
35
+ "1.21.119"
36
+ ],
37
+ "format": {
38
+ "server": "2.2.0",
39
+ "server_ui": "2.0.0"
40
+ },
41
+ "beta": {
42
+ "server": "2.3.0-beta",
43
+ "server_ui": "2.1.0-beta"
44
+ }
45
+ },
46
+ {
47
+ "range": [
48
+ "1.21.90",
49
+ "1.21.109"
50
+ ],
51
+ "format": {
52
+ "server": "2.1.0",
53
+ "server_ui": "2.0.0"
54
+ },
55
+ "beta": {
56
+ "server": "2.2.0-beta",
57
+ "server_ui": "2.1.0-beta"
58
+ }
59
+ },
60
+ {
61
+ "range": [
62
+ "1.21.70",
63
+ "1.21.89"
64
+ ],
65
+ "format": {
66
+ "server": "1.19.0",
67
+ "server_ui": "1.3.0"
68
+ },
69
+ "beta": {
70
+ "server": "2.0.0-beta",
71
+ "server_ui": "2.0.0-beta"
72
+ }
73
+ },
74
+ {
75
+ "range": [
76
+ "1.21.60",
77
+ "1.21.69"
78
+ ],
79
+ "format": {
80
+ "server": "1.17.0",
81
+ "server_ui": "1.3.0"
82
+ },
83
+ "beta": {
84
+ "server": "1.18.0-beta",
85
+ "server_ui": "1.4.0-beta"
86
+ }
87
+ }
88
+ ]
89
89
  }
package/lib/git/clone.js CHANGED
@@ -1,28 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = gitClone;
4
- const child_process_1 = require("child_process");
5
- /**
6
- * 克隆 Git 仓库
7
- * @param {string} repoUrl - Git 仓库地址
8
- * @param {string} targetDir - 本地目标目录(如 './my-project')
9
- * @returns {Promise<void>}
10
- */
11
- function gitClone(repoUrl, targetDir) {
12
- return new Promise((resolve, reject) => {
13
- const gitProcess = (0, child_process_1.spawn)('git', ['clone', repoUrl, targetDir], {
14
- stdio: 'inherit',
15
- });
16
- gitProcess.on('close', (code) => {
17
- if (code === 0) {
18
- resolve(`Git 克隆成功: ${repoUrl} → ${targetDir}`);
19
- }
20
- else {
21
- reject(new Error(` Git 克隆失败,退出码: ${code}`));
22
- }
23
- });
24
- gitProcess.on('error', (err) => {
25
- reject(new Error(`${err.message}`));
26
- });
27
- });
28
- }
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=gitClone;const child_process_1=require("child_process");function gitClone(e,r){return new Promise((o,s)=>{const t=(0,child_process_1.spawn)("git",["clone",e,r],{stdio:"inherit"});t.on("close",t=>{0===t?o(`Git 克隆成功: ${e} → ${r}`):s(new Error(` Git 克隆失败,退出码: ${t}`))}),t.on("error",e=>{s(new Error(`${e.message}`))})})}
package/lib/git/index.js CHANGED
@@ -1,12 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const clone_js_1 = __importDefault(require("./clone.js"));
7
- const pull_js_1 = __importDefault(require("./pull.js"));
8
- class GitRepo {
9
- static clone = clone_js_1.default;
10
- static pull = pull_js_1.default;
11
- }
12
- exports.default = GitRepo;
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const clone_js_1=__importDefault(require("./clone.js")),pull_js_1=__importDefault(require("./pull.js"));class GitRepo{static clone=clone_js_1.default;static pull=pull_js_1.default}exports.default=GitRepo;
package/lib/git/pull.js CHANGED
@@ -1,100 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = gitPull;
7
- const child_process_1 = require("child_process");
8
- const index_js_1 = require("./../utils/index.js");
9
- const index_js_2 = __importDefault(require("./../lang/index.js"));
10
- /**
11
- * 拉取 Git 仓库
12
- * @param {string} repoDir - 本地 Git 仓库目录(如 './my-project')
13
- * @returns {Promise<void>}
14
- */
15
- function gitPull(repoDir) {
16
- return new Promise((resolve, reject) => {
17
- const gitPullProcess = (0, child_process_1.spawn)('git', ['pull'], {
18
- cwd: repoDir,
19
- stdio: 'inherit'
20
- });
21
- gitPullProcess.on('close', (code) => {
22
- if (code === 0) {
23
- console.log(`Git 拉取成功: ${repoDir}`);
24
- resolve(true);
25
- return;
26
- }
27
- // 如果失败,检查是否是 "dubious ownership" 错误
28
- let errorOutput = '';
29
- const gitPullProcessWithError = (0, child_process_1.spawn)('git', ['pull'], {
30
- cwd: repoDir,
31
- stdio: ['ignore', 'pipe', 'pipe'] // 捕获 stderr
32
- });
33
- gitPullProcessWithError.stderr.on('data', (data) => {
34
- errorOutput += data.toString();
35
- });
36
- gitPullProcessWithError.on('close', async (code) => {
37
- if (code !== 0 && errorOutput.includes('dubious ownership')) {
38
- const tip = index_js_2.default.noGit;
39
- const answer = await (0, index_js_1.input)(tip);
40
- if (answer === '1') {
41
- // 选项 1:仅当前目录可信
42
- await runGitConfig(`--global --add safe.directory "${repoDir}"`);
43
- retryGitPull();
44
- }
45
- else if (answer === '2') {
46
- // 选项 2:全局信任所有目录(不推荐)
47
- await runGitConfig('--global --replace-all safe.directory "*"');
48
- retryGitPull();
49
- }
50
- else if (answer === '3') {
51
- reject(new Error('用户取消 Git 拉取'));
52
- }
53
- else {
54
- reject(new Error('无效的用户输入'));
55
- }
56
- }
57
- else {
58
- // 其他错误(非安全限制)
59
- reject(new Error(`❌ Git 拉取失败,退出码: ${code}\n错误信息: ${errorOutput}`));
60
- }
61
- });
62
- });
63
- async function retryGitPull() {
64
- const retryProcess = (0, child_process_1.spawn)('git', ['pull'], {
65
- cwd: repoDir,
66
- stdio: 'inherit'
67
- });
68
- retryProcess.on('close', (retryCode) => {
69
- if (retryCode === 0) {
70
- resolve(true);
71
- }
72
- else {
73
- reject(new Error(`❌ Git 拉取重试失败,退出码: ${retryCode}`));
74
- }
75
- });
76
- retryProcess.on('error', (err) => {
77
- reject(new Error(`❌ 重试执行错误: ${err.message}`));
78
- });
79
- }
80
- });
81
- }
82
- function runGitConfig(configArgs) {
83
- return new Promise((configResolve, configReject) => {
84
- const configProcess = (0, child_process_1.spawn)('git', ['config', ...configArgs.split(' ')], {
85
- stdio: 'inherit'
86
- });
87
- configProcess.on('close', (code) => {
88
- if (code === 0) {
89
- configResolve(true);
90
- }
91
- else {
92
- console.warn(`执行 git config 失败(可能不影响后续操作),退出码: ${code}`);
93
- configResolve(true); // 即使失败也继续尝试 git pull
94
- }
95
- });
96
- configProcess.on('error', (err) => {
97
- configResolve(true); // 即使出错也继续尝试 git pull
98
- });
99
- });
100
- }
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=gitPull;const child_process_1=require("child_process"),index_js_1=require("./../utils/index.js"),index_js_2=__importDefault(require("./../lang/index.js"));function gitPull(e){return new Promise((i,r)=>{async function o(){const o=(0,child_process_1.spawn)("git",["pull"],{cwd:e,stdio:"inherit"});o.on("close",e=>{0===e?i(!0):r(new Error(`❌ Git 拉取重试失败,退出码: ${e}`))}),o.on("error",e=>{r(new Error(`❌ 重试执行错误: ${e.message}`))})}(0,child_process_1.spawn)("git",["pull"],{cwd:e,stdio:"inherit"}).on("close",n=>{if(0===n)return console.log(`Git 拉取成功: ${e}`),void i(!0);let t="";const s=(0,child_process_1.spawn)("git",["pull"],{cwd:e,stdio:["ignore","pipe","pipe"]});s.stderr.on("data",e=>{t+=e.toString()}),s.on("close",async i=>{if(0!==i&&t.includes("dubious ownership")){const i=index_js_2.default.noGit,n=await(0,index_js_1.input)(i);"1"===n?(await runGitConfig(`--global --add safe.directory "${e}"`),o()):"2"===n?(await runGitConfig('--global --replace-all safe.directory "*"'),o()):r("3"===n?new Error("用户取消 Git 拉取"):new Error("无效的用户输入"))}else r(new Error(`❌ Git 拉取失败,退出码: ${i}\n错误信息: ${t}`))})})})}function runGitConfig(e){return new Promise((i,r)=>{const o=(0,child_process_1.spawn)("git",["config",...e.split(" ")],{stdio:"inherit"});o.on("close",e=>{0===e||console.warn(`执行 git config 失败(可能不影响后续操作),退出码: ${e}`),i(!0)}),o.on("error",e=>{i(!0)})})}
@@ -1,93 +1 @@
1
- "use strict";
2
- const fs = require('fs');
3
- // 请确保开启了这个翻译服务器
4
- const API = "http://localhost:8000/translate";
5
- const MAX_RETRY = 5;
6
- const DELAY = 500;
7
- async function main() {
8
- const [, , srcFile, dstFile, lang] = process.argv;
9
- if (!srcFile || !dstFile || !lang) {
10
- console.error("Usage: node translate-json.js zh_CN.json en_US.json en");
11
- process.exit(1);
12
- }
13
- // ---------- 工具函数 ----------
14
- const sleep = ms => new Promise(r => setTimeout(r, ms));
15
- function flatten(obj, prefix = "", out = {}) {
16
- for (const k in obj) {
17
- const key = prefix ? `${prefix}.${k}` : k;
18
- if (typeof obj[k] === "object" && obj[k] !== null) {
19
- flatten(obj[k], key, out);
20
- }
21
- else {
22
- out[key] = String(obj[k]);
23
- }
24
- }
25
- return out;
26
- }
27
- function unflatten(map) {
28
- const obj = {};
29
- for (const k in map) {
30
- k.split(".").reduce((o, p, i, arr) => {
31
- if (i === arr.length - 1)
32
- o[p] = map[k];
33
- else
34
- o[p] ??= {};
35
- return o[p];
36
- }, obj);
37
- }
38
- return obj;
39
- }
40
- async function translate(text) {
41
- if (typeof text === "object") {
42
- const r = {};
43
- for (let i in Object.keys(text)) {
44
- const rel = await translate(text[i]);
45
- r[i] = rel;
46
- }
47
- return r;
48
- }
49
- for (let i = 1; i <= MAX_RETRY; i++) {
50
- try {
51
- const res = await fetch(API, {
52
- method: "POST",
53
- headers: {
54
- "Content-Type": "application/json"
55
- },
56
- body: JSON.stringify({
57
- text,
58
- to: lang
59
- })
60
- });
61
- const json = await res.json();
62
- if (json?.status && json.translatedText) {
63
- return json.translatedText;
64
- }
65
- }
66
- catch { }
67
- console.warn(`⚠️ retry ${i}/${MAX_RETRY}`);
68
- await sleep(DELAY * i);
69
- }
70
- throw new Error("Translation failed after retries");
71
- }
72
- // ---------- 主流程 ----------
73
- const src = require(`./${srcFile}`);
74
- const dst = require(`./${dstFile}`);
75
- const flatSrc = flatten(src);
76
- const flatDst = flatten(dst);
77
- const keys = Object.keys(flatSrc).filter(k => !flatDst[k]);
78
- console.log(`🔍 need translate: ${keys.length}`);
79
- for (const k of keys) {
80
- const text = flatSrc[k];
81
- console.log(`🌐 ${k}: ${text}`);
82
- try {
83
- flatDst[k] = Array.isArray(text) ? text : await translate(text);
84
- await sleep(DELAY); // 控速,防封
85
- }
86
- catch (e) {
87
- console.error(`❌ failed: ${k}`);
88
- flatDst[k] = text; // 兜底:保留原文
89
- }
90
- }
91
- fs.writeFileSync(dstFile, JSON.stringify(unflatten(flatDst), null, 2));
92
- }
93
- main().then(() => console.log("✅ done"));
1
+ "use strict";const fs=require("fs"),API="http://localhost:8000/translate",MAX_RETRY=5,DELAY=500;async function main(){const[,,t,e,n]=process.argv;t&&e&&n||(console.error("Usage: node translate-json.js zh_CN.json en_US.json en"),process.exit(1));const o=t=>new Promise(e=>setTimeout(e,t));function r(t,e="",n={}){for(const o in t){const s=e?`${e}.${o}`:o;"object"==typeof t[o]&&null!==t[o]?r(t[o],s,n):n[s]=String(t[o])}return n}async function s(t){if("object"==typeof t){const e={};for(let n in Object.keys(t)){const o=await s(t[n]);e[n]=o}return e}for(let e=1;e<=5;e++){try{const e=await fetch(API,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:t,to:n})}),o=await e.json();if(o?.status&&o.translatedText)return o.translatedText}catch{}console.warn(`⚠️ retry ${e}/5`),await o(500*e)}throw new Error("Translation failed after retries")}const a=require(`./${t}`),c=require(`./${e}`),i=r(a),l=r(c),f=Object.keys(i).filter(t=>!l[t]);console.log(`🔍 need translate: ${f.length}`);for(const t of f){const e=i[t];console.log(`🌐 ${t}: ${e}`);try{l[t]=Array.isArray(e)?e:await s(e),await o(500)}catch(n){console.error(`❌ failed: ${t}`),l[t]=e}}fs.writeFileSync(e,JSON.stringify(function(t){const e={};for(const n in t)n.split(".").reduce((e,o,r,s)=>(r===s.length-1?e[o]=t[n]:e[o]??={},e[o]),e);return e}(l),null,2))}main().then(()=>console.log("✅ done"));