@bluedynamics/cdk8s-plone 0.0.15 → 0.0.17

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/.jsii CHANGED
@@ -108,7 +108,7 @@
108
108
  },
109
109
  "name": "@bluedynamics/cdk8s-plone",
110
110
  "readme": {
111
- "markdown": "# CMS Plone Chart for CDK8S\n\nThis chart provides a library to bootstrap a Plone deployment on a Kubernetes cluster using the [CDK8S](https://cdk8s.io) framework.\n\nIt provides\n- backend (with `plone.volto` or Classic-UI)\n- frontend (Plone-Volto, a ReactJS based user interface)\n- varnish (optional)\n\n## Usage\n\nFor now have a look at the [example project](https://github.com/bluedynamics/cdk8s-plone-example)..\n\n\n## Development\n\nClone the repository and install the dependencies:\n\n```bash\nyarn install\n```\n\nThen run the following command to run the test:\n\n```bash\nnpx projen test\n```\n\n### WIP Checklist:\n\nEach step need to be implemented with tests!\n\n- [ ] Start Backend\n - [x] deployment\n - [x] service\n - [x] pdb\n - [ ] init container running plone-site-create\n - [x] lifecycle checks (readiness, liveness)\n - [x] generic way to inject sidecars\n- [ ] Start Frontend\n - [x] deployment\n - [x] service\n - [x] pdb\n - [x] lifecycle checks (readiness, liveness)\n - [ ] depend on ready/live backend (needed?)\n - [x] generic way to inject sidecars\n\n- [ ] Start Varnish\n - [ ] deployment\n - [ ] do not depend on backend/front end to be up, but configure to deliver from cache if possible.\n - [ ] service\n - [ ] pdb\n - [ ] lifecycle checks (readiness, liveness)\n - [ ] generic way to inject sidecars\n - find a way to purge caches. based on kitconcept varnish purger? needs evaluation\n\n- [ ] Other Languages\n - [x] Check Python distribution\n - [ ] Check Java distribution\n - [ ] Check Go distribution"
111
+ "markdown": "# CMS Plone Chart for CDK8S\n\nThis chart provides a library to bootstrap a Plone deployment on a Kubernetes cluster using the [CDK8S](https://cdk8s.io) framework.\n\nIt provides\n- backend (with `plone.volto` or Classic-UI)\n- frontend (Plone-Volto, a ReactJS based user interface)\n- varnish (optional)\n\n## Usage\n\nFor now have a look at the [example project](https://github.com/bluedynamics/cdk8s-plone-example)..\n\n\n## Development\n\nClone the repository and install the dependencies:\n\n```bash\nyarn install\n```\n\nThen run the following command to run the test:\n\n```bash\nnpx projen test\n```\n\n### WIP Checklist:\n\nEach step need to be implemented with tests!\n\n- [ ] Start Backend\n - [x] deployment\n - [x] service\n - [x] pdb\n - [ ] init container running plone-site-create\n - [x] lifecycle checks (readiness, liveness)\n - [x] generic way to inject sidecars\n- [ ] Start Frontend\n - [x] deployment\n - [x] service\n - [x] pdb\n - [x] lifecycle checks (readiness, liveness)\n - [ ] depend on ready/live backend (needed?)\n - [x] generic way to inject sidecars\n\n- [x] Start Varnish (using kube-httcache)\n\n- [ ] Other Languages\n - [x] Check Python distribution\n - [ ] Check Java distribution\n - [ ] Check Go distribution"
112
112
  },
113
113
  "repository": {
114
114
  "type": "git",
@@ -555,6 +555,218 @@
555
555
  ],
556
556
  "symbolId": "src/plone:PloneBaseOptions"
557
557
  },
558
+ "@bluedynamics/cdk8s-plone.PloneHttpcache": {
559
+ "assembly": "@bluedynamics/cdk8s-plone",
560
+ "base": "constructs.Construct",
561
+ "docs": {
562
+ "stability": "stable"
563
+ },
564
+ "fqn": "@bluedynamics/cdk8s-plone.PloneHttpcache",
565
+ "initializer": {
566
+ "docs": {
567
+ "stability": "stable"
568
+ },
569
+ "locationInModule": {
570
+ "filename": "src/httpcache.ts",
571
+ "line": 41
572
+ },
573
+ "parameters": [
574
+ {
575
+ "name": "scope",
576
+ "type": {
577
+ "fqn": "constructs.Construct"
578
+ }
579
+ },
580
+ {
581
+ "name": "id",
582
+ "type": {
583
+ "primitive": "string"
584
+ }
585
+ },
586
+ {
587
+ "name": "options",
588
+ "type": {
589
+ "fqn": "@bluedynamics/cdk8s-plone.PloneHttpcacheOptions"
590
+ }
591
+ }
592
+ ]
593
+ },
594
+ "kind": "class",
595
+ "locationInModule": {
596
+ "filename": "src/httpcache.ts",
597
+ "line": 37
598
+ },
599
+ "name": "PloneHttpcache",
600
+ "properties": [
601
+ {
602
+ "docs": {
603
+ "stability": "stable"
604
+ },
605
+ "immutable": true,
606
+ "locationInModule": {
607
+ "filename": "src/httpcache.ts",
608
+ "line": 39
609
+ },
610
+ "name": "httpcacheServiceName",
611
+ "type": {
612
+ "primitive": "string"
613
+ }
614
+ }
615
+ ],
616
+ "symbolId": "src/httpcache:PloneHttpcache"
617
+ },
618
+ "@bluedynamics/cdk8s-plone.PloneHttpcacheOptions": {
619
+ "assembly": "@bluedynamics/cdk8s-plone",
620
+ "datatype": true,
621
+ "docs": {
622
+ "stability": "stable"
623
+ },
624
+ "fqn": "@bluedynamics/cdk8s-plone.PloneHttpcacheOptions",
625
+ "kind": "interface",
626
+ "locationInModule": {
627
+ "filename": "src/httpcache.ts",
628
+ "line": 7
629
+ },
630
+ "name": "PloneHttpcacheOptions",
631
+ "properties": [
632
+ {
633
+ "abstract": true,
634
+ "docs": {
635
+ "default": "- none",
636
+ "stability": "stable",
637
+ "summary": "plone chart."
638
+ },
639
+ "immutable": true,
640
+ "locationInModule": {
641
+ "filename": "src/httpcache.ts",
642
+ "line": 12
643
+ },
644
+ "name": "plone",
645
+ "type": {
646
+ "fqn": "@bluedynamics/cdk8s-plone.Plone"
647
+ }
648
+ },
649
+ {
650
+ "abstract": true,
651
+ "docs": {
652
+ "default": "- undefined",
653
+ "stability": "stable",
654
+ "summary": "existingSecret - Read admin credentials from user provided secret."
655
+ },
656
+ "immutable": true,
657
+ "locationInModule": {
658
+ "filename": "src/httpcache.ts",
659
+ "line": 27
660
+ },
661
+ "name": "existingSecret",
662
+ "optional": true,
663
+ "type": {
664
+ "primitive": "string"
665
+ }
666
+ },
667
+ {
668
+ "abstract": true,
669
+ "docs": {
670
+ "stability": "stable"
671
+ },
672
+ "immutable": true,
673
+ "locationInModule": {
674
+ "filename": "src/httpcache.ts",
675
+ "line": 31
676
+ },
677
+ "name": "limitCpu",
678
+ "optional": true,
679
+ "type": {
680
+ "primitive": "string"
681
+ }
682
+ },
683
+ {
684
+ "abstract": true,
685
+ "docs": {
686
+ "stability": "stable"
687
+ },
688
+ "immutable": true,
689
+ "locationInModule": {
690
+ "filename": "src/httpcache.ts",
691
+ "line": 32
692
+ },
693
+ "name": "limitMemory",
694
+ "optional": true,
695
+ "type": {
696
+ "primitive": "string"
697
+ }
698
+ },
699
+ {
700
+ "abstract": true,
701
+ "docs": {
702
+ "stability": "stable"
703
+ },
704
+ "immutable": true,
705
+ "locationInModule": {
706
+ "filename": "src/httpcache.ts",
707
+ "line": 33
708
+ },
709
+ "name": "requestCpu",
710
+ "optional": true,
711
+ "type": {
712
+ "primitive": "string"
713
+ }
714
+ },
715
+ {
716
+ "abstract": true,
717
+ "docs": {
718
+ "stability": "stable"
719
+ },
720
+ "immutable": true,
721
+ "locationInModule": {
722
+ "filename": "src/httpcache.ts",
723
+ "line": 34
724
+ },
725
+ "name": "requestMemory",
726
+ "optional": true,
727
+ "type": {
728
+ "primitive": "string"
729
+ }
730
+ },
731
+ {
732
+ "abstract": true,
733
+ "docs": {
734
+ "default": "- file in config folder",
735
+ "stability": "stable",
736
+ "summary": "varnishVcl."
737
+ },
738
+ "immutable": true,
739
+ "locationInModule": {
740
+ "filename": "src/httpcache.ts",
741
+ "line": 17
742
+ },
743
+ "name": "varnishVcl",
744
+ "optional": true,
745
+ "type": {
746
+ "primitive": "string"
747
+ }
748
+ },
749
+ {
750
+ "abstract": true,
751
+ "docs": {
752
+ "default": "- undefined",
753
+ "stability": "stable",
754
+ "summary": "varnishVclFile."
755
+ },
756
+ "immutable": true,
757
+ "locationInModule": {
758
+ "filename": "src/httpcache.ts",
759
+ "line": 22
760
+ },
761
+ "name": "varnishVclFile",
762
+ "optional": true,
763
+ "type": {
764
+ "primitive": "string"
765
+ }
766
+ }
767
+ ],
768
+ "symbolId": "src/httpcache:PloneHttpcacheOptions"
769
+ },
558
770
  "@bluedynamics/cdk8s-plone.PloneOptions": {
559
771
  "assembly": "@bluedynamics/cdk8s-plone",
560
772
  "datatype": true,
@@ -658,6 +870,6 @@
658
870
  "symbolId": "src/plone:PloneOptions"
659
871
  }
