@jnrs/shared 1.1.4 → 1.1.5
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/README.md +1 -0
- package/dist/index.js +1 -1
- package/dist/styles/theme.scss +1 -0
- package/dist/types/base.d.ts +9 -0
- package/dist/types/base.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/permissions.d.ts +9 -0
- package/dist/utils/permissions.d.ts.map +1 -0
- package/dist/utils/permissions.js +29 -0
- package/dist/utils/permissions.js.map +1 -0
- package/package.json +1 -1
- package/dist/utils/permission.d.ts +0 -2
- package/dist/utils/permission.d.ts.map +0 -1
- package/dist/utils/permission.js +0 -20
- package/dist/utils/permission.js.map +0 -1
package/README.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { getDictColor, getDictLabel, getDictValue, getOneDictList } from './utils/dict.js';
|
|
2
2
|
export { formatDateTime, formatWeekday, setDefaultLocale } from './utils/date.js';
|
|
3
3
|
export { Fullscreen } from './utils/fullscreen.js';
|
|
4
|
-
export {
|
|
4
|
+
export { hasPermissionWithSuffix } from './utils/permissions.js';
|
|
5
5
|
|
|
6
6
|
console.log('%c✨ 欢迎使用 @jnrs/shared', 'background: #8061BF; color: #f2f2f2; font-weight: bold; padding: 4px 8px; border-radius: 4px; font-family: "Helvetica Neue", sans-serif;');
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/styles/theme.scss
CHANGED
package/dist/types/base.d.ts
CHANGED
|
@@ -35,6 +35,15 @@ export interface DictItem {
|
|
|
35
35
|
export interface Dict {
|
|
36
36
|
[key: string]: DictItem[];
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* 角色
|
|
40
|
+
*/
|
|
41
|
+
export interface Role {
|
|
42
|
+
label: string;
|
|
43
|
+
value: string | number;
|
|
44
|
+
permissions?: string[];
|
|
45
|
+
[key: string]: unknown;
|
|
46
|
+
}
|
|
38
47
|
/**
|
|
39
48
|
* 语言
|
|
40
49
|
*/
|
package/dist/types/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA"}
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 判断用户是否拥有指定后缀类型的权限(如 ':view', ':edit',支持通配符 '*':若用户权限含 '*',则拥有全部权限)
|
|
3
|
+
* @param requiredPerms 菜单/路由/按钮/声明的所需权限数组
|
|
4
|
+
* @param userPerms 用户拥有的权限数组
|
|
5
|
+
* @param filterSuffix 筛选要匹配的权限类型后缀,例如 ':view' → 匹配 'user:view'
|
|
6
|
+
* @param matchMode 匹配模式:'some'(任一满足,默认)或 'every'(全部满足)
|
|
7
|
+
*/
|
|
8
|
+
export declare function hasPermissionWithSuffix(requiredPerms: string[] | undefined, userPerms: string[], filterSuffix?: string, matchMode?: 'some' | 'every'): boolean;
|
|
9
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/utils/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,EAAE,EACnB,YAAY,GAAE,MAAW,EACzB,SAAS,GAAE,MAAM,GAAG,OAAgB,GACnC,OAAO,CAuBT"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 判断用户是否拥有指定后缀类型的权限(如 ':view', ':edit',支持通配符 '*':若用户权限含 '*',则拥有全部权限)
|
|
3
|
+
* @param requiredPerms 菜单/路由/按钮/声明的所需权限数组
|
|
4
|
+
* @param userPerms 用户拥有的权限数组
|
|
5
|
+
* @param filterSuffix 筛选要匹配的权限类型后缀,例如 ':view' → 匹配 'user:view'
|
|
6
|
+
* @param matchMode 匹配模式:'some'(任一满足,默认)或 'every'(全部满足)
|
|
7
|
+
*/
|
|
8
|
+
function hasPermissionWithSuffix(requiredPerms, userPerms, filterSuffix = '', matchMode = 'some') {
|
|
9
|
+
const userPermSet = new Set(userPerms);
|
|
10
|
+
// 若用户权限含 '*',则拥有全部权限
|
|
11
|
+
if (userPermSet.has('*')) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
// 无权限要求,视为公开
|
|
15
|
+
if (!requiredPerms || requiredPerms.length === 0) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
const targetPerms = requiredPerms.filter((p) => p.endsWith(`${filterSuffix}`));
|
|
19
|
+
// 如果没有以指定后缀结尾的权限要求,则视为公开
|
|
20
|
+
if (targetPerms.length === 0) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
return matchMode === 'every'
|
|
24
|
+
? targetPerms.every((p) => userPermSet.has(p))
|
|
25
|
+
: targetPerms.some((p) => userPermSet.has(p));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { hasPermissionWithSuffix };
|
|
29
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sources":["../../src/utils/permissions.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;AAMG;AACG,SAAU,uBAAuB,CACrC,aAAmC,EACnC,SAAmB,EACnB,YAAA,GAAuB,EAAE,EACzB,SAAA,GAA8B,MAAM,EAAA;AAEpC,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC;;AAGtC,IAAA,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACxB,QAAA,OAAO,IAAI;IACb;;IAGA,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAA,EAAG,YAAY,CAAA,CAAE,CAAC,CAAC;;AAG9E,IAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,SAAS,KAAK;AACnB,UAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,UAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjD;;;;"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../src/utils/permission.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAmBlG"}
|
package/dist/utils/permission.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
function hasPermission(required, permissions) {
|
|
2
|
-
const userPerms = new Set(permissions || []);
|
|
3
|
-
// 字符串(单权限 或 OR 策略)
|
|
4
|
-
if (typeof required === 'string') {
|
|
5
|
-
// OR 策略
|
|
6
|
-
if (required.includes('|')) {
|
|
7
|
-
return required.split('|').some((p) => userPerms.has(p.trim()));
|
|
8
|
-
}
|
|
9
|
-
// 单权限
|
|
10
|
-
return userPerms.has(required);
|
|
11
|
-
}
|
|
12
|
-
// 数组(AND 策略)
|
|
13
|
-
if (Array.isArray(required)) {
|
|
14
|
-
return required.every((p) => userPerms.has(p));
|
|
15
|
-
}
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export { hasPermission };
|
|
20
|
-
//# sourceMappingURL=permission.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permission.js","sources":["../../src/utils/permission.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAM,SAAU,aAAa,CAAC,QAA2B,EAAE,WAA8B,EAAA;IACvF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;;AAG5C,IAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;;AAEhC,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC1B,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE;;AAEA,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IAChC;;AAGA,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}
|