n8n 1.103.0 → 1.103.2

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.
@@ -36,10 +36,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.createWebhookHandlerFor = createWebhookHandlerFor;
37
37
  const backend_common_1 = require("@n8n/backend-common");
38
38
  const di_1 = require("@n8n/di");
39
+ const n8n_core_1 = require("n8n-core");
39
40
  const n8n_workflow_1 = require("n8n-workflow");
41
+ const promises_1 = require("stream/promises");
42
+ const webhook_service_1 = require("./webhook.service");
40
43
  const webhook_not_found_error_1 = require("../errors/response-errors/webhook-not-found.error");
41
44
  const ResponseHelper = __importStar(require("../response-helper"));
42
- const webhook_service_1 = require("./webhook.service");
45
+ const webhook_response_1 = require("../webhooks/webhook-response");
43
46
  const WEBHOOK_METHODS = ['DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT'];
44
47
  class WebhookRequestHandler {
45
48
  constructor(webhookManager) {
@@ -61,8 +64,13 @@ class WebhookRequestHandler {
61
64
  }
62
65
  try {
63
66
  const response = await this.webhookManager.executeWebhook(req, res);
64
- if (response.noWebhookResponse !== true) {
65
- ResponseHelper.sendSuccessResponse(res, response.data, true, response.responseCode, response.headers);
67
+ if ((0, webhook_response_1.isWebhookResponse)(response)) {
68
+ await this.sendWebhookResponse(res, response);
69
+ }
70
+ else {
71
+ if (response.noWebhookResponse !== true) {
72
+ ResponseHelper.sendSuccessResponse(res, response.data, true, response.responseCode, response.headers);
73
+ }
66
74
  }
67
75
  }
68
76
  catch (e) {
@@ -80,6 +88,62 @@ class WebhookRequestHandler {
80
88
  return ResponseHelper.sendErrorResponse(res, error);
81
89
  }
82
90
  }
91
+ async sendWebhookResponse(res, webhookResponse) {
92
+ if ((0, webhook_response_1.isWebhookNoResponse)(webhookResponse)) {
93
+ return;
94
+ }
95
+ if ((0, webhook_response_1.isWebhookStaticResponse)(webhookResponse)) {
96
+ this.sendStaticResponse(res, webhookResponse);
97
+ return;
98
+ }
99
+ if ((0, webhook_response_1.isWebhookStreamResponse)(webhookResponse)) {
100
+ await this.sendStreamResponse(res, webhookResponse);
101
+ return;
102
+ }
103
+ }
104
+ async sendStreamResponse(res, webhookResponse) {
105
+ const { stream, code, headers } = webhookResponse;
106
+ this.setResponseStatus(res, code);
107
+ this.setResponseHeaders(res, headers);
108
+ const contentType = res.getHeader('content-type');
109
+ const needsSandbox = contentType && (0, n8n_core_1.isHtmlRenderedContentType)(contentType);
110
+ const streamToSend = needsSandbox ? stream.pipe((0, n8n_core_1.createHtmlSandboxTransformStream)()) : stream;
111
+ streamToSend.pipe(res, { end: false });
112
+ await (0, promises_1.finished)(streamToSend);
113
+ process.nextTick(() => res.end());
114
+ }
115
+ sendStaticResponse(res, webhookResponse) {
116
+ const { body, code, headers } = webhookResponse;
117
+ this.setResponseStatus(res, code);
118
+ this.setResponseHeaders(res, headers);
119
+ const contentType = res.getHeader('content-type');
120
+ if (typeof body === 'string') {
121
+ const needsSandbox = !contentType || (0, n8n_core_1.isHtmlRenderedContentType)(contentType);
122
+ const bodyToSend = needsSandbox ? (0, n8n_core_1.sandboxHtmlResponse)(body) : body;
123
+ res.send(bodyToSend);
124
+ }
125
+ else {
126
+ const needsSandbox = contentType && (0, n8n_core_1.isHtmlRenderedContentType)(contentType);
127
+ if (needsSandbox) {
128
+ res.send((0, n8n_core_1.sandboxHtmlResponse)(JSON.stringify(body)));
129
+ }
130
+ else {
131
+ res.json(body);
132
+ }
133
+ }
134
+ }
135
+ setResponseStatus(res, statusCode) {
136
+ if (statusCode !== undefined) {
137
+ res.status(statusCode);
138
+ }
139
+ }
140
+ setResponseHeaders(res, headers) {
141
+ if (headers) {
142
+ for (const [name, value] of headers.entries()) {
143
+ res.setHeader(name, value);
144
+ }
145
+ }
146
+ }
83
147
  async setupCorsHeaders(req, res) {
84
148
  const method = req.method;
85
149
  const { path } = req.params;
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-request-handler.js","sourceRoot":"","sources":["../../src/webhooks/webhook-request-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook-request-handler.js","sourceRoot":"","sources":["../../src/webhooks/webhook-request-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Readable } from 'stream';
2
+ import type { WebhookResponseHeaders } from './webhook.types';
3
+ export declare const WebhookResponseTag: unique symbol;
4
+ export type WebhookNoResponse = {
5
+ [WebhookResponseTag]: 'noResponse';
6
+ };
7
+ export type WebhookStaticResponse = {
8
+ [WebhookResponseTag]: 'static';
9
+ body: unknown;
10
+ headers: WebhookResponseHeaders | undefined;
11
+ code: number | undefined;
12
+ };
13
+ export type WebhookResponseStream = {
14
+ [WebhookResponseTag]: 'stream';
15
+ stream: Readable;
16
+ code: number | undefined;
17
+ headers: WebhookResponseHeaders | undefined;
18
+ };
19
+ export type WebhookResponse = WebhookNoResponse | WebhookStaticResponse | WebhookResponseStream;
20
+ export declare const isWebhookResponse: (response: unknown) => response is WebhookResponse;
21
+ export declare const isWebhookNoResponse: (response: unknown) => response is WebhookNoResponse;
22
+ export declare const isWebhookStaticResponse: (response: unknown) => response is WebhookStaticResponse;
23
+ export declare const isWebhookStreamResponse: (response: unknown) => response is WebhookResponseStream;
24
+ export declare const createNoResponse: () => WebhookNoResponse;
25
+ export declare const createStaticResponse: (body: unknown, code: number | undefined, headers: WebhookResponseHeaders | undefined) => WebhookStaticResponse;
26
+ export declare const createStreamResponse: (stream: Readable, code: number | undefined, headers: WebhookResponseHeaders | undefined) => WebhookResponseStream;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStreamResponse = exports.createStaticResponse = exports.createNoResponse = exports.isWebhookStreamResponse = exports.isWebhookStaticResponse = exports.isWebhookNoResponse = exports.isWebhookResponse = exports.WebhookResponseTag = void 0;
4
+ exports.WebhookResponseTag = Symbol('WebhookResponse');
5
+ const isWebhookResponse = (response) => {
6
+ return typeof response === 'object' && response !== null && exports.WebhookResponseTag in response;
7
+ };
8
+ exports.isWebhookResponse = isWebhookResponse;
9
+ const isWebhookNoResponse = (response) => {
10
+ return (0, exports.isWebhookResponse)(response) && response[exports.WebhookResponseTag] === 'noResponse';
11
+ };
12
+ exports.isWebhookNoResponse = isWebhookNoResponse;
13
+ const isWebhookStaticResponse = (response) => {
14
+ return (0, exports.isWebhookResponse)(response) && response[exports.WebhookResponseTag] === 'static';
15
+ };
16
+ exports.isWebhookStaticResponse = isWebhookStaticResponse;
17
+ const isWebhookStreamResponse = (response) => {
18
+ return (0, exports.isWebhookResponse)(response) && response[exports.WebhookResponseTag] === 'stream';
19
+ };
20
+ exports.isWebhookStreamResponse = isWebhookStreamResponse;
21
+ const createNoResponse = () => {
22
+ return {
23
+ [exports.WebhookResponseTag]: 'noResponse',
24
+ };
25
+ };
26
+ exports.createNoResponse = createNoResponse;
27
+ const createStaticResponse = (body, code, headers) => {
28
+ return {
29
+ [exports.WebhookResponseTag]: 'static',
30
+ body,
31
+ code,
32
+ headers,
33
+ };
34
+ };
35
+ exports.createStaticResponse = createStaticResponse;
36
+ const createStreamResponse = (stream, code, headers) => {
37
+ return {
38
+ [exports.WebhookResponseTag]: 'stream',
39
+ stream,
40
+ code,
41
+ headers,
42
+ };
43
+ };
44
+ exports.createStreamResponse = createStreamResponse;
45
+ //# sourceMappingURL=webhook-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-response.js","sourceRoot":"","sources":["../../src/webhooks/webhook-response.ts"],"names":[],"mappings":";;;AAIa,QAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAgCrD,MAAM,iBAAiB,GAAG,CAAC,QAAiB,EAA+B,EAAE;IACnF,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,0BAAkB,IAAI,QAAQ,CAAC;AAC5F,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEK,MAAM,mBAAmB,GAAG,CAAC,QAAiB,EAAiC,EAAE;IACvF,OAAO,IAAA,yBAAiB,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,0BAAkB,CAAC,KAAK,YAAY,CAAC;AACrF,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAEK,MAAM,uBAAuB,GAAG,CAAC,QAAiB,EAAqC,EAAE;IAC/F,OAAO,IAAA,yBAAiB,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,0BAAkB,CAAC,KAAK,QAAQ,CAAC;AACjF,CAAC,CAAC;AAFW,QAAA,uBAAuB,2BAElC;AAEK,MAAM,uBAAuB,GAAG,CAAC,QAAiB,EAAqC,EAAE;IAC/F,OAAO,IAAA,yBAAiB,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,0BAAkB,CAAC,KAAK,QAAQ,CAAC;AACjF,CAAC,CAAC;AAFW,QAAA,uBAAuB,2BAElC;AAEK,MAAM,gBAAgB,GAAG,GAAsB,EAAE;IACvD,OAAO;QACN,CAAC,0BAAkB,CAAC,EAAE,YAAY;KAClC,CAAC;AACH,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B;AAEK,MAAM,oBAAoB,GAAG,CACnC,IAAa,EACb,IAAwB,EACxB,OAA2C,EACnB,EAAE;IAC1B,OAAO;QACN,CAAC,0BAAkB,CAAC,EAAE,QAAQ;QAC9B,IAAI;QACJ,IAAI;QACJ,OAAO;KACP,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B;AAEK,MAAM,oBAAoB,GAAG,CACnC,MAAgB,EAChB,IAAwB,EACxB,OAA2C,EACnB,EAAE;IAC1B,OAAO;QACN,CAAC,0BAAkB,CAAC,EAAE,QAAQ;QAC9B,MAAM;QACN,IAAI;QACJ,OAAO;KACP,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B"}
@@ -29,3 +29,10 @@ export interface IWebhookResponseCallbackData {
29
29
  responseCode?: number;
30
30
  }
31
31
  export type Method = NonNullable<IHttpRequestMethods>;
32
+ export type WebhookResponseHeaders = Map<string, string>;
33
+ export type WebhookNodeResponseHeaders = {
34
+ entries?: Array<{
35
+ name: string;
36
+ value: string;
37
+ }>;
38
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n",
3
- "version": "1.103.0",
3
+ "version": "1.103.2",
4
4
  "description": "n8n Workflow Automation Tool",
5
5
  "main": "dist/index",
6
6
  "types": "dist/index.d.ts",
@@ -140,23 +140,23 @@
140
140
  "yargs-parser": "21.1.1",
141
141
  "zod": "3.25.67",
142
142
  "@n8n/ai-workflow-builder": "0.13.0",
143
- "@n8n/api-types": "0.37.0",
144
143
  "@n8n/backend-common": "^0.13.0",
144
+ "@n8n/api-types": "0.37.0",
145
145
  "@n8n/client-oauth2": "0.27.0",
146
146
  "@n8n/config": "1.46.0",
147
147
  "@n8n/constants": "^0.9.0",
148
- "@n8n/db": "^0.14.0",
148
+ "@n8n/db": "^0.14.1",
149
149
  "@n8n/decorators": "0.13.0",
150
150
  "@n8n/di": "0.8.0",
151
- "@n8n/backend-test-utils": "^0.6.0",
152
151
  "@n8n/errors": "0.2.0",
152
+ "@n8n/backend-test-utils": "^0.6.0",
153
153
  "@n8n/permissions": "0.30.0",
154
- "@n8n/n8n-nodes-langchain": "1.102.0",
155
- "@n8n/task-runner": "1.39.0",
156
- "n8n-editor-ui": "1.103.0",
157
- "n8n-core": "1.102.0",
158
- "n8n-nodes-base": "1.101.0",
159
- "n8n-workflow": "1.100.0"
154
+ "@n8n/n8n-nodes-langchain": "1.102.1",
155
+ "n8n-core": "1.102.1",
156
+ "n8n-editor-ui": "1.103.1",
157
+ "@n8n/task-runner": "1.39.1",
158
+ "n8n-workflow": "1.100.0",
159
+ "n8n-nodes-base": "1.101.0"
160
160
  },
161
161
  "license": "SEE LICENSE IN LICENSE.md",
162
162
  "homepage": "https://n8n.io",