@loopstack/api 0.4.0 → 0.4.2

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 (43) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/dtos/pipeline-item.dto.js +1 -2
  3. package/dist/dtos/pipeline-item.dto.js.map +1 -1
  4. package/dist/dtos/pipeline.dto.js +1 -2
  5. package/dist/dtos/pipeline.dto.js.map +1 -1
  6. package/dist/tsconfig.tsbuildinfo +1 -1
  7. package/package.json +3 -3
  8. package/dist/controllers/project.controller.d.ts +0 -25
  9. package/dist/controllers/project.controller.js +0 -272
  10. package/dist/controllers/project.controller.js.map +0 -1
  11. package/dist/dtos/project-config.dto.d.ts +0 -5
  12. package/dist/dtos/project-config.dto.js +0 -45
  13. package/dist/dtos/project-config.dto.js.map +0 -1
  14. package/dist/dtos/project-context.dto.d.ts +0 -2
  15. package/dist/dtos/project-context.dto.js +0 -7
  16. package/dist/dtos/project-context.dto.js.map +0 -1
  17. package/dist/dtos/project-create.dto.d.ts +0 -6
  18. package/dist/dtos/project-create.dto.js +0 -65
  19. package/dist/dtos/project-create.dto.js.map +0 -1
  20. package/dist/dtos/project-filter.dto.d.ts +0 -3
  21. package/dist/dtos/project-filter.dto.js +0 -25
  22. package/dist/dtos/project-filter.dto.js.map +0 -1
  23. package/dist/dtos/project-item.dto.d.ts +0 -13
  24. package/dist/dtos/project-item.dto.js +0 -110
  25. package/dist/dtos/project-item.dto.js.map +0 -1
  26. package/dist/dtos/project-query-dto.d.ts +0 -8
  27. package/dist/dtos/project-query-dto.js +0 -56
  28. package/dist/dtos/project-query-dto.js.map +0 -1
  29. package/dist/dtos/project-sort-by.dto.d.ts +0 -6
  30. package/dist/dtos/project-sort-by.dto.js +0 -31
  31. package/dist/dtos/project-sort-by.dto.js.map +0 -1
  32. package/dist/dtos/project-update.dto.d.ts +0 -4
  33. package/dist/dtos/project-update.dto.js +0 -47
  34. package/dist/dtos/project-update.dto.js.map +0 -1
  35. package/dist/dtos/project.dto.d.ts +0 -16
  36. package/dist/dtos/project.dto.js +0 -125
  37. package/dist/dtos/project.dto.js.map +0 -1
  38. package/dist/dtos/run-project-payload.dto.d.ts +0 -4
  39. package/dist/dtos/run-project-payload.dto.js +0 -24
  40. package/dist/dtos/run-project-payload.dto.js.map +0 -1
  41. package/dist/services/project-api.service.d.ts +0 -36
  42. package/dist/services/project-api.service.js +0 -187
  43. package/dist/services/project-api.service.js.map +0 -1
