@actsecurity/iam-simulate 0.1.197 → 0.1.198

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 (30) hide show
  1. package/README.md +9 -0
  2. package/dist/cjs/condition/string/ignoreCaseEquals.d.ts +23 -2
  3. package/dist/cjs/condition/string/ignoreCaseEquals.d.ts.map +1 -1
  4. package/dist/cjs/condition/string/ignoreCaseEquals.js +25 -6
  5. package/dist/cjs/condition/string/ignoreCaseEquals.js.map +1 -1
  6. package/dist/cjs/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -1
  7. package/dist/cjs/context_keys/discoveryContextKeyConstraints.js +6 -4
  8. package/dist/cjs/context_keys/discoveryContextKeyConstraints.js.map +1 -1
  9. package/dist/cjs/index.d.ts +1 -0
  10. package/dist/cjs/index.d.ts.map +1 -1
  11. package/dist/cjs/index.js +5 -1
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/requestContext.d.ts.map +1 -1
  14. package/dist/cjs/requestContext.js +4 -3
  15. package/dist/cjs/requestContext.js.map +1 -1
  16. package/dist/esm/condition/string/ignoreCaseEquals.d.ts +23 -2
  17. package/dist/esm/condition/string/ignoreCaseEquals.d.ts.map +1 -1
  18. package/dist/esm/condition/string/ignoreCaseEquals.js +21 -5
  19. package/dist/esm/condition/string/ignoreCaseEquals.js.map +1 -1
  20. package/dist/esm/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -1
  21. package/dist/esm/context_keys/discoveryContextKeyConstraints.js +6 -4
  22. package/dist/esm/context_keys/discoveryContextKeyConstraints.js.map +1 -1
  23. package/dist/esm/index.d.ts +1 -0
  24. package/dist/esm/index.d.ts.map +1 -1
  25. package/dist/esm/index.js +1 -0
  26. package/dist/esm/index.js.map +1 -1
  27. package/dist/esm/requestContext.d.ts.map +1 -1
  28. package/dist/esm/requestContext.js +4 -3
  29. package/dist/esm/requestContext.js.map +1 -1
  30. package/package.json +1 -1
package/README.md CHANGED
@@ -17,6 +17,15 @@ The simulator currently supports these features of AWS IAM
17
17
  - Same Account and Cross Account Requests
18
18
  - Custom trust behavior for IAM Trust Policies and KMS Key Policies
19
19
 
20
+ ### IAM string-value comparisons
21
+
22
+ The package exports `iamStringEquals`, `iamStringEqualsIgnoreCase`, and
23
+ `iamStringEqualsNormalizeCaseInsensitive` for comparing or indexing **already-resolved literal
24
+ condition values**. They do not resolve policy variables or evaluate condition operators. The
25
+ ignore-case helper and normalizer apply the same per-UTF-16-code-unit lowercase mapping used by
26
+ the IAM `StringEqualsIgnoreCase` implementation. This behavior is an empirical approximation of
27
+ the AWS IAM policy simulator and depends on the JavaScript runtime's Unicode mappings.
28
+
20
29
  ### Request Validation
21
30
 
22
31
  iam-simulate will automatically validate inputs including
@@ -1,5 +1,15 @@
1
1
  /**
2
- * Compare strings using the case behavior observed in AWS IAM's policy simulator.
2
+ * Compare two already-resolved IAM condition values using JavaScript strict string equality.
3
+ * This does not resolve variables or evaluate wildcards.
4
+ *
5
+ * @param left the first literal value
6
+ * @param right the second literal value
7
+ * @returns whether the values are identical
8
+ */
9
+ export declare function iamStringEquals(left: string, right: string): boolean;
10
+ /**
11
+ * Compare already-resolved literal strings using the case behavior observed in AWS IAM's policy simulator.
12
+ * This does not resolve policy variables or evaluate condition operators.
3
13
  *
4
14
  * Lowercase each UTF-16 code unit independently, rather than applying Unicode case
5
15
  * folding or lowercasing whole strings. This is an empirical approximation: the
@@ -9,5 +19,16 @@
9
19
  * @param right the second string to compare
10
20
  * @returns whether the strings compare equal ignoring case
11
21
  */
12
- export declare function ignoreCaseEquals(left: string, right: string): boolean;
22
+ export declare function iamStringEqualsIgnoreCase(left: string, right: string): boolean;
23
+ /** Internal alias retained for the IAM string condition operators. */
24
+ export declare const ignoreCaseEquals: typeof iamStringEqualsIgnoreCase;
25
+ /**
26
+ * Normalize an already-resolved IAM string value for case-insensitive equality or indexing.
27
+ * Lowercases individual UTF-16 code units, including mappings that expand to multiple units.
28
+ * This is distinct from context-key normalization and depends on runtime Unicode mappings.
29
+ *
30
+ * @param value the string to transform
31
+ * @returns the concatenation of the lowercase code units
32
+ */
33
+ export declare function iamStringEqualsNormalizeCaseInsensitive(value: string): string;
13
34
  //# sourceMappingURL=ignoreCaseEquals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ignoreCaseEquals.d.ts","sourceRoot":"","sources":["../../../../src/condition/string/ignoreCaseEquals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAErE"}