660
872
  },
661
- "version": "0.0.15",
662
- "fingerprint": "DlL7SuQ3mTQj4ZiIlq6mgrA+1sU52zDzfxDDoMQkTJI="
873
+ "version": "0.0.17",
874
+ "fingerprint": "A/xEzbcuWadoBZ9TFudPiB3EbdpLxmHlYL8Uv21wq5U="
663
875
  }
package/API.md CHANGED
@@ -137,6 +137,130 @@ public readonly frontendServiceName: string;
137
137
  ---
138
138
 
139
139
 
140
+ ### PloneHttpcache <a name="PloneHttpcache" id="@bluedynamics/cdk8s-plone.PloneHttpcache"></a>
141
+
142
+ #### Initializers <a name="Initializers" id="@bluedynamics/cdk8s-plone.PloneHttpcache.Initializer"></a>
143
+
144
+ ```typescript
145
+ import { PloneHttpcache } from '@bluedynamics/cdk8s-plone'
146
+
147
+ new PloneHttpcache(scope: Construct, id: string, options: PloneHttpcacheOptions)
148
+ ```
149
+
150
+ | **Name** | **Type** | **Description** |
151
+ | --- | --- | --- |
152
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcache.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
153
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcache.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
154
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcache.Initializer.parameter.options">options</a></code> | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions">PloneHttpcacheOptions</a></code> | *No description.* |
155
+
156
+ ---
157
+
158
+ ##### `scope`<sup>Required</sup> <a name="scope" id="@bluedynamics/cdk8s-plone.PloneHttpcache.Initializer.parameter.scope"></a>
159
+
160
+ - *Type:* constructs.Construct
161
+
162
+ ---
163
+
164
+ ##### `id`<sup>Required</sup> <a name="id" id="@bluedynamics/cdk8s-plone.PloneHttpcache.Initializer.parameter.id"></a>
165
+
166
+ - *Type:* string
167
+
168
+ ---
169
+
170
+ ##### `options`<sup>Required</sup> <a name="options" id="@bluedynamics/cdk8s-plone.PloneHttpcache.Initializer.parameter.options"></a>
171
+
172
+ - *Type:* <a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions">PloneHttpcacheOptions</a>
173
+
174
+ ---
175
+
176
+ #### Methods <a name="Methods" id="Methods"></a>
177
+
178
+ | **Name** | **Description** |
179
+ | --- | --- |
180
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcache.toString">toString</a></code> | Returns a string representation of this construct. |
181
+
182
+ ---
183
+
184
+ ##### `toString` <a name="toString" id="@bluedynamics/cdk8s-plone.PloneHttpcache.toString"></a>
185
+
186
+ ```typescript
187
+ public toString(): string
188
+ ```
189
+
190
+ Returns a string representation of this construct.
191
+
192
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
193
+
194
+ | **Name** | **Description** |
195
+ | --- | --- |
196
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcache.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
197
+
198
+ ---
199
+
200
+ ##### `isConstruct` <a name="isConstruct" id="@bluedynamics/cdk8s-plone.PloneHttpcache.isConstruct"></a>
201
+
202
+ ```typescript
203
+ import { PloneHttpcache } from '@bluedynamics/cdk8s-plone'
204
+
205
+ PloneHttpcache.isConstruct(x: any)
206
+ ```
207
+
208
+ Checks if `x` is a construct.
209
+
210
+ Use this method instead of `instanceof` to properly detect `Construct`
211
+ instances, even when the construct library is symlinked.
212
+
213
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
214
+ disk are seen as independent, completely different libraries. As a
215
+ consequence, the class `Construct` in each copy of the `constructs` library
216
+ is seen as a different class, and an instance of one class will not test as
217
+ `instanceof` the other class. `npm install` will not create installations
218
+ like this, but users may manually symlink construct libraries together or
219
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
220
+ library can be accidentally installed, and `instanceof` will behave
221
+ unpredictably. It is safest to avoid using `instanceof`, and using
222
+ this type-testing method instead.
223
+
224
+ ###### `x`<sup>Required</sup> <a name="x" id="@bluedynamics/cdk8s-plone.PloneHttpcache.isConstruct.parameter.x"></a>
225
+
226
+ - *Type:* any
227
+
228
+ Any object.
229
+
230
+ ---
231
+
232
+ #### Properties <a name="Properties" id="Properties"></a>
233
+
234
+ | **Name** | **Type** | **Description** |
235
+ | --- | --- | --- |
236
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcache.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
237
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcache.property.httpcacheServiceName">httpcacheServiceName</a></code> | <code>string</code> | *No description.* |
238
+
239
+ ---
240
+
241
+ ##### `node`<sup>Required</sup> <a name="node" id="@bluedynamics/cdk8s-plone.PloneHttpcache.property.node"></a>
242
+
243
+ ```typescript
244
+ public readonly node: Node;
245
+ ```
246
+
247
+ - *Type:* constructs.Node
248
+
249
+ The tree node.
250
+
251
+ ---
252
+
253
+ ##### `httpcacheServiceName`<sup>Required</sup> <a name="httpcacheServiceName" id="@bluedynamics/cdk8s-plone.PloneHttpcache.property.httpcacheServiceName"></a>
254
+
255
+ ```typescript
256
+ public readonly httpcacheServiceName: string;
257
+ ```
258
+
259
+ - *Type:* string
260
+
261
+ ---
262
+
263
+
140
264
  ## Structs <a name="Structs" id="Structs"></a>
