@cloud-copilot/iam-simulate 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/dist/cjs/condition/baseConditionperatorTests.js +1 -1
  2. package/dist/cjs/condition/baseConditionperatorTests.js.map +1 -1
  3. package/dist/cjs/core_engine/coreSimulatorEngine.d.ts.map +1 -1
  4. package/dist/cjs/core_engine/coreSimulatorEngine.js +4 -1
  5. package/dist/cjs/core_engine/coreSimulatorEngine.js.map +1 -1
  6. package/dist/cjs/index.d.ts +4 -0
  7. package/dist/cjs/index.d.ts.map +1 -1
  8. package/dist/cjs/index.js +8 -0
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/request/request.d.ts +9 -3
  11. package/dist/cjs/request/request.d.ts.map +1 -1
  12. package/dist/cjs/request/request.js +4 -7
  13. package/dist/cjs/request/request.js.map +1 -1
  14. package/dist/cjs/request/requestResource.d.ts +7 -1
  15. package/dist/cjs/request/requestResource.d.ts.map +1 -1
  16. package/dist/cjs/request/requestResource.js +6 -1
  17. package/dist/cjs/request/requestResource.js.map +1 -1
  18. package/dist/cjs/services/DefaultServiceAuthorizer.d.ts.map +1 -1
  19. package/dist/cjs/services/DefaultServiceAuthorizer.js +2 -2
  20. package/dist/cjs/services/DefaultServiceAuthorizer.js.map +1 -1
  21. package/dist/cjs/simulation_engine/contextKeys.d.ts +3 -0
  22. package/dist/cjs/simulation_engine/contextKeys.d.ts.map +1 -0
  23. package/dist/cjs/simulation_engine/contextKeys.js +53 -0
  24. package/dist/cjs/simulation_engine/contextKeys.js.map +1 -0
  25. package/dist/cjs/simulation_engine/simulationEngine.d.ts +25 -0
  26. package/dist/cjs/simulation_engine/simulationEngine.d.ts.map +1 -0
  27. package/dist/cjs/simulation_engine/simulationEngine.js +38 -0
  28. package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -0
  29. package/dist/esm/StatementAnalysis.d.ts +27 -0
  30. package/dist/esm/StatementAnalysis.d.ts.map +1 -0
  31. package/dist/esm/StatementAnalysis.js +2 -0
  32. package/dist/esm/StatementAnalysis.js.map +1 -0
  33. package/dist/esm/action/action.d.ts +9 -1
  34. package/dist/esm/action/action.d.ts.map +1 -1
  35. package/dist/esm/action/action.js +16 -0
  36. package/dist/esm/action/action.js.map +1 -1
  37. package/dist/esm/condition/arn/ArnEquals.d.ts +3 -0
  38. package/dist/esm/condition/arn/ArnEquals.d.ts.map +1 -0
  39. package/dist/esm/condition/arn/ArnEquals.js +8 -0
  40. package/dist/esm/condition/arn/ArnEquals.js.map +1 -0
  41. package/dist/esm/condition/arn/ArnLike.d.ts +3 -0
  42. package/dist/esm/condition/arn/ArnLike.d.ts.map +1 -0
  43. package/dist/esm/condition/arn/ArnLike.js +47 -0
  44. package/dist/esm/condition/arn/ArnLike.js.map +1 -0
  45. package/dist/esm/condition/arn/ArnNotEquals.d.ts +3 -0
  46. package/dist/esm/condition/arn/ArnNotEquals.d.ts.map +1 -0
  47. package/dist/esm/condition/arn/ArnNotEquals.js +8 -0
  48. package/dist/esm/condition/arn/ArnNotEquals.js.map +1 -0
  49. package/dist/esm/condition/arn/ArnNotLike.d.ts +3 -0
  50. package/dist/esm/condition/arn/ArnNotLike.d.ts.map +1 -0
  51. package/dist/esm/condition/arn/ArnNotLike.js +10 -0
  52. package/dist/esm/condition/arn/ArnNotLike.js.map +1 -0
  53. package/dist/esm/condition/baseConditionperatorTests.d.ts +12 -0
  54. package/dist/esm/condition/baseConditionperatorTests.d.ts.map +1 -0
  55. package/dist/esm/condition/baseConditionperatorTests.js +18 -0
  56. package/dist/esm/condition/baseConditionperatorTests.js.map +1 -0
  57. package/dist/esm/condition/binary/BinaryEquals.d.ts +7 -0
  58. package/dist/esm/condition/binary/BinaryEquals.d.ts.map +1 -0
  59. package/dist/esm/condition/binary/BinaryEquals.js +13 -0
  60. package/dist/esm/condition/binary/BinaryEquals.js.map +1 -0
  61. package/dist/esm/condition/boolean/Bool.d.ts +3 -0
  62. package/dist/esm/condition/boolean/Bool.d.ts.map +1 -0
  63. package/dist/esm/condition/boolean/Bool.js +17 -0
  64. package/dist/esm/condition/boolean/Bool.js.map +1 -0
  65. package/dist/esm/condition/condition.d.ts +1 -0
  66. package/dist/esm/condition/condition.d.ts.map +1 -1
  67. package/dist/esm/condition/condition.js +60 -11
  68. package/dist/esm/condition/condition.js.map +1 -1
  69. package/dist/esm/condition/date/DateEquals.d.ts +3 -0
  70. package/dist/esm/condition/date/DateEquals.d.ts.map +1 -0
  71. package/dist/esm/condition/date/DateEquals.js +14 -0
  72. package/dist/esm/condition/date/DateEquals.js.map +1 -0
  73. package/dist/esm/condition/date/DateGreaterThan.d.ts +3 -0
  74. package/dist/esm/condition/date/DateGreaterThan.d.ts.map +1 -0
  75. package/dist/esm/condition/date/DateGreaterThan.js +14 -0
  76. package/dist/esm/condition/date/DateGreaterThan.js.map +1 -0
  77. package/dist/esm/condition/date/DateGreaterThanEquals.d.ts +3 -0
  78. package/dist/esm/condition/date/DateGreaterThanEquals.d.ts.map +1 -0
  79. package/dist/esm/condition/date/DateGreaterThanEquals.js +14 -0
  80. package/dist/esm/condition/date/DateGreaterThanEquals.js.map +1 -0
  81. package/dist/esm/condition/date/DateLessThan.d.ts +3 -0
  82. package/dist/esm/condition/date/DateLessThan.d.ts.map +1 -0
  83. package/dist/esm/condition/date/DateLessThan.js +14 -0
  84. package/dist/esm/condition/date/DateLessThan.js.map +1 -0
  85. package/dist/esm/condition/date/DateLessThanEquals.d.ts +3 -0
  86. package/dist/esm/condition/date/DateLessThanEquals.d.ts.map +1 -0
  87. package/dist/esm/condition/date/DateLessThanEquals.js +14 -0
  88. package/dist/esm/condition/date/DateLessThanEquals.js.map +1 -0
  89. package/dist/esm/condition/date/DateNotEquals.d.ts +3 -0
  90. package/dist/esm/condition/date/DateNotEquals.d.ts.map +1 -0
  91. package/dist/esm/condition/date/DateNotEquals.js +26 -0
  92. package/dist/esm/condition/date/DateNotEquals.js.map +1 -0
  93. package/dist/esm/condition/date/date.d.ts +17 -0
  94. package/dist/esm/condition/date/date.d.ts.map +1 -0
  95. package/dist/esm/condition/date/date.js +38 -0
  96. package/dist/esm/condition/date/date.js.map +1 -0
  97. package/dist/esm/condition/ipaddress/IpAddress.d.ts +3 -0
  98. package/dist/esm/condition/ipaddress/IpAddress.d.ts.map +1 -0
  99. package/dist/esm/condition/ipaddress/IpAddress.js +24 -0
  100. package/dist/esm/condition/ipaddress/IpAddress.js.map +1 -0
  101. package/dist/esm/condition/ipaddress/NotIpAddress.d.ts +3 -0
  102. package/dist/esm/condition/ipaddress/NotIpAddress.d.ts.map +1 -0
  103. package/dist/esm/condition/ipaddress/NotIpAddress.js +28 -0
  104. package/dist/esm/condition/ipaddress/NotIpAddress.js.map +1 -0
  105. package/dist/esm/condition/ipaddress/ipv4.d.ts +24 -0
  106. package/dist/esm/condition/ipaddress/ipv4.d.ts.map +1 -0
  107. package/dist/esm/condition/ipaddress/ipv4.js +54 -0
  108. package/dist/esm/condition/ipaddress/ipv4.js.map +1 -0
  109. package/dist/esm/condition/ipaddress/ipv6.d.ts +24 -0
  110. package/dist/esm/condition/ipaddress/ipv6.d.ts.map +1 -0
  111. package/dist/esm/condition/ipaddress/ipv6.js +106 -0
  112. package/dist/esm/condition/ipaddress/ipv6.js.map +1 -0
  113. package/dist/esm/condition/numeric/NumericEquals.d.ts +3 -0
  114. package/dist/esm/condition/numeric/NumericEquals.d.ts.map +1 -0
  115. package/dist/esm/condition/numeric/NumericEquals.js +14 -0
  116. package/dist/esm/condition/numeric/NumericEquals.js.map +1 -0
  117. package/dist/esm/condition/numeric/NumericGreaterThan.d.ts +3 -0
  118. package/dist/esm/condition/numeric/NumericGreaterThan.d.ts.map +1 -0
  119. package/dist/esm/condition/numeric/NumericGreaterThan.js +14 -0
  120. package/dist/esm/condition/numeric/NumericGreaterThan.js.map +1 -0
  121. package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts +3 -0
  122. package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -0
  123. package/dist/esm/condition/numeric/NumericGreaterThanEquals.js +14 -0
  124. package/dist/esm/condition/numeric/NumericGreaterThanEquals.js.map +1 -0
  125. package/dist/esm/condition/numeric/NumericLessThan.d.ts +3 -0
  126. package/dist/esm/condition/numeric/NumericLessThan.d.ts.map +1 -0
  127. package/dist/esm/condition/numeric/NumericLessThan.js +14 -0
  128. package/dist/esm/condition/numeric/NumericLessThan.js.map +1 -0
  129. package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts +3 -0
  130. package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts.map +1 -0
  131. package/dist/esm/condition/numeric/NumericLessThanEquals.js +14 -0
  132. package/dist/esm/condition/numeric/NumericLessThanEquals.js.map +1 -0
  133. package/dist/esm/condition/numeric/NumericNotEquals.d.ts +3 -0
  134. package/dist/esm/condition/numeric/NumericNotEquals.d.ts.map +1 -0
  135. package/dist/esm/condition/numeric/NumericNotEquals.js +26 -0
  136. package/dist/esm/condition/numeric/NumericNotEquals.js.map +1 -0
  137. package/dist/esm/condition/numeric/numeric.d.ts +17 -0
  138. package/dist/esm/condition/numeric/numeric.d.ts.map +1 -0
  139. package/dist/esm/condition/numeric/numeric.js +37 -0
  140. package/dist/esm/condition/numeric/numeric.js.map +1 -0
  141. package/dist/esm/condition/string/StringEquals.d.ts.map +1 -0
  142. package/dist/esm/condition/string/StringEquals.js.map +1 -0
  143. package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts +3 -0
  144. package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -0
  145. package/dist/esm/condition/string/StringEqualsIgnoreCase.js +14 -0
  146. package/dist/esm/condition/string/StringEqualsIgnoreCase.js.map +1 -0
  147. package/dist/esm/condition/string/StringLike.d.ts +3 -0
  148. package/dist/esm/condition/string/StringLike.d.ts.map +1 -0
  149. package/dist/esm/condition/string/StringLike.js +11 -0
  150. package/dist/esm/condition/string/StringLike.js.map +1 -0
  151. package/dist/esm/condition/string/StringNotEquals.d.ts +3 -0
  152. package/dist/esm/condition/string/StringNotEquals.d.ts.map +1 -0
  153. package/dist/esm/condition/string/StringNotEquals.js +11 -0
  154. package/dist/esm/condition/string/StringNotEquals.js.map +1 -0
  155. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts +3 -0
  156. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -0
  157. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js +10 -0
  158. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js.map +1 -0
  159. package/dist/esm/condition/string/StringNotLike.d.ts +3 -0
  160. package/dist/esm/condition/string/StringNotLike.d.ts.map +1 -0
  161. package/dist/esm/condition/string/StringNotLike.js +10 -0
  162. package/dist/esm/condition/string/StringNotLike.js.map +1 -0
  163. package/dist/esm/core_engine/coreSimulatorEngine.d.ts +44 -0
  164. package/dist/esm/core_engine/coreSimulatorEngine.d.ts.map +1 -0
  165. package/dist/esm/core_engine/coreSimulatorEngine.js +58 -0
  166. package/dist/esm/core_engine/coreSimulatorEngine.js.map +1 -0
  167. package/dist/esm/evaluate.d.ts +1 -1
  168. package/dist/esm/evaluate.d.ts.map +1 -1
  169. package/dist/esm/index.d.ts +4 -0
  170. package/dist/esm/index.d.ts.map +1 -1
  171. package/dist/esm/index.js +3 -1
  172. package/dist/esm/index.js.map +1 -1
  173. package/dist/esm/principal/principal.d.ts +1 -2
  174. package/dist/esm/principal/principal.d.ts.map +1 -1
  175. package/dist/esm/request/request.d.ts +9 -5
  176. package/dist/esm/request/request.d.ts.map +1 -1
  177. package/dist/esm/request/request.js +4 -8
  178. package/dist/esm/request/request.js.map +1 -1
  179. package/dist/esm/request/requestResource.d.ts +7 -1
  180. package/dist/esm/request/requestResource.d.ts.map +1 -1
  181. package/dist/esm/request/requestResource.js +5 -1
  182. package/dist/esm/request/requestResource.js.map +1 -1
  183. package/dist/esm/resource/resource.d.ts +16 -1
  184. package/dist/esm/resource/resource.d.ts.map +1 -1
  185. package/dist/esm/resource/resource.js +24 -26
  186. package/dist/esm/resource/resource.js.map +1 -1
  187. package/dist/esm/services/DefaultServiceAuthorizer.d.ts +12 -0
  188. package/dist/esm/services/DefaultServiceAuthorizer.d.ts.map +1 -0
  189. package/dist/esm/services/DefaultServiceAuthorizer.js +75 -0
  190. package/dist/esm/services/DefaultServiceAuthorizer.js.map +1 -0
  191. package/dist/esm/services/ServiceAuthorizer.d.ts +11 -0
  192. package/dist/esm/services/ServiceAuthorizer.d.ts.map +1 -0
  193. package/dist/esm/services/ServiceAuthorizer.js +2 -0
  194. package/dist/esm/services/ServiceAuthorizer.js.map +1 -0
  195. package/dist/esm/simulation_engine/contextKeys.d.ts +3 -0
  196. package/dist/esm/simulation_engine/contextKeys.d.ts.map +1 -0
  197. package/dist/esm/simulation_engine/contextKeys.js +49 -0
  198. package/dist/esm/simulation_engine/contextKeys.js.map +1 -0
  199. package/dist/esm/simulation_engine/simulationEngine.d.ts +25 -0
  200. package/dist/esm/simulation_engine/simulationEngine.d.ts.map +1 -0
  201. package/dist/esm/simulation_engine/simulationEngine.js +35 -0
  202. package/dist/esm/simulation_engine/simulationEngine.js.map +1 -0
  203. package/dist/esm/util.d.ts +32 -0
  204. package/dist/esm/util.d.ts.map +1 -1
  205. package/dist/esm/util.js +78 -2
  206. package/dist/esm/util.js.map +1 -1
  207. package/package.json +1 -1
  208. package/dist/cjs/action.d.ts +0 -4
  209. package/dist/cjs/action.d.ts.map +0 -1
  210. package/dist/cjs/action.js +0 -21
  211. package/dist/cjs/action.js.map +0 -1
  212. package/dist/cjs/condition/strings/StringEquals.d.ts.map +0 -1
  213. package/dist/cjs/condition/strings/StringEquals.js +0 -14
  214. package/dist/cjs/condition/strings/StringEquals.js.map +0 -1
  215. package/dist/cjs/request/requestSupplementalData.d.ts +0 -19
  216. package/dist/cjs/request/requestSupplementalData.d.ts.map +0 -1
  217. package/dist/cjs/request/requestSupplementalData.js +0 -37
  218. package/dist/cjs/request/requestSupplementalData.js.map +0 -1
  219. package/dist/cjs/request.d.ts +0 -15
  220. package/dist/cjs/request.d.ts.map +0 -1
  221. package/dist/cjs/request.js +0 -17
  222. package/dist/cjs/request.js.map +0 -1
  223. package/dist/esm/action.d.ts +0 -4
  224. package/dist/esm/action.d.ts.map +0 -1
  225. package/dist/esm/action.js +0 -18
  226. package/dist/esm/action.js.map +0 -1
  227. package/dist/esm/condition/strings/StringEquals.d.ts +0 -3
  228. package/dist/esm/condition/strings/StringEquals.d.ts.map +0 -1
  229. package/dist/esm/condition/strings/StringEquals.js.map +0 -1
  230. package/dist/esm/request/requestSupplementalData.d.ts +0 -19
  231. package/dist/esm/request/requestSupplementalData.d.ts.map +0 -1
  232. package/dist/esm/request/requestSupplementalData.js +0 -30
  233. package/dist/esm/request/requestSupplementalData.js.map +0 -1
  234. package/dist/esm/request.d.ts +0 -15
  235. package/dist/esm/request.d.ts.map +0 -1
  236. package/dist/esm/request.js +0 -9
  237. package/dist/esm/request.js.map +0 -1
  238. /package/dist/{cjs/condition/strings → esm/condition/string}/StringEquals.d.ts +0 -0
  239. /package/dist/esm/condition/{strings → string}/StringEquals.js +0 -0
