@meridianjs/meridian 1.31.0 → 2.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.
- package/dist/api/admin/events/route.d.ts.map +1 -1
- package/dist/api/admin/events/route.js +15 -8
- package/dist/api/admin/events/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.js +34 -31
- package/dist/api/admin/issues/[id]/attachments/[attachmentId]/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/attachments/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/attachments/route.js +47 -22
- package/dist/api/admin/issues/[id]/attachments/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/comments/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/comments/route.js +20 -17
- package/dist/api/admin/issues/[id]/comments/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/[logId]/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/[logId]/route.js +63 -60
- package/dist/api/admin/issues/[id]/time-logs/[logId]/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/route.js +42 -17
- package/dist/api/admin/issues/[id]/time-logs/route.js.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/timer/route.d.ts.map +1 -1
- package/dist/api/admin/issues/[id]/time-logs/timer/route.js +49 -24
- package/dist/api/admin/issues/[id]/time-logs/timer/route.js.map +1 -1
- package/dist/api/admin/issues/route.d.ts.map +1 -1
- package/dist/api/admin/issues/route.js +2 -7
- package/dist/api/admin/issues/route.js.map +1 -1
- package/dist/api/admin/my/tasks/route.d.ts.map +1 -1
- package/dist/api/admin/my/tasks/route.js +16 -24
- package/dist/api/admin/my/tasks/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/access/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/access/route.js +15 -2
- package/dist/api/admin/projects/[id]/access/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/access-requests/[requestId]/route.d.ts +4 -0
- package/dist/api/admin/projects/[id]/access-requests/[requestId]/route.d.ts.map +1 -0
- package/dist/api/admin/projects/[id]/access-requests/[requestId]/route.js +105 -0
- package/dist/api/admin/projects/[id]/access-requests/[requestId]/route.js.map +1 -0
- package/dist/api/admin/projects/[id]/access-requests/route.d.ts +5 -0
- package/dist/api/admin/projects/[id]/access-requests/route.d.ts.map +1 -0
- package/dist/api/admin/projects/[id]/access-requests/route.js +138 -0
- package/dist/api/admin/projects/[id]/access-requests/route.js.map +1 -0
- package/dist/api/admin/projects/[id]/health/[updateId]/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/health/[updateId]/route.js +83 -73
- package/dist/api/admin/projects/[id]/health/[updateId]/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/health/[updateId]/send/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/health/[updateId]/send/route.js +68 -65
- package/dist/api/admin/projects/[id]/health/[updateId]/send/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/health/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/health/route.js +33 -30
- package/dist/api/admin/projects/[id]/health/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/share/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/share/route.js +44 -39
- package/dist/api/admin/projects/[id]/share/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/[statusId]/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/[statusId]/route.js +77 -72
- package/dist/api/admin/projects/[id]/statuses/[statusId]/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/reorder/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/reorder/route.js +20 -17
- package/dist/api/admin/projects/[id]/statuses/reorder/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/statuses/route.js +23 -20
- package/dist/api/admin/projects/[id]/statuses/route.js.map +1 -1
- package/dist/api/admin/projects/[id]/task-lists/route.d.ts.map +1 -1
- package/dist/api/admin/projects/[id]/task-lists/route.js +22 -19
- package/dist/api/admin/projects/[id]/task-lists/route.js.map +1 -1
- package/dist/api/admin/projects/route.d.ts.map +1 -1
- package/dist/api/admin/projects/route.js +58 -40
- package/dist/api/admin/projects/route.js.map +1 -1
- package/dist/api/admin/reporting/members/route.d.ts.map +1 -1
- package/dist/api/admin/reporting/members/route.js +2 -6
- package/dist/api/admin/reporting/members/route.js.map +1 -1
- package/dist/api/admin/reporting/time-logs/route.d.ts.map +1 -1
- package/dist/api/admin/reporting/time-logs/route.js +11 -26
- package/dist/api/admin/reporting/time-logs/route.js.map +1 -1
- package/dist/api/admin/task-lists/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/task-lists/[id]/route.js +44 -39
- package/dist/api/admin/task-lists/[id]/route.js.map +1 -1
- package/dist/api/admin/time-logs/active-timer/route.d.ts.map +1 -1
- package/dist/api/admin/time-logs/active-timer/route.js +14 -11
- package/dist/api/admin/time-logs/active-timer/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/access-requests/[requestId]/route.d.ts +1 -0
- package/dist/api/admin/workspaces/[id]/access-requests/[requestId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/access-requests/[requestId]/route.js +35 -15
- package/dist/api/admin/workspaces/[id]/access-requests/[requestId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/access-requests/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/access-requests/route.js +5 -19
- package/dist/api/admin/workspaces/[id]/access-requests/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.js +1 -15
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/route.js +1 -15
- package/dist/api/admin/workspaces/[id]/invitations/[inviteId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/invitations/route.js +49 -65
- package/dist/api/admin/workspaces/[id]/invitations/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/logo/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/logo/route.js +1 -15
- package/dist/api/admin/workspaces/[id]/logo/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.js +1 -19
- package/dist/api/admin/workspaces/[id]/members/[userId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/batch/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/batch/route.js +48 -56
- package/dist/api/admin/workspaces/[id]/members/batch/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/members/route.js +43 -60
- package/dist/api/admin/workspaces/[id]/members/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/route.js +3 -22
- package/dist/api/admin/workspaces/[id]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/[userId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/[userId]/route.js +1 -19
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/[userId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/route.js +1 -19
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/members/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/route.js +1 -19
- package/dist/api/admin/workspaces/[id]/teams/[teamId]/route.js.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/[id]/teams/route.js +1 -19
- package/dist/api/admin/workspaces/[id]/teams/route.js.map +1 -1
- package/dist/api/admin/workspaces/my-access-requests/route.d.ts +3 -0
- package/dist/api/admin/workspaces/my-access-requests/route.d.ts.map +1 -0
- package/dist/api/admin/workspaces/my-access-requests/route.js +20 -0
- package/dist/api/admin/workspaces/my-access-requests/route.js.map +1 -0
- package/dist/api/admin/workspaces/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/route.js +49 -34
- package/dist/api/admin/workspaces/route.js.map +1 -1
- package/dist/api/admin/workspaces/search/route.d.ts.map +1 -1
- package/dist/api/admin/workspaces/search/route.js +5 -2
- package/dist/api/admin/workspaces/search/route.js.map +1 -1
- package/dist/api/auth/_apply-pending-invites.d.ts +12 -0
- package/dist/api/auth/_apply-pending-invites.d.ts.map +1 -0
- package/dist/api/auth/_apply-pending-invites.js +68 -0
- package/dist/api/auth/_apply-pending-invites.js.map +1 -0
- package/dist/api/auth/google/callback/route.d.ts.map +1 -1
- package/dist/api/auth/google/callback/route.js +20 -0
- package/dist/api/auth/google/callback/route.js.map +1 -1
- package/dist/api/auth/invite/[token]/route.d.ts.map +1 -1
- package/dist/api/auth/invite/[token]/route.js +2 -9
- package/dist/api/auth/invite/[token]/route.js.map +1 -1
- package/dist/api/auth/register/route.d.ts.map +1 -1
- package/dist/api/auth/register/route.js +16 -0
- package/dist/api/auth/register/route.js.map +1 -1
- package/dist/api/utils/assign-default-role.d.ts +6 -0
- package/dist/api/utils/assign-default-role.d.ts.map +1 -0
- package/dist/api/utils/assign-default-role.js +23 -0
- package/dist/api/utils/assign-default-role.js.map +1 -0
- package/dist/api/utils/project-access.d.ts +9 -0
- package/dist/api/utils/project-access.d.ts.map +1 -1
- package/dist/api/utils/project-access.js +27 -0
- package/dist/api/utils/project-access.js.map +1 -1
- package/dist/api/utils/workspace-access.d.ts +17 -0
- package/dist/api/utils/workspace-access.d.ts.map +1 -0
- package/dist/api/utils/workspace-access.js +72 -0
- package/dist/api/utils/workspace-access.js.map +1 -0
- package/dist/subscribers/project-access-request-resolved.d.ts +12 -0
- package/dist/subscribers/project-access-request-resolved.d.ts.map +1 -0
- package/dist/subscribers/project-access-request-resolved.js +55 -0
- package/dist/subscribers/project-access-request-resolved.js.map +1 -0
- package/dist/subscribers/project-access-requested.d.ts +11 -0
- package/dist/subscribers/project-access-requested.d.ts.map +1 -0
- package/dist/subscribers/project-access-requested.js +12 -0
- package/dist/subscribers/project-access-requested.js.map +1 -0
- package/dist/subscribers/workspace-access-request-resolved.d.ts +12 -0
- package/dist/subscribers/workspace-access-request-resolved.d.ts.map +1 -0
- package/dist/subscribers/workspace-access-request-resolved.js +60 -0
- package/dist/subscribers/workspace-access-request-resolved.js.map +1 -0
- package/dist/subscribers/workspace-access-requested.d.ts.map +1 -1
- package/dist/subscribers/workspace-access-requested.js +1 -0
- package/dist/subscribers/workspace-access-requested.js.map +1 -1
- package/package.json +19 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/members/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/members/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAOvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAuGhD,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getAccessibleWorkspaceIds } from "../../../utils/workspace-access.js";
|
|
1
2
|
export const GET = async (req, res) => {
|
|
2
3
|
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
3
4
|
const projectMemberService = req.scope.resolve("projectMemberModuleService");
|
|
@@ -39,12 +40,7 @@ export const GET = async (req, res) => {
|
|
|
39
40
|
// Filter workspace IDs to only those the user can access (public + private where member)
|
|
40
41
|
let wsIds = rawWsIds;
|
|
41
42
|
if (rawWsIds.length > 0) {
|
|
42
|
-
|
|
43
|
-
const workspaces = (await Promise.all(rawWsIds.map((id) => workspaceService.retrieveWorkspace(id).catch(() => null)))).filter(Boolean);
|
|
44
|
-
const memberWsIds = new Set(await workspaceMemberService.getWorkspaceIdsForUser(userId));
|
|
45
|
-
wsIds = workspaces
|
|
46
|
-
.filter((ws) => !ws.is_private || memberWsIds.has(ws.id))
|
|
47
|
-
.map((ws) => ws.id);
|
|
43
|
+
wsIds = await getAccessibleWorkspaceIds(req, rawWsIds);
|
|
48
44
|
}
|
|
49
45
|
let userIdSet = new Set();
|
|
50
46
|
// Step 1: Collect user IDs from workspace members
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/members/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/members/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/time-logs/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/time-logs/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAOvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAwHhD,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getAccessibleWorkspaceIds } from "../../../utils/workspace-access.js";
|
|
1
2
|
export const GET = async (req, res) => {
|
|
2
3
|
const issueService = req.scope.resolve("issueModuleService");
|
|
3
4
|
const { user_id, user_ids, project_id, project_ids, workspace_id, workspace_ids, from, to, limit, offset } = req.query;
|
|
@@ -44,22 +45,7 @@ export const GET = async (req, res) => {
|
|
|
44
45
|
return;
|
|
45
46
|
}
|
|
46
47
|
if (isPrivileged) {
|
|
47
|
-
const
|
|
48
|
-
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
49
|
-
const userId = req.user?.id;
|
|
50
|
-
let workspaces;
|
|
51
|
-
if (wsIds.length > 0) {
|
|
52
|
-
workspaces = (await Promise.all(wsIds.map((id) => workspaceService.retrieveWorkspace(id).catch(() => null)))).filter(Boolean);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
// No explicit workspace filter — scope to all workspaces the user can access
|
|
56
|
-
const [all] = await workspaceService.listAndCountWorkspaces({}, { limit: 1000 });
|
|
57
|
-
workspaces = all;
|
|
58
|
-
}
|
|
59
|
-
const memberWsIds = new Set(await workspaceMemberService.getWorkspaceIdsForUser(userId));
|
|
60
|
-
const allowedIds = workspaces
|
|
61
|
-
.filter((ws) => !ws.is_private || memberWsIds.has(ws.id))
|
|
62
|
-
.map((ws) => ws.id);
|
|
48
|
+
const allowedIds = await getAccessibleWorkspaceIds(req, wsIds.length > 0 ? wsIds : undefined);
|
|
63
49
|
if (allowedIds.length === 0) {
|
|
64
50
|
res.json({ time_logs: [], count: 0, total_minutes: 0, total_employees: 0, total_projects: 0, limit: 0, offset: 0 });
|
|
65
51
|
return;
|
|
@@ -69,21 +55,20 @@ export const GET = async (req, res) => {
|
|
|
69
55
|
else
|
|
70
56
|
filters.workspace_id = allowedIds;
|
|
71
57
|
}
|
|
72
|
-
if (!isPrivileged
|
|
58
|
+
if (!isPrivileged) {
|
|
73
59
|
const userId = req.user?.id;
|
|
74
60
|
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
75
61
|
const teamMemberService = req.scope.resolve("teamMemberModuleService");
|
|
76
62
|
const projectMemberService = req.scope.resolve("projectMemberModuleService");
|
|
77
|
-
// Hoist getUserTeamIds out of the loop — same result every iteration
|
|
78
63
|
const userTeamIds = await teamMemberService.getUserTeamIds(userId);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
if (
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
64
|
+
const allAccessibleProjectIds = await projectMemberService.getAccessibleProjectIds(userId, userTeamIds);
|
|
65
|
+
if (wsIds.length > 0) {
|
|
66
|
+
// Batch-check membership for all requested workspaces in one query
|
|
67
|
+
const memberships = await workspaceMemberService.listWorkspaceMembers({ workspace_id: wsIds.length === 1 ? wsIds[0] : wsIds, user_id: userId });
|
|
68
|
+
if (memberships.length === 0) {
|
|
69
|
+
res.json({ time_logs: [], count: 0, total_minutes: 0, total_employees: 0, total_projects: 0, limit: 0, offset: 0 });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
87
72
|
}
|
|
88
73
|
if (filterProjectIds.length > 0) {
|
|
89
74
|
// Intersect requested projects with accessible projects
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/time-logs/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/reporting/time-logs/route.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAE9E,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAuB,CAAA;IAClF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAA2C,CAAA;IAE5J,MAAM,KAAK,GAAa,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IAC7C,MAAM,WAAW,GAAa,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAA;IACzD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IAExH,MAAM,OAAO,GAA4B,EAAE,CAAA;IAE3C,qEAAqE;IACrE,MAAM,KAAK,GAAG,aAAa;QACzB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC1C,CAAC,CAAC,YAAY;YACZ,CAAC,CAAC,CAAC,YAAY,CAAC;YAChB,CAAC,CAAC,EAAE,CAAA;IACR,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;SAClD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAA;IACvD,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,MAAM,UAAU,GAA4B,EAAE,CAAA;QAC9C,IAAI,IAAI;YAAE,UAAU,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,EAAE;YAAE,UAAU,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAA;QACtC,OAAO,CAAC,WAAW,GAAG,UAAU,CAAA;IAClC,CAAC;IAED,qDAAqD;IACrD,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/F,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE9G,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IAElD,qEAAqE;IACrE,IAAI,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACrD,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,UAAU,GAAG,gBAAgB,CAAA;QACtE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,OAAO,GAAG,aAAa,CAAA;QAC7D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAA;QACpH,GAAG,CAAC,IAAI,CAAC;YACP,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa;YACrF,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc;YAC9E,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY;SACzC,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAE7F,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;YACnH,OAAM;QACR,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;;YAC5D,OAAO,CAAC,YAAY,GAAG,UAAU,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;QAC3B,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAiC,CAAA;QAChH,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAA4B,CAAA;QACjG,MAAM,oBAAoB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,4BAA4B,CAA+B,CAAA;QAE1G,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAClE,MAAM,uBAAuB,GAAG,MAAM,oBAAoB,CAAC,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QAEvG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,mEAAmE;YACnE,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,oBAAoB,CACnE,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAS,CAChF,CAAA;YACD,IAAK,WAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;gBACnH,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,wDAAwD;YACxD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAA;YACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;gBACnH,OAAM;YACR,CAAC;YACD,OAAO,CAAC,UAAU,GAAG,OAAO,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;gBACnH,OAAM;YACR,CAAC;YACD,OAAO,CAAC,UAAU,GAAG,uBAAuB,CAAA;QAC9C,CAAC;IACH,CAAC;SAAM,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,UAAU,GAAG,gBAAgB,CAAA;IACvC,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,GAAG,aAAa,CAAA;IACjC,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACrD,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,wBAAwB,CAAC;QACzD,GAAG,OAAO;QACV,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,YAAY;KACrB,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC;QACP,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,YAAY;KACrB,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1 +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;
|
|
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;AAIvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAiBhD,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAgBnD,CAAA"}
|
|
@@ -1,45 +1,50 @@
|
|
|
1
|
+
import { requirePermission } from "@meridianjs/auth";
|
|
1
2
|
import { hasProjectAccess } from "../../../utils/project-access.js";
|
|
2
3
|
export const PUT = async (req, res) => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
4
|
+
requirePermission("project:update")(req, res, async () => {
|
|
5
|
+
const { name, description } = req.body;
|
|
6
|
+
const issueService = req.scope.resolve("issueModuleService");
|
|
7
|
+
const taskListRepo = req.scope.resolve("taskListRepository");
|
|
8
|
+
const taskList = await taskListRepo.findOne({ id: req.params.id });
|
|
9
|
+
if (!taskList) {
|
|
10
|
+
res.status(404).json({ error: { message: "Task list not found" } });
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const projectService = req.scope.resolve("projectModuleService");
|
|
14
|
+
const project = await projectService.retrieveProject(taskList.project_id).catch(() => null);
|
|
15
|
+
if (!project) {
|
|
16
|
+
res.status(404).json({ error: { message: "Project not found" } });
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (!await hasProjectAccess(req, project)) {
|
|
20
|
+
res.status(403).json({ error: { message: "Forbidden" } });
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const updated = await issueService.updateTaskList(req.params.id, { name, description });
|
|
24
|
+
res.json({ task_list: updated });
|
|
25
|
+
});
|
|
23
26
|
};
|
|
24
27
|
export const DELETE = async (req, res) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
28
|
+
requirePermission("project:update")(req, res, async () => {
|
|
29
|
+
const issueService = req.scope.resolve("issueModuleService");
|
|
30
|
+
const taskListRepo = req.scope.resolve("taskListRepository");
|
|
31
|
+
const taskList = await taskListRepo.findOne({ id: req.params.id });
|
|
32
|
+
if (!taskList) {
|
|
33
|
+
res.status(404).json({ error: { message: "Task list not found" } });
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const projectService = req.scope.resolve("projectModuleService");
|
|
37
|
+
const project = await projectService.retrieveProject(taskList.project_id).catch(() => null);
|
|
38
|
+
if (!project) {
|
|
39
|
+
res.status(404).json({ error: { message: "Project not found" } });
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (!await hasProjectAccess(req, project)) {
|
|
43
|
+
res.status(403).json({ error: { message: "Forbidden" } });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
await issueService.deleteTaskList(req.params.id);
|
|
47
|
+
res.status(204).end();
|
|
48
|
+
});
|
|
44
49
|
};
|
|
45
50
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/task-lists/[id]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/task-lists/[id]/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/time-logs/active-timer/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/api/admin/time-logs/active-timer/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAqChD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAejD,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { requirePermission } from "@meridianjs/auth";
|
|
1
2
|
import { sseManager } from "@meridianjs/framework";
|
|
2
3
|
export const GET = async (req, res) => {
|
|
3
4
|
const issueService = req.scope.resolve("issueModuleService");
|
|
@@ -36,16 +37,18 @@ export const GET = async (req, res) => {
|
|
|
36
37
|
});
|
|
37
38
|
};
|
|
38
39
|
export const POST = async (req, res) => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
requirePermission("issue:update")(req, res, async () => {
|
|
41
|
+
const issueService = req.scope.resolve("issueModuleService");
|
|
42
|
+
const userId = req.user?.id ?? "system";
|
|
43
|
+
const stopped = await issueService.stopTimerForUser(userId);
|
|
44
|
+
if (!stopped) {
|
|
45
|
+
res.status(404).json({ error: { message: "No active timer found." } });
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (stopped.workspace_id) {
|
|
49
|
+
sseManager.broadcast(stopped.workspace_id, "timer.stopped", { issue_id: stopped.issue_id, user_id: userId });
|
|
50
|
+
}
|
|
51
|
+
res.json({ time_log: stopped });
|
|
52
|
+
});
|
|
50
53
|
};
|
|
51
54
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/time-logs/active-timer/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,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,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,QAAQ,CAAA;IAEvC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QAChC,OAAM;IACR,CAAC;IAED,8DAA8D;IAC9D,IAAI,gBAAgB,GAAkB,IAAI,CAAA;IAC1C,IAAI,WAAW,GAAkB,IAAI,CAAA;IACrC,IAAI,kBAAkB,GAAkB,IAAI,CAAA;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC9D,IAAI,KAAK,EAAE,CAAC;YACV,gBAAgB,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAA;YAC3C,WAAW,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAA;YACjC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;gBACvE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;gBACtE,kBAAkB,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAA;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;IACrD,CAAC;IAED,GAAG,CAAC,IAAI,CAAC;QACP,YAAY,EAAE;YACZ,GAAG,KAAK;YACR,gBAAgB;YAChB,WAAW;YACX,kBAAkB;SACnB;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/api/admin/time-logs/active-timer/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,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,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,QAAQ,CAAA;IAEvC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QAChC,OAAM;IACR,CAAC;IAED,8DAA8D;IAC9D,IAAI,gBAAgB,GAAkB,IAAI,CAAA;IAC1C,IAAI,WAAW,GAAkB,IAAI,CAAA;IACrC,IAAI,kBAAkB,GAAkB,IAAI,CAAA;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC9D,IAAI,KAAK,EAAE,CAAC;YACV,gBAAgB,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAA;YAC3C,WAAW,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAA;YACjC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAQ,CAAA;gBACvE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;gBACtE,kBAAkB,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAA;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;IACrD,CAAC;IAED,GAAG,CAAC,IAAI,CAAC;QACP,YAAY,EAAE;YACZ,GAAG,KAAK;YACR,gBAAgB;YAChB,WAAW;YACX,kBAAkB;SACnB;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAQ,CAAA;QACnE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,QAAQ,CAAA;QAEvC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAA;YACtE,OAAM;QACR,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;QAC9G,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/access-requests/[requestId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/access-requests/[requestId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAKvC,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAmBnD,CAAA;AAED,eAAO,MAAM,KAAK,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA+DlD,CAAA"}
|
|
@@ -1,23 +1,31 @@
|
|
|
1
|
+
import { assertWorkspaceAdmin } from "../../../../../utils/workspace-access.js";
|
|
2
|
+
import { assignDefaultUserRole } from "../../../../../utils/assign-default-role.js";
|
|
3
|
+
// Owner cancels their own pending request
|
|
4
|
+
export const DELETE = async (req, res) => {
|
|
5
|
+
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
6
|
+
const accessRequest = await workspaceMemberService.getAccessRequest(req.params.requestId);
|
|
7
|
+
if (!accessRequest || accessRequest.workspace_id !== req.params.id) {
|
|
8
|
+
res.status(404).json({ error: { message: "Access request not found" } });
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (accessRequest.user_id !== req.user?.id) {
|
|
12
|
+
res.status(403).json({ error: { message: "Forbidden — can only cancel your own request" } });
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (accessRequest.status !== "pending") {
|
|
16
|
+
res.status(409).json({ error: { message: "Request is no longer pending" } });
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
await workspaceMemberService.deleteAccessRequest(req.params.requestId);
|
|
20
|
+
res.status(204).end();
|
|
21
|
+
};
|
|
1
22
|
export const PATCH = async (req, res) => {
|
|
23
|
+
if (!await assertWorkspaceAdmin(req, res))
|
|
24
|
+
return;
|
|
2
25
|
const workspaceService = req.scope.resolve("workspaceModuleService");
|
|
3
26
|
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
4
27
|
const notificationService = req.scope.resolve("notificationModuleService");
|
|
5
|
-
const userService = req.scope.resolve("userModuleService");
|
|
6
28
|
const workspace = await workspaceService.retrieveWorkspace(req.params.id);
|
|
7
|
-
if (!workspace) {
|
|
8
|
-
res.status(404).json({ error: { message: "Workspace not found" } });
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
// Only workspace admins or global admins can approve/deny
|
|
12
|
-
const roles = req.user?.roles ?? [];
|
|
13
|
-
const isGlobalAdmin = roles.includes("super-admin") || roles.includes("admin");
|
|
14
|
-
if (!isGlobalAdmin) {
|
|
15
|
-
const membership = await workspaceMemberService.getMembership(req.params.id, req.user?.id);
|
|
16
|
-
if (!membership || membership.role !== "admin") {
|
|
17
|
-
res.status(403).json({ error: { message: "Workspace admin access required" } });
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
29
|
const accessRequest = await workspaceMemberService.getAccessRequest(req.params.requestId);
|
|
22
30
|
if (!accessRequest || accessRequest.workspace_id !== req.params.id) {
|
|
23
31
|
res.status(404).json({ error: { message: "Access request not found" } });
|
|
@@ -34,6 +42,7 @@ export const PATCH = async (req, res) => {
|
|
|
34
42
|
}
|
|
35
43
|
if (action === "approve") {
|
|
36
44
|
await workspaceMemberService.ensureMember(req.params.id, accessRequest.user_id, "member");
|
|
45
|
+
await assignDefaultUserRole(req, accessRequest.user_id);
|
|
37
46
|
}
|
|
38
47
|
const updated = await workspaceMemberService.updateAccessRequestStatus(req.params.requestId, action === "approve" ? "approved" : "denied");
|
|
39
48
|
// Notify the requesting user of the outcome
|
|
@@ -48,6 +57,17 @@ export const PATCH = async (req, res) => {
|
|
|
48
57
|
workspace_id: req.params.id,
|
|
49
58
|
metadata: { workspace_id: req.params.id, workspace_slug: workspace.slug },
|
|
50
59
|
}).catch(() => { });
|
|
60
|
+
const eventBus = req.scope.resolve("eventBus");
|
|
61
|
+
eventBus.emit({
|
|
62
|
+
name: "workspace.access_request_resolved",
|
|
63
|
+
data: {
|
|
64
|
+
workspace_id: workspace.id,
|
|
65
|
+
workspace_name: workspace.name,
|
|
66
|
+
workspace_slug: workspace.slug,
|
|
67
|
+
user_id: accessRequest.user_id,
|
|
68
|
+
action,
|
|
69
|
+
},
|
|
70
|
+
}).catch(() => { });
|
|
51
71
|
res.json({ access_request: updated });
|
|
52
72
|
};
|
|
53
73
|
//# sourceMappingURL=route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/access-requests/[requestId]/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/access-requests/[requestId]/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/access-requests/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/access-requests/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAyBhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA2FjD,CAAA"}
|
|
@@ -1,22 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const workspaceService = req.scope.resolve("workspaceModuleService");
|
|
3
|
-
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
4
|
-
const workspace = await workspaceService.retrieveWorkspace(req.params.id);
|
|
5
|
-
if (!workspace) {
|
|
6
|
-
res.status(404).json({ error: { message: "Workspace not found" } });
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
9
|
-
const roles = req.user?.roles ?? [];
|
|
10
|
-
const isGlobalAdmin = roles.includes("super-admin") || roles.includes("admin");
|
|
11
|
-
if (isGlobalAdmin)
|
|
12
|
-
return true;
|
|
13
|
-
const membership = await workspaceMemberService.getMembership(req.params.id, req.user?.id);
|
|
14
|
-
if (!membership || membership.role !== "admin") {
|
|
15
|
-
res.status(403).json({ error: { message: "Workspace admin access required" } });
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
1
|
+
import { assertWorkspaceAdmin } from "../../../../utils/workspace-access.js";
|
|
20
2
|
export const GET = async (req, res) => {
|
|
21
3
|
if (!await assertWorkspaceAdmin(req, res))
|
|
22
4
|
return;
|
|
@@ -67,6 +49,10 @@ export const POST = async (req, res) => {
|
|
|
67
49
|
return;
|
|
68
50
|
}
|
|
69
51
|
const { message } = req.body;
|
|
52
|
+
if (message && typeof message === "string" && message.length > 1000) {
|
|
53
|
+
res.status(400).json({ error: { message: "message must be 1000 characters or fewer" } });
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
70
56
|
const accessRequest = await workspaceMemberService.createAccessRequest({
|
|
71
57
|
workspace_id: req.params.id,
|
|
72
58
|
user_id: userId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/access-requests/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/access-requests/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA+CjD,CAAA"}
|
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const workspaceService = req.scope.resolve("workspaceModuleService");
|
|
3
|
-
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
4
|
-
const workspace = await workspaceService.retrieveWorkspace(req.params.id);
|
|
5
|
-
const roles = req.user?.roles ?? [];
|
|
6
|
-
const isPrivileged = roles.includes("super-admin") || roles.includes("admin");
|
|
7
|
-
if (workspace?.is_private || !isPrivileged) {
|
|
8
|
-
const membership = await workspaceMemberService.getMembership(req.params.id, req.user?.id);
|
|
9
|
-
if (!membership) {
|
|
10
|
-
res.status(403).json({ error: { message: "Forbidden — not a member of this workspace" } });
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
1
|
+
import { assertWorkspaceAccess } from "../../../../../../utils/workspace-access.js";
|
|
16
2
|
export const POST = async (req, res) => {
|
|
17
3
|
if (!await assertWorkspaceAccess(req, res))
|
|
18
4
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/resend/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AAEnF,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACpD,IAAI,CAAC,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IAElD,MAAM,KAAK,GAAa,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IAC7C,MAAM,WAAW,GAAa,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAA;IACzD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7E,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,+CAA+C,EAAE,EAAE,CAAC,CAAA;QAC7F,OAAM;IACR,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAQ,CAAA;IAC/D,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAEtF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAA;QACpE,OAAM;IACR,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;QACzD,OAAM;IACR,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,EAAE,CAAC,CAAA;QACtF,OAAM;IACR,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,gEAAgE,EAAE,EAAE,CAAC,CAAA;QAC9G,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAQ,CAAA;IACrD,MAAM,QAAQ,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE;YACJ,aAAa,EAAE,UAAU,CAAC,EAAE;YAC5B,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,QAAQ;SACrC;KACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAElB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAC7B,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA4BnD,CAAA"}
|
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const workspaceService = req.scope.resolve("workspaceModuleService");
|
|
3
|
-
const workspaceMemberService = req.scope.resolve("workspaceMemberModuleService");
|
|
4
|
-
const workspace = await workspaceService.retrieveWorkspace(req.params.id);
|
|
5
|
-
const roles = req.user?.roles ?? [];
|
|
6
|
-
const isPrivileged = roles.includes("super-admin") || roles.includes("admin");
|
|
7
|
-
if (workspace?.is_private || !isPrivileged) {
|
|
8
|
-
const membership = await workspaceMemberService.getMembership(req.params.id, req.user?.id);
|
|
9
|
-
if (!membership) {
|
|
10
|
-
res.status(403).json({ error: { message: "Forbidden — not a member of this workspace" } });
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
1
|
+
import { assertWorkspaceAccess } from "../../../../../utils/workspace-access.js";
|
|
16
2
|
export const DELETE = async (req, res) => {
|
|
17
3
|
if (!await assertWorkspaceAccess(req, res))
|
|
18
4
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/admin/workspaces/[id]/invitations/[inviteId]/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAEhF,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAa,EAAE,EAAE;IACtD,IAAI,CAAC,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IAElD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAQ,CAAA;IAE/D,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACtF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAA;QACpE,OAAM;IACR,CAAC;IAED,4DAA4D;IAC5D,IAAI,UAAU,CAAC,YAAY,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;QACzD,OAAM;IACR,CAAC;IAED,oEAAoE;IACpE,MAAM,KAAK,GAAa,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IAC7C,MAAM,WAAW,GAAa,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAA;IACzD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7E,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,+CAA+C,EAAE,EAAE,CAAC,CAAA;QAC7F,OAAM;IACR,CAAC;IAED,MAAM,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/invitations/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/admin/workspaces/[id]/invitations/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAKvC,eAAO,MAAM,GAAG,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBAQhD,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,KAAK,GAAG,EAAE,KAAK,QAAQ,kBA+DjD,CAAA"}
|