@meridianjs/meridian 2.1.0 → 2.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/notifications/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAShD,CAAA"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/admin/notifications/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA2EhD,CAAA"}
@@ -1,5 +1,7 @@
1
1
  export const GET = async (req, res) => {
2
2
  const notifService = req.scope.resolve("notificationModuleService");
3
+ const projectService = req.scope.resolve("projectModuleService");
4
+ const workspaceService = req.scope.resolve("workspaceModuleService");
3
5
  const userId = req.user?.id;
4
6
  if (!userId) {
5
7
  res.status(401).json({ error: { message: "Unauthorized" } });
@@ -9,6 +11,56 @@ export const GET = async (req, res) => {
9
11
  const offset = Number(req.query.offset) || 0;
10
12
  const unreadOnly = req.query.unread === "true";
11
13
  const [notifications, count] = await notifService.listNotificationsForUser(userId, { limit, offset, unreadOnly });
12
- res.json({ notifications, count, limit, offset });
14
+ const projectIds = [...new Set(notifications.flatMap((notification) => {
15
+ if (notification.entity_type === "project")
16
+ return [notification.entity_id];
17
+ const projectId = notification.metadata?.project_id;
18
+ if ((notification.entity_type === "issue" ||
19
+ notification.entity_type === "project_access_request" ||
20
+ notification.entity_type === "project_access_resolved") &&
21
+ typeof projectId === "string") {
22
+ return [projectId];
23
+ }
24
+ return [];
25
+ }))];
26
+ const workspaceIds = [...new Set(notifications.flatMap((notification) => {
27
+ const ids = [];
28
+ if (typeof notification.workspace_id === "string")
29
+ ids.push(notification.workspace_id);
30
+ if (typeof notification.metadata?.workspace_id === "string")
31
+ ids.push(notification.metadata.workspace_id);
32
+ return ids;
33
+ }))];
34
+ const [projectEntries, workspaceEntries] = await Promise.all([
35
+ Promise.all(projectIds.map(async (id) => [id, await projectService.retrieveProject(id).catch(() => null)])),
36
+ Promise.all(workspaceIds.map(async (id) => [id, await workspaceService.retrieveWorkspace(id).catch(() => null)])),
37
+ ]);
38
+ const projectMap = new Map(projectEntries);
39
+ const workspaceMap = new Map(workspaceEntries);
40
+ const enrichedNotifications = notifications.map((notification) => {
41
+ const metadata = { ...(notification.metadata ?? {}) };
42
+ const projectId = notification.entity_type === "project"
43
+ ? notification.entity_id
44
+ : typeof metadata.project_id === "string"
45
+ ? metadata.project_id
46
+ : null;
47
+ const project = projectId ? projectMap.get(projectId) : null;
48
+ const workspaceId = typeof metadata.workspace_id === "string"
49
+ ? metadata.workspace_id
50
+ : project?.workspace_id ?? notification.workspace_id;
51
+ const workspace = workspaceId ? workspaceMap.get(workspaceId) : null;
52
+ if (project) {
53
+ metadata.project_id ??= project.id;
54
+ metadata.project_identifier ??= project.identifier;
55
+ metadata.project_name ??= project.name;
56
+ metadata.workspace_id ??= project.workspace_id;
57
+ }
58
+ if (workspace) {
59
+ metadata.workspace_id ??= workspace.id;
60
+ metadata.workspace_slug ??= workspace.slug;
61
+ }
62
+ return { ...notification, metadata };
63
+ });
64
+ res.json({ notifications: enrichedNotifications, count, limit, offset });
13
65
  };
14
66
  //# sourceMappingURL=route.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/notifications/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,2BAA2B,CAAQ,CAAA;IAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IACrF,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,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAA;IAC9C,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IACjH,GAAG,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AACnD,CAAC,CAAA"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/api/admin/notifications/route.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meridianjs/meridian",
3
- "version": "2.1.0",
3
+ "version": "2.2.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": "^2.1.0",
24
- "@meridianjs/framework-utils": "^2.1.0",
25
- "@meridianjs/workflow-engine": "^2.1.0",
26
- "@meridianjs/types": "^2.1.0",
23
+ "@meridianjs/framework": "^2.2.0",
24
+ "@meridianjs/framework-utils": "^2.2.0",
25
+ "@meridianjs/workflow-engine": "^2.2.0",
26
+ "@meridianjs/types": "^2.2.0",
27
27
  "@meridianjs/user": "^2.0.0",
28
28
  "@meridianjs/workspace": "^1.2.1",
29
- "@meridianjs/auth": "^2.1.0",
29
+ "@meridianjs/auth": "^2.2.0",
30
30
  "@meridianjs/project": "^2.0.0",
31
31
  "@meridianjs/issue": "^2.0.0",
32
32
  "@meridianjs/sprint": "^1.0.1",