@meridianjs/workspace-member 1.1.0 → 1.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.
- package/dist/index.d.mts +9 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +52 -10
- package/dist/index.mjs +45 -3
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -9,6 +9,15 @@ declare class WorkspaceMemberModuleService extends WorkspaceMemberModuleService_
|
|
|
9
9
|
getMembership(workspaceId: string, userId: string): Promise<any | null>;
|
|
10
10
|
isMember(workspaceId: string, userId: string): Promise<boolean>;
|
|
11
11
|
ensureMember(workspaceId: string, userId: string, role?: "admin" | "member"): Promise<any>;
|
|
12
|
+
createAccessRequest(data: {
|
|
13
|
+
workspace_id: string;
|
|
14
|
+
user_id: string;
|
|
15
|
+
message?: string | null;
|
|
16
|
+
}): Promise<any>;
|
|
17
|
+
getPendingRequest(workspaceId: string, userId: string): Promise<any | null>;
|
|
18
|
+
getAccessRequest(id: string): Promise<any | null>;
|
|
19
|
+
listPendingAccessRequests(workspaceId: string): Promise<any[]>;
|
|
20
|
+
updateAccessRequestStatus(id: string, status: "approved" | "denied"): Promise<any>;
|
|
12
21
|
}
|
|
13
22
|
|
|
14
23
|
declare const _default: _meridianjs_types.ModuleDefinition;
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,15 @@ declare class WorkspaceMemberModuleService extends WorkspaceMemberModuleService_
|
|
|
9
9
|
getMembership(workspaceId: string, userId: string): Promise<any | null>;
|
|
10
10
|
isMember(workspaceId: string, userId: string): Promise<boolean>;
|
|
11
11
|
ensureMember(workspaceId: string, userId: string, role?: "admin" | "member"): Promise<any>;
|
|
12
|
+
createAccessRequest(data: {
|
|
13
|
+
workspace_id: string;
|
|
14
|
+
user_id: string;
|
|
15
|
+
message?: string | null;
|
|
16
|
+
}): Promise<any>;
|
|
17
|
+
getPendingRequest(workspaceId: string, userId: string): Promise<any | null>;
|
|
18
|
+
getAccessRequest(id: string): Promise<any | null>;
|
|
19
|
+
listPendingAccessRequests(workspaceId: string): Promise<any[]>;
|
|
20
|
+
updateAccessRequestStatus(id: string, status: "approved" | "denied"): Promise<any>;
|
|
12
21
|
}
|
|
13
22
|
|
|
14
23
|
declare const _default: _meridianjs_types.ModuleDefinition;
|
package/dist/index.js
CHANGED
|
@@ -24,10 +24,10 @@ __export(index_exports, {
|
|
|
24
24
|
default: () => index_default
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(index_exports);
|
|
27
|
-
var
|
|
27
|
+
var import_framework_utils5 = require("@meridianjs/framework-utils");
|
|
28
28
|
|
|
29
29
|
// src/service.ts
|
|
30
|
-
var
|
|
30
|
+
var import_framework_utils3 = require("@meridianjs/framework-utils");
|
|
31
31
|
|
|
32
32
|
// src/models/workspace-member.ts
|
|
33
33
|
var import_framework_utils = require("@meridianjs/framework-utils");
|
|
@@ -42,9 +42,24 @@ var WorkspaceMember = import_framework_utils.model.define("workspace_member", {
|
|
|
42
42
|
]);
|
|
43
43
|
var workspace_member_default = WorkspaceMember;
|
|
44
44
|
|
|
45
|
+
// src/models/workspace-access-request.ts
|
|
46
|
+
var import_framework_utils2 = require("@meridianjs/framework-utils");
|
|
47
|
+
var WorkspaceAccessRequest = import_framework_utils2.model.define("workspace_access_request", {
|
|
48
|
+
id: import_framework_utils2.model.id().primaryKey(),
|
|
49
|
+
workspace_id: import_framework_utils2.model.text(),
|
|
50
|
+
user_id: import_framework_utils2.model.text(),
|
|
51
|
+
message: import_framework_utils2.model.text().nullable(),
|
|
52
|
+
status: import_framework_utils2.model.enum(["pending", "approved", "denied"]).default("pending")
|
|
53
|
+
}, [
|
|
54
|
+
{ columns: ["workspace_id"] },
|
|
55
|
+
{ columns: ["workspace_id", "user_id"] }
|
|
56
|
+
]);
|
|
57
|
+
var workspace_access_request_default = WorkspaceAccessRequest;
|
|
58
|
+
|
|
45
59
|
// src/service.ts
|
|
46
|
-
var WorkspaceMemberModuleService = class extends (0,
|
|
47
|
-
WorkspaceMember: workspace_member_default
|
|
60
|
+
var WorkspaceMemberModuleService = class extends (0, import_framework_utils3.MeridianService)({
|
|
61
|
+
WorkspaceMember: workspace_member_default,
|
|
62
|
+
WorkspaceAccessRequest: workspace_access_request_default
|
|
48
63
|
}) {
|
|
49
64
|
container;
|
|
50
65
|
constructor(container) {
|
|
@@ -72,27 +87,54 @@ var WorkspaceMemberModuleService = class extends (0, import_framework_utils2.Mer
|
|
|
72
87
|
throw err;
|
|
73
88
|
}
|
|
74
89
|
}
|
|
90
|
+
async createAccessRequest(data) {
|
|
91
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
92
|
+
const record = repo.create({ ...data, status: "pending" });
|
|
93
|
+
await repo.persistAndFlush(record);
|
|
94
|
+
return record;
|
|
95
|
+
}
|
|
96
|
+
async getPendingRequest(workspaceId, userId) {
|
|
97
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
98
|
+
return repo.findOne({ workspace_id: workspaceId, user_id: userId, status: "pending" }) ?? null;
|
|
99
|
+
}
|
|
100
|
+
async getAccessRequest(id) {
|
|
101
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
102
|
+
return repo.findOne({ id }) ?? null;
|
|
103
|
+
}
|
|
104
|
+
async listPendingAccessRequests(workspaceId) {
|
|
105
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
106
|
+
return repo.find({ workspace_id: workspaceId, status: "pending" }, { orderBy: { created_at: "ASC" } });
|
|
107
|
+
}
|
|
108
|
+
async updateAccessRequestStatus(id, status) {
|
|
109
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
110
|
+
const record = await repo.findOne({ id });
|
|
111
|
+
if (!record) throw new Error("Access request not found");
|
|
112
|
+
record.status = status;
|
|
113
|
+
await repo.persistAndFlush(record);
|
|
114
|
+
return record;
|
|
115
|
+
}
|
|
75
116
|
};
|
|
76
117
|
|
|
77
118
|
// src/loaders/default.ts
|
|
78
|
-
var
|
|
119
|
+
var import_framework_utils4 = require("@meridianjs/framework-utils");
|
|
79
120
|
async function defaultLoader({ container }) {
|
|
80
121
|
const config = container.resolve("config");
|
|
81
|
-
const orm = await (0,
|
|
82
|
-
[(0,
|
|
122
|
+
const orm = await (0, import_framework_utils4.createModuleOrm)(
|
|
123
|
+
[(0, import_framework_utils4.dmlToEntitySchema)(workspace_member_default), (0, import_framework_utils4.dmlToEntitySchema)(workspace_access_request_default)],
|
|
83
124
|
config.projectConfig.databaseUrl
|
|
84
125
|
);
|
|
85
126
|
const em = orm.em.fork();
|
|
86
127
|
container.register({
|
|
87
|
-
workspaceMemberRepository: (0,
|
|
128
|
+
workspaceMemberRepository: (0, import_framework_utils4.createRepository)(em, "workspace_member"),
|
|
129
|
+
workspaceAccessRequestRepository: (0, import_framework_utils4.createRepository)(em, "workspace_access_request"),
|
|
88
130
|
workspaceMemberOrm: orm
|
|
89
131
|
});
|
|
90
132
|
}
|
|
91
133
|
|
|
92
134
|
// src/index.ts
|
|
93
|
-
var index_default = (0,
|
|
135
|
+
var index_default = (0, import_framework_utils5.Module)("workspaceMemberModuleService", {
|
|
94
136
|
service: WorkspaceMemberModuleService,
|
|
95
|
-
models: [workspace_member_default],
|
|
137
|
+
models: [workspace_member_default, workspace_access_request_default],
|
|
96
138
|
loaders: [defaultLoader]
|
|
97
139
|
});
|
|
98
140
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/index.mjs
CHANGED
|
@@ -17,9 +17,24 @@ var WorkspaceMember = model.define("workspace_member", {
|
|
|
17
17
|
]);
|
|
18
18
|
var workspace_member_default = WorkspaceMember;
|
|
19
19
|
|
|
20
|
+
// src/models/workspace-access-request.ts
|
|
21
|
+
import { model as model2 } from "@meridianjs/framework-utils";
|
|
22
|
+
var WorkspaceAccessRequest = model2.define("workspace_access_request", {
|
|
23
|
+
id: model2.id().primaryKey(),
|
|
24
|
+
workspace_id: model2.text(),
|
|
25
|
+
user_id: model2.text(),
|
|
26
|
+
message: model2.text().nullable(),
|
|
27
|
+
status: model2.enum(["pending", "approved", "denied"]).default("pending")
|
|
28
|
+
}, [
|
|
29
|
+
{ columns: ["workspace_id"] },
|
|
30
|
+
{ columns: ["workspace_id", "user_id"] }
|
|
31
|
+
]);
|
|
32
|
+
var workspace_access_request_default = WorkspaceAccessRequest;
|
|
33
|
+
|
|
20
34
|
// src/service.ts
|
|
21
35
|
var WorkspaceMemberModuleService = class extends MeridianService({
|
|
22
|
-
WorkspaceMember: workspace_member_default
|
|
36
|
+
WorkspaceMember: workspace_member_default,
|
|
37
|
+
WorkspaceAccessRequest: workspace_access_request_default
|
|
23
38
|
}) {
|
|
24
39
|
container;
|
|
25
40
|
constructor(container) {
|
|
@@ -47,6 +62,32 @@ var WorkspaceMemberModuleService = class extends MeridianService({
|
|
|
47
62
|
throw err;
|
|
48
63
|
}
|
|
49
64
|
}
|
|
65
|
+
async createAccessRequest(data) {
|
|
66
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
67
|
+
const record = repo.create({ ...data, status: "pending" });
|
|
68
|
+
await repo.persistAndFlush(record);
|
|
69
|
+
return record;
|
|
70
|
+
}
|
|
71
|
+
async getPendingRequest(workspaceId, userId) {
|
|
72
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
73
|
+
return repo.findOne({ workspace_id: workspaceId, user_id: userId, status: "pending" }) ?? null;
|
|
74
|
+
}
|
|
75
|
+
async getAccessRequest(id) {
|
|
76
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
77
|
+
return repo.findOne({ id }) ?? null;
|
|
78
|
+
}
|
|
79
|
+
async listPendingAccessRequests(workspaceId) {
|
|
80
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
81
|
+
return repo.find({ workspace_id: workspaceId, status: "pending" }, { orderBy: { created_at: "ASC" } });
|
|
82
|
+
}
|
|
83
|
+
async updateAccessRequestStatus(id, status) {
|
|
84
|
+
const repo = this.container.resolve("workspaceAccessRequestRepository");
|
|
85
|
+
const record = await repo.findOne({ id });
|
|
86
|
+
if (!record) throw new Error("Access request not found");
|
|
87
|
+
record.status = status;
|
|
88
|
+
await repo.persistAndFlush(record);
|
|
89
|
+
return record;
|
|
90
|
+
}
|
|
50
91
|
};
|
|
51
92
|
|
|
52
93
|
// src/loaders/default.ts
|
|
@@ -54,12 +95,13 @@ import { dmlToEntitySchema, createRepository, createModuleOrm } from "@meridianj
|
|
|
54
95
|
async function defaultLoader({ container }) {
|
|
55
96
|
const config = container.resolve("config");
|
|
56
97
|
const orm = await createModuleOrm(
|
|
57
|
-
[dmlToEntitySchema(workspace_member_default)],
|
|
98
|
+
[dmlToEntitySchema(workspace_member_default), dmlToEntitySchema(workspace_access_request_default)],
|
|
58
99
|
config.projectConfig.databaseUrl
|
|
59
100
|
);
|
|
60
101
|
const em = orm.em.fork();
|
|
61
102
|
container.register({
|
|
62
103
|
workspaceMemberRepository: createRepository(em, "workspace_member"),
|
|
104
|
+
workspaceAccessRequestRepository: createRepository(em, "workspace_access_request"),
|
|
63
105
|
workspaceMemberOrm: orm
|
|
64
106
|
});
|
|
65
107
|
}
|
|
@@ -67,7 +109,7 @@ async function defaultLoader({ container }) {
|
|
|
67
109
|
// src/index.ts
|
|
68
110
|
var index_default = Module("workspaceMemberModuleService", {
|
|
69
111
|
service: WorkspaceMemberModuleService,
|
|
70
|
-
models: [workspace_member_default],
|
|
112
|
+
models: [workspace_member_default, workspace_access_request_default],
|
|
71
113
|
loaders: [defaultLoader]
|
|
72
114
|
});
|
|
73
115
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meridianjs/workspace-member",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Meridian workspace-member module — tracks workspace membership and roles",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"prepublishOnly": "npm run build"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@meridianjs/framework-utils": "^1.
|
|
29
|
-
"@meridianjs/types": "^1.
|
|
28
|
+
"@meridianjs/framework-utils": "^1.31.0",
|
|
29
|
+
"@meridianjs/types": "^1.31.0",
|
|
30
30
|
"@mikro-orm/core": "^6.4.3",
|
|
31
31
|
"@mikro-orm/postgresql": "^6.4.3"
|
|
32
32
|
},
|