@lanaqi/rsr 0.0.1-rc.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.
Files changed (46) hide show
  1. package/README.md +49 -0
  2. package/dist/access/aaa.d.ts +177 -0
  3. package/dist/access/addon.d.ts +92 -0
  4. package/dist/access/blocker.d.ts +94 -0
  5. package/dist/access/common.d.ts +63 -0
  6. package/dist/access/context.d.ts +162 -0
  7. package/dist/access/guarder.d.ts +173 -0
  8. package/dist/access/handler.d.ts +183 -0
  9. package/dist/access/index.d.ts +56 -0
  10. package/dist/access/manager.d.ts +109 -0
  11. package/dist/access/matcher.d.ts +70 -0
  12. package/dist/access/navigator.d.ts +33 -0
  13. package/dist/access/recorder.d.ts +291 -0
  14. package/dist/access/resource.d.ts +215 -0
  15. package/dist/access/storer.d.ts +197 -0
  16. package/dist/access/voter.d.ts +156 -0
  17. package/dist/addons/index.d.ts +4 -0
  18. package/dist/addons/micro.d.ts +53 -0
  19. package/dist/bridge.d.ts +8 -0
  20. package/dist/builder/blocker.d.ts +24 -0
  21. package/dist/builder/builder.d.ts +9 -0
  22. package/dist/builder/context.d.ts +112 -0
  23. package/dist/builder/guarder.d.ts +54 -0
  24. package/dist/builder/handler.d.ts +21 -0
  25. package/dist/builder/index.d.ts +48 -0
  26. package/dist/builder/manager.d.ts +55 -0
  27. package/dist/builder/matcher.d.ts +37 -0
  28. package/dist/builder/navigator.d.ts +22 -0
  29. package/dist/builder/recorder.d.ts +11 -0
  30. package/dist/builder/resource.d.ts +101 -0
  31. package/dist/builder/storer.d.ts +83 -0
  32. package/dist/builder/voter.d.ts +41 -0
  33. package/dist/index.d.ts +24 -0
  34. package/dist/index.js +1778 -0
  35. package/dist/security/blocker.d.ts +14 -0
  36. package/dist/security/index.d.ts +8 -0
  37. package/dist/security/provider.d.ts +31 -0
  38. package/dist/support/aaa.d.ts +29 -0
  39. package/dist/support/blocker.d.ts +28 -0
  40. package/dist/support/index.d.ts +20 -0
  41. package/dist/support/permission.d.ts +5 -0
  42. package/dist/support/signature.d.ts +21 -0
  43. package/dist/support/user.d.ts +14 -0
  44. package/dist/warpper/index.d.ts +4 -0
  45. package/dist/warpper/permission.d.ts +24 -0
  46. package/package.json +74 -0