1
+ {"version":3,"file":"ignoreCaseEquals.d.ts","sourceRoot":"","sources":["../../../../src/condition/string/ignoreCaseEquals.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAI9E;AAED,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,kCAA4B,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7E"}
@@ -1,8 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ignoreCaseEquals = ignoreCaseEquals;
3
+ exports.ignoreCaseEquals = void 0;
4
+ exports.iamStringEquals = iamStringEquals;
5
+ exports.iamStringEqualsIgnoreCase = iamStringEqualsIgnoreCase;
6
+ exports.iamStringEqualsNormalizeCaseInsensitive = iamStringEqualsNormalizeCaseInsensitive;
4
7
  /**
5
- * Compare strings using the case behavior observed in AWS IAM's policy simulator.
8
+ * Compare two already-resolved IAM condition values using JavaScript strict string equality.
9
+ * This does not resolve variables or evaluate wildcards.
10
+ *
11
+ * @param left the first literal value
12
+ * @param right the second literal value
13
+ * @returns whether the values are identical
14
+ */
15
+ function iamStringEquals(left, right) {
16
+ return left === right;
17
+ }
18
+ /**
19
+ * Compare already-resolved literal strings using the case behavior observed in AWS IAM's policy simulator.
20
+ * This does not resolve policy variables or evaluate condition operators.
6
21
  *
7
22
  * Lowercase each UTF-16 code unit independently, rather than applying Unicode case
8
23
  * folding or lowercasing whole strings. This is an empirical approximation: the
@@ -12,16 +27,20 @@ exports.ignoreCaseEquals = ignoreCaseEquals;
12
27
  * @param right the second string to compare
13
28
  * @returns whether the strings compare equal ignoring case
14
29
  */
15
- function ignoreCaseEquals(left, right) {
16
- return lowerCodeUnits(left) === lowerCodeUnits(right);
30
+ function iamStringEqualsIgnoreCase(left, right) {
31
+ return (iamStringEqualsNormalizeCaseInsensitive(left) === iamStringEqualsNormalizeCaseInsensitive(right));
17
32
  }
33
+ /** Internal alias retained for the IAM string condition operators. */
34
+ exports.ignoreCaseEquals = iamStringEqualsIgnoreCase;
18
35
  /**
19
- * Lowercase individual UTF-16 code units, including mappings that expand to multiple units.
36
+ * Normalize an already-resolved IAM string value for case-insensitive equality or indexing.
37
+ * Lowercases individual UTF-16 code units, including mappings that expand to multiple units.
38
+ * This is distinct from context-key normalization and depends on runtime Unicode mappings.
20
39
  *
21
40
  * @param value the string to transform
22
41
  * @returns the concatenation of the lowercase code units
23
42
  */
24
- function lowerCodeUnits(value) {
43
+ function iamStringEqualsNormalizeCaseInsensitive(value) {
25
44
  let result = '';
26
45
  for (let index = 0; index < value.length; index++) {
27
46
  result += value[index].toLowerCase();
@@ -1 +1 @@
1
- {"version":3,"file":"ignoreCaseEquals.js","sourceRoot":"","sources":["../../../../src/condition/string/ignoreCaseEquals.ts"],"names":[],"mappings":";;AAWA,4CAEC;AAbD;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB,CAAC,IAAY,EAAE,KAAa;IAC1D,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,CAAC,CAAA;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACtC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"ignoreCaseEquals.js","sourceRoot":"","sources":["../../../../src/condition/string/ignoreCaseEquals.ts"],"names":[],"mappings":";;;AAQA,0CAEC;AAcD,8DAIC;AAaD,0FAMC;AA/CD;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,OAAO,IAAI,KAAK,KAAK,CAAA;AACvB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,yBAAyB,CAAC,IAAY,EAAE,KAAa;IACnE,OAAO,CACL,uCAAuC,CAAC,IAAI,CAAC,KAAK,uCAAuC,CAAC,KAAK,CAAC,CACjG,CAAA;AACH,CAAC;AAED,sEAAsE;AACzD,QAAA,gBAAgB,GAAG,yBAAyB,CAAA;AAEzD;;;;;;;GAOG;AACH,SAAgB,uCAAuC,CAAC,KAAa;IACnE,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACtC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"discoveryContextKeyConstraints.d.ts","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,UAAU,gCAAgC;IACxC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,iCAAiC;IACzC,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,0FAA0F;IAC1F,YAAY,EAAE,IAAI,CAAA;CACnB;AAED;;GAEG;AACH,UAAU,mCAAmC;IAC3C,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,sEAAsE;IACtE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;GAKG;AACH,UAAU,yBAAyB;IACjC,oEAAoE;IACpE,eAAe,EAAE,KAAK,CAAA;IAEtB,qEAAqE;IACrE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,6BAA6B,GAAG,gCAAgC,GAC1E,CACI,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,CAAA;AAEH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sCAAsC,GAAG,CACjD,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,GAAG;IACF,iFAAiF;IACjF,oBAAoB,EAAE,OAAO,CAAA;CAC9B,CAAA;AAuCD;;;;;GAKG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,0BAA0B,CAA6C;IAC/E,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,aAAa,CAAiE;IAEtF;;;;OAIG;gBACS,WAAW,GAAE,6BAA6B,EAAO;IAgB7D;;;;;OAKG;IACI,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,sCAAsC;IAuCzE;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAoBtB"}
1
+ {"version":3,"file":"discoveryContextKeyConstraints.d.ts","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,UAAU,gCAAgC;IACxC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,iCAAiC;IACzC,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,0FAA0F;IAC1F,YAAY,EAAE,IAAI,CAAA;CACnB;AAED;;GAEG;AACH,UAAU,mCAAmC;IAC3C,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,sEAAsE;IACtE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;GAKG;AACH,UAAU,yBAAyB;IACjC,oEAAoE;IACpE,eAAe,EAAE,KAAK,CAAA;IAEtB,qEAAqE;IACrE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,6BAA6B,GAAG,gCAAgC,GAC1E,CACI,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,CAAA;AAEH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sCAAsC,GAAG,CACjD,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,GAAG;IACF,iFAAiF;IACjF,oBAAoB,EAAE,OAAO,CAAA;CAC9B,CAAA;AAuCD;;;;;GAKG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,0BAA0B,CAA6C;IAC/E,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,aAAa,CAAiE;IAEtF;;;;OAIG;gBACS,WAAW,GAAE,6BAA6B,EAAO;IAgB7D;;;;;OAKG;IACI,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,sCAAsC;IAwCzE;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAoBtB"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DiscoveryContextKeyConstraints = void 0;
4
+ const iam_utils_1 = require("@actsecurity/iam-utils");
4
5
  const unconstrained = {
5
6
  presenceIsKnown: false,
6
7
  valueIsKnown: false,
@@ -39,7 +40,8 @@ class DiscoveryContextKeyConstraints {
39
40
  */
40
41
  constraintFor(key) {
41
42
  const lowerKey = key.toLowerCase();
42
- const cached = this.resolvedCache.get(lowerKey);
43
+ // Regex matching can distinguish names that normalizeCaseInsensitive equates.
44
+ const cached = this.resolvedCache.get(key);
43
45
  if (cached) {
44
46
  return cached;
45
47
  }
@@ -47,7 +49,7 @@ class DiscoveryContextKeyConstraints {
47
49
  const merge = (constraint) => {
48
50
  result = effectiveConstraint(result.presenceIsKnown || constraint.presenceIsKnown, result.valueIsKnown || constraint.valueIsKnown, true);
49
51
  };
50
- const literal = this.literalConstraints.get(lowerKey);
52
+ const literal = this.literalConstraints.get((0, iam_utils_1.normalizeCaseInsensitive)(key));
51
53
  if (literal) {
52
54
  merge(literal);
53
55
  }
@@ -63,7 +65,7 @@ class DiscoveryContextKeyConstraints {
63
65
  merge(constraint);
64
66
  }
65
67
  }
66
- this.resolvedCache.set(lowerKey, result);
68
+ this.resolvedCache.set(key, result);
67
69
  return result;
68
70
  }
69
71
  /**
@@ -91,7 +93,7 @@ class DiscoveryContextKeyConstraints {
91
93
  }
92
94
  }
93
95
  else {
94
- const key = constraint.keyName.toLowerCase();
96
+ const key = (0, iam_utils_1.normalizeCaseInsensitive)(constraint.keyName);
95
97
  const existing = this.literalConstraints.get(key);
96
98
  this.literalConstraints.set(key, existing ? mergeStored(existing, stored) : stored);
97
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discoveryContextKeyConstraints.js","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discoveryContextKeyConstraints.js","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { getDenialReasons, getGrantReasons, type DenialPolicyType, type RequestGrant, type RequestDenial } from './analysis/analyzeResults.js';
2
+ export { iamStringEquals, iamStringEqualsIgnoreCase, iamStringEqualsNormalizeCaseInsensitive } from './condition/string/ignoreCaseEquals.js';
2
3
  export { typeForContextKey } from './context_keys/contextKeys.js';
3
4
  export { isConditionKeyArray, type BaseConditionKeyType, type ConditionKeyType } from './context_keys/contextKeyTypes.js';
4
5
  export type { DiscoveryContextKeyConstraint } from './context_keys/discoveryContextKeyConstraints.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAA;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAC1E,YAAY,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EAChB,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAChC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AACvE,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,EAC9B,8BAA8B,EAC9B,iCAAiC,EACjC,gCAAgC,EACjC,MAAM,yCAAyC,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,uCAAuC,EACxC,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAA;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAC1E,YAAY,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EAChB,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAChC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AACvE,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,EAC9B,8BAA8B,EAC9B,iCAAiC,EACjC,gCAAgC,EACjC,MAAM,yCAAyC,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
package/dist/cjs/index.js CHANGED
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isWildcardOnlyAction = exports.runUnsafeSimulation = exports.runSimulation = exports.isSimulationRequestPrincipal = exports.isAnonymousRequestPrincipal = exports.anonymousPrincipal = exports.allowedContextKeysForRequest = exports.findContextKeys = exports.isConditionKeyArray = exports.typeForContextKey = exports.getGrantReasons = exports.getDenialReasons = void 0;
3
+ exports.isWildcardOnlyAction = exports.runUnsafeSimulation = exports.runSimulation = exports.isSimulationRequestPrincipal = exports.isAnonymousRequestPrincipal = exports.anonymousPrincipal = exports.allowedContextKeysForRequest = exports.findContextKeys = exports.isConditionKeyArray = exports.typeForContextKey = exports.iamStringEqualsNormalizeCaseInsensitive = exports.iamStringEqualsIgnoreCase = exports.iamStringEquals = exports.getGrantReasons = exports.getDenialReasons = void 0;
4
4
  var analyzeResults_js_1 = require("./analysis/analyzeResults.js");
5
5
  Object.defineProperty(exports, "getDenialReasons", { enumerable: true, get: function () { return analyzeResults_js_1.getDenialReasons; } });
6
6
  Object.defineProperty(exports, "getGrantReasons", { enumerable: true, get: function () { return analyzeResults_js_1.getGrantReasons; } });
7
+ var ignoreCaseEquals_js_1 = require("./condition/string/ignoreCaseEquals.js");
8
+ Object.defineProperty(exports, "iamStringEquals", { enumerable: true, get: function () { return ignoreCaseEquals_js_1.iamStringEquals; } });
9
+ Object.defineProperty(exports, "iamStringEqualsIgnoreCase", { enumerable: true, get: function () { return ignoreCaseEquals_js_1.iamStringEqualsIgnoreCase; } });
10
+ Object.defineProperty(exports, "iamStringEqualsNormalizeCaseInsensitive", { enumerable: true, get: function () { return ignoreCaseEquals_js_1.iamStringEqualsNormalizeCaseInsensitive; } });
7
11
  var contextKeys_js_1 = require("./context_keys/contextKeys.js");
8
12
  Object.defineProperty(exports, "typeForContextKey", { enumerable: true, get: function () { return contextKeys_js_1.typeForContextKey; } });
9
13
  var contextKeyTypes_js_1 = require("./context_keys/contextKeyTypes.js");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,kEAMqC;AALnC,qHAAA,gBAAgB,OAAA;AAChB,oHAAA,eAAe,OAAA;AAKjB,gEAAiE;AAAxD,mHAAA,iBAAiB,OAAA;AAC1B,wEAI0C;AAHxC,yHAAA,mBAAmB,OAAA;AAKrB,wEAAmE;AAA1D,qHAAA,eAAe,OAAA;AA0BxB,qEAAiF;AAAxE,8HAAA,4BAA4B,OAAA;AACrC,mEAS0C;AARxC,mHAAA,kBAAkB,OAAA;AAClB,4HAAA,2BAA2B,OAAA;AAC3B,6HAAA,4BAA4B,OAAA;AAO9B,+EAAuE;AAA9D,oHAAA,aAAa,OAAA;AAatB,2FAAmF;AAA1E,gIAAA,mBAAmB,OAAA;AAC5B,qCAAgD;AAAvC,+GAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,kEAMqC;AALnC,qHAAA,gBAAgB,OAAA;AAChB,oHAAA,eAAe,OAAA;AAKjB,8EAI+C;AAH7C,sHAAA,eAAe,OAAA;AACf,gIAAA,yBAAyB,OAAA;AACzB,8IAAA,uCAAuC,OAAA;AAEzC,gEAAiE;AAAxD,mHAAA,iBAAiB,OAAA;AAC1B,wEAI0C;AAHxC,yHAAA,mBAAmB,OAAA;AAKrB,wEAAmE;AAA1D,qHAAA,eAAe,OAAA;AA0BxB,qEAAiF;AAAxE,8HAAA,4BAA4B,OAAA;AACrC,mEAS0C;AARxC,mHAAA,kBAAkB,OAAA;AAClB,4HAAA,2BAA2B,OAAA;AAC3B,6HAAA,4BAA4B,OAAA;AAO9B,+EAAuE;AAA9D,oHAAA,aAAa,OAAA;AAatB,2FAAmF;AAA1E,gIAAA,mBAAmB,OAAA;AAC5B,qCAAgD;AAAvC,+GAAA,oBAAoB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../src/requestContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAE3C;;;;;OAKG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI,gBAAgB,CAAA;IAEzC;;OAEG;IACH,YAAY,IAAI,IAAI,IAAI,eAAe,CAAA;CACxC;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD;;OAEG;IAEH,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,OAAO,CAAqC;gBAExC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAM9C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;CAGjD;AAED,qBAAa,cAAe,YAAW,UAAU,EAAE,gBAAgB,EAAE,eAAe;IAEzE,IAAI,EAAE,MAAM;IACnB,OAAO,CAAC,IAAI;gBADL,IAAI,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAGjC,aAAa,IAAI,IAAI,IAAI,gBAAgB;IAGzC,YAAY,IAAI,IAAI,IAAI,eAAe;IAIvC,IAAI,MAAM,IAAI,MAAM,EAAE,CAKrB;IAED,IAAI,KAAK,IAAI,MAAM,CAKlB;CACF"}
1
+ {"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../src/requestContext.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAE3C;;;;;OAKG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI,gBAAgB,CAAA;IAEzC;;OAEG;IACH,YAAY,IAAI,IAAI,IAAI,eAAe,CAAA;CACxC;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD;;OAEG;IAEH,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,OAAO,CAAqC;gBAExC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAM9C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;CAGjD;AAED,qBAAa,cAAe,YAAW,UAAU,EAAE,gBAAgB,EAAE,eAAe;IAEzE,IAAI,EAAE,MAAM;IACnB,OAAO,CAAC,IAAI;gBADL,IAAI,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAGjC,aAAa,IAAI,IAAI,IAAI,gBAAgB;IAGzC,YAAY,IAAI,IAAI,IAAI,eAAe;IAIvC,IAAI,MAAM,IAAI,MAAM,EAAE,CAKrB;IAED,IAAI,KAAK,IAAI,MAAM,CAKlB;CACF"}
@@ -1,18 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ContextKeyImpl = exports.RequestContextImpl = void 0;
4
+ const iam_utils_1 = require("@actsecurity/iam-utils");
4
5
  class RequestContextImpl {
5
6
  context = new Map();
6
7
  constructor(values) {
7
8
  for (const key in values) {
8
- this.context.set(key.toLowerCase(), new ContextKeyImpl(key, values[key]));
9
+ this.context.set((0, iam_utils_1.normalizeCaseInsensitive)(key), new ContextKeyImpl(key, values[key]));
9
10
  }
10
11
  }
11
12
  contextKeyExists(name) {
12
- return this.context.has(name.toLowerCase());
13
+ return this.context.has((0, iam_utils_1.normalizeCaseInsensitive)(name));
13
14
  }
14
15
  contextKeyValue(name) {
15
- return this.context.get(name.toLowerCase());
16
+ return this.context.get((0, iam_utils_1.normalizeCaseInsensitive)(name));
16
17
  }
17
18
  }
18
19
  exports.RequestContextImpl = RequestContextImpl;
@@ -1 +1 @@
1
- {"version":3,"file":"requestContext.js","sourceRoot":"","sources":["../../src/requestContext.ts"],"names":[],"mappings":";;;AAuDA,MAAa,kBAAkB;IACrB,OAAO,GAA4B,IAAI,GAAG,EAAE,CAAA;IAEpD,YAAY,MAAyC;QACnD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IAC7C,CAAC;IAEM,eAAe,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAe,CAAA;IAC3D,CAAC;CACF;AAhBD,gDAgBC;AAED,MAAa,cAAc;IAEhB;IACC;IAFV,YACS,IAAY,EACX,IAAuB;QADxB,SAAI,GAAJ,IAAI,CAAQ;QACX,SAAI,GAAJ,IAAI,CAAmB;IAC9B,CAAC;IAEJ,aAAa;QACX,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAA;IACtC,CAAC;IACD,YAAY;QACV,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,MAAM;QACR,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,KAAK;QACP,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAA;IAC5D,CAAC;CACF;AA1BD,wCA0BC"}
1
+ {"version":3,"file":"requestContext.js","sourceRoot":"","sources":["../../src/requestContext.ts"],"names":[],"mappings":";;;AAAA,sDAAiE;AAyDjE,MAAa,kBAAkB;IACrB,OAAO,GAA4B,IAAI,GAAG,EAAE,CAAA;IAEpD,YAAY,MAAyC;QACnD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,oCAAwB,EAAC,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvF,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,oCAAwB,EAAC,IAAI,CAAC,CAAC,CAAA;IACzD,CAAC;IAEM,eAAe,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,oCAAwB,EAAC,IAAI,CAAC,CAAe,CAAA;IACvE,CAAC;CACF;AAhBD,gDAgBC;AAED,MAAa,cAAc;IAEhB;IACC;IAFV,YACS,IAAY,EACX,IAAuB;QADxB,SAAI,GAAJ,IAAI,CAAQ;QACX,SAAI,GAAJ,IAAI,CAAmB;IAC9B,CAAC;IAEJ,aAAa;QACX,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAA;IACtC,CAAC;IACD,YAAY;QACV,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,MAAM;QACR,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,KAAK;QACP,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAA;IAC5D,CAAC;CACF;AA1BD,wCA0BC"}
@@ -1,5 +1,15 @@
1
1
  /**
2
- * Compare strings using the case behavior observed in AWS IAM's policy simulator.
2
+ * Compare two already-resolved IAM condition values using JavaScript strict string equality.
3
+ * This does not resolve variables or evaluate wildcards.
4
+ *
5
+ * @param left the first literal value
6
+ * @param right the second literal value
7
+ * @returns whether the values are identical
8
+ */
9
+ export declare function iamStringEquals(left: string, right: string): boolean;
10
+ /**
11
+ * Compare already-resolved literal strings using the case behavior observed in AWS IAM's policy simulator.
12
+ * This does not resolve policy variables or evaluate condition operators.
3
13
  *
4
14
  * Lowercase each UTF-16 code unit independently, rather than applying Unicode case
5
15
  * folding or lowercasing whole strings. This is an empirical approximation: the
@@ -9,5 +19,16 @@
9
19
  * @param right the second string to compare
10
20
  * @returns whether the strings compare equal ignoring case
11
21
  */
12
- export declare function ignoreCaseEquals(left: string, right: string): boolean;
22
+ export declare function iamStringEqualsIgnoreCase(left: string, right: string): boolean;
23
+ /** Internal alias retained for the IAM string condition operators. */
24
+ export declare const ignoreCaseEquals: typeof iamStringEqualsIgnoreCase;
25
+ /**
26
+ * Normalize an already-resolved IAM string value for case-insensitive equality or indexing.
27
+ * Lowercases individual UTF-16 code units, including mappings that expand to multiple units.
28
+ * This is distinct from context-key normalization and depends on runtime Unicode mappings.
29
+ *
30
+ * @param value the string to transform
31
+ * @returns the concatenation of the lowercase code units
32
+ */
33
+ export declare function iamStringEqualsNormalizeCaseInsensitive(value: string): string;
13
34
  //# sourceMappingURL=ignoreCaseEquals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ignoreCaseEquals.d.ts","sourceRoot":"","sources":["../../../../src/condition/string/ignoreCaseEquals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAErE"}
1
+ {"version":3,"file":"ignoreCaseEquals.d.ts","sourceRoot":"","sources":["../../../../src/condition/string/ignoreCaseEquals.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAI9E;AAED,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,kCAA4B,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7E"}
@@ -1,5 +1,17 @@
1
1
  /**
2
- * Compare strings using the case behavior observed in AWS IAM's policy simulator.
2
+ * Compare two already-resolved IAM condition values using JavaScript strict string equality.
3
+ * This does not resolve variables or evaluate wildcards.
4
+ *
5
+ * @param left the first literal value
6
+ * @param right the second literal value
7
+ * @returns whether the values are identical
8
+ */
9
+ export function iamStringEquals(left, right) {
10
+ return left === right;
11
+ }
12
+ /**
13
+ * Compare already-resolved literal strings using the case behavior observed in AWS IAM's policy simulator.
14
+ * This does not resolve policy variables or evaluate condition operators.
3
15
  *
4
16
  * Lowercase each UTF-16 code unit independently, rather than applying Unicode case
5
17
  * folding or lowercasing whole strings. This is an empirical approximation: the
@@ -9,16 +21,20 @@
9
21
  * @param right the second string to compare
10
22
  * @returns whether the strings compare equal ignoring case
11
23
  */
12
- export function ignoreCaseEquals(left, right) {
13
- return lowerCodeUnits(left) === lowerCodeUnits(right);
24
+ export function iamStringEqualsIgnoreCase(left, right) {
25
+ return (iamStringEqualsNormalizeCaseInsensitive(left) === iamStringEqualsNormalizeCaseInsensitive(right));
14
26
  }
27
+ /** Internal alias retained for the IAM string condition operators. */
28
+ export const ignoreCaseEquals = iamStringEqualsIgnoreCase;
15
29
  /**
16
- * Lowercase individual UTF-16 code units, including mappings that expand to multiple units.
30
+ * Normalize an already-resolved IAM string value for case-insensitive equality or indexing.
31
+ * Lowercases individual UTF-16 code units, including mappings that expand to multiple units.
32
+ * This is distinct from context-key normalization and depends on runtime Unicode mappings.
17
33
  *
18
34
  * @param value the string to transform
19
35
  * @returns the concatenation of the lowercase code units
20
36
  */
21
- function lowerCodeUnits(value) {
37
+ export function iamStringEqualsNormalizeCaseInsensitive(value) {
22
38
  let result = '';
23
39
  for (let index = 0; index < value.length; index++) {
24
40
  result += value[index].toLowerCase();
@@ -1 +1 @@
1
- {"version":3,"file":"ignoreCaseEquals.js","sourceRoot":"","sources":["../../../../src/condition/string/ignoreCaseEquals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa;IAC1D,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,CAAC,CAAA;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACtC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"ignoreCaseEquals.js","sourceRoot":"","sources":["../../../../src/condition/string/ignoreCaseEquals.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,OAAO,IAAI,KAAK,KAAK,CAAA;AACvB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,KAAa;IACnE,OAAO,CACL,uCAAuC,CAAC,IAAI,CAAC,KAAK,uCAAuC,CAAC,KAAK,CAAC,CACjG,CAAA;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAA;AAEzD;;;;;;;GAOG;AACH,MAAM,UAAU,uCAAuC,CAAC,KAAa;IACnE,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACtC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"discoveryContextKeyConstraints.d.ts","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,UAAU,gCAAgC;IACxC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,iCAAiC;IACzC,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,0FAA0F;IAC1F,YAAY,EAAE,IAAI,CAAA;CACnB;AAED;;GAEG;AACH,UAAU,mCAAmC;IAC3C,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,sEAAsE;IACtE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;GAKG;AACH,UAAU,yBAAyB;IACjC,oEAAoE;IACpE,eAAe,EAAE,KAAK,CAAA;IAEtB,qEAAqE;IACrE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,6BAA6B,GAAG,gCAAgC,GAC1E,CACI,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,CAAA;AAEH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sCAAsC,GAAG,CACjD,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,GAAG;IACF,iFAAiF;IACjF,oBAAoB,EAAE,OAAO,CAAA;CAC9B,CAAA;AAuCD;;;;;GAKG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,0BAA0B,CAA6C;IAC/E,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,aAAa,CAAiE;IAEtF;;;;OAIG;gBACS,WAAW,GAAE,6BAA6B,EAAO;IAgB7D;;;;;OAKG;IACI,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,sCAAsC;IAuCzE;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAoBtB"}
1
+ {"version":3,"file":"discoveryContextKeyConstraints.d.ts","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,UAAU,gCAAgC;IACxC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,iCAAiC;IACzC,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,0FAA0F;IAC1F,YAAY,EAAE,IAAI,CAAA;CACnB;AAED;;GAEG;AACH,UAAU,mCAAmC;IAC3C,gEAAgE;IAChE,eAAe,EAAE,IAAI,CAAA;IAErB,sEAAsE;IACtE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;GAKG;AACH,UAAU,yBAAyB;IACjC,oEAAoE;IACpE,eAAe,EAAE,KAAK,CAAA;IAEtB,qEAAqE;IACrE,YAAY,EAAE,KAAK,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,6BAA6B,GAAG,gCAAgC,GAC1E,CACI,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,CAAA;AAEH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sCAAsC,GAAG,CACjD,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC5B,GAAG;IACF,iFAAiF;IACjF,oBAAoB,EAAE,OAAO,CAAA;CAC9B,CAAA;AAuCD;;;;;GAKG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,0BAA0B,CAA6C;IAC/E,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,aAAa,CAAiE;IAEtF;;;;OAIG;gBACS,WAAW,GAAE,6BAA6B,EAAO;IAgB7D;;;;;OAKG;IACI,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,sCAAsC;IAwCzE;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAoBtB"}
@@ -1,3 +1,4 @@
1
+ import { normalizeCaseInsensitive } from '@actsecurity/iam-utils';
1
2
  const unconstrained = {
2
3
  presenceIsKnown: false,
3
4
  valueIsKnown: false,
@@ -36,7 +37,8 @@ export class DiscoveryContextKeyConstraints {
36
37
  */
37
38
  constraintFor(key) {
38
39
  const lowerKey = key.toLowerCase();
39
- const cached = this.resolvedCache.get(lowerKey);
40
+ // Regex matching can distinguish names that normalizeCaseInsensitive equates.
41
+ const cached = this.resolvedCache.get(key);
40
42
  if (cached) {
41
43
  return cached;
42
44
  }
@@ -44,7 +46,7 @@ export class DiscoveryContextKeyConstraints {
44
46
  const merge = (constraint) => {
45
47
  result = effectiveConstraint(result.presenceIsKnown || constraint.presenceIsKnown, result.valueIsKnown || constraint.valueIsKnown, true);
46
48
  };
47
- const literal = this.literalConstraints.get(lowerKey);
49
+ const literal = this.literalConstraints.get(normalizeCaseInsensitive(key));
48
50
  if (literal) {
49
51
  merge(literal);
50
52
  }
@@ -60,7 +62,7 @@ export class DiscoveryContextKeyConstraints {
60
62
  merge(constraint);
61
63
  }
62
64
  }
63
- this.resolvedCache.set(lowerKey, result);
65
+ this.resolvedCache.set(key, result);
64
66
  return result;
65
67
  }
66
68
  /**
@@ -88,7 +90,7 @@ export class DiscoveryContextKeyConstraints {
88
90
  }
89
91
  }
90
92
  else {
91
- const key = constraint.keyName.toLowerCase();
93
+ const key = normalizeCaseInsensitive(constraint.keyName);
92
94
  const existing = this.literalConstraints.get(key);
93
95
  this.literalConstraints.set(key, existing ? mergeStored(existing, stored) : stored);
94
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discoveryContextKeyConstraints.js","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discoveryContextKeyConstraints.js","sourceRoot":"","sources":["../../../src/context_keys/discoveryContextKeyConstraints.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { getDenialReasons, getGrantReasons, type DenialPolicyType, type RequestGrant, type RequestDenial } from './analysis/analyzeResults.js';
2
+ export { iamStringEquals, iamStringEqualsIgnoreCase, iamStringEqualsNormalizeCaseInsensitive } from './condition/string/ignoreCaseEquals.js';
2
3
  export { typeForContextKey } from './context_keys/contextKeys.js';
3
4
  export { isConditionKeyArray, type BaseConditionKeyType, type ConditionKeyType } from './context_keys/contextKeyTypes.js';
4
5
  export type { DiscoveryContextKeyConstraint } from './context_keys/discoveryContextKeyConstraints.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAA;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAC1E,YAAY,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EAChB,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAChC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AACvE,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,EAC9B,8BAA8B,EAC9B,iCAAiC,EACjC,gCAAgC,EACjC,MAAM,yCAAyC,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,uCAAuC,EACxC,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAA;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAC1E,YAAY,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EAChB,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAChC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AACvE,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,EAC9B,8BAA8B,EAC9B,iCAAiC,EACjC,gCAAgC,EACjC,MAAM,yCAAyC,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
package/dist/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { getDenialReasons, getGrantReasons } from './analysis/analyzeResults.js';
2
+ export { iamStringEquals, iamStringEqualsIgnoreCase, iamStringEqualsNormalizeCaseInsensitive } from './condition/string/ignoreCaseEquals.js';
2
3
  export { typeForContextKey } from './context_keys/contextKeys.js';
3
4
  export { isConditionKeyArray } from './context_keys/contextKeyTypes.js';
4
5
  export { findContextKeys } from './context_keys/findContextKeys.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EAIhB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EACL,mBAAmB,EAGpB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AA0BnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAM7B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAavE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EAIhB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,uCAAuC,EACxC,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EACL,mBAAmB,EAGpB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AA0BnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAM7B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAavE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../src/requestContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAE3C;;;;;OAKG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI,gBAAgB,CAAA;IAEzC;;OAEG;IACH,YAAY,IAAI,IAAI,IAAI,eAAe,CAAA;CACxC;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD;;OAEG;IAEH,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,OAAO,CAAqC;gBAExC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAM9C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;CAGjD;AAED,qBAAa,cAAe,YAAW,UAAU,EAAE,gBAAgB,EAAE,eAAe;IAEzE,IAAI,EAAE,MAAM;IACnB,OAAO,CAAC,IAAI;gBADL,IAAI,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAGjC,aAAa,IAAI,IAAI,IAAI,gBAAgB;IAGzC,YAAY,IAAI,IAAI,IAAI,eAAe;IAIvC,IAAI,MAAM,IAAI,MAAM,EAAE,CAKrB;IAED,IAAI,KAAK,IAAI,MAAM,CAKlB;CACF"}
1
+ {"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../src/requestContext.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAE3C;;;;;OAKG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI,gBAAgB,CAAA;IAEzC;;OAEG;IACH,YAAY,IAAI,IAAI,IAAI,eAAe,CAAA;CACxC;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD;;OAEG;IAEH,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,OAAO,CAAqC;gBAExC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAM9C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;CAGjD;AAED,qBAAa,cAAe,YAAW,UAAU,EAAE,gBAAgB,EAAE,eAAe;IAEzE,IAAI,EAAE,MAAM;IACnB,OAAO,CAAC,IAAI;gBADL,IAAI,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAGjC,aAAa,IAAI,IAAI,IAAI,gBAAgB;IAGzC,YAAY,IAAI,IAAI,IAAI,eAAe;IAIvC,IAAI,MAAM,IAAI,MAAM,EAAE,CAKrB;IAED,IAAI,KAAK,IAAI,MAAM,CAKlB;CACF"}
@@ -1,15 +1,16 @@
1
+ import { normalizeCaseInsensitive } from '@actsecurity/iam-utils';
1
2
  export class RequestContextImpl {
2
3
  constructor(values) {
3
4
  this.context = new Map();
4
5
  for (const key in values) {
5
- this.context.set(key.toLowerCase(), new ContextKeyImpl(key, values[key]));
6
+ this.context.set(normalizeCaseInsensitive(key), new ContextKeyImpl(key, values[key]));
6
7
  }
7
8
  }
8
9
  contextKeyExists(name) {
9
- return this.context.has(name.toLowerCase());
10
+ return this.context.has(normalizeCaseInsensitive(name));
10
11
  }
11
12
  contextKeyValue(name) {
12
- return this.context.get(name.toLowerCase());
13
+ return this.context.get(normalizeCaseInsensitive(name));
13
14
  }
14
15
  }
15
16
  export class ContextKeyImpl {
@@ -1 +1 @@
1
- {"version":3,"file":"requestContext.js","sourceRoot":"","sources":["../../src/requestContext.ts"],"names":[],"mappings":"AAuDA,MAAM,OAAO,kBAAkB;IAG7B,YAAY,MAAyC;QAF7C,YAAO,GAA4B,IAAI,GAAG,EAAE,CAAA;QAGlD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IAC7C,CAAC;IAEM,eAAe,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAe,CAAA;IAC3D,CAAC;CACF;AAED,MAAM,OAAO,cAAc;IACzB,YACS,IAAY,EACX,IAAuB;QADxB,SAAI,GAAJ,IAAI,CAAQ;QACX,SAAI,GAAJ,IAAI,CAAmB;IAC9B,CAAC;IAEJ,aAAa;QACX,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAA;IACtC,CAAC;IACD,YAAY;QACV,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,MAAM;QACR,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,KAAK;QACP,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAA;IAC5D,CAAC;CACF"}
1
+ {"version":3,"file":"requestContext.js","sourceRoot":"","sources":["../../src/requestContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAyDjE,MAAM,OAAO,kBAAkB;IAG7B,YAAY,MAAyC;QAF7C,YAAO,GAA4B,IAAI,GAAG,EAAE,CAAA;QAGlD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvF,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAA;IACzD,CAAC;IAEM,eAAe,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAe,CAAA;IACvE,CAAC;CACF;AAED,MAAM,OAAO,cAAc;IACzB,YACS,IAAY,EACX,IAAuB;QADxB,SAAI,GAAJ,IAAI,CAAQ;QACX,SAAI,GAAJ,IAAI,CAAmB;IAC9B,CAAC;IAEJ,aAAa;QACX,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAA;IACtC,CAAC;IACD,YAAY;QACV,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,MAAM;QACR,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,KAAK;QACP,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAA;IAC5D,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actsecurity/iam-simulate",
3
- "version": "0.1.197",
3
+ "version": "0.1.198",
4
4
  "description": "Simulate evaluation of AWS IAM policies",
5
5
  "repository": {
6
6
  "type": "git",