@codex-ts/core-lib 1.1.5 → 2.0.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/README.md +362 -33
- package/fesm2022/codex-ts-core-lib.mjs +4357 -2708
- package/fesm2022/codex-ts-core-lib.mjs.map +1 -1
- package/lib/components/base-form.component.d.ts +3 -4
- package/lib/components/base-page.component.d.ts +2 -1
- package/lib/components/base-tabbed-form.component.d.ts +3 -4
- package/lib/components/base-table.component.d.ts +1 -0
- package/lib/components/base-task-dashboard.component.d.ts +21 -15
- package/lib/components/base-task-details.component.d.ts +4 -5
- package/lib/components/formly/field.interface.d.ts +34 -0
- package/lib/components/formly/form-field.wrapper.d.ts +6 -6
- package/lib/components/formly/formly.constants.d.ts +1 -0
- package/lib/components/formly/primeng-formly.module.d.ts +19 -0
- package/lib/components/formly/types/file-upload.type.d.ts +58 -0
- package/lib/components/formly/types/radio.type.d.ts +5 -0
- package/lib/components/formly/types/text-input.type.d.ts +10 -1
- package/lib/components/keycloak-error-banner/keycloak-error-page.component.d.ts +6 -0
- package/lib/components/not-found/not-found.component.d.ts +11 -0
- package/lib/components/unauthorized/unauthorized.component.d.ts +12 -0
- package/lib/keycloak/keycloak-service.token.d.ts +3 -0
- package/lib/keycloak/keycloak.guard.d.ts +1 -1
- package/lib/keycloak/keycloak.interface.d.ts +21 -0
- package/lib/keycloak/keycloak.service.d.ts +24 -3
- package/lib/models/base-task.model.d.ts +6 -4
- package/lib/models/base.comment.model.d.ts +5 -0
- package/lib/models/base.entity.model.d.ts +39 -0
- package/lib/models/base.model.d.ts +0 -44
- package/lib/models/department.interface.d.ts +4 -0
- package/lib/models/pagination/filter-criteria.interface.d.ts +3 -0
- package/lib/models/pagination/table-column-datatype.enum.d.ts +6 -0
- package/lib/models/reference-dto.interface.d.ts +5 -0
- package/lib/models/workflow.model.d.ts +27 -0
- package/lib/services/base-entity.service.d.ts +80 -0
- package/lib/services/base-error.service.d.ts +24 -0
- package/lib/services/base-task.service.d.ts +21 -19
- package/lib/services/entity-registry.service.d.ts +21 -0
- package/lib/services/entity-service.interface.d.ts +22 -0
- package/lib/services/form.service.d.ts +7 -8
- package/lib/services/http-utility.service.d.ts +18 -0
- package/lib/services/master-data-service.interface.d.ts +5 -0
- package/lib/services/task-entity-service.interface.d.ts +24 -0
- package/lib/validators/common-validators.d.ts +61 -0
- package/lib/workflow-engine/workflow-engine-api.service.d.ts +104 -0
- package/lib/workflow-engine/workflow-engine.models.d.ts +236 -0
- package/package.json +2 -2
- package/public-api.d.ts +53 -33
- package/lib/services/base-crud.service.d.ts +0 -36
- package/lib/services/entity.service.d.ts +0 -9
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types mirroring `workflow-engine-lib`'s REST contract (`WorkflowDtos.java`), field-for-field.
|
|
3
|
+
*
|
|
4
|
+
* This is a separate concept from this library's older `Workflow`/`BaseTask` models, which
|
|
5
|
+
* targeted a different, now-removed Java controller (`microservice-starter-lib`'s
|
|
6
|
+
* Spring-State-Machine-based `BaseWorkflowController`/`BaseTaskController`, deleted in favor of
|
|
7
|
+
* `workflow-engine-lib`). See those models' `@deprecated` notices for the distinction.
|
|
8
|
+
*/
|
|
9
|
+
/** Lifecycle state of a task (`domain/task/TaskState.java`). */
|
|
10
|
+
export type TaskState = 'CREATED' | 'ASSIGNED' | 'CLAIMED' | 'STARTED' | 'COMPLETED' | 'REJECTED' | 'CANCELLED';
|
|
11
|
+
/** Queue ordering. */
|
|
12
|
+
export type TaskPriority = 'LOW' | 'NORMAL' | 'HIGH' | 'CRITICAL';
|
|
13
|
+
/** Lifecycle status of a workflow instance (`domain/instance/InstanceStatus.java`). */
|
|
14
|
+
export type InstanceStatus = 'RUNNING' | 'COMPLETED' | 'FAILED' | 'CANCELLED';
|
|
15
|
+
/** How urgently an attribute's value should read. */
|
|
16
|
+
export type Severity = 'critical' | 'warn' | 'ok';
|
|
17
|
+
/** Which queue view to load. */
|
|
18
|
+
export type QueueView = 'my' | 'team' | 'completed' | 'overdue';
|
|
19
|
+
/** The group name whose attributes belong in the queue row rather than a detail panel. */
|
|
20
|
+
export declare const WORKFLOW_PRIMARY_GROUP = "primary";
|
|
21
|
+
/**
|
|
22
|
+
* One display attribute captured on a task when it was raised, or declared on a business object
|
|
23
|
+
* type (`WorkflowDtos.AttributeResponse`). `value` is only ever populated on a task snapshot —
|
|
24
|
+
* declaration-only attributes (e.g. from `BusinessObject.attributes`) always carry `value: null`.
|
|
25
|
+
*/
|
|
26
|
+
export interface WorkflowTaskAttribute {
|
|
27
|
+
key: string;
|
|
28
|
+
label: string;
|
|
29
|
+
value: string | null;
|
|
30
|
+
type: 'TEXT' | 'NUMBER' | 'MONEY' | 'DATE' | 'DATETIME' | 'BOOLEAN' | 'ENUM';
|
|
31
|
+
group: string;
|
|
32
|
+
order: number;
|
|
33
|
+
severity: Severity | null;
|
|
34
|
+
}
|
|
35
|
+
/** A unit of work (`WorkflowDtos.TaskResponse`). */
|
|
36
|
+
export interface WorkflowTask {
|
|
37
|
+
id: string;
|
|
38
|
+
instanceId: string;
|
|
39
|
+
nodeKey: string;
|
|
40
|
+
type: 'HUMAN' | 'SYSTEM';
|
|
41
|
+
state: TaskState;
|
|
42
|
+
name: string;
|
|
43
|
+
formKey: string | null;
|
|
44
|
+
assigneeType: string | null;
|
|
45
|
+
assignee: string | null;
|
|
46
|
+
claimedBy: string | null;
|
|
47
|
+
priority: TaskPriority;
|
|
48
|
+
dueDate: string | null;
|
|
49
|
+
slaMinutes: number | null;
|
|
50
|
+
outcome: string | null;
|
|
51
|
+
createdAt: string;
|
|
52
|
+
claimedAt: string | null;
|
|
53
|
+
startedAt: string | null;
|
|
54
|
+
completedAt: string | null;
|
|
55
|
+
completedBy: string | null;
|
|
56
|
+
definitionKey: string | null;
|
|
57
|
+
category: string | null;
|
|
58
|
+
subject: string | null;
|
|
59
|
+
businessObject: string | null;
|
|
60
|
+
businessKey: string | null;
|
|
61
|
+
/** Worst severity across all attributes, for a single row-level indicator. */
|
|
62
|
+
severity: Severity | null;
|
|
63
|
+
attributes: WorkflowTaskAttribute[];
|
|
64
|
+
}
|
|
65
|
+
/** One execution of a workflow (`WorkflowDtos.InstanceResponse`). */
|
|
66
|
+
export interface WorkflowInstance {
|
|
67
|
+
id: string;
|
|
68
|
+
definitionKey: string;
|
|
69
|
+
versionNumber: number;
|
|
70
|
+
businessKey: string | null;
|
|
71
|
+
status: InstanceStatus;
|
|
72
|
+
currentNodeKey: string | null;
|
|
73
|
+
variables: Record<string, unknown>;
|
|
74
|
+
startedBy: string | null;
|
|
75
|
+
startedAt: string;
|
|
76
|
+
completedAt: string | null;
|
|
77
|
+
failureReason: string | null;
|
|
78
|
+
}
|
|
79
|
+
/** One entry in the audit trail (`WorkflowDtos.AuditResponse`). */
|
|
80
|
+
export interface WorkflowAuditEntry {
|
|
81
|
+
id: string;
|
|
82
|
+
instanceId: string;
|
|
83
|
+
taskId: string | null;
|
|
84
|
+
nodeKey: string | null;
|
|
85
|
+
action: string;
|
|
86
|
+
actor: string | null;
|
|
87
|
+
occurredAt: string;
|
|
88
|
+
detail: Record<string, unknown>;
|
|
89
|
+
}
|
|
90
|
+
/** A workflow definition (`WorkflowDtos.DefinitionResponse`). */
|
|
91
|
+
export interface WorkflowDefinitionSummary {
|
|
92
|
+
id: string;
|
|
93
|
+
key: string;
|
|
94
|
+
name: string;
|
|
95
|
+
description: string | null;
|
|
96
|
+
category: string | null;
|
|
97
|
+
businessObject: string | null;
|
|
98
|
+
}
|
|
99
|
+
/** One deployed version of a workflow, without its authored document (`WorkflowDtos.VersionResponse`). */
|
|
100
|
+
export interface WorkflowVersionSummary {
|
|
101
|
+
id: string;
|
|
102
|
+
definitionKey: string;
|
|
103
|
+
versionNumber: number;
|
|
104
|
+
status: string;
|
|
105
|
+
nodeCount: number;
|
|
106
|
+
deployedBy: string | null;
|
|
107
|
+
deployedAt: string;
|
|
108
|
+
}
|
|
109
|
+
/** One deployed version of a workflow, including its authored document (`WorkflowDtos.VersionDetailResponse`). */
|
|
110
|
+
export interface WorkflowVersionDetail {
|
|
111
|
+
id: string;
|
|
112
|
+
definitionKey: string;
|
|
113
|
+
versionNumber: number;
|
|
114
|
+
status: string;
|
|
115
|
+
definition: string;
|
|
116
|
+
deployedBy: string | null;
|
|
117
|
+
deployedAt: string;
|
|
118
|
+
}
|
|
119
|
+
/** A registered business object type (`WorkflowDtos.BusinessObjectResponse`). */
|
|
120
|
+
export interface BusinessObject {
|
|
121
|
+
id: string;
|
|
122
|
+
code: string;
|
|
123
|
+
name: string;
|
|
124
|
+
description: string | null;
|
|
125
|
+
category: string | null;
|
|
126
|
+
keyLabel: string;
|
|
127
|
+
active: boolean;
|
|
128
|
+
attributes: WorkflowTaskAttribute[];
|
|
129
|
+
workflows: string[];
|
|
130
|
+
}
|
|
131
|
+
/** A registered form under a business object (`WorkflowDtos.FormResponse`). */
|
|
132
|
+
export interface WorkflowForm {
|
|
133
|
+
id: string;
|
|
134
|
+
businessObject: string | null;
|
|
135
|
+
formKey: string;
|
|
136
|
+
name: string;
|
|
137
|
+
version: number;
|
|
138
|
+
schema: string | null;
|
|
139
|
+
active: boolean;
|
|
140
|
+
createdBy: string | null;
|
|
141
|
+
createdAt: string;
|
|
142
|
+
}
|
|
143
|
+
/** A page of results, as returned by the engine's queue endpoints (`WorkflowDtos.PageResponse`). */
|
|
144
|
+
export interface WorkflowPage<T> {
|
|
145
|
+
content: T[];
|
|
146
|
+
pageNumber: number;
|
|
147
|
+
pageSize: number;
|
|
148
|
+
totalElements: number;
|
|
149
|
+
totalPages: number;
|
|
150
|
+
}
|
|
151
|
+
/** An engine error response (`WorkflowDtos.ErrorResponse`). */
|
|
152
|
+
export interface WorkflowErrorResponse {
|
|
153
|
+
error: string;
|
|
154
|
+
message: string;
|
|
155
|
+
timestamp: string;
|
|
156
|
+
}
|
|
157
|
+
/** Request body for deploying a workflow definition. */
|
|
158
|
+
export interface DeployWorkflowRequest {
|
|
159
|
+
key: string;
|
|
160
|
+
name?: string;
|
|
161
|
+
description?: string;
|
|
162
|
+
category?: string;
|
|
163
|
+
definition: string;
|
|
164
|
+
businessObject?: string;
|
|
165
|
+
activate?: boolean;
|
|
166
|
+
}
|
|
167
|
+
/** Request body for starting a new instance. */
|
|
168
|
+
export interface StartInstanceRequest {
|
|
169
|
+
definitionKey: string;
|
|
170
|
+
versionNumber?: number;
|
|
171
|
+
businessKey?: string;
|
|
172
|
+
variables?: Record<string, unknown>;
|
|
173
|
+
}
|
|
174
|
+
/** Request body for completing or rejecting a task. */
|
|
175
|
+
export interface CompleteTaskRequest {
|
|
176
|
+
outcome?: string;
|
|
177
|
+
variables?: Record<string, unknown>;
|
|
178
|
+
comment?: string;
|
|
179
|
+
}
|
|
180
|
+
/** Request body for reassigning a task. */
|
|
181
|
+
export interface ReassignTaskRequest {
|
|
182
|
+
assigneeType: string;
|
|
183
|
+
assignee: string;
|
|
184
|
+
}
|
|
185
|
+
/** Request body for cancelling an instance. */
|
|
186
|
+
export interface CancelInstanceRequest {
|
|
187
|
+
reason?: string;
|
|
188
|
+
}
|
|
189
|
+
/** Request body for signalling an external event to an instance. */
|
|
190
|
+
export interface SignalEventRequest {
|
|
191
|
+
eventName: string;
|
|
192
|
+
variables?: Record<string, unknown>;
|
|
193
|
+
}
|
|
194
|
+
/** Request body for setting instance variables directly. */
|
|
195
|
+
export interface SetVariablesRequest {
|
|
196
|
+
variables?: Record<string, unknown>;
|
|
197
|
+
}
|
|
198
|
+
/** Search criteria for `POST /workflow/queue/search`. */
|
|
199
|
+
export interface QueueSearchCriteria {
|
|
200
|
+
definitionKey?: string;
|
|
201
|
+
nodeKey?: string;
|
|
202
|
+
claimedBy?: string;
|
|
203
|
+
searchText?: string;
|
|
204
|
+
/** ISO instant. */
|
|
205
|
+
dueBefore?: string;
|
|
206
|
+
minPriority?: TaskPriority;
|
|
207
|
+
states?: TaskState[];
|
|
208
|
+
types?: Array<'HUMAN' | 'SYSTEM'>;
|
|
209
|
+
assignees?: string[];
|
|
210
|
+
}
|
|
211
|
+
/** One declared attribute in a business-object registration request. */
|
|
212
|
+
export interface RegisterAttributeRequest {
|
|
213
|
+
key: string;
|
|
214
|
+
label?: string;
|
|
215
|
+
type?: string;
|
|
216
|
+
group?: string;
|
|
217
|
+
order?: number;
|
|
218
|
+
valueTemplate?: string;
|
|
219
|
+
severityExpression?: string;
|
|
220
|
+
}
|
|
221
|
+
/** Request body for registering a business object type. */
|
|
222
|
+
export interface RegisterBusinessObjectRequest {
|
|
223
|
+
code: string;
|
|
224
|
+
name?: string;
|
|
225
|
+
description?: string;
|
|
226
|
+
category?: string;
|
|
227
|
+
keyLabel?: string;
|
|
228
|
+
attributes?: RegisterAttributeRequest[];
|
|
229
|
+
}
|
|
230
|
+
/** Request body for registering a form under a business object. */
|
|
231
|
+
export interface RegisterFormRequest {
|
|
232
|
+
formKey: string;
|
|
233
|
+
name?: string;
|
|
234
|
+
schema?: string;
|
|
235
|
+
activate?: boolean;
|
|
236
|
+
}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -1,40 +1,60 @@
|
|
|
1
|
-
export * from './lib/
|
|
2
|
-
export * from './lib/
|
|
3
|
-
export * from './lib/
|
|
4
|
-
export * from './lib/
|
|
5
|
-
export * from './lib/
|
|
1
|
+
export * from './lib/components/base-form.component';
|
|
2
|
+
export * from './lib/components/base-list-page.component';
|
|
3
|
+
export * from './lib/components/base-list-tabbed-form.component';
|
|
4
|
+
export * from './lib/components/base-page.component';
|
|
5
|
+
export * from './lib/components/base-tabbed-form.component';
|
|
6
|
+
export * from './lib/components/base-table.component';
|
|
7
|
+
export * from './lib/components/base-task-dashboard.component';
|
|
8
|
+
export * from './lib/components/base-task-details.component';
|
|
9
|
+
export * from './lib/keycloak/keycloak-config.interface';
|
|
10
|
+
export * from './lib/keycloak/keycloak.interface';
|
|
11
|
+
export * from './lib/keycloak/keycloak-service.token';
|
|
12
|
+
export * from './lib/keycloak/keycloak.guard';
|
|
13
|
+
export * from './lib/keycloak/keycloak.providers';
|
|
14
|
+
export * from './lib/keycloak/keycloak.service';
|
|
15
|
+
export * from './lib/keycloak/keycloak.token';
|
|
16
|
+
export * from './lib/models/department.interface';
|
|
17
|
+
export * from './lib/services/master-data-service.interface';
|
|
18
|
+
export * from './lib/services/base-error.service';
|
|
19
|
+
export * from './lib/services/base-entity.service';
|
|
20
|
+
export * from './lib/services/base-task.service';
|
|
21
|
+
export * from './lib/services/entity-service.interface';
|
|
22
|
+
export * from './lib/services/task-entity-service.interface';
|
|
23
|
+
export * from './lib/services/entity-service.interface';
|
|
24
|
+
export * from './lib/services/entity-registry.service';
|
|
25
|
+
export * from './lib/services/enum-registry.service';
|
|
26
|
+
export * from './lib/services/form.service';
|
|
27
|
+
export * from './lib/services/formly-config.service';
|
|
28
|
+
export * from './lib/services/http-utility.service';
|
|
29
|
+
export * from './lib/services/notification.service';
|
|
30
|
+
export * from './lib/services/reference-data-provider.service';
|
|
31
|
+
export * from './lib/services/utils.service';
|
|
32
|
+
export * from './lib/pipes/indian-date.pipe';
|
|
6
33
|
export * from './lib/models/base.model';
|
|
7
|
-
export * from './lib/models/base-task.model';
|
|
8
34
|
export * from './lib/models/base-request.model';
|
|
9
35
|
export * from './lib/models/base-response.model';
|
|
36
|
+
export * from './lib/models/base-task.model';
|
|
37
|
+
export * from './lib/models/base.comment.model';
|
|
10
38
|
export * from './lib/models/base-create-request.model';
|
|
11
39
|
export * from './lib/models/base-update-request.model';
|
|
12
|
-
export * from './lib/models/pagination/
|
|
40
|
+
export * from './lib/models/pagination/filter-criteria.interface';
|
|
41
|
+
export * from './lib/models/pagination/table-column-datatype.enum';
|
|
13
42
|
export * from './lib/models/pagination/page-request.interface';
|
|
14
|
-
export
|
|
15
|
-
export * from './lib/
|
|
16
|
-
export * from './lib/
|
|
17
|
-
export
|
|
18
|
-
export
|
|
19
|
-
export * from './lib/
|
|
20
|
-
export * from './lib/
|
|
21
|
-
export * from './lib/services/notification.service';
|
|
22
|
-
export * from './lib/services/entity.service';
|
|
23
|
-
export * from './lib/services/base-crud.service';
|
|
24
|
-
export * from './lib/services/base-task.service';
|
|
25
|
-
export * from './lib/services/formly-config.service';
|
|
26
|
-
export * from './lib/services/form.service';
|
|
43
|
+
export * from './lib/models/pagination/page.interface';
|
|
44
|
+
export * from './lib/models/pagination/sort-criteria.interface';
|
|
45
|
+
export * from './lib/enums/component-context.enum';
|
|
46
|
+
export * from './lib/enums/tabbed-form-type.enum';
|
|
47
|
+
export * from './lib/enums/task-role.enum';
|
|
48
|
+
export * from './lib/constants/app.constants';
|
|
49
|
+
export * from './lib/constants/app.messages';
|
|
27
50
|
export * from './lib/components/formly/core-formly.module';
|
|
28
|
-
export * from './lib/components/
|
|
29
|
-
export * from './lib/components/
|
|
30
|
-
export * from './lib/components/
|
|
31
|
-
export * from './lib/components/
|
|
32
|
-
export * from './lib/
|
|
33
|
-
export * from './lib/components/
|
|
34
|
-
export * from './lib/components/
|
|
35
|
-
export * from './lib/
|
|
36
|
-
export * from './lib/
|
|
37
|
-
export * from './lib/
|
|
38
|
-
export * from './lib/states/list-tabbed-form.state';
|
|
39
|
-
export * from './lib/services/reference-data-provider.service';
|
|
40
|
-
export * from './lib/pipes/indian-date.pipe';
|
|
51
|
+
export * from './lib/components/formly/field.interface';
|
|
52
|
+
export * from './lib/components/formly/form-field.wrapper';
|
|
53
|
+
export * from './lib/components/formly/formly.constants';
|
|
54
|
+
export * from './lib/components/formly/primeng-formly.module';
|
|
55
|
+
export * from './lib/validators/common-validators';
|
|
56
|
+
export * from './lib/components/keycloak-error-banner/keycloak-error-page.component';
|
|
57
|
+
export * from './lib/components/not-found/not-found.component';
|
|
58
|
+
export * from './lib/components/unauthorized/unauthorized.component';
|
|
59
|
+
export * from './lib/workflow-engine/workflow-engine.models';
|
|
60
|
+
export * from './lib/workflow-engine/workflow-engine-api.service';
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { HttpUtilityService } from './http-utility.service';
|
|
3
|
-
import { UtilsService } from './utils.service';
|
|
4
|
-
import { MessageService } from 'primeng/api';
|
|
5
|
-
import { Page } from '../models/pagination/page.interface';
|
|
6
|
-
import { PageRequest } from '../models/pagination/page-request.interface';
|
|
7
|
-
import { EntityService } from './entity.service';
|
|
8
|
-
export declare abstract class BaseCrudService<T extends {
|
|
9
|
-
uuid: string;
|
|
10
|
-
}> implements EntityService<T> {
|
|
11
|
-
protected httpUtility: HttpUtilityService;
|
|
12
|
-
protected utilsService: UtilsService;
|
|
13
|
-
protected resourcePath: string;
|
|
14
|
-
protected backendBaseUrl: string;
|
|
15
|
-
protected messageService: MessageService | undefined;
|
|
16
|
-
get loading$(): Observable<boolean>;
|
|
17
|
-
protected apiUrl: string;
|
|
18
|
-
/**
|
|
19
|
-
* Creates an instance of BaseCrudService.
|
|
20
|
-
* @param httpUtility - Service for making HTTP requests
|
|
21
|
-
* @param utilsService - Utility service for common operations
|
|
22
|
-
* @param resourcePath - API resource path (e.g., 'customers', 'products')
|
|
23
|
-
* @param backendBaseUrl - Base URL for the backend API
|
|
24
|
-
* @param messageService - Optional service for showing messages
|
|
25
|
-
*/
|
|
26
|
-
protected constructor(httpUtility: HttpUtilityService, utilsService: UtilsService, resourcePath: string, backendBaseUrl: string, messageService: MessageService | undefined);
|
|
27
|
-
/**
|
|
28
|
-
* Joins URL parts ensuring no double slashes
|
|
29
|
-
*/
|
|
30
|
-
private joinUrls;
|
|
31
|
-
getAll(pageRequest?: PageRequest): Observable<Page<T>>;
|
|
32
|
-
getById(uuid: string): Observable<T>;
|
|
33
|
-
create(entity: Omit<T, 'uuid'>): Observable<T>;
|
|
34
|
-
update(uuid: string, entity: Omit<T, 'uuid'>): Observable<T>;
|
|
35
|
-
delete(uuid: string): Observable<void>;
|
|
36
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
/**
|
|
3
|
-
* Interface for basic CRUD operations that all entity services must implement
|
|
4
|
-
*/
|
|
5
|
-
export interface EntityService<T> {
|
|
6
|
-
create(data: Omit<T, 'uuid'>): Observable<T>;
|
|
7
|
-
update(uuid: string, data: Omit<T, 'uuid'>): Observable<T>;
|
|
8
|
-
getById(uuid: string): Observable<T>;
|
|
9
|
-
}
|