@critical-path/core 0.28.0 → 0.29.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/CHANGELOG.md +21 -0
- package/README.md +4 -0
- package/dist/domain/events.d.ts +8 -2
- package/dist/domain/events.d.ts.map +1 -1
- package/dist/domain/events.js +1 -0
- package/dist/domain/events.js.map +1 -1
- package/dist/engine/cascade.test.d.ts +2 -0
- package/dist/engine/cascade.test.d.ts.map +1 -0
- package/dist/engine/cascade.test.js +99 -0
- package/dist/engine/cascade.test.js.map +1 -0
- package/dist/engine/index.d.ts +16 -1
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +89 -6
- package/dist/engine/index.js.map +1 -1
- package/dist/schemas/index.d.ts +6 -6
- package/dist/store/firebase.d.ts +8 -0
- package/dist/store/firebase.d.ts.map +1 -1
- package/dist/store/firebase.js +30 -8
- package/dist/store/firebase.js.map +1 -1
- package/dist/store/index.d.ts +7 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +9 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/sqlite.d.ts +3 -0
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +41 -24
- package/dist/store/sqlite.js.map +1 -1
- package/dist/webhooks/webhooks.test.js +2 -1
- package/dist/webhooks/webhooks.test.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/events.ts +7 -0
- package/src/engine/cascade.test.ts +121 -0
- package/src/engine/index.ts +96 -5
- package/src/store/firebase.ts +33 -8
- package/src/store/index.ts +16 -0
- package/src/store/sqlite.ts +56 -31
- package/src/webhooks/webhooks.test.ts +2 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @critical-path/core
|
|
2
2
|
|
|
3
|
+
## 0.29.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- a019d37: Cascading deletes and dependency removal.
|
|
8
|
+
|
|
9
|
+
**@critical-path/core**
|
|
10
|
+
- **BREAKING:** `deleteTask` now also deletes subtasks (recursively), dependencies, comments, attachments (including stored files and comment attachments) and time entries. Pass `{ subtasks: 'detach' }` to keep subtasks.
|
|
11
|
+
- **BREAKING:** `deleteProject` also deletes containers, iterations, deliverables and project attachments. `project.deleted`'s `deletedTaskIds` includes subtasks.
|
|
12
|
+
- Deleting a container, iteration or deliverable clears the reference on its tasks; nested containers are detached.
|
|
13
|
+
- New `engine.removeDependency(id)` and `dependency.removed` event.
|
|
14
|
+
- **BREAKING (storage adapters):** `DependencyRepository` gains `getDependency` and `removeDependency`, and `TimeEntryRepository` gains `deleteTimeEntry`.
|
|
15
|
+
- `SQLiteStore` no longer returns `null` for unset optional fields.
|
|
16
|
+
- `FirebaseStore` updates now remove fields cleared with `undefined` (for example, reopening a completed task now clears `completedAt`).
|
|
17
|
+
|
|
18
|
+
**@critical-path/server**
|
|
19
|
+
- New `DELETE /tasks/:id/dependencies/:dependencyId`. `DELETE /tasks/:id` accepts `?subtasks=detach`.
|
|
20
|
+
|
|
21
|
+
**@critical-path/client**
|
|
22
|
+
- New `removeDependency(taskId, dependencyId)`. `deleteTask(id, { subtasks })`.
|
|
23
|
+
|
|
3
24
|
## 0.28.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -120,6 +120,10 @@ try {
|
|
|
120
120
|
}
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
+
Remove a dependency with `engine.removeDependency(dependencyId)` (publishes `dependency.removed`).
|
|
124
|
+
|
|
125
|
+
Deletes cascade: `deleteTask` removes subtasks (or detaches them with `{ subtasks: 'detach' }`), dependencies, comments, attachments with their stored files, and time entries; `deleteProject` also removes containers, iterations and deliverables; deleting a container, iteration or deliverable clears the reference on its tasks. The activity log is kept as an audit trail.
|
|
126
|
+
|
|
123
127
|
Cycle detection follows the full upstream chain, so indirect cycles (A → B → C → D → A) are rejected as well as direct ones.
|
|
124
128
|
|
|
125
129
|
#### Request Payload Schemas (`@critical-path/core/schemas`)
|
package/dist/domain/events.d.ts
CHANGED
|
@@ -147,6 +147,12 @@ export interface TaskDependencyAddedEvent extends DomainEvent<{
|
|
|
147
147
|
readonly name: 'dependency.added';
|
|
148
148
|
readonly aggregateType: 'Dependency';
|
|
149
149
|
}
|
|
150
|
+
export interface TaskDependencyRemovedEvent extends DomainEvent<{
|
|
151
|
+
dependency: TaskDependency;
|
|
152
|
+
}> {
|
|
153
|
+
readonly name: 'dependency.removed';
|
|
154
|
+
readonly aggregateType: 'Dependency';
|
|
155
|
+
}
|
|
150
156
|
export interface ProjectCreatedEvent extends DomainEvent<{
|
|
151
157
|
project: Project;
|
|
152
158
|
}> {
|
|
@@ -242,7 +248,7 @@ export interface DeliverableDeletedEvent extends DomainEvent<{
|
|
|
242
248
|
readonly name: 'deliverable.deleted';
|
|
243
249
|
readonly aggregateType: 'Deliverable';
|
|
244
250
|
}
|
|
245
|
-
export type CriticalPathDomainEvent = TaskCreatedEvent | TaskUpdatedEvent | TaskStatusChangedEvent | TaskBlockedEvent | TaskUnblockedEvent | TaskDeletedEvent | TimeLoggedEvent | CommentAddedEvent | CommentUpdatedEvent | CommentDeletedEvent | CommentReactionAddedEvent | CommentReactionRemovedEvent | AttachmentCreatedEvent | AttachmentDeletedEvent | TaskDependencyAddedEvent | ProjectCreatedEvent | ProjectUpdatedEvent | ProjectDeletedEvent | WorkflowCreatedEvent | WorkflowUpdatedEvent | WorkflowDeletedEvent | IterationStartedEvent | IterationCompletedEvent | TeamCreatedEvent | ContainerCreatedEvent | DeliverableCreatedEvent | DeliverableUpdatedEvent | DeliverableStatusChangedEvent | DeliverableDeletedEvent;
|
|
251
|
+
export type CriticalPathDomainEvent = TaskCreatedEvent | TaskUpdatedEvent | TaskStatusChangedEvent | TaskBlockedEvent | TaskUnblockedEvent | TaskDeletedEvent | TimeLoggedEvent | CommentAddedEvent | CommentUpdatedEvent | CommentDeletedEvent | CommentReactionAddedEvent | CommentReactionRemovedEvent | AttachmentCreatedEvent | AttachmentDeletedEvent | TaskDependencyAddedEvent | TaskDependencyRemovedEvent | ProjectCreatedEvent | ProjectUpdatedEvent | ProjectDeletedEvent | WorkflowCreatedEvent | WorkflowUpdatedEvent | WorkflowDeletedEvent | IterationStartedEvent | IterationCompletedEvent | TeamCreatedEvent | ContainerCreatedEvent | DeliverableCreatedEvent | DeliverableUpdatedEvent | DeliverableStatusChangedEvent | DeliverableDeletedEvent;
|
|
246
252
|
export type DomainEventHandler<T extends DomainEvent = DomainEvent> = (event: T) => Promise<void> | void;
|
|
247
253
|
export declare class DomainEventBus {
|
|
248
254
|
private handlers;
|
|
@@ -252,5 +258,5 @@ export declare class DomainEventBus {
|
|
|
252
258
|
clear(): void;
|
|
253
259
|
}
|
|
254
260
|
/** Every domain event name, e.g. for validating webhook subscriptions at runtime. */
|
|
255
|
-
export declare const DOMAIN_EVENT_NAMES: readonly ["attachment.created", "attachment.deleted", "comment.created", "comment.deleted", "comment.reaction.added", "comment.reaction.removed", "comment.updated", "container.created", "deliverable.created", "deliverable.deleted", "deliverable.status_changed", "deliverable.updated", "dependency.added", "iteration.completed", "iteration.started", "project.created", "project.deleted", "project.updated", "task.blocked", "task.created", "task.deleted", "task.status_changed", "task.unblocked", "task.updated", "team.created", "time.logged", "workflow.created", "workflow.deleted", "workflow.updated"];
|
|
261
|
+
export declare const DOMAIN_EVENT_NAMES: readonly ["attachment.created", "attachment.deleted", "comment.created", "comment.deleted", "comment.reaction.added", "comment.reaction.removed", "comment.updated", "container.created", "deliverable.created", "deliverable.deleted", "deliverable.status_changed", "deliverable.updated", "dependency.added", "dependency.removed", "iteration.completed", "iteration.started", "project.created", "project.deleted", "project.updated", "task.blocked", "task.created", "task.deleted", "task.status_changed", "task.unblocked", "task.updated", "team.created", "time.logged", "workflow.created", "workflow.deleted", "workflow.updated"];
|
|
256
262
|
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/domain/events.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/domain/events.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/events.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/domain/events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/domain/events.ts"],"names":[],"mappings":"AA2OA,MAAM,OAAO,cAAc;IACjB,QAAQ,GAAG,IAAI,GAAG,EAA0C,CAAC;IAErE,SAAS,CACP,SAA0B,EAC1B,OAA8B;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEnC,OAAO,GAAG,EAAE;YACV,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,SAAS,EACT,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CACzC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAkB;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,gBAAgB,CAAC,CAAC;QAE7D,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,2DAA2D;gBAC3D,OAAO,CAAC,KAAK,CAAC,4CAA4C,KAAK,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAqB;QACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,oBAAoB;IACpB,oBAAoB;IACpB,iBAAiB;IACjB,iBAAiB;IACjB,wBAAwB;IACxB,0BAA0B;IAC1B,iBAAiB;IACjB,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,4BAA4B;IAC5B,qBAAqB;IACrB,kBAAkB;IAClB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;CAC2C,CAAC;AAIhE,MAAM,sBAAsB,GAAuE,IAAI,CAAC;AACxG,KAAK,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascade.test.d.ts","sourceRoot":"","sources":["../../src/engine/cascade.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { CriticalPathEngine, InMemoryStore, SQLiteStore, FirebaseStore, InMemoryFirestoreMock, InMemoryFileStore, createRolePolicy, ForbiddenError } from '../index.js';
|
|
3
|
+
const stores = [
|
|
4
|
+
['InMemoryStore', () => new InMemoryStore()],
|
|
5
|
+
['SQLiteStore', () => new SQLiteStore({ filename: ':memory:' })],
|
|
6
|
+
['FirebaseStore', () => new FirebaseStore({ db: new InMemoryFirestoreMock() })]
|
|
7
|
+
];
|
|
8
|
+
describe.each(stores)('cascading deletes (%s)', (_name, makeStore) => {
|
|
9
|
+
async function setup() {
|
|
10
|
+
const fileStorage = new InMemoryFileStore();
|
|
11
|
+
const engine = new CriticalPathEngine({ store: makeStore(), fileStorage });
|
|
12
|
+
const project = await engine.createProject({ name: 'Cascade' });
|
|
13
|
+
const parent = await engine.createTask({ projectId: project.id, title: 'Parent' });
|
|
14
|
+
const child = await engine.createTask({ projectId: project.id, title: 'Child', parentId: parent.id });
|
|
15
|
+
const grandchild = await engine.createTask({ projectId: project.id, title: 'Grandchild', parentId: child.id });
|
|
16
|
+
const other = await engine.createTask({ projectId: project.id, title: 'Other' });
|
|
17
|
+
return { engine, fileStorage, project, parent, child, grandchild, other };
|
|
18
|
+
}
|
|
19
|
+
it('removes subtasks, dependencies, comments, attachments with files, and time entries', async () => {
|
|
20
|
+
const { engine, fileStorage, parent, child, grandchild, other } = await setup();
|
|
21
|
+
const dependency = await engine.addDependency({ taskId: other.id, dependsOnTaskId: parent.id, type: 'blocking' });
|
|
22
|
+
const comment = await engine.addComment({ taskId: parent.id, content: 'note', authorId: 'u1' });
|
|
23
|
+
const upload = await engine.uploadAttachmentFile({ taskId: parent.id, filename: 'spec.txt', data: 'hello', uploaderId: 'u1' });
|
|
24
|
+
const onComment = await engine.createAttachment({ commentId: comment.id, filename: 'c.png', url: 'https://example.com/c.png', uploaderId: 'u1', mimeType: 'image/png', sizeBytes: 1 });
|
|
25
|
+
const entry = await engine.logTime({ taskId: parent.id, hours: 2 });
|
|
26
|
+
expect(await engine.deleteTask(parent.id)).toBe(true);
|
|
27
|
+
for (const id of [parent.id, child.id, grandchild.id])
|
|
28
|
+
expect(await engine.getTask(id)).toBeNull();
|
|
29
|
+
expect(await engine.getTask(other.id)).not.toBeNull();
|
|
30
|
+
expect(await engine.store.getDependency(dependency.id)).toBeNull();
|
|
31
|
+
expect(await engine.store.getComment(comment.id)).toBeNull();
|
|
32
|
+
expect(await engine.store.getAttachment(upload.id)).toBeNull();
|
|
33
|
+
expect(await engine.store.getAttachment(onComment.id)).toBeNull();
|
|
34
|
+
expect(await fileStorage.download(upload.storageKey).catch(() => null)).toBeNull();
|
|
35
|
+
expect((await engine.store.getTimeEntries(parent.id)).map((e) => e.id)).not.toContain(entry.id);
|
|
36
|
+
});
|
|
37
|
+
it('can detach subtasks instead of deleting them', async () => {
|
|
38
|
+
const { engine, parent, child } = await setup();
|
|
39
|
+
await engine.deleteTask(parent.id, { subtasks: 'detach' });
|
|
40
|
+
const kept = await engine.getTask(child.id);
|
|
41
|
+
expect(kept).not.toBeNull();
|
|
42
|
+
expect(kept?.parentId).toBeUndefined();
|
|
43
|
+
});
|
|
44
|
+
it('deletes a project with all its planning records and reports every deleted task', async () => {
|
|
45
|
+
const { engine, project, parent, child, grandchild, other } = await setup();
|
|
46
|
+
const container = await engine.createContainer({ projectId: project.id, name: 'Epic' });
|
|
47
|
+
const iteration = await engine.createIteration({ projectId: project.id, name: 'S1', status: 'planning' });
|
|
48
|
+
const deliverable = await engine.createDeliverable({ projectId: project.id, title: 'Cut' });
|
|
49
|
+
const projectFile = await engine.createAttachment({ projectId: project.id, filename: 'brief.pdf', url: 'https://example.com/b.pdf', uploaderId: 'u1', mimeType: 'application/pdf', sizeBytes: 1 });
|
|
50
|
+
let deletedTaskIds = [];
|
|
51
|
+
engine.events.subscribe('project.deleted', (e) => {
|
|
52
|
+
deletedTaskIds = e.payload.deletedTaskIds;
|
|
53
|
+
});
|
|
54
|
+
expect(await engine.deleteProject(project.id)).toBe(true);
|
|
55
|
+
expect(deletedTaskIds.sort()).toEqual([parent.id, child.id, grandchild.id, other.id].sort());
|
|
56
|
+
expect(await engine.store.getContainer(container.id)).toBeNull();
|
|
57
|
+
expect(await engine.store.getIteration(iteration.id)).toBeNull();
|
|
58
|
+
expect(await engine.store.getDeliverable(deliverable.id)).toBeNull();
|
|
59
|
+
expect(await engine.store.getAttachment(projectFile.id)).toBeNull();
|
|
60
|
+
});
|
|
61
|
+
it('clears task references when containers, iterations and deliverables are deleted', async () => {
|
|
62
|
+
const { engine, project, other } = await setup();
|
|
63
|
+
const epic = await engine.createContainer({ projectId: project.id, name: 'Epic' });
|
|
64
|
+
const nested = await engine.createContainer({ projectId: project.id, name: 'Nested', parentId: epic.id });
|
|
65
|
+
const sprint = await engine.createIteration({ projectId: project.id, name: 'S1', status: 'planning' });
|
|
66
|
+
const cut = await engine.createDeliverable({ projectId: project.id, title: 'Cut' });
|
|
67
|
+
await engine.updateTask(other.id, { containerId: epic.id, iterationId: sprint.id, deliverableId: cut.id });
|
|
68
|
+
await engine.deleteContainer(epic.id);
|
|
69
|
+
await engine.deleteIteration(sprint.id);
|
|
70
|
+
await engine.deleteDeliverable(cut.id);
|
|
71
|
+
const task = await engine.getTask(other.id);
|
|
72
|
+
expect(task?.containerId).toBeUndefined();
|
|
73
|
+
expect(task?.iterationId).toBeUndefined();
|
|
74
|
+
expect(task?.deliverableId).toBeUndefined();
|
|
75
|
+
expect((await engine.getContainer(nested.id))?.parentId).toBeUndefined();
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('removeDependency', () => {
|
|
79
|
+
it('removes a dependency, publishes dependency.removed, and requires task.update', async () => {
|
|
80
|
+
const engine = new CriticalPathEngine({ authorize: createRolePolicy() });
|
|
81
|
+
const project = await engine.createProject({
|
|
82
|
+
name: 'Deps',
|
|
83
|
+
members: [
|
|
84
|
+
{ userId: 'cora', role: 'contributor' },
|
|
85
|
+
{ userId: 'vic', role: 'viewer' }
|
|
86
|
+
]
|
|
87
|
+
});
|
|
88
|
+
const a = await engine.createTask({ projectId: project.id, title: 'A' });
|
|
89
|
+
const b = await engine.createTask({ projectId: project.id, title: 'B' });
|
|
90
|
+
const dependency = await engine.addDependency({ taskId: a.id, dependsOnTaskId: b.id, type: 'blocking' });
|
|
91
|
+
const events = [];
|
|
92
|
+
engine.events.subscribe('dependency.removed', (e) => void events.push(e.name));
|
|
93
|
+
await expect(engine.withActor({ userId: 'vic' }).removeDependency(dependency.id)).rejects.toThrow(ForbiddenError);
|
|
94
|
+
expect(await engine.withActor({ userId: 'cora' }).removeDependency(dependency.id)).toBe(true);
|
|
95
|
+
expect(await engine.removeDependency(dependency.id)).toBe(false);
|
|
96
|
+
expect(events).toEqual(['dependency.removed']);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=cascade.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascade.test.js","sourceRoot":"","sources":["../../src/engine/cascade.test.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/index.d.ts
CHANGED
|
@@ -87,7 +87,18 @@ export declare class CriticalPathEngine {
|
|
|
87
87
|
};
|
|
88
88
|
}): Promise<Task | null>;
|
|
89
89
|
private checkAndUnblockDownstreamTasks;
|
|
90
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Deletes a task and everything that belongs to it: subtasks (or, with `subtasks: 'detach'`,
|
|
92
|
+
* their parent link), dependencies, comments, attachments (including stored files) and time
|
|
93
|
+
* entries. The activity log is kept as an audit trail.
|
|
94
|
+
*/
|
|
95
|
+
deleteTask(id: string, options?: {
|
|
96
|
+
subtasks?: 'delete' | 'detach';
|
|
97
|
+
}): Promise<boolean>;
|
|
98
|
+
/** Removes records owned by a task; the task's deletion was already authorized. */
|
|
99
|
+
private deleteTaskChildren;
|
|
100
|
+
/** Removes a dependency between two tasks. Requires `task.update` on the dependent task's project. */
|
|
101
|
+
removeDependency(id: string): Promise<boolean>;
|
|
91
102
|
addDependency(dep: Omit<TaskDependency, 'id'>): Promise<TaskDependency>;
|
|
92
103
|
/**
|
|
93
104
|
* Collects every dependency edge reachable upstream from `startTaskId`. A new edge
|
|
@@ -158,7 +169,10 @@ export declare class CriticalPathEngine {
|
|
|
158
169
|
getContainer(id: string): Promise<TaskContainer | null>;
|
|
159
170
|
createContainer(container: Omit<TaskContainer, 'id' | 'createdAt' | 'updatedAt'>): Promise<TaskContainer>;
|
|
160
171
|
updateContainer(id: string, updates: Partial<TaskContainer>): Promise<TaskContainer | null>;
|
|
172
|
+
/** Deletes a container. Its tasks and nested containers are kept but no longer reference it. */
|
|
161
173
|
deleteContainer(id: string): Promise<boolean>;
|
|
174
|
+
/** Unsets a reference (e.g. `iterationId`) on every task in the project that points at `id`. */
|
|
175
|
+
private clearTaskReferences;
|
|
162
176
|
getDeliverables(projectId: string): Promise<Deliverable[]>;
|
|
163
177
|
getDeliverable(id: string): Promise<Deliverable | null>;
|
|
164
178
|
createDeliverable(input: CreateDeliverableInput): Promise<Deliverable>;
|
|
@@ -169,6 +183,7 @@ export declare class CriticalPathEngine {
|
|
|
169
183
|
getIteration(id: string): Promise<Iteration | null>;
|
|
170
184
|
createIteration(iteration: Omit<Iteration, 'id' | 'createdAt'>): Promise<Iteration>;
|
|
171
185
|
updateIteration(id: string, updates: Partial<Iteration>): Promise<Iteration | null>;
|
|
186
|
+
/** Deletes an iteration. Its tasks are kept and moved back to the backlog (no iteration). */
|
|
172
187
|
deleteIteration(id: string): Promise<boolean>;
|
|
173
188
|
calculateCriticalPath(projectId: string, options?: CPMOptions): Promise<CriticalPathAnalysis>;
|
|
174
189
|
getTimelineLadder(projectId: string, options?: TimelineLadderOptions): Promise<TimelineLadder>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,KAAK,EAEL,kBAAkB,EAClB,OAAO,EACP,IAAI,EACJ,cAAc,EACd,mBAAmB,EACnB,IAAI,EACJ,aAAa,EACb,SAAS,EACT,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,EACT,OAAO,EACP,aAAa,EACb,QAAQ,EACR,eAAe,EAEf,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,cAAc,EAId,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAiB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAWrD,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/index.js
CHANGED
|
@@ -404,12 +404,19 @@ export class CriticalPathEngine {
|
|
|
404
404
|
// Deleting the project implies deleting its tasks; skip per-task checks for the cascade.
|
|
405
405
|
const cascade = this.elevated();
|
|
406
406
|
const tasks = await this.store.getTasks(id);
|
|
407
|
-
const deletedTaskIds = [];
|
|
408
407
|
for (const task of tasks) {
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
408
|
+
// Subtasks may already be gone with their parent; deleteTask then returns false.
|
|
409
|
+
await cascade.deleteTask(task.id);
|
|
410
|
+
}
|
|
411
|
+
const deletedTaskIds = (await Promise.all(tasks.map(async (t) => ((await this.store.getTask(t.id)) ? null : t.id)))).filter((taskId) => taskId !== null);
|
|
412
|
+
for (const container of await this.store.getContainers(id))
|
|
413
|
+
await this.store.deleteContainer(container.id);
|
|
414
|
+
for (const iteration of await this.store.getIterations(id))
|
|
415
|
+
await this.store.deleteIteration(iteration.id);
|
|
416
|
+
for (const deliverable of await this.store.getDeliverables(id))
|
|
417
|
+
await cascade.deleteDeliverable(deliverable.id);
|
|
418
|
+
for (const attachment of await this.store.getAttachments({ projectId: id }))
|
|
419
|
+
await cascade.deleteAttachment(attachment.id);
|
|
413
420
|
const deleted = await this.store.deleteProject(id);
|
|
414
421
|
if (deleted) {
|
|
415
422
|
const now = new Date().toISOString();
|
|
@@ -874,12 +881,18 @@ export class CriticalPathEngine {
|
|
|
874
881
|
console.error(`[CriticalPathEngine] Error during auto-unblocking for task ${completedTask.id}:`, err);
|
|
875
882
|
}
|
|
876
883
|
}
|
|
877
|
-
|
|
884
|
+
/**
|
|
885
|
+
* Deletes a task and everything that belongs to it: subtasks (or, with `subtasks: 'detach'`,
|
|
886
|
+
* their parent link), dependencies, comments, attachments (including stored files) and time
|
|
887
|
+
* entries. The activity log is kept as an audit trail.
|
|
888
|
+
*/
|
|
889
|
+
async deleteTask(id, options = {}) {
|
|
878
890
|
const existing = await this.getTask(id);
|
|
879
891
|
if (!existing)
|
|
880
892
|
return false;
|
|
881
893
|
await this.requireProjectAccess('task.delete', existing.projectId);
|
|
882
894
|
await this.plugins.runBeforeTaskDelete(id, existing);
|
|
895
|
+
await this.deleteTaskChildren(existing, options.subtasks ?? 'delete');
|
|
883
896
|
const deleted = await this.store.deleteTask(id);
|
|
884
897
|
if (deleted) {
|
|
885
898
|
await this.plugins.runAfterTaskDelete(id, existing);
|
|
@@ -907,6 +920,61 @@ export class CriticalPathEngine {
|
|
|
907
920
|
}
|
|
908
921
|
return deleted;
|
|
909
922
|
}
|
|
923
|
+
/** Removes records owned by a task; the task's deletion was already authorized. */
|
|
924
|
+
async deleteTaskChildren(task, subtasks) {
|
|
925
|
+
const cascade = this.elevated();
|
|
926
|
+
const children = (await this.store.getTasks(task.projectId)).filter((t) => t.parentId === task.id);
|
|
927
|
+
for (const child of children) {
|
|
928
|
+
if (subtasks === 'delete') {
|
|
929
|
+
await cascade.deleteTask(child.id, { subtasks });
|
|
930
|
+
}
|
|
931
|
+
else {
|
|
932
|
+
await this.store.updateTask(child.id, { parentId: undefined });
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
for (const dependency of await this.store.getDependencies(task.id)) {
|
|
936
|
+
await cascade.removeDependency(dependency.id);
|
|
937
|
+
}
|
|
938
|
+
const comments = await this.store.getComments(task.id);
|
|
939
|
+
const attachments = [
|
|
940
|
+
...(await this.store.getAttachments({ taskId: task.id })),
|
|
941
|
+
...(await Promise.all(comments.map((c) => this.store.getAttachments({ commentId: c.id })))).flat()
|
|
942
|
+
];
|
|
943
|
+
for (const attachmentId of new Set(attachments.map((a) => a.id))) {
|
|
944
|
+
await cascade.deleteAttachment(attachmentId);
|
|
945
|
+
}
|
|
946
|
+
for (const comment of comments) {
|
|
947
|
+
await cascade.deleteComment(comment.id);
|
|
948
|
+
}
|
|
949
|
+
for (const entry of await this.store.getTimeEntries(task.id)) {
|
|
950
|
+
await this.store.deleteTimeEntry(entry.id);
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
/** Removes a dependency between two tasks. Requires `task.update` on the dependent task's project. */
|
|
954
|
+
async removeDependency(id) {
|
|
955
|
+
const dependency = await this.store.getDependency(id);
|
|
956
|
+
if (!dependency)
|
|
957
|
+
return false;
|
|
958
|
+
if (this.enforcing) {
|
|
959
|
+
const task = await this.getTask(dependency.taskId);
|
|
960
|
+
if (!task)
|
|
961
|
+
return false;
|
|
962
|
+
await this.requireProjectAccess('task.update', task.projectId);
|
|
963
|
+
}
|
|
964
|
+
const removed = await this.store.removeDependency(id);
|
|
965
|
+
if (removed) {
|
|
966
|
+
const event = {
|
|
967
|
+
id: `evt_${Math.random().toString(36).substring(2, 9)}`,
|
|
968
|
+
name: 'dependency.removed',
|
|
969
|
+
aggregateId: id,
|
|
970
|
+
aggregateType: 'Dependency',
|
|
971
|
+
occurredAt: new Date().toISOString(),
|
|
972
|
+
payload: { dependency }
|
|
973
|
+
};
|
|
974
|
+
await this.events.publish(event);
|
|
975
|
+
}
|
|
976
|
+
return removed;
|
|
977
|
+
}
|
|
910
978
|
// --- Task Dependencies & Graph ---
|
|
911
979
|
async addDependency(dep) {
|
|
912
980
|
if (this.enforcing) {
|
|
@@ -1429,13 +1497,25 @@ export class CriticalPathEngine {
|
|
|
1429
1497
|
await this.requireProjectAccess('plan.manage', existing.projectId);
|
|
1430
1498
|
return this.store.updateContainer(id, updates);
|
|
1431
1499
|
}
|
|
1500
|
+
/** Deletes a container. Its tasks and nested containers are kept but no longer reference it. */
|
|
1432
1501
|
async deleteContainer(id) {
|
|
1433
1502
|
const existing = await this.getContainer(id);
|
|
1434
1503
|
if (!existing)
|
|
1435
1504
|
return false;
|
|
1436
1505
|
await this.requireProjectAccess('plan.manage', existing.projectId);
|
|
1506
|
+
await this.clearTaskReferences(existing.projectId, 'containerId', id);
|
|
1507
|
+
for (const child of (await this.store.getContainers(existing.projectId)).filter((c) => c.parentId === id)) {
|
|
1508
|
+
await this.store.updateContainer(child.id, { parentId: undefined });
|
|
1509
|
+
}
|
|
1437
1510
|
return this.store.deleteContainer(id);
|
|
1438
1511
|
}
|
|
1512
|
+
/** Unsets a reference (e.g. `iterationId`) on every task in the project that points at `id`. */
|
|
1513
|
+
async clearTaskReferences(projectId, field, id) {
|
|
1514
|
+
for (const task of await this.store.getTasks(projectId)) {
|
|
1515
|
+
if (task[field] === id)
|
|
1516
|
+
await this.store.updateTask(task.id, { [field]: undefined });
|
|
1517
|
+
}
|
|
1518
|
+
}
|
|
1439
1519
|
// --- Deliverables ---
|
|
1440
1520
|
async getDeliverables(projectId) {
|
|
1441
1521
|
if (!(await this.canReadProject(projectId)))
|
|
@@ -1527,6 +1607,7 @@ export class CriticalPathEngine {
|
|
|
1527
1607
|
if (!existing)
|
|
1528
1608
|
return false;
|
|
1529
1609
|
await this.requireProjectAccess('plan.manage', existing.projectId);
|
|
1610
|
+
await this.clearTaskReferences(existing.projectId, 'deliverableId', id);
|
|
1530
1611
|
const deleted = await this.store.deleteDeliverable(id);
|
|
1531
1612
|
if (deleted) {
|
|
1532
1613
|
const now = new Date().toISOString();
|
|
@@ -1654,11 +1735,13 @@ export class CriticalPathEngine {
|
|
|
1654
1735
|
}
|
|
1655
1736
|
return updated;
|
|
1656
1737
|
}
|
|
1738
|
+
/** Deletes an iteration. Its tasks are kept and moved back to the backlog (no iteration). */
|
|
1657
1739
|
async deleteIteration(id) {
|
|
1658
1740
|
const existing = await this.getIteration(id);
|
|
1659
1741
|
if (!existing)
|
|
1660
1742
|
return false;
|
|
1661
1743
|
await this.requireProjectAccess('plan.manage', existing.projectId);
|
|
1744
|
+
await this.clearTaskReferences(existing.projectId, 'iterationId', id);
|
|
1662
1745
|
return this.store.deleteIteration(id);
|
|
1663
1746
|
}
|
|
1664
1747
|
// --- Ladder of Abstraction & Critical Path Method ---
|