@@ -0,0 +1,156 @@
1
+ import type { AccessPermission } from './common';
2
+ /**
3
+ * 访问投票器
4
+ */
5
+ export interface AccessVoter {
6
+ /**
7
+ * 进行投票
8
+ * @param term 条件
9
+ * @param have 拥有
10
+ */
11
+ vote(term: Set<AccessPermission>, have: Set<AccessPermission>): boolean;
12
+ }
13
+ /**
14
+ * 缓存投票器(抽象类)
15
+ */
16
+ export declare abstract class CacheVoter implements AccessVoter {
17
+ /**
18
+ * 缓存映射
19
+ * @private
20
+ */
21
+ private readonly cache;
22
+ /**
23
+ * 构造函数
24
+ */
25
+ protected constructor();
26
+ /**
27
+ * 缓存键
28
+ * @param term 条件
29
+ * @param have 拥有
30
+ * @private
31
+ */
32
+ private cacheKey;
33
+ /**
34
+ * 执行投票
35
+ * @param term 条件
36
+ * @param have 拥有
37
+ * @protected
38
+ */
39
+ protected abstract execVote(term: Set<AccessPermission>, have: Set<AccessPermission>): boolean;
40
+ /**
41
+ * 清理缓存
42
+ */
43
+ clearCache(): void;
44
+ /**
45
+ * 进行投票
46
+ * @param term 条件
47
+ * @param have 拥有
48
+ */
49
+ vote(term: Set<AccessPermission>, have: Set<AccessPermission>): boolean;
50
+ }
51
+ /**
52
+ * 简单投票器
53
+ */
54
+ export declare class SimpleVoter extends CacheVoter {
55
+ /**
56
+ * 包含全部
57
+ * @private
58
+ */
59
+ private all;
60
+ /**
61
+ * 构造函数
62
+ * @param all 包含全部
63
+ */
64
+ constructor(all?: boolean);
65
+ /**
66
+ * 设置包含全部
67
+ * @param all 包含全部
68
+ */
69
+ setAll(all: boolean): void;
70
+ /**
71
+ * 执行投票
72
+ * @param term 条件
73
+ * @param have 拥有
74
+ * @protected
75
+ */
76
+ protected execVote(term: Set<AccessPermission>, have: Set<AccessPermission>): boolean;
77
+ }
78
+ /**
79
+ * 关系解析器
80
+ */
81
+ export type RelationResolver = (relation: string) => string;
82
+ /**
83
+ * 原始关系解析器
84
+ * @param relation 层级关系
85
+ */
86
+ export declare const OriginRelationResolver: (relation: string) => string;
87
+ /**
88
+ * 层级投票器
89
+ */
90
+ export declare class HierarchyVoter extends CacheVoter {
91
+ /**
92
+ * 层级映射
93
+ * @private
94
+ */
95
+ private readonly mapping;
96
+ /**
97
+ * 层级关系:a>b;b>c;c>d;e>f;f>g
98
+ * @private
99
+ */
100
+ private relation;
101
+ /**
102
+ * 包含全部
103
+ * @private
104
+ */
105
+ private all;
106
+ /**
107
+ * 关系解析器
108
+ * @private
109
+ */
110
+ private resolver;
111
+ /**
112
+ * 构造函数
113
+ * @param resolver 关系解析器
114
+ * @param relation 层级关系:a>b;b>c;c>d;e>f;f>g
115
+ * @param all 包含全部
116
+ */
117
+ constructor(resolver: RelationResolver, relation: string, all?: boolean);
118
+ /**
119
+ * 设置包含全部
120
+ * @param all 包含全部
121
+ */
122
+ setAll(all: boolean): void;
123
+ /**
124
+ * 重置层级关系
125
+ * @param relation 层级关系
126
+ */
127
+ resetRelation(relation: string): void;
128
+ /**
129
+ * 重置关系解析器
130
+ * @param resolver 关系解析器
131
+ */
132
+ resetResolver(resolver: RelationResolver): void;
133
+ /**
134
+ * 初始化层级
135
+ * @private
136
+ */
137
+ private initHierarchy;
138
+ /**
139
+ * p1 包含 p2
140
+ * @param p1 权限1
141
+ * @param p2 权限2
142
+ * @private
143
+ */
144
+ private includePermission;
145
+ /**
146
+ * 执行投票
147
+ * @param term 条件
148
+ * @param have 拥有
149
+ * @protected
150
+ */
151
+ protected execVote(term: Set<AccessPermission>, have: Set<AccessPermission>): boolean;
152
+ /**
153
+ * 获取层级关系
154
+ */
155
+ getRelation(): string;
156
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 微应用插件
3
+ */
4
+ export * from './micro';
@@ -0,0 +1,53 @@
1
+ import { AbstractAddon, type AccessContext, type AccessManager, type AccessPath, type AccessResource } from '../access';
2
+ /**
3
+ * MicroApp 插件实现
4
+ */
5
+ export declare class MicroAppAddon extends AbstractAddon {
6
+ /**
7
+ * 层级连接忽略
8
+ */
9
+ static readonly HIERARCHY_JOIN_IGNORE: string;
10
+ /**
11
+ * 层级连接合并
12
+ */
13
+ static readonly HIERARCHY_JOIN_MERGE: string;
14
+ /**
15
+ * 层级连接父级
16
+ */
17
+ static readonly HIERARCHY_JOIN_PARENT: string;
18
+ /**
19
+ * 微连接
20
+ */
21
+ private microJoin;
22
+ /**
23
+ * 基础路径连接
24
+ * @private
25
+ */
26
+ private readonly basenameJoin;
27
+ /**
28
+ * 层级连接
29
+ * @private
30
+ */
31
+ private readonly hierarchyJoin;
32
+ /**
33
+ * 构造函数
34
+ * @param basenameJoin 基础路径连接
35
+ * @param hierarchyJoin 层级连接
36
+ */
37
+ constructor(basenameJoin: boolean, hierarchyJoin: string);
38
+ /**
39
+ * 守护之前
40
+ * @param context 上下文
41
+ * @param manager 管理器
42
+ * @param currentPath 当前路径
43
+ * @param currentResource 当前资源
44
+ * @override
45
+ */
46
+ guardBefore(context: AccessContext, manager: AccessManager, currentPath: AccessPath, currentResource: AccessResource | null): void;
47
+ }
48
+ /**
49
+ * MicroApp 插件函数
50
+ * @param basenameJoin 基础路径连接
51
+ * @param hierarchyJoin 层级连接
52
+ */
53
+ export declare const microAppAddon: (basenameJoin?: boolean, hierarchyJoin?: string) => MicroAppAddon;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 桥接引用的函数和钩子
3
+ */
4
+ export { matchPath, useBlocker, useLocation, useNavigate } from 'react-router-dom';
5
+ /**
6
+ * 桥接引用的类型
7
+ */
8
+ export type { PathPattern, NavigateFunction, NavigateOptions, To, Path } from 'react-router-dom';
@@ -0,0 +1,24 @@
1
+ import { type AccessBlocker } from '../access';
2
+ import type { AccessBuilder } from './builder';
3
+ /**
4
+ * 访问阻断器构建器
5
+ */
6
+ export declare class AccessBlockerBuilder implements AccessBuilder<AccessBlocker> {
7
+ /**
8
+ * 是否多阻断器
9
+ * @private
10
+ */
11
+ private _multi?;
12
+ /**
13
+ * 标记多阻断器
14
+ */
15
+ multi(): AccessBlockerBuilder;
16
+ /**
17
+ * 标记单阻断器
18
+ */
19
+ single(): AccessBlockerBuilder;
20
+ /**
21
+ * 构建
22
+ */
23
+ build(): AccessBlocker;
24
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 访问构建器
3
+ */
4
+ export interface AccessBuilder<Type> {
5
+ /**
6
+ * 构建
7
+ */
8
+ build(): Type;
9
+ }
@@ -0,0 +1,112 @@
1
+ import { type AccessContext, type AccessMatcher, type AccessNavigator, type AccessRecorder, type AccessResource, type AccessStorer, type AccessValidator, type AccessVoter } from '../access';
2
+ import type { NavigateFunction } from '../bridge';
3
+ import type { AccessBuilder } from './builder';
4
+ import { AccessMatcherBuilder } from './matcher';
5
+ import { AccessNavigatorBuilder } from './navigator';
6
+ import { AccessRecorderBuilder } from './recorder';
7
+ import { AccessResourceBuilder } from './resource';
8
+ import { AccessStorerBuilder } from './storer';
9
+ import { AccessVoterBuilder } from './voter';
10
+ /**
11
+ * 访问上下文构建器
12
+ */
13
+ export declare class AccessContextBuilder implements AccessBuilder<AccessContext> {
14
+ /**
15
+ * 记录器
16
+ * @private
17
+ */
18
+ private _recorder?;
19
+ /**
20
+ * 投票器
21
+ * @private
22
+ */
23
+ private _voter?;
24
+ /**
25
+ * 存储器
26
+ * @private
27
+ */
28
+ private _storer?;
29
+ /**
30
+ * 匹配器
31
+ * @private
32
+ */
33
+ private _matcher?;
34
+ /**
35
+ * 导航器
36
+ * @private
37
+ */
38
+ private _navigator?;
39
+ /**
40
+ * 层级
41
+ * @private
42
+ */
43
+ private _hierarchy?;
44
+ /**
45
+ * 认证验证器
46
+ * @private
47
+ */
48
+ private _validator?;
49
+ /**
50
+ * 资源集合
51
+ * @private
52
+ */
53
+ private readonly _resources;
54
+ /**
55
+ * 导航函数
56
+ * @private
57
+ */
58
+ private _navigate?;
59
+ /**
60
+ * 设置记录器
61
+ * @param recorder 记录器
62
+ */
63
+ recorder(recorder: AccessRecorder | ((builder: AccessRecorderBuilder) => AccessRecorder)): AccessContextBuilder;
64
+ /**
65
+ * 设置投票器
66
+ * @param voter 投票器或投票构建器
67
+ */
68
+ voter(voter: AccessVoter | ((builder: AccessVoterBuilder) => AccessVoter)): AccessContextBuilder;
69
+ /**
70
+ * 设置存储器
71
+ * @param storer 存储器或存储构建器
72
+ */
73
+ storer(storer: AccessStorer | ((builder: AccessStorerBuilder) => AccessStorer)): AccessContextBuilder;
74
+ /**
75
+ * 设置匹配器
76
+ * @param matcher 匹配器或匹配构建器
77
+ */
78
+ matcher(matcher: AccessMatcher | ((builder: AccessMatcherBuilder) => AccessMatcher)): AccessContextBuilder;
79
+ /**
80
+ * 设置导航器
81
+ * @param navigator 导航器或导航构建器
82
+ */
83
+ navigator(navigator: AccessNavigator | ((builder: AccessNavigatorBuilder) => AccessNavigator)): AccessContextBuilder;
84
+ /**
85
+ * 设置层级
86
+ * @param hierarchy 层级:a>b;b>c;c>d;e>f;f>g
87
+ */
88
+ hierarchy(hierarchy: string): AccessContextBuilder;
89
+ /**
90
+ * 设置认证验证器
91
+ * @param validator 认证验证器
92
+ */
93
+ validator(validator: AccessValidator): AccessContextBuilder;
94
+ /**
95
+ * 添加资源
96
+ * @param builder 资源构建器
97
+ */
98
+ resource(builder: (builder: AccessResourceBuilder) => AccessResource): AccessContextBuilder;
99
+ /**
100
+ * 设置导航函数
101
+ * @param navigate 导航函数
102
+ */
103
+ navigate(navigate: NavigateFunction): AccessContextBuilder;
104
+ /**
105
+ * 默认资源集合
106
+ */
107
+ drs(): AccessContextBuilder;
108
+ /**
109
+ * 构建
110
+ */
111
+ build(): AccessContext;
112
+ }
@@ -0,0 +1,54 @@
1
+ import { type AccessAddons, type AccessContext, type AccessManager, type AccessProvider } from '../access';
2
+ import type { NavigateFunction } from '../bridge';
3
+ import type { AccessBuilder } from './builder';
4
+ import { AccessContextBuilder } from './context';
5
+ import { AccessManagerBuilder } from './manager';
6
+ /**
7
+ * 访问守护器构建器
8
+ */
9
+ export declare class AccessGuarderBuilder implements AccessBuilder<AccessProvider> {
10
+ /**
11
+ * 上下文
12
+ * @private
13
+ */
14
+ private _context?;
15
+ /**
16
+ * 管理器
17
+ * @private
18
+ */
19
+ private _manager?;
20
+ /**
21
+ * 插件集合
22
+ * @private
23
+ */
24
+ private readonly _addons;
25
+ /**
26
+ * 导航函数
27
+ * @private
28
+ */
29
+ private _navigate?;
30
+ /**
31
+ * 设置上下文
32
+ * @param context 上下文
33
+ */
34
+ context(context: AccessContext | ((builder: AccessContextBuilder) => AccessContext)): AccessGuarderBuilder;
35
+ /**
36
+ * 设置管理器
37
+ * @param manager 管理器
38
+ */
39
+ manager(manager: AccessManager | ((builder: AccessManagerBuilder) => AccessManager)): AccessGuarderBuilder;
40
+ /**
41
+ * 设置插件集合
42
+ * @param addons 插件集合
43
+ */
44
+ addons(...addons: AccessAddons): AccessGuarderBuilder;
45
+ /**
46
+ * 设置导航函数
47
+ * @param navigate 导航函数
48
+ */
49
+ navigate(navigate: NavigateFunction): AccessGuarderBuilder;
50
+ /**
51
+ * 构建
52
+ */
53
+ build(): AccessProvider;
54
+ }
@@ -0,0 +1,21 @@
1
+ import { type AccessHandler, type BehaveConfig } from '../access';
2
+ import type { AccessBuilder } from './builder';
3
+ /**
4
+ * 访问处理器构建器
5
+ */
6
+ export declare class AccessHandlerBuilder implements AccessBuilder<AccessHandler> {
7
+ /**
8
+ * 行为配置
9
+ * @private
10
+ */
11
+ private _config?;
12
+ /**
13
+ * 设置行为配置
14
+ * @param config 行为配置
15
+ */
16
+ config(config: BehaveConfig): AccessHandlerBuilder;
17
+ /**
18
+ * 构建
19
+ */
20
+ build(): AccessHandler;
21
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * 访问构建器
3
+ */
4
+ export * from './builder';
5
+ /**
6
+ * 访问记录器构建器
7
+ */
8
+ export * from './recorder';
9
+ /**
10
+ * 访问投票器构建器
11
+ */
12
+ export * from './voter';
13
+ /**
14
+ * 访问存储器构建器
15
+ */
16
+ export * from './storer';
17
+ /**
18
+ * 访问资源构建器
19
+ */
20
+ export * from './resource';
21
+ /**
22
+ * 访问匹配器构建器
23
+ */
24
+ export * from './matcher';
25
+ /**
26
+ * 访问导航器构建器
27
+ */
28
+ export * from './navigator';
29
+ /**
30
+ * 访问上下文构建器
31
+ */
32
+ export * from './context';
33
+ /**
34
+ * 访问处理器构建器
35
+ */
36
+ export * from './handler';
37
+ /**
38
+ * 访问阻断器构建器
39
+ */
40
+ export * from './blocker';
41
+ /**
42
+ * 访问管理器构建器
43
+ */
44
+ export * from './manager';
45
+ /**
46
+ * 访问守护器构建器
47
+ */
48
+ export * from './guarder';
@@ -0,0 +1,55 @@
1
+ import { type AccessBlocker, type AccessHandler, type AccessManager, type BehaveConfig } from '../access';
2
+ import { AccessBlockerBuilder } from './blocker';
3
+ import type { AccessBuilder } from './builder';
4
+ import { AccessHandlerBuilder } from './handler';
5
+ /**
6
+ * 访问管理器构建器
7
+ */
8
+ export declare class AccessManagerBuilder implements AccessBuilder<AccessManager> {
9
+ /**
10
+ * 是否禁用
11
+ */
12
+ private _disabled;
13
+ /**
14
+ * 处理器
15
+ * @private
16
+ */
17
+ private _handler?;
18
+ /**
19
+ * 阻断器
20
+ * @private
21
+ */
22
+ private _blocker?;
23
+ /**
24
+ * 行为配置
25
+ * @private
26
+ */
27
+ private _behave?;
28
+ /**
29
+ * 设置已禁用
30
+ */
31
+ disabled(): AccessManagerBuilder;
32
+ /**
33
+ * 设置处理器
34
+ * @param handler 处理器或处理构建器
35
+ */
36
+ handler(handler: AccessHandler | ((builder: AccessHandlerBuilder) => AccessHandler)): AccessManagerBuilder;
37
+ /**
38
+ * 设置阻断器
39
+ * @param blocker 阻断器或阻断构建器
40
+ */
41
+ blocker(blocker: AccessBlocker | ((builder: AccessBlockerBuilder) => AccessBlocker)): AccessManagerBuilder;
42
+ /**
43
+ * 设置行为配置
44
+ * @param behave 行为配置
45
+ */
46
+ behave(behave: BehaveConfig): AccessManagerBuilder;
47
+ /**
48
+ * 默认行为配置
49
+ */
50
+ dbc(): AccessManagerBuilder;
51
+ /**
52
+ * 构建
53
+ */
54
+ build(): AccessManager;
55
+ }
@@ -0,0 +1,37 @@
1
+ import { type AccessMatcher, type AccessResource, type AccessResources } from '../access';
2
+ import type { AccessBuilder } from './builder';
3
+ import { AccessResourceBuilder, type AccessResourceConfig, type AccessResourceConfigs } from './resource';
4
+ /**
5
+ * 访问匹配器构建器
6
+ */
7
+ export declare class AccessMatcherBuilder implements AccessBuilder<AccessMatcher> {
8
+ /**
9
+ * 资源集合
10
+ * @private
11
+ */
12
+ private readonly _resources;
13
+ /**
14
+ * 添加资源配置
15
+ * @param config 资源配置
16
+ */
17
+ config(config: AccessResourceConfig): AccessMatcherBuilder;
18
+ /**
19
+ * 添加资源配置集合
20
+ * @param configs 资源配置集合
21
+ */
22
+ configs(...configs: AccessResourceConfigs): AccessMatcherBuilder;
23
+ /**
24
+ * 添加资源
25
+ * @param builder 资源构建器
26
+ */
27
+ resource(builder: (builder: AccessResourceBuilder) => AccessResource): AccessMatcherBuilder;
28
+ /**
29
+ * 添加资源集合
30
+ * @param resources 资源集合
31
+ */
32
+ resources(resources: AccessResources): AccessMatcherBuilder;
33
+ /**
34
+ * 构建
35
+ */
36
+ build(): AccessMatcher;
37
+ }
@@ -0,0 +1,22 @@
1
+ import { type AccessNavigator } from '../access';
2
+ import type { NavigateFunction } from '../bridge';
3
+ import type { AccessBuilder } from './builder';
4
+ /**
5
+ * 访问导航器构建器
6
+ */
7
+ export declare class AccessNavigatorBuilder implements AccessBuilder<AccessNavigator> {
8
+ /**
9
+ * 导航函数
10
+ * @private
11
+ */
12
+ private _navigate?;
13
+ /**
14
+ * 设置导航函数
15
+ * @param navigate 导航函数
16
+ */
17
+ navigate(navigate: NavigateFunction): AccessNavigatorBuilder;
18
+ /**
19
+ * 构建
20
+ */
21
+ build(): AccessNavigator;
22
+ }
@@ -0,0 +1,11 @@
1
+ import { type AccessRecorder } from '../access';
2
+ import type { AccessBuilder } from './builder';
3
+ /**
4
+ * 访问记录器构建器
5
+ */
6
+ export declare class AccessRecorderBuilder implements AccessBuilder<AccessRecorder> {
7
+ /**
8
+ * 构建
9
+ */
10
+ build(): AccessRecorder;
11
+ }