141
265
 
142
266
  ### PloneBaseOptions <a name="PloneBaseOptions" id="@bluedynamics/cdk8s-plone.PloneBaseOptions"></a>
@@ -376,6 +500,123 @@ public readonly requestMemory: string;
376
500
 
377
501
  ---
378
502
 
503
+ ### PloneHttpcacheOptions <a name="PloneHttpcacheOptions" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions"></a>
504
+
505
+ #### Initializer <a name="Initializer" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.Initializer"></a>
506
+
507
+ ```typescript
508
+ import { PloneHttpcacheOptions } from '@bluedynamics/cdk8s-plone'
509
+
510
+ const ploneHttpcacheOptions: PloneHttpcacheOptions = { ... }
511
+ ```
512
+
513
+ #### Properties <a name="Properties" id="Properties"></a>
514
+
515
+ | **Name** | **Type** | **Description** |
516
+ | --- | --- | --- |
517
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.plone">plone</a></code> | <code><a href="#@bluedynamics/cdk8s-plone.Plone">Plone</a></code> | plone chart. |
518
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.existingSecret">existingSecret</a></code> | <code>string</code> | existingSecret - Read admin credentials from user provided secret. |
519
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.limitCpu">limitCpu</a></code> | <code>string</code> | *No description.* |
520
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.limitMemory">limitMemory</a></code> | <code>string</code> | *No description.* |
521
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.requestCpu">requestCpu</a></code> | <code>string</code> | *No description.* |
522
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.requestMemory">requestMemory</a></code> | <code>string</code> | *No description.* |
523
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.varnishVcl">varnishVcl</a></code> | <code>string</code> | varnishVcl. |
524
+ | <code><a href="#@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.varnishVclFile">varnishVclFile</a></code> | <code>string</code> | varnishVclFile. |
525
+
526
+ ---
527
+
528
+ ##### `plone`<sup>Required</sup> <a name="plone" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.plone"></a>
529
+
530
+ ```typescript
531
+ public readonly plone: Plone;
532
+ ```
533
+
534
+ - *Type:* <a href="#@bluedynamics/cdk8s-plone.Plone">Plone</a>
535
+ - *Default:* none
536
+
537
+ plone chart.
538
+
539
+ ---
540
+
541
+ ##### `existingSecret`<sup>Optional</sup> <a name="existingSecret" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.existingSecret"></a>
542
+
543
+ ```typescript
544
+ public readonly existingSecret: string;
545
+ ```
546
+
547
+ - *Type:* string
548
+ - *Default:* undefined
549
+
550
+ existingSecret - Read admin credentials from user provided secret.
551
+
552
+ ---
553
+
554
+ ##### `limitCpu`<sup>Optional</sup> <a name="limitCpu" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.limitCpu"></a>
555
+
556
+ ```typescript
557
+ public readonly limitCpu: string;
558
+ ```
559
+
560
+ - *Type:* string
561
+
562
+ ---
563
+
564
+ ##### `limitMemory`<sup>Optional</sup> <a name="limitMemory" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.limitMemory"></a>
565
+
566
+ ```typescript
567
+ public readonly limitMemory: string;
568
+ ```
569
+
570
+ - *Type:* string
571
+
572
+ ---
573
+
574
+ ##### `requestCpu`<sup>Optional</sup> <a name="requestCpu" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.requestCpu"></a>
575
+
576
+ ```typescript
577
+ public readonly requestCpu: string;
578
+ ```
579
+
580
+ - *Type:* string
581
+
582
+ ---
583
+
584
+ ##### `requestMemory`<sup>Optional</sup> <a name="requestMemory" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.requestMemory"></a>
585
+
586
+ ```typescript
587
+ public readonly requestMemory: string;
588
+ ```
589
+
590
+ - *Type:* string
591
+
592
+ ---
593
+
594
+ ##### `varnishVcl`<sup>Optional</sup> <a name="varnishVcl" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.varnishVcl"></a>
595
+
596
+ ```typescript
597
+ public readonly varnishVcl: string;
598
+ ```
599
+
600
+ - *Type:* string
601
+ - *Default:* file in config folder
602
+
603
+ varnishVcl.
604
+
605
+ ---
606
+
607
+ ##### `varnishVclFile`<sup>Optional</sup> <a name="varnishVclFile" id="@bluedynamics/cdk8s-plone.PloneHttpcacheOptions.property.varnishVclFile"></a>
608
+
609
+ ```typescript
610
+ public readonly varnishVclFile: string;
611
+ ```
612
+
613
+ - *Type:* string
614
+ - *Default:* undefined
615
+
616
+ varnishVclFile.
617
+
618
+ ---
619
+
379
620
  ### PloneOptions <a name="PloneOptions" id="@bluedynamics/cdk8s-plone.PloneOptions"></a>
380
621
 
381
622
  #### Initializer <a name="Initializer" id="@bluedynamics/cdk8s-plone.PloneOptions.Initializer"></a>
package/README.md CHANGED
@@ -45,14 +45,7 @@ Each step need to be implemented with tests!
45
45
  - [ ] depend on ready/live backend (needed?)
46
46
  - [x] generic way to inject sidecars
47
47
 
48
- - [ ] Start Varnish
49
- - [ ] deployment
50
- - [ ] do not depend on backend/front end to be up, but configure to deliver from cache if possible.
51
- - [ ] service
52
- - [ ] pdb
53
- - [ ] lifecycle checks (readiness, liveness)
54
- - [ ] generic way to inject sidecars
55
- - find a way to purge caches. based on kitconcept varnish purger? needs evaluation
48
+ - [x] Start Varnish (using kube-httcache)
56
49
 
57
50
  - [ ] Other Languages
58
51
  - [x] Check Python distribution
