@codedrifters/configulator 0.0.318 → 0.0.319

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/lib/index.js CHANGED
@@ -197,8 +197,23 @@ __export(index_exports, {
197
197
  AwsTeardownWorkflow: () => AwsTeardownWorkflow,
198
198
  BUILT_IN_BUNDLES: () => BUILT_IN_BUNDLES,
199
199
  BUNDLE_OWNERSHIP: () => BUNDLE_OWNERSHIP,
200
+ CDK_BOOTSTRAP_DEFAULTS_BY_STAGE: () => CDK_BOOTSTRAP_DEFAULTS_BY_STAGE,
201
+ CDK_DEPLOY_DEFAULTS_BY_STAGE: () => CDK_DEPLOY_DEFAULTS_BY_STAGE,
202
+ CDK_DEPLOY_METHOD: () => CDK_DEPLOY_METHOD,
203
+ CDK_DESTROY_DEFAULTS_BY_STAGE: () => CDK_DESTROY_DEFAULTS_BY_STAGE,
204
+ CDK_DIFF_DEFAULTS_BY_STAGE: () => CDK_DIFF_DEFAULTS_BY_STAGE,
205
+ CDK_DIFF_METHOD: () => CDK_DIFF_METHOD,
206
+ CDK_GC_ACTION: () => CDK_GC_ACTION,
207
+ CDK_GC_TYPE: () => CDK_GC_TYPE,
208
+ CDK_INIT_LANGUAGE: () => CDK_INIT_LANGUAGE,
209
+ CDK_INIT_TEMPLATE: () => CDK_INIT_TEMPLATE,
210
+ CDK_PROGRESS: () => CDK_PROGRESS,
211
+ CDK_REQUIRE_APPROVAL: () => CDK_REQUIRE_APPROVAL,
212
+ CDK_SYNTH_DEFAULTS_BY_STAGE: () => CDK_SYNTH_DEFAULTS_BY_STAGE,
213
+ CDK_WATCH_DEFAULTS_BY_STAGE: () => CDK_WATCH_DEFAULTS_BY_STAGE,
200
214
  CLAUDE_RULE_TARGET: () => CLAUDE_RULE_TARGET,
201
215
  COMPLETE_JOB_ID: () => COMPLETE_JOB_ID,
216
+ CdkCli: () => CdkCli,
202
217
  DEFAULT_AC_THRESHOLDS: () => DEFAULT_AC_THRESHOLDS,
203
218
  DEFAULT_AGENT_PATHS: () => DEFAULT_AGENT_PATHS,
204
219
  DEFAULT_AGENT_TIERS: () => DEFAULT_AGENT_TIERS,
@@ -366,6 +381,7 @@ __export(index_exports, {
366
381
  labelsForPhase: () => labelsForPhase,
367
382
  maintenanceAuditBundle: () => maintenanceAuditBundle,
368
383
  meetingAnalysisBundle: () => meetingAnalysisBundle,
384
+ mergeCdkOptions: () => mergeCdkOptions,
369
385
  orchestratorBundle: () => orchestratorBundle,
370
386
  parseApiRollup: () => parseApiRollup,
371
387
  peopleProfileBundle: () => peopleProfileBundle,
@@ -379,6 +395,29 @@ __export(index_exports, {
379
395
  regulatoryResearchBundle: () => regulatoryResearchBundle,
380
396
  renderAgentTierCaseStatement: () => renderAgentTierCaseStatement,
381
397
  renderAgentTierSection: () => renderAgentTierSection,
398
+ renderCdkAcknowledge: () => renderCdkAcknowledge,
399
+ renderCdkBootstrap: () => renderCdkBootstrap,
400
+ renderCdkContext: () => renderCdkContext,
401
+ renderCdkDeploy: () => renderCdkDeploy,
402
+ renderCdkDestroy: () => renderCdkDestroy,
403
+ renderCdkDiff: () => renderCdkDiff,
404
+ renderCdkDocs: () => renderCdkDocs,
405
+ renderCdkDoctor: () => renderCdkDoctor,
406
+ renderCdkDrift: () => renderCdkDrift,
407
+ renderCdkFlags: () => renderCdkFlags,
408
+ renderCdkGc: () => renderCdkGc,
409
+ renderCdkImport: () => renderCdkImport,
410
+ renderCdkInit: () => renderCdkInit,
411
+ renderCdkList: () => renderCdkList,
412
+ renderCdkMetadata: () => renderCdkMetadata,
413
+ renderCdkMigrate: () => renderCdkMigrate,
414
+ renderCdkNotices: () => renderCdkNotices,
415
+ renderCdkOrphan: () => renderCdkOrphan,
416
+ renderCdkPublishAssets: () => renderCdkPublishAssets,
417
+ renderCdkRefactor: () => renderCdkRefactor,
418
+ renderCdkRollback: () => renderCdkRollback,
419
+ renderCdkSynth: () => renderCdkSynth,
420
+ renderCdkWatch: () => renderCdkWatch,
382
421
  renderCheckDocSamplesProcedure: () => renderCheckDocSamplesProcedure,
383
422
  renderCheckLinksProcedure: () => renderCheckLinksProcedure,
384
423
  renderCustomDocSectionBlock: () => renderCustomDocSectionBlock,
@@ -31238,8 +31277,640 @@ var AstroOutput = {
31238
31277
  // src/aws/aws-deployment-config.ts
31239
31278
  var import_node_path = require("path");
31240
31279
  var import_utils9 = __toESM(require_lib());
31280
+ var import_projen12 = require("projen");
31281
+
31282
+ // src/aws/cdk-cli.ts
31241
31283
  var import_projen11 = require("projen");
31242
- var AwsDeploymentConfig = class _AwsDeploymentConfig extends import_projen11.Component {
31284
+
31285
+ // src/aws/cdk-cli-defaults.ts
31286
+ var CDK_DEPLOY_DEFAULTS_BY_STAGE = {
31287
+ dev: {
31288
+ rollback: false,
31289
+ requireApproval: "never",
31290
+ progress: "events"
31291
+ },
31292
+ stage: {
31293
+ requireApproval: "never",
31294
+ progress: "events"
31295
+ },
31296
+ prod: {
31297
+ requireApproval: "never",
31298
+ progress: "events",
31299
+ method: "change-set"
31300
+ }
31301
+ };
31302
+ var CDK_SYNTH_DEFAULTS_BY_STAGE = {
31303
+ dev: { quiet: true },
31304
+ stage: { quiet: true },
31305
+ prod: { quiet: true }
31306
+ };
31307
+ var CDK_WATCH_DEFAULTS_BY_STAGE = {
31308
+ dev: { progress: "events" },
31309
+ stage: { progress: "events" },
31310
+ prod: { progress: "events" }
31311
+ };
31312
+ var CDK_DESTROY_DEFAULTS_BY_STAGE = {
31313
+ dev: { force: true },
31314
+ stage: {},
31315
+ prod: {}
31316
+ };
31317
+ var CDK_DIFF_DEFAULTS_BY_STAGE = {
31318
+ dev: {},
31319
+ stage: {},
31320
+ prod: {}
31321
+ };
31322
+ var CDK_BOOTSTRAP_DEFAULTS_BY_STAGE = {
31323
+ dev: {},
31324
+ stage: {},
31325
+ prod: { terminationProtection: true }
31326
+ };
31327
+
31328
+ // src/aws/cdk-cli-merge.ts
31329
+ var isPlainObject = (value) => {
31330
+ return typeof value === "object" && value !== null && !Array.isArray(value);
31331
+ };
31332
+ var dedupePreservingOrder = (items) => {
31333
+ const seen = /* @__PURE__ */ new Set();
31334
+ const out = [];
31335
+ for (const item of items) {
31336
+ if (!seen.has(item)) {
31337
+ seen.add(item);
31338
+ out.push(item);
31339
+ }
31340
+ }
31341
+ return out;
31342
+ };
31343
+ var mergeCdkOptions = (...layers) => {
31344
+ const accumulator = {};
31345
+ for (const layer of layers) {
31346
+ if (layer === void 0) {
31347
+ continue;
31348
+ }
31349
+ for (const [key, incoming] of Object.entries(layer)) {
31350
+ if (incoming === void 0) {
31351
+ continue;
31352
+ }
31353
+ const existing = accumulator[key];
31354
+ if (Array.isArray(incoming)) {
31355
+ const previous = Array.isArray(existing) ? existing : [];
31356
+ accumulator[key] = dedupePreservingOrder([...previous, ...incoming]);
31357
+ continue;
31358
+ }
31359
+ if (isPlainObject(incoming)) {
31360
+ const previous = isPlainObject(existing) ? existing : {};
31361
+ accumulator[key] = { ...previous, ...incoming };
31362
+ continue;
31363
+ }
31364
+ accumulator[key] = incoming;
31365
+ }
31366
+ }
31367
+ return accumulator;
31368
+ };
31369
+
31370
+ // src/aws/cdk-cli.ts
31371
+ var CdkCli = class _CdkCli extends import_projen11.Component {
31372
+ /**
31373
+ * Find the {@link CdkCli} component already attached to the project, if any.
31374
+ */
31375
+ static of(project) {
31376
+ const isDefined = (c) => c instanceof _CdkCli;
31377
+ return project.components.find(isDefined);
31378
+ }
31379
+ constructor(project, options = {}) {
31380
+ super(project);
31381
+ this.deployDefaults = options.deployDefaults ?? {};
31382
+ this.synthDefaults = options.synthDefaults ?? {};
31383
+ this.watchDefaults = options.watchDefaults ?? {};
31384
+ this.destroyDefaults = options.destroyDefaults ?? {};
31385
+ this.diffDefaults = options.diffDefaults ?? {};
31386
+ this.bootstrapDefaults = options.bootstrapDefaults ?? {};
31387
+ this.accountOverrides = options.accountOverrides ?? {};
31388
+ }
31389
+ /**
31390
+ * Resolve the `cdk deploy` options to use against a given target.
31391
+ *
31392
+ * Folds the precedence chain via {@link mergeCdkOptions}: per-stage built-in
31393
+ * → per-stage consumer override → per-account override → per-target
31394
+ * override. The call-site explicit layer is applied by the caller after
31395
+ * this method returns. See {@link CdkCli} for the full chain.
31396
+ */
31397
+ deployOptionsFor(target) {
31398
+ const stage = target.awsStageType;
31399
+ return mergeCdkOptions(
31400
+ CDK_DEPLOY_DEFAULTS_BY_STAGE[stage],
31401
+ this.deployDefaults[stage],
31402
+ this.accountOverrides[target.account]?.deploy,
31403
+ target.cdkOptions?.deploy
31404
+ );
31405
+ }
31406
+ /**
31407
+ * Resolve the `cdk synth` options to use against a given target.
31408
+ *
31409
+ * Folds the precedence chain via {@link mergeCdkOptions}: per-stage built-in
31410
+ * → per-stage consumer override → per-account override → per-target
31411
+ * override. See {@link CdkCli} for the full chain.
31412
+ */
31413
+ synthOptionsFor(target) {
31414
+ const stage = target.awsStageType;
31415
+ return mergeCdkOptions(
31416
+ CDK_SYNTH_DEFAULTS_BY_STAGE[stage],
31417
+ this.synthDefaults[stage],
31418
+ this.accountOverrides[target.account]?.synth,
31419
+ target.cdkOptions?.synth
31420
+ );
31421
+ }
31422
+ /**
31423
+ * Resolve the `cdk watch` options to use against a given target.
31424
+ *
31425
+ * Folds the precedence chain via {@link mergeCdkOptions}: per-stage built-in
31426
+ * → per-stage consumer override → per-account override → per-target
31427
+ * override. See {@link CdkCli} for the full chain.
31428
+ */
31429
+ watchOptionsFor(target) {
31430
+ const stage = target.awsStageType;
31431
+ return mergeCdkOptions(
31432
+ CDK_WATCH_DEFAULTS_BY_STAGE[stage],
31433
+ this.watchDefaults[stage],
31434
+ this.accountOverrides[target.account]?.watch,
31435
+ target.cdkOptions?.watch
31436
+ );
31437
+ }
31438
+ /**
31439
+ * Resolve the `cdk destroy` options to use against a given target.
31440
+ *
31441
+ * Folds the precedence chain via {@link mergeCdkOptions}: per-stage built-in
31442
+ * → per-stage consumer override → per-account override → per-target
31443
+ * override. See {@link CdkCli} for the full chain.
31444
+ */
31445
+ destroyOptionsFor(target) {
31446
+ const stage = target.awsStageType;
31447
+ return mergeCdkOptions(
31448
+ CDK_DESTROY_DEFAULTS_BY_STAGE[stage],
31449
+ this.destroyDefaults[stage],
31450
+ this.accountOverrides[target.account]?.destroy,
31451
+ target.cdkOptions?.destroy
31452
+ );
31453
+ }
31454
+ /**
31455
+ * Resolve the `cdk diff` options to use against a given target.
31456
+ *
31457
+ * Folds the precedence chain via {@link mergeCdkOptions}: per-stage built-in
31458
+ * → per-stage consumer override → per-account override → per-target
31459
+ * override. See {@link CdkCli} for the full chain.
31460
+ */
31461
+ diffOptionsFor(target) {
31462
+ const stage = target.awsStageType;
31463
+ return mergeCdkOptions(
31464
+ CDK_DIFF_DEFAULTS_BY_STAGE[stage],
31465
+ this.diffDefaults[stage],
31466
+ this.accountOverrides[target.account]?.diff,
31467
+ target.cdkOptions?.diff
31468
+ );
31469
+ }
31470
+ /**
31471
+ * Resolve the `cdk bootstrap` options to use against a given target.
31472
+ *
31473
+ * Folds the precedence chain via {@link mergeCdkOptions}: per-stage built-in
31474
+ * → per-stage consumer override → per-account override → per-target
31475
+ * override. See {@link CdkCli} for the full chain.
31476
+ */
31477
+ bootstrapOptionsFor(target) {
31478
+ const stage = target.awsStageType;
31479
+ return mergeCdkOptions(
31480
+ CDK_BOOTSTRAP_DEFAULTS_BY_STAGE[stage],
31481
+ this.bootstrapDefaults[stage],
31482
+ this.accountOverrides[target.account]?.bootstrap,
31483
+ target.cdkOptions?.bootstrap
31484
+ );
31485
+ }
31486
+ };
31487
+
31488
+ // src/aws/cdk-cli-renderer.ts
31489
+ var quote = (value) => {
31490
+ if (value === "") {
31491
+ return '""';
31492
+ }
31493
+ if (/^[A-Za-z0-9_\-./:=@%+,]+$/.test(value)) {
31494
+ return value;
31495
+ }
31496
+ return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
31497
+ };
31498
+ var renderTriBool = (flag, value) => {
31499
+ if (value === void 0) {
31500
+ return void 0;
31501
+ }
31502
+ return value ? `--${flag}` : `--no-${flag}`;
31503
+ };
31504
+ var renderValue = (flag, value) => {
31505
+ if (value === void 0) {
31506
+ return void 0;
31507
+ }
31508
+ return `--${flag}=${quote(String(value))}`;
31509
+ };
31510
+ var renderArray = (flag, values) => {
31511
+ if (!values || values.length === 0) {
31512
+ return [];
31513
+ }
31514
+ return values.map((value) => `--${flag}=${quote(value)}`);
31515
+ };
31516
+ var renderRecord = (flag, values) => {
31517
+ if (!values) {
31518
+ return [];
31519
+ }
31520
+ const keys = Object.keys(values);
31521
+ if (keys.length === 0) {
31522
+ return [];
31523
+ }
31524
+ return keys.map((key) => `--${flag}=${quote(`${key}=${values[key]}`)}`);
31525
+ };
31526
+ var renderVerbose = (value) => {
31527
+ if (value === void 0 || value <= 0) {
31528
+ return [];
31529
+ }
31530
+ return Array.from({ length: value }, () => "-v");
31531
+ };
31532
+ var renderStackPatterns = (values) => {
31533
+ if (!values || values.length === 0) {
31534
+ return [];
31535
+ }
31536
+ return values.map((pattern) => `"${pattern}"`);
31537
+ };
31538
+ var renderGlobalTokens = (opts) => [
31539
+ renderValue("app", opts.app),
31540
+ renderTriBool("asset-metadata", opts.assetMetadata),
31541
+ renderValue("build", opts.build),
31542
+ renderValue("ca-bundle-path", opts.caBundlePath),
31543
+ renderTriBool("ci", opts.ci),
31544
+ renderTriBool("color", opts.color),
31545
+ ...renderRecord("context", opts.context),
31546
+ renderTriBool("debug", opts.debug),
31547
+ renderTriBool("ec2creds", opts.ec2creds),
31548
+ renderTriBool("ignore-errors", opts.ignoreErrors),
31549
+ renderTriBool("json", opts.json),
31550
+ renderTriBool("lookups", opts.lookups),
31551
+ renderTriBool("no-color", opts.noColor),
31552
+ renderTriBool("notices", opts.notices),
31553
+ renderValue("output", opts.output),
31554
+ renderTriBool("path-metadata", opts.pathMetadata),
31555
+ ...renderArray("plugin", opts.plugin),
31556
+ renderValue("profile", opts.profile),
31557
+ renderValue("proxy", opts.proxy),
31558
+ renderValue("role-arn", opts.roleArn),
31559
+ renderTriBool("staging", opts.staging),
31560
+ renderTriBool("strict", opts.strict),
31561
+ renderValue("telemetry-file", opts.telemetryFile),
31562
+ renderTriBool("trace", opts.trace),
31563
+ ...renderArray("unstable", opts.unstable),
31564
+ renderTriBool("version-reporting", opts.versionReporting),
31565
+ renderTriBool("yes", opts.yes)
31566
+ ];
31567
+ var renderTrailingTokens = (opts) => [
31568
+ ...renderVerbose(opts.verbose),
31569
+ ...renderStackPatterns(opts.stackPatterns)
31570
+ ];
31571
+ var compose = (command, tokens) => {
31572
+ const parts = tokens.filter(
31573
+ (token) => token !== void 0 && token !== ""
31574
+ );
31575
+ return [command, ...parts].join(" ");
31576
+ };
31577
+ var renderCdkDeploy = (opts) => {
31578
+ const tokens = [
31579
+ ...renderGlobalTokens(opts),
31580
+ // Deploy-specific flags
31581
+ renderTriBool("all", opts.all),
31582
+ renderTriBool("asset-parallelism", opts.assetParallelism),
31583
+ renderTriBool("asset-prebuild", opts.assetPrebuild),
31584
+ ...renderArray("build-exclude", opts.buildExclude),
31585
+ renderValue("change-set-name", opts.changeSetName),
31586
+ renderValue("concurrency", opts.concurrency),
31587
+ renderTriBool("exclusively", opts.exclusively),
31588
+ renderTriBool("execute", opts.execute),
31589
+ renderTriBool("force", opts.force),
31590
+ renderTriBool("hotswap", opts.hotswap),
31591
+ renderTriBool("hotswap-fallback", opts.hotswapFallback),
31592
+ renderTriBool("ignore-no-stacks", opts.ignoreNoStacks),
31593
+ renderTriBool("import-existing-resources", opts.importExistingResources),
31594
+ renderTriBool("logs", opts.logs),
31595
+ renderValue("method", opts.method),
31596
+ ...renderArray("notification-arns", opts.notificationArns),
31597
+ renderValue("outputs-file", opts.outputsFile),
31598
+ ...renderArray("parameters", opts.parameters),
31599
+ renderTriBool("previous-parameters", opts.previousParameters),
31600
+ renderValue("progress", opts.progress),
31601
+ renderValue("require-approval", opts.requireApproval),
31602
+ renderTriBool("revert-drift", opts.revertDrift),
31603
+ renderTriBool("rollback", opts.rollback),
31604
+ ...renderRecord("tags", opts.tags),
31605
+ renderValue("toolkit-stack-name", opts.toolkitStackName),
31606
+ renderTriBool("watch", opts.watch),
31607
+ ...renderTrailingTokens(opts)
31608
+ ];
31609
+ return compose("deploy", tokens);
31610
+ };
31611
+ var renderCdkSynth = (opts) => {
31612
+ const tokens = [
31613
+ ...renderGlobalTokens(opts),
31614
+ // Synth-specific flags
31615
+ renderTriBool("exclusively", opts.exclusively),
31616
+ renderTriBool("quiet", opts.quiet),
31617
+ renderTriBool("validation", opts.validation),
31618
+ ...renderTrailingTokens(opts)
31619
+ ];
31620
+ return compose("synth", tokens);
31621
+ };
31622
+ var renderCdkWatch = (opts) => {
31623
+ const tokens = [
31624
+ ...renderGlobalTokens(opts),
31625
+ // Watch-specific flags
31626
+ ...renderArray("build-exclude", opts.buildExclude),
31627
+ renderValue("change-set-name", opts.changeSetName),
31628
+ renderValue("concurrency", opts.concurrency),
31629
+ renderTriBool("exclusively", opts.exclusively),
31630
+ renderTriBool("force", opts.force),
31631
+ renderTriBool("hotswap", opts.hotswap),
31632
+ renderTriBool("hotswap-fallback", opts.hotswapFallback),
31633
+ renderTriBool("logs", opts.logs),
31634
+ renderValue("progress", opts.progress),
31635
+ renderTriBool("rollback", opts.rollback),
31636
+ renderValue("toolkit-stack-name", opts.toolkitStackName),
31637
+ ...renderTrailingTokens(opts)
31638
+ ];
31639
+ return compose("watch", tokens);
31640
+ };
31641
+ var renderCdkDestroy = (opts) => {
31642
+ const tokens = [
31643
+ ...renderGlobalTokens(opts),
31644
+ // Destroy-specific flags
31645
+ renderTriBool("all", opts.all),
31646
+ renderValue("concurrency", opts.concurrency),
31647
+ renderTriBool("exclusively", opts.exclusively),
31648
+ renderTriBool("force", opts.force),
31649
+ ...renderTrailingTokens(opts)
31650
+ ];
31651
+ return compose("destroy", tokens);
31652
+ };
31653
+ var renderCdkDiff = (opts) => {
31654
+ const tokens = [
31655
+ ...renderGlobalTokens(opts),
31656
+ // Diff-specific flags
31657
+ renderTriBool("change-set", opts.changeSet),
31658
+ renderValue("context-lines", opts.contextLines),
31659
+ renderTriBool("exclusively", opts.exclusively),
31660
+ renderTriBool("fail", opts.fail),
31661
+ renderValue("method", opts.method),
31662
+ renderTriBool("processed", opts.processed),
31663
+ renderTriBool("quiet", opts.quiet),
31664
+ renderTriBool("security-only", opts.securityOnly),
31665
+ renderValue("template", opts.template),
31666
+ ...renderTrailingTokens(opts)
31667
+ ];
31668
+ return compose("diff", tokens);
31669
+ };
31670
+ var renderCdkBootstrap = (opts) => {
31671
+ const tokens = [
31672
+ ...renderGlobalTokens(opts),
31673
+ // Bootstrap-specific flags
31674
+ renderValue("bootstrap-bucket-name", opts.bootstrapBucketName),
31675
+ renderTriBool("bootstrap-customer-key", opts.bootstrapCustomerKey),
31676
+ renderValue("bootstrap-kms-key-id", opts.bootstrapKmsKeyId),
31677
+ ...renderArray(
31678
+ "cloudformation-execution-policies",
31679
+ opts.cloudformationExecutionPolicies
31680
+ ),
31681
+ renderValue("custom-permissions-boundary", opts.customPermissionsBoundary),
31682
+ renderTriBool(
31683
+ "example-permissions-boundary",
31684
+ opts.examplePermissionsBoundary
31685
+ ),
31686
+ renderTriBool("execute", opts.execute),
31687
+ renderTriBool("force", opts.force),
31688
+ renderTriBool("previous-parameters", opts.previousParameters),
31689
+ renderTriBool(
31690
+ "public-access-block-configuration",
31691
+ opts.publicAccessBlockConfiguration
31692
+ ),
31693
+ renderValue("qualifier", opts.qualifier),
31694
+ renderTriBool("show-template", opts.showTemplate),
31695
+ ...renderRecord("tags", opts.tags),
31696
+ renderValue("template", opts.template),
31697
+ renderTriBool("termination-protection", opts.terminationProtection),
31698
+ renderValue("toolkit-stack-name", opts.toolkitStackName),
31699
+ ...renderArray("trust", opts.trust),
31700
+ ...renderArray("trust-for-lookup", opts.trustForLookup),
31701
+ ...renderTrailingTokens(opts)
31702
+ ];
31703
+ return compose("bootstrap", tokens);
31704
+ };
31705
+ var renderCdkList = (opts) => {
31706
+ const tokens = [
31707
+ ...renderGlobalTokens(opts),
31708
+ // List-specific flags
31709
+ renderTriBool("long", opts.long),
31710
+ renderTriBool("show-dependencies", opts.showDependencies),
31711
+ ...renderTrailingTokens(opts)
31712
+ ];
31713
+ return compose("list", tokens);
31714
+ };
31715
+ var renderLogicalIds = (values) => {
31716
+ if (!values || values.length === 0) {
31717
+ return [];
31718
+ }
31719
+ return values.map((id) => `"${id}"`);
31720
+ };
31721
+ var renderCdkRollback = (opts) => {
31722
+ const tokens = [
31723
+ ...renderGlobalTokens(opts),
31724
+ // Rollback-specific flags
31725
+ renderTriBool("all", opts.all),
31726
+ renderTriBool("force", opts.force),
31727
+ ...renderArray("orphan", opts.orphan),
31728
+ renderValue("toolkit-stack-name", opts.toolkitStackName),
31729
+ renderTriBool("validate-bootstrap-version", opts.validateBootstrapVersion),
31730
+ ...renderTrailingTokens(opts)
31731
+ ];
31732
+ return compose("rollback", tokens);
31733
+ };
31734
+ var renderCdkImport = (opts) => {
31735
+ const tokens = [
31736
+ ...renderGlobalTokens(opts),
31737
+ // Import-specific flags
31738
+ renderValue("change-set-name", opts.changeSetName),
31739
+ renderTriBool("execute", opts.execute),
31740
+ renderTriBool("force", opts.force),
31741
+ renderValue("record-resource-mapping", opts.recordResourceMapping),
31742
+ renderValue("resource-mapping", opts.resourceMapping),
31743
+ renderTriBool("rollback", opts.rollback),
31744
+ renderValue("toolkit-stack-name", opts.toolkitStackName),
31745
+ ...renderTrailingTokens(opts)
31746
+ ];
31747
+ return compose("import", tokens);
31748
+ };
31749
+ var renderCdkGc = (opts) => {
31750
+ const tokens = [
31751
+ ...renderGlobalTokens(opts),
31752
+ // GC-specific flags
31753
+ renderValue("action", opts.action),
31754
+ renderValue("bootstrap-stack-name", opts.bootstrapStackName),
31755
+ renderTriBool("confirm", opts.confirm),
31756
+ renderValue("created-buffer-days", opts.createdBufferDays),
31757
+ renderValue("rollback-buffer-days", opts.rollbackBufferDays),
31758
+ renderValue("type", opts.type),
31759
+ ...renderTrailingTokens(opts)
31760
+ ];
31761
+ return compose("gc", tokens);
31762
+ };
31763
+ var renderCdkDrift = (opts) => {
31764
+ const tokens = [
31765
+ ...renderGlobalTokens(opts),
31766
+ // Drift-specific flags
31767
+ renderTriBool("fail", opts.fail),
31768
+ ...renderTrailingTokens(opts)
31769
+ ];
31770
+ return compose("drift", tokens);
31771
+ };
31772
+ var renderCdkRefactor = (opts) => {
31773
+ const tokens = [
31774
+ ...renderGlobalTokens(opts),
31775
+ // Refactor-specific flags
31776
+ ...renderArray("additional-stack-name", opts.additionalStackName),
31777
+ renderTriBool("dry-run", opts.dryRun),
31778
+ renderTriBool("force", opts.force),
31779
+ renderValue("override-file", opts.overrideFile),
31780
+ renderTriBool("revert", opts.revert),
31781
+ ...renderTrailingTokens(opts)
31782
+ ];
31783
+ return compose("refactor", tokens);
31784
+ };
31785
+ var renderCdkPublishAssets = (opts) => {
31786
+ const tokens = [
31787
+ ...renderGlobalTokens(opts),
31788
+ // Publish-assets-specific flags
31789
+ renderTriBool("all", opts.all),
31790
+ renderValue("concurrency", opts.concurrency),
31791
+ renderTriBool("exclusively", opts.exclusively),
31792
+ renderTriBool("force", opts.force),
31793
+ ...renderTrailingTokens(opts)
31794
+ ];
31795
+ return compose("publish-assets", tokens);
31796
+ };
31797
+ var renderCdkOrphan = (opts) => {
31798
+ const tokens = [
31799
+ ...renderGlobalTokens(opts),
31800
+ // Orphan has no command-specific flags; trailing tokens carry verbose
31801
+ // repetitions and stack patterns, and logical IDs render last.
31802
+ ...renderTrailingTokens(opts),
31803
+ ...renderLogicalIds(opts.logicalIds)
31804
+ ];
31805
+ return compose("orphan", tokens);
31806
+ };
31807
+ var renderPositional = (value) => {
31808
+ if (value === void 0) {
31809
+ return [];
31810
+ }
31811
+ return [`"${value}"`];
31812
+ };
31813
+ var renderCdkInit = (opts) => {
31814
+ const tokens = [
31815
+ ...renderGlobalTokens(opts),
31816
+ // Init-specific flags
31817
+ renderTriBool("generate-only", opts.generateOnly),
31818
+ renderValue("language", opts.language),
31819
+ renderTriBool("list", opts.list),
31820
+ // Positional template arg precedes the trailing tokens.
31821
+ ...renderPositional(opts.template),
31822
+ ...renderTrailingTokens(opts)
31823
+ ];
31824
+ return compose("init", tokens);
31825
+ };
31826
+ var renderCdkMigrate = (opts) => {
31827
+ const tokens = [
31828
+ ...renderGlobalTokens(opts),
31829
+ // Migrate-specific flags
31830
+ renderValue("account", opts.account),
31831
+ renderTriBool("compress", opts.compress),
31832
+ ...renderArray("filter", opts.filter),
31833
+ renderValue("from-path", opts.fromPath),
31834
+ renderTriBool("from-scan", opts.fromScan),
31835
+ renderTriBool("from-stack", opts.fromStack),
31836
+ renderValue("language", opts.language),
31837
+ renderValue("output-path", opts.outputPath),
31838
+ renderValue("region", opts.region),
31839
+ renderValue("stack-name", opts.stackName),
31840
+ ...renderTrailingTokens(opts)
31841
+ ];
31842
+ return compose("migrate", tokens);
31843
+ };
31844
+ var renderCdkContext = (opts) => {
31845
+ const tokens = [
31846
+ ...renderGlobalTokens(opts),
31847
+ // Context-specific flags
31848
+ renderTriBool("clear", opts.clear),
31849
+ renderTriBool("force", opts.force),
31850
+ renderValue("reset", opts.reset),
31851
+ ...renderTrailingTokens(opts)
31852
+ ];
31853
+ return compose("context", tokens);
31854
+ };
31855
+ var renderCdkMetadata = (opts) => {
31856
+ const tokens = [
31857
+ ...renderGlobalTokens(opts),
31858
+ // Positional stack arg precedes the trailing tokens.
31859
+ ...renderPositional(opts.stack),
31860
+ ...renderTrailingTokens(opts)
31861
+ ];
31862
+ return compose("metadata", tokens);
31863
+ };
31864
+ var renderCdkFlags = (opts) => {
31865
+ const tokens = [
31866
+ ...renderGlobalTokens(opts),
31867
+ // Flags-specific flags
31868
+ renderTriBool("all", opts.all),
31869
+ renderValue("concurrency", opts.concurrency),
31870
+ renderTriBool("default", opts.default),
31871
+ renderTriBool("interactive", opts.interactive),
31872
+ renderTriBool("recommended", opts.recommended),
31873
+ renderTriBool("safe", opts.safe),
31874
+ renderValue("set", opts.set),
31875
+ renderTriBool("unconfigured", opts.unconfigured),
31876
+ renderValue("value", opts.value),
31877
+ ...renderTrailingTokens(opts)
31878
+ ];
31879
+ return compose("flags", tokens);
31880
+ };
31881
+ var renderCdkAcknowledge = (opts) => {
31882
+ const tokens = [
31883
+ ...renderGlobalTokens(opts),
31884
+ // Positional notice id precedes the trailing tokens.
31885
+ ...renderPositional(opts.id),
31886
+ ...renderTrailingTokens(opts)
31887
+ ];
31888
+ return compose("acknowledge", tokens);
31889
+ };
31890
+ var renderCdkNotices = (opts) => {
31891
+ const tokens = [
31892
+ ...renderGlobalTokens(opts),
31893
+ ...renderTrailingTokens(opts)
31894
+ ];
31895
+ return compose("notices", tokens);
31896
+ };
31897
+ var renderCdkDoctor = (opts) => {
31898
+ const tokens = [
31899
+ ...renderGlobalTokens(opts),
31900
+ ...renderTrailingTokens(opts)
31901
+ ];
31902
+ return compose("doctor", tokens);
31903
+ };
31904
+ var renderCdkDocs = (opts) => {
31905
+ const tokens = [
31906
+ ...renderGlobalTokens(opts),
31907
+ ...renderTrailingTokens(opts)
31908
+ ];
31909
+ return compose("docs", tokens);
31910
+ };
31911
+
31912
+ // src/aws/aws-deployment-config.ts
31913
+ var AwsDeploymentConfig = class _AwsDeploymentConfig extends import_projen12.Component {
31243
31914
  constructor(project) {
31244
31915
  super(project);
31245
31916
  /**
@@ -31256,10 +31927,15 @@ var AwsDeploymentConfig = class _AwsDeploymentConfig extends import_projen11.Com
31256
31927
  ****************************************************************************/
31257
31928
  this.configureSynthTask = () => {
31258
31929
  this.project.tasks.tryFind("synth")?.reset(`rm -rf ${this.cdkOut}`);
31259
- this.project.tasks.tryFind("synth")?.exec(`cdk synth --output ${this.cdkOut}`, { env: this.env });
31930
+ this.project.tasks.tryFind("synth")?.exec(`cdk ${renderCdkSynth({ output: this.cdkOut })}`, {
31931
+ env: this.env
31932
+ });
31260
31933
  this.project.tasks.tryFind("synth:silent")?.reset(`rm -rf ${this.cdkOut}`);
31261
- this.project.tasks.tryFind("synth:silent")?.exec(`cdk synth -q --output ${this.cdkOut}`, { env: this.env });
31934
+ this.project.tasks.tryFind("synth:silent")?.exec(`cdk ${renderCdkSynth({ output: this.cdkOut, quiet: true })}`, {
31935
+ env: this.env
31936
+ });
31262
31937
  };
31938
+ this.cdkCli = CdkCli.of(project) || new CdkCli(project);
31263
31939
  this.env = {
31264
31940
  GIT_BRANCH_NAME: '$(echo "${GIT_BRANCH_NAME:-$(git branch --show-current)}")'
31265
31941
  };
@@ -31356,8 +32032,8 @@ var AwsDeploymentConfig = class _AwsDeploymentConfig extends import_projen11.Com
31356
32032
 
31357
32033
  // src/aws/aws-deployment-target.ts
31358
32034
  var import_utils10 = __toESM(require_lib());
31359
- var import_projen12 = require("projen");
31360
- var AwsDeploymentTarget = class _AwsDeploymentTarget extends import_projen12.Component {
32035
+ var import_projen13 = require("projen");
32036
+ var AwsDeploymentTarget = class _AwsDeploymentTarget extends import_projen13.Component {
31361
32037
  constructor(project, options) {
31362
32038
  super(project);
31363
32039
  /**
@@ -31384,8 +32060,15 @@ var AwsDeploymentTarget = class _AwsDeploymentTarget extends import_projen12.Com
31384
32060
  const deployTask = this.project.tasks.addTask(taskName, {
31385
32061
  env: this.awsDeploymentConfig.env
31386
32062
  });
32063
+ const deployOpts = this.awsDeploymentConfig.cdkCli.deployOptionsFor(this);
31387
32064
  deployTask.exec(
31388
- `cdk deploy --lookups=false --require-approval=never --profile=${this.localDeploymentConfig?.profile} --app=${this.awsDeploymentConfig.cdkOut} "${this.localDeploymentConfig?.stackPattern}"`
32065
+ `cdk ${renderCdkDeploy({
32066
+ ...deployOpts,
32067
+ lookups: false,
32068
+ profile: this.localDeploymentConfig?.profile,
32069
+ app: this.awsDeploymentConfig.cdkOut,
32070
+ stackPatterns: this.localDeploymentConfig?.stackPattern ? [this.localDeploymentConfig.stackPattern] : void 0
32071
+ })}`
31389
32072
  );
31390
32073
  }
31391
32074
  };
@@ -31412,16 +32095,31 @@ var AwsDeploymentTarget = class _AwsDeploymentTarget extends import_projen12.Com
31412
32095
  if (synthSilent) {
31413
32096
  watchTask.spawn(synthSilent);
31414
32097
  }
32098
+ const deployOpts = this.awsDeploymentConfig.cdkCli.deployOptionsFor(this);
31415
32099
  watchTask.exec(
31416
- `cdk deploy --lookups=false --require-approval=never --profile=${this.localDeploymentConfig?.profile} --app=${this.awsDeploymentConfig.cdkOut} "${this.localDeploymentConfig?.stackPattern}"`
32100
+ `cdk ${renderCdkDeploy({
32101
+ ...deployOpts,
32102
+ lookups: false,
32103
+ profile: this.localDeploymentConfig?.profile,
32104
+ app: this.awsDeploymentConfig.cdkOut,
32105
+ stackPatterns: this.localDeploymentConfig?.stackPattern ? [this.localDeploymentConfig.stackPattern] : void 0
32106
+ })}`
31417
32107
  );
32108
+ const watchOpts = this.awsDeploymentConfig.cdkCli.watchOptionsFor(this);
31418
32109
  watchTask.exec(
31419
- `cdk watch --lookups=false --require-approval=never --hotswap --profile=${this.localDeploymentConfig?.profile} "${this.localDeploymentConfig?.stackPattern}"`
32110
+ `cdk ${renderCdkWatch({
32111
+ ...watchOpts,
32112
+ lookups: false,
32113
+ hotswap: true,
32114
+ profile: this.localDeploymentConfig?.profile,
32115
+ stackPatterns: this.localDeploymentConfig?.stackPattern ? [this.localDeploymentConfig.stackPattern] : void 0
32116
+ })}`
31420
32117
  );
31421
32118
  }
31422
32119
  };
31423
32120
  this.account = options.account;
31424
32121
  this.region = options.region;
32122
+ this.cdkOptions = options.cdkOptions;
31425
32123
  this.awsStageType = options.awsStageType || import_utils10.AWS_STAGE_TYPE.DEV;
31426
32124
  const role = options.deploymentTargetRole ?? options.awsEnvironmentType ?? import_utils10.DEPLOYMENT_TARGET_ROLE.PRIMARY;
31427
32125
  this.deploymentTargetRole = role;
@@ -31471,6 +32169,53 @@ var AwsDeploymentTarget = class _AwsDeploymentTarget extends import_projen12.Com
31471
32169
  }
31472
32170
  };
31473
32171
 
32172
+ // src/aws/cdk-cli-enums.ts
32173
+ var CDK_REQUIRE_APPROVAL = {
32174
+ Never: "never",
32175
+ AnyChange: "any-change",
32176
+ Broadening: "broadening"
32177
+ };
32178
+ var CDK_DEPLOY_METHOD = {
32179
+ ChangeSet: "change-set",
32180
+ Direct: "direct",
32181
+ PrepareChangeSet: "prepare-change-set",
32182
+ ExecuteChangeSet: "execute-change-set"
32183
+ };
32184
+ var CDK_PROGRESS = {
32185
+ Bar: "bar",
32186
+ Events: "events"
32187
+ };
32188
+ var CDK_DIFF_METHOD = {
32189
+ Auto: "auto",
32190
+ ChangeSet: "change-set",
32191
+ Template: "template"
32192
+ };
32193
+ var CDK_GC_ACTION = {
32194
+ DeleteTagged: "delete-tagged",
32195
+ Full: "full",
32196
+ Print: "print",
32197
+ Tag: "tag"
32198
+ };
32199
+ var CDK_GC_TYPE = {
32200
+ All: "all",
32201
+ Ecr: "ecr",
32202
+ S3: "s3"
32203
+ };
32204
+ var CDK_INIT_TEMPLATE = {
32205
+ App: "app",
32206
+ Lib: "lib",
32207
+ SampleApp: "sample-app"
32208
+ };
32209
+ var CDK_INIT_LANGUAGE = {
32210
+ CSharp: "csharp",
32211
+ FSharp: "fsharp",
32212
+ Go: "go",
32213
+ Java: "java",
32214
+ JavaScript: "javascript",
32215
+ Python: "python",
32216
+ TypeScript: "typescript"
32217
+ };
32218
+
31474
32219
  // src/docs-sync/reference-extraction/extraction.ts
31475
32220
  var fs = __toESM(require("fs"));
31476
32221
  var path2 = __toESM(require("path"));
@@ -33036,12 +33781,12 @@ var VERSION_KEYS_SKIP = [
33036
33781
 
33037
33782
  // src/jsii/jsii-faker.ts
33038
33783
  var spec = __toESM(require("@jsii/spec"));
33039
- var import_projen13 = require("projen");
33784
+ var import_projen14 = require("projen");
33040
33785
  var ProjenBaseFqn = {
33041
33786
  TYPESCRIPT_PROJECT: "projen.typescript.TypeScriptProject",
33042
33787
  TYPESCRIPT_PROJECT_OPTIONS: "projen.typescript.TypeScriptProjectOptions"
33043
33788
  };
33044
- var JsiiFaker = class _JsiiFaker extends import_projen13.Component {
33789
+ var JsiiFaker = class _JsiiFaker extends import_projen14.Component {
33045
33790
  constructor(project) {
33046
33791
  super(project);
33047
33792
  this.project = project;
@@ -33052,7 +33797,7 @@ var JsiiFaker = class _JsiiFaker extends import_projen13.Component {
33052
33797
  };
33053
33798
  };
33054
33799
  this._assemblyName = this.project.package.packageName;
33055
- new import_projen13.JsonFile(project, ".jsii", {
33800
+ new import_projen14.JsonFile(project, ".jsii", {
33056
33801
  obj: () => {
33057
33802
  return {
33058
33803
  name: this._assemblyName,
@@ -33090,7 +33835,7 @@ var JsiiFaker = class _JsiiFaker extends import_projen13.Component {
33090
33835
  };
33091
33836
 
33092
33837
  // src/projects/add-playwright.ts
33093
- var import_projen14 = require("projen");
33838
+ var import_projen15 = require("projen");
33094
33839
  function addPlaywright(project) {
33095
33840
  project.addDevDeps("@playwright/test");
33096
33841
  project.tasks.addTask("e2e:install", {
@@ -33113,7 +33858,7 @@ function addPlaywright(project) {
33113
33858
  project.setScript("e2e", "npx projen e2e");
33114
33859
  project.setScript("e2e:ui", "npx projen e2e:ui");
33115
33860
  project.setScript("e2e:report", "npx projen e2e:report");
33116
- new import_projen14.SampleFile(project, "playwright.config.ts", {
33861
+ new import_projen15.SampleFile(project, "playwright.config.ts", {
33117
33862
  contents: `import { defineConfig, devices } from '@playwright/test';
33118
33863
 
33119
33864
  export default defineConfig({
@@ -33131,7 +33876,7 @@ export default defineConfig({
33131
33876
  }
33132
33877
 
33133
33878
  // src/projects/add-storybook.ts
33134
- var import_projen15 = require("projen");
33879
+ var import_projen16 = require("projen");
33135
33880
  function addStorybook(project, options = {}) {
33136
33881
  const withDocs = options.withDocs ?? true;
33137
33882
  project.addDevDeps(
@@ -33150,7 +33895,7 @@ function addStorybook(project, options = {}) {
33150
33895
  });
33151
33896
  project.setScript("storybook", "npx projen storybook");
33152
33897
  project.setScript("build-storybook", "npx projen build-storybook");
33153
- new import_projen15.SampleFile(project, ".storybook/main.ts", {
33898
+ new import_projen16.SampleFile(project, ".storybook/main.ts", {
33154
33899
  contents: `import type { StorybookConfig } from '@storybook/react-vite';
33155
33900
 
33156
33901
  const config: StorybookConfig = {
@@ -33161,7 +33906,7 @@ const config: StorybookConfig = {
33161
33906
  export default config;
33162
33907
  `
33163
33908
  });
33164
- new import_projen15.SampleFile(project, ".storybook/preview.ts", {
33909
+ new import_projen16.SampleFile(project, ".storybook/preview.ts", {
33165
33910
  contents: `import '../src/index.css';
33166
33911
  const preview = { parameters: { controls: { expanded: true } } };
33167
33912
  export default preview;
@@ -33170,7 +33915,7 @@ export default preview;
33170
33915
  }
33171
33916
 
33172
33917
  // src/projects/astro-project.ts
33173
- var import_projen23 = require("projen");
33918
+ var import_projen24 = require("projen");
33174
33919
  var import_ts_deepmerge3 = require("ts-deepmerge");
33175
33920
 
33176
33921
  // src/projects/monorepo-layout.ts
@@ -33318,7 +34063,7 @@ function resolveReactViteSiteProjectOutdir(packageName) {
33318
34063
  }
33319
34064
 
33320
34065
  // src/projects/typescript-project.ts
33321
- var import_projen22 = require("projen");
34066
+ var import_projen23 = require("projen");
33322
34067
  var import_javascript4 = require("projen/lib/javascript");
33323
34068
  var import_release = require("projen/lib/release");
33324
34069
  var import_ts_deepmerge2 = require("ts-deepmerge");
@@ -33330,9 +34075,9 @@ var import_typescript3 = require("projen/lib/typescript");
33330
34075
  var import_ts_deepmerge = require("ts-deepmerge");
33331
34076
 
33332
34077
  // src/projects/nvmrc.ts
33333
- var import_projen16 = require("projen");
34078
+ var import_projen17 = require("projen");
33334
34079
  var import_textfile5 = require("projen/lib/textfile");
33335
- var Nvmrc = class extends import_projen16.Component {
34080
+ var Nvmrc = class extends import_projen17.Component {
33336
34081
  constructor(project) {
33337
34082
  super(project);
33338
34083
  new import_textfile5.TextFile(project, ".nvmrc", {
@@ -33345,8 +34090,8 @@ var Nvmrc = class extends import_projen16.Component {
33345
34090
  };
33346
34091
 
33347
34092
  // src/tasks/reset-task.ts
33348
- var import_projen17 = require("projen");
33349
- var ResetTask = class _ResetTask extends import_projen17.Component {
34093
+ var import_projen18 = require("projen");
34094
+ var ResetTask = class _ResetTask extends import_projen18.Component {
33350
34095
  constructor(project, options = {}) {
33351
34096
  super(project);
33352
34097
  this.project = project;
@@ -33419,12 +34164,12 @@ var ResetTask = class _ResetTask extends import_projen17.Component {
33419
34164
  };
33420
34165
 
33421
34166
  // src/vscode/vscode.ts
33422
- var import_projen18 = require("projen");
33423
- var VSCodeConfig = class extends import_projen18.Component {
34167
+ var import_projen19 = require("projen");
34168
+ var VSCodeConfig = class extends import_projen19.Component {
33424
34169
  constructor(project) {
33425
34170
  super(project);
33426
- const vsConfig = new import_projen18.vscode.VsCode(project);
33427
- const vsSettings = new import_projen18.vscode.VsCodeSettings(vsConfig);
34171
+ const vsConfig = new import_projen19.vscode.VsCode(project);
34172
+ const vsSettings = new import_projen19.vscode.VsCodeSettings(vsConfig);
33428
34173
  vsSettings.addSetting("editor.tabSize", 2);
33429
34174
  vsSettings.addSetting("editor.detectIndentation", false);
33430
34175
  vsSettings.addSetting("editor.bracketPairColorization.enabled", true);
@@ -33704,7 +34449,7 @@ function patchStepArray2(steps, pinned) {
33704
34449
  }
33705
34450
 
33706
34451
  // src/workflows/sync-labels.ts
33707
- var import_projen19 = require("projen");
34452
+ var import_projen20 = require("projen");
33708
34453
  var import_workflows_model4 = require("projen/lib/github/workflows-model");
33709
34454
  var DEFAULT_STATUS_LABELS = [
33710
34455
  {
@@ -33912,10 +34657,10 @@ ${offenders}`
33912
34657
  }
33913
34658
  });
33914
34659
  }
33915
- var LabelsFile = class extends import_projen19.Component {
34660
+ var LabelsFile = class extends import_projen20.Component {
33916
34661
  constructor(project, labels) {
33917
34662
  super(project);
33918
- new import_projen19.YamlFile(project, LABELS_CONFIG_PATH, {
34663
+ new import_projen20.YamlFile(project, LABELS_CONFIG_PATH, {
33919
34664
  obj: labels.map((l) => ({
33920
34665
  name: l.name,
33921
34666
  color: l.color,
@@ -34308,11 +35053,11 @@ var MonorepoProject = class extends import_typescript3.TypeScriptAppProject {
34308
35053
  };
34309
35054
 
34310
35055
  // src/typescript/tsdoc-config.ts
34311
- var import_projen20 = require("projen");
35056
+ var import_projen21 = require("projen");
34312
35057
  var STANDARD_MODIFIER_TAGS = ["@default"];
34313
35058
  var STANDARD_INLINE_TAGS = ["@code"];
34314
35059
  var ALWAYS_ON_SCOPES = ["@codedrifters"];
34315
- var TsdocConfig = class _TsdocConfig extends import_projen20.Component {
35060
+ var TsdocConfig = class _TsdocConfig extends import_projen21.Component {
34316
35061
  /**
34317
35062
  * Derive a workspace scope from a scoped package name (`@scope/name`).
34318
35063
  * Returns `undefined` when the name is unscoped.
@@ -34357,7 +35102,7 @@ var TsdocConfig = class _TsdocConfig extends import_projen20.Component {
34357
35102
  allowMultiple: true
34358
35103
  }))
34359
35104
  ].sort((a, b) => a.tagName.localeCompare(b.tagName));
34360
- new import_projen20.JsonFile(project, "tsdoc.json", {
35105
+ new import_projen21.JsonFile(project, "tsdoc.json", {
34361
35106
  marker: false,
34362
35107
  obj: {
34363
35108
  $schema: "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
@@ -34370,9 +35115,9 @@ var TsdocConfig = class _TsdocConfig extends import_projen20.Component {
34370
35115
 
34371
35116
  // src/typescript/typescript-config.ts
34372
35117
  var import_node_path2 = require("path");
34373
- var import_projen21 = require("projen");
35118
+ var import_projen22 = require("projen");
34374
35119
  var import_path2 = require("projen/lib/util/path");
34375
- var TypeScriptConfig = class extends import_projen21.Component {
35120
+ var TypeScriptConfig = class extends import_projen22.Component {
34376
35121
  constructor(project) {
34377
35122
  super(project);
34378
35123
  let tsPaths = {};
@@ -34403,7 +35148,7 @@ var TestRunner = {
34403
35148
  JEST: "jest",
34404
35149
  VITEST: "vitest"
34405
35150
  };
34406
- var TypeScriptProject = class extends import_projen22.typescript.TypeScriptProject {
35151
+ var TypeScriptProject = class extends import_projen23.typescript.TypeScriptProject {
34407
35152
  constructor(userOptions) {
34408
35153
  if (!(userOptions.parent instanceof MonorepoProject)) {
34409
35154
  throw new Error(
@@ -34725,10 +35470,10 @@ var AstroProject = class extends TypeScriptProject {
34725
35470
  adapter: options.adapter
34726
35471
  });
34727
35472
  if (options.sampleCode === true) {
34728
- new import_projen23.SampleFile(this, "src/pages/index.astro", {
35473
+ new import_projen24.SampleFile(this, "src/pages/index.astro", {
34729
35474
  contents: DEFAULT_INDEX_ASTRO
34730
35475
  });
34731
- new import_projen23.SampleFile(this, "public/favicon.svg", {
35476
+ new import_projen24.SampleFile(this, "public/favicon.svg", {
34732
35477
  contents: DEFAULT_FAVICON_SVG
34733
35478
  });
34734
35479
  }
@@ -34753,19 +35498,19 @@ var DEFAULT_FAVICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0
34753
35498
  `;
34754
35499
 
34755
35500
  // src/projects/aws-cdk-project.ts
34756
- var import_projen26 = require("projen");
35501
+ var import_projen27 = require("projen");
34757
35502
  var import_javascript5 = require("projen/lib/javascript");
34758
35503
  var import_release2 = require("projen/lib/release");
34759
35504
  var import_ts_deepmerge4 = require("ts-deepmerge");
34760
35505
 
34761
35506
  // src/workflows/aws-deploy-workflow.ts
34762
35507
  var import_utils11 = __toESM(require_lib());
34763
- var import_projen24 = require("projen");
35508
+ var import_projen25 = require("projen");
34764
35509
  var import_build = require("projen/lib/build");
34765
35510
  var import_github5 = require("projen/lib/github");
34766
35511
  var import_workflows_model5 = require("projen/lib/github/workflows-model");
34767
35512
  var PROD_DEPLOY_NAME = "prod-deploy";
34768
- var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen24.Component {
35513
+ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen25.Component {
34769
35514
  constructor(project, options = {}) {
34770
35515
  super(project);
34771
35516
  this.project = project;
@@ -34868,7 +35613,11 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen24.Compone
34868
35613
  */
34869
35614
  {
34870
35615
  name: `Deploy ${awsStageType}/${deploymentTargetRole}/${account}/${region}`,
34871
- run: `pnpm dlx aws-cdk deploy --no-rollback --require-approval=never --app=${rootCdkOut} "${stackPattern}"`
35616
+ run: `pnpm dlx aws-cdk ${renderCdkDeploy({
35617
+ ...awsDeploymentConfig.cdkCli.deployOptionsFor(target),
35618
+ app: rootCdkOut,
35619
+ stackPatterns: stackPattern ? [stackPattern] : void 0
35620
+ })}`
34872
35621
  }
34873
35622
  ];
34874
35623
  };
@@ -35029,7 +35778,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen24.Compone
35029
35778
  };
35030
35779
 
35031
35780
  // src/workflows/aws-teardown-workflow.ts
35032
- var import_projen25 = require("projen");
35781
+ var import_projen26 = require("projen");
35033
35782
  var import_github6 = require("projen/lib/github");
35034
35783
  var import_workflows_model6 = require("projen/lib/github/workflows-model");
35035
35784
  var DEFAULT_TEARDOWN_BRANCH_PATTERNS = [
@@ -35051,7 +35800,7 @@ var resolveBranchPatterns = (explicit, targets) => {
35051
35800
  }
35052
35801
  return [...DEFAULT_TEARDOWN_BRANCH_PATTERNS];
35053
35802
  };
35054
- var AwsTeardownWorkflow = class extends import_projen25.Component {
35803
+ var AwsTeardownWorkflow = class extends import_projen26.Component {
35055
35804
  constructor(rootProject, options) {
35056
35805
  super(rootProject);
35057
35806
  this.rootProject = rootProject;
@@ -35233,7 +35982,7 @@ var AwsTeardownWorkflow = class extends import_projen25.Component {
35233
35982
  };
35234
35983
 
35235
35984
  // src/projects/aws-cdk-project.ts
35236
- var AwsCdkProject = class extends import_projen26.awscdk.AwsCdkTypeScriptApp {
35985
+ var AwsCdkProject = class extends import_projen27.awscdk.AwsCdkTypeScriptApp {
35237
35986
  constructor(userOptions) {
35238
35987
  if (!(userOptions.parent instanceof MonorepoProject)) {
35239
35988
  throw new Error(
@@ -35430,7 +36179,7 @@ var AwsCdkProject = class extends import_projen26.awscdk.AwsCdkTypeScriptApp {
35430
36179
  };
35431
36180
 
35432
36181
  // src/projects/react-vite-site-project.ts
35433
- var import_projen27 = require("projen");
36182
+ var import_projen28 = require("projen");
35434
36183
  var import_ts_deepmerge5 = require("ts-deepmerge");
35435
36184
  var ReactViteSiteProject = class extends TypeScriptProject {
35436
36185
  constructor(userOptions) {
@@ -35469,7 +36218,7 @@ var ReactViteSiteProject = class extends TypeScriptProject {
35469
36218
  };
35470
36219
  super(options);
35471
36220
  this.package.addField("type", "module");
35472
- new import_projen27.TextFile(this, ".nvmrc", { lines: ["v24.11.0"] });
36221
+ new import_projen28.TextFile(this, ".nvmrc", { lines: ["v24.11.0"] });
35473
36222
  this.tsconfig?.file.addOverride("compilerOptions.target", "ES2020");
35474
36223
  this.tsconfig?.file.addOverride("compilerOptions.lib", [
35475
36224
  "ES2020",
@@ -35519,7 +36268,7 @@ var ReactViteSiteProject = class extends TypeScriptProject {
35519
36268
  "build",
35520
36269
  ".turbo"
35521
36270
  ]);
35522
- new import_projen27.SampleFile(this, "vite.config.ts", {
36271
+ new import_projen28.SampleFile(this, "vite.config.ts", {
35523
36272
  contents: `import { defineConfig } from 'vite';
35524
36273
  import react from '@vitejs/plugin-react';
35525
36274
  import tailwindcss from '@tailwindcss/vite';
@@ -35531,7 +36280,7 @@ export default defineConfig({
35531
36280
  });
35532
36281
  `
35533
36282
  });
35534
- new import_projen27.SampleFile(this, "src/vite-env.d.ts", {
36283
+ new import_projen28.SampleFile(this, "src/vite-env.d.ts", {
35535
36284
  contents: `/// <reference types="vite/client" />
35536
36285
 
35537
36286
  interface ImportMetaEnv {
@@ -35546,7 +36295,7 @@ interface ImportMeta {
35546
36295
  });
35547
36296
  if (options.testRunner !== TestRunner.JEST) {
35548
36297
  this.tryRemoveFile("vitest.config.ts");
35549
- new import_projen27.SampleFile(this, "vitest.config.ts", {
36298
+ new import_projen28.SampleFile(this, "vitest.config.ts", {
35550
36299
  contents: `import { defineConfig, mergeConfig } from 'vitest/config';
35551
36300
  import react from '@vitejs/plugin-react';
35552
36301
  import viteConfig from './vite.config';
@@ -35690,7 +36439,7 @@ export default mergeConfig(
35690
36439
  }
35691
36440
  if (userOptions.sampleCode === true) {
35692
36441
  const siteName = options.name;
35693
- new import_projen27.SampleFile(this, "index.html", {
36442
+ new import_projen28.SampleFile(this, "index.html", {
35694
36443
  contents: `<!doctype html>
35695
36444
  <html>
35696
36445
  <head>
@@ -35705,7 +36454,7 @@ export default mergeConfig(
35705
36454
  </html>
35706
36455
  `
35707
36456
  });
35708
- new import_projen27.SampleFile(this, "src/routes.tsx", {
36457
+ new import_projen28.SampleFile(this, "src/routes.tsx", {
35709
36458
  contents: `import { createBrowserRouter } from 'react-router-dom';
35710
36459
  import App from './App';
35711
36460
 
@@ -35714,7 +36463,7 @@ export const router = createBrowserRouter([
35714
36463
  ]);
35715
36464
  `
35716
36465
  });
35717
- new import_projen27.SampleFile(this, "src/main.tsx", {
36466
+ new import_projen28.SampleFile(this, "src/main.tsx", {
35718
36467
  contents: `import React from 'react';
35719
36468
  import ReactDOM from 'react-dom/client';
35720
36469
  import { RouterProvider } from 'react-router-dom';
@@ -35728,7 +36477,7 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
35728
36477
  );
35729
36478
  `
35730
36479
  });
35731
- new import_projen27.SampleFile(this, "src/App.tsx", {
36480
+ new import_projen28.SampleFile(this, "src/App.tsx", {
35732
36481
  contents: `export default function App() {
35733
36482
  return (
35734
36483
  <main className="p-4">
@@ -35738,11 +36487,11 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
35738
36487
  }
35739
36488
  `
35740
36489
  });
35741
- new import_projen27.SampleFile(this, "src/index.css", {
36490
+ new import_projen28.SampleFile(this, "src/index.css", {
35742
36491
  contents: `@import "tailwindcss";
35743
36492
  `
35744
36493
  });
35745
- new import_projen27.SampleFile(this, "src/setupTests.ts", {
36494
+ new import_projen28.SampleFile(this, "src/setupTests.ts", {
35746
36495
  contents: `import '@testing-library/jest-dom';
35747
36496
  `
35748
36497
  });
@@ -35751,7 +36500,7 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
35751
36500
  };
35752
36501
 
35753
36502
  // src/projects/starlight-project.ts
35754
- var import_projen28 = require("projen");
36503
+ var import_projen29 = require("projen");
35755
36504
  var STARLIGHT_ROLE = {
35756
36505
  DOCS: "docs",
35757
36506
  SITE: "site"
@@ -35793,10 +36542,10 @@ var StarlightProject = class extends AstroProject {
35793
36542
  turbo.compileTask.inputs.push("src/content/**");
35794
36543
  }
35795
36544
  if (userOptions.sampleContent === true) {
35796
- new import_projen28.SampleFile(this, "src/content/docs/index.mdx", {
36545
+ new import_projen29.SampleFile(this, "src/content/docs/index.mdx", {
35797
36546
  contents: DEFAULT_INDEX_MDX
35798
36547
  });
35799
- new import_projen28.SampleFile(this, "src/content.config.ts", {
36548
+ new import_projen29.SampleFile(this, "src/content.config.ts", {
35800
36549
  contents: DEFAULT_CONTENT_CONFIG_TS
35801
36550
  });
35802
36551
  }
@@ -35892,8 +36641,23 @@ export const collections = {
35892
36641
  AwsTeardownWorkflow,
35893
36642
  BUILT_IN_BUNDLES,
35894
36643
  BUNDLE_OWNERSHIP,
36644
+ CDK_BOOTSTRAP_DEFAULTS_BY_STAGE,
36645
+ CDK_DEPLOY_DEFAULTS_BY_STAGE,
36646
+ CDK_DEPLOY_METHOD,
36647
+ CDK_DESTROY_DEFAULTS_BY_STAGE,
36648
+ CDK_DIFF_DEFAULTS_BY_STAGE,
36649
+ CDK_DIFF_METHOD,
36650
+ CDK_GC_ACTION,
36651
+ CDK_GC_TYPE,
36652
+ CDK_INIT_LANGUAGE,
36653
+ CDK_INIT_TEMPLATE,
36654
+ CDK_PROGRESS,
36655
+ CDK_REQUIRE_APPROVAL,
36656
+ CDK_SYNTH_DEFAULTS_BY_STAGE,
36657
+ CDK_WATCH_DEFAULTS_BY_STAGE,
35895
36658
  CLAUDE_RULE_TARGET,
35896
36659
  COMPLETE_JOB_ID,
36660
+ CdkCli,
35897
36661
  DEFAULT_AC_THRESHOLDS,
35898
36662
  DEFAULT_AGENT_PATHS,
35899
36663
  DEFAULT_AGENT_TIERS,
@@ -36061,6 +36825,7 @@ export const collections = {
36061
36825
  labelsForPhase,
36062
36826
  maintenanceAuditBundle,
36063
36827
  meetingAnalysisBundle,
36828
+ mergeCdkOptions,
36064
36829
  orchestratorBundle,
36065
36830
  parseApiRollup,
36066
36831
  peopleProfileBundle,
@@ -36074,6 +36839,29 @@ export const collections = {
36074
36839
  regulatoryResearchBundle,
36075
36840
  renderAgentTierCaseStatement,
36076
36841
  renderAgentTierSection,
36842
+ renderCdkAcknowledge,
36843
+ renderCdkBootstrap,
36844
+ renderCdkContext,
36845
+ renderCdkDeploy,
36846
+ renderCdkDestroy,
36847
+ renderCdkDiff,
36848
+ renderCdkDocs,
36849
+ renderCdkDoctor,
36850
+ renderCdkDrift,
36851
+ renderCdkFlags,
36852
+ renderCdkGc,
36853
+ renderCdkImport,
36854
+ renderCdkInit,
36855
+ renderCdkList,
36856
+ renderCdkMetadata,
36857
+ renderCdkMigrate,
36858
+ renderCdkNotices,
36859
+ renderCdkOrphan,
36860
+ renderCdkPublishAssets,
36861
+ renderCdkRefactor,
36862
+ renderCdkRollback,
36863
+ renderCdkSynth,
36864
+ renderCdkWatch,
36077
36865
  renderCheckDocSamplesProcedure,
36078
36866
  renderCheckLinksProcedure,
36079
36867
  renderCustomDocSectionBlock,