n8n 1.111.1 → 1.112.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.
Files changed (105) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/controllers/dynamic-node-parameters.controller.js +6 -16
  3. package/dist/controllers/dynamic-node-parameters.controller.js.map +1 -1
  4. package/dist/environments.ee/source-control/source-control.service.ee.js +2 -5
  5. package/dist/environments.ee/source-control/source-control.service.ee.js.map +1 -1
  6. package/dist/events/maps/relay.event-map.d.ts +4 -0
  7. package/dist/execution-lifecycle/execution-lifecycle-hooks.js +8 -1
  8. package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
  9. package/dist/executions/execution-recovery.service.js +2 -1
  10. package/dist/executions/execution-recovery.service.js.map +1 -1
  11. package/dist/executions/execution.service.d.ts +2 -2
  12. package/dist/executions/execution.service.js +14 -1
  13. package/dist/executions/execution.service.js.map +1 -1
  14. package/dist/executions/execution.types.d.ts +2 -5
  15. package/dist/executions/executions.controller.d.ts +2 -2
  16. package/dist/modules/data-table/data-store-aggregate.controller.d.ts +7 -1
  17. package/dist/modules/data-table/data-store-aggregate.controller.js +15 -2
  18. package/dist/modules/data-table/data-store-aggregate.controller.js.map +1 -1
  19. package/dist/modules/data-table/data-store-column.repository.js +1 -1
  20. package/dist/modules/data-table/data-store-column.repository.js.map +1 -1
  21. package/dist/modules/data-table/data-store-proxy.service.d.ts +2 -2
  22. package/dist/modules/data-table/data-store-proxy.service.js +8 -8
  23. package/dist/modules/data-table/data-store-proxy.service.js.map +1 -1
  24. package/dist/modules/data-table/data-store-rows.repository.d.ts +13 -18
  25. package/dist/modules/data-table/data-store-rows.repository.js +112 -58
  26. package/dist/modules/data-table/data-store-rows.repository.js.map +1 -1
  27. package/dist/modules/data-table/data-store-size-validator.service.d.ts +16 -0
  28. package/dist/modules/data-table/data-store-size-validator.service.js +79 -0
  29. package/dist/modules/data-table/data-store-size-validator.service.js.map +1 -0
  30. package/dist/modules/data-table/data-store.controller.d.ts +6 -6
  31. package/dist/modules/data-table/data-store.controller.js +11 -9
  32. package/dist/modules/data-table/data-store.controller.js.map +1 -1
  33. package/dist/modules/data-table/data-store.repository.d.ts +4 -1
  34. package/dist/modules/data-table/data-store.repository.js +47 -5
  35. package/dist/modules/data-table/data-store.repository.js.map +1 -1
  36. package/dist/modules/data-table/data-store.service.d.ts +14 -7
  37. package/dist/modules/data-table/data-store.service.js +66 -33
  38. package/dist/modules/data-table/data-store.service.js.map +1 -1
  39. package/dist/modules/data-table/utils/sql-utils.d.ts +1 -0
  40. package/dist/modules/data-table/utils/sql-utils.js +7 -0
  41. package/dist/modules/data-table/utils/sql-utils.js.map +1 -1
  42. package/dist/public-api/types.d.ts +5 -0
  43. package/dist/public-api/v1/handlers/executions/executions.handler.d.ts +1 -0
  44. package/dist/public-api/v1/handlers/executions/executions.handler.js +34 -1
  45. package/dist/public-api/v1/handlers/executions/executions.handler.js.map +1 -1
  46. package/dist/public-api/v1/openapi.yml +42 -2
  47. package/dist/push/abstract.push.d.ts +2 -2
  48. package/dist/push/abstract.push.js +4 -4
  49. package/dist/push/abstract.push.js.map +1 -1
  50. package/dist/push/index.d.ts +3 -2
  51. package/dist/push/index.js +30 -26
  52. package/dist/push/index.js.map +1 -1
  53. package/dist/push/origin-validator.d.ts +13 -0
  54. package/dist/push/origin-validator.js +145 -0
  55. package/dist/push/origin-validator.js.map +1 -0
  56. package/dist/push/websocket.push.d.ts +1 -1
  57. package/dist/push/websocket.push.js +2 -2
  58. package/dist/push/websocket.push.js.map +1 -1
  59. package/dist/scaling/constants.d.ts +2 -2
  60. package/dist/scaling/pubsub/pubsub.event-map.d.ts +2 -0
  61. package/dist/scaling/pubsub/pubsub.registry.d.ts +1 -0
  62. package/dist/scaling/pubsub/pubsub.registry.js +9 -2
  63. package/dist/scaling/pubsub/pubsub.registry.js.map +1 -1
  64. package/dist/scaling/pubsub/pubsub.types.d.ts +2 -1
  65. package/dist/scaling/scaling.service.d.ts +1 -1
  66. package/dist/scaling/scaling.service.js +0 -4
  67. package/dist/scaling/scaling.service.js.map +1 -1
  68. package/dist/server.js +2 -0
  69. package/dist/server.js.map +1 -1
  70. package/dist/services/dynamic-node-parameters.service.d.ts +7 -1
  71. package/dist/services/dynamic-node-parameters.service.js +15 -2
  72. package/dist/services/dynamic-node-parameters.service.js.map +1 -1
  73. package/dist/services/frontend.service.js +5 -1
  74. package/dist/services/frontend.service.js.map +1 -1
  75. package/dist/services/public-api-key.service.js +2 -0
  76. package/dist/services/public-api-key.service.js.map +1 -1
  77. package/dist/sso.ee/oidc/oidc.service.ee.d.ts +7 -2
  78. package/dist/sso.ee/oidc/oidc.service.ee.js +63 -16
  79. package/dist/sso.ee/oidc/oidc.service.ee.js.map +1 -1
  80. package/dist/sso.ee/sso-helpers.d.ts +1 -0
  81. package/dist/sso.ee/sso-helpers.js +19 -0
  82. package/dist/sso.ee/sso-helpers.js.map +1 -1
  83. package/dist/task-runners/errors/missing-requirements.error.d.ts +6 -0
  84. package/dist/task-runners/errors/missing-requirements.error.js +17 -0
  85. package/dist/task-runners/errors/missing-requirements.error.js.map +1 -0
  86. package/dist/task-runners/internal-task-runner-disconnect-analyzer.d.ts +2 -2
  87. package/dist/task-runners/internal-task-runner-disconnect-analyzer.js +2 -2
  88. package/dist/task-runners/internal-task-runner-disconnect-analyzer.js.map +1 -1
  89. package/dist/task-runners/task-runner-module.d.ts +5 -3
  90. package/dist/task-runners/task-runner-module.js +25 -13
  91. package/dist/task-runners/task-runner-module.js.map +1 -1
  92. package/dist/task-runners/task-runner-process-base.d.ts +39 -0
  93. package/dist/task-runners/task-runner-process-base.js +111 -0
  94. package/dist/task-runners/task-runner-process-base.js.map +1 -0
  95. package/dist/task-runners/task-runner-process-js.d.ts +21 -0
  96. package/dist/task-runners/{task-runner-process.js → task-runner-process-js.js} +35 -108
  97. package/dist/task-runners/task-runner-process-js.js.map +1 -0
  98. package/dist/task-runners/task-runner-process-py.d.ts +15 -0
  99. package/dist/task-runners/task-runner-process-py.js +76 -0
  100. package/dist/task-runners/task-runner-process-py.js.map +1 -0
  101. package/dist/task-runners/task-runner-process-restart-loop-detector.d.ts +2 -2
  102. package/dist/task-runners/task-runner-process-restart-loop-detector.js.map +1 -1
  103. package/package.json +20 -20
  104. package/dist/task-runners/task-runner-process.d.ts +0 -36
  105. package/dist/task-runners/task-runner-process.js.map +0 -1
