lightshortcuts 1.0.8 → 1.1.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/README.md +18 -4
- package/bin/lsc.js +660 -395
- package/docs/README.md +357 -0
- package/lib/LSC.js +303 -122
- package/lib/core/api.js +1134 -0
- package/lib/core/apiUrl.js +20 -8
- package/lib/defaults.js +7 -8
- package/lib/helpers/hsMd5.js +177 -0
- package/lib/helpers/hsUtils.js +74 -0
- package/lib/helpers/zip.js +164 -0
- package/lib/utils.js +66 -5
- package/lsc.config.json +22 -7
- package/package.json +2 -2
- package/lib/core/API.js +0 -342
package/lib/core/API.js
DELETED
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
const axios = require("axios").default;
|
|
3
|
-
const qs = require("qs");
|
|
4
|
-
const { createReadStream, access, statSync, constants } = require("fs");
|
|
5
|
-
const FormData = require("form-data");
|
|
6
|
-
const { getPkgInfo } = require("../utils");
|
|
7
|
-
const { ApiList } = require("./apiUrl");
|
|
8
|
-
|
|
9
|
-
// 存储APP的离线包
|
|
10
|
-
let allOfflinePkgLists = {};
|
|
11
|
-
|
|
12
|
-
const initAxiosConfig = async function(lightBaseURL,token){
|
|
13
|
-
//全局配置
|
|
14
|
-
axios.defaults.baseURL = lightBaseURL;
|
|
15
|
-
axios.defaults.headers["cookie"] = `token=${token}`;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
// 添加响应拦截器
|
|
19
|
-
axios.interceptors.response.use(
|
|
20
|
-
function (response) {
|
|
21
|
-
// 2xx 范围内的状态码都会触发该函数。
|
|
22
|
-
return response;
|
|
23
|
-
},
|
|
24
|
-
function (error) {
|
|
25
|
-
// 超出 2xx 范围的状态码都会触发该函数。
|
|
26
|
-
return Promise.reject(error);
|
|
27
|
-
}
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
//校验会话有效性
|
|
31
|
-
const checkSession = async function (token) {
|
|
32
|
-
if(token){
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
return new Promise((resolve, reject) => {
|
|
36
|
-
axios
|
|
37
|
-
.get(ApiList.checkSession)
|
|
38
|
-
.then((res) => {
|
|
39
|
-
let { data } = res;
|
|
40
|
-
if (data.err_no === 0) {
|
|
41
|
-
resolve(true);
|
|
42
|
-
} else {
|
|
43
|
-
resolve(false);
|
|
44
|
-
}
|
|
45
|
-
})
|
|
46
|
-
.catch((err) => {
|
|
47
|
-
console.warn("检查会话报错!", err);
|
|
48
|
-
resolve(false);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
// 注销会话
|
|
54
|
-
const logout = async function (token){
|
|
55
|
-
return new Promise((resolve, reject) => {
|
|
56
|
-
axios
|
|
57
|
-
.get(ApiList.logout)
|
|
58
|
-
.then((res) => {
|
|
59
|
-
let { data } = res;
|
|
60
|
-
if (data.err_no === 0) {
|
|
61
|
-
resolve(true);
|
|
62
|
-
} else {
|
|
63
|
-
resolve(false);
|
|
64
|
-
}
|
|
65
|
-
})
|
|
66
|
-
.catch((err) => {
|
|
67
|
-
console.warn(`注销会话报错!${err.response.data.data[0].error_info}`);
|
|
68
|
-
resolve(false);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// 上传文件,__filePath:绝对路径
|
|
74
|
-
const fileUpload = async function (__filePath) {
|
|
75
|
-
return new Promise((resolve, reject) => {
|
|
76
|
-
const formData = new FormData();
|
|
77
|
-
formData.append("file", createReadStream(__filePath));
|
|
78
|
-
access(__filePath, constants.F_OK, (err) => {
|
|
79
|
-
if (err) {
|
|
80
|
-
console.log(`文件${__filePath}不存在`);
|
|
81
|
-
reject(`文件${__filePath}不存在`);
|
|
82
|
-
} else {
|
|
83
|
-
axios
|
|
84
|
-
.post(ApiList.fileUpload, formData, {
|
|
85
|
-
headers: formData.getHeaders(),
|
|
86
|
-
})
|
|
87
|
-
.then((res) => {
|
|
88
|
-
console.log("上传文件:", res.data);
|
|
89
|
-
let { err_no, data, err_msg } = res.data;
|
|
90
|
-
if (err_no == 0) {
|
|
91
|
-
resolve(data);
|
|
92
|
-
} else {
|
|
93
|
-
reject(res.data);
|
|
94
|
-
}
|
|
95
|
-
resolve(res);
|
|
96
|
-
})
|
|
97
|
-
.catch((e) => reject(e));
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
// 查询APP下的离线包列表 √
|
|
104
|
-
const queryOfflinePkgList = async function (ids = ["3592", "3577"]) {
|
|
105
|
-
const getPkgListOf = function (appid) {
|
|
106
|
-
return new Promise((resolve, reject) => {
|
|
107
|
-
axios
|
|
108
|
-
.get(`${ApiList.queryOfflinePkgList}?app_id=${appid}`)
|
|
109
|
-
.then((res) => {
|
|
110
|
-
let { err_no, err_info, data } = res.data;
|
|
111
|
-
if (err_no == 0) {
|
|
112
|
-
allOfflinePkgLists[appid] = data;
|
|
113
|
-
} else {
|
|
114
|
-
console.log(`${appid}报错:${err_info}`);
|
|
115
|
-
}
|
|
116
|
-
resolve(true);
|
|
117
|
-
})
|
|
118
|
-
.catch((e) => {
|
|
119
|
-
let { err_no, err_info } = e.response.data;
|
|
120
|
-
console.log(`${appid}采集报错:${err_info}`);
|
|
121
|
-
resolve(false);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
// 批量查询
|
|
127
|
-
return new Promise((resolve, reject) => {
|
|
128
|
-
Promise.all(
|
|
129
|
-
ids.reduce((prev, next) => {
|
|
130
|
-
return prev.concat(getPkgListOf(next));
|
|
131
|
-
}, [])
|
|
132
|
-
).then((rs) => {
|
|
133
|
-
// console.log("批量查询查询情况:", rs);
|
|
134
|
-
resolve(allOfflinePkgLists);
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
// 同步APP的离线包列表,如果没有创建,则进行创建,以拉平两端离线包
|
|
140
|
-
async function syncPkgList(ids = [], h5app_id) {
|
|
141
|
-
await queryOfflinePkgList(ids);
|
|
142
|
-
|
|
143
|
-
let keys = Object.keys(allOfflinePkgLists);
|
|
144
|
-
let newAppPkgList = keys.reduce(
|
|
145
|
-
(acc, cur) => {
|
|
146
|
-
let a = allOfflinePkgLists[cur];
|
|
147
|
-
let b = a.filter((val) => val.h5app_id == h5app_id);
|
|
148
|
-
// acc[cur] = b;
|
|
149
|
-
if (b.length > 0) {
|
|
150
|
-
acc.name = b[0].name;
|
|
151
|
-
} else {
|
|
152
|
-
acc.none.push(cur);
|
|
153
|
-
}
|
|
154
|
-
return acc;
|
|
155
|
-
},
|
|
156
|
-
{ none: [], name: "" }
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
return new Promise((resolve, reject) => {
|
|
160
|
-
if (newAppPkgList["none"].length > 0 && newAppPkgList["name"] != "") {
|
|
161
|
-
Promise.all(
|
|
162
|
-
newAppPkgList["none"].reduce((prev, next) => {
|
|
163
|
-
return prev.concat(
|
|
164
|
-
addOfflineH5pkg(next, h5app_id, newAppPkgList["name"])
|
|
165
|
-
);
|
|
166
|
-
}, [])
|
|
167
|
-
).then((rs) => {
|
|
168
|
-
console.log("同步离线包信息:", rs);
|
|
169
|
-
resolve(true);
|
|
170
|
-
});
|
|
171
|
-
} else {
|
|
172
|
-
resolve(true);
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
//查询版本信息√
|
|
178
|
-
const queryOfflineVersionlist = async function (app_id, h5app_id) {
|
|
179
|
-
let t = await getPkgInfo(allOfflinePkgLists, app_id, h5app_id),
|
|
180
|
-
{ id } = t;
|
|
181
|
-
//pkg_id
|
|
182
|
-
let qovRes = await axios.get(
|
|
183
|
-
`${ApiList.queryOfflineVersionlist}?app_id=${app_id}&pkg_id=${id}&page_no=1&page_size=30`
|
|
184
|
-
);
|
|
185
|
-
return qovRes.data;
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
// 如果未创建离线包,则创建之√
|
|
189
|
-
const addOfflineH5pkg = async function (app_id, h5app_id, name) {
|
|
190
|
-
// return new Promise((resolve, reject) => {
|
|
191
|
-
let copRes = await axios.get(
|
|
192
|
-
`${ApiList.checkOfflinePkgid}?app_id=${app_id}&h5app_id=${h5app_id}`
|
|
193
|
-
),
|
|
194
|
-
copFlag = copRes.data.data;
|
|
195
|
-
let conRes = await axios.get(
|
|
196
|
-
`${ApiList.checkOfflinePkgname}?app_id=${app_id}&name=${encodeURI(name)}`
|
|
197
|
-
),
|
|
198
|
-
conFlag = conRes.data.data;
|
|
199
|
-
if (copFlag || conFlag) {
|
|
200
|
-
console.log("已存在");
|
|
201
|
-
} else {
|
|
202
|
-
let aofRes = await axios({
|
|
203
|
-
method: "post",
|
|
204
|
-
url: ApiList.addOfflineH5pkg,
|
|
205
|
-
data: qs.stringify({
|
|
206
|
-
app_id,
|
|
207
|
-
h5app_id,
|
|
208
|
-
name,
|
|
209
|
-
pkg_type: 1,
|
|
210
|
-
}),
|
|
211
|
-
});
|
|
212
|
-
let { err_no, data } = aofRes.data;
|
|
213
|
-
console.log(`添加离线包:${h5app_id}-${name}`, aofRes.data);
|
|
214
|
-
if (err_no == 0 && data == 1) {
|
|
215
|
-
await queryOfflinePkgList([app_id]);
|
|
216
|
-
return true;
|
|
217
|
-
} else {
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
// });
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
//创建离线发布版本 √
|
|
225
|
-
const addOfflineVersion = async function (args) {
|
|
226
|
-
return new Promise((resolve, reject) => {
|
|
227
|
-
// 创建版本
|
|
228
|
-
axios({
|
|
229
|
-
method: "post",
|
|
230
|
-
url: ApiList.addOfflineVersion,
|
|
231
|
-
data: qs.stringify(args),
|
|
232
|
-
})
|
|
233
|
-
.then(function (res) {
|
|
234
|
-
// {"err_no":0,"err_info":"成功执行","data":1}
|
|
235
|
-
console.log("创建离线发布版本:", res.data);
|
|
236
|
-
const { err_no } = res.data;
|
|
237
|
-
if (err_no == 0) {
|
|
238
|
-
resolve(true);
|
|
239
|
-
} else {
|
|
240
|
-
resolve(false);
|
|
241
|
-
}
|
|
242
|
-
})
|
|
243
|
-
.catch(function (error) {
|
|
244
|
-
console.log("创建离线发布版本报错:", error);
|
|
245
|
-
resolve(false);
|
|
246
|
-
});
|
|
247
|
-
});
|
|
248
|
-
};
|
|
249
|
-
|
|
250
|
-
// 添加发布任务 √
|
|
251
|
-
const addOfflineTask = async function (args) {
|
|
252
|
-
return new Promise((resolve, reject) => {
|
|
253
|
-
// 创建版本
|
|
254
|
-
axios({
|
|
255
|
-
method: "post",
|
|
256
|
-
url: ApiList.addOfflineTask,
|
|
257
|
-
data: qs.stringify(args),
|
|
258
|
-
})
|
|
259
|
-
.then((res) => {
|
|
260
|
-
// {"err_no":0,"err_info":"成功执行","data":24303}
|
|
261
|
-
console.log("添加发布任务:", res.data);
|
|
262
|
-
const { err_no } = res.data;
|
|
263
|
-
if (err_no == 0) {
|
|
264
|
-
resolve(true);
|
|
265
|
-
} else {
|
|
266
|
-
resolve(false);
|
|
267
|
-
}
|
|
268
|
-
})
|
|
269
|
-
.catch((error) => {
|
|
270
|
-
console.log("添加发布任务报错:", error);
|
|
271
|
-
resolve(false);
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
//查询某个版本的发布任务 √
|
|
277
|
-
const queryOfflineTask = async function (args) {
|
|
278
|
-
return new Promise((resolve, reject) => {
|
|
279
|
-
// 创建版本
|
|
280
|
-
axios
|
|
281
|
-
.get(
|
|
282
|
-
`${ApiList.queryOfflineTask}?${qs.stringify(
|
|
283
|
-
args
|
|
284
|
-
)}&page_no=1&page_size=5`
|
|
285
|
-
)
|
|
286
|
-
.then(function (res) {
|
|
287
|
-
// console.log("获取指定版本下的发布任务列表:", JSON.stringify(res.data));
|
|
288
|
-
const { err_no, data } = res.data;
|
|
289
|
-
if (err_no == 0) {
|
|
290
|
-
resolve(data.list);
|
|
291
|
-
} else {
|
|
292
|
-
resolve([]);
|
|
293
|
-
}
|
|
294
|
-
})
|
|
295
|
-
.catch(function (error) {
|
|
296
|
-
console.log("获取指定版本下的发布任务列表报错:", error);
|
|
297
|
-
reject(error);
|
|
298
|
-
});
|
|
299
|
-
});
|
|
300
|
-
};
|
|
301
|
-
|
|
302
|
-
//更新发布任务状态√
|
|
303
|
-
const updateOfflineTask = async function (uotArgs = {}) {
|
|
304
|
-
return new Promise((resolve, reject) => {
|
|
305
|
-
// 创建版本
|
|
306
|
-
axios({
|
|
307
|
-
method: "post",
|
|
308
|
-
url: ApiList.updateOfflineTask,
|
|
309
|
-
data: qs.stringify(uotArgs),
|
|
310
|
-
})
|
|
311
|
-
.then(function (res) {
|
|
312
|
-
console.log("更新发布任务状态:", res.data);
|
|
313
|
-
const { err_no } = res.data;
|
|
314
|
-
if (err_no == 0) {
|
|
315
|
-
resolve(true);
|
|
316
|
-
} else {
|
|
317
|
-
resolve(false);
|
|
318
|
-
}
|
|
319
|
-
})
|
|
320
|
-
.catch(function (error) {
|
|
321
|
-
console.log("更新发布任务状态报错:", error);
|
|
322
|
-
resolve(false);
|
|
323
|
-
});
|
|
324
|
-
});
|
|
325
|
-
};
|
|
326
|
-
|
|
327
|
-
module.exports = {
|
|
328
|
-
allOfflinePkgLists,
|
|
329
|
-
logout,
|
|
330
|
-
checkSession,
|
|
331
|
-
fileUpload,
|
|
332
|
-
queryOfflinePkgList,
|
|
333
|
-
getPkgInfo,
|
|
334
|
-
queryOfflineVersionlist,
|
|
335
|
-
addOfflineH5pkg,
|
|
336
|
-
addOfflineVersion,
|
|
337
|
-
addOfflineTask,
|
|
338
|
-
queryOfflineTask,
|
|
339
|
-
updateOfflineTask,
|
|
340
|
-
syncPkgList,
|
|
341
|
-
initAxiosConfig
|
|
342
|
-
};
|