@jttc/projen-project-types 1.0.0-beta.0 → 1.0.0-beta.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.
Files changed (113) hide show
  1. package/.cz-config.js +83 -43
  2. package/.czrc +1 -1
  3. package/.jsii +4637 -14
  4. package/AGENTS.md +132 -0
  5. package/API.md +31146 -7
  6. package/README.md +197 -29
  7. package/docs/components/cdk8s.md +724 -0
  8. package/docs/components/commitzent.md +261 -0
  9. package/docs/components/k3d.md +456 -0
  10. package/docs/default-configurations.md +267 -0
  11. package/docs/index.md +86 -1
  12. package/docs/project-types/cdk-app.md +481 -0
  13. package/docs/project-types/cdk-library.md +321 -0
  14. package/docs/project-types/cdk8s-app.md +353 -0
  15. package/docs/project-types/cdk8s-library.md +442 -0
  16. package/docs/project-types/nx-monorepo.md +382 -0
  17. package/lib/cdk/cdk-app-project.d.ts +12 -0
  18. package/lib/cdk/cdk-app-project.js +28 -0
  19. package/lib/cdk/cdk-library-project.d.ts +12 -0
  20. package/lib/cdk/cdk-library-project.js +28 -0
  21. package/lib/cdk/cdk8s-app-project.d.ts +14 -0
  22. package/lib/cdk/cdk8s-app-project.js +54 -0
  23. package/lib/cdk/cdk8s-library-project.d.ts +14 -0
  24. package/lib/cdk/cdk8s-library-project.js +50 -0
  25. package/lib/cdk/index.d.ts +5 -0
  26. package/lib/cdk/index.js +22 -0
  27. package/lib/cdk/interfaces/cdk-app-options.d.ts +7 -0
  28. package/lib/cdk/interfaces/cdk-app-options.js +3 -0
  29. package/lib/cdk/interfaces/cdk-library-options.d.ts +7 -0
  30. package/lib/cdk/interfaces/cdk-library-options.js +3 -0
  31. package/lib/cdk/interfaces/cdk8s-app-options.d.ts +18 -0
  32. package/lib/cdk/interfaces/cdk8s-app-options.js +3 -0
  33. package/lib/cdk/interfaces/cdk8s-library-options.d.ts +8 -0
  34. package/lib/cdk/interfaces/cdk8s-library-options.js +3 -0
  35. package/lib/cdk/interfaces/index.d.ts +5 -0
  36. package/lib/cdk/interfaces/index.js +22 -0
  37. package/lib/cdk/interfaces/jsii-options.d.ts +7 -0
  38. package/lib/cdk/interfaces/jsii-options.js +3 -0
  39. package/lib/cdk/interfaces/project-global-options.d.ts +15 -0
  40. package/lib/cdk/interfaces/project-global-options.js +3 -0
  41. package/lib/cdk/jsii-project.d.ts +12 -0
  42. package/lib/cdk/jsii-project.js +24 -0
  43. package/lib/common/common-options.d.ts +40 -0
  44. package/lib/common/common-options.js +110 -0
  45. package/lib/components/agents/agents.d.ts +21 -0
  46. package/lib/components/agents/agents.js +476 -0
  47. package/lib/components/agents/index.d.ts +1 -0
  48. package/lib/components/agents/index.js +18 -0
  49. package/lib/components/cdk8s/cdk8s.d.ts +11 -0
  50. package/lib/components/cdk8s/cdk8s.js +124 -0
  51. package/lib/components/cdk8s/index.d.ts +2 -0
  52. package/lib/components/cdk8s/index.js +19 -0
  53. package/lib/components/cdk8s/interfaces/Cdk8s.d.ts +34 -0
  54. package/lib/components/cdk8s/interfaces/Cdk8s.js +12 -0
  55. package/lib/components/cdk8s/main-library.ts.template +35 -0
  56. package/lib/components/cdk8s/main.test.ts.template +3 -0
  57. package/lib/components/cdk8s/main.ts.template +38 -0
  58. package/lib/components/commitzent/commitzent.d.ts +8 -0
  59. package/lib/components/commitzent/commitzent.js +100 -0
  60. package/lib/components/commitzent/index.d.ts +2 -0
  61. package/lib/components/commitzent/index.js +19 -0
  62. package/lib/components/commitzent/interfaces/Icommitzent.d.ts +34 -0
  63. package/lib/components/commitzent/interfaces/Icommitzent.js +3 -0
  64. package/lib/components/index.d.ts +4 -0
  65. package/lib/components/index.js +21 -0
  66. package/lib/components/k3d/index.d.ts +3 -0
  67. package/lib/components/k3d/index.js +20 -0
  68. package/lib/components/k3d/k3d.d.ts +33 -0
  69. package/lib/components/k3d/k3d.js +109 -0
  70. package/lib/components/k3d/k3dBase.d.ts +4 -0
  71. package/lib/components/k3d/k3dBase.js +23 -0
  72. package/lib/components/k3d/types.d.ts +64 -0
  73. package/lib/components/k3d/types.js +8 -0
  74. package/lib/index.d.ts +5 -3
  75. package/lib/index.js +20 -12
  76. package/lib/monorepo/components/NxConfiguration.d.ts +17 -0
  77. package/lib/monorepo/components/NxConfiguration.js +105 -0
  78. package/lib/monorepo/components/index.d.ts +2 -0
  79. package/lib/monorepo/components/index.js +19 -0
  80. package/lib/monorepo/components/publish-release.d.ts +5 -0
  81. package/lib/monorepo/components/publish-release.js +80 -0
  82. package/lib/monorepo/index.d.ts +3 -0
  83. package/lib/monorepo/index.js +20 -0
  84. package/lib/monorepo/interfaces/Nx.d.ts +130 -0
  85. package/lib/monorepo/interfaces/Nx.js +3 -0
  86. package/lib/monorepo/interfaces/NxMonorepo.d.ts +3 -0
  87. package/lib/monorepo/interfaces/NxMonorepo.js +3 -0
  88. package/lib/monorepo/interfaces/index.d.ts +2 -0
  89. package/lib/monorepo/interfaces/index.js +19 -0
  90. package/lib/monorepo/monorepo.d.ts +16 -0
  91. package/lib/monorepo/monorepo.js +131 -0
  92. package/lib/terraform/components/index.d.ts +2 -0
  93. package/lib/terraform/components/index.js +19 -0
  94. package/lib/terraform/components/terraform-deploy-github-workflow.d.ts +26 -0
  95. package/lib/terraform/components/terraform-deploy-github-workflow.js +92 -0
  96. package/lib/terraform/components/terraform-plan-github-workflow.d.ts +31 -0
  97. package/lib/terraform/components/terraform-plan-github-workflow.js +155 -0
  98. package/lib/terraform/index.d.ts +5 -0
  99. package/lib/terraform/index.js +22 -0
  100. package/lib/terraform/providers/hetzner-provider.d.ts +105 -0
  101. package/lib/terraform/providers/hetzner-provider.js +83 -0
  102. package/lib/terraform/providers/index.d.ts +2 -0
  103. package/lib/terraform/providers/index.js +19 -0
  104. package/lib/terraform/providers/provider-strategy.d.ts +44 -0
  105. package/lib/terraform/providers/provider-strategy.js +38 -0
  106. package/lib/terraform/terraform-base-project.d.ts +38 -0
  107. package/lib/terraform/terraform-base-project.js +97 -0
  108. package/lib/terraform/terraform-module-project.d.ts +24 -0
  109. package/lib/terraform/terraform-module-project.js +77 -0
  110. package/lib/terraform/terraform-stack-project.d.ts +28 -0
  111. package/lib/terraform/terraform-stack-project.js +83 -0
  112. package/mkdocs.yml +12 -0
  113. package/package.json +14 -7