@@ -4,5 +4,6 @@ declare const _default: {
4
4
  deleteExecution: (((_req: Request, _res: Response, next: express.NextFunction) => void) | ((req: express.Request, res: express.Response, next: express.NextFunction) => Promise<void>) | ((req: ExecutionRequest.Delete, res: express.Response) => Promise<express.Response>))[];
5
5
  getExecution: (((_req: Request, _res: Response, next: express.NextFunction) => void) | ((req: express.Request, res: express.Response, next: express.NextFunction) => Promise<void>) | ((req: ExecutionRequest.Get, res: express.Response) => Promise<express.Response>))[];
6
6
  getExecutions: (((req: import("../../../types").PaginatedRequest, res: express.Response, next: express.NextFunction) => express.Response | void) | ((_req: Request, _res: Response, next: express.NextFunction) => void) | ((req: express.Request, res: express.Response, next: express.NextFunction) => Promise<void>) | ((req: ExecutionRequest.GetAll, res: express.Response) => Promise<express.Response>))[];
7
+ retryExecution: (((_req: Request, _res: Response, next: express.NextFunction) => void) | ((req: express.Request, res: express.Response, next: express.NextFunction) => Promise<void>) | ((req: ExecutionRequest.Retry, res: express.Response) => Promise<express.Response>))[];
7
8
  };
8
9
  export = _default;
@@ -4,7 +4,11 @@ const di_1 = require("@n8n/di");
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
5
  const active_executions_1 = require("../../../../active-executions");
6
6
  const concurrency_control_service_1 = require("../../../../concurrency/concurrency-control.service");
7
+ const aborted_execution_retry_error_1 = require("../../../../errors/aborted-execution-retry.error");
8
+ const queued_execution_retry_error_1 = require("../../../../errors/queued-execution-retry.error");
9
+ const not_found_error_1 = require("../../../../errors/response-errors/not-found.error");
7
10
  const event_service_1 = require("../../../../events/event.service");
11
+ const execution_service_1 = require("../../../../executions/execution.service");
8
12
  const global_middleware_1 = require("../../shared/middlewares/global.middleware");
9
13
  const pagination_service_1 = require("../../shared/services/pagination.service");
10
14
  const workflows_service_1 = require("../workflows/workflows.service");
@@ -78,7 +82,7 @@ module.exports = {
78
82
  lastId,
79
83
  includeData,
80
84
  workflowIds: workflowId ? [workflowId] : sharedWorkflowsIds,
81
- excludedExecutionsIds: runningExecutionsIds,
85
+ excludedExecutionsIds: status !== 'running' ? runningExecutionsIds : undefined,
82
86
  };
83
87
  const executions = await di_1.Container.get(db_1.ExecutionRepository).getExecutionsForPublicApi(filters);
84
88
  const newLastId = !executions.length ? '0' : executions.slice(-1)[0].id;
@@ -98,5 +102,34 @@ module.exports = {
98
102
  });
99
103
  },
100
104
  ],
105
+ retryExecution: [
106
+ (0, global_middleware_1.apiKeyHasScope)('execution:retry'),
107
+ async (req, res) => {
108
+ const sharedWorkflowsIds = await (0, workflows_service_1.getSharedWorkflowIds)(req.user, ['workflow:read']);
109
+ if (!sharedWorkflowsIds.length) {
110
+ return res.status(404).json({ message: 'Not Found' });
111
+ }
112
+ try {
113
+ const retriedExecution = await di_1.Container.get(execution_service_1.ExecutionService).retry(req, sharedWorkflowsIds);
114
+ di_1.Container.get(event_service_1.EventService).emit('user-retried-execution', {
115
+ userId: req.user.id,
116
+ publicApi: true,
117
+ });
118
+ return res.json((0, n8n_workflow_1.replaceCircularReferences)(retriedExecution));
119
+ }
120
+ catch (error) {
121
+ if (error instanceof queued_execution_retry_error_1.QueuedExecutionRetryError ||
122
+ error instanceof aborted_execution_retry_error_1.AbortedExecutionRetryError) {
123
+ return res.status(409).json({ message: error.message });
124
+ }
125
+ else if (error instanceof not_found_error_1.NotFoundError) {
126
+ return res.status(404).json({ message: error.message });
127
+ }
128
+ else {
129
+ throw error;
130
+ }
131
+ }
132
+ },
133
+ ],
101
134
  };
