n8n 1.101.1 → 1.102.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.
- package/bin/n8n +3 -11
- package/dist/auth/auth.service.d.ts +9 -5
- package/dist/auth/auth.service.js +46 -27
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/jwt.js +1 -1
- package/dist/auth/jwt.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/command-registry.d.ts +17 -0
- package/dist/command-registry.js +191 -0
- package/dist/command-registry.js.map +1 -0
- package/dist/commands/audit.d.ts +13 -8
- package/dist/commands/audit.js +33 -21
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/base-command.d.ts +4 -3
- package/dist/commands/base-command.js +15 -11
- package/dist/commands/base-command.js.map +1 -1
- package/dist/commands/community-node.d.ts +19 -22
- package/dist/commands/community-node.js +34 -30
- package/dist/commands/community-node.js.map +1 -1
- package/dist/commands/db/revert.d.ts +3 -9
- package/dist/commands/db/revert.js +22 -15
- package/dist/commands/db/revert.js.map +1 -1
- package/dist/commands/execute-batch.d.ts +40 -17
- package/dist/commands/execute-batch.js +120 -96
- package/dist/commands/execute-batch.js.map +1 -1
- package/dist/commands/execute.d.ts +16 -8
- package/dist/commands/execute.js +24 -15
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/export/credentials.d.ts +28 -13
- package/dist/commands/export/credentials.js +47 -37
- package/dist/commands/export/credentials.js.map +1 -1
- package/dist/commands/export/workflow.d.ts +25 -12
- package/dist/commands/export/workflow.js +43 -34
- package/dist/commands/export/workflow.js.map +1 -1
- package/dist/commands/import/credentials.d.ts +19 -10
- package/dist/commands/import/credentials.js +44 -28
- package/dist/commands/import/credentials.js.map +1 -1
- package/dist/commands/import/workflow.d.ts +19 -10
- package/dist/commands/import/workflow.js +41 -28
- package/dist/commands/import/workflow.js.map +1 -1
- package/dist/commands/ldap/reset.d.ts +16 -9
- package/dist/commands/ldap/reset.js +37 -22
- package/dist/commands/ldap/reset.js.map +1 -1
- package/dist/commands/license/clear.d.ts +0 -2
- package/dist/commands/license/clear.js +15 -4
- package/dist/commands/license/clear.js.map +1 -1
- package/dist/commands/license/info.d.ts +0 -2
- package/dist/commands/license/info.js +15 -4
- package/dist/commands/license/info.js.map +1 -1
- package/dist/commands/list/workflow.d.ts +13 -8
- package/dist/commands/list/workflow.js +26 -19
- package/dist/commands/list/workflow.js.map +1 -1
- package/dist/commands/mfa/disable.d.ts +10 -8
- package/dist/commands/mfa/disable.js +22 -15
- package/dist/commands/mfa/disable.js.map +1 -1
- package/dist/commands/start.d.ts +16 -9
- package/dist/commands/start.js +31 -25
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/update/workflow.d.ts +16 -9
- package/dist/commands/update/workflow.js +24 -21
- package/dist/commands/update/workflow.js.map +1 -1
- package/dist/commands/user-management/reset.d.ts +0 -2
- package/dist/commands/user-management/reset.js +16 -5
- package/dist/commands/user-management/reset.js.map +1 -1
- package/dist/commands/webhook.d.ts +0 -5
- package/dist/commands/webhook.js +15 -8
- package/dist/commands/webhook.js.map +1 -1
- package/dist/commands/worker.d.ts +12 -11
- package/dist/commands/worker.js +29 -14
- package/dist/commands/worker.js.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/controller.registry.js +1 -1
- package/dist/controller.registry.js.map +1 -1
- package/dist/controllers/ai.controller.d.ts +1 -1
- package/dist/controllers/ai.controller.js +16 -0
- package/dist/controllers/ai.controller.js.map +1 -1
- package/dist/controllers/auth.controller.js +10 -3
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/community-packages.controller.js +2 -2
- package/dist/controllers/community-packages.controller.js.map +1 -1
- package/dist/controllers/e2e.controller.js +13 -3
- package/dist/controllers/e2e.controller.js.map +1 -1
- package/dist/controllers/invitation.controller.js +1 -1
- package/dist/controllers/invitation.controller.js.map +1 -1
- package/dist/controllers/me.controller.js +2 -2
- package/dist/controllers/me.controller.js.map +1 -1
- package/dist/controllers/mfa.controller.d.ts +1 -0
- package/dist/controllers/mfa.controller.js +24 -6
- package/dist/controllers/mfa.controller.js.map +1 -1
- package/dist/controllers/oauth/abstract-oauth.controller.d.ts +1 -0
- package/dist/controllers/oauth/abstract-oauth.controller.js +6 -1
- package/dist/controllers/oauth/abstract-oauth.controller.js.map +1 -1
- package/dist/controllers/oauth/oauth2-credential.controller.js +2 -1
- package/dist/controllers/oauth/oauth2-credential.controller.js.map +1 -1
- package/dist/controllers/owner.controller.js +1 -1
- package/dist/controllers/owner.controller.js.map +1 -1
- package/dist/controllers/password-reset.controller.js +1 -1
- package/dist/controllers/password-reset.controller.js.map +1 -1
- package/dist/controllers/users.controller.d.ts +1 -0
- package/dist/credential-types.js +6 -5
- package/dist/credential-types.js.map +1 -1
- package/dist/credentials-helper.js +1 -1
- package/dist/credentials-helper.js.map +1 -1
- package/dist/environments.ee/source-control/source-control-export.service.ee.js +5 -1
- package/dist/environments.ee/source-control/source-control-export.service.ee.js.map +1 -1
- package/dist/environments.ee/source-control/source-control-git.service.ee.js +4 -0
- package/dist/environments.ee/source-control/source-control-git.service.ee.js.map +1 -1
- package/dist/environments.ee/source-control/source-control.service.ee.js +5 -4
- package/dist/environments.ee/source-control/source-control.service.ee.js.map +1 -1
- package/dist/errors/response-errors/content-too-large.error.d.ts +4 -0
- package/dist/errors/response-errors/content-too-large.error.js +11 -0
- package/dist/errors/response-errors/content-too-large.error.js.map +1 -0
- package/dist/errors/response-errors/too-many-requests.error.d.ts +4 -0
- package/dist/errors/response-errors/too-many-requests.error.js +11 -0
- package/dist/errors/response-errors/too-many-requests.error.js.map +1 -0
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js +1 -1
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js.map +1 -1
- package/dist/events/relays/telemetry.event-relay.js +7 -2
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/license/license.service.js +2 -0
- package/dist/license/license.service.js.map +1 -1
- package/dist/mfa/constants.d.ts +2 -0
- package/dist/mfa/constants.js +6 -0
- package/dist/mfa/constants.js.map +1 -0
- package/dist/mfa/mfa.service.d.ts +11 -2
- package/dist/mfa/mfa.service.js +39 -2
- package/dist/mfa/mfa.service.js.map +1 -1
- package/dist/modules/insights/insights.module.d.ts +1 -5
- package/dist/modules/insights/insights.module.js +6 -8
- package/dist/modules/insights/insights.module.js.map +1 -1
- package/dist/public-api/v1/openapi.yml +2 -2
- package/dist/push/index.js +1 -1
- package/dist/push/index.js.map +1 -1
- package/dist/requests.d.ts +4 -0
- package/dist/scaling/job-processor.js +1 -0
- package/dist/scaling/job-processor.js.map +1 -1
- package/dist/scaling/scaling.types.d.ts +1 -0
- package/dist/server.d.ts +1 -3
- package/dist/server.js +14 -18
- package/dist/server.js.map +1 -1
- package/dist/services/community-packages.service.d.ts +1 -1
- package/dist/services/community-packages.service.js +7 -9
- package/dist/services/community-packages.service.js.map +1 -1
- package/dist/services/frontend.service.d.ts +3 -1
- package/dist/services/frontend.service.js +9 -2
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/hooks.service.d.ts +1 -0
- package/dist/services/hooks.service.js +3 -2
- package/dist/services/hooks.service.js.map +1 -1
- package/dist/services/user.service.d.ts +1 -0
- package/dist/services/user.service.js +1 -0
- package/dist/services/user.service.js.map +1 -1
- package/dist/sso.ee/oidc/routes/oidc.controller.ee.js +3 -1
- package/dist/sso.ee/oidc/routes/oidc.controller.ee.js.map +1 -1
- package/dist/sso.ee/saml/routes/saml.controller.ee.js +1 -1
- package/dist/sso.ee/saml/routes/saml.controller.ee.js.map +1 -1
- package/dist/task-runners/task-runner-process.d.ts +1 -0
- package/dist/task-runners/task-runner-process.js +7 -2
- package/dist/task-runners/task-runner-process.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -3
- package/dist/telemetry/index.js +1 -4
- package/dist/telemetry/index.js.map +1 -1
- package/dist/webhooks/webhook-helpers.js +1 -1
- package/dist/webhooks/webhook-helpers.js.map +1 -1
- package/dist/workflow-execute-additional-data.js +1 -0
- package/dist/workflow-execute-additional-data.js.map +1 -1
- package/dist/workflow-runner.js +2 -0
- package/dist/workflow-runner.js.map +1 -1
- package/dist/zod-alias-support.d.ts +9 -0
- package/dist/zod-alias-support.js +8 -0
- package/dist/zod-alias-support.js.map +1 -0
- package/package.json +24 -26
- package/dist/help.d.ts +0 -4
- package/dist/help.js +0 -12
- package/dist/help.js.map +0 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Logger, ModuleRegistry } from '@n8n/backend-common';
|
|
2
|
+
import { CommandMetadata, type CommandEntry } from '@n8n/decorators';
|
|
3
|
+
import './zod-alias-support';
|
|
4
|
+
export declare class CommandRegistry {
|
|
5
|
+
private readonly commandMetadata;
|
|
6
|
+
private readonly moduleRegistry;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
private commandName;
|
|
9
|
+
private readonly argv;
|
|
10
|
+
constructor(commandMetadata: CommandMetadata, moduleRegistry: ModuleRegistry, logger: Logger);
|
|
11
|
+
execute(): Promise<undefined>;
|
|
12
|
+
parseFlags(commandEntry: CommandEntry): {
|
|
13
|
+
[x: string]: any;
|
|
14
|
+
};
|
|
15
|
+
listAllCommands(): Promise<void>;
|
|
16
|
+
printCommandUsage(commandEntry: CommandEntry): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.CommandRegistry = void 0;
|
|
49
|
+
const backend_common_1 = require("@n8n/backend-common");
|
|
50
|
+
const decorators_1 = require("@n8n/decorators");
|
|
51
|
+
const di_1 = require("@n8n/di");
|
|
52
|
+
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
53
|
+
const picocolors_1 = __importDefault(require("picocolors"));
|
|
54
|
+
const yargs_parser_1 = __importDefault(require("yargs-parser"));
|
|
55
|
+
const zod_1 = require("zod");
|
|
56
|
+
require("./zod-alias-support");
|
|
57
|
+
let CommandRegistry = class CommandRegistry {
|
|
58
|
+
constructor(commandMetadata, moduleRegistry, logger) {
|
|
59
|
+
this.commandMetadata = commandMetadata;
|
|
60
|
+
this.moduleRegistry = moduleRegistry;
|
|
61
|
+
this.logger = logger;
|
|
62
|
+
this.argv = (0, yargs_parser_1.default)(process.argv.slice(2));
|
|
63
|
+
this.commandName = process.argv[2] ?? 'start';
|
|
64
|
+
}
|
|
65
|
+
async execute() {
|
|
66
|
+
if (this.commandName === '--help' || this.commandName === '-h') {
|
|
67
|
+
await this.listAllCommands();
|
|
68
|
+
return process.exit(0);
|
|
69
|
+
}
|
|
70
|
+
if (this.commandName === 'executeBatch') {
|
|
71
|
+
this.logger.warn('WARNING: "executeBatch" has been renamed to "execute-batch".');
|
|
72
|
+
this.commandName = 'execute-batch';
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
await Promise.resolve(`${`./commands/${this.commandName.replaceAll(':', '/')}.js`}`).then(s => __importStar(require(s)));
|
|
76
|
+
}
|
|
77
|
+
catch { }
|
|
78
|
+
await this.moduleRegistry.loadModules();
|
|
79
|
+
const commandEntry = this.commandMetadata.get(this.commandName);
|
|
80
|
+
if (!commandEntry) {
|
|
81
|
+
this.logger.error(picocolors_1.default.red(`Error: Command "${this.commandName}" not found`));
|
|
82
|
+
return process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
if (this.argv.help || this.argv.h) {
|
|
85
|
+
this.printCommandUsage(commandEntry);
|
|
86
|
+
return process.exit(0);
|
|
87
|
+
}
|
|
88
|
+
const command = di_1.Container.get(commandEntry.class);
|
|
89
|
+
command.flags = this.parseFlags(commandEntry);
|
|
90
|
+
let error = undefined;
|
|
91
|
+
try {
|
|
92
|
+
await command.init?.();
|
|
93
|
+
await command.run();
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
error = e;
|
|
97
|
+
await command.catch?.(error);
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
await command.finally?.(error);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
parseFlags(commandEntry) {
|
|
104
|
+
if (!commandEntry.flagsSchema)
|
|
105
|
+
return {};
|
|
106
|
+
const { _, ...argv } = this.argv;
|
|
107
|
+
Object.entries(commandEntry.flagsSchema.shape).forEach(([key, flagSchema]) => {
|
|
108
|
+
let schemaDef = flagSchema._def;
|
|
109
|
+
if (schemaDef.typeName === 'ZodOptional' && schemaDef.innerType) {
|
|
110
|
+
schemaDef = schemaDef.innerType._def;
|
|
111
|
+
}
|
|
112
|
+
const alias = schemaDef._alias;
|
|
113
|
+
if (alias?.length && !(key in argv) && argv[alias]) {
|
|
114
|
+
argv[key] = argv[alias];
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
return commandEntry.flagsSchema.parse(argv);
|
|
118
|
+
}
|
|
119
|
+
async listAllCommands() {
|
|
120
|
+
const commandFiles = await (0, fast_glob_1.default)('./commands/**/*.js', {
|
|
121
|
+
ignore: ['**/__tests__/**'],
|
|
122
|
+
cwd: __dirname,
|
|
123
|
+
});
|
|
124
|
+
await Promise.all(commandFiles.map(async (filePath) => await Promise.resolve(`${filePath}`).then(s => __importStar(require(s)))));
|
|
125
|
+
await this.moduleRegistry.loadModules();
|
|
126
|
+
this.logger.info('Available commands:');
|
|
127
|
+
for (const [name, { description }] of this.commandMetadata.getEntries()) {
|
|
128
|
+
this.logger.info(` ${picocolors_1.default.bold(picocolors_1.default.green(name))}: \n ${description.split('\n')[0]}`);
|
|
129
|
+
}
|
|
130
|
+
this.logger.info('\nFor more detailed information, visit:\nhttps://docs.n8n.io/hosting/cli-commands/');
|
|
131
|
+
}
|
|
132
|
+
printCommandUsage(commandEntry) {
|
|
133
|
+
const { commandName } = this;
|
|
134
|
+
let output = '';
|
|
135
|
+
output += `${picocolors_1.default.bold('USAGE')}\n`;
|
|
136
|
+
output += ` $ n8n ${commandName}\n\n`;
|
|
137
|
+
const { flagsSchema } = commandEntry;
|
|
138
|
+
if (flagsSchema && Object.keys(flagsSchema.shape).length > 0) {
|
|
139
|
+
const flagLines = [];
|
|
140
|
+
const flagEntries = Object.entries(zod_1.z
|
|
141
|
+
.object({
|
|
142
|
+
help: zod_1.z.boolean().alias('h').describe('Show CLI help'),
|
|
143
|
+
})
|
|
144
|
+
.merge(flagsSchema).shape);
|
|
145
|
+
for (const [flagName, flagSchema] of flagEntries) {
|
|
146
|
+
let schemaDef = flagSchema._def;
|
|
147
|
+
if (schemaDef.typeName === 'ZodOptional' && schemaDef.innerType) {
|
|
148
|
+
schemaDef = schemaDef.innerType._def;
|
|
149
|
+
}
|
|
150
|
+
const typeName = schemaDef.typeName;
|
|
151
|
+
let flagString = `--${flagName}`;
|
|
152
|
+
if (schemaDef._alias) {
|
|
153
|
+
flagString = `-${schemaDef._alias}, ${flagString}`;
|
|
154
|
+
}
|
|
155
|
+
if (['ZodString', 'ZodNumber', 'ZodArray'].includes(typeName)) {
|
|
156
|
+
flagString += ' <value>';
|
|
157
|
+
}
|
|
158
|
+
let flagLine = flagSchema.description ?? '';
|
|
159
|
+
if ('defaultValue' in schemaDef) {
|
|
160
|
+
const defaultValue = schemaDef.defaultValue();
|
|
161
|
+
flagLine += ` [default: ${String(defaultValue)}]`;
|
|
162
|
+
}
|
|
163
|
+
flagLines.push([flagString, flagLine]);
|
|
164
|
+
}
|
|
165
|
+
const flagColumnWidth = Math.max(...flagLines.map(([flagString]) => flagString.length));
|
|
166
|
+
output += `${picocolors_1.default.bold('FLAGS')}\n`;
|
|
167
|
+
output += flagLines
|
|
168
|
+
.map(([flagString, flagLine]) => ` ${flagString.padEnd(flagColumnWidth)} ${flagLine}`)
|
|
169
|
+
.join('\n');
|
|
170
|
+
output += '\n\n';
|
|
171
|
+
}
|
|
172
|
+
output += `${picocolors_1.default.bold('DESCRIPTION')}\n`;
|
|
173
|
+
output += ` ${commandEntry.description}\n`;
|
|
174
|
+
if (commandEntry.examples?.length) {
|
|
175
|
+
output += `\n${picocolors_1.default.bold('EXAMPLES')}\n`;
|
|
176
|
+
output += commandEntry.examples
|
|
177
|
+
.map((example) => ` $ n8n ${commandName}${example ? ` ${example}` : ''}`)
|
|
178
|
+
.join('\n');
|
|
179
|
+
output += '\n';
|
|
180
|
+
}
|
|
181
|
+
this.logger.info(output);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
exports.CommandRegistry = CommandRegistry;
|
|
185
|
+
exports.CommandRegistry = CommandRegistry = __decorate([
|
|
186
|
+
(0, di_1.Service)(),
|
|
187
|
+
__metadata("design:paramtypes", [decorators_1.CommandMetadata,
|
|
188
|
+
backend_common_1.ModuleRegistry,
|
|
189
|
+
backend_common_1.Logger])
|
|
190
|
+
], CommandRegistry);
|
|
191
|
+
//# sourceMappingURL=command-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/audit.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
import z from 'zod';
|
|
1
2
|
import { BaseCommand } from './base-command';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
declare const flagsSchema: z.ZodObject<{
|
|
4
|
+
categories: z.ZodDefault<z.ZodString>;
|
|
5
|
+
'days-abandoned-workflow': z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
categories: string;
|
|
8
|
+
'days-abandoned-workflow': number;
|
|
9
|
+
}, {
|
|
10
|
+
categories?: string | undefined;
|
|
11
|
+
'days-abandoned-workflow'?: number | undefined;
|
|
12
|
+
}>;
|
|
13
|
+
export declare class SecurityAudit extends BaseCommand<z.infer<typeof flagsSchema>> {
|
|
10
14
|
run(): Promise<void>;
|
|
11
15
|
catch(error: Error): Promise<void>;
|
|
12
16
|
}
|
|
17
|
+
export {};
|
package/dist/commands/audit.js
CHANGED
|
@@ -15,6 +15,12 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
18
24
|
var __importStar = (this && this.__importStar) || (function () {
|
|
19
25
|
var ownKeys = function(o) {
|
|
20
26
|
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
@@ -32,17 +38,32 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
38
|
return result;
|
|
33
39
|
};
|
|
34
40
|
})();
|
|
41
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
+
};
|
|
35
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
45
|
exports.SecurityAudit = void 0;
|
|
37
46
|
const config_1 = require("@n8n/config");
|
|
47
|
+
const decorators_1 = require("@n8n/decorators");
|
|
38
48
|
const di_1 = require("@n8n/di");
|
|
39
|
-
const core_1 = require("@oclif/core");
|
|
40
49
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
50
|
+
const zod_1 = __importDefault(require("zod"));
|
|
41
51
|
const constants_1 = require("../security-audit/constants");
|
|
42
52
|
const base_command_1 = require("./base-command");
|
|
43
|
-
|
|
53
|
+
const flagsSchema = zod_1.default.object({
|
|
54
|
+
categories: zod_1.default
|
|
55
|
+
.string()
|
|
56
|
+
.default(constants_1.RISK_CATEGORIES.join(','))
|
|
57
|
+
.describe('Comma-separated list of categories to include in the audit'),
|
|
58
|
+
'days-abandoned-workflow': zod_1.default
|
|
59
|
+
.number()
|
|
60
|
+
.int()
|
|
61
|
+
.default(di_1.Container.get(config_1.SecurityConfig).daysAbandonedWorkflow)
|
|
62
|
+
.describe('Days for a workflow to be considered abandoned if not executed'),
|
|
63
|
+
});
|
|
64
|
+
let SecurityAudit = class SecurityAudit extends base_command_1.BaseCommand {
|
|
44
65
|
async run() {
|
|
45
|
-
const { flags: auditFlags } =
|
|
66
|
+
const { flags: auditFlags } = this;
|
|
46
67
|
const categories = auditFlags.categories?.split(',').filter((c) => c !== '') ??
|
|
47
68
|
constants_1.RISK_CATEGORIES;
|
|
48
69
|
const invalidCategories = categories.filter((c) => !constants_1.RISK_CATEGORIES.includes(c));
|
|
@@ -66,23 +87,14 @@ class SecurityAudit extends base_command_1.BaseCommand {
|
|
|
66
87
|
this.logger.error('Failed to generate security audit');
|
|
67
88
|
this.logger.error(error.message);
|
|
68
89
|
}
|
|
69
|
-
}
|
|
70
|
-
exports.SecurityAudit = SecurityAudit;
|
|
71
|
-
SecurityAudit.description = 'Generate a security audit report for this n8n instance';
|
|
72
|
-
SecurityAudit.examples = [
|
|
73
|
-
'$ n8n audit',
|
|
74
|
-
'$ n8n audit --categories=database,credentials',
|
|
75
|
-
'$ n8n audit --days-abandoned-workflow=10',
|
|
76
|
-
];
|
|
77
|
-
SecurityAudit.flags = {
|
|
78
|
-
help: core_1.Flags.help({ char: 'h' }),
|
|
79
|
-
categories: core_1.Flags.string({
|
|
80
|
-
default: constants_1.RISK_CATEGORIES.join(','),
|
|
81
|
-
description: 'Comma-separated list of categories to include in the audit',
|
|
82
|
-
}),
|
|
83
|
-
'days-abandoned-workflow': core_1.Flags.integer({
|
|
84
|
-
default: di_1.Container.get(config_1.SecurityConfig).daysAbandonedWorkflow,
|
|
85
|
-
description: 'Days for a workflow to be considered abandoned if not executed',
|
|
86
|
-
}),
|
|
87
90
|
};
|
|
91
|
+
exports.SecurityAudit = SecurityAudit;
|
|
92
|
+
exports.SecurityAudit = SecurityAudit = __decorate([
|
|
93
|
+
(0, decorators_1.Command)({
|
|
94
|
+
name: 'audit',
|
|
95
|
+
description: 'Generate a security audit report for this n8n instance',
|
|
96
|
+
examples: ['', '--categories=database,credentials', '--days-abandoned-workflow=10'],
|
|
97
|
+
flagsSchema,
|
|
98
|
+
})
|
|
99
|
+
], SecurityAudit);
|
|
88
100
|
//# sourceMappingURL=audit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wCAA6C;AAC7C,gDAA0C;AAC1C,gCAAoC;AACpC,+CAAyC;AACzC,8CAAoB;AAEpB,0DAA6D;AAG7D,iDAA6C;AAE7C,MAAM,WAAW,GAAG,aAAC,CAAC,MAAM,CAAC;IAC5B,UAAU,EAAE,aAAC;SACX,MAAM,EAAE;SACR,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClC,QAAQ,CAAC,4DAA4D,CAAC;IACxE,yBAAyB,EAAE,aAAC;SAC1B,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,cAAS,CAAC,GAAG,CAAC,uBAAc,CAAC,CAAC,qBAAqB,CAAC;SAC5D,QAAQ,CAAC,gEAAgE,CAAC;CAC5E,CAAC,CAAC;AAQI,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,0BAAwC;IAC1E,KAAK,CAAC,GAAG;QACR,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,UAAU,GACf,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YAC7E,2BAAe,CAAC;QAEjB,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,2BAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GACZ,iBAAiB,CAAC,MAAM,GAAG,CAAC;gBAC3B,CAAC,CAAC,gCAAgC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAChE,CAAC,CAAC,8BAA8B,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAEzD,MAAM,IAAI,GAAG,yBAAyB,2BAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAEnE,MAAM,IAAI,wBAAS,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,EAAE,oBAAoB,EAAE,GAAG,wDAAa,yCAAyC,GAAC,CAAC;QAEzF,MAAM,MAAM,GAAG,MAAM,cAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAC3D,UAAU,EACV,UAAU,CAAC,yBAAyB,CAAC,CACrC,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAY;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;CACD,CAAA;AAtCY,sCAAa;wBAAb,aAAa;IANzB,IAAA,oBAAO,EAAC;QACR,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,CAAC,EAAE,EAAE,mCAAmC,EAAE,8BAA8B,CAAC;QACnF,WAAW;KACX,CAAC;GACW,aAAa,CAsCzB"}
|
|
@@ -2,14 +2,14 @@ import 'reflect-metadata';
|
|
|
2
2
|
import { Logger, ModuleRegistry, ModulesConfig } from '@n8n/backend-common';
|
|
3
3
|
import { GlobalConfig } from '@n8n/config';
|
|
4
4
|
import { DbConnection } from '@n8n/db';
|
|
5
|
-
import { Command } from '@oclif/core';
|
|
6
5
|
import { InstanceSettings, ErrorReporter } from 'n8n-core';
|
|
7
6
|
import type { AbstractServer } from '../abstract-server';
|
|
8
7
|
import { ExternalHooks } from '../external-hooks';
|
|
9
8
|
import { License } from '../license';
|
|
10
9
|
import { NodeTypes } from '../node-types';
|
|
11
10
|
import { ShutdownService } from '../shutdown/shutdown.service';
|
|
12
|
-
export declare abstract class BaseCommand
|
|
11
|
+
export declare abstract class BaseCommand<F = never> {
|
|
12
|
+
readonly flags: F;
|
|
13
13
|
protected logger: Logger;
|
|
14
14
|
protected dbConnection: DbConnection;
|
|
15
15
|
protected errorReporter: ErrorReporter;
|
|
@@ -25,12 +25,13 @@ export declare abstract class BaseCommand extends Command {
|
|
|
25
25
|
protected gracefulShutdownTimeoutInS: number;
|
|
26
26
|
protected needsCommunityPackages: boolean;
|
|
27
27
|
protected needsTaskRunner: boolean;
|
|
28
|
-
protected loadModules(): Promise<void>;
|
|
29
28
|
init(): Promise<void>;
|
|
30
29
|
protected stopProcess(): Promise<void>;
|
|
31
30
|
protected initCrashJournal(): Promise<void>;
|
|
32
31
|
protected exitSuccessFully(): Promise<void>;
|
|
33
32
|
protected exitWithCrash(message: string, error: unknown): Promise<void>;
|
|
33
|
+
protected log(message: string): void;
|
|
34
|
+
protected error(message: string): void;
|
|
34
35
|
initObjectStoreService(): Promise<undefined>;
|
|
35
36
|
initBinaryDataService(): Promise<void>;
|
|
36
37
|
protected initDataDeduplicationService(): Promise<void>;
|
|
@@ -43,7 +43,6 @@ const config_1 = require("@n8n/config");
|
|
|
43
43
|
const constants_1 = require("@n8n/constants");
|
|
44
44
|
const db_1 = require("@n8n/db");
|
|
45
45
|
const di_1 = require("@n8n/di");
|
|
46
|
-
const core_1 = require("@oclif/core");
|
|
47
46
|
const n8n_core_1 = require("n8n-core");
|
|
48
47
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
49
48
|
const config_2 = __importDefault(require("../config"));
|
|
@@ -61,9 +60,8 @@ const node_types_1 = require("../node-types");
|
|
|
61
60
|
const posthog_1 = require("../posthog");
|
|
62
61
|
const shutdown_service_1 = require("../shutdown/shutdown.service");
|
|
63
62
|
const workflow_history_manager_ee_1 = require("../workflows/workflow-history.ee/workflow-history-manager.ee");
|
|
64
|
-
class BaseCommand
|
|
63
|
+
class BaseCommand {
|
|
65
64
|
constructor() {
|
|
66
|
-
super(...arguments);
|
|
67
65
|
this.logger = di_1.Container.get(backend_common_1.Logger);
|
|
68
66
|
this.instanceSettings = di_1.Container.get(n8n_core_1.InstanceSettings);
|
|
69
67
|
this.shutdownService = di_1.Container.get(shutdown_service_1.ShutdownService);
|
|
@@ -74,9 +72,6 @@ class BaseCommand extends core_1.Command {
|
|
|
74
72
|
this.needsCommunityPackages = false;
|
|
75
73
|
this.needsTaskRunner = false;
|
|
76
74
|
}
|
|
77
|
-
async loadModules() {
|
|
78
|
-
await this.moduleRegistry.loadModules();
|
|
79
|
-
}
|
|
80
75
|
async init() {
|
|
81
76
|
this.dbConnection = di_1.Container.get(db_1.DbConnection);
|
|
82
77
|
this.errorReporter = di_1.Container.get(n8n_core_1.ErrorReporter);
|
|
@@ -115,7 +110,11 @@ class BaseCommand extends core_1.Command {
|
|
|
115
110
|
const { CommunityPackagesService } = await Promise.resolve().then(() => __importStar(require('../services/community-packages.service')));
|
|
116
111
|
await di_1.Container.get(CommunityPackagesService).init();
|
|
117
112
|
}
|
|
118
|
-
|
|
113
|
+
const taskRunnersConfig = this.globalConfig.taskRunners;
|
|
114
|
+
if (this.needsTaskRunner && taskRunnersConfig.enabled) {
|
|
115
|
+
if (taskRunnersConfig.insecureMode) {
|
|
116
|
+
this.logger.warn('TASK RUNNER CONFIGURED TO START IN INSECURE MODE. This is discouraged for production use. Please consider using secure mode instead.');
|
|
117
|
+
}
|
|
119
118
|
const { TaskRunnerModule } = await Promise.resolve().then(() => __importStar(require('../task-runners/task-runner-module')));
|
|
120
119
|
await di_1.Container.get(TaskRunnerModule).start();
|
|
121
120
|
}
|
|
@@ -141,6 +140,12 @@ class BaseCommand extends core_1.Command {
|
|
|
141
140
|
await (0, n8n_workflow_1.sleep)(2000);
|
|
142
141
|
process.exit(1);
|
|
143
142
|
}
|
|
143
|
+
log(message) {
|
|
144
|
+
this.logger.info(message);
|
|
145
|
+
}
|
|
146
|
+
error(message) {
|
|
147
|
+
throw new n8n_workflow_1.UnexpectedError(message);
|
|
148
|
+
}
|
|
144
149
|
async initObjectStoreService() {
|
|
145
150
|
const binaryDataConfig = di_1.Container.get(n8n_core_1.BinaryDataConfig);
|
|
146
151
|
const isSelected = binaryDataConfig.mode === 's3';
|
|
@@ -153,7 +158,7 @@ class BaseCommand extends core_1.Command {
|
|
|
153
158
|
const isLicensed = di_1.Container.get(license_1.License).isLicensed(constants_1.LICENSE_FEATURES.BINARY_DATA_S3);
|
|
154
159
|
if (!isLicensed) {
|
|
155
160
|
this.logger.error('No license found for S3 storage. \n Either set `N8N_DEFAULT_BINARY_DATA_MODE` to something else, or upgrade to a license that supports this feature.');
|
|
156
|
-
return
|
|
161
|
+
return process.exit(1);
|
|
157
162
|
}
|
|
158
163
|
this.logger.debug('License found for external storage - Initializing object store service');
|
|
159
164
|
try {
|
|
@@ -214,14 +219,13 @@ class BaseCommand extends core_1.Command {
|
|
|
214
219
|
async finally(error) {
|
|
215
220
|
if (error?.message)
|
|
216
221
|
this.logger.error(error.message);
|
|
217
|
-
if (backend_common_1.inTest || this.
|
|
222
|
+
if (backend_common_1.inTest || this.constructor.name === 'Start')
|
|
218
223
|
return;
|
|
219
224
|
if (this.dbConnection.connectionState.connected) {
|
|
220
225
|
await (0, n8n_workflow_1.sleep)(100);
|
|
221
226
|
await this.dbConnection.close();
|
|
222
227
|
}
|
|
223
|
-
|
|
224
|
-
this.exit(exitCode);
|
|
228
|
+
process.exit();
|
|
225
229
|
}
|
|
226
230
|
onTerminationSignal(signal) {
|
|
227
231
|
return async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-command.js","sourceRoot":"","sources":["../../src/commands/base-command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,wDAO6B;AAC7B,wCAA2C;AAC3C,8CAAkD;AAClD,gCAAuC;AACvC,gCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"base-command.js","sourceRoot":"","sources":["../../src/commands/base-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import { type InstalledNodes, type InstalledPackages, type User } from '@n8n/db';
|
|
2
|
+
import { z } from 'zod';
|
|
2
3
|
import { BaseCommand } from './base-command';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
declare const flagsSchema: z.ZodObject<{
|
|
5
|
+
uninstall: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
package: z.ZodOptional<z.ZodString>;
|
|
7
|
+
credential: z.ZodOptional<z.ZodString>;
|
|
8
|
+
userId: z.ZodOptional<z.ZodString>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
credential?: string | undefined;
|
|
11
|
+
uninstall?: boolean | undefined;
|
|
12
|
+
userId?: string | undefined;
|
|
13
|
+
package?: string | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
credential?: string | undefined;
|
|
16
|
+
uninstall?: boolean | undefined;
|
|
17
|
+
userId?: string | undefined;
|
|
18
|
+
package?: string | undefined;
|
|
19
|
+
}>;
|
|
20
|
+
export declare class CommunityNode extends BaseCommand<z.infer<typeof flagsSchema>> {
|
|
14
21
|
run(): Promise<void>;
|
|
15
22
|
catch(error: Error): Promise<void>;
|
|
16
23
|
uninstallCredential(credentialType: string, userId: string): Promise<void>;
|
|
@@ -19,18 +26,8 @@ export declare class CommunityNode extends BaseCommand {
|
|
|
19
26
|
deleteCredential(user: User, credentialId: string): Promise<void>;
|
|
20
27
|
uninstallPackage(packageName: string): Promise<void>;
|
|
21
28
|
pruneDependencies(): Promise<void>;
|
|
22
|
-
parseFlags(): Promise<import("@oclif/core/lib/interfaces").ParserOutput<{
|
|
23
|
-
help: void;
|
|
24
|
-
uninstall: boolean;
|
|
25
|
-
package: string | undefined;
|
|
26
|
-
credential: string | undefined;
|
|
27
|
-
userId: string | undefined;
|
|
28
|
-
}, {
|
|
29
|
-
[flag: string]: any;
|
|
30
|
-
}, {
|
|
31
|
-
[arg: string]: any;
|
|
32
|
-
}>>;
|
|
33
29
|
deleteCommunityNode(node: InstalledNodes): Promise<import("@n8n/typeorm").DeleteResult>;
|
|
34
30
|
removeCommunityPackage(packageName: string, communityPackage: InstalledPackages): Promise<void>;
|
|
35
31
|
findCommunityPackage(packageName: string): Promise<InstalledPackages | null>;
|
|
36
32
|
}
|
|
33
|
+
export {};
|
|
@@ -1,18 +1,34 @@
|
|
|
1
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
|
+
};
|
|
2
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
9
|
exports.CommunityNode = void 0;
|
|
4
10
|
const db_1 = require("@n8n/db");
|
|
11
|
+
const decorators_1 = require("@n8n/decorators");
|
|
5
12
|
const di_1 = require("@n8n/di");
|
|
6
|
-
const
|
|
13
|
+
const zod_1 = require("zod");
|
|
7
14
|
const credentials_service_1 = require("../credentials/credentials.service");
|
|
8
15
|
const community_packages_service_1 = require("../services/community-packages.service");
|
|
9
16
|
const base_command_1 = require("./base-command");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
const flagsSchema = zod_1.z.object({
|
|
18
|
+
uninstall: zod_1.z.boolean().describe('Uninstalls the node').optional(),
|
|
19
|
+
package: zod_1.z.string().describe('Package name of the community node.').optional(),
|
|
20
|
+
credential: zod_1.z
|
|
21
|
+
.string()
|
|
22
|
+
.describe("Type of the credential.\nGet this value by visiting the node's .credential.ts file and getting the value of `name`")
|
|
23
|
+
.optional(),
|
|
24
|
+
userId: zod_1.z
|
|
25
|
+
.string()
|
|
26
|
+
.describe('The ID of the user who owns the credential.\nOn self-hosted, query the database.\nOn cloud, query the API with your API key')
|
|
27
|
+
.optional(),
|
|
28
|
+
});
|
|
29
|
+
let CommunityNode = class CommunityNode extends base_command_1.BaseCommand {
|
|
14
30
|
async run() {
|
|
15
|
-
const { flags } =
|
|
31
|
+
const { flags } = this;
|
|
16
32
|
const packageName = flags.package;
|
|
17
33
|
const credentialType = flags.credential;
|
|
18
34
|
const userId = flags.userId;
|
|
@@ -88,9 +104,6 @@ class CommunityNode extends base_command_1.BaseCommand {
|
|
|
88
104
|
async pruneDependencies() {
|
|
89
105
|
await di_1.Container.get(community_packages_service_1.CommunityPackagesService).executeNpmCommand('npm prune');
|
|
90
106
|
}
|
|
91
|
-
async parseFlags() {
|
|
92
|
-
return await this.parse(CommunityNode);
|
|
93
|
-
}
|
|
94
107
|
async deleteCommunityNode(node) {
|
|
95
108
|
return await di_1.Container.get(db_1.InstalledNodesRepository).delete({
|
|
96
109
|
type: node.type,
|
|
@@ -102,26 +115,17 @@ class CommunityNode extends base_command_1.BaseCommand {
|
|
|
102
115
|
async findCommunityPackage(packageName) {
|
|
103
116
|
return await di_1.Container.get(community_packages_service_1.CommunityPackagesService).findInstalledPackage(packageName);
|
|
104
117
|
}
|
|
105
|
-
}
|
|
106
|
-
exports.CommunityNode = CommunityNode;
|
|
107
|
-
CommunityNode.description = '\nUninstall a community node and its credentials';
|
|
108
|
-
CommunityNode.examples = [
|
|
109
|
-
'$ n8n community-node --uninstall --package n8n-nodes-evolution-api',
|
|
110
|
-
'$ n8n community-node --uninstall --credential evolutionApi --userId 1234',
|
|
111
|
-
];
|
|
112
|
-
CommunityNode.flags = {
|
|
113
|
-
help: core_1.Flags.help({ char: 'h' }),
|
|
114
|
-
uninstall: core_1.Flags.boolean({
|
|
115
|
-
description: 'Uninstalls the node',
|
|
116
|
-
}),
|
|
117
|
-
package: core_1.Flags.string({
|
|
118
|
-
description: 'Package name of the community node.',
|
|
119
|
-
}),
|
|
120
|
-
credential: core_1.Flags.string({
|
|
121
|
-
description: "Type of the credential.\nGet this value by visiting the node's .credential.ts file and getting the value of `name`",
|
|
122
|
-
}),
|
|
123
|
-
userId: core_1.Flags.string({
|
|
124
|
-
description: 'The ID of the user who owns the credential.\nOn self-hosted, query the database.\nOn cloud, query the API with your API key',
|
|
125
|
-
}),
|
|
126
118
|
};
|
|
119
|
+
exports.CommunityNode = CommunityNode;
|
|
120
|
+
exports.CommunityNode = CommunityNode = __decorate([
|
|
121
|
+
(0, decorators_1.Command)({
|
|
122
|
+
name: 'community-node',
|
|
123
|
+
description: 'Uninstall a community node and its credentials',
|
|
124
|
+
examples: [
|
|
125
|
+
'--uninstall --package n8n-nodes-evolution-api',
|
|
126
|
+
'--uninstall --credential evolutionApi --userId 1234',
|
|
127
|
+
],
|
|
128
|
+
flagsSchema,
|
|
129
|
+
})
|
|
130
|
+
], CommunityNode);
|
|
127
131
|
//# sourceMappingURL=community-node.js.map
|