@iflyrpa/actions 1.2.14-beta.2 → 1.2.14-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,377 +1,4 @@
1
1
  var __webpack_modules__ = {
2
- "./src/actions/searchAccountInfo/getWxInfo.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3
- "use strict";
4
- __webpack_require__.d(__webpack_exports__, {
5
- n: ()=>getWeixinData
6
- });
7
- var _iflyrpa_share__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("@iflyrpa/share");
8
- var _iflyrpa_share__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(_iflyrpa_share__WEBPACK_IMPORTED_MODULE_0__);
9
- var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/actions/searchAccountInfo/types.ts");
10
- var _utils_http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/utils/http.ts");
11
- var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/index.ts");
12
- async function getWeixinData(params) {
13
- const { token } = params;
14
- if (!token) return {
15
- code: 200,
16
- message: "缺少token",
17
- data: null
18
- };
19
- try {
20
- const { token } = params;
21
- if (!token) return (0, _types__WEBPACK_IMPORTED_MODULE_3__.V)("缺少token", 200);
22
- const http = new _utils_http__WEBPACK_IMPORTED_MODULE_1__.e({
23
- headers: {
24
- cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
25
- }
26
- });
27
- const massRandomIDHtml = await http.api({
28
- method: "get",
29
- url: "https://mp.weixin.qq.com/misc/appmsganalysis",
30
- params: {
31
- token,
32
- lang: "zh_CN",
33
- action: "report"
34
- }
35
- });
36
- const massRandomIDReg = massRandomIDHtml.match(/mass_all\.([a-z0-9]+)\.js/);
37
- const massRandomID = massRandomIDReg ? massRandomIDReg[1] : "";
38
- const [readInfo, fansInfoHtml] = await Promise.all([
39
- http.api({
40
- method: "get",
41
- url: `https://res.wx.qq.com/mpres/zh_CN/htmledition/pages/statistics/mass_all/mass_all.${massRandomID}.js`
42
- }),
43
- http.api({
44
- method: "get",
45
- url: "https://mp.weixin.qq.com/misc/useranalysis",
46
- params: {
47
- token,
48
- lang: "zh_CN"
49
- }
50
- })
51
- ]);
52
- const regex = /(readAllList|shareAllList|completeAllList):\s*(\[[^\]]+\])/g;
53
- let match;
54
- const arrays = {};
55
- while(null !== (match = regex.exec(readInfo)))arrays[match[1]] = JSON.parse(match[2]);
56
- const readAllList = arrays.readAllList || [];
57
- const shareAllList = arrays.shareAllList || [];
58
- const fansInfoReg = fansInfoHtml.match(/window\.CGI_DATA\['pages\/statistics\/user_statistics'\]\s*=\s*(\{[\s\S]*?\});/);
59
- if (!fansInfoReg) return (0, _types__WEBPACK_IMPORTED_MODULE_3__.V)("未找到粉丝信息", 200);
60
- const fansInfo = eval("(" + fansInfoReg[1] + ")");
61
- const yesterday = _utils__WEBPACK_IMPORTED_MODULE_2__.Tx.format(new Date().setDate(new Date().getDate() - 1), "yyyy-MM-dd");
62
- const yesterdayFansInfo = fansInfo.list[0]?.list.find((item)=>item.date === yesterday);
63
- if (!yesterdayFansInfo) return (0, _types__WEBPACK_IMPORTED_MODULE_3__.V)("未找到粉丝数", 200);
64
- const wxData = {
65
- fansNum: yesterdayFansInfo.cumulate_user,
66
- fansNumYesterday: yesterdayFansInfo.new_user - yesterdayFansInfo.cancel_user,
67
- readNumYesterday: readAllList[0] || 0,
68
- shareNumYesterday: shareAllList[0] || 0
69
- };
70
- return (0, _iflyrpa_share__WEBPACK_IMPORTED_MODULE_0__.success)(wxData, "微信粉丝数据获取成功!");
71
- } catch (error) {
72
- return (0, _types__WEBPACK_IMPORTED_MODULE_3__.V)(error instanceof Error ? error.message : "微信数据获取失败");
73
- }
74
- }
75
- },
76
- "./src/actions/searchAccountInfo/types.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
77
- "use strict";
78
- __webpack_require__.d(__webpack_exports__, {
79
- V: ()=>errorResponse
80
- });
81
- const errorResponse = (message, code = 500)=>({
82
- code,
83
- message,
84
- data: null
85
- });
86
- },
87
- "./src/utils/http.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
88
- "use strict";
89
- __webpack_require__.d(__webpack_exports__, {
90
- e: ()=>Http
91
- });
92
- var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("axios");
93
- var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__);
94
- class Http {
95
- static handleApiError(error) {
96
- if (error && "object" == typeof error && "code" in error && "message" in error) return error;
97
- return {
98
- code: 500,
99
- message: "",
100
- data: error
101
- };
102
- }
103
- constructor(config){
104
- this.apiClient = axios__WEBPACK_IMPORTED_MODULE_0___default().create(config);
105
- }
106
- addResponseInterceptor(findError) {
107
- this.apiClient.interceptors.response.use((response)=>{
108
- const error = findError(response);
109
- if (error) return Promise.reject(Object.assign(error, {
110
- extra: {
111
- method: response.config.method,
112
- url: response.config.url
113
- }
114
- }));
115
- return response;
116
- }, (error)=>{
117
- const errorResponse = {
118
- code: error.response?.status || 500,
119
- message: error.message || "",
120
- data: error.response?.data,
121
- extra: {
122
- method: error.config?.method,
123
- url: error.config?.url
124
- }
125
- };
126
- if (error.response?.data) {
127
- if ("object" == typeof error.response.data) {
128
- const serverError = error.response.data;
129
- if (serverError.message) errorResponse.message = serverError.message;
130
- errorResponse.data = serverError;
131
- }
132
- }
133
- return Promise.reject(errorResponse);
134
- });
135
- }
136
- async api(config) {
137
- try {
138
- const response = await this.apiClient(config);
139
- return response.data;
140
- } catch (error) {
141
- return Promise.reject(Http.handleApiError(error));
142
- }
143
- }
144
- }
145
- },
146
- "./src/utils/index.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
147
- "use strict";
148
- __webpack_require__.d(__webpack_exports__, {
149
- hc: ()=>parseUrlQueryString,
150
- I: ()=>replaceImgSrc,
151
- E_: ()=>extractImgTag,
152
- i9: ()=>getRandomInRange,
153
- f8: ()=>PopupListener,
154
- qN: ()=>copyHtmlToClipboard,
155
- Tx: ()=>TimeFormatter,
156
- Tb: ()=>defaultParams,
157
- n: ()=>stringifyError,
158
- H8: ()=>getFileState,
159
- jo: ()=>executeAction,
160
- e0: ()=>calculateCropCoordinates
161
- });
162
- var external_node_fs_ = __webpack_require__("node:fs");
163
- var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_);
164
- var external_node_path_ = __webpack_require__("node:path");
165
- var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_);
166
- const external_dom_serializer_namespaceObject = require("dom-serializer");
167
- var external_dom_serializer_default = /*#__PURE__*/ __webpack_require__.n(external_dom_serializer_namespaceObject);
168
- const external_domhandler_namespaceObject = require("domhandler");
169
- const external_htmlparser2_namespaceObject = require("htmlparser2");
170
- const external_mime_types_namespaceObject = require("mime-types");
171
- var external_mime_types_default = /*#__PURE__*/ __webpack_require__.n(external_mime_types_namespaceObject);
172
- var http = __webpack_require__("./src/utils/http.ts");
173
- function getRandomInRange(min, max) {
174
- return Math.floor(Math.random() * (max - min + 1)) + min;
175
- }
176
- const getFileState = (filePath)=>{
177
- const filename = external_node_path_default().basename(filePath);
178
- const fileType = external_mime_types_default().lookup(filePath);
179
- const stats = external_node_fs_default().statSync(filePath);
180
- const fileSize = stats.size;
181
- const lastModifiedDate = stats.mtime;
182
- return {
183
- name: filename,
184
- type: fileType,
185
- size: fileSize,
186
- lastModifiedDate: lastModifiedDate.toString()
187
- };
188
- };
189
- const calculateCropCoordinates = (width, height, aspectRatio)=>{
190
- const targetRatio = aspectRatio[0] / aspectRatio[1];
191
- let cropWidth;
192
- let cropHeight;
193
- if (width / height > targetRatio) {
194
- cropHeight = height;
195
- cropWidth = height * targetRatio;
196
- } else {
197
- cropWidth = width;
198
- cropHeight = width / targetRatio;
199
- }
200
- const x1 = (width - cropWidth) / 2;
201
- const y1 = (height - cropHeight) / 2;
202
- const x2 = x1 + cropWidth;
203
- const y2 = y1 + cropHeight;
204
- return {
205
- x1: x1 / width,
206
- y1: y1 / height,
207
- x2: x2 / width,
208
- y2: y2 / height
209
- };
210
- };
211
- const extractImgTag = (html)=>{
212
- const srcList = [];
213
- const parser = new external_htmlparser2_namespaceObject.Parser({
214
- onopentag (name, attributes) {
215
- if ("img" === name && (attributes.src.trim() || attributes.currentSrc.trim())) srcList.push(attributes.src.trim() || attributes.currentSrc.trim());
216
- }
217
- });
218
- parser.write(html);
219
- parser.end();
220
- return srcList;
221
- };
222
- class TimeFormatter {
223
- static format(timestamp, formatStr = 'yyyy-MM-dd hh:mm') {
224
- if ('number' == typeof timestamp && 10 === timestamp.toString().length) timestamp *= 1000;
225
- const date = new Date(timestamp);
226
- const map = {
227
- yyyy: String(date.getFullYear()),
228
- yy: String(date.getFullYear()).slice(-2),
229
- MM: String(date.getMonth() + 1).padStart(2, '0'),
230
- dd: String(date.getDate()).padStart(2, '0'),
231
- hh: String(date.getHours()).padStart(2, '0'),
232
- mm: String(date.getMinutes()).padStart(2, '0'),
233
- ss: String(date.getSeconds()).padStart(2, '0'),
234
- M: String(date.getMonth() + 1),
235
- d: String(date.getDate()),
236
- h: String(date.getHours()),
237
- m: String(date.getMinutes()),
238
- s: String(date.getSeconds())
239
- };
240
- return formatStr.replace(/yyyy|yy|MM|dd|hh|mm|ss|M|d|h|m|s/g, (key)=>map[key]);
241
- }
242
- }
243
- const replaceImgSrc = (html, callback)=>{
244
- let lastedHtml = html;
245
- const isImageTag = (node)=>"tag" === node.type && "img" === node.name;
246
- const traverseDom = (node)=>{
247
- if (external_htmlparser2_namespaceObject.DomUtils.hasChildren(node)) for (const child of node.children){
248
- if (isImageTag(child)) callback(child);
249
- traverseDom(child);
250
- }
251
- };
252
- const handler = new external_domhandler_namespaceObject.DomHandler((error, dom)=>{
253
- if (error) console.log(error);
254
- else dom.forEach(traverseDom);
255
- lastedHtml = external_dom_serializer_default()(dom, {
256
- decodeEntities: false
257
- });
258
- });
259
- const parser = new external_htmlparser2_namespaceObject.Parser(handler, {
260
- decodeEntities: false
261
- });
262
- parser.write(html);
263
- parser.end();
264
- return lastedHtml;
265
- };
266
- const stringifyError = (error)=>{
267
- if (error instanceof Error) return error.toString();
268
- if ("object" == typeof error) return JSON.stringify(error);
269
- return error;
270
- };
271
- const executeAction = (...actions)=>async (task, params)=>{
272
- let result = {
273
- code: 500,
274
- message: "",
275
- data: null
276
- };
277
- for(let index = 0; index < actions.length; index++){
278
- const action = actions[index];
279
- try {
280
- result = await action(task, params);
281
- } catch (error) {
282
- result = http.e.handleApiError(error);
283
- }
284
- if (0 === result.code || 200 === result.code) break;
285
- if (index !== actions.length - 1) task.logger.error(result.message, stringifyError(result.data), result.extra);
286
- }
287
- return result;
288
- };
289
- async function copyHtmlToClipboard(page, html, options = {
290
- format: "text/html",
291
- fallback: true
292
- }) {
293
- try {
294
- await page.evaluate(async ({ htmlContent, format })=>{
295
- const blob = new Blob([
296
- htmlContent
297
- ], {
298
- type: format
299
- });
300
- await navigator.clipboard.write([
301
- new ClipboardItem({
302
- [format]: blob
303
- })
304
- ]);
305
- }, {
306
- htmlContent: html,
307
- format: options.format
308
- });
309
- } catch (error) {
310
- if (options.fallback) await page.evaluate((htmlContent)=>{
311
- const div = document.createElement("div");
312
- div.contentEditable = "true";
313
- div.style.cssText = `
314
- position: fixed;
315
- left: -9999px;
316
- opacity: 0;
317
- pointer-events: none;
318
- `;
319
- div.innerHTML = htmlContent;
320
- document.body.appendChild(div);
321
- const range = document.createRange();
322
- range.selectNodeContents(div);
323
- const selection = window.getSelection();
324
- selection.removeAllRanges();
325
- selection.addRange(range);
326
- document.execCommand("copy");
327
- document.body.removeChild(div);
328
- selection.removeAllRanges();
329
- }, html);
330
- }
331
- }
332
- function PopupListener(page, popupSelector, popKey, buttonSelector, options = {}) {
333
- const { checkInterval = 1000, stopAfterClick = false } = options;
334
- const popup = page.locator(popupSelector);
335
- const button = page.locator(buttonSelector);
336
- const intervalId = setInterval(async ()=>{
337
- try {
338
- if (await popup.count() > 0 && await popup.isVisible() && (await popup.textContent() || "").includes(popKey)) {
339
- await button.click({
340
- force: true
341
- });
342
- if (stopAfterClick) clearInterval(intervalId);
343
- }
344
- } catch (err) {}
345
- }, checkInterval);
346
- return ()=>{
347
- clearInterval(intervalId);
348
- };
349
- }
350
- const parseUrlQueryString = (url)=>{
351
- const queryStringObject = {};
352
- if (!url || !url.includes("?")) return queryStringObject;
353
- const queryString = url.split("?")[1];
354
- if (!queryString) return queryStringObject;
355
- const queryWithoutHash = queryString.split("#")[0];
356
- const queryStringArray = queryWithoutHash.split("&");
357
- for (const item of queryStringArray){
358
- if (!item) continue;
359
- const equalIndex = item.indexOf("=");
360
- if (-1 === equalIndex) queryStringObject[item] = "";
361
- else {
362
- const key = item.slice(0, equalIndex);
363
- const value = item.slice(equalIndex + 1);
364
- try {
365
- queryStringObject[key] = decodeURIComponent(value);
366
- } catch (e) {
367
- queryStringObject[key] = value;
368
- }
369
- }
370
- }
371
- return queryStringObject;
372
- };
373
- const defaultParams = (params, defaults)=>Object.assign({}, defaults, params);
374
- },
375
2
  "./src/utils/ttABEncrypt.js": function(module, __unused_webpack_exports, __webpack_require__) {
376
3
  module = __webpack_require__.nmd(module);
377
4
  const a0_0x45db08 = a0_0x4b0d;
@@ -1453,22 +1080,6 @@ var __webpack_modules__ = {
1453
1080
  return Data2A_B(Base2Data(EnvData2CharCode(_0x315138, _0x1c32b3, _0x56536b)));
1454
1081
  }
1455
1082
  module[a0_0x45db08(0xae)] = GenAB;
1456
- },
1457
- "@iflyrpa/share": function(module) {
1458
- "use strict";
1459
- module.exports = require("@iflyrpa/share");
1460
- },
1461
- axios: function(module) {
1462
- "use strict";
1463
- module.exports = require("axios");
1464
- },
1465
- "node:fs": function(module) {
1466
- "use strict";
1467
- module.exports = require("node:fs");
1468
- },
1469
- "node:path": function(module) {
1470
- "use strict";
1471
- module.exports = require("node:path");
1472
1083
  }