102
135
  //# sourceMappingURL=executions.handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executions.handler.js","sourceRoot":"","sources":["../../../../../src/public-api/v1/handlers/executions/executions.handler.ts"],"names":[],"mappings":";AAAA,gCAA8C;AAC9C,gCAAoC;AAEpC,+CAAyD;AAEzD,2DAAuD;AACvD,2FAAsF;AACtF,0DAAsD;AAGtD,kFAAyF;AACzF,iFAA4E;AAC5E,sEAAsE;AAEtE,iBAAS;IACR,eAAe,EAAE;QAChB,IAAA,kCAAc,EAAC,kBAAkB,CAAC;QAClC,KAAK,EAAE,GAA4B,EAAE,GAAqB,EAA6B,EAAE;YACxF,MAAM,kBAAkB,GAAG,MAAM,IAAA,wCAAoB,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAIrF,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAG1B,MAAM,SAAS,GAAG,MAAM,cAAS,CAAC,GAAG,CACpC,wBAAmB,CACnB,CAAC,mCAAmC,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;YAErE,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC3B,OAAO,EAAE,mCAAmC;iBAC5C,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAChC,cAAS,CAAC,GAAG,CAAC,uDAAyB,CAAC,CAAC,MAAM,CAAC;oBAC/C,WAAW,EAAE,SAAS,CAAC,EAAE;oBACzB,IAAI,EAAE,SAAS,CAAC,IAAI;iBACpB,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,cAAS,CAAC,GAAG,CAAC,wBAAmB,CAAC,CAAC,UAAU,CAAC;gBACnD,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,WAAW,EAAE,SAAS,CAAC,EAAE;aACzB,CAAC,CAAC;YAEH,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;YAElB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAA,wCAAyB,EAAC,SAAS,CAAC,CAAC,CAAC;QACvD,CAAC;KACD;IACD,YAAY,EAAE;QACb,IAAA,kCAAc,EAAC,gBAAgB,CAAC;QAChC,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAA6B,EAAE;YACrF,MAAM,kBAAkB,GAAG,MAAM,IAAA,wCAAoB,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;YAInF,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;YAG1C,MAAM,SAAS,GAAG,MAAM,cAAS,CAAC,GAAG,CACpC,wBAAmB,CACnB,CAAC,mCAAmC,CAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;YAE3E,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,cAAS,CAAC,GAAG,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBAC5D,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACnB,SAAS,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC,IAAI,CAAC,IAAA,wCAAyB,EAAC,SAAS,CAAC,CAAC,CAAC;QACvD,CAAC;KACD;IACD,aAAa,EAAE;QACd,IAAA,kCAAc,EAAC,gBAAgB,CAAC;QAChC,+BAAW;QACX,KAAK,EAAE,GAA4B,EAAE,GAAqB,EAA6B,EAAE;YACxF,MAAM,EACL,MAAM,GAAG,SAAS,EAClB,KAAK,GAAG,GAAG,EACX,MAAM,GAAG,SAAS,EAClB,WAAW,GAAG,KAAK,EACnB,UAAU,GAAG,SAAS,EACtB,SAAS,GACT,GAAG,GAAG,CAAC,KAAK,CAAC;YAEd,MAAM,kBAAkB,GAAG,MAAM,IAAA,wCAAoB,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC;YAI9F,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBAC5F,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;YAGD,MAAM,oBAAoB,GAAG,cAAS,CAAC,GAAG,CAAC,oCAAgB,CAAC;iBAC1D,mBAAmB,EAAE;iBACrB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAEtB,MAAM,OAAO,GAAG;gBACf,MAAM;gBACN,KAAK;gBACL,MAAM;gBACN,WAAW;gBACX,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,kBAAkB;gBAC3D,qBAAqB,EAAE,oBAAoB;aAC3C,CAAC;YAEF,MAAM,UAAU,GACf,MAAM,cAAS,CAAC,GAAG,CAAC,wBAAmB,CAAC,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAE7E,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAExE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAE3B,MAAM,KAAK,GACV,MAAM,cAAS,CAAC,GAAG,CAAC,wBAAmB,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAElF,cAAS,CAAC,GAAG,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBACjE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACnB,SAAS,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,IAAA,wCAAyB,EAAC,UAAU,CAAC;gBAC3C,UAAU,EAAE,IAAA,qCAAgB,EAAC;oBAC5B,MAAM,EAAE,SAAS;oBACjB,KAAK;oBACL,mBAAmB,EAAE,KAAK;iBAC1B,CAAC;aACF,CAAC,CAAC;QACJ,CAAC;KACD;CACD,CAAC"}
