ez-react-antd 0.2.0 → 0.2.2

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 (47) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/dist/ButtonAuth/ButtonAuth.d.ts +72 -0
  4. package/dist/ButtonAuth/ButtonAuth.d.ts.map +1 -0
  5. package/dist/ButtonAuth/index.d.ts +3 -0
  6. package/dist/ButtonAuth/index.d.ts.map +1 -0
  7. package/dist/ConfigProvider/ConfigProvider.d.ts +106 -0
  8. package/dist/ConfigProvider/ConfigProvider.d.ts.map +1 -0
  9. package/dist/ConfigProvider/defaults.d.ts +7 -0
  10. package/dist/ConfigProvider/defaults.d.ts.map +1 -0
  11. package/dist/ConfigProvider/index.d.ts +4 -145
  12. package/dist/ConfigProvider/index.d.ts.map +1 -1
  13. package/dist/ConfigProvider/types.d.ts +247 -0
  14. package/dist/ConfigProvider/types.d.ts.map +1 -0
  15. package/dist/ConfigProvider/utils.d.ts +123 -0
  16. package/dist/ConfigProvider/utils.d.ts.map +1 -0
  17. package/dist/ErrorPage/ErrorPage.d.ts +3 -1
  18. package/dist/ErrorPage/ErrorPage.d.ts.map +1 -1
  19. package/dist/IconSelect/IconShow/IconShow.d.ts.map +1 -1
  20. package/dist/NoFoundPage/NoFoundPage.d.ts +3 -1
  21. package/dist/NoFoundPage/NoFoundPage.d.ts.map +1 -1
  22. package/dist/NotAuthorizedPage/NotAuthorizedPage.d.ts +3 -1
  23. package/dist/NotAuthorizedPage/NotAuthorizedPage.d.ts.map +1 -1
  24. package/dist/RemoteSelect/RemoteSelect.d.ts +13 -0
  25. package/dist/RemoteSelect/RemoteSelect.d.ts.map +1 -1
  26. package/dist/RemoteTree/RemoteTree.d.ts +9 -3
  27. package/dist/RemoteTree/RemoteTree.d.ts.map +1 -1
  28. package/dist/SearchBar/SearchBar.d.ts +8 -2
  29. package/dist/SearchBar/SearchBar.d.ts.map +1 -1
  30. package/dist/TableActions/ActionButton/ActionButton.d.ts +20 -3
  31. package/dist/TableActions/ActionButton/ActionButton.d.ts.map +1 -1
  32. package/dist/TableActions/TableActions.d.ts +44 -24
  33. package/dist/TableActions/TableActions.d.ts.map +1 -1
  34. package/dist/ez-react-antd.es.js +4532 -4343
  35. package/dist/hoc/withAuth.d.ts +27 -0
  36. package/dist/hoc/withAuth.d.ts.map +1 -0
  37. package/dist/hoc/withEzAntdConfig.d.ts +53 -0
  38. package/dist/hoc/withEzAntdConfig.d.ts.map +1 -0
  39. package/dist/hoc/withRedux.d.ts +31 -0
  40. package/dist/hoc/withRedux.d.ts.map +1 -0
  41. package/dist/hoc/withRoute.d.ts +19 -1
  42. package/dist/hoc/withRoute.d.ts.map +1 -1
  43. package/dist/hoc/withRouteAuth.d.ts +60 -0
  44. package/dist/hoc/withRouteAuth.d.ts.map +1 -0
  45. package/dist/index.d.ts +12 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/package.json +15 -13
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
File without changes
@@ -0,0 +1,72 @@
1
+ import { default as React } from 'react';
2
+ /**
3
+ * 按钮权限控制组件属性接口
4
+ */
5
+ export interface ButtonAuthProps {
6
+ /** 按钮编码,用于查询所需权限 */
7
+ code: string;
8
+ /** 子组件 */
9
+ children?: React.ReactNode;
10
+ }
11
+ /**
12
+ * 按钮权限控制组件
13
+ * 根据按钮编码从配置中查询所需权限,并验证用户是否拥有该权限
14
+ *
15
+ * 权限验证规则:
16
+ * - 未配置 - 默认不需要登录和授权,可以公开显示
17
+ * - requiresAuthentication: false - 公开显示,不需要登录
18
+ * - requiresAuthentication: true + permissionIds: undefined - 需要登录,不需要权限
19
+ * - requiresAuthentication: true + permissionIds: string/array - 需要登录且需要权限
20
+ *
21
+ * @example
22
+ * // 基本用法 - 需要权限
23
+ * <ButtonAuth code="user.create">
24
+ * <Button>创建用户</Button>
25
+ * </ButtonAuth>
26
+ *
27
+ * @example
28
+ * // 多个权限(满足任一即可)
29
+ * // 配置: getButtonPermissions: () => ({
30
+ * // 'user.delete': {
31
+ * // requiresAuthentication: true,
32
+ * // permissionIds: ['user.delete', 'user.manage']
33
+ * // }
34
+ * // })
35
+ * <ButtonAuth code="user.delete">
36
+ * <Button>删除用户</Button>
37
+ * </ButtonAuth>
38
+ *
39
+ * @example
40
+ * // 配合 ConfigProvider 使用(函数形式)
41
+ * <ConfigProvider value={{
42
+ * getButtonPermissions: () => {
43
+ * // 从 sessionStorage 动态获取
44
+ * const cached = sessionStorage.getItem('buttonPermissions');
45
+ * return cached ? JSON.parse(cached) : {
46
+ * 'user.create': {
47
+ * requiresAuthentication: true,
48
+ * permissionIds: 'user.create'
49
+ * },
50
+ * 'user.delete': {
51
+ * requiresAuthentication: true,
52
+ * permissionIds: ['user.delete', 'user.manage'] // 拥有任一权限即可
53
+ * },
54
+ * 'user.export': {
55
+ * requiresAuthentication: true // 需要登录,不需要权限
56
+ * },
57
+ * 'public.view': {
58
+ * requiresAuthentication: false // 公开显示
59
+ * }
60
+ * };
61
+ * },
62
+ * hasPermission: (permission) => checkPermission(permission),
63
+ * isAuthenticated: () => !!sessionStorage.getItem('token')
64
+ * }}>
65
+ * <ButtonAuth code="user.create">
66
+ * <Button>创建用户</Button>
67
+ * </ButtonAuth>
68
+ * </ConfigProvider>
69
+ */
70
+ declare const ButtonAuth: React.FC<ButtonAuthProps>;
71
+ export default ButtonAuth;
72
+ //# sourceMappingURL=ButtonAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonAuth.d.ts","sourceRoot":"","sources":["../../src/ButtonAuth/ButtonAuth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgBzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default } from './ButtonAuth';
2
+ export type { ButtonAuthProps } from './ButtonAuth';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ButtonAuth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,106 @@
1
+ import { default as React } from 'react';
2
+ import { EzAntdConfig } from './types';
3
+ /** 全局配置 Context */
4
+ export declare const ConfigContext: React.Context<EzAntdConfig>;
5
+ /** 更新配置的方法类型 */
6
+ export type UpdateConfigFunction = (newConfig: Partial<EzAntdConfig>) => void;
7
+ /**
8
+ * 获取全局配置的 Hook
9
+ * @returns 全局配置对象
10
+ * @example
11
+ * const { request, responseIsSuccess } = useConfig();
12
+ */
13
+ export declare const useConfig: () => EzAntdConfig;
14
+ /**
15
+ * 获取更新配置方法的 Hook
16
+ * @returns 更新配置的函数
17
+ * @example
18
+ * const updateConfig = useUpdateConfig();
19
+ * updateConfig({ buttonPermissions: {...} });
20
+ */
21
+ export declare const useUpdateConfig: () => UpdateConfigFunction;
22
+ /**
23
+ * 全局配置提供者组件
24
+ * 用于为整个应用提供全局配置,支持动态更新配置
25
+ *
26
+ * @example
27
+ * // 基本用法
28
+ * import { ConfigProvider } from 'ez-react-antd';
29
+ * import request from './utils/request';
30
+ * import session from './utils/session';
31
+ *
32
+ * <ConfigProvider value={{
33
+ * request: request,
34
+ * isAuthenticated: () => session.isAuthenticated(),
35
+ * hasPermission: (permission) => session.hasPermission(permission),
36
+ * hasRole: (role) => session.hasRole(role),
37
+ * loginPath: '/login',
38
+ * forbiddenPath: '/403',
39
+ * }}>
40
+ * <App />
41
+ * </ConfigProvider>
42
+ *
43
+ * @example
44
+ * // 方案 1:应用启动时加载权限配置(适合已登录用户刷新页面)
45
+ * import { ConfigProvider } from 'ez-react-antd';
46
+ *
47
+ * <ConfigProvider value={{
48
+ * isAuthenticated: () => session.isAuthenticated(),
49
+ * hasPermission: (permission) => session.hasPermission(permission),
50
+ * // 使用函数形式,从 sessionStorage 动态获取
51
+ * getRoutePermissions: () => {
52
+ * const cached = sessionStorage.getItem('routePermissions');
53
+ * return cached ? JSON.parse(cached) : {};
54
+ * },
55
+ * getButtonPermissions: () => {
56
+ * const cached = sessionStorage.getItem('buttonPermissions');
57
+ * return cached ? JSON.parse(cached) : {};
58
+ * },
59
+ * }}>
60
+ * <App />
61
+ * </ConfigProvider>
62
+ *
63
+ * @example
64
+ * // 方案 2:登录后保存权限配置到 sessionStorage
65
+ * import { useUpdateConfig } from 'ez-react-antd';
66
+ *
67
+ * function LoginPage() {
68
+ * const handleLogin = async (values) => {
69
+ * // 1. 登录
70
+ * await loginAPI(values);
71
+ *
72
+ * // 2. 加载权限配置
73
+ * const routePermissions = await loadRoutePermissions();
74
+ * const buttonPermissions = await loadButtonPermissions();
75
+ *
76
+ * // 3. 保存到 sessionStorage(页面刷新时可恢复)
77
+ * sessionStorage.setItem('routePermissions', JSON.stringify(routePermissions));
78
+ * sessionStorage.setItem('buttonPermissions', JSON.stringify(buttonPermissions));
79
+ *
80
+ * // 4. 跳转
81
+ * navigate('/dashboard');
82
+ * };
83
+ *
84
+ * return <LoginForm onSubmit={handleLogin} />;
85
+ * }
86
+ *
87
+ * @example
88
+ * // 退出登录时清空权限配置
89
+ * function UserMenu() {
90
+ * const handleLogout = () => {
91
+ * session.clearUserInfo();
92
+ * sessionStorage.removeItem('routePermissions');
93
+ * sessionStorage.removeItem('buttonPermissions');
94
+ * navigate('/login');
95
+ * };
96
+ *
97
+ * return <Button onClick={handleLogout}>退出登录</Button>;
98
+ * }
99
+ */
100
+ export declare const ConfigProvider: React.FC<{
101
+ /** 子组件 */
102
+ children: React.ReactNode;
103
+ /** 初始配置对象 */
104
+ value: EzAntdConfig;
105
+ }>;
106
+ //# sourceMappingURL=ConfigProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigProvider.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/ConfigProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,mBAAmB;AACnB,eAAO,MAAM,aAAa,6BAA6C,CAAC;AAExE,gBAAgB;AAChB,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;AAO9E;;;;;GAKG;AACH,eAAO,MAAM,SAAS,oBAAkC,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,4BAAwC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,UAAU;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa;IACb,KAAK,EAAE,YAAY,CAAC;CACrB,CAsBA,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { EzAntdConfig } from './types';
2
+ /**
3
+ * 默认配置
4
+ * 提供组件库的默认行为
5
+ */
6
+ export declare const defaultConfig: EzAntdConfig;
7
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA+B,MAAM,SAAS,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,YAqC3B,CAAC"}
@@ -1,146 +1,5 @@
1
- import { default as React } from 'react';
2
- /**
3
- * HTTP 请求配置接口
4
- */
5
- export interface RequestConfig {
6
- /** 请求头 */
7
- headers?: {
8
- [name: string]: string;
9
- };
10
- /** 其他配置项 */
11
- [key: string]: any;
12
- }
13
- /**
14
- * 请求参数接口
15
- */
16
- export interface RequestParam {
17
- [name: string]: any;
18
- }
19
- /**
20
- * Axios 响应接口
21
- * 模拟 Axios 的响应结构
22
- */
23
- export interface AxiosResponse<T = any> {
24
- /** 响应数据 */
25
- data: T;
26
- /** HTTP 状态码 */
27
- status: number;
28
- /** HTTP 状态文本 */
29
- statusText: string;
30
- /** 原始请求对象 */
31
- request?: any;
32
- /** 其他属性 */
33
- [key: string]: any;
34
- }
35
- /**
36
- * 请求方法接口
37
- * 定义基本的 HTTP 请求方法
38
- */
39
- export interface Request {
40
- /**
41
- * GET 请求
42
- * @param url 请求 URL
43
- * @param params 查询参数
44
- * @param config 请求配置
45
- * @returns Promise 响应
46
- */
47
- getRequest: (url: string, params?: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
48
- /**
49
- * PUT 请求
50
- * @param url 请求 URL
51
- * @param data 请求体数据
52
- * @param config 请求配置
53
- * @returns Promise 响应
54
- */
55
- putRequest: (url: string, data: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
56
- /**
57
- * DELETE 请求
58
- * @param url 请求 URL
59
- * @param params 查询参数
60
- * @param config 请求配置
61
- * @returns Promise 响应
62
- */
63
- deleteRequest: (url: string, params?: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
64
- /**
65
- * POST 请求
66
- * @param url 请求 URL
67
- * @param data 请求体数据
68
- * @param config 请求配置
69
- * @returns Promise 响应
70
- */
71
- postRequest: (url: string, data: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
72
- }
73
- /**
74
- * EzAntd 全局配置接口
75
- * 用于配置组件库的全局行为
76
- */
77
- export interface EzAntdConfig {
78
- /** 全局请求方法对象,提供 GET/POST/PUT/DELETE 方法 */
79
- request?: Request;
80
- /**
81
- * 判断请求响应是否成功
82
- * @param response 响应对象
83
- * @returns 是否成功
84
- */
85
- responseIsSuccess?: (response: any) => boolean;
86
- /**
87
- * 文件上传方法
88
- * @param url 上传 URL
89
- * @param formData 表单数据
90
- * @returns Promise 响应
91
- */
92
- upload?: (url: string, formData: FormData) => Promise<any>;
93
- /**
94
- * 判断用户是否已登录
95
- * @returns 是否已登录
96
- */
97
- isAuthenticated?: () => boolean;
98
- /**
99
- * 判断是否拥有权限
100
- * @param permission 权限标识,支持单个权限、权限数组、undefined 或 null
101
- * @returns 是否拥有权限
102
- */
103
- hasPermission?: (permission: string | string[] | undefined | null) => boolean;
104
- /**
105
- * 判断是否拥有角色
106
- * @param role 角色标识,支持单个角色、角色数组、undefined 或 null
107
- * @returns 是否拥有角色
108
- */
109
- hasRole?: (role: string | string[] | undefined | null) => boolean;
110
- }
111
- /** 全局配置 Context */
112
- export declare const ConfigContext: React.Context<EzAntdConfig>;
113
- /**
114
- * 获取全局配置的 Hook
115
- * @returns 全局配置对象
116
- * @example
117
- * const { request, responseIsSuccess } = useConfig();
118
- */
119
- export declare const useConfig: () => EzAntdConfig;
120
- /**
121
- * 全局配置提供者组件
122
- * 用于为整个应用提供全局配置
123
- *
124
- * @example
125
- * import { ConfigProvider } from 'ez-react-antd';
126
- * import request from './utils/request';
127
- * import { isAuthenticated, hasPermission, hasRole } from './utils/auth';
128
- *
129
- * <ConfigProvider value={{
130
- * request: request,
131
- * responseIsSuccess: (res) => res.status === 200 && res.data.code === 0,
132
- * upload: (url, formData) => request.postRequest(url, formData),
133
- * isAuthenticated: () => isAuthenticated(),
134
- * hasPermission: (permission) => hasPermission(permission),
135
- * hasRole: (role) => hasRole(role)
136
- * }}>
137
- * <App />
138
- * </ConfigProvider>
139
- */
140
- export declare const ConfigProvider: React.FC<{
141
- /** 子组件 */
142
- children: React.ReactNode;
143
- /** 配置对象 */
144
- value: EzAntdConfig;
145
- }>;
1
+ export type { RequestConfig, RequestParam, AxiosResponse, Request, EzAntdConfig, RoutePermissionMap, ButtonPermissionMap, } from './types';
2
+ export { defaultConfig } from './defaults';
3
+ export { ConfigProvider, ConfigContext, useConfig, useUpdateConfig, type UpdateConfigFunction } from './ConfigProvider';
4
+ export { getRoutePermission, getButtonPermission, getFirstAccessibleRoute, hasButtonPermission, hasRoutePermission } from './utils';
146
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU;IACV,OAAO,CAAC,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;KACxB,CAAC;IACF,YAAY;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG;IACpC,WAAW;IACX,IAAI,EAAE,CAAC,CAAC;IACR,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,WAAW;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB;;;;;;OAMG;IACH,UAAU,EAAE,CACV,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,aAAa,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,UAAU,EAAE,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,YAAY,EAClB,MAAM,CAAC,EAAE,aAAa,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,aAAa,EAAE,CACb,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,aAAa,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,WAAW,EAAE,CACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,YAAY,EAClB,MAAM,CAAC,EAAE,aAAa,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;CAClC;AAGD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC;IAC/C;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3D;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;IAChC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC;IAC9E;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC;CACnE;AAwCD,mBAAmB;AACnB,eAAO,MAAM,aAAa,6BAA6C,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,SAAS,oBAAkC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,UAAU;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW;IACX,KAAK,EAAE,YAAY,CAAC;CACrB,CAMA,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * HTTP 请求配置接口
3
+ */
4
+ export interface RequestConfig {
5
+ /** 请求头 */
6
+ headers?: {
7
+ [name: string]: string;
8
+ };
9
+ /** 其他配置项 */
10
+ [key: string]: any;
11
+ }
12
+ /**
13
+ * 请求参数接口
14
+ */
15
+ export interface RequestParam {
16
+ [name: string]: any;
17
+ }
18
+ /**
19
+ * Axios 响应接口
20
+ * 模拟 Axios 的响应结构
21
+ */
22
+ export interface AxiosResponse<T = any> {
23
+ /** 响应数据 */
24
+ data: T;
25
+ /** HTTP 状态码 */
26
+ status: number;
27
+ /** HTTP 状态文本 */
28
+ statusText: string;
29
+ /** 原始请求对象 */
30
+ request?: any;
31
+ /** 其他属性 */
32
+ [key: string]: any;
33
+ }
34
+ /**
35
+ * 请求方法接口
36
+ * 定义基本的 HTTP 请求方法
37
+ */
38
+ export interface Request {
39
+ /**
40
+ * GET 请求
41
+ * @param url 请求 URL
42
+ * @param params 查询参数
43
+ * @param config 请求配置
44
+ * @returns Promise 响应
45
+ */
46
+ getRequest: (url: string, params?: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
47
+ /**
48
+ * PUT 请求
49
+ * @param url 请求 URL
50
+ * @param data 请求体数据
51
+ * @param config 请求配置
52
+ * @returns Promise 响应
53
+ */
54
+ putRequest: (url: string, data: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
55
+ /**
56
+ * DELETE 请求
57
+ * @param url 请求 URL
58
+ * @param params 查询参数
59
+ * @param config 请求配置
60
+ * @returns Promise 响应
61
+ */
62
+ deleteRequest: (url: string, params?: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
63
+ /**
64
+ * POST 请求
65
+ * @param url 请求 URL
66
+ * @param data 请求体数据
67
+ * @param config 请求配置
68
+ * @returns Promise 响应
69
+ */
70
+ postRequest: (url: string, data: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
71
+ }
72
+ /**
73
+ * 路由权限配置对象
74
+ */
75
+ export interface RoutePermissionConfig {
76
+ /**
77
+ * 是否需要登录
78
+ * - true: 需要登录才能访问(默认值)
79
+ * - false: 不需要登录,公开访问
80
+ */
81
+ requiresAuthentication: boolean;
82
+ /**
83
+ * 所需权限 ID
84
+ * - string: 必须拥有该权限
85
+ * - string[]: 拥有其中任意一个权限即可
86
+ * - undefined: 不需要权限验证(但可能需要登录,取决于 requiresAuthentication)
87
+ */
88
+ permissionIds?: string | string[];
89
+ }
90
+ /**
91
+ * 路由权限映射配置
92
+ * 用于配置路由路径与所需权限的映射关系
93
+ */
94
+ export interface RoutePermissionMap {
95
+ /**
96
+ * 路由路径到权限配置的映射
97
+ *
98
+ * @example
99
+ * {
100
+ * '/login': {
101
+ * requiresAuthentication: false // 公开访问,不需要登录
102
+ * },
103
+ * '/public': {
104
+ * requiresAuthentication: false, // 公开访问
105
+ * permissionIds: undefined
106
+ * },
107
+ * '/dashboard': {
108
+ * requiresAuthentication: true, // 需要登录,不需要权限
109
+ * permissionIds: undefined
110
+ * },
111
+ * '/admin': {
112
+ * requiresAuthentication: true, // 需要登录 + 需要权限
113
+ * permissionIds: 'admin.view'
114
+ * },
115
+ * '/admin/users': {
116
+ * requiresAuthentication: true, // 需要登录 + 需要任一权限
117
+ * permissionIds: ['user.view', 'user.manage']
118
+ * }
119
+ * // 未配置的路由默认需要登录但不需要权限
120
+ * }
121
+ */
122
+ [path: string]: undefined | RoutePermissionConfig;
123
+ }
124
+ /**
125
+ * 按钮权限配置对象
126
+ */
127
+ export interface ButtonPermissionConfig {
128
+ /**
129
+ * 是否需要登录
130
+ * - true: 需要登录才能显示(默认值)
131
+ * - false: 不需要登录,公开显示
132
+ */
133
+ requiresAuthentication: boolean;
134
+ /**
135
+ * 所需权限 ID
136
+ * - string: 必须拥有该权限
137
+ * - string[]: 拥有其中任意一个权限即可
138
+ * - undefined: 不需要权限验证(但可能需要登录,取决于 requiresAuthentication)
139
+ */
140
+ permissionIds?: string | string[];
141
+ }
142
+ /**
143
+ * 按钮权限映射配置
144
+ * 用于配置按钮编码与所需权限的映射关系
145
+ */
146
+ export interface ButtonPermissionMap {
147
+ /**
148
+ * 按钮编码到权限配置的映射
149
+ *
150
+ * @example
151
+ * {
152
+ * 'user.create': {
153
+ * requiresAuthentication: true,
154
+ * permissionIds: 'user.create'
155
+ * },
156
+ * 'user.delete': {
157
+ * requiresAuthentication: true,
158
+ * permissionIds: ['user.delete', 'user.manage'] // 任一权限即可
159
+ * },
160
+ * 'user.export': {
161
+ * requiresAuthentication: true // 需要登录,不需要权限
162
+ * },
163
+ * 'public.view': {
164
+ * requiresAuthentication: false // 公开显示
165
+ * }
166
+ * // 未配置的按钮默认需要登录但不需要权限
167
+ * }
168
+ */
169
+ [code: string]: undefined | ButtonPermissionConfig;
170
+ }
171
+ /**
172
+ * EzAntd 全局配置接口
173
+ * 用于配置组件库的全局行为
174
+ */
175
+ export interface EzAntdConfig {
176
+ /** 全局请求方法对象,提供 GET/POST/PUT/DELETE 方法 */
177
+ request?: Request;
178
+ /**
179
+ * 判断请求响应是否成功
180
+ * @param response 响应对象
181
+ * @returns 是否成功
182
+ */
183
+ responseIsSuccess?: (response: any) => boolean;
184
+ /**
185
+ * 文件上传方法
186
+ * @param url 上传 URL
187
+ * @param formData 表单数据
188
+ * @returns Promise 响应
189
+ */
190
+ upload?: (url: string, formData: FormData) => Promise<any>;
191
+ /**
192
+ * 判断用户是否已登录
193
+ * @returns 是否已登录
194
+ */
195
+ isAuthenticated?: () => boolean;
196
+ /**
197
+ * 判断是否拥有权限
198
+ * @param permission 权限标识,支持单个权限、权限数组、undefined 或 null
199
+ * @returns 是否拥有权限
200
+ */
201
+ hasPermission?: (permission: string | string[] | undefined | null) => boolean;
202
+ /**
203
+ * 判断是否拥有角色
204
+ * @param role 角色标识,支持单个角色、角色数组、undefined 或 null
205
+ * @returns 是否拥有角色
206
+ */
207
+ hasRole?: (role: string | string[] | undefined | null) => boolean;
208
+ /**
209
+ * 获取路由权限映射配置(函数形式)
210
+ * 动态获取路由路径与所需权限的映射关系
211
+ * 使用函数形式可以避免页面刷新后配置丢失
212
+ *
213
+ * @returns 路由权限映射对象
214
+ * @example
215
+ * getRoutePermissions: () => {
216
+ * const cached = sessionStorage.getItem('routePermissions');
217
+ * return cached ? JSON.parse(cached) : {};
218
+ * }
219
+ */
220
+ getRoutePermissions?: () => RoutePermissionMap;
221
+ /**
222
+ * 获取按钮权限映射配置(函数形式)
223
+ * 动态获取按钮编码与所需权限的映射关系
224
+ * 使用函数形式可以避免页面刷新后配置丢失
225
+ *
226
+ * @returns 按钮权限映射对象
227
+ * @example
228
+ * getButtonPermissions: () => {
229
+ * const cached = sessionStorage.getItem('buttonPermissions');
230
+ * return cached ? JSON.parse(cached) : {};
231
+ * }
232
+ */
233
+ getButtonPermissions?: () => ButtonPermissionMap;
234
+ /**
235
+ * 登录页面路径
236
+ * 未登录时重定向到此路径
237
+ * @default '/login'
238
+ */
239
+ loginPath?: string;
240
+ /**
241
+ * 无权限页面路径
242
+ * 没有权限时重定向到此路径
243
+ * @default '/403'
244
+ */
245
+ forbiddenPath?: string;
246
+ }
247
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/types.ts"],"names":[],"mappings":"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"}