@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 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 import_framework_utils4 = require("@meridianjs/framework-utils");
27
+ var import_framework_utils5 = require("@meridianjs/framework-utils");
28
28
 
29
29
  // src/service.ts
30
- var import_framework_utils2 = require("@meridianjs/framework-utils");
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, import_framework_utils2.MeridianService)({
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 import_framework_utils3 = require("@meridianjs/framework-utils");
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, import_framework_utils3.createModuleOrm)(
82
- [(0, import_framework_utils3.dmlToEntitySchema)(workspace_member_default)],
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, import_framework_utils3.createRepository)(em, "workspace_member"),
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, import_framework_utils4.Module)("workspaceMemberModuleService", {
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.1.0",
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.11.0",
29
- "@meridianjs/types": "^1.11.0",
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
  },