@n8n/backend-module-apps 0.0.0-stage → 0.0.0-tp-setup
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/dist/app-artifact.entity.d.ts +10 -0
- package/dist/app-artifact.entity.js +48 -0
- package/dist/app-artifact.entity.js.map +1 -0
- package/dist/app-artifact.repository.d.ts +15 -0
- package/dist/app-artifact.repository.js +104 -0
- package/dist/app-artifact.repository.js.map +1 -0
- package/dist/app-artifact.service.d.ts +20 -0
- package/dist/app-artifact.service.js +118 -0
- package/dist/app-artifact.service.js.map +1 -0
- package/dist/app-retention.service.d.ts +16 -0
- package/dist/app-retention.service.js +74 -0
- package/dist/app-retention.service.js.map +1 -0
- package/dist/app-storage-cleanup.task.d.ts +17 -0
- package/dist/app-storage-cleanup.task.js +57 -0
- package/dist/app-storage-cleanup.task.js.map +1 -0
- package/dist/app-storage-lock.d.ts +1 -0
- package/dist/app-storage-lock.js +8 -0
- package/dist/app-storage-lock.js.map +1 -0
- package/dist/app-version.entity.d.ts +12 -0
- package/dist/app-version.entity.js +56 -0
- package/dist/app-version.entity.js.map +1 -0
- package/dist/app-version.repository.d.ts +18 -0
- package/dist/app-version.repository.js +90 -0
- package/dist/app-version.repository.js.map +1 -0
- package/dist/app-version.service.d.ts +30 -0
- package/dist/app-version.service.js +124 -0
- package/dist/app-version.service.js.map +1 -0
- package/dist/app.entity.d.ts +11 -0
- package/dist/app.entity.js +53 -0
- package/dist/app.entity.js.map +1 -0
- package/dist/app.repository.d.ts +19 -0
- package/dist/app.repository.js +116 -0
- package/dist/app.repository.js.map +1 -0
- package/dist/apps-list.controller.d.ts +9 -0
- package/dist/apps-list.controller.js +39 -0
- package/dist/apps-list.controller.js.map +1 -0
- package/dist/apps.config.d.ts +8 -0
- package/dist/apps.config.js +54 -0
- package/dist/apps.config.js.map +1 -0
- package/dist/apps.controller.d.ts +48 -0
- package/dist/apps.controller.js +82 -0
- package/dist/apps.controller.js.map +1 -0
- package/dist/apps.module.d.ts +9 -0
- package/dist/apps.module.js +43 -0
- package/dist/apps.module.js.map +1 -0
- package/dist/apps.service.d.ts +18 -0
- package/dist/apps.service.js +93 -0
- package/dist/apps.service.js.map +1 -0
- package/dist/build.tsbuildinfo +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/storage/app-archive.d.ts +16 -0
- package/dist/storage/app-archive.js +180 -0
- package/dist/storage/app-archive.js.map +1 -0
- package/dist/storage/app-blob-store.d.ts +21 -0
- package/dist/storage/app-blob-store.js +93 -0
- package/dist/storage/app-blob-store.js.map +1 -0
- package/dist/storage/app-version-stores.d.ts +20 -0
- package/dist/storage/app-version-stores.js +10 -0
- package/dist/storage/app-version-stores.js.map +1 -0
- package/dist/storage/snapshot-app-version-stores.d.ts +30 -0
- package/dist/storage/snapshot-app-version-stores.js +122 -0
- package/dist/storage/snapshot-app-version-stores.js.map +1 -0
- package/package.json +67 -4
- package/README.md +0 -3
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { CreateAppDto, ListAppsQueryDto, UpdateAppDto } from '@n8n/api-types';
|
|
2
|
+
import type { AuthenticatedRequest } from '@n8n/db';
|
|
3
|
+
import type { Response } from 'express';
|
|
4
|
+
import { AppsService } from './apps.service';
|
|
5
|
+
type AppRequest = AuthenticatedRequest<{
|
|
6
|
+
projectId: string;
|
|
7
|
+
appId: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare class AppsController {
|
|
10
|
+
private readonly appsService;
|
|
11
|
+
constructor(appsService: AppsService);
|
|
12
|
+
create(req: AppRequest, _res: Response, dto: CreateAppDto): Promise<{
|
|
13
|
+
id: string;
|
|
14
|
+
projectId: string;
|
|
15
|
+
name: string;
|
|
16
|
+
namespace: string;
|
|
17
|
+
visibility: "instance" | "project" | "public";
|
|
18
|
+
draftVersionId: string | null;
|
|
19
|
+
publishedVersionId: string | null;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
updatedAt: string;
|
|
22
|
+
}>;
|
|
23
|
+
list(req: AppRequest, res: Response, query: ListAppsQueryDto): Promise<void>;
|
|
24
|
+
get(req: AppRequest): Promise<{
|
|
25
|
+
id: string;
|
|
26
|
+
projectId: string;
|
|
27
|
+
name: string;
|
|
28
|
+
namespace: string;
|
|
29
|
+
visibility: "instance" | "project" | "public";
|
|
30
|
+
draftVersionId: string | null;
|
|
31
|
+
publishedVersionId: string | null;
|
|
32
|
+
createdAt: string;
|
|
33
|
+
updatedAt: string;
|
|
34
|
+
}>;
|
|
35
|
+
update(req: AppRequest, _res: Response, dto: UpdateAppDto): Promise<{
|
|
36
|
+
id: string;
|
|
37
|
+
projectId: string;
|
|
38
|
+
name: string;
|
|
39
|
+
namespace: string;
|
|
40
|
+
visibility: "instance" | "project" | "public";
|
|
41
|
+
draftVersionId: string | null;
|
|
42
|
+
publishedVersionId: string | null;
|
|
43
|
+
createdAt: string;
|
|
44
|
+
updatedAt: string;
|
|
45
|
+
}>;
|
|
46
|
+
delete(req: AppRequest): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AppsController = void 0;
|
|
16
|
+
const api_types_1 = require("@n8n/api-types");
|
|
17
|
+
const decorators_1 = require("@n8n/decorators");
|
|
18
|
+
const apps_service_1 = require("./apps.service");
|
|
19
|
+
let AppsController = class AppsController {
|
|
20
|
+
constructor(appsService) {
|
|
21
|
+
this.appsService = appsService;
|
|
22
|
+
}
|
|
23
|
+
async create(req, _res, dto) {
|
|
24
|
+
return await this.appsService.createApp(req.params.projectId, dto);
|
|
25
|
+
}
|
|
26
|
+
async list(req, res, query) {
|
|
27
|
+
res.json(await this.appsService.listApps(req.params.projectId, query));
|
|
28
|
+
}
|
|
29
|
+
async get(req) {
|
|
30
|
+
return await this.appsService.getApp(req.params.projectId, req.params.appId);
|
|
31
|
+
}
|
|
32
|
+
async update(req, _res, dto) {
|
|
33
|
+
return await this.appsService.updateApp(req.params.projectId, req.params.appId, dto);
|
|
34
|
+
}
|
|
35
|
+
async delete(req) {
|
|
36
|
+
await this.appsService.deleteApp(req.params.projectId, req.params.appId);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.AppsController = AppsController;
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, decorators_1.Post)('/'),
|
|
42
|
+
(0, decorators_1.ProjectScope)('app:create'),
|
|
43
|
+
__param(2, decorators_1.Body),
|
|
44
|
+
__metadata("design:type", Function),
|
|
45
|
+
__metadata("design:paramtypes", [Object, Object, api_types_1.CreateAppDto]),
|
|
46
|
+
__metadata("design:returntype", Promise)
|
|
47
|
+
], AppsController.prototype, "create", null);
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, decorators_1.Get)('/'),
|
|
50
|
+
(0, decorators_1.ProjectScope)('app:list'),
|
|
51
|
+
__param(2, decorators_1.Query),
|
|
52
|
+
__metadata("design:type", Function),
|
|
53
|
+
__metadata("design:paramtypes", [Object, Object, api_types_1.ListAppsQueryDto]),
|
|
54
|
+
__metadata("design:returntype", Promise)
|
|
55
|
+
], AppsController.prototype, "list", null);
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, decorators_1.Get)('/:appId'),
|
|
58
|
+
(0, decorators_1.ProjectScope)('app:read'),
|
|
59
|
+
__metadata("design:type", Function),
|
|
60
|
+
__metadata("design:paramtypes", [Object]),
|
|
61
|
+
__metadata("design:returntype", Promise)
|
|
62
|
+
], AppsController.prototype, "get", null);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, decorators_1.Patch)('/:appId'),
|
|
65
|
+
(0, decorators_1.ProjectScope)('app:update'),
|
|
66
|
+
__param(2, decorators_1.Body),
|
|
67
|
+
__metadata("design:type", Function),
|
|
68
|
+
__metadata("design:paramtypes", [Object, Object, api_types_1.UpdateAppDto]),
|
|
69
|
+
__metadata("design:returntype", Promise)
|
|
70
|
+
], AppsController.prototype, "update", null);
|
|
71
|
+
__decorate([
|
|
72
|
+
(0, decorators_1.Delete)('/:appId'),
|
|
73
|
+
(0, decorators_1.ProjectScope)('app:delete'),
|
|
74
|
+
__metadata("design:type", Function),
|
|
75
|
+
__metadata("design:paramtypes", [Object]),
|
|
76
|
+
__metadata("design:returntype", Promise)
|
|
77
|
+
], AppsController.prototype, "delete", null);
|
|
78
|
+
exports.AppsController = AppsController = __decorate([
|
|
79
|
+
(0, decorators_1.RestController)('/projects/:projectId/apps'),
|
|
80
|
+
__metadata("design:paramtypes", [apps_service_1.AppsService])
|
|
81
|
+
], AppsController);
|
|
82
|
+
//# sourceMappingURL=apps.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.controller.js","sourceRoot":"","sources":["../src/apps.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8CAA8E;AAE9E,gDASyB;AAGzB,iDAA6C;AAKtC,IAAM,cAAc,GAApB,MAAM,cAAc;IAC1B,YAA6B,WAAwB;2BAAxB,WAAW;IAAgB,CAAC;IAKnD,AAAN,KAAK,CAAC,MAAM,CAAC,GAAe,EAAE,IAAc,EAAQ,GAAiB;QACpE,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IAIK,AAAN,KAAK,CAAC,IAAI,CAAC,GAAe,EAAE,GAAa,EAAS,KAAuB;QACxE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IAIK,AAAN,KAAK,CAAC,GAAG,CAAC,GAAe;QACxB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CAAC,GAAe,EAAE,IAAc,EAAQ,GAAiB;QACpE,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtF,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CAAC,GAAe;QAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC;CACD,CAAA;;AA3BM;IAFL,IAAA,iBAAI,EAAC,GAAG,CAAC;IACT,IAAA,yBAAY,EAAC,YAAY,CAAC;IACoB,WAAA,iBAAI,CAAA;;qDAAM,wBAAY;;4CAEpE;AAIK;IAFL,IAAA,gBAAG,EAAC,GAAG,CAAC;IACR,IAAA,yBAAY,EAAC,UAAU,CAAC;IACmB,WAAA,kBAAK,CAAA;;qDAAQ,4BAAgB;;0CAExE;AAIK;IAFL,IAAA,gBAAG,EAAC,SAAS,CAAC;IACd,IAAA,yBAAY,EAAC,UAAU,CAAC;;;;yCAGxB;AAIK;IAFL,IAAA,kBAAK,EAAC,SAAS,CAAC;IAChB,IAAA,yBAAY,EAAC,YAAY,CAAC;IACoB,WAAA,iBAAI,CAAA;;qDAAM,wBAAY;;4CAEpE;AAIK;IAFL,IAAA,mBAAM,EAAC,SAAS,CAAC;IACjB,IAAA,yBAAY,EAAC,YAAY,CAAC;;;;4CAG1B;yBAhCW,cAAc;IAD1B,IAAA,2BAAc,EAAC,2BAA2B,CAAC;qCAED,0BAAW;GADzC,cAAc,CAiC1B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ModuleInterface } from '@n8n/decorators';
|
|
2
|
+
export declare class AppsModule implements ModuleInterface {
|
|
3
|
+
init(): Promise<void>;
|
|
4
|
+
systemTasks(): Promise<typeof import("./app-storage-cleanup.task.js").AppStorageCleanupTask[]>;
|
|
5
|
+
entities(): Promise<(typeof import("./app-artifact.entity.js").AppArtifact | typeof import("./app-version.entity.js").AppVersion | typeof import("./app.entity.js").App)[]>;
|
|
6
|
+
settings(): Promise<{
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AppsModule = void 0;
|
|
10
|
+
const decorators_1 = require("@n8n/decorators");
|
|
11
|
+
const backend_common_1 = require("@n8n/backend-common");
|
|
12
|
+
const di_1 = require("@n8n/di");
|
|
13
|
+
let AppsModule = class AppsModule {
|
|
14
|
+
async init() {
|
|
15
|
+
await import('./apps.controller.js');
|
|
16
|
+
await import('./apps-list.controller.js');
|
|
17
|
+
const { AppBlobStore } = await import('./storage/app-blob-store.js');
|
|
18
|
+
await di_1.Container.get(AppBlobStore).init();
|
|
19
|
+
const { AppSourceVersionStore, AppBuildResultStore } = await import('./storage/app-version-stores.js');
|
|
20
|
+
const { SnapshotAppSourceVersionStore, SnapshotAppBuildResultStore } = await import('./storage/snapshot-app-version-stores.js');
|
|
21
|
+
di_1.Container.set(AppSourceVersionStore, di_1.Container.get(SnapshotAppSourceVersionStore));
|
|
22
|
+
di_1.Container.set(AppBuildResultStore, di_1.Container.get(SnapshotAppBuildResultStore));
|
|
23
|
+
di_1.Container.get(backend_common_1.Logger).warn('The apps module is experimental.');
|
|
24
|
+
}
|
|
25
|
+
async systemTasks() {
|
|
26
|
+
const { AppStorageCleanupTask } = await import('./app-storage-cleanup.task.js');
|
|
27
|
+
return [AppStorageCleanupTask];
|
|
28
|
+
}
|
|
29
|
+
async entities() {
|
|
30
|
+
const { App } = await import('./app.entity.js');
|
|
31
|
+
const { AppVersion } = await import('./app-version.entity.js');
|
|
32
|
+
const { AppArtifact } = await import('./app-artifact.entity.js');
|
|
33
|
+
return [App, AppVersion, AppArtifact];
|
|
34
|
+
}
|
|
35
|
+
async settings() {
|
|
36
|
+
return { enabled: true };
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.AppsModule = AppsModule;
|
|
40
|
+
exports.AppsModule = AppsModule = __decorate([
|
|
41
|
+
(0, decorators_1.BackendModule)({ name: 'apps', instanceTypes: ['main'] })
|
|
42
|
+
], AppsModule);
|
|
43
|
+
//# sourceMappingURL=apps.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.module.js","sourceRoot":"","sources":["../src/apps.module.ts"],"names":[],"mappings":";;;;;;;;;AACA,gDAAgD;AAChD,wDAA6C;AAC7C,gCAAoC;AAG7B,IAAM,UAAU,GAAhB,MAAM,UAAU;IACtB,KAAK,CAAC,IAAI;QACT,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACrC,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QACrE,MAAM,cAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAClE,iCAAiC,CACjC,CAAC;QACF,MAAM,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,GAAG,MAAM,MAAM,CAClF,0CAA0C,CAC1C,CAAC;QACF,cAAS,CAAC,GAAG,CAAC,qBAAqB,EAAE,cAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACnF,cAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,cAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAC/E,cAAS,CAAC,GAAG,CAAC,uBAAM,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,WAAW;QAChB,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAChF,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ;QACb,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC/D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,QAAQ;QACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAA;;qBAhCY,UAAU;IADtB,IAAA,0BAAa,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;GAC5C,UAAU,CAgCtB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type CreateAppDto, type UpdateAppDto, type AppResponse, type AppListResponse, type ListAppsQueryDto } from '@n8n/api-types';
|
|
2
|
+
import { ProjectScopeService } from '@n8n/backend-services';
|
|
3
|
+
import { DbLockService, type User } from '@n8n/db';
|
|
4
|
+
import { AppRepository } from './app.repository';
|
|
5
|
+
export declare class AppsService {
|
|
6
|
+
private readonly appRepository;
|
|
7
|
+
private readonly projectScopeService;
|
|
8
|
+
private readonly locks;
|
|
9
|
+
constructor(appRepository: AppRepository, projectScopeService: ProjectScopeService, locks: DbLockService);
|
|
10
|
+
createApp(projectId: string, dto: CreateAppDto): Promise<AppResponse>;
|
|
11
|
+
getApp(projectId: string, appId: string): Promise<AppResponse>;
|
|
12
|
+
listApps(projectId: string, query: ListAppsQueryDto): Promise<AppListResponse>;
|
|
13
|
+
listAppsForUser(user: User, query: ListAppsQueryDto): Promise<AppListResponse>;
|
|
14
|
+
updateApp(projectId: string, appId: string, dto: UpdateAppDto): Promise<AppResponse>;
|
|
15
|
+
deleteApp(projectId: string, appId: string): Promise<void>;
|
|
16
|
+
private assertValidAppId;
|
|
17
|
+
private assertProjectExists;
|
|
18
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
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.AppsService = void 0;
|
|
13
|
+
const api_types_1 = require("@n8n/api-types");
|
|
14
|
+
const backend_services_1 = require("@n8n/backend-services");
|
|
15
|
+
const db_1 = require("@n8n/db");
|
|
16
|
+
const di_1 = require("@n8n/di");
|
|
17
|
+
const errors_1 = require("@n8n/errors");
|
|
18
|
+
const app_storage_lock_1 = require("./app-storage-lock");
|
|
19
|
+
const app_repository_1 = require("./app.repository");
|
|
20
|
+
function toResponse(app) {
|
|
21
|
+
return {
|
|
22
|
+
id: app.id,
|
|
23
|
+
projectId: app.projectId,
|
|
24
|
+
name: app.name,
|
|
25
|
+
namespace: app.namespace,
|
|
26
|
+
visibility: app.visibility,
|
|
27
|
+
draftVersionId: app.draftVersionId,
|
|
28
|
+
publishedVersionId: app.publishedVersionId,
|
|
29
|
+
createdAt: app.createdAt.toISOString(),
|
|
30
|
+
updatedAt: app.updatedAt.toISOString(),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
let AppsService = class AppsService {
|
|
34
|
+
constructor(appRepository, projectScopeService, locks) {
|
|
35
|
+
this.appRepository = appRepository;
|
|
36
|
+
this.projectScopeService = projectScopeService;
|
|
37
|
+
this.locks = locks;
|
|
38
|
+
}
|
|
39
|
+
async createApp(projectId, dto) {
|
|
40
|
+
await this.assertProjectExists(projectId);
|
|
41
|
+
return toResponse(await this.appRepository.createApp(projectId, dto));
|
|
42
|
+
}
|
|
43
|
+
async getApp(projectId, appId) {
|
|
44
|
+
this.assertValidAppId(appId);
|
|
45
|
+
const app = await this.appRepository.findInProject(projectId, appId);
|
|
46
|
+
if (!app)
|
|
47
|
+
throw new errors_1.NotFoundError('App not found');
|
|
48
|
+
return toResponse(app);
|
|
49
|
+
}
|
|
50
|
+
async listApps(projectId, query) {
|
|
51
|
+
await this.assertProjectExists(projectId);
|
|
52
|
+
const { data, count } = await this.appRepository.list([projectId], query);
|
|
53
|
+
return { data: data.map(toResponse), count };
|
|
54
|
+
}
|
|
55
|
+
async listAppsForUser(user, query) {
|
|
56
|
+
const projectIds = await this.projectScopeService.getProjectIds(user, ['app:list']);
|
|
57
|
+
const { data, count } = await this.appRepository.list(projectIds, query);
|
|
58
|
+
return { data: data.map(toResponse), count };
|
|
59
|
+
}
|
|
60
|
+
async updateApp(projectId, appId, dto) {
|
|
61
|
+
if (Object.keys(dto).length === 0) {
|
|
62
|
+
throw new errors_1.BadRequestError('Select an app field to update.');
|
|
63
|
+
}
|
|
64
|
+
this.assertValidAppId(appId);
|
|
65
|
+
const app = await this.appRepository.updateApp(projectId, appId, dto);
|
|
66
|
+
if (!app)
|
|
67
|
+
throw new errors_1.NotFoundError('App not found');
|
|
68
|
+
return toResponse(app);
|
|
69
|
+
}
|
|
70
|
+
async deleteApp(projectId, appId) {
|
|
71
|
+
this.assertValidAppId(appId);
|
|
72
|
+
const deleted = await this.locks.withLockContext(1010, async (ctx) => await this.appRepository.deleteInProject(projectId, appId, ctx), { subKey: (0, app_storage_lock_1.appStorageLockSubKey)(appId) });
|
|
73
|
+
if (!deleted) {
|
|
74
|
+
throw new errors_1.NotFoundError('App not found');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
assertValidAppId(appId) {
|
|
78
|
+
if (!api_types_1.appSchema.shape.id.safeParse(appId).success) {
|
|
79
|
+
throw new errors_1.NotFoundError('App not found');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async assertProjectExists(projectId) {
|
|
83
|
+
if (!(await this.appRepository.projectExists(projectId))) {
|
|
84
|
+
throw new errors_1.NotFoundError('Project not found');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
exports.AppsService = AppsService;
|
|
89
|
+
exports.AppsService = AppsService = __decorate([
|
|
90
|
+
(0, di_1.Service)(),
|
|
91
|
+
__metadata("design:paramtypes", [app_repository_1.AppRepository, backend_services_1.ProjectScopeService, db_1.DbLockService])
|
|
92
|
+
], AppsService);
|
|
93
|
+
//# sourceMappingURL=apps.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.service.js","sourceRoot":"","sources":["../src/apps.service.ts"],"names":[],"mappings":"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"}
|