@cloud-copilot/iam-policy 0.0.1 → 0.0.3

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 (92) hide show
  1. package/README.md +93 -58
  2. package/dist/actions/action.d.ts +51 -0
  3. package/dist/actions/action.d.ts.map +1 -0
  4. package/dist/actions/action.js +33 -0
  5. package/dist/actions/action.js.map +1 -0
  6. package/dist/actions/actions.test.d.ts +2 -0
  7. package/dist/actions/actions.test.d.ts.map +1 -0
  8. package/dist/actions/actions.test.js +91 -0
  9. package/dist/actions/actions.test.js.map +1 -0
  10. package/dist/cjs/conditions/condition.d.ts +3 -2
  11. package/dist/cjs/conditions/condition.d.ts.map +1 -1
  12. package/dist/cjs/conditions/condition.js +2 -1
  13. package/dist/cjs/conditions/condition.js.map +1 -1
  14. package/dist/cjs/conditions/conditionOperation.d.ts +31 -0
  15. package/dist/cjs/conditions/conditionOperation.d.ts.map +1 -0
  16. package/dist/cjs/conditions/conditionOperation.js +31 -0
  17. package/dist/cjs/conditions/conditionOperation.js.map +1 -0
  18. package/dist/cjs/index.d.ts +1 -0
  19. package/dist/cjs/index.d.ts.map +1 -1
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/policies/policy.js +1 -1
  22. package/dist/cjs/policies/policy.js.map +1 -1
  23. package/dist/cjs/statements/statement.d.ts +7 -1
  24. package/dist/cjs/statements/statement.d.ts.map +1 -1
  25. package/dist/cjs/statements/statement.js +6 -1
  26. package/dist/cjs/statements/statement.js.map +1 -1
  27. package/dist/conditions/condition.d.ts +16 -0
  28. package/dist/conditions/condition.d.ts.map +1 -0
  29. package/dist/conditions/condition.js +25 -0
  30. package/dist/conditions/condition.js.map +1 -0
  31. package/dist/conditions/conditionOperation.d.ts +31 -0
  32. package/dist/conditions/conditionOperation.d.ts.map +1 -0
  33. package/dist/conditions/conditionOperation.js +31 -0
  34. package/dist/conditions/conditionOperation.js.map +1 -0
  35. package/dist/esm/conditions/condition.d.ts +3 -2
  36. package/dist/esm/conditions/condition.d.ts.map +1 -1
  37. package/dist/esm/conditions/condition.js +2 -1
  38. package/dist/esm/conditions/condition.js.map +1 -1
  39. package/dist/esm/conditions/conditionOperation.d.ts +31 -0
  40. package/dist/esm/conditions/conditionOperation.d.ts.map +1 -0
  41. package/dist/esm/conditions/conditionOperation.js +26 -0
  42. package/dist/esm/conditions/conditionOperation.js.map +1 -0
  43. package/dist/esm/index.d.ts +1 -0
  44. package/dist/esm/index.d.ts.map +1 -1
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/esm/policies/policy.js +1 -1
  47. package/dist/esm/policies/policy.js.map +1 -1
  48. package/dist/esm/statements/statement.d.ts +7 -1
  49. package/dist/esm/statements/statement.d.ts.map +1 -1
  50. package/dist/esm/statements/statement.js +5 -1
  51. package/dist/esm/statements/statement.js.map +1 -1
  52. package/dist/index.d.ts +9 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +6 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/parser.d.ts +9 -0
  57. package/dist/parser.d.ts.map +1 -0
  58. package/dist/parser.js +14 -0
  59. package/dist/parser.js.map +1 -0
  60. package/dist/policies/policy.d.ts +14 -0
  61. package/dist/policies/policy.d.ts.map +1 -0
  62. package/dist/policies/policy.js +21 -0
  63. package/dist/policies/policy.js.map +1 -0
  64. package/dist/policies/policy.test.d.ts +2 -0
  65. package/dist/policies/policy.test.d.ts.map +1 -0
  66. package/dist/policies/policy.test.js +74 -0
  67. package/dist/policies/policy.test.js.map +1 -0
  68. package/dist/principals/principal.d.ts +21 -0
  69. package/dist/principals/principal.d.ts.map +1 -0
  70. package/dist/principals/principal.js +35 -0
  71. package/dist/principals/principal.js.map +1 -0
  72. package/dist/resources/resource.d.ts +20 -0
  73. package/dist/resources/resource.d.ts.map +1 -0
  74. package/dist/resources/resource.js +18 -0
  75. package/dist/resources/resource.js.map +1 -0
  76. package/dist/resources/resource.test.d.ts +2 -0
  77. package/dist/resources/resource.test.d.ts.map +1 -0
  78. package/dist/resources/resource.test.js +35 -0
  79. package/dist/resources/resource.test.js.map +1 -0
  80. package/dist/statements/statement.d.ts +146 -0
  81. package/dist/statements/statement.d.ts.map +1 -0
  82. package/dist/statements/statement.js +121 -0
  83. package/dist/statements/statement.js.map +1 -0
  84. package/dist/statements/statement.test.d.ts +2 -0
  85. package/dist/statements/statement.test.d.ts.map +1 -0
  86. package/dist/statements/statement.test.js +479 -0
  87. package/dist/statements/statement.test.js.map +1 -0
  88. package/dist/utils.d.ts +8 -0
  89. package/dist/utils.d.ts.map +1 -0
  90. package/dist/utils.js +13 -0
  91. package/dist/utils.js.map +1 -0
  92. package/package.json +1 -1