@@ -0,0 +1,476 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Agents = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const projen_1 = require("projen");
7
+ /**
8
+ * Component that adds an AGENTS.md file to explain how the repository works
9
+ * for coding agents like GitHub Copilot
10
+ */
11
+ class Agents extends projen_1.Component {
12
+ constructor(project, id, options) {
13
+ super(project, id);
14
+ new projen_1.TextFile(project, 'AGENTS.md', {
15
+ lines: this.generateAgentsContent(project, options),
16
+ });
17
+ }
18
+ detectProjectType(project) {
19
+ const projectName = project.constructor.name;
20
+ // Check if the project has specific components that identify the type
21
+ const hasCdk8sComponent = project.node.children.some((child) => child.constructor.name === 'Cdk8sComponent');
22
+ const hasMonorepoFeatures = project.node.children.some((child) => child.constructor.name === 'NxConfigurations');
23
+ // Specific class name checks
24
+ if (projectName === 'CdkApp')
25
+ return 'cdk-app';
26
+ if (projectName === 'CdkLibrary')
27
+ return 'cdk-library';
28
+ if (projectName === 'Cdk8App')
29
+ return 'cdk8s-app';
30
+ if (projectName === 'Cdk8sLibrary')
31
+ return 'cdk8s-library';
32
+ if (projectName === 'NxMonorepo')
33
+ return 'monorepo';
34
+ // Fallback to component-based detection
35
+ if (hasCdk8sComponent && projectName.includes('Library')) {
36
+ return 'cdk8s-library';
37
+ }
38
+ if (hasCdk8sComponent)
39
+ return 'cdk8s-app';
40
+ if (hasMonorepoFeatures)
41
+ return 'monorepo';
42
+ if (projectName.includes('CdkApp') ||
43
+ projectName.includes('AwsCdkTypeScriptApp')) {
44
+ return 'cdk-app';
45
+ }
46
+ if (projectName.includes('CdkLibrary') ||
47
+ projectName.includes('AwsCdkConstructLibrary')) {
48
+ return 'cdk-library';
49
+ }
50
+ return 'typescript';
51
+ }
52
+ generateAgentsContent(project, options) {
53
+ const projectType = this.detectProjectType(project);
54
+ const baseContent = [
55
+ '# Coding Agents Guide',
56
+ '',
57
+ 'This file contains essential information about how this repository works for coding agents like GitHub Copilot.',
58
+ '',
59
+ '## Repository Overview',
60
+ '',
61
+ `This is the **${project.name}** project, which uses [Projen](https://projen.io/) for project configuration management.`,
62
+ '',
63
+ '## What is Projen?',
64
+ '',
65
+ 'Projen is a tool that allows managing project configuration through TypeScript code instead of static configuration files.',
66
+ '',
67
+ '### Key Features:',
68
+ '- **Configuration as Code**: Everything is defined in `.projenrc.ts`',
69
+ '- **Automatic Management**: Automatically regenerates configuration files',
70
+ '- **Extensible**: Allows creating reusable components',
71
+ '- **Consistency**: Keeps configuration synchronized',
72
+ '',
73
+ ...this.getProjectSpecificContent(projectType),
74
+ '',
75
+ '## Important Commands',
76
+ '',
77
+ '```bash',
78
+ '# Regenerate configuration files from .projenrc.ts',
79
+ 'npx projen',
80
+ '',
81
+ '# Build the project',
82
+ 'npx projen build',
83
+ '',
84
+ '# Run tests',
85
+ 'npx projen test',
86
+ '',
87
+ '# Run tests in watch mode',
88
+ 'npx projen test:watch',
89
+ '',
90
+ '# Lint the code',
91
+ 'npx projen eslint',
92
+ '',
93
+ '# Package the project',
94
+ 'npx projen package',
95
+ '',
96
+ '# Clean generated files',
97
+ 'npx projen clobber',
98
+ '',
99
+ '# Upgrade dependencies',
100
+ 'npx projen upgrade',
101
+ '```',
102
+ '',
103
+ ...this.getProjectCommands(projectType),
104
+ '',
105
+ '## Dependency Management',
106
+ '',
107
+ '### Adding Dependencies:',
108
+ '```typescript',
109
+ '// In the project or component constructor',
110
+ 'project.deps.addDependency("package-name", DependencyType.BUILD);',
111
+ 'project.deps.addDependency("package-name", DependencyType.RUNTIME);',
112
+ 'project.deps.addDependency("package-name", DependencyType.PEER);',
113
+ '```',
114
+ '',
115
+ '### Dependency Types:',
116
+ '- `RUNTIME`: Runtime dependencies (dependencies)',
117
+ '- `BUILD`: Build dependencies (devDependencies)',
118
+ '- `PEER`: Peer dependencies (peerDependencies)',
119
+ '',
120
+ '## Project Structure',
121
+ '',
122
+ this.getProjectStructure(projectType),
123
+ '',
124
+ ...this.getProjectTypeSpecificSections(projectType),
125
+ '',
126
+ '## Common Configuration',
127
+ '',
128
+ '- **CommonOptionsConfig**: Manages default configurations',
129
+ '- **Prettier**: Automatic code formatting',
130
+ '- **ESLint**: Automatic linting',
131
+ '- **VSCode**: Configuration and recommended extensions',
132
+ '- **Commitzent**: Conventional commits',
133
+ '- **Agents**: This documentation for coding agents',
134
+ '',
135
+ '## Important Files',
136
+ '',
137
+ '- `.projenrc.ts`: Main project configuration',
138
+ '- `package.json`: Generated automatically by Projen',
139
+ '- `tsconfig.json`: TypeScript configuration',
140
+ '- `.gitignore`: Files ignored by Git',
141
+ '',
142
+ '## Best Practices',
143
+ '',
144
+ '1. **Never edit generated files**: Always modify the source in `.projenrc.ts`',
145
+ '2. **Run `npx projen`** after configuration changes',
146
+ '3. **Use components** for reusable functionality',
147
+ '4. **Follow naming conventions** established in the project',
148
+ '5. **Document changes** in tests and README',
149
+ '',
150
+ '## Troubleshooting',
151
+ '',
152
+ '### Error: "File is read-only"',
153
+ '- Files generated by Projen are read-only',
154
+ '- Modify the configuration in `.projenrc.ts` instead',
155
+ '',
156
+ '### Dependencies not found',
157
+ '- Run `npx projen` to install dependencies',
158
+ '- Verify dependencies are in `.projenrc.ts`',
159
+ '',
160
+ '### Tests fail',
161
+ '- Run `npx projen build` to compile changes',
162
+ '- Verify snapshots are updated',
163
+ '',
164
+ '## Useful Resources',
165
+ '',
166
+ '- [Projen Documentation](https://projen.io/)',
167
+ '- [Projen API Reference](https://github.com/projen/projen/blob/main/API.md)',
168
+ ...this.getProjectSpecificResources(projectType),
169
+ '',
170
+ '---',
171
+ '',
172
+ '> This file is automatically generated by the `Agents` component.',
173
+ '> To modify it, edit the component in `src/components/agents/agents.ts`.',
174
+ ];
175
+ if (options?.customContent) {
176
+ baseContent.push('', '## Custom Content', '', ...options.customContent);
177
+ }
178
+ return baseContent;
179
+ }
180
+ getProjectSpecificContent(projectType) {
181
+ switch (projectType) {
182
+ case 'cdk-app':
183
+ return [
184
+ '## CDK Application Project',
185
+ '',
186
+ 'This is an AWS CDK TypeScript application project that allows you to deploy cloud infrastructure.',
187
+ '',
188
+ '### CDK Specific Features:',
189
+ '- **Infrastructure as Code**: Define AWS resources in TypeScript',
190
+ '- **Multiple Environments**: Support for dev, staging, prod',
191
+ '- **CDK Constructs**: Reusable cloud components',
192
+ '- **AWS Integration**: Native AWS service integration',
193
+ ];
194
+ case 'cdk-library':
195
+ return [
196
+ '## CDK Construct Library Project',
197
+ '',
198
+ 'This is an AWS CDK construct library project for creating reusable cloud components.',
199
+ '',
200
+ '### CDK Library Features:',
201
+ '- **Reusable Constructs**: Create shareable AWS components',
202
+ '- **Multi-Language Support**: Generate bindings for multiple languages',
203
+ '- **JSII Compilation**: Cross-platform compatibility',
204
+ '- **NPM Publishing**: Distribute via package managers',
205
+ ];
206
+ case 'cdk8s-app':
207
+ return [
208
+ '## CDK8s Application Project',
209
+ '',
210
+ 'This is a CDK8s TypeScript application for generating Kubernetes manifests.',
211
+ '',
212
+ '### CDK8s Features:',
213
+ '- **Kubernetes as Code**: Define K8s resources in TypeScript',
214
+ '- **Type Safety**: Compile-time validation of manifests',
215
+ '- **Reusable Charts**: Create sharable Kubernetes components',
216
+ '- **Multi-Cluster**: Deploy to multiple Kubernetes clusters',
217
+ ];
218
+ case 'cdk8s-library':
219
+ return [
220
+ '## CDK8s Construct Library Project',
221
+ '',
222
+ 'This is a CDK8s construct library for creating reusable Kubernetes components.',
223
+ '',
224
+ '### CDK8s Library Features:',
225
+ '- **Reusable Charts**: Create shareable Kubernetes constructs',
226
+ '- **Custom Resources**: Define custom Kubernetes operators',
227
+ '- **Helm Integration**: Work with existing Helm charts',
228
+ '- **Multi-Language**: Generate for different programming languages',
229
+ ];
230
+ case 'monorepo':
231
+ return [
232
+ '## Monorepo Project',
233
+ '',
234
+ 'This is a monorepo project that contains multiple related packages and applications.',
235
+ '',
236
+ '### Monorepo Features:',
237
+ '- **Multiple Packages**: Manage related projects together',
238
+ '- **Shared Dependencies**: Efficient dependency management',
239
+ '- **Cross-Package Scripts**: Coordinated builds and deployments',
240
+ '- **Workspace Management**: Lerna/Nx integration',
241
+ ];
242
+ default:
243
+ return [
244
+ '## TypeScript Project',
245
+ '',
246
+ 'This is a TypeScript project managed by Projen.',
247
+ '',
248
+ '### TypeScript Features:',
249
+ '- **Type Safety**: Compile-time type checking',
250
+ '- **Modern JavaScript**: Latest ECMAScript features',
251
+ '- **Build Tools**: Automated compilation and bundling',
252
+ '- **Testing**: Comprehensive test framework integration',
253
+ ];
254
+ }
255
+ }
256
+ getProjectCommands(projectType) {
257
+ const commonCommands = ['## Project-Specific Commands', ''];
258
+ switch (projectType) {
259
+ case 'cdk-app':
260
+ return [
261
+ ...commonCommands,
262
+ '```bash',
263
+ '# Deploy CDK stack',
264
+ 'npx cdk deploy',
265
+ '',
266
+ '# Show differences with deployed stack',
267
+ 'npx cdk diff',
268
+ '',
269
+ '# Destroy CDK stack',
270
+ 'npx cdk destroy',
271
+ '',
272
+ '# Synthesize CloudFormation template',
273
+ 'npx cdk synth',
274
+ '```',
275
+ ];
276
+ case 'cdk-library':
277
+ return [
278
+ ...commonCommands,
279
+ '```bash',
280
+ '# Build and package library',
281
+ 'npx projen package',
282
+ '',
283
+ '# Generate API documentation',
284
+ 'npx projen docgen',
285
+ '',
286
+ '# Check compatibility',
287
+ 'npx projen compat',
288
+ '',
289
+ '# Publish to NPM',
290
+ 'npx projen release',
291
+ '```',
292
+ ];
293
+ case 'cdk8s-app':
294
+ return [
295
+ ...commonCommands,
296
+ '```bash',
297
+ '# Synthesize Kubernetes manifests',
298
+ 'npx cdk8s synth',
299
+ '',
300
+ '# Apply to Kubernetes cluster',
301
+ 'kubectl apply -f dist/',
302
+ '',
303
+ '# Import Kubernetes API objects',
304
+ 'npx cdk8s import',
305
+ '```',
306
+ ];
307
+ case 'monorepo':
308
+ return [
309
+ ...commonCommands,
310
+ '```bash',
311
+ '# Build all packages',
312
+ 'npx projen build',
313
+ '',
314
+ '# Test all packages',
315
+ 'npx projen test',
316
+ '',
317
+ '# Package all packages',
318
+ 'npx projen package-all',
319
+ '',
320
+ '# Run task in specific package',
321
+ 'npx nx run <package>:<task>',
322
+ '```',
323
+ ];
324
+ default:
325
+ return [];
326
+ }
327
+ }
328
+ getProjectStructure(projectType) {
329
+ switch (projectType) {
330
+ case 'cdk-app':
331
+ return [
332
+ '```',
333
+ 'src/ # CDK application source code',
334
+ '├── main.ts # Main CDK app entry point',
335
+ '├── stacks/ # CDK stack definitions',
336
+ '└── constructs/ # Custom CDK constructs',
337
+ '',
338
+ 'test/ # Unit and integration tests',
339
+ 'cdk.out/ # CDK synthesis output (generated)',
340
+ 'lib/ # Compiled TypeScript (generated)',
341
+ '```',
342
+ ].join('\n');
343
+ case 'cdk-library':
344
+ return [
345
+ '```',
346
+ 'src/ # Library source code',
347
+ '├── index.ts # Main library exports',
348
+ '└── constructs/ # CDK construct implementations',
349
+ '',
350
+ 'test/ # Unit tests and examples',
351
+ 'lib/ # Compiled TypeScript (generated)',
352
+ 'dist/ # Distribution packages (generated)',
353
+ 'API.md # Generated API documentation',
354
+ '```',
355
+ ].join('\n');
356
+ case 'monorepo':
357
+ return [
358
+ '```',
359
+ 'packages/ # Individual packages in the monorepo',
360
+ '├── package-1/ # First package',
361
+ '├── package-2/ # Second package',
362
+ '└── shared/ # Shared utilities',
363
+ '',
364
+ 'apps/ # Applications in the monorepo',
365
+ 'tools/ # Build tools and scripts',
366
+ 'docs/ # Documentation',
367
+ '```',
368
+ ].join('\n');
369
+ default:
370
+ return [
371
+ '```',
372
+ 'src/ # Source code',
373
+ '├── index.ts # Main entry point',
374
+ '└── lib/ # Library code',
375
+ '',
376
+ 'test/ # Unit tests',
377
+ 'lib/ # Compiled TypeScript (generated)',
378
+ 'dist/ # Distribution files (generated)',
379
+ '```',
380
+ ].join('\n');
381
+ }
382
+ }
383
+ getProjectTypeSpecificSections(projectType) {
384
+ switch (projectType) {
385
+ case 'cdk-app':
386
+ return [
387
+ '## Creating New CDK Stacks',
388
+ '',
389
+ '### 1. Basic Stack:',
390
+ '```typescript',
391
+ 'import { Stack, StackProps } from "aws-cdk-lib";',
392
+ 'import { Construct } from "constructs";',
393
+ '',
394
+ 'export class MyStack extends Stack {',
395
+ ' constructor(scope: Construct, id: string, props?: StackProps) {',
396
+ ' super(scope, id, props);',
397
+ ' ',
398
+ ' // Add AWS resources here',
399
+ ' }',
400
+ '}',
401
+ '```',
402
+ '',
403
+ '### 2. Add to App:',
404
+ '```typescript',
405
+ '// In main.ts',
406
+ 'new MyStack(app, "MyStack");',
407
+ '```',
408
+ ];
409
+ case 'cdk-library':
410
+ return [
411
+ '## Creating New Constructs',
412
+ '',
413
+ '### 1. Basic Construct:',
414
+ '```typescript',
415
+ 'import { Construct } from "constructs";',
416
+ '',
417
+ 'export interface MyConstructProps {',
418
+ ' // Define props here',
419
+ '}',
420
+ '',
421
+ 'export class MyConstruct extends Construct {',
422
+ ' constructor(scope: Construct, id: string, props: MyConstructProps) {',
423
+ ' super(scope, id);',
424
+ ' ',
425
+ ' // Implement construct logic',
426
+ ' }',
427
+ '}',
428
+ '```',
429
+ ];
430
+ case 'monorepo':
431
+ return [
432
+ '## Working with Packages',
433
+ '',
434
+ '### Adding New Package:',
435
+ '1. Create package directory in `packages/`',
436
+ '2. Add package configuration to monorepo',
437
+ '3. Update workspace dependencies',
438
+ '',
439
+ '### Inter-Package Dependencies:',
440
+ '```typescript',
441
+ '// Reference another package in the monorepo',
442
+ 'import { utility } from "@workspace/shared";',
443
+ '```',
444
+ ];
445
+ default:
446
+ return [];
447
+ }
448
+ }
449
+ getProjectSpecificResources(projectType) {
450
+ switch (projectType) {
451
+ case 'cdk-app':
452
+ case 'cdk-library':
453
+ return [
454
+ '- [AWS CDK Documentation](https://docs.aws.amazon.com/cdk/)',
455
+ '- [CDK API Reference](https://docs.aws.amazon.com/cdk/api/v2/)',
456
+ ];
457
+ case 'cdk8s-app':
458
+ case 'cdk8s-library':
459
+ return [
460
+ '- [CDK8s Documentation](https://cdk8s.io/)',
461
+ '- [Kubernetes Documentation](https://kubernetes.io/docs/)',
462
+ ];
463
+ case 'monorepo':
464
+ return [
465
+ '- [Nx Documentation](https://nx.dev/)',
466
+ '- [Lerna Documentation](https://lerna.js.org/)',
467
+ ];
468
+ default:
469
+ return [];
470
+ }
471
+ }
472
+ }
473
+ exports.Agents = Agents;
474
+ _a = JSII_RTTI_SYMBOL_1;
475
+ Agents[_a] = { fqn: "@jttc/projen-project-types.Agents", version: "1.0.0-beta.10" };
476
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYWdlbnRzL2FnZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFzRDtBQVN0RDs7O0dBR0c7QUFDSCxNQUFhLE1BQU8sU0FBUSxrQkFBUztJQUNuQyxZQUFZLE9BQWdCLEVBQUUsRUFBVSxFQUFFLE9BQXVCO1FBQy9ELEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkIsSUFBSSxpQkFBUSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUU7WUFDakMsS0FBSyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1NBQ3BELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FDdkIsT0FBZ0I7UUFRaEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFFN0Msc0VBQXNFO1FBQ3RFLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNsRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQ3ZELENBQUM7UUFFRixNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDcEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUN6RCxDQUFDO1FBRUYsNkJBQTZCO1FBQzdCLElBQUksV0FBVyxLQUFLLFFBQVE7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUMvQyxJQUFJLFdBQVcsS0FBSyxZQUFZO1lBQUUsT0FBTyxhQUFhLENBQUM7UUFDdkQsSUFBSSxXQUFXLEtBQUssU0FBUztZQUFFLE9BQU8sV0FBVyxDQUFDO1FB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QUFDO1lBRUosS0FBSyxVQUFVO2dCQUNiLE9BQU87b0JBQ0wsdUNBQXVDO29CQUN2QyxnREFBZ0Q7aUJBQ2pELENBQUM7WUFFSjtnQkFDRSxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDOztBQTNmSCx3QkE0ZkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFByb2plY3QsIFRleHRGaWxlIH0gZnJvbSAncHJvamVuJztcblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBjb250ZW50IHRvIGluY2x1ZGUgaW4gdGhlIEFHRU5UUy5tZCBmaWxlXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Db250ZW50Pzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29tcG9uZW50IHRoYXQgYWRkcyBhbiBBR0VOVFMubWQgZmlsZSB0byBleHBsYWluIGhvdyB0aGUgcmVwb3NpdG9yeSB3b3Jrc1xuICogZm9yIGNvZGluZyBhZ2VudHMgbGlrZSBHaXRIdWIgQ29waWxvdFxuICovXG5leHBvcnQgY2xhc3MgQWdlbnRzIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgaWQ6IHN0cmluZywgb3B0aW9ucz86IEFnZW50c09wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBpZCk7XG5cbiAgICBuZXcgVGV4dEZpbGUocHJvamVjdCwgJ0FHRU5UUy5tZCcsIHtcbiAgICAgIGxpbmVzOiB0aGlzLmdlbmVyYXRlQWdlbnRzQ29udGVudChwcm9qZWN0LCBvcHRpb25zKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0UHJvamVjdFR5cGUoXG4gICAgcHJvamVjdDogUHJvamVjdCxcbiAgKTpcbiAgICB8ICdjZGstYXBwJ1xuICAgIHwgJ2Nkay1saWJyYXJ5J1xuICAgIHwgJ2NkazhzLWFwcCdcbiAgICB8ICdjZGs4cy1saWJyYXJ5J1xuICAgIHwgJ21vbm9yZXBvJ1xuICAgIHwgJ3R5cGVzY3JpcHQnIHtcbiAgICBjb25zdCBwcm9qZWN0TmFtZSA9IHByb2plY3QuY29uc3RydWN0b3IubmFtZTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBwcm9qZWN0IGhhcyBzcGVjaWZpYyBjb21wb25lbnRzIHRoYXQgaWRlbnRpZnkgdGhlIHR5cGVcbiAgICBjb25zdCBoYXNDZGs4c0NvbXBvbmVudCA9IHByb2plY3Qubm9kZS5jaGlsZHJlbi5zb21lKFxuICAgICAgKGNoaWxkKSA9PiBjaGlsZC5jb25zdHJ1Y3Rvci5uYW1lID09PSAnQ2RrOHNDb21wb25lbnQnLFxuICAgICk7XG5cbiAgICBjb25zdCBoYXNNb25vcmVwb0ZlYXR1cmVzID0gcHJvamVjdC5ub2RlLmNoaWxkcmVuLnNvbWUoXG4gICAgICAoY2hpbGQpID0+IGNoaWxkLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdOeENvbmZpZ3VyYXRpb25zJyxcbiAgICApO1xuXG4gICAgLy8gU3BlY2lmaWMgY2xhc3MgbmFtZSBjaGVja3NcbiAgICBpZiAocHJvamVjdE5hbWUgPT09ICdDZGtBcHAnKSByZXR1cm4gJ2Nkay1hcHAnO1xuICAgIGlmIChwcm9qZWN0TmFtZSA9PT0gJ0Nka0xpYnJhcnknKSByZXR1cm4gJ2Nkay1saWJyYXJ5JztcbiAgICBpZiAocHJvamVjdE5hbWUgPT09ICdDZGs4QXBwJykgcmV0dXJuICdjZGs4cy1hcHAnO1xuICAgIGlmIChwcm9qZWN0TmFtZSA9PT0gJ0NkazhzTGlicmFyeScpIHJldHVybiAnY2RrOHMtbGlicmFyeSc7XG4gICAgaWYgKHByb2plY3ROYW1lID09PSAnTnhNb25vcmVwbycpIHJldHVybiAnbW9ub3JlcG8nO1xuXG4gICAgLy8gRmFsbGJhY2sgdG8gY29tcG9uZW50LWJhc2VkIGRldGVjdGlvblxuICAgIGlmIChoYXNDZGs4c0NvbXBvbmVudCAmJiBwcm9qZWN0TmFtZS5pbmNsdWRlcygnTGlicmFyeScpKSB7XG4gICAgICByZXR1cm4gJ2NkazhzLWxpYnJhcnknO1xuICAgIH1cbiAgICBpZiAoaGFzQ2RrOHNDb21wb25lbnQpIHJldHVybiAnY2RrOHMtYXBwJztcbiAgICBpZiAoaGFzTW9ub3JlcG9GZWF0dXJlcykgcmV0dXJuICdtb25vcmVwbyc7XG4gICAgaWYgKFxuICAgICAgcHJvamVjdE5hbWUuaW5jbHVkZXMoJ0Nka0FwcCcpIHx8XG4gICAgICBwcm9qZWN0TmFtZS5pbmNsdWRlcygnQXdzQ2RrVHlwZVNjcmlwdEFwcCcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gJ2Nkay1hcHAnO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBwcm9qZWN0TmFtZS5pbmNsdWRlcygnQ2RrTGlicmFyeScpIHx8XG4gICAgICBwcm9qZWN0TmFtZS5pbmNsdWRlcygnQXdzQ2RrQ29uc3RydWN0TGlicmFyeScpXG4gICAgKSB7XG4gICAgICByZXR1cm4gJ2Nkay1saWJyYXJ5JztcbiAgICB9XG5cbiAgICByZXR1cm4gJ3R5cGVzY3JpcHQnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUFnZW50c0NvbnRlbnQoXG4gICAgcHJvamVjdDogUHJvamVjdCxcbiAgICBvcHRpb25zPzogQWdlbnRzT3B0aW9ucyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHByb2plY3RUeXBlID0gdGhpcy5kZXRlY3RQcm9qZWN0VHlwZShwcm9qZWN0KTtcblxuICAgIGNvbnN0IGJhc2VDb250ZW50ID0gW1xuICAgICAgJyMgQ29kaW5nIEFnZW50cyBHdWlkZScsXG4gICAgICAnJyxcbiAgICAgICdUaGlzIGZpbGUgY29udGFpbnMgZXNzZW50aWFsIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGlzIHJlcG9zaXRvcnkgd29ya3MgZm9yIGNvZGluZyBhZ2VudHMgbGlrZSBHaXRIdWIgQ29waWxvdC4nLFxuICAgICAgJycsXG4gICAgICAnIyMgUmVwb3NpdG9yeSBPdmVydmlldycsXG4gICAgICAnJyxcbiAgICAgIGBUaGlzIGlzIHRoZSAqKiR7cHJvamVjdC5uYW1lfSoqIHByb2plY3QsIHdoaWNoIHVzZXMgW1Byb2plbl0oaHR0cHM6Ly9wcm9qZW4uaW8vKSBmb3IgcHJvamVjdCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQuYCxcbiAgICAgICcnLFxuICAgICAgJyMjIFdoYXQgaXMgUHJvamVuPycsXG4gICAgICAnJyxcbiAgICAgICdQcm9qZW4gaXMgYSB0b29sIHRoYXQgYWxsb3dzIG1hbmFnaW5nIHByb2plY3QgY29uZmlndXJhdGlvbiB0aHJvdWdoIFR5cGVTY3JpcHQgY29kZSBpbnN0ZWFkIG9mIHN0YXRpYyBjb25maWd1cmF0aW9uIGZpbGVzLicsXG4gICAgICAnJyxcbiAgICAgICcjIyMgS2V5IEZlYXR1cmVzOicsXG4gICAgICAnLSAqKkNvbmZpZ3VyYXRpb24gYXMgQ29kZSoqOiBFdmVyeXRoaW5nIGlzIGRlZmluZWQgaW4gYC5wcm9qZW5yYy50c2AnLFxuICAgICAgJy0gKipBdXRvbWF0aWMgTWFuYWdlbWVudCoqOiBBdXRvbWF0aWNhbGx5IHJlZ2VuZXJhdGVzIGNvbmZpZ3VyYXRpb24gZmlsZXMnLFxuICAgICAgJy0gKipFeHRlbnNpYmxlKio6IEFsbG93cyBjcmVhdGluZyByZXVzYWJsZSBjb21wb25lbnRzJyxcbiAgICAgICctICoqQ29uc2lzdGVuY3kqKjogS2VlcHMgY29uZmlndXJhdGlvbiBzeW5jaHJvbml6ZWQnLFxuICAgICAgJycsXG4gICAgICAuLi50aGlzLmdldFByb2plY3RTcGVjaWZpY0NvbnRlbnQocHJvamVjdFR5cGUpLFxuICAgICAgJycsXG4gICAgICAnIyMgSW1wb3J0YW50IENvbW1hbmRzJyxcbiAgICAgICcnLFxuICAgICAgJ2BgYGJhc2gnLFxuICAgICAgJyMgUmVnZW5lcmF0ZSBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gLnByb2plbnJjLnRzJyxcbiAgICAgICducHggcHJvamVuJyxcbiAgICAgICcnLFxuICAgICAgJyMgQnVpbGQgdGhlIHByb2plY3QnLFxuICAgICAgJ25weCBwcm9qZW4gYnVpbGQnLFxuICAgICAgJycsXG4gICAgICAnIyBSdW4gdGVzdHMnLFxuICAgICAgJ25weCBwcm9qZW4gdGVzdCcsXG4gICAgICAnJyxcbiAgICAgICcjIFJ1biB0ZXN0cyBpbiB3YXRjaCBtb2RlJyxcbiAgICAgICducHggcHJvamVuIHRlc3Q6d2F0Y2gnLFxuICAgICAgJycsXG4gICAgICAnIyBMaW50IHRoZSBjb2RlJyxcbiAgICAgICducHggcHJvamVuIGVzbGludCcsXG4gICAgICAnJyxcbiAgICAgICcjIFBhY2thZ2UgdGhlIHByb2plY3QnLFxuICAgICAgJ25weCBwcm9qZW4gcGFja2FnZScsXG4gICAgICAnJyxcbiAgICAgICcjIENsZWFuIGdlbmVyYXRlZCBmaWxlcycsXG4gICAgICAnbnB4IHByb2plbiBjbG9iYmVyJyxcbiAgICAgICcnLFxuICAgICAgJyMgVXBncmFkZSBkZXBlbmRlbmNpZXMnLFxuICAgICAgJ25weCBwcm9qZW4gdXBncmFkZScsXG4gICAgICAnYGBgJyxcbiAgICAgICcnLFxuICAgICAgLi4udGhpcy5nZXRQcm9qZWN0Q29tbWFuZHMocHJvamVjdFR5cGUpLFxuICAgICAgJycsXG4gICAgICAnIyMgRGVwZW5kZW5jeSBNYW5hZ2VtZW50JyxcbiAgICAgICcnLFxuICAgICAgJyMjIyBBZGRpbmcgRGVwZW5kZW5jaWVzOicsXG4gICAgICAnYGBgdHlwZXNjcmlwdCcsXG4gICAgICAnLy8gSW4gdGhlIHByb2plY3Qgb3IgY29tcG9uZW50IGNvbnN0cnVjdG9yJyxcbiAgICAgICdwcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShcInBhY2thZ2UtbmFtZVwiLCBEZXBlbmRlbmN5VHlwZS5CVUlMRCk7JyxcbiAgICAgICdwcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShcInBhY2thZ2UtbmFtZVwiLCBEZXBlbmRlbmN5VHlwZS5SVU5USU1FKTsnLFxuICAgICAgJ3Byb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KFwicGFja2FnZS1uYW1lXCIsIERlcGVuZGVuY3lUeXBlLlBFRVIpOycsXG4gICAgICAnYGBgJyxcbiAgICAgICcnLFxuICAgICAgJyMjIyBEZXBlbmRlbmN5IFR5cGVzOicsXG4gICAgICAnLSBgUlVOVElNRWA6IFJ1bnRpbWUgZGVwZW5kZW5jaWVzIChkZXBlbmRlbmNpZXMpJyxcbiAgICAgICctIGBCVUlMRGA6IEJ1aWxkIGRlcGVuZGVuY2llcyAoZGV2RGVwZW5kZW5jaWVzKScsXG4gICAgICAnLSBgUEVFUmA6IFBlZXIgZGVwZW5kZW5jaWVzIChwZWVyRGVwZW5kZW5jaWVzKScsXG4gICAgICAnJyxcbiAgICAgICcjIyBQcm9qZWN0IFN0cnVjdHVyZScsXG4gICAgICAnJyxcbiAgICAgIHRoaXMuZ2V0UHJvamVjdFN0cnVjdHVyZShwcm9qZWN0VHlwZSksXG4gICAgICAnJyxcbiAgICAgIC4uLnRoaXMuZ2V0UHJvamVjdFR5cGVTcGVjaWZpY1NlY3Rpb25zKHByb2plY3RUeXBlKSxcbiAgICAgICcnLFxuICAgICAgJyMjIENvbW1vbiBDb25maWd1cmF0aW9uJyxcbiAgICAgICcnLFxuICAgICAgJy0gKipDb21tb25PcHRpb25zQ29uZmlnKio6IE1hbmFnZXMgZGVmYXVsdCBjb25maWd1cmF0aW9ucycsXG4gICAgICAnLSAqKlByZXR0aWVyKio6IEF1dG9tYXRpYyBjb2RlIGZvcm1hdHRpbmcnLFxuICAgICAgJy0gKipFU0xpbnQqKjogQXV0b21hdGljIGxpbnRpbmcnLFxuICAgICAgJy0gKipWU0NvZGUqKjogQ29uZmlndXJhdGlvbiBhbmQgcmVjb21tZW5kZWQgZXh0ZW5zaW9ucycsXG4gICAgICAnLSAqKkNvbW1pdHplbnQqKjogQ29udmVudGlvbmFsIGNvbW1pdHMnLFxuICAgICAgJy0gKipBZ2VudHMqKjogVGhpcyBkb2N1bWVudGF0aW9uIGZvciBjb2RpbmcgYWdlbnRzJyxcbiAgICAgICcnLFxuICAgICAgJyMjIEltcG9ydGFudCBGaWxlcycsXG4gICAgICAnJyxcbiAgICAgICctIGAucHJvamVucmMudHNgOiBNYWluIHByb2plY3QgY29uZmlndXJhdGlvbicsXG4gICAgICAnLSBgcGFja2FnZS5qc29uYDogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgUHJvamVuJyxcbiAgICAgICctIGB0c2NvbmZpZy5qc29uYDogVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uJyxcbiAgICAgICctIGAuZ2l0aWdub3JlYDogRmlsZXMgaWdub3JlZCBieSBHaXQnLFxuICAgICAgJycsXG4gICAgICAnIyMgQmVzdCBQcmFjdGljZXMnLFxuICAgICAgJycsXG4gICAgICAnMS4gKipOZXZlciBlZGl0IGdlbmVyYXRlZCBmaWxlcyoqOiBBbHdheXMgbW9kaWZ5IHRoZSBzb3VyY2UgaW4gYC5wcm9qZW5yYy50c2AnLFxuICAgICAgJzIuICoqUnVuIGBucHggcHJvamVuYCoqIGFmdGVyIGNvbmZpZ3VyYXRpb24gY2hhbmdlcycsXG4gICAgICAnMy4gKipVc2UgY29tcG9uZW50cyoqIGZvciByZXVzYWJsZSBmdW5jdGlvbmFsaXR5JyxcbiAgICAgICc0LiAqKkZvbGxvdyBuYW1pbmcgY29udmVudGlvbnMqKiBlc3RhYmxpc2hlZCBpbiB0aGUgcHJvamVjdCcsXG4gICAgICAnNS4gKipEb2N1bWVudCBjaGFuZ2VzKiogaW4gdGVzdHMgYW5kIFJFQURNRScsXG4gICAgICAnJyxcbiAgICAgICcjIyBUcm91Ymxlc2hvb3RpbmcnLFxuICAgICAgJycsXG4gICAgICAnIyMjIEVycm9yOiBcIkZpbGUgaXMgcmVhZC1vbmx5XCInLFxuICAgICAgJy0gRmlsZXMgZ2VuZXJhdGVkIGJ5IFByb2plbiBhcmUgcmVhZC1vbmx5JyxcbiAgICAgICctIE1vZGlmeSB0aGUgY29uZmlndXJhdGlvbiBpbiBgLnByb2plbnJjLnRzYCBpbnN0ZWFkJyxcbiAgICAgICcnLFxuICAgICAgJyMjIyBEZXBlbmRlbmNpZXMgbm90IGZvdW5kJyxcbiAgICAgICctIFJ1biBgbnB4IHByb2plbmAgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgJy0gVmVyaWZ5IGRlcGVuZGVuY2llcyBhcmUgaW4gYC5wcm9qZW5yYy50c2AnLFxuICAgICAgJycsXG4gICAgICAnIyMjIFRlc3RzIGZhaWwnLFxuICAgICAgJy0gUnVuIGBucHggcHJvamVuIGJ1aWxkYCB0byBjb21waWxlIGNoYW5nZXMnLFxuICAgICAgJy0gVmVyaWZ5IHNuYXBzaG90cyBhcmUgdXBkYXRlZCcsXG4gICAgICAnJyxcbiAgICAgICcjIyBVc2VmdWwgUmVzb3VyY2VzJyxcbiAgICAgICcnLFxuICAgICAgJy0gW1Byb2plbiBEb2N1bWVudGF0aW9uXShodHRwczovL3Byb2plbi5pby8pJyxcbiAgICAgICctIFtQcm9qZW4gQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly9naXRodWIuY29tL3Byb2plbi9wcm9qZW4vYmxvYi9tYWluL0FQSS5tZCknLFxuICAgICAgLi4udGhpcy5nZXRQcm9qZWN0U3BlY2lmaWNSZXNvdXJjZXMocHJvamVjdFR5cGUpLFxuICAgICAgJycsXG4gICAgICAnLS0tJyxcbiAgICAgICcnLFxuICAgICAgJz4gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBgQWdlbnRzYCBjb21wb25lbnQuJyxcbiAgICAgICc+IFRvIG1vZGlmeSBpdCwgZWRpdCB0aGUgY29tcG9uZW50IGluIGBzcmMvY29tcG9uZW50cy9hZ2VudHMvYWdlbnRzLnRzYC4nLFxuICAgIF07XG5cbiAgICBpZiAob3B0aW9ucz8uY3VzdG9tQ29udGVudCkge1xuICAgICAgYmFzZUNvbnRlbnQucHVzaCgnJywgJyMjIEN1c3RvbSBDb250ZW50JywgJycsIC4uLm9wdGlvbnMuY3VzdG9tQ29udGVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VDb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcm9qZWN0U3BlY2lmaWNDb250ZW50KHByb2plY3RUeXBlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgc3dpdGNoIChwcm9qZWN0VHlwZSkge1xuICAgICAgY2FzZSAnY2RrLWFwcCc6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgJyMjIENESyBBcHBsaWNhdGlvbiBQcm9qZWN0JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnVGhpcyBpcyBhbiBBV1MgQ0RLIFR5cGVTY3JpcHQgYXBwbGljYXRpb24gcHJvamVjdCB0aGF0IGFsbG93cyB5b3UgdG8gZGVwbG95IGNsb3VkIGluZnJhc3RydWN0dXJlLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIyBDREsgU3BlY2lmaWMgRmVhdHVyZXM6JyxcbiAgICAgICAgICAnLSAqKkluZnJhc3RydWN0dXJlIGFzIENvZGUqKjogRGVmaW5lIEFXUyByZXNvdXJjZXMgaW4gVHlwZVNjcmlwdCcsXG4gICAgICAgICAgJy0gKipNdWx0aXBsZSBFbnZpcm9ubWVudHMqKjogU3VwcG9ydCBmb3IgZGV2LCBzdGFnaW5nLCBwcm9kJyxcbiAgICAgICAgICAnLSAqKkNESyBDb25zdHJ1Y3RzKio6IFJldXNhYmxlIGNsb3VkIGNvbXBvbmVudHMnLFxuICAgICAgICAgICctICoqQVdTIEludGVncmF0aW9uKio6IE5hdGl2ZSBBV1Mgc2VydmljZSBpbnRlZ3JhdGlvbicsXG4gICAgICAgIF07XG5cbiAgICAgIGNhc2UgJ2Nkay1saWJyYXJ5JzpcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAnIyMgQ0RLIENvbnN0cnVjdCBMaWJyYXJ5IFByb2plY3QnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUaGlzIGlzIGFuIEFXUyBDREsgY29uc3RydWN0IGxpYnJhcnkgcHJvamVjdCBmb3IgY3JlYXRpbmcgcmV1c2FibGUgY2xvdWQgY29tcG9uZW50cy4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyMgQ0RLIExpYnJhcnkgRmVhdHVyZXM6JyxcbiAgICAgICAgICAnLSAqKlJldXNhYmxlIENvbnN0cnVjdHMqKjogQ3JlYXRlIHNoYXJlYWJsZSBBV1MgY29tcG9uZW50cycsXG4gICAgICAgICAgJy0gKipNdWx0aS1MYW5ndWFnZSBTdXBwb3J0Kio6IEdlbmVyYXRlIGJpbmRpbmdzIGZvciBtdWx0aXBsZSBsYW5ndWFnZXMnLFxuICAgICAgICAgICctICoqSlNJSSBDb21waWxhdGlvbioqOiBDcm9zcy1wbGF0Zm9ybSBjb21wYXRpYmlsaXR5JyxcbiAgICAgICAgICAnLSAqKk5QTSBQdWJsaXNoaW5nKio6IERpc3RyaWJ1dGUgdmlhIHBhY2thZ2UgbWFuYWdlcnMnLFxuICAgICAgICBdO1xuXG4gICAgICBjYXNlICdjZGs4cy1hcHAnOlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICcjIyBDREs4cyBBcHBsaWNhdGlvbiBQcm9qZWN0JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnVGhpcyBpcyBhIENESzhzIFR5cGVTY3JpcHQgYXBwbGljYXRpb24gZm9yIGdlbmVyYXRpbmcgS3ViZXJuZXRlcyBtYW5pZmVzdHMuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMjIENESzhzIEZlYXR1cmVzOicsXG4gICAgICAgICAgJy0gKipLdWJlcm5ldGVzIGFzIENvZGUqKjogRGVmaW5lIEs4cyByZXNvdXJjZXMgaW4gVHlwZVNjcmlwdCcsXG4gICAgICAgICAgJy0gKipUeXBlIFNhZmV0eSoqOiBDb21waWxlLXRpbWUgdmFsaWRhdGlvbiBvZiBtYW5pZmVzdHMnLFxuICAgICAgICAgICctICoqUmV1c2FibGUgQ2hhcnRzKio6IENyZWF0ZSBzaGFyYWJsZSBLdWJlcm5ldGVzIGNvbXBvbmVudHMnLFxuICAgICAgICAgICctICoqTXVsdGktQ2x1c3RlcioqOiBEZXBsb3kgdG8gbXVsdGlwbGUgS3ViZXJuZXRlcyBjbHVzdGVycycsXG4gICAgICAgIF07XG5cbiAgICAgIGNhc2UgJ2NkazhzLWxpYnJhcnknOlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICcjIyBDREs4cyBDb25zdHJ1Y3QgTGlicmFyeSBQcm9qZWN0JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnVGhpcyBpcyBhIENESzhzIGNvbnN0cnVjdCBsaWJyYXJ5IGZvciBjcmVhdGluZyByZXVzYWJsZSBLdWJlcm5ldGVzIGNvbXBvbmVudHMuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMjIENESzhzIExpYnJhcnkgRmVhdHVyZXM6JyxcbiAgICAgICAgICAnLSAqKlJldXNhYmxlIENoYXJ0cyoqOiBDcmVhdGUgc2hhcmVhYmxlIEt1YmVybmV0ZXMgY29uc3RydWN0cycsXG4gICAgICAgICAgJy0gKipDdXN0b20gUmVzb3VyY2VzKio6IERlZmluZSBjdXN0b20gS3ViZXJuZXRlcyBvcGVyYXRvcnMnLFxuICAgICAgICAgICctICoqSGVsbSBJbnRlZ3JhdGlvbioqOiBXb3JrIHdpdGggZXhpc3RpbmcgSGVsbSBjaGFydHMnLFxuICAgICAgICAgICctICoqTXVsdGktTGFuZ3VhZ2UqKjogR2VuZXJhdGUgZm9yIGRpZmZlcmVudCBwcm9ncmFtbWluZyBsYW5ndWFnZXMnLFxuICAgICAgICBdO1xuXG4gICAgICBjYXNlICdtb25vcmVwbyc6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgJyMjIE1vbm9yZXBvIFByb2plY3QnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUaGlzIGlzIGEgbW9ub3JlcG8gcHJvamVjdCB0aGF0IGNvbnRhaW5zIG11bHRpcGxlIHJlbGF0ZWQgcGFja2FnZXMgYW5kIGFwcGxpY2F0aW9ucy4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyMgTW9ub3JlcG8gRmVhdHVyZXM6JyxcbiAgICAgICAgICAnLSAqKk11bHRpcGxlIFBhY2thZ2VzKio6IE1hbmFnZSByZWxhdGVkIHByb2plY3RzIHRvZ2V0aGVyJyxcbiAgICAgICAgICAnLSAqKlNoYXJlZCBEZXBlbmRlbmNpZXMqKjogRWZmaWNpZW50IGRlcGVuZGVuY3kgbWFuYWdlbWVudCcsXG4gICAgICAgICAgJy0gKipDcm9zcy1QYWNrYWdlIFNjcmlwdHMqKjogQ29vcmRpbmF0ZWQgYnVpbGRzIGFuZCBkZXBsb3ltZW50cycsXG4gICAgICAgICAgJy0gKipXb3Jrc3BhY2UgTWFuYWdlbWVudCoqOiBMZXJuYS9OeCBpbnRlZ3JhdGlvbicsXG4gICAgICAgIF07XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgJyMjIFR5cGVTY3JpcHQgUHJvamVjdCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ1RoaXMgaXMgYSBUeXBlU2NyaXB0IHByb2plY3QgbWFuYWdlZCBieSBQcm9qZW4uJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMjIFR5cGVTY3JpcHQgRmVhdHVyZXM6JyxcbiAgICAgICAgICAnLSAqKlR5cGUgU2FmZXR5Kio6IENvbXBpbGUtdGltZSB0eXBlIGNoZWNraW5nJyxcbiAgICAgICAgICAnLSAqKk1vZGVybiBKYXZhU2NyaXB0Kio6IExhdGVzdCBFQ01BU2NyaXB0IGZlYXR1cmVzJyxcbiAgICAgICAgICAnLSAqKkJ1aWxkIFRvb2xzKio6IEF1dG9tYXRlZCBjb21waWxhdGlvbiBhbmQgYnVuZGxpbmcnLFxuICAgICAgICAgICctICoqVGVzdGluZyoqOiBDb21wcmVoZW5zaXZlIHRlc3QgZnJhbWV3b3JrIGludGVncmF0aW9uJyxcbiAgICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByb2plY3RDb21tYW5kcyhwcm9qZWN0VHlwZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNvbW1vbkNvbW1hbmRzID0gWycjIyBQcm9qZWN0LVNwZWNpZmljIENvbW1hbmRzJywgJyddO1xuXG4gICAgc3dpdGNoIChwcm9qZWN0VHlwZSkge1xuICAgICAgY2FzZSAnY2RrLWFwcCc6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4uY29tbW9uQ29tbWFuZHMsXG4gICAgICAgICAgJ2BgYGJhc2gnLFxuICAgICAgICAgICcjIERlcGxveSBDREsgc3RhY2snLFxuICAgICAgICAgICducHggY2RrIGRlcGxveScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMgU2hvdyBkaWZmZXJlbmNlcyB3aXRoIGRlcGxveWVkIHN0YWNrJyxcbiAgICAgICAgICAnbnB4IGNkayBkaWZmJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyBEZXN0cm95IENESyBzdGFjaycsXG4gICAgICAgICAgJ25weCBjZGsgZGVzdHJveScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMgU3ludGhlc2l6ZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZScsXG4gICAgICAgICAgJ25weCBjZGsgc3ludGgnLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICBdO1xuXG4gICAgICBjYXNlICdjZGstbGlicmFyeSc6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4uY29tbW9uQ29tbWFuZHMsXG4gICAgICAgICAgJ2BgYGJhc2gnLFxuICAgICAgICAgICcjIEJ1aWxkIGFuZCBwYWNrYWdlIGxpYnJhcnknLFxuICAgICAgICAgICducHggcHJvamVuIHBhY2thZ2UnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIEdlbmVyYXRlIEFQSSBkb2N1bWVudGF0aW9uJyxcbiAgICAgICAgICAnbnB4IHByb2plbiBkb2NnZW4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIENoZWNrIGNvbXBhdGliaWxpdHknLFxuICAgICAgICAgICducHggcHJvamVuIGNvbXBhdCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMgUHVibGlzaCB0byBOUE0nLFxuICAgICAgICAgICducHggcHJvamVuIHJlbGVhc2UnLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICBdO1xuXG4gICAgICBjYXNlICdjZGs4cy1hcHAnOlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLmNvbW1vbkNvbW1hbmRzLFxuICAgICAgICAgICdgYGBiYXNoJyxcbiAgICAgICAgICAnIyBTeW50aGVzaXplIEt1YmVybmV0ZXMgbWFuaWZlc3RzJyxcbiAgICAgICAgICAnbnB4IGNkazhzIHN5bnRoJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyBBcHBseSB0byBLdWJlcm5ldGVzIGNsdXN0ZXInLFxuICAgICAgICAgICdrdWJlY3RsIGFwcGx5IC1mIGRpc3QvJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyBJbXBvcnQgS3ViZXJuZXRlcyBBUEkgb2JqZWN0cycsXG4gICAgICAgICAgJ25weCBjZGs4cyBpbXBvcnQnLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICBdO1xuXG4gICAgICBjYXNlICdtb25vcmVwbyc6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4uY29tbW9uQ29tbWFuZHMsXG4gICAgICAgICAgJ2BgYGJhc2gnLFxuICAgICAgICAgICcjIEJ1aWxkIGFsbCBwYWNrYWdlcycsXG4gICAgICAgICAgJ25weCBwcm9qZW4gYnVpbGQnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIFRlc3QgYWxsIHBhY2thZ2VzJyxcbiAgICAgICAgICAnbnB4IHByb2plbiB0ZXN0JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyBQYWNrYWdlIGFsbCBwYWNrYWdlcycsXG4gICAgICAgICAgJ25weCBwcm9qZW4gcGFja2FnZS1hbGwnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIFJ1biB0YXNrIGluIHNwZWNpZmljIHBhY2thZ2UnLFxuICAgICAgICAgICducHggbnggcnVuIDxwYWNrYWdlPjo8dGFzaz4nLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICBdO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcm9qZWN0U3RydWN0dXJlKHByb2plY3RUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAocHJvamVjdFR5cGUpIHtcbiAgICAgIGNhc2UgJ2Nkay1hcHAnOlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICdzcmMvICAgICAgICAgICAgICAgICAjIENESyBhcHBsaWNhdGlvbiBzb3VyY2UgY29kZScsXG4gICAgICAgICAgJ+KUnOKUgOKUgCBtYWluLnRzICAgICAgICAgICMgTWFpbiBDREsgYXBwIGVudHJ5IHBvaW50JyxcbiAgICAgICAgICAn4pSc4pSA4pSAIHN0YWNrcy8gICAgICAgICAgIyBDREsgc3RhY2sgZGVmaW5pdGlvbnMnLFxuICAgICAgICAgICfilJTilIDilIAgY29uc3RydWN0cy8gICAgICAjIEN1c3RvbSBDREsgY29uc3RydWN0cycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ3Rlc3QvICAgICAgICAgICAgICAgICMgVW5pdCBhbmQgaW50ZWdyYXRpb24gdGVzdHMnLFxuICAgICAgICAgICdjZGsub3V0LyAgICAgICAgICAgICAjIENESyBzeW50aGVzaXMgb3V0cHV0IChnZW5lcmF0ZWQpJyxcbiAgICAgICAgICAnbGliLyAgICAgICAgICAgICAgICAgIyBDb21waWxlZCBUeXBlU2NyaXB0IChnZW5lcmF0ZWQpJyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKTtcblxuICAgICAgY2FzZSAnY2RrLWxpYnJhcnknOlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICdzcmMvICAgICAgICAgICAgICAgICAjIExpYnJhcnkgc291cmNlIGNvZGUnLFxuICAgICAgICAgICfilJzilIDilIAgaW5kZXgudHMgICAgICAgICAjIE1haW4gbGlicmFyeSBleHBvcnRzJyxcbiAgICAgICAgICAn4pSU4pSA4pSAIGNvbnN0cnVjdHMvICAgICAgIyBDREsgY29uc3RydWN0IGltcGxlbWVudGF0aW9ucycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ3Rlc3QvICAgICAgICAgICAgICAgICMgVW5pdCB0ZXN0cyBhbmQgZXhhbXBsZXMnLFxuICAgICAgICAgICdsaWIvICAgICAgICAgICAgICAgICAjIENvbXBpbGVkIFR5cGVTY3JpcHQgKGdlbmVyYXRlZCknLFxuICAgICAgICAgICdkaXN0LyAgICAgICAgICAgICAgICAjIERpc3RyaWJ1dGlvbiBwYWNrYWdlcyAoZ2VuZXJhdGVkKScsXG4gICAgICAgICAgJ0FQSS5tZCAgICAgICAgICAgICAgICMgR2VuZXJhdGVkIEFQSSBkb2N1bWVudGF0aW9uJyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKTtcblxuICAgICAgY2FzZSAnbW9ub3JlcG8nOlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICdwYWNrYWdlcy8gICAgICAgICAgICAjIEluZGl2aWR1YWwgcGFja2FnZXMgaW4gdGhlIG1vbm9yZXBvJyxcbiAgICAgICAgICAn4pSc4pSA4pSAIHBhY2thZ2UtMS8gICAgICAgIyBGaXJzdCBwYWNrYWdlJyxcbiAgICAgICAgICAn4pSc4pSA4pSAIHBhY2thZ2UtMi8gICAgICAgIyBTZWNvbmQgcGFja2FnZScsXG4gICAgICAgICAgJ+KUlOKUgOKUgCBzaGFyZWQvICAgICAgICAgICMgU2hhcmVkIHV0aWxpdGllcycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2FwcHMvICAgICAgICAgICAgICAgICMgQXBwbGljYXRpb25zIGluIHRoZSBtb25vcmVwbycsXG4gICAgICAgICAgJ3Rvb2xzLyAgICAgICAgICAgICAgICMgQnVpbGQgdG9vbHMgYW5kIHNjcmlwdHMnLFxuICAgICAgICAgICdkb2NzLyAgICAgICAgICAgICAgICAjIERvY3VtZW50YXRpb24nLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICBdLmpvaW4oJ1xcbicpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICdzcmMvICAgICAgICAgICAgICAgICAjIFNvdXJjZSBjb2RlJyxcbiAgICAgICAgICAn4pSc4pSA4pSAIGluZGV4LnRzICAgICAgICAgIyBNYWluIGVudHJ5IHBvaW50JyxcbiAgICAgICAgICAn4pSU4pSA4pSAIGxpYi8gICAgICAgICAgICAgIyBMaWJyYXJ5IGNvZGUnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICd0ZXN0LyAgICAgICAgICAgICAgICAjIFVuaXQgdGVzdHMnLFxuICAgICAgICAgICdsaWIvICAgICAgICAgICAgICAgICAjIENvbXBpbGVkIFR5cGVTY3JpcHQgKGdlbmVyYXRlZCknLFxuICAgICAgICAgICdkaXN0LyAgICAgICAgICAgICAgICAjIERpc3RyaWJ1dGlvbiBmaWxlcyAoZ2VuZXJhdGVkKScsXG4gICAgICAgICAgJ2BgYCcsXG4gICAgICAgIF0uam9pbignXFxuJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcm9qZWN0VHlwZVNwZWNpZmljU2VjdGlvbnMocHJvamVjdFR5cGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHByb2plY3RUeXBlKSB7XG4gICAgICBjYXNlICdjZGstYXBwJzpcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAnIyMgQ3JlYXRpbmcgTmV3IENESyBTdGFja3MnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyMgMS4gQmFzaWMgU3RhY2s6JyxcbiAgICAgICAgICAnYGBgdHlwZXNjcmlwdCcsXG4gICAgICAgICAgJ2ltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7JyxcbiAgICAgICAgICAnaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjsnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdleHBvcnQgY2xhc3MgTXlTdGFjayBleHRlbmRzIFN0YWNrIHsnLFxuICAgICAgICAgICcgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykgeycsXG4gICAgICAgICAgJyAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTsnLFxuICAgICAgICAgICcgICAgJyxcbiAgICAgICAgICAnICAgIC8vIEFkZCBBV1MgcmVzb3VyY2VzIGhlcmUnLFxuICAgICAgICAgICcgIH0nLFxuICAgICAgICAgICd9JyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMjIDIuIEFkZCB0byBBcHA6JyxcbiAgICAgICAgICAnYGBgdHlwZXNjcmlwdCcsXG4gICAgICAgICAgJy8vIEluIG1haW4udHMnLFxuICAgICAgICAgICduZXcgTXlTdGFjayhhcHAsIFwiTXlTdGFja1wiKTsnLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICBdO1xuXG4gICAgICBjYXNlICdjZGstbGlicmFyeSc6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgJyMjIENyZWF0aW5nIE5ldyBDb25zdHJ1Y3RzJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMjIDEuIEJhc2ljIENvbnN0cnVjdDonLFxuICAgICAgICAgICdgYGB0eXBlc2NyaXB0JyxcbiAgICAgICAgICAnaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjsnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdleHBvcnQgaW50ZXJmYWNlIE15Q29uc3RydWN0UHJvcHMgeycsXG4gICAgICAgICAgJyAgLy8gRGVmaW5lIHByb3BzIGhlcmUnLFxuICAgICAgICAgICd9JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnZXhwb3J0IGNsYXNzIE15Q29uc3RydWN0IGV4dGVuZHMgQ29uc3RydWN0IHsnLFxuICAgICAgICAgICcgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNeUNvbnN0cnVjdFByb3BzKSB7JyxcbiAgICAgICAgICAnICAgIHN1cGVyKHNjb3BlLCBpZCk7JyxcbiAgICAgICAgICAnICAgICcsXG4gICAgICAgICAgJyAgICAvLyBJbXBsZW1lbnQgY29uc3RydWN0IGxvZ2ljJyxcbiAgICAgICAgICAnICB9JyxcbiAgICAgICAgICAnfScsXG4gICAgICAgICAgJ2BgYCcsXG4gICAgICAgIF07XG5cbiAgICAgIGNhc2UgJ21vbm9yZXBvJzpcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAnIyMgV29ya2luZyB3aXRoIFBhY2thZ2VzJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMjIEFkZGluZyBOZXcgUGFja2FnZTonLFxuICAgICAgICAgICcxLiBDcmVhdGUgcGFja2FnZSBkaXJlY3RvcnkgaW4gYHBhY2thZ2VzL2AnLFxuICAgICAgICAgICcyLiBBZGQgcGFja2FnZSBjb25maWd1cmF0aW9uIHRvIG1vbm9yZXBvJyxcbiAgICAgICAgICAnMy4gVXBkYXRlIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyMgSW50ZXItUGFja2FnZSBEZXBlbmRlbmNpZXM6JyxcbiAgICAgICAgICAnYGBgdHlwZXNjcmlwdCcsXG4gICAgICAgICAgJy8vIFJlZmVyZW5jZSBhbm90aGVyIHBhY2thZ2UgaW4gdGhlIG1vbm9yZXBvJyxcbiAgICAgICAgICAnaW1wb3J0IHsgdXRpbGl0eSB9IGZyb20gXCJAd29ya3NwYWNlL3NoYXJlZFwiOycsXG4gICAgICAgICAgJ2BgYCcsXG4gICAgICAgIF07XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByb2plY3RTcGVjaWZpY1Jlc291cmNlcyhwcm9qZWN0VHlwZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHN3aXRjaCAocHJvamVjdFR5cGUpIHtcbiAgICAgIGNhc2UgJ2Nkay1hcHAnOlxuICAgICAgY2FzZSAnY2RrLWxpYnJhcnknOlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICctIFtBV1MgQ0RLIERvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvKScsXG4gICAgICAgICAgJy0gW0NESyBBUEkgUmVmZXJlbmNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi8pJyxcbiAgICAgICAgXTtcblxuICAgICAgY2FzZSAnY2RrOHMtYXBwJzpcbiAgICAgIGNhc2UgJ2NkazhzLWxpYnJhcnknOlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICctIFtDREs4cyBEb2N1bWVudGF0aW9uXShodHRwczovL2NkazhzLmlvLyknLFxuICAgICAgICAgICctIFtLdWJlcm5ldGVzIERvY3VtZW50YXRpb25dKGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzLyknLFxuICAgICAgICBdO1xuXG4gICAgICBjYXNlICdtb25vcmVwbyc6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgJy0gW054IERvY3VtZW50YXRpb25dKGh0dHBzOi8vbnguZGV2LyknLFxuICAgICAgICAgICctIFtMZXJuYSBEb2N1bWVudGF0aW9uXShodHRwczovL2xlcm5hLmpzLm9yZy8pJyxcbiAgICAgICAgXTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export * from './agents';
@@ -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("./agents"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hZ2VudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWdlbnRzJztcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { Component, Project } from 'projen';
2
+ import { K8sVersion, Cdk8sBaseOptions } from './interfaces/Cdk8s';
3
+ export declare class Cdk8sComponent extends Component {
4
+ readonly appPath: string;
5
+ readonly appFile: string;
6
+ readonly imports: string[];
7
+ readonly outputPath: string;
8
+ readonly k8sVersion: K8sVersion;
9
+ constructor(project: Project, id: string, props?: Cdk8sBaseOptions);
10
+ postSynthesize(): void;
11
+ }