UNPKG

n8n

Version:

n8n Workflow Automation Tool

282 lines 14.2 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SourceControlController = void 0; const express_1 = __importDefault(require("express")); const decorators_1 = require("../../decorators"); const sourceControlEnabledMiddleware_ee_1 = require("./middleware/sourceControlEnabledMiddleware.ee"); const sourceControl_service_ee_1 = require("./sourceControl.service.ee"); const sourceControlPreferences_service_ee_1 = require("./sourceControlPreferences.service.ee"); const constants_1 = require("./constants"); const InternalHooks_1 = require("../../InternalHooks"); const sourceControlHelper_ee_1 = require("./sourceControlHelper.ee"); const sourceControlGetStatus_1 = require("./types/sourceControlGetStatus"); const bad_request_error_1 = require("../../errors/response-errors/bad-request.error"); let SourceControlController = class SourceControlController { constructor(sourceControlService, sourceControlPreferencesService, internalHooks) { this.sourceControlService = sourceControlService; this.sourceControlPreferencesService = sourceControlPreferencesService; this.internalHooks = internalHooks; } async getPreferences() { const publicKey = await this.sourceControlPreferencesService.getPublicKey(); return { ...this.sourceControlPreferencesService.getPreferences(), publicKey }; } async setPreferences(req) { var _a; if (req.body.branchReadOnly === undefined && this.sourceControlPreferencesService.isSourceControlConnected()) { throw new bad_request_error_1.BadRequestError('Cannot change preferences while connected to a source control provider. Please disconnect first.'); } try { const sanitizedPreferences = { ...req.body, initRepo: (_a = req.body.initRepo) !== null && _a !== void 0 ? _a : true, connected: undefined, publicKey: undefined, }; await this.sourceControlPreferencesService.validateSourceControlPreferences(sanitizedPreferences); const updatedPreferences = await this.sourceControlPreferencesService.setPreferences(sanitizedPreferences); if (sanitizedPreferences.initRepo === true) { try { await this.sourceControlService.initializeRepository({ ...updatedPreferences, branchName: updatedPreferences.branchName === '' ? constants_1.SOURCE_CONTROL_DEFAULT_BRANCH : updatedPreferences.branchName, initRepo: true, }, req.user); if (this.sourceControlPreferencesService.getPreferences().branchName !== '') { await this.sourceControlPreferencesService.setPreferences({ connected: true, }); } } catch (error) { await this.sourceControlService.disconnect({ keepKeyPair: true }); throw error; } } await this.sourceControlService.init(); const resultingPreferences = this.sourceControlPreferencesService.getPreferences(); void this.internalHooks.onSourceControlSettingsUpdated({ branch_name: resultingPreferences.branchName, connected: resultingPreferences.connected, read_only_instance: resultingPreferences.branchReadOnly, repo_type: (0, sourceControlHelper_ee_1.getRepoType)(resultingPreferences.repositoryUrl), }); return resultingPreferences; } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } async updatePreferences(req) { var _a; try { const sanitizedPreferences = { ...req.body, initRepo: false, connected: undefined, publicKey: undefined, repositoryUrl: undefined, }; const currentPreferences = this.sourceControlPreferencesService.getPreferences(); await this.sourceControlPreferencesService.validateSourceControlPreferences(sanitizedPreferences); if (sanitizedPreferences.branchName && sanitizedPreferences.branchName !== currentPreferences.branchName) { await this.sourceControlService.setBranch(sanitizedPreferences.branchName); } if ((_a = sanitizedPreferences.branchColor) !== null && _a !== void 0 ? _a : sanitizedPreferences.branchReadOnly !== undefined) { await this.sourceControlPreferencesService.setPreferences({ branchColor: sanitizedPreferences.branchColor, branchReadOnly: sanitizedPreferences.branchReadOnly, }, true); } await this.sourceControlService.init(); const resultingPreferences = this.sourceControlPreferencesService.getPreferences(); void this.internalHooks.onSourceControlSettingsUpdated({ branch_name: resultingPreferences.branchName, connected: resultingPreferences.connected, read_only_instance: resultingPreferences.branchReadOnly, repo_type: (0, sourceControlHelper_ee_1.getRepoType)(resultingPreferences.repositoryUrl), }); return resultingPreferences; } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } async disconnect(req) { try { return await this.sourceControlService.disconnect(req.body); } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } async getBranches() { try { return await this.sourceControlService.getBranches(); } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } async pushWorkfolder(req, res) { if (this.sourceControlPreferencesService.isBranchReadOnly()) { throw new bad_request_error_1.BadRequestError('Cannot push onto read-only branch.'); } try { await this.sourceControlService.setGitUserDetails(`${req.user.firstName} ${req.user.lastName}`, req.user.email); const result = await this.sourceControlService.pushWorkfolder(req.body); res.statusCode = result.statusCode; return result.statusResult; } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } async pullWorkfolder(req, res) { try { const result = await this.sourceControlService.pullWorkfolder({ force: req.body.force, variables: req.body.variables, userId: req.user.id, }); res.statusCode = result.statusCode; return result.statusResult; } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } async resetWorkfolder() { try { return await this.sourceControlService.resetWorkfolder(); } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } async getStatus(req) { try { const result = (await this.sourceControlService.getStatus(new sourceControlGetStatus_1.SourceControlGetStatus(req.query))); return result; } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } async status(req) { try { return await this.sourceControlService.getStatus(new sourceControlGetStatus_1.SourceControlGetStatus(req.query)); } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } async generateKeyPair(req) { try { const keyPairType = req.body.keyGeneratorType; const result = await this.sourceControlPreferencesService.generateAndSaveKeyPair(keyPairType); const publicKey = await this.sourceControlPreferencesService.getPublicKey(); return { ...result, publicKey }; } catch (error) { throw new bad_request_error_1.BadRequestError(error.message); } } }; exports.SourceControlController = SourceControlController; __decorate([ (0, decorators_1.Get)('/preferences', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedMiddleware], skipAuth: true }), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "getPreferences", null); __decorate([ (0, decorators_1.Post)('/preferences', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedMiddleware] }), (0, decorators_1.GlobalScope)('sourceControl:manage'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "setPreferences", null); __decorate([ (0, decorators_1.Patch)('/preferences', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedMiddleware] }), (0, decorators_1.GlobalScope)('sourceControl:manage'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "updatePreferences", null); __decorate([ (0, decorators_1.Post)('/disconnect', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedMiddleware] }), (0, decorators_1.GlobalScope)('sourceControl:manage'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "disconnect", null); __decorate([ (0, decorators_1.Get)('/get-branches', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedMiddleware] }), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "getBranches", null); __decorate([ (0, decorators_1.Post)('/push-workfolder', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedAndEnabledMiddleware] }), (0, decorators_1.GlobalScope)('sourceControl:push'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object]), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "pushWorkfolder", null); __decorate([ (0, decorators_1.Post)('/pull-workfolder', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedAndEnabledMiddleware] }), (0, decorators_1.GlobalScope)('sourceControl:pull'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object]), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "pullWorkfolder", null); __decorate([ (0, decorators_1.Get)('/reset-workfolder', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedAndEnabledMiddleware] }), (0, decorators_1.GlobalScope)('sourceControl:manage'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "resetWorkfolder", null); __decorate([ (0, decorators_1.Get)('/get-status', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedAndEnabledMiddleware] }), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "getStatus", null); __decorate([ (0, decorators_1.Get)('/status', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedMiddleware] }), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "status", null); __decorate([ (0, decorators_1.Post)('/generate-key-pair', { middlewares: [sourceControlEnabledMiddleware_ee_1.sourceControlLicensedMiddleware] }), (0, decorators_1.GlobalScope)('sourceControl:manage'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], SourceControlController.prototype, "generateKeyPair", null); exports.SourceControlController = SourceControlController = __decorate([ (0, decorators_1.RestController)('/source-control'), __metadata("design:paramtypes", [sourceControl_service_ee_1.SourceControlService, sourceControlPreferences_service_ee_1.SourceControlPreferencesService, InternalHooks_1.InternalHooks]) ], SourceControlController); //# sourceMappingURL=sourceControl.controller.ee.js.map