@skrillex1224/playwright-toolkit 2.1.38 → 2.1.39
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.cjs +220 -9
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +220 -9
- package/dist/index.js.map +3 -3
- package/index.d.ts +67 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -57,10 +57,220 @@ var Status = {
|
|
|
57
57
|
var FAILED_KEY_SEPARATOR = "::<@>::";
|
|
58
58
|
var PresetOfLiveViewKey = "LIVE_VIEW_SCREENSHOT";
|
|
59
59
|
|
|
60
|
-
// src/
|
|
60
|
+
// src/logger.js
|
|
61
61
|
var import_crawlee = require("crawlee");
|
|
62
|
+
var formatLine = (prefix, icon, message) => {
|
|
63
|
+
const parts = [];
|
|
64
|
+
if (prefix) parts.push(`[${prefix}]`);
|
|
65
|
+
if (icon) parts.push(icon);
|
|
66
|
+
if (message) parts.push(message);
|
|
67
|
+
return parts.join(" ").trim();
|
|
68
|
+
};
|
|
69
|
+
var ANSI = {
|
|
70
|
+
reset: "\x1B[0m",
|
|
71
|
+
gray: "\x1B[90m",
|
|
72
|
+
red: "\x1B[31m",
|
|
73
|
+
green: "\x1B[32m",
|
|
74
|
+
yellow: "\x1B[33m",
|
|
75
|
+
blue: "\x1B[34m",
|
|
76
|
+
cyan: "\x1B[36m"
|
|
77
|
+
};
|
|
78
|
+
var colorize = (text, color) => {
|
|
79
|
+
if (!text || !color) return text;
|
|
80
|
+
return `${color}${text}${ANSI.reset}`;
|
|
81
|
+
};
|
|
82
|
+
var createBaseLogger = (prefix = "") => {
|
|
83
|
+
const name = prefix ? String(prefix) : "";
|
|
84
|
+
return {
|
|
85
|
+
info: (message) => import_crawlee.log.info(colorize(formatLine(name, "\u{1F4D6}", message), ANSI.cyan)),
|
|
86
|
+
success: (message) => import_crawlee.log.info(colorize(formatLine(name, "\u2705", message), ANSI.green)),
|
|
87
|
+
warning: (message) => import_crawlee.log.warning(colorize(formatLine(name, "\u26A0\uFE0F", message), ANSI.yellow)),
|
|
88
|
+
error: (message) => import_crawlee.log.error(colorize(formatLine(name, "\u274C", message), ANSI.red)),
|
|
89
|
+
debug: (message) => import_crawlee.log.debug(colorize(formatLine(name, "\u{1F539}", message), ANSI.gray)),
|
|
90
|
+
start: (message) => import_crawlee.log.info(colorize(formatLine(name, "\u{1F537}", message), ANSI.blue))
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
var STEP_PREFIX = "\u6B65\u9AA4:";
|
|
94
|
+
var STEP_SEPARATOR = " | ";
|
|
95
|
+
var STEP_EMOJIS = [
|
|
96
|
+
{ match: "\u4EFB\u52A1", emoji: "\u{1F9ED}" },
|
|
97
|
+
{ match: "\u8FD0\u884C\u6A21\u5F0F", emoji: "\u{1F9E9}" },
|
|
98
|
+
{ match: "\u767B\u5F55", emoji: "\u{1F510}" },
|
|
99
|
+
{ match: "\u73AF\u5883", emoji: "\u{1F9EA}" },
|
|
100
|
+
{ match: "\u8F93\u5165", emoji: "\u2328\uFE0F" },
|
|
101
|
+
{ match: "\u53D1\u9001", emoji: "\u{1F4E4}" },
|
|
102
|
+
{ match: "\u54CD\u5E94\u76D1\u542C", emoji: "\u{1F4E1}" },
|
|
103
|
+
{ match: "\u7B49\u5F85\u54CD\u5E94", emoji: "\u23F3" },
|
|
104
|
+
{ match: "\u6D41\u5F0F", emoji: "\u{1F9F5}" },
|
|
105
|
+
{ match: "\u5F15\u7528", emoji: "\u{1F4CE}" },
|
|
106
|
+
{ match: "\u622A\u56FE", emoji: "\u{1F5BC}\uFE0F" },
|
|
107
|
+
{ match: "\u5206\u4EAB\u94FE\u63A5", emoji: "\u{1F517}" },
|
|
108
|
+
{ match: "\u6570\u636E\u63A8\u9001", emoji: "\u{1F4E6}" },
|
|
109
|
+
{ match: "\u5F39\u7A97", emoji: "\u{1FA9F}" }
|
|
110
|
+
];
|
|
111
|
+
var STATUS_EMOJIS = [
|
|
112
|
+
{ match: "\u5F00\u59CB", emoji: "\u{1F680}" },
|
|
113
|
+
{ match: "\u5B8C\u6210", emoji: "\u2705" },
|
|
114
|
+
{ match: "\u6210\u529F", emoji: "\u2705" },
|
|
115
|
+
{ match: "\u5931\u8D25", emoji: "\u274C" },
|
|
116
|
+
{ match: "\u8DF3\u8FC7", emoji: "\u23ED\uFE0F" },
|
|
117
|
+
{ match: "\u8D85\u65F6", emoji: "\u23F1\uFE0F" },
|
|
118
|
+
{ match: "\u91CD\u8BD5", emoji: "\u{1F501}" },
|
|
119
|
+
{ match: "\u7ED3\u675F", emoji: "\u{1F3C1}" },
|
|
120
|
+
{ match: "\u5DF2\u914D\u7F6E", emoji: "\u{1F9F7}" },
|
|
121
|
+
{ match: "\u5DF2\u68C0\u6D4B", emoji: "\u{1F50E}" }
|
|
122
|
+
];
|
|
123
|
+
var toErrorMessage = (error) => {
|
|
124
|
+
if (!error) return "";
|
|
125
|
+
if (error instanceof Error) return error.message;
|
|
126
|
+
if (typeof error === "string") return error;
|
|
127
|
+
try {
|
|
128
|
+
return JSON.stringify(error);
|
|
129
|
+
} catch {
|
|
130
|
+
return String(error);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
var decorateLabel = (label, mappings) => {
|
|
134
|
+
if (!label) return "";
|
|
135
|
+
const mapping = mappings.find((item) => label.includes(item.match));
|
|
136
|
+
if (!mapping) return label;
|
|
137
|
+
return `${mapping.emoji} ${label}`;
|
|
138
|
+
};
|
|
139
|
+
var normalizeSnippet = (snippet, maxLen = 120) => {
|
|
140
|
+
if (!snippet) return "";
|
|
141
|
+
const text = String(snippet).replace(/\s+/g, " ").trim();
|
|
142
|
+
if (!text) return "";
|
|
143
|
+
const cleaned = text.replace(/"/g, "'");
|
|
144
|
+
if (cleaned.length <= maxLen) return cleaned;
|
|
145
|
+
return `${cleaned.slice(0, maxLen)}...`;
|
|
146
|
+
};
|
|
147
|
+
var buildStepLine = (step, status, details = []) => {
|
|
148
|
+
const parts = [];
|
|
149
|
+
const decoratedStep = step ? decorateLabel(step, STEP_EMOJIS) : "";
|
|
150
|
+
const base = decoratedStep ? `${STEP_PREFIX} ${decoratedStep}` : STEP_PREFIX;
|
|
151
|
+
parts.push(base.trim());
|
|
152
|
+
if (status) parts.push(decorateLabel(status, STATUS_EMOJIS));
|
|
153
|
+
const detailParts = details.filter(Boolean);
|
|
154
|
+
if (detailParts.length > 0) {
|
|
155
|
+
parts.push(...detailParts);
|
|
156
|
+
}
|
|
157
|
+
return parts.join(STEP_SEPARATOR);
|
|
158
|
+
};
|
|
159
|
+
var createThrottle = () => {
|
|
160
|
+
const lastMap = /* @__PURE__ */ new Map();
|
|
161
|
+
return (key, intervalMs, fn) => {
|
|
162
|
+
const now = Date.now();
|
|
163
|
+
const last = lastMap.get(key) || 0;
|
|
164
|
+
if (now - last >= intervalMs) {
|
|
165
|
+
lastMap.set(key, now);
|
|
166
|
+
fn();
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
var createTemplateLogger = (baseLogger = createBaseLogger()) => {
|
|
171
|
+
const throttle = createThrottle();
|
|
172
|
+
const info = (line) => baseLogger.info(line);
|
|
173
|
+
const success = (line) => baseLogger.success(line);
|
|
174
|
+
const warning = (line) => baseLogger.warning(line);
|
|
175
|
+
const error = (line) => baseLogger.error(line);
|
|
176
|
+
const debug = (line) => baseLogger.debug(line);
|
|
177
|
+
const start = (line) => baseLogger.start(line);
|
|
178
|
+
const stepInfo = (step, status, details = []) => info(buildStepLine(step, status, details));
|
|
179
|
+
const stepSuccess = (step, status, details = []) => success(buildStepLine(step, status, details));
|
|
180
|
+
const stepWarn = (step, status, details = []) => warning(buildStepLine(step, status, details));
|
|
181
|
+
const stepError = (step, status, details = []) => error(buildStepLine(step, status, details));
|
|
182
|
+
const stepStart = (step, status, details = []) => start(buildStepLine(step, status, details));
|
|
183
|
+
return {
|
|
184
|
+
step: (step, status, details, level = "info") => {
|
|
185
|
+
if (level === "error") return stepError(step, status, details);
|
|
186
|
+
if (level === "warn" || level === "warning") return stepWarn(step, status, details);
|
|
187
|
+
return stepInfo(step, status, details);
|
|
188
|
+
},
|
|
189
|
+
taskStart: (url) => stepStart("\u4EFB\u52A1", "\u5F00\u59CB", [url ? `url=${url}` : ""]),
|
|
190
|
+
taskSuccess: () => stepSuccess("\u4EFB\u52A1", "\u5B8C\u6210"),
|
|
191
|
+
taskFail: (url, err) => stepError("\u4EFB\u52A1", "\u5931\u8D25", [
|
|
192
|
+
url ? `url=${url}` : "",
|
|
193
|
+
err ? `err=${toErrorMessage(err)}` : ""
|
|
194
|
+
]),
|
|
195
|
+
runtimeHeadless: () => stepWarn("\u8FD0\u884C\u6A21\u5F0F", "Apify \u73AF\u5883\u5F3A\u5236\u65E0\u5934"),
|
|
196
|
+
loginInjectSuccess: (detail) => stepSuccess("\u767B\u5F55\u6001\u6CE8\u5165", "\u6210\u529F", [detail ? `detail=${detail}` : ""]),
|
|
197
|
+
loginInjectSkip: (reason) => stepWarn("\u767B\u5F55\u6001\u6CE8\u5165", "\u8DF3\u8FC7", [reason ? `\u539F\u56E0=${reason}` : ""]),
|
|
198
|
+
loginInjectFail: (err) => stepError("\u767B\u5F55\u6001\u6CE8\u5165", "\u5931\u8D25", [err ? `err=${toErrorMessage(err)}` : ""]),
|
|
199
|
+
loginVerifySuccess: (detail) => stepSuccess("\u767B\u5F55\u9A8C\u8BC1", "\u6210\u529F", [detail ? `detail=${detail}` : ""]),
|
|
200
|
+
loginVerifySkip: (reason) => stepWarn("\u767B\u5F55\u9A8C\u8BC1", "\u8DF3\u8FC7", [reason ? `\u539F\u56E0=${reason}` : ""]),
|
|
201
|
+
loginVerifyFail: (err) => stepError("\u767B\u5F55\u9A8C\u8BC1", "\u5931\u8D25", [err ? `err=${toErrorMessage(err)}` : ""]),
|
|
202
|
+
envCheckSuccess: (detail) => stepSuccess("\u73AF\u5883\u68C0\u67E5", "\u6210\u529F", [detail ? `detail=${detail}` : ""]),
|
|
203
|
+
envCheckFail: (err) => stepError("\u73AF\u5883\u68C0\u67E5", "\u5931\u8D25", [err ? `err=${toErrorMessage(err)}` : ""]),
|
|
204
|
+
inputQuery: (query) => stepStart("\u8F93\u5165\u67E5\u8BE2", "\u5F00\u59CB", [query ? `query=${query}` : ""]),
|
|
205
|
+
sendAction: () => stepInfo("\u53D1\u9001\u8BF7\u6C42", "\u70B9\u51FB\u53D1\u9001"),
|
|
206
|
+
responseListenStart: (label, timeoutSec) => stepStart("\u54CD\u5E94\u76D1\u542C", "\u5F00\u59CB", [
|
|
207
|
+
label ? `\u76EE\u6807=${label}` : "",
|
|
208
|
+
timeoutSec ? `timeout=${timeoutSec}s` : ""
|
|
209
|
+
]),
|
|
210
|
+
responseListenReady: (label) => stepInfo("\u54CD\u5E94\u76D1\u542C", "\u5DF2\u914D\u7F6E", [label ? `\u76EE\u6807=${label}` : ""]),
|
|
211
|
+
responseListenDetected: (label) => stepSuccess("\u54CD\u5E94\u76D1\u542C", "\u5DF2\u68C0\u6D4B", [label ? `\u76EE\u6807=${label}` : ""]),
|
|
212
|
+
responseListenTimeout: (label, err) => stepError("\u54CD\u5E94\u76D1\u542C", "\u8D85\u65F6", [
|
|
213
|
+
label ? `\u76EE\u6807=${label}` : "",
|
|
214
|
+
err ? `err=${toErrorMessage(err)}` : ""
|
|
215
|
+
]),
|
|
216
|
+
responseListenEnd: (label) => stepInfo("\u54CD\u5E94\u76D1\u542C", "\u7ED3\u675F", [label ? `\u76EE\u6807=${label}` : ""]),
|
|
217
|
+
streamChunk: (length, snippet) => throttle(
|
|
218
|
+
"stream-chunk",
|
|
219
|
+
2e3,
|
|
220
|
+
() => stepInfo("\u6D41\u5F0F\u7247\u6BB5", "", [
|
|
221
|
+
length !== void 0 ? `len=${length}` : "",
|
|
222
|
+
snippet ? `preview="${normalizeSnippet(snippet)}"` : ""
|
|
223
|
+
])
|
|
224
|
+
),
|
|
225
|
+
streamEventsParsed: (count) => throttle(
|
|
226
|
+
"stream-events",
|
|
227
|
+
4e3,
|
|
228
|
+
() => stepInfo("\u6D41\u5F0F\u4E8B\u4EF6\u89E3\u6790", "\u5B8C\u6210", [count !== void 0 ? `count=${count}` : ""])
|
|
229
|
+
),
|
|
230
|
+
streamCompleteEvent: () => stepSuccess("\u6D41\u5F0F\u4E8B\u4EF6", "\u5B8C\u6210\u4E8B\u4EF6\u5DF2\u6355\u83B7"),
|
|
231
|
+
streamEnd: () => stepInfo("\u6D41\u5F0F\u54CD\u5E94", "\u7ED3\u675F"),
|
|
232
|
+
responseWaitStart: (label) => stepStart("\u7B49\u5F85\u54CD\u5E94", "\u5F00\u59CB", [label ? `\u76EE\u6807=${label}` : ""]),
|
|
233
|
+
responseWaitSuccess: (label) => stepSuccess("\u7B49\u5F85\u54CD\u5E94", "\u5B8C\u6210", [label ? `\u76EE\u6807=${label}` : ""]),
|
|
234
|
+
responseWaitFail: (label, err) => stepWarn("\u7B49\u5F85\u54CD\u5E94", "\u5931\u8D25", [
|
|
235
|
+
label ? `\u76EE\u6807=${label}` : "",
|
|
236
|
+
err ? `err=${toErrorMessage(err)}` : ""
|
|
237
|
+
]),
|
|
238
|
+
responseWaitRetry: (label, attempt) => stepWarn("\u7B49\u5F85\u54CD\u5E94", "\u91CD\u8BD5", [
|
|
239
|
+
label ? `\u76EE\u6807=${label}` : "",
|
|
240
|
+
attempt !== void 0 ? `\u5C1D\u8BD5=${attempt}` : ""
|
|
241
|
+
]),
|
|
242
|
+
referenceExpandStart: (label) => stepStart("\u5F15\u7528\u5C55\u5F00", "\u5F00\u59CB", [label ? `\u76EE\u6807=${label}` : ""]),
|
|
243
|
+
referenceExpandFail: (err) => stepWarn("\u5F15\u7528\u5C55\u5F00", "\u5931\u8D25", [err ? `err=${toErrorMessage(err)}` : ""]),
|
|
244
|
+
screenshotStart: () => stepStart("\u622A\u56FE", "\u5F00\u59CB"),
|
|
245
|
+
screenshotSuccess: () => stepSuccess("\u622A\u56FE", "\u6210\u529F"),
|
|
246
|
+
screenshotFail: (err) => stepWarn("\u622A\u56FE", "\u5931\u8D25", [err ? `err=${toErrorMessage(err)}` : ""]),
|
|
247
|
+
shareStart: () => stepStart("\u5206\u4EAB\u94FE\u63A5", "\u5F00\u59CB"),
|
|
248
|
+
shareProgress: (label) => stepInfo("\u5206\u4EAB\u94FE\u63A5", "\u6B65\u9AA4", [label ? `\u6B65\u9AA4=${label}` : ""]),
|
|
249
|
+
shareSuccess: (link) => stepSuccess("\u5206\u4EAB\u94FE\u63A5", "\u6210\u529F", [link ? `\u94FE\u63A5=${link}` : ""]),
|
|
250
|
+
shareFail: (err) => stepWarn("\u5206\u4EAB\u94FE\u63A5", "\u5931\u8D25", [err ? `err=${toErrorMessage(err)}` : ""]),
|
|
251
|
+
shareSkip: (reason) => stepWarn("\u5206\u4EAB\u94FE\u63A5", "\u8DF3\u8FC7", [reason ? `\u539F\u56E0=${reason}` : ""]),
|
|
252
|
+
dataPushSuccess: (label) => stepSuccess("\u6570\u636E\u63A8\u9001", "\u6210\u529F", [label ? `\u8BF4\u660E=${label}` : ""]),
|
|
253
|
+
dataPushFail: (err) => stepError("\u6570\u636E\u63A8\u9001", "\u5931\u8D25", [err ? `err=${toErrorMessage(err)}` : ""]),
|
|
254
|
+
popupDetected: (detail) => stepWarn("\u5F39\u7A97\u5904\u7406", "\u68C0\u6D4B\u5230\u906E\u7F69", [detail ? `detail=${detail}` : ""]),
|
|
255
|
+
popupCloseAttempt: (detail) => stepInfo("\u5F39\u7A97\u5904\u7406", "\u5C1D\u8BD5\u5173\u95ED", [detail ? `detail=${detail}` : ""]),
|
|
256
|
+
popupCloseSuccess: () => stepSuccess("\u5F39\u7A97\u5904\u7406", "\u5173\u95ED\u5B8C\u6210"),
|
|
257
|
+
popupCloseFail: (err) => stepWarn("\u5F39\u7A97\u5904\u7406", "\u5173\u95ED\u5931\u8D25", [err ? `err=${toErrorMessage(err)}` : ""]),
|
|
258
|
+
info: (message) => info(message),
|
|
259
|
+
success: (message) => success(message),
|
|
260
|
+
warning: (message) => warning(message),
|
|
261
|
+
error: (message) => error(message),
|
|
262
|
+
debug: (message) => debug(message),
|
|
263
|
+
start: (message) => start(message)
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
var Logger = {
|
|
267
|
+
...createBaseLogger(),
|
|
268
|
+
useTemplate: () => createTemplateLogger()
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
// src/internal/logger.js
|
|
62
272
|
function createLogger(moduleName) {
|
|
63
|
-
const
|
|
273
|
+
const baseLogger = createBaseLogger(moduleName);
|
|
64
274
|
return {
|
|
65
275
|
/**
|
|
66
276
|
* 方法开始日志
|
|
@@ -69,7 +279,7 @@ function createLogger(moduleName) {
|
|
|
69
279
|
*/
|
|
70
280
|
start(methodName, params = "") {
|
|
71
281
|
const paramStr = params ? ` (${params})` : "";
|
|
72
|
-
|
|
282
|
+
baseLogger.start(`${methodName} \u5F00\u59CB${paramStr}`);
|
|
73
283
|
},
|
|
74
284
|
/**
|
|
75
285
|
* 方法成功日志
|
|
@@ -78,7 +288,7 @@ function createLogger(moduleName) {
|
|
|
78
288
|
*/
|
|
79
289
|
success(methodName, result = "") {
|
|
80
290
|
const resultStr = result ? ` (${result})` : "";
|
|
81
|
-
|
|
291
|
+
baseLogger.success(`${methodName} \u5B8C\u6210${resultStr}`);
|
|
82
292
|
},
|
|
83
293
|
/**
|
|
84
294
|
* 方法失败日志
|
|
@@ -87,28 +297,28 @@ function createLogger(moduleName) {
|
|
|
87
297
|
*/
|
|
88
298
|
fail(methodName, error) {
|
|
89
299
|
const message = error instanceof Error ? error.message : error;
|
|
90
|
-
|
|
300
|
+
baseLogger.error(`${methodName} \u5931\u8D25: ${message}`);
|
|
91
301
|
},
|
|
92
302
|
/**
|
|
93
303
|
* 调试日志
|
|
94
304
|
* @param {string} message - 详情
|
|
95
305
|
*/
|
|
96
306
|
debug(message) {
|
|
97
|
-
|
|
307
|
+
baseLogger.debug(message);
|
|
98
308
|
},
|
|
99
309
|
/**
|
|
100
310
|
* 警告日志
|
|
101
311
|
* @param {string} message - 警告信息
|
|
102
312
|
*/
|
|
103
313
|
warn(message) {
|
|
104
|
-
|
|
314
|
+
baseLogger.warning(message);
|
|
105
315
|
},
|
|
106
316
|
/**
|
|
107
317
|
* 普通信息日志
|
|
108
318
|
* @param {string} message - 信息
|
|
109
319
|
*/
|
|
110
320
|
info(message) {
|
|
111
|
-
|
|
321
|
+
baseLogger.info(message);
|
|
112
322
|
}
|
|
113
323
|
};
|
|
114
324
|
}
|
|
@@ -1728,7 +1938,8 @@ var usePlaywrightToolKit = () => {
|
|
|
1728
1938
|
Sse,
|
|
1729
1939
|
Errors: errors_exports,
|
|
1730
1940
|
Interception,
|
|
1731
|
-
Mutation
|
|
1941
|
+
Mutation,
|
|
1942
|
+
Logger
|
|
1732
1943
|
};
|
|
1733
1944
|
};
|
|
1734
1945
|
// Annotate the CommonJS export names for ESM import in node:
|