@meridianjs/meridian 1.2.0 → 1.4.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.
@@ -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/my/tasks/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAyFhD,CAAA"}
@@ -0,0 +1,73 @@
1
+ export const GET = async (req, res) => {
2
+ const issueService = req.scope.resolve("issueModuleService");
3
+ const projectService = req.scope.resolve("projectModuleService");
4
+ const limit = Math.min(Number(req.query.limit) || 50, 200);
5
+ const offset = Number(req.query.offset) || 0;
6
+ // Broad fetch — then post-filter by assignee
7
+ let [issues, count] = await issueService.listAndCountIssues({}, { limit: 500, offset: 0, orderBy: { updated_at: "DESC" } });
8
+ const userId = req.user?.id;
9
+ if (!userId) {
10
+ res.status(401).json({ error: { message: "Unauthorized" } });
11
+ return;
12
+ }
13
+ // Filter to only issues assigned to the current user
14
+ issues = issues.filter((i) => (i.assignee_ids ?? []).includes(userId));
15
+ // Filter by workspace_id(s)
16
+ if (req.query.workspace_id) {
17
+ const wsIds = req.query.workspace_id.split(",").filter(Boolean);
18
+ issues = issues.filter((i) => wsIds.includes(i.workspace_id));
19
+ }
20
+ // Apply optional filters
21
+ if (req.query.priority) {
22
+ const priorities = req.query.priority.split(",").filter(Boolean);
23
+ issues = issues.filter((i) => priorities.includes(i.priority));
24
+ }
25
+ if (req.query.type) {
26
+ const types = req.query.type.split(",").filter(Boolean);
27
+ issues = issues.filter((i) => types.includes(i.type));
28
+ }
29
+ // Collect unique project IDs for enrichment
30
+ const projectIds = [...new Set(issues.map((i) => i.project_id))];
31
+ // Batch-fetch projects and their statuses
32
+ const projectMap = new Map();
33
+ const statusMap = new Map();
34
+ if (projectIds.length > 0) {
35
+ const [projects] = await projectService.listAndCountProjects({ id: { $in: projectIds } }, { limit: projectIds.length });
36
+ for (const p of projects) {
37
+ projectMap.set(p.id, { name: p.name, identifier: p.identifier });
38
+ }
39
+ // Fetch statuses for all projects
40
+ for (const pid of projectIds) {
41
+ try {
42
+ const statuses = await projectService.listProjectStatuss({ project_id: pid }, { limit: 50 });
43
+ for (const s of statuses) {
44
+ // Key by project_id + status_key for lookup
45
+ statusMap.set(`${pid}:${s.key}`, { name: s.name, color: s.color, category: s.category });
46
+ }
47
+ }
48
+ catch {
49
+ // Project may not have custom statuses
50
+ }
51
+ }
52
+ }
53
+ // Enrich issues
54
+ const enriched = issues.map((issue) => {
55
+ const proj = projectMap.get(issue.project_id);
56
+ const status = statusMap.get(`${issue.project_id}:${issue.status}`);
57
+ return {
58
+ ...issue,
59
+ _project: proj ?? null,
60
+ _status: status ?? { name: issue.status, color: "#94a3b8", category: "backlog" },
61
+ };
62
+ });
63
+ // Apply category filter after enrichment
64
+ if (req.query.category) {
65
+ const categories = req.query.category.split(",").filter(Boolean);
66
+ const filtered = enriched.filter((i) => categories.includes(i._status.category));
67
+ res.json({ issues: filtered.slice(offset, offset + limit), count: filtered.length, limit, offset });
68
+ return;
69
+ }
70
+ count = enriched.length;
71
+ res.json({ issues: enriched.slice(offset, offset + limit), count, limit, offset });
72
+ };
73
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/my/tasks/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,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;IAEvE,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;IAE5C,6CAA6C;IAC7C,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,kBAAkB,CACzD,EAAE,EACF,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAC3D,CAAA;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;QAC5D,OAAM;IACR,CAAC;IAED,qDAAqD;IACrD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAE3E,4BAA4B;IAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAI,GAAG,CAAC,KAAK,CAAC,YAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC3E,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;IACpE,CAAC;IAED,yBAAyB;IACzB,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,MAAM,UAAU,GAAI,GAAG,CAAC,KAAK,CAAC,QAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5E,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IACrE,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,KAAK,GAAI,GAAG,CAAC,KAAK,CAAC,IAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACnE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,4CAA4C;IAC5C,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAa,CAAA;IAEjF,0CAA0C;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgD,CAAA;IAC1E,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6D,CAAA;IAEtF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,cAAc,CAAC,oBAAoB,CAC1D,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAC3B,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,CAC7B,CAAA;QACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,kCAAkC;QAClC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC5F,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,4CAA4C;oBAC5C,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC1F,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,uCAAuC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QACnE,OAAO;YACL,GAAG,KAAK;YACR,QAAQ,EAAE,IAAI,IAAI,IAAI;YACtB,OAAO,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;SACjF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,yCAAyC;IACzC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,MAAM,UAAU,GAAI,GAAG,CAAC,KAAK,CAAC,QAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5E,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;QACrF,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QACnG,OAAM;IACR,CAAC;IAED,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAA;IACvB,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AACpF,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meridianjs/meridian",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
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",
@@ -20,13 +20,13 @@
20
20
  "prepublishOnly": "cd ../.. && npm run check:routes && cd packages/meridian && npm run build"
21
21
  },
22
22
  "dependencies": {
23
- "@meridianjs/framework": "^1.2.0",
24
- "@meridianjs/framework-utils": "^1.2.0",
25
- "@meridianjs/workflow-engine": "^1.2.0",
26
- "@meridianjs/types": "^1.2.0",
23
+ "@meridianjs/framework": "^1.4.0",
24
+ "@meridianjs/framework-utils": "^1.4.0",
25
+ "@meridianjs/workflow-engine": "^1.4.0",
26
+ "@meridianjs/types": "^1.4.0",
27
27
  "@meridianjs/user": "^1.0.0",
28
28
  "@meridianjs/workspace": "^1.0.0",
29
- "@meridianjs/auth": "^1.2.0",
29
+ "@meridianjs/auth": "^1.4.0",
30
30
  "@meridianjs/project": "^1.0.0",
31
31
  "@meridianjs/issue": "^1.0.0",
32
32
  "@meridianjs/sprint": "^1.0.0",