@n8n/backend-module-apps 0.0.0-stage → 0.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.
- package/LICENSE.md +88 -0
- package/dist/app-artifact.entity.d.ts +9 -0
- package/dist/app-artifact.entity.js +48 -0
- package/dist/app-artifact.entity.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.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 +14 -0
- package/dist/app.repository.js +88 -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.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 +8 -0
- package/dist/apps.module.js +33 -0
- package/dist/apps.module.js.map +1 -0
- package/dist/apps.service.d.ts +17 -0
- package/dist/apps.service.js +90 -0
- package/dist/apps.service.js.map +1 -0
- package/dist/build.tsbuildinfo +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/package.json +58 -3
- package/README.md +0 -3
|
@@ -0,0 +1,17 @@
|
|
|
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 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
|
+
constructor(appRepository: AppRepository, projectScopeService: ProjectScopeService);
|
|
9
|
+
createApp(projectId: string, dto: CreateAppDto): Promise<AppResponse>;
|
|
10
|
+
getApp(projectId: string, appId: string): Promise<AppResponse>;
|
|
11
|
+
listApps(projectId: string, query: ListAppsQueryDto): Promise<AppListResponse>;
|
|
12
|
+
listAppsForUser(user: User, query: ListAppsQueryDto): Promise<AppListResponse>;
|
|
13
|
+
updateApp(projectId: string, appId: string, dto: UpdateAppDto): Promise<AppResponse>;
|
|
14
|
+
deleteApp(projectId: string, appId: string): Promise<void>;
|
|
15
|
+
private assertValidAppId;
|
|
16
|
+
private assertProjectExists;
|
|
17
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
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 di_1 = require("@n8n/di");
|
|
16
|
+
const errors_1 = require("@n8n/errors");
|
|
17
|
+
const app_repository_1 = require("./app.repository");
|
|
18
|
+
function toResponse(app) {
|
|
19
|
+
return {
|
|
20
|
+
id: app.id,
|
|
21
|
+
projectId: app.projectId,
|
|
22
|
+
name: app.name,
|
|
23
|
+
namespace: app.namespace,
|
|
24
|
+
visibility: app.visibility,
|
|
25
|
+
draftVersionId: app.draftVersionId,
|
|
26
|
+
publishedVersionId: app.publishedVersionId,
|
|
27
|
+
createdAt: app.createdAt.toISOString(),
|
|
28
|
+
updatedAt: app.updatedAt.toISOString(),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
let AppsService = class AppsService {
|
|
32
|
+
constructor(appRepository, projectScopeService) {
|
|
33
|
+
this.appRepository = appRepository;
|
|
34
|
+
this.projectScopeService = projectScopeService;
|
|
35
|
+
}
|
|
36
|
+
async createApp(projectId, dto) {
|
|
37
|
+
await this.assertProjectExists(projectId);
|
|
38
|
+
return toResponse(await this.appRepository.createApp(projectId, dto));
|
|
39
|
+
}
|
|
40
|
+
async getApp(projectId, appId) {
|
|
41
|
+
this.assertValidAppId(appId);
|
|
42
|
+
const app = await this.appRepository.findOneBy({ id: appId, projectId });
|
|
43
|
+
if (!app)
|
|
44
|
+
throw new errors_1.NotFoundError('App not found');
|
|
45
|
+
return toResponse(app);
|
|
46
|
+
}
|
|
47
|
+
async listApps(projectId, query) {
|
|
48
|
+
await this.assertProjectExists(projectId);
|
|
49
|
+
const { data, count } = await this.appRepository.list([projectId], query);
|
|
50
|
+
return { data: data.map(toResponse), count };
|
|
51
|
+
}
|
|
52
|
+
async listAppsForUser(user, query) {
|
|
53
|
+
const projectIds = await this.projectScopeService.getProjectIds(user, ['app:list']);
|
|
54
|
+
const { data, count } = await this.appRepository.list(projectIds, query);
|
|
55
|
+
return { data: data.map(toResponse), count };
|
|
56
|
+
}
|
|
57
|
+
async updateApp(projectId, appId, dto) {
|
|
58
|
+
if (Object.keys(dto).length === 0) {
|
|
59
|
+
throw new errors_1.BadRequestError('Select an app field to update.');
|
|
60
|
+
}
|
|
61
|
+
this.assertValidAppId(appId);
|
|
62
|
+
const app = await this.appRepository.updateApp(projectId, appId, dto);
|
|
63
|
+
if (!app)
|
|
64
|
+
throw new errors_1.NotFoundError('App not found');
|
|
65
|
+
return toResponse(app);
|
|
66
|
+
}
|
|
67
|
+
async deleteApp(projectId, appId) {
|
|
68
|
+
this.assertValidAppId(appId);
|
|
69
|
+
const result = await this.appRepository.delete({ id: appId, projectId });
|
|
70
|
+
if (!result.affected) {
|
|
71
|
+
throw new errors_1.NotFoundError('App not found');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
assertValidAppId(appId) {
|
|
75
|
+
if (!api_types_1.appSchema.shape.id.safeParse(appId).success) {
|
|
76
|
+
throw new errors_1.NotFoundError('App not found');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async assertProjectExists(projectId) {
|
|
80
|
+
if (!(await this.appRepository.projectExists(projectId))) {
|
|
81
|
+
throw new errors_1.NotFoundError('Project not found');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
exports.AppsService = AppsService;
|
|
86
|
+
exports.AppsService = AppsService = __decorate([
|
|
87
|
+
(0, di_1.Service)(),
|
|
88
|
+
__metadata("design:paramtypes", [app_repository_1.AppRepository, backend_services_1.ProjectScopeService])
|
|
89
|
+
], AppsService);
|
|
90
|
+
//# 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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"}
|