1
+ {"version":3,"file":"executions.handler.js","sourceRoot":"","sources":["../../../../../src/public-api/v1/handlers/executions/executions.handler.ts"],"names":[],"mappings":";AAAA,gCAA8C;AAC9C,gCAAoC;AAEpC,+CAAyD;AAEzD,2DAAuD;AACvD,2FAAsF;AACtF,0FAAoF;AACpF,wFAAkF;AAClF,8EAAyE;AACzE,0DAAsD;AACtD,sEAAkE;AAGlE,kFAAyF;AACzF,iFAA4E;AAC5E,sEAAsE;AAEtE,iBAAS;IACR,eAAe,EAAE;QAChB,IAAA,kCAAc,EAAC,kBAAkB,CAAC;QAClC,KAAK,EAAE,GAA4B,EAAE,GAAqB,EAA6B,EAAE;YACxF,MAAM,kBAAkB,GAAG,MAAM,IAAA,wCAAoB,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAIrF,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAG1B,MAAM,SAAS,GAAG,MAAM,cAAS,CAAC,GAAG,CACpC,wBAAmB,CACnB,CAAC,mCAAmC,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;YAErE,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC3B,OAAO,EAAE,mCAAmC;iBAC5C,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAChC,cAAS,CAAC,GAAG,CAAC,uDAAyB,CAAC,CAAC,MAAM,CAAC;oBAC/C,WAAW,EAAE,SAAS,CAAC,EAAE;oBACzB,IAAI,EAAE,SAAS,CAAC,IAAI;iBACpB,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,cAAS,CAAC,GAAG,CAAC,wBAAmB,CAAC,CAAC,UAAU,CAAC;gBACnD,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,WAAW,EAAE,SAAS,CAAC,EAAE;aACzB,CAAC,CAAC;YAEH,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;YAElB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAA,wCAAyB,EAAC,SAAS,CAAC,CAAC,CAAC;QACvD,CAAC;KACD;IACD,YAAY,EAAE;QACb,IAAA,kCAAc,EAAC,gBAAgB,CAAC;QAChC,KAAK,EAAE,GAAyB,EAAE,GAAqB,EAA6B,EAAE;YACrF,MAAM,kBAAkB,GAAG,MAAM,IAAA,wCAAoB,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;YAInF,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;YAG1C,MAAM,SAAS,GAAG,MAAM,cAAS,CAAC,GAAG,CACpC,wBAAmB,CACnB,CAAC,mCAAmC,CAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;YAE3E,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,cAAS,CAAC,GAAG,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBAC5D,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACnB,SAAS,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC,IAAI,CAAC,IAAA,wCAAyB,EAAC,SAAS,CAAC,CAAC,CAAC;QACvD,CAAC;KACD;IACD,aAAa,EAAE;QACd,IAAA,kCAAc,EAAC,gBAAgB,CAAC;QAChC,+BAAW;QACX,KAAK,EAAE,GAA4B,EAAE,GAAqB,EAA6B,EAAE;YACxF,MAAM,EACL,MAAM,GAAG,SAAS,EAClB,KAAK,GAAG,GAAG,EACX,MAAM,GAAG,SAAS,EAClB,WAAW,GAAG,KAAK,EACnB,UAAU,GAAG,SAAS,EACtB,SAAS,GACT,GAAG,GAAG,CAAC,KAAK,CAAC;YAEd,MAAM,kBAAkB,GAAG,MAAM,IAAA,wCAAoB,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC;YAI9F,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBAC5F,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;YAGD,MAAM,oBAAoB,GAAG,cAAS,CAAC,GAAG,CAAC,oCAAgB,CAAC;iBAC1D,mBAAmB,EAAE;iBACrB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAEtB,MAAM,OAAO,GACZ;gBACC,MAAM;gBACN,KAAK;gBACL,MAAM;gBACN,WAAW;gBACX,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,kBAAkB;gBAI3D,qBAAqB,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;aAC9E,CAAC;YAEH,MAAM,UAAU,GACf,MAAM,cAAS,CAAC,GAAG,CAAC,wBAAmB,CAAC,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAE7E,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAExE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAE3B,MAAM,KAAK,GACV,MAAM,cAAS,CAAC,GAAG,CAAC,wBAAmB,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAElF,cAAS,CAAC,GAAG,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBACjE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACnB,SAAS,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,IAAA,wCAAyB,EAAC,UAAU,CAAC;gBAC3C,UAAU,EAAE,IAAA,qCAAgB,EAAC;oBAC5B,MAAM,EAAE,SAAS;oBACjB,KAAK;oBACL,mBAAmB,EAAE,KAAK;iBAC1B,CAAC;aACF,CAAC,CAAC;QACJ,CAAC;KACD;IACD,cAAc,EAAE;QACf,IAAA,kCAAc,EAAC,iBAAiB,CAAC;QACjC,KAAK,EAAE,GAA2B,EAAE,GAAqB,EAA6B,EAAE;YACvF,MAAM,kBAAkB,GAAG,MAAM,IAAA,wCAAoB,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;YAInF,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,CAAC;gBACJ,MAAM,gBAAgB,GAAG,MAAM,cAAS,CAAC,GAAG,CAAC,oCAAgB,CAAC,CAAC,KAAK,CACnE,GAAG,EACH,kBAAkB,CAClB,CAAC;gBAEF,cAAS,CAAC,GAAG,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,wBAAwB,EAAE;oBAC1D,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;oBACnB,SAAS,EAAE,IAAI;iBACf,CAAC,CAAC;gBAEH,OAAO,GAAG,CAAC,IAAI,CAAC,IAAA,wCAAyB,EAAC,gBAAgB,CAAC,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IACC,KAAK,YAAY,wDAAyB;oBAC1C,KAAK,YAAY,0DAA0B,EAC1C,CAAC;oBACF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzD,CAAC;qBAAM,IAAI,KAAK,YAAY,+BAAa,EAAE,CAAC;oBAC3C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACP,MAAM,KAAK,CAAC;gBACb,CAAC;YACF,CAAC;QACF,CAAC;KACD;CACD,CAAC"}
@@ -200,6 +200,7 @@ paths:
200
200
  enum:
201
201
  - canceled
202
202
  - error
203
+ - running
203
204
  - success
204
205
  - waiting
205
206
  - name: workflowId
@@ -272,6 +273,39 @@ paths:
272
273
  $ref: '#/components/responses/unauthorized'
273
274
  '404':
274
275
  $ref: '#/components/responses/notFound'
276
+ /executions/{id}/retry:
277
+ post:
278
+ x-eov-operation-id: retryExecution
279
+ x-eov-operation-handler: v1/handlers/executions/executions.handler
280
+ tags:
281
+ - Execution
282
+ summary: Retry an execution
283
+ description: Retry an execution from your instance.
284
+ parameters:
285
+ - $ref: '#/components/parameters/executionId'
286
+ requestBody:
287
+ required: false
288
+ content:
289
+ application/json:
290
+ schema:
291
+ type: object
292
+ properties:
293
+ loadWorkflow:
294
+ type: boolean
295
+ description: Whether to load the currently saved workflow to execute instead of the one saved at the time of the execution. If set to true, it will retry with the latest version of the workflow.
296
+ responses:
297
+ '200':
298
+ description: Operation successful.
299
+ content:
300
+ application/json:
301
+ schema:
302
+ $ref: '#/components/schemas/execution'
303
+ '401':
304
+ $ref: '#/components/responses/unauthorized'
305
+ '404':
306
+ $ref: '#/components/responses/notFound'
307
+ '409':
308
+ $ref: '#/components/responses/conflict'
275
309
  /tags:
276
310
  post:
277
311
  x-eov-operation-id: createTag
