@meridianjs/meridian 0.1.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.
Files changed (170) hide show
  1. package/dist/api/admin/issues/[id]/activities/route.d.ts +3 -0
  2. package/dist/api/admin/issues/[id]/activities/route.d.ts.map +1 -0
  3. package/dist/api/admin/issues/[id]/activities/route.js +7 -0
  4. package/dist/api/admin/issues/[id]/activities/route.js.map +1 -0
  5. package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.d.ts +3 -0
  6. package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.d.ts.map +1 -0
  7. package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.js +11 -0
  8. package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.js.map +1 -0
  9. package/dist/api/admin/issues/[id]/attachments/route.d.ts +4 -0
  10. package/dist/api/admin/issues/[id]/attachments/route.d.ts.map +1 -0
  11. package/dist/api/admin/issues/[id]/attachments/route.js +40 -0
  12. package/dist/api/admin/issues/[id]/attachments/route.js.map +1 -0
  13. package/dist/api/admin/issues/[id]/comments/route.d.ts +4 -0
  14. package/dist/api/admin/issues/[id]/comments/route.d.ts.map +1 -0
  15. package/dist/api/admin/issues/[id]/comments/route.js +20 -0
  16. package/dist/api/admin/issues/[id]/comments/route.js.map +1 -0
  17. package/dist/api/admin/issues/[id]/route.d.ts +5 -0
  18. package/dist/api/admin/issues/[id]/route.d.ts.map +1 -0
  19. package/dist/api/admin/issues/[id]/route.js +70 -0
  20. package/dist/api/admin/issues/[id]/route.js.map +1 -0
  21. package/dist/api/admin/issues/[id]/time-logs/[logId]/route.d.ts +3 -0
  22. package/dist/api/admin/issues/[id]/time-logs/[logId]/route.d.ts.map +1 -0
  23. package/dist/api/admin/issues/[id]/time-logs/[logId]/route.js +6 -0
  24. package/dist/api/admin/issues/[id]/time-logs/[logId]/route.js.map +1 -0
  25. package/dist/api/admin/issues/[id]/time-logs/route.d.ts +4 -0
  26. package/dist/api/admin/issues/[id]/time-logs/route.d.ts.map +1 -0
  27. package/dist/api/admin/issues/[id]/time-logs/route.js +26 -0
  28. package/dist/api/admin/issues/[id]/time-logs/route.js.map +1 -0
  29. package/dist/api/admin/issues/[id]/time-logs/timer/route.d.ts +4 -0
  30. package/dist/api/admin/issues/[id]/time-logs/timer/route.d.ts.map +1 -0
  31. package/dist/api/admin/issues/[id]/time-logs/timer/route.js +26 -0
  32. package/dist/api/admin/issues/[id]/time-logs/timer/route.js.map +1 -0
  33. package/dist/api/admin/issues/route.d.ts +4 -0
  34. package/dist/api/admin/issues/route.d.ts.map +1 -0
  35. package/dist/api/admin/issues/route.js +48 -0
  36. package/dist/api/admin/issues/route.js.map +1 -0
  37. package/dist/api/admin/notifications/[id]/read/route.d.ts +3 -0
  38. package/dist/api/admin/notifications/[id]/read/route.d.ts.map +1 -0
  39. package/dist/api/admin/notifications/[id]/read/route.js +6 -0
  40. package/dist/api/admin/notifications/[id]/read/route.js.map +1 -0
  41. package/dist/api/admin/notifications/read-all/route.d.ts +3 -0
  42. package/dist/api/admin/notifications/read-all/route.d.ts.map +1 -0
  43. package/dist/api/admin/notifications/read-all/route.js +11 -0
  44. package/dist/api/admin/notifications/read-all/route.js.map +1 -0
  45. package/dist/api/admin/notifications/route.d.ts +3 -0
  46. package/dist/api/admin/notifications/route.d.ts.map +1 -0
  47. package/dist/api/admin/notifications/route.js +14 -0
  48. package/dist/api/admin/notifications/route.js.map +1 -0
  49. package/dist/api/admin/projects/[id]/route.d.ts +5 -0
  50. package/dist/api/admin/projects/[id]/route.d.ts.map +1 -0
  51. package/dist/api/admin/projects/[id]/route.js +36 -0
  52. package/dist/api/admin/projects/[id]/route.js.map +1 -0
  53. package/dist/api/admin/projects/[id]/statuses/[statusId]/route.d.ts +4 -0
  54. package/dist/api/admin/projects/[id]/statuses/[statusId]/route.d.ts.map +1 -0
  55. package/dist/api/admin/projects/[id]/statuses/[statusId]/route.js +24 -0
  56. package/dist/api/admin/projects/[id]/statuses/[statusId]/route.js.map +1 -0
  57. package/dist/api/admin/projects/[id]/statuses/reorder/route.d.ts +3 -0
  58. package/dist/api/admin/projects/[id]/statuses/reorder/route.d.ts.map +1 -0
  59. package/dist/api/admin/projects/[id]/statuses/reorder/route.js +11 -0
  60. package/dist/api/admin/projects/[id]/statuses/reorder/route.js.map +1 -0
  61. package/dist/api/admin/projects/[id]/statuses/route.d.ts +4 -0
  62. package/dist/api/admin/projects/[id]/statuses/route.d.ts.map +1 -0
  63. package/dist/api/admin/projects/[id]/statuses/route.js +23 -0
  64. package/dist/api/admin/projects/[id]/statuses/route.js.map +1 -0
  65. package/dist/api/admin/projects/[id]/task-lists/route.d.ts +4 -0
  66. package/dist/api/admin/projects/[id]/task-lists/route.d.ts.map +1 -0
  67. package/dist/api/admin/projects/[id]/task-lists/route.js +18 -0
  68. package/dist/api/admin/projects/[id]/task-lists/route.js.map +1 -0
  69. package/dist/api/admin/projects/by-identifier/[identifier]/route.d.ts +3 -0
  70. package/dist/api/admin/projects/by-identifier/[identifier]/route.d.ts.map +1 -0
  71. package/dist/api/admin/projects/by-identifier/[identifier]/route.js +15 -0
  72. package/dist/api/admin/projects/by-identifier/[identifier]/route.js.map +1 -0
  73. package/dist/api/admin/projects/check-identifier/[identifier]/route.d.ts +3 -0
  74. package/dist/api/admin/projects/check-identifier/[identifier]/route.d.ts.map +1 -0
  75. package/dist/api/admin/projects/check-identifier/[identifier]/route.js +11 -0
  76. package/dist/api/admin/projects/check-identifier/[identifier]/route.js.map +1 -0
  77. package/dist/api/admin/projects/route.d.ts +4 -0
  78. package/dist/api/admin/projects/route.d.ts.map +1 -0
  79. package/dist/api/admin/projects/route.js +35 -0
  80. package/dist/api/admin/projects/route.js.map +1 -0
  81. package/dist/api/admin/projects/suggest-identifier/route.d.ts +3 -0
  82. package/dist/api/admin/projects/suggest-identifier/route.d.ts.map +1 -0
  83. package/dist/api/admin/projects/suggest-identifier/route.js +7 -0
  84. package/dist/api/admin/projects/suggest-identifier/route.js.map +1 -0
  85. package/dist/api/admin/sprints/[id]/route.d.ts +5 -0
  86. package/dist/api/admin/sprints/[id]/route.d.ts.map +1 -0
  87. package/dist/api/admin/sprints/[id]/route.js +41 -0
  88. package/dist/api/admin/sprints/[id]/route.js.map +1 -0
  89. package/dist/api/admin/sprints/route.d.ts +4 -0
  90. package/dist/api/admin/sprints/route.d.ts.map +1 -0
  91. package/dist/api/admin/sprints/route.js +25 -0
  92. package/dist/api/admin/sprints/route.js.map +1 -0
  93. package/dist/api/admin/task-lists/[id]/route.d.ts +4 -0
  94. package/dist/api/admin/task-lists/[id]/route.d.ts.map +1 -0
  95. package/dist/api/admin/task-lists/[id]/route.js +12 -0
  96. package/dist/api/admin/task-lists/[id]/route.js.map +1 -0
  97. package/dist/api/admin/users/route.d.ts +3 -0
  98. package/dist/api/admin/users/route.d.ts.map +1 -0
  99. package/dist/api/admin/users/route.js +9 -0
  100. package/dist/api/admin/users/route.js.map +1 -0
  101. package/dist/api/admin/workspaces/route.d.ts +4 -0
  102. package/dist/api/admin/workspaces/route.d.ts.map +1 -0
  103. package/dist/api/admin/workspaces/route.js +19 -0
  104. package/dist/api/admin/workspaces/route.js.map +1 -0
  105. package/dist/api/auth/login/route.d.ts +3 -0
  106. package/dist/api/auth/login/route.d.ts.map +1 -0
  107. package/dist/api/auth/login/route.js +16 -0
  108. package/dist/api/auth/login/route.js.map +1 -0
  109. package/dist/api/auth/register/route.d.ts +3 -0
  110. package/dist/api/auth/register/route.d.ts.map +1 -0
  111. package/dist/api/auth/register/route.js +18 -0
  112. package/dist/api/auth/register/route.js.map +1 -0
  113. package/dist/index.d.ts +9 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/dist/index.js +12 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/links/issue-project.d.ts +3 -0
  118. package/dist/links/issue-project.d.ts.map +1 -0
  119. package/dist/links/issue-project.js +5 -0
  120. package/dist/links/issue-project.js.map +1 -0
  121. package/dist/links/issue-sprint.d.ts +3 -0
  122. package/dist/links/issue-sprint.d.ts.map +1 -0
  123. package/dist/links/issue-sprint.js +5 -0
  124. package/dist/links/issue-sprint.js.map +1 -0
  125. package/dist/links/project-workspace.d.ts +3 -0
  126. package/dist/links/project-workspace.d.ts.map +1 -0
  127. package/dist/links/project-workspace.js +5 -0
  128. package/dist/links/project-workspace.js.map +1 -0
  129. package/dist/package.json +1 -0
  130. package/dist/subscribers/comment-created.d.ts +10 -0
  131. package/dist/subscribers/comment-created.d.ts.map +1 -0
  132. package/dist/subscribers/comment-created.js +25 -0
  133. package/dist/subscribers/comment-created.js.map +1 -0
  134. package/dist/subscribers/issue-assigned.d.ts +11 -0
  135. package/dist/subscribers/issue-assigned.d.ts.map +1 -0
  136. package/dist/subscribers/issue-assigned.js +15 -0
  137. package/dist/subscribers/issue-assigned.js.map +1 -0
  138. package/dist/subscribers/issue-created.d.ts +13 -0
  139. package/dist/subscribers/issue-created.d.ts.map +1 -0
  140. package/dist/subscribers/issue-created.js +17 -0
  141. package/dist/subscribers/issue-created.js.map +1 -0
  142. package/dist/utils/upload.d.ts +8 -0
  143. package/dist/utils/upload.d.ts.map +1 -0
  144. package/dist/utils/upload.js +22 -0
  145. package/dist/utils/upload.js.map +1 -0
  146. package/dist/workflows/assign-issue.d.ts +7 -0
  147. package/dist/workflows/assign-issue.d.ts.map +1 -0
  148. package/dist/workflows/assign-issue.js +39 -0
  149. package/dist/workflows/assign-issue.js.map +1 -0
  150. package/dist/workflows/complete-sprint.d.ts +7 -0
  151. package/dist/workflows/complete-sprint.d.ts.map +1 -0
  152. package/dist/workflows/complete-sprint.js +43 -0
  153. package/dist/workflows/complete-sprint.js.map +1 -0
  154. package/dist/workflows/create-issue.d.ts +19 -0
  155. package/dist/workflows/create-issue.d.ts.map +1 -0
  156. package/dist/workflows/create-issue.js +41 -0
  157. package/dist/workflows/create-issue.js.map +1 -0
  158. package/dist/workflows/create-project.d.ts +21 -0
  159. package/dist/workflows/create-project.d.ts.map +1 -0
  160. package/dist/workflows/create-project.js +80 -0
  161. package/dist/workflows/create-project.js.map +1 -0
  162. package/dist/workflows/emit-event.d.ts +3 -0
  163. package/dist/workflows/emit-event.d.ts.map +1 -0
  164. package/dist/workflows/emit-event.js +6 -0
  165. package/dist/workflows/emit-event.js.map +1 -0
  166. package/dist/workflows/update-issue-status.d.ts +7 -0
  167. package/dist/workflows/update-issue-status.d.ts.map +1 -0
  168. package/dist/workflows/update-issue-status.js +38 -0
  169. package/dist/workflows/update-issue-status.js.map +1 -0
  170. package/package.json +46 -0