@@ -0,0 +1,25 @@
1
+ import { ValidationError } from "@cloud-copilot/iam-policy";
2
+ interface SimulationOptions {
3
+ assumeSecureTransport: boolean;
4
+ }
5
+ interface Simulation {
6
+ request: {
7
+ principal: string;
8
+ action: string;
9
+ resource: {
10
+ resource: string;
11
+ accountId: string;
12
+ };
13
+ contextVariables: Record<string, any>;
14
+ };
15
+ identityPolicies: Record<string, any>[];
16
+ }
17
+ export interface SimulationErrors {
18
+ identityPolicyErrors?: Record<string, ValidationError[]>;
19
+ message: string;
20
+ }
21
+ export interface SimulationResult {
22
+ }
23
+ export declare function runSimulation(simulation: Simulation, simulationOptions: SimulationOptions): Promise<SimulationResult>;
24
+ export {};
25
+ //# sourceMappingURL=simulationEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulationEngine.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAElF,UAAU,iBAAiB;IACzB,qBAAqB,EAAE,OAAO,CAAA;CAC/B;AAED,UAAU,UAAU;IAClB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE;YACR,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAA;SAClB,CAAA;QACD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACvC,CAAA;IAED,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;CAEhC;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoC3H"}
@@ -0,0 +1,35 @@
1
+ import { iamActionExists, iamServiceExists } from "@cloud-copilot/iam-data";
2
+ import { validatePolicySyntax } from "@cloud-copilot/iam-policy";
3
+ export async function runSimulation(simulation, simulationOptions) {
4
+ const identityPolicyErrors = Object.keys(simulation.identityPolicies).reduce((acc, key) => {
5
+ acc[key] == validatePolicySyntax(simulation.identityPolicies[key]);
6
+ return acc;
7
+ }, {});
8
+ const errorCount = Object.values(identityPolicyErrors).flat().length;
9
+ if (errorCount > 0) {
10
+ return {
11
+ identityPolicyErrors
12
+ };
13
+ }
14
+ if (simulation.request.action.split(":").length != 2) {
15
+ return {
16
+ message: 'invalid.action'
17
+ };
18
+ }
19
+ const [service, action] = simulation.request.action.split(":");
20
+ const validService = await iamServiceExists(service);
21
+ if (!validService) {
22
+ return {
23
+ message: 'invalid.service'
24
+ };
25
+ }
26
+ const validAction = await iamActionExists(service, action);
27
+ if (!validAction) {
28
+ return {
29
+ message: 'invalid.action'
30
+ };
31
+ }
32
+ // Implementation goes here
33
+ return {};
34
+ }
35
+ //# sourceMappingURL=simulationEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAmB,MAAM,2BAA2B,CAAC;AA6BlF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAsB,EAAE,iBAAoC;IAC9F,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAW,EAAE,EAAE;QAChG,GAAG,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAU,CAAC,CAAC,CAAC;QAC1E,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAuC,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACrE,IAAG,UAAU,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO;YACL,oBAAoB;SACrB,CAAA;IACH,CAAC;IAED,IAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAG,CAAC,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,iBAAiB;SAC3B,CAAA;IACH,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAG,CAAC,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,2BAA2B;IAC3B,OAAO,EAAsB,CAAC;AAEhC,CAAC"}
@@ -11,5 +11,37 @@ interface StringReplaceOptions {
11
11
  * @returns a regex that can be used to match against a string
12
12
  */
13
13
  export declare function convertIamStringToRegex(value: string, request: AwsRequest, replaceOptions?: Partial<StringReplaceOptions>): RegExp;
14
+ export interface ArnParts {
15
+ partition: string | undefined;
16
+ service: string | undefined;
17
+ region: string | undefined;
18
+ accountId: string | undefined;
19
+ resource: string | undefined;
20
+ resourceType: string | undefined;
21
+ resourcePath: string | undefined;
22
+ }
23
+ export declare function splitArnParts(arn: string): ArnParts;
24
+ /**
25
+ * Splits a resource into two segments. The first segment is the product segment and the second segment is the resource id segment.
26
+ * This could be split by a colon or a slash, so it checks for both.
27
+ *
28
+ * @param resource The resource to split
29
+ * @returns a tuple with the first segment being the product segment (including the separator) and the second segment being the resource id.
30
+ */
31
+ export declare function getResourceSegments(resource: string): [string, string];
32
+ /**
33
+ * Checks if a value is defined and not null and narrows the type to the defined type
34
+ *
35
+ * @param value the value to check if it is defined
36
+ * @returns if the value is defined and not null
37
+ */
38
+ export declare function isDefined<T>(value: T | undefined): value is T;
39
+ /**
40
+ * Checks if a value is not defined or null
41
+ *
42
+ * @param value the value to check if it is not defined
43
+ * @returns if the value is not defined or null
44
+ */
45
+ export declare function isNotDefined<T>(value: T | undefined): value is undefined;
14
46
  export {};
15
47
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAIjD,UAAU,oBAAoB;IAC5B,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAMD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,MAAM,CA2DlI"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAIjD,UAAU,oBAAoB;IAC5B,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAMD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,MAAM,CA4DlI;AAsCD,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAyBnD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBtE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,CAAC,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,SAAS,CAExE"}
package/dist/esm/util.js CHANGED
@@ -48,14 +48,14 @@ export function convertIamStringToRegex(value, request, replaceOptions) {
48
48
  const variableName = defaultParts.at(0).trim();
49
49
  const requestValue = getContextSingleValue(request, variableName);
50
50
  if (requestValue) {
51
- return requestValue;
51
+ return escapeRegexCharacters(requestValue);
52
52
  }
53
53
  else if (defaultValue) {
54
54
  /*
55
55
  TODO: What happens in a request if a multi value context key is used in a string and there
56
56
  is a default value? Will it use the default value or will it fail the condition test?
57
57
  */
58
- return defaultValue;
58
+ return escapeRegexCharacters(defaultValue);
59
59
  }
60
60
  else {
61
61
  invalidVariableFound = true;
@@ -71,6 +71,15 @@ export function convertIamStringToRegex(value, request, replaceOptions) {
71
71
  }
72
72
  return new RegExp('^' + newValue + '$');
73
73
  }
74
+ /**
75
+ * Replace regex characters in a string with their escaped versions
76
+ *
77
+ * @param str the string to escape regex characters in
78
+ * @returns the string with regex characters escaped
79
+ */
80
+ function escapeRegexCharacters(str) {
81
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
82
+ }
74
83
  /**
75
84
  * Get the string value of a context key only if it is a single value key
76
85
  *
@@ -94,4 +103,71 @@ function replacementValue(rawString, wildcard, replaceWildcards) {
94
103
  }
95
104
  return rawString;
96
105
  }
106
+ export function splitArnParts(arn) {
107
+ const parts = arn.split(':');
108
+ const partition = parts.at(1);
109
+ const service = parts.at(2);
110
+ const region = parts.at(3);
111
+ const accountId = parts.at(4);
112
+ const resource = parts.slice(5).join(":");
113
+ let resourceType = undefined;
114
+ let resourcePath = undefined;
115
+ if (resource?.includes('/') || resource?.includes(':')) {
116
+ const [resourceTypeSegment, resourcePathSegment] = getResourceSegments(resource);
117
+ resourceType = resourceTypeSegment;
118
+ resourcePath = resourcePathSegment;
119
+ }
120
+ return {
121
+ partition,
122
+ service,
123
+ region,
124
+ accountId,
125
+ resource,
126
+ resourceType,
127
+ resourcePath
128
+ };
129
+ }
130
+ /**
131
+ * Splits a resource into two segments. The first segment is the product segment and the second segment is the resource id segment.
132
+ * This could be split by a colon or a slash, so it checks for both.
133
+ *
134
+ * @param resource The resource to split
135
+ * @returns a tuple with the first segment being the product segment (including the separator) and the second segment being the resource id.
136
+ */
137
+ export function getResourceSegments(resource) {
138
+ const slashIndex = resource.indexOf('/');
139
+ const colonIndex = resource.indexOf(':');
140
+ let splitIndex = slashIndex;
141
+ if (slashIndex != -1 && colonIndex != -1) {
142
+ splitIndex = Math.min(slashIndex, colonIndex) + 1;
143
+ }
144
+ else if (colonIndex == -1) {
145
+ splitIndex = slashIndex + 1;
146
+ }
147
+ else if (slashIndex == -1) {
148
+ splitIndex = colonIndex + 1;
149
+ }
150
+ else {
151
+ throw new Error(`Unable to split resource ${resource}`);
152
+ }
153
+ return [resource.slice(0, splitIndex), resource.slice(splitIndex)];
154
+ }
155
+ /**
156
+ * Checks if a value is defined and not null and narrows the type to the defined type
157
+ *
158
+ * @param value the value to check if it is defined
159
+ * @returns if the value is defined and not null
160
+ */
161
+ export function isDefined(value) {
162
+ return value !== undefined && value !== null;
163
+ }
164
+ /**
165
+ * Checks if a value is not defined or null
166
+ *
167
+ * @param value the value to check if it is not defined
168
+ * @returns if the value is not defined or null
169
+ */
170
+ export function isNotDefined(value) {
171
+ return !isDefined(value);
172
+ }
97
173
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloud-copilot/iam-simulate",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Simulate evaluation of AWS IAM policies",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,4 +0,0 @@
1
- import { Action } from "@cloud-copilot/iam-policy";
2
- import { Request } from "./request.js";
3
- export declare function requestMatchesAction(request: Request, actions: Action[]): boolean;
4
- //# sourceMappingURL=action.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAajF"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requestMatchesAction = requestMatchesAction;
4
- function convertActionToRegex(action) {
5
- return action.replace(/\?/g, '.').replace(/\*/g, '.*');
6
- }
7
- function requestMatchesAction(request, actions) {
8
- for (const action of actions) {
9
- if (action.isWildcardAction()) {
10
- return true;
11
- }
12
- else if (action.isServiceAction()) {
13
- const actionRegex = new RegExp(convertActionToRegex(action.value()));
14
- if (actionRegex.test(request.action)) {
15
- return true;
16
- }
17
- }
18
- }
19
- return false;
20
- }
21
- //# sourceMappingURL=action.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/action.ts"],"names":[],"mappings":";;AAOA,oDAaC;AAjBD,SAAS,oBAAoB,CAAC,MAAc;IAC1C,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAgB,EAAE,OAAiB;IACtE,KAAI,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAG,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrE,IAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IAEH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"StringEquals.d.ts","sourceRoot":"","sources":["../../../../src/condition/strings/StringEquals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,eAAO,MAAM,YAAY,EAAE,qBAQ1B,CAAA"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StringEquals = void 0;
4
- const util_js_1 = require("../../util.js");
5
- exports.StringEquals = {
6
- name: 'StringEquals',
7
- matches: (request, keyValue, policyValues) => {
8
- const patterns = policyValues.map(value => (0, util_js_1.convertIamStringToRegex)(value, request, { replaceWildcards: false }));
9
- return patterns.some(pattern => pattern.test(keyValue));
10
- },
11
- allowsVariables: true,
12
- allowsWildcards: false
13
- };
14
- //# sourceMappingURL=StringEquals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StringEquals.js","sourceRoot":"","sources":["../../../../src/condition/strings/StringEquals.ts"],"names":[],"mappings":";;;AAAA,2CAAwD;AAG3C,QAAA,YAAY,GAA0B;IACjD,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,iCAAuB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAC,gBAAgB,EAAE,KAAK,EAAC,CAAC,CAAC,CAAA;QAC9G,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;IACD,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,KAAK;CACvB,CAAA"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Supplemental data for the request
3
- */
4
- export interface RequestSupplementalData {
5
- contextKeysForAction: string[];
6
- contextKeysForResource: string[];
7
- contextKeysForPrincipal: string[];
8
- contextKeyValidForRequest: (key: string) => boolean;
9
- }
10
- export declare class RequestSupplementalDataImpl implements RequestSupplementalData {
11
- readonly contextKeysForAction: string[];
12
- readonly contextKeysForResource: string[];
13
- readonly contextKeysForPrincipal: string[];
14
- private allActions;
15
- constructor(contextKeysForAction: string[], contextKeysForResource: string[], contextKeysForPrincipal: string[]);
16
- contextKeyValidForRequest(key: string): boolean;
17
- }
18
- export declare const MockRequestSupplementalData: RequestSupplementalData;
19
- //# sourceMappingURL=requestSupplementalData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requestSupplementalData.d.ts","sourceRoot":"","sources":["../../../src/request/requestSupplementalData.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,yBAAyB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACrD;AAED,qBAAa,2BAA4B,YAAW,uBAAuB;aAI7C,oBAAoB,EAAE,MAAM,EAAE;aAC9B,sBAAsB,EAAE,MAAM,EAAE;aAChC,uBAAuB,EAAE,MAAM,EAAE;IAJ7D,OAAO,CAAC,UAAU,CAA0B;gBAEhB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,sBAAsB,EAAE,MAAM,EAAE,EAChC,uBAAuB,EAAE,MAAM,EAAE;IAY7D,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAMhD;AAED,eAAO,MAAM,2BAA2B,EAAE,uBAKzC,CAAA"}
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MockRequestSupplementalData = exports.RequestSupplementalDataImpl = void 0;
4
- class RequestSupplementalDataImpl {
5
- contextKeysForAction;
6
- contextKeysForResource;
7
- contextKeysForPrincipal;
8
- allActions = new Set();
9
- constructor(contextKeysForAction, contextKeysForResource, contextKeysForPrincipal) {
10
- this.contextKeysForAction = contextKeysForAction;
11
- this.contextKeysForResource = contextKeysForResource;
12
- this.contextKeysForPrincipal = contextKeysForPrincipal;
13
- for (const action of contextKeysForAction) {
14
- this.allActions.add(action);
15
- }
16
- for (const resource of contextKeysForResource) {
17
- this.allActions.add(resource);
18
- }
19
- for (const principal of contextKeysForPrincipal) {
20
- this.allActions.add(...[principal]);
21
- }
22
- }
23
- contextKeyValidForRequest(key) {
24
- /*
25
- Todo: Add a way to check if the key has a slash in it such as aws:RequestKeys or aws:ResourceTagKeys
26
- */
27
- return this.allActions.has(key);
28
- }
29
- }
30
- exports.RequestSupplementalDataImpl = RequestSupplementalDataImpl;
31
- exports.MockRequestSupplementalData = {
32
- contextKeysForAction: [],
33
- contextKeysForResource: [],
34
- contextKeysForPrincipal: [],
35
- contextKeyValidForRequest: (key) => true
36
- };
37
- //# sourceMappingURL=requestSupplementalData.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requestSupplementalData.js","sourceRoot":"","sources":["../../../src/request/requestSupplementalData.ts"],"names":[],"mappings":";;;AAWA,MAAa,2BAA2B;IAIV;IACA;IACA;IAJpB,UAAU,GAAgB,IAAI,GAAG,EAAE,CAAC;IAE5C,YAA4B,oBAA8B,EAC9B,sBAAgC,EAChC,uBAAiC;QAFjC,yBAAoB,GAApB,oBAAoB,CAAU;QAC9B,2BAAsB,GAAtB,sBAAsB,CAAU;QAChC,4BAAuB,GAAvB,uBAAuB,CAAU;QAC3D,KAAI,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC7B,CAAC;QACD,KAAI,MAAM,QAAQ,IAAI,sBAAsB,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;QACD,KAAI,MAAM,SAAS,IAAI,uBAAuB,EAAE,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED,yBAAyB,CAAC,GAAW;QACnC;;UAEE;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;CACF;AAxBD,kEAwBC;AAEY,QAAA,2BAA2B,GAA4B;IAClE,oBAAoB,EAAE,EAAE;IACxB,sBAAsB,EAAE,EAAE;IAC1B,uBAAuB,EAAE,EAAE;IAC3B,yBAAyB,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI;CACjD,CAAA"}
@@ -1,15 +0,0 @@
1
- import { RequestContext } from "./requestContext.js";
2
- export interface Request {
3
- principal: string;
4
- action: string;
5
- resource: string;
6
- context: RequestContext;
7
- }
8
- export declare class RequestImpl implements Request {
9
- readonly principal: string;
10
- readonly resource: string;
11
- readonly action: string;
12
- readonly context: RequestContext;
13
- constructor(principal: string, resource: string, action: string, context: RequestContext);
14
- }
15
- //# sourceMappingURL=request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,qBAAa,WAAY,YAAW,OAAO;aAEb,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;aACd,OAAO,EAAE,cAAc;gBAHvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc;CAGpD"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RequestImpl = void 0;
4
- class RequestImpl {
5
- principal;
6
- resource;
7
- action;
8
- context;
9
- constructor(principal, resource, action, context) {
10
- this.principal = principal;
11
- this.resource = resource;
12
- this.action = action;
13
- this.context = context;
14
- }
15
- }
16
- exports.RequestImpl = RequestImpl;
17
- //# sourceMappingURL=request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":";;;AASA,MAAa,WAAW;IAEM;IACA;IACA;IACA;IAH5B,YAA4B,SAAiB,EACjB,QAAgB,EAChB,MAAc,EACd,OAAuB;QAHvB,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAgB;IAEnD,CAAC;CACF;AARD,kCAQC"}
@@ -1,4 +0,0 @@
1
- import { Action } from "@cloud-copilot/iam-policy";
2
- import { Request } from "./request.js";
3
- export declare function requestMatchesAction(request: Request, actions: Action[]): boolean;
4
- //# sourceMappingURL=action.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAajF"}
@@ -1,18 +0,0 @@
1
- function convertActionToRegex(action) {
2
- return action.replace(/\?/g, '.').replace(/\*/g, '.*');
3
- }
4
- export function requestMatchesAction(request, actions) {
5
- for (const action of actions) {
6
- if (action.isWildcardAction()) {
7
- return true;
8
- }
9
- else if (action.isServiceAction()) {
10
- const actionRegex = new RegExp(convertActionToRegex(action.value()));
11
- if (actionRegex.test(request.action)) {
12
- return true;
13
- }
14
- }
15
- }
16
- return false;
17
- }
18
- //# sourceMappingURL=action.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/action.ts"],"names":[],"mappings":"AAGA,SAAS,oBAAoB,CAAC,MAAc;IAC1C,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,OAAiB;IACtE,KAAI,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAG,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrE,IAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IAEH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,3 +0,0 @@
1
- import { BaseConditionOperator } from "../BaseConditionOperator.js";
2
- export declare const StringEquals: BaseConditionOperator;
3
- //# sourceMappingURL=StringEquals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StringEquals.d.ts","sourceRoot":"","sources":["../../../../src/condition/strings/StringEquals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,eAAO,MAAM,YAAY,EAAE,qBAQ1B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"StringEquals.js","sourceRoot":"","sources":["../../../../src/condition/strings/StringEquals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGxD,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAC,gBAAgB,EAAE,KAAK,EAAC,CAAC,CAAC,CAAA;QAC9G,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;IACD,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,KAAK;CACvB,CAAA"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Supplemental data for the request
3
- */
4
- export interface RequestSupplementalData {
5
- contextKeysForAction: string[];
6
- contextKeysForResource: string[];
7
- contextKeysForPrincipal: string[];
8
- contextKeyValidForRequest: (key: string) => boolean;
9
- }
10
- export declare class RequestSupplementalDataImpl implements RequestSupplementalData {
11
- readonly contextKeysForAction: string[];
12
- readonly contextKeysForResource: string[];
13
- readonly contextKeysForPrincipal: string[];
14
- private allActions;
15
- constructor(contextKeysForAction: string[], contextKeysForResource: string[], contextKeysForPrincipal: string[]);
16
- contextKeyValidForRequest(key: string): boolean;
17
- }
18
- export declare const MockRequestSupplementalData: RequestSupplementalData;
19
- //# sourceMappingURL=requestSupplementalData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requestSupplementalData.d.ts","sourceRoot":"","sources":["../../../src/request/requestSupplementalData.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,yBAAyB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACrD;AAED,qBAAa,2BAA4B,YAAW,uBAAuB;aAI7C,oBAAoB,EAAE,MAAM,EAAE;aAC9B,sBAAsB,EAAE,MAAM,EAAE;aAChC,uBAAuB,EAAE,MAAM,EAAE;IAJ7D,OAAO,CAAC,UAAU,CAA0B;gBAEhB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,sBAAsB,EAAE,MAAM,EAAE,EAChC,uBAAuB,EAAE,MAAM,EAAE;IAY7D,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAMhD;AAED,eAAO,MAAM,2BAA2B,EAAE,uBAKzC,CAAA"}
@@ -1,30 +0,0 @@
1
- export class RequestSupplementalDataImpl {
2
- constructor(contextKeysForAction, contextKeysForResource, contextKeysForPrincipal) {
3
- this.contextKeysForAction = contextKeysForAction;
4
- this.contextKeysForResource = contextKeysForResource;
5
- this.contextKeysForPrincipal = contextKeysForPrincipal;
6
- this.allActions = new Set();
7
- for (const action of contextKeysForAction) {
8
- this.allActions.add(action);
9
- }
10
- for (const resource of contextKeysForResource) {
11
- this.allActions.add(resource);
12
- }
13
- for (const principal of contextKeysForPrincipal) {
14
- this.allActions.add(...[principal]);
15
- }
16
- }
17
- contextKeyValidForRequest(key) {
18
- /*
19
- Todo: Add a way to check if the key has a slash in it such as aws:RequestKeys or aws:ResourceTagKeys
20
- */
21
- return this.allActions.has(key);
22
- }
23
- }
24
- export const MockRequestSupplementalData = {
25
- contextKeysForAction: [],
26
- contextKeysForResource: [],
27
- contextKeysForPrincipal: [],
28
- contextKeyValidForRequest: (key) => true
29
- };
30
- //# sourceMappingURL=requestSupplementalData.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requestSupplementalData.js","sourceRoot":"","sources":["../../../src/request/requestSupplementalData.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,2BAA2B;IAItC,YAA4B,oBAA8B,EAC9B,sBAAgC,EAChC,uBAAiC;QAFjC,yBAAoB,GAApB,oBAAoB,CAAU;QAC9B,2BAAsB,GAAtB,sBAAsB,CAAU;QAChC,4BAAuB,GAAvB,uBAAuB,CAAU;QAJrD,eAAU,GAAgB,IAAI,GAAG,EAAE,CAAC;QAK1C,KAAI,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC7B,CAAC;QACD,KAAI,MAAM,QAAQ,IAAI,sBAAsB,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;QACD,KAAI,MAAM,SAAS,IAAI,uBAAuB,EAAE,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED,yBAAyB,CAAC,GAAW;QACnC;;UAEE;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,2BAA2B,GAA4B;IAClE,oBAAoB,EAAE,EAAE;IACxB,sBAAsB,EAAE,EAAE;IAC1B,uBAAuB,EAAE,EAAE;IAC3B,yBAAyB,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI;CACjD,CAAA"}
@@ -1,15 +0,0 @@
1
- import { RequestContext } from "./requestContext.js";
2
- export interface Request {
3
- principal: string;
4
- action: string;
5
- resource: string;
6
- context: RequestContext;
7
- }
8
- export declare class RequestImpl implements Request {
9
- readonly principal: string;
10
- readonly resource: string;
11
- readonly action: string;
12
- readonly context: RequestContext;
13
- constructor(principal: string, resource: string, action: string, context: RequestContext);
14
- }
15
- //# sourceMappingURL=request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,qBAAa,WAAY,YAAW,OAAO;aAEb,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;aACd,OAAO,EAAE,cAAc;gBAHvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc;CAGpD"}
@@ -1,9 +0,0 @@
1
- export class RequestImpl {
2
- constructor(principal, resource, action, context) {
3
- this.principal = principal;
4
- this.resource = resource;
5
- this.action = action;
6
- this.context = context;
7
- }
8
- }
9
- //# sourceMappingURL=request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,WAAW;IAEtB,YAA4B,SAAiB,EACjB,QAAgB,EAChB,MAAc,EACd,OAAuB;QAHvB,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAgB;IAEnD,CAAC;CACF"}