@@ -1,8 +0,0 @@
1
- import { ProjectFilterDto } from './project-filter.dto';
2
- import { ProjectSortByDto } from './project-sort-by.dto';
3
- export declare class ProjectQueryDto {
4
- filter?: ProjectFilterDto;
5
- page?: number;
6
- limit?: number;
7
- sortBy?: ProjectSortByDto[];
8
- }
@@ -1,56 +0,0 @@
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.ProjectQueryDto = void 0;
13
- const class_validator_1 = require("class-validator");
14
- const class_transformer_1 = require("class-transformer");
15
- const project_filter_dto_1 = require("./project-filter.dto");
16
- const project_sort_by_dto_1 = require("./project-sort-by.dto");
17
- const swagger_1 = require("@nestjs/swagger");
18
- class ProjectQueryDto {
19
- filter;
20
- page;
21
- limit;
22
- sortBy;
23
- }
24
- exports.ProjectQueryDto = ProjectQueryDto;
25
- __decorate([
26
- (0, class_validator_1.IsOptional)(),
27
- (0, class_validator_1.ValidateNested)(),
28
- (0, class_transformer_1.Type)(() => project_filter_dto_1.ProjectFilterDto),
29
- (0, swagger_1.ApiPropertyOptional)({ type: project_filter_dto_1.ProjectFilterDto }),
30
- __metadata("design:type", project_filter_dto_1.ProjectFilterDto)
31
- ], ProjectQueryDto.prototype, "filter", void 0);
32
- __decorate([
33
- (0, class_validator_1.IsOptional)(),
34
- (0, class_validator_1.IsInt)(),
35
- (0, class_validator_1.Min)(1),
36
- (0, class_transformer_1.Type)(() => Number),
37
- (0, swagger_1.ApiPropertyOptional)(),
38
- __metadata("design:type", Number)
39
- ], ProjectQueryDto.prototype, "page", void 0);
40
- __decorate([
41
- (0, class_validator_1.IsOptional)(),
42
- (0, class_validator_1.IsInt)(),
43
- (0, class_validator_1.Min)(1),
44
- (0, class_transformer_1.Type)(() => Number),
45
- (0, swagger_1.ApiPropertyOptional)(),
46
- __metadata("design:type", Number)
47
- ], ProjectQueryDto.prototype, "limit", void 0);
48
- __decorate([
49
- (0, class_validator_1.IsOptional)(),
50
- (0, class_validator_1.IsArray)(),
51
- (0, class_validator_1.ValidateNested)({ each: true }),
52
- (0, class_transformer_1.Type)(() => project_sort_by_dto_1.ProjectSortByDto),
53
- (0, swagger_1.ApiPropertyOptional)({ isArray: true, type: project_sort_by_dto_1.ProjectSortByDto }),
54
- __metadata("design:type", Array)
55
- ], ProjectQueryDto.prototype, "sortBy", void 0);
56
- //# sourceMappingURL=project-query-dto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-query-dto.js","sourceRoot":"","sources":["../../src/dtos/project-query-dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAMyB;AACzB,yDAAyC;AACzC,6DAAwD;AACxD,+DAAyD;AACzD,6CAAsD;AAEtD,MAAa,eAAe;IAK1B,MAAM,CAAoB;IAO1B,IAAI,CAAU;IAOd,KAAK,CAAU;IAOf,MAAM,CAAsB;CAC7B;AA3BD,0CA2BC;AAtBC;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,qCAAgB,CAAC;IAC5B,IAAA,6BAAmB,EAAC,EAAE,IAAI,EAAE,qCAAgB,EAAE,CAAC;8BACvC,qCAAgB;+CAAC;AAO1B;IALC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;IACN,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,6BAAmB,GAAE;;6CACR;AAOd;IALC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;IACN,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,6BAAmB,GAAE;;8CACP;AAOf;IALC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,sCAAgB,CAAC;IAC5B,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,sCAAgB,EAAE,CAAC;;+CACnC"}
@@ -1,6 +0,0 @@
1
- import { SortOrder } from '../enums/sort-order.enum';
2
- import { PipelineEntity } from '@loopstack/shared';
3
- export declare class ProjectSortByDto {
4
- field: keyof PipelineEntity;
5
- order: SortOrder;
6
- }
@@ -1,31 +0,0 @@
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.ProjectSortByDto = void 0;
13
- const sort_order_enum_1 = require("../enums/sort-order.enum");
14
- const swagger_1 = require("@nestjs/swagger");
15
- const shared_1 = require("@loopstack/shared");
16
- const get_entity_columns_util_1 = require("../utils/get-entity-columns.util");
17
- const sortFields = (0, get_entity_columns_util_1.getEntityColumns)(shared_1.PipelineEntity);
18
- class ProjectSortByDto {
19
- field;
20
- order;
21
- }
22
- exports.ProjectSortByDto = ProjectSortByDto;
23
- __decorate([
24
- (0, swagger_1.ApiProperty)({ enum: sortFields }),
25
- __metadata("design:type", Object)
26
- ], ProjectSortByDto.prototype, "field", void 0);
27
- __decorate([
28
- (0, swagger_1.ApiProperty)({ enum: sort_order_enum_1.SortOrder }),
29
- __metadata("design:type", String)
30
- ], ProjectSortByDto.prototype, "order", void 0);
31
- //# sourceMappingURL=project-sort-by.dto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-sort-by.dto.js","sourceRoot":"","sources":["../../src/dtos/project-sort-by.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8DAAqD;AACrD,6CAA8C;AAC9C,8CAAkD;AAClD,8EAAoE;AAEpE,MAAM,UAAU,GAAG,IAAA,0CAAgB,EAAC,sBAAa,CAAC,CAAC;AAEnD,MAAa,gBAAgB;IAE3B,KAAK,CAAsB;IAG3B,KAAK,CAAY;CAClB;AAND,4CAMC;AAJC;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;;+CACP;AAG3B;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,2BAAS,EAAE,CAAC;;+CAChB"}
@@ -1,4 +0,0 @@
1
- export declare class ProjectUpdateDto {
2
- title?: string;
3
- labels?: string[];
4
- }
@@ -1,47 +0,0 @@
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.ProjectUpdateDto = void 0;
13
- const class_validator_1 = require("class-validator");
14
- const swagger_1 = require("@nestjs/swagger");
15
- const class_transformer_1 = require("class-transformer");
16
- class ProjectUpdateDto {
17
- title;
18
- labels;
19
- }
20
- exports.ProjectUpdateDto = ProjectUpdateDto;
21
- __decorate([
22
- (0, class_validator_1.ValidateIf)((o) => o.title !== undefined),
23
- (0, class_validator_1.IsString)(),
24
- (0, class_validator_1.IsOptional)(),
25
- (0, class_validator_1.MaxLength)(200, { message: 'Project title must not exceed 200 characters' }),
26
- (0, swagger_1.ApiPropertyOptional)({
27
- description: 'Human-readable title for the project',
28
- example: 'My Updated Project',
29
- }),
30
- __metadata("design:type", String)
31
- ], ProjectUpdateDto.prototype, "title", void 0);
32
- __decorate([
33
- (0, class_validator_1.ValidateIf)((o) => o.labels !== undefined),
34
- (0, class_validator_1.IsArray)(),
35
- (0, class_validator_1.ArrayNotEmpty)({ message: 'Labels array cannot be empty' }),
36
- (0, class_validator_1.IsString)({ each: true, message: 'Each label must be a string' }),
37
- (0, class_validator_1.IsOptional)(),
38
- (0, class_transformer_1.Type)(() => String),
39
- (0, swagger_1.ApiPropertyOptional)({
40
- description: 'Array of labels/tags associated with the project',
41
- type: 'array',
42
- items: { type: 'string' },
43
- example: ['frontend', 'customer-facing', 'high-priority'],
44
- }),
45
- __metadata("design:type", Array)
46
- ], ProjectUpdateDto.prototype, "labels", void 0);
47
- //# sourceMappingURL=project-update.dto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-update.dto.js","sourceRoot":"","sources":["../../src/dtos/project-update.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,6CAAsD;AACtD,yDAAyC;AAKzC,MAAa,gBAAgB;IAa3B,KAAK,CAAU;IAkBf,MAAM,CAAY;CACnB;AAhCD,4CAgCC;AAnBC;IARC,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;IACxC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC;IAC3E,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,oBAAoB;KAC9B,CAAC;;+CACa;AAkBf;IAZC,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;IACzC,IAAA,yBAAO,GAAE;IACT,IAAA,+BAAa,EAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC1D,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IAChE,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,eAAe,CAAC;KAC1D,CAAC;;gDACgB"}
@@ -1,16 +0,0 @@
1
- import { PipelineEntity, PipelineState } from '@loopstack/shared';
2
- import { ProjectContextDto } from './project-context.dto';
3
- export declare class ProjectDto {
4
- id: string;
5
- model: string;
6
- title: string;
7
- labels: string[];
8
- order: number;
9
- status: PipelineState;
10
- context: ProjectContextDto;
11
- createdAt: Date;
12
- updatedAt: Date;
13
- workspaceId: string;
14
- createdBy: string | null;
15
- static create(project: PipelineEntity): ProjectDto;
16
- }
@@ -1,125 +0,0 @@
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.ProjectDto = void 0;
13
- const class_transformer_1 = require("class-transformer");
14
- const swagger_1 = require("@nestjs/swagger");
15
- const shared_1 = require("@loopstack/shared");
16
- const project_context_dto_1 = require("./project-context.dto");
17
- class ProjectDto {
18
- id;
19
- model;
20
- title;
21
- labels;
22
- order;
23
- status;
24
- context;
25
- createdAt;
26
- updatedAt;
27
- workspaceId;
28
- createdBy;
29
- static create(project) {
30
- return (0, class_transformer_1.plainToInstance)(ProjectDto, project, {
31
- excludeExtraneousValues: true,
32
- });
33
- }
34
- }
35
- exports.ProjectDto = ProjectDto;
36
- __decorate([
37
- (0, class_transformer_1.Expose)(),
38
- (0, swagger_1.ApiProperty)({
39
- description: 'Unique identifier of the project',
40
- example: '123e4567-e89b-12d3-a456-426614174000',
41
- }),
42
- __metadata("design:type", String)
43
- ], ProjectDto.prototype, "id", void 0);
44
- __decorate([
45
- (0, class_transformer_1.Expose)(),
46
- (0, swagger_1.ApiProperty)({
47
- description: 'Process model identifier for the project',
48
- example: 'customer-process',
49
- }),
50
- __metadata("design:type", String)
51
- ], ProjectDto.prototype, "model", void 0);
52
- __decorate([
53
- (0, class_transformer_1.Expose)(),
54
- (0, swagger_1.ApiProperty)({
55
- description: 'Display title of the project',
56
- example: 'Customer Portal',
57
- }),
58
- __metadata("design:type", String)
59
- ], ProjectDto.prototype, "title", void 0);
60
- __decorate([
61
- (0, class_transformer_1.Expose)(),
62
- (0, swagger_1.ApiProperty)({
63
- type: 'array',
64
- items: { type: 'string' },
65
- description: 'Tags associated with the project for categorization and filtering',
66
- example: ['frontend', 'featureXY'],
67
- }),
68
- __metadata("design:type", Array)
69
- ], ProjectDto.prototype, "labels", void 0);
70
- __decorate([
71
- (0, class_transformer_1.Expose)(),
72
- (0, swagger_1.ApiProperty)({
73
- description: 'Order position of the project in listings',
74
- example: 1,
75
- }),
76
- __metadata("design:type", Number)
77
- ], ProjectDto.prototype, "order", void 0);
78
- __decorate([
79
- (0, class_transformer_1.Expose)(),
80
- (0, swagger_1.ApiProperty)({
81
- enum: shared_1.PipelineState,
82
- enumName: 'ProjectStatus',
83
- description: 'Current status of the project',
84
- }),
85
- __metadata("design:type", String)
86
- ], ProjectDto.prototype, "status", void 0);
87
- __decorate([
88
- (0, class_transformer_1.Expose)(),
89
- (0, swagger_1.ApiProperty)({
90
- type: project_context_dto_1.ProjectContextDto,
91
- description: 'Contextual information available to the project',
92
- }),
93
- __metadata("design:type", project_context_dto_1.ProjectContextDto)
94
- ], ProjectDto.prototype, "context", void 0);
95
- __decorate([
96
- (0, class_transformer_1.Expose)(),
97
- (0, swagger_1.ApiProperty)({
98
- type: Date,
99
- description: 'Timestamp when the project was created',
100
- example: '2023-01-15T14:30:00Z',
101
- }),
102
- __metadata("design:type", Date)
103
- ], ProjectDto.prototype, "createdAt", void 0);
104
- __decorate([
105
- (0, class_transformer_1.Expose)(),
106
- (0, swagger_1.ApiProperty)({
107
- type: Date,
108
- description: 'Timestamp when the project was last updated',
109
- example: '2023-02-20T09:15:30Z',
110
- }),
111
- __metadata("design:type", Date)
112
- ], ProjectDto.prototype, "updatedAt", void 0);
113
- __decorate([
114
- (0, class_transformer_1.Expose)(),
115
- (0, swagger_1.ApiProperty)({
116
- description: 'Identifier of the workspace that contains this project',
117
- example: '789e4567-e89b-12d3-a456-426614174001',
118
- }),
119
- __metadata("design:type", String)
120
- ], ProjectDto.prototype, "workspaceId", void 0);
121
- __decorate([
122
- (0, class_transformer_1.Exclude)(),
123
- __metadata("design:type", Object)
124
- ], ProjectDto.prototype, "createdBy", void 0);
125
- //# sourceMappingURL=project.dto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.dto.js","sourceRoot":"","sources":["../../src/dtos/project.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAqE;AACrE,6CAA8C;AAC9C,8CAAiE;AACjE,+DAA0D;AAK1D,MAAa,UAAU;IAMrB,EAAE,CAAS;IAOX,KAAK,CAAS;IAOd,KAAK,CAAS;IAUd,MAAM,CAAW;IAOjB,KAAK,CAAS;IAQd,MAAM,CAAgB;IAOtB,OAAO,CAAoB;IAQ3B,SAAS,CAAO;IAQhB,SAAS,CAAO;IAOhB,WAAW,CAAS;IAGpB,SAAS,CAAgB;IAOzB,MAAM,CAAC,MAAM,CAAC,OAAsB;QAClC,OAAO,IAAA,mCAAe,EAAC,UAAU,EAAE,OAAO,EAAE;YAC1C,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;IACL,CAAC;CACF;AA1FD,gCA0FC;AApFC;IALC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,sCAAsC;KAChD,CAAC;;sCACS;AAOX;IALC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,kBAAkB;KAC5B,CAAC;;yCACY;AAOd;IALC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,iBAAiB;KAC3B,CAAC;;yCACY;AAUd;IARC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,WAAW,EACT,mEAAmE;QACrE,OAAO,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;KACnC,CAAC;;0CACe;AAOjB;IALC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,2CAA2C;QACxD,OAAO,EAAE,CAAC;KACX,CAAC;;yCACY;AAQd;IANC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,sBAAa;QACnB,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,+BAA+B;KAC7C,CAAC;;0CACoB;AAOtB;IALC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,uCAAiB;QACvB,WAAW,EAAE,iDAAiD;KAC/D,CAAC;8BACO,uCAAiB;2CAAC;AAQ3B;IANC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,sBAAsB;KAChC,CAAC;8BACS,IAAI;6CAAC;AAQhB;IANC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,sBAAsB;KAChC,CAAC;8BACS,IAAI;6CAAC;AAOhB;IALC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,sCAAsC;KAChD,CAAC;;+CACkB;AAGpB;IADC,IAAA,2BAAO,GAAE;;6CACe"}
@@ -1,4 +0,0 @@
1
- import { TransitionPayloadInterface } from "@loopstack/shared";
2
- export declare class RunProjectPayloadDto {
3
- transition?: TransitionPayloadInterface;
4
- }
@@ -1,24 +0,0 @@
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.RunProjectPayloadDto = void 0;
13
- const class_validator_1 = require("class-validator");
14
- const swagger_1 = require("@nestjs/swagger");
15
- class RunProjectPayloadDto {
16
- transition;
17
- }
18
- exports.RunProjectPayloadDto = RunProjectPayloadDto;
19
- __decorate([
20
- (0, class_validator_1.IsOptional)(),
21
- (0, swagger_1.ApiPropertyOptional)(),
22
- __metadata("design:type", Object)
23
- ], RunProjectPayloadDto.prototype, "transition", void 0);
24
- //# sourceMappingURL=run-project-payload.dto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-project-payload.dto.js","sourceRoot":"","sources":["../../src/dtos/run-project-payload.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA6C;AAC7C,6CAAsD;AAMtD,MAAa,oBAAoB;IAG/B,UAAU,CAA8B;CACzC;AAJD,oDAIC;AADC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,6BAAmB,GAAE;;wDACkB"}
@@ -1,36 +0,0 @@
1
- import { Repository } from 'typeorm';
2
- import { ProjectCreateDto } from '../dtos/project-create.dto';
3
- import { ProjectUpdateDto } from '../dtos/project-update.dto';
4
- import { ConfigService } from '@nestjs/config';
5
- import { ProjectSortByDto } from '../dtos/project-sort-by.dto';
6
- import { ProjectFilterDto } from '../dtos/project-filter.dto';
7
- import { PipelineEntity, WorkspaceEntity } from '@loopstack/shared';
8
- export declare class ProjectApiService {
9
- private workspaceRepository;
10
- private projectRepository;
11
- private configService;
12
- constructor(workspaceRepository: Repository<WorkspaceEntity>, projectRepository: Repository<PipelineEntity>, configService: ConfigService);
13
- findAll(user: string | null, filter: ProjectFilterDto, sortBy: ProjectSortByDto[], pagination: {
14
- page: number | undefined;
15
- limit: number | undefined;
16
- }, search?: {
17
- query: string | undefined;
18
- columns: (keyof WorkspaceEntity)[];
19
- }): Promise<{
20
- data: PipelineEntity[];
21
- total: number;
22
- page: number;
23
- limit: number;
24
- }>;
25
- findOneById(id: string, user: string | null): Promise<PipelineEntity>;
26
- create(projectData: ProjectCreateDto, user: string | null): Promise<PipelineEntity>;
27
- update(id: string, projectData: ProjectUpdateDto, user: string | null): Promise<PipelineEntity>;
28
- delete(id: string, user: string | null): Promise<void>;
29
- batchDelete(ids: string[], user: string | null): Promise<{
30
- deleted: string[];
31
- failed: Array<{
32
- id: string;
33
- error: string;
34
- }>;
35
- }>;
36
- }
@@ -1,187 +0,0 @@
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.ProjectApiService = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const typeorm_1 = require("typeorm");
18
- const config_1 = require("@nestjs/config");
19
- const typeorm_2 = require("@nestjs/typeorm");
20
- const shared_1 = require("@loopstack/shared");
21
- let ProjectApiService = class ProjectApiService {
22
- workspaceRepository;
23
- projectRepository;
24
- configService;
25
- constructor(workspaceRepository, projectRepository, configService) {
26
- this.workspaceRepository = workspaceRepository;
27
- this.projectRepository = projectRepository;
28
- this.configService = configService;
29
- }
30
- async findAll(user, filter, sortBy, pagination, search) {
31
- const defaultLimit = this.configService.get('PROJECT_DEFAULT_LIMIT', 100);
32
- const defaultSortBy = this.configService.get('PROJECT_DEFAULT_SORT_BY', []);
33
- const queryBuilder = this.projectRepository.createQueryBuilder('project');
34
- queryBuilder.where({
35
- createdBy: user === null ? (0, typeorm_1.IsNull)() : user,
36
- ...filter,
37
- });
38
- if (search?.query && search.columns?.length > 0) {
39
- const searchConditions = search.columns.map(column => `project.${String(column)} ILIKE :searchQuery`);
40
- queryBuilder.andWhere(`(${searchConditions.join(' OR ')})`, {
41
- searchQuery: `%${search.query}%`,
42
- });
43
- }
44
- const orderBy = (sortBy ?? defaultSortBy).reduce((acc, sort) => {
45
- acc[`project.${sort.field}`] = sort.order;
46
- return acc;
47
- }, {});
48
- if (Object.keys(orderBy).length > 0) {
49
- queryBuilder.orderBy(orderBy);
50
- }
51
- queryBuilder.take(pagination.limit ?? defaultLimit);
52
- queryBuilder.skip(pagination.page && pagination.limit
53
- ? pagination.page * pagination.limit
54
- : 0);
55
- const [data, total] = await queryBuilder.getManyAndCount();
56
- return {
57
- data,
58
- total,
59
- page: pagination.page ?? 1,
60
- limit: pagination.limit ?? defaultLimit,
61
- };
62
- }
63
- async findOneById(id, user) {
64
- const project = await this.projectRepository.findOne({
65
- where: {
66
- id,
67
- createdBy: user === null ? (0, typeorm_1.IsNull)() : user,
68
- },
69
- });
70
- if (!project) {
71
- throw new common_1.NotFoundException(`Project with ID ${id} not found`);
72
- }
73
- return project;
74
- }
75
- async create(projectData, user) {
76
- const workspace = await this.workspaceRepository.findOne({
77
- where: {
78
- id: projectData.workspaceId,
79
- createdBy: user === null ? (0, typeorm_1.IsNull)() : user,
80
- },
81
- });
82
- if (!workspace) {
83
- throw new common_1.NotFoundException(`Workspace with id ${projectData.workspaceId} not found.`);
84
- }
85
- const project = this.projectRepository.create({
86
- ...projectData,
87
- createdBy: user,
88
- workspace,
89
- });
90
- return await this.projectRepository.save(project);
91
- }
92
- async update(id, projectData, user) {
93
- const project = await this.projectRepository.findOne({
94
- where: {
95
- id,
96
- createdBy: user === null ? (0, typeorm_1.IsNull)() : user,
97
- },
98
- });
99
- if (!project)
100
- throw new common_1.NotFoundException(`Project with ID ${id} not found`);
101
- Object.assign(project, projectData);
102
- return await this.projectRepository.save(project);
103
- }
104
- async delete(id, user) {
105
- const project = await this.projectRepository.findOne({
106
- where: {
107
- id,
108
- createdBy: user === null ? (0, typeorm_1.IsNull)() : user,
109
- },
110
- });
111
- if (!project)
112
- throw new common_1.NotFoundException(`Project with ID ${id} not found`);
113
- await this.projectRepository.delete(id);
114
- }
115
- async batchDelete(ids, user) {
116
- const deleted = [];
117
- const failed = [];
118
- if (!ids || ids.length === 0) {
119
- return { deleted, failed };
120
- }
121
- const existingProjects = await this.projectRepository.find({
122
- where: {
123
- id: (0, typeorm_1.In)(ids),
124
- createdBy: user === null ? (0, typeorm_1.IsNull)() : user,
125
- },
126
- select: ['id'],
127
- });
128
- const existingProjectIds = existingProjects.map(project => project.id);
129
- const notFoundIds = ids.filter(id => !existingProjectIds.includes(id));
130
- notFoundIds.forEach(id => {
131
- failed.push({
132
- id,
133
- error: 'Project not found or access denied'
134
- });
135
- });
136
- if (existingProjectIds.length === 0) {
137
- return { deleted, failed };
138
- }
139
- try {
140
- const deleteResult = await this.projectRepository.delete({
141
- id: (0, typeorm_1.In)(existingProjectIds),
142
- createdBy: user === null ? (0, typeorm_1.IsNull)() : user,
143
- });
144
- if (deleteResult.affected === existingProjectIds.length) {
145
- deleted.push(...existingProjectIds);
146
- }
147
- else {
148
- const remainingProjects = await this.projectRepository.find({
149
- where: {
150
- id: (0, typeorm_1.In)(existingProjectIds),
151
- createdBy: user === null ? (0, typeorm_1.IsNull)() : user,
152
- },
153
- select: ['id'],
154
- });
155
- const remainingIds = remainingProjects.map(project => project.id);
156
- const actuallyDeleted = existingProjectIds.filter(id => !remainingIds.includes(id));
157
- const failedToDelete = existingProjectIds.filter(id => remainingIds.includes(id));
158
- deleted.push(...actuallyDeleted);
159
- failedToDelete.forEach(id => {
160
- failed.push({
161
- id,
162
- error: 'Deletion failed - project may be in use or protected'
163
- });
164
- });
165
- }
166
- }
167
- catch (error) {
168
- existingProjectIds.forEach(id => {
169
- failed.push({
170
- id,
171
- error: `Database error: ${error.message}`
172
- });
173
- });
174
- }
175
- return { deleted, failed };
176
- }
177
- };
178
- exports.ProjectApiService = ProjectApiService;
179
- exports.ProjectApiService = ProjectApiService = __decorate([
180
- (0, common_1.Injectable)(),
181
- __param(0, (0, typeorm_2.InjectRepository)(shared_1.WorkspaceEntity)),
182
- __param(1, (0, typeorm_2.InjectRepository)(shared_1.PipelineEntity)),
183
- __metadata("design:paramtypes", [typeorm_1.Repository,
184
- typeorm_1.Repository,
185
- config_1.ConfigService])
186
- ], ProjectApiService);
187
- //# sourceMappingURL=project-api.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-api.service.js","sourceRoot":"","sources":["../../src/services/project-api.service.ts"],"names":[],"mappings":"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"}