1473
1084
  };
1474
1085
  var __webpack_module_cache__ = {};
@@ -1535,15 +1146,273 @@ var __webpack_exports__ = {};
1535
1146
  version: ()=>package_namespaceObject.i8,
1536
1147
  Action: ()=>Action
1537
1148
  });
1538
- var utils = __webpack_require__("./src/utils/index.ts");
1539
- var external_node_fs_ = __webpack_require__("node:fs");
1540
- var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_);
1541
- var external_node_path_ = __webpack_require__("node:path");
1542
- var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_);
1543
- var share_ = __webpack_require__("@iflyrpa/share");
1149
+ const external_node_fs_namespaceObject = require("node:fs");
1150
+ var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
1151
+ const external_node_path_namespaceObject = require("node:path");
1152
+ var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
1153
+ const external_dom_serializer_namespaceObject = require("dom-serializer");
1154
+ var external_dom_serializer_default = /*#__PURE__*/ __webpack_require__.n(external_dom_serializer_namespaceObject);
1155
+ const external_domhandler_namespaceObject = require("domhandler");
1156
+ const external_htmlparser2_namespaceObject = require("htmlparser2");
1157
+ const external_mime_types_namespaceObject = require("mime-types");
1158
+ var external_mime_types_default = /*#__PURE__*/ __webpack_require__.n(external_mime_types_namespaceObject);
1159
+ const external_axios_namespaceObject = require("axios");
1160
+ var external_axios_default = /*#__PURE__*/ __webpack_require__.n(external_axios_namespaceObject);
1161
+ class Http {
1162
+ static handleApiError(error) {
1163
+ if (error && "object" == typeof error && "code" in error && "message" in error) return error;
1164
+ return {
1165
+ code: 500,
1166
+ message: "",
1167
+ data: error
1168
+ };
1169
+ }
1170
+ constructor(config){
1171
+ this.apiClient = external_axios_default().create(config);
1172
+ }
1173
+ addResponseInterceptor(findError) {
1174
+ this.apiClient.interceptors.response.use((response)=>{
1175
+ const error = findError(response);
1176
+ if (error) return Promise.reject(Object.assign(error, {
1177
+ extra: {
1178
+ method: response.config.method,
1179
+ url: response.config.url
1180
+ }
1181
+ }));
1182
+ return response;
1183
+ }, (error)=>{
1184
+ const errorResponse = {
1185
+ code: error.response?.status || 500,
1186
+ message: error.message || "",
1187
+ data: error.response?.data,
1188
+ extra: {
1189
+ method: error.config?.method,
1190
+ url: error.config?.url
1191
+ }
1192
+ };
1193
+ if (error.response?.data) {
1194
+ if ("object" == typeof error.response.data) {
1195
+ const serverError = error.response.data;
1196
+ if (serverError.message) errorResponse.message = serverError.message;
1197
+ errorResponse.data = serverError;
1198
+ }
1199
+ }
1200
+ return Promise.reject(errorResponse);
1201
+ });
1202
+ }
1203
+ async api(config) {
1204
+ try {
1205
+ const response = await this.apiClient(config);
1206
+ return response.data;
1207
+ } catch (error) {
1208
+ return Promise.reject(Http.handleApiError(error));
1209
+ }
1210
+ }
1211
+ }
1212
+ function getRandomInRange(min, max) {
1213
+ return Math.floor(Math.random() * (max - min + 1)) + min;
1214
+ }
1215
+ const getFileState = (filePath)=>{
1216
+ const filename = external_node_path_default().basename(filePath);
1217
+ const fileType = external_mime_types_default().lookup(filePath);
1218
+ const stats = external_node_fs_default().statSync(filePath);
1219
+ const fileSize = stats.size;
1220
+ const lastModifiedDate = stats.mtime;
1221
+ return {
1222
+ name: filename,
1223
+ type: fileType,
1224
+ size: fileSize,
1225
+ lastModifiedDate: lastModifiedDate.toString()
1226
+ };
1227
+ };
1228
+ const calculateCropCoordinates = (width, height, aspectRatio)=>{
1229
+ const targetRatio = aspectRatio[0] / aspectRatio[1];
1230
+ let cropWidth;
1231
+ let cropHeight;
1232
+ if (width / height > targetRatio) {
1233
+ cropHeight = height;
1234
+ cropWidth = height * targetRatio;
1235
+ } else {
1236
+ cropWidth = width;
1237
+ cropHeight = width / targetRatio;
1238
+ }
1239
+ const x1 = (width - cropWidth) / 2;
1240
+ const y1 = (height - cropHeight) / 2;
1241
+ const x2 = x1 + cropWidth;
1242
+ const y2 = y1 + cropHeight;
1243
+ return {
1244
+ x1: x1 / width,
1245
+ y1: y1 / height,
1246
+ x2: x2 / width,
1247
+ y2: y2 / height
1248
+ };
1249
+ };
1250
+ const extractImgTag = (html)=>{
1251
+ const srcList = [];
1252
+ const parser = new external_htmlparser2_namespaceObject.Parser({
1253
+ onopentag (name, attributes) {
1254
+ if ("img" === name && (attributes.src.trim() || attributes.currentSrc.trim())) srcList.push(attributes.src.trim() || attributes.currentSrc.trim());
1255
+ }
1256
+ });
1257
+ parser.write(html);
1258
+ parser.end();
1259
+ return srcList;
1260
+ };
1261
+ class TimeFormatter {
1262
+ static format(timestamp, formatStr = 'yyyy-MM-dd hh:mm') {
1263
+ if ('number' == typeof timestamp && 10 === timestamp.toString().length) timestamp *= 1000;
1264
+ const date = new Date(timestamp);
1265
+ const map = {
1266
+ yyyy: String(date.getFullYear()),
1267
+ yy: String(date.getFullYear()).slice(-2),
1268
+ MM: String(date.getMonth() + 1).padStart(2, '0'),
1269
+ dd: String(date.getDate()).padStart(2, '0'),
1270
+ hh: String(date.getHours()).padStart(2, '0'),
1271
+ mm: String(date.getMinutes()).padStart(2, '0'),
1272
+ ss: String(date.getSeconds()).padStart(2, '0'),
1273
+ M: String(date.getMonth() + 1),
1274
+ d: String(date.getDate()),
1275
+ h: String(date.getHours()),
1276
+ m: String(date.getMinutes()),
1277
+ s: String(date.getSeconds())
1278
+ };
1279
+ return formatStr.replace(/yyyy|yy|MM|dd|hh|mm|ss|M|d|h|m|s/g, (key)=>map[key]);
1280
+ }
1281
+ }
1282
+ const replaceImgSrc = (html, callback)=>{
1283
+ let lastedHtml = html;
1284
+ const isImageTag = (node)=>"tag" === node.type && "img" === node.name;
1285
+ const traverseDom = (node)=>{
1286
+ if (external_htmlparser2_namespaceObject.DomUtils.hasChildren(node)) for (const child of node.children){
1287
+ if (isImageTag(child)) callback(child);
1288
+ traverseDom(child);
1289
+ }
1290
+ };
1291
+ const handler = new external_domhandler_namespaceObject.DomHandler((error, dom)=>{
1292
+ if (error) console.log(error);
1293
+ else dom.forEach(traverseDom);
1294
+ lastedHtml = external_dom_serializer_default()(dom, {
1295
+ decodeEntities: false
1296
+ });
1297
+ });
1298
+ const parser = new external_htmlparser2_namespaceObject.Parser(handler, {
1299
+ decodeEntities: false
1300
+ });
1301
+ parser.write(html);
1302
+ parser.end();
1303
+ return lastedHtml;
1304
+ };
1305
+ const stringifyError = (error)=>{
1306
+ if (error instanceof Error) return error.toString();
1307
+ if ("object" == typeof error) return JSON.stringify(error);
1308
+ return error;
1309
+ };
1310
+ const executeAction = (...actions)=>async (task, params)=>{
1311
+ let result = {
1312
+ code: 500,
1313
+ message: "",
1314
+ data: null
1315
+ };
1316
+ for(let index = 0; index < actions.length; index++){
1317
+ const action = actions[index];
1318
+ try {
1319
+ result = await action(task, params);
1320
+ } catch (error) {
1321
+ result = Http.handleApiError(error);
1322
+ }
1323
+ if (0 === result.code || 200 === result.code) break;
1324
+ if (index !== actions.length - 1) task.logger.error(result.message, stringifyError(result.data), result.extra);
1325
+ }
1326
+ return result;
1327
+ };
1328
+ async function copyHtmlToClipboard(page, html, options = {
1329
+ format: "text/html",
1330
+ fallback: true
1331
+ }) {
1332
+ try {
1333
+ await page.evaluate(async ({ htmlContent, format })=>{
1334
+ const blob = new Blob([
1335
+ htmlContent
1336
+ ], {
1337
+ type: format
1338
+ });
1339
+ await navigator.clipboard.write([
1340
+ new ClipboardItem({
1341
+ [format]: blob
1342
+ })
1343
+ ]);
1344
+ }, {
1345
+ htmlContent: html,
1346
+ format: options.format
1347
+ });
1348
+ } catch (error) {
1349
+ if (options.fallback) await page.evaluate((htmlContent)=>{
1350
+ const div = document.createElement("div");
1351
+ div.contentEditable = "true";
1352
+ div.style.cssText = `
1353
+ position: fixed;
1354
+ left: -9999px;
1355
+ opacity: 0;
1356
+ pointer-events: none;
1357
+ `;
1358
+ div.innerHTML = htmlContent;
1359
+ document.body.appendChild(div);
1360
+ const range = document.createRange();
1361
+ range.selectNodeContents(div);
1362
+ const selection = window.getSelection();
1363
+ selection.removeAllRanges();
1364
+ selection.addRange(range);
1365
+ document.execCommand("copy");
1366
+ document.body.removeChild(div);
1367
+ selection.removeAllRanges();
1368
+ }, html);
1369
+ }
1370
+ }
1371
+ function PopupListener(page, popupSelector, popKey, buttonSelector, options = {}) {
1372
+ const { checkInterval = 1000, stopAfterClick = false } = options;
1373
+ const popup = page.locator(popupSelector);
1374
+ const button = page.locator(buttonSelector);
1375
+ const intervalId = setInterval(async ()=>{
1376
+ try {
1377
+ if (await popup.count() > 0 && await popup.isVisible() && (await popup.textContent() || "").includes(popKey)) {
1378
+ await button.click({
1379
+ force: true
1380
+ });
1381
+ if (stopAfterClick) clearInterval(intervalId);
1382
+ }
1383
+ } catch (err) {}
1384
+ }, checkInterval);
1385
+ return ()=>{
1386
+ clearInterval(intervalId);
1387
+ };
1388
+ }
1389
+ const parseUrlQueryString = (url)=>{
1390
+ const queryStringObject = {};
1391
+ if (!url || !url.includes("?")) return queryStringObject;
1392
+ const queryString = url.split("?")[1];
1393
+ if (!queryString) return queryStringObject;
1394
+ const queryWithoutHash = queryString.split("#")[0];
1395
+ const queryStringArray = queryWithoutHash.split("&");
1396
+ for (const item of queryStringArray){
1397
+ if (!item) continue;
1398
+ const equalIndex = item.indexOf("=");
1399
+ if (-1 === equalIndex) queryStringObject[item] = "";
1400
+ else {
1401
+ const key = item.slice(0, equalIndex);
1402
+ const value = item.slice(equalIndex + 1);
1403
+ try {
1404
+ queryStringObject[key] = decodeURIComponent(value);
1405
+ } catch (e) {
1406
+ queryStringObject[key] = value;
1407
+ }
1408
+ }
1409
+ }
1410
+ return queryStringObject;
1411
+ };
1412
+ const defaultParams = (params, defaults)=>Object.assign({}, defaults, params);
1413
+ const share_namespaceObject = require("@iflyrpa/share");
1544
1414
  const external_form_data_namespaceObject = require("form-data");
