@cqrs-ddd/pipeline-casl 0.5.0 → 0.5.1

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.
@@ -9,21 +9,25 @@ This Commercial License Agreement ("Agreement") is a legal agreement between You
9
9
  Upon acceptance of this Agreement and compliance with the Payment Terms in Section 2, the Licensor grants You a non-exclusive, worldwide, non-transferable license to use, modify, integrate, and distribute the Software in commercial applications WITHOUT the copyleft obligations of the GNU Affero General Public License v3 (AGPLv3). Under this Agreement, You are NOT required to open-source Your proprietary code that integrates with the Software.
10
10
 
11
11
  2. PAYMENT TERMS AND REVENUE TIERS
12
- This license requires an annual fee based on Your (or Your organization's) total gross global revenue for the most recently completed fiscal year.
12
+ This license requires an annual fee based on Your (or Your organization's) total gross global revenue for the most recently completed fiscal year.
13
13
 
14
- The annual fee is calculated using the following scaled brackets:
14
+ The annual fee is calculated using the following marginal brackets. Each rate applies only to the portion of gross revenue that falls within its bracket, and the annual fee is the sum of the amounts for all brackets:
15
15
 
16
- a) Tier 1: Gross revenue up to $500,000 USD
17
- Fee: $0 (Free Commercial Use)
16
+ a) Tier 1: The portion of gross revenue up to $500,000 USD
17
+ Rate: 0% (Free Commercial Use). If gross revenue does not exceed $500,000 USD, the fee is $0.
18
18
 
19
- b) Tier 2: Gross revenue between $500,001 and $10,000,000 USD
20
- Fee: 0.1% of total gross revenue.
19
+ b) Tier 2: The portion of gross revenue above $500,000 USD and up to $10,000,000 USD
20
+ Rate: 0.1% of that portion.
21
21
 
22
- c) Tier 3: Gross revenue between $10,000,001 and $50,000,000 USD
23
- Fee: 0.05% of total gross revenue.
22
+ c) Tier 3: The portion of gross revenue above $10,000,000 USD and up to $50,000,000 USD
23
+ Rate: 0.05% of that portion.
24
24
 
25
- d) Tier 4: Gross revenue exceeding $50,000,000 USD
26
- Fee: 0.01% of total gross revenue, up to a maximum hard cap of $50,000 USD per year.
25
+ d) Tier 4: The portion of gross revenue above $50,000,000 USD
26
+ Rate: 0.01% of that portion.
27
+
28
+ The total annual fee never exceeds a maximum hard cap of $50,000 USD per year.
29
+
30
+ Example: for gross revenue of $20,000,000 USD, the annual fee is 0.1% of $9,500,000 USD ($9,500) plus 0.05% of $10,000,000 USD ($5,000), a total of $14,500 USD.
27
31
 
28
32
  3. REPORTING AND REMITTANCE
29
33
  - Fees are calculated annually and must be remitted to the Licensor within ninety (90) days following the close of Your fiscal year.
