@mavogel/mvc-projen 0.0.8 → 0.0.10
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 +6 -6
- package/API.md +95 -7
- package/CLAUDE.md +201 -0
- package/lib/projects/cdk-construct.js +5 -5
- package/mavogelmvcprojen/MvcCdkConstructLibrary.go +28 -0
- package/mavogelmvcprojen/MvcCdkConstructLibraryOptions.go +37 -5
- package/mavogelmvcprojen/go.mod +3 -3
- package/mavogelmvcprojen/jsii/jsii.go +2 -2
- package/mavogelmvcprojen/main.go +2 -0
- package/mavogelmvcprojen/version +1 -1
- package/package.json +8 -9
package/.jsii
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"constructs": "^10.4.2",
|
|
11
|
-
"projen": "0.
|
|
11
|
+
"projen": "0.96.5"
|
|
12
12
|
},
|
|
13
13
|
"dependencyClosure": {
|
|
14
14
|
"constructs": {
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
"projen.gitlab": {},
|
|
50
50
|
"projen.java": {},
|
|
51
51
|
"projen.javascript": {},
|
|
52
|
+
"projen.javascript.biome_config": {},
|
|
52
53
|
"projen.python": {},
|
|
53
54
|
"projen.release": {},
|
|
54
55
|
"projen.typescript": {},
|
|
@@ -81,13 +82,12 @@
|
|
|
81
82
|
"stability": "stable"
|
|
82
83
|
},
|
|
83
84
|
"homepage": "https://github.com/MV-Consulting/mvc-projen",
|
|
84
|
-
"jsiiVersion": "5.
|
|
85
|
+
"jsiiVersion": "5.8.21 (build 0b7c0ba)",
|
|
85
86
|
"keywords": [
|
|
86
87
|
"aws",
|
|
87
88
|
"cdk",
|
|
88
89
|
"construct",
|
|
89
|
-
"
|
|
90
|
-
"vscode"
|
|
90
|
+
"projen"
|
|
91
91
|
],
|
|
92
92
|
"license": "Apache-2.0",
|
|
93
93
|
"metadata": {
|
|
@@ -219,6 +219,6 @@
|
|
|
219
219
|
"symbolId": "src/projects/cdk-construct:MvcCdkConstructLibraryOptions"
|
|
220
220
|
}
|
|
221
221
|
},
|
|
222
|
-
"version": "0.0.
|
|
223
|
-
"fingerprint": "
|
|
222
|
+
"version": "0.0.10",
|
|
223
|
+
"fingerprint": "mo3wfXKOJ52Ca2gJYoAFs1jtzA8SzqNg7Ck6+F/GOhA="
|
|
224
224
|
}
|
package/API.md
CHANGED
|
@@ -738,6 +738,7 @@ When given a project, this it the project itself.
|
|
|
738
738
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibrary.property.packageManager">packageManager</a></code> | <code>projen.javascript.NodePackageManager</code> | The package manager to use. |
|
|
739
739
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibrary.property.runScriptCommand">runScriptCommand</a></code> | <code>string</code> | The command to use to run scripts (e.g. `yarn run` or `npm run` depends on the package manager). |
|
|
740
740
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibrary.property.autoMerge">autoMerge</a></code> | <code>projen.github.AutoMerge</code> | Component that sets up mergify for merging approved pull requests. |
|
|
741
|
+
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibrary.property.biome">biome</a></code> | <code>projen.javascript.Biome</code> | *No description.* |
|
|
741
742
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibrary.property.buildWorkflow">buildWorkflow</a></code> | <code>projen.build.BuildWorkflow</code> | The PR build GitHub workflow. |
|
|
742
743
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibrary.property.buildWorkflowJobId">buildWorkflowJobId</a></code> | <code>string</code> | The job ID of the build workflow. |
|
|
743
744
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibrary.property.jest">jest</a></code> | <code>projen.javascript.Jest</code> | The Jest configuration (if enabled). |
|
|
@@ -1275,6 +1276,16 @@ Component that sets up mergify for merging approved pull requests.
|
|
|
1275
1276
|
|
|
1276
1277
|
---
|
|
1277
1278
|
|
|
1279
|
+
##### `biome`<sup>Optional</sup> <a name="biome" id="@mavogel/mvc-projen.MvcCdkConstructLibrary.property.biome"></a>
|
|
1280
|
+
|
|
1281
|
+
```typescript
|
|
1282
|
+
public readonly biome: Biome;
|
|
1283
|
+
```
|
|
1284
|
+
|
|
1285
|
+
- *Type:* projen.javascript.Biome
|
|
1286
|
+
|
|
1287
|
+
---
|
|
1288
|
+
|
|
1278
1289
|
##### `buildWorkflow`<sup>Optional</sup> <a name="buildWorkflow" id="@mavogel/mvc-projen.MvcCdkConstructLibrary.property.buildWorkflow"></a>
|
|
1279
1290
|
|
|
1280
1291
|
```typescript
|
|
@@ -1656,6 +1667,7 @@ const mvcCdkConstructLibraryOptions: MvcCdkConstructLibraryOptions = { ... }
|
|
|
1656
1667
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.npmRegistry">npmRegistry</a></code> | <code>string</code> | The host name of the npm registry to publish to. |
|
|
1657
1668
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.npmRegistryUrl">npmRegistryUrl</a></code> | <code>string</code> | The base URL of the npm package registry. |
|
|
1658
1669
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.npmTokenSecret">npmTokenSecret</a></code> | <code>string</code> | GitHub secret which contains the NPM token to use when publishing packages. |
|
|
1670
|
+
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.npmTrustedPublishing">npmTrustedPublishing</a></code> | <code>boolean</code> | Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work. |
|
|
1659
1671
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.packageManager">packageManager</a></code> | <code>projen.javascript.NodePackageManager</code> | The Node Package Manager used to execute scripts. |
|
|
1660
1672
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.packageName">packageName</a></code> | <code>string</code> | The "name" in package.json. |
|
|
1661
1673
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.peerDependencyOptions">peerDependencyOptions</a></code> | <code>projen.javascript.PeerDependencyOptions</code> | Options for `peerDeps`. |
|
|
@@ -1679,12 +1691,14 @@ const mvcCdkConstructLibraryOptions: MvcCdkConstructLibraryOptions = { ... }
|
|
|
1679
1691
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.publishTasks">publishTasks</a></code> | <code>boolean</code> | Define publishing tasks that can be executed manually as well as workflows. |
|
|
1680
1692
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releasableCommits">releasableCommits</a></code> | <code>projen.ReleasableCommits</code> | Find commits that should be considered releasable Used to decide if a release is required. |
|
|
1681
1693
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseBranches">releaseBranches</a></code> | <code>{[ key: string ]: projen.release.BranchOptions}</code> | Defines additional release branches. |
|
|
1694
|
+
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseEnvironment">releaseEnvironment</a></code> | <code>string</code> | The GitHub Actions environment used for the release. |
|
|
1682
1695
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseEveryCommit">releaseEveryCommit</a></code> | <code>boolean</code> | Automatically release new versions every commit to one of branches in `releaseBranches`. |
|
|
1683
1696
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseFailureIssue">releaseFailureIssue</a></code> | <code>boolean</code> | Create a github issue on every failed publishing task. |
|
|
1684
1697
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseFailureIssueLabel">releaseFailureIssueLabel</a></code> | <code>string</code> | The label to apply to issues indicating publish failures. |
|
|
1685
1698
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseSchedule">releaseSchedule</a></code> | <code>string</code> | CRON schedule to trigger new releases. |
|
|
1686
1699
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseTagPrefix">releaseTagPrefix</a></code> | <code>string</code> | Automatically add the given prefix to release tags. Useful if you are releasing on multiple branches with overlapping version numbers. |
|
|
1687
1700
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseTrigger">releaseTrigger</a></code> | <code>projen.release.ReleaseTrigger</code> | The release trigger to use. |
|
|
1701
|
+
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseWorkflowEnv">releaseWorkflowEnv</a></code> | <code>{[ key: string ]: string}</code> | Build environment variables for release workflows. |
|
|
1688
1702
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseWorkflowName">releaseWorkflowName</a></code> | <code>string</code> | The name of the default release workflow. |
|
|
1689
1703
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseWorkflowSetupSteps">releaseWorkflowSetupSteps</a></code> | <code>projen.github.workflows.JobStep[]</code> | A set of workflow steps to execute in order to setup the workflow container. |
|
|
1690
1704
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.versionrcOptions">versionrcOptions</a></code> | <code>{[ key: string ]: any}</code> | Custom configuration used when creating changelog with commit-and-tag-version package. |
|
|
@@ -1694,13 +1708,15 @@ const mvcCdkConstructLibraryOptions: MvcCdkConstructLibraryOptions = { ... }
|
|
|
1694
1708
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.defaultReleaseBranch">defaultReleaseBranch</a></code> | <code>string</code> | The name of the main release branch. |
|
|
1695
1709
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.artifactsDirectory">artifactsDirectory</a></code> | <code>string</code> | A directory which will contain build artifacts. |
|
|
1696
1710
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.autoApproveUpgrades">autoApproveUpgrades</a></code> | <code>boolean</code> | Automatically approve deps upgrade PRs, allowing them to be merged by mergify (if configued). |
|
|
1711
|
+
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.biome">biome</a></code> | <code>boolean</code> | Setup Biome. |
|
|
1712
|
+
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.biomeOptions">biomeOptions</a></code> | <code>projen.javascript.BiomeOptions</code> | Biome options. |
|
|
1697
1713
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.buildWorkflow">buildWorkflow</a></code> | <code>boolean</code> | Define a GitHub workflow for building PRs. |
|
|
1698
1714
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.buildWorkflowOptions">buildWorkflowOptions</a></code> | <code>projen.javascript.BuildWorkflowOptions</code> | Options for PR build workflow. |
|
|
1699
1715
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.buildWorkflowTriggers">buildWorkflowTriggers</a></code> | <code>projen.github.workflows.Triggers</code> | Build workflow triggers. |
|
|
1700
1716
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.bundlerOptions">bundlerOptions</a></code> | <code>projen.javascript.BundlerOptions</code> | Options for `Bundler`. |
|
|
1701
1717
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.checkLicenses">checkLicenses</a></code> | <code>projen.javascript.LicenseCheckerOptions</code> | Configure which licenses should be deemed acceptable for use by dependencies. |
|
|
1702
|
-
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.codeCov">codeCov</a></code> | <code>boolean</code> | Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@
|
|
1703
|
-
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.codeCovTokenSecret">codeCovTokenSecret</a></code> | <code>string</code> | Define the secret name for a specified https://codecov.io/ token
|
|
1718
|
+
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.codeCov">codeCov</a></code> | <code>boolean</code> | Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v5 By default, OIDC auth is used. Alternatively a token can be provided via `codeCovTokenSecret`. |
|
|
1719
|
+
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.codeCovTokenSecret">codeCovTokenSecret</a></code> | <code>string</code> | Define the secret name for a specified https://codecov.io/ token. |
|
|
1704
1720
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.copyrightOwner">copyrightOwner</a></code> | <code>string</code> | License copyright owner. |
|
|
1705
1721
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.copyrightPeriod">copyrightPeriod</a></code> | <code>string</code> | The copyright years to put in the LICENSE file. |
|
|
1706
1722
|
| <code><a href="#@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.dependabot">dependabot</a></code> | <code>boolean</code> | Use dependabot to handle dependency upgrades. |
|
|
@@ -2628,6 +2644,19 @@ GitHub secret which contains the NPM token to use when publishing packages.
|
|
|
2628
2644
|
|
|
2629
2645
|
---
|
|
2630
2646
|
|
|
2647
|
+
##### `npmTrustedPublishing`<sup>Optional</sup> <a name="npmTrustedPublishing" id="@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.npmTrustedPublishing"></a>
|
|
2648
|
+
|
|
2649
|
+
```typescript
|
|
2650
|
+
public readonly npmTrustedPublishing: boolean;
|
|
2651
|
+
```
|
|
2652
|
+
|
|
2653
|
+
- *Type:* boolean
|
|
2654
|
+
- *Default:* false
|
|
2655
|
+
|
|
2656
|
+
Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work.
|
|
2657
|
+
|
|
2658
|
+
---
|
|
2659
|
+
|
|
2631
2660
|
##### `packageManager`<sup>Optional</sup> <a name="packageManager" id="@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.packageManager"></a>
|
|
2632
2661
|
|
|
2633
2662
|
```typescript
|
|
@@ -2869,6 +2898,7 @@ environment:
|
|
|
2869
2898
|
- Working directory: the project directory.
|
|
2870
2899
|
- `$VERSION`: the current version. Looks like `1.2.3`.
|
|
2871
2900
|
- `$LATEST_TAG`: the most recent tag. Looks like `prefix-v1.2.3`, or may be unset.
|
|
2901
|
+
- `$SUGGESTED_BUMP`: the suggested bump action based on commits. One of `major|minor|patch|none`.
|
|
2872
2902
|
|
|
2873
2903
|
The command should print one of the following to `stdout`:
|
|
2874
2904
|
|
|
@@ -2986,6 +3016,25 @@ be provided for the default branch.
|
|
|
2986
3016
|
|
|
2987
3017
|
---
|
|
2988
3018
|
|
|
3019
|
+
##### `releaseEnvironment`<sup>Optional</sup> <a name="releaseEnvironment" id="@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseEnvironment"></a>
|
|
3020
|
+
|
|
3021
|
+
```typescript
|
|
3022
|
+
public readonly releaseEnvironment: string;
|
|
3023
|
+
```
|
|
3024
|
+
|
|
3025
|
+
- *Type:* string
|
|
3026
|
+
- *Default:* no environment used, unless set at the artifact level
|
|
3027
|
+
|
|
3028
|
+
The GitHub Actions environment used for the release.
|
|
3029
|
+
|
|
3030
|
+
This can be used to add an explicit approval step to the release
|
|
3031
|
+
or limit who can initiate a release through environment protection rules.
|
|
3032
|
+
|
|
3033
|
+
When multiple artifacts are released, the environment can be overwritten
|
|
3034
|
+
on a per artifact basis.
|
|
3035
|
+
|
|
3036
|
+
---
|
|
3037
|
+
|
|
2989
3038
|
##### ~~`releaseEveryCommit`~~<sup>Optional</sup> <a name="releaseEveryCommit" id="@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseEveryCommit"></a>
|
|
2990
3039
|
|
|
2991
3040
|
- *Deprecated:* Use `releaseTrigger: ReleaseTrigger.continuous()` instead
|
|
@@ -3075,6 +3124,19 @@ The release trigger to use.
|
|
|
3075
3124
|
|
|
3076
3125
|
---
|
|
3077
3126
|
|
|
3127
|
+
##### `releaseWorkflowEnv`<sup>Optional</sup> <a name="releaseWorkflowEnv" id="@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseWorkflowEnv"></a>
|
|
3128
|
+
|
|
3129
|
+
```typescript
|
|
3130
|
+
public readonly releaseWorkflowEnv: {[ key: string ]: string};
|
|
3131
|
+
```
|
|
3132
|
+
|
|
3133
|
+
- *Type:* {[ key: string ]: string}
|
|
3134
|
+
- *Default:* {}
|
|
3135
|
+
|
|
3136
|
+
Build environment variables for release workflows.
|
|
3137
|
+
|
|
3138
|
+
---
|
|
3139
|
+
|
|
3078
3140
|
##### `releaseWorkflowName`<sup>Optional</sup> <a name="releaseWorkflowName" id="@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.releaseWorkflowName"></a>
|
|
3079
3141
|
|
|
3080
3142
|
```typescript
|
|
@@ -3194,6 +3256,32 @@ Throw if set to true but `autoApproveOptions` are not defined.
|
|
|
3194
3256
|
|
|
3195
3257
|
---
|
|
3196
3258
|
|
|
3259
|
+
##### `biome`<sup>Optional</sup> <a name="biome" id="@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.biome"></a>
|
|
3260
|
+
|
|
3261
|
+
```typescript
|
|
3262
|
+
public readonly biome: boolean;
|
|
3263
|
+
```
|
|
3264
|
+
|
|
3265
|
+
- *Type:* boolean
|
|
3266
|
+
- *Default:* false
|
|
3267
|
+
|
|
3268
|
+
Setup Biome.
|
|
3269
|
+
|
|
3270
|
+
---
|
|
3271
|
+
|
|
3272
|
+
##### `biomeOptions`<sup>Optional</sup> <a name="biomeOptions" id="@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.biomeOptions"></a>
|
|
3273
|
+
|
|
3274
|
+
```typescript
|
|
3275
|
+
public readonly biomeOptions: BiomeOptions;
|
|
3276
|
+
```
|
|
3277
|
+
|
|
3278
|
+
- *Type:* projen.javascript.BiomeOptions
|
|
3279
|
+
- *Default:* default options
|
|
3280
|
+
|
|
3281
|
+
Biome options.
|
|
3282
|
+
|
|
3283
|
+
---
|
|
3284
|
+
|
|
3197
3285
|
##### `buildWorkflow`<sup>Optional</sup> <a name="buildWorkflow" id="@mavogel/mvc-projen.MvcCdkConstructLibraryOptions.property.buildWorkflow"></a>
|
|
3198
3286
|
|
|
3199
3287
|
```typescript
|
|
@@ -3270,7 +3358,7 @@ public readonly codeCov: boolean;
|
|
|
3270
3358
|
- *Type:* boolean
|
|
3271
3359
|
- *Default:* false
|
|
3272
3360
|
|
|
3273
|
-
Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@
|
|
3361
|
+
Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v5 By default, OIDC auth is used. Alternatively a token can be provided via `codeCovTokenSecret`.
|
|
3274
3362
|
|
|
3275
3363
|
---
|
|
3276
3364
|
|
|
@@ -3281,9 +3369,9 @@ public readonly codeCovTokenSecret: string;
|
|
|
3281
3369
|
```
|
|
3282
3370
|
|
|
3283
3371
|
- *Type:* string
|
|
3284
|
-
- *Default:*
|
|
3372
|
+
- *Default:* OIDC auth is used
|
|
3285
3373
|
|
|
3286
|
-
Define the secret name for a specified https://codecov.io/ token
|
|
3374
|
+
Define the secret name for a specified https://codecov.io/ token.
|
|
3287
3375
|
|
|
3288
3376
|
---
|
|
3289
3377
|
|
|
@@ -3751,7 +3839,7 @@ public readonly eslint: boolean;
|
|
|
3751
3839
|
```
|
|
3752
3840
|
|
|
3753
3841
|
- *Type:* boolean
|
|
3754
|
-
- *Default:* true
|
|
3842
|
+
- *Default:* true, unless biome is enabled
|
|
3755
3843
|
|
|
3756
3844
|
Setup eslint.
|
|
3757
3845
|
|
|
@@ -4050,7 +4138,7 @@ public readonly jsiiVersion: string;
|
|
|
4050
4138
|
```
|
|
4051
4139
|
|
|
4052
4140
|
- *Type:* string
|
|
4053
|
-
- *Default:* "~5.
|
|
4141
|
+
- *Default:* "~5.8.0"
|
|
4054
4142
|
|
|
4055
4143
|
Version of the jsii compiler to use.
|
|
4056
4144
|
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Repository Overview
|
|
6
|
+
|
|
7
|
+
`mvc-projen` is a baseline projen module for MV Consulting projects, providing scaffolding templates for AWS CDK constructs with best practices and unified setup. The project is built using [projen](https://projen.io/) and uses JSII to compile TypeScript into multiple target languages (Python, Go).
|
|
8
|
+
|
|
9
|
+
## Core Architecture
|
|
10
|
+
|
|
11
|
+
### Project Structure
|
|
12
|
+
- **src/projects/cdk-construct.ts**: Main class `MvcCdkConstructLibrary` that extends `AwsCdkConstructLibrary` from projen
|
|
13
|
+
- Configures opinionated defaults: Node 20.x, commitlint, husky, awslint, dependabot, ESLint
|
|
14
|
+
- Generates GitHub workflows, issue templates, pull request templates, and funding configuration
|
|
15
|
+
- Includes `SampleCode` component that generates boilerplate code, tests, and integration tests
|
|
16
|
+
- **assets/**: Template files for generated projects
|
|
17
|
+
- `cdk-construct/`: TypeScript templates for constructs, lambdas, tests, and integration tests
|
|
18
|
+
- `common/`: Reusable GitHub templates (bug reports, feature requests, PR templates, contributing guide)
|
|
19
|
+
- **src/index.ts**: Exports all projects from src/projects
|
|
20
|
+
|
|
21
|
+
### Key Design Patterns
|
|
22
|
+
1. **Asset-based Generation**: Template files in `assets/` directory are copied into generated projects during synthesis
|
|
23
|
+
2. **Dynamic Configuration**: Base assets directory defaults to `${cwd()}/node_modules/@mavogel/mvc-projen/assets` but can be overridden
|
|
24
|
+
3. **Workflow Modification**: Post-processes GitHub workflows to inject custom build steps (awslint)
|
|
25
|
+
4. **Multi-language Publishing**: Uses JSII to publish to npm (JavaScript/TypeScript), PyPI (Python), and Go modules
|
|
26
|
+
|
|
27
|
+
## Common Development Commands
|
|
28
|
+
|
|
29
|
+
### Building and Testing
|
|
30
|
+
```bash
|
|
31
|
+
# Install dependencies and build project
|
|
32
|
+
npm run build
|
|
33
|
+
|
|
34
|
+
# Run tests with coverage
|
|
35
|
+
npm test
|
|
36
|
+
|
|
37
|
+
# Run tests in watch mode
|
|
38
|
+
npm run test:watch
|
|
39
|
+
|
|
40
|
+
# Lint code
|
|
41
|
+
npm run eslint
|
|
42
|
+
|
|
43
|
+
# Compile TypeScript only (without full build)
|
|
44
|
+
npm run compile
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Packaging and Publishing
|
|
48
|
+
```bash
|
|
49
|
+
# Package for all targets (npm, Python, Go)
|
|
50
|
+
npm run package-all
|
|
51
|
+
|
|
52
|
+
# Package individual targets
|
|
53
|
+
npm run package:js
|
|
54
|
+
npm run package:python
|
|
55
|
+
npm run package:go
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Release Management
|
|
59
|
+
```bash
|
|
60
|
+
# Create a new release (triggered by CI on main branch)
|
|
61
|
+
npm run release
|
|
62
|
+
|
|
63
|
+
# Bump version manually
|
|
64
|
+
npm run bump
|
|
65
|
+
|
|
66
|
+
# Revert version bump
|
|
67
|
+
npm run unbump
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Projen Maintenance
|
|
71
|
+
```bash
|
|
72
|
+
# Regenerate project files from .projenrc.ts
|
|
73
|
+
npx projen
|
|
74
|
+
|
|
75
|
+
# Remove all generated files and dependencies
|
|
76
|
+
npm run clobber
|
|
77
|
+
|
|
78
|
+
# Run default projen task
|
|
79
|
+
npm run default
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Using mvc-projen to Create New Projects
|
|
83
|
+
```bash
|
|
84
|
+
# Create new CDK construct project
|
|
85
|
+
mkdir my-new-construct && cd my-new-construct
|
|
86
|
+
npx projen new \
|
|
87
|
+
--from @mavogel/mvc-projen@~0 \
|
|
88
|
+
--cdkVersion=2.177.0 \
|
|
89
|
+
--package-manager=npm
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Important Configuration Details
|
|
93
|
+
|
|
94
|
+
### Projen Configuration (.projenrc.ts)
|
|
95
|
+
- **jsiiVersion**: Currently `~5.7.0` - must stay in sync with dependencies
|
|
96
|
+
- **projenVersion**: Currently `0.91.8` - pinned for stability
|
|
97
|
+
- **Node version**: 20.x minimum
|
|
98
|
+
- **Commit types**: Uses conventional commits with specific allowed types (feat, fix, chore, refactor, perf, docs, style, test, build, ci)
|
|
99
|
+
- **Dependencies**: Both `projen` and `constructs` are listed in deps and peerDeps to ensure compatibility
|
|
100
|
+
|
|
101
|
+
### Generated Project Defaults (MvcCdkConstructLibrary)
|
|
102
|
+
When using `MvcCdkConstructLibrary`, projects get these defaults:
|
|
103
|
+
- **Copyright**: MV Consulting GmbH, 2025
|
|
104
|
+
- **License**: Apache-2.0
|
|
105
|
+
- **Node**: 20.x runtime
|
|
106
|
+
- **Lambda Runtime**: NODEJS_20_X
|
|
107
|
+
- **Package Manager**: npm
|
|
108
|
+
- **Auto-approve**: Configured for dependabot and bot accounts using `PROJEN_GITHUB_TOKEN` secret
|
|
109
|
+
- **Dependabot**: Weekly schedule, excludes aws-cdk-lib and aws-cdk from updates
|
|
110
|
+
- **Integration tests**: Configured for eu-west-1 and eu-west-2 regions by default
|
|
111
|
+
- **Build workflow**: Includes awslint step after compilation
|
|
112
|
+
|
|
113
|
+
### Git and Commits
|
|
114
|
+
- **Husky**: Pre-commit hooks configured via `npm run prepare`
|
|
115
|
+
- **Commitlint**: Enforces conventional commit messages via `.commitlintrc.js`
|
|
116
|
+
- **Conventional commits**: Semantic PR titles required, release notes generated from commit types
|
|
117
|
+
- **Releasable commits**: Only feat, fix, chore, refactor, and perf trigger releases
|
|
118
|
+
|
|
119
|
+
## Testing Strategy
|
|
120
|
+
|
|
121
|
+
### Unit Tests (test/)
|
|
122
|
+
- Uses Jest with ts-jest transformer
|
|
123
|
+
- Coverage reports in multiple formats (json, lcov, clover, cobertura, text)
|
|
124
|
+
- Test patterns: `**/*(*.)@(spec|test).ts?(x)` and `**/__tests__/**/*.ts?(x)`
|
|
125
|
+
- Configuration in package.json jest section
|
|
126
|
+
|
|
127
|
+
### Integration Tests (Generated Projects)
|
|
128
|
+
- Uses `@aws-cdk/integ-runner` and `@aws-cdk/integ-tests-alpha`
|
|
129
|
+
- Run via: `npm run integ-test`
|
|
130
|
+
- Tests deployed to AWS regions specified in `integTestRegions` option
|
|
131
|
+
- Updates snapshots on failure with `--update-on-failed`
|
|
132
|
+
|
|
133
|
+
## JSII Multi-language Support
|
|
134
|
+
|
|
135
|
+
### Publishing Targets
|
|
136
|
+
- **JavaScript/TypeScript**: npm registry as `@mavogel/mvc-projen`
|
|
137
|
+
- **Python**: PyPI as `mvc-projen` module
|
|
138
|
+
- **Go**: GitHub module at `github.com/MV-Consulting/mvc-projen`
|
|
139
|
+
|
|
140
|
+
### Important JSII Constraints
|
|
141
|
+
- All public APIs must be JSII-compatible (no TypeScript-only features)
|
|
142
|
+
- Use `readonly` for immutable properties
|
|
143
|
+
- Interface names should start with capital letter
|
|
144
|
+
- Enums must use PascalCase values
|
|
145
|
+
|
|
146
|
+
## Common Development Tasks
|
|
147
|
+
|
|
148
|
+
### Modifying Generated Templates
|
|
149
|
+
1. Edit files in `assets/cdk-construct/` or `assets/common/`
|
|
150
|
+
2. Run `npx projen` to regenerate
|
|
151
|
+
3. Run tests to verify changes: `npm test`
|
|
152
|
+
4. Create a test project to verify end-to-end: `npx projen new --from @mavogel/mvc-projen@~0`
|
|
153
|
+
|
|
154
|
+
### Adding New Project Types
|
|
155
|
+
1. Create new class in `src/projects/` extending appropriate projen base class
|
|
156
|
+
2. Export from `src/projects/index.ts`
|
|
157
|
+
3. Add corresponding assets directory if needed
|
|
158
|
+
4. Update tests to cover new project type
|
|
159
|
+
5. Document in README.md
|
|
160
|
+
|
|
161
|
+
### Updating Projen Version
|
|
162
|
+
1. Update `projenVersion` in `.projenrc.ts`
|
|
163
|
+
2. Update version in `dependencies` and `peerDependencies` arrays
|
|
164
|
+
3. Run `npm run clobber && npm install`
|
|
165
|
+
4. Run `npx projen` to regenerate with new version
|
|
166
|
+
5. Test thoroughly as projen updates can cause breaking changes
|
|
167
|
+
|
|
168
|
+
## Workflow Integration
|
|
169
|
+
|
|
170
|
+
### GitHub Actions Workflows
|
|
171
|
+
- **build.yml**: Runs on all PRs and main branch - compiles, tests, and runs awslint
|
|
172
|
+
- **release.yml**: Publishes to npm, PyPI, and Go on version tags
|
|
173
|
+
- **auto-approve.yml**: Auto-approves dependabot PRs
|
|
174
|
+
- **pull-request-lint.yml**: Validates PR titles follow conventional commit format
|
|
175
|
+
|
|
176
|
+
### Dependabot Configuration
|
|
177
|
+
- Weekly schedule for dependency updates
|
|
178
|
+
- Groups all dependencies except aws-cdk-lib, aws-cdk, and projen
|
|
179
|
+
- Auto-labeled with `dependencies` and `auto-approve`
|
|
180
|
+
- Ignored packages: aws-cdk-lib, aws-cdk (managed manually)
|
|
181
|
+
|
|
182
|
+
## Asset File Conventions
|
|
183
|
+
|
|
184
|
+
Generated projects receive these files from assets:
|
|
185
|
+
- `.github/ISSUE_TEMPLATE/bug_report.md` - Bug report template
|
|
186
|
+
- `.github/ISSUE_TEMPLATE/feature_request.md` - Feature request template
|
|
187
|
+
- `.github/pull_request_template.md` - PR checklist and structure
|
|
188
|
+
- `.github/FUNDING.yaml` - GitHub sponsors configuration
|
|
189
|
+
- `CONTRIBUTING.md` - Contribution guidelines
|
|
190
|
+
- `.prettierrc` - Prettier configuration (empty file, uses defaults)
|
|
191
|
+
- `docs/placeholder.drawio` - Placeholder architecture diagram
|
|
192
|
+
- Sample code in src/, test/, integ-tests/, and examples/
|
|
193
|
+
|
|
194
|
+
## Important Notes
|
|
195
|
+
|
|
196
|
+
- **Never commit changes to generated files** - Always modify `.projenrc.ts` and run `npx projen`
|
|
197
|
+
- **Package manager**: This project uses npm (not yarn or pnpm)
|
|
198
|
+
- **ESLint patterns**: Ignores `**/*-function.ts` and `examples/` directories
|
|
199
|
+
- **Sample code**: Automatically generated unless `sampleCode: false` in options
|
|
200
|
+
- **Integration test regions**: Default to eu-west-1 and eu-west-2, override with `integTestRegions`
|
|
201
|
+
- **Lambda runtime**: Defaults to NODEJS_20_X, no AWS SDK connection reuse in v3
|
|
@@ -10,8 +10,8 @@ const projen_1 = require("projen");
|
|
|
10
10
|
const awscdk_1 = require("projen/lib/awscdk");
|
|
11
11
|
const github_1 = require("projen/lib/github");
|
|
12
12
|
// Set the minimum node version for AWS CDK and the GitHub actions workflow
|
|
13
|
-
const nodeVersion = '
|
|
14
|
-
const lambdaNodeVersion = awscdk_1.LambdaRuntime.
|
|
13
|
+
const nodeVersion = '22.x';
|
|
14
|
+
const lambdaNodeVersion = awscdk_1.LambdaRuntime.NODEJS_22_X;
|
|
15
15
|
/**
|
|
16
16
|
* TypeScript library
|
|
17
17
|
*
|
|
@@ -26,7 +26,7 @@ class MvcCdkConstructLibrary extends awscdk_1.AwsCdkConstructLibrary {
|
|
|
26
26
|
copyrightOwner: 'MV Consulting GmbH',
|
|
27
27
|
copyrightPeriod: '2025',
|
|
28
28
|
license: 'Apache-2.0',
|
|
29
|
-
jsiiVersion: '~5.
|
|
29
|
+
jsiiVersion: '~5.8.0',
|
|
30
30
|
minNodeVersion: nodeVersion,
|
|
31
31
|
workflowNodeVersion: nodeVersion,
|
|
32
32
|
stability: 'experimental',
|
|
@@ -280,7 +280,7 @@ add tools or links which inspired you
|
|
|
280
280
|
}
|
|
281
281
|
exports.MvcCdkConstructLibrary = MvcCdkConstructLibrary;
|
|
282
282
|
_a = JSII_RTTI_SYMBOL_1;
|
|
283
|
-
MvcCdkConstructLibrary[_a] = { fqn: "@mavogel/mvc-projen.MvcCdkConstructLibrary", version: "0.0.
|
|
283
|
+
MvcCdkConstructLibrary[_a] = { fqn: "@mavogel/mvc-projen.MvcCdkConstructLibrary", version: "0.0.10" };
|
|
284
284
|
class SampleCode extends projen_1.Component {
|
|
285
285
|
constructor(library, options) {
|
|
286
286
|
super(library);
|
|
@@ -347,4 +347,4 @@ class SampleCode extends projen_1.Component {
|
|
|
347
347
|
fs.writeFileSync(path.join(examplesdir, 'main.ts'), fs.readFileSync(`${this.options.baseAssetsDirectory}/cdk-construct/examples_simple_main.ts`).toString());
|
|
348
348
|
}
|
|
349
349
|
}
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9jZGstY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixxQ0FBOEI7QUFDOUIsbUNBQXNGO0FBQ3RGLDhDQUF5RztBQUN6Ryw4Q0FBK0Q7QUFHL0QsMkVBQTJFO0FBQzNFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQztBQUMzQixNQUFNLGlCQUFpQixHQUFHLHNCQUFhLENBQUMsV0FBVyxDQUFDO0FBcUJwRDs7OztHQUlHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwrQkFBc0I7SUFFaEUsWUFBWSxPQUFzQztRQUNoRCxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxHQUFHLElBQUEsYUFBRyxHQUFFLDBDQUEwQyxDQUFDO1FBQzlHLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWhGLEtBQUssQ0FBQztZQUNKLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsY0FBYyxFQUFFLG9CQUFvQjtZQUNwQyxlQUFlLEVBQUUsTUFBTTtZQUN2QixPQUFPLEVBQUUsWUFBWTtZQUNyQixXQUFXLEVBQUUsUUFBUTtZQUNyQixjQUFjLEVBQUUsV0FBVztZQUMzQixtQkFBbUIsRUFBRSxXQUFXO1lBQ2hDLFNBQVMsRUFBRSxjQUFjO1lBQ3pCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLGNBQWMsRUFBRSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDakQsU0FBUyxFQUFFLG1CQUFVLENBQUMsU0FBUyxDQUFDLE1BQU07WUFDdEMsYUFBYSxFQUFFO2dCQUNiLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLHFCQUFxQixFQUFFLEtBQUssRUFBRSxpQ0FBaUM7YUFDaEU7WUFDRCxrQkFBa0Is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QyxDQUFDO1FBRTdKLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1RCxJQUNFLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQzFCLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ2hFLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUNELEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0MsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsd0NBQXdDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9KLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IENvbXBvbmVudCwgamF2YXNjcmlwdCwgUmVsZWFzYWJsZUNvbW1pdHMsIFRleHRGaWxlLCBZYW1sRmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5LCBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucywgTGFtYmRhUnVudGltZSB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcbmltcG9ydCB7IERlcGVuZGFib3RTY2hlZHVsZUludGVydmFsIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWInO1xuaW1wb3J0IHsgSm9iU3RlcCB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5cbi8vIFNldCB0aGUgbWluaW11bSBub2RlIHZlcnNpb24gZm9yIEFXUyBDREsgYW5kIHRoZSBHaXRIdWIgYWN0aW9ucyB3b3JrZmxvd1xuY29uc3Qgbm9kZVZlcnNpb24gPSAnMjAueCc7XG5jb25zdCBsYW1iZGFOb2RlVmVyc2lvbiA9IExhbWJkYVJ1bnRpbWUuTk9ERUpTXzIwX1g7XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNdmNDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyBleHRlbmRzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIEJhc2UgZGlyZWN0b3J5IGZvciB0aGUgYXNzZXRzXG4gICAqXG4gICAqIEBkZWZhdWx0ICR7Y3dkKCl9L25vZGVfbW9kdWxlcy9tdmMtcHJvamVuL2Fzc2V0c1xuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUFzc2V0c0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbnMgdG8gcnVuIHRoZSBpbnRlZyB0ZXN0cyBpblxuICAgKlxuICAgKiBAZGVmYXVsdCBldS13ZXN0LTEgYW5kIGV1LXdlc3QtMlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdUZXN0UmVnaW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFR5cGVTY3JpcHQgbGlicmFyeVxuICpcbiAqIEBwamlkIG12Yy1hd3NjZGstY29uc3RydWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBNdmNDZGtDb25zdHJ1Y3RMaWJyYXJ5IGV4dGVuZHMgQXdzQ2RrQ29uc3RydWN0TGlicmFyeSB7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTXZjQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnMpIHtcbiAgICBjb25zdCBiYXNlQXNzZXRzRGlyZWN0b3J5ID0gb3B0aW9ucy5iYXNlQXNzZXRzRGlyZWN0b3J5ID8/IGAke2N3ZCgpfS9ub2RlX21vZHVsZXMvQG1hdm9nZWwvbXZjLXByb2plbi9hc3NldHNgO1xuICAgIGNvbnN0IGludGVnVGVzdFJlZ2lvbnMgPSBvcHRpb25zLmludGVnVGVzdFJlZ2lvbnMgPz8gWydldS13ZXN0LTEnLCAnZXUtd2VzdC0yJ107XG5cbiAgICBzdXBlcih7XG4gICAgICBhdXRob3JPcmdhbml6YXRpb246IHRydWUsXG4gICAgICBjb3B5cmlnaHRPd25lcjogJ01WIENvbnN1bHRpbmcgR21iSCcsXG4gICAgICBjb3B5cmlnaHRQZXJpb2Q6ICcyMDI1JyxcbiAgICAgIGxpY2Vuc2U6ICdBcGFjaGUtMi4wJyxcbiAgICAgIGpzaWlWZXJzaW9uOiAnfjUuNy4wJyxcbiAgICAgIG1pbk5vZGVWZXJzaW9uOiBub2RlVmVyc2lvbixcbiAgICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IG5vZGVWZXJzaW9uLFxuICAgICAgc3RhYmlsaXR5OiAnZXhwZXJpbWVudGFsJyxcbiAgICAgIHJlbGVhc2VUb05wbTogdHJ1ZSxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5OUE0sXG4gICAgICBucG1BY2Nlc3M6IGphdmFzY3JpcHQuTnBtQWNjZXNzLlBVQkxJQyxcbiAgICAgIGxhbWJkYU9wdGlvbnM6IHtcbiAgICAgICAgcnVudGltZTogbGFtYmRhTm9kZVZlcnNpb24sXG4gICAgICAgIGF3c1Nka0Nvbm5lY3Rpb25SZXVzZTogZmFsc2UsIC8vIGRvZXNuJ3QgZXhpc3QgaW4gQVdTIFNESyBKUyB2M1xuICAgICAgfSxcbiAgICAgIGF1dG9BcHByb3ZlT3B0aW9uczoge1xuICAgICAgICBhbGxvd2VkVXNlcm5hbWVzOiBbXG4gICAgICAgICAgJ2RlcGVuZGFib3QnLFxuICAgICAgICAgICdkZXBlbmRhYm90W2JvdF0nLFxuICAgICAgICAgICdnaXRodWItYm90JyxcbiAgICAgICAgICAnZ2l0aHViLWFjdGlvbnNbYm90XScsXG4gICAgICAgICAgJ212Yy1ib3QnLFxuICAgICAgICBdLFxuICAgICAgICAvLyBUaGUgbmFtZSBvZiB0aGUgc2VjcmV0IHRoYXQgaGFzIHRoZSBHaXRIdWIgUEFUIGZvciBhdXRvLWFwcHJvdmluZyBQUnMgd2l0aCBwZXJtaXNzaW9ucyByZXBvLCB3b3JrZmxvdywgd3JpdGU6cGFja2FnZXNcbiAgICAgICAgLy8gR2VuZXJhdGUgYSBuZXcgUEFUIChodHRwczovL2dpdGh1Yi5jb20vc2V0dGluZ3MvdG9rZW5zL25ldykgYW5kIGFkZCBpdCB0byB5b3VyIHJlcG8ncyBzZWNyZXRzXG4gICAgICAgIC8vIE5PVEU6IGNvbWVzIGZyb20gTVYtQ29uc3VsdGluZyBPcmdcbiAgICAgICAgc2VjcmV0OiAnUFJPSkVOX0dJVEhVQl9UT0tFTicsXG4gICAgICB9LFxuICAgICAgZGVwZW5kYWJvdDogdHJ1ZSxcbiAgICAgIGRlcGVuZGFib3RPcHRpb25zOiB7XG4gICAgICAgIHNjaGVkdWxlSW50ZXJ2YWw6IERlcGVuZGFib3RTY2hlZHVsZUludGVydmFsLldFRUtMWSxcbiAgICAgICAgbGFiZWxzOiBbJ2RlcGVuZGVuY2llcycsICdhdXRvLWFwcHJvdmUnXSxcbiAgICAgICAgZ3JvdXBzOiB7XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcGF0dGVybnM6IFsnKiddLFxuICAgICAgICAgICAgZXhjbHVkZVBhdHRlcm5zOiBbJ2F3cy1jZGsqJywgJ3Byb2plbiddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGlnbm9yZTogW3sgZGVwZW5kZW5jeU5hbWU6ICdhd3MtY2RrLWxpYicgfSwgeyBkZXBlbmRlbmN5TmFtZTogJ2F3cy1jZGsnIH1dLFxuICAgICAgfSxcbiAgICAgIC8vIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9kaXNjdXNzaW9ucy80MDQwI2Rpc2N1c3Npb25jb21tZW50LTExOTA1NjI4XG4gICAgICByZWxlYXNhYmxlQ29tbWl0czogUmVsZWFzYWJsZUNvbW1pdHMub2ZUeXBlKFtcbiAgICAgICAgJ2ZlYXQnLFxuICAgICAgICAnZml4JyxcbiAgICAgICAgJ2Nob3JlJyxcbiAgICAgICAgJ3JlZmFjdG9yJyxcbiAgICAgICAgJ3BlcmYnLFxuICAgICAgXSksXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIHB1bGxSZXF1ZXN0TGludE9wdGlvbnM6IHtcbiAgICAgICAgICBzZW1hbnRpY1RpdGxlT3B0aW9uczoge1xuICAgICAgICAgICAgLy8gc2VlIGNvbW1pdCB0eXBlcyBoZXJlOiBodHRwczovL3d3dy5jb252ZW50aW9uYWxjb21taXRzLm9yZy9lbi92MS4wLjAvI3N1bW1hcnlcbiAgICAgICAgICAgIHR5cGVzOiBbXG4gICAgICAgICAgICAgICdmZWF0JyxcbiAgICAgICAgICAgICAgJ2ZpeCcsXG4gICAgICAgICAgICAgICdjaG9yZScsXG4gICAgICAgICAgICAgICdyZWZhY3RvcicsXG4gICAgICAgICAgICAgICdwZXJmJyxcbiAgICAgICAgICAgICAgJ2RvY3MnLFxuICAgICAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICAgICAndGVzdCcsXG4gICAgICAgICAgICAgICdidWlsZCcsXG4gICAgICAgICAgICAgICdjaScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmVyc2lvbnJjT3B0aW9uczoge1xuICAgICAgICB0eXBlczogW1xuICAgICAgICAgIHsgdHlwZTogJ2ZlYXQnLCBzZWN0aW9uOiAnRmVhdHVyZXMnIH0sXG4gICAgICAgICAgeyB0eXBlOiAnZml4Jywgc2VjdGlvbjogJ0J1ZyBGaXhlcycgfSxcbiAgICAgICAgICB7IHR5cGU6ICdjaG9yZScsIHNlY3Rpb246ICdDaG9yZXMnIH0sXG4gICAgICAgICAgeyB0eXBlOiAnZG9jcycsIHNlY3Rpb246ICdEb2NzJyB9LFxuICAgICAgICAgIHsgdHlwZTogJ3N0eWxlJywgaGlkZGVuOiB0cnVlIH0sXG4gICAgICAgICAgeyB0eXBlOiAncmVmYWN0b3InLCBoaWRkZW46IHRydWUgfSxcbiAgICAgICAgICB7IHR5cGU6ICdwZXJmJywgc2VjdGlvbjogJ1BlcmZvcm1hbmNlJyB9LFxuICAgICAgICAgIHsgdHlwZTogJ3Rlc3QnLCBoaWRkZW46IHRydWUgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBlc2xpbnRPcHRpb25zOiB7XG4gICAgICAgIHByZXR0aWVyOiBmYWxzZSxcbiAgICAgICAgZGlyczogWydzcmMnXSxcbiAgICAgICAgaWdub3JlUGF0dGVybnM6IFsnKiovKi1mdW5jdGlvbi50cycsICdleGFtcGxlcy8nXSxcbiAgICAgIH0sXG4gICAgICAvLyBleHBlcmltZW50YWxJbnRlZ1J1bm5lcjogdHJ1ZSxcbiAgICAgIC8vIG1hbnVhbCBpbnRlZyB0ZXN0IHNldHVwXG4gICAgICB0c2NvbmZpZ0Rldjoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHt9LFxuICAgICAgICBpbmNsdWRlOiBbJ2ludGVnLXRlc3RzLyoqLyoudHMnXSxcbiAgICAgIH0sXG4gICAgICBwdWxsUmVxdWVzdFRlbXBsYXRlQ29udGVudHM6IFtmcy5yZWFkRmlsZVN5bmMoYCR7YmFzZUFzc2V0c0RpcmVjdG9yeX0vY29tbW9uL2dpdGh1Yl9wdWxsX3JlcXVlc3QubWRgKS50b1N0cmluZygpXSxcbiAgICAgIC8vIE5PVEU6IGlzc3VlIHRlbXBsYXRlcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9wdWxsLzM2NDhcbiAgICAgIC8vIGlzc3VlVGVtcGxhdGVzOiB7fVxuICAgICAgcmVhZG1lOiB7XG4gICAgICAgIGNvbnRlbnRzOiBbXG4gICAgICAgICAgYFxuIVtTb3VyY2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL01WLUNvbnN1bHRpbmcvJHtvcHRpb25zLm5hbWV9P2xvZ289Z2l0aHViJmxhYmVsPUdpdEh1YiUyMFN0YXJzKVxuWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vTVYtQ29uc3VsdGluZy8ke29wdGlvbnMubmFtZX0vYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9NVi1Db25zdWx0aW5nLyR7b3B0aW9ucy5uYW1lfS9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwpXG5bIVtFU0xpbnQgQ29kZSBGb3JtYXR0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvZGVfc3R5bGUtZXNsaW50LWJyaWdodGdyZWVuLnN2ZyldKGh0dHBzOi8vZXNsaW50Lm9yZylcblshW0xhdGVzdCByZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZWxlYXNlL01WLUNvbnN1bHRpbmcvJHtvcHRpb25zLm5hbWV9LnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9NVi1Db25zdWx0aW5nLyR7b3B0aW9ucy5uYW1lfS9yZWxlYXNlcylcbiFbR2l0SHViXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL01WLUNvbnN1bHRpbmcvJHtvcHRpb25zLm5hbWV9KVxuWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kdC9AbWF2b2dlbC8ke29wdGlvbnMubmFtZX0/bGFiZWw9bnBtJmNvbG9yPW9yYW5nZSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BtYXZvZ2VsLyR7b3B0aW9ucy5uYW1lfSlcblshW3R5cGVzY3JpcHRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvanNpaS10eXBlc2NyaXB0LWJsdWV2aW9sZXQuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG1hdm9nZWwvJHtvcHRpb25zLm5hbWV9KVxuICAgICAgICAgIGAsXG4gICAgICAgICAgYCMgJHtvcHRpb25zLm5hbWV9YCxcbiAgICAgICAgICAnTXkgYXdlc29tZSBkZXNjcmlwdGlvbi4uLicsXG4gICAgICAgICAgYFxuIyMgVGFibGUgb2YgQ29udGVudHNcblxuLSBbRmVhdHVyZXNdKCNmZWF0dXJlcylcbi0gW1VzYWdlXSgjdXNhZ2UpXG4tIFtTb2x1dGlvbiBEZXNpZ25dKCNzb2x1dGlvbi1kZXNpZ24pXG4tIFtJbnNwaXJhdGlvbl0oI2luc3BpcmF0aW9uKVxuXG4jIyBGZWF0dXJlc1xuXG4tIOKaoSAqKlF1aWNrIFNldHVwKio6IFRCRFxuLSDwn5OPICoqQmVzdCBQcmFjdGljZSBTZXR1cCoqOiBUQkRcbi0g8J+kueKAjeKZgu+4jyAqKlByZS1pbnN0YWxsZWQgcGFja2FnZXMqKjogVEJEXG4tIPCfj5fvuI8gKipFeHRlbnNpYmlsaXR5Kio6IFRCRFxuXG4jIyBVc2FnZVxuVGhlIGZvbGxvd2luZyBzdGVwcyBnZXQgeW91IHN0YXJ0ZWQ6XG5cbjEuIENyZWF0ZSBhIG5ldyBcXGBhd3NjZGstYXBwXFxgIHZpYVxuXFxgXFxgXFxgYmFzaFxubnB4IHByb2plbiBuZXcgYXdzY2RrLWFwcC10cyAtLWNka1ZlcnNpb249Mi4xNzcuMCAtLXBhY2thZ2UtbWFuYWdlcj1ucG1cblxcYFxcYFxcYFxuMy4gQWRkIFxcYEBtYXZvZ2VsLyR7b3B0aW9ucy5uYW1lfVxcYCBhcyBhIGRlcGVuZGVuY3kgdG8geW91ciBwcm9qZWN0IGluIHRoZSBcXGAucHJvamVucmMudHNcXGAgZmlsZVxuNC4gUnVuIFxcYG5weCBwcm9qZW5cXGAgdG8gaW5zdGFsbCBpdFxuNS4gQWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIFxcYHNyYy9tYWluLnRzXFxgIGZpbGU6XG5cXGBcXGBcXGB0c1xuaW1wb3J0IHsgQXBwLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxhY2Vob2xkZXIgfSBmcm9tICdAbWF2b2dlbC8ke29wdGlvbnMubmFtZX0nO1xuXG5leHBvcnQgY2xhc3MgTXlTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YWNrUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IFBsYWNlaG9sZGVyKHRoaXMsICdwbGFjZWhvbGRlcicsIHtcbiAgICAgIC8vIGFuZCBtb3JlLi4uIPCfkqFcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBlbnYgPSB7XG4gIGFjY291bnQ6ICcxMjM0NTY3ODk5MTInLFxuICByZWdpb246ICdldS1jZW50cmFsLTEnLFxufTtcblxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xubmV3IE15U3RhY2soYXBwLCAncGxhY2Vob2xkZXInLCB7IGVudiB9KTtcbmFwcC5zeW50aCgpO1xuXFxgXFxgXFxgXG5cbmFuZCBkZXBsb3kgaXRcblxcYFxcYFxcYGJhc2hcbm5weCBwcm9qZW4gYnVpbGRcbm5weCBwcm9qZW4gZGVwbG95XG5cXGBcXGBcXGBcblxud2l0aCB0aGUgb3V0cHV0XG5cXGBcXGBcXGBjb25zb2xlXG5UQkRcblxcYFxcYFxcYFxuXG5TZWUgdGhlIFtleGFtcGxlc10oLi9leGFtcGxlcykgZm9sZGVyIGZvciBtb3JlIGluc3BpcmF0aW9uLlxuXG4jIyBTb2x1dGlvbiBEZXNpZ25cblxuPGRldGFpbHM+XG4gIDxzdW1tYXJ5Pi4uLiBpZiB5b3UncmUgY3VyaW91cyBhYm91dCBjbGljayBoZXJlIGZvciB0aGUgZGV0YWlsczwvc3VtbWFyeT5cblxuIVtwbGFjZWhvbGRlcl0oZG9jcy9pbWcvcGxhY2Vob2xkZXIuZHJhd2lvLW1pbi5wbmcpXG5cbjwvZGV0YWlscz5cblxuIyMgSW5zcGlyYXRpb25cblxuYWRkIHRvb2xzIG9yIGxpbmtzIHdoaWNoIGluc3BpcmVkIHlvdVxuICAgICAgICAgIGAsXG4gICAgICAgICAgZnMucmVhZEZpbGVTeW5jKGAke2Jhc2VBc3NldHNEaXJlY3Rvcnl9L2NvbW1vbi9naXRodWJfcmVhZG1lX2N0YS5tZGApLnRvU3RyaW5nKCksXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgICAgLy8gTk9URToga2VlcCBhbGwgdGhlIHBhc3NlZCBpbiBvcHRpb25zIHdoaWNoIGNhbiBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb25lcyFcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBnaXRpZ25vcmVcbiAgICBjb25zdCBmaWxlc1BhdHRlcm5Ub0dpdGlnbm9yZSA9IFtcbiAgICAgICd0bXAnLFxuICAgICAgJy5jb2RlZ3B0JyxcbiAgICBdO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlc1BhdHRlcm5Ub0dpdGlnbm9yZSkge1xuICAgICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShmaWxlKTtcbiAgICB9XG4gICAgdGhpcy5hZGREZXBzKFxuICAgICAgJ2Nkay1uYWdAXjIuMzUuMCcsXG4gICAgKTtcbiAgICB0aGlzLmFkZERldkRlcHMoXG4gICAgICBgQGF3cy1jZGsvaW50ZWctcnVubmVyQCR7dGhpcy5jZGtWZXJzaW9ufS1hbHBoYS4wYCwgLy8gTk9URToga2VlcCBpbiBzeW5jIHdpdGggY2RrdmVyc2lvblxuICAgICAgYEBhd3MtY2RrL2ludGVnLXRlc3RzLWFscGhhQCR7dGhpcy5jZGtWZXJzaW9ufS1hbHBoYS4wYCxcbiAgICAgICdAY29tbWl0bGludC9jbGlAXjE5LjYuMScsXG4gICAgICAnQGNvbW1pdGxpbnQvY29uZmlnLWNvbnZlbnRpb25hbEBeMTkuNi4wJyxcbiAgICAgICdhd3NsaW50QF4yLjcyLjEnLFxuICAgICAgJ2h1c2t5QF45LjEuNycsXG4gICAgKTtcblxuICAgIHRoaXMucGFja2FnZS5zZXRTY3JpcHQoJ3ByZXBhcmUnLCAnaHVza3knKTtcbiAgICBuZXcgVGV4dEZpbGUodGhpcywgJy5jb21taXRsaW50cmMuanMnLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICAnbW9kdWxlLmV4cG9ydHMgPSB7IGV4dGVuZHM6IFtcXCdAY29tbWl0bGludC9jb25maWctY29udmVudGlvbmFsXFwnXSB9OycsXG4gICAgICBdLFxuICAgICAgbWFya2VyOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wYWNrYWdlLnNldFNjcmlwdCgnYXdzbGludCcsICdhd3NsaW50Jyk7XG4gICAgLy8gLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueW1sXG4gICAgY29uc3QgYnVpbGRXb3JrZmxvdyA9IHRoaXMuZ2l0aHViPy50cnlGaW5kV29ya2Zsb3coJ2J1aWxkJyk7XG4gICAgaWYgKCFidWlsZFdvcmtmbG93KSByZXR1cm47XG4gICAgY29uc3QgYnVpbGRKb2IgPSBidWlsZFdvcmtmbG93LmdldEpvYignYnVpbGQnKTtcbiAgICBpZiAoIWJ1aWxkSm9iIHx8ICEoJ3N0ZXBzJyBpbiBidWlsZEpvYikpIHJldHVybjtcbiAgICAvLyBUT0RPOiBmaWd1cmUgb3V0IHdoeSB3cm9uZyB0eXBlc1xuICAgIGNvbnN0IGdldEJ1aWxkU3RlcHMgPSBidWlsZEpvYi5zdGVwcyBhcyB1bmtub3duIGFzICgpID0+IEpvYlN0ZXBbXTtcbiAgICBjb25zdCBidWlsZEpvYlN0ZXBzID0gZ2V0QnVpbGRTdGVwcygpO1xuICAgIGJ1aWxkV29ya2Zsb3cudXBkYXRlSm9iKCdidWlsZCcsIHtcbiAgICAgIC4uLmJ1aWxkSm9iLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgLi4uYnVpbGRKb2JTdGVwcy5zbGljZSgwLCA0KSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdSdW4gYXdzbGludCcsXG4gICAgICAgICAgcnVuOiAnbnBtIHJ1biBhd3NsaW50JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uYnVpbGRKb2JTdGVwcy5zbGljZSg0KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBhY2thZ2Uuc2V0U2NyaXB0KFxuICAgICAgJ2ludGVnLXRlc3QnLFxuICAgICAgYGludGVnLXJ1bm5lciAtLWRpcmVjdG9yeSAuL2ludGVnLXRlc3RzICR7aW50ZWdUZXN0UmVnaW9ucz8ubWFwKHJlZ2lvbiA9PiBgLS1wYXJhbGxlbC1yZWdpb25zICR7cmVnaW9ufWApLmpvaW4oJyAnKX0gLS11cGRhdGUtb24tZmFpbGVkYCxcbiAgICApO1xuXG4gICAgbmV3IFRleHRGaWxlKHRoaXMsICcuZ2l0aHViL0lTU1VFX1RFTVBMQVRFL2J1Z19yZXBvcnQubWQnLCB7XG4gICAgICBsaW5lczogW2ZzLnJlYWRGaWxlU3luYyhgJHtiYXNlQXNzZXRzRGlyZWN0b3J5fS9jb21tb24vZ2l0aHViX2J1Z19yZXBvcnQubWRgKS50b1N0cmluZygpXSxcbiAgICB9KTtcblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCAnLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9mZWF0dXJlX3JlcXVlc3QubWQnLCB7XG4gICAgICBsaW5lczogW2ZzLnJlYWRGaWxlU3luYyhgJHtiYXNlQXNzZXRzRGlyZWN0b3J5fS9jb21tb24vZ2l0aHViX2ZlYXR1cmVfcmVxdWVzdC5tZGApLnRvU3RyaW5nKCldLFxuICAgIH0pO1xuXG4gICAgbmV3IFlhbWxGaWxlKHRoaXMsICcuZ2l0aHViL0ZVTkRJTkcueWFtbCcsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBnaXRodWI6ICdtYXZvZ2VsJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgVGV4dEZpbGUodGhpcywgJ0NPTlRSSUJVVElORy5tZCcsIHtcbiAgICAgIGxpbmVzOiBbZnMucmVhZEZpbGVTeW5jKGAke2Jhc2VBc3NldHNEaXJlY3Rvcnl9L2NvbW1vbi9jb250cmlidXRpbmcubWRgKS50b1N0cmluZygpXSxcbiAgICB9KTtcblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCAnLnByZXR0aWVycmMnLCB7XG4gICAgICBsaW5lczogW2ZzLnJlYWRGaWxlU3luYyhgJHtiYXNlQXNzZXRzRGlyZWN0b3J5fS9jb21tb24vcHJldHRpZXJyY2ApLnRvU3RyaW5nKCldLFxuICAgIH0pO1xuXG4gICAgLy8gd3JpdGUgc2FtcGxlIGNvZGUgdG8gbWFpbi50cyAmIHRvIG1haW4udGVzdC50c1xuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IFNhbXBsZUNvZGUodGhpcywge1xuICAgICAgICBiYXNlQXNzZXRzRGlyZWN0b3J5LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBTYW1wbGVDb2RlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJhc2VBc3NldHNEaXJlY3Rvcnk/OiBzdHJpbmc7XG59XG5cbmNsYXNzIFNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGxpYnJhcnk6IEF3c0Nka0NvbnN0cnVjdExpYnJhcnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogU2FtcGxlQ29kZU9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbGlicmFyeTogQXdzQ2RrQ29uc3RydWN0TGlicmFyeSxcbiAgICBvcHRpb25zOiBTYW1wbGVDb2RlT3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIobGlicmFyeSk7XG4gICAgdGhpcy5saWJyYXJ5ID0gbGlicmFyeTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemUoKSB7XG4gICAgY29uc3Qgb3V0ZGlyID0gdGhpcy5wcm9qZWN0Lm91dGRpcjtcbiAgICBjb25zdCBzcmNkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCB0aGlzLmxpYnJhcnkuc3JjZGlyKTtcbiAgICBpZiAoXG4gICAgICBmcy5leGlzdHNTeW5jKHNyY2RpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKHNyY2RpcikuZmlsdGVyKCh4KSA9PiB4LmVuZHNXaXRoKCcudHMnKSkgJiZcbiAgICAgICFmcy5yZWFkRmlsZVN5bmMoYCR7c3JjZGlyfS9pbmRleC50c2ApLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ2V4cG9ydCBjbGFzcyBIZWxsbycpIC8vIE5vdGU6IGZyb20gcGFyZW50XG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnMubWtkaXJTeW5jKHNyY2RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oc3JjZGlyLCAnaW5kZXgudHMnKSwgZnMucmVhZEZpbGVTeW5jKGAke3RoaXMub3B0aW9ucy5iYXNlQXNzZXRzRGlyZWN0b3J5fS9jZGstY29uc3RydWN0L3NyY19pbmRleC50c2ApLnRvU3RyaW5nKCkpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHNyY2RpciwgJ3BsYWNlaG9sZGVyLnRzJyksIGZzLnJlYWRGaWxlU3luYyhgJHt0aGlzLm9wdGlvbnMuYmFzZUFzc2V0c0RpcmVjdG9yeX0vY2RrLWNvbnN0cnVjdC9zcmNfcGxhY2Vob2xkZXIudHNgKS50b1N0cmluZygpKTtcbiAgICAvLyBjcmQgd2l0aCBsYW1iZGEgZ2VuZXJhdGlvblxuICAgIGZzLm1rZGlyU3luYyhgJHtzcmNkaXJ9L2NyZC1leGFtcGxlYCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oYCR7c3JjZGlyfS9jcmQtZXhhbXBsZWAsICdjcmQtZXhhbXBsZS50cycpLCBmcy5yZWFkRmlsZVN5bmMoYCR7dGhpcy5vcHRpb25zLmJhc2VBc3NldHNEaXJlY3Rvcnl9L2Nkay1jb25zdHJ1Y3Qvc3JjX2NyZC1leGFtcGxlLnRzYCkudG9TdHJpbmcoKSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oYCR7c3JjZGlyfS9jcmQtZXhhbXBsZWAsICdjcmQtZXhhbXBsZS5sYW1iZGEudHMnKSwgZnMucmVhZEZpbGVTeW5jKGAke3RoaXMub3B0aW9ucy5iYXNlQXNzZXRzRGlyZWN0b3J5fS9jZGstY29uc3RydWN0L3NyY19jcmQtZXhhbXBsZS5sYW1iZGEudHNgKS50b1N0cmluZygpKTtcblxuXG4gICAgY29uc3QgdGVzdGRpciA9IHBhdGguam9pbihvdXRkaXIsIHRoaXMubGlicmFyeS50ZXN0ZGlyKTtcbiAgICBpZiAoXG4gICAgICBmcy5leGlzdHNTeW5jKHRlc3RkaXIpICYmXG4gICAgICBmcy5yZWFkZGlyU3luYyh0ZXN0ZGlyKS5maWx0ZXIoKHgpID0+IHguZW5kc1dpdGgoJy50cycpKSAmJlxuICAgICAgIWZzLmV4aXN0c1N5bmMoYCR7dGVzdGRpcn0vaGVsbG8udGVzdC50c2ApIC8vIE5vdGU6IGZyb20gcGFyZW50XG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHJlbW92ZSAke3Rlc3RkaXJ9L2hlbGxvLnRlc3QudHMgZmlsZS4gT24gdGhlIG90aGVyIGhhbmQsIHdlIG92ZXJyaWRlIGluZGV4LnRzXG4gICAgZnMudW5saW5rU3luYyhgJHt0ZXN0ZGlyfS9oZWxsby50ZXN0LnRzYCk7XG4gICAgZnMubWtkaXJTeW5jKHRlc3RkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRlc3RkaXIsICdpbmRleC50ZXN0LnRzJyksIGZzLnJlYWRGaWxlU3luYyhgJHt0aGlzLm9wdGlvbnMuYmFzZUFzc2V0c0RpcmVjdG9yeX0vY2RrLWNvbnN0cnVjdC90ZXN0X2luZGV4LnRlc3QudHNgKS50b1N0cmluZygpKTtcbiAgICAvLyBsYW1iZGEgdGVzdHMgd2l0aCBqZXN0IHN0dWJzXG4gICAgZnMubWtkaXJTeW5jKGAke3Rlc3RkaXJ9L2NyZC1leGFtcGxlYCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oYCR7dGVzdGRpcn0vY3JkLWV4YW1wbGVgLCAnY3JkLWV4YW1wbGUudGVzdC50cycpLCBmcy5yZWFkRmlsZVN5bmMoYCR7dGhpcy5vcHRpb25zLmJhc2VBc3NldHNEaXJlY3Rvcnl9L2Nkay1jb25zdHJ1Y3QvdGVzdF9jcmQtZXhhbXBsZS50ZXN0LnRzYCkudG9TdHJpbmcoKSk7XG5cblxuICAgIGNvbnN0IGludGVnVGVzdGRpciA9IHBhdGguam9pbihvdXRkaXIsICdpbnRlZy10ZXN0cycpO1xuICAgIGlmIChcbiAgICAgIGZzLmV4aXN0c1N5bmMoaW50ZWdUZXN0ZGlyKSAmJlxuICAgICAgZnMucmVhZGRpclN5bmMoaW50ZWdUZXN0ZGlyKS5maWx0ZXIoKHgpID0+IHguZW5kc1dpdGgoJy50cycpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmcy5ta2RpclN5bmMoaW50ZWdUZXN0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihpbnRlZ1Rlc3RkaXIsICdpbnRlZy5wbGFjZWhvbGRlci50cycpLCBmcy5yZWFkRmlsZVN5bmMoYCR7dGhpcy5vcHRpb25zLmJhc2VBc3NldHNEaXJlY3Rvcnl9L2Nkay1jb25zdHJ1Y3QvaW50ZWdfaW50ZWcucGxhY2Vob2xkZXIudHNgKS50b1N0cmluZygpKTtcblxuICAgIGNvbnN0IGludGVnVGVzdEZ1bmN0aW9uc2RpciA9IHBhdGguam9pbihpbnRlZ1Rlc3RkaXIsICdmdW5jdGlvbnMnKTtcbiAgICBpZiAoXG4gICAgICBmcy5leGlzdHNTeW5jKGludGVnVGVzdEZ1bmN0aW9uc2RpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKGludGVnVGVzdEZ1bmN0aW9uc2RpcikuZmlsdGVyKCh4KSA9PiB4LmVuZHNXaXRoKCcudHMnKSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZnMubWtkaXJTeW5jKGludGVnVGVzdEZ1bmN0aW9uc2RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oaW50ZWdUZXN0RnVuY3Rpb25zZGlyLCAndGVzdC1oYW5kbGVyLnRzJyksIGZzLnJlYWRGaWxlU3luYyhgJHt0aGlzLm9wdGlvbnMuYmFzZUFzc2V0c0RpcmVjdG9yeX0vY2RrLWNvbnN0cnVjdC9pbnRlZ190ZXN0LWhhbmRsZXIudHNgKS50b1N0cmluZygpKTtcblxuICAgIGNvbnN0IGRvY3NkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCAnZG9jcycpO1xuICAgIGlmIChcbiAgICAgIGZzLmV4aXN0c1N5bmMoZG9jc2RpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKGRvY3NkaXIpLmZpbHRlcigoeCkgPT4geC5lbmRzV2l0aCgnLmRyYXdpbycpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmcy5ta2RpclN5bmMoZG9jc2RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oZG9jc2RpciwgJ3BsYWNlaG9sZGVyLmRyYXdpbycpLCBmcy5yZWFkRmlsZVN5bmMoYCR7dGhpcy5vcHRpb25zLmJhc2VBc3NldHNEaXJlY3Rvcnl9L2NvbW1vbi9kb2NzX3BsYWNlaG9sZGVyLmRyYXdpb2ApLnRvU3RyaW5nKCkpO1xuXG4gICAgY29uc3QgZXhhbXBsZXNkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCAnZXhhbXBsZXMnLCAnc2ltcGxlJyk7XG4gICAgaWYgKFxuICAgICAgZnMuZXhpc3RzU3luYyhleGFtcGxlc2RpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKGV4YW1wbGVzZGlyKS5maWx0ZXIoKHgpID0+IHguZW5kc1dpdGgoJy5kcmF3aW8nKSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZnMubWtkaXJTeW5jKGV4YW1wbGVzZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihleGFtcGxlc2RpciwgJ21haW4udHMnKSwgZnMucmVhZEZpbGVTeW5jKGAke3RoaXMub3B0aW9ucy5iYXNlQXNzZXRzRGlyZWN0b3J5fS9jZGstY29uc3RydWN0L2V4YW1wbGVzX3NpbXBsZV9tYWluLnRzYCkudG9TdHJpbmcoKSk7XG4gIH1cbn0iXX0=
|
|
350
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9jZGstY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixxQ0FBOEI7QUFDOUIsbUNBQXNGO0FBQ3RGLDhDQUF5RztBQUN6Ryw4Q0FBK0Q7QUFHL0QsMkVBQTJFO0FBQzNFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQztBQUMzQixNQUFNLGlCQUFpQixHQUFHLHNCQUFhLENBQUMsV0FBVyxDQUFDO0FBcUJwRDs7OztHQUlHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwrQkFBc0I7SUFFaEUsWUFBWSxPQUFzQztRQUNoRCxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxHQUFHLElBQUEsYUFBRyxHQUFFLDBDQUEwQyxDQUFDO1FBQzlHLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWhGLEtBQUssQ0FBQztZQUNKLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsY0FBYyxFQUFFLG9CQUFvQjtZQUNwQyxlQUFlLEVBQUUsTUFBTTtZQUN2QixPQUFPLEVBQUUsWUFBWTtZQUNyQixXQUFXLEVBQUUsUUFBUTtZQUNyQixjQUFjLEVBQUUsV0FBVztZQUMzQixtQkFBbUIsRUFBRSxXQUFXO1lBQ2hDLFNBQVMsRUFBRSxjQUFjO1lBQ3pCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLGNBQWMsRUFBRSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDakQsU0FBUyxFQUFFLG1CQUFVLENBQUMsU0FBUyxDQUFDLE1BQU07WUFDdEMsYUFBYSxFQUFFO2dCQUNiLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLHFCQUFxQixFQUFFLEtBQUssRUFBRSxpQ0FBaUM7YUFDaEU7WUFDRCxrQkFBa0IsRUFBRTtnQkFDbEIsZ0JBQWdCLEVBQUU7b0JBQ2hCLFlBQVk7b0JBQ1osaUJBQWlCO29CQUNqQixZQUFZO29CQUNaLHFCQUFxQjtvQkFDckIsU0FBUztpQkFDVjtnQkFDRCx3SEFBd0g7Z0JBQ3hILGdHQUFnRztnQkFDaEcscUNBQXFDO2dCQUNyQyxNQUFNLEVBQUUscUJBQXFCO2FBQzlCO1lBQ0QsVUFBVSxFQUFFLElBQUk7WUFDaEIsaUJBQWlCLEVBQUU7Z0JBQ2pCLGdCQUFnQixFQUFFLG1DQUEwQixDQUFDLE1BQU07Z0JBQ25ELE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRTtvQkFDTixPQUFPLEVBQUU7d0JBQ1AsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDO3dCQUNmLGVBQWUsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7cUJBQ3hDO2lCQUNGO2dCQUNELE1BQU0sRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxDQUFDO2FBQzNFO1lBQ0Qsc0ZBQXNGO1lBQ3RGLGlCQUFpQixFQUFFLDBCQUFpQixDQUFDLE1BQU0sQ0FBQztnQkFDMUMsTUFBTTtnQkFDTixLQUFLO2dCQUNMLE9BQU87Z0JBQ1AsVUFBVTtnQkFDVixNQUFNO2FBQ1AsQ0FBQztZQUNGLGFBQWEsRUFBRTtnQkFDYixzQkFBc0IsRUFBRTtvQkFDdEIsb0JBQW9CLEVBQUU7d0JBQ3BCLGdGQUFnRjt3QkFDaEYsS0FBSyxFQUFFOzRCQUNMLE1BQU07NEJBQ04sS0FBSzs0QkFDTCxPQUFPOzRCQUNQLFVBQVU7NEJBQ1YsTUFBTTs0QkFDTixNQUFNOzRCQUNOLE9BQU87NEJBQ1AsTUFBTTs0QkFDTixPQUFPOzRCQUNQLElBQUk7eUJBQ0w7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNELGdCQUFnQixFQUFFO2dCQUNoQixLQUFLLEVBQUU7b0JBQ0wsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUU7b0JBQ3JDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO29CQUNyQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtvQkFDcEMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7b0JBQ2pDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO29CQUMvQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDbEMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUU7b0JBQ3hDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2lCQUMvQjthQUNGO1lBQ0QsYUFBYSxFQUFFO2dCQUNiLFFBQVEsRUFBRSxLQUFLO2dCQUNmLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDYixjQUFjLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUM7YUFDbEQ7WUFDRCxpQ0FBaUM7WUFDakMsMEJBQTBCO1lBQzFCLFdBQVcsRUFBRTtnQkFDWCxlQUFlLEVBQUUsRUFBRTtnQkFDbkIsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7YUFDakM7WUFDRCwyQkFBMkIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxtQkFBbUIsZ0NBQWdDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqSCw4RkFBOEY7WUFDOUYscUJBQXFCO1lBQ3JCLE1BQU0sRUFBRTtnQkFDTixRQUFRLEVBQUU7b0JBQ1I7OERBQ29ELE9BQU8sQ0FBQyxJQUFJO29EQUN0QixPQUFPLENBQUMsSUFBSSw2RUFBNkUsT0FBTyxDQUFDLElBQUk7O3lFQUVoRixPQUFPLENBQUMsSUFBSSwyQ0FBMkMsT0FBTyxDQUFDLElBQUk7Z0VBQzVFLE9BQU8sQ0FBQyxJQUFJO2lEQUMzQixPQUFPLENBQUMsSUFBSSxvRUFBb0UsT0FBTyxDQUFDLElBQUk7c0hBQ3ZCLE9BQU8sQ0FBQyxJQUFJO1dBQ3ZIO29CQUNELEtBQUssT0FBTyxDQUFDLElBQUksRUFBRTtvQkFDbkIsMkJBQTJCO29CQUMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkFzQlUsT0FBTyxDQUFDLElBQUk7Ozs7Ozs7O3dDQVFRLE9BQU8sQ0FBQyxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQStDekM7b0JBQ0QsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLG1CQUFtQiw4QkFBOEIsQ0FBQyxDQUFDLFFBQVEsRUFBRTtpQkFDakYsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2I7WUFDRCw2RUFBNkU7WUFDN0UsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsWUFBWTtRQUNaLE1BQU0sdUJBQXVCLEdBQUc7WUFDOUIsS0FBSztZQUNMLFVBQVU7U0FDWCxDQUFDO1FBQ0YsS0FBSyxNQUFNLElBQUksSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUNWLGlCQUFpQixDQUNsQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FDYix5QkFBeUIsSUFBSSxDQUFDLFVBQVUsVUFBVSxFQUFFLHFDQUFxQztRQUN6Riw4QkFBOEIsSUFBSSxDQUFDLFVBQVUsVUFBVSxFQUN2RCx5QkFBeUIsRUFDekIseUNBQXlDLEVBQ3pDLGlCQUFpQixFQUNqQixjQUFjLENBQ2YsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3JDLEtBQUssRUFBRTtnQkFDTCxzRUFBc0U7YUFDdkU7WUFDRCxNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3Qyw4QkFBOEI7UUFDOUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBQzNCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQztZQUFFLE9BQU87UUFDaEQsbUNBQW1DO1FBQ25DLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFtQyxDQUFDO1FBQ25FLE1BQU0sYUFBYSxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQy9CLEdBQUcsUUFBUTtZQUNYLEtBQUssRUFBRTtnQkFDTCxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUI7b0JBQ0UsSUFBSSxFQUFFLGFBQWE7b0JBQ25CLEdBQUcsRUFBRSxpQkFBaUI7aUJBQ3ZCO2dCQUNELEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDMUI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FDcEIsWUFBWSxFQUNaLDBDQUEwQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUN6SSxDQUFDO1FBRUYsSUFBSSxpQkFBUSxDQUFDLElBQUksRUFBRSxzQ0FBc0MsRUFBRTtZQUN6RCxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsbUJBQW1CLDhCQUE4QixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDMUYsQ0FBQyxDQUFDO1FBRUgsSUFBSSxpQkFBUSxDQUFDLElBQUksRUFBRSwyQ0FBMkMsRUFBRTtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsbUJBQW1CLG1DQUFtQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDL0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxpQkFBUSxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUN6QyxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLFNBQVM7YUFDbEI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3BDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxtQkFBbUIseUJBQXlCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNyRixDQUFDLENBQUM7UUFFSCxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNoQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsbUJBQW1CLG9CQUFvQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDaEYsQ0FBQyxDQUFDO1FBRUgsaURBQWlEO1FBQ2pELElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMvQixJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ25CLG1CQUFtQjthQUNwQixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUF4Ukgsd0RBeVJDOzs7QUFNRCxNQUFNLFVBQVcsU0FBUSxrQkFBUztJQUloQyxZQUNFLE9BQStCLEVBQy9CLE9BQTBCO1FBRTFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RCxJQUNFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3JCLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZELENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsb0JBQW9CO1VBQ3JHLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUVELEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsNkJBQTZCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlJLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsbUNBQW1DLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFKLDZCQUE2QjtRQUM3QixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRCxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixtQ0FBbUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0ssRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxjQUFjLEVBQUUsdUJBQXVCLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsMENBQTBDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBR3pMLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEQsSUFDRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUN0QixFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RCxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLGdCQUFnQixDQUFDLENBQUMsb0JBQW9CO1VBQy9ELENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUNELGdGQUFnRjtRQUNoRixFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0MsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsbUNBQW1DLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFKLCtCQUErQjtRQUMvQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RCxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLGNBQWMsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQix5Q0FBeUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFHdkwsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdEQsSUFDRSxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztZQUMzQixFQUFFLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM3RCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsMkNBQTJDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTlLLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkUsSUFDRSxFQUFFLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BDLEVBQUUsQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDdEUsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBQ0QsRUFBRSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixzQ0FBc0MsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFN0ssTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUMsSUFDRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUN0QixFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUM1RCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsaUNBQWlDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTdKLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1RCxJQUNFLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQzFCLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ2hFLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUNELEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0MsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsd0NBQXdDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9KLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IENvbXBvbmVudCwgamF2YXNjcmlwdCwgUmVsZWFzYWJsZUNvbW1pdHMsIFRleHRGaWxlLCBZYW1sRmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5LCBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucywgTGFtYmRhUnVudGltZSB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcbmltcG9ydCB7IERlcGVuZGFib3RTY2hlZHVsZUludGVydmFsIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWInO1xuaW1wb3J0IHsgSm9iU3RlcCB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5cbi8vIFNldCB0aGUgbWluaW11bSBub2RlIHZlcnNpb24gZm9yIEFXUyBDREsgYW5kIHRoZSBHaXRIdWIgYWN0aW9ucyB3b3JrZmxvd1xuY29uc3Qgbm9kZVZlcnNpb24gPSAnMjIueCc7XG5jb25zdCBsYW1iZGFOb2RlVmVyc2lvbiA9IExhbWJkYVJ1bnRpbWUuTk9ERUpTXzIyX1g7XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNdmNDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyBleHRlbmRzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIEJhc2UgZGlyZWN0b3J5IGZvciB0aGUgYXNzZXRzXG4gICAqXG4gICAqIEBkZWZhdWx0ICR7Y3dkKCl9L25vZGVfbW9kdWxlcy9tdmMtcHJvamVuL2Fzc2V0c1xuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUFzc2V0c0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbnMgdG8gcnVuIHRoZSBpbnRlZyB0ZXN0cyBpblxuICAgKlxuICAgKiBAZGVmYXVsdCBldS13ZXN0LTEgYW5kIGV1LXdlc3QtMlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdUZXN0UmVnaW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFR5cGVTY3JpcHQgbGlicmFyeVxuICpcbiAqIEBwamlkIG12Yy1hd3NjZGstY29uc3RydWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBNdmNDZGtDb25zdHJ1Y3RMaWJyYXJ5IGV4dGVuZHMgQXdzQ2RrQ29uc3RydWN0TGlicmFyeSB7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTXZjQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnMpIHtcbiAgICBjb25zdCBiYXNlQXNzZXRzRGlyZWN0b3J5ID0gb3B0aW9ucy5iYXNlQXNzZXRzRGlyZWN0b3J5ID8/IGAke2N3ZCgpfS9ub2RlX21vZHVsZXMvQG1hdm9nZWwvbXZjLXByb2plbi9hc3NldHNgO1xuICAgIGNvbnN0IGludGVnVGVzdFJlZ2lvbnMgPSBvcHRpb25zLmludGVnVGVzdFJlZ2lvbnMgPz8gWydldS13ZXN0LTEnLCAnZXUtd2VzdC0yJ107XG5cbiAgICBzdXBlcih7XG4gICAgICBhdXRob3JPcmdhbml6YXRpb246IHRydWUsXG4gICAgICBjb3B5cmlnaHRPd25lcjogJ01WIENvbnN1bHRpbmcgR21iSCcsXG4gICAgICBjb3B5cmlnaHRQZXJpb2Q6ICcyMDI1JyxcbiAgICAgIGxpY2Vuc2U6ICdBcGFjaGUtMi4wJyxcbiAgICAgIGpzaWlWZXJzaW9uOiAnfjUuOC4wJyxcbiAgICAgIG1pbk5vZGVWZXJzaW9uOiBub2RlVmVyc2lvbixcbiAgICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IG5vZGVWZXJzaW9uLFxuICAgICAgc3RhYmlsaXR5OiAnZXhwZXJpbWVudGFsJyxcbiAgICAgIHJlbGVhc2VUb05wbTogdHJ1ZSxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5OUE0sXG4gICAgICBucG1BY2Nlc3M6IGphdmFzY3JpcHQuTnBtQWNjZXNzLlBVQkxJQyxcbiAgICAgIGxhbWJkYU9wdGlvbnM6IHtcbiAgICAgICAgcnVudGltZTogbGFtYmRhTm9kZVZlcnNpb24sXG4gICAgICAgIGF3c1Nka0Nvbm5lY3Rpb25SZXVzZTogZmFsc2UsIC8vIGRvZXNuJ3QgZXhpc3QgaW4gQVdTIFNESyBKUyB2M1xuICAgICAgfSxcbiAgICAgIGF1dG9BcHByb3ZlT3B0aW9uczoge1xuICAgICAgICBhbGxvd2VkVXNlcm5hbWVzOiBbXG4gICAgICAgICAgJ2RlcGVuZGFib3QnLFxuICAgICAgICAgICdkZXBlbmRhYm90W2JvdF0nLFxuICAgICAgICAgICdnaXRodWItYm90JyxcbiAgICAgICAgICAnZ2l0aHViLWFjdGlvbnNbYm90XScsXG4gICAgICAgICAgJ212Yy1ib3QnLFxuICAgICAgICBdLFxuICAgICAgICAvLyBUaGUgbmFtZSBvZiB0aGUgc2VjcmV0IHRoYXQgaGFzIHRoZSBHaXRIdWIgUEFUIGZvciBhdXRvLWFwcHJvdmluZyBQUnMgd2l0aCBwZXJtaXNzaW9ucyByZXBvLCB3b3JrZmxvdywgd3JpdGU6cGFja2FnZXNcbiAgICAgICAgLy8gR2VuZXJhdGUgYSBuZXcgUEFUIChodHRwczovL2dpdGh1Yi5jb20vc2V0dGluZ3MvdG9rZW5zL25ldykgYW5kIGFkZCBpdCB0byB5b3VyIHJlcG8ncyBzZWNyZXRzXG4gICAgICAgIC8vIE5PVEU6IGNvbWVzIGZyb20gTVYtQ29uc3VsdGluZyBPcmdcbiAgICAgICAgc2VjcmV0OiAnUFJPSkVOX0dJVEhVQl9UT0tFTicsXG4gICAgICB9LFxuICAgICAgZGVwZW5kYWJvdDogdHJ1ZSxcbiAgICAgIGRlcGVuZGFib3RPcHRpb25zOiB7XG4gICAgICAgIHNjaGVkdWxlSW50ZXJ2YWw6IERlcGVuZGFib3RTY2hlZHVsZUludGVydmFsLldFRUtMWSxcbiAgICAgICAgbGFiZWxzOiBbJ2RlcGVuZGVuY2llcycsICdhdXRvLWFwcHJvdmUnXSxcbiAgICAgICAgZ3JvdXBzOiB7XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcGF0dGVybnM6IFsnKiddLFxuICAgICAgICAgICAgZXhjbHVkZVBhdHRlcm5zOiBbJ2F3cy1jZGsqJywgJ3Byb2plbiddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGlnbm9yZTogW3sgZGVwZW5kZW5jeU5hbWU6ICdhd3MtY2RrLWxpYicgfSwgeyBkZXBlbmRlbmN5TmFtZTogJ2F3cy1jZGsnIH1dLFxuICAgICAgfSxcbiAgICAgIC8vIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9kaXNjdXNzaW9ucy80MDQwI2Rpc2N1c3Npb25jb21tZW50LTExOTA1NjI4XG4gICAgICByZWxlYXNhYmxlQ29tbWl0czogUmVsZWFzYWJsZUNvbW1pdHMub2ZUeXBlKFtcbiAgICAgICAgJ2ZlYXQnLFxuICAgICAgICAnZml4JyxcbiAgICAgICAgJ2Nob3JlJyxcbiAgICAgICAgJ3JlZmFjdG9yJyxcbiAgICAgICAgJ3BlcmYnLFxuICAgICAgXSksXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIHB1bGxSZXF1ZXN0TGludE9wdGlvbnM6IHtcbiAgICAgICAgICBzZW1hbnRpY1RpdGxlT3B0aW9uczoge1xuICAgICAgICAgICAgLy8gc2VlIGNvbW1pdCB0eXBlcyBoZXJlOiBodHRwczovL3d3dy5jb252ZW50aW9uYWxjb21taXRzLm9yZy9lbi92MS4wLjAvI3N1bW1hcnlcbiAgICAgICAgICAgIHR5cGVzOiBbXG4gICAgICAgICAgICAgICdmZWF0JyxcbiAgICAgICAgICAgICAgJ2ZpeCcsXG4gICAgICAgICAgICAgICdjaG9yZScsXG4gICAgICAgICAgICAgICdyZWZhY3RvcicsXG4gICAgICAgICAgICAgICdwZXJmJyxcbiAgICAgICAgICAgICAgJ2RvY3MnLFxuICAgICAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICAgICAndGVzdCcsXG4gICAgICAgICAgICAgICdidWlsZCcsXG4gICAgICAgICAgICAgICdjaScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmVyc2lvbnJjT3B0aW9uczoge1xuICAgICAgICB0eXBlczogW1xuICAgICAgICAgIHsgdHlwZTogJ2ZlYXQnLCBzZWN0aW9uOiAnRmVhdHVyZXMnIH0sXG4gICAgICAgICAgeyB0eXBlOiAnZml4Jywgc2VjdGlvbjogJ0J1ZyBGaXhlcycgfSxcbiAgICAgICAgICB7IHR5cGU6ICdjaG9yZScsIHNlY3Rpb246ICdDaG9yZXMnIH0sXG4gICAgICAgICAgeyB0eXBlOiAnZG9jcycsIHNlY3Rpb246ICdEb2NzJyB9LFxuICAgICAgICAgIHsgdHlwZTogJ3N0eWxlJywgaGlkZGVuOiB0cnVlIH0sXG4gICAgICAgICAgeyB0eXBlOiAncmVmYWN0b3InLCBoaWRkZW46IHRydWUgfSxcbiAgICAgICAgICB7IHR5cGU6ICdwZXJmJywgc2VjdGlvbjogJ1BlcmZvcm1hbmNlJyB9LFxuICAgICAgICAgIHsgdHlwZTogJ3Rlc3QnLCBoaWRkZW46IHRydWUgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBlc2xpbnRPcHRpb25zOiB7XG4gICAgICAgIHByZXR0aWVyOiBmYWxzZSxcbiAgICAgICAgZGlyczogWydzcmMnXSxcbiAgICAgICAgaWdub3JlUGF0dGVybnM6IFsnKiovKi1mdW5jdGlvbi50cycsICdleGFtcGxlcy8nXSxcbiAgICAgIH0sXG4gICAgICAvLyBleHBlcmltZW50YWxJbnRlZ1J1bm5lcjogdHJ1ZSxcbiAgICAgIC8vIG1hbnVhbCBpbnRlZyB0ZXN0IHNldHVwXG4gICAgICB0c2NvbmZpZ0Rldjoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHt9LFxuICAgICAgICBpbmNsdWRlOiBbJ2ludGVnLXRlc3RzLyoqLyoudHMnXSxcbiAgICAgIH0sXG4gICAgICBwdWxsUmVxdWVzdFRlbXBsYXRlQ29udGVudHM6IFtmcy5yZWFkRmlsZVN5bmMoYCR7YmFzZUFzc2V0c0RpcmVjdG9yeX0vY29tbW9uL2dpdGh1Yl9wdWxsX3JlcXVlc3QubWRgKS50b1N0cmluZygpXSxcbiAgICAgIC8vIE5PVEU6IGlzc3VlIHRlbXBsYXRlcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9wdWxsLzM2NDhcbiAgICAgIC8vIGlzc3VlVGVtcGxhdGVzOiB7fVxuICAgICAgcmVhZG1lOiB7XG4gICAgICAgIGNvbnRlbnRzOiBbXG4gICAgICAgICAgYFxuIVtTb3VyY2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL01WLUNvbnN1bHRpbmcvJHtvcHRpb25zLm5hbWV9P2xvZ289Z2l0aHViJmxhYmVsPUdpdEh1YiUyMFN0YXJzKVxuWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vTVYtQ29uc3VsdGluZy8ke29wdGlvbnMubmFtZX0vYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9NVi1Db25zdWx0aW5nLyR7b3B0aW9ucy5uYW1lfS9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwpXG5bIVtFU0xpbnQgQ29kZSBGb3JtYXR0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvZGVfc3R5bGUtZXNsaW50LWJyaWdodGdyZWVuLnN2ZyldKGh0dHBzOi8vZXNsaW50Lm9yZylcblshW0xhdGVzdCByZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZWxlYXNlL01WLUNvbnN1bHRpbmcvJHtvcHRpb25zLm5hbWV9LnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9NVi1Db25zdWx0aW5nLyR7b3B0aW9ucy5uYW1lfS9yZWxlYXNlcylcbiFbR2l0SHViXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL01WLUNvbnN1bHRpbmcvJHtvcHRpb25zLm5hbWV9KVxuWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kdC9AbWF2b2dlbC8ke29wdGlvbnMubmFtZX0/bGFiZWw9bnBtJmNvbG9yPW9yYW5nZSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BtYXZvZ2VsLyR7b3B0aW9ucy5uYW1lfSlcblshW3R5cGVzY3JpcHRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvanNpaS10eXBlc2NyaXB0LWJsdWV2aW9sZXQuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG1hdm9nZWwvJHtvcHRpb25zLm5hbWV9KVxuICAgICAgICAgIGAsXG4gICAgICAgICAgYCMgJHtvcHRpb25zLm5hbWV9YCxcbiAgICAgICAgICAnTXkgYXdlc29tZSBkZXNjcmlwdGlvbi4uLicsXG4gICAgICAgICAgYFxuIyMgVGFibGUgb2YgQ29udGVudHNcblxuLSBbRmVhdHVyZXNdKCNmZWF0dXJlcylcbi0gW1VzYWdlXSgjdXNhZ2UpXG4tIFtTb2x1dGlvbiBEZXNpZ25dKCNzb2x1dGlvbi1kZXNpZ24pXG4tIFtJbnNwaXJhdGlvbl0oI2luc3BpcmF0aW9uKVxuXG4jIyBGZWF0dXJlc1xuXG4tIOKaoSAqKlF1aWNrIFNldHVwKio6IFRCRFxuLSDwn5OPICoqQmVzdCBQcmFjdGljZSBTZXR1cCoqOiBUQkRcbi0g8J+kueKAjeKZgu+4jyAqKlByZS1pbnN0YWxsZWQgcGFja2FnZXMqKjogVEJEXG4tIPCfj5fvuI8gKipFeHRlbnNpYmlsaXR5Kio6IFRCRFxuXG4jIyBVc2FnZVxuVGhlIGZvbGxvd2luZyBzdGVwcyBnZXQgeW91IHN0YXJ0ZWQ6XG5cbjEuIENyZWF0ZSBhIG5ldyBcXGBhd3NjZGstYXBwXFxgIHZpYVxuXFxgXFxgXFxgYmFzaFxubnB4IHByb2plbiBuZXcgYXdzY2RrLWFwcC10cyAtLWNka1ZlcnNpb249Mi4xNzcuMCAtLXBhY2thZ2UtbWFuYWdlcj1ucG1cblxcYFxcYFxcYFxuMy4gQWRkIFxcYEBtYXZvZ2VsLyR7b3B0aW9ucy5uYW1lfVxcYCBhcyBhIGRlcGVuZGVuY3kgdG8geW91ciBwcm9qZWN0IGluIHRoZSBcXGAucHJvamVucmMudHNcXGAgZmlsZVxuNC4gUnVuIFxcYG5weCBwcm9qZW5cXGAgdG8gaW5zdGFsbCBpdFxuNS4gQWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIFxcYHNyYy9tYWluLnRzXFxgIGZpbGU6XG5cXGBcXGBcXGB0c1xuaW1wb3J0IHsgQXBwLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxhY2Vob2xkZXIgfSBmcm9tICdAbWF2b2dlbC8ke29wdGlvbnMubmFtZX0nO1xuXG5leHBvcnQgY2xhc3MgTXlTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YWNrUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IFBsYWNlaG9sZGVyKHRoaXMsICdwbGFjZWhvbGRlcicsIHtcbiAgICAgIC8vIGFuZCBtb3JlLi4uIPCfkqFcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBlbnYgPSB7XG4gIGFjY291bnQ6ICcxMjM0NTY3ODk5MTInLFxuICByZWdpb246ICdldS1jZW50cmFsLTEnLFxufTtcblxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xubmV3IE15U3RhY2soYXBwLCAncGxhY2Vob2xkZXInLCB7IGVudiB9KTtcbmFwcC5zeW50aCgpO1xuXFxgXFxgXFxgXG5cbmFuZCBkZXBsb3kgaXRcblxcYFxcYFxcYGJhc2hcbm5weCBwcm9qZW4gYnVpbGRcbm5weCBwcm9qZW4gZGVwbG95XG5cXGBcXGBcXGBcblxud2l0aCB0aGUgb3V0cHV0XG5cXGBcXGBcXGBjb25zb2xlXG5UQkRcblxcYFxcYFxcYFxuXG5TZWUgdGhlIFtleGFtcGxlc10oLi9leGFtcGxlcykgZm9sZGVyIGZvciBtb3JlIGluc3BpcmF0aW9uLlxuXG4jIyBTb2x1dGlvbiBEZXNpZ25cblxuPGRldGFpbHM+XG4gIDxzdW1tYXJ5Pi4uLiBpZiB5b3UncmUgY3VyaW91cyBhYm91dCBjbGljayBoZXJlIGZvciB0aGUgZGV0YWlsczwvc3VtbWFyeT5cblxuIVtwbGFjZWhvbGRlcl0oZG9jcy9pbWcvcGxhY2Vob2xkZXIuZHJhd2lvLW1pbi5wbmcpXG5cbjwvZGV0YWlscz5cblxuIyMgSW5zcGlyYXRpb25cblxuYWRkIHRvb2xzIG9yIGxpbmtzIHdoaWNoIGluc3BpcmVkIHlvdVxuICAgICAgICAgIGAsXG4gICAgICAgICAgZnMucmVhZEZpbGVTeW5jKGAke2Jhc2VBc3NldHNEaXJlY3Rvcnl9L2NvbW1vbi9naXRodWJfcmVhZG1lX2N0YS5tZGApLnRvU3RyaW5nKCksXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgICAgLy8gTk9URToga2VlcCBhbGwgdGhlIHBhc3NlZCBpbiBvcHRpb25zIHdoaWNoIGNhbiBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb25lcyFcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBnaXRpZ25vcmVcbiAgICBjb25zdCBmaWxlc1BhdHRlcm5Ub0dpdGlnbm9yZSA9IFtcbiAgICAgICd0bXAnLFxuICAgICAgJy5jb2RlZ3B0JyxcbiAgICBdO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlc1BhdHRlcm5Ub0dpdGlnbm9yZSkge1xuICAgICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShmaWxlKTtcbiAgICB9XG4gICAgdGhpcy5hZGREZXBzKFxuICAgICAgJ2Nkay1uYWdAXjIuMzUuMCcsXG4gICAgKTtcbiAgICB0aGlzLmFkZERldkRlcHMoXG4gICAgICBgQGF3cy1jZGsvaW50ZWctcnVubmVyQCR7dGhpcy5jZGtWZXJzaW9ufS1hbHBoYS4wYCwgLy8gTk9URToga2VlcCBpbiBzeW5jIHdpdGggY2RrdmVyc2lvblxuICAgICAgYEBhd3MtY2RrL2ludGVnLXRlc3RzLWFscGhhQCR7dGhpcy5jZGtWZXJzaW9ufS1hbHBoYS4wYCxcbiAgICAgICdAY29tbWl0bGludC9jbGlAXjE5LjYuMScsXG4gICAgICAnQGNvbW1pdGxpbnQvY29uZmlnLWNvbnZlbnRpb25hbEBeMTkuNi4wJyxcbiAgICAgICdhd3NsaW50QF4yLjcyLjEnLFxuICAgICAgJ2h1c2t5QF45LjEuNycsXG4gICAgKTtcblxuICAgIHRoaXMucGFja2FnZS5zZXRTY3JpcHQoJ3ByZXBhcmUnLCAnaHVza3knKTtcbiAgICBuZXcgVGV4dEZpbGUodGhpcywgJy5jb21taXRsaW50cmMuanMnLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICAnbW9kdWxlLmV4cG9ydHMgPSB7IGV4dGVuZHM6IFtcXCdAY29tbWl0bGludC9jb25maWctY29udmVudGlvbmFsXFwnXSB9OycsXG4gICAgICBdLFxuICAgICAgbWFya2VyOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wYWNrYWdlLnNldFNjcmlwdCgnYXdzbGludCcsICdhd3NsaW50Jyk7XG4gICAgLy8gLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueW1sXG4gICAgY29uc3QgYnVpbGRXb3JrZmxvdyA9IHRoaXMuZ2l0aHViPy50cnlGaW5kV29ya2Zsb3coJ2J1aWxkJyk7XG4gICAgaWYgKCFidWlsZFdvcmtmbG93KSByZXR1cm47XG4gICAgY29uc3QgYnVpbGRKb2IgPSBidWlsZFdvcmtmbG93LmdldEpvYignYnVpbGQnKTtcbiAgICBpZiAoIWJ1aWxkSm9iIHx8ICEoJ3N0ZXBzJyBpbiBidWlsZEpvYikpIHJldHVybjtcbiAgICAvLyBUT0RPOiBmaWd1cmUgb3V0IHdoeSB3cm9uZyB0eXBlc1xuICAgIGNvbnN0IGdldEJ1aWxkU3RlcHMgPSBidWlsZEpvYi5zdGVwcyBhcyB1bmtub3duIGFzICgpID0+IEpvYlN0ZXBbXTtcbiAgICBjb25zdCBidWlsZEpvYlN0ZXBzID0gZ2V0QnVpbGRTdGVwcygpO1xuICAgIGJ1aWxkV29ya2Zsb3cudXBkYXRlSm9iKCdidWlsZCcsIHtcbiAgICAgIC4uLmJ1aWxkSm9iLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgLi4uYnVpbGRKb2JTdGVwcy5zbGljZSgwLCA0KSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdSdW4gYXdzbGludCcsXG4gICAgICAgICAgcnVuOiAnbnBtIHJ1biBhd3NsaW50JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uYnVpbGRKb2JTdGVwcy5zbGljZSg0KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBhY2thZ2Uuc2V0U2NyaXB0KFxuICAgICAgJ2ludGVnLXRlc3QnLFxuICAgICAgYGludGVnLXJ1bm5lciAtLWRpcmVjdG9yeSAuL2ludGVnLXRlc3RzICR7aW50ZWdUZXN0UmVnaW9ucz8ubWFwKHJlZ2lvbiA9PiBgLS1wYXJhbGxlbC1yZWdpb25zICR7cmVnaW9ufWApLmpvaW4oJyAnKX0gLS11cGRhdGUtb24tZmFpbGVkYCxcbiAgICApO1xuXG4gICAgbmV3IFRleHRGaWxlKHRoaXMsICcuZ2l0aHViL0lTU1VFX1RFTVBMQVRFL2J1Z19yZXBvcnQubWQnLCB7XG4gICAgICBsaW5lczogW2ZzLnJlYWRGaWxlU3luYyhgJHtiYXNlQXNzZXRzRGlyZWN0b3J5fS9jb21tb24vZ2l0aHViX2J1Z19yZXBvcnQubWRgKS50b1N0cmluZygpXSxcbiAgICB9KTtcblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCAnLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9mZWF0dXJlX3JlcXVlc3QubWQnLCB7XG4gICAgICBsaW5lczogW2ZzLnJlYWRGaWxlU3luYyhgJHtiYXNlQXNzZXRzRGlyZWN0b3J5fS9jb21tb24vZ2l0aHViX2ZlYXR1cmVfcmVxdWVzdC5tZGApLnRvU3RyaW5nKCldLFxuICAgIH0pO1xuXG4gICAgbmV3IFlhbWxGaWxlKHRoaXMsICcuZ2l0aHViL0ZVTkRJTkcueWFtbCcsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBnaXRodWI6ICdtYXZvZ2VsJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgVGV4dEZpbGUodGhpcywgJ0NPTlRSSUJVVElORy5tZCcsIHtcbiAgICAgIGxpbmVzOiBbZnMucmVhZEZpbGVTeW5jKGAke2Jhc2VBc3NldHNEaXJlY3Rvcnl9L2NvbW1vbi9jb250cmlidXRpbmcubWRgKS50b1N0cmluZygpXSxcbiAgICB9KTtcblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCAnLnByZXR0aWVycmMnLCB7XG4gICAgICBsaW5lczogW2ZzLnJlYWRGaWxlU3luYyhgJHtiYXNlQXNzZXRzRGlyZWN0b3J5fS9jb21tb24vcHJldHRpZXJyY2ApLnRvU3RyaW5nKCldLFxuICAgIH0pO1xuXG4gICAgLy8gd3JpdGUgc2FtcGxlIGNvZGUgdG8gbWFpbi50cyAmIHRvIG1haW4udGVzdC50c1xuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IFNhbXBsZUNvZGUodGhpcywge1xuICAgICAgICBiYXNlQXNzZXRzRGlyZWN0b3J5LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBTYW1wbGVDb2RlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJhc2VBc3NldHNEaXJlY3Rvcnk/OiBzdHJpbmc7XG59XG5cbmNsYXNzIFNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGxpYnJhcnk6IEF3c0Nka0NvbnN0cnVjdExpYnJhcnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogU2FtcGxlQ29kZU9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbGlicmFyeTogQXdzQ2RrQ29uc3RydWN0TGlicmFyeSxcbiAgICBvcHRpb25zOiBTYW1wbGVDb2RlT3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIobGlicmFyeSk7XG4gICAgdGhpcy5saWJyYXJ5ID0gbGlicmFyeTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemUoKSB7XG4gICAgY29uc3Qgb3V0ZGlyID0gdGhpcy5wcm9qZWN0Lm91dGRpcjtcbiAgICBjb25zdCBzcmNkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCB0aGlzLmxpYnJhcnkuc3JjZGlyKTtcbiAgICBpZiAoXG4gICAgICBmcy5leGlzdHNTeW5jKHNyY2RpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKHNyY2RpcikuZmlsdGVyKCh4KSA9PiB4LmVuZHNXaXRoKCcudHMnKSkgJiZcbiAgICAgICFmcy5yZWFkRmlsZVN5bmMoYCR7c3JjZGlyfS9pbmRleC50c2ApLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ2V4cG9ydCBjbGFzcyBIZWxsbycpIC8vIE5vdGU6IGZyb20gcGFyZW50XG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnMubWtkaXJTeW5jKHNyY2RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oc3JjZGlyLCAnaW5kZXgudHMnKSwgZnMucmVhZEZpbGVTeW5jKGAke3RoaXMub3B0aW9ucy5iYXNlQXNzZXRzRGlyZWN0b3J5fS9jZGstY29uc3RydWN0L3NyY19pbmRleC50c2ApLnRvU3RyaW5nKCkpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHNyY2RpciwgJ3BsYWNlaG9sZGVyLnRzJyksIGZzLnJlYWRGaWxlU3luYyhgJHt0aGlzLm9wdGlvbnMuYmFzZUFzc2V0c0RpcmVjdG9yeX0vY2RrLWNvbnN0cnVjdC9zcmNfcGxhY2Vob2xkZXIudHNgKS50b1N0cmluZygpKTtcbiAgICAvLyBjcmQgd2l0aCBsYW1iZGEgZ2VuZXJhdGlvblxuICAgIGZzLm1rZGlyU3luYyhgJHtzcmNkaXJ9L2NyZC1leGFtcGxlYCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oYCR7c3JjZGlyfS9jcmQtZXhhbXBsZWAsICdjcmQtZXhhbXBsZS50cycpLCBmcy5yZWFkRmlsZVN5bmMoYCR7dGhpcy5vcHRpb25zLmJhc2VBc3NldHNEaXJlY3Rvcnl9L2Nkay1jb25zdHJ1Y3Qvc3JjX2NyZC1leGFtcGxlLnRzYCkudG9TdHJpbmcoKSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oYCR7c3JjZGlyfS9jcmQtZXhhbXBsZWAsICdjcmQtZXhhbXBsZS5sYW1iZGEudHMnKSwgZnMucmVhZEZpbGVTeW5jKGAke3RoaXMub3B0aW9ucy5iYXNlQXNzZXRzRGlyZWN0b3J5fS9jZGstY29uc3RydWN0L3NyY19jcmQtZXhhbXBsZS5sYW1iZGEudHNgKS50b1N0cmluZygpKTtcblxuXG4gICAgY29uc3QgdGVzdGRpciA9IHBhdGguam9pbihvdXRkaXIsIHRoaXMubGlicmFyeS50ZXN0ZGlyKTtcbiAgICBpZiAoXG4gICAgICBmcy5leGlzdHNTeW5jKHRlc3RkaXIpICYmXG4gICAgICBmcy5yZWFkZGlyU3luYyh0ZXN0ZGlyKS5maWx0ZXIoKHgpID0+IHguZW5kc1dpdGgoJy50cycpKSAmJlxuICAgICAgIWZzLmV4aXN0c1N5bmMoYCR7dGVzdGRpcn0vaGVsbG8udGVzdC50c2ApIC8vIE5vdGU6IGZyb20gcGFyZW50XG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHJlbW92ZSAke3Rlc3RkaXJ9L2hlbGxvLnRlc3QudHMgZmlsZS4gT24gdGhlIG90aGVyIGhhbmQsIHdlIG92ZXJyaWRlIGluZGV4LnRzXG4gICAgZnMudW5saW5rU3luYyhgJHt0ZXN0ZGlyfS9oZWxsby50ZXN0LnRzYCk7XG4gICAgZnMubWtkaXJTeW5jKHRlc3RkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRlc3RkaXIsICdpbmRleC50ZXN0LnRzJyksIGZzLnJlYWRGaWxlU3luYyhgJHt0aGlzLm9wdGlvbnMuYmFzZUFzc2V0c0RpcmVjdG9yeX0vY2RrLWNvbnN0cnVjdC90ZXN0X2luZGV4LnRlc3QudHNgKS50b1N0cmluZygpKTtcbiAgICAvLyBsYW1iZGEgdGVzdHMgd2l0aCBqZXN0IHN0dWJzXG4gICAgZnMubWtkaXJTeW5jKGAke3Rlc3RkaXJ9L2NyZC1leGFtcGxlYCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oYCR7dGVzdGRpcn0vY3JkLWV4YW1wbGVgLCAnY3JkLWV4YW1wbGUudGVzdC50cycpLCBmcy5yZWFkRmlsZVN5bmMoYCR7dGhpcy5vcHRpb25zLmJhc2VBc3NldHNEaXJlY3Rvcnl9L2Nkay1jb25zdHJ1Y3QvdGVzdF9jcmQtZXhhbXBsZS50ZXN0LnRzYCkudG9TdHJpbmcoKSk7XG5cblxuICAgIGNvbnN0IGludGVnVGVzdGRpciA9IHBhdGguam9pbihvdXRkaXIsICdpbnRlZy10ZXN0cycpO1xuICAgIGlmIChcbiAgICAgIGZzLmV4aXN0c1N5bmMoaW50ZWdUZXN0ZGlyKSAmJlxuICAgICAgZnMucmVhZGRpclN5bmMoaW50ZWdUZXN0ZGlyKS5maWx0ZXIoKHgpID0+IHguZW5kc1dpdGgoJy50cycpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmcy5ta2RpclN5bmMoaW50ZWdUZXN0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihpbnRlZ1Rlc3RkaXIsICdpbnRlZy5wbGFjZWhvbGRlci50cycpLCBmcy5yZWFkRmlsZVN5bmMoYCR7dGhpcy5vcHRpb25zLmJhc2VBc3NldHNEaXJlY3Rvcnl9L2Nkay1jb25zdHJ1Y3QvaW50ZWdfaW50ZWcucGxhY2Vob2xkZXIudHNgKS50b1N0cmluZygpKTtcblxuICAgIGNvbnN0IGludGVnVGVzdEZ1bmN0aW9uc2RpciA9IHBhdGguam9pbihpbnRlZ1Rlc3RkaXIsICdmdW5jdGlvbnMnKTtcbiAgICBpZiAoXG4gICAgICBmcy5leGlzdHNTeW5jKGludGVnVGVzdEZ1bmN0aW9uc2RpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKGludGVnVGVzdEZ1bmN0aW9uc2RpcikuZmlsdGVyKCh4KSA9PiB4LmVuZHNXaXRoKCcudHMnKSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZnMubWtkaXJTeW5jKGludGVnVGVzdEZ1bmN0aW9uc2RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oaW50ZWdUZXN0RnVuY3Rpb25zZGlyLCAndGVzdC1oYW5kbGVyLnRzJyksIGZzLnJlYWRGaWxlU3luYyhgJHt0aGlzLm9wdGlvbnMuYmFzZUFzc2V0c0RpcmVjdG9yeX0vY2RrLWNvbnN0cnVjdC9pbnRlZ190ZXN0LWhhbmRsZXIudHNgKS50b1N0cmluZygpKTtcblxuICAgIGNvbnN0IGRvY3NkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCAnZG9jcycpO1xuICAgIGlmIChcbiAgICAgIGZzLmV4aXN0c1N5bmMoZG9jc2RpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKGRvY3NkaXIpLmZpbHRlcigoeCkgPT4geC5lbmRzV2l0aCgnLmRyYXdpbycpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmcy5ta2RpclN5bmMoZG9jc2RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oZG9jc2RpciwgJ3BsYWNlaG9sZGVyLmRyYXdpbycpLCBmcy5yZWFkRmlsZVN5bmMoYCR7dGhpcy5vcHRpb25zLmJhc2VBc3NldHNEaXJlY3Rvcnl9L2NvbW1vbi9kb2NzX3BsYWNlaG9sZGVyLmRyYXdpb2ApLnRvU3RyaW5nKCkpO1xuXG4gICAgY29uc3QgZXhhbXBsZXNkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCAnZXhhbXBsZXMnLCAnc2ltcGxlJyk7XG4gICAgaWYgKFxuICAgICAgZnMuZXhpc3RzU3luYyhleGFtcGxlc2RpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKGV4YW1wbGVzZGlyKS5maWx0ZXIoKHgpID0+IHguZW5kc1dpdGgoJy5kcmF3aW8nKSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZnMubWtkaXJTeW5jKGV4YW1wbGVzZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihleGFtcGxlc2RpciwgJ21haW4udHMnKSwgZnMucmVhZEZpbGVTeW5jKGAke3RoaXMub3B0aW9ucy5iYXNlQXNzZXRzRGlyZWN0b3J5fS9jZGstY29uc3RydWN0L2V4YW1wbGVzX3NpbXBsZV9tYWluLnRzYCkudG9TdHJpbmcoKSk7XG4gIH1cbn0iXX0=
|
|
@@ -38,6 +38,8 @@ type MvcCdkConstructLibrary interface {
|
|
|
38
38
|
// Experimental.
|
|
39
39
|
AutoMerge() github.AutoMerge
|
|
40
40
|
// Experimental.
|
|
41
|
+
Biome() javascript.Biome
|
|
42
|
+
// Experimental.
|
|
41
43
|
BuildTask() projen.Task
|
|
42
44
|
// The PR build GitHub workflow.
|
|
43
45
|
//
|
|
@@ -304,6 +306,9 @@ type MvcCdkConstructLibrary interface {
|
|
|
304
306
|
//
|
|
305
307
|
// Deprecated.
|
|
306
308
|
AnnotateGenerated(glob *string)
|
|
309
|
+
// Projen default Typescript compiler options.
|
|
310
|
+
// Experimental.
|
|
311
|
+
DefaultTypeScriptCompilerOptions() *javascript.TypeScriptCompilerOptions
|
|
307
312
|
// Indicates if a script by the name name is defined.
|
|
308
313
|
// Deprecated: Use `project.tasks.tryFind(name)`
|
|
309
314
|
HasScript(name *string) *bool
|
|
@@ -423,6 +428,16 @@ func (j *jsiiProxy_MvcCdkConstructLibrary) AutoMerge() github.AutoMerge {
|
|
|
423
428
|
return returns
|
|
424
429
|
}
|
|
425
430
|
|
|
431
|
+
func (j *jsiiProxy_MvcCdkConstructLibrary) Biome() javascript.Biome {
|
|
432
|
+
var returns javascript.Biome
|
|
433
|
+
_jsii_.Get(
|
|
434
|
+
j,
|
|
435
|
+
"biome",
|
|
436
|
+
&returns,
|
|
437
|
+
)
|
|
438
|
+
return returns
|
|
439
|
+
}
|
|
440
|
+
|
|
426
441
|
func (j *jsiiProxy_MvcCdkConstructLibrary) BuildTask() projen.Task {
|
|
427
442
|
var returns projen.Task
|
|
428
443
|
_jsii_.Get(
|
|
@@ -1403,6 +1418,19 @@ func (m *jsiiProxy_MvcCdkConstructLibrary) AnnotateGenerated(glob *string) {
|
|
|
1403
1418
|
)
|
|
1404
1419
|
}
|
|
1405
1420
|
|
|
1421
|
+
func (m *jsiiProxy_MvcCdkConstructLibrary) DefaultTypeScriptCompilerOptions() *javascript.TypeScriptCompilerOptions {
|
|
1422
|
+
var returns *javascript.TypeScriptCompilerOptions
|
|
1423
|
+
|
|
1424
|
+
_jsii_.Invoke(
|
|
1425
|
+
m,
|
|
1426
|
+
"defaultTypeScriptCompilerOptions",
|
|
1427
|
+
nil, // no parameters
|
|
1428
|
+
&returns,
|
|
1429
|
+
)
|
|
1430
|
+
|
|
1431
|
+
return returns
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1406
1434
|
func (m *jsiiProxy_MvcCdkConstructLibrary) HasScript(name *string) *bool {
|
|
1407
1435
|
if err := m.validateHasScriptParameters(name); err != nil {
|
|
1408
1436
|
panic(err)
|
|
@@ -376,6 +376,11 @@ type MvcCdkConstructLibraryOptions struct {
|
|
|
376
376
|
//
|
|
377
377
|
// Experimental.
|
|
378
378
|
NpmTokenSecret *string `field:"optional" json:"npmTokenSecret" yaml:"npmTokenSecret"`
|
|
379
|
+
// Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work.
|
|
380
|
+
// Default: - false.
|
|
381
|
+
//
|
|
382
|
+
// Experimental.
|
|
383
|
+
NpmTrustedPublishing *bool `field:"optional" json:"npmTrustedPublishing" yaml:"npmTrustedPublishing"`
|
|
379
384
|
// The Node Package Manager used to execute scripts.
|
|
380
385
|
// Default: NodePackageManager.YARN_CLASSIC
|
|
381
386
|
//
|
|
@@ -482,6 +487,7 @@ type MvcCdkConstructLibraryOptions struct {
|
|
|
482
487
|
// - Working directory: the project directory.
|
|
483
488
|
// - `$VERSION`: the current version. Looks like `1.2.3`.
|
|
484
489
|
// - `$LATEST_TAG`: the most recent tag. Looks like `prefix-v1.2.3`, or may be unset.
|
|
490
|
+
// - `$SUGGESTED_BUMP`: the suggested bump action based on commits. One of `major|minor|patch|none`.
|
|
485
491
|
//
|
|
486
492
|
// The command should print one of the following to `stdout`:
|
|
487
493
|
//
|
|
@@ -545,6 +551,17 @@ type MvcCdkConstructLibraryOptions struct {
|
|
|
545
551
|
//
|
|
546
552
|
// Experimental.
|
|
547
553
|
ReleaseBranches *map[string]*release.BranchOptions `field:"optional" json:"releaseBranches" yaml:"releaseBranches"`
|
|
554
|
+
// The GitHub Actions environment used for the release.
|
|
555
|
+
//
|
|
556
|
+
// This can be used to add an explicit approval step to the release
|
|
557
|
+
// or limit who can initiate a release through environment protection rules.
|
|
558
|
+
//
|
|
559
|
+
// When multiple artifacts are released, the environment can be overwritten
|
|
560
|
+
// on a per artifact basis.
|
|
561
|
+
// Default: - no environment used, unless set at the artifact level.
|
|
562
|
+
//
|
|
563
|
+
// Experimental.
|
|
564
|
+
ReleaseEnvironment *string `field:"optional" json:"releaseEnvironment" yaml:"releaseEnvironment"`
|
|
548
565
|
// Automatically release new versions every commit to one of branches in `releaseBranches`.
|
|
549
566
|
// Default: true.
|
|
550
567
|
//
|
|
@@ -582,6 +599,11 @@ type MvcCdkConstructLibraryOptions struct {
|
|
|
582
599
|
//
|
|
583
600
|
// Experimental.
|
|
584
601
|
ReleaseTrigger release.ReleaseTrigger `field:"optional" json:"releaseTrigger" yaml:"releaseTrigger"`
|
|
602
|
+
// Build environment variables for release workflows.
|
|
603
|
+
// Default: {}.
|
|
604
|
+
//
|
|
605
|
+
// Experimental.
|
|
606
|
+
ReleaseWorkflowEnv *map[string]*string `field:"optional" json:"releaseWorkflowEnv" yaml:"releaseWorkflowEnv"`
|
|
585
607
|
// The name of the default release workflow.
|
|
586
608
|
// Default: "release".
|
|
587
609
|
//
|
|
@@ -627,6 +649,16 @@ type MvcCdkConstructLibraryOptions struct {
|
|
|
627
649
|
//
|
|
628
650
|
// Experimental.
|
|
629
651
|
AutoApproveUpgrades *bool `field:"optional" json:"autoApproveUpgrades" yaml:"autoApproveUpgrades"`
|
|
652
|
+
// Setup Biome.
|
|
653
|
+
// Default: false.
|
|
654
|
+
//
|
|
655
|
+
// Experimental.
|
|
656
|
+
Biome *bool `field:"optional" json:"biome" yaml:"biome"`
|
|
657
|
+
// Biome options.
|
|
658
|
+
// Default: - default options.
|
|
659
|
+
//
|
|
660
|
+
// Experimental.
|
|
661
|
+
BiomeOptions *javascript.BiomeOptions `field:"optional" json:"biomeOptions" yaml:"biomeOptions"`
|
|
630
662
|
// Define a GitHub workflow for building PRs.
|
|
631
663
|
// Default: - true if not a subproject.
|
|
632
664
|
//
|
|
@@ -650,13 +682,13 @@ type MvcCdkConstructLibraryOptions struct {
|
|
|
650
682
|
//
|
|
651
683
|
// Experimental.
|
|
652
684
|
CheckLicenses *javascript.LicenseCheckerOptions `field:"optional" json:"checkLicenses" yaml:"checkLicenses"`
|
|
653
|
-
// Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@
|
|
685
|
+
// Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v5 By default, OIDC auth is used. Alternatively a token can be provided via `codeCovTokenSecret`.
|
|
654
686
|
// Default: false.
|
|
655
687
|
//
|
|
656
688
|
// Experimental.
|
|
657
689
|
CodeCov *bool `field:"optional" json:"codeCov" yaml:"codeCov"`
|
|
658
|
-
// Define the secret name for a specified https://codecov.io/ token
|
|
659
|
-
// Default: -
|
|
690
|
+
// Define the secret name for a specified https://codecov.io/ token.
|
|
691
|
+
// Default: - OIDC auth is used.
|
|
660
692
|
//
|
|
661
693
|
// Experimental.
|
|
662
694
|
CodeCovTokenSecret *string `field:"optional" json:"codeCovTokenSecret" yaml:"codeCovTokenSecret"`
|
|
@@ -837,7 +869,7 @@ type MvcCdkConstructLibraryOptions struct {
|
|
|
837
869
|
// Experimental.
|
|
838
870
|
EntrypointTypes *string `field:"optional" json:"entrypointTypes" yaml:"entrypointTypes"`
|
|
839
871
|
// Setup eslint.
|
|
840
|
-
// Default: true.
|
|
872
|
+
// Default: - true, unless biome is enabled.
|
|
841
873
|
//
|
|
842
874
|
// Experimental.
|
|
843
875
|
Eslint *bool `field:"optional" json:"eslint" yaml:"eslint"`
|
|
@@ -962,7 +994,7 @@ type MvcCdkConstructLibraryOptions struct {
|
|
|
962
994
|
// NOTE: The jsii compiler releases since 5.0.0 are not semantically versioned
|
|
963
995
|
// and should remain on the same minor, so we recommend using a `~` dependency
|
|
964
996
|
// (e.g. `~5.0.0`).
|
|
965
|
-
// Default: "~5.
|
|
997
|
+
// Default: "~5.8.0"
|
|
966
998
|
//
|
|
967
999
|
// Experimental.
|
|
968
1000
|
JsiiVersion *string `field:"optional" json:"jsiiVersion" yaml:"jsiiVersion"`
|
package/mavogelmvcprojen/go.mod
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
module github.com/MV-Consulting/mvc-projen/mavogelmvcprojen
|
|
2
2
|
|
|
3
|
-
go 1.
|
|
3
|
+
go 1.23
|
|
4
4
|
|
|
5
5
|
require (
|
|
6
|
-
github.com/aws/jsii-runtime-go v1.
|
|
6
|
+
github.com/aws/jsii-runtime-go v1.115.0
|
|
7
7
|
github.com/aws/constructs-go/constructs/v10 v10.4.2
|
|
8
|
-
github.com/projen/projen-go/projen v0.
|
|
8
|
+
github.com/projen/projen-go/projen v0.96.5
|
|
9
9
|
)
|
|
@@ -13,7 +13,7 @@ import (
|
|
|
13
13
|
projen "github.com/projen/projen-go/projen/jsii"
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
-
//go:embed mavogel-mvc-projen-0.0.
|
|
16
|
+
//go:embed mavogel-mvc-projen-0.0.9.tgz
|
|
17
17
|
var tarball []byte
|
|
18
18
|
|
|
19
19
|
// Initialize loads the necessary packages in the @jsii/kernel to support the enclosing module.
|
|
@@ -24,5 +24,5 @@ func Initialize() {
|
|
|
24
24
|
projen.Initialize()
|
|
25
25
|
|
|
26
26
|
// Load this library into the kernel
|
|
27
|
-
_jsii_.Load("@mavogel/mvc-projen", "0.0.
|
|
27
|
+
_jsii_.Load("@mavogel/mvc-projen", "0.0.9", tarball)
|
|
28
28
|
}
|
package/mavogelmvcprojen/main.go
CHANGED
|
@@ -35,6 +35,7 @@ func init() {
|
|
|
35
35
|
_jsii_.MemberProperty{JsiiProperty: "artifactsJavascriptDirectory", GoGetter: "ArtifactsJavascriptDirectory"},
|
|
36
36
|
_jsii_.MemberProperty{JsiiProperty: "autoApprove", GoGetter: "AutoApprove"},
|
|
37
37
|
_jsii_.MemberProperty{JsiiProperty: "autoMerge", GoGetter: "AutoMerge"},
|
|
38
|
+
_jsii_.MemberProperty{JsiiProperty: "biome", GoGetter: "Biome"},
|
|
38
39
|
_jsii_.MemberProperty{JsiiProperty: "buildTask", GoGetter: "BuildTask"},
|
|
39
40
|
_jsii_.MemberProperty{JsiiProperty: "buildWorkflow", GoGetter: "BuildWorkflow"},
|
|
40
41
|
_jsii_.MemberProperty{JsiiProperty: "buildWorkflowJobId", GoGetter: "BuildWorkflowJobId"},
|
|
@@ -45,6 +46,7 @@ func init() {
|
|
|
45
46
|
_jsii_.MemberProperty{JsiiProperty: "compileTask", GoGetter: "CompileTask"},
|
|
46
47
|
_jsii_.MemberProperty{JsiiProperty: "components", GoGetter: "Components"},
|
|
47
48
|
_jsii_.MemberProperty{JsiiProperty: "defaultTask", GoGetter: "DefaultTask"},
|
|
49
|
+
_jsii_.MemberMethod{JsiiMethod: "defaultTypeScriptCompilerOptions", GoMethod: "DefaultTypeScriptCompilerOptions"},
|
|
48
50
|
_jsii_.MemberProperty{JsiiProperty: "deps", GoGetter: "Deps"},
|
|
49
51
|
_jsii_.MemberProperty{JsiiProperty: "devContainer", GoGetter: "DevContainer"},
|
|
50
52
|
_jsii_.MemberProperty{JsiiProperty: "docgen", GoGetter: "Docgen"},
|
package/mavogelmvcprojen/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.9
|
package/package.json
CHANGED
|
@@ -44,44 +44,43 @@
|
|
|
44
44
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
45
45
|
"@typescript-eslint/parser": "^8",
|
|
46
46
|
"commit-and-tag-version": "^12",
|
|
47
|
-
"constructs": "
|
|
47
|
+
"constructs": "10.4.2",
|
|
48
48
|
"eslint": "^9",
|
|
49
49
|
"eslint-import-resolver-typescript": "^3.7.0",
|
|
50
50
|
"eslint-plugin-import": "^2.31.0",
|
|
51
51
|
"husky": "^9.1.7",
|
|
52
52
|
"jest": "^29.7.0",
|
|
53
53
|
"jest-junit": "^16",
|
|
54
|
-
"jsii": "~5.
|
|
54
|
+
"jsii": "~5.8.0",
|
|
55
55
|
"jsii-diff": "^1.106.0",
|
|
56
56
|
"jsii-docgen": "^10.5.0",
|
|
57
57
|
"jsii-pacmak": "^1.106.0",
|
|
58
|
-
"jsii-rosetta": "~5.
|
|
59
|
-
"projen": "0.
|
|
58
|
+
"jsii-rosetta": "~5.8.0",
|
|
59
|
+
"projen": "0.96.5",
|
|
60
60
|
"ts-jest": "^29.2.5",
|
|
61
61
|
"ts-node": "^9",
|
|
62
62
|
"typescript": "^5.7.3"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"constructs": "^10.4.2",
|
|
66
|
-
"projen": "0.
|
|
66
|
+
"projen": "0.96.5"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"constructs": "^10.4.2",
|
|
70
|
-
"projen": "0.
|
|
70
|
+
"projen": "0.96.5"
|
|
71
71
|
},
|
|
72
72
|
"keywords": [
|
|
73
73
|
"aws",
|
|
74
74
|
"cdk",
|
|
75
75
|
"construct",
|
|
76
|
-
"
|
|
77
|
-
"vscode"
|
|
76
|
+
"projen"
|
|
78
77
|
],
|
|
79
78
|
"main": "lib/index.js",
|
|
80
79
|
"license": "Apache-2.0",
|
|
81
80
|
"publishConfig": {
|
|
82
81
|
"access": "public"
|
|
83
82
|
},
|
|
84
|
-
"version": "0.0.
|
|
83
|
+
"version": "0.0.10",
|
|
85
84
|
"jest": {
|
|
86
85
|
"coverageProvider": "v8",
|
|
87
86
|
"testMatch": [
|