@pwrdrvr/microapps-cdk 1.2.0-beta.7 → 1.2.0-beta.8

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.
package/API.md CHANGED
@@ -57,6 +57,7 @@ new MicroApps(scope: Construct, id: string, props?: MicroAppsProps)
57
57
  | **Name** | **Description** |
58
58
  | --- | --- |
59
59
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroApps.toString">toString</a></code> | Returns a string representation of this construct. |
60
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroApps.with">with</a></code> | Applies one or more mixins to this construct. |
60
61
 
61
62
  ---
62
63
 
@@ -68,6 +69,27 @@ public toString(): string
68
69
 
69
70
  Returns a string representation of this construct.
70
71
 
72
+ ##### `with` <a name="with" id="@pwrdrvr/microapps-cdk.MicroApps.with"></a>
73
+
74
+ ```typescript
75
+ public with(mixins: ...IMixin[]): IConstruct
76
+ ```
77
+
78
+ Applies one or more mixins to this construct.
79
+
80
+ Mixins are applied in order. The list of constructs is captured at the
81
+ start of the call, so constructs added by a mixin will not be visited.
82
+ Use multiple `with()` calls if subsequent mixins should apply to added
83
+ constructs.
84
+
85
+ ###### `mixins`<sup>Required</sup> <a name="mixins" id="@pwrdrvr/microapps-cdk.MicroApps.with.parameter.mixins"></a>
86
+
87
+ - *Type:* ...constructs.IMixin[]
88
+
89
+ The mixins to apply.
90
+
91
+ ---
92
+
71
93
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
72
94
 
73
95
  | **Name** | **Description** |
@@ -76,7 +98,7 @@ Returns a string representation of this construct.
76
98
 
77
99
  ---
78
100
 
79
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroApps.isConstruct"></a>
101
+ ##### `isConstruct` <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroApps.isConstruct"></a>
80
102
 
81
103
  ```typescript
82
104
  import { MicroApps } from '@pwrdrvr/microapps-cdk'
@@ -86,6 +108,20 @@ MicroApps.isConstruct(x: any)
86
108
 
87
109
  Checks if `x` is a construct.
88
110
 
111
+ Use this method instead of `instanceof` to properly detect `Construct`
112
+ instances, even when the construct library is symlinked.
113
+
114
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
115
+ disk are seen as independent, completely different libraries. As a
116
+ consequence, the class `Construct` in each copy of the `constructs` library
117
+ is seen as a different class, and an instance of one class will not test as
118
+ `instanceof` the other class. `npm install` will not create installations
119
+ like this, but users may manually symlink construct libraries together or
120
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
121
+ library can be accidentally installed, and `instanceof` will behave
122
+ unpredictably. It is safest to avoid using `instanceof`, and using
123
+ this type-testing method instead.
124
+
89
125
  ###### `x`<sup>Required</sup> <a name="x" id="@pwrdrvr/microapps-cdk.MicroApps.isConstruct.parameter.x"></a>
90
126
 
91
127
  - *Type:* any
@@ -212,6 +248,7 @@ new MicroAppsCF(scope: Construct, id: string, props: MicroAppsCFProps)
212
248
  | **Name** | **Description** |
213
249
  | --- | --- |
214
250
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsCF.toString">toString</a></code> | Returns a string representation of this construct. |
251
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsCF.with">with</a></code> | Applies one or more mixins to this construct. |
215
252
 
216
253
  ---
217
254
 
@@ -223,6 +260,27 @@ public toString(): string
223
260
 
224
261
  Returns a string representation of this construct.
225
262
 
263
+ ##### `with` <a name="with" id="@pwrdrvr/microapps-cdk.MicroAppsCF.with"></a>
264
+
265
+ ```typescript
266
+ public with(mixins: ...IMixin[]): IConstruct
267
+ ```
268
+
269
+ Applies one or more mixins to this construct.
270
+
271
+ Mixins are applied in order. The list of constructs is captured at the
272
+ start of the call, so constructs added by a mixin will not be visited.
273
+ Use multiple `with()` calls if subsequent mixins should apply to added
274
+ constructs.
275
+
276
+ ###### `mixins`<sup>Required</sup> <a name="mixins" id="@pwrdrvr/microapps-cdk.MicroAppsCF.with.parameter.mixins"></a>
277
+
278
+ - *Type:* ...constructs.IMixin[]
279
+
280
+ The mixins to apply.
281
+
282
+ ---
283
+
226
284
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
227
285
 
228
286
  | **Name** | **Description** |
@@ -233,7 +291,7 @@ Returns a string representation of this construct.
233
291
 
234
292
  ---
235
293
 
236
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsCF.isConstruct"></a>
294
+ ##### `isConstruct` <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsCF.isConstruct"></a>
237
295
 
238
296
  ```typescript
239
297
  import { MicroAppsCF } from '@pwrdrvr/microapps-cdk'
@@ -243,6 +301,20 @@ MicroAppsCF.isConstruct(x: any)
243
301
 
244
302
  Checks if `x` is a construct.
245
303
 
304
+ Use this method instead of `instanceof` to properly detect `Construct`
305
+ instances, even when the construct library is symlinked.
306
+
307
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
308
+ disk are seen as independent, completely different libraries. As a
309
+ consequence, the class `Construct` in each copy of the `constructs` library
310
+ is seen as a different class, and an instance of one class will not test as
311
+ `instanceof` the other class. `npm install` will not create installations
312
+ like this, but users may manually symlink construct libraries together or
313
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
314
+ library can be accidentally installed, and `instanceof` will behave
315
+ unpredictably. It is safest to avoid using `instanceof`, and using
316
+ this type-testing method instead.
317
+
246
318
  ###### `x`<sup>Required</sup> <a name="x" id="@pwrdrvr/microapps-cdk.MicroAppsCF.isConstruct.parameter.x"></a>
247
319
 
248
320
  - *Type:* any
