@atom8n/config 2.1.0

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 (128) hide show
  1. package/dist/build.tsbuildinfo +1 -0
  2. package/dist/configs/ai-assistant.config.d.ts +3 -0
  3. package/dist/configs/ai-assistant.config.js +27 -0
  4. package/dist/configs/ai-assistant.config.js.map +1 -0
  5. package/dist/configs/ai-builder.config.d.ts +3 -0
  6. package/dist/configs/ai-builder.config.js +27 -0
  7. package/dist/configs/ai-builder.config.js.map +1 -0
  8. package/dist/configs/ai.config.d.ts +4 -0
  9. package/dist/configs/ai.config.js +30 -0
  10. package/dist/configs/ai.config.js.map +1 -0
  11. package/dist/configs/auth.config.d.ts +11 -0
  12. package/dist/configs/auth.config.js +43 -0
  13. package/dist/configs/auth.config.js.map +1 -0
  14. package/dist/configs/cache.config.d.ts +17 -0
  15. package/dist/configs/cache.config.js +71 -0
  16. package/dist/configs/cache.config.js.map +1 -0
  17. package/dist/configs/credentials.config.d.ts +11 -0
  18. package/dist/configs/credentials.config.js +58 -0
  19. package/dist/configs/credentials.config.js.map +1 -0
  20. package/dist/configs/data-table.config.d.ts +10 -0
  21. package/dist/configs/data-table.config.js +57 -0
  22. package/dist/configs/data-table.config.js.map +1 -0
  23. package/dist/configs/database.config.d.ts +55 -0
  24. package/dist/configs/database.config.js +248 -0
  25. package/dist/configs/database.config.js.map +1 -0
  26. package/dist/configs/deployment.config.d.ts +3 -0
  27. package/dist/configs/deployment.config.js +27 -0
  28. package/dist/configs/deployment.config.js.map +1 -0
  29. package/dist/configs/diagnostics.config.d.ts +11 -0
  30. package/dist/configs/diagnostics.config.js +58 -0
  31. package/dist/configs/diagnostics.config.js.map +1 -0
  32. package/dist/configs/dynamic-banners.config.d.ts +4 -0
  33. package/dist/configs/dynamic-banners.config.js +32 -0
  34. package/dist/configs/dynamic-banners.config.js.map +1 -0
  35. package/dist/configs/endpoints.config.d.ts +38 -0
  36. package/dist/configs/endpoints.config.js +193 -0
  37. package/dist/configs/endpoints.config.js.map +1 -0
  38. package/dist/configs/event-bus.config.d.ts +14 -0
  39. package/dist/configs/event-bus.config.js +60 -0
  40. package/dist/configs/event-bus.config.js.map +1 -0
  41. package/dist/configs/executions.config.d.ts +37 -0
  42. package/dist/configs/executions.config.js +166 -0
  43. package/dist/configs/executions.config.js.map +1 -0
  44. package/dist/configs/external-hooks.config.d.ts +4 -0
  45. package/dist/configs/external-hooks.config.js +28 -0
  46. package/dist/configs/external-hooks.config.js.map +1 -0
  47. package/dist/configs/generic.config.d.ts +9 -0
  48. package/dist/configs/generic.config.js +39 -0
  49. package/dist/configs/generic.config.js.map +1 -0
  50. package/dist/configs/hiring-banner.config.d.ts +3 -0
  51. package/dist/configs/hiring-banner.config.js +27 -0
  52. package/dist/configs/hiring-banner.config.js.map +1 -0
  53. package/dist/configs/instance-settings-config.d.ts +7 -0
  54. package/dist/configs/instance-settings-config.js +40 -0
  55. package/dist/configs/instance-settings-config.js.map +1 -0
  56. package/dist/configs/license.config.d.ts +8 -0
  57. package/dist/configs/license.config.js +52 -0
  58. package/dist/configs/license.config.js.map +1 -0
  59. package/dist/configs/logging.config.d.ts +23 -0
  60. package/dist/configs/logging.config.js +115 -0
  61. package/dist/configs/logging.config.js.map +1 -0
  62. package/dist/configs/mfa.config.d.ts +3 -0
  63. package/dist/configs/mfa.config.js +27 -0
  64. package/dist/configs/mfa.config.js.map +1 -0
  65. package/dist/configs/multi-main-setup.config.d.ts +5 -0
  66. package/dist/configs/multi-main-setup.config.js +37 -0
  67. package/dist/configs/multi-main-setup.config.js.map +1 -0
  68. package/dist/configs/nodes.config.d.ts +10 -0
  69. package/dist/configs/nodes.config.js +58 -0
  70. package/dist/configs/nodes.config.js.map +1 -0
  71. package/dist/configs/personalization.config.d.ts +3 -0
  72. package/dist/configs/personalization.config.js +27 -0
  73. package/dist/configs/personalization.config.js.map +1 -0
  74. package/dist/configs/public-api.config.d.ts +5 -0
  75. package/dist/configs/public-api.config.js +37 -0
  76. package/dist/configs/public-api.config.js.map +1 -0
  77. package/dist/configs/redis.config.d.ts +3 -0
  78. package/dist/configs/redis.config.js +27 -0
  79. package/dist/configs/redis.config.js.map +1 -0
  80. package/dist/configs/runners.config.d.ts +19 -0
  81. package/dist/configs/runners.config.js +85 -0
  82. package/dist/configs/runners.config.js.map +1 -0
  83. package/dist/configs/scaling-mode.config.d.ts +35 -0
  84. package/dist/configs/scaling-mode.config.js +164 -0
  85. package/dist/configs/scaling-mode.config.js.map +1 -0
  86. package/dist/configs/security.config.d.ts +13 -0
  87. package/dist/configs/security.config.js +77 -0
  88. package/dist/configs/security.config.js.map +1 -0
  89. package/dist/configs/sentry.config.d.ts +6 -0
  90. package/dist/configs/sentry.config.js +42 -0
  91. package/dist/configs/sentry.config.js.map +1 -0
  92. package/dist/configs/sso.config.d.ts +27 -0
  93. package/dist/configs/sso.config.js +126 -0
  94. package/dist/configs/sso.config.js.map +1 -0
  95. package/dist/configs/tags.config.d.ts +3 -0
  96. package/dist/configs/tags.config.js +27 -0
  97. package/dist/configs/tags.config.js.map +1 -0
  98. package/dist/configs/templates.config.d.ts +4 -0
  99. package/dist/configs/templates.config.js +32 -0
  100. package/dist/configs/templates.config.js.map +1 -0
  101. package/dist/configs/user-management.config.d.ts +39 -0
  102. package/dist/configs/user-management.config.js +176 -0
  103. package/dist/configs/user-management.config.js.map +1 -0
  104. package/dist/configs/version-notifications.config.d.ts +7 -0
  105. package/dist/configs/version-notifications.config.js +47 -0
  106. package/dist/configs/version-notifications.config.js.map +1 -0
  107. package/dist/configs/workflow-history-compaction.config.d.ts +7 -0
  108. package/dist/configs/workflow-history-compaction.config.js +47 -0
  109. package/dist/configs/workflow-history-compaction.config.js.map +1 -0
  110. package/dist/configs/workflow-history.config.d.ts +3 -0
  111. package/dist/configs/workflow-history.config.js +27 -0
  112. package/dist/configs/workflow-history.config.js.map +1 -0
  113. package/dist/configs/workflows.config.d.ts +10 -0
  114. package/dist/configs/workflows.config.js +44 -0
  115. package/dist/configs/workflows.config.js.map +1 -0
  116. package/dist/custom-types.d.ts +10 -0
  117. package/dist/custom-types.js +23 -0
  118. package/dist/custom-types.js.map +1 -0
  119. package/dist/decorators.d.ts +13 -0
  120. package/dist/decorators.js +104 -0
  121. package/dist/decorators.js.map +1 -0
  122. package/dist/index.d.ts +110 -0
  123. package/dist/index.js +319 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/utils/utils.d.ts +1 -0
  126. package/dist/utils/utils.js +13 -0
  127. package/dist/utils/utils.js.map +1 -0
  128. package/package.json +32 -0
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserManagementConfig = exports.TemplateConfig = void 0;
13
+ const zod_1 = require("zod");
14
+ const decorators_1 = require("../decorators");
15
+ let SmtpAuth = class SmtpAuth {
16
+ constructor() {
17
+ this.user = '';
18
+ this.pass = '';
19
+ this.serviceClient = '';
20
+ this.privateKey = '';
21
+ }
22
+ };
23
+ __decorate([
24
+ (0, decorators_1.Env)('N8N_SMTP_USER'),
25
+ __metadata("design:type", String)
26
+ ], SmtpAuth.prototype, "user", void 0);
27
+ __decorate([
28
+ (0, decorators_1.Env)('N8N_SMTP_PASS'),
29
+ __metadata("design:type", String)
30
+ ], SmtpAuth.prototype, "pass", void 0);
31
+ __decorate([
32
+ (0, decorators_1.Env)('N8N_SMTP_OAUTH_SERVICE_CLIENT'),
33
+ __metadata("design:type", String)
34
+ ], SmtpAuth.prototype, "serviceClient", void 0);
35
+ __decorate([
36
+ (0, decorators_1.Env)('N8N_SMTP_OAUTH_PRIVATE_KEY'),
37
+ __metadata("design:type", String)
38
+ ], SmtpAuth.prototype, "privateKey", void 0);
39
+ SmtpAuth = __decorate([
40
+ decorators_1.Config
41
+ ], SmtpAuth);
42
+ let SmtpConfig = class SmtpConfig {
43
+ constructor() {
44
+ this.host = '';
45
+ this.port = 465;
46
+ this.secure = true;
47
+ this.startTLS = true;
48
+ this.sender = '';
49
+ }
50
+ };
51
+ __decorate([
52
+ (0, decorators_1.Env)('N8N_SMTP_HOST'),
53
+ __metadata("design:type", String)
54
+ ], SmtpConfig.prototype, "host", void 0);
55
+ __decorate([
56
+ (0, decorators_1.Env)('N8N_SMTP_PORT'),
57
+ __metadata("design:type", Number)
58
+ ], SmtpConfig.prototype, "port", void 0);
59
+ __decorate([
60
+ (0, decorators_1.Env)('N8N_SMTP_SSL'),
61
+ __metadata("design:type", Boolean)
62
+ ], SmtpConfig.prototype, "secure", void 0);
63
+ __decorate([
64
+ (0, decorators_1.Env)('N8N_SMTP_STARTTLS'),
65
+ __metadata("design:type", Boolean)
66
+ ], SmtpConfig.prototype, "startTLS", void 0);
67
+ __decorate([
68
+ (0, decorators_1.Env)('N8N_SMTP_SENDER'),
69
+ __metadata("design:type", String)
70
+ ], SmtpConfig.prototype, "sender", void 0);
71
+ __decorate([
72
+ decorators_1.Nested,
73
+ __metadata("design:type", SmtpAuth)
74
+ ], SmtpConfig.prototype, "auth", void 0);
75
+ SmtpConfig = __decorate([
76
+ decorators_1.Config
77
+ ], SmtpConfig);
78
+ let TemplateConfig = class TemplateConfig {
79
+ constructor() {
80
+ this['user-invited'] = '';
81
+ this['password-reset-requested'] = '';
82
+ this['workflow-shared'] = '';
83
+ this['workflow-deactivated'] = '';
84
+ this['credentials-shared'] = '';
85
+ this['project-shared'] = '';
86
+ }
87
+ };
88
+ exports.TemplateConfig = TemplateConfig;
89
+ __decorate([
90
+ (0, decorators_1.Env)('N8N_UM_EMAIL_TEMPLATES_INVITE'),
91
+ __metadata("design:type", String)
92
+ ], TemplateConfig.prototype, "user-invited", void 0);
93
+ __decorate([
94
+ (0, decorators_1.Env)('N8N_UM_EMAIL_TEMPLATES_PWRESET'),
95
+ __metadata("design:type", String)
96
+ ], TemplateConfig.prototype, "password-reset-requested", void 0);
97
+ __decorate([
98
+ (0, decorators_1.Env)('N8N_UM_EMAIL_TEMPLATES_WORKFLOW_SHARED'),
99
+ __metadata("design:type", String)
100
+ ], TemplateConfig.prototype, "workflow-shared", void 0);
101
+ __decorate([
102
+ (0, decorators_1.Env)('N8N_UM_EMAIL_TEMPLATES_WORKFLOW_AUTODEACTIVATED'),
103
+ __metadata("design:type", String)
104
+ ], TemplateConfig.prototype, "workflow-deactivated", void 0);
105
+ __decorate([
106
+ (0, decorators_1.Env)('N8N_UM_EMAIL_TEMPLATES_CREDENTIALS_SHARED'),
107
+ __metadata("design:type", String)
108
+ ], TemplateConfig.prototype, "credentials-shared", void 0);
109
+ __decorate([
110
+ (0, decorators_1.Env)('N8N_UM_EMAIL_TEMPLATES_PROJECT_SHARED'),
111
+ __metadata("design:type", String)
112
+ ], TemplateConfig.prototype, "project-shared", void 0);
113
+ exports.TemplateConfig = TemplateConfig = __decorate([
114
+ decorators_1.Config
115
+ ], TemplateConfig);
116
+ const emailModeSchema = zod_1.z.enum(['', 'smtp']);
117
+ let EmailConfig = class EmailConfig {
118
+ constructor() {
119
+ this.mode = 'smtp';
120
+ }
121
+ };
122
+ __decorate([
123
+ (0, decorators_1.Env)('N8N_EMAIL_MODE', emailModeSchema),
124
+ __metadata("design:type", String)
125
+ ], EmailConfig.prototype, "mode", void 0);
126
+ __decorate([
127
+ decorators_1.Nested,
128
+ __metadata("design:type", SmtpConfig)
129
+ ], EmailConfig.prototype, "smtp", void 0);
130
+ __decorate([
131
+ decorators_1.Nested,
132
+ __metadata("design:type", TemplateConfig)
133
+ ], EmailConfig.prototype, "template", void 0);
134
+ EmailConfig = __decorate([
135
+ decorators_1.Config
136
+ ], EmailConfig);
137
+ const INVALID_JWT_REFRESH_TIMEOUT_WARNING = 'N8N_USER_MANAGEMENT_JWT_REFRESH_TIMEOUT_HOURS needs to be smaller than N8N_USER_MANAGEMENT_JWT_DURATION_HOURS. Setting N8N_USER_MANAGEMENT_JWT_REFRESH_TIMEOUT_HOURS to 0.';
138
+ let UserManagementConfig = class UserManagementConfig {
139
+ constructor() {
140
+ this.jwtSecret = '';
141
+ this.jwtSessionDurationHours = 168;
142
+ this.inviteLinksEmailOnly = false;
143
+ this.jwtRefreshTimeoutHours = 0;
144
+ }
145
+ sanitize() {
146
+ if (this.jwtRefreshTimeoutHours >= this.jwtSessionDurationHours) {
147
+ console.warn(INVALID_JWT_REFRESH_TIMEOUT_WARNING);
148
+ this.jwtRefreshTimeoutHours = 0;
149
+ }
150
+ }
151
+ };
152
+ exports.UserManagementConfig = UserManagementConfig;
153
+ __decorate([
154
+ decorators_1.Nested,
155
+ __metadata("design:type", EmailConfig)
156
+ ], UserManagementConfig.prototype, "emails", void 0);
157
+ __decorate([
158
+ (0, decorators_1.Env)('N8N_USER_MANAGEMENT_JWT_SECRET'),
159
+ __metadata("design:type", String)
160
+ ], UserManagementConfig.prototype, "jwtSecret", void 0);
161
+ __decorate([
162
+ (0, decorators_1.Env)('N8N_USER_MANAGEMENT_JWT_DURATION_HOURS'),
163
+ __metadata("design:type", Number)
164
+ ], UserManagementConfig.prototype, "jwtSessionDurationHours", void 0);
165
+ __decorate([
166
+ (0, decorators_1.Env)('N8N_INVITE_LINKS_EMAIL_ONLY'),
167
+ __metadata("design:type", Boolean)
168
+ ], UserManagementConfig.prototype, "inviteLinksEmailOnly", void 0);
169
+ __decorate([
170
+ (0, decorators_1.Env)('N8N_USER_MANAGEMENT_JWT_REFRESH_TIMEOUT_HOURS'),
171
+ __metadata("design:type", Number)
172
+ ], UserManagementConfig.prototype, "jwtRefreshTimeoutHours", void 0);
173
+ exports.UserManagementConfig = UserManagementConfig = __decorate([
174
+ decorators_1.Config
175
+ ], UserManagementConfig);
176
+ //# sourceMappingURL=user-management.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-management.config.js","sourceRoot":"","sources":["../../src/configs/user-management.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AAExB,8CAAoD;AAGpD,IAAM,QAAQ,GAAd,MAAM,QAAQ;IAAd;QAGC,SAAI,GAAW,EAAE,CAAC;QAIlB,SAAI,GAAW,EAAE,CAAC;QAIlB,kBAAa,GAAW,EAAE,CAAC;QAI3B,eAAU,GAAW,EAAE,CAAC;IACzB,CAAC;CAAA,CAAA;AAbA;IADC,IAAA,gBAAG,EAAC,eAAe,CAAC;;sCACH;AAIlB;IADC,IAAA,gBAAG,EAAC,eAAe,CAAC;;sCACH;AAIlB;IADC,IAAA,gBAAG,EAAC,+BAA+B,CAAC;;+CACV;AAI3B;IADC,IAAA,gBAAG,EAAC,4BAA4B,CAAC;;4CACV;AAfnB,QAAQ;IADb,mBAAM;GACD,QAAQ,CAgBb;AAGD,IAAM,UAAU,GAAhB,MAAM,UAAU;IAAhB;QAGC,SAAI,GAAW,EAAE,CAAC;QAIlB,SAAI,GAAW,GAAG,CAAC;QAInB,WAAM,GAAY,IAAI,CAAC;QAIvB,aAAQ,GAAY,IAAI,CAAC;QAIzB,WAAM,GAAW,EAAE,CAAC;IAIrB,CAAC;CAAA,CAAA;AApBA;IADC,IAAA,gBAAG,EAAC,eAAe,CAAC;;wCACH;AAIlB;IADC,IAAA,gBAAG,EAAC,eAAe,CAAC;;wCACF;AAInB;IADC,IAAA,gBAAG,EAAC,cAAc,CAAC;;0CACG;AAIvB;IADC,IAAA,gBAAG,EAAC,mBAAmB,CAAC;;4CACA;AAIzB;IADC,IAAA,gBAAG,EAAC,iBAAiB,CAAC;;0CACH;AAGpB;IADC,mBAAM;8BACD,QAAQ;wCAAC;AAtBV,UAAU;IADf,mBAAM;GACD,UAAU,CAuBf;AAGM,IAAM,cAAc,GAApB,MAAM,cAAc;IAApB;QAGN,oBAAc,GAAW,EAAE,CAAC;QAI5B,gCAA0B,GAAW,EAAE,CAAC;QAIxC,uBAAiB,GAAW,EAAE,CAAC;QAI/B,4BAAsB,GAAW,EAAE,CAAC;QAIpC,0BAAoB,GAAW,EAAE,CAAC;QAIlC,sBAAgB,GAAW,EAAE,CAAC;IAC/B,CAAC;CAAA,CAAA;AAxBY,wCAAc;AAG1B;IADC,IAAA,gBAAG,EAAC,+BAA+B,CAAC;;oDACT;AAI5B;IADC,IAAA,gBAAG,EAAC,gCAAgC,CAAC;;gEACE;AAIxC;IADC,IAAA,gBAAG,EAAC,wCAAwC,CAAC;;uDACf;AAI/B;IADC,IAAA,gBAAG,EAAC,iDAAiD,CAAC;;4DACnB;AAIpC;IADC,IAAA,gBAAG,EAAC,2CAA2C,CAAC;;0DACf;AAIlC;IADC,IAAA,gBAAG,EAAC,uCAAuC,CAAC;;sDACf;yBAvBlB,cAAc;IAD1B,mBAAM;GACM,cAAc,CAwB1B;AAED,MAAM,eAAe,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAI7C,IAAM,WAAW,GAAjB,MAAM,WAAW;IAAjB;QAGC,SAAI,GAAc,MAAM,CAAC;IAO1B,CAAC;CAAA,CAAA;AAPA;IADC,IAAA,gBAAG,EAAC,gBAAgB,EAAE,eAAe,CAAC;;yCACd;AAGzB;IADC,mBAAM;8BACD,UAAU;yCAAC;AAGjB;IADC,mBAAM;8BACG,cAAc;6CAAC;AATpB,WAAW;IADhB,mBAAM;GACD,WAAW,CAUhB;AAED,MAAM,mCAAmC,GACxC,4KAA4K,CAAC;AAGvK,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QAMN,cAAS,GAAW,EAAE,CAAC;QAIvB,4BAAuB,GAAW,GAAG,CAAC;QAUtC,yBAAoB,GAAY,KAAK,CAAC;QAQtC,2BAAsB,GAAW,CAAC,CAAC;IAQpC,CAAC;IANA,QAAQ;QACP,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAClD,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;CACD,CAAA;AApCY,oDAAoB;AAEhC;IADC,mBAAM;8BACC,WAAW;oDAAC;AAIpB;IADC,IAAA,gBAAG,EAAC,gCAAgC,CAAC;;uDACf;AAIvB;IADC,IAAA,gBAAG,EAAC,wCAAwC,CAAC;;qEACR;AAUtC;IADC,IAAA,gBAAG,EAAC,6BAA6B,CAAC;;kEACG;AAQtC;IADC,IAAA,gBAAG,EAAC,+CAA+C,CAAC;;oEAClB;+BA5BvB,oBAAoB;IADhC,mBAAM;GACM,oBAAoB,CAoChC"}
@@ -0,0 +1,7 @@
1
+ export declare class VersionNotificationsConfig {
2
+ enabled: boolean;
3
+ endpoint: string;
4
+ whatsNewEnabled: boolean;
5
+ whatsNewEndpoint: string;
6
+ infoUrl: string;
7
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.VersionNotificationsConfig = void 0;
13
+ const decorators_1 = require("../decorators");
14
+ let VersionNotificationsConfig = class VersionNotificationsConfig {
15
+ constructor() {
16
+ this.enabled = true;
17
+ this.endpoint = 'https://api.n8n.io/api/versions/';
18
+ this.whatsNewEnabled = true;
19
+ this.whatsNewEndpoint = 'https://api.n8n.io/api/whats-new';
20
+ this.infoUrl = 'https://docs.n8n.io/hosting/installation/updating/';
21
+ }
22
+ };
23
+ exports.VersionNotificationsConfig = VersionNotificationsConfig;
24
+ __decorate([
25
+ (0, decorators_1.Env)('N8N_VERSION_NOTIFICATIONS_ENABLED'),
26
+ __metadata("design:type", Boolean)
27
+ ], VersionNotificationsConfig.prototype, "enabled", void 0);
28
+ __decorate([
29
+ (0, decorators_1.Env)('N8N_VERSION_NOTIFICATIONS_ENDPOINT'),
30
+ __metadata("design:type", String)
31
+ ], VersionNotificationsConfig.prototype, "endpoint", void 0);
32
+ __decorate([
33
+ (0, decorators_1.Env)('N8N_VERSION_NOTIFICATIONS_WHATS_NEW_ENABLED'),
34
+ __metadata("design:type", Boolean)
35
+ ], VersionNotificationsConfig.prototype, "whatsNewEnabled", void 0);
36
+ __decorate([
37
+ (0, decorators_1.Env)('N8N_VERSION_NOTIFICATIONS_WHATS_NEW_ENDPOINT'),
38
+ __metadata("design:type", String)
39
+ ], VersionNotificationsConfig.prototype, "whatsNewEndpoint", void 0);
40
+ __decorate([
41
+ (0, decorators_1.Env)('N8N_VERSION_NOTIFICATIONS_INFO_URL'),
42
+ __metadata("design:type", String)
43
+ ], VersionNotificationsConfig.prototype, "infoUrl", void 0);
44
+ exports.VersionNotificationsConfig = VersionNotificationsConfig = __decorate([
45
+ decorators_1.Config
46
+ ], VersionNotificationsConfig);
47
+ //# sourceMappingURL=version-notifications.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-notifications.config.js","sourceRoot":"","sources":["../../src/configs/version-notifications.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4C;AAGrC,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAAhC;QAGN,YAAO,GAAY,IAAI,CAAC;QAIxB,aAAQ,GAAW,kCAAkC,CAAC;QAItD,oBAAe,GAAY,IAAI,CAAC;QAIhC,qBAAgB,GAAW,kCAAkC,CAAC;QAI9D,YAAO,GAAW,oDAAoD,CAAC;IACxE,CAAC;CAAA,CAAA;AApBY,gEAA0B;AAGtC;IADC,IAAA,gBAAG,EAAC,mCAAmC,CAAC;;2DACjB;AAIxB;IADC,IAAA,gBAAG,EAAC,oCAAoC,CAAC;;4DACY;AAItD;IADC,IAAA,gBAAG,EAAC,6CAA6C,CAAC;;mEACnB;AAIhC;IADC,IAAA,gBAAG,EAAC,8CAA8C,CAAC;;oEACU;AAI9D;IADC,IAAA,gBAAG,EAAC,oCAAoC,CAAC;;2DAC6B;qCAnB3D,0BAA0B;IADtC,mBAAM;GACM,0BAA0B,CAoBtC"}
@@ -0,0 +1,7 @@
1
+ export declare class WorkflowHistoryCompactionConfig {
2
+ compactingMinimumAgeHours: number;
3
+ compactingTimeWindowHours: number;
4
+ batchSize: number;
5
+ batchDelayMs: number;
6
+ compactOnStartUp: boolean;
7
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WorkflowHistoryCompactionConfig = void 0;
13
+ const decorators_1 = require("../decorators");
14
+ let WorkflowHistoryCompactionConfig = class WorkflowHistoryCompactionConfig {
15
+ constructor() {
16
+ this.compactingMinimumAgeHours = 24;
17
+ this.compactingTimeWindowHours = 2;
18
+ this.batchSize = 1_000;
19
+ this.batchDelayMs = 1_000;
20
+ this.compactOnStartUp = false;
21
+ }
22
+ };
23
+ exports.WorkflowHistoryCompactionConfig = WorkflowHistoryCompactionConfig;
24
+ __decorate([
25
+ (0, decorators_1.Env)('N8N_WORKFLOW_HISTORY_COMPACTION_MINIMUM_AGE_HOURS'),
26
+ __metadata("design:type", Number)
27
+ ], WorkflowHistoryCompactionConfig.prototype, "compactingMinimumAgeHours", void 0);
28
+ __decorate([
29
+ (0, decorators_1.Env)('N8N_WORKFLOW_HISTORY_COMPACTION_TIME_WINDOW_HOURS'),
30
+ __metadata("design:type", Number)
31
+ ], WorkflowHistoryCompactionConfig.prototype, "compactingTimeWindowHours", void 0);
32
+ __decorate([
33
+ (0, decorators_1.Env)('N8N_WORKFLOW_HISTORY_COMPACTION_BATCH_SIZE'),
34
+ __metadata("design:type", Number)
35
+ ], WorkflowHistoryCompactionConfig.prototype, "batchSize", void 0);
36
+ __decorate([
37
+ (0, decorators_1.Env)('N8N_WORKFLOW_HISTORY_COMPACTION_BATCH_DELAY_MS'),
38
+ __metadata("design:type", Number)
39
+ ], WorkflowHistoryCompactionConfig.prototype, "batchDelayMs", void 0);
40
+ __decorate([
41
+ (0, decorators_1.Env)('N8N_WORKFLOW_HISTORY_COMPACTION_RUN_ON_START_UP'),
42
+ __metadata("design:type", Boolean)
43
+ ], WorkflowHistoryCompactionConfig.prototype, "compactOnStartUp", void 0);
44
+ exports.WorkflowHistoryCompactionConfig = WorkflowHistoryCompactionConfig = __decorate([
45
+ decorators_1.Config
46
+ ], WorkflowHistoryCompactionConfig);
47
+ //# sourceMappingURL=workflow-history-compaction.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-history-compaction.config.js","sourceRoot":"","sources":["../../src/configs/workflow-history-compaction.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4C;AAGrC,IAAM,+BAA+B,GAArC,MAAM,+BAA+B;IAArC;QAWN,8BAAyB,GAAW,EAAE,CAAC;QAavC,8BAAyB,GAAW,CAAC,CAAC;QAOtC,cAAS,GAAW,KAAK,CAAC;QAO1B,iBAAY,GAAW,KAAK,CAAC;QAW7B,qBAAgB,GAAY,KAAK,CAAC;IACnC,CAAC;CAAA,CAAA;AAlDY,0EAA+B;AAW3C;IAVC,IAAA,gBAAG,EAAC,mDAAmD,CAAC;;kFAUlB;AAavC;IADC,IAAA,gBAAG,EAAC,mDAAmD,CAAC;;kFACnB;AAOtC;IADC,IAAA,gBAAG,EAAC,4CAA4C,CAAC;;kEACxB;AAO1B;IADC,IAAA,gBAAG,EAAC,gDAAgD,CAAC;;qEACzB;AAW7B;IADC,IAAA,gBAAG,EAAC,iDAAiD,CAAC;;yEACrB;0CAjDtB,+BAA+B;IAD3C,mBAAM;GACM,+BAA+B,CAkD3C"}
@@ -0,0 +1,3 @@
1
+ export declare class WorkflowHistoryConfig {
2
+ pruneTime: number;
3
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WorkflowHistoryConfig = void 0;
13
+ const decorators_1 = require("../decorators");
14
+ let WorkflowHistoryConfig = class WorkflowHistoryConfig {
15
+ constructor() {
16
+ this.pruneTime = -1;
17
+ }
18
+ };
19
+ exports.WorkflowHistoryConfig = WorkflowHistoryConfig;
20
+ __decorate([
21
+ (0, decorators_1.Env)('N8N_WORKFLOW_HISTORY_PRUNE_TIME'),
22
+ __metadata("design:type", Number)
23
+ ], WorkflowHistoryConfig.prototype, "pruneTime", void 0);
24
+ exports.WorkflowHistoryConfig = WorkflowHistoryConfig = __decorate([
25
+ decorators_1.Config
26
+ ], WorkflowHistoryConfig);
27
+ //# sourceMappingURL=workflow-history.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-history.config.js","sourceRoot":"","sources":["../../src/configs/workflow-history.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4C;AAGrC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QAGN,cAAS,GAAW,CAAC,CAAC,CAAC;IACxB,CAAC;CAAA,CAAA;AAJY,sDAAqB;AAGjC;IADC,IAAA,gBAAG,EAAC,iCAAiC,CAAC;;wDAChB;gCAHX,qBAAqB;IADjC,mBAAM;GACM,qBAAqB,CAIjC"}
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ declare const callerPolicySchema: z.ZodEnum<["any", "none", "workflowsFromAList", "workflowsFromSameOwner"]>;
3
+ type CallerPolicy = z.infer<typeof callerPolicySchema>;
4
+ export declare class WorkflowsConfig {
5
+ defaultName: string;
6
+ callerPolicyDefaultOption: CallerPolicy;
7
+ activationBatchSize: number;
8
+ indexingEnabled: boolean;
9
+ }
10
+ export {};
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WorkflowsConfig = void 0;
13
+ const zod_1 = require("zod");
14
+ const decorators_1 = require("../decorators");
15
+ const callerPolicySchema = zod_1.z.enum(['any', 'none', 'workflowsFromAList', 'workflowsFromSameOwner']);
16
+ let WorkflowsConfig = class WorkflowsConfig {
17
+ constructor() {
18
+ this.defaultName = 'My workflow';
19
+ this.callerPolicyDefaultOption = 'workflowsFromSameOwner';
20
+ this.activationBatchSize = 1;
21
+ this.indexingEnabled = false;
22
+ }
23
+ };
24
+ exports.WorkflowsConfig = WorkflowsConfig;
25
+ __decorate([
26
+ (0, decorators_1.Env)('WORKFLOWS_DEFAULT_NAME'),
27
+ __metadata("design:type", String)
28
+ ], WorkflowsConfig.prototype, "defaultName", void 0);
29
+ __decorate([
30
+ (0, decorators_1.Env)('N8N_WORKFLOW_CALLER_POLICY_DEFAULT_OPTION', callerPolicySchema),
31
+ __metadata("design:type", String)
32
+ ], WorkflowsConfig.prototype, "callerPolicyDefaultOption", void 0);
33
+ __decorate([
34
+ (0, decorators_1.Env)('N8N_WORKFLOW_ACTIVATION_BATCH_SIZE'),
35
+ __metadata("design:type", Number)
36
+ ], WorkflowsConfig.prototype, "activationBatchSize", void 0);
37
+ __decorate([
38
+ (0, decorators_1.Env)('N8N_WORKFLOWS_INDEXING_ENABLED'),
39
+ __metadata("design:type", Boolean)
40
+ ], WorkflowsConfig.prototype, "indexingEnabled", void 0);
41
+ exports.WorkflowsConfig = WorkflowsConfig = __decorate([
42
+ decorators_1.Config
43
+ ], WorkflowsConfig);
44
+ //# sourceMappingURL=workflows.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.config.js","sourceRoot":"","sources":["../../src/configs/workflows.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AAExB,8CAA4C;AAE5C,MAAM,kBAAkB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,wBAAwB,CAAC,CAAC,CAAC;AAI5F,IAAM,eAAe,GAArB,MAAM,eAAe;IAArB;QAGN,gBAAW,GAAW,aAAa,CAAC;QAIpC,8BAAyB,GAAiB,wBAAwB,CAAC;QAInE,wBAAmB,GAAW,CAAC,CAAC;QAIhC,oBAAe,GAAY,KAAK,CAAC;IAClC,CAAC;CAAA,CAAA;AAhBY,0CAAe;AAG3B;IADC,IAAA,gBAAG,EAAC,wBAAwB,CAAC;;oDACM;AAIpC;IADC,IAAA,gBAAG,EAAC,2CAA2C,EAAE,kBAAkB,CAAC;;kEACF;AAInE;IADC,IAAA,gBAAG,EAAC,oCAAoC,CAAC;;4DACV;AAIhC;IADC,IAAA,gBAAG,EAAC,gCAAgC,CAAC;;wDACL;0BAfrB,eAAe;IAD3B,mBAAM;GACM,eAAe,CAgB3B"}
@@ -0,0 +1,10 @@
1
+ declare abstract class StringArray<T extends string> extends Array<T> {
2
+ constructor(str: string, delimiter: string);
3
+ }
4
+ export declare class CommaSeparatedStringArray<T extends string> extends StringArray<T> {
5
+ constructor(str: string);
6
+ }
7
+ export declare class ColonSeparatedStringArray<T extends string = string> extends StringArray<T> {
8
+ constructor(str: string);
9
+ }
10
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ColonSeparatedStringArray = exports.CommaSeparatedStringArray = void 0;
4
+ class StringArray extends Array {
5
+ constructor(str, delimiter) {
6
+ super();
7
+ const parsed = str.split(delimiter);
8
+ return parsed.filter((i) => typeof i === 'string' && i.length);
9
+ }
10
+ }
11
+ class CommaSeparatedStringArray extends StringArray {
12
+ constructor(str) {
13
+ super(str, ',');
14
+ }
15
+ }
16
+ exports.CommaSeparatedStringArray = CommaSeparatedStringArray;
17
+ class ColonSeparatedStringArray extends StringArray {
18
+ constructor(str) {
19
+ super(str, ':');
20
+ }
21
+ }
22
+ exports.ColonSeparatedStringArray = ColonSeparatedStringArray;
23
+ //# sourceMappingURL=custom-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-types.js","sourceRoot":"","sources":["../src/custom-types.ts"],"names":[],"mappings":";;;AAAA,MAAe,WAA8B,SAAQ,KAAQ;IAC5D,YAAY,GAAW,EAAE,SAAiB;QACzC,KAAK,EAAE,CAAC;QACR,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAS,CAAC;QAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;CACD;AAED,MAAa,yBAA4C,SAAQ,WAAc;IAC9E,YAAY,GAAW;QACtB,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjB,CAAC;CACD;AAJD,8DAIC;AAED,MAAa,yBAAqD,SAAQ,WAAc;IACvF,YAAY,GAAW;QACtB,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjB,CAAC;CACD;AAJD,8DAIC"}
@@ -0,0 +1,13 @@
1
+ import 'reflect-metadata';
2
+ import { z } from 'zod';
3
+ type Class = Function;
4
+ type PropertyType = number | boolean | string | Class;
5
+ interface PropertyMetadata {
6
+ type: PropertyType;
7
+ envName?: string;
8
+ schema?: z.ZodType<unknown>;
9
+ }
10
+ export declare const Config: ClassDecorator;
11
+ export declare const Nested: PropertyDecorator;
12
+ export declare const Env: (envName: string, schema?: PropertyMetadata["schema"]) => PropertyDecorator;
13
+ export {};
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Env = exports.Nested = exports.Config = void 0;
4
+ require("reflect-metadata");
5
+ const di_1 = require("@n8n/di");
6
+ const fs_1 = require("fs");
7
+ const zod_1 = require("zod");
8
+ const globalMetadata = new Map();
9
+ const readEnv = (envName) => {
10
+ if (envName in process.env)
11
+ return process.env[envName];
12
+ const filePath = process.env[`${envName}_FILE`];
13
+ if (filePath)
14
+ return (0, fs_1.readFileSync)(filePath, 'utf8');
15
+ return undefined;
16
+ };
17
+ const Config = (ConfigClass) => {
18
+ const factory = function (...args) {
19
+ const config = new ConfigClass(...args);
20
+ const classMetadata = globalMetadata.get(ConfigClass);
21
+ if (!classMetadata) {
22
+ throw new Error('Invalid config class: ' + ConfigClass.name);
23
+ }
24
+ for (const [key, { type, envName, schema }] of classMetadata) {
25
+ if (typeof type === 'function' && globalMetadata.has(type)) {
26
+ config[key] = di_1.Container.get(type);
27
+ }
28
+ else if (envName) {
29
+ const value = readEnv(envName);
30
+ if (value === undefined)
31
+ continue;
32
+ if (schema) {
33
+ const result = schema.safeParse(value);
34
+ if (result.error) {
35
+ console.warn(`Invalid value for ${envName} - ${result.error.issues[0].message}. Falling back to default value.`);
36
+ continue;
37
+ }
38
+ config[key] = result.data;
39
+ }
40
+ else if (type === Number) {
41
+ const parsed = Number(value);
42
+ if (isNaN(parsed)) {
43
+ console.warn(`Invalid number value for ${envName}: ${value}`);
44
+ }
45
+ else {
46
+ config[key] = parsed;
47
+ }
48
+ }
49
+ else if (type === Boolean) {
50
+ if (['true', '1'].includes(value.toLowerCase())) {
51
+ config[key] = true;
52
+ }
53
+ else if (['false', '0'].includes(value.toLowerCase())) {
54
+ config[key] = false;
55
+ }
56
+ else {
57
+ console.warn(`Invalid boolean value for ${envName}: ${value}`);
58
+ }
59
+ }
60
+ else if (type === Date) {
61
+ const timestamp = Date.parse(value);
62
+ if (isNaN(timestamp)) {
63
+ console.warn(`Invalid timestamp value for ${envName}: ${value}`);
64
+ }
65
+ else {
66
+ config[key] = new Date(timestamp);
67
+ }
68
+ }
69
+ else if (type === String) {
70
+ config[key] = value.trim().replace(/^(['"])(.*)\1$/, '$2');
71
+ }
72
+ else {
73
+ config[key] = new type(value);
74
+ }
75
+ }
76
+ }
77
+ if (typeof config.sanitize === 'function')
78
+ config.sanitize();
79
+ return config;
80
+ };
81
+ return (0, di_1.Service)({ factory })(ConfigClass);
82
+ };
83
+ exports.Config = Config;
84
+ const Nested = (target, key) => {
85
+ const ConfigClass = target.constructor;
86
+ const classMetadata = globalMetadata.get(ConfigClass) ?? new Map();
87
+ const type = Reflect.getMetadata('design:type', target, key);
88
+ classMetadata.set(key, { type });
89
+ globalMetadata.set(ConfigClass, classMetadata);
90
+ };
91
+ exports.Nested = Nested;
92
+ const Env = (envName, schema) => (target, key) => {
93
+ const ConfigClass = target.constructor;
94
+ const classMetadata = globalMetadata.get(ConfigClass) ?? new Map();
95
+ const type = Reflect.getMetadata('design:type', target, key);
96
+ const isZodSchema = schema instanceof zod_1.z.ZodType;
97
+ if (type === Object && !isZodSchema) {
98
+ throw new Error(`Invalid decorator metadata on key "${key}" on ${ConfigClass.name}\n Please use explicit typing on all config fields`);
99
+ }
100
+ classMetadata.set(key, { type, envName, schema });
101
+ globalMetadata.set(ConfigClass, classMetadata);
102
+ };
103
+ exports.Env = Env;
104
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}