mrpj 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -82,7 +82,7 @@
82
82
  "stability": "stable"
83
83
  },
84
84
  "homepage": "https://github.com/mrgrain/projen-projects",
85
- "jsiiVersion": "5.8.21 (build 0b7c0ba)",
85
+ "jsiiVersion": "5.9.10 (build 0e9cf43)",
86
86
  "license": "MIT",
87
87
  "metadata": {
88
88
  "jsii": {
@@ -102,6 +102,13 @@
102
102
  },
103
103
  "schema": "jsii/0.10.0",
104
104
  "submodules": {
105
+ "mrpj.components": {
106
+ "locationInModule": {
107
+ "filename": "src/index.ts",
108
+ "line": 9
109
+ },
110
+ "symbolId": "src/components/index:"
111
+ },
105
112
  "mrpj.logo": {
106
113
  "locationInModule": {
107
114
  "filename": "src/index.ts",
@@ -3325,7 +3332,7 @@
3325
3332
  },
3326
3333
  "locationInModule": {
3327
3334
  "filename": "src/projen-project.ts",
3328
- "line": 15
3335
+ "line": 16
3329
3336
  },
3330
3337
  "parameters": [
3331
3338
  {
@@ -3339,7 +3346,7 @@
3339
3346
  "kind": "class",
3340
3347
  "locationInModule": {
3341
3348
  "filename": "src/projen-project.ts",
3342
- "line": 11
3349
+ "line": 12
3343
3350
  },
3344
3351
  "name": "ProjenProject",
3345
3352
  "properties": [
@@ -3350,7 +3357,7 @@
3350
3357
  "immutable": true,
3351
3358
  "locationInModule": {
3352
3359
  "filename": "src/projen-project.ts",
3353
- "line": 12
3360
+ "line": 13
3354
3361
  },
3355
3362
  "name": "logo",
3356
3363
  "optional": true,
@@ -3365,7 +3372,7 @@
3365
3372
  "immutable": true,
3366
3373
  "locationInModule": {
3367
3374
  "filename": "src/projen-project.ts",
3368
- "line": 13
3375
+ "line": 14
3369
3376
  },
3370
3377
  "name": "wordmark",
3371
3378
  "optional": true,
@@ -3592,7 +3599,7 @@
3592
3599
  {
3593
3600
  "abstract": true,
3594
3601
  "docs": {
3595
- "default": "- tokens will be used",
3602
+ "default": "\"automation\"",
3596
3603
  "remarks": "Remember to install the app and to configure credentials.",
3597
3604
  "stability": "stable",
3598
3605
  "summary": "Use this app for workflow automation."
@@ -3608,6 +3615,25 @@
3608
3615
  "primitive": "string"
3609
3616
  }
3610
3617
  },
3618
+ {
3619
+ "abstract": true,
3620
+ "docs": {
3621
+ "default": "- none",
3622
+ "remarks": "You will need to set the environment up in GitHub. Credentials can only be used within this environment.",
3623
+ "stability": "stable",
3624
+ "summary": "Protect any automation with this environment."
3625
+ },
3626
+ "immutable": true,
3627
+ "locationInModule": {
3628
+ "filename": "src/projen-project-options.ts",
3629
+ "line": 1045
3630
+ },
3631
+ "name": "automationEnvironment",
3632
+ "optional": true,
3633
+ "type": {
3634
+ "primitive": "string"
3635
+ }
3636
+ },
3611
3637
  {
3612
3638
  "abstract": true,
3613
3639
  "docs": {
@@ -4709,7 +4735,7 @@
4709
4735
  "immutable": true,
4710
4736
  "locationInModule": {
4711
4737
  "filename": "src/projen-project-options.ts",
4712
- "line": 1056
4738
+ "line": 1062
4713
4739
  },
4714
4740
  "name": "logo",
4715
4741
  "optional": true,
@@ -5008,7 +5034,7 @@
5008
5034
  "immutable": true,
5009
5035
  "locationInModule": {
5010
5036
  "filename": "src/projen-project-options.ts",
5011
- "line": 1045
5037
+ "line": 1051
5012
5038
  },
5013
5039
  "name": "ownerCanSelfApprovePRs",
5014
5040
  "optional": true,
@@ -5380,7 +5406,7 @@
5380
5406
  "immutable": true,
5381
5407
  "locationInModule": {
5382
5408
  "filename": "src/projen-project-options.ts",
5383
- "line": 1069
5409
+ "line": 1075
5384
5410
  },
5385
5411
  "name": "projenVersion",
5386
5412
  "optional": true,
@@ -6078,7 +6104,7 @@
6078
6104
  "immutable": true,
6079
6105
  "locationInModule": {
6080
6106
  "filename": "src/projen-project-options.ts",
6081
- "line": 1050
6107
+ "line": 1056
6082
6108
  },
6083
6109
  "name": "upgradesSchedule",
6084
6110
  "optional": true,
@@ -6140,7 +6166,7 @@
6140
6166
  "immutable": true,
6141
6167
  "locationInModule": {
6142
6168
  "filename": "src/projen-project-options.ts",
6143
- "line": 1063
6169
+ "line": 1069
6144
6170
  },
6145
6171
  "name": "wordmarkOptions",
6146
6172
  "optional": true,
@@ -6329,7 +6355,7 @@
6329
6355
  },
6330
6356
  "locationInModule": {
6331
6357
  "filename": "src/typescript-project.ts",
6332
- "line": 14
6358
+ "line": 15
6333
6359
  },
6334
6360
  "parameters": [
6335
6361
  {
@@ -6343,7 +6369,7 @@
6343
6369
  "kind": "class",
6344
6370
  "locationInModule": {
6345
6371
  "filename": "src/typescript-project.ts",
6346
- "line": 10
6372
+ "line": 11
6347
6373
  },
6348
6374
  "name": "TypeScriptProject",
6349
6375
  "properties": [
@@ -6354,7 +6380,7 @@
6354
6380
  "immutable": true,
6355
6381
  "locationInModule": {
6356
6382
  "filename": "src/typescript-project.ts",
6357
- "line": 11
6383
+ "line": 12
6358
6384
  },
6359
6385
  "name": "logo",
6360
6386
  "optional": true,
@@ -6369,7 +6395,7 @@
6369
6395
  "immutable": true,
6370
6396
  "locationInModule": {
6371
6397
  "filename": "src/typescript-project.ts",
6372
- "line": 12
6398
+ "line": 13
6373
6399
  },
6374
6400
  "name": "wordmark",
6375
6401
  "optional": true,
@@ -6595,7 +6621,7 @@
6595
6621
  {
6596
6622
  "abstract": true,
6597
6623
  "docs": {
6598
- "default": "- tokens will be used",
6624
+ "default": "\"automation\"",
6599
6625
  "remarks": "Remember to install the app and to configure credentials.",
6600
6626
  "stability": "stable",
6601
6627
  "summary": "Use this app for workflow automation."
@@ -6611,6 +6637,25 @@
6611
6637
  "primitive": "string"
6612
6638
  }
6613
6639
  },
6640
+ {
6641
+ "abstract": true,
6642
+ "docs": {
6643
+ "default": "- none",
6644
+ "remarks": "You will need to set the environment up in GitHub. Credentials can only be used within this environment.",
6645
+ "stability": "stable",
6646
+ "summary": "Protect any automation with this environment."
6647
+ },
6648
+ "immutable": true,
6649
+ "locationInModule": {
6650
+ "filename": "src/typescript-project-options.ts",
6651
+ "line": 993
6652
+ },
6653
+ "name": "automationEnvironment",
6654
+ "optional": true,
6655
+ "type": {
6656
+ "primitive": "string"
6657
+ }
6658
+ },
6614
6659
  {
6615
6660
  "abstract": true,
6616
6661
  "docs": {
@@ -7616,7 +7661,7 @@
7616
7661
  "immutable": true,
7617
7662
  "locationInModule": {
7618
7663
  "filename": "src/typescript-project-options.ts",
7619
- "line": 1004
7664
+ "line": 1010
7620
7665
  },
7621
7666
  "name": "logo",
7622
7667
  "optional": true,
@@ -7915,7 +7960,7 @@
7915
7960
  "immutable": true,
7916
7961
  "locationInModule": {
7917
7962
  "filename": "src/typescript-project-options.ts",
7918
- "line": 993
7963
+ "line": 999
7919
7964
  },
7920
7965
  "name": "ownerCanSelfApprovePRs",
7921
7966
  "optional": true,
@@ -8915,7 +8960,7 @@
8915
8960
  "immutable": true,
8916
8961
  "locationInModule": {
8917
8962
  "filename": "src/typescript-project-options.ts",
8918
- "line": 998
8963
+ "line": 1004
8919
8964
  },
8920
8965
  "name": "upgradesSchedule",
8921
8966
  "optional": true,
@@ -8977,7 +9022,7 @@
8977
9022
  "immutable": true,
8978
9023
  "locationInModule": {
8979
9024
  "filename": "src/typescript-project-options.ts",
8980
- "line": 1011
9025
+ "line": 1017
8981
9026
  },
8982
9027
  "name": "wordmarkOptions",
8983
9028
  "optional": true,
@@ -9150,6 +9195,84 @@
9150
9195
  ],
9151
9196
  "symbolId": "src/typescript-project-options:TypeScriptProjectOptions"
9152
9197
  },
9198
+ "mrpj.components.SelfMutationOnForks": {
9199
+ "assembly": "mrpj",
9200
+ "docs": {
9201
+ "remarks": "This class sets up a workflow that will automatically apply projen-generated changes\nwhen a build fails due to outdated generated files. The workflow:\n\n1. Runs when the build workflow fails on a PR\n2. Downloads any patch file generated during the failed build\n3. Authenticates using GitHub App credentials\n4. Checks out the PR branch\n5. Applies the patch if it exists and can be applied cleanly\n6. Commits and pushes the changes back to the PR\n\nThis enables automated fixes for common projen-related issues on fork PRs.",
9202
+ "stability": "stable",
9203
+ "summary": "Configures GitHub workflows to enable self-mutation on fork pull requests."
9204
+ },
9205
+ "fqn": "mrpj.components.SelfMutationOnForks",
9206
+ "initializer": {
9207
+ "docs": {
9208
+ "stability": "stable"
9209
+ },
9210
+ "locationInModule": {
9211
+ "filename": "src/components/SelfMutationOnForks.ts",
9212
+ "line": 31
9213
+ },
9214
+ "parameters": [
9215
+ {
9216
+ "name": "project",
9217
+ "type": {
9218
+ "fqn": "projen.Project"
9219
+ }
9220
+ },
9221
+ {
9222
+ "name": "options",
9223
+ "optional": true,
9224
+ "type": {
9225
+ "fqn": "mrpj.components.SelfMutationOnForksOptions"
9226
+ }
9227
+ }
9228
+ ]
9229
+ },
9230
+ "kind": "class",
9231
+ "locationInModule": {
9232
+ "filename": "src/components/SelfMutationOnForks.ts",
9233
+ "line": 30
9234
+ },
9235
+ "name": "SelfMutationOnForks",
9236
+ "namespace": "components",
9237
+ "symbolId": "src/components/SelfMutationOnForks:SelfMutationOnForks"
9238
+ },
9239
+ "mrpj.components.SelfMutationOnForksOptions": {
9240
+ "assembly": "mrpj",
9241
+ "datatype": true,
9242
+ "docs": {
9243
+ "stability": "stable",
9244
+ "summary": "Options for configuring self-mutation behavior on forks."
9245
+ },
9246
+ "fqn": "mrpj.components.SelfMutationOnForksOptions",
9247
+ "kind": "interface",
9248
+ "locationInModule": {
9249
+ "filename": "src/components/SelfMutationOnForks.ts",
9250
+ "line": 7
9251
+ },
9252
+ "name": "SelfMutationOnForksOptions",
9253
+ "namespace": "components",
9254
+ "properties": [
9255
+ {
9256
+ "abstract": true,
9257
+ "docs": {
9258
+ "default": "- no environment specified",
9259
+ "stability": "stable",
9260
+ "summary": "Environment name to use for the workflow."
9261
+ },
9262
+ "immutable": true,
9263
+ "locationInModule": {
9264
+ "filename": "src/components/SelfMutationOnForks.ts",
9265
+ "line": 12
9266
+ },
9267
+ "name": "environment",
9268
+ "optional": true,
9269
+ "type": {
9270
+ "primitive": "string"
9271
+ }
9272
+ }
9273
+ ],
9274
+ "symbolId": "src/components/SelfMutationOnForks:SelfMutationOnForksOptions"
9275
+ },
9153
9276
  "mrpj.logo.ColorScheme": {
9154
9277
  "assembly": "mrpj",
9155
9278
  "datatype": true,
@@ -10406,6 +10529,6 @@
10406
10529
  "symbolId": "src/logo/Wordmark:WordmarkOptions"
10407
10530
  }
10408
10531
  },
10409
- "version": "0.2.5",
10410
- "fingerprint": "aotElgvGWUG00gNLKtAwIw+4VX1ueHH1wMWjVmGBd0I="
10532
+ "version": "0.2.6",
10533
+ "fingerprint": "ZeRc9BehJq+Afa+Rm1VOwNyevKZ2M7lmzT7DTPo7lps="
10411
10534
  }
package/API.md CHANGED
@@ -8071,6 +8071,7 @@ const projenProjectOptions: ProjenProjectOptions = { ... }
8071
8071
  | <code><a href="#mrpj.ProjenProjectOptions.property.autoApproveUpgrades">autoApproveUpgrades</a></code> | <code>boolean</code> | Automatically approve deps upgrade PRs, allowing them to be merged by mergify (if configued). |
8072
8072
  | <code><a href="#mrpj.ProjenProjectOptions.property.autoDetectBin">autoDetectBin</a></code> | <code>boolean</code> | Automatically add all executables under the `bin` directory to your `package.json` file under the `bin` section. |
8073
8073
  | <code><a href="#mrpj.ProjenProjectOptions.property.automationAppName">automationAppName</a></code> | <code>string</code> | Use this app for workflow automation. |
8074
+ | <code><a href="#mrpj.ProjenProjectOptions.property.automationEnvironment">automationEnvironment</a></code> | <code>string</code> | Protect any automation with this environment. |
8074
8075
  | <code><a href="#mrpj.ProjenProjectOptions.property.autoMerge">autoMerge</a></code> | <code>boolean</code> | Enable automatic merging on GitHub. |
8075
8076
  | <code><a href="#mrpj.ProjenProjectOptions.property.autoMergeOptions">autoMergeOptions</a></code> | <code>projen.github.AutoMergeOptions</code> | Configure options for automatic merging on GitHub. |
8076
8077
  | <code><a href="#mrpj.ProjenProjectOptions.property.bin">bin</a></code> | <code>{[ key: string ]: string}</code> | Binary programs vended with your module. |
@@ -8366,7 +8367,7 @@ public readonly automationAppName: string;
8366
8367
  ```
8367
8368
 
8368
8369
  - *Type:* string
8369
- - *Default:* tokens will be used
8370
+ - *Default:* "automation"
8370
8371
 
8371
8372
  Use this app for workflow automation.
8372
8373
 
@@ -8374,6 +8375,21 @@ Remember to install the app and to configure credentials.
8374
8375
 
8375
8376
  ---
8376
8377
 
8378
+ ##### `automationEnvironment`<sup>Optional</sup> <a name="automationEnvironment" id="mrpj.ProjenProjectOptions.property.automationEnvironment"></a>
8379
+
8380
+ ```typescript
8381
+ public readonly automationEnvironment: string;
8382
+ ```
8383
+
8384
+ - *Type:* string
8385
+ - *Default:* none
8386
+
8387
+ Protect any automation with this environment.
8388
+
8389
+ You will need to set the environment up in GitHub. Credentials can only be used within this environment.
8390
+
8391
+ ---
8392
+
8377
8393
  ##### `autoMerge`<sup>Optional</sup> <a name="autoMerge" id="mrpj.ProjenProjectOptions.property.autoMerge"></a>
8378
8394
 
8379
8395
  ```typescript
@@ -10391,6 +10407,39 @@ Options for Yarn Berry.
10391
10407
 
10392
10408
  ---
10393
10409
 
10410
+ ### SelfMutationOnForksOptions <a name="SelfMutationOnForksOptions" id="mrpj.components.SelfMutationOnForksOptions"></a>
10411
+
10412
+ Options for configuring self-mutation behavior on forks.
10413
+
10414
+ #### Initializer <a name="Initializer" id="mrpj.components.SelfMutationOnForksOptions.Initializer"></a>
10415
+
10416
+ ```typescript
10417
+ import { components } from 'mrpj'
10418
+
10419
+ const selfMutationOnForksOptions: components.SelfMutationOnForksOptions = { ... }
10420
+ ```
10421
+
10422
+ #### Properties <a name="Properties" id="Properties"></a>
10423
+
10424
+ | **Name** | **Type** | **Description** |
10425
+ | --- | --- | --- |
10426
+ | <code><a href="#mrpj.components.SelfMutationOnForksOptions.property.environment">environment</a></code> | <code>string</code> | Environment name to use for the workflow. |
10427
+
10428
+ ---
10429
+
10430
+ ##### `environment`<sup>Optional</sup> <a name="environment" id="mrpj.components.SelfMutationOnForksOptions.property.environment"></a>
10431
+
10432
+ ```typescript
10433
+ public readonly environment: string;
10434
+ ```
10435
+
10436
+ - *Type:* string
10437
+ - *Default:* no environment specified
10438
+
10439
+ Environment name to use for the workflow.
10440
+
10441
+ ---
10442
+
10394
10443
  ### SizeOptions <a name="SizeOptions" id="mrpj.logo.SizeOptions"></a>
10395
10444
 
10396
10445
  #### Initializer <a name="Initializer" id="mrpj.logo.SizeOptions.Initializer"></a>
@@ -10610,6 +10659,7 @@ const typeScriptProjectOptions: TypeScriptProjectOptions = { ... }
10610
10659
  | <code><a href="#mrpj.TypeScriptProjectOptions.property.autoApproveUpgrades">autoApproveUpgrades</a></code> | <code>boolean</code> | Automatically approve deps upgrade PRs, allowing them to be merged by mergify (if configued). |
10611
10660
  | <code><a href="#mrpj.TypeScriptProjectOptions.property.autoDetectBin">autoDetectBin</a></code> | <code>boolean</code> | Automatically add all executables under the `bin` directory to your `package.json` file under the `bin` section. |
10612
10661
  | <code><a href="#mrpj.TypeScriptProjectOptions.property.automationAppName">automationAppName</a></code> | <code>string</code> | Use this app for workflow automation. |
10662
+ | <code><a href="#mrpj.TypeScriptProjectOptions.property.automationEnvironment">automationEnvironment</a></code> | <code>string</code> | Protect any automation with this environment. |
10613
10663
  | <code><a href="#mrpj.TypeScriptProjectOptions.property.autoMerge">autoMerge</a></code> | <code>boolean</code> | Enable automatic merging on GitHub. |
10614
10664
  | <code><a href="#mrpj.TypeScriptProjectOptions.property.autoMergeOptions">autoMergeOptions</a></code> | <code>projen.github.AutoMergeOptions</code> | Configure options for automatic merging on GitHub. |
10615
10665
  | <code><a href="#mrpj.TypeScriptProjectOptions.property.bin">bin</a></code> | <code>{[ key: string ]: string}</code> | Binary programs vended with your module. |
@@ -10895,7 +10945,7 @@ public readonly automationAppName: string;
10895
10945
  ```
10896
10946
 
10897
10947
  - *Type:* string
10898
- - *Default:* tokens will be used
10948
+ - *Default:* "automation"
10899
10949
 
10900
10950
  Use this app for workflow automation.
10901
10951
 
@@ -10903,6 +10953,21 @@ Remember to install the app and to configure credentials.
10903
10953
 
10904
10954
  ---
10905
10955
 
10956
+ ##### `automationEnvironment`<sup>Optional</sup> <a name="automationEnvironment" id="mrpj.TypeScriptProjectOptions.property.automationEnvironment"></a>
10957
+
10958
+ ```typescript
10959
+ public readonly automationEnvironment: string;
10960
+ ```
10961
+
10962
+ - *Type:* string
10963
+ - *Default:* none
10964
+
10965
+ Protect any automation with this environment.
10966
+
10967
+ You will need to set the environment up in GitHub. Credentials can only be used within this environment.
10968
+
10969
+ ---
10970
+
10906
10971
  ##### `autoMerge`<sup>Optional</sup> <a name="autoMerge" id="mrpj.TypeScriptProjectOptions.property.autoMerge"></a>
10907
10972
 
10908
10973
  ```typescript
@@ -13127,6 +13192,53 @@ Scale the logo by a factor.
13127
13192
  ---
13128
13193
 
13129
13194
 
13195
+ ### SelfMutationOnForks <a name="SelfMutationOnForks" id="mrpj.components.SelfMutationOnForks"></a>
13196
+
13197
+ Configures GitHub workflows to enable self-mutation on fork pull requests.
13198
+
13199
+ This class sets up a workflow that will automatically apply projen-generated changes
13200
+ when a build fails due to outdated generated files. The workflow:
13201
+
13202
+ 1. Runs when the build workflow fails on a PR
13203
+ 2. Downloads any patch file generated during the failed build
13204
+ 3. Authenticates using GitHub App credentials
13205
+ 4. Checks out the PR branch
13206
+ 5. Applies the patch if it exists and can be applied cleanly
13207
+ 6. Commits and pushes the changes back to the PR
13208
+
13209
+ This enables automated fixes for common projen-related issues on fork PRs.
13210
+
13211
+ #### Initializers <a name="Initializers" id="mrpj.components.SelfMutationOnForks.Initializer"></a>
13212
+
13213
+ ```typescript
13214
+ import { components } from 'mrpj'
13215
+
13216
+ new components.SelfMutationOnForks(project: Project, options?: SelfMutationOnForksOptions)
13217
+ ```
13218
+
13219
+ | **Name** | **Type** | **Description** |
13220
+ | --- | --- | --- |
13221
+ | <code><a href="#mrpj.components.SelfMutationOnForks.Initializer.parameter.project">project</a></code> | <code>projen.Project</code> | *No description.* |
13222
+ | <code><a href="#mrpj.components.SelfMutationOnForks.Initializer.parameter.options">options</a></code> | <code>mrpj.components.SelfMutationOnForksOptions</code> | *No description.* |
13223
+
13224
+ ---
13225
+
13226
+ ##### `project`<sup>Required</sup> <a name="project" id="mrpj.components.SelfMutationOnForks.Initializer.parameter.project"></a>
13227
+
13228
+ - *Type:* projen.Project
13229
+
13230
+ ---
13231
+
13232
+ ##### `options`<sup>Optional</sup> <a name="options" id="mrpj.components.SelfMutationOnForks.Initializer.parameter.options"></a>
13233
+
13234
+ - *Type:* mrpj.components.SelfMutationOnForksOptions
13235
+
13236
+ ---
13237
+
13238
+
13239
+
13240
+
13241
+
13130
13242
  ## Protocols <a name="Protocols" id="Protocols"></a>
13131
13243
 
13132
13244
  ### ILogo <a name="ILogo" id="mrpj.logo.ILogo"></a>
@@ -0,0 +1,29 @@
1
+ import type { Project } from 'projen';
2
+ /**
3
+ * Options for configuring self-mutation behavior on forks
4
+ */
5
+ export interface SelfMutationOnForksOptions {
6
+ /**
7
+ * Environment name to use for the workflow
8
+ * @default - no environment specified
9
+ */
10
+ readonly environment?: string;
11
+ }
12
+ /**
13
+ * Configures GitHub workflows to enable self-mutation on fork pull requests.
14
+ *
15
+ * This class sets up a workflow that will automatically apply projen-generated changes
16
+ * when a build fails due to outdated generated files. The workflow:
17
+ *
18
+ * 1. Runs when the build workflow fails on a PR
19
+ * 2. Downloads any patch file generated during the failed build
20
+ * 3. Authenticates using GitHub App credentials
21
+ * 4. Checks out the PR branch
22
+ * 5. Applies the patch if it exists and can be applied cleanly
23
+ * 6. Commits and pushes the changes back to the PR
24
+ *
25
+ * This enables automated fixes for common projen-related issues on fork PRs.
26
+ */
27
+ export declare class SelfMutationOnForks {
28
+ constructor(project: Project, options?: SelfMutationOnForksOptions);
29
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SelfMutationOnForks = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const projen_1 = require("projen");
7
+ /**
8
+ * Configures GitHub workflows to enable self-mutation on fork pull requests.
9
+ *
10
+ * This class sets up a workflow that will automatically apply projen-generated changes
11
+ * when a build fails due to outdated generated files. The workflow:
12
+ *
13
+ * 1. Runs when the build workflow fails on a PR
14
+ * 2. Downloads any patch file generated during the failed build
15
+ * 3. Authenticates using GitHub App credentials
16
+ * 4. Checks out the PR branch
17
+ * 5. Applies the patch if it exists and can be applied cleanly
18
+ * 6. Commits and pushes the changes back to the PR
19
+ *
20
+ * This enables automated fixes for common projen-related issues on fork PRs.
21
+ */
22
+ class SelfMutationOnForks {
23
+ constructor(project, options = {}) {
24
+ const cicd = projen_1.github.GitHub.of(project);
25
+ if (!cicd)
26
+ return;
27
+ const buildWorkflow = cicd.tryFindWorkflow('build');
28
+ if (!buildWorkflow)
29
+ return;
30
+ // Update condition to run on all pull requests
31
+ buildWorkflow.file?.patch(projen_1.JsonPatch.remove('/jobs/self-mutation'));
32
+ // Add a new self mutation workflow that runs on completion of build
33
+ // and if the build failed and there is a patch, updates the PR
34
+ const selfMutation = cicd?.addWorkflow('self-mutation');
35
+ selfMutation?.on({
36
+ workflowRun: {
37
+ workflows: [buildWorkflow.name],
38
+ types: ['completed'],
39
+ },
40
+ });
41
+ selfMutation?.addJob('self-mutation', {
42
+ runsOn: ['ubuntu-latest'],
43
+ if: "github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.event == 'pull_request'",
44
+ permissions: {
45
+ contents: projen_1.github.workflows.JobPermission.READ,
46
+ },
47
+ environment: options.environment,
48
+ steps: [
49
+ {
50
+ name: 'Download patch',
51
+ id: 'download_patch',
52
+ continueOnError: true,
53
+ uses: 'dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5',
54
+ with: {
55
+ run_id: '${{ github.event.workflow_run.id }}',
56
+ name: 'repo.patch',
57
+ path: '${{ runner.temp }}',
58
+ },
59
+ },
60
+ ...conditionalSteps('steps.download_patch.outcome == \'success\'', cicd.projenCredentials.setupSteps, projen_1.github.WorkflowSteps.checkout({
61
+ name: 'Checkout PR',
62
+ with: {
63
+ repository: '${{ github.event.workflow_run.head_repository.full_name }}',
64
+ ref: '${{ github.event.workflow_run.head_branch }}',
65
+ token: cicd.projenCredentials.tokenRef,
66
+ },
67
+ }), {
68
+ name: 'Apply patch to PR',
69
+ run: [
70
+ 'set -e',
71
+ 'if [ ! -f "${{ runner.temp }}/repo.patch" ]; then',
72
+ ' echo "Patch file not found"',
73
+ ' exit 1',
74
+ 'fi',
75
+ 'git config user.name "github-actions[bot]"',
76
+ 'git config user.email "github-actions[bot]@users.noreply.github.com"',
77
+ 'if ! git apply --check ${{ runner.temp }}/repo.patch; then',
78
+ ' echo "Patch cannot be applied cleanly"',
79
+ ' exit 1',
80
+ 'fi',
81
+ 'git apply ${{ runner.temp }}/repo.patch',
82
+ 'if [ -z "$(git status --porcelain)" ]; then',
83
+ ' echo "No changes to commit"',
84
+ ' exit 0',
85
+ 'fi',
86
+ 'git add .',
87
+ 'git commit -s -m "chore: self mutation"',
88
+ 'git push',
89
+ ].join('\n'),
90
+ }),
91
+ ],
92
+ });
93
+ }
94
+ }
95
+ exports.SelfMutationOnForks = SelfMutationOnForks;
96
+ _a = JSII_RTTI_SYMBOL_1;
97
+ SelfMutationOnForks[_a] = { fqn: "mrpj.components.SelfMutationOnForks", version: "0.2.6" };
98
+ function conditionalSteps(cond, ...steps) {
99
+ return steps.flatMap(s => s).map(s => ({ ...s, if: s.if ?? cond }));
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZk11dGF0aW9uT25Gb3Jrcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL1NlbGZNdXRhdGlvbk9uRm9ya3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxtQ0FBMkM7QUFhM0M7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFhLG1CQUFtQjtJQUM5QixZQUFZLE9BQWdCLEVBQUUsVUFBc0MsRUFBRTtRQUNwRSxNQUFNLElBQUksR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFFbEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFFM0IsK0NBQStDO1FBQy9DLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUN2QixrQkFBUyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUN4QyxDQUFDO1FBRUYsb0VBQW9FO1FBQ3BFLCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxJQUFJLEVBQUUsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELFlBQVksRUFBRSxFQUFFLENBQUM7WUFDZixXQUFXLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDL0IsS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsWUFBWSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDcEMsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQ3pCLEVBQUUsRUFBRSx3R0FBd0c7WUFDNUcsV0FBVyxFQUFFO2dCQUNYLFFBQVEsRUFBRSxlQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJO2FBQzlDO1lBQ0QsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixFQUFFLEVBQUUsZ0JBQWdCO29CQUNwQixlQUFlLEVBQUUsSUFBSTtvQkFDckIsSUFBSSxFQUFFLDJFQUEyRTtvQkFDakYsSUFBSSxFQUFFO3dCQUNKLE1BQU0sRUFBRSxxQ0FBcUM7d0JBQzdDLElBQUksRUFBRSxZQUFZO3dCQUNsQixJQUFJLEVBQUUsb0JBQW9CO3FCQUMzQjtpQkFDRjtnQkFDRCxHQUFHLGdCQUFnQixDQUNqQiw2Q0FBNkMsRUFDN0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFDakMsZUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7b0JBQzVCLElBQUksRUFBRSxhQUFhO29CQUNuQixJQUFJLEVBQUU7d0JBQ0osVUFBVSxFQUFFLDREQUE0RDt3QkFDeEUsR0FBRyxFQUFFLDhDQUE4Qzt3QkFDbkQsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRO3FCQUN2QztpQkFDRixDQUFDLEVBQ0Y7b0JBQ0UsSUFBSSxFQUFFLG1CQUFtQjtvQkFDekIsR0FBRyxFQUFFO3dCQUNILFFBQVE7d0JBQ1IsbURBQW1EO3dCQUNuRCwrQkFBK0I7d0JBQy9CLFVBQVU7d0JBQ1YsSUFBSTt3QkFDSiw0Q0FBNEM7d0JBQzVDLHNFQUFzRTt3QkFDdEUsNERBQTREO3dCQUM1RCwwQ0FBMEM7d0JBQzFDLFVBQVU7d0JBQ1YsSUFBSTt3QkFDSix5Q0FBeUM7d0JBQ3pDLDZDQUE2Qzt3QkFDN0MsK0JBQStCO3dCQUMvQixVQUFVO3dCQUNWLElBQUk7d0JBQ0osV0FBVzt3QkFDWCx5Q0FBeUM7d0JBQ3pDLFVBQVU7cUJBQ1gsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUNiLENBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBaEZILGtEQWlGQzs7O0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsR0FBRyxLQUFtRTtJQUM1RyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSnNvblBhdGNoLCBnaXRodWIgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHNlbGYtbXV0YXRpb24gYmVoYXZpb3Igb24gZm9ya3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxmTXV0YXRpb25PbkZvcmtzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCBuYW1lIHRvIHVzZSBmb3IgdGhlIHdvcmtmbG93XG4gICAqIEBkZWZhdWx0IC0gbm8gZW52aXJvbm1lbnQgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmVzIEdpdEh1YiB3b3JrZmxvd3MgdG8gZW5hYmxlIHNlbGYtbXV0YXRpb24gb24gZm9yayBwdWxsIHJlcXVlc3RzLlxuICpcbiAqIFRoaXMgY2xhc3Mgc2V0cyB1cCBhIHdvcmtmbG93IHRoYXQgd2lsbCBhdXRvbWF0aWNhbGx5IGFwcGx5IHByb2plbi1nZW5lcmF0ZWQgY2hhbmdlc1xuICogd2hlbiBhIGJ1aWxkIGZhaWxzIGR1ZSB0byBvdXRkYXRlZCBnZW5lcmF0ZWQgZmlsZXMuIFRoZSB3b3JrZmxvdzpcbiAqXG4gKiAxLiBSdW5zIHdoZW4gdGhlIGJ1aWxkIHdvcmtmbG93IGZhaWxzIG9uIGEgUFJcbiAqIDIuIERvd25sb2FkcyBhbnkgcGF0Y2ggZmlsZSBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBmYWlsZWQgYnVpbGRcbiAqIDMuIEF1dGhlbnRpY2F0ZXMgdXNpbmcgR2l0SHViIEFwcCBjcmVkZW50aWFsc1xuICogNC4gQ2hlY2tzIG91dCB0aGUgUFIgYnJhbmNoXG4gKiA1LiBBcHBsaWVzIHRoZSBwYXRjaCBpZiBpdCBleGlzdHMgYW5kIGNhbiBiZSBhcHBsaWVkIGNsZWFubHlcbiAqIDYuIENvbW1pdHMgYW5kIHB1c2hlcyB0aGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBQUlxuICpcbiAqIFRoaXMgZW5hYmxlcyBhdXRvbWF0ZWQgZml4ZXMgZm9yIGNvbW1vbiBwcm9qZW4tcmVsYXRlZCBpc3N1ZXMgb24gZm9yayBQUnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWxmTXV0YXRpb25PbkZvcmtzIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogU2VsZk11dGF0aW9uT25Gb3Jrc09wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IGNpY2QgPSBnaXRodWIuR2l0SHViLm9mKHByb2plY3QpO1xuICAgIGlmICghY2ljZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgYnVpbGRXb3JrZmxvdyA9IGNpY2QudHJ5RmluZFdvcmtmbG93KCdidWlsZCcpO1xuICAgIGlmICghYnVpbGRXb3JrZmxvdykgcmV0dXJuO1xuXG4gICAgLy8gVXBkYXRlIGNvbmRpdGlvbiB0byBydW4gb24gYWxsIHB1bGwgcmVxdWVzdHNcbiAgICBidWlsZFdvcmtmbG93LmZpbGU/LnBhdGNoKFxuICAgICAgSnNvblBhdGNoLnJlbW92ZSgnL2pvYnMvc2VsZi1tdXRhdGlvbicpLFxuICAgICk7XG5cbiAgICAvLyBBZGQgYSBuZXcgc2VsZiBtdXRhdGlvbiB3b3JrZmxvdyB0aGF0IHJ1bnMgb24gY29tcGxldGlvbiBvZiBidWlsZFxuICAgIC8vIGFuZCBpZiB0aGUgYnVpbGQgZmFpbGVkIGFuZCB0aGVyZSBpcyBhIHBhdGNoLCB1cGRhdGVzIHRoZSBQUlxuICAgIGNvbnN0IHNlbGZNdXRhdGlvbiA9IGNpY2Q/LmFkZFdvcmtmbG93KCdzZWxmLW11dGF0aW9uJyk7XG4gICAgc2VsZk11dGF0aW9uPy5vbih7XG4gICAgICB3b3JrZmxvd1J1bjoge1xuICAgICAgICB3b3JrZmxvd3M6IFtidWlsZFdvcmtmbG93Lm5hbWVdLFxuICAgICAgICB0eXBlczogWydjb21wbGV0ZWQnXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBzZWxmTXV0YXRpb24/LmFkZEpvYignc2VsZi1tdXRhdGlvbicsIHtcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBpZjogXCJnaXRodWIuZXZlbnQud29ya2Zsb3dfcnVuLmNvbmNsdXNpb24gPT0gJ2ZhaWx1cmUnICYmIGdpdGh1Yi5ldmVudC53b3JrZmxvd19ydW4uZXZlbnQgPT0gJ3B1bGxfcmVxdWVzdCdcIixcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudDogb3B0aW9ucy5lbnZpcm9ubWVudCxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRG93bmxvYWQgcGF0Y2gnLFxuICAgICAgICAgIGlkOiAnZG93bmxvYWRfcGF0Y2gnLFxuICAgICAgICAgIGNvbnRpbnVlT25FcnJvcjogdHJ1ZSxcbiAgICAgICAgICB1c2VzOiAnZGF3aWRkNi9hY3Rpb24tZG93bmxvYWQtYXJ0aWZhY3RAYWM2NmI0M2YwZTZhMzQ2MjM0ZGQ2NWQ0ZDBjOGZiYjMxY2IzMTZlNScsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgcnVuX2lkOiAnJHt7IGdpdGh1Yi5ldmVudC53b3JrZmxvd19ydW4uaWQgfX0nLFxuICAgICAgICAgICAgbmFtZTogJ3JlcG8ucGF0Y2gnLFxuICAgICAgICAgICAgcGF0aDogJyR7eyBydW5uZXIudGVtcCB9fScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uY29uZGl0aW9uYWxTdGVwcyhcbiAgICAgICAgICAnc3RlcHMuZG93bmxvYWRfcGF0Y2gub3V0Y29tZSA9PSBcXCdzdWNjZXNzXFwnJyxcbiAgICAgICAgICBjaWNkLnByb2plbkNyZWRlbnRpYWxzLnNldHVwU3RlcHMsXG4gICAgICAgICAgZ2l0aHViLldvcmtmbG93U3RlcHMuY2hlY2tvdXQoe1xuICAgICAgICAgICAgbmFtZTogJ0NoZWNrb3V0IFBSJyxcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgcmVwb3NpdG9yeTogJyR7eyBnaXRodWIuZXZlbnQud29ya2Zsb3dfcnVuLmhlYWRfcmVwb3NpdG9yeS5mdWxsX25hbWUgfX0nLFxuICAgICAgICAgICAgICByZWY6ICcke3sgZ2l0aHViLmV2ZW50LndvcmtmbG93X3J1bi5oZWFkX2JyYW5jaCB9fScsXG4gICAgICAgICAgICAgIHRva2VuOiBjaWNkLnByb2plbkNyZWRlbnRpYWxzLnRva2VuUmVmLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQXBwbHkgcGF0Y2ggdG8gUFInLFxuICAgICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAgICdzZXQgLWUnLFxuICAgICAgICAgICAgICAnaWYgWyAhIC1mIFwiJHt7IHJ1bm5lci50ZW1wIH19L3JlcG8ucGF0Y2hcIiBdOyB0aGVuJyxcbiAgICAgICAgICAgICAgJyAgZWNobyBcIlBhdGNoIGZpbGUgbm90IGZvdW5kXCInLFxuICAgICAgICAgICAgICAnICBleGl0IDEnLFxuICAgICAgICAgICAgICAnZmknLFxuICAgICAgICAgICAgICAnZ2l0IGNvbmZpZyB1c2VyLm5hbWUgXCJnaXRodWItYWN0aW9uc1tib3RdXCInLFxuICAgICAgICAgICAgICAnZ2l0IGNvbmZpZyB1c2VyLmVtYWlsIFwiZ2l0aHViLWFjdGlvbnNbYm90XUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb21cIicsXG4gICAgICAgICAgICAgICdpZiAhIGdpdCBhcHBseSAtLWNoZWNrICR7eyBydW5uZXIudGVtcCB9fS9yZXBvLnBhdGNoOyB0aGVuJyxcbiAgICAgICAgICAgICAgJyAgZWNobyBcIlBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkIGNsZWFubHlcIicsXG4gICAgICAgICAgICAgICcgIGV4aXQgMScsXG4gICAgICAgICAgICAgICdmaScsXG4gICAgICAgICAgICAgICdnaXQgYXBwbHkgJHt7IHJ1bm5lci50ZW1wIH19L3JlcG8ucGF0Y2gnLFxuICAgICAgICAgICAgICAnaWYgWyAteiBcIiQoZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbilcIiBdOyB0aGVuJyxcbiAgICAgICAgICAgICAgJyAgZWNobyBcIk5vIGNoYW5nZXMgdG8gY29tbWl0XCInLFxuICAgICAgICAgICAgICAnICBleGl0IDAnLFxuICAgICAgICAgICAgICAnZmknLFxuICAgICAgICAgICAgICAnZ2l0IGFkZCAuJyxcbiAgICAgICAgICAgICAgJ2dpdCBjb21taXQgLXMgLW0gXCJjaG9yZTogc2VsZiBtdXRhdGlvblwiJyxcbiAgICAgICAgICAgICAgJ2dpdCBwdXNoJyxcbiAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uZGl0aW9uYWxTdGVwcyhjb25kOiBzdHJpbmcsIC4uLnN0ZXBzOiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXAgfCBnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXBbXT4pOiBnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXBbXSB7XG4gIHJldHVybiBzdGVwcy5mbGF0TWFwKHMgPT4gcykubWFwKHMgPT4gKHsgLi4ucywgaWY6IHMuaWYgPz8gY29uZCB9KSk7XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export * from './SelfMutationOnForks';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SelfMutationOnForks"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0RBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9TZWxmTXV0YXRpb25PbkZvcmtzJztcbiJdfQ==