@permis/better-auth 0.0.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 +122 -0
- package/dist/index.mjs +1 -0
- package/package.json +25 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { Action, PermisAdapter, PermisEngine, Permission, Resource, ResourceType, Role, Subject, SubjectId } from "@permis/core";
|
|
2
|
+
|
|
3
|
+
//#region src/bridge.d.ts
|
|
4
|
+
interface BetterAuthBridgeOptions {
|
|
5
|
+
roleResolver?: (session: Record<string, unknown>) => string[] | Promise<string[]>;
|
|
6
|
+
permissionResolver?: (session: Record<string, unknown>) => Permission[] | Promise<Permission[]>;
|
|
7
|
+
}
|
|
8
|
+
declare function betterAuthBridge(auth: {
|
|
9
|
+
$context?: {
|
|
10
|
+
session?: Record<string, unknown>;
|
|
11
|
+
};
|
|
12
|
+
api?: {
|
|
13
|
+
getSession?: () => Promise<Record<string, unknown>>;
|
|
14
|
+
};
|
|
15
|
+
}, options?: BetterAuthBridgeOptions): PermisAdapter;
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/plugin.d.ts
|
|
18
|
+
interface PermisPluginOptions {
|
|
19
|
+
roles?: Role[];
|
|
20
|
+
permissions?: Permission[];
|
|
21
|
+
extendSchema?: boolean;
|
|
22
|
+
adapter?: PermisAdapter;
|
|
23
|
+
}
|
|
24
|
+
declare function permisPlugin(options: PermisPluginOptions): {
|
|
25
|
+
id: "permis";
|
|
26
|
+
adapter: PermisAdapter | undefined;
|
|
27
|
+
init: (auth: {
|
|
28
|
+
$context: Record<string, unknown>;
|
|
29
|
+
}) => void;
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/guard.d.ts
|
|
33
|
+
declare function createGuard(engine: PermisEngine): (subject: SubjectId | Subject, action: Action, resource: ResourceType | Resource) => Promise<boolean>;
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/session.d.ts
|
|
36
|
+
interface SessionEnrichment {
|
|
37
|
+
roles?: string[];
|
|
38
|
+
permissions?: Permission[];
|
|
39
|
+
}
|
|
40
|
+
declare function enrichSessionWithPermis(roles: Role[], subjectRoles: string[]): SessionEnrichment;
|
|
41
|
+
//#endregion
|
|
42
|
+
//#region src/schema.d.ts
|
|
43
|
+
declare function createPermisSchemaExtension(): {
|
|
44
|
+
permis_roles: {
|
|
45
|
+
name: {
|
|
46
|
+
type: "string";
|
|
47
|
+
required: boolean;
|
|
48
|
+
};
|
|
49
|
+
description: {
|
|
50
|
+
type: "string";
|
|
51
|
+
required: boolean;
|
|
52
|
+
};
|
|
53
|
+
condition: {
|
|
54
|
+
type: "string";
|
|
55
|
+
required: boolean;
|
|
56
|
+
};
|
|
57
|
+
active: {
|
|
58
|
+
type: "boolean";
|
|
59
|
+
required: boolean;
|
|
60
|
+
};
|
|
61
|
+
createdAt: {
|
|
62
|
+
type: "string";
|
|
63
|
+
required: boolean;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
permis_permissions: {
|
|
67
|
+
id: {
|
|
68
|
+
type: "string";
|
|
69
|
+
required: boolean;
|
|
70
|
+
};
|
|
71
|
+
action: {
|
|
72
|
+
type: "string";
|
|
73
|
+
required: boolean;
|
|
74
|
+
};
|
|
75
|
+
resource: {
|
|
76
|
+
type: "string";
|
|
77
|
+
required: boolean;
|
|
78
|
+
};
|
|
79
|
+
fields: {
|
|
80
|
+
type: "string";
|
|
81
|
+
required: boolean;
|
|
82
|
+
};
|
|
83
|
+
condition: {
|
|
84
|
+
type: "string";
|
|
85
|
+
required: boolean;
|
|
86
|
+
};
|
|
87
|
+
description: {
|
|
88
|
+
type: "string";
|
|
89
|
+
required: boolean;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
permis_role_permissions: {
|
|
93
|
+
roleName: {
|
|
94
|
+
type: "string";
|
|
95
|
+
required: boolean;
|
|
96
|
+
};
|
|
97
|
+
permissionId: {
|
|
98
|
+
type: "string";
|
|
99
|
+
required: boolean;
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
permis_subject_roles: {
|
|
103
|
+
subjectId: {
|
|
104
|
+
type: "string";
|
|
105
|
+
required: boolean;
|
|
106
|
+
};
|
|
107
|
+
roleName: {
|
|
108
|
+
type: "string";
|
|
109
|
+
required: boolean;
|
|
110
|
+
};
|
|
111
|
+
grantedAt: {
|
|
112
|
+
type: "string";
|
|
113
|
+
required: boolean;
|
|
114
|
+
};
|
|
115
|
+
grantedBy: {
|
|
116
|
+
type: "string";
|
|
117
|
+
required: boolean;
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
//#endregion
|
|
122
|
+
export { type BetterAuthBridgeOptions, type PermisPluginOptions, type SessionEnrichment, betterAuthBridge, createGuard, createPermisSchemaExtension, enrichSessionWithPermis, permisPlugin };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t){let n=null;async function r(){return e.$context?.session?e.$context.session:n||(n=(e.api?.getSession?.()??Promise.resolve({})).finally(()=>{n=null}),n)}return{async getRolesForSubject(e){let n=await r();return t?.roleResolver?t.roleResolver(n):[]},async getPermissionsForRole(e){let n=await r();return t?.permissionResolver?t.permissionResolver(n):[]},async getPermissionsForSubject(e){let t=await this.getRolesForSubject(e),n=[];for(let e of t){let t=await this.getPermissionsForRole(e);n.push(...t)}return n},async resolveSubject(e){return{id:e}},async resolveResource(e,t){return{type:e,id:t}}}}function t(e){return{id:`permis`,adapter:e.adapter,init:t=>{t.$context.permis={roles:e.roles??[],permissions:e.permissions??[],adapter:e.adapter??null}}}}function n(e){return async(t,n,r)=>e.can(t,n,r)}function r(e,t){let n=[];for(let r of t){let t=e.find(e=>e.name===r);t&&n.push(...t.permissions)}return{roles:t,permissions:n}}function i(){return{permis_roles:{name:{type:`string`,required:!0},description:{type:`string`,required:!1},condition:{type:`string`,required:!1},active:{type:`boolean`,required:!1},createdAt:{type:`string`,required:!0}},permis_permissions:{id:{type:`string`,required:!0},action:{type:`string`,required:!0},resource:{type:`string`,required:!0},fields:{type:`string`,required:!1},condition:{type:`string`,required:!1},description:{type:`string`,required:!1}},permis_role_permissions:{roleName:{type:`string`,required:!0},permissionId:{type:`string`,required:!0}},permis_subject_roles:{subjectId:{type:`string`,required:!0},roleName:{type:`string`,required:!0},grantedAt:{type:`string`,required:!0},grantedBy:{type:`string`,required:!1}}}}export{e as betterAuthBridge,n as createGuard,i as createPermisSchemaExtension,r as enrichSessionWithPermis,t as permisPlugin};
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@permis/better-auth",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"files": [
|
|
5
|
+
"dist"
|
|
6
|
+
],
|
|
7
|
+
"type": "module",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"exports": {
|
|
10
|
+
".": "./dist/index.mjs",
|
|
11
|
+
"./package.json": "./package.json"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "vp pack",
|
|
15
|
+
"dev": "vp pack --watch",
|
|
16
|
+
"test": "vp test",
|
|
17
|
+
"check": "vp check"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@permis/core": "workspace:*"
|
|
21
|
+
},
|
|
22
|
+
"peerDependencies": {
|
|
23
|
+
"better-auth": "^1.0.0"
|
|
24
|
+
}
|
|
25
|
+
}
|