-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathw2.x-scripts.config.sample.js
52 lines (49 loc) · 1.84 KB
/
w2.x-scripts.config.sample.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/** @type {import('@lzwme/whistle.x-scripts').W2XScriptsConfig} */
const config = {
// debug: false,
// logType: 'info',
// ql: {
// enable: false,
// token: '',
// },
/** 写入环境变量信息到本地文件 */
// envConfFile: 'env-config.sh',
/** 写入环境变量信息到本地文件的路径。若设置为空则不写入 */
// cacheFile: 'w2.x-scripts.cache.json',
/** 数据处理防抖时间间隔。单位为秒,默认为 3 (s) */
throttleTime: 3,
/** 指定规则集文件路径或所在目录,尝试从该列表加载自定义的规则集 */
ruleDirs: [
// require.resolve('@lzwme/x-scripts-rules', { paths: require.main.paths }),
'./local-x-scripts-rules',
],
/** 自定义脚本规则 */
rules: [
// ...rules,
{
on: 'req-body',
ruleId: 'rule-test',
desc: '这是一条测试规则示例',
method: '*',
url: '**',
toQL: false,
toEnvFile: true,
handler({ url, req, reqBody, resHeaders, resBody, X }) {
// 只处理文本类型的请求
if (X.isText(req.headers) && !/\.(js|css)/.test(url)) {
// X 是提供的工具类对象,方便简化脚本编写逻辑调用
const { magenta, gray, cyan } = X.FeUtils.color;
console.log(`\n\n[${magenta('handler')}][${cyan(req.method)}] -`, gray(url));
console.log(cyan('\req headers:'), req.headers);
console.log(cyan('\res headers:'), resHeaders);
if (reqBody) console.log(cyan('请求参数:'), reqBody.toString());
if (resBody) console.log(cyan('返回内容:'), resBody);
}
// 若返回 body 参数则会以该内容返回
// 若返回 envConfig 参数则会以该内容写入环境变量文件
// return { body: modifyedResBody, envConfig };
},
},
],
};
module.exports = config;