@n8n/backend-network 1.1.3 → 1.2.1
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/build.tsbuildinfo +1 -1
- package/dist/http/axios/invoke.d.ts +2 -0
- package/dist/http/axios/invoke.js +30 -0
- package/dist/http/axios/invoke.js.map +1 -0
- package/dist/http/axios/legacy.d.ts +2 -0
- package/dist/http/axios/legacy.js +14 -9
- package/dist/http/axios/legacy.js.map +1 -1
- package/dist/http/axios/redirect.d.ts +14 -0
- package/dist/http/axios/redirect.js +120 -0
- package/dist/http/axios/redirect.js.map +1 -0
- package/dist/http/axios/request.d.ts +0 -1
- package/dist/http/axios/request.js +16 -31
- package/dist/http/axios/request.js.map +1 -1
- package/dist/http/axios/utils.d.ts +7 -2
- package/dist/http/axios/utils.js +32 -0
- package/dist/http/axios/utils.js.map +1 -1
- package/dist/http/binary-buffer.d.ts +1 -1
- package/dist/http/binary-buffer.js +47 -9
- package/dist/http/binary-buffer.js.map +1 -1
- package/dist/http/client-default-headers.d.ts +4 -0
- package/dist/http/client-default-headers.js +24 -0
- package/dist/http/client-default-headers.js.map +1 -0
- package/dist/http/client-options.d.ts +7 -0
- package/dist/http/client-options.js +3 -0
- package/dist/http/client-options.js.map +1 -0
- package/dist/http/client-request-error.d.ts +11 -0
- package/dist/http/client-request-error.js +37 -0
- package/dist/http/client-request-error.js.map +1 -0
- package/dist/http/http-proxy.d.ts +1 -0
- package/dist/http/http-proxy.js +6 -5
- package/dist/http/http-proxy.js.map +1 -1
- package/dist/http/index.d.ts +5 -2
- package/dist/http/index.js +6 -1
- package/dist/http/index.js.map +1 -1
- package/dist/http/legacy-request.js +12 -2
- package/dist/http/legacy-request.js.map +1 -1
- package/dist/http/node-agents.d.ts +1 -1
- package/dist/http/node-agents.js +3 -1
- package/dist/http/node-agents.js.map +1 -1
- package/dist/http/outbound-http.d.ts +4 -5
- package/dist/http/outbound-http.js +25 -6
- package/dist/http/outbound-http.js.map +1 -1
- package/dist/http/undici/transport.d.ts +18 -1
- package/dist/http/undici/transport.js +47 -7
- package/dist/http/undici/transport.js.map +1 -1
- package/dist/transport.d.ts +4 -0
- package/dist/transport.js +10 -0
- package/dist/transport.js.map +1 -0
- package/package.json +19 -11
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withClientDefaults = withClientDefaults;
|
|
4
|
+
function withClientDefaults(requestOptions, baseURL, headers) {
|
|
5
|
+
if (baseURL === undefined && headers === undefined) {
|
|
6
|
+
return requestOptions;
|
|
7
|
+
}
|
|
8
|
+
const merged = { ...requestOptions };
|
|
9
|
+
if (baseURL !== undefined && merged.baseURL === undefined) {
|
|
10
|
+
merged.baseURL = baseURL;
|
|
11
|
+
}
|
|
12
|
+
if (headers !== undefined) {
|
|
13
|
+
const defaults = typeof headers === 'function' ? headers() : headers;
|
|
14
|
+
const combined = { ...defaults, ...requestOptions.headers };
|
|
15
|
+
for (const key of Object.keys(combined)) {
|
|
16
|
+
if (combined[key] === undefined) {
|
|
17
|
+
delete combined[key];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
merged.headers = combined;
|
|
21
|
+
}
|
|
22
|
+
return merged;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=client-default-headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-default-headers.js","sourceRoot":"","sources":["../../src/http/client-default-headers.ts"],"names":[],"mappings":";;AAgBA,gDA2BC;AA3BD,SAAgB,kBAAkB,CACjC,cAAmC,EACnC,OAA4C,EAC5C,OAA4C;IAE5C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAwB,EAAE,GAAG,cAAc,EAAE,CAAC;IAE1D,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACrE,MAAM,QAAQ,GAA4B,EAAE,GAAG,QAAQ,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;QACrF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;QACF,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,QAA0C,CAAC;IAC7D,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { HttpRequestDefaultHeaders } from './client-default-headers';
|
|
2
|
+
import type { SsrfOption } from './node-agents';
|
|
3
|
+
export interface HttpRequestClientOptions {
|
|
4
|
+
ssrf?: SsrfOption;
|
|
5
|
+
baseURL?: string;
|
|
6
|
+
headers?: HttpRequestDefaultHeaders | (() => HttpRequestDefaultHeaders);
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-options.js","sourceRoot":"","sources":["../../src/http/client-options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function isConnectionRefusedError(error: unknown): boolean;
|
|
2
|
+
export declare function httpStatusFromError(error: unknown): number | undefined;
|
|
3
|
+
export interface HttpRequestError extends Error {
|
|
4
|
+
code?: string;
|
|
5
|
+
response?: {
|
|
6
|
+
status?: number;
|
|
7
|
+
data?: unknown;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare function markHttpRequestError<E>(error: E): E;
|
|
11
|
+
export declare function isHttpRequestError(error: unknown): error is HttpRequestError;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isConnectionRefusedError = isConnectionRefusedError;
|
|
4
|
+
exports.httpStatusFromError = httpStatusFromError;
|
|
5
|
+
exports.markHttpRequestError = markHttpRequestError;
|
|
6
|
+
exports.isHttpRequestError = isHttpRequestError;
|
|
7
|
+
function isConnectionRefusedError(error) {
|
|
8
|
+
return (typeof error === 'object' &&
|
|
9
|
+
error !== null &&
|
|
10
|
+
'code' in error &&
|
|
11
|
+
error.code === 'ECONNREFUSED');
|
|
12
|
+
}
|
|
13
|
+
function httpStatusFromError(error) {
|
|
14
|
+
if (typeof error === 'object' && error !== null && 'response' in error) {
|
|
15
|
+
const response = error.response;
|
|
16
|
+
if (response && typeof response.status === 'number') {
|
|
17
|
+
return response.status;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const HTTP_REQUEST_ERROR = Symbol.for('n8n.backend-network.http-request-error');
|
|
23
|
+
function markHttpRequestError(error) {
|
|
24
|
+
if (typeof error === 'object' && error !== null) {
|
|
25
|
+
Object.defineProperty(error, HTTP_REQUEST_ERROR, {
|
|
26
|
+
value: true,
|
|
27
|
+
enumerable: false,
|
|
28
|
+
configurable: true,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return error;
|
|
32
|
+
}
|
|
33
|
+
function isHttpRequestError(error) {
|
|
34
|
+
return (error instanceof Error &&
|
|
35
|
+
error[HTTP_REQUEST_ERROR] === true);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=client-request-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-request-error.js","sourceRoot":"","sources":["../../src/http/client-request-error.ts"],"names":[],"mappings":";;AAYA,4DAOC;AAKD,kDAQC;AAuBD,oDASC;AAOD,gDAKC;AAhED,SAAgB,wBAAwB,CAAC,KAAc;IACtD,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA4B,CAAC,IAAI,KAAK,cAAc,CACrD,CAAC;AACH,CAAC;AAKD,SAAgB,mBAAmB,CAAC,KAAc;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QACxE,MAAM,QAAQ,GAAI,KAA6C,CAAC,QAAQ,CAAC;QACzE,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,QAAQ,CAAC,MAAM,CAAC;QACxB,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAgBD,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;AAOhF,SAAgB,oBAAoB,CAAI,KAAQ;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,kBAAkB,EAAE;YAChD,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;SAClB,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAOD,SAAgB,kBAAkB,CAAC,KAAc;IAChD,OAAO,CACN,KAAK,YAAY,KAAK;QACrB,KAA4C,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAC1E,CAAC;AACH,CAAC"}
|
|
@@ -3,5 +3,6 @@ import https from 'https';
|
|
|
3
3
|
export declare function resolveProxyUrl(targetUrl: string): string | undefined;
|
|
4
4
|
export declare function createHttpProxyAgent(customProxyUrl: string | null | undefined, targetUrl: string, options?: http.AgentOptions): http.Agent;
|
|
5
5
|
export declare function createHttpsProxyAgent(customProxyUrl: string | null | undefined, targetUrl: string, options?: https.AgentOptions): https.Agent;
|
|
6
|
+
export declare function hasProxyEnvironmentVariables(): boolean;
|
|
6
7
|
export declare function installGlobalProxyAgent(): void;
|
|
7
8
|
export declare function uninstallGlobalProxyAgent(): void;
|
package/dist/http/http-proxy.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.resolveProxyUrl = resolveProxyUrl;
|
|
7
7
|
exports.createHttpProxyAgent = createHttpProxyAgent;
|
|
8
8
|
exports.createHttpsProxyAgent = createHttpsProxyAgent;
|
|
9
|
+
exports.hasProxyEnvironmentVariables = hasProxyEnvironmentVariables;
|
|
9
10
|
exports.installGlobalProxyAgent = installGlobalProxyAgent;
|
|
10
11
|
exports.uninstallGlobalProxyAgent = uninstallGlobalProxyAgent;
|
|
11
12
|
const http_1 = __importDefault(require("http"));
|
|
@@ -34,11 +35,11 @@ function createHttpsProxyAgent(customProxyUrl = null, targetUrl, options) {
|
|
|
34
35
|
return new https_1.default.Agent(options);
|
|
35
36
|
}
|
|
36
37
|
function hasProxyEnvironmentVariables() {
|
|
37
|
-
return Boolean(process.env.HTTP_PROXY
|
|
38
|
-
process.env.http_proxy
|
|
39
|
-
process.env.HTTPS_PROXY
|
|
40
|
-
process.env.https_proxy
|
|
41
|
-
process.env.ALL_PROXY
|
|
38
|
+
return Boolean(process.env.HTTP_PROXY ||
|
|
39
|
+
process.env.http_proxy ||
|
|
40
|
+
process.env.HTTPS_PROXY ||
|
|
41
|
+
process.env.https_proxy ||
|
|
42
|
+
process.env.ALL_PROXY ||
|
|
42
43
|
process.env.all_proxy);
|
|
43
44
|
}
|
|
44
45
|
function installGlobalProxyAgent() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-proxy.js","sourceRoot":"","sources":["../../src/http/http-proxy.ts"],"names":[],"mappings":";;;;;AAiBA,0CAEC;AAED,oDAYC;AAED,sDAYC;
|
|
1
|
+
{"version":3,"file":"http-proxy.js","sourceRoot":"","sources":["../../src/http/http-proxy.ts"],"names":[],"mappings":";;;;;AAiBA,0CAEC;AAED,oDAYC;AAED,sDAYC;AAGD,oEASC;AAED,0DAcC;AAED,8DAGC;AAhFD,gDAAwB;AACxB,uDAAkD;AAClD,kDAA0B;AAC1B,yDAAoD;AACpD,+CAA2C;AAC3C,mDAAgD;AAEhD,iEAA2D;AAC3D,mEAA6D;AAS7D,SAAgB,eAAe,CAAC,SAAiB;IAChD,OAAO,IAAA,+BAAc,EAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AAC/C,CAAC;AAED,SAAgB,oBAAoB,CACnC,iBAAgC,IAAI,EACpC,SAAiB,EACjB,OAA2B;IAE3B,MAAM,QAAQ,GAAG,cAAc,IAAI,IAAA,+BAAc,EAAC,SAAS,CAAC,CAAC;IAE7D,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,iCAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,cAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,qBAAqB,CACpC,iBAAgC,IAAI,EACpC,SAAiB,EACjB,OAA4B;IAE5B,MAAM,QAAQ,GAAG,cAAc,IAAI,IAAA,+BAAc,EAAC,SAAS,CAAC,CAAC;IAE7D,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,mCAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,IAAI,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAGD,SAAgB,4BAA4B;IAC3C,OAAO,OAAO,CACb,OAAO,CAAC,GAAG,CAAC,UAAU;QACrB,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,SAAS;QACrB,OAAO,CAAC,GAAG,CAAC,SAAS,CACtB,CAAC;AACH,CAAC;AAED,SAAgB,uBAAuB;IACtC,IAAI,4BAA4B,EAAE,EAAE,CAAC;QACpC,0BAAW,CAAC,KAAK,CAAC,qCAAqC,EAAE;YACxD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU;YAC5D,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;YAC/D,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;YACtD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS;SACzD,CAAC,CAAC;QAIH,cAAI,CAAC,WAAW,GAAG,IAAI,wCAAiB,EAAE,CAAC;QAC3C,eAAK,CAAC,WAAW,GAAG,IAAI,0CAAkB,EAAE,CAAC;IAC9C,CAAC;AACF,CAAC;AAED,SAAgB,yBAAyB;IACxC,cAAI,CAAC,WAAW,GAAG,IAAI,cAAI,CAAC,KAAK,EAAE,CAAC;IACpC,eAAK,CAAC,WAAW,GAAG,IAAI,eAAK,CAAC,KAAK,EAAE,CAAC;AACvC,CAAC"}
|
package/dist/http/index.d.ts
CHANGED
|
@@ -6,6 +6,9 @@ export { parseIncomingMessage } from './parse-incoming-message';
|
|
|
6
6
|
export { binaryToBuffer, streamToBuffer } from './binary-buffer';
|
|
7
7
|
export { binaryToString } from './binary-string';
|
|
8
8
|
export type { NodeAgentOptions, ProxyOption, ProxyUrl, SsrfOption } from './node-agents';
|
|
9
|
-
export type { CustomFetch } from './undici/transport';
|
|
10
|
-
export { OutboundHttp, type HttpRequestClient, type
|
|
9
|
+
export type { CustomFetch, RequestAuthorizer } from './undici/transport';
|
|
10
|
+
export { OutboundHttp, type HttpRequestClient, type HttpTransport, type HttpTransportOptions, } from './outbound-http';
|
|
11
|
+
export { httpStatusFromError, isConnectionRefusedError, isHttpRequestError, markHttpRequestError, type HttpRequestError, } from './client-request-error';
|
|
12
|
+
export type { HttpRequestDefaultHeaders } from './client-default-headers';
|
|
13
|
+
export type { HttpRequestClientOptions } from './client-options';
|
|
11
14
|
export type { LegacyRequestCallbacks } from './legacy-request';
|
package/dist/http/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OutboundHttp = exports.binaryToString = exports.streamToBuffer = exports.binaryToBuffer = exports.parseIncomingMessage = exports.removeEmptyBody = exports.httpRequest = exports.tryParseUrl = exports.configureGlobalAxiosDefaults = exports.resolveProxyUrl = exports.installGlobalProxyAgent = exports.createHttpsProxyAgent = exports.createHttpProxyAgent = void 0;
|
|
3
|
+
exports.markHttpRequestError = exports.isHttpRequestError = exports.isConnectionRefusedError = exports.httpStatusFromError = exports.OutboundHttp = exports.binaryToString = exports.streamToBuffer = exports.binaryToBuffer = exports.parseIncomingMessage = exports.removeEmptyBody = exports.httpRequest = exports.tryParseUrl = exports.configureGlobalAxiosDefaults = exports.resolveProxyUrl = exports.installGlobalProxyAgent = exports.createHttpsProxyAgent = exports.createHttpProxyAgent = void 0;
|
|
4
4
|
var http_proxy_1 = require("./http-proxy");
|
|
5
5
|
Object.defineProperty(exports, "createHttpProxyAgent", { enumerable: true, get: function () { return http_proxy_1.createHttpProxyAgent; } });
|
|
6
6
|
Object.defineProperty(exports, "createHttpsProxyAgent", { enumerable: true, get: function () { return http_proxy_1.createHttpsProxyAgent; } });
|
|
@@ -22,4 +22,9 @@ var binary_string_1 = require("./binary-string");
|
|
|
22
22
|
Object.defineProperty(exports, "binaryToString", { enumerable: true, get: function () { return binary_string_1.binaryToString; } });
|
|
23
23
|
var outbound_http_1 = require("./outbound-http");
|
|
24
24
|
Object.defineProperty(exports, "OutboundHttp", { enumerable: true, get: function () { return outbound_http_1.OutboundHttp; } });
|
|
25
|
+
var client_request_error_1 = require("./client-request-error");
|
|
26
|
+
Object.defineProperty(exports, "httpStatusFromError", { enumerable: true, get: function () { return client_request_error_1.httpStatusFromError; } });
|
|
27
|
+
Object.defineProperty(exports, "isConnectionRefusedError", { enumerable: true, get: function () { return client_request_error_1.isConnectionRefusedError; } });
|
|
28
|
+
Object.defineProperty(exports, "isHttpRequestError", { enumerable: true, get: function () { return client_request_error_1.isHttpRequestError; } });
|
|
29
|
+
Object.defineProperty(exports, "markHttpRequestError", { enumerable: true, get: function () { return client_request_error_1.markHttpRequestError; } });
|
|
25
30
|
//# sourceMappingURL=index.js.map
|
package/dist/http/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":";;;AAAA,2CAKsB;AAJrB,kHAAA,oBAAoB,OAAA;AACpB,mHAAA,qBAAqB,OAAA;AACrB,qHAAA,uBAAuB,OAAA;AACvB,6GAAA,eAAe,OAAA;AAEhB,yCAA8D;AAArD,sHAAA,4BAA4B,OAAA;AACrC,uCAA4C;AAAnC,oGAAA,WAAW,OAAA;AACpB,2CAA+D;AAAtD,sGAAA,WAAW,OAAA;AAAE,0GAAA,eAAe,OAAA;AACrC,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA;AAC7B,iDAAiE;AAAxD,+GAAA,cAAc,OAAA;AAAE,+GAAA,cAAc,OAAA;AACvC,iDAAiD;AAAxC,+GAAA,cAAc,OAAA;AAGvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":";;;AAAA,2CAKsB;AAJrB,kHAAA,oBAAoB,OAAA;AACpB,mHAAA,qBAAqB,OAAA;AACrB,qHAAA,uBAAuB,OAAA;AACvB,6GAAA,eAAe,OAAA;AAEhB,yCAA8D;AAArD,sHAAA,4BAA4B,OAAA;AACrC,uCAA4C;AAAnC,oGAAA,WAAW,OAAA;AACpB,2CAA+D;AAAtD,sGAAA,WAAW,OAAA;AAAE,0GAAA,eAAe,OAAA;AACrC,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA;AAC7B,iDAAiE;AAAxD,+GAAA,cAAc,OAAA;AAAE,+GAAA,cAAc,OAAA;AACvC,iDAAiD;AAAxC,+GAAA,cAAc,OAAA;AAGvB,iDAKyB;AAJxB,6GAAA,YAAY,OAAA;AAKb,+DAMgC;AAL/B,2HAAA,mBAAmB,OAAA;AACnB,gIAAA,wBAAwB,OAAA;AACxB,0HAAA,kBAAkB,OAAA;AAClB,4HAAA,oBAAoB,OAAA"}
|
|
@@ -4,8 +4,9 @@ exports.executeLegacyRequest = executeLegacyRequest;
|
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
5
|
const node_http_1 = require("node:http");
|
|
6
6
|
const node_stream_1 = require("node:stream");
|
|
7
|
+
const invoke_1 = require("./axios/invoke");
|
|
7
8
|
const legacy_1 = require("./axios/legacy");
|
|
8
|
-
const
|
|
9
|
+
const redirect_1 = require("./axios/redirect");
|
|
9
10
|
const utils_1 = require("./axios/utils");
|
|
10
11
|
const binary_string_1 = require("./binary-string");
|
|
11
12
|
const parse_incoming_message_1 = require("./parse-incoming-message");
|
|
@@ -19,7 +20,16 @@ async function executeLegacyRequest(requestObject, ssrfBridge, logger, callbacks
|
|
|
19
20
|
axiosConfig = Object.assign(axiosConfig, await (0, legacy_1.buildAxiosConfigFromLegacyRequest)(requestObject, ssrfBridge));
|
|
20
21
|
(0, utils_1.throwIfDomainNotAllowed)(axiosConfig, requestObject.allowedDomains);
|
|
21
22
|
try {
|
|
22
|
-
const response =
|
|
23
|
+
const response = (0, redirect_1.shouldFollowRedirectsManually)(axiosConfig, requestObject.proxy, ssrfBridge)
|
|
24
|
+
? await (0, redirect_1.followSsrfRedirects)(axiosConfig, {
|
|
25
|
+
ssrf: ssrfBridge,
|
|
26
|
+
proxyConfig: requestObject.proxy,
|
|
27
|
+
agentOptions: (0, legacy_1.buildLegacyAgentOptions)(requestObject),
|
|
28
|
+
allowedDomains: requestObject.allowedDomains,
|
|
29
|
+
sendCredentialsOnCrossOriginRedirect: requestObject.sendCredentialsOnCrossOriginRedirect ?? true,
|
|
30
|
+
authSendImmediately: requestObject.auth?.sendImmediately,
|
|
31
|
+
})
|
|
32
|
+
: await (0, invoke_1.invokeAxios)(axiosConfig, requestObject.auth?.sendImmediately);
|
|
23
33
|
let body = response.data;
|
|
24
34
|
if (body instanceof node_http_1.IncomingMessage && axiosConfig.responseType === 'stream') {
|
|
25
35
|
(0, parse_incoming_message_1.parseIncomingMessage)(body);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-request.js","sourceRoot":"","sources":["../../src/http/legacy-request.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"legacy-request.js","sourceRoot":"","sources":["../../src/http/legacy-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import http from 'node:http';
|
|
|
2
2
|
import https from 'node:https';
|
|
3
3
|
import type { SsrfBridge } from '../ssrf';
|
|
4
4
|
export type ProxyUrl = `${'http' | 'https'}://${string}`;
|
|
5
|
-
export declare function isSupportedProxyUrl(value: string): value is ProxyUrl;
|
|
5
|
+
export declare function isSupportedProxyUrl(value: string | null | undefined): value is ProxyUrl;
|
|
6
6
|
export type ProxyOption = 'env' | ProxyUrl | false;
|
|
7
7
|
export type SsrfOption = SsrfBridge | 'disabled';
|
|
8
8
|
export type NodeAgentOptions = https.AgentOptions;
|
package/dist/http/node-agents.js
CHANGED
|
@@ -14,7 +14,9 @@ const node_https_1 = __importDefault(require("node:https"));
|
|
|
14
14
|
const env_proxy_http_agent_1 = require("./env-proxy-http-agent");
|
|
15
15
|
const env_proxy_https_agent_1 = require("./env-proxy-https-agent");
|
|
16
16
|
function isSupportedProxyUrl(value) {
|
|
17
|
-
return value
|
|
17
|
+
return (value !== null &&
|
|
18
|
+
value !== undefined &&
|
|
19
|
+
(value.startsWith('http://') || value.startsWith('https://')));
|
|
18
20
|
}
|
|
19
21
|
function buildNodeAgents(proxy, ssrf, agentOptions) {
|
|
20
22
|
if (agentOptions?.lookup) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-agents.js","sourceRoot":"","sources":["../../src/http/node-agents.ts"],"names":[],"mappings":";;;;;AAsBA,
|
|
1
|
+
{"version":3,"file":"node-agents.js","sourceRoot":"","sources":["../../src/http/node-agents.ts"],"names":[],"mappings":";;;;;AAsBA,kDAMC;AAsCD,0CAuCC;AA+BD,wDAmBC;AA3JD,uDAAkD;AAClD,yDAAoD;AACpD,+CAA+C;AAC/C,0DAA6B;AAC7B,4DAA+B;AAG/B,iEAA2D;AAC3D,mEAA6D;AAc7D,SAAgB,mBAAmB,CAAC,KAAgC;IACnE,OAAO,CACN,KAAK,KAAK,IAAI;QACd,KAAK,KAAK,SAAS;QACnB,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAC7D,CAAC;AACH,CAAC;AAsCD,SAAgB,eAAe,CAC9B,KAAkB,EAClB,IAAgB,EAChB,YAA+B;IAE/B,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,8BAAe,CACxB,sHAAsH,CACtH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GACX,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7D,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,oBAAoB,CAC1B;YACC,SAAS,EAAE,IAAI,mBAAI,CAAC,KAAK,CAAC,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC;YACtD,UAAU,EAAE,IAAI,oBAAK,CAAC,KAAK,CAAC,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC;SACxD,EACD,IAAI,CACJ,CAAC;IACH,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,oBAAoB,CAC1B;YACC,SAAS,EAAE,IAAI,wCAAiB,CAAC,MAAM,EAAE,YAAY,CAAC;YACtD,UAAU,EAAE,IAAI,0CAAkB,CAAC,MAAM,EAAE,YAAY,CAAC;SACxD,EACD,IAAI,CACJ,CAAC;IACH,CAAC;IAGD,OAAO;QACN,SAAS,EAAE,IAAI,iCAAc,CAAC,KAAe,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC;QACnE,UAAU,EAAE,IAAI,mCAAe,CAAC,KAAe,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC;KACrE,CAAC;AACH,CAAC;AAgBD,SAAS,oBAAoB,CAC5B,MAA0D,EAC1D,IAAgB;IAEhB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACzB,sBAAsB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/C,sBAAsB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAMD,SAAgB,sBAAsB,CACrC,MAA8C,EAC9C,IAAgB;IAEhB,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC3D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChB,IAAI,SAAS,EAAE,CAAC;oBACf,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxB,OAAO,SAAS,CAAC;gBAClB,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,CAAC;YACpB,CAAC;QACF,CAAC;QACD,OAAO,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -3,17 +3,16 @@ import type { IHttpRequestOptions, IN8nHttpFullResponse, IN8nHttpResponse, IRequ
|
|
|
3
3
|
import type http from 'node:http';
|
|
4
4
|
import type https from 'node:https';
|
|
5
5
|
import type { Dispatcher } from 'undici';
|
|
6
|
+
import { SsrfProtectionService } from '../ssrf';
|
|
7
|
+
import { HttpRequestClientOptions } from './client-options';
|
|
6
8
|
import { type LegacyRequestCallbacks } from './legacy-request';
|
|
7
9
|
import type { NodeAgentOptions, ProxyOption, SsrfOption } from './node-agents';
|
|
8
|
-
import {
|
|
9
|
-
import { type CustomFetch, type TransportTimeoutOptions } from './undici/transport';
|
|
10
|
-
export interface HttpRequestClientOptions {
|
|
11
|
-
ssrf?: SsrfOption;
|
|
12
|
-
}
|
|
10
|
+
import { type CustomFetch, type RequestAuthorizer, type TransportTimeoutOptions } from './undici/transport';
|
|
13
11
|
export interface HttpTransportOptions {
|
|
14
12
|
proxy?: ProxyOption;
|
|
15
13
|
ssrf?: SsrfOption;
|
|
16
14
|
timeouts?: TransportTimeoutOptions;
|
|
15
|
+
authorize?: RequestAuthorizer;
|
|
17
16
|
}
|
|
18
17
|
export interface HttpRequestClient {
|
|
19
18
|
request(options: IHttpRequestOptions & {
|
|
@@ -12,10 +12,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.OutboundHttp = void 0;
|
|
13
13
|
const backend_common_1 = require("@n8n/backend-common");
|
|
14
14
|
const di_1 = require("@n8n/di");
|
|
15
|
+
const ssrf_1 = require("../ssrf");
|
|
15
16
|
const request_1 = require("./axios/request");
|
|
17
|
+
const client_default_headers_1 = require("./client-default-headers");
|
|
18
|
+
const client_request_error_1 = require("./client-request-error");
|
|
16
19
|
const legacy_request_1 = require("./legacy-request");
|
|
17
20
|
const node_agents_1 = require("./node-agents");
|
|
18
|
-
const ssrf_1 = require("../ssrf");
|
|
19
21
|
const transport_1 = require("./undici/transport");
|
|
20
22
|
let OutboundHttp = class OutboundHttp {
|
|
21
23
|
constructor(ssrfProtection, logger) {
|
|
@@ -25,20 +27,37 @@ let OutboundHttp = class OutboundHttp {
|
|
|
25
27
|
requests(options) {
|
|
26
28
|
const ssrf = options?.ssrf ?? this.ssrfProtection;
|
|
27
29
|
const ssrfBridge = ssrf === 'disabled' ? undefined : ssrf;
|
|
30
|
+
const applyDefaults = (requestOptions) => (0, client_default_headers_1.withClientDefaults)(requestOptions, options?.baseURL, options?.headers);
|
|
31
|
+
async function request(requestOptions) {
|
|
32
|
+
try {
|
|
33
|
+
return await (0, request_1.httpRequest)(applyDefaults(requestOptions), ssrfBridge);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw (0, client_request_error_1.markHttpRequestError)(error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
28
39
|
return {
|
|
29
|
-
request
|
|
30
|
-
requestLegacy: async (requestOptions, callbacks) =>
|
|
40
|
+
request,
|
|
41
|
+
requestLegacy: async (requestOptions, callbacks) => {
|
|
42
|
+
try {
|
|
43
|
+
return await (0, legacy_request_1.executeLegacyRequest)(requestOptions, ssrfBridge, this.logger, callbacks);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
throw (0, client_request_error_1.markHttpRequestError)(error);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
31
49
|
};
|
|
32
50
|
}
|
|
33
51
|
transport(options) {
|
|
34
52
|
const proxy = options?.proxy ?? 'env';
|
|
35
53
|
const ssrf = options?.ssrf ?? this.ssrfProtection;
|
|
36
54
|
const timeouts = options?.timeouts;
|
|
37
|
-
const
|
|
55
|
+
const authorize = options?.authorize;
|
|
56
|
+
const dispatcherTransport = (0, transport_1.createDispatcherTransport)({ proxy, ssrf, timeouts, authorize });
|
|
38
57
|
const lazyNodeAgents = lazy(() => (0, node_agents_1.buildNodeAgents)(proxy, ssrf));
|
|
39
58
|
return {
|
|
40
|
-
asCustomFetch: () =>
|
|
41
|
-
getDispatcher: () =>
|
|
59
|
+
asCustomFetch: () => dispatcherTransport.asCustomFetch(),
|
|
60
|
+
getDispatcher: () => dispatcherTransport.getDispatcher(),
|
|
42
61
|
getNodeAgent: (agentOptions) => agentOptions !== undefined ? (0, node_agents_1.buildNodeAgents)(proxy, ssrf, agentOptions) : lazyNodeAgents(),
|
|
43
62
|
};
|
|
44
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbound-http.js","sourceRoot":"","sources":["../../src/http/outbound-http.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAC7C,gCAAkC;AAWlC,6CAA8C;AAC9C,qDAAqF;
|
|
1
|
+
{"version":3,"file":"outbound-http.js","sourceRoot":"","sources":["../../src/http/outbound-http.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAC7C,gCAAkC;AAWlC,kCAAgD;AAChD,6CAA8C;AAC9C,qEAA8D;AAE9D,iEAA8D;AAC9D,qDAAqF;AAErF,+CAAgD;AAChD,kDAK4B;AAsHrB,IAAM,YAAY,GAAlB,MAAM,YAAY;IACxB,YACkB,cAAqC,EACrC,MAAc;QADd,mBAAc,GAAd,cAAc,CAAuB;QACrC,WAAM,GAAN,MAAM,CAAQ;IAC7B,CAAC;IAMJ,QAAQ,CAAC,OAAkC;QAC1C,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAE1D,MAAM,aAAa,GAAG,CAAC,cAAmC,EAAuB,EAAE,CAClF,IAAA,2CAAkB,EAAC,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAWxE,KAAK,UAAU,OAAO,CAAC,cAAmC;YACzD,IAAI,CAAC;gBACJ,OAAO,MAAM,IAAA,qBAAW,EAAC,aAAa,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEhB,MAAM,IAAA,2CAAoB,EAAC,KAAK,CAAC,CAAC;YACnC,CAAC;QACF,CAAC;QAED,OAAO;YACN,OAAO;YACP,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE;gBAClD,IAAI,CAAC;oBACJ,OAAO,MAAM,IAAA,qCAAoB,EAAC,cAAc,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACvF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,IAAA,2CAAoB,EAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;IAKD,SAAS,CAAC,OAA8B;QACvC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;QACnC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;QAKrC,MAAM,mBAAmB,GAAG,IAAA,qCAAyB,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5F,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAA,6BAAe,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAEhE,OAAO;YACN,aAAa,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE;YACxD,aAAa,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE;YACxD,YAAY,EAAE,CAAC,YAAY,EAAE,EAAE,CAC9B,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,6BAAe,EAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE;SAC3F,CAAC;IACH,CAAC;CACD,CAAA;AArEY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,YAAO,GAAE;qCAGyB,4BAAqB;QAC7B,uBAAM;GAHpB,YAAY,CAqExB;AAED,SAAS,IAAI,CAAI,OAAgB;IAChC,IAAI,MAAgC,CAAC;IACrC,OAAO,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;AACtD,CAAC"}
|
|
@@ -2,11 +2,28 @@ import type { Dispatcher } from 'undici';
|
|
|
2
2
|
import type { SsrfBridge } from '../../ssrf';
|
|
3
3
|
import type { ProxyOption, SsrfOption } from '../node-agents';
|
|
4
4
|
export type CustomFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
5
|
+
export type RequestAuthorizer = (url: URL) => Promise<void>;
|
|
5
6
|
export interface TransportTimeoutOptions {
|
|
6
7
|
headersTimeout?: number;
|
|
7
8
|
bodyTimeout?: number;
|
|
8
9
|
connectTimeout?: number;
|
|
9
10
|
}
|
|
10
|
-
export
|
|
11
|
+
export interface CreateDispatcherTransportOptions {
|
|
12
|
+
proxy?: ProxyOption;
|
|
13
|
+
ssrf?: SsrfOption;
|
|
14
|
+
timeouts?: TransportTimeoutOptions;
|
|
15
|
+
authorize?: RequestAuthorizer;
|
|
16
|
+
}
|
|
17
|
+
export interface DispatcherTransport {
|
|
18
|
+
asCustomFetch(): CustomFetch;
|
|
19
|
+
getDispatcher(): Dispatcher;
|
|
20
|
+
}
|
|
21
|
+
export interface BuildDispatcherOptions {
|
|
22
|
+
timeouts?: TransportTimeoutOptions;
|
|
23
|
+
authorize?: RequestAuthorizer;
|
|
24
|
+
}
|
|
25
|
+
export declare function buildDispatcher(proxy: ProxyOption, ssrf: SsrfOption, options?: BuildDispatcherOptions): Dispatcher;
|
|
26
|
+
export declare function createDispatcherTransport(options?: CreateDispatcherTransportOptions): DispatcherTransport;
|
|
11
27
|
export declare function createSsrfInterceptor(bridge: SsrfBridge): Dispatcher.DispatcherComposeInterceptor;
|
|
28
|
+
export declare function createAuthorizationInterceptor(authorize: RequestAuthorizer): Dispatcher.DispatcherComposeInterceptor;
|
|
12
29
|
export declare function dispatchedFetch(dispatcher: Dispatcher, input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
|
|
@@ -1,33 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildDispatcher = buildDispatcher;
|
|
4
|
+
exports.createDispatcherTransport = createDispatcherTransport;
|
|
4
5
|
exports.createSsrfInterceptor = createSsrfInterceptor;
|
|
6
|
+
exports.createAuthorizationInterceptor = createAuthorizationInterceptor;
|
|
5
7
|
exports.dispatchedFetch = dispatchedFetch;
|
|
6
8
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
7
9
|
const undici_1 = require("undici");
|
|
8
|
-
function buildDispatcher(proxy, ssrf,
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
function buildDispatcher(proxy, ssrf, options = {}) {
|
|
11
|
+
let dispatcher = buildDispatcherFromProxy(proxy, ssrf, options?.timeouts);
|
|
12
|
+
if (options?.authorize) {
|
|
13
|
+
dispatcher = dispatcher.compose(createAuthorizationInterceptor(options?.authorize));
|
|
14
|
+
}
|
|
15
|
+
if (ssrf !== 'disabled') {
|
|
16
|
+
dispatcher = dispatcher.compose(createSsrfInterceptor(ssrf));
|
|
17
|
+
}
|
|
18
|
+
return dispatcher;
|
|
11
19
|
}
|
|
12
|
-
function buildDispatcherFromProxy(proxy, timeouts) {
|
|
20
|
+
function buildDispatcherFromProxy(proxy, ssrf, timeouts) {
|
|
13
21
|
const agentOptions = toAgentTimeoutOptions(timeouts);
|
|
14
22
|
if (proxy === false) {
|
|
15
|
-
return new undici_1.Agent(agentOptions);
|
|
23
|
+
return new undici_1.Agent({ ...agentOptions, ...secureConnect(ssrf) });
|
|
16
24
|
}
|
|
17
25
|
if (proxy === 'env') {
|
|
18
|
-
return new undici_1.EnvHttpProxyAgent(agentOptions);
|
|
26
|
+
return new undici_1.EnvHttpProxyAgent({ ...agentOptions, ...secureConnect(ssrf) });
|
|
19
27
|
}
|
|
20
28
|
return new undici_1.ProxyAgent({ uri: proxy, ...agentOptions });
|
|
21
29
|
}
|
|
30
|
+
function secureConnect(ssrf) {
|
|
31
|
+
return ssrf === 'disabled' ? {} : { connect: { lookup: ssrf.createSecureLookup() } };
|
|
32
|
+
}
|
|
22
33
|
function toAgentTimeoutOptions(timeouts) {
|
|
23
|
-
if (!timeouts)
|
|
34
|
+
if (!timeouts) {
|
|
24
35
|
return {};
|
|
36
|
+
}
|
|
25
37
|
return {
|
|
26
38
|
...(timeouts.headersTimeout !== undefined && { headersTimeout: timeouts.headersTimeout }),
|
|
27
39
|
...(timeouts.bodyTimeout !== undefined && { bodyTimeout: timeouts.bodyTimeout }),
|
|
28
40
|
...(timeouts.connectTimeout !== undefined && { connectTimeout: timeouts.connectTimeout }),
|
|
29
41
|
};
|
|
30
42
|
}
|
|
43
|
+
function createDispatcherTransport(options) {
|
|
44
|
+
const proxy = options?.proxy ?? 'env';
|
|
45
|
+
const ssrf = options?.ssrf ?? 'disabled';
|
|
46
|
+
const timeouts = options?.timeouts;
|
|
47
|
+
const authorize = options?.authorize;
|
|
48
|
+
const lazyDispatcher = lazyValue(() => buildDispatcher(proxy, ssrf, { timeouts, authorize }));
|
|
49
|
+
return {
|
|
50
|
+
asCustomFetch: () => async (input, init) => await dispatchedFetch(lazyDispatcher(), input, init),
|
|
51
|
+
getDispatcher: () => lazyDispatcher(),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function lazyValue(factory) {
|
|
55
|
+
let cached;
|
|
56
|
+
return () => (cached ??= { value: factory() }).value;
|
|
57
|
+
}
|
|
31
58
|
function createSsrfInterceptor(bridge) {
|
|
32
59
|
return (dispatch) => (opts, handler) => {
|
|
33
60
|
let targetUrl;
|
|
@@ -48,6 +75,19 @@ function createSsrfInterceptor(bridge) {
|
|
|
48
75
|
return true;
|
|
49
76
|
};
|
|
50
77
|
}
|
|
78
|
+
function createAuthorizationInterceptor(authorize) {
|
|
79
|
+
return (dispatch) => (opts, handler) => {
|
|
80
|
+
let targetUrl;
|
|
81
|
+
try {
|
|
82
|
+
targetUrl = new URL(opts.path, opts.origin?.toString());
|
|
83
|
+
authorize(targetUrl).then(() => dispatch(opts, handler), (error) => failDispatch(handler, (0, n8n_workflow_1.ensureError)(error)));
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
failDispatch(handler, (0, n8n_workflow_1.ensureError)(error));
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
51
91
|
function failDispatch(handler, error) {
|
|
52
92
|
if (handler.onResponseError) {
|
|
53
93
|
handler.onResponseError(null, error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/http/undici/transport.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/http/undici/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { buildDispatcher, createSsrfInterceptor, createAuthorizationInterceptor, createDispatcherTransport, dispatchedFetch, } from './http/undici/transport';
|
|
2
|
+
export type { CustomFetch, DispatcherTransport, CreateDispatcherTransportOptions, RequestAuthorizer, TransportTimeoutOptions, } from './http/undici/transport';
|
|
3
|
+
export type { ProxyOption, ProxyUrl, SsrfOption } from './http/node-agents';
|
|
4
|
+
export type { SsrfBridge } from './ssrf/ssrf-protection.service';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dispatchedFetch = exports.createDispatcherTransport = exports.createAuthorizationInterceptor = exports.createSsrfInterceptor = exports.buildDispatcher = void 0;
|
|
4
|
+
var transport_1 = require("./http/undici/transport");
|
|
5
|
+
Object.defineProperty(exports, "buildDispatcher", { enumerable: true, get: function () { return transport_1.buildDispatcher; } });
|
|
6
|
+
Object.defineProperty(exports, "createSsrfInterceptor", { enumerable: true, get: function () { return transport_1.createSsrfInterceptor; } });
|
|
7
|
+
Object.defineProperty(exports, "createAuthorizationInterceptor", { enumerable: true, get: function () { return transport_1.createAuthorizationInterceptor; } });
|
|
8
|
+
Object.defineProperty(exports, "createDispatcherTransport", { enumerable: true, get: function () { return transport_1.createDispatcherTransport; } });
|
|
9
|
+
Object.defineProperty(exports, "dispatchedFetch", { enumerable: true, get: function () { return transport_1.dispatchedFetch; } });
|
|
10
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":";;;AAgBA,qDAMiC;AALhC,4GAAA,eAAe,OAAA;AACf,kHAAA,qBAAqB,OAAA;AACrB,2HAAA,8BAA8B,OAAA;AAC9B,sHAAA,yBAAyB,OAAA;AACzB,4GAAA,eAAe,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/backend-network",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "src/index.ts",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -14,42 +14,50 @@
|
|
|
14
14
|
"types": "./dist/testing.d.ts",
|
|
15
15
|
"import": "./src/testing.ts",
|
|
16
16
|
"require": "./dist/testing.js"
|
|
17
|
+
},
|
|
18
|
+
"./transport": {
|
|
19
|
+
"types": "./dist/transport.d.ts",
|
|
20
|
+
"import": "./src/transport.ts",
|
|
21
|
+
"require": "./dist/transport.js"
|
|
17
22
|
}
|
|
18
23
|
},
|
|
19
24
|
"typesVersions": {
|
|
20
25
|
"*": {
|
|
21
26
|
"testing": [
|
|
22
27
|
"dist/testing.d.ts"
|
|
28
|
+
],
|
|
29
|
+
"transport": [
|
|
30
|
+
"dist/transport.d.ts"
|
|
23
31
|
]
|
|
24
32
|
}
|
|
25
33
|
},
|
|
26
34
|
"files": [
|
|
27
35
|
"dist/**/*",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
36
|
+
"LICENSE_EE.md",
|
|
37
|
+
"LICENSE.md"
|
|
30
38
|
],
|
|
31
39
|
"dependencies": {
|
|
32
|
-
"axios": "1.
|
|
40
|
+
"axios": "1.18.0",
|
|
33
41
|
"cache-manager": "5.2.3",
|
|
34
|
-
"form-data": "4.0.
|
|
42
|
+
"form-data": "4.0.6",
|
|
35
43
|
"http-proxy-agent": "7.0.2",
|
|
36
44
|
"https-proxy-agent": "7.0.6",
|
|
37
45
|
"iconv-lite": "0.6.3",
|
|
38
46
|
"proxy-from-env": "^1.1.0",
|
|
39
47
|
"qs": "6.15.2",
|
|
40
48
|
"reflect-metadata": "0.2.2",
|
|
41
|
-
"undici": "^7.
|
|
49
|
+
"undici": "^7.28.0",
|
|
42
50
|
"zod": "3.25.67",
|
|
43
|
-
"@n8n/backend-common": "1.
|
|
44
|
-
"@n8n/config": "2.
|
|
45
|
-
"@n8n/constants": "0.27.0",
|
|
51
|
+
"@n8n/backend-common": "1.28.1",
|
|
52
|
+
"@n8n/config": "2.26.0",
|
|
46
53
|
"@n8n/di": "0.14.0",
|
|
47
|
-
"n8n-workflow": "2.
|
|
54
|
+
"n8n-workflow": "2.28.1",
|
|
55
|
+
"@n8n/constants": "0.28.0"
|
|
48
56
|
},
|
|
49
57
|
"devDependencies": {
|
|
50
58
|
"@types/proxy-from-env": "^1.0.4",
|
|
51
59
|
"@vitest/coverage-v8": "4.1.1",
|
|
52
|
-
"nock": "
|
|
60
|
+
"nock": "14.0.14",
|
|
53
61
|
"vitest": "^4.1.1",
|
|
54
62
|
"vitest-mock-extended": "^3.1.0",
|
|
55
63
|
"@n8n/typescript-config": "1.6.1",
|