@@ -1 +1 @@
1
- {"version":3,"file":"casl.behavior.d.ts","sourceRoot":"","sources":["../src/casl.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,yCAAyC,CAAC;AAEvE,kEAAkE;AAClE,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,EAAE,SAAS,CAAC,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAAC,CAAC;CAC/D;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAa,YAAW,iBAAiB;IAGxC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,0CAAoB;IAE1D,YAA6B,MAAM,EAAE,qBAAqB,EAMzD;IAEK,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC,CA+BlB;CACF"}
1
+ {"version":3,"file":"casl.behavior.d.ts","sourceRoot":"","sources":["../src/casl.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,yCAAyC,CAAC;AAEvE,kEAAkE;AAClE,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,EAAE,SAAS,CAAC,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAAC,CAAC;CAC/D;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAa,YAAW,iBAAiB;IAGxC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,0CAAoB;IAE1D,YAA6B,MAAM,EAAE,qBAAqB,EAMzD;IAEK,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC,CAgClB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"casl.behavior.js","sourceRoot":"","sources":["../src/casl.behavior.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAIL,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AAQvE;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAY;IAGM,MAAM;IAFnC,MAAM,CAAU,CAAC,oBAAoB,CAAC,GAAG,gBAAgB,CAAC;IAE1D,YAA6B,MAA6B;sBAA7B,MAAM;QACjC,IAAI,OAAO,MAAM,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CACjB,yFAAyF,CAC1F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,OAAyB,EACzB,IAAkB;QAElB,MAAM,KAAK,GACT,OAAO,CAAC,kBAAkB,CAAsB,YAAY,CAAC,EAAE,KAAK,CAAC;QACvE,IAAI,CAAC,KAAK,EAAE,MAAM;YAAE,OAAO,IAAI,EAAE,CAAC;QAElC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,2BAA2B,CAAC;gBACpC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;gBACvB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO;gBACzB,MAAM,EAAE,0CAA0C;aACnD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAE7C,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK;gBACnB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;gBACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,2BAA2B,CAAC;oBACpC,MAAM;oBACN,OAAO;oBACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"casl.behavior.js","sourceRoot":"","sources":["../src/casl.behavior.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAIL,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AAQvE;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAY;IAGM,MAAM;IAFnC,MAAM,CAAU,CAAC,oBAAoB,CAAC,GAAG,gBAAgB,CAAC;IAE1D,YAA6B,MAA6B;sBAA7B,MAAM;QACjC,IAAI,OAAO,MAAM,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CACjB,yFAAyF,CAC1F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,OAAyB,EACzB,IAAkB;QAElB,MAAM,KAAK,GACT,OAAO,CAAC,kBAAkB,CAAsB,YAAY,CAAC,EAAE,KAAK,CAAC;QACvE,IAAI,CAAC,KAAK,EAAE,MAAM;YAAE,OAAO,IAAI,EAAE,CAAC;QAElC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,2BAA2B,CAAC;gBACpC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;gBACvB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO;gBACzB,MAAM,EAAE,0CAA0C;aACnD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAE7C,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK;gBACnB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;gBACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,2BAA2B,CAAC;oBACpC,MAAM;oBACN,OAAO;oBACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"authorizer.d.ts","sourceRoot":"","sources":["../../src/helpers/authorizer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,oBAAoB,CAAC;AAG1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGpE,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,gBAAgB,GACzB,UAAU,GAAG,SAAS,CAGxB;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,GAAG,SAAS,CAG3B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAArC,YAA6B,OAAO,CAAC,EAAE,UAAU,YAAA,EAAI;IAErD;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAOrE;IAED;;;;OAIG;IACH,SAAS,CACP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GACzB,IAAI,CAYN;IAED;;;OAGG;IACH,OAAO,CAAC,UAAU,SAAS,MAAM,EAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,UAAU,GACpB,SAAS,CAAC,UAAU,CAAC,CAavB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGxD;IAED,OAAO,CAAC,SAAS;CAgBlB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CA2BT"}
1
+ {"version":3,"file":"authorizer.d.ts","sourceRoot":"","sources":["../../src/helpers/authorizer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,oBAAoB,CAAC;AAG1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGpE,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,gBAAgB,GACzB,UAAU,GAAG,SAAS,CAGxB;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,GAAG,SAAS,CAG3B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAArC,YAA6B,OAAO,CAAC,EAAE,UAAU,YAAA,EAAI;IAErD;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAOrE;IAED;;;;OAIG;IACH,SAAS,CACP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GACzB,IAAI,CAgBN;IAED;;;OAGG;IACH,OAAO,CAAC,UAAU,SAAS,MAAM,EAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,UAAU,GACpB,SAAS,CAAC,UAAU,CAAC,CAavB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGxD;IAED,OAAO,CAAC,SAAS;CAmBlB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CA2BT"}
@@ -58,9 +58,13 @@ export class CaslAuthorizer {
58
58
  const { ability, subjectType, entityId, typedSubject } = this.permitted(action, subject);
59
59
  for (const field of fields ?? []) {
60
60
  if (!ability.can(action, typedSubject, field)) {
61
- throw denied(action, subjectType, entityId, ` field "${field}"`, [
62
- field,
63
- ]);
61
+ throw denied({
62
+ action,
63
+ subjectType,
64
+ entityId,
65
+ detail: ` field "${field}"`,
66
+ fields: [field],
67
+ });
64
68
  }
65
69
  }
66
70
  }
@@ -73,7 +77,12 @@ export class CaslAuthorizer {
73
77
  throw new TypeError('CaslAuthorizer.project() requires a candidate object.');
74
78
  }
75
79
  const { ability, typedSubject } = this.permitted(action, subject);
76
- return projectPermittedFields(ability, action, typedSubject, toSnapshot(candidate));
80
+ return projectPermittedFields({
81
+ ability,
82
+ action,
83
+ typedSubject,
84
+ record: toSnapshot(candidate),
85
+ });
77
86
  }
78
87
  /**
79
88
  * Whether the decision for `action` on `subject` depends on the entity's
@@ -99,11 +108,17 @@ export class CaslAuthorizer {
99
108
  permitted(action, subject) {
100
109
  const ability = this.ability ?? getCaslAbility();
101
110
  const resolved = resolveSubject(subject);
111
+ const { subjectType, entityId } = resolved;
102
112
  if (!ability) {
103
- throw denied(action, resolved.subjectType, resolved.entityId, ' (no authorization ability present in context)');
113
+ throw denied({
114
+ action,
115
+ subjectType,
116
+ entityId,
117
+ detail: ' (no authorization ability present in context)',
118
+ });
104
119
  }
105
120
  if (!ability.can(action, resolved.typedSubject)) {
106
- throw denied(action, resolved.subjectType, resolved.entityId, '');
121
+ throw denied({ action, subjectType, entityId, detail: '' });
107
122
  }
108
123
  return { ability, ...resolved };
109
124
  }
@@ -140,7 +155,7 @@ function toSnapshot(value) {
140
155
  ? value.toJSON()
141
156
  : value;
142
157
  }
143
- function denied(action, subjectType, entityId, detail, fields) {
158
+ function denied({ action, subjectType, entityId, detail, fields, }) {
144
159
  return new UnauthorizedActionException({
145
160
  action,
146
161
  subject: subjectType,
@@ -153,15 +168,7 @@ function resolveSubject(subject) {
153
168
  if (typeof subject === 'string') {
154
169
  return { subjectType: subject, typedSubject: subject };
155
170
  }
156
- // A value tagged by CASL's `subject()` is a plain object whose constructor
157
- // is `Object`; its tag is the only reliable subject type.
158
- const tagged = subject
159
- .__caslSubjectType__;
160
- const subjectType = typeof tagged === 'string' && tagged.length > 0
161
- ? tagged
162
- : subject.constructor?.name && subject.constructor.name !== 'Object'
163
- ? subject.constructor.name
164
- : 'Object';
171
+ const subjectType = subjectTypeOf(subject);
165
172
  const record = toSnapshot(subject);
166
173
  const entityId = subject.id ??
167
174
  record?.id;
@@ -170,4 +177,15 @@ function resolveSubject(subject) {
170
177
  });
171
178
  return { subjectType, entityId, typedSubject };
172
179
  }
180
+ function subjectTypeOf(subject) {
181
+ // A value tagged by CASL's `subject()` is a plain object whose constructor
182
+ // is `Object`; its tag is the only reliable subject type.
183
+ const tagged = subject
184
+ .__caslSubjectType__;
185
+ if (typeof tagged === 'string' && tagged.length > 0)
186
+ return tagged;
187
+ return subject.constructor?.name && subject.constructor.name !== 'Object'
188
+ ? subject.constructor.name
189
+ : 'Object';
190
+ }
173
191
  //# sourceMappingURL=authorizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authorizer.js","sourceRoot":"","sources":["../../src/helpers/authorizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authorizer.js","sourceRoot":"","sources":["../../src/helpers/authorizer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../src/helpers/capability.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,UAAU,CA2DvE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,UAAU,GAAG,gBAAgB,GACjC,UAAU,CA4BZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CA8BrE;AAiID,kFAAkF;AAClF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMlC"}
1
+ {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../src/helpers/capability.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,UAAU,CAqCvE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,UAAU,GAAG,gBAAgB,GACjC,UAAU,CA4BZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CA8BrE;AAkKD,kFAAkF;AAClF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMlC"}
@@ -41,13 +41,9 @@
41
41
  * ```
42
42
  */
43
43
  export function parseCapabilityString(cap) {
44
- let str = cap.trim();
45
- let inverted = false;
46
- if (str.startsWith('!')) {
47
- inverted = true;
48
- str = str.slice(1);
49
- }
50
- const parts = str.split('|');
44
+ const trimmed = cap.trim();
45
+ const inverted = trimmed.startsWith('!');
46
+ const parts = (inverted ? trimmed.slice(1) : trimmed).split('|');
51
47
  if (parts.length > 5) {
52
48
  throw new Error(`Invalid capability string: too many segments in "${cap}"`);
53
49
  }
@@ -62,23 +58,9 @@ export function parseCapabilityString(cap) {
62
58
  const rawConditions = parts[2];
63
59
  const rawFields = parts[3];
64
60
  const rawReason = parts[4];
65
- let conditions;
66
- if (rawConditions && rawConditions !== '*') {
67
- let parsed;
68
- try {
69
- const json = rawConditions.startsWith('~')
70
- ? Buffer.from(rawConditions.slice(1), 'base64url').toString('utf8')
71
- : rawConditions;
72
- parsed = JSON.parse(json);
73
- }
74
- catch {
75
- throw new Error(`Invalid conditions JSON in capability string "${cap}": ${rawConditions}`);
76
- }
77
- if (!isPlainObject(parsed)) {
78
- throw new TypeError(`Capability conditions must be a JSON object in "${cap}".`);
79
- }
80
- conditions = parsed;
81
- }
61
+ const conditions = rawConditions && rawConditions !== '*'
62
+ ? decodeConditionsSegment(rawConditions, cap)
63
+ : undefined;
82
64
  const result = { subject, action };
83
65
  if (inverted)
84
66
  result.inverted = true;
@@ -184,46 +166,49 @@ function copyJsonConditions(value, ancestors = new WeakSet()) {
184
166
  return value;
185
167
  if (typeof value === 'number' && Number.isFinite(value))
186
168
  return value;
187
- if (typeof value !== 'object' ||
188
- value === null ||
189
- (!Array.isArray(value) && !isPlainObject(value)) ||
190
- ancestors.has(value)) {
169
+ const isJsonContainer = Array.isArray(value) || isPlainObject(value);
170
+ if (!isJsonContainer || ancestors.has(value)) {
191
171
  throw new TypeError('Unsupported condition value.');
192
172
  }
193
173
  ancestors.add(value);
194
174
  try {
195
- const descriptors = Object.getOwnPropertyDescriptors(value);
196
- const keys = Reflect.ownKeys(descriptors);
197
- if (Array.isArray(value)) {
198
- // Arrays must have exactly their length property and contiguous indices.
199
- if (keys.length !== value.length + 1)
200
- throw new TypeError('Lossy condition array.');
201
- const result = [];
202
- for (let index = 0; index < value.length; index += 1) {
203
- const descriptor = descriptors[String(index)];
204
- if (!descriptor?.enumerable || !('value' in descriptor)) {
205
- throw new TypeError('Condition arrays must contain only JSON data.');
206
- }
207
- result.push(copyJsonConditions(descriptor.value, ancestors));
208
- }
209
- return result;
210
- }
211
- const result = Object.create(null);
212
- for (const key of keys) {
213
- if (typeof key !== 'string')
214
- throw new TypeError('Symbol condition keys are unsupported.');
215
- const descriptor = descriptors[key];
216
- if (!descriptor.enumerable || !('value' in descriptor)) {
217
- throw new TypeError('Conditions must contain only enumerable JSON data.');
218
- }
219
- result[key] = copyJsonConditions(descriptor.value, ancestors);
220
- }
221
- return result;
175
+ if (Array.isArray(value))
176
+ return copyJsonArray(value, ancestors);
177
+ return copyJsonObject(value, ancestors);
222
178
  }
223
179
  finally {
224
180
  ancestors.delete(value);
225
181
  }
226
182
  }
183
+ function copyJsonObject(value, ancestors) {
184
+ const descriptors = Object.getOwnPropertyDescriptors(value);
185
+ const result = Object.create(null);
186
+ for (const key of Reflect.ownKeys(descriptors)) {
187
+ if (typeof key !== 'string')
188
+ throw new TypeError('Symbol condition keys are unsupported.');
189
+ const descriptor = descriptors[key];
190
+ if (!descriptor.enumerable || !('value' in descriptor)) {
191
+ throw new TypeError('Conditions must contain only enumerable JSON data.');
192
+ }
193
+ result[key] = copyJsonConditions(descriptor.value, ancestors);
194
+ }
195
+ return result;
196
+ }
197
+ function copyJsonArray(value, ancestors) {
198
+ const descriptors = Object.getOwnPropertyDescriptors(value);
199
+ // Arrays must have exactly their length property and contiguous indices.
200
+ if (Reflect.ownKeys(descriptors).length !== value.length + 1)
201
+ throw new TypeError('Lossy condition array.');
202
+ const result = [];
203
+ for (let index = 0; index < value.length; index += 1) {
204
+ const descriptor = descriptors[String(index)];
205
+ if (!descriptor?.enumerable || !('value' in descriptor)) {
206
+ throw new TypeError('Condition arrays must contain only JSON data.');
207
+ }
208
+ result.push(copyJsonConditions(descriptor.value, ancestors));
209
+ }
210
+ return result;
211
+ }
227
212
  function encodeTextSegment(value, escapeBang = false, escapeStar = false) {
228
213
  const needsEncoding = value.startsWith('~') ||
229
214
  value.includes('|') ||
@@ -261,6 +246,22 @@ function encodeFieldsSegment(fields) {
261
246
  ? fields.join(',')
262
247
  : `~${Buffer.from(JSON.stringify(fields), 'utf8').toString('base64url')}`;
263
248
  }
249
+ function decodeConditionsSegment(value, capability) {
250
+ let parsed;
251
+ try {
252
+ const json = value.startsWith('~')
253
+ ? Buffer.from(value.slice(1), 'base64url').toString('utf8')
254
+ : value;
255
+ parsed = JSON.parse(json);
256
+ }
257
+ catch {
258
+ throw new Error(`Invalid conditions JSON in capability string "${capability}": ${value}`);
259
+ }
260
+ if (!isPlainObject(parsed)) {
261
+ throw new TypeError(`Capability conditions must be a JSON object in "${capability}".`);
262
+ }
263
+ return parsed;
264
+ }
264
265
  function decodeFieldsSegment(value, capability) {
265
266
  if (!value.startsWith('~'))
266
267
  return value.split(',');
@@ -1 +1 @@
1
- {"version":3,"file":"capability.js","sourceRoot":"","sources":["../../src/helpers/capability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capability.js","sourceRoot":"","sources":["../../src/helpers/capability.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,11 @@
1
1
  import type { AppAbility } from '../types/casl.types.js';
2
+ /** A snapshot to project, with the ability, action and CASL subject that decide its fields. */
3
+ interface ProjectionRequest {
4
+ ability: AppAbility;
5
+ action: string;
6
+ typedSubject: string;
7
+ record: Record<string, unknown> | unknown[];
8
+ }
2
9
  /**
3
10
  * Projects a snapshot to the fields `ability` permits for `action`. Conditions
4
11
  * are evaluated against the full subject. A granted parent path authorizes its
@@ -7,5 +14,6 @@ import type { AppAbility } from '../types/casl.types.js';
7
14
  * `parent.*`/`parent.**`. Denied array elements become `null`. Cyclic input
8
15
  * and more than 1024 path aliases throw.
9
16
  */
10
- export declare function projectPermittedFields(ability: AppAbility, action: string, typedSubject: string, record: Record<string, unknown> | unknown[]): Record<string, unknown> | unknown[];
17
+ export declare function projectPermittedFields({ ability, action, typedSubject, record, }: ProjectionRequest): Record<string, unknown> | unknown[];
18
+ export {};
11
19
  //# sourceMappingURL=projection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/helpers/projection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAmBzD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAsIrC"}
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/helpers/projection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAoBzD,+FAA+F;AAC/F,UAAU,iBAAiB;IACzB,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,MAAM,EACN,YAAY,EACZ,MAAM,GACP,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAIzD"}
@@ -1,5 +1,6 @@
1
1
  /* Copyright (C) 2026-present Aristotelis — see repository license. */
2
2
  const OMIT = Symbol('unreadable-field');
3
+ const MAX_PATH_ALIASES = 1024;
3
4
  /** Defines an own data property, so a `__proto__` key stays a plain field. */
4
5
  function defineField(target, key, value) {
5
6
  Object.defineProperty(target, key, {
@@ -17,26 +18,60 @@ function defineField(target, key, value) {
17
18
  * `parent.*`/`parent.**`. Denied array elements become `null`. Cyclic input
18
19
  * and more than 1024 path aliases throw.
19
20
  */
20
- export function projectPermittedFields(ability, action, typedSubject, record) {
21
- const ancestors = new WeakSet();
21
+ export function projectPermittedFields({ ability, action, typedSubject, record, }) {
22
+ return new FieldProjection(ability, action, typedSubject).projectSnapshot(record);
23
+ }
24
+ /** One projection: the decision it applies and the objects above the current value. */
25
+ class FieldProjection {
26
+ ability;
27
+ action;
28
+ typedSubject;
29
+ ancestors = new WeakSet();
30
+ constructor(ability, action, typedSubject) {
31
+ this.ability = ability;
32
+ this.action = action;
33
+ this.typedSubject = typedSubject;
34
+ }
35
+ projectSnapshot(record) {
36
+ if (Array.isArray(record))
37
+ return this.projectItems(record);
38
+ return this.projectFields(record);
39
+ }
40
+ projectItems(record) {
41
+ this.ancestors.add(record);
42
+ try {
43
+ return record.map((item, index) => {
44
+ // The empty path gives named fields the same meaning for every item.
45
+ const projected = this.project(item, ['', String(index)], null);
46
+ return projected === OMIT ? null : projected;
47
+ });
48
+ }
49
+ finally {
50
+ this.ancestors.delete(record);
51
+ }
52
+ }
53
+ projectFields(record) {
54
+ const result = {};
55
+ this.ancestors.add(record);
56
+ try {
57
+ for (const [key, value] of Object.entries(record)) {
58
+ const projected = this.project(value, [key], null);
59
+ if (projected !== OMIT)
60
+ defineField(result, key, projected);
61
+ }
62
+ return result;
63
+ }
64
+ finally {
65
+ this.ancestors.delete(record);
66
+ }
67
+ }
22
68
  // Evaluate full field paths using CASL. Conditions use the complete subject.
23
- function ruleFor(paths, inherited) {
69
+ ruleFor(paths, inherited) {
24
70
  let rule = null;
25
71
  for (const field of paths) {
26
72
  if (!field)
27
73
  continue;
28
- const candidate = ability.relevantRuleFor(action, typedSubject, field);
29
- if (candidate) {
30
- if (candidate.inverted) {
31
- if (!rule?.inverted || candidate.priority < rule.priority) {
32
- rule = candidate;
33
- }
34
- }
35
- else if (!rule ||
36
- (!rule.inverted && candidate.priority < rule.priority)) {
37
- rule = candidate;
38
- }
39
- }
74
+ rule = preferredRule(rule, this.ability.relevantRuleFor(this.action, this.typedSubject, field));
40
75
  }
41
76
  // A direct leaf denial always takes precedence over an inherited grant.
42
77
  if (rule?.inverted) {
@@ -55,86 +90,88 @@ export function projectPermittedFields(ability, action, typedSubject, record) {
55
90
  }
56
91
  return null;
57
92
  }
58
- function project(value, paths, inherited) {
59
- const rule = ruleFor(paths, inherited);
60
- const allowed = !!rule && !rule.inverted;
93
+ project(value, paths, inherited) {
94
+ const rule = this.ruleFor(paths, inherited);
61
95
  if (value === null || typeof value !== 'object' || value instanceof Date) {
62
- return allowed ? value : OMIT;
96
+ return permits(rule) ? value : OMIT;
63
97
  }
64
- if (ancestors.has(value)) {
98
+ if (this.ancestors.has(value)) {
65
99
  throw new TypeError('Cannot project a cyclic authorization snapshot.');
66
100
  }
67
- ancestors.add(value);
101
+ this.ancestors.add(value);
68
102
  try {
69
103
  const toJSON = value.toJSON;
70
104
  if (typeof toJSON === 'function') {
71
- return project(toJSON.call(value), paths, rule);
72
- }
73
- if (Array.isArray(value)) {
74
- if (value.length === 0)
75
- return allowed ? [] : OMIT;
76
- let visible = false;
77
- const result = value.map((item, index) => {
78
- // Named paths apply to every element; indexed paths can additionally
79
- // restrict individual elements. Keep positions stable after masking.
80
- const elementPaths = [
81
- ...new Set([
82
- ...paths,
83
- ...paths.map((path) => path ? `${path}.${index}` : String(index)),
84
- ]),
85
- ];
86
- // Nested arrays have both named and indexed aliases. Bound their
87
- // combinations so pathological input fails closed instead of exploding.
88
- if (elementPaths.length > 1024) {
89
- throw new TypeError('Authorization snapshot has too many array path aliases.');
90
- }
91
- const projected = project(item, elementPaths, rule);
92
- if (projected !== OMIT)
93
- visible = true;
94
- return projected === OMIT ? null : projected;
95
- });
96
- return visible ? result : OMIT;
97
- }
98
- const entries = Object.entries(value);
99
- if (entries.length === 0)
100
- return allowed ? {} : OMIT;
101
- const result = {};
102
- for (const [key, child] of entries) {
103
- const projected = project(child, paths.map((path) => (path ? `${path}.${key}` : key)), rule);
104
- if (projected !== OMIT)
105
- defineField(result, key, projected);
105
+ return this.project(toJSON.call(value), paths, rule);
106
106
  }
107
- return Object.keys(result).length > 0 ? result : OMIT;
107
+ if (Array.isArray(value))
108
+ return this.projectArray(value, paths, rule);
109
+ return this.projectRecord(value, paths, rule);
108
110
  }
109
111
  finally {
110
- ancestors.delete(value);
112
+ this.ancestors.delete(value);
111
113
  }
112
114
  }
113
- if (Array.isArray(record)) {
114
- ancestors.add(record);
115
- try {
116
- return record.map((item, index) => {
117
- // The empty path gives named fields the same meaning for every item.
118
- const projected = project(item, ['', String(index)], null);
119
- return projected === OMIT ? null : projected;
120
- });
121
- }
122
- finally {
123
- ancestors.delete(record);
124
- }
115
+ projectArray(value, paths, rule) {
116
+ if (value.length === 0)
117
+ return permits(rule) ? [] : OMIT;
118
+ let visible = false;
119
+ const result = value.map((item, index) => {
120
+ const projected = this.project(item, elementPaths(paths, index), rule);
121
+ if (projected !== OMIT)
122
+ visible = true;
123
+ return projected === OMIT ? null : projected;
124
+ });
125
+ return visible ? result : OMIT;
125
126
  }
126
- const result = {};
127
- ancestors.add(record);
128
- try {
129
- for (const [key, value] of Object.entries(record)) {
130
- const projected = project(value, [key], null);
127
+ projectRecord(value, paths, rule) {
128
+ const entries = Object.entries(value);
129
+ if (entries.length === 0)
130
+ return permits(rule) ? {} : OMIT;
131
+ const result = {};
132
+ for (const [key, child] of entries) {
133
+ const projected = this.project(child, paths.map((path) => (path ? `${path}.${key}` : key)), rule);
131
134
  if (projected !== OMIT)
132
135
  defineField(result, key, projected);
133
136
  }
134
- return result;
137
+ return Object.keys(result).length > 0 ? result : OMIT;
138
+ }
139
+ }
140
+ function permits(rule) {
141
+ return !!rule && !rule.inverted;
142
+ }
143
+ /**
144
+ * The stronger of the rule chosen so far and a candidate: a denial outranks a
145
+ * grant, and between two of a kind the lower `priority` wins; a tie keeps the
146
+ * current rule.
147
+ */
148
+ function preferredRule(current, candidate) {
149
+ if (!candidate)
150
+ return current;
151
+ if (candidate.inverted) {
152
+ return !current?.inverted || candidate.priority < current.priority
153
+ ? candidate
154
+ : current;
135
155
  }
136
- finally {
137
- ancestors.delete(record);
156
+ return !current ||
157
+ (!current.inverted && candidate.priority < current.priority)
158
+ ? candidate
159
+ : current;
160
+ }
161
+ function elementPaths(paths, index) {
162
+ // Named paths apply to every element; indexed paths can additionally
163
+ // restrict individual elements. Keep positions stable after masking.
164
+ const aliases = [
165
+ ...new Set([
166
+ ...paths,
167
+ ...paths.map((path) => (path ? `${path}.${index}` : String(index))),
168
+ ]),
169
+ ];
170
+ // Nested arrays have both named and indexed aliases. Bound their
171
+ // combinations so pathological input fails closed instead of exploding.
172
+ if (aliases.length > MAX_PATH_ALIASES) {
173
+ throw new TypeError('Authorization snapshot has too many array path aliases.');
138
174
  }
175
+ return aliases;
139
176
  }
140
177
  //# sourceMappingURL=projection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/helpers/projection.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAKtE,MAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAExC,8EAA8E;AAC9E,SAAS,WAAW,CAClB,MAA+B,EAC/B,GAAW,EACX,KAAc;IAEd,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;QACjC,KAAK;QACL,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAmB,EACnB,MAAc,EACd,YAAoB,EACpB,MAA2C;IAE3C,MAAM,SAAS,GAAG,IAAI,OAAO,EAAU,CAAC;IAExC,6EAA6E;IAC7E,SAAS,OAAO,CAAC,KAAe,EAAE,SAAoB;QACpD,IAAI,IAAI,GAAc,IAAI,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACvE,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACvB,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC1D,IAAI,GAAG,SAAS,CAAC;oBACnB,CAAC;gBACH,CAAC;qBAAM,IACL,CAAC,IAAI;oBACL,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EACtD,CAAC;oBACD,IAAI,GAAG,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mEAAmE;QACnE,IAAI,SAAS,EAAE,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uEAAuE;QACvE,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,OAAO,CACd,KAAc,EACd,KAAe,EACf,SAAoB;QAEpB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YACzE,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAChC,CAAC;QAED,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;QACzE,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAI,KAA8B,CAAC,MAAM,CAAC;YACtD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnD,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACvC,qEAAqE;oBACrE,qEAAqE;oBACrE,MAAM,YAAY,GAAG;wBACnB,GAAG,IAAI,GAAG,CAAC;4BACT,GAAG,KAAK;4BACR,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACpB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAC1C;yBACF,CAAC;qBACH,CAAC;oBACF,iEAAiE;oBACjE,wEAAwE;oBACxE,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;wBAC/B,MAAM,IAAI,SAAS,CACjB,yDAAyD,CAC1D,CAAC;oBACJ,CAAC;oBACD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;oBACpD,IAAI,SAAS,KAAK,IAAI;wBAAE,OAAO,GAAG,IAAI,CAAC;oBACvC,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBACH,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACjC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,OAAO,CACvB,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EACpD,IAAI,CACL,CAAC;gBACF,IAAI,SAAS,KAAK,IAAI;oBAAE,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAChC,qEAAqE;gBACrE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC3D,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,SAAS,KAAK,IAAI;gBAAE,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/helpers/projection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cqrs-ddd/pipeline-casl",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "CASL authorization for @cqrs-ddd/pipeline: type-level checks before the handler, entity and field checks after it",
5
5
  "author": "Aristotelis",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -39,19 +39,27 @@
39
39
  "access": "public"
40
40
  },
41
41
  "dependencies": {
42
- "@cqrs-ddd/safe-stringify": "^0.5.0"
42
+ "@cqrs-ddd/safe-stringify": "^0.5.1"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@casl/ability": "^7.0.0",
46
- "@cqrs-ddd/pipeline": "^0.5.0"
46
+ "@cqrs-ddd/pipeline": "^0.5.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@casl/ability": "^7.0.1",
50
- "@vitest/coverage-v8": "^5.0.3",
51
- "vitest": "^5.0.3",
52
- "@cqrs-ddd/pipeline": "0.5.0"
49
+ "@casl/ability": "^7.0.2",
50
+ "@vitest/coverage-v8": "^5.0.5",
51
+ "vitest": "^5.0.5",
52
+ "@cqrs-ddd/pipeline": "0.5.1"
53
53
  },
54
- "keywords": [],
54
+ "keywords": [
55
+ "pipeline",
56
+ "cqrs",
57
+ "authorization",
58
+ "casl",
59
+ "permissions",
60
+ "abac",
61
+ "behavior"
62
+ ],
55
63
  "scripts": {
56
64
  "build": "tsc -p tsconfig.build.json",
57
65
  "build:watch": "tsc -p tsconfig.build.json --watch",