@nest-util/nest-crud 1.1.4 → 1.2.1
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/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/lib/controllers/nest-crud.controller.d.ts +11 -0
- package/dist/lib/controllers/nest-crud.controller.d.ts.map +1 -1
- package/dist/lib/controllers/nest-crud.controller.js +113 -0
- package/dist/lib/dtos/request-modification.dto.d.ts +11 -0
- package/dist/lib/dtos/request-modification.dto.d.ts.map +1 -0
- package/dist/lib/dtos/request-modification.dto.js +57 -0
- package/dist/lib/dtos/status-change.dto.d.ts +5 -0
- package/dist/lib/dtos/status-change.dto.d.ts.map +1 -0
- package/dist/lib/dtos/status-change.dto.js +16 -0
- package/dist/lib/entities/approval-status.entity.d.ts +29 -0
- package/dist/lib/entities/approval-status.entity.d.ts.map +1 -0
- package/dist/lib/entities/approval-status.entity.js +72 -0
- package/dist/lib/entities/modification-request-history.entity.d.ts +20 -0
- package/dist/lib/entities/modification-request-history.entity.d.ts.map +1 -0
- package/dist/lib/entities/modification-request-history.entity.js +48 -0
- package/dist/lib/interfaces/approval-pipeline.interface.d.ts +90 -0
- package/dist/lib/interfaces/approval-pipeline.interface.d.ts.map +1 -0
- package/dist/lib/interfaces/approval-pipeline.interface.js +20 -0
- package/dist/lib/interfaces/crud.interface.d.ts +12 -1
- package/dist/lib/interfaces/crud.interface.d.ts.map +1 -1
- package/dist/lib/interfaces/status-pipeline.interface.d.ts +63 -0
- package/dist/lib/interfaces/status-pipeline.interface.d.ts.map +1 -0
- package/dist/lib/interfaces/status-pipeline.interface.js +2 -0
- package/dist/lib/nest-crud.module.d.ts.map +1 -1
- package/dist/lib/nest-crud.module.js +9 -1
- package/dist/lib/services/nest-crud.service.d.ts +44 -0
- package/dist/lib/services/nest-crud.service.d.ts.map +1 -1
- package/dist/lib/services/nest-crud.service.js +345 -1
- package/dist/lib/testing/crud-controller.test-suites.d.ts.map +1 -1
- package/dist/lib/testing/crud-controller.test-suites.js +15 -0
- package/dist/lib/testing/mock-repository.d.ts.map +1 -1
- package/dist/lib/testing/mock-repository.js +2 -0
- package/dist/lib/testing/testing.interface.d.ts +2 -1
- package/dist/lib/testing/testing.interface.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,9 @@ import { FilterDto } from '../dtos/filter.dto';
|
|
|
2
2
|
import { PaginationDto } from '../dtos/pagination.dto';
|
|
3
3
|
import { CursorPaginationDto } from '../dtos/cursor-pagination.dto';
|
|
4
4
|
import { OwnershipUser } from './find-mine.interface';
|
|
5
|
-
|
|
5
|
+
import { StatusValue } from './status-pipeline.interface';
|
|
6
|
+
import { ApprovalHistoryView, ApprovalStatusView, RequestModificationPayload } from './approval-pipeline.interface';
|
|
7
|
+
export type CrudEndpoint = 'findAll' | 'findOne' | 'create' | 'update' | 'changeStatus' | 'remove' | 'findAuditLogs' | 'findMine' | 'getApproval' | 'approveApproval' | 'rejectApproval' | 'requestModification' | 'resubmitApproval';
|
|
6
8
|
export interface AuditLogQuery {
|
|
7
9
|
user_id?: string;
|
|
8
10
|
start_date?: string;
|
|
@@ -29,11 +31,20 @@ export interface CrudInterface<CreateDto, UpdateDto, ResponseDto> {
|
|
|
29
31
|
findOne(id: number, user?: OwnershipUser): Promise<ResponseDto>;
|
|
30
32
|
create(dto: CreateDto, user?: OwnershipUser): Promise<ResponseDto>;
|
|
31
33
|
update(id: number, dto: UpdateDto, user?: OwnershipUser): Promise<ResponseDto>;
|
|
34
|
+
changeStatus?(id: number, status: StatusValue, user?: OwnershipUser): Promise<ResponseDto>;
|
|
32
35
|
remove(id: number, user?: OwnershipUser): Promise<boolean>;
|
|
33
36
|
findAuditLogs?(query: AuditLogQuery): Promise<unknown>;
|
|
34
37
|
findMine?(userId: string | number, query: PaginationDto & FilterDto): Promise<{
|
|
35
38
|
data: ResponseDto[];
|
|
36
39
|
meta?: unknown;
|
|
37
40
|
}>;
|
|
41
|
+
getApproval?(id: number, user?: OwnershipUser): Promise<{
|
|
42
|
+
approval: ApprovalStatusView;
|
|
43
|
+
history: ApprovalHistoryView[];
|
|
44
|
+
}>;
|
|
45
|
+
approveApproval?(id: number, user?: OwnershipUser): Promise<ApprovalStatusView>;
|
|
46
|
+
rejectApproval?(id: number, user?: OwnershipUser): Promise<ApprovalStatusView>;
|
|
47
|
+
requestModification?(id: number, dto: RequestModificationPayload, user?: OwnershipUser): Promise<ApprovalStatusView>;
|
|
48
|
+
resubmitApproval?(id: number, user?: OwnershipUser): Promise<ApprovalStatusView>;
|
|
38
49
|
}
|
|
39
50
|
//# sourceMappingURL=crud.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/crud.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"crud.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/crud.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { OwnershipUser } from './find-mine.interface';
|
|
2
|
+
export type StatusValue = string | number;
|
|
3
|
+
/**
|
|
4
|
+
* Context passed to a status transition action. The transition has already
|
|
5
|
+
* been validated and persisted (`entity` reflects the new status) when the
|
|
6
|
+
* action runs.
|
|
7
|
+
*/
|
|
8
|
+
export interface StatusTransitionContext<TEntity extends Record<string, unknown>> {
|
|
9
|
+
id: number;
|
|
10
|
+
entity: TEntity;
|
|
11
|
+
from: StatusValue;
|
|
12
|
+
to: StatusValue;
|
|
13
|
+
user?: OwnershipUser;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Callback that runs after a status transition is saved. May be async and is
|
|
17
|
+
* awaited. Edge actions run before the pipeline-level `onTransition`.
|
|
18
|
+
*/
|
|
19
|
+
export type StatusTransitionAction<TEntity extends Record<string, unknown>> = (context: StatusTransitionContext<TEntity>) => void | Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* A single allowed transition edge. When `permission` is set, the caller must
|
|
22
|
+
* have that permission in their resolved permissions to perform the
|
|
23
|
+
* transition. When `action` is set, it runs after the transition is saved.
|
|
24
|
+
*/
|
|
25
|
+
export interface StatusTransitionEdge<TEntity extends Record<string, unknown>> {
|
|
26
|
+
from: StatusValue;
|
|
27
|
+
to: readonly StatusValue[];
|
|
28
|
+
permission?: string;
|
|
29
|
+
action?: StatusTransitionAction<TEntity>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Allowed status transitions, provided either as a simple map
|
|
33
|
+
* ({ pending: ['approved', 'rejected'] }) or as an array of edges that can
|
|
34
|
+
* optionally carry per-transition permissions and actions.
|
|
35
|
+
*/
|
|
36
|
+
export type StatusTransitions<TEntity extends Record<string, unknown>> = Record<StatusValue, readonly StatusValue[]> | readonly StatusTransitionEdge<TEntity>[];
|
|
37
|
+
export interface StatusPipelineConfig<TEntity extends Record<string, unknown>> {
|
|
38
|
+
/**
|
|
39
|
+
* The column on the entity that holds the status value, e.g. 'status'.
|
|
40
|
+
*/
|
|
41
|
+
field: keyof TEntity;
|
|
42
|
+
/**
|
|
43
|
+
* Directed graph of allowed transitions. A transition not listed here is
|
|
44
|
+
* rejected. This covers both upgrades (pending -> approved) and controlled
|
|
45
|
+
* downgrades (approved -> pending) — only explicitly allowed moves pass.
|
|
46
|
+
*/
|
|
47
|
+
transitions: StatusTransitions<TEntity>;
|
|
48
|
+
/**
|
|
49
|
+
* Status applied on create when the payload omits the status field.
|
|
50
|
+
*/
|
|
51
|
+
initial?: StatusValue;
|
|
52
|
+
/**
|
|
53
|
+
* Statuses a create payload may set directly. Defaults to [initial].
|
|
54
|
+
*/
|
|
55
|
+
allowCreateStatuses?: readonly StatusValue[];
|
|
56
|
+
/**
|
|
57
|
+
* Global action that runs after every successful status transition, after
|
|
58
|
+
* any edge-specific `action`. Useful for cross-cutting concerns such as
|
|
59
|
+
* audit logging of every transition.
|
|
60
|
+
*/
|
|
61
|
+
onTransition?: StatusTransitionAction<TEntity>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=status-pipeline.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-pipeline.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/status-pipeline.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,WAAW,CAAC;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAC5E,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,KACtC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3E,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,SAAS,WAAW,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACjE,MAAM,CAAC,WAAW,EAAE,SAAS,WAAW,EAAE,CAAC,GAC3C,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;AAE7C,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3E;;OAEG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC;IAErB;;;;OAIG;IACH,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAExC;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;OAEG;IACH,mBAAmB,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAE7C;;;;OAIG;IACH,YAAY,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;CAChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nest-crud.module.d.ts","sourceRoot":"","sources":["../../src/lib/nest-crud.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nest-crud.module.d.ts","sourceRoot":"","sources":["../../src/lib/nest-crud.module.ts"],"names":[],"mappings":"AAOA,qBAWa,cAAc;CAAG"}
|
|
@@ -5,13 +5,21 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
6
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
7
7
|
const audit_log_entity_1 = require("./entities/audit-log.entity");
|
|
8
|
+
const approval_status_entity_1 = require("./entities/approval-status.entity");
|
|
9
|
+
const modification_request_history_entity_1 = require("./entities/modification-request-history.entity");
|
|
8
10
|
const audit_log_service_1 = require("./services/audit-log.service");
|
|
9
11
|
let NestCrudModule = class NestCrudModule {
|
|
10
12
|
};
|
|
11
13
|
exports.NestCrudModule = NestCrudModule;
|
|
12
14
|
exports.NestCrudModule = NestCrudModule = tslib_1.__decorate([
|
|
13
15
|
(0, common_1.Module)({
|
|
14
|
-
imports: [
|
|
16
|
+
imports: [
|
|
17
|
+
typeorm_1.TypeOrmModule.forFeature([
|
|
18
|
+
audit_log_entity_1.AuditLogEntity,
|
|
19
|
+
approval_status_entity_1.ApprovalStatusEntity,
|
|
20
|
+
modification_request_history_entity_1.ModificationRequestHistoryEntity,
|
|
21
|
+
]),
|
|
22
|
+
],
|
|
15
23
|
providers: [audit_log_service_1.AuditService],
|
|
16
24
|
exports: [audit_log_service_1.AuditService],
|
|
17
25
|
})
|
|
@@ -8,6 +8,8 @@ import { CrudEndpoint, CrudInterface, CursorPaginationResult } from '../interfac
|
|
|
8
8
|
import { CursorStrategy } from '../interfaces/cursor-strategy.interface';
|
|
9
9
|
import { CrudHooks, TransactionConfig } from '../interfaces/hooks.interface';
|
|
10
10
|
import { FindMineConfig, OwnershipUser } from '../interfaces/find-mine.interface';
|
|
11
|
+
import { StatusPipelineConfig, StatusTransitionAction, StatusValue } from '../interfaces/status-pipeline.interface';
|
|
12
|
+
import { ApprovalPipelineConfig, ApprovalStatusView, ApprovalHistoryView, RequestModificationPayload } from '../interfaces/approval-pipeline.interface';
|
|
11
13
|
export interface CrudServiceOptions<Entity extends ObjectLiteral, ResponseDto> extends FindMineConfig<Entity> {
|
|
12
14
|
repository: Repository<Entity>;
|
|
13
15
|
allowedFilters?: readonly (keyof Entity | (string & {}))[];
|
|
@@ -25,6 +27,8 @@ export interface CrudServiceOptions<Entity extends ObjectLiteral, ResponseDto> e
|
|
|
25
27
|
cursorStrategy?: CursorStrategy;
|
|
26
28
|
hooks?: CrudHooks<Entity, any, any>;
|
|
27
29
|
transactionConfig?: TransactionConfig;
|
|
30
|
+
statusPipeline?: StatusPipelineConfig<Entity>;
|
|
31
|
+
approvalPipeline?: ApprovalPipelineConfig;
|
|
28
32
|
}
|
|
29
33
|
export declare class NestCrudService<Entity extends ObjectLiteral, CreateDto = Partial<Entity>, UpdateDto = Partial<Entity>, ResponseDto = Entity> implements CrudInterface<CreateDto, UpdateDto, ResponseDto> {
|
|
30
34
|
protected readonly repo: Repository<Entity>;
|
|
@@ -49,7 +53,18 @@ export declare class NestCrudService<Entity extends ObjectLiteral, CreateDto = P
|
|
|
49
53
|
protected readonly ownershipBypassPermissions: readonly string[];
|
|
50
54
|
protected readonly ownershipBypass?: (user: OwnershipUser) => boolean;
|
|
51
55
|
protected readonly superAdminPermission?: string;
|
|
56
|
+
protected readonly statusField?: keyof Entity;
|
|
57
|
+
protected readonly statusInitial?: StatusValue;
|
|
58
|
+
protected readonly statusCreateAllow: readonly StatusValue[];
|
|
59
|
+
protected readonly statusOnTransition?: StatusTransitionAction<Entity>;
|
|
60
|
+
protected readonly statusTransitions: Map<StatusValue, {
|
|
61
|
+
to: Set<StatusValue>;
|
|
62
|
+
permission?: string;
|
|
63
|
+
action?: StatusTransitionAction<Entity>;
|
|
64
|
+
}>;
|
|
65
|
+
protected readonly approvalPipeline?: ApprovalPipelineConfig;
|
|
52
66
|
constructor(options: CrudServiceOptions<Entity, ResponseDto>);
|
|
67
|
+
private normalizeStatusTransitions;
|
|
53
68
|
private resolveRelations;
|
|
54
69
|
private executeInTransaction;
|
|
55
70
|
private executeHook;
|
|
@@ -62,6 +77,11 @@ export declare class NestCrudService<Entity extends ObjectLiteral, CreateDto = P
|
|
|
62
77
|
private enforceOwnershipFor;
|
|
63
78
|
private applyOwnershipCondition;
|
|
64
79
|
private findOwnedEntity;
|
|
80
|
+
private isStatusPipelineConfigured;
|
|
81
|
+
private applyInitialStatus;
|
|
82
|
+
private validateStatusTransition;
|
|
83
|
+
private runTransitionActions;
|
|
84
|
+
private canBypassOwnershipForTransition;
|
|
65
85
|
findAll(query: PaginationDto & FilterDto): Promise<{
|
|
66
86
|
data: ResponseDto[];
|
|
67
87
|
meta: {
|
|
@@ -81,6 +101,30 @@ export declare class NestCrudService<Entity extends ObjectLiteral, CreateDto = P
|
|
|
81
101
|
findOne(id: number, user?: OwnershipUser): Promise<ResponseDto>;
|
|
82
102
|
create(payload: CreateDto, user?: OwnershipUser): Promise<ResponseDto>;
|
|
83
103
|
update(id: number, payload: UpdateDto, user?: OwnershipUser): Promise<ResponseDto>;
|
|
104
|
+
changeStatus(id: number, status: StatusValue, user?: OwnershipUser): Promise<ResponseDto>;
|
|
105
|
+
getApproval(id: number, user?: OwnershipUser): Promise<{
|
|
106
|
+
approval: ApprovalStatusView;
|
|
107
|
+
history: ApprovalHistoryView[];
|
|
108
|
+
}>;
|
|
109
|
+
approveApproval(id: number, user?: OwnershipUser): Promise<ApprovalStatusView>;
|
|
110
|
+
rejectApproval(id: number, user?: OwnershipUser): Promise<ApprovalStatusView>;
|
|
111
|
+
requestModification(id: number, payload: RequestModificationPayload, user?: OwnershipUser): Promise<ApprovalStatusView>;
|
|
112
|
+
resubmitApproval(id: number, user?: OwnershipUser): Promise<ApprovalStatusView>;
|
|
113
|
+
private isApprovalPipelineConfigured;
|
|
114
|
+
private hasApprovalVisibilityFilter;
|
|
115
|
+
private getApprovalRepository;
|
|
116
|
+
private getHistoryRepository;
|
|
117
|
+
private createWithApproval;
|
|
118
|
+
private resolveEntityForApproval;
|
|
119
|
+
private loadApprovalStatus;
|
|
120
|
+
private transitionApproval;
|
|
121
|
+
private assertTransitionAllowed;
|
|
122
|
+
private userHasPermission;
|
|
123
|
+
private applyApprovalVisibility;
|
|
124
|
+
private approvalIdCastExpression;
|
|
125
|
+
private toApprovalStatusView;
|
|
126
|
+
private toApprovalHistoryView;
|
|
127
|
+
private applyUpdateCore;
|
|
84
128
|
remove(id: number, user?: OwnershipUser): Promise<boolean>;
|
|
85
129
|
findAuditLogs(query: {
|
|
86
130
|
user_id?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nest-crud.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/nest-crud.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0E,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,EAAe,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAkB,SAAS,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"nest-crud.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/nest-crud.service.ts"],"names":[],"mappings":"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"}
|