@@ -949,6 +983,8 @@ paths:
949
983
  - Variables
950
984
  summary: Update a variable
951
985
  description: Update a variable from your instance.
986
+ parameters:
987
+ - $ref: '#/components/parameters/variableId'
952
988
  requestBody:
953
989
  description: Payload for variable to update.
954
990
  content:
@@ -1357,6 +1393,8 @@ components:
1357
1393
  stoppedAt:
1358
1394
  type: string
1359
1395
  format: date-time
1396
+ nullable: true
1397
+ description: The time at which the execution stopped. Will only be null for executions that still have the status 'running'.
1360
1398
  workflowId:
1361
1399
  type: number
1362
1400
  example: '1000'
@@ -1912,10 +1950,10 @@ components:
1912
1950
  description: Unauthorized
1913
1951
  notFound:
1914
1952
  description: The specified resource was not found.
1915
- badRequest:
1916
- description: The request is invalid or provides malformed data.
1917
1953
  conflict:
1918
1954
  description: Conflict
1955
+ badRequest:
1956
+ description: The request is invalid or provides malformed data.
1919
1957
  forbidden:
1920
1958
  description: Forbidden
1921
1959
  NotFound:
@@ -2022,6 +2060,8 @@ components:
2022
2060
  $ref: '#/components/parameters/userIdentifier'
2023
2061
  IncludeRole:
2024
2062
  $ref: '#/components/parameters/includeRole'
2063
+ VariableId:
2064
+ $ref: '#/components/parameters/variableId'
2025
2065
  securitySchemes:
2026
2066
  ApiKeyAuth:
2027
2067
  type: apiKey
@@ -13,7 +13,7 @@ export declare abstract class AbstractPush<Connection> extends TypedEmitter<Abst
13
13
  protected connections: Record<string, Connection>;
14
14
  protected userIdByPushRef: Record<string, string>;
15
15
  protected abstract close(connection: Connection): void;
16
- protected abstract sendToOneConnection(connection: Connection, data: string): void;
16
+ protected abstract sendToOneConnection(connection: Connection, data: string, isBinary: boolean): void;
17
17
  protected abstract ping(connection: Connection): void;
18
18
  constructor(logger: Logger, errorReporter: ErrorReporter);
19
19
  protected add(pushRef: string, userId: User['id'], connection: Connection): void;
@@ -22,7 +22,7 @@ export declare abstract class AbstractPush<Connection> extends TypedEmitter<Abst
22
22
  private sendTo;
23
23
  private pingAll;
24
24
  sendToAll(pushMsg: PushMessage): void;
25
- sendToOne(pushMsg: PushMessage, pushRef: string): void;
25
+ sendToOne(pushMsg: PushMessage, pushRef: string, asBinary?: boolean): void;
26
26
  sendToUsers(pushMsg: PushMessage, userIds: Array<User['id']>): void;
27
27
  closeAllConnections(): void;
28
28
  hasPushRef(pushRef: string): boolean;
@@ -46,7 +46,7 @@ let AbstractPush = class AbstractPush extends typed_emitter_1.TypedEmitter {
46
46
  delete this.connections[pushRef];
47
47
  delete this.userIdByPushRef[pushRef];
48
48
  }
