@jjrawlins/cdk-iam-policy-builder-helper 0.0.64 → 0.0.65

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 (32) hide show
  1. package/.jsii +3 -3
  2. package/cdk-iam-policy-builder-helper/jsii/jsii.go +2 -2
  3. package/cdk-iam-policy-builder-helper/version +1 -1
  4. package/lib/constructs/Actions.d.ts +97 -8
  5. package/lib/constructs/Actions.js +98 -9
  6. package/lib/constructs/ManagedPolicies.d.ts +24 -0
  7. package/lib/constructs/ManagedPolicies.js +25 -1
  8. package/methods_list.txt +19416 -0
  9. package/node_modules/@aws-sdk/client-iam/dist-cjs/endpoint/ruleset.js +1 -1
  10. package/node_modules/@aws-sdk/client-iam/dist-cjs/index.js +15 -15
  11. package/node_modules/@aws-sdk/client-iam/dist-es/endpoint/ruleset.js +1 -1
  12. package/node_modules/@aws-sdk/client-iam/dist-es/models/models_0.js +12 -12
  13. package/node_modules/@aws-sdk/client-iam/dist-es/protocols/Aws_query.js +3 -3
  14. package/node_modules/@aws-sdk/client-iam/dist-types/commands/AddClientIDToOpenIDConnectProviderCommand.d.ts +4 -0
  15. package/node_modules/@aws-sdk/client-iam/dist-types/commands/RemoveClientIDFromOpenIDConnectProviderCommand.d.ts +4 -0
  16. package/node_modules/@aws-sdk/client-iam/dist-types/commands/UpdateOpenIDConnectProviderThumbprintCommand.d.ts +4 -0
  17. package/node_modules/@aws-sdk/client-iam/dist-types/commands/UpdateSAMLProviderCommand.d.ts +4 -0
  18. package/node_modules/@aws-sdk/client-iam/dist-types/models/models_0.d.ts +13 -13
  19. package/node_modules/@aws-sdk/client-iam/dist-types/ts3.4/models/models_0.d.ts +10 -10
  20. package/node_modules/@aws-sdk/client-iam/package.json +1 -1
  21. package/node_modules/@smithy/core/package.json +2 -2
  22. package/node_modules/@smithy/middleware-endpoint/package.json +2 -2
  23. package/node_modules/@smithy/middleware-retry/package.json +2 -2
  24. package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +17 -12
  25. package/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +16 -11
  26. package/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +1 -1
  27. package/node_modules/@smithy/node-http-handler/package.json +1 -1
  28. package/node_modules/@smithy/smithy-client/package.json +4 -4
  29. package/node_modules/@smithy/util-defaults-mode-browser/package.json +2 -2
  30. package/node_modules/@smithy/util-defaults-mode-node/package.json +2 -2
  31. package/node_modules/@smithy/util-stream/package.json +2 -2
  32. package/package.json +4 -4
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ruleSet = void 0;
4
4
  const H = "required", I = "fn", J = "argv", K = "ref", L = "properties", M = "headers", N = "authSchemes", O = "name", P = "signingRegion";
