Skip to content

Commit 43c5770

Browse files
committed
chore: bump version to 1.1.17 and updated dist
1 parent 7232110 commit 43c5770

File tree

8 files changed

+54
-22
lines changed

8 files changed

+54
-22
lines changed

dist/components/proxy-middleware/helpers/proxy_ctx_helper.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ const get_original_request_headers = (ctx) => {
1919
};
2020
exports.get_original_request_headers = get_original_request_headers;
2121
const get_original_response_headers = (ctx) => {
22+
var _a;
2223
// TODO: This needs to be fetched from ctx.clientToProxy headers
23-
return ctx.serverToProxyResponse.headers;
24+
return ((_a = ctx === null || ctx === void 0 ? void 0 : ctx.serverToProxyResponse) === null || _a === void 0 ? void 0 : _a.headers) || {};
2425
};
2526
exports.get_original_response_headers = get_original_response_headers;
2627
const is_request_preflight = (ctx) => {

dist/components/proxy-middleware/index.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,28 @@ class ProxyMiddlewareManager {
8787
// Figure out a way to enable/disable middleware dynamically
8888
// instead of re-initing this again
8989
const rules_middleware = new rules_middleware_1.default(this.config[exports.MIDDLEWARE_TYPE.RULES], ctx, this.rulesHelper);
90+
ctx.onError(function (ctx, err, kind, callback) {
91+
return __awaiter(this, void 0, void 0, function* () {
92+
// Should only modify response body & headers
93+
ctx.rq_response_body = "" + kind + ": " + err, "utf8";
94+
const { action_result_objs, continue_request } = yield rules_middleware.on_response(ctx);
95+
// Only modify response if any modify_response action is applied
96+
const modifyResponseActionExist = action_result_objs.some((action_result_obj) => { var _a; return ((_a = action_result_obj === null || action_result_obj === void 0 ? void 0 : action_result_obj.action) === null || _a === void 0 ? void 0 : _a.action) === "modify_response"; });
97+
if (modifyResponseActionExist) {
98+
const statusCode = ctx.rq_response_status_code || 404;
99+
const responseHeaders = (0, proxy_ctx_helper_1.getResponseHeaders)(ctx) || {};
100+
ctx.proxyToClientResponse.writeHead(statusCode, http_1.default.STATUS_CODES[statusCode], responseHeaders);
101+
ctx.proxyToClientResponse.end(ctx.rq_response_body);
102+
ctx.rq.set_final_response({
103+
status_code: statusCode,
104+
headers: responseHeaders,
105+
body: ctx.rq_response_body,
106+
});
107+
logger_middleware.send_network_log(ctx, rules_middleware.action_result_objs, requestly_core_1.CONSTANTS.REQUEST_STATE.COMPLETE);
108+
}
109+
return callback();
110+
});
111+
});
90112
let request_body_chunks = [];
91113
ctx.onRequestData(function (ctx, chunk, callback) {
92114
return __awaiter(this, void 0, void 0, function* () {

dist/components/proxy-middleware/rule_action_processor/processors/modify_header_processor.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ const process_modify_header_action = (action, ctx) => {
77
const allowed_handlers = [
88
proxy_1.PROXY_HANDLER_TYPE.ON_REQUEST,
99
proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE,
10+
proxy_1.PROXY_HANDLER_TYPE.ON_ERROR,
1011
];
1112
if (!allowed_handlers.includes(ctx.currentHandler)) {
1213
return (0, utils_1.build_action_processor_response)(action, false);
1314
}
1415
if (ctx.currentHandler == proxy_1.PROXY_HANDLER_TYPE.ON_REQUEST) {
1516
modify_request_headers(action, ctx);
1617
}
17-
else if (ctx.currentHandler == proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE) {
18+
else if (ctx.currentHandler === proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE || ctx.currentHandler === proxy_1.PROXY_HANDLER_TYPE.ON_ERROR) {
1819
modify_response_headers(action, ctx);
1920
}
2021
return (0, utils_1.build_action_processor_response)(action, true);
@@ -30,6 +31,8 @@ const modify_request_headers = (action, ctx) => {
3031
newRequestHeaders.forEach((pair) => (ctx.proxyToServerRequestOptions.headers[pair.name] = pair.value));
3132
};
3233
const modify_response_headers = (action, ctx) => {
34+
ctx.serverToProxyResponse = ctx.serverToProxyResponse || {};
35+
ctx.serverToProxyResponse.headers = ctx.serverToProxyResponse.headers || {};
3336
// {"header1":"val1", "header2":"val2"}
3437
const originalResponseHeadersObject = ctx.serverToProxyResponse.headers;
3538
// ["header1","header2"]

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const capture_console_logs_1 = __importDefault(require("capture-console-logs"));
2222
const utils_2 = require("../../../../utils");
2323
const { types } = require("util");
2424
const process_modify_response_action = (action, ctx) => __awaiter(void 0, void 0, void 0, function* () {
25-
const allowed_handlers = [proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE_END];
25+
const allowed_handlers = [proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE_END, proxy_1.PROXY_HANDLER_TYPE.ON_ERROR];
2626
if (!allowed_handlers.includes(ctx.currentHandler)) {
2727
return (0, utils_1.build_action_processor_response)(action, false);
2828
}
@@ -55,7 +55,7 @@ const modify_response_using_local = (action, ctx) => {
5555
}
5656
};
5757
const modify_response_using_code = (action, ctx) => __awaiter(void 0, void 0, void 0, function* () {
58-
var _a, _b;
58+
var _a, _b, _c, _d;
5959
let userFunction = null;
6060
try {
6161
userFunction = (0, utils_2.getFunctionFromString)(action.response);
@@ -78,16 +78,16 @@ const modify_response_using_code = (action, ctx) => __awaiter(void 0, void 0, vo
7878
? ctx.clientToProxyRequest.method
7979
: null
8080
: null,
81-
response: ctx.rq_response_body,
81+
response: ctx === null || ctx === void 0 ? void 0 : ctx.rq_response_body,
8282
url: (0, proxy_ctx_helper_1.get_request_url)(ctx),
83-
responseType: ctx.serverToProxyResponse.headers["content-type"],
83+
responseType: (_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.serverToProxyResponse) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b["content-type"],
8484
requestHeaders: ctx.clientToProxyRequest.headers,
85-
requestData: (0, http_helpers_1.parseJsonBody)((_b = (_a = ctx.rq) === null || _a === void 0 ? void 0 : _a.final_request) === null || _b === void 0 ? void 0 : _b.body) || null,
85+
requestData: (0, http_helpers_1.parseJsonBody)((_d = (_c = ctx.rq) === null || _c === void 0 ? void 0 : _c.final_request) === null || _d === void 0 ? void 0 : _d.body) || null,
8686
};
8787
try {
8888
args.responseJSON = JSON.parse(args.response);
8989
}
90-
catch (_c) {
90+
catch (_e) {
9191
/*Do nothing -- could not parse body as JSON */
9292
}
9393
const consoleCapture = new capture_console_logs_1.default();

dist/lib/proxy/lib/proxy.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ declare const PROXY_HANDLER_TYPE: {
3131
ON_RESPONSE_HEADERS: string;
3232
ON_RESPONSE_DATA: string;
3333
ON_RESPONSE_END: string;
34+
ON_ERROR: string;
3435
};
3536
declare var ProxyFinalRequestFilter: (proxy: any, ctx: any) => void;
3637
declare var ProxyFinalResponseFilter: (proxy: any, ctx: any) => any;

dist/lib/proxy/lib/proxy.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ const PROXY_HANDLER_TYPE = {
4949
ON_RESPONSE_HEADERS: "ON_RESPONSE_HEADERS",
5050
ON_RESPONSE_DATA: "ON_RESPONSE_DATA",
5151
ON_RESPONSE_END: "ON_RESPONSE_END",
52+
ON_ERROR: "ON_ERROR",
5253
};
5354
module.exports.PROXY_HANDLER_TYPE = PROXY_HANDLER_TYPE;
5455
Proxy.prototype.listen = function (options, callback = (e) => { }) {
@@ -561,20 +562,24 @@ Proxy.prototype.onCertificateMissing = function (ctx, files, callback) {
561562
return this;
562563
};
563564
Proxy.prototype._onError = function (kind, ctx, err) {
564-
this.onErrorHandlers.forEach(function (handler) {
565-
return handler(ctx, err, kind);
566-
});
567565
if (ctx) {
568-
ctx.onErrorHandlers.forEach(function (handler) {
569-
return handler(ctx, err, kind);
570-
});
571-
if (ctx.proxyToClientResponse && !ctx.proxyToClientResponse.headersSent) {
572-
ctx.proxyToClientResponse.writeHead(504, "Proxy Error");
566+
ctx.currentHandler = PROXY_HANDLER_TYPE.ON_ERROR;
567+
}
568+
async.forEach(this.onErrorHandlers.concat((ctx === null || ctx === void 0 ? void 0 : ctx.onErrorHandlers) || []), function (fn, callback) {
569+
if (fn) {
570+
return fn(ctx, err, kind, callback);
573571
}
574-
if (ctx.proxyToClientResponse && !ctx.proxyToClientResponse.finished) {
575-
ctx.proxyToClientResponse.end("" + kind + ": " + err, "utf8");
572+
callback();
573+
}, function () {
574+
if (ctx) {
575+
if (ctx.proxyToClientResponse && !ctx.proxyToClientResponse.headersSent) {
576+
ctx.proxyToClientResponse.writeHead(504, "Proxy Error");
577+
}
578+
if (ctx.proxyToClientResponse && !ctx.proxyToClientResponse.finished) {
579+
ctx.proxyToClientResponse.end("" + kind + ": " + err, "utf8");
580+
}
576581
}
577-
}
582+
});
578583
};
579584
Proxy.prototype._onWebSocketServerConnect = function (isSSL, ws, upgradeReq) {
580585
var self = this;

package-lock.json

Lines changed: 2 additions & 2 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 & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@requestly/requestly-proxy",
3-
"version": "1.1.16",
3+
"version": "1.1.17",
44
"description": "Proxy that gives superpowers to all the Requestly clients",
55
"main": "dist/index.js",
66
"scripts": {

0 commit comments

Comments
 (0)