@dereekb/model 9.18.3 → 9.18.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/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [9.18.5](https://github.com/dereekb/dbx-components/compare/v9.18.4-dev...v9.18.5) (2022-12-10)
6
+
7
+
8
+
9
+ ## [9.18.4](https://github.com/dereekb/dbx-components/compare/v9.18.3-dev...v9.18.4) (2022-12-09)
10
+
11
+
12
+
5
13
  ## [9.18.3](https://github.com/dereekb/dbx-components/compare/v9.18.2-dev...v9.18.3) (2022-12-09)
6
14
 
7
15
 
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@dereekb/model",
3
- "version": "9.18.3",
3
+ "version": "9.18.5",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
7
7
  "dependencies": {},
8
8
  "peerDependencies": {
9
9
  "class-validator": "^0.13.2",
10
- "@dereekb/util": "9.18.3",
10
+ "@dereekb/util": "9.18.5",
11
11
  "lodash.isequal": "^4.5.0",
12
12
  "make-error": "^1.3.0",
13
13
  "ts-essentials": "^9.1.2",
@@ -1,4 +1,4 @@
1
- import { ArrayOrValue, Maybe, SetIncludesMode } from '@dereekb/util';
1
+ import { ArrayOrValue, IterableOrValue, Maybe, SetIncludesMode } from '@dereekb/util';
2
2
  /**
3
3
  * A granted role for a model.
4
4
  */
@@ -62,11 +62,32 @@ export declare type GrantedRoleMap<R extends GrantedRole = string> = NoAccessRol
62
62
  export declare type GrantedRoleKeysMap<R extends GrantedRole = string> = {
63
63
  [key in R]?: Maybe<boolean>;
64
64
  };
65
- export interface GrantedRoleMapReader<R extends GrantedRole = string> {
65
+ /**
66
+ * Values keyed by roles.
67
+ */
68
+ export declare type GrantedRoleTruthMapObject<T, R extends GrantedRole> = Partial<{
69
+ [K in R]: T;
70
+ }>;
71
+ /**
72
+ * Output that removes the keys of all roles that are not contained.
73
+ */
74
+ export declare type GrantedRoleTruthMap<M extends GrantedRoleTruthMapObject<any, any>> = M extends GrantedRoleTruthMapObject<infer T, infer R> ? Partial<{
75
+ [K in R]: T;
76
+ }> : never;
77
+ /**
78
+ * Reader used for parsing/reading role values from a given context.
79
+ */
80
+ export interface GrantedRoleMapReader<R extends GrantedRole = GrantedRole> {
66
81
  /**
67
82
  * Returns true if no access has been given.
68
83
  */
69
84
  hasNoAccess(): boolean;
85
+ /**
86
+ * Creates a truth map from the input.
87
+ *
88
+ * @param values
89
+ */
90
+ truthMap<M extends GrantedRoleTruthMapObject<any, R>>(input: M): GrantedRoleTruthMap<M>;
70
91
  /**
71
92
  * Returns true if the role is granted.
72
93
  */
@@ -74,22 +95,29 @@ export interface GrantedRoleMapReader<R extends GrantedRole = string> {
74
95
  /**
75
96
  * Returns true if the roles are granted.
76
97
  */
77
- hasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): boolean;
98
+ hasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R> | IterableOrValue<R>): boolean;
78
99
  /**
79
100
  * Returns true if the map explicitly contains the role.
80
101
  */
81
- containsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): boolean;
102
+ containsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R> | IterableOrValue<R>): boolean;
82
103
  }
104
+ /**
105
+ * Creates a GrantedRoleMapReader.
106
+ *
107
+ * @param map
108
+ * @returns
109
+ */
83
110
  export declare function grantedRoleMapReader<R extends GrantedRole = string>(map: GrantedRoleMap<R>): GrantedRoleMapReader<R>;
84
111
  export declare class GrantedRoleMapReaderInstance<R extends GrantedRole = string> implements GrantedRoleMapReader<R> {
85
112
  private readonly _map;
86
113
  constructor(_map: GrantedRoleMap<R>);
87
114
  hasNoAccess(): boolean;
115
+ truthMap<M extends GrantedRoleTruthMapObject<any, R>>(input: M): GrantedRoleTruthMap<M>;
88
116
  hasRole(role: R): boolean;
89
- hasRoles(setIncludes: SetIncludesMode, inputRoles: ArrayOrValue<R>): boolean;
90
- containsRoles(setIncludes: SetIncludesMode, inputRoles: ArrayOrValue<R>): boolean;
91
- containsAnyRole(roles: GrantedRole[]): boolean;
92
- containsEachRole(roles: GrantedRole[]): boolean;
117
+ hasRoles(setIncludes: SetIncludesMode, inputRoles: IterableOrValue<R>): boolean;
118
+ containsRoles(setIncludes: SetIncludesMode, inputRoles: IterableOrValue<R>): boolean;
119
+ containsAnyRole(roles: ArrayOrValue<R>): boolean;
120
+ containsEachRole(roles: ArrayOrValue<R>): boolean;
93
121
  }