5
- const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "stringEquals", i = "sigv4", j = { [H]: true, "default": false, "type": "Boolean" }, k = { [H]: false, "type": "String" }, l = { [K]: "Endpoint" }, m = { [I]: c, [J]: [{ [K]: "UseFIPS" }, true] }, n = { [I]: c, [J]: [{ [K]: "UseDualStack" }, true] }, o = {}, p = { [I]: h, [J]: [{ [I]: "getAttr", [J]: [{ [K]: g }, "name"] }, "aws"] }, q = { [I]: "getAttr", [J]: [{ [K]: g }, "name"] }, r = { [I]: c, [J]: [{ [K]: "UseFIPS" }, false] }, s = { [N]: [{ [O]: i, [P]: "us-east-1" }] }, t = { [I]: h, [J]: [q, "aws-cn"] }, u = { [N]: [{ [O]: i, [P]: "cn-north-1" }] }, v = { [I]: c, [J]: [{ [K]: "UseDualStack" }, false] }, w = { [I]: h, [J]: [q, "aws-us-gov"] }, x = { "url": "https://iam.us-gov.api.aws", [L]: { [N]: [{ [O]: i, [P]: "us-gov-west-1" }] }, [M]: {} }, y = { "url": "https://iam.us-gov.amazonaws.com", [L]: { [N]: [{ [O]: i, [P]: "us-gov-west-1" }] }, [M]: {} }, z = { [I]: h, [J]: [q, "aws-iso"] }, A = { [N]: [{ [O]: i, [P]: "us-iso-east-1" }] }, B = { [I]: h, [J]: [q, "aws-iso-b"] }, C = { [N]: [{ [O]: i, [P]: "us-isob-east-1" }] }, D = { [I]: "getAttr", [J]: [{ [K]: g }, "supportsFIPS"] }, E = { [I]: c, [J]: [true, { [I]: "getAttr", [J]: [{ [K]: g }, "supportsDualStack"] }] }, F = { [N]: [{ [O]: i, [P]: "{PartitionResult#implicitGlobalRegion}" }] }, G = [{ [K]: "Region" }];
5
+ const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "stringEquals", i = "sigv4", j = { [H]: true, "default": false, "type": "boolean" }, k = { [H]: false, "type": "string" }, l = { [K]: "Endpoint" }, m = { [I]: c, [J]: [{ [K]: "UseFIPS" }, true] }, n = { [I]: c, [J]: [{ [K]: "UseDualStack" }, true] }, o = {}, p = { [I]: h, [J]: [{ [I]: "getAttr", [J]: [{ [K]: g }, "name"] }, "aws"] }, q = { [I]: "getAttr", [J]: [{ [K]: g }, "name"] }, r = { [I]: c, [J]: [{ [K]: "UseFIPS" }, false] }, s = { [N]: [{ [O]: i, [P]: "us-east-1" }] }, t = { [I]: h, [J]: [q, "aws-cn"] }, u = { [N]: [{ [O]: i, [P]: "cn-north-1" }] }, v = { [I]: c, [J]: [{ [K]: "UseDualStack" }, false] }, w = { [I]: h, [J]: [q, "aws-us-gov"] }, x = { "url": "https://iam.us-gov.api.aws", [L]: { [N]: [{ [O]: i, [P]: "us-gov-west-1" }] }, [M]: {} }, y = { "url": "https://iam.us-gov.amazonaws.com", [L]: { [N]: [{ [O]: i, [P]: "us-gov-west-1" }] }, [M]: {} }, z = { [I]: h, [J]: [q, "aws-iso"] }, A = { [N]: [{ [O]: i, [P]: "us-iso-east-1" }] }, B = { [I]: h, [J]: [q, "aws-iso-b"] }, C = { [N]: [{ [O]: i, [P]: "us-isob-east-1" }] }, D = { [I]: "getAttr", [J]: [{ [K]: g }, "supportsFIPS"] }, E = { [I]: c, [J]: [true, { [I]: "getAttr", [J]: [{ [K]: g }, "supportsDualStack"] }] }, F = { [N]: [{ [O]: i, [P]: "{PartitionResult#implicitGlobalRegion}" }] }, G = [{ [K]: "Region" }];
6
6
  const _data = { version: "1.0", parameters: { UseDualStack: j, UseFIPS: j, Endpoint: k, Region: k }, rules: [{ conditions: [{ [I]: b, [J]: [l] }], rules: [{ conditions: [m], error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, { rules: [{ conditions: [n], error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, { endpoint: { url: l, [L]: o, [M]: o }, type: e }], type: f }], type: f }, { rules: [{ conditions: [{ [I]: b, [J]: G }], rules: [{ conditions: [{ [I]: "aws.partition", [J]: G, assign: g }], rules: [{ conditions: [p, r, n], endpoint: { url: "https://iam.global.api.aws", [L]: s, [M]: o }, type: e }, { conditions: [p, m, n], endpoint: { url: "https://iam-fips.global.api.aws", [L]: s, [M]: o }, type: e }, { conditions: [t, r, n], endpoint: { url: "https://iam.global.api.amazonwebservices.com.cn", [L]: u, [M]: o }, type: e }, { conditions: [t, r, v], endpoint: { url: "https://iam.cn-north-1.amazonaws.com.cn", [L]: u, [M]: o }, type: e }, { conditions: [w, r, n], endpoint: x, type: e }, { conditions: [w, m, n], endpoint: x, type: e }, { conditions: [w, r, v], endpoint: y, type: e }, { conditions: [w, m, v], endpoint: y, type: e }, { conditions: [z, r, v], endpoint: { url: "https://iam.us-iso-east-1.c2s.ic.gov", [L]: A, [M]: o }, type: e }, { conditions: [z, m, v], endpoint: { url: "https://iam-fips.us-iso-east-1.c2s.ic.gov", [L]: A, [M]: o }, type: e }, { conditions: [B, r, v], endpoint: { url: "https://iam.us-isob-east-1.sc2s.sgov.gov", [L]: C, [M]: o }, type: e }, { conditions: [B, m, v], endpoint: { url: "https://iam-fips.us-isob-east-1.sc2s.sgov.gov", [L]: C, [M]: o }, type: e }, { conditions: [{ [I]: h, [J]: [q, "aws-iso-e"] }, r, v], endpoint: { url: "https://iam.eu-isoe-west-1.cloud.adc-e.uk", [L]: { [N]: [{ [O]: i, [P]: "eu-isoe-west-1" }] }, [M]: o }, type: e }, { conditions: [{ [I]: h, [J]: [q, "aws-iso-f"] }, r, v], endpoint: { url: "https://iam.us-isof-south-1.csp.hci.ic.gov", [L]: { [N]: [{ [O]: i, [P]: "us-isof-south-1" }] }, [M]: o }, type: e }, { conditions: [{ [I]: h, [J]: [q, "aws-eusc"] }, r, v], endpoint: { url: "https://iam.eusc-de-east-1.amazonaws.eu", [L]: { [N]: [{ [O]: i, [P]: "eusc-de-east-1" }] }, [M]: o }, type: e }, { conditions: [m, n], rules: [{ conditions: [{ [I]: c, [J]: [a, D] }, E], rules: [{ endpoint: { url: "https://iam-fips.{PartitionResult#dualStackDnsSuffix}", [L]: F, [M]: o }, type: e }], type: f }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }], type: f }, { conditions: [m, v], rules: [{ conditions: [{ [I]: c, [J]: [D, a] }], rules: [{ endpoint: { url: "https://iam-fips.{PartitionResult#dnsSuffix}", [L]: F, [M]: o }, type: e }], type: f }, { error: "FIPS is enabled but this partition does not support FIPS", type: d }], type: f }, { conditions: [r, n], rules: [{ conditions: [E], rules: [{ endpoint: { url: "https://iam.{PartitionResult#dualStackDnsSuffix}", [L]: F, [M]: o }, type: e }], type: f }, { error: "DualStack is enabled but this partition does not support DualStack", type: d }], type: f }, { endpoint: { url: "https://iam.{PartitionResult#dnsSuffix}", [L]: F, [M]: o }, type: e }], type: f }], type: f }, { error: "Invalid Configuration: Missing Region", type: d }], type: f }] };
7
7
  exports.ruleSet = _data;
@@ -141,6 +141,18 @@ class AccountNotManagementOrDelegatedAdministratorException extends IAMServiceEx
141
141
  this.Message = opts.Message;
142
142
  }
