@meridianjs/workspace-member 0.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/index.d.mts +16 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +96 -0
- package/dist/index.mjs +71 -0
- package/package.json +39 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as _meridianjs_types from '@meridianjs/types';
|
|
2
|
+
import { MeridianContainer } from '@meridianjs/types';
|
|
3
|
+
|
|
4
|
+
declare const WorkspaceMemberModuleService_base: new (container: MeridianContainer) => _meridianjs_types.IModuleService;
|
|
5
|
+
declare class WorkspaceMemberModuleService extends WorkspaceMemberModuleService_base {
|
|
6
|
+
private readonly container;
|
|
7
|
+
constructor(container: MeridianContainer);
|
|
8
|
+
getWorkspaceIdsForUser(userId: string): Promise<string[]>;
|
|
9
|
+
getMembership(workspaceId: string, userId: string): Promise<any | null>;
|
|
10
|
+
isMember(workspaceId: string, userId: string): Promise<boolean>;
|
|
11
|
+
ensureMember(workspaceId: string, userId: string, role?: "admin" | "member"): Promise<any>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
declare const _default: _meridianjs_types.ModuleDefinition;
|
|
15
|
+
|
|
16
|
+
export { WorkspaceMemberModuleService, _default as default };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as _meridianjs_types from '@meridianjs/types';
|
|
2
|
+
import { MeridianContainer } from '@meridianjs/types';
|
|
3
|
+
|
|
4
|
+
declare const WorkspaceMemberModuleService_base: new (container: MeridianContainer) => _meridianjs_types.IModuleService;
|
|
5
|
+
declare class WorkspaceMemberModuleService extends WorkspaceMemberModuleService_base {
|
|
6
|
+
private readonly container;
|
|
7
|
+
constructor(container: MeridianContainer);
|
|
8
|
+
getWorkspaceIdsForUser(userId: string): Promise<string[]>;
|
|
9
|
+
getMembership(workspaceId: string, userId: string): Promise<any | null>;
|
|
10
|
+
isMember(workspaceId: string, userId: string): Promise<boolean>;
|
|
11
|
+
ensureMember(workspaceId: string, userId: string, role?: "admin" | "member"): Promise<any>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
declare const _default: _meridianjs_types.ModuleDefinition;
|
|
15
|
+
|
|
16
|
+
export { WorkspaceMemberModuleService, _default as default };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
WorkspaceMemberModuleService: () => WorkspaceMemberModuleService,
|
|
24
|
+
default: () => index_default
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(index_exports);
|
|
27
|
+
var import_framework_utils4 = require("@meridianjs/framework-utils");
|
|
28
|
+
|
|
29
|
+
// src/service.ts
|
|
30
|
+
var import_framework_utils2 = require("@meridianjs/framework-utils");
|
|
31
|
+
|
|
32
|
+
// src/models/workspace-member.ts
|
|
33
|
+
var import_framework_utils = require("@meridianjs/framework-utils");
|
|
34
|
+
var WorkspaceMember = import_framework_utils.model.define("workspace_member", {
|
|
35
|
+
id: import_framework_utils.model.id().primaryKey(),
|
|
36
|
+
workspace_id: import_framework_utils.model.text(),
|
|
37
|
+
user_id: import_framework_utils.model.text(),
|
|
38
|
+
role: import_framework_utils.model.enum(["admin", "member"]).default("member")
|
|
39
|
+
}, [
|
|
40
|
+
{ columns: ["workspace_id"] },
|
|
41
|
+
{ columns: ["workspace_id", "user_id"], unique: true }
|
|
42
|
+
]);
|
|
43
|
+
var workspace_member_default = WorkspaceMember;
|
|
44
|
+
|
|
45
|
+
// src/service.ts
|
|
46
|
+
var WorkspaceMemberModuleService = class extends (0, import_framework_utils2.MeridianService)({
|
|
47
|
+
WorkspaceMember: workspace_member_default
|
|
48
|
+
}) {
|
|
49
|
+
container;
|
|
50
|
+
constructor(container) {
|
|
51
|
+
super(container);
|
|
52
|
+
this.container = container;
|
|
53
|
+
}
|
|
54
|
+
async getWorkspaceIdsForUser(userId) {
|
|
55
|
+
const repo = this.container.resolve("workspaceMemberRepository");
|
|
56
|
+
const members = await repo.find({ user_id: userId });
|
|
57
|
+
return members.map((m) => m.workspace_id);
|
|
58
|
+
}
|
|
59
|
+
async getMembership(workspaceId, userId) {
|
|
60
|
+
const repo = this.container.resolve("workspaceMemberRepository");
|
|
61
|
+
return repo.findOne({ workspace_id: workspaceId, user_id: userId }) ?? null;
|
|
62
|
+
}
|
|
63
|
+
async isMember(workspaceId, userId) {
|
|
64
|
+
return !!await this.getMembership(workspaceId, userId);
|
|
65
|
+
}
|
|
66
|
+
async ensureMember(workspaceId, userId, role = "member") {
|
|
67
|
+
if (await this.isMember(workspaceId, userId)) return;
|
|
68
|
+
return this.createWorkspaceMember({ workspace_id: workspaceId, user_id: userId, role });
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/loaders/default.ts
|
|
73
|
+
var import_framework_utils3 = require("@meridianjs/framework-utils");
|
|
74
|
+
async function defaultLoader({ container }) {
|
|
75
|
+
const config = container.resolve("config");
|
|
76
|
+
const orm = await (0, import_framework_utils3.createModuleOrm)(
|
|
77
|
+
[(0, import_framework_utils3.dmlToEntitySchema)(workspace_member_default)],
|
|
78
|
+
config.projectConfig.databaseUrl
|
|
79
|
+
);
|
|
80
|
+
const em = orm.em.fork();
|
|
81
|
+
container.register({
|
|
82
|
+
workspaceMemberRepository: (0, import_framework_utils3.createRepository)(em, "workspace_member"),
|
|
83
|
+
workspaceMemberOrm: orm
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// src/index.ts
|
|
88
|
+
var index_default = (0, import_framework_utils4.Module)("workspaceMemberModuleService", {
|
|
89
|
+
service: WorkspaceMemberModuleService,
|
|
90
|
+
models: [workspace_member_default],
|
|
91
|
+
loaders: [defaultLoader]
|
|
92
|
+
});
|
|
93
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
94
|
+
0 && (module.exports = {
|
|
95
|
+
WorkspaceMemberModuleService
|
|
96
|
+
});
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import { Module } from "@meridianjs/framework-utils";
|
|
3
|
+
|
|
4
|
+
// src/service.ts
|
|
5
|
+
import { MeridianService } from "@meridianjs/framework-utils";
|
|
6
|
+
|
|
7
|
+
// src/models/workspace-member.ts
|
|
8
|
+
import { model } from "@meridianjs/framework-utils";
|
|
9
|
+
var WorkspaceMember = model.define("workspace_member", {
|
|
10
|
+
id: model.id().primaryKey(),
|
|
11
|
+
workspace_id: model.text(),
|
|
12
|
+
user_id: model.text(),
|
|
13
|
+
role: model.enum(["admin", "member"]).default("member")
|
|
14
|
+
}, [
|
|
15
|
+
{ columns: ["workspace_id"] },
|
|
16
|
+
{ columns: ["workspace_id", "user_id"], unique: true }
|
|
17
|
+
]);
|
|
18
|
+
var workspace_member_default = WorkspaceMember;
|
|
19
|
+
|
|
20
|
+
// src/service.ts
|
|
21
|
+
var WorkspaceMemberModuleService = class extends MeridianService({
|
|
22
|
+
WorkspaceMember: workspace_member_default
|
|
23
|
+
}) {
|
|
24
|
+
container;
|
|
25
|
+
constructor(container) {
|
|
26
|
+
super(container);
|
|
27
|
+
this.container = container;
|
|
28
|
+
}
|
|
29
|
+
async getWorkspaceIdsForUser(userId) {
|
|
30
|
+
const repo = this.container.resolve("workspaceMemberRepository");
|
|
31
|
+
const members = await repo.find({ user_id: userId });
|
|
32
|
+
return members.map((m) => m.workspace_id);
|
|
33
|
+
}
|
|
34
|
+
async getMembership(workspaceId, userId) {
|
|
35
|
+
const repo = this.container.resolve("workspaceMemberRepository");
|
|
36
|
+
return repo.findOne({ workspace_id: workspaceId, user_id: userId }) ?? null;
|
|
37
|
+
}
|
|
38
|
+
async isMember(workspaceId, userId) {
|
|
39
|
+
return !!await this.getMembership(workspaceId, userId);
|
|
40
|
+
}
|
|
41
|
+
async ensureMember(workspaceId, userId, role = "member") {
|
|
42
|
+
if (await this.isMember(workspaceId, userId)) return;
|
|
43
|
+
return this.createWorkspaceMember({ workspace_id: workspaceId, user_id: userId, role });
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// src/loaders/default.ts
|
|
48
|
+
import { dmlToEntitySchema, createRepository, createModuleOrm } from "@meridianjs/framework-utils";
|
|
49
|
+
async function defaultLoader({ container }) {
|
|
50
|
+
const config = container.resolve("config");
|
|
51
|
+
const orm = await createModuleOrm(
|
|
52
|
+
[dmlToEntitySchema(workspace_member_default)],
|
|
53
|
+
config.projectConfig.databaseUrl
|
|
54
|
+
);
|
|
55
|
+
const em = orm.em.fork();
|
|
56
|
+
container.register({
|
|
57
|
+
workspaceMemberRepository: createRepository(em, "workspace_member"),
|
|
58
|
+
workspaceMemberOrm: orm
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// src/index.ts
|
|
63
|
+
var index_default = Module("workspaceMemberModuleService", {
|
|
64
|
+
service: WorkspaceMemberModuleService,
|
|
65
|
+
models: [workspace_member_default],
|
|
66
|
+
loaders: [defaultLoader]
|
|
67
|
+
});
|
|
68
|
+
export {
|
|
69
|
+
WorkspaceMemberModuleService,
|
|
70
|
+
index_default as default
|
|
71
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@meridianjs/workspace-member",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Meridian workspace-member module — tracks workspace membership and roles",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/index.d.mts",
|
|
12
|
+
"default": "./dist/index.mjs"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsup src/index.ts --format esm,cjs --dts --clean",
|
|
22
|
+
"dev": "tsup src/index.ts --format esm,cjs --dts --watch",
|
|
23
|
+
"typecheck": "tsc --noEmit",
|
|
24
|
+
"clean": "rm -rf dist",
|
|
25
|
+
"prepublishOnly": "npm run build"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@meridianjs/framework-utils": "^0.1.0",
|
|
29
|
+
"@meridianjs/types": "^0.1.0",
|
|
30
|
+
"@mikro-orm/core": "^6.4.3",
|
|
31
|
+
"@mikro-orm/postgresql": "^6.4.3"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"tsup": "^8.3.5",
|
|
35
|
+
"typescript": "*"
|
|
36
|
+
},
|
|
37
|
+
"files": ["dist"],
|
|
38
|
+
"publishConfig": { "access": "public" }
|
|
39
|
+
}
|