@critical-path/core 0.35.0 → 0.36.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/README.md +11 -0
- package/dist/engine/index.d.ts +2 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +25 -2
- package/dist/engine/index.js.map +1 -1
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -1
- package/CHANGELOG.md +0 -584
- package/dist/deliverables.test.d.ts +0 -2
- package/dist/deliverables.test.d.ts.map +0 -1
- package/dist/deliverables.test.js +0 -232
- package/dist/deliverables.test.js.map +0 -1
- package/dist/domain/calendar.test.d.ts +0 -2
- package/dist/domain/calendar.test.d.ts.map +0 -1
- package/dist/domain/calendar.test.js +0 -181
- package/dist/domain/calendar.test.js.map +0 -1
- package/dist/domain/cpm.test.d.ts +0 -2
- package/dist/domain/cpm.test.d.ts.map +0 -1
- package/dist/domain/cpm.test.js +0 -166
- package/dist/domain/cpm.test.js.map +0 -1
- package/dist/domain/ddd.test.d.ts +0 -2
- package/dist/domain/ddd.test.d.ts.map +0 -1
- package/dist/domain/ddd.test.js +0 -349
- package/dist/domain/ddd.test.js.map +0 -1
- package/dist/domain/ladder.test.d.ts +0 -2
- package/dist/domain/ladder.test.d.ts.map +0 -1
- package/dist/domain/ladder.test.js +0 -213
- package/dist/domain/ladder.test.js.map +0 -1
- package/dist/domain/metrics.test.d.ts +0 -2
- package/dist/domain/metrics.test.d.ts.map +0 -1
- package/dist/domain/metrics.test.js +0 -252
- package/dist/domain/metrics.test.js.map +0 -1
- package/dist/domain/task-duration.test.d.ts +0 -2
- package/dist/domain/task-duration.test.d.ts.map +0 -1
- package/dist/domain/task-duration.test.js +0 -307
- package/dist/domain/task-duration.test.js.map +0 -1
- package/dist/domain/workload.test.d.ts +0 -2
- package/dist/domain/workload.test.d.ts.map +0 -1
- package/dist/domain/workload.test.js +0 -261
- package/dist/domain/workload.test.js.map +0 -1
- package/dist/engine/actor.test.d.ts +0 -2
- package/dist/engine/actor.test.d.ts.map +0 -1
- package/dist/engine/actor.test.js +0 -54
- package/dist/engine/actor.test.js.map +0 -1
- package/dist/engine/authorization.test.d.ts +0 -2
- package/dist/engine/authorization.test.d.ts.map +0 -1
- package/dist/engine/authorization.test.js +0 -154
- package/dist/engine/authorization.test.js.map +0 -1
- package/dist/engine/cascade.test.d.ts +0 -2
- package/dist/engine/cascade.test.d.ts.map +0 -1
- package/dist/engine/cascade.test.js +0 -99
- package/dist/engine/cascade.test.js.map +0 -1
- package/dist/engine/config.test.d.ts +0 -2
- package/dist/engine/config.test.d.ts.map +0 -1
- package/dist/engine/config.test.js +0 -46
- package/dist/engine/config.test.js.map +0 -1
- package/dist/engine/entity-events.test.d.ts +0 -2
- package/dist/engine/entity-events.test.d.ts.map +0 -1
- package/dist/engine/entity-events.test.js +0 -61
- package/dist/engine/entity-events.test.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -429
- package/dist/index.test.js.map +0 -1
- package/dist/plugins/plugins.test.d.ts +0 -2
- package/dist/plugins/plugins.test.d.ts.map +0 -1
- package/dist/plugins/plugins.test.js +0 -137
- package/dist/plugins/plugins.test.js.map +0 -1
- package/dist/schemas/schemas.test.d.ts +0 -2
- package/dist/schemas/schemas.test.d.ts.map +0 -1
- package/dist/schemas/schemas.test.js +0 -58
- package/dist/schemas/schemas.test.js.map +0 -1
- package/dist/status.test.d.ts +0 -2
- package/dist/status.test.d.ts.map +0 -1
- package/dist/status.test.js +0 -295
- package/dist/status.test.js.map +0 -1
- package/dist/storage/storage.test.d.ts +0 -2
- package/dist/storage/storage.test.d.ts.map +0 -1
- package/dist/storage/storage.test.js +0 -236
- package/dist/storage/storage.test.js.map +0 -1
- package/dist/store/conformance.test.d.ts +0 -2
- package/dist/store/conformance.test.d.ts.map +0 -1
- package/dist/store/conformance.test.js +0 -15
- package/dist/store/conformance.test.js.map +0 -1
- package/dist/store/firebase.test.d.ts +0 -2
- package/dist/store/firebase.test.d.ts.map +0 -1
- package/dist/store/firebase.test.js +0 -103
- package/dist/store/firebase.test.js.map +0 -1
- package/dist/store/query.test.d.ts +0 -2
- package/dist/store/query.test.d.ts.map +0 -1
- package/dist/store/query.test.js +0 -89
- package/dist/store/query.test.js.map +0 -1
- package/dist/store/sqlite.test.d.ts +0 -2
- package/dist/store/sqlite.test.d.ts.map +0 -1
- package/dist/store/sqlite.test.js +0 -177
- package/dist/store/sqlite.test.js.map +0 -1
- package/dist/task-state.test.d.ts +0 -2
- package/dist/task-state.test.d.ts.map +0 -1
- package/dist/task-state.test.js +0 -423
- package/dist/task-state.test.js.map +0 -1
- package/dist/use-case-validation.test.d.ts +0 -2
- package/dist/use-case-validation.test.d.ts.map +0 -1
- package/dist/use-case-validation.test.js +0 -281
- package/dist/use-case-validation.test.js.map +0 -1
- package/dist/utils/fractional-index.test.d.ts +0 -2
- package/dist/utils/fractional-index.test.d.ts.map +0 -1
- package/dist/utils/fractional-index.test.js +0 -182
- package/dist/utils/fractional-index.test.js.map +0 -1
- package/dist/utils/key.test.d.ts +0 -2
- package/dist/utils/key.test.d.ts.map +0 -1
- package/dist/utils/key.test.js +0 -65
- package/dist/utils/key.test.js.map +0 -1
- package/dist/utils/mentions.test.d.ts +0 -2
- package/dist/utils/mentions.test.d.ts.map +0 -1
- package/dist/utils/mentions.test.js +0 -114
- package/dist/utils/mentions.test.js.map +0 -1
- package/dist/webhooks/webhooks.test.d.ts +0 -2
- package/dist/webhooks/webhooks.test.d.ts.map +0 -1
- package/dist/webhooks/webhooks.test.js +0 -154
- package/dist/webhooks/webhooks.test.js.map +0 -1
- package/src/deliverables.test.ts +0 -284
- package/src/domain/authorization.ts +0 -82
- package/src/domain/calendar.test.ts +0 -216
- package/src/domain/calendar.ts +0 -502
- package/src/domain/cpm.test.ts +0 -189
- package/src/domain/cpm.ts +0 -258
- package/src/domain/custom-fields.ts +0 -172
- package/src/domain/ddd.test.ts +0 -442
- package/src/domain/entities.ts +0 -798
- package/src/domain/errors.ts +0 -38
- package/src/domain/events.ts +0 -369
- package/src/domain/graph.ts +0 -70
- package/src/domain/index.ts +0 -12
- package/src/domain/ladder.test.ts +0 -251
- package/src/domain/ladder.ts +0 -474
- package/src/domain/metrics.test.ts +0 -288
- package/src/domain/metrics.ts +0 -497
- package/src/domain/task-duration.test.ts +0 -354
- package/src/domain/workload.test.ts +0 -311
- package/src/domain/workload.ts +0 -457
- package/src/engine/actor.test.ts +0 -63
- package/src/engine/authorization.test.ts +0 -199
- package/src/engine/cascade.test.ts +0 -121
- package/src/engine/config.test.ts +0 -51
- package/src/engine/entity-events.test.ts +0 -67
- package/src/engine/index.ts +0 -2472
- package/src/index.test.ts +0 -514
- package/src/index.ts +0 -9
- package/src/plugins/index.ts +0 -103
- package/src/plugins/plugins.test.ts +0 -161
- package/src/schemas/index.ts +0 -402
- package/src/schemas/schemas.test.ts +0 -116
- package/src/status.test.ts +0 -354
- package/src/storage/file-storage.ts +0 -200
- package/src/storage/firebase-storage.ts +0 -209
- package/src/storage/index.ts +0 -3
- package/src/storage/s3.ts +0 -151
- package/src/storage/storage.test.ts +0 -274
- package/src/store/conformance.test.ts +0 -15
- package/src/store/firebase.test.ts +0 -131
- package/src/store/firebase.ts +0 -658
- package/src/store/index.ts +0 -623
- package/src/store/query.test.ts +0 -110
- package/src/store/query.ts +0 -113
- package/src/store/sqlite.test.ts +0 -218
- package/src/store/sqlite.ts +0 -1480
- package/src/task-state.test.ts +0 -506
- package/src/testing/conformance.ts +0 -319
- package/src/testing/index.ts +0 -1
- package/src/types/index.ts +0 -859
- package/src/use-case-validation.test.ts +0 -324
- package/src/utils/fractional-index.test.ts +0 -228
- package/src/utils/fractional-index.ts +0 -254
- package/src/utils/index.ts +0 -7
- package/src/utils/key.test.ts +0 -76
- package/src/utils/key.ts +0 -62
- package/src/utils/mentions.test.ts +0 -132
- package/src/utils/mentions.ts +0 -131
- package/src/utils/status.ts +0 -419
- package/src/utils/workflow.ts +0 -306
- package/src/webhooks/dispatcher.ts +0 -190
- package/src/webhooks/index.ts +0 -2
- package/src/webhooks/signature.ts +0 -57
- package/src/webhooks/webhooks.test.ts +0 -201
- package/tsconfig.json +0 -8
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
|
-
import { FirebaseStore, InMemoryFirestoreMock } from './firebase.js';
|
|
3
|
-
|
|
4
|
-
describe('FirebaseStore', () => {
|
|
5
|
-
let store: FirebaseStore;
|
|
6
|
-
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
store = new FirebaseStore({ db: new InMemoryFirestoreMock() });
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
it('should throw an error if db is missing in config', () => {
|
|
12
|
-
expect(() => new FirebaseStore({} as any)).toThrow(
|
|
13
|
-
'FirebaseStore requires a valid Firestore db instance'
|
|
14
|
-
);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it('should create and retrieve projects in FirebaseStore', async () => {
|
|
18
|
-
const project = await store.createProject({
|
|
19
|
-
key: 'FIRE',
|
|
20
|
-
name: 'Firebase Test Project',
|
|
21
|
-
description: 'Testing Firebase Firestore adapter'
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
expect(project.id).toBeDefined();
|
|
25
|
-
expect(project.name).toBe('Firebase Test Project');
|
|
26
|
-
|
|
27
|
-
const fetched = await store.getProject(project.id);
|
|
28
|
-
expect(fetched).not.toBeNull();
|
|
29
|
-
expect(fetched?.key).toBe('FIRE');
|
|
30
|
-
|
|
31
|
-
const all = await store.getProjects();
|
|
32
|
-
expect(all).toHaveLength(1);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it('should create, update, and delete tasks in FirebaseStore', async () => {
|
|
36
|
-
const project = await store.createProject({ key: 'P1', name: 'Proj 1' });
|
|
37
|
-
const task = await store.createTask({
|
|
38
|
-
projectId: project.id,
|
|
39
|
-
title: 'Firebase Task 1',
|
|
40
|
-
status: 'todo',
|
|
41
|
-
priority: 'urgent'
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
expect(task.id).toBeDefined();
|
|
45
|
-
expect(task.priority).toBe('urgent');
|
|
46
|
-
|
|
47
|
-
const updated = await store.updateTask(task.id, { status: 'done' });
|
|
48
|
-
expect(updated?.status).toBe('done');
|
|
49
|
-
|
|
50
|
-
const tasks = await store.getTasks(project.id);
|
|
51
|
-
expect(tasks).toHaveLength(1);
|
|
52
|
-
|
|
53
|
-
const deleted = await store.deleteTask(task.id);
|
|
54
|
-
expect(deleted).toBe(true);
|
|
55
|
-
|
|
56
|
-
const remaining = await store.getTasks(project.id);
|
|
57
|
-
expect(remaining).toHaveLength(0);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it('should create, update, and delete workflows in FirebaseStore', async () => {
|
|
61
|
-
const workflow = await store.createWorkflow({
|
|
62
|
-
name: 'Firebase Workflow',
|
|
63
|
-
isDefault: false,
|
|
64
|
-
defaultStatusKey: 'backlog',
|
|
65
|
-
statuses: [{ key: 'backlog', label: 'Backlog', category: 'not_started' }],
|
|
66
|
-
transitions: []
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
expect(workflow.id).toBeDefined();
|
|
70
|
-
|
|
71
|
-
const fetched = await store.getWorkflow(workflow.id);
|
|
72
|
-
expect(fetched?.name).toBe('Firebase Workflow');
|
|
73
|
-
|
|
74
|
-
const updated = await store.updateWorkflow(workflow.id, { isDefault: true });
|
|
75
|
-
expect(updated?.isDefault).toBe(true);
|
|
76
|
-
|
|
77
|
-
const deleted = await store.deleteWorkflow(workflow.id);
|
|
78
|
-
expect(deleted).toBe(true);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
it('should sanitize undefined properties from documents', async () => {
|
|
82
|
-
const project = await store.createProject({
|
|
83
|
-
key: 'UNDEF',
|
|
84
|
-
name: 'Undefined Test',
|
|
85
|
-
description: undefined,
|
|
86
|
-
ownerId: undefined
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
const doc = await store.getProject(project.id);
|
|
90
|
-
expect(doc).toBeDefined();
|
|
91
|
-
expect(doc?.name).toBe('Undefined Test');
|
|
92
|
-
expect('description' in (doc as any)).toBe(false);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
it('should retrieve dependencies when queried as taskId or dependsOnTaskId', async () => {
|
|
96
|
-
const dep = await store.addDependency({
|
|
97
|
-
taskId: 'task-downstream',
|
|
98
|
-
dependsOnTaskId: 'task-upstream',
|
|
99
|
-
type: 'blocking'
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
const byDownstream = await store.getDependencies('task-downstream');
|
|
103
|
-
expect(byDownstream).toHaveLength(1);
|
|
104
|
-
expect(byDownstream[0].id).toBe(dep.id);
|
|
105
|
-
|
|
106
|
-
const byUpstream = await store.getDependencies('task-upstream');
|
|
107
|
-
expect(byUpstream).toHaveLength(1);
|
|
108
|
-
expect(byUpstream[0].id).toBe(dep.id);
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
it('should create, update, clear fields on, and delete webhooks', async () => {
|
|
112
|
-
const created = await store.addWebhook({
|
|
113
|
-
name: 'Hook',
|
|
114
|
-
url: 'https://hooks.example.com/x',
|
|
115
|
-
events: ['task.created'],
|
|
116
|
-
secret: 'whsec_test',
|
|
117
|
-
active: true,
|
|
118
|
-
tenantId: 'acme'
|
|
119
|
-
});
|
|
120
|
-
expect(await store.getWebhook(created.id)).toMatchObject({ name: 'Hook', tenantId: 'acme' });
|
|
121
|
-
|
|
122
|
-
const updated = await store.updateWebhook(created.id, { events: ['*'], secret: undefined });
|
|
123
|
-
expect(updated?.events).toEqual(['*']);
|
|
124
|
-
expect((await store.getWebhook(created.id))?.secret).toBeUndefined();
|
|
125
|
-
|
|
126
|
-
expect(await store.deleteWebhook(created.id)).toBe(true);
|
|
127
|
-
expect(await store.getWebhook(created.id)).toBeNull();
|
|
128
|
-
expect(await store.deleteWebhook(created.id)).toBe(false);
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
|