@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,18 @@
1
+ import { TypeScriptProjectOptions } from 'projen/lib/typescript';
2
+ import { ProjectGlobalOptions } from './project-global-options';
3
+ import { K3dOptions } from '../../components';
4
+ import { Cdk8sBaseOptions } from '../../components/cdk8s/interfaces/Cdk8s';
5
+ /**
6
+ * CDK8s Application Project options
7
+ */
8
+ export interface Cdk8sAppOptions extends Cdk8sBaseOptions, TypeScriptProjectOptions, ProjectGlobalOptions {
9
+ /**
10
+ * Enable K3d component integration
11
+ * @default true
12
+ */
13
+ readonly k3d?: boolean;
14
+ /**
15
+ * K3d component configuration options
16
+ */
17
+ readonly k3dOptions?: K3dOptions;
18
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrOHMtYXBwLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2RrL2ludGVyZmFjZXMvY2RrOHMtYXBwLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJ3Byb2plbi9saWIvdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBQcm9qZWN0R2xvYmFsT3B0aW9ucyB9IGZyb20gJy4vcHJvamVjdC1nbG9iYWwtb3B0aW9ucyc7XG5pbXBvcnQgeyBLM2RPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDZGs4c0Jhc2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jZGs4cy9pbnRlcmZhY2VzL0NkazhzJztcblxuLyoqXG4gKiBDREs4cyBBcHBsaWNhdGlvbiBQcm9qZWN0IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGs4c0FwcE9wdGlvbnNcbiAgZXh0ZW5kcyBDZGs4c0Jhc2VPcHRpb25zLCBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsIFByb2plY3RHbG9iYWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIEVuYWJsZSBLM2QgY29tcG9uZW50IGludGVncmF0aW9uXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGszZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBLM2QgY29tcG9uZW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgazNkT3B0aW9ucz86IEszZE9wdGlvbnM7XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import { AwsCdkConstructLibraryOptions } from 'projen/lib/awscdk';
2
+ import { ProjectGlobalOptions } from './project-global-options';
3
+ import { Cdk8sBaseOptions } from '../../components/cdk8s/interfaces/Cdk8s';
4
+ /**
5
+ * CDK8s Construct Library Project options
6
+ */
7
+ export interface Cdk8sLibraryOptions extends Cdk8sBaseOptions, AwsCdkConstructLibraryOptions, ProjectGlobalOptions {
8
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrOHMtbGlicmFyeS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nkay9pbnRlcmZhY2VzL2NkazhzLWxpYnJhcnktb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5pbXBvcnQgeyBQcm9qZWN0R2xvYmFsT3B0aW9ucyB9IGZyb20gJy4vcHJvamVjdC1nbG9iYWwtb3B0aW9ucyc7XG5pbXBvcnQgeyBDZGs4c0Jhc2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jZGs4cy9pbnRlcmZhY2VzL0NkazhzJztcblxuLyoqXG4gKiBDREs4cyBDb25zdHJ1Y3QgTGlicmFyeSBQcm9qZWN0IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGs4c0xpYnJhcnlPcHRpb25zXG4gIGV4dGVuZHNcbiAgICBDZGs4c0Jhc2VPcHRpb25zLFxuICAgIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zLFxuICAgIFByb2plY3RHbG9iYWxPcHRpb25zIHtcbiAgLy8gRnV0dXJlIENESzhzIExpYnJhcnkgc3BlY2lmaWMgb3B0aW9ucyBjYW4gYmUgYWRkZWQgaGVyZVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ export * from './project-global-options';
2
+ export * from './cdk-app-options';
3
+ export * from './cdk-library-options';
4
+ export * from './cdk8s-app-options';
5
+ export * from './cdk8s-library-options';
@@ -0,0 +1,22 @@
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("./project-global-options"), exports);
18
+ __exportStar(require("./cdk-app-options"), exports);
19
+ __exportStar(require("./cdk-library-options"), exports);
20
+ __exportStar(require("./cdk8s-app-options"), exports);
21
+ __exportStar(require("./cdk8s-library-options"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2RrL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUF5QztBQUN6QyxvREFBa0M7QUFDbEMsd0RBQXNDO0FBQ3RDLHNEQUFvQztBQUNwQywwREFBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb2plY3QtZ2xvYmFsLW9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9jZGstYXBwLW9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9jZGstbGlicmFyeS1vcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vY2RrOHMtYXBwLW9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9jZGs4cy1saWJyYXJ5LW9wdGlvbnMnO1xuIl19
@@ -0,0 +1,7 @@
1
+ import { JsiiProjectOptions } from 'projen/lib/cdk';
2
+ import { ProjectGlobalOptions } from './project-global-options';
3
+ /**
4
+ * CDK Construct Library Project options
5
+ */
6
+ export interface JsiiOptions extends JsiiProjectOptions, ProjectGlobalOptions {
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nkay9pbnRlcmZhY2VzL2pzaWktb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNpaVByb2plY3RPcHRpb25zIH0gZnJvbSAncHJvamVuL2xpYi9jZGsnO1xuaW1wb3J0IHsgUHJvamVjdEdsb2JhbE9wdGlvbnMgfSBmcm9tICcuL3Byb2plY3QtZ2xvYmFsLW9wdGlvbnMnO1xuXG4vKipcbiAqIENESyBDb25zdHJ1Y3QgTGlicmFyeSBQcm9qZWN0IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc2lpT3B0aW9ucyBleHRlbmRzIEpzaWlQcm9qZWN0T3B0aW9ucywgUHJvamVjdEdsb2JhbE9wdGlvbnMge1xuICAvLyBGdXR1cmUgQ0RLIExpYnJhcnkgc3BlY2lmaWMgb3B0aW9ucyBjYW4gYmUgYWRkZWQgaGVyZVxufVxuIl19
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Global configuration options that apply to all projects
3
+ */
4
+ export interface ProjectGlobalOptions {
5
+ /**
6
+ * Whether to include Agents component for coding agent documentation
7
+ * @default true
8
+ */
9
+ readonly agents?: boolean;
10
+ /**
11
+ * Whether to include Commitzent component for conventional commits
12
+ * @default true
13
+ */
14
+ readonly commitzent?: boolean;
15
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1nbG9iYWwtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jZGsvaW50ZXJmYWNlcy9wcm9qZWN0LWdsb2JhbC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdsb2JhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcHBseSB0byBhbGwgcHJvamVjdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0R2xvYmFsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgQWdlbnRzIGNvbXBvbmVudCBmb3IgY29kaW5nIGFnZW50IGRvY3VtZW50YXRpb25cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIENvbW1pdHplbnQgY29tcG9uZW50IGZvciBjb252ZW50aW9uYWwgY29tbWl0c1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjb21taXR6ZW50PzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { JsiiProject as Jsii } from 'projen/lib/cdk';
2
+ import { Commitzent } from '../components';
3
+ import { JsiiOptions } from './interfaces/jsii-options';
4
+ /**
5
+ * JSII Project
6
+ *
7
+ * @pjid jsii-project
8
+ */
9
+ export declare class JsiiProject extends Jsii {
10
+ readonly commitzent?: Commitzent;
11
+ constructor(options: JsiiOptions);
12
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsiiProject = void 0;
4
+ const cdk_1 = require("projen/lib/cdk");
5
+ const common_options_1 = require("../common/common-options");
6
+ /**
7
+ * JSII Project
8
+ *
9
+ * @pjid jsii-project
10
+ */
11
+ class JsiiProject extends cdk_1.JsiiProject {
12
+ constructor(options) {
13
+ const opts = common_options_1.CommonOptionsConfig.withCommonOptionsDefaults({
14
+ ...options,
15
+ });
16
+ super({
17
+ ...opts,
18
+ });
19
+ const components = common_options_1.CommonOptionsConfig.withCommonComponents(this, opts);
20
+ this.commitzent = components.commitzent;
21
+ }
22
+ }
23
+ exports.JsiiProject = JsiiProject;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nkay9qc2lpLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQXFEO0FBQ3JELDZEQUErRDtBQUkvRDs7OztHQUlHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsaUJBQUk7SUFFbkMsWUFBWSxPQUFvQjtRQUM5QixNQUFNLElBQUksR0FBRyxvQ0FBbUIsQ0FBQyx5QkFBeUIsQ0FBQztZQUN6RCxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUM7WUFDSixHQUFHLElBQUk7U0FDUixDQUFDLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxvQ0FBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQVpELGtDQVlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNpaVByb2plY3QgYXMgSnNpaSB9IGZyb20gJ3Byb2plbi9saWIvY2RrJztcbmltcG9ydCB7IENvbW1vbk9wdGlvbnNDb25maWcgfSBmcm9tICcuLi9jb21tb24vY29tbW9uLW9wdGlvbnMnO1xuaW1wb3J0IHsgQ29tbWl0emVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgSnNpaU9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvanNpaS1vcHRpb25zJztcblxuLyoqXG4gKiBKU0lJIFByb2plY3RcbiAqXG4gKiBAcGppZCBqc2lpLXByb2plY3RcbiAqL1xuZXhwb3J0IGNsYXNzIEpzaWlQcm9qZWN0IGV4dGVuZHMgSnNpaSB7XG4gIHJlYWRvbmx5IGNvbW1pdHplbnQ/OiBDb21taXR6ZW50O1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKc2lpT3B0aW9ucykge1xuICAgIGNvbnN0IG9wdHMgPSBDb21tb25PcHRpb25zQ29uZmlnLndpdGhDb21tb25PcHRpb25zRGVmYXVsdHMoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRzLFxuICAgIH0pO1xuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBDb21tb25PcHRpb25zQ29uZmlnLndpdGhDb21tb25Db21wb25lbnRzKHRoaXMsIG9wdHMpO1xuICAgIHRoaXMuY29tbWl0emVudCA9IGNvbXBvbmVudHMuY29tbWl0emVudDtcbiAgfVxufVxuIl19
@@ -0,0 +1,40 @@
1
+ import { Project } from 'projen';
2
+ import { TypeScriptProjectOptions } from 'projen/lib/typescript';
3
+ import { ProjectGlobalOptions } from '../cdk/interfaces/project-global-options';
4
+ import { Agents } from '../components/agents/agents';
5
+ import { Commitzent } from '../components/commitzent/commitzent';
6
+ /**
7
+ * TypeScript project options that include global project options
8
+ */
9
+ export interface TypeScriptProjectWithGlobalOptions extends TypeScriptProjectOptions, ProjectGlobalOptions {
10
+ }
11
+ export interface CommonsComponents {
12
+ readonly agents?: Agents;
13
+ readonly commitzent?: Commitzent;
14
+ }
15
+ /**
16
+ * Utility class for configuring common project options with default values
17
+ */
18
+ export declare class CommonOptionsConfig {
19
+ /**
20
+ * Configures default options only if they are not already defined in the projen options
21
+ * Prettier and ESLint are only enabled for root projects (not subprojects)
22
+ * @param options - Project options that may include existing configurations
23
+ * @returns Final options with default values applied where no previous configuration existed
24
+ */
25
+ static withCommonOptionsDefaults<T extends TypeScriptProjectOptions>(options: T): T;
26
+ /**
27
+ * Configures common components like VSCode settings and extensions
28
+ * If project has parent, configures VSCode in parent project instead of subproject
29
+ * Commitzent is only added to root projects (not subprojects) unless explicitly requested
30
+ * @param project - The project instance to configure
31
+ * @param options - Project options (any type that has vscode and commitzent properties)
32
+ */
33
+ static withCommonComponents(project: Project, options: TypeScriptProjectWithGlobalOptions): CommonsComponents;
34
+ /**
35
+ * Default prettier configurations that will always be applied
36
+ */
37
+ private static readonly DEFAULT_PRETTIER_OPTIONS;
38
+ private static readonly VSCODE_SETTINGS;
39
+ private static readonly VSCODE_EXTENSIONS;
40
+ }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CommonOptionsConfig = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const javascript_1 = require("projen/lib/javascript");
7
+ const util_1 = require("projen/lib/util");
8
+ const vscode_1 = require("projen/lib/vscode");
9
+ const agents_1 = require("../components/agents/agents");
10
+ const commitzent_1 = require("../components/commitzent/commitzent");
11
+ /**
12
+ * Utility class for configuring common project options with default values
13
+ */
14
+ class CommonOptionsConfig {
15
+ /**
16
+ * Configures default options only if they are not already defined in the projen options
17
+ * Prettier and ESLint are only enabled for root projects (not subprojects)
18
+ * @param options - Project options that may include existing configurations
19
+ * @returns Final options with default values applied where no previous configuration existed
20
+ */
21
+ static withCommonOptionsDefaults(options) {
22
+ // Only enable prettier and eslint for root projects (not subprojects) unless explicitly set
23
+ const isSubproject = options.parent != null;
24
+ const prettierDefault = isSubproject ? false : true;
25
+ const eslintDefault = isSubproject ? false : true;
26
+ const commonDefaults = {
27
+ prettier: options.prettier ?? prettierDefault,
28
+ prettierOptions: options.prettierOptions ?? this.DEFAULT_PRETTIER_OPTIONS,
29
+ eslint: options.eslint ?? eslintDefault,
30
+ };
31
+ return (0, util_1.deepMerge)([{}, options, commonDefaults]);
32
+ }
33
+ /**
34
+ * Configures common components like VSCode settings and extensions
35
+ * If project has parent, configures VSCode in parent project instead of subproject
36
+ * Commitzent is only added to root projects (not subprojects) unless explicitly requested
37
+ * @param project - The project instance to configure
38
+ * @param options - Project options (any type that has vscode and commitzent properties)
39
+ */
40
+ static withCommonComponents(project, options) {
41
+ const isSubproject = project.parent != null;
42
+ // Determine target project: use parent if it's a subproject, otherwise use current project
43
+ const targetProject = project.parent ?? project;
44
+ if (options.vscode !== false) {
45
+ // Try to find existing VsCode component by type in target project
46
+ let vscode = targetProject.node.children.find((child) => child instanceof vscode_1.VsCode);
47
+ if (!vscode) {
48
+ vscode = new vscode_1.VsCode(targetProject);
49
+ }
50
+ vscode.settings.addSettings(this.VSCODE_SETTINGS);
51
+ vscode.extensions.addRecommendations(...this.VSCODE_EXTENSIONS);
52
+ }
53
+ // Add Agents component (enabled by default for all projects)
54
+ let agents;
55
+ if (options.agents !== false) {
56
+ agents = targetProject.node.children.find((child) => child instanceof agents_1.Agents);
57
+ if (!agents || !isSubproject) {
58
+ agents = new agents_1.Agents(targetProject, 'agents');
59
+ }
60
+ }
61
+ let commitzent;
62
+ if (options.commitzent !== false) {
63
+ commitzent = targetProject.node.children.find((child) => child instanceof commitzent_1.Commitzent);
64
+ if (!commitzent) {
65
+ commitzent = new commitzent_1.Commitzent(targetProject, 'commitzent');
66
+ }
67
+ }
68
+ if (isSubproject && options.commitzent !== false) {
69
+ commitzent?.addScope({ name: project.name });
70
+ }
71
+ return { agents, commitzent };
72
+ }
73
+ }
74
+ exports.CommonOptionsConfig = CommonOptionsConfig;
75
+ _a = JSII_RTTI_SYMBOL_1;
76
+ CommonOptionsConfig[_a] = { fqn: "@jttc/projen-project-types.CommonOptionsConfig", version: "1.0.0-beta.10" };
77
+ /**
78
+ * Default prettier configurations that will always be applied
79
+ */
80
+ CommonOptionsConfig.DEFAULT_PRETTIER_OPTIONS = {
81
+ settings: {
82
+ trailingComma: javascript_1.TrailingComma.ALL,
83
+ singleQuote: true,
84
+ bracketSpacing: true,
85
+ semi: true,
86
+ },
87
+ };
88
+ CommonOptionsConfig.VSCODE_SETTINGS = {
89
+ 'editor.formatOnSave': true,
90
+ 'editor.indentSize': 2,
91
+ 'editor.defaultFormatter': 'esbenp.prettier-vscode',
92
+ 'eslint.nodePath': './node_modules',
93
+ 'eslint.useFlatConfig': false,
94
+ };
95
+ CommonOptionsConfig.VSCODE_EXTENSIONS = [
96
+ 'amazonwebservices.aws-toolkit-vscode',
97
+ 'DanielThielking.aws-cloudformation-yaml',
98
+ 'ms-azuretools.vscode-containers',
99
+ 'dbaeumer.vscode-eslint',
100
+ 'mhutchie.git-graph',
101
+ 'github.vscode-github-actions',
102
+ 'GitHub.vscode-pull-request-github',
103
+ 'eamodio.gitlens',
104
+ 'esbenp.prettier-vscode',
105
+ 'spmeesseman.vscode-taskexplorer',
106
+ 'wayou.vscode-todo-highlight',
107
+ 'vscode-icons-team.vscode-icons',
108
+ 'ms-vscode-remote.vscode-remote-extensionpack',
109
+ ];
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL2NvbW1vbi1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esc0RBQXVFO0FBRXZFLDBDQUE0QztBQUM1Qyw4Q0FBMkM7QUFFM0Msd0RBQXFEO0FBQ3JELG9FQUFpRTtBQVlqRTs7R0FFRztBQUNILE1BQWEsbUJBQW1CO0lBQzlCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLHlCQUF5QixDQUM5QixPQUFVO1FBRVYsNEZBQTRGO1FBQzVGLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQzVDLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDcEQsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVsRCxNQUFNLGNBQWMsR0FBRztZQUNyQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxlQUFlO1lBQzdDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyx3QkFBd0I7WUFDekUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksYUFBYTtTQUN4QyxDQUFDO1FBRUYsT0FBTyxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFNLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxvQkFBb0IsQ0FDekIsT0FBZ0IsRUFDaEIsT0FBMkM7UUFFM0MsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFFNUMsMkZBQTJGO1FBQzNGLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDO1FBRWhELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM3QixrRUFBa0U7WUFDbEUsSUFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUMzQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLGVBQU0sQ0FDekIsQ0FBQztZQUVaLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNsRCxNQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELDZEQUE2RDtRQUM3RCxJQUFJLE1BQTBCLENBQUM7UUFDL0IsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzdCLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksZUFBTSxDQUN6QixDQUFDO1lBRVosSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM3QixNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxVQUFrQyxDQUFDO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUMzQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLHVCQUFVLENBQ3pCLENBQUM7WUFFaEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixVQUFVLEdBQUcsSUFBSSx1QkFBVSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksWUFBWSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDakQsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUNoQyxDQUFDOztBQWxGSCxrREF1SEM7OztBQW5DQzs7R0FFRztBQUNxQiw0Q0FBd0IsR0FBb0I7SUFDbEUsUUFBUSxFQUFFO1FBQ1IsYUFBYSxFQUFFLDBCQUFhLENBQUMsR0FBRztRQUNoQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixjQUFjLEVBQUUsSUFBSTtRQUNwQixJQUFJLEVBQUUsSUFBSTtLQUNYO0NBQ0YsQ0FBQztBQUVzQixtQ0FBZSxHQUFHO0lBQ3hDLHFCQUFxQixFQUFFLElBQUk7SUFDM0IsbUJBQW1CLEVBQUUsQ0FBQztJQUN0Qix5QkFBeUIsRUFBRSx3QkFBd0I7SUFDbkQsaUJBQWlCLEVBQUUsZ0JBQWdCO0lBQ25DLHNCQUFzQixFQUFFLEtBQUs7Q0FDOUIsQ0FBQztBQUVzQixxQ0FBaUIsR0FBRztJQUMxQyxzQ0FBc0M7SUFDdEMseUNBQXlDO0lBQ3pDLGlDQUFpQztJQUNqQyx3QkFBd0I7SUFDeEIsb0JBQW9CO0lBQ3BCLDhCQUE4QjtJQUM5QixtQ0FBbUM7SUFDbkMsaUJBQWlCO0lBQ2pCLHdCQUF3QjtJQUN4QixpQ0FBaUM7SUFDakMsNkJBQTZCO0lBQzdCLGdDQUFnQztJQUNoQyw4Q0FBOEM7Q0FDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgUHJldHRpZXJPcHRpb25zLCBUcmFpbGluZ0NvbW1hIH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcbmltcG9ydCB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJ3Byb2plbi9saWIvdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tICdwcm9qZW4vbGliL3V0aWwnO1xuaW1wb3J0IHsgVnNDb2RlIH0gZnJvbSAncHJvamVuL2xpYi92c2NvZGUnO1xuaW1wb3J0IHsgUHJvamVjdEdsb2JhbE9wdGlvbnMgfSBmcm9tICcuLi9jZGsvaW50ZXJmYWNlcy9wcm9qZWN0LWdsb2JhbC1vcHRpb25zJztcbmltcG9ydCB7IEFnZW50cyB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWdlbnRzL2FnZW50cyc7XG5pbXBvcnQgeyBDb21taXR6ZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb21taXR6ZW50L2NvbW1pdHplbnQnO1xuXG4vKipcbiAqIFR5cGVTY3JpcHQgcHJvamVjdCBvcHRpb25zIHRoYXQgaW5jbHVkZSBnbG9iYWwgcHJvamVjdCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdFByb2plY3RXaXRoR2xvYmFsT3B0aW9uc1xuICBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgUHJvamVjdEdsb2JhbE9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBDb21tb25zQ29tcG9uZW50cyB7XG4gIHJlYWRvbmx5IGFnZW50cz86IEFnZW50cztcbiAgcmVhZG9ubHkgY29tbWl0emVudD86IENvbW1pdHplbnQ7XG59XG4vKipcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIGNvbmZpZ3VyaW5nIGNvbW1vbiBwcm9qZWN0IG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlc1xuICovXG5leHBvcnQgY2xhc3MgQ29tbW9uT3B0aW9uc0NvbmZpZyB7XG4gIC8qKlxuICAgKiBDb25maWd1cmVzIGRlZmF1bHQgb3B0aW9ucyBvbmx5IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIHByb2plbiBvcHRpb25zXG4gICAqIFByZXR0aWVyIGFuZCBFU0xpbnQgYXJlIG9ubHkgZW5hYmxlZCBmb3Igcm9vdCBwcm9qZWN0cyAobm90IHN1YnByb2plY3RzKVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFByb2plY3Qgb3B0aW9ucyB0aGF0IG1heSBpbmNsdWRlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zXG4gICAqIEByZXR1cm5zIEZpbmFsIG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlcyBhcHBsaWVkIHdoZXJlIG5vIHByZXZpb3VzIGNvbmZpZ3VyYXRpb24gZXhpc3RlZFxuICAgKi9cbiAgc3RhdGljIHdpdGhDb21tb25PcHRpb25zRGVmYXVsdHM8VCBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucz4oXG4gICAgb3B0aW9uczogVCxcbiAgKTogVCB7XG4gICAgLy8gT25seSBlbmFibGUgcHJldHRpZXIgYW5kIGVzbGludCBmb3Igcm9vdCBwcm9qZWN0cyAobm90IHN1YnByb2plY3RzKSB1bmxlc3MgZXhwbGljaXRseSBzZXRcbiAgICBjb25zdCBpc1N1YnByb2plY3QgPSBvcHRpb25zLnBhcmVudCAhPSBudWxsO1xuICAgIGNvbnN0IHByZXR0aWVyRGVmYXVsdCA9IGlzU3VicHJvamVjdCA/IGZhbHNlIDogdHJ1ZTtcbiAgICBjb25zdCBlc2xpbnREZWZhdWx0ID0gaXNTdWJwcm9qZWN0ID8gZmFsc2UgOiB0cnVlO1xuXG4gICAgY29uc3QgY29tbW9uRGVmYXVsdHMgPSB7XG4gICAgICBwcmV0dGllcjogb3B0aW9ucy5wcmV0dGllciA/PyBwcmV0dGllckRlZmF1bHQsXG4gICAgICBwcmV0dGllck9wdGlvbnM6IG9wdGlvbnMucHJldHRpZXJPcHRpb25zID8/IHRoaXMuREVGQVVMVF9QUkVUVElFUl9PUFRJT05TLFxuICAgICAgZXNsaW50OiBvcHRpb25zLmVzbGludCA/PyBlc2xpbnREZWZhdWx0LFxuICAgIH07XG5cbiAgICByZXR1cm4gZGVlcE1lcmdlKFt7fSwgb3B0aW9ucywgY29tbW9uRGVmYXVsdHNdKSBhcyBUO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgY29tbW9uIGNvbXBvbmVudHMgbGlrZSBWU0NvZGUgc2V0dGluZ3MgYW5kIGV4dGVuc2lvbnNcbiAgICogSWYgcHJvamVjdCBoYXMgcGFyZW50LCBjb25maWd1cmVzIFZTQ29kZSBpbiBwYXJlbnQgcHJvamVjdCBpbnN0ZWFkIG9mIHN1YnByb2plY3RcbiAgICogQ29tbWl0emVudCBpcyBvbmx5IGFkZGVkIHRvIHJvb3QgcHJvamVjdHMgKG5vdCBzdWJwcm9qZWN0cykgdW5sZXNzIGV4cGxpY2l0bHkgcmVxdWVzdGVkXG4gICAqIEBwYXJhbSBwcm9qZWN0IC0gVGhlIHByb2plY3QgaW5zdGFuY2UgdG8gY29uZmlndXJlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gUHJvamVjdCBvcHRpb25zIChhbnkgdHlwZSB0aGF0IGhhcyB2c2NvZGUgYW5kIGNvbW1pdHplbnQgcHJvcGVydGllcylcbiAgICovXG4gIHN0YXRpYyB3aXRoQ29tbW9uQ29tcG9uZW50cyhcbiAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgIG9wdGlvbnM6IFR5cGVTY3JpcHRQcm9qZWN0V2l0aEdsb2JhbE9wdGlvbnMsXG4gICk6IENvbW1vbnNDb21wb25lbnRzIHtcbiAgICBjb25zdCBpc1N1YnByb2plY3QgPSBwcm9qZWN0LnBhcmVudCAhPSBudWxsO1xuXG4gICAgLy8gRGV0ZXJtaW5lIHRhcmdldCBwcm9qZWN0OiB1c2UgcGFyZW50IGlmIGl0J3MgYSBzdWJwcm9qZWN0LCBvdGhlcndpc2UgdXNlIGN1cnJlbnQgcHJvamVjdFxuICAgIGNvbnN0IHRhcmdldFByb2plY3QgPSBwcm9qZWN0LnBhcmVudCA/PyBwcm9qZWN0O1xuXG4gICAgaWYgKG9wdGlvbnMudnNjb2RlICE9PSBmYWxzZSkge1xuICAgICAgLy8gVHJ5IHRvIGZpbmQgZXhpc3RpbmcgVnNDb2RlIGNvbXBvbmVudCBieSB0eXBlIGluIHRhcmdldCBwcm9qZWN0XG4gICAgICBsZXQgdnNjb2RlID0gdGFyZ2V0UHJvamVjdC5ub2RlLmNoaWxkcmVuLmZpbmQoXG4gICAgICAgIChjaGlsZCkgPT4gY2hpbGQgaW5zdGFuY2VvZiBWc0NvZGUsXG4gICAgICApIGFzIFZzQ29kZTtcblxuICAgICAgaWYgKCF2c2NvZGUpIHtcbiAgICAgICAgdnNjb2RlID0gbmV3IFZzQ29kZSh0YXJnZXRQcm9qZWN0KTtcbiAgICAgIH1cblxuICAgICAgdnNjb2RlLnNldHRpbmdzLmFkZFNldHRpbmdzKHRoaXMuVlNDT0RFX1NFVFRJTkdTKTtcbiAgICAgIHZzY29kZS5leHRlbnNpb25zLmFkZFJlY29tbWVuZGF0aW9ucyguLi50aGlzLlZTQ09ERV9FWFRFTlNJT05TKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgQWdlbnRzIGNvbXBvbmVudCAoZW5hYmxlZCBieSBkZWZhdWx0IGZvciBhbGwgcHJvamVjdHMpXG4gICAgbGV0IGFnZW50czogQWdlbnRzIHwgdW5kZWZpbmVkO1xuICAgIGlmIChvcHRpb25zLmFnZW50cyAhPT0gZmFsc2UpIHtcbiAgICAgIGFnZW50cyA9IHRhcmdldFByb2plY3Qubm9kZS5jaGlsZHJlbi5maW5kKFxuICAgICAgICAoY2hpbGQpID0+IGNoaWxkIGluc3RhbmNlb2YgQWdlbnRzLFxuICAgICAgKSBhcyBBZ2VudHM7XG5cbiAgICAgIGlmICghYWdlbnRzIHx8ICFpc1N1YnByb2plY3QpIHtcbiAgICAgICAgYWdlbnRzID0gbmV3IEFnZW50cyh0YXJnZXRQcm9qZWN0LCAnYWdlbnRzJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNvbW1pdHplbnQ6IENvbW1pdHplbnQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKG9wdGlvbnMuY29tbWl0emVudCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbW1pdHplbnQgPSB0YXJnZXRQcm9qZWN0Lm5vZGUuY2hpbGRyZW4uZmluZChcbiAgICAgICAgKGNoaWxkKSA9PiBjaGlsZCBpbnN0YW5jZW9mIENvbW1pdHplbnQsXG4gICAgICApIGFzIENvbW1pdHplbnQ7XG5cbiAgICAgIGlmICghY29tbWl0emVudCkge1xuICAgICAgICBjb21taXR6ZW50ID0gbmV3IENvbW1pdHplbnQodGFyZ2V0UHJvamVjdCwgJ2NvbW1pdHplbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNTdWJwcm9qZWN0ICYmIG9wdGlvbnMuY29tbWl0emVudCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbW1pdHplbnQ/LmFkZFNjb3BlKHsgbmFtZTogcHJvamVjdC5uYW1lIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7IGFnZW50cywgY29tbWl0emVudCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcHJldHRpZXIgY29uZmlndXJhdGlvbnMgdGhhdCB3aWxsIGFsd2F5cyBiZSBhcHBsaWVkXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1BSRVRUSUVSX09QVElPTlM6IFByZXR0aWVyT3B0aW9ucyA9IHtcbiAgICBzZXR0aW5nczoge1xuICAgICAgdHJhaWxpbmdDb21tYTogVHJhaWxpbmdDb21tYS5BTEwsXG4gICAgICBzaW5nbGVRdW90ZTogdHJ1ZSxcbiAgICAgIGJyYWNrZXRTcGFjaW5nOiB0cnVlLFxuICAgICAgc2VtaTogdHJ1ZSxcbiAgICB9LFxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFZTQ09ERV9TRVRUSU5HUyA9IHtcbiAgICAnZWRpdG9yLmZvcm1hdE9uU2F2ZSc6IHRydWUsXG4gICAgJ2VkaXRvci5pbmRlbnRTaXplJzogMixcbiAgICAnZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXInOiAnZXNiZW5wLnByZXR0aWVyLXZzY29kZScsXG4gICAgJ2VzbGludC5ub2RlUGF0aCc6ICcuL25vZGVfbW9kdWxlcycsXG4gICAgJ2VzbGludC51c2VGbGF0Q29uZmlnJzogZmFsc2UsXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVlNDT0RFX0VYVEVOU0lPTlMgPSBbXG4gICAgJ2FtYXpvbndlYnNlcnZpY2VzLmF3cy10b29sa2l0LXZzY29kZScsXG4gICAgJ0RhbmllbFRoaWVsa2luZy5hd3MtY2xvdWRmb3JtYXRpb24teWFtbCcsXG4gICAgJ21zLWF6dXJldG9vbHMudnNjb2RlLWNvbnRhaW5lcnMnLFxuICAgICdkYmFldW1lci52c2NvZGUtZXNsaW50JyxcbiAgICAnbWh1dGNoaWUuZ2l0LWdyYXBoJyxcbiAgICAnZ2l0aHViLnZzY29kZS1naXRodWItYWN0aW9ucycsXG4gICAgJ0dpdEh1Yi52c2NvZGUtcHVsbC1yZXF1ZXN0LWdpdGh1YicsXG4gICAgJ2VhbW9kaW8uZ2l0bGVucycsXG4gICAgJ2VzYmVucC5wcmV0dGllci12c2NvZGUnLFxuICAgICdzcG1lZXNzZW1hbi52c2NvZGUtdGFza2V4cGxvcmVyJyxcbiAgICAnd2F5b3UudnNjb2RlLXRvZG8taGlnaGxpZ2h0JyxcbiAgICAndnNjb2RlLWljb25zLXRlYW0udnNjb2RlLWljb25zJyxcbiAgICAnbXMtdnNjb2RlLXJlbW90ZS52c2NvZGUtcmVtb3RlLWV4dGVuc2lvbnBhY2snLFxuICBdO1xufVxuIl19
@@ -0,0 +1,21 @@
1
+ import { Component, Project } from 'projen';
2
+ export interface AgentsOptions {
3
+ /**
4
+ * Custom content to include in the AGENTS.md file
5
+ */
6
+ readonly customContent?: string[];
7
+ }
8
+ /**
9
+ * Component that adds an AGENTS.md file to explain how the repository works
10
+ * for coding agents like GitHub Copilot
11
+ */
12
+ export declare class Agents extends Component {
13
+ constructor(project: Project, id: string, options?: AgentsOptions);
14
+ private detectProjectType;
15
+ private generateAgentsContent;
16
+ private getProjectSpecificContent;
17
+ private getProjectCommands;
18
+ private getProjectStructure;
19
+ private getProjectTypeSpecificSections;
20
+ private getProjectSpecificResources;
21
+ }