@@ -0,0 +1,11 @@
1
+ export const POST = async (req, res) => {
2
+ const { orderedIds } = req.body;
3
+ if (!Array.isArray(orderedIds) || orderedIds.length === 0) {
4
+ res.status(400).json({ error: { message: "orderedIds must be a non-empty array" } });
5
+ return;
6
+ }
7
+ const svc = req.scope.resolve("projectModuleService");
8
+ await svc.reorderStatuses(req.params.id, orderedIds);
9
+ res.status(204).send();
10
+ };
11
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/projects/[id]/statuses/reorder/route.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,EAAE,CAAC,CAAA;QACpF,OAAM;IACR,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IAC5D,MAAM,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IACpD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ export declare const POST: (req: any, res: Response) => Promise<void>;
4
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/projects/[id]/statuses/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAMvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAIhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAajD,CAAA"}
@@ -0,0 +1,23 @@
1
+ function toKey(name) {
2
+ return name.toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
3
+ }
4
+ export const GET = async (req, res) => {
5
+ const svc = req.scope.resolve("projectModuleService");
6
+ const statuses = await svc.listStatusesByProject(req.params.id);
7
+ res.json({ statuses });
8
+ };
9
+ export const POST = async (req, res) => {
10
+ const { name, color, category } = req.body;
11
+ if (!name || !color || !category) {
12
+ res.status(400).json({ error: { message: "name, color, and category are required" } });
13
+ return;
14
+ }
15
+ const svc = req.scope.resolve("projectModuleService");
16
+ const existing = await svc.listStatusesByProject(req.params.id);
17
+ const position = existing.length > 0 ? Math.max(...existing.map((s) => s.position)) + 1 : 0;
18
+ const status = await svc.createProjectStatus({
19
+ project_id: req.params.id, name, key: toKey(name), color, category, position,
20
+ });
21
+ res.status(201).json({ status });
22
+ };
23
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/projects/[id]/statuses/route.ts"],"names":[],"mappings":"AAEA,SAAS,KAAK,CAAC,IAAY;IACzB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IAC5D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,EAAE,CAAC,CAAA;QACtF,OAAM;IACR,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IAC5D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAChG,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC;QAC3C,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;KAC7E,CAAC,CAAA;IACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAClC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ export declare const POST: (req: any, res: Response) => Promise<void>;
4
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/projects/[id]/task-lists/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAIhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAQjD,CAAA"}
@@ -0,0 +1,18 @@
1
+ export const GET = async (req, res) => {
2
+ const issueService = req.scope.resolve("issueModuleService");
3
+ const taskLists = await issueService.listTaskListsByProject(req.params.id);
4
+ res.json({ task_lists: taskLists, count: taskLists.length });
5
+ };
6
+ export const POST = async (req, res) => {
7
+ const { name, description } = req.body;
8
+ if (!name?.trim()) {
9
+ res.status(400).json({ error: { message: "name is required" } });
10
+ return;
11
+ }
12
+ const issueService = req.scope.resolve("issueModuleService");
13
+ const taskList = await issueService.createTaskList({
14
+ name: name.trim(), description: description?.trim() || undefined, project_id: req.params.id,
15
+ });
16
+ res.status(201).json({ task_list: taskList });
17
+ };
18
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/projects/[id]/task-lists/route.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAQ,CAAA;IACnE,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC1E,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IACtC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAC/F,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAQ,CAAA;IACnE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;KAC5F,CAAC,CAAA;IACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC/C,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/projects/by-identifier/[identifier]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAOhD,CAAA"}
@@ -0,0 +1,15 @@
1
+ export const GET = async (req, res) => {
2
+ const projectService = req.scope.resolve("projectModuleService");
3
+ const identifier = req.params.identifier;
4
+ if (!identifier) {
5
+ res.status(400).json({ error: { message: "identifier is required" } });
6
+ return;
7
+ }
8
+ const project = await projectService.retrieveProjectByIdentifier(identifier);
9
+ if (!project) {
10
+ res.status(404).json({ error: { message: `Project with identifier "${identifier}" not found` } });
11
+ return;
12
+ }
13
+ res.json({ project });
14
+ };
15
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/projects/by-identifier/[identifier]/route.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IACvE,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAA;IACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IACnG,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAA;IAC5E,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,4BAA4B,UAAU,aAAa,EAAE,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAC3H,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;AACvB,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/projects/check-identifier/[identifier]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAMhD,CAAA"}
@@ -0,0 +1,11 @@
1
+ export const GET = async (req, res) => {
2
+ const projectService = req.scope.resolve("projectModuleService");
3
+ const identifier = (req.params.identifier ?? "").toUpperCase().replace(/[^A-Z0-9]/g, "");
4
+ if (!identifier) {
5
+ res.json({ available: false });
6
+ return;
7
+ }
8
+ const existing = await projectService.retrieveProjectByIdentifier(identifier);
9
+ res.json({ available: !existing });
10
+ };
11
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/projects/check-identifier/[identifier]/route.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IACvE,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IACxF,IAAI,CAAC,UAAU,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAA;IAC7E,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;AACpC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ export declare const POST: (req: any, res: Response) => Promise<void>;
4
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/projects/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAShD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAoBjD,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { createProjectWorkflow } from "../../../workflows/create-project.js";
2
+ export const GET = async (req, res) => {
3
+ const projectService = req.scope.resolve("projectModuleService");
4
+ const limit = Math.min(Number(req.query.limit) || 20, 100);
5
+ const offset = Number(req.query.offset) || 0;
6
+ const filters = {};
7
+ if (req.query.workspace_id)
8
+ filters.workspace_id = req.query.workspace_id;
9
+ if (req.query.status)
10
+ filters.status = req.query.status;
11
+ const [projects, count] = await projectService.listAndCountProjects(filters, { limit, offset });
12
+ res.json({ projects, count, limit, offset });
13
+ };
14
+ export const POST = async (req, res) => {
15
+ const { name, description, workspace_id, visibility, icon, color, identifier, initial_statuses } = req.body;
16
+ if (!name || !workspace_id) {
17
+ res.status(400).json({ error: { message: "name and workspace_id are required" } });
18
+ return;
19
+ }
20
+ const { result: project, errors, transaction_status } = await createProjectWorkflow(req.scope).run({
21
+ input: {
22
+ name, identifier, description: description ?? null, workspace_id,
23
+ visibility: visibility ?? "private", icon: icon ?? null, color: color ?? null,
24
+ owner_id: req.user?.id ?? null, actor_id: req.user?.id ?? null,
25
+ initial_statuses: initial_statuses ?? undefined,
26
+ },
27
+ });
28
+ if (transaction_status === "reverted") {
29
+ const err = errors[0];
30
+ res.status(err.status ?? 500).json({ error: { message: err.message } });
31
+ return;
32
+ }
33
+ res.status(201).json({ project });
34
+ };
35
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/projects/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAE5E,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY;QAAE,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAA;IACzE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAA;IACvD,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAC/F,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IAC3G,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,oCAAoC,EAAE,EAAE,CAAC,CAAA;QAClF,OAAM;IACR,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;QACjG,KAAK,EAAE;YACL,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,YAAY;YAChE,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI;YAC7E,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI;YAC9D,gBAAgB,EAAE,gBAAgB,IAAI,SAAS;SAChD;KACF,CAAC,CAAA;IACF,IAAI,kBAAkB,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACrB,GAAG,CAAC,MAAM,CAAE,GAAW,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QAChF,OAAM;IACR,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;AACnC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/projects/suggest-identifier/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAKhD,CAAA"}
@@ -0,0 +1,7 @@
1
+ export const GET = async (req, res) => {
2
+ const projectService = req.scope.resolve("projectModuleService");
3
+ const name = typeof req.query.name === "string" ? req.query.name : "";
4
+ const identifier = projectService.generateIdentifier(name || "Project");
5
+ res.json({ identifier });
6
+ };
7
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/projects/suggest-identifier/route.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IACvE,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IACrE,MAAM,UAAU,GAAG,cAAc,CAAC,kBAAkB,CAAC,IAAI,IAAI,SAAS,CAAC,CAAA;IACvE,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;AAC1B,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ export declare const PUT: (req: any, res: Response) => Promise<void>;
4
+ export declare const DELETE: (req: any, res: Response) => Promise<void>;
5
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/sprints/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAIhD,CAAA;AAED,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAuBhD,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAInD,CAAA"}
@@ -0,0 +1,41 @@
1
+ import { completeSprintWorkflow } from "../../../../workflows/complete-sprint.js";
2
+ export const GET = async (req, res) => {
3
+ const sprintService = req.scope.resolve("sprintModuleService");
4
+ const sprint = await sprintService.retrieveSprint(req.params.id);
5
+ res.json({ sprint });
6
+ };
7
+ export const PUT = async (req, res) => {
8
+ const sprintService = req.scope.resolve("sprintModuleService");
9
+ const { name, goal, start_date, end_date, status } = req.body;
10
+ if (status === "completed") {
11
+ const { result: sprint, errors, transaction_status } = await completeSprintWorkflow(req.scope).run({
12
+ input: { sprintId: req.params.id, moveIncompleteToSprintId: req.body.moveIncompleteToSprintId ?? null, actor_id: req.user?.id ?? null },
13
+ });
14
+ if (transaction_status === "reverted") {
15
+ const err = errors[0];
16
+ res.status(err.status ?? 500).json({ error: { message: err.message } });
17
+ return;
18
+ }
19
+ res.json({ sprint });
20
+ return;
21
+ }
22
+ const updates = {};
23
+ if (name !== undefined)
24
+ updates.name = name;
25
+ if (goal !== undefined)
26
+ updates.goal = goal;
27
+ if (start_date !== undefined)
28
+ updates.start_date = new Date(start_date);
29
+ if (end_date !== undefined)
30
+ updates.end_date = new Date(end_date);
31
+ if (status !== undefined)
32
+ updates.status = status;
33
+ const sprint = await sprintService.updateSprint(req.params.id, updates);
34
+ res.json({ sprint });
35
+ };
36
+ export const DELETE = async (req, res) => {
37
+ const sprintService = req.scope.resolve("sprintModuleService");
38
+ await sprintService.deleteSprint(req.params.id);
39
+ res.status(204).send();
40
+ };
41
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/sprints/[id]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AAEjF,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAQ,CAAA;IACrE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAChE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAQ,CAAA;IACrE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IAC7D,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;YACjG,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,wBAAwB,EAAE,GAAG,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE;SACxI,CAAC,CAAA;QACF,IAAI,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACrB,GAAG,CAAC,MAAM,CAAE,GAAW,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAChF,OAAM;QACR,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QACpB,OAAM;IACR,CAAC;IACD,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;IAC3C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;IAC3C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAA;IACvE,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;IACjD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACvE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACtD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAQ,CAAA;IACrE,MAAM,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ export declare const POST: (req: any, res: Response) => Promise<void>;
4
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/sprints/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAOhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAUjD,CAAA"}
@@ -0,0 +1,25 @@
1
+ export const GET = async (req, res) => {
2
+ const sprintService = req.scope.resolve("sprintModuleService");
3
+ const filters = {};
4
+ if (req.query.project_id)
5
+ filters.project_id = req.query.project_id;
6
+ if (req.query.status)
7
+ filters.status = req.query.status;
8
+ const [sprints, count] = await sprintService.listAndCountSprints(filters);
9
+ res.json({ sprints, count });
10
+ };
11
+ export const POST = async (req, res) => {
12
+ const sprintService = req.scope.resolve("sprintModuleService");
13
+ const { name, goal, project_id, start_date, end_date } = req.body;
14
+ if (!name || !project_id) {
15
+ res.status(400).json({ error: { message: "name and project_id are required" } });
16
+ return;
17
+ }
18
+ const sprint = await sprintService.createSprint({
19
+ name, goal: goal ?? null, project_id, status: "planned",
20
+ start_date: start_date ? new Date(start_date) : null,
21
+ end_date: end_date ? new Date(end_date) : null,
22
+ });
23
+ res.status(201).json({ sprint });
24
+ };
25
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/sprints/route.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAQ,CAAA;IACrE,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAA;IACnE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAA;IACvD,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACzE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAQ,CAAA;IACrE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IACjE,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kCAAkC,EAAE,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IACtH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC;QAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS;QACvD,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;QACpD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;KAC/C,CAAC,CAAA;IACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAClC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Response } from "express";
2
+ export declare const PUT: (req: any, res: Response) => Promise<void>;
3
+ export declare const DELETE: (req: any, res: Response) => Promise<void>;
4
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/task-lists/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAKhD,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAInD,CAAA"}
@@ -0,0 +1,12 @@
1
+ export const PUT = async (req, res) => {
2
+ const { name, description } = req.body;
3
+ const issueService = req.scope.resolve("issueModuleService");
4
+ const taskList = await issueService.updateTaskList(req.params.id, { name, description });
5
+ res.json({ task_list: taskList });
6
+ };
7
+ export const DELETE = async (req, res) => {
8
+ const issueService = req.scope.resolve("issueModuleService");
9
+ await issueService.deleteTaskList(req.params.id);
10
+ res.status(204).end();
11
+ };
12
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/task-lists/[id]/route.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IACtC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAQ,CAAA;IACnE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;IACxF,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACtD,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAQ,CAAA;IACnE,MAAM,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAChD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;AACvB,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/users/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAOhD,CAAA"}
@@ -0,0 +1,9 @@
1
+ export const GET = async (req, res) => {
2
+ const userService = req.scope.resolve("userModuleService");
3
+ const limit = Math.min(Number(req.query.limit) || 20, 100);
4
+ const offset = Number(req.query.offset) || 0;
5
+ const [users, count] = await userService.listAndCountUsers({}, { limit, offset });
6
+ const safeUsers = users.map(({ password_hash: _, ...u }) => u);
7
+ res.json({ users: safeUsers, count, limit, offset });
8
+ };
9
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/users/route.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAQ,CAAA;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACjF,MAAM,SAAS,GAAI,KAAe,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IACzE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AACtD,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Response } from "express";
2
+ export declare const GET: (req: any, res: Response) => Promise<void>;
3
+ export declare const POST: (req: any, res: Response) => Promise<void>;
4
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/workspaces/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAMhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAUjD,CAAA"}
@@ -0,0 +1,19 @@
1
+ export const GET = async (req, res) => {
2
+ const workspaceService = req.scope.resolve("workspaceModuleService");
3
+ const limit = Math.min(Number(req.query.limit) || 20, 100);
4
+ const offset = Number(req.query.offset) || 0;
5
+ const [workspaces, count] = await workspaceService.listAndCountWorkspaces({}, { limit, offset });
6
+ res.json({ workspaces, count, limit, offset });
7
+ };
8
+ export const POST = async (req, res) => {
9
+ const workspaceService = req.scope.resolve("workspaceModuleService");
10
+ const { name, plan } = req.body;
11
+ if (!name || typeof name !== "string" || name.trim().length === 0) {
12
+ res.status(400).json({ error: { message: "name is required" } });
13
+ return;
14
+ }
15
+ const slug = workspaceService.generateSlug(name.trim());
16
+ const workspace = await workspaceService.createWorkspace({ name: name.trim(), slug, plan: plan ?? "free" });
17
+ res.status(201).json({ workspace });
18
+ };
19
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/workspaces/route.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAQ,CAAA;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,MAAM,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAChG,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAQ,CAAA;IAC3E,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;IAC/B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAA;QAChE,OAAM;IACR,CAAC;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACvD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC,CAAA;IAC3G,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AACrC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Response } from "express";
2
+ export declare const POST: (req: any, res: Response) => Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/auth/login/route.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAOvC,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBASjD,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ const loginSchema = z.object({
3
+ email: z.string().email(),
4
+ password: z.string().min(1),
5
+ });
6
+ export const POST = async (req, res) => {
7
+ const result = loginSchema.safeParse(req.body);
8
+ if (!result.success) {
9
+ res.status(400).json({ error: { message: "Validation error", details: result.error.flatten().fieldErrors } });
10
+ return;
11
+ }
12
+ const authService = req.scope.resolve("authModuleService");
13
+ const response = await authService.login(result.data);
14
+ res.json(response);
15
+ };
16
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/auth/login/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QAC7G,OAAM;IACR,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAQ,CAAA;IACjE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACpB,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Response } from "express";
2
+ export declare const POST: (req: any, res: Response) => Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/auth/register/route.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AASvC,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBASjD,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ const registerSchema = z.object({
3
+ email: z.string().email(),
4
+ password: z.string().min(8, "Password must be at least 8 characters"),
5
+ first_name: z.string().optional(),
6
+ last_name: z.string().optional(),
7
+ });
8
+ export const POST = async (req, res) => {
9
+ const result = registerSchema.safeParse(req.body);
10
+ if (!result.success) {
11
+ res.status(400).json({ error: { message: "Validation error", details: result.error.flatten().fieldErrors } });
12
+ return;
13
+ }
14
+ const authService = req.scope.resolve("authModuleService");
15
+ const response = await authService.register(result.data);
16
+ res.status(201).json(response);
17
+ };
18
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/auth/register/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;IACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QAC7G,OAAM;IACR,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAQ,CAAA;IACjE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAChC,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Tells the Meridian plugin loader where to find this package's
3
+ * api/, links/, subscribers/, and jobs/ directories.
4
+ *
5
+ * Points to the package root so the loader can probe dist/ (production)
6
+ * or src/ (tsx dev mode) automatically.
7
+ */
8
+ export declare const pluginRoot: string;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,QAAgC,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ import { fileURLToPath } from "node:url";
2
+ import path from "node:path";
3
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
4
+ /**
5
+ * Tells the Meridian plugin loader where to find this package's
6
+ * api/, links/, subscribers/, and jobs/ directories.
7
+ *
8
+ * Points to the package root so the loader can probe dist/ (production)
9
+ * or src/ (tsx dev mode) automatically.
10
+ */
11
+ export const pluginRoot = path.resolve(__dirname, "..");
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@meridianjs/types").LinkDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=issue-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-project.d.ts","sourceRoot":"","sources":["../../src/links/issue-project.ts"],"names":[],"mappings":";AAIA,wBAGC"}
@@ -0,0 +1,5 @@
1
+ import { defineLink } from "@meridianjs/framework-utils";
2
+ import ProjectModule from "@meridianjs/project";
3
+ import IssueModule from "@meridianjs/issue";
4
+ export default defineLink(ProjectModule.linkable.project, { linkable: IssueModule.linkable.issue, isList: true });
5
+ //# sourceMappingURL=issue-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-project.js","sourceRoot":"","sources":["../../src/links/issue-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAC/C,OAAO,WAAW,MAAM,mBAAmB,CAAA;AAE3C,eAAe,UAAU,CACvB,aAAa,CAAC,QAAS,CAAC,OAAO,EAC/B,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CACxD,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@meridianjs/types").LinkDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=issue-sprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-sprint.d.ts","sourceRoot":"","sources":["../../src/links/issue-sprint.ts"],"names":[],"mappings":";AAIA,wBAGC"}
@@ -0,0 +1,5 @@
1
+ import { defineLink } from "@meridianjs/framework-utils";
2
+ import SprintModule from "@meridianjs/sprint";
3
+ import IssueModule from "@meridianjs/issue";
4
+ export default defineLink(SprintModule.linkable.sprint, { linkable: IssueModule.linkable.issue, isList: true });
5
+ //# sourceMappingURL=issue-sprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-sprint.js","sourceRoot":"","sources":["../../src/links/issue-sprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,YAAY,MAAM,oBAAoB,CAAA;AAC7C,OAAO,WAAW,MAAM,mBAAmB,CAAA;AAE3C,eAAe,UAAU,CACvB,YAAY,CAAC,QAAS,CAAC,MAAM,EAC7B,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CACxD,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@meridianjs/types").LinkDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=project-workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-workspace.d.ts","sourceRoot":"","sources":["../../src/links/project-workspace.ts"],"names":[],"mappings":";AAIA,wBAGC"}
@@ -0,0 +1,5 @@
1
+ import { defineLink } from "@meridianjs/framework-utils";
2
+ import WorkspaceModule from "@meridianjs/workspace";
3
+ import ProjectModule from "@meridianjs/project";
4
+ export default defineLink(WorkspaceModule.linkable.workspace, { linkable: ProjectModule.linkable.project, isList: true });
5
+ //# sourceMappingURL=project-workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-workspace.js","sourceRoot":"","sources":["../../src/links/project-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,eAAe,MAAM,uBAAuB,CAAA;AACnD,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAE/C,eAAe,UAAU,CACvB,eAAe,CAAC,QAAS,CAAC,SAAS,EACnC,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAC5D,CAAA"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,10 @@
1
+ import type { SubscriberArgs, SubscriberConfig } from "@meridianjs/types";
2
+ interface CommentCreatedData {
3
+ comment_id: string;
4
+ issue_id: string;
5
+ author_id: string;
6
+ }
7
+ export default function handler({ event, container }: SubscriberArgs<CommentCreatedData>): Promise<void>;
8
+ export declare const config: SubscriberConfig;
9
+ export {};
10
+ //# sourceMappingURL=comment-created.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-created.d.ts","sourceRoot":"","sources":["../../src/subscribers/comment-created.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzE,UAAU,kBAAkB;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAA8B,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,cAAc,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB7G;AAED,eAAO,MAAM,MAAM,EAAE,gBAA+C,CAAA"}