@@ -0,0 +1,29 @@
1
+ import { Construct } from 'constructs';
2
+ import { Plone } from './plone';
3
+ export interface PloneHttpcacheOptions {
4
+ /**
5
+ * plone chart
6
+ * @default - none
7
+ */
8
+ readonly plone: Plone;
9
+ /** varnishVcl
10
+ * @default - file in config folder
11
+ */
12
+ readonly varnishVcl?: string;
13
+ /** varnishVclFile
14
+ * @default - undefined
15
+ */
16
+ readonly varnishVclFile?: string | undefined;
17
+ /** existingSecret - Read admin credentials from user provided secret
18
+ * @default - undefined
19
+ */
20
+ readonly existingSecret?: string;
21
+ readonly limitCpu?: string;
22
+ readonly limitMemory?: string;
23
+ readonly requestCpu?: string;
24
+ readonly requestMemory?: string;
25
+ }
26
+ export declare class PloneHttpcache extends Construct {
27
+ readonly httpcacheServiceName: string;
28
+ constructor(scope: Construct, id: string, options: PloneHttpcacheOptions);
29
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PloneHttpcache = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const fs = require("fs");
7
+ const path = require("path");
8
+ const cdk8s_1 = require("cdk8s");
9
+ const constructs_1 = require("constructs");
10
+ class PloneHttpcache extends constructs_1.Construct {
11
+ constructor(scope, id, options) {
12
+ super(scope, id);
13
+ let varnishVcl;
14
+ if (!options.varnishVcl) {
15
+ let vclPath;
16
+ if (!options.varnishVclFile) {
17
+ vclPath = path.join(__dirname, 'config', 'varnish.tpl.vcl');
18
+ }
19
+ else {
20
+ vclPath = options.varnishVclFile;
21
+ }
22
+ varnishVcl = fs.readFileSync(vclPath, 'utf8');
23
+ }
24
+ else {
25
+ varnishVcl = options.varnishVcl;
26
+ }
27
+ const httpcache = new cdk8s_1.Helm(this, 'httpcache', {
28
+ // see https://github.com/mittwald/kube-httpcache/chart
29
+ repo: 'https://helm.mittwald.de',
30
+ chart: 'kube-httpcache',
31
+ values: {
32
+ replicaCount: 2,
33
+ cache: {
34
+ // need to looks at the frontendWatch, do we need it?
35
+ frontendWatch: false,
36
+ backendWatch: false,
37
+ existingSecret: options.existingSecret ?? undefined,
38
+ },
39
+ vclTemplate: varnishVcl,
40
+ extraEnvVars: [
41
+ { name: 'BACKEND_SERVICE_NAME', value: options.plone.backendServiceName },
42
+ { name: 'BACKEND_SERVICE_PORT', value: '8080' },
43
+ { name: 'FRONTEND_SERVICE_NAME', value: options.plone.frontendServiceName },
44
+ { name: 'FRONTEND_SERVICE_PORT', value: '3000' },
45
+ ],
46
+ resources: {
47
+ limits: {
48
+ cpu: options.limitCpu || '500m',
49
+ memory: options.limitMemory || '500Mi',
50
+ },
51
+ requests: {
52
+ cpu: options.requestCpu || '100m',
53
+ memory: options.requestMemory || '100Mi',
54
+ },
55
+ },
56
+ rbac: {
57
+ enabled: false,
58
+ },
59
+ exporter: {
60
+ enabled: true,
61
+ resources: {
62
+ limits: {
63
+ cpu: '100m',
64
+ memory: '100Mi',
65
+ },
66
+ requests: {
67
+ cpu: '10m',
68
+ memory: '50Mi',
69
+ },
70
+ },
71
+ },
72
+ serviceMonitor: {
73
+ enabled: true,
74
+ scrapeSignaller: true,
75
+ },
76
+ },
77
+ });
78
+ const httpcacheService = httpcache.apiObjects.find((construct) => {
79
+ if ((construct.kind === 'Service') && (construct.metadata.name?.endsWith('kube-httpcache'))) {
80
+ return construct.name;
81
+ }
82
+ return undefined;
83
+ });
84
+ if (httpcacheService === undefined) {
85
+ throw new Error('Could not find httpcache service');
86
+ }
87
+ this.httpcacheServiceName = httpcacheService.name;
88
+ }
89
+ }
90
+ exports.PloneHttpcache = PloneHttpcache;
91
+ _a = JSII_RTTI_SYMBOL_1;
92
+ PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.0.17" };
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHBjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQTZCO0FBQzdCLDJDQUF1QztBQWlDdkMsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFJM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBZSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDbkMsQ0FBQztZQUNELFVBQVUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLFlBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQzVDLHVEQUF1RDtZQUN2RCxJQUFJLEVBQUUsMEJBQTBCO1lBQ2hDLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxDQUFDO2dCQUNmLEtBQUssRUFBRTtvQkFDTCxxREFBcUQ7b0JBQ3JELGFBQWEsRUFBRSxLQUFLO29CQUNwQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksU0FBUztpQkFDcEQ7Z0JBQ0QsV0FBVyxFQUFFLFVBQVU7Z0JBQ3ZCLFlBQVksRUFBRTtvQkFDWixFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtvQkFDekUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtvQkFDL0MsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUU7b0JBQzNFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7aUJBQ2pEO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxNQUFNLEVBQUU7d0JBQ04sR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksTUFBTTt3QkFDL0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTztxQkFDdkM7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLEdBQUcsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU07d0JBQ2pDLE1BQU0sRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLE9BQU87cUJBQ3pDO2lCQUNGO2dCQUNELElBQUksRUFBRTtvQkFDSixPQUFPLEVBQUUsS0FBSztpQkFDZjtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsT0FBTyxFQUFFLElBQUk7b0JBQ2IsU0FBUyxFQUFFO3dCQUNULE1BQU0sRUFBRTs0QkFDTixHQUFHLEVBQUUsTUFBTTs0QkFDWCxNQUFNLEVBQUUsT0FBTzt5QkFDaEI7d0JBQ0QsUUFBUSxFQUFFOzRCQUNSLEdBQUcsRUFBRSxLQUFLOzRCQUNWLE1BQU0sRUFBRSxNQUFNO3lCQUNmO3FCQUNGO2lCQUNGO2dCQUNELGNBQWMsRUFBRTtvQkFDZCxPQUFPLEVBQUUsSUFBSTtvQkFDYixlQUFlLEVBQUUsSUFBSTtpQkFDdEI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDNUYsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3hCLENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0lBQ3BELENBQUM7O0FBL0VILHdDQWdGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBIZWxtIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBQbG9uZSB9IGZyb20gJy4vcGxvbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsb25lSHR0cGNhY2hlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBwbG9uZSBjaGFydFxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHBsb25lOiBQbG9uZTtcblxuICAvKiogdmFybmlzaFZjbFxuICAgKiBAZGVmYXVsdCAtIGZpbGUgaW4gY29uZmlnIGZvbGRlclxuICAgKi9cbiAgcmVhZG9ubHkgdmFybmlzaFZjbD86IHN0cmluZztcblxuICAvKiogdmFybmlzaFZjbEZpbGVcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHZhcm5pc2hWY2xGaWxlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBleGlzdGluZ1NlY3JldCAtIFJlYWQgYWRtaW4gY3JlZGVudGlhbHMgZnJvbSB1c2VyIHByb3ZpZGVkIHNlY3JldFxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAqL1xuICByZWFkb25seSBleGlzdGluZ1NlY3JldD86IHN0cmluZztcblxuXG4gIC8vIHJlc291cmNlc1xuICByZWFkb25seSBsaW1pdENwdT86IHN0cmluZztcbiAgcmVhZG9ubHkgbGltaXRNZW1vcnk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlcXVlc3RNZW1vcnk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQbG9uZUh0dHBjYWNoZSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGh0dHBjYWNoZVNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0aW9uczogUGxvbmVIdHRwY2FjaGVPcHRpb25zKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBsZXQgdmFybmlzaFZjbDogc3RyaW5nO1xuICAgIGlmICghb3B0aW9ucy52YXJuaXNoVmNsKSB7XG4gICAgICBsZXQgdmNsUGF0aDogc3RyaW5nO1xuICAgICAgaWYgKCFvcHRpb25zLnZhcm5pc2hWY2xGaWxlKSB7XG4gICAgICAgIHZjbFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnY29uZmlnJywgJ3Zhcm5pc2gudHBsLnZjbCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmNsUGF0aCA9IG9wdGlvbnMudmFybmlzaFZjbEZpbGU7XG4gICAgICB9XG4gICAgICB2YXJuaXNoVmNsID0gZnMucmVhZEZpbGVTeW5jKHZjbFBhdGgsICd1dGY4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcm5pc2hWY2wgPSBvcHRpb25zLnZhcm5pc2hWY2w7XG4gICAgfVxuICAgIGNvbnN0IGh0dHBjYWNoZSA9IG5ldyBIZWxtKHRoaXMsICdodHRwY2FjaGUnLCB7XG4gICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21pdHR3YWxkL2t1YmUtaHR0cGNhY2hlL2NoYXJ0XG4gICAgICByZXBvOiAnaHR0cHM6Ly9oZWxtLm1pdHR3YWxkLmRlJyxcbiAgICAgIGNoYXJ0OiAna3ViZS1odHRwY2FjaGUnLFxuICAgICAgdmFsdWVzOiB7XG4gICAgICAgIHJlcGxpY2FDb3VudDogMixcbiAgICAgICAgY2FjaGU6IHtcbiAgICAgICAgICAvLyBuZWVkIHRvIGxvb2tzIGF0IHRoZSBmcm9udGVuZFdhdGNoLCBkbyB3ZSBuZWVkIGl0P1xuICAgICAgICAgIGZyb250ZW5kV2F0Y2g6IGZhbHNlLFxuICAgICAgICAgIGJhY2tlbmRXYXRjaDogZmFsc2UsXG4gICAgICAgICAgZXhpc3RpbmdTZWNyZXQ6IG9wdGlvbnMuZXhpc3RpbmdTZWNyZXQgPz8gdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgICB2Y2xUZW1wbGF0ZTogdmFybmlzaFZjbCxcbiAgICAgICAgZXh0cmFFbnZWYXJzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnQkFDS0VORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5iYWNrZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NFUlZJQ0VfUE9SVCcsIHZhbHVlOiAnODA4MCcgfSxcbiAgICAgICAgICB7IG5hbWU6ICdGUk9OVEVORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5mcm9udGVuZFNlcnZpY2VOYW1lIH0sXG4gICAgICAgICAgeyBuYW1lOiAnRlJPTlRFTkRfU0VSVklDRV9QT1JUJywgdmFsdWU6ICczMDAwJyB9LFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICAgIGNwdTogb3B0aW9ucy5saW1pdENwdSB8fCAnNTAwbScsXG4gICAgICAgICAgICBtZW1vcnk6IG9wdGlvbnMubGltaXRNZW1vcnkgfHwgJzUwME1pJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVlc3RzOiB7XG4gICAgICAgICAgICBjcHU6IG9wdGlvbnMucmVxdWVzdENwdSB8fCAnMTAwbScsXG4gICAgICAgICAgICBtZW1vcnk6IG9wdGlvbnMucmVxdWVzdE1lbW9yeSB8fCAnMTAwTWknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJiYWM6IHtcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0ZXI6IHtcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAgIGNwdTogJzEwMG0nLFxuICAgICAgICAgICAgICBtZW1vcnk6ICcxMDBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWVzdHM6IHtcbiAgICAgICAgICAgICAgY3B1OiAnMTBtJyxcbiAgICAgICAgICAgICAgbWVtb3J5OiAnNTBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZpY2VNb25pdG9yOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzY3JhcGVTaWduYWxsZXI6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGh0dHBjYWNoZVNlcnZpY2UgPSBodHRwY2FjaGUuYXBpT2JqZWN0cy5maW5kKChjb25zdHJ1Y3QpID0+IHtcbiAgICAgIGlmICgoY29uc3RydWN0LmtpbmQgPT09ICdTZXJ2aWNlJykgJiYgKGNvbnN0cnVjdC5tZXRhZGF0YS5uYW1lPy5lbmRzV2l0aCgna3ViZS1odHRwY2FjaGUnKSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC5uYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpZiAoaHR0cGNhY2hlU2VydmljZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGh0dHBjYWNoZSBzZXJ2aWNlJyk7XG4gICAgfVxuICAgIHRoaXMuaHR0cGNhY2hlU2VydmljZU5hbWUgPSBodHRwY2FjaGVTZXJ2aWNlLm5hbWU7XG4gIH1cbn0iXX0=
package/lib/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export { Plone, PloneOptions, PloneBaseOptions } from './plone';
2
+ export { PloneHttpcache, PloneHttpcacheOptions } from './httpcache';
package/lib/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Plone = void 0;
3
+ exports.PloneHttpcache = exports.Plone = void 0;
4
4
  var plone_1 = require("./plone");
5
5
  Object.defineProperty(exports, "Plone", { enumerable: true, get: function () { return plone_1.Plone; } });
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWdFO0FBQXZELDhGQUFBLEtBQUssT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFBsb25lLCBQbG9uZU9wdGlvbnMsIFBsb25lQmFzZU9wdGlvbnMgfSBmcm9tICcuL3Bsb25lJztcbiJdfQ==
6
+ var httpcache_1 = require("./httpcache");
7
+ Object.defineProperty(exports, "PloneHttpcache", { enumerable: true, get: function () { return httpcache_1.PloneHttpcache; } });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWdFO0FBQXZELDhGQUFBLEtBQUssT0FBQTtBQUNkLHlDQUFvRTtBQUEzRCwyR0FBQSxjQUFjLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQbG9uZSwgUGxvbmVPcHRpb25zLCBQbG9uZUJhc2VPcHRpb25zIH0gZnJvbSAnLi9wbG9uZSc7XG5leHBvcnQgeyBQbG9uZUh0dHBjYWNoZSwgUGxvbmVIdHRwY2FjaGVPcHRpb25zIH0gZnJvbSAnLi9odHRwY2FjaGUnO1xuIl19
package/lib/plone.js CHANGED
@@ -149,5 +149,5 @@ class Plone extends constructs_1.Construct {
149
149
  }
150
150
  exports.Plone = Plone;
151
151
  _a = JSII_RTTI_SYMBOL_1;
152
- Plone[_a] = { fqn: "@bluedynamics/cdk8s-plone.Plone", version: "0.0.15" };
152
+ Plone[_a] = { fqn: "@bluedynamics/cdk8s-plone.Plone", version: "0.0.17" };
153
153
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBOEI7QUFDOUIsdUNBQXVDO0FBQ3ZDLDJDQUF1QztBQUN2Qyw2Q0FBK0M7QUFDL0MsdUNBQW1EO0FBRW5ELHVDQUF5QztBQXNDekMsTUFBYSxLQUFNLFNBQVEsc0JBQVM7SUFLbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxVQUF3QixFQUFFO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMkVBQTJFO1FBQzNFLFVBQVU7UUFDVixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQztRQUV6QywyRUFBMkU7UUFDM0UsVUFBVTtRQUNWLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3RDLE1BQU0sYUFBYSxHQUFHO1lBQ3BCLHdCQUF3QixFQUFFLGVBQWU7WUFDekMsNkJBQTZCLEVBQUUsU0FBUztZQUN4QywyQkFBMkIsRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLFdBQVc7U0FDNUQsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQztRQUV6QixVQUFVO1FBQ1YsTUFBTSxvQkFBb0IsR0FBc0I7WUFDOUMsSUFBSSxFQUFFLEdBQUc7WUFDVCxJQUFJLEVBQUUsaUJBQVcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1NBQzFDLENBQUM7UUFFRixNQUFNLG9CQUFvQixHQUFVO1lBQ2xDLE9BQU8sRUFBRSxvQkFBb0I7WUFDN0IsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLDJCQUEyQixJQUFJLEVBQUU7WUFDOUQsY0FBYyxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsSUFBSSxDQUFDO1lBQ25ELGFBQWEsRUFBRSxPQUFPLENBQUMscUJBQXFCLElBQUksRUFBRTtZQUNsRCxnQkFBZ0IsRUFBRSxP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QUFJLEVBQUU7Z0JBQ2hELGVBQWUsRUFBRSxRQUFRLENBQUMsZUFBZSxJQUFJLGNBQWM7YUFDNUQ7WUFDRCxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDM0IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLElBQUksTUFBTTtZQUNyQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVcsSUFBSSxLQUFLO1lBQzFDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU07WUFDeEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTztZQUUvQyxHQUFHLEVBQUU7Z0JBQ0gsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLElBQUksU0FBUztnQkFDcEQsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZLElBQUksU0FBUzthQUNqRDtZQUNELElBQUksRUFBRSxZQUFZO1lBQ2xCLFdBQVcsRUFBRSxtQkFBbUI7WUFDaEMsYUFBYSxFQUFFLHFCQUFxQjtZQUNwQyxjQUFjLEVBQUUsc0JBQXNCO1NBQ3ZDLENBQUMsQ0FBQztRQUVILFVBQVU7UUFDVixNQUFNLGVBQWUsR0FBRyxJQUFJLHNCQUFZLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFO1lBQ3RFLE1BQU0sRUFBRTtnQkFDTix3QkFBd0IsRUFBRSx3QkFBd0I7Z0JBQ2xELDZCQUE2QixFQUFFLFNBQVM7YUFDekM7WUFDRCxVQUFVLEVBQUUsWUFBWTtZQUN4QixhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsYUFBSyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1NBQy9ELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO0lBQ2xELENBQUM7O0FBeEpILHNCQXlKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5hbWVzIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0ICogYXMga3BsdXMgZnJvbSAnY2RrOHMtcGx1cy0yNCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFBsb25lRGVwbG95bWVudCB9IGZyb20gJy4vZGVwbG95bWVudCc7XG5pbXBvcnQgeyBQcm9iZSwgSW50T3JTdHJpbmcgfSBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCB7IFBsb25lU2VydmljZSB9IGZyb20gJy4vc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxvbmVCYXNlT3B0aW9ucyB7XG4gIC8vIGltYWdlXG4gIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuICByZWFkb25seSBpbWFnZVB1bGxQb2xpY3k/OiBzdHJpbmc7XG4gIC8vIHJlcGxpY2FzXG4gIHJlYWRvbmx5IHJlcGxpY2FzPzogbnVtYmVyO1xuICByZWFkb25seSBtYXhVbmF2YWlsYWJsZT86IG51bWJlciB8IHN0cmluZztcbiAgcmVhZG9ubHkgbWluQXZhaWxhYmxlPzogbnVtYmVyIHwgc3RyaW5nO1xuICAvLyByZXNvdXJjZXNcbiAgcmVhZG9ubHkgbGltaXRDcHU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxpbWl0TWVtb3J5Pzogc3RyaW5nO1xuICByZWFkb25seSByZXF1ZXN0Q3B1Pzogc3RyaW5nO1xuICByZWFkb25seSByZXF1ZXN0TWVtb3J5Pzogc3RyaW5nO1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IGtwbHVzLkVudjtcbiAgLy8gcmVhZGluZXNzIFByb2JlXG4gIHJlYWRvbmx5IHJlYWRpbmVzc0luaXRpYWxEZWxheVNlY29uZHM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlYWRpbmVzc0lpbWVvdXRTZWNvbmRzPzogbnVtYmVyO1xuICByZWFkb25seSByZWFkaW5lc3NQZXJpb2RTZWNvbmRzPzogbnVtYmVyO1xuICByZWFkb25seSByZWFkaW5lc3NTdWNjZXNzVGhyZXNob2xkPzogbnVtYmVyO1xuICByZWFkb25seSByZWFkaW5lc3NGYWlsdXJlVGhyZXNob2xkPzogbnVtYmVyO1xuICAvLyBsaXZlbmVzcyBQcm9iZVxuICByZWFkb25seSBsaXZlbmVzc0luaXRpYWxEZWxheVNlY29uZHM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGxpdmVuZXNzSWltZW91dFNlY29uZHM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGxpdmVuZXNzUGVyaW9kU2Vjb25kcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgbGl2ZW5lc3NTdWNjZXNzVGhyZXNob2xkPzogbnVtYmVyO1xuICByZWFkb25seSBsaXZlbmVzc0ZhaWx1cmVUaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBsb25lT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNpdGVJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgYmFja2VuZD86IFBsb25lQmFzZU9wdGlvbnM7XG4gIHJlYWRvbmx5IGZyb250ZW5kPzogUGxvbmVCYXNlT3B0aW9ucztcbiAgcmVhZG9ubHkgaW1hZ2VQdWxsU2VjcmV0cz86IHN0cmluZ1tdO1xuXG59XG5cbmV4cG9ydCBjbGFzcyBQbG9uZSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGJhY2tlbmRTZXJ2aWNlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZnJvbnRlbmRTZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEdlbmVyYWxcbiAgICBjb25zdCBzaXRlSWQgPSBvcHRpb25zLnNpdGVJZCA/PyAnUGxvbmUnO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQmFja2VuZFxuICAgIGNvbnN0IGJhY2tlbmQgPSBvcHRpb25zLmJhY2tlbmQgPz8ge307XG4gICAgY29uc3QgYmFja2VuZExhYmVscyA9IHtcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogJ3Bsb25lLWJhY2tlbmQnLFxuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCc6ICdiYWNrZW5kJyxcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby92ZXJzaW9uJzogb3B0aW9ucy52ZXJzaW9uID8/ICd1bmRlZmluZWQnLFxuICAgIH07XG4gICAgY29uc3QgYmFja2VuZFBvcnQgPSA4MDgwO1xuXG4gICAgLy8gUHJvYmluZ1xuICAgIGNvbnN0IGJhY2tlbmRBY3Rpb25IdHRwR2V0OiBrOHMuSHR0cEdldEFjdGlvbiA9IHtcbiAgICAgIHBhdGg6ICcvJyxcbiAgICAgIHBvcnQ6IEludE9yU3RyaW5nLmZyb21OdW1iZXIoYmFja2VuZFBvcnQpLFxuICAgIH07XG5cbiAgICBjb25zdCBiYWNrZW5kTGl2ZW5lc3NQcm9iZTogUHJvYmUgPSB7XG4gICAgICBodHRwR2V0OiBiYWNrZW5kQWN0aW9uSHR0cEdldCxcbiAgICAgIGluaXRpYWxEZWxheVNlY29uZHM6IGJhY2tlbmQubGl2ZW5lc3NJbml0aWFsRGVsYXlTZWNvbmRzID8/IDMwLFxuICAgICAgdGltZW91dFNlY29uZHM6IGJhY2tlbmQubGl2ZW5lc3NJaW1lb3V0U2Vjb25kcyA/PyA1LFxuICAgICAgcGVyaW9kU2Vjb25kczogYmFja2VuZC5saXZlbmVzc1BlcmlvZFNlY29uZHMgPz8gMTAsXG4gICAgICBzdWNjZXNzVGhyZXNob2xkOiBiYWNrZW5kLmxpdmVuZXNzU3VjY2Vzc1RocmVzaG9sZCA/PyAxLFxuICAgICAgZmFpbHVyZVRocmVzaG9sZDogYmFja2VuZC5saXZlbmVzc0ZhaWx1cmVUaHJlc2hvbGQgPz8gMyxcbiAgICB9O1xuICAgIGNvbnN0IGJhY2tlbmRSZWFkaW5lc3NQcm9iZTogUHJvYmUgPSB7XG4gICAgICBodHRwR2V0OiBiYWNrZW5kQWN0aW9uSHR0cEdldCxcbiAgICAgIGluaXRpYWxEZWxheVNlY29uZHM6IGJhY2tlbmQucmVhZGluZXNzSW5pdGlhbERlbGF5U2Vjb25kcyA/PyAxMCxcbiAgICAgIHRpbWVvdXRTZWNvbmRzOiBiYWNrZW5kLnJlYWRpbmVzc0lpbWVvdXRTZWNvbmRzID8/IDE1LFxuICAgICAgcGVyaW9kU2Vjb25kczogYmFja2VuZC5yZWFkaW5lc3NQZXJpb2RTZWNvbmRzID8/IDEwLFxuICAgICAgc3VjY2Vzc1RocmVzaG9sZDogYmFja2VuZC5yZWFkaW5lc3NTdWNjZXNzVGhyZXNob2xkID8/IDEsXG4gICAgICBmYWlsdXJlVGhyZXNob2xkOiBiYWNrZW5kLnJlYWRpbmVzc0ZhaWx1cmVUaHJlc2hvbGQgPz8gMyxcbiAgICB9O1xuXG4gICAgLy8gRGVwbG95bWVudFxuICAgIGNvbnN0IGJhY2tlbmREZXBsb3ltZW50ID0gbmV3IFBsb25lRGVwbG95bWVudCh0aGlzLCAnYmFja2VuZCcsIHtcbiAgICAgIGxhYmVsczogYmFja2VuZExhYmVscyxcbiAgICAgIGltYWdlOiB7XG4gICAgICAgIGltYWdlOiBiYWNrZW5kLmltYWdlID8/ICdwbG9uZS9wbG9uZS1iYWNrZW5kOmxhdGVzdCcsXG4gICAgICAgIGltYWdlUHVsbFNlY3JldHM6IG9wdGlvbnMuaW1hZ2VQdWxsU2VjcmV0cyA/PyBbXSxcbiAgICAgICAgaW1hZ2VQdWxsUG9saWN5OiBiYWNrZW5kLmltYWdlUHVsbFBvbGljeSA/PyAnSWZOb3RQcmVzZW50JyxcbiAgICAgIH0sXG4gICAgICByZXBsaWNhczogYmFja2VuZC5yZXBsaWNhcyxcbiAgICAgIGxpbWl0Q3B1OiBiYWNrZW5kLmxpbWl0Q3B1ID8/ICc1MDBtJyxcbiAgICAgIGxpbWl0TWVtb3J5OiBiYWNrZW5kLmxpbWl0TWVtb3J5ID8/ICc1MTJNaScsXG4gICAgICByZXF1ZXN0Q3B1OiBiYWNrZW5kLnJlcXVlc3RDcHUgPz8gJzIwMG0nLFxuICAgICAgcmVxdWVzdE1lbW9yeTogYmFja2VuZC5yZXF1ZXN0TWVtb3J5ID8/ICcyNTZNaScsXG4gICAgICBwZGI6IHtcbiAgICAgICAgbWF4VW5hdmFpbGFibGU6IGJhY2tlbmQubWF4VW5hdmFpbGFibGUgPz8gdW5kZWZpbmVkLFxuICAgICAgICBtaW5BdmFpbGFibGU6IGJhY2tlbmQubWluQXZhaWxhYmxlID8/IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBwb3J0OiBiYWNrZW5kUG9ydCxcbiAgICAgIGVudmlyb25tZW50OiBiYWNrZW5kLmVudmlyb25tZW50LFxuICAgICAgbGl2ZW5lc3NQcm9iZTogYmFja2VuZExpdmVuZXNzUHJvYmUsXG4gICAgICByZWFkaW5lc3NQcm9iZTogYmFja2VuZFJlYWRpbmVzc1Byb2JlLFxuICAgIH0pO1xuXG4gICAgLy8gU2VydmljZVxuICAgIGNvbnN0IGJhY2tlbmRTZXJ2aWNlID0gbmV3IFBsb25lU2VydmljZShiYWNrZW5kRGVwbG95bWVudCwgJ3NlcnZpY2UnLCB7XG4gICAgICBsYWJlbHM6IHtcbiAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiAncGxvbmUtYmFja2VuZC1zZXJ2aWNlJyxcbiAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCc6ICdzZXJ2aWNlJyxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRQb3J0OiBiYWNrZW5kUG9ydCxcbiAgICAgIHNlbGVjdG9yTGFiZWw6IHsgYXBwOiBOYW1lcy50b0xhYmVsVmFsdWUoYmFja2VuZERlcGxveW1lbnQpIH0sXG4gICAgfSk7XG4gICAgdGhpcy5iYWNrZW5kU2VydmljZU5hbWUgPSBiYWNrZW5kU2VydmljZS5uYW1lO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gRnJvbnRlbmRcbiAgICBjb25zdCBmcm9udGVuZCA9IG9wdGlvbnMuZnJvbnRlbmQgPz8ge307XG4gICAgY29uc3QgZnJvbnRlbmRQb3J0ID0gMzAwMDtcbiAgICBjb25zdCBmcm9udGVuZExhYmVscyA9IHtcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogJ3Bsb25lLWZyb250ZW5kJyxcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQnOiAnZnJvbnRlbmQnLFxuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL3ZlcnNpb24nOiBvcHRpb25zLnZlcnNpb24gPz8gJ3VuZGVmaW5lZCcsXG4gICAgfTtcblxuICAgIC8vIFByb2JpbmdcbiAgICBjb25zdCBmcm9udGVuZEFjdGlvbkh0dHBHZXQ6IGs4cy5IdHRwR2V0QWN0aW9uID0ge1xuICAgICAgcGF0aDogJy8nLFxuICAgICAgcG9ydDogSW50T3JTdHJpbmcuZnJvbU51bWJlcihmcm9udGVuZFBvcnQpLFxuICAgIH07XG4gICAgY29uc3QgZnJvbnRlbmRMaXZlbmVzc1Byb2JlOiBQcm9iZSA9IHtcbiAgICAgIGh0dHBHZXQ6IGZyb250ZW5kQWN0aW9uSHR0cEdldCxcbiAgICAgIGluaXRpYWxEZWxheVNlY29uZHM6IGZyb250ZW5kLmxpdmVuZXNzSW5pdGlhbERlbGF5U2Vjb25kcyA/PyAzMCxcbiAgICAgIHRpbWVvdXRTZWNvbmRzOiBmcm9udGVuZC5saXZlbmVzc0lpbWVvdXRTZWNvbmRzID8/IDUsXG4gICAgICBwZXJpb2RTZWNvbmRzOiBmcm9udGVuZC5saXZlbmVzc1BlcmlvZFNlY29uZHMgPz8gMTAsXG4gICAgICBzdWNjZXNzVGhyZXNob2xkOiBmcm9udGVuZC5saXZlbmVzc1N1Y2Nlc3NUaHJlc2hvbGQgPz8gMSxcbiAgICAgIGZhaWx1cmVUaHJlc2hvbGQ6IGZyb250ZW5kLmxpdmVuZXNzRmFpbHVyZVRocmVzaG9sZCA/PyAzLFxuICAgIH07XG4gICAgY29uc3QgZnJvbnRlbmRSZWFkaW5lc3NQcm9iZTogUHJvYmUgPSB7XG4gICAgICBodHRwR2V0OiBmcm9udGVuZEFjdGlvbkh0dHBHZXQsXG4gICAgICBpbml0aWFsRGVsYXlTZWNvbmRzOiBmcm9udGVuZC5yZWFkaW5lc3NJbml0aWFsRGVsYXlTZWNvbmRzID8/IDEwLFxuICAgICAgdGltZW91dFNlY29uZHM6IGZyb250ZW5kLnJlYWRpbmVzc0lpbWVvdXRTZWNvbmRzID8/IDE1LFxuICAgICAgcGVyaW9kU2Vjb25kczogZnJvbnRlbmQucmVhZGluZXNzUGVyaW9kU2Vjb25kcyA/PyAxMCxcbiAgICAgIHN1Y2Nlc3NUaHJlc2hvbGQ6IGZyb250ZW5kLnJlYWRpbmVzc1N1Y2Nlc3NUaHJlc2hvbGQgPz8gMSxcbiAgICAgIGZhaWx1cmVUaHJlc2hvbGQ6IGZyb250ZW5kLnJlYWRpbmVzc0ZhaWx1cmVUaHJlc2hvbGQgPz8gMyxcbiAgICB9O1xuXG4gICAgLy8gRW52aXJvbm1lbnQgZm9yIFJBWlpMRVxuICAgIHZhciBmcm9udGVuZEVudmlyb25tZW50ID0gZnJvbnRlbmQuZW52aXJvbm1lbnQgPz8gbmV3IGtwbHVzLkVudihbXSwge30pO1xuICAgIGlmIChmcm9udGVuZEVudmlyb25tZW50LnZhcmlhYmxlcy5SQVpaTEVfSU5URVJOQUxfQVBJX1BBVEggPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gY29ubmVjdCB3aXRoIGJhY2tlbmQgc2VydmljZVxuICAgICAgZnJvbnRlbmRFbnZpcm9ubWVudD8uYWRkVmFyaWFibGUoJ1JBWlpMRV9JTlRFUk5BTF9BUElfUEFUSCcsIGtwbHVzLkVudlZhbHVlLmZyb21WYWx1ZShgaHR0cDovLyR7YmFja2VuZFNlcnZpY2UubmFtZX06JHtiYWNrZW5kUG9ydH0vJHtzaXRlSWR9YCkpO1xuICAgIH1cblxuICAgIC8vIERlcGxveW1lbnRcbiAgICBjb25zdCBmcm9udGVuZERlcGxveW1lbnQgPSBuZXcgUGxvbmVEZXBsb3ltZW50KHRoaXMsICdmcm9udGVuZCcsIHtcbiAgICAgIGxhYmVsczogZnJvbnRlbmRMYWJlbHMsXG4gICAgICBpbWFnZToge1xuICAgICAgICBpbWFnZTogZnJvbnRlbmQuaW1hZ2UgPz8gJ3Bsb25lL3Bsb25lLWZyb250ZW5kOmxhdGVzdCcsXG4gICAgICAgIGltYWdlUHVsbFNlY3JldHM6IG9wdGlvbnMuaW1hZ2VQdWxsU2VjcmV0cyA/PyBbXSxcbiAgICAgICAgaW1hZ2VQdWxsUG9saWN5OiBmcm9udGVuZC5pbWFnZVB1bGxQb2xpY3kgPz8gJ0lmTm90UHJlc2VudCcsXG4gICAgICB9LFxuICAgICAgcmVwbGljYXM6IGZyb250ZW5kLnJlcGxpY2FzLFxuICAgICAgbGltaXRDcHU6IGZyb250ZW5kLmxpbWl0Q3B1ID8/ICc1MDBtJyxcbiAgICAgIGxpbWl0TWVtb3J5OiBmcm9udGVuZC5saW1pdE1lbW9yeSA/PyAnMUdpJyxcbiAgICAgIHJlcXVlc3RDcHU6IGJhY2tlbmQucmVxdWVzdENwdSA/PyAnMjAwbScsXG4gICAgICByZXF1ZXN0TWVtb3J5OiBiYWNrZW5kLnJlcXVlc3RNZW1vcnkgPz8gJzI1Nk1pJyxcblxuICAgICAgcGRiOiB7XG4gICAgICAgIG1heFVuYXZhaWxhYmxlOiBmcm9udGVuZC5tYXhVbmF2YWlsYWJsZSA/PyB1bmRlZmluZWQsXG4gICAgICAgIG1pbkF2YWlsYWJsZTogZnJvbnRlbmQubWluQXZhaWxhYmxlID8/IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBwb3J0OiBmcm9udGVuZFBvcnQsXG4gICAgICBlbnZpcm9ubWVudDogZnJvbnRlbmRFbnZpcm9ubWVudCxcbiAgICAgIGxpdmVuZXNzUHJvYmU6IGZyb250ZW5kTGl2ZW5lc3NQcm9iZSxcbiAgICAgIHJlYWRpbmVzc1Byb2JlOiBmcm9udGVuZFJlYWRpbmVzc1Byb2JlLFxuICAgIH0pO1xuXG4gICAgLy8gU2VydmljZVxuICAgIGNvbnN0IGZyb250ZW5kU2VydmljZSA9IG5ldyBQbG9uZVNlcnZpY2UoZnJvbnRlbmREZXBsb3ltZW50LCAnc2VydmljZScsIHtcbiAgICAgIGxhYmVsczoge1xuICAgICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSc6ICdwbG9uZS1mcm9udGVuZC1zZXJ2aWNlJyxcbiAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCc6ICdzZXJ2aWNlJyxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRQb3J0OiBmcm9udGVuZFBvcnQsXG4gICAgICBzZWxlY3RvckxhYmVsOiB7IGFwcDogTmFtZXMudG9MYWJlbFZhbHVlKGZyb250ZW5kRGVwbG95bWVudCkgfSxcbiAgICB9KTtcbiAgICB0aGlzLmZyb250ZW5kU2VydmljZU5hbWUgPSBmcm9udGVuZFNlcnZpY2UubmFtZTtcbiAgfVxufSJdfQ==
package/package.json CHANGED
@@ -75,7 +75,7 @@
75
75
  "publishConfig": {
76
76
  "access": "public"
77
77
  },
78
- "version": "0.0.15",
78
+ "version": "0.0.17",
79
79
  "jest": {
80
80
  "coverageProvider": "v8",
81
81
  "testMatch": [