@fonderie/workspaces 2.0.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/brain/signatures.md +1 -0
- package/dist/index.cjs +32 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +32 -25
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -17,7 +17,13 @@ type WorkspacesEventKey = (typeof EVENT_KEYS)[keyof typeof EVENT_KEYS];
|
|
|
17
17
|
interface IWorkspacesConfig {
|
|
18
18
|
invitationTtl?: string;
|
|
19
19
|
personalWorkspace?: boolean;
|
|
20
|
+
routes?: Partial<Record<WorkspaceRouteId, WorkspaceRouteOverride>>;
|
|
20
21
|
}
|
|
22
|
+
type WorkspaceRouteId = 'createWorkspace' | 'listWorkspaces' | 'getWorkspace' | 'updateWorkspace' | 'archive' | 'restore' | 'getSettings' | 'updateSettings' | 'listMembers' | 'removeMember' | 'getMemberRoles' | 'addMemberRole' | 'removeMemberRole' | 'listInvitations' | 'invite' | 'cancelInvitation' | 'acceptInvitation' | 'createRole' | 'listRoles' | 'getRole' | 'updateRole' | 'removeRole' | 'setRolePermissions';
|
|
23
|
+
type WorkspaceRouteOverride = string | {
|
|
24
|
+
method?: string;
|
|
25
|
+
path?: string;
|
|
26
|
+
};
|
|
21
27
|
|
|
22
28
|
declare class WorkspacesModule implements IFonderieModule {
|
|
23
29
|
private store;
|
package/dist/index.d.ts
CHANGED
|
@@ -17,7 +17,13 @@ type WorkspacesEventKey = (typeof EVENT_KEYS)[keyof typeof EVENT_KEYS];
|
|
|
17
17
|
interface IWorkspacesConfig {
|
|
18
18
|
invitationTtl?: string;
|
|
19
19
|
personalWorkspace?: boolean;
|
|
20
|
+
routes?: Partial<Record<WorkspaceRouteId, WorkspaceRouteOverride>>;
|
|
20
21
|
}
|
|
22
|
+
type WorkspaceRouteId = 'createWorkspace' | 'listWorkspaces' | 'getWorkspace' | 'updateWorkspace' | 'archive' | 'restore' | 'getSettings' | 'updateSettings' | 'listMembers' | 'removeMember' | 'getMemberRoles' | 'addMemberRole' | 'removeMemberRole' | 'listInvitations' | 'invite' | 'cancelInvitation' | 'acceptInvitation' | 'createRole' | 'listRoles' | 'getRole' | 'updateRole' | 'removeRole' | 'setRolePermissions';
|
|
23
|
+
type WorkspaceRouteOverride = string | {
|
|
24
|
+
method?: string;
|
|
25
|
+
path?: string;
|
|
26
|
+
};
|
|
21
27
|
|
|
22
28
|
declare class WorkspacesModule implements IFonderieModule {
|
|
23
29
|
private store;
|
package/dist/index.js
CHANGED
|
@@ -1277,38 +1277,45 @@ function buildWorkspaceRoutes(store, config, bus) {
|
|
|
1277
1277
|
const member = memberController(store);
|
|
1278
1278
|
const role = roleController(store);
|
|
1279
1279
|
const invitation = invitationController(store, ttl, bus);
|
|
1280
|
+
const R = (id, method, path, ...handlers) => {
|
|
1281
|
+
const o = config.routes?.[id];
|
|
1282
|
+
if (!o) return [method, path, ...handlers];
|
|
1283
|
+
if (typeof o === "string") return [method, o, ...handlers];
|
|
1284
|
+
return [o.method ?? method, o.path ?? path, ...handlers];
|
|
1285
|
+
};
|
|
1280
1286
|
return [
|
|
1281
1287
|
// ── Workspace creation + listing (no workspace context required)
|
|
1282
|
-
|
|
1283
|
-
|
|
1288
|
+
R("createWorkspace", "POST", "/workspaces", requireAuth, validate(createWorkspaceSchema), workspace.create),
|
|
1289
|
+
R("listWorkspaces", "GET", "/workspaces", requireAuth, workspace.list),
|
|
1284
1290
|
// ── Members (workspace resolved from X-Workspace-ID header)
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1291
|
+
R("listMembers", "GET", "/workspaces/members", requireAuth, wsCtx, member.list),
|
|
1292
|
+
R("removeMember", "DELETE", "/workspaces/members/:userId", requireAuth, wsCtx, member.remove),
|
|
1293
|
+
R("getMemberRoles", "GET", "/workspaces/members/:userId/roles", requireAuth, wsCtx, member.getUserRoles),
|
|
1294
|
+
R("addMemberRole", "POST", "/workspaces/members/:userId/roles", requireAuth, wsCtx, validate(addMemberRoleSchema), member.addRole),
|
|
1295
|
+
R("removeMemberRole", "DELETE", "/workspaces/members/:userId/roles/:roleId", requireAuth, wsCtx, member.removeRole),
|
|
1290
1296
|
// ── Invitations
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1297
|
+
R("listInvitations", "GET", "/workspaces/invitations", requireAuth, wsCtx, invitation.list),
|
|
1298
|
+
R("invite", "POST", "/workspaces/invitations", requireAuth, wsCtx, validate(createInvitationsSchema), invitation.invite),
|
|
1299
|
+
R("cancelInvitation", "DELETE", "/workspaces/invitations/:inviteId", requireAuth, wsCtx, invitation.cancel),
|
|
1300
|
+
R("acceptInvitation", "POST", "/workspaces/invitations/accept", requireAuth, validate(acceptInvitationSchema), invitation.accept),
|
|
1295
1301
|
// ── Roles
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
+
R("createRole", "POST", "/workspaces/roles", requireAuth, wsCtx, validate(createRoleSchema), role.create),
|
|
1303
|
+
R("listRoles", "GET", "/workspaces/roles", requireAuth, wsCtx, role.list),
|
|
1304
|
+
R("getRole", "GET", "/workspaces/roles/:roleId", requireAuth, wsCtx, role.get),
|
|
1305
|
+
R("updateRole", "PUT", "/workspaces/roles/:roleId", requireAuth, wsCtx, validate(updateRoleSchema), role.update),
|
|
1306
|
+
R("removeRole", "DELETE", "/workspaces/roles/:roleId", requireAuth, wsCtx, role.remove),
|
|
1307
|
+
R("setRolePermissions", "POST", "/workspaces/roles/:roleId/permissions", requireAuth, wsCtx, validate(setRolePermissionsSchema), role.setPermissions),
|
|
1302
1308
|
// ── Workspace lifecycle
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1309
|
+
R("archive", "POST", "/workspaces/archive", requireAuth, wsCtx, workspace.archive),
|
|
1310
|
+
R("restore", "POST", "/workspaces/restore", requireAuth, wsCtx, workspace.restore),
|
|
1311
|
+
R("getSettings", "GET", "/workspaces/settings", requireAuth, wsCtx, workspace.getSettings),
|
|
1312
|
+
R("updateSettings", "PUT", "/workspaces/settings", requireAuth, wsCtx, validate(updateSettingsSchema), workspace.updateSettings),
|
|
1307
1313
|
// ── Path-based lookup by ID (admin / cross-workspace use)
|
|
1308
|
-
|
|
1309
|
-
// ── Update current workspace — ID
|
|
1310
|
-
// (or personal
|
|
1311
|
-
|
|
1314
|
+
R("getWorkspace", "GET", "/workspaces/:id", requireAuth, wsCtx, workspace.get),
|
|
1315
|
+
// ── Update current workspace — ID from :id path param (wsCtx) or the
|
|
1316
|
+
// X-Workspace-ID header (or personal-workspace fallback when absent). Set
|
|
1317
|
+
// routes.updateWorkspace = '/workspaces/:id' to match a path-id frontend.
|
|
1318
|
+
R("updateWorkspace", "PUT", "/workspaces", requireAuth, wsCtx, validate(updateWorkspaceSchema), workspace.update)
|
|
1312
1319
|
];
|
|
1313
1320
|
}
|
|
1314
1321
|
|