49
- sendTo({ type, data }, pushRefs) {
49
+ sendTo({ type, data }, pushRefs, asBinary = false) {
50
50
  this.logger.debug(`Pushed to frontend: ${type}`, {
51
51
  dataType: type,
52
52
  pushRefs: pushRefs.join(', '),
@@ -55,7 +55,7 @@ let AbstractPush = class AbstractPush extends typed_emitter_1.TypedEmitter {
55
55
  for (const pushRef of pushRefs) {
56
56
  const connection = this.connections[pushRef];
57
57
  (0, n8n_workflow_1.assert)(connection);
58
- this.sendToOneConnection(connection, stringifiedPayload);
58
+ this.sendToOneConnection(connection, stringifiedPayload, asBinary);
59
59
  }
60
60
  }
61
61
  pingAll() {
@@ -66,12 +66,12 @@ let AbstractPush = class AbstractPush extends typed_emitter_1.TypedEmitter {
66
66
  sendToAll(pushMsg) {
67
67
  this.sendTo(pushMsg, Object.keys(this.connections));
68
68
  }
69
- sendToOne(pushMsg, pushRef) {
69
+ sendToOne(pushMsg, pushRef, asBinary = false) {
70
70
  if (this.connections[pushRef] === undefined) {
71
71
  this.logger.debug(`The session "${pushRef}" is not registered.`, { pushRef });
72
72
  return;
73
73
  }
74
- this.sendTo(pushMsg, [pushRef]);
74
+ this.sendTo(pushMsg, [pushRef], asBinary);
75
75
  }
76
76
  sendToUsers(pushMsg, userIds) {
77
77
  const { connections } = this;
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.push.js","sourceRoot":"","sources":["../../src/push/abstract.push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract.push.js","sourceRoot":"","sources":["../../src/push/abstract.push.ts"],"names":[],"mappings":"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"}
@@ -31,11 +31,12 @@ export declare class Push extends TypedEmitter<PushEvents> {
31
31
  handleRequest(req: SSEPushRequest | WebSocketPushRequest, res: PushResponse): void;
32
32
  broadcast(pushMsg: PushMessage): void;
33
33
  hasPushRef(pushRef: string): boolean;
34
- send(pushMsg: PushMessage, pushRef: string): void;
34
+ send(pushMsg: PushMessage, pushRef: string, asBinary?: boolean): void;
35
35
  sendToUsers(pushMsg: PushMessage, userIds: Array<User['id']>): void;
36
36
  onShutdown(): void;
37
37
  private shouldRelayViaPubSub;
38
- handleRelayExecutionLifecycleEvent({ pushRef, ...pushMsg }: PushMessage & {
38
+ handleRelayExecutionLifecycleEvent({ pushRef, asBinary, ...pushMsg }: PushMessage & {
39
+ asBinary: boolean;
39
40
  pushRef: string;
40
41
  }): void;
41
42
  private relayViaPubSub;
@@ -23,10 +23,10 @@ const n8n_workflow_1 = require("n8n-workflow");
23
23
  const url_1 = require("url");
24
24
  const ws_1 = require("ws");
25
25
  const auth_service_1 = require("../auth/auth.service");
26
- const constants_1 = require("../constants");
27
26
  const bad_request_error_1 = require("../errors/response-errors/bad-request.error");
28
27
  const publisher_service_1 = require("../scaling/pubsub/publisher.service");
29
28
  const typed_emitter_1 = require("../typed-emitter");
29
+ const origin_validator_1 = require("./origin-validator");
30
30
  const push_config_1 = require("./push.config");
31
31
  const sse_push_1 = require("./sse.push");
32
32
  const websocket_push_1 = require("./websocket.push");
@@ -74,20 +74,24 @@ let Push = class Push extends typed_emitter_1.TypedEmitter {
74
74
  handleRequest(req, res) {
75
75
  const { ws, query: { pushRef }, user, headers, } = req;
76
76
  let connectionError = '';
77
- const originHost = headers.origin?.replace(/^https?:\/\//, '');
78
77
  if (!pushRef) {
79
78
  connectionError = 'The query parameter "pushRef" is missing!';
80
79
  }
81
- else if (!originHost) {
82
- this.logger.warn('Origin header is missing');
83
- connectionError = 'Invalid origin!';
84
- }
85
80
  else if (backend_common_1.inProduction) {
86
- const expectedHost = typeof headers['x-forwarded-host'] === 'string'
87
- ? headers['x-forwarded-host']
88
- : headers.host;
89
- if (expectedHost !== originHost) {
90
- this.logger.warn(`Origin header does NOT match the expected origin. (Origin: "${originHost}", Expected: "${expectedHost}")`, { headers: (0, pick_1.default)(headers, ['host', 'origin', 'x-forwarded-proto', 'x-forwarded-host']) });
81
+ const validation = (0, origin_validator_1.validateOriginHeaders)(headers);
82
+ if (!validation.isValid) {
83
+ this.logger.warn('Origin header does NOT match the expected origin. ' +
84
+ `(Origin: "${headers.origin}" -> "${validation.originInfo?.host || 'N/A'}", ` +
85
+ `Expected: "${validation.rawExpectedHost}" -> "${validation.expectedHost}", ` +
86
+ `Protocol: "${validation.expectedProtocol}")`, {
87
+ headers: (0, pick_1.default)(headers, [
88
+ 'host',
89
+ 'origin',
90
+ 'x-forwarded-proto',
91
+ 'x-forwarded-host',
92
+ 'forwarded',
93
+ ]),
94
+ });
91
95
  connectionError = 'Invalid origin!';
92
96
  }
93
97
  }
@@ -117,12 +121,12 @@ let Push = class Push extends typed_emitter_1.TypedEmitter {
117
121
  hasPushRef(pushRef) {
118
122
  return this.backend.hasPushRef(pushRef);
119
123
  }
120
- send(pushMsg, pushRef) {
124
+ send(pushMsg, pushRef, asBinary = false) {
121
125
  if (this.shouldRelayViaPubSub(pushRef)) {
122
- this.relayViaPubSub(pushMsg, pushRef);
126
+ this.relayViaPubSub(pushMsg, pushRef, asBinary);
123
127
  return;
124
128
  }
125
- this.backend.sendToOne(pushMsg, pushRef);
129
+ this.backend.sendToOne(pushMsg, pushRef, asBinary);
126
130
  }
127
131
  sendToUsers(pushMsg, userIds) {
128
132
  this.backend.sendToUsers(pushMsg, userIds);
@@ -134,36 +138,36 @@ let Push = class Push extends typed_emitter_1.TypedEmitter {
134
138
  const { isWorker, isMultiMain } = this.instanceSettings;
135
139
  return isWorker || (isMultiMain && !this.hasPushRef(pushRef));
136
140
  }
137
- handleRelayExecutionLifecycleEvent({ pushRef, ...pushMsg }) {
141
+ handleRelayExecutionLifecycleEvent({ pushRef, asBinary, ...pushMsg }) {
138
142
  if (!this.hasPushRef(pushRef))
139
143
  return;
140
- this.send(pushMsg, pushRef);
144
+ this.send(pushMsg, pushRef, asBinary);
141
145
  }
142
- relayViaPubSub(pushMsg, pushRef) {
146
+ relayViaPubSub(pushMsg, pushRef, asBinary = false) {
143
147
  const eventSizeBytes = new TextEncoder().encode(JSON.stringify(pushMsg.data)).length;
144
148
  if (eventSizeBytes <= MAX_PAYLOAD_SIZE_BYTES) {
145
149
  void this.publisher.publishCommand({
146
150
  command: 'relay-execution-lifecycle-event',
147
- payload: { ...pushMsg, pushRef },
151
+ payload: { ...pushMsg, pushRef, asBinary },
148
152
  });
149
153
  return;
150
154
  }
151
- const pushMsgCopy = (0, n8n_workflow_1.deepCopy)(pushMsg);
155
+ const { type } = pushMsg;
152
156
  const toMb = (bytes) => (bytes / (1024 * 1024)).toFixed(0);
153
157
  const eventMb = toMb(eventSizeBytes);
154
158
  const maxMb = toMb(MAX_PAYLOAD_SIZE_BYTES);
155
- const { type } = pushMsgCopy;
156
- this.logger.warn(`Size of "${type}" (${eventMb} MB) exceeds max size ${maxMb} MB. Trimming...`);
157
- if (type === 'nodeExecuteAfter') {
158
- pushMsgCopy.data.itemCount = pushMsgCopy.data.data.data?.main[0]?.length ?? 1;
159
- pushMsgCopy.data.data.data = constants_1.TRIMMED_TASK_DATA_CONNECTIONS;
159
+ if (type === 'nodeExecuteAfterData') {
160
+ this.logger.warn(`Size of "${type}" (${eventMb} MB) exceeds max size ${maxMb} MB. Skipping...`);
161
+ return;
160
162
  }
161
- else if (type === 'executionFinished') {
163
+ this.logger.warn(`Size of "${type}" (${eventMb} MB) exceeds max size ${maxMb} MB. Trimming...`);
164
+ const pushMsgCopy = (0, n8n_workflow_1.deepCopy)(pushMsg);
165
+ if (pushMsgCopy.type === 'executionFinished') {
162
166
  pushMsgCopy.data.rawData = '';
163
167
  }
164
168
  void this.publisher.publishCommand({
165
169
  command: 'relay-execution-lifecycle-event',
166
- payload: { ...pushMsgCopy, pushRef },
170
+ payload: { ...pushMsgCopy, pushRef, asBinary },
167
171
  });
168
172
  }
169
173
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/push/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/push/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Request } from 'express';
2
+ export interface OriginValidationResult {
3
+ isValid: boolean;
4
+ originInfo?: {
5
+ protocol: 'http' | 'https';
6
+ host: string;
7
+ };
8
+ expectedHost?: string;
9
+ expectedProtocol?: 'http' | 'https';
10
+ rawExpectedHost?: string;
11
+ error?: string;
12
+ }
13
+ export declare function validateOriginHeaders(headers: Request['headers']): OriginValidationResult;
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateOriginHeaders = validateOriginHeaders;
4
+ function validateOriginHeaders(headers) {
5
+ const originInfo = parseOrigin(headers.origin ?? '');
6
+ if (!originInfo) {
7
+ return {
8
+ isValid: false,
9
+ error: 'Origin header is missing or malformed',
10
+ };
11
+ }
12
+ let rawExpectedHost;
13
+ let expectedProtocol = originInfo.protocol;
14
+ const forwarded = parseForwardedHeader(headers.forwarded ?? '');
15
+ if (forwarded?.host) {
16
+ rawExpectedHost = forwarded.host;
17
+ if (forwarded.proto) {
18
+ const validatedProto = validateProtocol(forwarded.proto);
19
+ if (validatedProto) {
20
+ expectedProtocol = validatedProto;
21
+ }
22
+ }
23
+ }
24
+ else {
25
+ const xForwardedHost = getFirstHeaderValue(headers['x-forwarded-host']);
26
+ if (xForwardedHost) {
27
+ rawExpectedHost = xForwardedHost;
28
+ const xForwardedProto = getFirstHeaderValue(headers['x-forwarded-proto']);
29
+ if (xForwardedProto) {
30
+ const validatedProto = validateProtocol(xForwardedProto.split(',')[0]?.trim());
31
+ if (validatedProto) {
32
+ expectedProtocol = validatedProto;
33
+ }
34
+ }
35
+ }
36
+ else {
37
+ rawExpectedHost = headers.host;
38
+ }
39
+ }
40
+ const normalizedExpectedHost = normalizeHost(rawExpectedHost ?? '', expectedProtocol);
41
+ const isValid = normalizedExpectedHost === originInfo.host;
42
+ return {
43
+ isValid,
44
+ originInfo,
45
+ expectedHost: normalizedExpectedHost,
46
+ expectedProtocol,
47
+ rawExpectedHost,
48
+ error: isValid ? undefined : 'Origin header does not match expected host',
49
+ };
50
+ }
51
+ function normalizeHost(host, protocol) {
52
+ if (!host)
53
+ return host;
54
+ try {
55
+ const url = new URL(`${protocol}://${host}`);
56
+ const defaultPort = protocol === 'https' ? '443' : '80';
57
+ const actualPort = url.port || defaultPort;
58
+ if (actualPort === defaultPort) {
59
+ return stripIPv6Brackets(url.hostname);
60
+ }
61
+ return stripIPv6Brackets(url.host);
62
+ }
63
+ catch {
64
+ return host;
65
+ }
66
+ }
67
+ function stripIPv6Brackets(hostname) {
68
+ if (hostname.startsWith('[') && hostname.includes(']:')) {
69
+ const closingBracket = hostname.indexOf(']:');
70
+ const ipv6 = hostname.slice(1, closingBracket);
71
+ const port = hostname.slice(closingBracket + 2);
72
+ return `${ipv6}:${port}`;
73
+ }
74
+ if (hostname.startsWith('[') && hostname.endsWith(']')) {
75
+ return hostname.slice(1, -1);
76
+ }
77
+ return hostname;
78
+ }
79
+ function getFirstHeaderValue(header) {
80
+ if (!header)
81
+ return undefined;
82
+ if (typeof header === 'string')
83
+ return header;
84
+ return header[0];
85
+ }
86
+ function validateProtocol(proto) {
87
+ if (!proto)
88
+ return undefined;
89
+ const normalized = proto.toLowerCase().trim();
90
+ return normalized === 'http' || normalized === 'https' ? normalized : undefined;
91
+ }
92
+ function parseForwardedHeader(forwardedHeader) {
93
+ if (!forwardedHeader || typeof forwardedHeader !== 'string') {
94
+ return null;
95
+ }
96
+ try {
97
+ const firstEntry = forwardedHeader.split(',')[0]?.trim();
98
+ if (!firstEntry)
99
+ return null;
100
+ const result = {};
101
+ const pairs = firstEntry.split(';');
102
+ for (const pair of pairs) {
103
+ const [key, value] = pair.split('=', 2);
104
+ if (!key || !value)
105
+ continue;
106
+ const cleanKey = key.trim().toLowerCase();
107
+ const cleanValue = value.trim().replace(/^["']|["']$/g, '');
108
+ if (cleanKey === 'host') {
109
+ result.host = cleanValue;
110
+ }
111
+ else if (cleanKey === 'proto') {
112
+ result.proto = cleanValue;
113
+ }
114
+ }
115
+ return result;
116
+ }
117
+ catch {
118
+ return null;
119
+ }
120
+ }
121
+ function parseOrigin(origin) {
122
+ if (!origin || typeof origin !== 'string') {
123
+ return null;
124
+ }
125
+ try {
126
+ const url = new URL(origin);
127
+ const protocol = url.protocol.toLowerCase();
128
+ if (protocol !== 'http:' && protocol !== 'https:') {
129
+ return null;
130
+ }
131
+ const protocolName = protocol === 'https:' ? 'https' : 'http';
132
+ const defaultPort = protocolName === 'https' ? '443' : '80';
133
+ const actualPort = url.port || defaultPort;
134
+ const rawHost = actualPort === defaultPort ? url.hostname : url.host;
135
+ const normalizedHost = stripIPv6Brackets(rawHost);
136
+ return {
137
+ protocol: protocolName,
138
+ host: normalizedHost,
139
+ };
140
+ }
141
+ catch {
142
+ return null;
143
+ }
144
+ }
145
+ //# sourceMappingURL=origin-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-validator.js","sourceRoot":"","sources":["../../src/push/origin-validator.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { AbstractPush } from './abstract.push';
4
4
  export declare class WebSocketPush extends AbstractPush<WebSocket> {
5
5
  add(pushRef: string, userId: User['id'], connection: WebSocket): void;
6
6
  protected close(connection: WebSocket): void;
7
- protected sendToOneConnection(connection: WebSocket, data: string): void;
7
+ protected sendToOneConnection(connection: WebSocket, data: string, asBinary: boolean): void;
8
8
  protected ping(connection: WebSocket): void;
9
9
  private isClientHeartbeat;
10
10
  }
@@ -57,8 +57,8 @@ let WebSocketPush = class WebSocketPush extends abstract_push_1.AbstractPush {
57
57
  close(connection) {
58
58
  connection.close();
59
59
  }
60
- sendToOneConnection(connection, data) {
61
- connection.send(data);
60
+ sendToOneConnection(connection, data, asBinary) {
61
+ connection.send(data, { binary: asBinary });
62
62
  }
63
63
  ping(connection) {
64
64
  if (!connection.isAlive) {
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.push.js","sourceRoot":"","sources":["../../src/push/websocket.push.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8CAAwD;AAExD,gCAAkC;AAClC,+CAA+C;AAG/C,mDAA+C;AAE/C,SAAS,SAAS;IACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrB,CAAC;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,4BAAuB;IACzD,GAAG,CAAC,OAAe,EAAE,MAAkB,EAAE,UAAqB;QAC7D,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAuB,EAAE,EAAE;YACnD,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBACjC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACrB,CAAC,CAAC,IAAI,YAAY,WAAW;wBAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;wBACnB,CAAC,CAAC,IAAI,CAAC;gBAET,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAKzD,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvC,OAAO;gBACR,CAAC;gBAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,aAAa,CAAC,KAAK,CACvB,IAAI,8BAAe,CAAC,4BAA4B,EAAE;oBACjD,KAAK,EAAE;wBACN,MAAM;wBACN,IAAI;qBACJ;oBACD,KAAK,EAAE,KAAK;iBACZ,CAAC,CACF,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;oBAC1D,KAAK,EAAE,KAAgB;oBACvB,OAAO;oBACP,IAAI;iBACJ,CAAC,CAAC;YACJ,CAAC;QACF,CAAC,CAAC;QAGF,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YAC7B,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAClC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;IAES,KAAK,CAAC,UAAqB;QACpC,UAAU,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAES,mBAAmB,CAAC,UAAqB,EAAE,IAAY;QAChE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAES,IAAI,CAAC,UAAqB;QAEnC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,UAAU,CAAC,SAAS,EAAE,CAAC;QAC/B,CAAC;QACD,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,UAAU,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,GAAY;QAC3C,MAAM,MAAM,GAAG,MAAM,kCAAsB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAEhE,OAAO,MAAM,CAAC,OAAO,CAAC;IACvB,CAAC;CACD,CAAA;AA3EY,sCAAa;wBAAb,aAAa;IADzB,IAAA,YAAO,GAAE;GACG,aAAa,CA2EzB"}
1
+ {"version":3,"file":"websocket.push.js","sourceRoot":"","sources":["../../src/push/websocket.push.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@ export declare const QUEUE_NAME = "jobs";
2
2
  export declare const JOB_TYPE_NAME = "job";
3
3
  export declare const COMMAND_PUBSUB_CHANNEL = "n8n.commands";
4
4
  export declare const WORKER_RESPONSE_PUBSUB_CHANNEL = "n8n.worker-response";
5
- export declare const SELF_SEND_COMMANDS: Set<"reload-license" | "restart-event-bus" | "reload-external-secrets-providers" | "community-package-install" | "community-package-update" | "community-package-uninstall" | "get-worker-id" | "get-worker-status" | "add-webhooks-triggers-and-pollers" | "remove-triggers-and-pollers" | "display-workflow-activation" | "display-workflow-deactivation" | "display-workflow-activation-error" | "relay-execution-lifecycle-event" | "clear-test-webhooks">;
6
- export declare const IMMEDIATE_COMMANDS: Set<"reload-license" | "restart-event-bus" | "reload-external-secrets-providers" | "community-package-install" | "community-package-update" | "community-package-uninstall" | "get-worker-id" | "get-worker-status" | "add-webhooks-triggers-and-pollers" | "remove-triggers-and-pollers" | "display-workflow-activation" | "display-workflow-deactivation" | "display-workflow-activation-error" | "relay-execution-lifecycle-event" | "clear-test-webhooks">;
5
+ export declare const SELF_SEND_COMMANDS: Set<"reload-license" | "restart-event-bus" | "reload-external-secrets-providers" | "community-package-install" | "community-package-update" | "community-package-uninstall" | "get-worker-id" | "get-worker-status" | "add-webhooks-triggers-and-pollers" | "remove-triggers-and-pollers" | "display-workflow-activation" | "display-workflow-deactivation" | "display-workflow-activation-error" | "relay-execution-lifecycle-event" | "clear-test-webhooks" | "reload-oidc-config">;
6
+ export declare const IMMEDIATE_COMMANDS: Set<"reload-license" | "restart-event-bus" | "reload-external-secrets-providers" | "community-package-install" | "community-package-update" | "community-package-uninstall" | "get-worker-id" | "get-worker-status" | "add-webhooks-triggers-and-pollers" | "remove-triggers-and-pollers" | "display-workflow-activation" | "display-workflow-deactivation" | "display-workflow-activation-error" | "relay-execution-lifecycle-event" | "clear-test-webhooks" | "reload-oidc-config">;