94
122
  /**
95
123
  * Converts the input array of roles to a GrantedRoleKeysMap.
@@ -40,6 +40,12 @@ function isFullAccessRoleMap(input) {
40
40
  return input[exports.FULL_ACCESS_ROLE_KEY] === true;
41
41
  }
42
42
  exports.isFullAccessRoleMap = isFullAccessRoleMap;
43
+ /**
44
+ * Creates a GrantedRoleMapReader.
45
+ *
46
+ * @param map
47
+ * @returns
48
+ */
43
49
  function grantedRoleMapReader(map) {
44
50
  return new GrantedRoleMapReaderInstance(map);
45
51
  }
@@ -51,6 +57,17 @@ class GrantedRoleMapReaderInstance {
51
57
  hasNoAccess() {
52
58
  return this._map[exports.NO_ACCESS_ROLE_KEY];
53
59
  }
60
+ truthMap(input) {
61
+ const result = {};
62
+ (0, util_1.forEachKeyValue)(input, {
63
+ forEach: ([role, value]) => {
64
+ if (this.hasRole(role)) {
65
+ result[role] = value;
66
+ }
67
+ }
68
+ });
69
+ return result;
70
+ }
54
71
  hasRole(role) {
55
72
  return this.hasRoles('any', role);
56
73
  }
@@ -63,7 +80,7 @@ class GrantedRoleMapReaderInstance {
63
80
  }
64
81
  }
65
82
  containsRoles(setIncludes, inputRoles) {
66
- const roles = (0, util_1.asArray)(inputRoles);
83
+ const roles = (0, util_1.iterableToArray)(inputRoles);
67
84
  if (setIncludes === 'any') {
68
85
  return this.containsAnyRole(roles);
69
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"role.js","sourceRoot":"","sources":["../../../../../../../packages/model/src/lib/service/permission/role.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../../../../../../packages/model/src/lib/service/permission/role.ts"],"names":[],"mappings":";;;AAAA,wCAAiJ;AAWpI,QAAA,0BAA0B,GAAG,UAAU,CAAC;AAMxC,QAAA,sBAAsB,GAAG,OAAO,CAAC;AAMjC,QAAA,sBAAsB,GAAG,OAAO,CAAC;AAE9C;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,IAAiB;IACvD,OAAO,IAAI,KAAK,8BAAsB,IAAI,IAAI,KAAK,8BAAsB,CAAC;AAC5E,CAAC;AAFD,0DAEC;AAMY,QAAA,qBAAqB,GAAG,MAAM,CAAC;AAM/B,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AAMnC,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AAInC,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAOlC,QAAA,kBAAkB,GAAG,WAAW,CAAC;AAO9C,SAAgB,eAAe;IAC7B,OAAO;QACL,CAAC,0BAAkB,CAAC,EAAE,IAAI;KAC3B,CAAC;AACJ,CAAC;AAJD,0CAIC;AAED,SAAgB,iBAAiB,CAA4B,KAA0C;IACrG,OAAQ,KAAyB,CAAC,0BAAkB,CAAC,KAAK,IAAI,CAAC;AACjE,CAAC;AAFD,8CAEC;AAMD,SAAgB,iBAAiB;IAC/B,OAAO;QACL,CAAC,4BAAoB,CAAC,EAAE,IAAI;KAC7B,CAAC;AACJ,CAAC;AAJD,8CAIC;AAED,SAAgB,mBAAmB,CAA4B,KAA4C;IACzG,OAAQ,KAA2B,CAAC,4BAAoB,CAAC,KAAK,IAAI,CAAC;AACrE,CAAC;AAFD,kDAEC;AAwDD;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAiC,GAAsB;IACzF,OAAO,IAAI,4BAA4B,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAFD,oDAEC;AAED,MAAa,4BAA4B;IACvC,YAA6B,IAAuB;QAAvB,SAAI,GAAJ,IAAI,CAAmB;IAAG,CAAC;IAExD,WAAW;QACT,OAAQ,IAAI,CAAC,IAAwB,CAAC,0BAAkB,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ,CAA8C,KAAQ;QAC5D,MAAM,MAAM,GAAqC,EAAE,CAAC;QAEpD,IAAA,sBAAe,EAAC,KAAK,EAAE;YACrB,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBACzB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAS,CAAC,EAAE;oBAC3B,MAAM,CAAC,IAAS,CAAC,GAAG,KAAY,CAAC;iBAClC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,MAAgC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,IAAO;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,WAA4B,EAAE,UAA8B;QACnE,IAAK,IAAI,CAAC,IAA0B,CAAC,4BAAoB,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;SACpD;IACH,CAAC;IAED,aAAa,CAAC,WAA4B,EAAE,UAA8B;QACxE,MAAM,KAAK,GAAG,IAAA,sBAAe,EAAC,UAAU,CAAC,CAAC;QAE1C,IAAI,WAAW,KAAK,KAAK,EAAE;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SACpC;aAAM;YACL,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACrC;IACH,CAAC;IAED,eAAe,CAAC,KAAsB;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAK,IAAI,CAAC,IAA2B,CAAC,IAAI,CAAC,EAAE;gBAC3C,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,KAAsB;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAE,IAAI,CAAC,IAA2B,CAAC,IAAI,CAAC,EAAE;gBAC5C,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA9DD,oEA8DC;AAED;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAiC,KAAU,EAAE,KAAK,GAAG,IAAI;IAClG,OAAO,IAAA,oBAAa,EAClB,KAAK,EACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EACR,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;AACJ,CAAC;AAND,kEAMC"}