143
143
  }
144
+ class ConcurrentModificationException extends IAMServiceException {
145
+ name = "ConcurrentModificationException";
146
+ $fault = "client";
147
+ constructor(opts) {
148
+ super({
149
+ name: "ConcurrentModificationException",
150
+ $fault: "client",
151
+ ...opts,
152
+ });
153
+ Object.setPrototypeOf(this, ConcurrentModificationException.prototype);
154
+ }
155
+ }
144
156
  class InvalidInputException extends IAMServiceException {
145
157
  name = "InvalidInputException";
146
158
  $fault = "client";
@@ -273,18 +285,6 @@ class PasswordPolicyViolationException extends IAMServiceException {
273
285
  Object.setPrototypeOf(this, PasswordPolicyViolationException.prototype);
274
286
  }
275
287
  }
276
- class ConcurrentModificationException extends IAMServiceException {
277
- name = "ConcurrentModificationException";
278
- $fault = "client";
279
- constructor(opts) {
280
- super({
281
- name: "ConcurrentModificationException",
282
- $fault: "client",
283
- ...opts,
284
- });
285
- Object.setPrototypeOf(this, ConcurrentModificationException.prototype);
286
- }
287
- }
288
288
  class OpenIdIdpCommunicationErrorException extends IAMServiceException {
289
289
  name = "OpenIdIdpCommunicationErrorException";
290
290
  $fault = "client";
@@ -4281,6 +4281,9 @@ const de_CommandError = async (output, context) => {
4281
4281
  };
4282
4282
  const errorCode = loadQueryErrorCode(output, parsedOutput.body);
4283
4283
  switch (errorCode) {
4284
+ case "ConcurrentModification":
4285
+ case "com.amazonaws.iam#ConcurrentModificationException":
4286
+ throw await de_ConcurrentModificationExceptionRes(parsedOutput);
4284
4287
  case "InvalidInput":
4285
4288
  case "com.amazonaws.iam#InvalidInputException":
4286
4289
  throw await de_InvalidInputExceptionRes(parsedOutput);
@@ -4311,9 +4314,6 @@ const de_CommandError = async (output, context) => {
4311
4314
  case "PasswordPolicyViolation":
4312
4315
  case "com.amazonaws.iam#PasswordPolicyViolationException":
4313
4316
  throw await de_PasswordPolicyViolationExceptionRes(parsedOutput);
4314
- case "ConcurrentModification":
4315
- case "com.amazonaws.iam#ConcurrentModificationException":
4316
- throw await de_ConcurrentModificationExceptionRes(parsedOutput);
4317
4317
  case "OpenIdIdpCommunicationError":
4318
4318
  case "com.amazonaws.iam#OpenIdIdpCommunicationErrorException":
4319
4319
  throw await de_OpenIdIdpCommunicationErrorExceptionRes(parsedOutput);
@@ -1,4 +1,4 @@
1
1
  const H = "required", I = "fn", J = "argv", K = "ref", L = "properties", M = "headers", N = "authSchemes", O = "name", P = "signingRegion";
2
- const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "stringEquals", i = "sigv4", j = { [H]: true, "default": false, "type": "Boolean" }, k = { [H]: false, "type": "String" }, l = { [K]: "Endpoint" }, m = { [I]: c, [J]: [{ [K]: "UseFIPS" }, true] }, n = { [I]: c, [J]: [{ [K]: "UseDualStack" }, true] }, o = {}, p = { [I]: h, [J]: [{ [I]: "getAttr", [J]: [{ [K]: g }, "name"] }, "aws"] }, q = { [I]: "getAttr", [J]: [{ [K]: g }, "name"] }, r = { [I]: c, [J]: [{ [K]: "UseFIPS" }, false] }, s = { [N]: [{ [O]: i, [P]: "us-east-1" }] }, t = { [I]: h, [J]: [q, "aws-cn"] }, u = { [N]: [{ [O]: i, [P]: "cn-north-1" }] }, v = { [I]: c, [J]: [{ [K]: "UseDualStack" }, false] }, w = { [I]: h, [J]: [q, "aws-us-gov"] }, x = { "url": "https://iam.us-gov.api.aws", [L]: { [N]: [{ [O]: i, [P]: "us-gov-west-1" }] }, [M]: {} }, y = { "url": "https://iam.us-gov.amazonaws.com", [L]: { [N]: [{ [O]: i, [P]: "us-gov-west-1" }] }, [M]: {} }, z = { [I]: h, [J]: [q, "aws-iso"] }, A = { [N]: [{ [O]: i, [P]: "us-iso-east-1" }] }, B = { [I]: h, [J]: [q, "aws-iso-b"] }, C = { [N]: [{ [O]: i, [P]: "us-isob-east-1" }] }, D = { [I]: "getAttr", [J]: [{ [K]: g }, "supportsFIPS"] }, E = { [I]: c, [J]: [true, { [I]: "getAttr", [J]: [{ [K]: g }, "supportsDualStack"] }] }, F = { [N]: [{ [O]: i, [P]: "{PartitionResult#implicitGlobalRegion}" }] }, G = [{ [K]: "Region" }];
2
+ const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "stringEquals", i = "sigv4", j = { [H]: true, "default": false, "type": "boolean" }, k = { [H]: false, "type": "string" }, l = { [K]: "Endpoint" }, m = { [I]: c, [J]: [{ [K]: "UseFIPS" }, true] }, n = { [I]: c, [J]: [{ [K]: "UseDualStack" }, true] }, o = {}, p = { [I]: h, [J]: [{ [I]: "getAttr", [J]: [{ [K]: g }, "name"] }, "aws"] }, q = { [I]: "getAttr", [J]: [{ [K]: g }, "name"] }, r = { [I]: c, [J]: [{ [K]: "UseFIPS" }, false] }, s = { [N]: [{ [O]: i, [P]: "us-east-1" }] }, t = { [I]: h, [J]: [q, "aws-cn"] }, u = { [N]: [{ [O]: i, [P]: "cn-north-1" }] }, v = { [I]: c, [J]: [{ [K]: "UseDualStack" }, false] }, w = { [I]: h, [J]: [q, "aws-us-gov"] }, x = { "url": "https://iam.us-gov.api.aws", [L]: { [N]: [{ [O]: i, [P]: "us-gov-west-1" }] }, [M]: {} }, y = { "url": "https://iam.us-gov.amazonaws.com", [L]: { [N]: [{ [O]: i, [P]: "us-gov-west-1" }] }, [M]: {} }, z = { [I]: h, [J]: [q, "aws-iso"] }, A = { [N]: [{ [O]: i, [P]: "us-iso-east-1" }] }, B = { [I]: h, [J]: [q, "aws-iso-b"] }, C = { [N]: [{ [O]: i, [P]: "us-isob-east-1" }] }, D = { [I]: "getAttr", [J]: [{ [K]: g }, "supportsFIPS"] }, E = { [I]: c, [J]: [true, { [I]: "getAttr", [J]: [{ [K]: g }, "supportsDualStack"] }] }, F = { [N]: [{ [O]: i, [P]: "{PartitionResult#implicitGlobalRegion}" }] }, G = [{ [K]: "Region" }];
3
3
  const _data = { version: "1.0", parameters: { UseDualStack: j, UseFIPS: j, Endpoint: k, Region: k }, rules: [{ conditions: [{ [I]: b, [J]: [l] }], rules: [{ conditions: [m], error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, { rules: [{ conditions: [n], error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, { endpoint: { url: l, [L]: o, [M]: o }, type: e }], type: f }], type: f }, { rules: [{ conditions: [{ [I]: b, [J]: G }], rules: [{ conditions: [{ [I]: "aws.partition", [J]: G, assign: g }], rules: [{ conditions: [p, r, n], endpoint: { url: "https://iam.global.api.aws", [L]: s, [M]: o }, type: e }, { conditions: [p, m, n], endpoint: { url: "https://iam-fips.global.api.aws", [L]: s, [M]: o }, type: e }, { conditions: [t, r, n], endpoint: { url: "https://iam.global.api.amazonwebservices.com.cn", [L]: u, [M]: o }, type: e }, { conditions: [t, r, v], endpoint: { url: "https://iam.cn-north-1.amazonaws.com.cn", [L]: u, [M]: o }, type: e }, { conditions: [w, r, n], endpoint: x, type: e }, { conditions: [w, m, n], endpoint: x, type: e }, { conditions: [w, r, v], endpoint: y, type: e }, { conditions: [w, m, v], endpoint: y, type: e }, { conditions: [z, r, v], endpoint: { url: "https://iam.us-iso-east-1.c2s.ic.gov", [L]: A, [M]: o }, type: e }, { conditions: [z, m, v], endpoint: { url: "https://iam-fips.us-iso-east-1.c2s.ic.gov", [L]: A, [M]: o }, type: e }, { conditions: [B, r, v], endpoint: { url: "https://iam.us-isob-east-1.sc2s.sgov.gov", [L]: C, [M]: o }, type: e }, { conditions: [B, m, v], endpoint: { url: "https://iam-fips.us-isob-east-1.sc2s.sgov.gov", [L]: C, [M]: o }, type: e }, { conditions: [{ [I]: h, [J]: [q, "aws-iso-e"] }, r, v], endpoint: { url: "https://iam.eu-isoe-west-1.cloud.adc-e.uk", [L]: { [N]: [{ [O]: i, [P]: "eu-isoe-west-1" }] }, [M]: o }, type: e }, { conditions: [{ [I]: h, [J]: [q, "aws-iso-f"] }, r, v], endpoint: { url: "https://iam.us-isof-south-1.csp.hci.ic.gov", [L]: { [N]: [{ [O]: i, [P]: "us-isof-south-1" }] }, [M]: o }, type: e }, { conditions: [{ [I]: h, [J]: [q, "aws-eusc"] }, r, v], endpoint: { url: "https://iam.eusc-de-east-1.amazonaws.eu", [L]: { [N]: [{ [O]: i, [P]: "eusc-de-east-1" }] }, [M]: o }, type: e }, { conditions: [m, n], rules: [{ conditions: [{ [I]: c, [J]: [a, D] }, E], rules: [{ endpoint: { url: "https://iam-fips.{PartitionResult#dualStackDnsSuffix}", [L]: F, [M]: o }, type: e }], type: f }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }], type: f }, { conditions: [m, v], rules: [{ conditions: [{ [I]: c, [J]: [D, a] }], rules: [{ endpoint: { url: "https://iam-fips.{PartitionResult#dnsSuffix}", [L]: F, [M]: o }, type: e }], type: f }, { error: "FIPS is enabled but this partition does not support FIPS", type: d }], type: f }, { conditions: [r, n], rules: [{ conditions: [E], rules: [{ endpoint: { url: "https://iam.{PartitionResult#dualStackDnsSuffix}", [L]: F, [M]: o }, type: e }], type: f }, { error: "DualStack is enabled but this partition does not support DualStack", type: d }], type: f }, { endpoint: { url: "https://iam.{PartitionResult#dnsSuffix}", [L]: F, [M]: o }, type: e }], type: f }], type: f }, { error: "Invalid Configuration: Missing Region", type: d }], type: f }] };
4
4
  export const ruleSet = _data;
@@ -23,6 +23,18 @@ export class AccountNotManagementOrDelegatedAdministratorException extends __Bas
23
23
  this.Message = opts.Message;
24
24
  }
25
25
  }
26
+ export class ConcurrentModificationException extends __BaseException {
27
+ name = "ConcurrentModificationException";
28
+ $fault = "client";
29
+ constructor(opts) {
30
+ super({
31
+ name: "ConcurrentModificationException",
32
+ $fault: "client",
33
+ ...opts,
34
+ });
35
+ Object.setPrototypeOf(this, ConcurrentModificationException.prototype);
36
+ }
37
+ }
26
38
  export class InvalidInputException extends __BaseException {
27
39
  name = "InvalidInputException";
28
40
  $fault = "client";
@@ -155,18 +167,6 @@ export class PasswordPolicyViolationException extends __BaseException {
155
167
  Object.setPrototypeOf(this, PasswordPolicyViolationException.prototype);
156
168
  }
157
169
  }
158
- export class ConcurrentModificationException extends __BaseException {
159
- name = "ConcurrentModificationException";
160
- $fault = "client";
161
- constructor(opts) {
162
- super({
163
- name: "ConcurrentModificationException",
164
- $fault: "client",
165
- ...opts,
166
- });
167
- Object.setPrototypeOf(this, ConcurrentModificationException.prototype);
168
- }
169
- }
170
170
  export class OpenIdIdpCommunicationErrorException extends __BaseException {
171
171
  name = "OpenIdIdpCommunicationErrorException";
172
172
  $fault = "client";
@@ -3554,6 +3554,9 @@ const de_CommandError = async (output, context) => {
3554
3554
  };
3555
3555
  const errorCode = loadQueryErrorCode(output, parsedOutput.body);
3556
3556
  switch (errorCode) {
3557
+ case "ConcurrentModification":
3558
+ case "com.amazonaws.iam#ConcurrentModificationException":
3559
+ throw await de_ConcurrentModificationExceptionRes(parsedOutput, context);
3557
3560
  case "InvalidInput":
3558
3561
  case "com.amazonaws.iam#InvalidInputException":
3559
3562
  throw await de_InvalidInputExceptionRes(parsedOutput, context);
@@ -3584,9 +3587,6 @@ const de_CommandError = async (output, context) => {
3584
3587
  case "PasswordPolicyViolation":
3585
3588
  case "com.amazonaws.iam#PasswordPolicyViolationException":
3586
3589
  throw await de_PasswordPolicyViolationExceptionRes(parsedOutput, context);
3587
- case "ConcurrentModification":
3588
- case "com.amazonaws.iam#ConcurrentModificationException":
3589
- throw await de_ConcurrentModificationExceptionRes(parsedOutput, context);
3590
3590
  case "OpenIdIdpCommunicationError":
3591
3591
  case "com.amazonaws.iam#OpenIdIdpCommunicationErrorException":
3592
3592
  throw await de_OpenIdIdpCommunicationErrorExceptionRes(parsedOutput, context);
@@ -55,6 +55,10 @@ declare const AddClientIDToOpenIDConnectProviderCommand_base: {
55
55
  * @see {@link AddClientIDToOpenIDConnectProviderCommandOutput} for command's `response` shape.
56
56
  * @see {@link IAMClientResolvedConfig | config} for IAMClient's `config` shape.
57
57
  *
58
+ * @throws {@link ConcurrentModificationException} (client fault)
59
+ * <p>The request was rejected because multiple requests to change this object were submitted
60
+ * simultaneously. Wait a few minutes and submit your request again.</p>
61
+ *
58
62
  * @throws {@link InvalidInputException} (client fault)
59
63
  * <p>The request was rejected because an invalid or out-of-range value was supplied for an
60
64
  * input parameter.</p>
@@ -56,6 +56,10 @@ declare const RemoveClientIDFromOpenIDConnectProviderCommand_base: {
56
56
  * @see {@link RemoveClientIDFromOpenIDConnectProviderCommandOutput} for command's `response` shape.
57
57
  * @see {@link IAMClientResolvedConfig | config} for IAMClient's `config` shape.
58
58
  *
59
+ * @throws {@link ConcurrentModificationException} (client fault)
60
+ * <p>The request was rejected because multiple requests to change this object were submitted
61
+ * simultaneously. Wait a few minutes and submit your request again.</p>
62
+ *
59
63
  * @throws {@link InvalidInputException} (client fault)
60
64
  * <p>The request was rejected because an invalid or out-of-range value was supplied for an
61
65
  * input parameter.</p>
@@ -75,6 +75,10 @@ declare const UpdateOpenIDConnectProviderThumbprintCommand_base: {
75
75
  * @see {@link UpdateOpenIDConnectProviderThumbprintCommandOutput} for command's `response` shape.
76
76
  * @see {@link IAMClientResolvedConfig | config} for IAMClient's `config` shape.
77
77
  *
78
+ * @throws {@link ConcurrentModificationException} (client fault)
79
+ * <p>The request was rejected because multiple requests to change this object were submitted
80
+ * simultaneously. Wait a few minutes and submit your request again.</p>
81
+ *
78
82
  * @throws {@link InvalidInputException} (client fault)
79
83
  * <p>The request was rejected because an invalid or out-of-range value was supplied for an
80
84
  * input parameter.</p>
@@ -59,6 +59,10 @@ declare const UpdateSAMLProviderCommand_base: {
59
59
  * @see {@link UpdateSAMLProviderCommandOutput} for command's `response` shape.
60
60
  * @see {@link IAMClientResolvedConfig | config} for IAMClient's `config` shape.
61
61
  *
62
+ * @throws {@link ConcurrentModificationException} (client fault)
63
+ * <p>The request was rejected because multiple requests to change this object were submitted
64
+ * simultaneously. Wait a few minutes and submit your request again.</p>
65
+ *
62
66
  * @throws {@link InvalidInputException} (client fault)
63
67
  * <p>The request was rejected because an invalid or out-of-range value was supplied for an
64
68
  * input parameter.</p>
@@ -247,6 +247,19 @@ export interface AddClientIDToOpenIDConnectProviderRequest {
247
247
  */
248
248
  ClientID: string | undefined;
249
249
  }
250
+ /**
251
+ * <p>The request was rejected because multiple requests to change this object were submitted
252
+ * simultaneously. Wait a few minutes and submit your request again.</p>
253
+ * @public
254
+ */
255
+ export declare class ConcurrentModificationException extends __BaseException {
256
+ readonly name: "ConcurrentModificationException";
257
+ readonly $fault: "client";
258
+ /**
259
+ * @internal
260
+ */
261
+ constructor(opts: __ExceptionOptionType<ConcurrentModificationException, __BaseException>);
262
+ }
250
263
  /**
251
264
  * <p>The request was rejected because an invalid or out-of-range value was supplied for an
252
265
  * input parameter.</p>
@@ -600,19 +613,6 @@ export interface CreateAccessKeyResponse {
600
613
  */
601
614
  AccessKey: AccessKey | undefined;
602
615
  }
603
- /**
604
- * <p>The request was rejected because multiple requests to change this object were submitted
605
- * simultaneously. Wait a few minutes and submit your request again.</p>
606
- * @public
607
- */
608
- export declare class ConcurrentModificationException extends __BaseException {
609
- readonly name: "ConcurrentModificationException";
610
- readonly $fault: "client";
611
- /**
612
- * @internal
613
- */
614
- constructor(opts: __ExceptionOptionType<ConcurrentModificationException, __BaseException>);
615
- }
616
616
  /**
617
617
  * @public
618
618
  */
@@ -53,6 +53,16 @@ export interface AddClientIDToOpenIDConnectProviderRequest {
53
53
  OpenIDConnectProviderArn: string | undefined;
54
54
  ClientID: string | undefined;
55
55
  }
56
+ export declare class ConcurrentModificationException extends __BaseException {
57
+ readonly name: "ConcurrentModificationException";
58
+ readonly $fault: "client";
59
+ constructor(
60
+ opts: __ExceptionOptionType<
61
+ ConcurrentModificationException,
62
+ __BaseException
63
+ >
64
+ );
65
+ }
56
66
  export declare class InvalidInputException extends __BaseException {
57
67
  readonly name: "InvalidInputException";
58
68
  readonly $fault: "client";
@@ -185,16 +195,6 @@ export interface CreateAccessKeyRequest {
185
195
  export interface CreateAccessKeyResponse {
186
196
  AccessKey: AccessKey | undefined;
187
197
  }
188
- export declare class ConcurrentModificationException extends __BaseException {
189
- readonly name: "ConcurrentModificationException";
190
- readonly $fault: "client";
191
- constructor(
192
- opts: __ExceptionOptionType<
193
- ConcurrentModificationException,
194
- __BaseException
195
- >
196
- );
197
- }
198
198
  export interface CreateAccountAliasRequest {
199
199
  AccountAlias: string | undefined;
200
200
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-iam",
3
3
  "description": "AWS SDK for JavaScript Iam Client for Node.js, Browser and React Native",
4
- "version": "3.914.0",
4
+ "version": "3.915.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-iam",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/core",
3
- "version": "3.17.0",
3
+ "version": "3.17.1",
4
4
  "scripts": {
5
5
  "build": "yarn lint && concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline core",
@@ -83,7 +83,7 @@
83
83
  "@smithy/util-base64": "^4.3.0",
84
84
  "@smithy/util-body-length-browser": "^4.2.0",
85
85
  "@smithy/util-middleware": "^4.2.3",
86
- "@smithy/util-stream": "^4.5.3",
86
+ "@smithy/util-stream": "^4.5.4",
87
87
  "@smithy/util-utf8": "^4.2.0",
88
88
  "@smithy/uuid": "^1.1.0",
89
89
  "tslib": "^2.6.2"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/middleware-endpoint",
3
- "version": "4.3.4",
3
+ "version": "4.3.5",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline middleware-endpoint",
@@ -25,7 +25,7 @@
25
25
  "license": "Apache-2.0",
26
26
  "sideEffects": false,
27
27
  "dependencies": {
28
- "@smithy/core": "^3.17.0",
28
+ "@smithy/core": "^3.17.1",
29
29
  "@smithy/middleware-serde": "^4.2.3",
30
30
  "@smithy/node-config-provider": "^4.3.3",
31
31
  "@smithy/shared-ini-file-loader": "^4.3.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/middleware-retry",
3
- "version": "4.4.4",
3
+ "version": "4.4.5",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline middleware-retry",
@@ -37,7 +37,7 @@
37
37
  "@smithy/node-config-provider": "^4.3.3",
38
38
  "@smithy/protocol-http": "^5.3.3",
39
39
  "@smithy/service-error-classification": "^4.2.3",
40
- "@smithy/smithy-client": "^4.9.0",
40
+ "@smithy/smithy-client": "^4.9.1",
41
41
  "@smithy/types": "^4.8.0",
42
42
  "@smithy/util-middleware": "^4.2.3",
43
43
  "@smithy/util-retry": "^4.2.3",
@@ -128,7 +128,7 @@ const setSocketTimeout = (request, reject, timeoutInMs = 0) => {
128
128
  const MIN_WAIT_TIME = 6_000;
129
129
  async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME) {
130
130
  const headers = request.headers ?? {};
131
- const expect = headers["Expect"] || headers["expect"];
131
+ const expect = headers.Expect || headers.expect;
132
132
  let timeoutId = -1;
133
133
  let sendBody = true;
134
134
  if (expect === "100-continue") {
@@ -263,6 +263,7 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf
263
263
  this.config = await this.configProvider;
264
264
  }
265
265
  return new Promise((_resolve, _reject) => {
266
+ const config = this.config;
266
267
  let writeRequestBodyPromise = undefined;
267
268
  const timeouts = [];
268
269
  const resolve = async (arg) => {
@@ -275,9 +276,6 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf
275
276
  timeouts.forEach(timing.clearTimeout);
276
277
  _reject(arg);
277
278
  };
278
- if (!this.config) {
279
- throw new Error("Node HTTP request handler config is not resolved");
280
- }
281
279
  if (abortSignal?.aborted) {
282
280
  const abortError = new Error("Request aborted");
283
281
  abortError.name = "AbortError";
@@ -285,11 +283,18 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf
285
283
  return;
286
284
  }
287
285
  const isSSL = request.protocol === "https:";
288
- const agent = isSSL ? this.config.httpsAgent : this.config.httpAgent;
286
+ const headers = request.headers ?? {};
287
+ const expectContinue = (headers.Expect ?? headers.expect) === "100-continue";
288
+ let agent = isSSL ? config.httpsAgent : config.httpAgent;
289
+ if (expectContinue) {
290
+ agent = new (isSSL ? https.Agent : http.Agent)({
291
+ keepAlive: false,
292
+ maxSockets: Infinity,
293
+ });
294
+ }
289
295
  timeouts.push(timing.setTimeout(() => {
290
- this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, this.config.logger);
291
- }, this.config.socketAcquisitionWarningTimeout ??
292
- (this.config.requestTimeout ?? 2000) + (this.config.connectionTimeout ?? 1000)));
296
+ this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, config.logger);
297
+ }, config.socketAcquisitionWarningTimeout ?? (config.requestTimeout ?? 2000) + (config.connectionTimeout ?? 1000)));
293
298
  const queryString = querystringBuilder.buildQueryString(request.query || {});
294
299
  let auth = undefined;
295
300
  if (request.username != null || request.password != null) {
@@ -354,10 +359,10 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf
354
359
  abortSignal.onabort = onAbort;
355
360
  }
356
361
  }
357
- const effectiveRequestTimeout = requestTimeout ?? this.config.requestTimeout;
358
- timeouts.push(setConnectionTimeout(req, reject, this.config.connectionTimeout));
359
- timeouts.push(setRequestTimeout(req, reject, effectiveRequestTimeout, this.config.throwOnRequestTimeout, this.config.logger ?? console));
360
- timeouts.push(setSocketTimeout(req, reject, this.config.socketTimeout));
362
+ const effectiveRequestTimeout = requestTimeout ?? config.requestTimeout;
363
+ timeouts.push(setConnectionTimeout(req, reject, config.connectionTimeout));
364
+ timeouts.push(setRequestTimeout(req, reject, effectiveRequestTimeout, config.throwOnRequestTimeout, config.logger ?? console));
365
+ timeouts.push(setSocketTimeout(req, reject, config.socketTimeout));
361
366
  const httpAgent = nodeHttpsOptions.agent;
362
367
  if (typeof httpAgent === "object" && "keepAlive" in httpAgent) {
363
368
  timeouts.push(setSocketKeepAlive(req, {
@@ -93,6 +93,7 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf
93
93
  this.config = await this.configProvider;
94
94
  }
95
95
  return new Promise((_resolve, _reject) => {
96
+ const config = this.config;
96
97
  let writeRequestBodyPromise = undefined;
97
98
  const timeouts = [];
98
99
  const resolve = async (arg) => {
@@ -105,9 +106,6 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf
105
106
  timeouts.forEach(timing.clearTimeout);
106
107
  _reject(arg);
107
108
  };
108
- if (!this.config) {
109
- throw new Error("Node HTTP request handler config is not resolved");
110
- }
111
109
  if (abortSignal?.aborted) {
112
110
  const abortError = new Error("Request aborted");
113
111
  abortError.name = "AbortError";
@@ -115,11 +113,18 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf
115
113
  return;
116
114
  }
117
115
  const isSSL = request.protocol === "https:";
118
- const agent = isSSL ? this.config.httpsAgent : this.config.httpAgent;
116
+ const headers = request.headers ?? {};
117
+ const expectContinue = (headers.Expect ?? headers.expect) === "100-continue";
118
+ let agent = isSSL ? config.httpsAgent : config.httpAgent;
119
+ if (expectContinue) {
120
+ agent = new (isSSL ? hsAgent : hAgent)({
121
+ keepAlive: false,
122
+ maxSockets: Infinity,
123
+ });
124
+ }
119
125
  timeouts.push(timing.setTimeout(() => {
120
- this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, this.config.logger);
121
- }, this.config.socketAcquisitionWarningTimeout ??
122
- (this.config.requestTimeout ?? 2000) + (this.config.connectionTimeout ?? 1000)));
126
+ this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, config.logger);
127
+ }, config.socketAcquisitionWarningTimeout ?? (config.requestTimeout ?? 2000) + (config.connectionTimeout ?? 1000)));
123
128
  const queryString = buildQueryString(request.query || {});
124
129
  let auth = undefined;
125
130
  if (request.username != null || request.password != null) {
@@ -184,10 +189,10 @@ or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler conf
184
189
  abortSignal.onabort = onAbort;
185
190
  }
186
191
  }
187
- const effectiveRequestTimeout = requestTimeout ?? this.config.requestTimeout;
188
- timeouts.push(setConnectionTimeout(req, reject, this.config.connectionTimeout));
189
- timeouts.push(setRequestTimeout(req, reject, effectiveRequestTimeout, this.config.throwOnRequestTimeout, this.config.logger ?? console));
190
- timeouts.push(setSocketTimeout(req, reject, this.config.socketTimeout));
192
+ const effectiveRequestTimeout = requestTimeout ?? config.requestTimeout;
193
+ timeouts.push(setConnectionTimeout(req, reject, config.connectionTimeout));
194
+ timeouts.push(setRequestTimeout(req, reject, effectiveRequestTimeout, config.throwOnRequestTimeout, config.logger ?? console));
195
+ timeouts.push(setSocketTimeout(req, reject, config.socketTimeout));
191
196
  const httpAgent = nodeHttpsOptions.agent;
192
197
  if (typeof httpAgent === "object" && "keepAlive" in httpAgent) {
193
198
  timeouts.push(setSocketKeepAlive(req, {
@@ -3,7 +3,7 @@ import { timing } from "./timing";
3
3
  const MIN_WAIT_TIME = 6_000;
4
4
  export async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME) {
5
5
  const headers = request.headers ?? {};
6
- const expect = headers["Expect"] || headers["expect"];
6
+ const expect = headers.Expect || headers.expect;
7
7
  let timeoutId = -1;
8
8
  let sendBody = true;
9
9
  if (expect === "100-continue") {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/node-http-handler",
3
- "version": "4.4.2",
3
+ "version": "4.4.3",
4
4
  "description": "Provides a way to make requests",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/smithy-client",
3
- "version": "4.9.0",
3
+ "version": "4.9.1",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline smithy-client",
@@ -25,12 +25,12 @@
25
25
  "license": "Apache-2.0",
26
26
  "sideEffects": false,
27
27
  "dependencies": {
28
- "@smithy/core": "^3.17.0",
29
- "@smithy/middleware-endpoint": "^4.3.4",
28
+ "@smithy/core": "^3.17.1",
29
+ "@smithy/middleware-endpoint": "^4.3.5",
30
30
  "@smithy/middleware-stack": "^4.2.3",
31
31
  "@smithy/protocol-http": "^5.3.3",
32
32
  "@smithy/types": "^4.8.0",
33
- "@smithy/util-stream": "^4.5.3",
33
+ "@smithy/util-stream": "^4.5.4",
34
34
  "tslib": "^2.6.2"
35
35
  },
36
36
  "engines": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-defaults-mode-browser",
3
- "version": "4.3.3",
3
+ "version": "4.3.4",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline util-defaults-mode-browser",
@@ -25,7 +25,7 @@
25
25
  "sideEffects": false,
26
26
  "dependencies": {
27
27
  "@smithy/property-provider": "^4.2.3",
28
- "@smithy/smithy-client": "^4.9.0",
28
+ "@smithy/smithy-client": "^4.9.1",
29
29
  "@smithy/types": "^4.8.0",
30
30
  "tslib": "^2.6.2"
31
31
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-defaults-mode-node",
3
- "version": "4.2.5",
3
+ "version": "4.2.6",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline util-defaults-mode-node",
@@ -28,7 +28,7 @@
28
28
  "@smithy/credential-provider-imds": "^4.2.3",
29
29
  "@smithy/node-config-provider": "^4.3.3",
30
30
  "@smithy/property-provider": "^4.2.3",
31
- "@smithy/smithy-client": "^4.9.0",
31
+ "@smithy/smithy-client": "^4.9.1",
32
32
  "@smithy/types": "^4.8.0",
33
33
  "tslib": "^2.6.2"
34
34
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-stream",
3
- "version": "4.5.3",
3
+ "version": "4.5.4",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline util-stream",
@@ -30,7 +30,7 @@
30
30
  "sideEffects": false,
31
31
  "dependencies": {
32
32
  "@smithy/fetch-http-handler": "^5.3.4",
33
- "@smithy/node-http-handler": "^4.4.2",
33
+ "@smithy/node-http-handler": "^4.4.3",
34
34
  "@smithy/types": "^4.8.0",
35
35
  "@smithy/util-base64": "^4.3.0",
36
36
  "@smithy/util-buffer-from": "^4.2.0",
package/package.json CHANGED
@@ -55,9 +55,9 @@
55
55
  "jest": "^29.7.0",
56
56
  "jest-junit": "^16",
57
57
  "jsii": "~5.8.0",
58
- "jsii-diff": "^1.116.0",
58
+ "jsii-diff": "^1.117.0",
59
59
  "jsii-docgen": "^10.5.0",
60
- "jsii-pacmak": "^1.116.0",
60
+ "jsii-pacmak": "^1.117.0",
61
61
  "jsii-rosetta": "~5.8.0",
62
62
  "projen": "^0.98.3",
63
63
  "ts-jest": "^29.4.5",
@@ -69,7 +69,7 @@
69
69
  "constructs": "^10.0.5"
70
70
  },
71
71
  "dependencies": {
72
- "@aws-sdk/client-iam": "^3.914.0",
72
+ "@aws-sdk/client-iam": "^3.915.0",
73
73
  "axios": "^1.8.2",
74
74
  "constructs": "^10.4.2",
75
75
  "jsonc-parser": "^3.3.1"
@@ -101,7 +101,7 @@
101
101
  "publishConfig": {
102
102
  "access": "public"
103
103
  },
104
- "version": "0.0.64",
104
+ "version": "0.0.65",
105
105
  "jest": {
106
106
  "coverageProvider": "v8",
107
107
  "testMatch": [