1545
1415
  var external_form_data_default = /*#__PURE__*/ __webpack_require__.n(external_form_data_namespaceObject);
1546
- var utils_http = __webpack_require__("./src/utils/http.ts");
1547
1416
  const errnoMap = {
1548
1417
  20040706: "正文图片和封面图片推荐jpg、png格式。",
1549
1418
  20040084: "正文图片和封面图片推荐jpg、png格式。",
@@ -1562,7 +1431,7 @@ var __webpack_exports__ = {};
1562
1431
  const mockAction = async (task, params)=>{
1563
1432
  const { baijiahaoSingleCover, baijiahaoMultCover, baijiahaoCoverType } = params.settingInfo;
1564
1433
  const tmpCachePath = task.getTmpPath();
1565
- const http = new utils_http.e({
1434
+ const http = new Http({
1566
1435
  headers: {
1567
1436
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
1568
1437
  token: params.token
@@ -1596,8 +1465,8 @@ var __webpack_exports__ = {};
1596
1465
  const uploadImages = async (_images)=>{
1597
1466
  const images = _images.filter((url)=>!!url && "" !== url.trim());
1598
1467
  return await Promise.all(images.map(async (url)=>{
1599
- const fileName = (0, share_.getFilenameFromUrl)(url);
1600
- const image = await (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
1468
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
1469
+ const image = await (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
1601
1470
  const formData = new (external_form_data_default())();
1602
1471
  formData.append("org_file_name", fileName);
1603
1472
  formData.append("type", "image");
@@ -1616,9 +1485,9 @@ var __webpack_exports__ = {};
1616
1485
  return res.ret;
1617
1486
  }));
1618
1487
  };
1619
- const originContentImages = (0, utils.E_)(params.content);
1488
+ const originContentImages = extractImgTag(params.content);
1620
1489
  const targetContentImages = await uploadImages(originContentImages);
1621
- const content = (0, utils.I)(params.content, (dom)=>{
1490
+ const content = replaceImgSrc(params.content, (dom)=>{
1622
1491
  if (dom.attribs.src) {
1623
1492
  const idx = originContentImages.findIndex((it)=>it === dom.attribs.src);
1624
1493
  dom.attribs.src = targetContentImages[idx].bos_url;
@@ -1693,7 +1562,7 @@ var __webpack_exports__ = {};
1693
1562
  },
1694
1563
  defaultErrorMsg: isDraft ? "文章同步出现异常,请稍后重试。" : "文章发布出现异常,请稍后重试。"
1695
1564
  });
1696
- return (0, share_.success)(res.ret.article_id, "百家号发布完成。");
1565
+ return (0, share_namespaceObject.success)(res.ret.article_id, "百家号发布完成。");
1697
1566
  };
1698
1567
  const rpaAction = async (task, params)=>{
1699
1568
  const tmpCachePath = task.getTmpPath();
@@ -1731,7 +1600,7 @@ var __webpack_exports__ = {};
1731
1600
  const titleInstance = page.locator("#ueditor #bjhNewsTitle .input-box textarea");
1732
1601
  await titleInstance.click();
1733
1602
  await titleInstance.fill(params.title);
1734
- await (0, utils.qN)(page, params.content);
1603
+ await copyHtmlToClipboard(page, params.content);
1735
1604
  await page.click("#ueditor .edui-editor-iframeholder iframe");
1736
1605
  await page.keyboard.press("Control+A");
1737
1606
  await page.keyboard.press("Control+V");
@@ -1747,8 +1616,8 @@ var __webpack_exports__ = {};
1747
1616
  const images = await Promise.all((isSingleCover ? [
1748
1617
  params.settingInfo.baijiahaoSingleCover
1749
1618
  ] : params.settingInfo.baijiahaoMultCover).map((url)=>{
1750
- const fileName = (0, share_.getFilenameFromUrl)(url);
1751
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
1619
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
1620
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
1752
1621
  }));
1753
1622
  const coverSelector = page.locator(".cheetah-form-item-control .edit-cover-container .cover-list .DraggableTags-tag-drag .coverUploaderView");
1754
1623
  const coverCount = await coverSelector.count();
@@ -1831,7 +1700,7 @@ var __webpack_exports__ = {};
1831
1700
  hasText: "日"
1832
1701
  }).click();
1833
1702
  await page.locator('#select-date_list + * .cheetah-select-item-option', {
1834
- hasText: utils.Tx.format(params.settingInfo.timer, "M月dd日")
1703
+ hasText: TimeFormatter.format(params.settingInfo.timer, "M月dd日")
1835
1704
  }).click();
1836
1705
  await page.waitForTimeout(200);
1837
1706
  await page.locator(".timepublish-wrap-select .select-wrap", {
@@ -1852,7 +1721,7 @@ var __webpack_exports__ = {};
1852
1721
  let fistHourElemH = Number(fistHourElem?.split("点")[0]);
1853
1722
  const lastHourElem = scrollHourInfo.elementItem[scrollHourInfo.elementItem.length - 1];
1854
1723
  let lastHourElemH = Number(lastHourElem?.split("点")[0]);
1855
- let targetTimeH = Number(utils.Tx.format(params.settingInfo.timer, 'h'));
1724
+ let targetTimeH = Number(TimeFormatter.format(params.settingInfo.timer, 'h'));
1856
1725
  await page.mouse.wheel(0, targetTimeH > lastHourElemH ? (targetTimeH - lastHourElemH) * scrollHourInfo.elementHeight : targetTimeH < fistHourElemH ? -(fistHourElemH - targetTimeH) * scrollHourInfo.elementHeight : 0);
1857
1726
  await page.locator("#select-hour_list + * .cheetah-select-item-option ", {
1858
1727
  hasText: targetTimeH + "点"
@@ -1876,7 +1745,7 @@ var __webpack_exports__ = {};
1876
1745
  let fistMinuteElemH = Number(fistMinuteElem?.split("分")[0]);
1877
1746
  const lastMinuteElem = scrollMinuteInfo.elementItem[scrollMinuteInfo.elementItem.length - 1];
1878
1747
  let lastMinuteElemH = Number(lastMinuteElem?.split("分")[0]);
1879
- let targetTimeM = Number(utils.Tx.format(params.settingInfo.timer, 'm'));
1748
+ let targetTimeM = Number(TimeFormatter.format(params.settingInfo.timer, 'm'));
1880
1749
  await page.mouse.wheel(0, targetTimeM > lastMinuteElemH ? (targetTimeM - lastMinuteElemH) * scrollMinuteInfo.elementHeight : targetTimeM < fistMinuteElemH ? -(fistMinuteElemH - targetTimeM) * scrollMinuteInfo.elementHeight : 0);
1881
1750
  await page.locator("#select-minute_list + * .cheetah-select-item-option ", {
1882
1751
  hasText: targetTimeM + "分"
@@ -1890,16 +1759,16 @@ var __webpack_exports__ = {};
1890
1759
  }).locator("button").click();
1891
1760
  });
1892
1761
  await page.close();
1893
- return (0, share_.success)(articleId, articleId ? "发布成功" : message);
1762
+ return (0, share_namespaceObject.success)(articleId, articleId ? "发布成功" : message);
1894
1763
  };
1895
1764
  const baijiahaoPublish = async (task, params)=>{
1896
1765
  if ("rpa" === params.actionType) return rpaAction(task, params);
1897
1766
  if ("mockApi" === params.actionType) return mockAction(task, params);
1898
- return (0, utils.jo)(mockAction, rpaAction)(task, params);
1767
+ return executeAction(mockAction, rpaAction)(task, params);
1899
1768
  };
1900
1769
  const getBaijiahaoActivity = async (_task, params)=>{
1901
1770
  const cookies = params.cookies ?? [];
1902
- const http = new utils_http.e({
1771
+ const http = new Http({
1903
1772
  headers: {
1904
1773
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
1905
1774
  token: params.token
@@ -1917,11 +1786,11 @@ var __webpack_exports__ = {};
1917
1786
  task_type: -1
1918
1787
  }
1919
1788
  });
1920
- return (0, share_.success)(res?.data?.list ?? []);
1789
+ return (0, share_namespaceObject.success)(res?.data?.list ?? []);
1921
1790
  };
1922
1791
  const getToutiaoConfig = async (_task, params)=>{
1923
1792
  const cookies = params.cookies ?? [];
1924
- const http = new utils_http.e({
1793
+ const http = new Http({
1925
1794
  headers: {
1926
1795
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
1927
1796
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -1969,7 +1838,7 @@ var __webpack_exports__ = {};
1969
1838
  getCityDistrict(),
1970
1839
  getUserRights()
1971
1840
  ]);
1972
- return (0, share_.success)({
1841
+ return (0, share_namespaceObject.success)({
1973
1842
  suggestWords,
1974
1843
  cityDistrict,
1975
1844
  userRights
@@ -1977,7 +1846,7 @@ var __webpack_exports__ = {};
1977
1846
  };
1978
1847
  const getBaijiahaoConfig = async (_task, params)=>{
1979
1848
  const cookies = params.cookies ?? [];
1980
- const http = new utils_http.e({
1849
+ const http = new Http({
1981
1850
  headers: {
1982
1851
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
1983
1852
  token: params.token
@@ -2003,10 +1872,10 @@ var __webpack_exports__ = {};
2003
1872
  is_enable: 1,
2004
1873
  publish_num_left: res.data.ability.publish_num_left
2005
1874
  });
2006
- return (0, share_.success)(data, "获取百家号配置项成功!");
1875
+ return (0, share_namespaceObject.success)(data, "获取百家号配置项成功!");
2007
1876
  };
2008
1877
  const searchToutiaoTopicList = async (_task, params)=>{
2009
- const http = new utils_http.e({
1878
+ const http = new Http({
2010
1879
  headers: {
2011
1880
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2012
1881
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2021,14 +1890,14 @@ var __webpack_exports__ = {};
2021
1890
  words: params.searchValue
2022
1891
  }
2023
1892
  });
2024
- if (0 === res.code) return (0, share_.success)(params.searchValue ? res.recents : res.hots);
2025
- return (0, share_.success)([]);
1893
+ if (0 === res.code) return (0, share_namespaceObject.success)(params.searchValue ? res.recents : res.hots);
1894
+ return (0, share_namespaceObject.success)([]);
2026
1895
  } catch (error) {
2027
- return (0, share_.success)([]);
1896
+ return (0, share_namespaceObject.success)([]);
2028
1897
  }
2029
1898
  };
2030
1899
  const searchToutiaoLocation = async (_task, params)=>{
2031
- const http = new utils_http.e({
1900
+ const http = new Http({
2032
1901
  headers: {
2033
1902
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2034
1903
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish",
@@ -2052,7 +1921,7 @@ var __webpack_exports__ = {};
2052
1921
  timestamp: Math.floor(Date.now() / 1000)
2053
1922
  }
2054
1923
  });
2055
- if (200 === res.code) return (0, share_.success)(res.data.poi.map((item)=>({
1924
+ if (200 === res.code) return (0, share_namespaceObject.success)(res.data.poi.map((item)=>({
2056
1925
  position: item.name,
2057
1926
  city: item.city,
2058
1927
  longitude: item.longitude,
@@ -2060,13 +1929,13 @@ var __webpack_exports__ = {};
2060
1929
  type_code: item.type_code,
2061
1930
  poi_id: item.id
2062
1931
  })));
2063
- return (0, share_.success)([]);
1932
+ return (0, share_namespaceObject.success)([]);
2064
1933
  } catch (error) {
2065
- return (0, share_.success)([]);
1934
+ return (0, share_namespaceObject.success)([]);
2066
1935
  }
2067
1936
  };
2068
1937
  const searchToutiaoUserInfo = async (_task, params)=>{
2069
- const http = new utils_http.e({
1938
+ const http = new Http({
2070
1939
  headers: {
2071
1940
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2072
1941
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2082,19 +1951,19 @@ var __webpack_exports__ = {};
2082
1951
  app_name: "toutiao_mp"
2083
1952
  }
2084
1953
  });
2085
- if (0 === res.err_no) return (0, share_.success)(res.data.suggest.map((item)=>({
1954
+ if (0 === res.err_no) return (0, share_namespaceObject.success)(res.data.suggest.map((item)=>({
2086
1955
  user_id: item.user.info.user_id,
2087
1956
  name: item.user.info.name,
2088
1957
  avatar_url: item.user.info.avatar_url,
2089
1958
  followers_count: item.user.relation_count.followers_count
2090
1959
  })), '搜索成功');
2091
- return (0, share_.success)([]);
1960
+ return (0, share_namespaceObject.success)([]);
2092
1961
  } catch (error) {
2093
- return (0, share_.success)([]);
1962
+ return (0, share_namespaceObject.success)([]);
2094
1963
  }
2095
1964
  };
2096
1965
  const searchXiaohongshuLocation = async (_task, params)=>{
2097
- const http = new utils_http.e({
1966
+ const http = new Http({
2098
1967
  headers: {
2099
1968
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2100
1969
  referer: "https://creator.xiaohongshu.com",
@@ -2115,13 +1984,13 @@ var __webpack_exports__ = {};
2115
1984
  type: 3
2116
1985
  }
2117
1986
  });
2118
- return (0, share_.success)(0 === result.code ? result.data.poi_list : []);
1987
+ return (0, share_namespaceObject.success)(0 === result.code ? result.data.poi_list : []);
2119
1988
  } catch (error) {
2120
- return (0, share_.success)([]);
1989
+ return (0, share_namespaceObject.success)([]);
2121
1990
  }
2122
1991
  };
2123
1992
  const searchXiaohongshuTopicList = async (_task, params)=>{
2124
- const http = new utils_http.e({
1993
+ const http = new Http({
2125
1994
  headers: {
2126
1995
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2127
1996
  referer: "https://creator.xiaohongshu.com",
@@ -2145,9 +2014,9 @@ var __webpack_exports__ = {};
2145
2014
  },
2146
2015
  defaultErrorMsg: "话题搜索异常,请稍后重试。"
2147
2016
  });
2148
- return (0, share_.success)(0 === result.code ? result.data.topic_info_dtos : [], '获取话题成功');
2017
+ return (0, share_namespaceObject.success)(0 === result.code ? result.data.topic_info_dtos : [], '获取话题成功');
2149
2018
  } catch (error) {
2150
- return (0, share_.success)([]);
2019
+ return (0, share_namespaceObject.success)([]);
2151
2020
  }
2152
2021
  };
2153
2022
  const GenAB = __webpack_require__("./src/utils/ttABEncrypt.js");
@@ -2183,7 +2052,7 @@ var __webpack_exports__ = {};
2183
2052
  const mock_mockAction = async (task, params)=>{
2184
2053
  const { toutiaoSingleCover, toutiaoMultCover, toutiaoCoverType, toutiaoOriginal, toutiaoExclusive, toutiaoClaim } = params.settingInfo;
2185
2054
  const tmpCachePath = task.getTmpPath();
2186
- const http = new utils_http.e({
2055
+ const http = new Http({
2187
2056
  headers: {
2188
2057
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2189
2058
  origin: "https://mp.toutiao.com",
@@ -2207,8 +2076,8 @@ var __webpack_exports__ = {};
2207
2076
  defaultErrorMsg: `头条号登录状态失效,请重新绑定账号后${"draft" === params.saveType ? "同步" : "发布"}。`
2208
2077
  });
2209
2078
  const uploadImages = async (images)=>await Promise.all(images.map(async (url)=>{
2210
- const fileName = (0, share_.getFilenameFromUrl)(url);
2211
- const image = await (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
2079
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
2080
+ const image = await (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
2212
2081
  const formData = new (external_form_data_default())();
2213
2082
  formData.append("image", external_node_fs_default().createReadStream(image));
2214
2083
  const response = await http.api({
@@ -2219,9 +2088,9 @@ var __webpack_exports__ = {};
2219
2088
  });
2220
2089
  return response.data;
2221
2090
  }));
2222
- const originContentImages = (0, utils.E_)(params.content);
2091
+ const originContentImages = extractImgTag(params.content);
2223
2092
  const targetContentImages = await uploadImages(originContentImages);
2224
- const content = (0, utils.I)(params.content, (dom)=>{
2093
+ const content = replaceImgSrc(params.content, (dom)=>{
2225
2094
  if (dom.attribs.src) {
2226
2095
  const idx = originContentImages.findIndex((it)=>it === dom.attribs.src);
2227
2096
  dom.attribs.src = targetContentImages[idx].image_url;
@@ -2292,7 +2161,7 @@ var __webpack_exports__ = {};
2292
2161
  is_refute_rumor: 0,
2293
2162
  save: "publish" === params.saveType ? 1 : 0,
2294
2163
  timer_status: params.settingInfo.timer ? 1 : 0,
2295
- timer_time: params.settingInfo.timer ? utils.Tx.format(params.settingInfo.timer) : "",
2164
+ timer_time: params.settingInfo.timer ? TimeFormatter.format(params.settingInfo.timer) : "",
2296
2165
  title: params.title,
2297
2166
  content: content + topicContent,
2298
2167
  extra: JSON.stringify(extraData),
@@ -2347,7 +2216,7 @@ var __webpack_exports__ = {};
2347
2216
  defaultErrorMsg: "draft" === params.saveType ? "文章同步异常,请稍后重试。" : "文章发布异常,请稍后重试。"
2348
2217
  };
2349
2218
  const publishResult = await http.api(publishOption);
2350
- return (0, share_.success)(publishResult.data.pgc_id);
2219
+ return (0, share_namespaceObject.success)(publishResult.data.pgc_id);
2351
2220
  };
2352
2221
  const rpa_GenAB = __webpack_require__("./src/utils/ttABEncrypt.js");
2353
2222
  const rpa_rpaAction = async (task, params)=>{
@@ -2411,14 +2280,14 @@ var __webpack_exports__ = {};
2411
2280
  });
2412
2281
  } else await route.continue();
2413
2282
  });
2414
- (0, utils.f8)(page, '.byte-modal.publish-exclusive-modal .title', "激励", '.byte-modal-close-icon', {
2283
+ PopupListener(page, '.byte-modal.publish-exclusive-modal .title', "激励", '.byte-modal-close-icon', {
2415
2284
  checkInterval: 1000,
2416
2285
  stopAfterClick: false
2417
2286
  });
2418
2287
  const titleInstance = page.locator(".publish-editor-title-wrapper .publish-editor-title textarea");
2419
2288
  await titleInstance.click();
2420
2289
  await titleInstance.fill(params.title);
2421
- await (0, utils.qN)(page, params.content);
2290
+ await copyHtmlToClipboard(page, params.content);
2422
2291
  await page.click(".publish-editor .syl-editor-wrap .ProseMirror");
2423
2292
  await page.keyboard.press("Control+V");
2424
2293
  const coverTypeValue = COVER_TYPE[params.settingInfo.toutiaoCoverType];
@@ -2433,8 +2302,8 @@ var __webpack_exports__ = {};
2433
2302
  ];
2434
2303
  else if ("multiple" === params.settingInfo.toutiaoCoverType) coverUrls = params.settingInfo.toutiaoMultCover;
2435
2304
  const images = await Promise.all(coverUrls.map((url)=>{
2436
- const fileName = (0, share_.getFilenameFromUrl)(url);
2437
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
2305
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
2306
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
2438
2307
  }));
2439
2308
  const coverUploadEle = coverContainer.locator(".article-cover .article-cover-images").locator(".article-cover-img-wrap, .article-cover-add");
2440
2309
  const coverUploadCount = await coverUploadEle.count();
@@ -2465,7 +2334,7 @@ var __webpack_exports__ = {};
2465
2334
  state: "visible"
2466
2335
  });
2467
2336
  await confirmBtn.click();
2468
- await page.waitForTimeout((0, utils.i9)(500, 1000));
2337
+ await page.waitForTimeout(getRandomInRange(500, 1000));
2469
2338
  }
2470
2339
  if (params.settingInfo.toutiaoLocation) {
2471
2340
  const locationContainer = page.locator(".form-container .edit-cell").filter({
@@ -2534,17 +2403,17 @@ var __webpack_exports__ = {};
2534
2403
  });
2535
2404
  await page.locator(".byte-modal-content .day-select .byte-select-view-value").click();
2536
2405
  await page.locator('li.byte-select-option', {
2537
- hasText: utils.Tx.format(params.settingInfo.timer, "MM月dd日")
2406
+ hasText: TimeFormatter.format(params.settingInfo.timer, "MM月dd日")
2538
2407
  }).click();
2539
2408
  await page.waitForTimeout(200);
2540
2409
  await page.locator(".byte-modal-content .hour-select .byte-select-view-value").click();
2541
2410
  await page.locator('li.byte-select-option', {
2542
- hasText: utils.Tx.format(params.settingInfo.timer, "h")
2411
+ hasText: TimeFormatter.format(params.settingInfo.timer, "h")
2543
2412
  }).click();
2544
2413
  await page.waitForTimeout(200);
2545
2414
  await page.locator(".byte-modal-content .minute-select .byte-select-view-value").click();
2546
2415
  await page.locator('li.byte-select-option', {
2547
- hasText: utils.Tx.format(params.settingInfo.timer, "m")
2416
+ hasText: TimeFormatter.format(params.settingInfo.timer, "m")
2548
2417
  }).click();
2549
2418
  await page.waitForTimeout(200);
2550
2419
  await page.locator(".byte-modal-footer button").filter({
@@ -2571,7 +2440,7 @@ var __webpack_exports__ = {};
2571
2440
  }).click();
2572
2441
  }
2573
2442
  await page.close();
2574
- return (0, share_.success)(articleId, "publish" === params.saveType ? "发布成功" : "保存草稿成功");
2443
+ return (0, share_namespaceObject.success)(articleId, "publish" === params.saveType ? "发布成功" : "保存草稿成功");
2575
2444
  };
2576
2445
  const COVER_TYPE = {
2577
2446
  no: 1,
@@ -2582,10 +2451,10 @@ var __webpack_exports__ = {};
2582
2451
  const toutiaoPublish = async (task, params)=>{
2583
2452
  if ("rpa" === params.actionType) return rpa_rpaAction(task, params);
2584
2453
  if ("mockApi" === params.actionType) return mock_mockAction(task, params);
2585
- return (0, utils.jo)(mock_mockAction, rpa_rpaAction)(task, params);
2454
+ return executeAction(mock_mockAction, rpa_rpaAction)(task, params);
2586
2455
  };
2587
2456
  const TTFansExport = async (_task, params)=>{
2588
- const http = new utils_http.e({
2457
+ const http = new Http({
2589
2458
  headers: {
2590
2459
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2591
2460
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2599,19 +2468,19 @@ var __webpack_exports__ = {};
2599
2468
  app_id: 1231
2600
2469
  }
2601
2470
  });
2602
- return (0, share_.success)(0 === res.code ? {
2471
+ return (0, share_namespaceObject.success)(0 === res.code ? {
2603
2472
  fans_count: res.total_fans_count
2604
2473
  } : {
2605
2474
  fans_count: null
2606
2475
  }, "获取粉丝数成功!");
2607
2476
  } catch (error) {
2608
- return (0, share_.success)({
2477
+ return (0, share_namespaceObject.success)({
2609
2478
  fans_count: null
2610
2479
  }, "获取粉丝数失败,请检查登陆有效性!");
2611
2480
  }
2612
2481
  };
2613
2482
  const XhsFansExport = async (_task, params)=>{
2614
- const http = new utils_http.e({
2483
+ const http = new Http({
2615
2484
  headers: {
2616
2485
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2617
2486
  referer: "https://creator.xiaohongshu.com/new/home?source=official"
@@ -2622,19 +2491,19 @@ var __webpack_exports__ = {};
2622
2491
  method: "get",
2623
2492
  url: "https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info"
2624
2493
  });
2625
- return (0, share_.success)(0 === res.result ? {
2494
+ return (0, share_namespaceObject.success)(0 === res.result ? {
2626
2495
  fans_count: res.data.fans_count
2627
2496
  } : {
2628
2497
  fans_count: null
2629
2498
  }, "获取粉丝数成功!");
2630
2499
  } catch (error) {
2631
- return (0, share_.success)({
2500
+ return (0, share_namespaceObject.success)({
2632
2501
  fans_count: null
2633
2502
  }, "获取粉丝数失败,请检查登陆有效性!");
2634
2503
  }
2635
2504
  };
2636
2505
  const WxFansExport = async (_task, params)=>{
2637
- const http = new utils_http.e({
2506
+ const http = new Http({
2638
2507
  headers: {
2639
2508
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
2640
2509
  }
@@ -2650,19 +2519,19 @@ var __webpack_exports__ = {};
2650
2519
  }
2651
2520
  });
2652
2521
  const match = htmlStr.match(/总用户数[\s\S]*?<mp-thousandth>(\d+)<\/mp-thousandth>/);
2653
- return (0, share_.success)(match ? {
2522
+ return (0, share_namespaceObject.success)(match ? {
2654
2523
  fans_count: Number(match[1])
2655
2524
  } : {
2656
2525
  fans_count: null
2657
2526
  }, "获取粉丝数成功!");
2658
2527
  } catch (error) {
2659
- return (0, share_.success)({
2528
+ return (0, share_namespaceObject.success)({
2660
2529
  fans_count: null
2661
2530
  }, "获取粉丝数失败,请检查登陆有效性!");
2662
2531
  }
2663
2532
  };
2664
2533
  const BjhFansExport = async (_task, params)=>{
2665
- const http = new utils_http.e({
2534
+ const http = new Http({
2666
2535
  headers: {
2667
2536
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2668
2537
  referer: "https://baijiahao.baidu.com/builder/rc/home"
@@ -2673,19 +2542,19 @@ var __webpack_exports__ = {};
2673
2542
  method: "get",
2674
2543
  url: "https://baijiahao.baidu.com/cms-ui/rights/growth/get_info"
2675
2544
  });
2676
- return (0, share_.success)(0 === res.errno ? {
2545
+ return (0, share_namespaceObject.success)(0 === res.errno ? {
2677
2546
  fans_count: res.data.total_fans
2678
2547
  } : {
2679
2548
  fans_count: null
2680
2549
  }, "获取粉丝数成功!");
2681
2550
  } catch (error) {
2682
- return (0, share_.success)({
2551
+ return (0, share_namespaceObject.success)({
2683
2552
  fans_count: null
2684
2553
  }, "获取粉丝数失败,请检查登陆有效性!");
2685
2554
  }
2686
2555
  };
2687
2556
  const TTSessionCheck = async (_task, params)=>{
2688
- const http = new utils_http.e({
2557
+ const http = new Http({
2689
2558
  headers: {
2690
2559
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2691
2560
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2697,19 +2566,19 @@ var __webpack_exports__ = {};
2697
2566
  url: "https://mp.toutiao.com/mp/agw/creator_center/user_info",
2698
2567
  defaultErrorMsg: `头条号登录状态失效。`
2699
2568
  });
2700
- return (0, share_.success)(0 === res.code ? {
2569
+ return (0, share_namespaceObject.success)(0 === res.code ? {
2701
2570
  isValidSession: true
2702
2571
  } : {
2703
2572
  isValidSession: false
2704
2573
  }, "头条账号有效性检测完成!");
2705
2574
  } catch (error) {
2706
- return (0, share_.success)({
2575
+ return (0, share_namespaceObject.success)({
2707
2576
  isValidSession: false
2708
2577
  }, "头条账号有效性检测失败!");
2709
2578
  }
2710
2579
  };
2711
2580
  const WxSessionCheck = async (_task, params)=>{
2712
- const http = new utils_http.e({
2581
+ const http = new Http({
2713
2582
  headers: {
2714
2583
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
2715
2584
  }
@@ -2736,19 +2605,19 @@ var __webpack_exports__ = {};
2736
2605
  ajax: 1
2737
2606
  }
2738
2607
  });
2739
- return (0, share_.success)(0 === res.base_resp.ret ? {
2608
+ return (0, share_namespaceObject.success)(0 === res.base_resp.ret ? {
2740
2609
  isValidSession: true
2741
2610
  } : {
2742
2611
  isValidSession: false
2743
2612
  }, "微信账号有效性检测完成!");
2744
2613
  } catch (error) {
2745
- return (0, share_.success)({
2614
+ return (0, share_namespaceObject.success)({
2746
2615
  isValidSession: false
2747
2616
  }, "微信账号有效性检测失败!");
2748
2617
  }
2749
2618
  };
2750
2619
  const XhsSessionCheck = async (_task, params)=>{
2751
- const http = new utils_http.e({
2620
+ const http = new Http({
2752
2621
  headers: {
2753
2622
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2754
2623
  referer: "https://creator.xiaohongshu.com/new/home?source=official"
@@ -2759,19 +2628,19 @@ var __webpack_exports__ = {};
2759
2628
  method: "get",
2760
2629
  url: "https://creator.xiaohongshu.com/api/galaxy/user/info"
2761
2630
  });
2762
- return (0, share_.success)(0 === res.result ? {
2631
+ return (0, share_namespaceObject.success)(0 === res.result ? {
2763
2632
  isValidSession: true
2764
2633
  } : {
2765
2634
  isValidSession: false
2766
2635
  }, "小红书账号有效性检测完成!");
2767
2636
  } catch (error) {
2768
- return (0, share_.success)({
2637
+ return (0, share_namespaceObject.success)({
2769
2638
  isValidSession: false
2770
2639
  }, "小红书账号有效性检测完成!");
2771
2640
  }
2772
2641
  };
2773
2642
  const BjhSessionCheck = async (_task, params)=>{
2774
- const http = new utils_http.e({
2643
+ const http = new Http({
2775
2644
  headers: {
2776
2645
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2777
2646
  referer: "https://baijiahao.baidu.com/builder/rc/home"
@@ -2783,30 +2652,34 @@ var __webpack_exports__ = {};
2783
2652
  url: "https://baijiahao.baidu.com/pcui/home/index",
2784
2653
  defaultErrorMsg: `百家号登录状态失效。`
2785
2654
  });
2786
- return (0, share_.success)(0 === res.errno ? {
2655
+ return (0, share_namespaceObject.success)(0 === res.errno ? {
2787
2656
  isValidSession: true
2788
2657
  } : {
2789
2658
  isValidSession: false
2790
2659
  }, "百家号账号有效性检测完成!");
2791
2660
  } catch (error) {
2792
- return (0, share_.success)({
2661
+ return (0, share_namespaceObject.success)({
2793
2662
  isValidSession: false
2794
2663
  }, "百家号账号有效性检测失败!");
2795
2664
  }
2796
2665
  };
2797
- var types = __webpack_require__("./src/actions/searchAccountInfo/types.ts");
2666
+ const types_errorResponse = (message, code = 500)=>({
2667
+ code,
2668
+ message,
2669
+ data: null
2670
+ });
2798
2671
  async function getBaijiahaoData(params) {
2799
2672
  try {
2800
2673
  const { token } = params;
2801
- if (!token) return (0, types.V)("缺少token", 200);
2802
- const http = new utils_http.e({
2674
+ if (!token) return types_errorResponse("缺少token", 200);
2675
+ const http = new Http({
2803
2676
  headers: {
2804
2677
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2805
2678
  token: String(token),
2806
2679
  Referer: "https://baijiahao.baidu.com/builder/rc/home"
2807
2680
  }
2808
2681
  });
2809
- const yesterday = utils.Tx.format(new Date().setDate(new Date().getDate() - 1), "yyyyMMdd");
2682
+ const yesterday = TimeFormatter.format(new Date().setDate(new Date().getDate() - 1), "yyyyMMdd");
2810
2683
  const [fansData, readData, incomeData, yesterdayData] = await Promise.all([
2811
2684
  http.api({
2812
2685
  method: "get",
@@ -2834,24 +2707,24 @@ var __webpack_exports__ = {};
2834
2707
  ]);
2835
2708
  const bjhData = {
2836
2709
  fansNum: fansData.data.coreData.fansCount,
2837
- fansNumYesterday: yesterdayData.data.data.fans_increase,
2710
+ fansNumYesterday: -1 == yesterdayData.data.data.fans_increase ? null : yesterdayData.data.data.fans_increase,
2838
2711
  readNum: readData.data.total.view_count,
2839
2712
  incomeNum: incomeData.data.all_income.total_income,
2840
- incomeNumYesterday: incomeData.data.all_income.yesterday_income,
2841
- recommendNumYesterday: yesterdayData.data.data.recommend_count,
2842
- readNumYesterday: yesterdayData.data.data.view_count,
2843
- likeNumYesterday: yesterdayData.data.data.likes_count,
2844
- commentNumYesterday: yesterdayData.data.data.comment_count
2713
+ incomeNumYesterday: -1 == incomeData.data.all_income.yesterday_income ? null : incomeData.data.all_income.yesterday_income,
2714
+ recommendNumYesterday: -1 == yesterdayData.data.data.recommend_count ? null : yesterdayData.data.data.recommend_count,
2715
+ readNumYesterday: -1 == yesterdayData.data.data.view_count ? null : yesterdayData.data.data.view_count,
2716
+ likeNumYesterday: -1 == yesterdayData.data.data.likes_count ? null : yesterdayData.data.data.likes_count,
2717
+ commentNumYesterday: -1 == yesterdayData.data.data.comment_count ? null : yesterdayData.data.data.comment_count
2845
2718
  };
2846
- return (0, share_.success)(bjhData, "百家号粉丝数据获取成功!");
2719
+ return (0, share_namespaceObject.success)(bjhData, "百家号平台数据获取成功!");
2847
2720
  } catch (error) {
2848
- return (0, types.V)(error instanceof Error ? error.message : "百家号数据获取失败");
2721
+ return types_errorResponse(error instanceof Error ? error.message : "百家号平台数据获取失败");
2849
2722
  }
2850
2723
  }
2851
2724
  async function getToutiaoData(params) {
2852
2725
  const { cookies } = params;
2853
2726
  try {
2854
- const http = new utils_http.e({
2727
+ const http = new Http({
2855
2728
  headers: {
2856
2729
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2857
2730
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2892,12 +2765,71 @@ var __webpack_exports__ = {};
2892
2765
  likeNumYesterday: contentDataYesterday.author_stat.interaction_data.digg_count,
2893
2766
  commentNumYesterday: contentDataYesterday.author_stat.interaction_data.comment_count
2894
2767
  };
2895
- return (0, share_.success)(ttData, "头条号粉丝数据获取成功!");
2768
+ return (0, share_namespaceObject.success)(ttData, "头条号粉丝数据获取成功!");
2896
2769
  } catch (error) {
2897
- return (0, types.V)(error instanceof Error ? error.message : "头条号数据获取失败");
2770
+ return types_errorResponse(error instanceof Error ? error.message : "头条号数据获取失败");
2771
+ }
2772
+ }
2773
+ async function getWeixinData(params) {
2774
+ const { token } = params;
2775
+ if (!token) return {
2776
+ code: 200,
2777
+ message: "缺少token",
2778
+ data: null
2779
+ };
2780
+ try {
2781
+ const { token } = params;
2782
+ if (!token) return types_errorResponse("缺少token", 200);
2783
+ const http = new Http({
2784
+ headers: {
2785
+ cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
2786
+ }
2787
+ });
2788
+ const userInfo = {
2789
+ originalCount: 0,
2790
+ totalUsers: 0,
2791
+ userIncrease: 0,
2792
+ yesterday: {
2793
+ read: 0,
2794
+ share: 0,
2795
+ subscribe: 0
2796
+ }
2797
+ };
2798
+ const userInfoHtml = await http.api({
2799
+ method: "get",
2800
+ url: "https://mp.weixin.qq.com/cgi-bin/home",
2801
+ params: {
2802
+ t: "home/index",
2803
+ token,
2804
+ lang: "zh_CN"
2805
+ }
2806
+ });
2807
+ const originalMatch = userInfoHtml.trim().match(/原创内容[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2808
+ if (originalMatch) userInfo.originalCount = parseInt(originalMatch[1].replace(/,/g, ''), 10);
2809
+ const totalUsersMatch = userInfoHtml.match(/总用户数[\s\S]*?<div[^>]*class=["']weui-desktop-user_sum["'][^>]*>[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2810
+ if (totalUsersMatch) userInfo.totalUsers = parseInt(totalUsersMatch[1].replace(/,/g, ''), 10);
2811
+ const increaseMatch = userInfoHtml.match(/weui-desktop-user_increase_num[^>]*>\s*([+-]?)\s*<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2812
+ if (increaseMatch) {
2813
+ const sign = '-' === increaseMatch[1] ? -1 : 1;
2814
+ userInfo.userIncrease = sign * parseInt(increaseMatch[2].replace(/,/g, ''), 10);
2815
+ }
2816
+ const readMatch = userInfoHtml.match(/昨日阅读[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2817
+ if (readMatch) userInfo.yesterday.read = parseInt(readMatch[1].replace(/,/g, ''), 10);
2818
+ const shareMatch = userInfoHtml.match(/昨日分享[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2819
+ if (shareMatch) userInfo.yesterday.share = parseInt(shareMatch[1].replace(/,/g, ''), 10);
2820
+ const subscribeMatch = userInfoHtml.match(/昨日新增关注[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2821
+ if (subscribeMatch) userInfo.yesterday.subscribe = parseInt(subscribeMatch[1].replace(/,/g, ''), 10);
2822
+ const wxData = {
2823
+ fansNum: userInfo.totalUsers,
2824
+ fansNumYesterday: userInfo.yesterday.subscribe,
2825
+ readNumYesterday: userInfo.yesterday.read,
2826
+ shareNumYesterday: userInfo.yesterday.share
2827
+ };
2828
+ return (0, share_namespaceObject.success)(wxData, "微信平台数据获取成功!");
2829
+ } catch (error) {
2830
+ return types_errorResponse(error instanceof Error ? error.message : "微信平台数据获取失败");
2898
2831
  }
2899
2832
  }
2900
- var getWxInfo = __webpack_require__("./src/actions/searchAccountInfo/getWxInfo.ts");
2901
2833
  const external_node_buffer_namespaceObject = require("node:buffer");
2902
2834
  const external_node_crypto_namespaceObject = require("node:crypto");
2903
2835
  var external_node_crypto_default = /*#__PURE__*/ __webpack_require__.n(external_node_crypto_namespaceObject);
@@ -2954,8 +2886,8 @@ var __webpack_exports__ = {};
2954
2886
  async function getXiaohongshuData(params) {
2955
2887
  try {
2956
2888
  const a1Cookie = params.cookies.find((it)=>"a1" === it.name)?.value;
2957
- if (!a1Cookie) return (0, types.V)("账号数据异常,请重新绑定账号后重试。", 200);
2958
- const http = new utils_http.e({
2889
+ if (!a1Cookie) return types_errorResponse("账号数据异常,请重新绑定账号后重试。", 200);
2890
+ const http = new Http({
2959
2891
  headers: {
2960
2892
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2961
2893
  referer: "https://creator.xiaohongshu.com",
@@ -2991,9 +2923,9 @@ var __webpack_exports__ = {};
2991
2923
  fansNumLastWeek: sevenData.data.seven.rise_fans_count,
2992
2924
  fansNumYesterday: sevenData.data.seven.rise_fans_list[0].count
2993
2925
  };
2994
- return (0, share_.success)(xhsData, "小红书粉丝数据获取成功!");
2926
+ return (0, share_namespaceObject.success)(xhsData, "小红书平台数据获取成功!");
2995
2927
  } catch (error) {
2996
- return (0, types.V)(error instanceof Error ? error.message : "小红书数据获取失败");
2928
+ return types_errorResponse(error instanceof Error ? error.message : "小红书平台数据获取失败");
2997
2929
  }
2998
2930
  }
2999
2931
  const SearchAccountInfo = async (_task, params)=>{
@@ -3004,14 +2936,14 @@ var __webpack_exports__ = {};
3004
2936
  case "xiaohongshu":
3005
2937
  return getXiaohongshuData(params);
3006
2938
  case "weixin":
3007
- return (0, getWxInfo.n)(params);
2939
+ return getWeixinData(params);
3008
2940
  case "baijiahao":
3009
2941
  return getBaijiahaoData(params);
3010
2942
  default:
3011
- return (0, share_.success)(null, "暂不支持该平台");
2943
+ return (0, share_namespaceObject.success)(null, "暂不支持该平台");
3012
2944
  }
3013
2945
  };
3014
- const errorResponse = (message, code = 500)=>({
2946
+ const searchPublishInfo_types_errorResponse = (message, code = 500)=>({
3015
2947
  code,
3016
2948
  message,
3017
2949
  data: null
@@ -3019,7 +2951,7 @@ var __webpack_exports__ = {};
3019
2951
  async function handleToutiaoData(params) {
3020
2952
  try {
3021
2953
  const { cookies, pageNum = 1, pageSize = 10, showOriginalData = false, onlySuccess = false } = params;
3022
- const http = new utils_http.e({
2954
+ const http = new Http({
3023
2955
  headers: {
3024
2956
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";")
3025
2957
  }
@@ -3066,16 +2998,18 @@ var __webpack_exports__ = {};
3066
2998
  } : {}
3067
2999
  }));
3068
3000
  const api_base_info_json = JSON.parse(articleInfo.api_base_info.app_extra_params);
3069
- return (0, share_.success)({
3001
+ return (0, share_namespaceObject.success)({
3070
3002
  articleCell,
3071
- pagination: {
3072
- total: api_base_info_json.total_count,
3073
- pageNum,
3074
- pageSize
3075
- }
3076
- }, "头条号文章获取成功");
3003
+ ...onlySuccess ? {
3004
+ pagination: {
3005
+ total: api_base_info_json.total_count || -1,
3006
+ pageNum,
3007
+ pageSize
3008
+ }
3009
+ } : null
3010
+ }, "头条号文章文章获取成功");
3077
3011
  } catch (error) {
3078
- return errorResponse(error instanceof Error ? error.message : "头条号数据获取失败");
3012
+ return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "头条号文章数据获取失败");
3079
3013
  }
3080
3014
  }
3081
3015
  async function handleWeixinData(params) {
@@ -3086,21 +3020,57 @@ var __webpack_exports__ = {};
3086
3020
  message: "缺少token",
3087
3021
  data: null
3088
3022
  };
3089
- const http = new utils_http.e({
3023
+ const http = new Http({
3090
3024
  headers: {
3091
3025
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";")
3092
3026
  }
3093
3027
  });
3094
3028
  const ParsePublishPage = (body)=>{
3095
- const decodeHtml = (str)=>str.replace(/&quot;/g, '"').replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&#39;/g, "'").replace(/&nbsp;/g, ' ');
3096
- const match = body.match(/publish_page\s*=\s*(\{[\s\S]*?\})\s*;/);
3029
+ const match = body.match(/publish_page\s*=\s*({[\s\S]*?});/);
3097
3030
  if (!match) throw new Error('无法提取 publish_page 字段');
3098
- const rawPublishPageStr = match[1];
3099
- const parsedData = JSON.parse(rawPublishPageStr);
3031
+ let parsedData = JSON.parse(match[1]);
3032
+ const decodeEntities = function(str, decode = false) {
3033
+ const encodeMap = [
3034
+ "&",
3035
+ "&amp;",
3036
+ "<",
3037
+ "&lt;",
3038
+ ">",
3039
+ "&gt;",
3040
+ " ",
3041
+ "&nbsp;",
3042
+ '"',
3043
+ "&quot;",
3044
+ "'",
3045
+ "&#39;"
3046
+ ];
3047
+ const decodeMap = [
3048
+ "&#39;",
3049
+ "'",
3050
+ "&quot;",
3051
+ '"',
3052
+ "&nbsp;",
3053
+ " ",
3054
+ "&gt;",
3055
+ ">",
3056
+ "&lt;",
3057
+ "<",
3058
+ "&amp;",
3059
+ "&",
3060
+ "&#60;",
3061
+ "<",
3062
+ "&#62;",
3063
+ ">"
3064
+ ];
3065
+ const map = decode ? decodeMap : encodeMap;
3066
+ let result = str;
3067
+ for(let i = 0; i < map.length; i += 2)result = result.replace(new RegExp(map[i], "g"), map[i + 1]);
3068
+ return result;
3069
+ };
3100
3070
  const finalData = {
3101
3071
  ...parsedData,
3102
3072
  publish_list: parsedData.publish_list.map((item)=>{
3103
- const decoded = decodeHtml(item.publish_info);
3073
+ const decoded = decodeEntities(item.publish_info, true);
3104
3074
  const parsedInfo = JSON.parse(decoded);
3105
3075
  return {
3106
3076
  publish_type: item.publish_type,
@@ -3135,7 +3105,7 @@ var __webpack_exports__ = {};
3135
3105
  originalData: item
3136
3106
  } : {}
3137
3107
  }));
3138
- return (0, share_.success)({
3108
+ return (0, share_namespaceObject.success)({
3139
3109
  articleCell,
3140
3110
  ...onlySuccess ? {
3141
3111
  pagination: {
@@ -3144,9 +3114,9 @@ var __webpack_exports__ = {};
3144
3114
  pageSize
3145
3115
  }
3146
3116
  } : null
3147
- }, "微信文章获取成功");
3117
+ }, "微信文章文章获取成功");
3148
3118
  } catch (error) {
3149
- return errorResponse(error instanceof Error ? error.message : "微信数据获取失败");
3119
+ return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "微信文章数据获取失败");
3150
3120
  }
3151
3121
  }
3152
3122
  async function handleBaijiahaoData(params) {
@@ -3157,7 +3127,7 @@ var __webpack_exports__ = {};
3157
3127
  message: "缺少token",
3158
3128
  data: null
3159
3129
  };
3160
- const http = new utils_http.e({
3130
+ const http = new Http({
3161
3131
  headers: {
3162
3132
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
3163
3133
  token: token
@@ -3210,7 +3180,7 @@ var __webpack_exports__ = {};
3210
3180
  originalData: item
3211
3181
  } : {}
3212
3182
  }));
3213
- return (0, share_.success)({
3183
+ return (0, share_namespaceObject.success)({
3214
3184
  articleCell,
3215
3185
  ...onlySuccess ? {
3216
3186
  pagination: {
@@ -3219,9 +3189,9 @@ var __webpack_exports__ = {};
3219
3189
  pageSize
3220
3190
  }
3221
3191
  } : null
3222
- }, "百家号文章获取成功");
3192
+ }, "百家号文章数据获取成功");
3223
3193
  } catch (error) {
3224
- return errorResponse(error instanceof Error ? error.message : "百家号数据获取失败");
3194
+ return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "百家号文章数据获取失败");
3225
3195
  }
3226
3196
  }
3227
3197
  async function handleXiaohongshuData(params) {
@@ -3239,7 +3209,7 @@ var __webpack_exports__ = {};
3239
3209
  message: "小红书pageSize不可修改",
3240
3210
  data: null
3241
3211
  };
3242
- const http = new utils_http.e({
3212
+ const http = new Http({
3243
3213
  headers: {
3244
3214
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
3245
3215
  referer: "https://creator.xiaohongshu.com",
@@ -3292,18 +3262,18 @@ var __webpack_exports__ = {};
3292
3262
  originalData: item
3293
3263
  } : {}
3294
3264
  }));
3295
- return (0, share_.success)({
3265
+ return (0, share_namespaceObject.success)({
3296
3266
  articleCell,
3297
3267
  ...onlySuccess ? {
3298
3268
  pagination: {
3299
- total: articleInfo.data.tags[0]?.notes_count || -1,
3269
+ nextPage: hasNextpage,
3300
3270
  pageNum,
3301
3271
  pageSize
3302
3272
  }
3303
3273
  } : null
3304
- }, "小红书文章获取成功");
3274
+ }, "小红书文章数据获取成功");
3305
3275
  } catch (error) {
3306
- return errorResponse(error instanceof Error ? error.message : "小红书数据获取失败");
3276
+ return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "小红书文章数据获取失败");
3307
3277
  }
3308
3278
  }
3309
3279
  const FetchArticles = async (_task, params)=>{
@@ -3318,11 +3288,11 @@ var __webpack_exports__ = {};
3318
3288
  case "xiaohongshu":
3319
3289
  return handleXiaohongshuData(params);
3320
3290
  default:
3321
- return (0, share_.success)(null, "暂不支持该平台");
3291
+ return (0, share_namespaceObject.success)(null, "暂不支持该平台");
3322
3292
  }
3323
3293
  };
3324
3294
  const getWeixinConfig = async (_task, params)=>{
3325
- const http = new utils_http.e({
3295
+ const http = new Http({
3326
3296
  headers: {
3327
3297
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
3328
3298
  }
@@ -3343,11 +3313,11 @@ var __webpack_exports__ = {};
3343
3313
  const filtered = {
3344
3314
  publishQuota: 0 === res.base_resp.ret ? res.quota_detail_list.filter((item)=>"kQuotaTypeMassSendNormal" === item.quota_type).map((item)=>item.quota_item_list) : []
3345
3315
  };
3346
- return (0, share_.success)(filtered, 0 === res.base_resp.ret ? "微信配置信息获取成功!" : "微信配置信息获取失败!");
3316
+ return (0, share_namespaceObject.success)(filtered, 0 === res.base_resp.ret ? "微信配置信息获取成功!" : "微信配置信息获取失败!");
3347
3317
  };
3348
3318
  const weitoutiaoPublish_mock_mockAction = async (task, params)=>{
3349
3319
  const tmpCachePath = task.getTmpPath();
3350
- const http = new utils_http.e({
3320
+ const http = new Http({
3351
3321
  headers: {
3352
3322
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
3353
3323
  origin: "https://mp.toutiao.com",
@@ -3366,8 +3336,8 @@ var __webpack_exports__ = {};
3366
3336
  const imageList = [];
3367
3337
  if (params.banners && params.banners.length > 0) {
3368
3338
  const images = await Promise.all(params.banners.map((url)=>{
3369
- const fileName = (0, share_.getFilenameFromUrl)(url);
3370
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3339
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
3340
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3371
3341
  }));
3372
3342
  const res = await Promise.all(images.map(async (it)=>{
3373
3343
  const formData = new (external_form_data_default())();
@@ -3414,7 +3384,7 @@ var __webpack_exports__ = {};
3414
3384
  url: "https://mp.toutiao.com/mp/agw/article/wtt",
3415
3385
  data: syncData
3416
3386
  });
3417
- return (0, share_.success)(res.data);
3387
+ return (0, share_namespaceObject.success)(res.data);
3418
3388
  };
3419
3389
  const weitoutiaoPublish_rpa_rpaAction = async (task, params)=>{
3420
3390
  const commonCookies = {
@@ -3447,8 +3417,8 @@ var __webpack_exports__ = {};
3447
3417
  await descInstance.fill(params.content);
3448
3418
  if (params.banners && params.banners?.length > 0) {
3449
3419
  const images = await Promise.all(params.banners.map((url)=>{
3450
- const fileName = (0, share_.getFilenameFromUrl)(url);
3451
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3420
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
3421
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3452
3422
  }));
3453
3423
  const fileChooserPromise = page.waitForEvent("filechooser");
3454
3424
  await page.locator(".toolbar .syl-toolbar-tool.weitoutiao-image-plugin").click();
@@ -3479,12 +3449,12 @@ var __webpack_exports__ = {};
3479
3449
  await declarationFormItem.locator(`.byte-checkbox:has(input[value="${params.declaration}"])`).click();
3480
3450
  }
3481
3451
  await page.locator(".footer-wrap button.publish-content").click();
3482
- return (0, share_.success)("");
3452
+ return (0, share_namespaceObject.success)("");
3483
3453
  };
3484
3454
  const weitoutiaoPublish = async (task, params)=>{
3485
3455
  if ("rpa" === params.actionType) return weitoutiaoPublish_rpa_rpaAction(task, params);
3486
3456
  if ("mockApi" === params.actionType) return weitoutiaoPublish_mock_mockAction(task, params);
3487
- return (0, utils.jo)(weitoutiaoPublish_mock_mockAction, weitoutiaoPublish_rpa_rpaAction)(task, params);
3457
+ return executeAction(weitoutiaoPublish_mock_mockAction, weitoutiaoPublish_rpa_rpaAction)(task, params);
3488
3458
  };
3489
3459
  const scanRetryMaxCount = 30;
3490
3460
  const QuotaType = {
@@ -3541,7 +3511,7 @@ var __webpack_exports__ = {};
3541
3511
  const fingerprint = "4695500bc93ab4ce8fb2692da6564e04";
3542
3512
  const client_time_diff = +Number("1743488763") - Math.floor(new Date().getTime() / 1000);
3543
3513
  const tmpCachePath = task.getTmpPath();
3544
- const http = new utils_http.e({
3514
+ const http = new Http({
3545
3515
  headers: {
3546
3516
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0",
3547
3517
  Cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
@@ -3584,12 +3554,12 @@ var __webpack_exports__ = {};
3584
3554
  const uploadImages = async (images)=>{
3585
3555
  const cloudImages = [];
3586
3556
  const localImages = await Promise.all(images.map((url)=>{
3587
- const fileName = (0, share_.getFilenameFromUrl)(url);
3588
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3557
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
3558
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3589
3559
  }));
3590
3560
  for(let index = 0; index < images.length; index++){
3591
3561
  const image = localImages[index];
3592
- const fileState = (0, utils.H8)(image);
3562
+ const fileState = getFileState(image);
3593
3563
  const formData = new (external_form_data_default())();
3594
3564
  formData.append("id", `WU_FILE_${index + 1}`);
3595
3565
  formData.append("name", fileState.name);
@@ -3607,9 +3577,9 @@ var __webpack_exports__ = {};
3607
3577
  }
3608
3578
  return cloudImages;
3609
3579
  };
3610
- const originContentImages = (0, utils.E_)(params.content);
3580
+ const originContentImages = extractImgTag(params.content);
3611
3581
  const targetContentImages = await uploadImages(originContentImages);
3612
- const content = (0, utils.I)(params.content, (dom)=>{
3582
+ const content = replaceImgSrc(params.content, (dom)=>{
3613
3583
  if (dom.attribs.src) {
3614
3584
  const idx = originContentImages.findIndex((it)=>it === dom.attribs.src);
3615
3585
  dom.attribs.src = targetContentImages[idx].cdn_url;
@@ -3732,7 +3702,7 @@ var __webpack_exports__ = {};
3732
3702
  const task_id = rewardbind.task_id;
3733
3703
  let code = null;
3734
3704
  for(let i = 0; i < scanRetryMaxCount; i++){
3735
- await (0, share_.sleep)(2000);
3705
+ await (0, share_namespaceObject.sleep)(2000);
3736
3706
  const checkScanResult = await http.api({
3737
3707
  method: "get",
3738
3708
  url: "https://mp.weixin.qq.com/acct/writermgr",
@@ -3993,7 +3963,7 @@ var __webpack_exports__ = {};
3993
3963
  appmsgid: appMsgId
3994
3964
  };
3995
3965
  for(let i = 0; i < 10; i++){
3996
- await (0, share_.sleep)(1000);
3966
+ await (0, share_namespaceObject.sleep)(1000);
3997
3967
  const lastData = {
3998
3968
  ...copyrightStatData,
3999
3969
  first_check: 0 === i ? 1 : 0
@@ -4001,7 +3971,7 @@ var __webpack_exports__ = {};
4001
3971
  const checkCopyrightStatRes = await checkCopyrightStat(http, params, lastData);
4002
3972
  if (checkCopyrightStatRes.open_ad_reprint_status) break;
4003
3973
  }
4004
- await (0, share_.sleep)(300);
3974
+ await (0, share_namespaceObject.sleep)(300);
4005
3975
  await http.api({
4006
3976
  method: "post",
4007
3977
  url: "https://mp.weixin.qq.com/cgi-bin/masssend",
@@ -4022,7 +3992,7 @@ var __webpack_exports__ = {};
4022
3992
  random: Math.random().toString()
4023
3993
  })
4024
3994
  });
4025
- await (0, share_.sleep)(300);
3995
+ await (0, share_namespaceObject.sleep)(300);
4026
3996
  await http.api({
4027
3997
  method: "post",
4028
3998
  url: "https://mp.weixin.qq.com/cgi-bin/masssend",
@@ -4040,7 +4010,7 @@ var __webpack_exports__ = {};
4040
4010
  random: Math.random().toString()
4041
4011
  })
4042
4012
  });
4043
- await (0, share_.sleep)(300);
4013
+ await (0, share_namespaceObject.sleep)(300);
4044
4014
  const getTicketResult = await http.api({
4045
4015
  method: "post",
4046
4016
  url: "https://mp.weixin.qq.com/misc/safeassistant",
@@ -4060,7 +4030,7 @@ var __webpack_exports__ = {};
4060
4030
  }),
4061
4031
  defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
4062
4032
  });
4063
- await (0, share_.sleep)(300);
4033
+ await (0, share_namespaceObject.sleep)(300);
4064
4034
  const getUuidResult = await http.api({
4065
4035
  method: "post",
4066
4036
  url: "https://mp.weixin.qq.com/safe/safeqrconnect",
@@ -4083,14 +4053,14 @@ var __webpack_exports__ = {};
4083
4053
  }),
4084
4054
  defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
4085
4055
  });
4086
- await (0, share_.sleep)(1000);
4056
+ await (0, share_namespaceObject.sleep)(1000);
4087
4057
  if (0 !== getUuidResult.genuuid_res) return {
4088
4058
  code: 200,
4089
4059
  message: GET_QRCODE_DEFAULT_ERROR,
4090
4060
  data: ""
4091
4061
  };
4092
4062
  const uuid = getUuidResult.uuid;
4093
- await (0, share_.sleep)(1000);
4063
+ await (0, share_namespaceObject.sleep)(1000);
4094
4064
  const qrcodeResult = await http.api({
4095
4065
  method: "get",
4096
4066
  url: "https://mp.weixin.qq.com/safe/safeqrcode",
@@ -4115,7 +4085,7 @@ var __webpack_exports__ = {};
4115
4085
  params.safeQrcodeCallback?.(qrcodeFilePath);
4116
4086
  let code = "";
4117
4087
  for(let i = 0; i < scanRetryMaxCount; i++){
4118
- await (0, share_.sleep)(2000);
4088
+ await (0, share_namespaceObject.sleep)(2000);
4119
4089
  const checkScanResult = await http.api({
4120
4090
  method: "post",
4121
4091
  url: "https://mp.weixin.qq.com/safe/safeuuid",
@@ -4202,7 +4172,7 @@ var __webpack_exports__ = {};
4202
4172
  share_page: "1",
4203
4173
  synctxweibo: "0",
4204
4174
  operation_seq,
4205
- req_id: (0, share_.randomString)(32),
4175
+ req_id: (0, share_namespaceObject.randomString)(32),
4206
4176
  req_time: new Date().getTime() + 1e3 * client_time_diff,
4207
4177
  sync_version: "1",
4208
4178
  isFreePublish: params.masssend ? "false" : "true",
@@ -4214,10 +4184,8 @@ var __webpack_exports__ = {};
4214
4184
  }),
4215
4185
  defaultErrorMsg: params.masssend ? "文章群发异常,请尝试关闭群发或稍后重试。" : "文章发布异常,请稍后重试。"
4216
4186
  });
4217
- return (0, share_.success)(appMsgId, params.settingInfo.timer ? "微信公众号文章定时发布成功。" : "微信公众号发布完成。");
4187
+ return (0, share_namespaceObject.success)(appMsgId, params.settingInfo.timer ? "微信公众号文章定时发布成功。" : "微信公众号发布完成。");
4218
4188
  };
4219
- var external_axios_ = __webpack_require__("axios");
4220
- var external_axios_default = /*#__PURE__*/ __webpack_require__.n(external_axios_);
4221
4189
  const waitQrcodeResultMaxTime = 2000 * scanRetryMaxCount;
4222
4190
  const weixinPublish_rpa_rpaAction = async (task, params)=>{
4223
4191
  const tmpCachePath = task.getTmpPath();
@@ -4333,11 +4301,11 @@ var __webpack_exports__ = {};
4333
4301
  await page.waitForSelector("#editor_pannel", {
4334
4302
  state: "visible"
4335
4303
  });
4336
- (0, utils.f8)(page, '[v-transfer-dom="#vue_app"] .weui-desktop-dialog', "更新", '[v-transfer-dom="#vue_app"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
4304
+ PopupListener(page, '[v-transfer-dom="#vue_app"] .weui-desktop-dialog', "更新", '[v-transfer-dom="#vue_app"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
4337
4305
  checkInterval: 1000,
4338
4306
  stopAfterClick: false
4339
4307
  });
4340
- (0, utils.f8)(page, '[extclass="weui-desktop-dialog_simple"] .weui-desktop-dialog', "小店", '[extclass="weui-desktop-dialog_simple"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
4308
+ PopupListener(page, '[extclass="weui-desktop-dialog_simple"] .weui-desktop-dialog', "小店", '[extclass="weui-desktop-dialog_simple"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
4341
4309
  checkInterval: 1000,
4342
4310
  stopAfterClick: true
4343
4311
  });
@@ -4349,7 +4317,7 @@ var __webpack_exports__ = {};
4349
4317
  await titleInstance.click();
4350
4318
  await titleInstance.fill(params.settingInfo.wxAuthor);
4351
4319
  }
4352
- await (0, utils.qN)(page, params.content);
4320
+ await copyHtmlToClipboard(page, params.content);
4353
4321
  await page.click(".js_editor_area .ProseMirror");
4354
4322
  await page.keyboard.press("Control+V");
4355
4323
  await page.locator("#article_setting_area").evaluate((node)=>node.scrollIntoView());
@@ -4359,8 +4327,8 @@ var __webpack_exports__ = {};
4359
4327
  await titleInstance.fill(params.settingInfo.wxAbstract);
4360
4328
  }
4361
4329
  if (params.settingInfo.wxCover) {
4362
- const fileName = (0, share_.getFilenameFromUrl)(params.settingInfo.wxCover);
4363
- const cover = await (0, share_.downloadImage)(params.settingInfo.wxCover, external_node_path_default().join(tmpCachePath, fileName));
4330
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(params.settingInfo.wxCover);
4331
+ const cover = await (0, share_namespaceObject.downloadImage)(params.settingInfo.wxCover, external_node_path_default().join(tmpCachePath, fileName));
4364
4332
  await page.locator("#article_setting_area #js_cover_area .select-cover__btn").hover();
4365
4333
  await page.locator("#article_setting_area #js_cover_area .pop-opr__group-select-cover .pop-opr__list .pop-opr__item").filter({
4366
4334
  hasText: "从图片库选择"
@@ -4546,7 +4514,7 @@ var __webpack_exports__ = {};
4546
4514
  const articleId = await new Promise(async (resolve)=>{
4547
4515
  const handleResponse = async (response)=>{
4548
4516
  const url = response.url();
4549
- const query = (0, utils.hc)(url);
4517
+ const query = parseUrlQueryString(url);
4550
4518
  if (url.includes("/cgi-bin/operate_appmsg") && query?.t === "ajax-response") {
4551
4519
  const jsonResponse = await response.json();
4552
4520
  page.off("response", handleResponse);
@@ -4560,15 +4528,15 @@ var __webpack_exports__ = {};
4560
4528
  await page.locator(".mass-send .mass-send__td-setting", {
4561
4529
  hasText: "定时发表"
4562
4530
  }).locator(".weui-desktop-switch__box").check();
4563
- let dateD = Number(utils.Tx.format(params.settingInfo.timer, "d"));
4564
- let nowD = Number(utils.Tx.format(Date.now(), "d"));
4531
+ let dateD = Number(TimeFormatter.format(params.settingInfo.timer, "d"));
4532
+ let nowD = Number(TimeFormatter.format(Date.now(), "d"));
4565
4533
  await page.locator(".mass-send__timer .weui-desktop-form__dropdown__dt").click();
4566
4534
  const dropMenu = page.locator(".mass-send__timer .weui-desktop-dropdown-menu").locator(".weui-desktop-dropdown__list-ele");
4567
4535
  await dropMenu.filter({
4568
- hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" : utils.Tx.format(params.settingInfo.timer, "M月d日")
4536
+ hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" : TimeFormatter.format(params.settingInfo.timer, "M月d日")
4569
4537
  }).click();
4570
4538
  const timeDropMenu = page.locator(".mass-send__timer .weui-desktop-picker__time:visible");
4571
- await timeDropMenu.locator(".weui-desktop-form__input").fill(utils.Tx.format(params.settingInfo.timer, "hh:mm"));
4539
+ await timeDropMenu.locator(".weui-desktop-form__input").fill(TimeFormatter.format(params.settingInfo.timer, "hh:mm"));
4572
4540
  await timeDropMenu.locator("i.weui-desktop-icon__time").click();
4573
4541
  }
4574
4542
  });
@@ -4646,15 +4614,15 @@ var __webpack_exports__ = {};
4646
4614
  }
4647
4615
  await page.waitForTimeout(3000);
4648
4616
  await page.close();
4649
- return (0, share_.success)(articleId);
4617
+ return (0, share_namespaceObject.success)(articleId);
4650
4618
  };
4651
4619
  const weixinPublish = async (task, _params)=>{
4652
- const params = (0, utils.Tb)(_params, {
4620
+ const params = defaultParams(_params, {
4653
4621
  masssend: true
4654
4622
  });
4655
4623
  if ("rpa" === params.actionType) return weixinPublish_rpa_rpaAction(task, params);
4656
4624
  if ("mockApi" === params.actionType) return weixinPublish_mock_mockAction(task, params);
4657
- return (0, utils.jo)(weixinPublish_mock_mockAction, weixinPublish_rpa_rpaAction)(task, params);
4625
+ return executeAction(weixinPublish_mock_mockAction, weixinPublish_rpa_rpaAction)(task, params);
4658
4626
  };
4659
4627
  const saveDraft = (http, params, data)=>{
4660
4628
  const formData = new (external_form_data_default())();
@@ -4674,7 +4642,7 @@ var __webpack_exports__ = {};
4674
4642
  };
4675
4643
  const weixinmpPublish_mock_mockAction = async (task, params)=>{
4676
4644
  const tmpCachePath = task.getTmpPath();
4677
- const http = new utils_http.e({
4645
+ const http = new Http({
4678
4646
  headers: {
4679
4647
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
4680
4648
  origin: "https://mp.weixin.qq.com",
@@ -4685,12 +4653,12 @@ var __webpack_exports__ = {};
4685
4653
  const cropResult = {};
4686
4654
  if (params.banners && params.banners.length > 0) {
4687
4655
  const images = await Promise.all(params.banners.map((url)=>{
4688
- const fileName = (0, share_.getFilenameFromUrl)(url);
4689
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4656
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
4657
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4690
4658
  }));
4691
4659
  for(let index = 0; index < images.length; index++){
4692
4660
  const image = images[index];
4693
- const fileState = (0, utils.H8)(image);
4661
+ const fileState = getFileState(image);
4694
4662
  const formData = new (external_form_data_default())();
4695
4663
  formData.append("id", `WU_FILE_${index + 1}`);
4696
4664
  formData.append("name", fileState.name);
@@ -4745,7 +4713,7 @@ var __webpack_exports__ = {};
4745
4713
  ];
4746
4714
  cropFormData.append("size_count", cropRatios.length);
4747
4715
  const cropCoordinates = cropRatios.map((r, idx)=>{
4748
- const cropCoordinate = (0, utils.e0)(colorResponseData.width, colorResponseData.height, r);
4716
+ const cropCoordinate = calculateCropCoordinates(colorResponseData.width, colorResponseData.height, r);
4749
4717
  cropFormData.append(`size${idx}_x1`, cropCoordinate.x1);
4750
4718
  cropFormData.append(`size${idx}_y1`, cropCoordinate.y1);
4751
4719
  cropFormData.append(`size${idx}_x2`, cropCoordinate.x2);
@@ -4798,7 +4766,7 @@ var __webpack_exports__ = {};
4798
4766
  content0: params.content,
4799
4767
  share_imageinfo0: JSON.stringify(shareImageInfos)
4800
4768
  });
4801
- return (0, share_.success)(res);
4769
+ return (0, share_namespaceObject.success)(res);
4802
4770
  };
4803
4771
  const sourceText = {
4804
4772
  ai: "内容由AI生成",
@@ -4835,8 +4803,8 @@ var __webpack_exports__ = {};
4835
4803
  const container = page.locator("#editor_pannel");
4836
4804
  if (params.banners && params.banners.length > 0) {
4837
4805
  const images = await Promise.all(params.banners.map((url)=>{
4838
- const fileName = (0, share_.getFilenameFromUrl)(url);
4839
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4806
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
4807
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4840
4808
  }));
4841
4809
  const fileChooserPromise = page.waitForEvent("filechooser");
4842
4810
  await container.locator(".image-selector__add").hover();
@@ -4861,12 +4829,12 @@ var __webpack_exports__ = {};
4861
4829
  if (params.banners && params.banners.length > 0) await page.waitForSelector("#editor_pannel .image-selector .image-selector__preview");
4862
4830
  if (params.draft) await container.locator("#bottom_main #js_submit button").click();
4863
4831
  else await container.locator("#bottom_main #js_send button").click();
4864
- return (0, share_.success)("");
4832
+ return (0, share_namespaceObject.success)("");
4865
4833
  };
4866
4834
  const weixinmpPublish = async (task, params)=>{
4867
4835
  if ("rpa" === params.actionType) return weixinmpPublish_rpa_rpaAction(task, params);
4868
4836
  if ("mockApi" === params.actionType) return weixinmpPublish_mock_mockAction(task, params);
4869
- return (0, utils.jo)(weixinmpPublish_mock_mockAction, weixinmpPublish_rpa_rpaAction)(task, params);
4837
+ return executeAction(weixinmpPublish_mock_mockAction, weixinmpPublish_rpa_rpaAction)(task, params);
4870
4838
  };
4871
4839
  const xiaohongshuPublish_mock_errnoMap = {
4872
4840
  915: "所属C端账号手机号被修改,请重新登录",
@@ -4883,7 +4851,7 @@ var __webpack_exports__ = {};
4883
4851
  message: "账号数据异常,请重新绑定账号后重试。",
4884
4852
  data: ""
4885
4853
  };
4886
- const http = new utils_http.e({
4854
+ const http = new Http({
4887
4855
  headers: {
4888
4856
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
4889
4857
  origin: "https://creator.xiaohongshu.com",
@@ -4923,8 +4891,8 @@ var __webpack_exports__ = {};
4923
4891
  data: ""
4924
4892
  };
4925
4893
  const uploadFile = async (url, index)=>{
4926
- const fileName = (0, share_.getFilenameFromUrl)(url);
4927
- const localUrl = await (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4894
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
4895
+ const localUrl = await (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4928
4896
  const ossFileId = coverIds[index];
4929
4897
  const fileBuffer = external_node_fs_default().readFileSync(localUrl);
4930
4898
  await http.api({
@@ -5061,7 +5029,7 @@ var __webpack_exports__ = {};
5061
5029
  },
5062
5030
  defaultErrorMsg: "文章发布异常,请稍后重试。"
5063
5031
  });
5064
- return (0, share_.success)(publishResult.data?.id);
5032
+ return (0, share_namespaceObject.success)(publishResult.data?.id);
5065
5033
  };
5066
5034
  const rpa_xsEncrypt = new XsEncrypt();
5067
5035
  const xiaohongshuPublish_rpa_rpaAction = async (task, params)=>{
@@ -5172,8 +5140,8 @@ var __webpack_exports__ = {};
5172
5140
  hasText: /^上传图文$/
5173
5141
  }).click();
5174
5142
  const images = await Promise.all(params.banners.map((url)=>{
5175
- const fileName = (0, share_.getFilenameFromUrl)(url);
5176
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
5143
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
5144
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
5177
5145
  }));
5178
5146
  const fileChooserPromise = page.waitForEvent("filechooser");
5179
5147
  await page.getByRole("textbox").click();
@@ -5271,14 +5239,14 @@ var __webpack_exports__ = {};
5271
5239
  page.locator(".submit .publishBtn").click();
5272
5240
  });
5273
5241
  await page.close();
5274
- return (0, share_.success)(response);
5242
+ return (0, share_namespaceObject.success)(response);
5275
5243
  };
5276
5244
  const xiaohongshuPublish = async (task, params)=>{
5277
5245
  if ("rpa" === params.actionType) return xiaohongshuPublish_rpa_rpaAction(task, params);
5278
5246
  if ("mockApi" === params.actionType) return xiaohongshuPublish_mock_mockAction(task, params);
5279
- return (0, utils.jo)(xiaohongshuPublish_mock_mockAction, xiaohongshuPublish_rpa_rpaAction)(task, params);
5247
+ return executeAction(xiaohongshuPublish_mock_mockAction, xiaohongshuPublish_rpa_rpaAction)(task, params);
5280
5248
  };
5281
- var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.1"}');
5249
+ var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.3"}');
5282
5250
  class Action {
5283
5251
  constructor(task){
5284
5252
  this.task = task;
@@ -5290,11 +5258,11 @@ var __webpack_exports__ = {};
5290
5258
  try {
5291
5259
  responseData = await func(this.task, params);
5292
5260
  } catch (error) {
5293
- responseData = utils_http.e.handleApiError(error);
5261
+ responseData = Http.handleApiError(error);
5294
5262
  }
5295
5263
  if (200 === responseData.code) this.task.logger.info(`${func.name} action params error`, responseData);
5296
5264
  else if (0 !== responseData.code) {
5297
- this.task.logger.error(responseData.message || `${func.name} 执行失败`, (0, utils.n)(responseData.data), responseData.extra);
5265
+ this.task.logger.error(responseData.message || `${func.name} 执行失败`, stringifyError(responseData.data), responseData.extra);
5298
5266
  this.task.logger.info(`${func.name} action failed`);
5299
5267
  } else this.task.logger.info(`${func.name} action success`);
5300
5268
  return responseData;