package/README.md CHANGED
@@ -1,46 +1,42 @@
1
1
  # IAM Policy Parser
2
2
 
3
- This is a simple IAM policy library that allows you parse and navigate IAM policies without worry about the more difficult details of parsing policies.
3
+ This is a simple IAM policy library that allows you parse and navigate IAM policies without worring about the more difficult details of parsing policies.
4
4
 
5
5
  This may be updated in the future to allow modifying policies, right now it's read-only.
6
6
 
7
- **This does not validate policies**, it only parses them. If you pass in totally invalid JSON it will fail in glorious and unpredictable ways.
7
+ _**This does not validate policies**_, it only parses them. If you pass in totally invalid JSON it will fail in glorious and unpredictable ways.
8
8
 
9
9
  Here are some ways it helps:
10
10
 
11
- ## Normalizing Policy Elements that are Objects/Array of Object or String/Array of Strings
11
+ ## Normalizing Policy Elements that are Objects/Array of Objects or String/Array of Strings
12
12
  ```typescript
13
13
  import{ loadPolicy } from '@cloud-copilot/iam-policy'
14
14
 
15
15
  //Statement can be an array of objects
16
16
  const policyOne = {
17
- {
18
- "Version": "2012-10-17",
19
- "Statement": [
20
- {
21
- "Sid": "ArrayStatement",
22
- "Effect": "Allow",
23
- "Action": [
24
- "s3:GetObject",
25
- ],
26
- "Resource": "arn:aws:s3:::government-secrets/*"
27
- }
28
- ]
29
- }
30
- };
31
-
32
- //Statement can also be a single object
33
- const policyTwo = {
34
- {
35
- "Version": "2012-10-17",
36
- "Statement": {
37
- "Sid": "ObjectStatement",
17
+ "Version": "2012-10-17",
18
+ "Statement": [
19
+ {
20
+ "Sid": "ArrayStatement",
38
21
  "Effect": "Allow",
39
22
  "Action": [
40
23
  "s3:GetObject",
41
24
  ],
42
25
  "Resource": "arn:aws:s3:::government-secrets/*"
43
26
  }
27
+ ]
28
+ };
29
+
30
+ //Statement can also be a single object
31
+ const policyTwo = {
32
+ "Version": "2012-10-17",
33
+ "Statement": {
34
+ "Sid": "ObjectStatement",
35
+ "Effect": "Allow",
36
+ "Action": [
37
+ "s3:GetObject",
38
+ ],
39
+ "Resource": "arn:aws:s3:::government-secrets/*"
44
40
  }
45
41
  };
46
42
 
@@ -53,36 +49,36 @@ console.log(p2.statements()[0].sid()); //ObjectStatement
53
49
 
54
50
  There is similar support for condition values, principals, and resources.
55
51
 
56
- ## Mutually Exclusive Policy Elements
52
+ ## Mutually Exclusive or Optional Policy Elements
57
53
 
58
- In IAM policies there are some elements that are mutually exclusive. For example, you can't have a `Principal` and a `NotPrincipal` in the same statement. We leverage the Typescript type system to make sure you only access data that is confirmed to exist in the policy.
54
+ In IAM policies there are some elements that are mutually exclusive. For example, you can't have a `Principal` and a `NotPrincipal` in the same statement. Some elements are completely optional. We leverage the Typescript type system to make sure you only access data that is confirmed to exist in the policy.
59
55
 
60
56
  ```typescript
