@critical-path/core 0.1.2 → 0.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.
Files changed (50) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +43 -26
  3. package/dist/engine/index.d.ts +19 -1
  4. package/dist/engine/index.d.ts.map +1 -1
  5. package/dist/engine/index.js +129 -6
  6. package/dist/engine/index.js.map +1 -1
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.test.js +96 -1
  12. package/dist/index.test.js.map +1 -1
  13. package/dist/store/firebase.d.ts +113 -0
  14. package/dist/store/firebase.d.ts.map +1 -0
  15. package/dist/store/firebase.js +319 -0
  16. package/dist/store/firebase.js.map +1 -0
  17. package/dist/store/firebase.test.d.ts +2 -0
  18. package/dist/store/firebase.test.d.ts.map +1 -0
  19. package/dist/store/firebase.test.js +45 -0
  20. package/dist/store/firebase.test.js.map +1 -0
  21. package/dist/store/index.d.ts +36 -8
  22. package/dist/store/index.d.ts.map +1 -1
  23. package/dist/store/index.js +78 -12
  24. package/dist/store/index.js.map +1 -1
  25. package/dist/store/sqlite.d.ts +61 -0
  26. package/dist/store/sqlite.d.ts.map +1 -0
  27. package/dist/store/sqlite.js +492 -0
  28. package/dist/store/sqlite.js.map +1 -0
  29. package/dist/store/sqlite.test.d.ts +2 -0
  30. package/dist/store/sqlite.test.d.ts.map +1 -0
  31. package/dist/store/sqlite.test.js +63 -0
  32. package/dist/store/sqlite.test.js.map +1 -0
  33. package/dist/types/index.d.ts +68 -8
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/utils/status.d.ts +14 -0
  36. package/dist/utils/status.d.ts.map +1 -0
  37. package/dist/utils/status.js +58 -0
  38. package/dist/utils/status.js.map +1 -0
  39. package/package.json +9 -1
  40. package/src/engine/index.ts +161 -8
  41. package/src/index.test.ts +113 -1
  42. package/src/index.ts +1 -0
  43. package/src/store/firebase.test.ts +59 -0
  44. package/src/store/firebase.ts +381 -0
  45. package/src/store/index.ts +113 -19
  46. package/src/store/sqlite.test.ts +78 -0
  47. package/src/store/sqlite.ts +729 -0
  48. package/src/types/index.ts +74 -9
  49. package/src/utils/status.ts +85 -0
  50. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,78 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { SQLiteStore } from './sqlite.js';
3
+
4
+ describe('SQLiteStore', () => {
5
+ let store: SQLiteStore;
6
+
7
+ beforeEach(() => {
8
+ store = new SQLiteStore({ filename: ':memory:' });
9
+ });
10
+
11
+ it('should create and retrieve projects', async () => {
12
+ const project = await store.createProject({
13
+ key: 'SQLITE',
14
+ name: 'SQLite Test Project',
15
+ description: 'Testing SQLite adapter'
16
+ });
17
+
18
+ expect(project.id).toMatch(/^proj_/);
19
+ expect(project.name).toBe('SQLite Test Project');
20
+
21
+ const fetched = await store.getProject(project.id);
22
+ expect(fetched).not.toBeNull();
23
+ expect(fetched?.key).toBe('SQLITE');
24
+
25
+ const all = await store.getProjects();
26
+ expect(all).toHaveLength(1);
27
+ });
28
+
29
+ it('should create, update, filter, and delete tasks', async () => {
30
+ const project = await store.createProject({ key: 'P1', name: 'Proj 1' });
31
+ const task = await store.createTask({
32
+ projectId: project.id,
33
+ title: 'SQLite Task 1',
34
+ status: 'todo',
35
+ priority: 'high',
36
+ tags: ['sqlite', 'db']
37
+ });
38
+
39
+ expect(task.id).toMatch(/^task_/);
40
+ expect(task.priority).toBe('high');
41
+ expect(task.tags).toContain('sqlite');
42
+
43
+ const updated = await store.updateTask(task.id, { status: 'in_progress' });
44
+ expect(updated?.status).toBe('in_progress');
45
+
46
+ const projectTasks = await store.getTasks(project.id);
47
+ expect(projectTasks).toHaveLength(1);
48
+
49
+ const deleted = await store.deleteTask(task.id);
50
+ expect(deleted).toBe(true);
51
+
52
+ const remaining = await store.getTasks(project.id);
53
+ expect(remaining).toHaveLength(0);
54
+ });
55
+
56
+ it('should handle comments, activities, and time tracking', async () => {
57
+ const comment = await store.addComment({
58
+ taskId: 'task_1',
59
+ authorId: 'user_1',
60
+ content: 'Great work!'
61
+ });
62
+ expect(comment.id).toMatch(/^cmt_/);
63
+
64
+ const comments = await store.getComments('task_1');
65
+ expect(comments).toHaveLength(1);
66
+
67
+ const timeEntry = await store.logTime({
68
+ taskId: 'task_1',
69
+ userId: 'user_1',
70
+ hours: 2.5,
71
+ description: 'Code review'
72
+ });
73
+ expect(timeEntry.hours).toBe(2.5);
74
+
75
+ const entries = await store.getTimeEntries('task_1');
76
+ expect(entries).toHaveLength(1);
77
+ });
78
+ });