@@ -381,6 +453,7 @@ new MicroAppsChildDeployer(scope: Construct, id: string, props?: MicroAppsChildD
381
453
  | **Name** | **Description** |
382
454
  | --- | --- |
383
455
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsChildDeployer.toString">toString</a></code> | Returns a string representation of this construct. |
456
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsChildDeployer.with">with</a></code> | Applies one or more mixins to this construct. |
384
457
 
385
458
  ---
386
459
 
@@ -392,6 +465,27 @@ public toString(): string
392
465
 
393
466
  Returns a string representation of this construct.
394
467
 
468
+ ##### `with` <a name="with" id="@pwrdrvr/microapps-cdk.MicroAppsChildDeployer.with"></a>
469
+
470
+ ```typescript
471
+ public with(mixins: ...IMixin[]): IConstruct
472
+ ```
473
+
474
+ Applies one or more mixins to this construct.
475
+
476
+ Mixins are applied in order. The list of constructs is captured at the
477
+ start of the call, so constructs added by a mixin will not be visited.
478
+ Use multiple `with()` calls if subsequent mixins should apply to added
479
+ constructs.
480
+
481
+ ###### `mixins`<sup>Required</sup> <a name="mixins" id="@pwrdrvr/microapps-cdk.MicroAppsChildDeployer.with.parameter.mixins"></a>
482
+
483
+ - *Type:* ...constructs.IMixin[]
484
+
485
+ The mixins to apply.
486
+
487
+ ---
488
+
395
489
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
396
490
 
397
491
  | **Name** | **Description** |
@@ -400,7 +494,7 @@ Returns a string representation of this construct.
400
494
 
401
495
  ---
402
496
 
403
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsChildDeployer.isConstruct"></a>
497
+ ##### `isConstruct` <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsChildDeployer.isConstruct"></a>
404
498
 
405
499
  ```typescript
406
500
  import { MicroAppsChildDeployer } from '@pwrdrvr/microapps-cdk'
@@ -410,6 +504,20 @@ MicroAppsChildDeployer.isConstruct(x: any)
410
504
 
411
505
  Checks if `x` is a construct.
412
506
 
507
+ Use this method instead of `instanceof` to properly detect `Construct`
508
+ instances, even when the construct library is symlinked.
509
+
510
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
511
+ disk are seen as independent, completely different libraries. As a
512
+ consequence, the class `Construct` in each copy of the `constructs` library
513
+ is seen as a different class, and an instance of one class will not test as
514
+ `instanceof` the other class. `npm install` will not create installations
515
+ like this, but users may manually symlink construct libraries together or
516
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
517
+ library can be accidentally installed, and `instanceof` will behave
518
+ unpredictably. It is safest to avoid using `instanceof`, and using
519
+ this type-testing method instead.
520
+
413
521
  ###### `x`<sup>Required</sup> <a name="x" id="@pwrdrvr/microapps-cdk.MicroAppsChildDeployer.isConstruct.parameter.x"></a>
414
522
 
415
523
  - *Type:* any
@@ -497,6 +605,7 @@ new MicroAppsEdgeToOrigin(scope: Construct, id: string, props: MicroAppsEdgeToOr
497
605
  | **Name** | **Description** |
498
606
  | --- | --- |
499
607
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsEdgeToOrigin.toString">toString</a></code> | Returns a string representation of this construct. |
608
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsEdgeToOrigin.with">with</a></code> | Applies one or more mixins to this construct. |
500
609
 
501
610
  ---
502
611
 
@@ -508,6 +617,27 @@ public toString(): string
508
617
 
509
618
  Returns a string representation of this construct.
510
619
 
620
+ ##### `with` <a name="with" id="@pwrdrvr/microapps-cdk.MicroAppsEdgeToOrigin.with"></a>
621
+
622
+ ```typescript
623
+ public with(mixins: ...IMixin[]): IConstruct
624
+ ```
625
+
626
+ Applies one or more mixins to this construct.
627
+
628
+ Mixins are applied in order. The list of constructs is captured at the
629
+ start of the call, so constructs added by a mixin will not be visited.
630
+ Use multiple `with()` calls if subsequent mixins should apply to added
631
+ constructs.
632
+
633
+ ###### `mixins`<sup>Required</sup> <a name="mixins" id="@pwrdrvr/microapps-cdk.MicroAppsEdgeToOrigin.with.parameter.mixins"></a>
634
+
635
+ - *Type:* ...constructs.IMixin[]
636
+
637
+ The mixins to apply.
638
+
639
+ ---
640
+
511
641
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
512
642
 
513
643
  | **Name** | **Description** |
@@ -517,7 +647,7 @@ Returns a string representation of this construct.
517
647
 
518
648
  ---
519
649
 
520
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsEdgeToOrigin.isConstruct"></a>
650
+ ##### `isConstruct` <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsEdgeToOrigin.isConstruct"></a>
521
651
 
522
652
  ```typescript
523
653
  import { MicroAppsEdgeToOrigin } from '@pwrdrvr/microapps-cdk'
@@ -527,6 +657,20 @@ MicroAppsEdgeToOrigin.isConstruct(x: any)
527
657
 
528
658
  Checks if `x` is a construct.
529
659
 
660
+ Use this method instead of `instanceof` to properly detect `Construct`
661
+ instances, even when the construct library is symlinked.
662
+
663
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
664
+ disk are seen as independent, completely different libraries. As a
665
+ consequence, the class `Construct` in each copy of the `constructs` library
666
+ is seen as a different class, and an instance of one class will not test as
667
+ `instanceof` the other class. `npm install` will not create installations
668
+ like this, but users may manually symlink construct libraries together or
669
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
670
+ library can be accidentally installed, and `instanceof` will behave
671
+ unpredictably. It is safest to avoid using `instanceof`, and using
672
+ this type-testing method instead.
673
+
530
674
  ###### `x`<sup>Required</sup> <a name="x" id="@pwrdrvr/microapps-cdk.MicroAppsEdgeToOrigin.isConstruct.parameter.x"></a>
531
675
 
532
676
  - *Type:* any
@@ -661,6 +805,7 @@ new MicroAppsS3(scope: Construct, id: string, props?: MicroAppsS3Props)
661
805
  | **Name** | **Description** |
662
806
  | --- | --- |
663
807
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.toString">toString</a></code> | Returns a string representation of this construct. |
808
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.with">with</a></code> | Applies one or more mixins to this construct. |
664
809
 
665
810
  ---
666
811
 
@@ -672,6 +817,27 @@ public toString(): string
672
817
 
673
818
  Returns a string representation of this construct.
674
819
 
820
+ ##### `with` <a name="with" id="@pwrdrvr/microapps-cdk.MicroAppsS3.with"></a>
821
+
822
+ ```typescript
823
+ public with(mixins: ...IMixin[]): IConstruct
824
+ ```
825
+
826
+ Applies one or more mixins to this construct.
827
+
828
+ Mixins are applied in order. The list of constructs is captured at the
829
+ start of the call, so constructs added by a mixin will not be visited.
830
+ Use multiple `with()` calls if subsequent mixins should apply to added
831
+ constructs.
832
+
833
+ ###### `mixins`<sup>Required</sup> <a name="mixins" id="@pwrdrvr/microapps-cdk.MicroAppsS3.with.parameter.mixins"></a>
834
+
835
+ - *Type:* ...constructs.IMixin[]
836
+
837
+ The mixins to apply.
838
+
839
+ ---
840
+
675
841
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
676
842
 
677
843
  | **Name** | **Description** |
@@ -680,7 +846,7 @@ Returns a string representation of this construct.
680
846
 
681
847
  ---
682
848
 
683
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsS3.isConstruct"></a>
849
+ ##### `isConstruct` <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsS3.isConstruct"></a>
684
850
 
685
851
  ```typescript
686
852
  import { MicroAppsS3 } from '@pwrdrvr/microapps-cdk'
@@ -690,6 +856,20 @@ MicroAppsS3.isConstruct(x: any)
690
856
 
691
857
  Checks if `x` is a construct.
692
858
 
859
+ Use this method instead of `instanceof` to properly detect `Construct`
860
+ instances, even when the construct library is symlinked.
861
+
862
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
863
+ disk are seen as independent, completely different libraries. As a
864
+ consequence, the class `Construct` in each copy of the `constructs` library
865
+ is seen as a different class, and an instance of one class will not test as
866
+ `instanceof` the other class. `npm install` will not create installations
867
+ like this, but users may manually symlink construct libraries together or
868
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
869
+ library can be accidentally installed, and `instanceof` will behave
870
+ unpredictably. It is safest to avoid using `instanceof`, and using
871
+ this type-testing method instead.
872
+
693
873
  ###### `x`<sup>Required</sup> <a name="x" id="@pwrdrvr/microapps-cdk.MicroAppsS3.isConstruct.parameter.x"></a>
694
874
 
695
875
  - *Type:* any
@@ -705,8 +885,8 @@ Any object.
705
885
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
706
886
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketApps">bucketApps</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | S3 bucket for deployed applications. |
707
887
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketAppsOAI">bucketAppsOAI</a></code> | <code>aws-cdk-lib.aws_cloudfront.OriginAccessIdentity</code> | CloudFront Origin Access Identity for the deployed applications bucket. |
708
- | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketAppsOriginApp">bucketAppsOriginApp</a></code> | <code>aws-cdk-lib.aws_cloudfront_origins.S3Origin</code> | CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: app` so the OriginRequest function knows to send the request to the application origin first, if configured for a particular application. |
709
- | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketAppsOriginS3">bucketAppsOriginS3</a></code> | <code>aws-cdk-lib.aws_cloudfront_origins.S3Origin</code> | CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: s3` so the OriginRequest function knows to NOT send the request to the application origin and instead let it fall through to the S3 bucket. |
888
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketAppsOriginApp">bucketAppsOriginApp</a></code> | <code>aws-cdk-lib.aws_cloudfront.IOrigin</code> | CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: app` so the OriginRequest function knows to send the request to the application origin first, if configured for a particular application. |
889
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketAppsOriginS3">bucketAppsOriginS3</a></code> | <code>aws-cdk-lib.aws_cloudfront.IOrigin</code> | CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: s3` so the OriginRequest function knows to NOT send the request to the application origin and instead let it fall through to the S3 bucket. |
710
890
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketAppsStaging">bucketAppsStaging</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | S3 bucket for staged applications (prior to deploy). |
711
891
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketLogs">bucketLogs</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | S3 bucket for CloudFront logs. |
712
892
 
@@ -751,10 +931,10 @@ CloudFront Origin Access Identity for the deployed applications bucket.
751
931
  ##### `bucketAppsOriginApp`<sup>Required</sup> <a name="bucketAppsOriginApp" id="@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketAppsOriginApp"></a>
752
932
 
753
933
  ```typescript
754
- public readonly bucketAppsOriginApp: S3Origin;
934
+ public readonly bucketAppsOriginApp: IOrigin;
755
935
  ```
756
936
 
757
- - *Type:* aws-cdk-lib.aws_cloudfront_origins.S3Origin
937
+ - *Type:* aws-cdk-lib.aws_cloudfront.IOrigin
758
938
 
759
939
  CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: app` so the OriginRequest function knows to send the request to the application origin first, if configured for a particular application.
760
940
 
@@ -763,10 +943,10 @@ CloudFront Origin for the deployed applications bucket Marked with `x-microapps-
763
943
  ##### `bucketAppsOriginS3`<sup>Required</sup> <a name="bucketAppsOriginS3" id="@pwrdrvr/microapps-cdk.MicroAppsS3.property.bucketAppsOriginS3"></a>
764
944
 
765
945
  ```typescript
766
- public readonly bucketAppsOriginS3: S3Origin;
946
+ public readonly bucketAppsOriginS3: IOrigin;
767
947
  ```
768
948
 
769
- - *Type:* aws-cdk-lib.aws_cloudfront_origins.S3Origin
949
+ - *Type:* aws-cdk-lib.aws_cloudfront.IOrigin
770
950
 
771
951
  CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: s3` so the OriginRequest function knows to NOT send the request to the application origin and instead let it fall through to the S3 bucket.
772
952
 
@@ -842,6 +1022,7 @@ new MicroAppsSvcs(scope: Construct, id: string, props?: MicroAppsSvcsProps)
842
1022
  | **Name** | **Description** |
843
1023
  | --- | --- |
844
1024
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsSvcs.toString">toString</a></code> | Returns a string representation of this construct. |
1025
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsSvcs.with">with</a></code> | Applies one or more mixins to this construct. |
845
1026
 
846
1027
  ---
847
1028
 
@@ -853,6 +1034,27 @@ public toString(): string
853
1034
 
854
1035
  Returns a string representation of this construct.
855
1036
 
1037
+ ##### `with` <a name="with" id="@pwrdrvr/microapps-cdk.MicroAppsSvcs.with"></a>
1038
+
1039
+ ```typescript
1040
+ public with(mixins: ...IMixin[]): IConstruct
1041
+ ```
1042
+
1043
+ Applies one or more mixins to this construct.
1044
+
1045
+ Mixins are applied in order. The list of constructs is captured at the
1046
+ start of the call, so constructs added by a mixin will not be visited.
1047
+ Use multiple `with()` calls if subsequent mixins should apply to added
1048
+ constructs.
1049
+
1050
+ ###### `mixins`<sup>Required</sup> <a name="mixins" id="@pwrdrvr/microapps-cdk.MicroAppsSvcs.with.parameter.mixins"></a>
1051
+
1052
+ - *Type:* ...constructs.IMixin[]
1053
+
1054
+ The mixins to apply.
1055
+
1056
+ ---
1057
+
856
1058
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
857
1059
 
858
1060
  | **Name** | **Description** |
@@ -861,7 +1063,7 @@ Returns a string representation of this construct.
861
1063
 
862
1064
  ---
863
1065
 
864
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsSvcs.isConstruct"></a>
1066
+ ##### `isConstruct` <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsSvcs.isConstruct"></a>
865
1067
 
866
1068
  ```typescript
867
1069
  import { MicroAppsSvcs } from '@pwrdrvr/microapps-cdk'
@@ -871,6 +1073,20 @@ MicroAppsSvcs.isConstruct(x: any)
871
1073
 
872
1074
  Checks if `x` is a construct.
873
1075
 
1076
+ Use this method instead of `instanceof` to properly detect `Construct`
1077
+ instances, even when the construct library is symlinked.
1078
+
1079
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
1080
+ disk are seen as independent, completely different libraries. As a
1081
+ consequence, the class `Construct` in each copy of the `constructs` library
1082
+ is seen as a different class, and an instance of one class will not test as
1083
+ `instanceof` the other class. `npm install` will not create installations
1084
+ like this, but users may manually symlink construct libraries together or
1085
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
1086
+ library can be accidentally installed, and `instanceof` will behave
1087
+ unpredictably. It is safest to avoid using `instanceof`, and using
1088
+ this type-testing method instead.
1089
+
874
1090
  ###### `x`<sup>Required</sup> <a name="x" id="@pwrdrvr/microapps-cdk.MicroAppsSvcs.isConstruct.parameter.x"></a>
875
1091
 
876
1092
  - *Type:* any
@@ -984,6 +1200,7 @@ new MicroAppsTable(scope: Construct, id: string, props?: MicroAppsTableProps)
984
1200
  | **Name** | **Description** |
985
1201
  | --- | --- |
986
1202
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsTable.toString">toString</a></code> | Returns a string representation of this construct. |
1203
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsTable.with">with</a></code> | Applies one or more mixins to this construct. |
987
1204
 
988
1205
  ---
989
1206
 
@@ -995,6 +1212,27 @@ public toString(): string
995
1212
 
996
1213
  Returns a string representation of this construct.
997
1214
 
1215
+ ##### `with` <a name="with" id="@pwrdrvr/microapps-cdk.MicroAppsTable.with"></a>
1216
+
1217
+ ```typescript
1218
+ public with(mixins: ...IMixin[]): IConstruct
1219
+ ```
1220
+
1221
+ Applies one or more mixins to this construct.
1222
+
1223
+ Mixins are applied in order. The list of constructs is captured at the
1224
+ start of the call, so constructs added by a mixin will not be visited.
1225
+ Use multiple `with()` calls if subsequent mixins should apply to added
1226
+ constructs.
1227
+
1228
+ ###### `mixins`<sup>Required</sup> <a name="mixins" id="@pwrdrvr/microapps-cdk.MicroAppsTable.with.parameter.mixins"></a>
1229
+
1230
+ - *Type:* ...constructs.IMixin[]
1231
+
1232
+ The mixins to apply.
1233
+
1234
+ ---
1235
+
998
1236
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
999
1237
 
1000
1238
  | **Name** | **Description** |
@@ -1003,7 +1241,7 @@ Returns a string representation of this construct.
1003
1241
 
1004
1242
  ---
1005
1243
 
1006
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsTable.isConstruct"></a>
1244
+ ##### `isConstruct` <a name="isConstruct" id="@pwrdrvr/microapps-cdk.MicroAppsTable.isConstruct"></a>
1007
1245
 
1008
1246
  ```typescript
1009
1247
  import { MicroAppsTable } from '@pwrdrvr/microapps-cdk'
@@ -1013,6 +1251,20 @@ MicroAppsTable.isConstruct(x: any)
1013
1251
 
1014
1252
  Checks if `x` is a construct.
1015
1253
 
1254
+ Use this method instead of `instanceof` to properly detect `Construct`
1255
+ instances, even when the construct library is symlinked.
1256
+
1257
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
1258
+ disk are seen as independent, completely different libraries. As a
1259
+ consequence, the class `Construct` in each copy of the `constructs` library
1260
+ is seen as a different class, and an instance of one class will not test as
1261
+ `instanceof` the other class. `npm install` will not create installations
1262
+ like this, but users may manually symlink construct libraries together or
1263
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
1264
+ library can be accidentally installed, and `instanceof` will behave
1265
+ unpredictably. It is safest to avoid using `instanceof`, and using
1266
+ this type-testing method instead.
1267
+
1016
1268
  ###### `x`<sup>Required</sup> <a name="x" id="@pwrdrvr/microapps-cdk.MicroAppsTable.isConstruct.parameter.x"></a>
1017
1269
 
1018
1270
  - *Type:* any
@@ -1375,8 +1627,8 @@ const microAppsCFProps: MicroAppsCFProps = { ... }
1375
1627
 
1376
1628
  | **Name** | **Type** | **Description** |
1377
1629
  | --- | --- | --- |
1378
- | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsCFProps.property.bucketAppsOriginApp">bucketAppsOriginApp</a></code> | <code>aws-cdk-lib.aws_cloudfront_origins.S3Origin</code> | S3 bucket origin for deployed applications Marked with `x-microapps-origin: app`. |
1379
- | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsCFProps.property.bucketAppsOriginS3">bucketAppsOriginS3</a></code> | <code>aws-cdk-lib.aws_cloudfront_origins.S3Origin</code> | S3 bucket origin for deployed applications Marked with `x-microapps-origin: s3`. |
1630
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsCFProps.property.bucketAppsOriginApp">bucketAppsOriginApp</a></code> | <code>aws-cdk-lib.aws_cloudfront.IOrigin</code> | S3 bucket origin for deployed applications Marked with `x-microapps-origin: app`. |
1631
+ | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsCFProps.property.bucketAppsOriginS3">bucketAppsOriginS3</a></code> | <code>aws-cdk-lib.aws_cloudfront.IOrigin</code> | S3 bucket origin for deployed applications Marked with `x-microapps-origin: s3`. |
1380
1632
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsCFProps.property.assetNameRoot">assetNameRoot</a></code> | <code>string</code> | Optional asset name root. |
1381
1633
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsCFProps.property.assetNameSuffix">assetNameSuffix</a></code> | <code>string</code> | Optional asset name suffix. |
1382
1634
  | <code><a href="#@pwrdrvr/microapps-cdk.MicroAppsCFProps.property.bucketLogs">bucketLogs</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | S3 bucket for CloudFront logs. |
@@ -1396,10 +1648,10 @@ const microAppsCFProps: MicroAppsCFProps = { ... }
1396
1648
  ##### `bucketAppsOriginApp`<sup>Required</sup> <a name="bucketAppsOriginApp" id="@pwrdrvr/microapps-cdk.MicroAppsCFProps.property.bucketAppsOriginApp"></a>
1397
1649
 
1398
1650
  ```typescript
1399
- public readonly bucketAppsOriginApp: S3Origin;
1651
+ public readonly bucketAppsOriginApp: IOrigin;
1400
1652
  ```
1401
1653
 
1402
- - *Type:* aws-cdk-lib.aws_cloudfront_origins.S3Origin
1654
+ - *Type:* aws-cdk-lib.aws_cloudfront.IOrigin
1403
1655
 
1404
1656
  S3 bucket origin for deployed applications Marked with `x-microapps-origin: app`.
1405
1657
 
@@ -1408,10 +1660,10 @@ S3 bucket origin for deployed applications Marked with `x-microapps-origin: app`
1408
1660
  ##### `bucketAppsOriginS3`<sup>Required</sup> <a name="bucketAppsOriginS3" id="@pwrdrvr/microapps-cdk.MicroAppsCFProps.property.bucketAppsOriginS3"></a>
1409
1661
 
1410
1662
  ```typescript
1411
- public readonly bucketAppsOriginS3: S3Origin;
1663
+ public readonly bucketAppsOriginS3: IOrigin;
1412
1664
  ```
1413
1665
 
1414
- - *Type:* aws-cdk-lib.aws_cloudfront_origins.S3Origin
1666
+ - *Type:* aws-cdk-lib.aws_cloudfront.IOrigin
1415
1667
 
1416
1668
  S3 bucket origin for deployed applications Marked with `x-microapps-origin: s3`.
1417
1669
 
@@ -3247,8 +3499,8 @@ Represents a MicroApps S3.
3247
3499
  | --- | --- | --- |
3248
3500
  | <code><a href="#@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketApps">bucketApps</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | S3 bucket for deployed applications. |
3249
3501
  | <code><a href="#@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketAppsOAI">bucketAppsOAI</a></code> | <code>aws-cdk-lib.aws_cloudfront.OriginAccessIdentity</code> | CloudFront Origin Access Identity for the deployed applications bucket. |
3250
- | <code><a href="#@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketAppsOriginApp">bucketAppsOriginApp</a></code> | <code>aws-cdk-lib.aws_cloudfront_origins.S3Origin</code> | CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: app` so the OriginRequest function knows to send the request to the application origin first, if configured for a particular application. |
3251
- | <code><a href="#@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketAppsOriginS3">bucketAppsOriginS3</a></code> | <code>aws-cdk-lib.aws_cloudfront_origins.S3Origin</code> | CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: s3` so the OriginRequest function knows to NOT send the request to the application origin and instead let it fall through to the S3 bucket. |
3502
+ | <code><a href="#@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketAppsOriginApp">bucketAppsOriginApp</a></code> | <code>aws-cdk-lib.aws_cloudfront.IOrigin</code> | CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: app` so the OriginRequest function knows to send the request to the application origin first, if configured for a particular application. |
3503
+ | <code><a href="#@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketAppsOriginS3">bucketAppsOriginS3</a></code> | <code>aws-cdk-lib.aws_cloudfront.IOrigin</code> | CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: s3` so the OriginRequest function knows to NOT send the request to the application origin and instead let it fall through to the S3 bucket. |
3252
3504
  | <code><a href="#@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketAppsStaging">bucketAppsStaging</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | S3 bucket for staged applications (prior to deploy). |
3253
3505
  | <code><a href="#@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketLogs">bucketLogs</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | S3 bucket for CloudFront logs. |
3254
3506
 
@@ -3281,10 +3533,10 @@ CloudFront Origin Access Identity for the deployed applications bucket.
3281
3533
  ##### `bucketAppsOriginApp`<sup>Required</sup> <a name="bucketAppsOriginApp" id="@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketAppsOriginApp"></a>
3282
3534
 
3283
3535
  ```typescript
3284
- public readonly bucketAppsOriginApp: S3Origin;
3536
+ public readonly bucketAppsOriginApp: IOrigin;
3285
3537
  ```
3286
3538
 
3287
- - *Type:* aws-cdk-lib.aws_cloudfront_origins.S3Origin
3539
+ - *Type:* aws-cdk-lib.aws_cloudfront.IOrigin
3288
3540
 
3289
3541
  CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: app` so the OriginRequest function knows to send the request to the application origin first, if configured for a particular application.
3290
3542
 
@@ -3293,10 +3545,10 @@ CloudFront Origin for the deployed applications bucket Marked with `x-microapps-
3293
3545
  ##### `bucketAppsOriginS3`<sup>Required</sup> <a name="bucketAppsOriginS3" id="@pwrdrvr/microapps-cdk.IMicroAppsS3.property.bucketAppsOriginS3"></a>
3294
3546
 
3295
3547
  ```typescript
3296
- public readonly bucketAppsOriginS3: S3Origin;
3548
+ public readonly bucketAppsOriginS3: IOrigin;
3297
3549
  ```
3298
3550
 
3299
- - *Type:* aws-cdk-lib.aws_cloudfront_origins.S3Origin
3551
+ - *Type:* aws-cdk-lib.aws_cloudfront.IOrigin
3300
3552
 
3301
3553
  CloudFront Origin for the deployed applications bucket Marked with `x-microapps-origin: s3` so the OriginRequest function knows to NOT send the request to the application origin and instead let it fall through to the S3 bucket.
3302
3554
 
package/lib/MicroApps.js CHANGED
@@ -118,5 +118,5 @@ class MicroApps extends constructs_1.Construct {
118
118
  }
119
119
  exports.MicroApps = MicroApps;
120
120
  _a = JSII_RTTI_SYMBOL_1;
121
- MicroApps[_a] = { fqn: "@pwrdrvr/microapps-cdk.MicroApps", version: "1.2.0-beta.7" };
121
+ MicroApps[_a] = { fqn: "@pwrdrvr/microapps-cdk.MicroApps", version: "1.2.0-beta.8" };
122
122
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9BcHBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL01pY3JvQXBwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBLDJDQUF1QztBQUN2QywrQ0FBMEQ7QUFDMUQsbUVBQXdGO0FBQ3hGLCtDQUEwRDtBQUMxRCxtREFBZ0U7QUFDaEUseURBQXNEO0FBcVV0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQWEsU0FBVSxTQUFRLHNCQUFTO0lBRXRDLElBQVcsRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBR0QsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBR0QsSUFBVyxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFHRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELE1BQU0sRUFDSixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixlQUFlLEVBQ2YsT0FBTyxFQUNQLFFBQVEsRUFDUixNQUFNLEdBQUcsS0FBSyxFQUNkLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsZ0JBQWdCLEdBQUcsS0FBSyxFQUN4QixrQkFBa0IsR0FBRyxJQUFJLEVBQ3pCLHVCQUF1QixHQUFHLElBQUksRUFDOUIsdUJBQXVCLEdBQUcsSUFBSSxFQUM5QixpQkFBaUIsR0FB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LGtCQUFrQjtZQUNsQix1QkFBdUI7WUFDdkIsa0JBQWtCO1lBQ2xCLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDL0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEzSEgsOEJBNEhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFjbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyJztcbmltcG9ydCAqIGFzIGNmIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250JztcbmltcG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgKiBhcyByNTMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJTWljcm9BcHBzQ0YsIE1pY3JvQXBwc0NGIH0gZnJvbSAnLi9NaWNyb0FwcHNDRic7XG5pbXBvcnQgeyBJTWljcm9BcHBzRWRnZVRvT3JpZ2luLCBNaWNyb0FwcHNFZGdlVG9PcmlnaW4gfSBmcm9tICcuL01pY3JvQXBwc0VkZ2VUb09yaWdpbic7XG5pbXBvcnQgeyBJTWljcm9BcHBzUzMsIE1pY3JvQXBwc1MzIH0gZnJvbSAnLi9NaWNyb0FwcHNTMyc7XG5pbXBvcnQgeyBJTWljcm9BcHBzU3ZjcywgTWljcm9BcHBzU3ZjcyB9IGZyb20gJy4vTWljcm9BcHBzU3Zjcyc7XG5pbXBvcnQgeyByZXZlcnNlRG9tYWluIH0gZnJvbSAnLi91dGlscy9SZXZlcnNlRG9tYWluJztcblxuLyoqXG4gKiBBIENESyBDb25zdHJ1Y3QgZm9yIGNyZWF0aW5nIGEgTWljcm9BcHBzIHJ1bnRpbWUgZW52aXJvbm1lbnQgdXNlZFxuICogdG8gaG9zdCBOZXh0LmpzLCBSZWFjdCwgb3IgYW55IG90aGVyIHNvcnQgb2Ygd2ViIGFwcGxpY2F0aW9uIHdpdGhcbiAqIG11bHRpcGxlIHZlcnNpb25zIGF2YWlsYWJsZSBmb3IgY29tcGFyaXNvbiwgcXVpY2sgcm9sbGJhY2tzLCBxdWlja1xuICogcmVsZWFzZXMsIGFuZCBhIGNvbXBsZXRlIGxhY2sgb2YgdXNlciBkaXN0dXJiYW5jZSBvbiBkZXBsb3lzLlxuICpcbiAqIEByZW1hcmtzXG4gKlxuICoge0BsaW5rIE1pY3JvQXBwc30gcHJvdmlkZXMgYSB0dXJuLWtleSBjb25zdHJ1Y3QgdGhhdCBjcmVhdGVzIGFsbFxuICogZGVwZW5kZW5jaWVzIHdpdGggbGltaXRlZCBleHBvc3VyZSBvZiB1bmRlcmx5aW5nIEFXUyBSZXNvdXJjZSBvcHRpb25zLlxuICogVGhpcyBjb25zdHJ1Y3QgaXMgdGhlIGVhc2llc3QgdG8gdXNlIHdoZW4gZXhwbG9yaW5nIE1pY3JvQXBwcyBmb3IgdGhlXG4gKiBmaXJzdCB0aW1lLlxuICpcbiAqIHtAbGluayBNaWNyb0FwcHNBUElHd3l9LCB7QGxpbmsgTWljcm9BcHBzQ0Z9LCB7QGxpbmsgTWljcm9BcHBzUzN9LFxuICogYW5kIHtAbGluayBNaWNyb0FwcHNTdmNzfSwgYW5kIHRoZWlyIGhlbHBlciBzdGF0aWMgbWV0aG9kcywgY2FuIGJlIHVzZWRcbiAqIHRvIGNyZWF0ZSBBV1MgUmVzb3VyY2VzIG1vcmUgZGlyZWN0bHksIHRvIHByb3ZpZGUgeW91ciBvd24gQVdTIFJlc291cmNlc1xuICogKGUuZy4gYW4gZXhpc3RpbmcgQ2xvdWRGcm9udCBEaXN0cmlidXRpb24pLCBhbmQgdG8gaGF2ZSBtb3JlIGZsZXhpYmlsaXR5XG4gKiB0aGFuIHRoZSB7QGxpbmsgTWljcm9BcHBzfSBjb25zdHJ1Y3Qgb2ZmZXJzLlxuICpcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICovXG5cbi8qKlxuICogUHJvcGVydGllcyB0byBpbml0aWFsaXplIGFuIGluc3RhbmNlIG9mIGBNaWNyb0FwcHNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pY3JvQXBwc1Byb3BzIHtcbiAgLyoqXG4gICAqIFJlbW92YWxQb2xpY3kgb3ZlcnJpZGUgZm9yIGNoaWxkIHJlc291cmNlc1xuICAgKlxuICAgKiBOb3RlOiBpZiBzZXQgdG8gREVTVFJPWSB0aGUgUzMgYnVja2VzIHdpbGwgaGF2ZSBgYXV0b0RlbGV0ZU9iamVjdHNgIHNldCB0byBgdHJ1ZWBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBwZXIgcmVzb3VyY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFBhc3NlZCB0byBOT0RFX0VOViBvZiBSb3V0ZXIgYW5kIERlcGxveWVyIExhbWJkYSBmdW5jdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRldlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwRW52OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFzc2V0IG5hbWUgcm9vdFxuICAgKlxuICAgKiBAZXhhbXBsZSBtaWNyb2FwcHNcbiAgICogQGRlZmF1bHQgLSByZXNvdXJjZSBuYW1lcyBhdXRvIGFzc2lnbmVkXG4gICAqL1xuICByZWFkb25seSBhc3NldE5hbWVSb290Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhc3NldCBuYW1lIHN1ZmZpeFxuICAgKlxuICAgKiBAZXhhbXBsZSAtZGV2LXByLTEyXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0TmFtZVN1ZmZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogUm91dGU1MyB6b25lIGluIHdoaWNoIHRvIGNyZWF0ZSBvcHRpb25hbCBgZG9tYWluTmFtZUVkZ2VgIHJlY29yZFxuICAgKi9cbiAgcmVhZG9ubHkgcjUzWm9uZT86IHI1My5JSG9zdGVkWm9uZTtcblxuICAvKipcbiAgICogQ2VydGlmaWNhdGUgaW4gVVMtRWFzdC0xIGZvciB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqL1xuICByZWFkb25seSBjZXJ0RWRnZT86IGFjbS5JQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIENlcnRpZmljYXRlIGluIGRlcGxveWVkIHJlZ2lvbiBmb3IgdGhlIEFQSSBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydE9yaWdpbj86IGFjbS5JQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIFVzZSBhIHN0cmljdCBTMyBCdWNrZXQgUG9saWN5IHRoYXQgcHJldmVudHMgYXBwbGljYXRpb25zXG4gICAqIGZyb20gcmVhZGluZy93cml0aW5nL21vZGlmeWluZy9kZWxldGluZyBmaWxlcyBpbiB0aGUgUzMgQnVja2V0XG4gICAqIG91dHNpZGUgb2YgdGhlIHBhdGggdGhhdCBpcyBzcGVjaWZpYyB0byB0aGVpciBhcHAvdmVyc2lvbi5cbiAgICpcbiAgICogVGhpcyBzZXR0aW5nIHNob3VsZCBiZSB1c2VkIHdoZW4gYXBwbGljYXRpb25zIGFyZSBsZXNzIHRoYW5cbiAgICogZnVsbHkgdHJ1c3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHMzU3RyaWN0QnVja2V0UG9saWN5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXBwbGllcyB3aGVuIHVzaW5nIHMzU3RyaWN0QnVja2V0UG9saWN5ID0gdHJ1ZVxuICAgKlxuICAgKiBJQU0gUm9sZSBvciBJQU0gVXNlciBuYW1lcyB0byBleGNsdWRlIGZyb20gdGhlIERFTlkgcnVsZXMgb24gdGhlIFMzIEJ1Y2tldCBQb2xpY3kuXG4gICAqXG4gICAqIFJvbGVzIHRoYXQgYXJlIEFzc3VtZWQgbXVzdCBpbnN0ZWFkIGhhdmUgdGhlaXIgQVJPQSBhZGRlZCB0byBgczNQb2xpY3lCeXBhc3NBUk9Bc2AuXG4gICAqXG4gICAqIFR5cGljYWxseSBhbnkgYWRtaW4gcm9sZXMgLyB1c2VycyB0aGF0IG5lZWQgdG8gdmlldyBvciBtYW5hZ2UgdGhlIFMzIEJ1Y2tldFxuICAgKiB3b3VsZCBiZSBhZGRlZCB0byB0aGlzIGxpc3QuXG4gICAqXG4gICAqIEBleGFtcGxlIFsnYXJuOmF3czppYW06OjEyMzQ1Njc4OTAxMjM6cm9sZS9BZG1pbkFjY2VzcycsICdhcm46YXdzOmlhbTo6MTIzNDU2Nzg5MDEyMzp1c2VyL015QWRtaW5Vc2VyJ11cbiAgICpcbiAgICogQHNlZSBzM1BvbGljeUJ5cGFzc0FST0FzXG4gICAqL1xuICByZWFkb25seSBzM1BvbGljeUJ5cGFzc1ByaW5jaXBhbEFSTnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQXBwbGllcyB3aGVuIHVzaW5nIHMzU3RyaWN0QnVja2V0UG9saWN5ID0gdHJ1ZVxuICAgKlxuICAgKiBBUk9BcyBvZiB0aGUgSUFNIFJvbGUgdG8gZXhjbHVkZSBmcm9tIHRoZSBERU5ZIHJ1bGVzIG9uIHRoZSBTMyBCdWNrZXQgUG9saWN5LlxuICAgKiBUaGlzIGFsbG93cyBzZXNzaW9ucyB0aGF0IGFzc3VtZSB0aGUgSUFNIFJvbGUgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGVcbiAgICogREVOWSBydWxlcyBvbiB0aGUgUzMgQnVja2V0IFBvbGljeS5cbiAgICpcbiAgICogVHlwaWNhbGx5IGFueSBhZG1pbiByb2xlcyAvIHVzZXJzIHRoYXQgbmVlZCB0byB2aWV3IG9yIG1hbmFnZSB0aGUgUzMgQnVja2V0XG4gICAqIHdvdWxkIGJlIGFkZGVkIHRvIHRoaXMgbGlzdC5cbiAgICpcbiAgICogUm9sZXMgLyB1c2VycyB0aGF0IGFyZSB1c2VkIGRpcmVjdGx5LCBub3QgYXNzdW1lZCwgY2FuIGJlIGFkZGVkIHRvIGBzM1BvbGljeUJ5cGFzc1JvbGVOYW1lc2AgaW5zdGVhZC5cbiAgICpcbiAgICogTm90ZTogVGhpcyBBUk9BIG11c3QgYmUgc3BlY2lmaWVkIHRvIHByZXZlbnQgdGhpcyBwb2xpY3kgZnJvbSBsb2NraW5nXG4gICAqIG91dCBub24tcm9vdCBzZXNzaW9ucyB0aGF0IGhhdmUgYXNzdW1lZCB0aGUgYWRtaW4gcm9sZS5cbiAgICpcbiAgICogVGhlIG5vdFByaW5jaXBhbHMgd2lsbCBvbmx5IG1hdGNoIHRoZSByb2xlIG5hbWUgZXhhY3RseSBhbmQgd2lsbCBub3QgbWF0Y2hcbiAgICogYW55IHNlc3Npb24gdGhhdCBoYXMgYXNzdW1lZCB0aGUgcm9sZSBzaW5jZSBub3RQcmluY2lwYWxzIGRvZXMgbm90IGFsbG93XG4gICAqIHdpbGRjYXJkIG1hdGNoZXMgYW5kIGRvZXMgbm90IGRvIHdpbGRjYXJkIG1hdGNoZXMgaW1wbGljaXRseSBlaXRoZXIuXG4gICAqXG4gICAqIFRoZSBBUk9BIG11c3QgYmUgdXNlZCBiZWNhdXNlIHRoZXJlIGFyZSBvbmx5IDMgUHJpbmNpcGFsIHZhcmlhYmxlcyBhdmFpbGFibGU6XG4gICAqICBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX3ZhcmlhYmxlcy5odG1sI3ByaW5jaXBhbHRhYmxlXG4gICAqICBhd3M6dXNlcm5hbWUsIGF3czp1c2VyaWQsIGF3czpQcmluY2lwYWxUYWdcbiAgICpcbiAgICogRm9yIGFuIGFzc3VtZWQgcm9sZSwgYXdzOnVzZXJuYW1lIGlzIGJsYW5rLCBhd3M6dXNlcmlkIGlzOlxuICAgKiAgW3VuaXF1ZSBpZCBBS0EgQVJPQSBmb3IgUm9sZV06W3Nlc3Npb24gbmFtZV1cbiAgICpcbiAgICogVGFibGUgb2YgdW5pcXVlIElEIHByZWZpeGVzIHN1Y2ggYXMgQVJPQTpcbiAgICogIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfaWRlbnRpZmllcnMuaHRtbCNpZGVudGlmaWVycy1wcmVmaXhlc1xuICAgKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcm9sZSBpcyBzaW1wbHkgbm90IGF2YWlsYWJsZSBmb3IgYW4gYXNzdW1lZCByb2xlIGFuZCwgaWYgaXQgd2FzLFxuICAgKiBhIGNvbXBsaWNhdGVkIGNvbXBhcmlzb24gd291bGQgYmUgcmVxdWllcmQgdG8gcHJldmVudCBleGNsdXNpb25cbiAgICogb2YgYXBwbHlpbmcgdGhlIERlbnkgUnVsZSB0byByb2xlcyBmcm9tIG90aGVyIGFjY291bnRzLlxuICAgKlxuICAgKiBUbyBnZXQgdGhlIEFST0Egd2l0aCB0aGUgQVdTIENMSTpcbiAgICogICBhd3MgaWFtIGdldC1yb2xlIC0tcm9sZS1uYW1lIFJPTEUtTkFNRVxuICAgKiAgIGF3cyBpYW0gZ2V0LXVzZXIgLS11c2VyLW5hbWUgVVNFUi1OQU1FXG4gICAqXG4gICAqIEBleGFtcGxlIFsgJ0FST0ExMjM0NTY3ODkwMTIzJyBdXG4gICAqXG4gICAqIEBzZWUgczNTdHJpY3RCdWNrZXRQb2xpY3lcbiAgICovXG4gIHJlYWRvbmx5IHMzUG9saWN5QnlwYXNzQVJPQXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIGRvbWFpbiBuYW1lIGZvciB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIEBleGFtcGxlIGFwcHMucHdyZHJ2ci5jb21cbiAgICogQGRlZmF1bHQgYXV0by1hc3NpZ25lZFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZUVkZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGN1c3RvbSBkb21haW4gbmFtZSBmb3IgdGhlIEFQSSBHYXRld2F5IEhUVFB2MiBBUEkuXG4gICAqXG4gICAqIEBleGFtcGxlIGFwcHMtb3JpZ2luLnB3cmRydnIuY29tXG4gICAqIEBkZWZhdWx0IGF1dG8tYXNzaWduZWRcbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWVPcmlnaW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggcHJlZml4IG9uIHRoZSByb290IG9mIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvblxuICAgKlxuICAgKiBAZXhhbXBsZSBkZXYvXG4gICAqL1xuICByZWFkb25seSByb290UGF0aFByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlIEFQSSBHYXRld2F5IGZvciBub24tZWRnZSBpbnZvY2F0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVBUElHYXRld2F5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGV4dHJhIEJlaGF2aW9yIChSb3V0ZSkgZm9yIC9hcGkvIHRoYXQgYWxsb3dzXG4gICAqIEFQSSByb3V0ZXMgdG8gaGF2ZSBhIHBlcmlvZCBpbiB0aGVtLlxuICAgKlxuICAgKiBXaGVuIGZhbHNlIEFQSSByb3V0ZXMgd2l0aCBhIHBlcmlvZCBpbiB0aGUgcGF0aCB3aWxsIGdldCByb3V0ZWQgdG8gUzMuXG4gICAqXG4gICAqIFdoZW4gdHJ1ZSBBUEkgcm91dGVzIHRoYXQgY29udGFpbiAvYXBpLyBpbiB0aGUgcGF0aCB3aWxsIGdldCByb3V0ZWQgdG8gQVBJIEdhdGV3YXlcbiAgICogZXZlbiBpZiB0aGV5IGhhdmUgYSBwZXJpb2QgaW4gdGhlIHBhdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZUFQSVBhdGhSb3V0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBleHRyYSBCZWhhdmlvciAoUm91dGUpIGZvciAvX25leHQvZGF0YS9cbiAgICogVGhpcyByb3V0ZSBpcyB1c2VkIGJ5IE5leHQuanMgdG8gbG9hZCBkYXRhIGZyb20gdGhlIEFQSSBHYXRld2F5XG4gICAqIG9uIGBnZXRTZXJ2ZXJTaWRlUHJvcHNgIGNhbGxzLiAgVGhlIHJlcXVlc3RzIGNhbiBlbmQgaW4gYC5qc29uYCxcbiAgICogd2hpY2ggd291bGQgY2F1c2UgdGhlbSB0byBiZSByb3V0ZWQgdG8gUzMgaWYgdGhpcyByb3V0ZSBpcyBub3QgY3JlYXRlZC5cbiAgICpcbiAgICogV2hlbiBmYWxzZSBBUEkgcm91dGVzIHdpdGggYSBwZXJpb2QgaW4gdGhlIHBhdGggd2lsbCBnZXQgcm91dGVkIHRvIFMzLlxuICAgKlxuICAgKiBXaGVuIHRydWUgQVBJIHJvdXRlcyB0aGF0IGNvbnRhaW4gL19uZXh0L2RhdGEvIGluIHRoZSBwYXRoIHdpbGwgZ2V0IHJvdXRlZCB0byBBUEkgR2F0ZXdheVxuICAgKiBldmVuIGlmIHRoZXkgaGF2ZSBhIHBlcmlvZCBpbiB0aGUgcGF0aC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlTmV4dERhdGFQYXRoUm91dGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGRzIGFuIFgtRm9yd2FyZGVkLUhvc3QtSGVhZGVyIHdoZW4gY2FsbGluZyBBUEkgR2F0ZXdheVxuICAgKlxuICAgKiBDYW4gb25seSBiZSB0cnVzdGVkIGlmIGBzaWduaW5nTW9kZWAgaXMgZW5hYmxlZCwgd2hpY2ggcmVzdHJpY3RzXG4gICAqIGFjY2VzcyB0byBBUEkgR2F0ZXdheSB0byBvbmx5IElBTSBzaWduZWQgcmVxdWVzdHMuXG4gICAqXG4gICAqIE5vdGU6IGlmIHRydWUsIGNyZWF0ZXMgT3JpZ2luUmVxdWVzdCBMYW1iZGEgQCBFZGdlIGZ1bmN0aW9uIGZvciBBUEkgR2F0ZXdheSBPcmlnaW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkWEZvcndhcmRlZEhvc3RIZWFkZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBIb3N0IGhlYWRlciAod2hpY2ggd2lsbCBiZSB0aGUgRWRnZSBkb21haW4gbmFtZSkgd2l0aCB0aGUgT3JpZ2luIGRvbWFpbiBuYW1lXG4gICAqIHdoZW4gZW5hYmxlZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHdoZW4gQVBJIEdhdGV3YXkgaGFzIG5vdCBiZWVuIGNvbmZpZ3VyZWRcbiAgICogd2l0aCBhIGN1c3RvbSBkb21haW4gbmFtZSB0aGF0IG1hdGNoZXMgdGhlIGV4YWN0IGRvbWFpbiBuYW1lIHVzZWQgYnkgdGhlIENsb3VkRnJvbnRcbiAgICogRGlzdHJpYnV0aW9uIEFORCB3aGVuIHRoZSBPcmlnaW5SZXF1ZXN0UG9saWN5LkhlYWRlcnNCZWhhdmlvciBpcyBzZXRcbiAgICogdG8gcGFzcyBhbGwgaGVhZGVycyB0byB0aGUgb3JpZ2luLlxuICAgKlxuICAgKiBOb3RlOiBpZiB0cnVlLCBjcmVhdGVzIE9yaWdpblJlcXVlc3QgTGFtYmRhIEAgRWRnZSBmdW5jdGlvbiBmb3IgQVBJIEdhdGV3YXkgT3JpZ2luXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxhY2VIb3N0SGVhZGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVxdWlyZXMgSUFNIGF1dGggb24gdGhlIEFQSSBHYXRld2F5IG9yaWdpbiBpZiBub3Qgc2V0IHRvICdub25lJy5cbiAgICpcbiAgICogJ3NpZ24nIC0gVXNlcyByZXF1ZXN0IGhlYWRlcnMgZm9yIGF1dGguXG4gICAqICdwcmVzaWduJyAtIFVzZXMgcXVlcnkgc3RyaW5nIGZvciBhdXRoLlxuICAgKlxuICAgKiBJZiBlbmFibGVkLFxuICAgKlxuICAgKiBOb3RlOiBpZiAnc2lnbicgb3IgJ3ByZXNpZ24nLCBjcmVhdGVzIE9yaWdpblJlcXVlc3QgTGFtYmRhIEAgRWRnZSBmdW5jdGlvbiBmb3IgQVBJIEdhdGV3YXkgT3JpZ2luXG4gICAqIEBkZWZhdWx0ICdzaWduJ1xuICAgKi9cbiAgcmVhZG9ubHkgc2lnbmluZ01vZGU/OiAnc2lnbicgfCAncHJlc2lnbicgfCAnbm9uZSc7XG5cbiAgLyoqXG4gICAqIE9yaWdpbiByZWdpb24gdGhhdCBBUEkgR2F0ZXdheSBvciBMYW1iZGEgZnVuY3Rpb24gd2lsbCBiZSBkZXBsb3llZCB0bywgdXNlZFxuICAgKiBmb3IgdGhlIGNvbmZpZy55bWwgb24gdGhlIEVkZ2UgZnVuY3Rpb24gdG8gc2lnbiByZXF1ZXN0cyBmb3JcbiAgICogdGhlIGNvcnJlY3QgcmVnaW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luUmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBPcmlnaW4gU2hpZWxkIFJlZ2lvblxuICAgKlxuICAgKiBUaGlzIHNob3VsZCBiZSB0aGUgcmVnaW9uIHdoZXJlIHRoZSBEeW5hbW9EQiBpcyBsb2NhdGVkIHNvIHRoZVxuICAgKiBFZGdlVG9PcmlnaW4gY2FsbHMgaGF2ZSB0aGUgbG93ZXN0IGxhdGVuY3kgKH4xIG1zKS5cbiAgICpcbiAgICogQGRlZmF1bHQgb3JpZ2luUmVnaW9uIGlmIHNwZWNpZmllZCwgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luU2hpZWxkUmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeGlzdGluZyB0YWJsZSBmb3IgYXBwcy92ZXJzaW9ucy9ydWxlc1xuICAgKlxuICAgKiBAd2FybmluZyAtIEl0IGlzICpzdHJvbmdseSogc3VnZ2VzdGVkIHRoYXQgcHJvZHVjdGlvbiBzdGFja3MgY3JlYXRlXG4gICAqIHRoZWlyIG93biBEeW5hbW9EQiBUYWJsZSBhbmQgcGFzcyBpdCBpbnRvIHRoaXMgY29uc3RydWN0LCBmb3IgcHJvdGVjdGlvblxuICAgKiBhZ2FpbnN0IGRhdGEgbG9zcyBkdWUgdG8gbG9naWNhbCBJRCBjaGFuZ2VzLCB0aGUgYWJpbGl0eSB0byBjb25maWd1cmVcbiAgICogUHJvdmlzaW9uZWQgY2FwYWNpdHkgd2l0aCBBdXRvIFNjYWxpbmcsIHRoZSBhYmlsaXR5IHRvIGFkZCBhZGRpdGlvbmFsIGluZGljZXMsIGV0Yy5cbiAgICpcbiAgICogUmVxdWlyZW1lbnRzOlxuICAgKiAtIEhhc2ggS2V5OiBgUEtgXG4gICAqIC0gU29ydCBLZXk6IGBTS2BcbiAgICpcbiAgICogQGRlZmF1bHQgY3JlYXRlZCBieSBjb25zdHJ1Y3RcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlPzogZHluYW1vZGIuSVRhYmxlIHwgZHluYW1vZGIuSVRhYmxlVjI7XG5cbiAgLyoqXG4gICAqIFByZS1zZXQgdGFibGUgbmFtZSBmb3IgYXBwcy92ZXJzaW9ucy9ydWxlc1xuICAgKlxuICAgKiBUaGlzIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgdjIgcm91dGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVOYW1lRm9yRWRnZVRvT3JpZ2luPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVkZ2UgbGFtYmRhIGZ1bmN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZWRnZUxhbWJkYXM/OiBjZi5FZGdlTGFtYmRhW107XG5cbiAgLyoqXG4gICAqIEFjY291bnQgSURzIGFsbG93ZWQgZm9yIGNyb3NzLWFjY291bnQgRnVuY3Rpb24gVVJMIGludm9jYXRpb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkRnVuY3Rpb25VcmxBY2NvdW50cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGFsbG93ZWQgbG9jYWxlIHByZWZpeGVzIGZvciBwYWdlc1xuICAgKlxuICAgKiBAZXhhbXBsZTogWydlbicsICdmcicsICdlcyddXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRMb2NhbGVQcmVmaXhlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIElBTSBSb2xlIEFSTnMgdGhhdCBzaG91bGQgYmUgYWxsb3dlZCB0byBpbnZva2UgYXBwcyBpbiBjaGlsZCBhY2NvdW50c1xuICAgKi9cbiAgcmVhZG9ubHkgZWRnZVRvT3JpZ2luUm9sZUFSTnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgTWljcm9BcHBzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU1pY3JvQXBwcyB7XG4gIC8qKiB7QGluaGVyaXRkb2MgSU1pY3JvQXBwc0NGfSAqL1xuICByZWFkb25seSBjZjogSU1pY3JvQXBwc0NGO1xuXG4gIC8qKiB7QGluaGVyaXRkb2MgSU1pY3JvQXBwc0VkZ2VUb09yaWdpbn0gKi9cbiAgcmVhZG9ubHkgZWRnZVRvT3JpZ2luPzogSU1pY3JvQXBwc0VkZ2VUb09yaWdpbjtcblxuICAvKioge0Bpbmhlcml0ZG9jIElNaWNyb0FwcHNTM30gKi9cbiAgcmVhZG9ubHkgczM6IElNaWNyb0FwcHNTMztcblxuICAvKioge0Bpbmhlcml0ZG9jIElNaWNyb0FwcHNTdmNzfSAqL1xuICByZWFkb25seSBzdmNzOiBJTWljcm9BcHBzU3Zjcztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgTWljcm9BcHBzIFwidHVybmtleVwiIGNvbnN0cnVjdCBmb3Igc2ltcGxlXG4gKiBkZXBsb3ltZW50cyBhbmQgZm9yIGluaXRpYWwgZXZhdWxhdGlvbiBvZiB0aGUgTWljcm9BcHBzIGZyYW1ld29yay5cbiAqXG4gKiBVc2UgdGhpcyBjb25zdHJ1Y3QgdG8gY3JlYXRlIGEgUG9DIHdvcmtpbmcgZW50aXJlIHN0YWNrLlxuICpcbiAqIERvIG5vdCB1c2UgdGhpcyBjb25zdHJ1Y3Qgd2hlbiBhZGRpbmcgTWljcm9BcHBzIHRvIGFuIGV4aXN0aW5nXG4gKiBDbG91ZEZyb250LCBBUEkgR2F0ZXdheSwgUzMgQnVja2V0LCBldGMuIG9yIHdoZXJlIGFjY2Vzc1xuICogdG8gYWxsIGZlYXR1cmVzIG9mIHRoZSBBV1MgUmVzb3VyY2VzIGFyZSBuZWVkZWQgKGUuZy4gdG9cbiAqIGFkZCBhZGRpdGlvbmFsIEJlaGF2aW9ycyB0byB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24sIHNldCBhdXRob3Jpem9yc1xuICogb24gQVBJIEdhdGV3YXksIGV0Yy4pLlxuICpcbiAqIEB3YXJuaW5nIFRoaXMgY29uc3RydWN0IGlzIG5vdCBpbnRlbmRlZCBmb3IgcHJvZHVjdGlvbiB1c2UuXG4gKiBJbiBhIHByb2R1Y3Rpb24gc3RhY2sgdGhlIER5bmFtb0RCIFRhYmxlLCBBUEkgR2F0ZXdheSwgUzMgQnVja2V0cyxcbiAqIGV0Yy4gc2hvdWxkIGJlIGNyZWF0ZWQgaW4gYSBcImR1cmFibGVcIiBzdGFjayB3aGVyZSB0aGUgSURzIHdpbGwgbm90XG4gKiBjaGFuZ2UgYW5kIHdoZXJlIGNoYW5nZXMgdG8gdGhlIE1pY3JvQXBwcyBjb25zdHJ1Y3Qgd2lsbCBub3RcbiAqIGNhdXNlIGZhaWx1cmVzIHRvIGRlcGxveSBvciBkYXRhIHRvIGJlIGRlbGV0ZWQuXG4gKlxuICogIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9wd3JkcnZyL21pY3JvYXBwcy1jb3JlL2Jsb2IvbWFpbi9wYWNrYWdlcy9jZGsvbGliL01pY3JvQXBwcy50cyB8IGV4YW1wbGUgdXNhZ2UgaW4gYSBDREsgU3RhY2sgfVxuICovXG5leHBvcnQgY2xhc3MgTWljcm9BcHBzIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSU1pY3JvQXBwcyB7XG4gIHByaXZhdGUgX2NmOiBNaWNyb0FwcHNDRjtcbiAgcHVibGljIGdldCBjZigpOiBJTWljcm9BcHBzQ0Yge1xuICAgIHJldHVybiB0aGlzLl9jZjtcbiAgfVxuXG4gIHByaXZhdGUgX2VkZ2VUb09yaWdpbj86IE1pY3JvQXBwc0VkZ2VUb09yaWdpbjtcbiAgcHVibGljIGdldCBlZGdlVG9PcmlnaW4oKTogSU1pY3JvQXBwc0VkZ2VUb09yaWdpbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2VkZ2VUb09yaWdpbjtcbiAgfVxuXG4gIHByaXZhdGUgX3MzOiBNaWNyb0FwcHNTMztcbiAgcHVibGljIGdldCBzMygpOiBJTWljcm9BcHBzUzMge1xuICAgIHJldHVybiB0aGlzLl9zMztcbiAgfVxuXG4gIHByaXZhdGUgX3N2Y3M6IE1pY3JvQXBwc1N2Y3M7XG4gIHB1YmxpYyBnZXQgc3ZjcygpOiBJTWljcm9BcHBzU3ZjcyB7XG4gICAgcmV0dXJuIHRoaXMuX3N2Y3M7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IE1pY3JvQXBwc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmIChwcm9wcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb3BzIG11c3QgYmUgc2V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgZG9tYWluTmFtZUVkZ2UsXG4gICAgICBkb21haW5OYW1lT3JpZ2luLFxuICAgICAgYXNzZXROYW1lUm9vdCxcbiAgICAgIGFzc2V0TmFtZVN1ZmZpeCxcbiAgICAgIHI1M1pvbmUsXG4gICAgICBjZXJ0RWRnZSxcbiAgICAgIGFwcEVudiA9ICdkZXYnLFxuICAgICAgcmVtb3ZhbFBvbGljeSxcbiAgICAgIHMzUG9saWN5QnlwYXNzQVJPQXMsXG4gICAgICBzM1BvbGljeUJ5cGFzc1ByaW5jaXBhbEFSTnMsXG4gICAgICBzM1N0cmljdEJ1Y2tldFBvbGljeSxcbiAgICAgIHJvb3RQYXRoUHJlZml4LFxuICAgICAgY3JlYXRlQVBJR2F0ZXdheSA9IGZhbHNlLFxuICAgICAgY3JlYXRlQVBJUGF0aFJvdXRlID0gdHJ1ZSxcbiAgICAgIGNyZWF0ZU5leHREYXRhUGF0aFJvdXRlID0gdHJ1ZSxcbiAgICAgIGFkZFhGb3J3YXJkZWRIb3N0SGVhZGVyID0gdHJ1ZSxcbiAgICAgIHJlcGxhY2VIb3N0SGVhZGVyID0gdHJ1ZSxcbiAgICAgIHNpZ25pbmdNb2RlID0gJ3NpZ24nLFxuICAgICAgb3JpZ2luUmVnaW9uLFxuICAgICAgdGFibGUsXG4gICAgICB0YWJsZU5hbWVGb3JFZGdlVG9PcmlnaW4sXG4gICAgICBvcmlnaW5TaGllbGRSZWdpb24gPSBvcmlnaW5SZWdpb24sXG4gICAgICBhbGxvd2VkRnVuY3Rpb25VcmxBY2NvdW50cyA9IFtdLFxuICAgICAgZWRnZVRvT3JpZ2luUm9sZUFSTnMgPSBbXSxcbiAgICB9ID0gcHJvcHM7XG5cbiAgICB0aGlzLl9zMyA9IG5ldyBNaWNyb0FwcHNTMyh0aGlzLCAnczMnLCB7XG4gICAgICByZW1vdmFsUG9saWN5LFxuICAgICAgYnVja2V0TG9nc05hbWU6IGRvbWFpbk5hbWVFZGdlID8gYCR7cmV2ZXJzZURvbWFpbihkb21haW5OYW1lRWRnZSl9LWxvZ3NgIDogdW5kZWZpbmVkLFxuICAgICAgYnVja2V0QXBwc05hbWU6IGRvbWFpbk5hbWVFZGdlID8gYCR7cmV2ZXJzZURvbWFpbihkb21haW5OYW1lRWRnZSl9YCA6IHVuZGVmaW5lZCxcbiAgICAgIGJ1Y2tldEFwcHNTdGFnaW5nTmFtZTogZG9tYWluTmFtZUVkZ2VcbiAgICAgICAgPyBgJHtyZXZlcnNlRG9tYWluKGRvbWFpbk5hbWVFZGdlKX0tc3RhZ2luZ2BcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBhc3NldE5hbWVSb290LFxuICAgICAgYXNzZXROYW1lU3VmZml4LFxuICAgICAgb3JpZ2luU2hpZWxkUmVnaW9uLFxuICAgIH0pO1xuICAgIHRoaXMuX3N2Y3MgPSBuZXcgTWljcm9BcHBzU3Zjcyh0aGlzLCAnc3ZjcycsIHtcbiAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgICBidWNrZXRBcHBzOiB0aGlzLl9zMy5idWNrZXRBcHBzLFxuICAgICAgYnVja2V0QXBwc09BSTogdGhpcy5fczMuYnVja2V0QXBwc09BSSxcbiAgICAgIGJ1Y2tldEFwcHNTdGFnaW5nOiB0aGlzLl9zMy5idWNrZXRBcHBzU3RhZ2luZyxcbiAgICAgIGFzc2V0TmFtZVJvb3QsXG4gICAgICBhc3NldE5hbWVTdWZmaXgsXG4gICAgICBhcHBFbnYsXG4gICAgICBzM1BvbGljeUJ5cGFzc0FST0FzLFxuICAgICAgczNQb2xpY3lCeXBhc3NQcmluY2lwYWxBUk5zLFxuICAgICAgczNTdHJpY3RCdWNrZXRQb2xpY3ksXG4gICAgICByb290UGF0aFByZWZpeCxcbiAgICAgIHJlcXVpcmVJQU1BdXRob3JpemF0aW9uOiBzaWduaW5nTW9kZSAhPT0gJ25vbmUnLFxuICAgICAgdGFibGUsXG4gICAgICBlZGdlVG9PcmlnaW5Sb2xlQVJOOiBlZGdlVG9PcmlnaW5Sb2xlQVJOcyxcbiAgICB9KTtcbiAgICBjb25zdCBlZGdlTGFtYmRhczogY2YuRWRnZUxhbWJkYVtdID0gW107XG5cbiAgICBpZiAoc2lnbmluZ01vZGUgIT09ICdub25lJyB8fCByZXBsYWNlSG9zdEhlYWRlciB8fCBhZGRYRm9yd2FyZGVkSG9zdEhlYWRlcikge1xuICAgICAgdGhpcy5fZWRnZVRvT3JpZ2luID0gbmV3IE1pY3JvQXBwc0VkZ2VUb09yaWdpbih0aGlzLCAnZWRnZVRvT3JpZ2luJywge1xuICAgICAgICBhc3NldE5hbWVSb290LFxuICAgICAgICBhc3NldE5hbWVTdWZmaXgsXG4gICAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgICAgIGFkZFhGb3J3YXJkZWRIb3N0SGVhZGVyLFxuICAgICAgICBzZXR1cEFwaUdhdGV3YXlQZXJtaXNzaW9uczogY3JlYXRlQVBJR2F0ZXdheSxcbiAgICAgICAgcmVwbGFjZUhvc3RIZWFkZXIsXG4gICAgICAgIG9yaWdpblJlZ2lvbixcbiAgICAgICAgc2lnbmluZ01vZGUsXG4gICAgICAgIHJvb3RQYXRoUHJlZml4LFxuICAgICAgICB0YWJsZVJ1bGVzQXJuOiB0YWJsZU5hbWVGb3JFZGdlVG9PcmlnaW4gfHwgdGhpcy5fc3Zjcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICAgIGFsbG93ZWRGdW5jdGlvblVybEFjY291bnRzLFxuICAgICAgICBhbGxvd2VkTG9jYWxlUHJlZml4ZXM6IHByb3BzLmFsbG93ZWRMb2NhbGVQcmVmaXhlcyxcbiAgICAgIH0pO1xuXG4gICAgICBlZGdlTGFtYmRhcy5wdXNoKC4uLnRoaXMuX2VkZ2VUb09yaWdpbi5lZGdlVG9PcmlnaW5MYW1iZGFzKTtcbiAgICB9XG4gICAgLy8gQWRkIGFueSBleHRyYSBsYW1iZGFzXG4gICAgaWYgKHByb3BzLmVkZ2VMYW1iZGFzPy5sZW5ndGgpIHtcbiAgICAgIGVkZ2VMYW1iZGFzLnB1c2goLi4ucHJvcHMuZWRnZUxhbWJkYXMpO1xuICAgIH1cbiAgICB0aGlzLl9jZiA9IG5ldyBNaWNyb0FwcHNDRih0aGlzLCAnY2Z0Jywge1xuICAgICAgcmVtb3ZhbFBvbGljeSxcbiAgICAgIGFzc2V0TmFtZVJvb3QsXG4gICAgICBhc3NldE5hbWVTdWZmaXgsXG4gICAgICBkb21haW5OYW1lRWRnZSxcbiAgICAgIGRvbWFpbk5hbWVPcmlnaW4sXG4gICAgICByNTNab25lLFxuICAgICAgY2VydEVkZ2UsXG4gICAgICBidWNrZXRBcHBzT3JpZ2luUzM6IHRoaXMuX3MzLmJ1Y2tldEFwcHNPcmlnaW5TMyxcbiAgICAgIGJ1Y2tldEFwcHNPcmlnaW5BcHA6IHRoaXMuX3MzLmJ1Y2tldEFwcHNPcmlnaW5BcHAsXG4gICAgICBidWNrZXRMb2dzOiB0aGlzLl9zMy5idWNrZXRMb2dzLFxuICAgICAgcm9vdFBhdGhQcmVmaXgsXG4gICAgICBjcmVhdGVBUElQYXRoUm91dGUsXG4gICAgICBjcmVhdGVOZXh0RGF0YVBhdGhSb3V0ZSxcbiAgICAgIG9yaWdpblNoaWVsZFJlZ2lvbixcbiAgICAgIC4uLihlZGdlTGFtYmRhcy5sZW5ndGggPyB7IGVkZ2VMYW1iZGFzIH0gOiB7fSksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -30,12 +30,12 @@ export interface MicroAppsCFProps {
30
30
  * S3 bucket origin for deployed applications
31
31
  * Marked with `x-microapps-origin: s3`
32
32
  */
33
- readonly bucketAppsOriginS3: cforigins.S3Origin;
33
+ readonly bucketAppsOriginS3: cf.IOrigin;
34
34
  /**
35
35
  * S3 bucket origin for deployed applications
36
36
  * Marked with `x-microapps-origin: app`
37
37
  */
38
- readonly bucketAppsOriginApp: cforigins.S3Origin;
38
+ readonly bucketAppsOriginApp: cf.IOrigin;
39
39
  /**
40
40
  * S3 bucket for CloudFront logs
41
41
  */