@meridianjs/meridian 0.1.17 → 0.1.19
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/dist/api/admin/issues/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/route.js +6 -1
- package/dist/api/admin/issues/[id]/route.js.map +1 -1
- package/dist/api/admin/issues/route.d.ts.map +1 -1
- package/dist/api/admin/issues/route.js +3 -1
- package/dist/api/admin/issues/route.js.map +1 -1
- package/dist/api/admin/org/calendar/route.d.ts +4 -0
- package/dist/api/admin/org/calendar/route.d.ts.map +1 -0
- package/dist/api/admin/org/calendar/route.js +37 -0
- package/dist/api/admin/org/calendar/route.js.map +1 -0
- package/dist/api/admin/org/holidays/[holidayId]/route.d.ts +4 -0
- package/dist/api/admin/org/holidays/[holidayId]/route.d.ts.map +1 -0
- package/dist/api/admin/org/holidays/[holidayId]/route.js +34 -0
- package/dist/api/admin/org/holidays/[holidayId]/route.js.map +1 -0
- package/dist/api/admin/org/holidays/route.d.ts +4 -0
- package/dist/api/admin/org/holidays/route.d.ts.map +1 -0
- package/dist/api/admin/org/holidays/route.js +38 -0
- package/dist/api/admin/org/holidays/route.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/jobs/create-recurring-issues.d.ts +9 -0
- package/dist/jobs/create-recurring-issues.d.ts.map +1 -0
- package/dist/jobs/create-recurring-issues.js +66 -0
- package/dist/jobs/create-recurring-issues.js.map +1 -0
- package/dist/workflows/create-issue.d.ts +2 -0
- package/dist/workflows/create-issue.d.ts.map +1 -1
- package/dist/workflows/create-issue.js +16 -0
- package/dist/workflows/create-issue.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/issues/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAMrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAYhD,CAAA;AAED,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/issues/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAMrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAYhD,CAAA;AAED,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBA6DpE,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAUvE,CAAA"}
|
|
@@ -21,7 +21,8 @@ export const PUT = async (req, res, next) => {
|
|
|
21
21
|
const issueService = req.scope.resolve("issueModuleService");
|
|
22
22
|
const activityService = req.scope.resolve("activityModuleService");
|
|
23
23
|
const allowed = ["title", "description", "status", "priority", "type",
|
|
24
|
-
"assignee_ids", "parent_id", "sprint_id", "task_list_id", "start_date", "due_date", "estimate", "metadata"
|
|
24
|
+
"assignee_ids", "parent_id", "sprint_id", "task_list_id", "start_date", "due_date", "estimate", "metadata",
|
|
25
|
+
"recurrence_frequency", "recurrence_end_date", "next_occurrence_date"];
|
|
25
26
|
const updates = {};
|
|
26
27
|
for (const field of allowed) {
|
|
27
28
|
if (req.body[field] !== undefined)
|
|
@@ -31,6 +32,10 @@ export const PUT = async (req, res, next) => {
|
|
|
31
32
|
updates.start_date = updates.start_date ? new Date(updates.start_date) : null;
|
|
32
33
|
if (updates.due_date !== undefined)
|
|
33
34
|
updates.due_date = updates.due_date ? new Date(updates.due_date) : null;
|
|
35
|
+
if (updates.recurrence_end_date !== undefined)
|
|
36
|
+
updates.recurrence_end_date = updates.recurrence_end_date ? new Date(updates.recurrence_end_date) : null;
|
|
37
|
+
if (updates.next_occurrence_date !== undefined)
|
|
38
|
+
updates.next_occurrence_date = updates.next_occurrence_date ? new Date(updates.next_occurrence_date) : null;
|
|
34
39
|
if (updates.status !== undefined) {
|
|
35
40
|
const { result: issue, errors, transaction_status } = await updateIssueStatusWorkflow(req.scope).run({
|
|
36
41
|
input: { issueId: req.params.id, status: updates.status, actor_id: req.user?.id ?? null },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/issues/[id]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,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,KAAK,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC7D,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;QACtB,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;QACvE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QACxF,IAAI,OAAO,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YACzD,OAAM;QACR,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACvE,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAQ,CAAA;YACnE,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAQ,CAAA;YACzE,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM;gBACpD,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/issues/[id]/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/issues/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAKrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA0BhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/issues/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAKrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA0BhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAmCrE,CAAA"}
|
|
@@ -39,7 +39,7 @@ export const GET = async (req, res) => {
|
|
|
39
39
|
export const POST = async (req, res, next) => {
|
|
40
40
|
requirePermission("issue:create")(req, res, async () => {
|
|
41
41
|
try {
|
|
42
|
-
const { title, project_id, workspace_id, description, type, priority, status, assignee_ids, reporter_id, parent_id, start_date, due_date, estimate, sprint_id, task_list_id, metadata } = req.body;
|
|
42
|
+
const { title, project_id, workspace_id, description, type, priority, status, assignee_ids, reporter_id, parent_id, start_date, due_date, estimate, sprint_id, task_list_id, metadata, recurrence_frequency, recurrence_end_date } = req.body;
|
|
43
43
|
if (!title || !project_id || !workspace_id) {
|
|
44
44
|
res.status(400).json({ error: { message: "title, project_id and workspace_id are required" } });
|
|
45
45
|
return;
|
|
@@ -54,6 +54,8 @@ export const POST = async (req, res, next) => {
|
|
|
54
54
|
due_date: due_date ? new Date(due_date) : undefined,
|
|
55
55
|
estimate: estimate ?? null, sprint_id: sprint_id ?? null, task_list_id: task_list_id ?? null,
|
|
56
56
|
metadata: metadata ?? null,
|
|
57
|
+
recurrence_frequency: recurrence_frequency ?? null,
|
|
58
|
+
recurrence_end_date: recurrence_end_date ? new Date(recurrence_end_date) : null,
|
|
57
59
|
actor_id: req.user?.id ?? null,
|
|
58
60
|
},
|
|
59
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/issues/route.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/issues/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,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,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,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,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAA;IACjD,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM;QAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAA;SACvD,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAmB,CAAA;IAC/E,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM;QAAE,OAAO,CAAC,YAAY,GAAG,IAAI,CAAA;SAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY;QAAE,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,YAAsB,CAAA;IAExF,yEAAyE;IACzE,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;QACvE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QAC5F,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YACzD,OAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IACzH,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxE,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EACpE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EACvG,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAC9D,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,iDAAiD,EAAE,EAAE,CAAC,CAAA;gBAC/F,OAAM;YACR,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;gBAC7F,KAAK,EAAE;oBACL,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM;oBACpE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;oBAC/D,WAAW,EAAE,WAAW,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC;oBAClD,SAAS,EAAE,SAAS,IAAI,IAAI;oBAC5B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;oBACpD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;oBACnD,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE,YAAY,EAAE,YAAY,IAAI,IAAI;oBAC5F,QAAQ,EAAE,QAAQ,IAAI,IAAI;oBAC1B,oBAAoB,EAAE,oBAAoB,IAAI,IAAI;oBAClD,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI;oBAC/E,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI;iBAC/B;aACF,CAAC,CAAA;YACF,IAAI,kBAAkB,KAAK,UAAU,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;gBACrB,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;gBAChF,OAAM;YACR,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
|
+
export declare const GET: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
3
|
+
export declare const PUT: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
4
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/org/calendar/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAQpE,CAAA;AAED,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAyBpE,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { requireRoles } from "@meridianjs/auth";
|
|
2
|
+
export const GET = async (req, res, next) => {
|
|
3
|
+
try {
|
|
4
|
+
const service = req.scope.resolve("orgCalendarModuleService");
|
|
5
|
+
const calendar = await service.getOrCreateCalendar();
|
|
6
|
+
res.json({ working_days: calendar.working_days, timezone: calendar.timezone });
|
|
7
|
+
}
|
|
8
|
+
catch (err) {
|
|
9
|
+
next(err);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
export const PUT = async (req, res, next) => {
|
|
13
|
+
requireRoles("super-admin", "admin")(req, res, async () => {
|
|
14
|
+
try {
|
|
15
|
+
const service = req.scope.resolve("orgCalendarModuleService");
|
|
16
|
+
const { working_days, timezone } = req.body;
|
|
17
|
+
const calendar = await service.getOrCreateCalendar();
|
|
18
|
+
const updates = {};
|
|
19
|
+
if (working_days && typeof working_days === "object") {
|
|
20
|
+
const days = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
|
|
21
|
+
const normalized = {};
|
|
22
|
+
for (const day of days) {
|
|
23
|
+
normalized[day] = working_days[day] === true;
|
|
24
|
+
}
|
|
25
|
+
updates.working_days = normalized;
|
|
26
|
+
}
|
|
27
|
+
if (timezone !== undefined)
|
|
28
|
+
updates.timezone = timezone ?? null;
|
|
29
|
+
const updated = await service.updateOrgCalendar(calendar.id, updates);
|
|
30
|
+
res.json({ working_days: updated.working_days, timezone: updated.timezone });
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
next(err);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/org/calendar/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACvE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAQ,CAAA;QACpE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAA;QACpD,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACvE,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAQ,CAAA;YACpE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAE3C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAA;YAEpD,MAAM,OAAO,GAA4B,EAAE,CAAA;YAC3C,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;gBAC9D,MAAM,UAAU,GAA4B,EAAE,CAAA;gBAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;gBAC9C,CAAC;gBACD,OAAO,CAAC,YAAY,GAAG,UAAU,CAAA;YACnC,CAAC;YACD,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAA;YAE/D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YACrE,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
|
+
export declare const PUT: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
3
|
+
export declare const DELETE: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
4
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/org/holidays/[holidayId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAgBpE,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAUvE,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { requireRoles } from "@meridianjs/auth";
|
|
2
|
+
export const PUT = async (req, res, next) => {
|
|
3
|
+
requireRoles("super-admin", "admin")(req, res, async () => {
|
|
4
|
+
try {
|
|
5
|
+
const service = req.scope.resolve("orgCalendarModuleService");
|
|
6
|
+
const { name, date, recurring } = req.body;
|
|
7
|
+
const updates = {};
|
|
8
|
+
if (name !== undefined)
|
|
9
|
+
updates.name = name.trim();
|
|
10
|
+
if (date !== undefined)
|
|
11
|
+
updates.date = new Date(date);
|
|
12
|
+
if (recurring !== undefined)
|
|
13
|
+
updates.recurring = recurring === true;
|
|
14
|
+
const holiday = await service.updateOrgHoliday(req.params.holidayId, updates);
|
|
15
|
+
res.json({ holiday });
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
next(err);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
export const DELETE = async (req, res, next) => {
|
|
23
|
+
requireRoles("super-admin", "admin")(req, res, async () => {
|
|
24
|
+
try {
|
|
25
|
+
const service = req.scope.resolve("orgCalendarModuleService");
|
|
26
|
+
await service.deleteOrgHoliday(req.params.holidayId);
|
|
27
|
+
res.status(204).send();
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
next(err);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/org/holidays/[holidayId]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACvE,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAQ,CAAA;YACpE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAC1C,MAAM,OAAO,GAA4B,EAAE,CAAA;YAC3C,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAClD,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;YACrD,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,CAAC,SAAS,GAAG,SAAS,KAAK,IAAI,CAAA;YAEnE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAC7E,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC1E,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAQ,CAAA;YACpE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACpD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Response, NextFunction } from "express";
|
|
2
|
+
export declare const GET: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
3
|
+
export declare const POST: (req: any, res: Response, next: NextFunction) => Promise<void>;
|
|
4
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/org/holidays/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGrD,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBASpE,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,kBAyBrE,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { requireRoles } from "@meridianjs/auth";
|
|
2
|
+
export const GET = async (req, res, next) => {
|
|
3
|
+
try {
|
|
4
|
+
const service = req.scope.resolve("orgCalendarModuleService");
|
|
5
|
+
const year = req.query.year ? parseInt(req.query.year, 10) : new Date().getFullYear();
|
|
6
|
+
const holidays = await service.listHolidaysByYear(year);
|
|
7
|
+
res.json({ holidays, count: holidays.length });
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
next(err);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
export const POST = async (req, res, next) => {
|
|
14
|
+
requireRoles("super-admin", "admin")(req, res, async () => {
|
|
15
|
+
try {
|
|
16
|
+
const service = req.scope.resolve("orgCalendarModuleService");
|
|
17
|
+
const { name, date, recurring } = req.body;
|
|
18
|
+
if (!name || typeof name !== "string" || name.trim().length === 0) {
|
|
19
|
+
res.status(400).json({ error: { message: "name is required" } });
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!date || typeof date !== "string") {
|
|
23
|
+
res.status(400).json({ error: { message: "date is required (YYYY-MM-DD)" } });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const holiday = await service.createOrgHoliday({
|
|
27
|
+
name: name.trim(),
|
|
28
|
+
date: new Date(date),
|
|
29
|
+
recurring: recurring === true,
|
|
30
|
+
});
|
|
31
|
+
res.status(201).json({ holiday });
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
next(err);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/org/holidays/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACvE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAQ,CAAA;QACpE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACvD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxE,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAQ,CAAA;YACpE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAE1C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAA;gBAChE,OAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE,EAAE,CAAC,CAAA;gBAC7E,OAAM;YACR,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC;gBAC7C,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACjB,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC;gBACpB,SAAS,EAAE,SAAS,KAAK,IAAI;aAC9B,CAAC,CAAA;YACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAIlE;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAIlE;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAgC,CAAA;AA2BvD,wBAA8B,QAAQ,CAAC,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpF"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +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;AAG5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AAEvD;;;;;;;GAOG;AACH,MAAM,YAAY,GAAG;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;IACtB,0BAA0B;IAC1B,wBAAwB;IACxB,8BAA8B;IAC9B,yBAAyB;IACzB,4BAA4B;IAC5B,sBAAsB;
|
|
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;AAG5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AAEvD;;;;;;;GAOG;AACH,MAAM,YAAY,GAAG;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;IACtB,0BAA0B;IAC1B,wBAAwB;IACxB,8BAA8B;IAC9B,yBAAyB;IACzB,4BAA4B;IAC5B,sBAAsB;IACtB,0BAA0B;CAC3B,CAAA;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,QAAQ,CAAC,GAA8B;IACnE,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MeridianContainer, ScheduledJobConfig } from "@meridianjs/types";
|
|
2
|
+
/**
|
|
3
|
+
* Daily cron job that creates one new issue instance for each recurring template
|
|
4
|
+
* whose next_occurrence_date is due today. After creating the instance, advances
|
|
5
|
+
* next_occurrence_date by one period (weekly = +7 days, monthly = +1 month).
|
|
6
|
+
*/
|
|
7
|
+
export default function fn(container: MeridianContainer): Promise<void>;
|
|
8
|
+
export declare const config: ScheduledJobConfig;
|
|
9
|
+
//# sourceMappingURL=create-recurring-issues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-recurring-issues.d.ts","sourceRoot":"","sources":["../../src/jobs/create-recurring-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE9E;;;;GAIG;AACH,wBAA8B,EAAE,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE5E;AAED,eAAO,MAAM,MAAM,EAAE,kBAGpB,CAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daily cron job that creates one new issue instance for each recurring template
|
|
3
|
+
* whose next_occurrence_date is due today. After creating the instance, advances
|
|
4
|
+
* next_occurrence_date by one period (weekly = +7 days, monthly = +1 month).
|
|
5
|
+
*/
|
|
6
|
+
export default async function fn(container) {
|
|
7
|
+
const logger = container.resolve("logger");
|
|
8
|
+
const svc = container.resolve("issueModuleService");
|
|
9
|
+
logger.info("[job:create-recurring-issues] Checking for due recurring issues");
|
|
10
|
+
const dueIssues = await svc.listDueRecurringIssues();
|
|
11
|
+
if (dueIssues.length === 0) {
|
|
12
|
+
logger.info("[job:create-recurring-issues] No recurring issues due today");
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
let created = 0;
|
|
16
|
+
for (const template of dueIssues) {
|
|
17
|
+
const occurrenceDate = new Date(template.next_occurrence_date);
|
|
18
|
+
// Skip if past the end date
|
|
19
|
+
if (template.recurrence_end_date && occurrenceDate > new Date(template.recurrence_end_date)) {
|
|
20
|
+
logger.info(`[job:create-recurring-issues] Skipping ${template.identifier} — past end date`);
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const freq = template.recurrence_frequency;
|
|
24
|
+
const freqLabel = freq === "weekly" ? "Weekly" : "Monthly";
|
|
25
|
+
const durationMs = template.due_date && template.start_date
|
|
26
|
+
? new Date(template.due_date).getTime() - new Date(template.start_date).getTime()
|
|
27
|
+
: null;
|
|
28
|
+
try {
|
|
29
|
+
await svc.createIssueInProject({
|
|
30
|
+
title: `${template.title} [${template.identifier}-${freqLabel}]`,
|
|
31
|
+
project_id: template.project_id,
|
|
32
|
+
workspace_id: template.workspace_id,
|
|
33
|
+
type: template.type,
|
|
34
|
+
priority: template.priority,
|
|
35
|
+
status: template.status,
|
|
36
|
+
assignee_ids: template.assignee_ids ?? null,
|
|
37
|
+
reporter_id: template.reporter_id ?? null,
|
|
38
|
+
sprint_id: null,
|
|
39
|
+
task_list_id: template.task_list_id ?? null,
|
|
40
|
+
start_date: occurrenceDate,
|
|
41
|
+
due_date: durationMs !== null ? new Date(occurrenceDate.getTime() + durationMs) : undefined,
|
|
42
|
+
recurrence_source_id: template.id,
|
|
43
|
+
});
|
|
44
|
+
// Advance next_occurrence_date by one period
|
|
45
|
+
const next = new Date(occurrenceDate);
|
|
46
|
+
if (freq === "weekly") {
|
|
47
|
+
next.setDate(next.getDate() + 7);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
next.setMonth(next.getMonth() + 1);
|
|
51
|
+
}
|
|
52
|
+
await svc.updateIssue(template.id, { next_occurrence_date: next });
|
|
53
|
+
created++;
|
|
54
|
+
logger.info(`[job:create-recurring-issues] Created instance for ${template.identifier}, next at ${next.toISOString()}`);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
logger.error(`[job:create-recurring-issues] Failed to create instance for ${template.identifier}: ${err?.message}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
logger.info(`[job:create-recurring-issues] Done — created ${created} instance(s)`);
|
|
61
|
+
}
|
|
62
|
+
export const config = {
|
|
63
|
+
name: "create-recurring-issues",
|
|
64
|
+
schedule: "0 0 * * *", // daily at midnight
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=create-recurring-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-recurring-issues.js","sourceRoot":"","sources":["../../src/jobs/create-recurring-issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@ export interface CreateIssueInput {
|
|
|
16
16
|
task_list_id?: string | null;
|
|
17
17
|
actor_id?: string | null;
|
|
18
18
|
metadata?: Record<string, unknown> | null;
|
|
19
|
+
recurrence_frequency?: "weekly" | "monthly" | null;
|
|
20
|
+
recurrence_end_date?: Date | null;
|
|
19
21
|
}
|
|
20
22
|
export declare const createIssueWorkflow: (container: import("@meridianjs/types").MeridianContainer) => import("@meridianjs/workflow-engine").WorkflowRunner<CreateIssueInput, any>;
|
|
21
23
|
//# sourceMappingURL=create-issue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-issue.d.ts","sourceRoot":"","sources":["../../src/workflows/create-issue.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"create-issue.d.ts","sourceRoot":"","sources":["../../src/workflows/create-issue.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACzC,oBAAoB,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAA;IAClD,mBAAmB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAClC;AAiDD,eAAO,MAAM,mBAAmB,2IAkB/B,CAAA"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { createStep, createWorkflow, StepResponse, WorkflowResponse, transform, } from "@meridianjs/workflow-engine";
|
|
2
2
|
import { emitEventStep } from "./emit-event.js";
|
|
3
|
+
function computeFirstOccurrence(input) {
|
|
4
|
+
if (!input.recurrence_frequency)
|
|
5
|
+
return null;
|
|
6
|
+
const base = input.start_date ? new Date(input.start_date) : new Date();
|
|
7
|
+
const d = new Date(base);
|
|
8
|
+
if (input.recurrence_frequency === "weekly") {
|
|
9
|
+
d.setDate(d.getDate() + 7);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
d.setMonth(d.getMonth() + 1);
|
|
13
|
+
}
|
|
14
|
+
return d;
|
|
15
|
+
}
|
|
3
16
|
const createIssueStep = createStep("create-issue", async (input, { container }) => {
|
|
4
17
|
const svc = container.resolve("issueModuleService");
|
|
5
18
|
const issue = await svc.createIssueInProject({
|
|
@@ -10,6 +23,9 @@ const createIssueStep = createStep("create-issue", async (input, { container })
|
|
|
10
23
|
start_date: input.start_date ?? null, due_date: input.due_date, estimate: input.estimate ?? null,
|
|
11
24
|
sprint_id: input.sprint_id ?? null, task_list_id: input.task_list_id ?? null,
|
|
12
25
|
metadata: input.metadata ?? null,
|
|
26
|
+
recurrence_frequency: input.recurrence_frequency ?? null,
|
|
27
|
+
recurrence_end_date: input.recurrence_end_date ?? null,
|
|
28
|
+
next_occurrence_date: computeFirstOccurrence(input),
|
|
13
29
|
});
|
|
14
30
|
return new StepResponse(issue, { issueId: issue.id });
|
|
15
31
|
}, async ({ issueId }, { container }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-issue.js","sourceRoot":"","sources":["../../src/workflows/create-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,SAAS,GACV,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"create-issue.js","sourceRoot":"","sources":["../../src/workflows/create-issue.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meridianjs/meridian",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.19",
|
|
4
4
|
"description": "Default API routes, workflows, links, and subscribers for Meridian applications",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"@meridianjs/team-member": "^0.1.0",
|
|
38
38
|
"@meridianjs/project-member": "^0.1.0",
|
|
39
39
|
"@meridianjs/app-role": "^0.1.0",
|
|
40
|
+
"@meridianjs/org-calendar": "^0.1.0",
|
|
40
41
|
"multer": "^1.4.5-lts.1",
|
|
41
42
|
"zod": "^3.24.0"
|
|
42
43
|
},
|