deeke-script-app 1.9.4 → 2.0.0
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/deekeScript.json +700 -699
- package/deekeScript.schema.json +826 -821
- package/jsconfig.json +12 -25
- package/package.json +17 -43
- package/src/task/dy.js +14 -14
- package/.vscode/settings.json +0 -9
- package/@deekeScript/@type/Class/Global.d.ts +0 -2
- package/@deekeScript/@type/Class/Rect.d.ts +0 -16
- package/@deekeScript/@type/Class/UiSelector.d.ts +0 -201
- package/@deekeScript/@type/Class/WebSocket.d.ts +0 -49
- package/@deekeScript/@type/README.md +0 -19
- package/@deekeScript/@type/interface/Access.d.ts +0 -199
- package/@deekeScript/@type/interface/App.d.ts +0 -106
- package/@deekeScript/@type/interface/Audio.d.ts +0 -96
- package/@deekeScript/@type/interface/Console.d.ts +0 -220
- package/@deekeScript/@type/interface/DeekeScript.d.ts +0 -83
- package/@deekeScript/@type/interface/DeekeScriptJson.d.ts +0 -13
- package/@deekeScript/@type/interface/Device.d.ts +0 -275
- package/@deekeScript/@type/interface/DeviceApp.d.ts +0 -97
- package/@deekeScript/@type/interface/DeviceHardware.d.ts +0 -36
- package/@deekeScript/@type/interface/DeviceKiosk.d.ts +0 -30
- package/@deekeScript/@type/interface/DevicePolicy.d.ts +0 -27
- package/@deekeScript/@type/interface/Dialogs.d.ts +0 -41
- package/@deekeScript/@type/interface/Encrypt.d.ts +0 -58
- package/@deekeScript/@type/interface/Engines.d.ts +0 -39
- package/@deekeScript/@type/interface/Files.d.ts +0 -283
- package/@deekeScript/@type/interface/FloatDialogs.d.ts +0 -71
- package/@deekeScript/@type/interface/ForegroundServiceBridge.d.ts +0 -31
- package/@deekeScript/@type/interface/Gesture.d.ts +0 -54
- package/@deekeScript/@type/interface/Hid.d.ts +0 -342
- package/@deekeScript/@type/interface/Http.d.ts +0 -94
- package/@deekeScript/@type/interface/Images.d.ts +0 -71
- package/@deekeScript/@type/interface/Intent.d.ts +0 -12
- package/@deekeScript/@type/interface/Java.d.ts +0 -7
- package/@deekeScript/@type/interface/KeyBoards.d.ts +0 -63
- package/@deekeScript/@type/interface/Log.d.ts +0 -16
- package/@deekeScript/@type/interface/MediaStore.d.ts +0 -146
- package/@deekeScript/@type/interface/NotificationBridge.d.ts +0 -28
- package/@deekeScript/@type/interface/SocketIOClient.d.ts +0 -76
- package/@deekeScript/@type/interface/Storage.d.ts +0 -119
- package/@deekeScript/@type/interface/System.d.ts +0 -142
- package/@deekeScript/@type/interface/Threads.d.ts +0 -103
- package/@deekeScript/@type/interface/UiObject.d.ts +0 -202
- package/README.md +0 -67
- package/deekeScriptZipBuild +0 -48
- package/gulpfile +0 -17
- package/images/test/ad.png +0 -0
- package/images/test/add.png +0 -0
- package/images/test/ai-back.png +0 -0
- package/images/test/anchor_focus.png +0 -0
- package/images/test/auto-2.png +0 -0
- package/images/test/back.png +0 -0
- package/images/test/barrage.png +0 -0
- package/images/test/clear_fans.png +0 -0
- package/images/test/close.png +0 -0
- package/images/test/comment-2.png +0 -0
- package/images/test/delete.png +0 -0
- package/images/test/edit.png +0 -0
- package/images/test/fans-inc.png +0 -0
- package/images/test/fans.png +0 -0
- package/images/test/friend.png +0 -0
- package/images/test/grab.png +0 -0
- package/images/test/hot.png +0 -0
- package/images/test/into.png +0 -0
- package/images/test/invite.png +0 -0
- package/images/test/live-zan.png +0 -0
- package/images/test/live.png +0 -0
- package/images/test/member.png +0 -0
- package/images/test/msg_back.png +0 -0
- package/images/test/new_user.png +0 -0
- package/images/test/notice-2.png +0 -0
- package/images/test/openai-icon.png +0 -0
- package/images/test/precise-user.png +0 -0
- package/images/test/private-2.png +0 -0
- package/images/test/qingsong.png +0 -0
- package/images/test/robot.png +0 -0
- package/images/test/rocket.png +0 -0
- package/images/test/score_live.png +0 -0
- package/images/test/sett.png +0 -0
- package/images/test/show.png +0 -0
- package/images/test/show_password.png +0 -0
- package/images/test/speech-say.png +0 -0
- package/images/test/statistics.png +0 -0
- package/images/test/task.png +0 -0
- package/images/test/team-buy.png +0 -0
- package/images/test/tuandui.png +0 -0
- package/images/test/user-get.png +0 -0
- package/images/test/vertical.png +0 -0
- package/images/test/weixin.png +0 -0
- package/images/test/xhs-fans.png +0 -0
- package/images/test/xhs-wanneng.png +0 -0
- package/images/test/xhs-zan.png +0 -0
- package/images/test/zan-1.png +0 -0
- package/images/test/zan.png +0 -0
- package/init +0 -32
- package/init.lock +0 -0
- package/music/music.mp3 +0 -0
- package/script/index.js +0 -1
- package/script/statistics/statistics.js +0 -120
- package/script/task/douyin_zan.js +0 -89
- package/script/task/dy.js +0 -14
- package/script/task/dyApp.js +0 -7
- package/script/task/dyCity.js +0 -1
- package/script/task/exec_js.js +0 -4
- package/script/task/tool.js +0 -19
- package/script/task.html +0 -4
- package/src/index.js +0 -1
- package/test.json +0 -133
- package/uglify-config.json +0 -16
- package/update-types.js +0 -137
- /package/{images → src/images}/test/ai.png +0 -0
- /package/{images → src/images}/test/app.png +0 -0
- /package/{images → src/images}/test/cancel_focus.png +0 -0
- /package/{images → src/images}/test/cancel_zan.png +0 -0
- /package/{images → src/images}/test/city.png +0 -0
- /package/{images → src/images}/test/clear.png +0 -0
- /package/{images → src/images}/test/finger.png +0 -0
- /package/{images → src/images}/test/home-top.png +0 -0
- /package/{images → src/images}/test/home.png +0 -0
- /package/{images → src/images}/test/jubao.png +0 -0
- /package/{images → src/images}/test/kefu.png +0 -0
- /package/{images → src/images}/test/manual.png +0 -0
- /package/{images → src/images}/test/notice.png +0 -0
- /package/{images → src/images}/test/score.png +0 -0
- /package/{images → src/images}/test/setting-top.png +0 -0
- /package/{images → src/images}/test/setting.png +0 -0
- /package/{images → src/images}/test/speech.png +0 -0
- /package/{images → src/images}/test/tool.png +0 -0
- /package/{images → src/images}/test/update.png +0 -0
- /package/{images → src/images}/test/upload.png +0 -0
- /package/{images → src/images}/test/view_back.png +0 -0
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
let newTask = {
|
|
3
|
-
log(){
|
|
4
|
-
Log.log(arguments);
|
|
5
|
-
console.log(arguments);
|
|
6
|
-
},
|
|
7
|
-
comment() {
|
|
8
|
-
//注释
|
|
9
|
-
let tag = UiSelector().id('com.ss.android.ugc.aweme:id/comment_container').isVisibleToUser(true).findOne();
|
|
10
|
-
console.log(tag);
|
|
11
|
-
Gesture.click(tag.bounds().left + Math.random() * tag.bounds().width(), tag.bounds().centerY());
|
|
12
|
-
console.log('打开评论窗口');
|
|
13
|
-
System.sleep(1200);
|
|
14
|
-
|
|
15
|
-
let inputTag = UiSelector().className('android.widget.EditText').editable(true).findOne();
|
|
16
|
-
console.log(inputTag);
|
|
17
|
-
Gesture.click(inputTag.bounds().left + Math.random() * inputTag.bounds().width(), inputTag.bounds().centerY());
|
|
18
|
-
console.log('开始输入评论');
|
|
19
|
-
System.sleep(500);
|
|
20
|
-
|
|
21
|
-
let iptTag = UiSelector().className('android.widget.EditText').editable(true).findOne();
|
|
22
|
-
console.log(iptTag);
|
|
23
|
-
Log.log(iptTag);
|
|
24
|
-
iptTag.setText('太棒了');
|
|
25
|
-
System.sleep(500);
|
|
26
|
-
|
|
27
|
-
let sendTag = UiSelector().id('com.ss.android.ugc.aweme:id/dqq').text('发送').findOne();
|
|
28
|
-
console.log(sendTag);
|
|
29
|
-
|
|
30
|
-
Gesture.click(sendTag.bounds().centerX(), sendTag.bounds().centerY());
|
|
31
|
-
System.sleep(500);
|
|
32
|
-
Gesture.back();
|
|
33
|
-
System.sleep(500);
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
backHome() {
|
|
37
|
-
console.log('开始返回主页');
|
|
38
|
-
let homeTag;
|
|
39
|
-
let backMaxCount = 5;
|
|
40
|
-
do {
|
|
41
|
-
homeTag = UiSelector().id('com.ss.android.ugc.aweme:id/x_t').isVisibleToUser(true).findOne();
|
|
42
|
-
if (homeTag) {
|
|
43
|
-
console.log('在首页');
|
|
44
|
-
}
|
|
45
|
-
Gesture.back();
|
|
46
|
-
console.log('返回');
|
|
47
|
-
System.sleep(1000);
|
|
48
|
-
} while (!homeTag && --backMaxCount >= 0);
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
run() {
|
|
52
|
-
console.log('开始进入应用');
|
|
53
|
-
App.launch('com.ss.android.ugc.aweme');
|
|
54
|
-
System.sleep(2000);
|
|
55
|
-
let zanCount = Storage.getInteger('task_douyin_zan_count');
|
|
56
|
-
let commentCount = Storage.getInteger('task_douyin_zan_comment');
|
|
57
|
-
|
|
58
|
-
console.log('配置:' + zanCount + ' 赞,' + commentCount + ' 评论');
|
|
59
|
-
while (zanCount > 0 || commentCount > 0) {
|
|
60
|
-
try {
|
|
61
|
-
console.log('zanCount: ' + zanCount + ' commentCount: ' + commentCount);
|
|
62
|
-
if (--zanCount >= 0) {
|
|
63
|
-
let tag = UiSelector().id('com.ss.android.ugc.aweme:id/fd9').isVisibleToUser(true).findOne();
|
|
64
|
-
console.log('点赞tag', tag);
|
|
65
|
-
Gesture.click(tag.bounds().left + Math.random() * tag.bounds().width(), tag.bounds().centerY());
|
|
66
|
-
System.sleep(1000);
|
|
67
|
-
console.log('点赞完成');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (--commentCount >= 0) {
|
|
71
|
-
this.comment();
|
|
72
|
-
System.sleep(1000);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
let tag = UiSelector().id('com.ss.android.ugc.aweme:id/viewpager').desc('视频').scrollable(true).findOne();
|
|
77
|
-
tag.scrollForward();
|
|
78
|
-
System.sleep(3000);
|
|
79
|
-
} catch (e) {
|
|
80
|
-
console.log(e);
|
|
81
|
-
this.backHome();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
Log.setFile("douyin_zan.js.log");
|
|
88
|
-
newTask.run();
|
|
89
|
-
FloatDialogs.show('抖音任务完成');
|
package/script/task/dy.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
let dyApp = require("./dyApp");
|
|
2
|
-
|
|
3
|
-
let tag = UiSelector().id('name').findOne();
|
|
4
|
-
|
|
5
|
-
// console.log(tag.click());
|
|
6
|
-
let config = {
|
|
7
|
-
toker_view_video_keywords: Storage.get('toker_view_video_keywords'),
|
|
8
|
-
toker_view_video_second: Storage.getInteger('toker_view_video_second'),
|
|
9
|
-
toker_run_sex: Storage.getArray('toker_run_sex'),
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
console.log(config, dyApp.getName());//获取json文件中的配置参数
|
|
13
|
-
|
|
14
|
-
FloatDialogs.show('提示', '请编写业务代码');
|
package/script/task/dyApp.js
DELETED
package/script/task/dyCity.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
FloatDialogs.show('提示', '请编写业务代码');
|
package/script/task/exec_js.js
DELETED
package/script/task/tool.js
DELETED
package/script/task.html
DELETED
package/src/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//这个文件不用编写代码
|
package/test.json
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "./deekeScript.schema.json",
|
|
3
|
-
"name": "test",
|
|
4
|
-
"versionCode": "100",
|
|
5
|
-
"versionName": "名称",
|
|
6
|
-
"debug": true,
|
|
7
|
-
"icon": "icon.png",
|
|
8
|
-
"head": "head.png",
|
|
9
|
-
"host": "http://127.0.0.1:8080",
|
|
10
|
-
"switchSetting": {
|
|
11
|
-
"alipay": false
|
|
12
|
-
},
|
|
13
|
-
"settingTopBg": "top.png",
|
|
14
|
-
"groups": [
|
|
15
|
-
{
|
|
16
|
-
"title": "测试",
|
|
17
|
-
"methods": [
|
|
18
|
-
{
|
|
19
|
-
"icon": "icon.png",
|
|
20
|
-
"title": "测试",
|
|
21
|
-
"jsFile": "test.js",
|
|
22
|
-
"settingPage": {
|
|
23
|
-
"params": [
|
|
24
|
-
{
|
|
25
|
-
"label": "标题",
|
|
26
|
-
"name": "title",
|
|
27
|
-
"type": "number"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"type": "notice",
|
|
31
|
-
"title": "提示"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"type": "switch",
|
|
35
|
-
"label": "标题",
|
|
36
|
-
"name": "title",
|
|
37
|
-
"value": true
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"type": "number",
|
|
41
|
-
"label": "标题",
|
|
42
|
-
"name": "title",
|
|
43
|
-
"value": 3223
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"type": "digit",
|
|
47
|
-
"label": "标题",
|
|
48
|
-
"name": "title",
|
|
49
|
-
"value": 32
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"type": "numberRange",
|
|
53
|
-
"label": "标题",
|
|
54
|
-
"name": "title",
|
|
55
|
-
"value": 32,
|
|
56
|
-
"min": 0,
|
|
57
|
-
"max": 100,
|
|
58
|
-
"step": 1
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"type": "textArea",
|
|
62
|
-
"label": "标题",
|
|
63
|
-
"name": "title",
|
|
64
|
-
"value": "32",
|
|
65
|
-
"lines": 3
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"type": "checkboxGroup",
|
|
69
|
-
"label": "标题",
|
|
70
|
-
"name": "title",
|
|
71
|
-
"children": ["1", "2", "3"],
|
|
72
|
-
"values": ["1", "2", "3"]
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"type": "digitRange",
|
|
76
|
-
"label": "标题",
|
|
77
|
-
"name": "title",
|
|
78
|
-
"value": 32,
|
|
79
|
-
"min": 0,
|
|
80
|
-
"max": 100,
|
|
81
|
-
"step": 1
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"type": "radio",
|
|
85
|
-
"label": "标题",
|
|
86
|
-
"name": "title",
|
|
87
|
-
"value": "1",
|
|
88
|
-
"dataFrom": "role",
|
|
89
|
-
"options": []
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"type": "text",
|
|
93
|
-
"label": "标题",
|
|
94
|
-
"name": "title",
|
|
95
|
-
"value": "32"
|
|
96
|
-
}
|
|
97
|
-
]
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
]
|
|
101
|
-
}
|
|
102
|
-
],
|
|
103
|
-
"apis": [
|
|
104
|
-
{
|
|
105
|
-
"type": "aiSpeechToken",
|
|
106
|
-
"url": "http://127.0.0.1:8080/api/aiSpeechToken"
|
|
107
|
-
}
|
|
108
|
-
],
|
|
109
|
-
"bottomMenus": [
|
|
110
|
-
{
|
|
111
|
-
"banner": "banner.png",
|
|
112
|
-
"icon": "icon.png",
|
|
113
|
-
"title": "标题",
|
|
114
|
-
"type": "home"
|
|
115
|
-
}
|
|
116
|
-
],
|
|
117
|
-
"settingLists": [
|
|
118
|
-
{
|
|
119
|
-
"title": "设置",
|
|
120
|
-
"icon": "icon.png",
|
|
121
|
-
"type": "clear",
|
|
122
|
-
"settingPage": {
|
|
123
|
-
"params": [
|
|
124
|
-
{
|
|
125
|
-
"label": "标题",
|
|
126
|
-
"name": "title",
|
|
127
|
-
"type": "number"
|
|
128
|
-
}
|
|
129
|
-
]
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
]
|
|
133
|
-
}
|
package/uglify-config.json
DELETED
package/update-types.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const os = require('os');
|
|
4
|
-
const { execSync } = require('child_process');
|
|
5
|
-
|
|
6
|
-
const PROJECT_ROOT = __dirname;
|
|
7
|
-
const TYPES_FOLDER = path.join(PROJECT_ROOT, '@deekeScript');
|
|
8
|
-
/** 旧版脚本使用的临时目录,仅用于清理遗留 */
|
|
9
|
-
const LEGACY_TEMP_DIR = path.join(PROJECT_ROOT, '.temp-update');
|
|
10
|
-
const PACKAGE_NAME = 'deeke-script-app';
|
|
11
|
-
|
|
12
|
-
const ROOT_FILES_FROM_PACKAGE = [
|
|
13
|
-
{ name: 'deekeScript.schema.json', required: false },
|
|
14
|
-
{ name: 'update-types.js', required: false }
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
// 颜色输出
|
|
18
|
-
const colors = {
|
|
19
|
-
reset: '\x1b[0m',
|
|
20
|
-
green: '\x1b[32m',
|
|
21
|
-
yellow: '\x1b[33m',
|
|
22
|
-
red: '\x1b[31m',
|
|
23
|
-
blue: '\x1b[34m',
|
|
24
|
-
cyan: '\x1b[36m'
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
function log(message, color = 'reset') {
|
|
28
|
-
console.log(`${colors[color]}${message}${colors.reset}`);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function cleanupLegacyTemp() {
|
|
32
|
-
if (fs.existsSync(LEGACY_TEMP_DIR)) {
|
|
33
|
-
fs.rmSync(LEGACY_TEMP_DIR, { recursive: true, force: true });
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function removeDir(dir) {
|
|
38
|
-
if (dir && fs.existsSync(dir)) {
|
|
39
|
-
fs.rmSync(dir, { recursive: true, force: true });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* 使用 npm pack + 解压 tarball 获取包内容,避免在项目内 npm install
|
|
45
|
-
* 触发 deeke-script-app 的 postinstall(init),从而把文件写到错误目录。
|
|
46
|
-
*/
|
|
47
|
-
function updateFromNpm() {
|
|
48
|
-
log('\n📦 从 npm 拉取包并更新类型与相关文件...', 'cyan');
|
|
49
|
-
|
|
50
|
-
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'deeke-types-'));
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
log('检查 npm 包版本...', 'blue');
|
|
54
|
-
const latestVersion = execSync(`npm view ${PACKAGE_NAME} version`, { encoding: 'utf-8' }).trim();
|
|
55
|
-
log(`最新版本: ${latestVersion}`, 'green');
|
|
56
|
-
|
|
57
|
-
log('下载包(npm pack,不执行安装脚本)...', 'blue');
|
|
58
|
-
const packOutput = execSync(`npm pack ${PACKAGE_NAME}@${latestVersion}`, {
|
|
59
|
-
cwd: tempDir,
|
|
60
|
-
encoding: 'utf-8',
|
|
61
|
-
stdio: ['pipe', 'pipe', 'pipe']
|
|
62
|
-
}).trim();
|
|
63
|
-
const tgzLine = packOutput.split(/\r?\n/).filter(Boolean).pop();
|
|
64
|
-
if (!tgzLine) {
|
|
65
|
-
throw new Error('npm pack 未返回 tarball 文件名');
|
|
66
|
-
}
|
|
67
|
-
const tgzName = path.basename(tgzLine.trim());
|
|
68
|
-
const tgzPath = path.join(tempDir, tgzName);
|
|
69
|
-
if (!fs.existsSync(tgzPath)) {
|
|
70
|
-
throw new Error(`未找到 tarball: ${tgzPath}`);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
execSync(`tar -xzf ${JSON.stringify(tgzName)}`, {
|
|
74
|
-
cwd: tempDir,
|
|
75
|
-
stdio: 'pipe'
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
const packRoot = path.join(tempDir, 'package');
|
|
79
|
-
if (!fs.existsSync(packRoot)) {
|
|
80
|
-
throw new Error('解压后未找到 package 目录(npm 包结构异常)');
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const sourceTypesFolder = path.join(packRoot, '@deekeScript');
|
|
84
|
-
if (!fs.existsSync(sourceTypesFolder)) {
|
|
85
|
-
throw new Error('npm 包中未找到 @deekeScript 文件夹');
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (fs.existsSync(TYPES_FOLDER)) {
|
|
89
|
-
log('备份现有类型定义...', 'yellow');
|
|
90
|
-
const backupFolder = path.join(PROJECT_ROOT, '@deekeScript.backup');
|
|
91
|
-
removeDir(backupFolder);
|
|
92
|
-
fs.cpSync(TYPES_FOLDER, backupFolder, { recursive: true });
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (fs.existsSync(TYPES_FOLDER)) {
|
|
96
|
-
fs.rmSync(TYPES_FOLDER, { recursive: true, force: true });
|
|
97
|
-
}
|
|
98
|
-
fs.cpSync(sourceTypesFolder, TYPES_FOLDER, { recursive: true });
|
|
99
|
-
log('✅ 已更新 @deekeScript', 'green');
|
|
100
|
-
|
|
101
|
-
for (const { name, required } of ROOT_FILES_FROM_PACKAGE) {
|
|
102
|
-
const src = path.join(packRoot, name);
|
|
103
|
-
const dest = path.join(PROJECT_ROOT, name);
|
|
104
|
-
if (fs.existsSync(src)) {
|
|
105
|
-
fs.copyFileSync(src, dest);
|
|
106
|
-
log(`✅ 已更新 ${name}`, 'green');
|
|
107
|
-
} else if (required) {
|
|
108
|
-
throw new Error(`npm 包中未找到必需文件: ${name}`);
|
|
109
|
-
} else {
|
|
110
|
-
log(`⚠️ 包中暂无 ${name},跳过(发布包含该文件后即可同步)`, 'yellow');
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
log(`已同步自 registry 版本: ${latestVersion}`, 'green');
|
|
115
|
-
} finally {
|
|
116
|
-
removeDir(tempDir);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
function main() {
|
|
121
|
-
log('🚀 开始从远程包更新 @deekeScript 等文件...', 'cyan');
|
|
122
|
-
|
|
123
|
-
try {
|
|
124
|
-
if (!fs.existsSync(path.join(PROJECT_ROOT, 'package.json'))) {
|
|
125
|
-
throw new Error('请在项目根目录运行此脚本');
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
updateFromNpm();
|
|
129
|
-
} catch (error) {
|
|
130
|
-
log(`\n❌ 更新失败: ${error.message}`, 'red');
|
|
131
|
-
process.exit(1);
|
|
132
|
-
} finally {
|
|
133
|
-
cleanupLegacyTemp();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
main();
|
|
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
|
|
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
|