61
57
  import{ loadPolicy } from '@cloud-copilot/iam-policy'
58
+
62
59
  const actionPolicy = {
63
- {
64
- "Version": "2012-10-17",
65
- "Statement": {
66
- "Effect": "Allow",
67
- "Action": [
68
- "s3:GetObject",
69
- ],
70
- "Resource": "arn:aws:s3:::government-secrets/*"
71
- }
60
+ "Version": "2012-10-17",
61
+ "Statement": {
62
+ "Effect": "Allow",
63
+ "Action": [
64
+ "s3:GetObject",
65
+ ],
66
+ "Resource": "arn:aws:s3:::government-secrets/*"
72
67
  }
73
68
  };
74
69
 
75
70
  const p = loadPolicy(actionPolicy);
76
71
  const statement = p.statements()[0]; // Get the first statement out
77
72
 
78
- statement.actions() // Causes a compile time error becuase we haven't confirmed the statement has actions
73
+ statement.actions() // Compile time error because Statement does not the `actions` function
79
74
 
80
75
  if(statement.isActionStatement()) {
81
- statement.actions() // Now we can access the actions because the type has been confirmed
76
+ // Type is narrowed to ActionStatement so `actions` is now available
77
+ statement.actions() /
82
78
  }
83
79
 
84
80
  if(statement.isNotActionStatement()) {
85
- // This will not exectue because the statement does not have a NotAction element
81
+ // Will not exectue because the statement does not have a NotAction element
86
82
  }
87
83
  ```
88
84
 
@@ -92,29 +88,27 @@ There is similar support for `Action`, `NotAction`, `Principal`, `NotPrincipal`,
92
88
 
93
89
  ## Flatten Complex Structures
94
90
 
95
- We simplify processing of elements by flattening them into an array of homogenous objects. For example the Principal element can be a string or an object; the object values can be strings or arrays of strings. We flatten those into an array of objects similar to what you would define in a terraform policy.
91
+ Simplifies complex elements by flattening them into an array of homogenous objects. For example the Principal value can be a string or an object; the object values can be strings or arrays of strings. We flatten those into an array of objects similar to what you would define in a terraform policy.
96
92
 
97
93
  ```typescript
98
94
  import{ loadPolicy } from '@cloud-copilot/iam-policy'
99
95
 
100
96
  const principalPolicy = {
101
- {
102
- "Version": "2012-10-17",
103
- "Statement": {
104
- "Effect": "Allow",
105
- "Principal": {
106
- "AWS": [
107
- "arn:aws:iam::123456789012:root",
108
- "arn:aws:iam::123456789013:user/FoxMulder"
109
- ],
110
- "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be",
111
- "Federated": "cognito-identity.amazonaws.com"
112
- },
113
- "Action": [
114
- "s3:GetObject",
97
+ "Version": "2012-10-17",
98
+ "Statement": {
99
+ "Effect": "Allow",
100
+ "Principal": {
101
+ "AWS": [
102
+ "arn:aws:iam::123456789012:root",
103
+ "arn:aws:iam::123456789013:user/FoxMulder"
115
104
  ],
116
- "Resource": "arn:aws:s3:::government-secrets/*"
117
- }
105
+ "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be",
106
+ "Federated": "cognito-identity.amazonaws.com"
107
+ },
108
+ "Action": [
109
+ "s3:GetObject",
110
+ ],
111
+ "Resource": "arn:aws:s3:::government-secrets/*"
118
112
  }
119
113
  };
120
114
 
@@ -126,10 +120,51 @@ if(statement.isPrincipalStatement()) {
126
120
  const principals = statement.principals();
127
121
  principals[0].type() //AWS
128
122
  principals[0].value() //arn:aws:iam::123456789012:root
129
- ...
123
+ //and so on
130
124
  principals[3].type() //Federated
131
- principals[3].value() //arn:aws:iam::123456789012:root
125
+ principals[3].value() //cognito-identity.amazonaws.com
132
126
  }
133
127
  ```
134
128
 
135
- There is flattening for the `Condition` element.
129
+ There is similar flattening for the `Condition` element.
130
+
131
+ ```typescript
132
+ import{ loadPolicy } from '@cloud-copilot/iam-policy'
133
+
134
+ const principalPolicy = {
135
+ "Version": "2012-10-17",
136
+ "Statement": {
137
+ "Effect": "Allow",
138
+ "Principal": {
139
+ "AWS": "arn:aws:iam::123456789012:root",
140
+ },
141
+ "Action": [
142
+ "s3:GetObject",
143
+ ],
144
+ "Resource": "arn:aws:s3:::government-secrets/*",
145
+ "Condition": {
146
+ "StringEquals": {
147
+ "s3:prefix": "home/${aws:username}",
148
+ "aws:PrincipalOrgID": "o-1234567890"
149
+ },
150
+ "StringLike": {
151
+ "s3:authType": "REST*",
152
+ "aws:TagKeys/Foo": ["Bar*", "Baz*"]
153
+ }
154
+ }
155
+ }
156
+ };
157
+
158
+ const p = loadPolicy(principalPolicy);
159
+
160
+ const statement = p.statements()[0]; // Get the first statement out
161
+
162
+ const conditions = statement.conditions();
163
+ conditions[0].operation().value() //StringEquals
164
+ conditions[0].conditionKey() //s3:prefix
165
+ conditions[0].conditionValues() //[ home/${aws:username} ]
166
+ //and so on
167
+ conditions[3].operation().value() //StringLike
168
+ conditions[3].conditionKey() //aws:TagKeys/Foo
169
+ conditions[3].conditionValues() // [Bar*, Baz*]
170
+ ```
@@ -0,0 +1,51 @@
1
+ export type ActionType = 'service' | 'wildcard';
2
+ /**
3
+ * An Action string in an IAM policy
4
+ */
5
+ export interface Action {
6
+ /**
7
+ * The type of actions
8
+ */
9
+ type(): ActionType;
10
+ /**
11
+ * The raw string of the action
12
+ */
13
+ value(): string;
14
+ /**
15
+ * Whether the action is a wildcard action: `"*"`
16
+ */
17
+ isWildcardAction(): boolean;
18
+ /**
19
+ * Whether the action is a service action: `"service:Action"`
20
+ */
21
+ isServiceAction(): boolean;
22
+ }
23
+ /**
24
+ * A wildcard action: `"*"`
25
+ */
26
+ export interface WildcardAction extends Action {
27
+ }
28
+ /**
29
+ * A service action: `"service:Action"`
30
+ */
31
+ export interface ServiceAction extends Action {
32
+ /**
33
+ * The service of the action
34
+ */
35
+ service(): string;
36
+ /**
37
+ * The action within the service
38
+ */
39
+ action(): string;
40
+ }
41
+ export declare class ActionImpl implements Action, WildcardAction, ServiceAction {
42
+ private readonly rawValue;
43
+ constructor(rawValue: string);
44
+ type(): ActionType;
45
+ value(): string;
46
+ isWildcardAction(): this is WildcardAction;
47
+ isServiceAction(): this is ServiceAction;
48
+ service(): string;
49
+ action(): string;
50
+ }
51
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/actions/action.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,IAAI,IAAI,UAAU,CAAA;IAElB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAA;IAE3B;;OAEG;IACH,eAAe,IAAI,OAAO,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,MAAM;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;CACjB;AAED,qBAAa,UAAW,YAAW,MAAM,EAAG,cAAc,EAAE,aAAa;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAEtC,IAAI,IAAI,UAAU;IAOlB,KAAK,IAAI,MAAM;IAIf,gBAAgB,IAAI,IAAI,IAAI,cAAc;IAI1C,eAAe,IAAI,IAAI,IAAI,aAAa;IAIxC,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;CAGxB"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActionImpl = void 0;
4
+ const utils_js_1 = require("../utils.js");
5
+ class ActionImpl {
6
+ rawValue;
7
+ constructor(rawValue) {
8
+ this.rawValue = rawValue;
9
+ }
10
+ type() {
11
+ if ((0, utils_js_1.isAllWildcards)(this.rawValue)) {
12
+ return 'wildcard';
13
+ }
14
+ return 'service';
15
+ }
16
+ value() {
17
+ return this.rawValue;
18
+ }
19
+ isWildcardAction() {
20
+ return this.type() === 'wildcard';
21
+ }
22
+ isServiceAction() {
23
+ return this.type() === 'service';
24
+ }
25
+ service() {
26
+ return this.rawValue.split(':')[0];
27
+ }
28
+ action() {
29
+ return this.rawValue.split(':')[1];
30
+ }
31
+ }
32
+ exports.ActionImpl = ActionImpl;
33
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/actions/action.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAkD5C,MAAa,UAAU;IACQ;IAA7B,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAE1C,IAAI;QACT,IAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,CAAA;IACnC,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAA;IAClC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC;CACF;AA7BD,gCA6BC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=actions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.test.d.ts","sourceRoot":"","sources":["../../src/actions/actions.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const action_js_1 = require("./action.js");
5
+ (0, vitest_1.describe)('ActionImpl', () => {
6
+ (0, vitest_1.describe)('type', () => {
7
+ (0, vitest_1.it)('should return wildcard when all wildcards', () => {
8
+ // Given an action wildcard
9
+ const actionString = "*";
10
+ // When an ActionImpl is created
11
+ const action = new action_js_1.ActionImpl(actionString);
12
+ // Assert
13
+ (0, vitest_1.expect)(action.type()).toBe('wildcard');
14
+ });
15
+ (0, vitest_1.it)('should return service when not all wildcards', () => {
16
+ // Given an action string
17
+ const actionString = "s3:GetObject";
18
+ // When an ActionImpl is created
19
+ const action = new action_js_1.ActionImpl(actionString);
20
+ // Assert
21
+ (0, vitest_1.expect)(action.type()).toBe('service');
22
+ });
23
+ });
24
+ (0, vitest_1.describe)('value', () => {
25
+ (0, vitest_1.it)('should return the value', () => {
26
+ // Given an action string
27
+ const actionString = "s3:GetObject";
28
+ // When an ActionImpl is created
29
+ const action = new action_js_1.ActionImpl(actionString);
30
+ // Assert
31
+ (0, vitest_1.expect)(action.value()).toBe(actionString);
32
+ });
33
+ });
34
+ (0, vitest_1.describe)('isWildcardAction', () => {
35
+ (0, vitest_1.it)('should return true when wildcard', () => {
36
+ // Given an action wildcard
37
+ const actionString = "*";
38
+ // When an ActionImpl is created
39
+ const action = new action_js_1.ActionImpl(actionString);
40
+ // Assert
41
+ (0, vitest_1.expect)(action.isWildcardAction()).toBe(true);
42
+ });
43
+ (0, vitest_1.it)('should return false when not wildcard', () => {
44
+ // Given an action string
45
+ const actionString = "s3:GetObject";
46
+ // When an ActionImpl is created
47
+ const action = new action_js_1.ActionImpl(actionString);
48
+ // Assert
49
+ (0, vitest_1.expect)(action.isWildcardAction()).toBe(false);
50
+ });
51
+ });
52
+ (0, vitest_1.describe)('isServiceAction', () => {
53
+ (0, vitest_1.it)('should return true when service', () => {
54
+ // Given an action string
55
+ const actionString = "s3:GetObject";
56
+ // When an ActionImpl is created
57
+ const action = new action_js_1.ActionImpl(actionString);
58
+ // Assert
59
+ (0, vitest_1.expect)(action.isServiceAction()).toBe(true);
60
+ });
61
+ (0, vitest_1.it)('should return false when not service', () => {
62
+ // Given an action wildcard
63
+ const actionString = "*";
64
+ // When an ActionImpl is created
65
+ const action = new action_js_1.ActionImpl(actionString);
66
+ // Assert
67
+ (0, vitest_1.expect)(action.isServiceAction()).toBe(false);
68
+ });
69
+ });
70
+ (0, vitest_1.describe)('service', () => {
71
+ (0, vitest_1.it)('should return the service', () => {
72
+ // Given an action string
73
+ const actionString = "s3:GetObject";
74
+ // When an ActionImpl is created
75
+ const action = new action_js_1.ActionImpl(actionString);
76
+ // Assert
77
+ (0, vitest_1.expect)(action.service()).toBe('s3');
78
+ });
79
+ });
80
+ (0, vitest_1.describe)('action', () => {
81
+ (0, vitest_1.it)('should return the action', () => {
82
+ // Given an action string
83
+ const actionString = "s3:GetObject";
84
+ // When an ActionImpl is created
85
+ const action = new action_js_1.ActionImpl(actionString);
86
+ // Assert
87
+ (0, vitest_1.expect)(action.action()).toBe('GetObject');
88
+ });
89
+ });
90
+ });
91
+ //# sourceMappingURL=actions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.test.js","sourceRoot":"","sources":["../../src/actions/actions.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import { ConditionOperation } from "./conditionOperation.js";
1
2
  export interface Condition {
2
- operation(): string;
3
+ operation(): ConditionOperation;
3
4
  conditionKey(): string;
4
5
  conditionValues(): string[];
5
6
  }
@@ -8,7 +9,7 @@ export declare class ConditionImpl implements Condition {
8
9
  private readonly key;
9
10
  private readonly values;
10
11
  constructor(op: string, key: string, values: string | string[]);
11
- operation(): string;
12
+ operation(): ConditionOperation;
12
13
  conditionKey(): string;
13
14
  conditionValues(): string[];
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,MAAM,CAAA;IACnB,YAAY,IAAI,MAAM,CAAA;IACtB,eAAe,IAAI,MAAM,EAAE,CAAA;CAC5B;AAED,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAU,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAjE,EAAE,EAAE,MAAM,EAAmB,GAAG,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAE1G,SAAS,IAAI,MAAM;IAInB,YAAY,IAAI,MAAM;IAItB,eAAe,IAAI,MAAM,EAAE;CAGnC"}
1
+ {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,yBAAyB,CAAA;AAEpF,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,kBAAkB,CAAA;IAC/B,YAAY,IAAI,MAAM,CAAA;IACtB,eAAe,IAAI,MAAM,EAAE,CAAA;CAC5B;AAED,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAU,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAjE,EAAE,EAAE,MAAM,EAAmB,GAAG,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAE1G,SAAS,IAAI,kBAAkB;IAI/B,YAAY,IAAI,MAAM;IAItB,eAAe,IAAI,MAAM,EAAE;CAGnC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConditionImpl = void 0;
4
+ const conditionOperation_js_1 = require("./conditionOperation.js");
4
5
  class ConditionImpl {
5
6
  op;
6
7
  key;
@@ -11,7 +12,7 @@ class ConditionImpl {
11
12
  this.values = values;
12
13
  }
13
14
  operation() {
14
- return this.op;
15
+ return new conditionOperation_js_1.ConditionOperationImpl(this.op);
15
16
  }
16
17
  conditionKey() {
17
18
  return this.key;
@@ -1 +1 @@
1
- {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":";;;AAMA,MAAa,aAAa;IACK;IAA6B;IAA8B;IAAxF,YAA6B,EAAU,EAAmB,GAAW,EAAmB,MAAyB;QAApF,OAAE,GAAF,EAAE,CAAQ;QAAmB,QAAG,GAAH,GAAG,CAAQ;QAAmB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE9G,SAAS;QACd,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAEM,eAAe;QACpB,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IACtE,CAAC;CACF;AAdD,sCAcC"}
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":";;;AAAA,mEAAoF;AAQpF,MAAa,aAAa;IACK;IAA6B;IAA8B;IAAxF,YAA6B,EAAU,EAAmB,GAAW,EAAmB,MAAyB;QAApF,OAAE,GAAF,EAAE,CAAQ;QAAmB,QAAG,GAAH,GAAG,CAAQ;QAAmB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE9G,SAAS;QACd,OAAO,IAAI,8CAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAEM,eAAe;QACpB,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IACtE,CAAC;CACF;AAdD,sCAcC"}
@@ -0,0 +1,31 @@
1
+ export type SetOperator = 'ForAllValues' | 'ForAnyValue';
2
+ /**
3
+ * ConditionOperation is a string that represents the operation of a condition.
4
+ */
5
+ export interface ConditionOperation {
6
+ /**
7
+ * Returns the set modifier if present.
8
+ */
9
+ setOperator(): SetOperator | undefined;
10
+ /**
11
+ * Returns the base operator of the condition without the set modifier or IfExists.
12
+ */
13
+ baseOperator(): string;
14
+ /**
15
+ * Returns true if the condition operation ends with IfExists.
16
+ */
17
+ isIfExists(): boolean;
18
+ /**
19
+ * Returns the raw string of the condition operation.
20
+ */
21
+ value(): string;
22
+ }
23
+ export declare class ConditionOperationImpl implements ConditionOperation {
24
+ private readonly op;
25
+ constructor(op: string);
26
+ setOperator(): SetOperator | undefined;
27
+ isIfExists(): boolean;
28
+ baseOperator(): string;
29
+ value(): string;
30
+ }
31
+ //# sourceMappingURL=conditionOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionOperation.d.ts","sourceRoot":"","sources":["../../../src/conditions/conditionOperation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,aAAa,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,WAAW,IAAI,WAAW,GAAG,SAAS,CAAA;IAEtC;;OAEG;IACH,YAAY,IAAI,MAAM,CAAA;IAEtB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAA;IAErB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;CAChB;AAID,qBAAa,sBAAuB,YAAW,kBAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,MAAM;IAEhC,WAAW,IAAI,WAAW,GAAG,SAAS;IAOtC,UAAU,IAAI,OAAO;IAIrB,YAAY,IAAI,MAAM;IAQtB,KAAK,IAAI,MAAM;CAIvB"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConditionOperationImpl = void 0;
4
+ const ifExistsSlice = 'IfExists'.length * -1;
5
+ class ConditionOperationImpl {
6
+ op;
7
+ constructor(op) {
8
+ this.op = op;
9
+ }
10
+ setOperator() {
11
+ if (!this.op.includes(':')) {
12
+ return undefined;
13
+ }
14
+ return this.op.split(':').at(0);
15
+ }
16
+ isIfExists() {
17
+ return this.op.endsWith('IfExists');
18
+ }
19
+ baseOperator() {
20
+ const base = this.op.split(':').at(-1);
21
+ if (base?.endsWith('IfExists')) {
22
+ return base.slice(0, ifExistsSlice);
23
+ }
24
+ return base;
25
+ }
26
+ value() {
27
+ return this.op;
28
+ }
29
+ }
30
+ exports.ConditionOperationImpl = ConditionOperationImpl;
31
+ //# sourceMappingURL=conditionOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionOperation.js","sourceRoot":"","sources":["../../../src/conditions/conditionOperation.ts"],"names":[],"mappings":";;;AA2BA,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAE5C,MAAa,sBAAsB;IACJ;IAA7B,YAA6B,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IAEpC,WAAW;QAChB,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAgB,CAAA;IAChD,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC;IAEM,YAAY;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAA;QACvC,IAAG,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;CAEF;AA1BD,wDA0BC"}
@@ -1,5 +1,6 @@
1
1
  export type { Action, ActionType, ServiceAction, WildcardAction } from './actions/action.js';
2
2
  export type { Condition } from './conditions/condition.js';
3
+ export type { ConditionOperation, SetOperator } from './conditions/conditionOperation.js';
3
4
  export { loadPolicy } from './parser.js';
4
5
  export type { Policy } from './policies/policy.js';
5
6
  export type { Principal, PrincipalType } from './principals/principal.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC5F,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC5F,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAwC;AAA/B,uGAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAGA,yCAAwC;AAA/B,uGAAA,UAAU,OAAA"}
@@ -14,7 +14,7 @@ class PolicyImpl {
14
14
  return this.policyObject.Id;
15
15
  }
16
16
  statements() {
17
- return [this.policyObject.Statement].flat().map((statement) => new statement_js_1.StatementImpl(statement));
17
+ return [this.policyObject.Statement].flat().map((statement, index) => new statement_js_1.StatementImpl(statement, index + 1));
18
18
  }
19
19
  }
20
20
  exports.PolicyImpl = PolicyImpl;
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":";;;AAAA,6DAAqE;AAQrE,MAAa,UAAU;IACQ;IAA7B,YAA6B,YAAiB;QAAjB,iBAAY,GAAZ,YAAY,CAAK;IAAG,CAAC;IAE3C,OAAO;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA;IAClC,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA;IAC7B,CAAC;IAEM,UAAU;QACf,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,IAAI,4BAAa,CAAC,SAAS,CAAC,CAAC,CAAA;IACnG,CAAC;CACF;AAdD,gCAcC"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":";;;AAAA,6DAAqE;AAQrE,MAAa,UAAU;IACQ;IAA7B,YAA6B,YAAiB;QAAjB,iBAAY,GAAZ,YAAY,CAAK;IAAG,CAAC;IAE3C,OAAO;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA;IAClC,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA;IAC7B,CAAC;IAEM,UAAU;QACf,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,4BAAa,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;IACrH,CAAC;CACF;AAdD,gCAcC"}
@@ -6,6 +6,10 @@ import { Resource } from "../resources/resource.js";
6
6
  * Represents a statement in an IAM policy
7
7
  */
8
8
  export interface Statement {
9
+ /**
10
+ * The index of the statement in the policy, starts from 1
11
+ */
12
+ index(): number;
9
13
  /**
10
14
  * The optional Sid (Statement ID) for a statement
11
15
  */
@@ -114,7 +118,9 @@ export interface NotPrincipalStatement extends Statement {
114
118
  */
115
119
  export declare class StatementImpl implements Statement, ActionStatement, NotActionStatement, ResourceStatement, NotResourceStatement, PrincipalStatement {
116
120
  private readonly statementObject;
117
- constructor(statementObject: any);
121
+ private readonly _index;
122
+ constructor(statementObject: any, _index: number);
123
+ index(): number;
118
124
  sid(): string | undefined;
119
125
  effect(): string;
120
126
  isAllow(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAiB,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,SAAS,EAAgC,MAAM,4BAA4B,CAAA;AACpF,OAAO,EAAE,QAAQ,EAAgB,MAAM,0BAA0B,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,GAAG,IAAI,MAAM,GAAG,SAAS,CAAA;IAEzB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAA;IAElB;;OAEG;IACH,MAAM,IAAI,OAAO,CAAA;IAEjB;;OAEG;IACH,UAAU,IAAI,SAAS,EAAE,CAAA;IAEzB;;OAEG;IACH,oBAAoB,IAAI,IAAI,IAAI,kBAAkB,CAAA;IAElD;;OAEG;IACH,uBAAuB,IAAI,IAAI,IAAI,qBAAqB,CAAA;IAExD;;OAEG;IACH,iBAAiB,IAAI,IAAI,IAAI,eAAe,CAAA;IAE5C;;OAEG;IACH,oBAAoB,IAAI,IAAI,IAAI,kBAAkB,CAAA;IAElD;;OAEG;IACH,mBAAmB,IAAI,IAAI,IAAI,iBAAiB,CAAA;IAEhD;;OAEG;IACH,sBAAsB,IAAI,IAAI,IAAI,oBAAoB,CAAA;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IAEnD;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD;;OAEG;IACH,SAAS,IAAI,QAAQ,EAAE,CAAA;IAEvB;;OAEG;IACH,yBAAyB,IAAI,OAAO,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD;;OAEG;IACH,YAAY,IAAI,QAAQ,EAAE,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD;;OAEG;IACH,UAAU,IAAI,SAAS,EAAE,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IAEtD;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE,CAAA;CAC7B;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB;IACnI,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,GAAG;IAE1C,GAAG,IAAI,MAAM,GAAG,SAAS;IAIzB,MAAM,IAAI,MAAM;IAIhB,OAAO,IAAI,OAAO;IAIlB,MAAM,IAAI,OAAO;IAIjB,oBAAoB,IAAI,IAAI,IAAI,kBAAkB;IAIlD,uBAAuB,IAAI,IAAI,IAAI,qBAAqB;IAIxD,UAAU,IAAI,SAAS,EAAE;IAOzB,aAAa,IAAI,SAAS,EAAE;IAOnC;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAcrB,iBAAiB,IAAI,IAAI,IAAI,eAAe;IAI5C,oBAAoB,IAAI,IAAI,IAAI,kBAAkB;IAIlD,OAAO,IAAI,MAAM,EAAE;IAOnB,UAAU,IAAI,MAAM,EAAE;IAOtB,mBAAmB,IAAI,IAAI,IAAI,iBAAiB;IAIhD,sBAAsB,IAAI,IAAI,IAAI,oBAAoB;IAItD,SAAS,IAAI,QAAQ,EAAE;IAOvB,YAAY,IAAI,QAAQ,EAAE;IAO1B,yBAAyB,IAAI,OAAO;IAOpC,UAAU,IAAI,SAAS,EAAE;CAWjC"}
1
+ {"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,13 @@ const resource_js_1 = require("../resources/resource.js");
10
10
  */
11
11
  class StatementImpl {
12
12
  statementObject;
13
- constructor(statementObject) {
13
+ _index;
14
+ constructor(statementObject, _index) {
14
15
  this.statementObject = statementObject;
16
+ this._index = _index;
17
+ }
18
+ index() {
19
+ return this._index;
15
20
  }
16
21
  sid() {
17
22
  return this.statementObject.Sid;
@@ -1 +1 @@
1
- {"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}