Skip to content

Commit 43d99fa

Browse files
authored
RQLY-448 feat: capture console logs created by programmatic modify response (#13)
feat: capture console logs created by programmatic modify response and modify request rule processor - adds default consoleLogs to ctx_rq_namespace - console logs also execute in the background during interception
1 parent e56efbd commit 43d99fa

File tree

6 files changed

+34
-0
lines changed

6 files changed

+34
-0
lines changed

package-lock.json

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"@sentry/browser": "^6.19.2",
2020
"async": "^3.2.1",
2121
"axios": "^0.26.1",
22+
"capture-console-logs": "^1.0.1",
2223
"charset": "^1.0.1",
2324
"debug": "^4.3.2",
2425
"httpsnippet": "^2.0.0",

src/components/proxy-middleware/helpers/ctx_rq_namespace.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ class CtxRQNamespace {
3333
// headers,
3434
// body
3535
};
36+
37+
38+
this.consoleLogs = []
3639
}
3740

3841
set_original_request = ({

src/components/proxy-middleware/middlewares/logger_middleware.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ class LoggerMiddleware {
8989
),
9090
requestShellCurl: this.generate_curl_from_har(ctx?.rq?.final_request?.requestHarObject), // TODO: Move this to client side
9191
actions: get_success_actions_from_action_results(action_result_objs),
92+
consoleLogs : ctx?.rq?.consoleLogs,
9293
requestState
9394
}
9495
return rqLog;

src/components/proxy-middleware/rule_action_processor/processors/modify_request_processor.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
import { get_request_url } from "../../helpers/proxy_ctx_helper";
88
import { build_action_processor_response } from "../utils";
99
import fs from "fs";
10+
import ConsoleCapture from "capture-console-logs";
1011
const { types } = require("util");
1112

1213
const process_modify_request_action = (action, ctx) => {
@@ -74,12 +75,20 @@ const modify_request_using_code = async (action, ctx) => {
7475
/*Do nothing -- could not parse body as JSON */
7576
}
7677

78+
const consoleCapture = new ConsoleCapture()
79+
consoleCapture.start(true)
80+
7781
finalRequest = userFunction(args);
7882

7983
if (types.isPromise(finalRequest)) {
8084
finalRequest = await finalRequest;
8185
}
8286

87+
consoleCapture.stop()
88+
const consoleLogs = consoleCapture.getCaptures()
89+
90+
ctx.rq.consoleLogs.push(...consoleLogs)
91+
8392
const isRequestJSON = !!args.requestJSON;
8493
if (typeof finalRequest === "object" && isRequestJSON) {
8594
finalRequest = JSON.stringify(finalRequest);

src/components/proxy-middleware/rule_action_processor/processors/modify_response_processor.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { get_request_url } from "../../helpers/proxy_ctx_helper";
88
import { build_action_processor_response } from "../utils";
99
import fs from "fs";
1010
import { parseJsonBody } from "../../helpers/http_helpers";
11+
import ConsoleCapture from "capture-console-logs";
1112
const { types } = require("util");
1213

1314
const process_modify_response_action = async (action, ctx) => {
@@ -93,12 +94,20 @@ const modify_response_using_code = async (action, ctx) => {
9394
/*Do nothing -- could not parse body as JSON */
9495
}
9596

97+
const consoleCapture = new ConsoleCapture()
98+
consoleCapture.start(true)
99+
96100
finalResponse = userFunction(args);
97101

98102
if (types.isPromise(finalResponse)) {
99103
finalResponse = await finalResponse;
100104
}
101105

106+
consoleCapture.stop()
107+
const consoleLogs = consoleCapture.getCaptures()
108+
109+
ctx.rq.consoleLogs.push(...consoleLogs)
110+
102111
if (typeof finalResponse === "object") {
103112
finalResponse = JSON.stringify(finalResponse);
104113
}

0 commit comments

Comments
 (0)