@codedrifters/configulator 0.0.317 → 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,
@@ -16916,8 +16955,8 @@ var PnpmWorkspace = class _PnpmWorkspace extends import_projen.Component {
16916
16955
  * Get the pnpm workspace component of a project. If it does not exist,
16917
16956
  * return undefined.
16918
16957
  *
16919
- * @param project
16920
- * @returns
16958
+ * @param project - The project to query.
16959
+ * @returns The PnpmWorkspace component if present, otherwise undefined.
16921
16960
  */
16922
16961
  static of(project) {
16923
16962
  const isDefined = (c) => c instanceof _PnpmWorkspace;
@@ -25199,8 +25238,8 @@ var ProjectMetadata = class _ProjectMetadata extends import_projen2.Component {
25199
25238
  /**
25200
25239
  * Return the maintainer-seed addendum for the `project-context`
25201
25240
  * bundle, or an empty string when the root project either has no
25202
- * layout-enforcement opinion or has opted out (`layoutEnforcement:
25203
- * "off"`).
25241
+ * layout-enforcement opinion or has opted out
25242
+ * (`layoutEnforcement: "off"`).
25204
25243
  *
25205
25244
  * Uses duck-typing on the root project's `layoutEnforcement`
25206
25245
  * property to avoid a circular import with `MonorepoProject`. The
@@ -27960,7 +27999,7 @@ _TurboRepo.buildWorkflowOptions = (remoteCacheOptions) => {
27960
27999
  preBuildSteps: [
27961
28000
  {
27962
28001
  name: "AWS Creds for SSM",
27963
- uses: "aws-actions/configure-aws-credentials@v4",
28002
+ uses: "aws-actions/configure-aws-credentials@v6",
27964
28003
  with: {
27965
28004
  ["role-to-assume"]: remoteCacheOptions.oidcRole,
27966
28005
  ["aws-region"]: "us-east-1",
@@ -28373,7 +28412,7 @@ var VERSION = {
28373
28412
  */
28374
28413
  SHARP_VERSION: "0.34.5",
28375
28414
  /**
28376
- * Version of @astrojs/starlight to pin for StarlightProject scaffolding.
28415
+ * Version of `@astrojs/starlight` to pin for StarlightProject scaffolding.
28377
28416
  */
28378
28417
  STARLIGHT_VERSION: "0.39.2",
28379
28418
  /**
@@ -28381,7 +28420,7 @@ var VERSION = {
28381
28420
  */
28382
28421
  TURBO_VERSION: "2.9.14",
28383
28422
  /**
28384
- * Version of @types/node to use across all packages (pnpm catalog).
28423
+ * Version of `@types/node` to use across all packages (pnpm catalog).
28385
28424
  */
28386
28425
  TYPES_NODE_VERSION: "25.8.0",
28387
28426
  /**
@@ -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"));
@@ -31963,7 +32708,7 @@ var AuditCategory = {
31963
32708
  LinkFailures: "linkFailures",
31964
32709
  /**
31965
32710
  * Findings produced by the fenced-sample compilation check that
31966
- * flags ` ```ts ` / ` ```typescript ` / ` ```tsx ` blocks in the
32711
+ * flags `ts`, `typescript`, and `tsx` fenced code blocks in the
31967
32712
  * docs that fail `tsc`. Wired in by child issue #520.
31968
32713
  */
31969
32714
  SampleFailures: "sampleFailures"
@@ -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,
@@ -34032,7 +34777,7 @@ var MonorepoProject = class extends import_typescript3.TypeScriptAppProject {
34032
34777
  release: false,
34033
34778
  /**
34034
34779
  * Uppgrade dependencies automatically unless otherwise instructed.
34035
- * Exclude @codedrifters/configulator so the default upgrade task does not
34780
+ * Exclude `@codedrifters/configulator` so the default upgrade task does not
34036
34781
  * upgrade it (version is often managed in-repo or via a separate sync step).
34037
34782
  */
34038
34783
  depsUpgrade: true,
@@ -34308,15 +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");
34312
- var STANDARD_MODIFIER_TAGS = [
34313
- "@default",
34314
- "@defaultValue",
34315
- "@experimental",
34316
- "@internal"
34317
- ];
35056
+ var import_projen21 = require("projen");
35057
+ var STANDARD_MODIFIER_TAGS = ["@default"];
35058
+ var STANDARD_INLINE_TAGS = ["@code"];
34318
35059
  var ALWAYS_ON_SCOPES = ["@codedrifters"];
34319
- var TsdocConfig = class _TsdocConfig extends import_projen20.Component {
35060
+ var TsdocConfig = class _TsdocConfig extends import_projen21.Component {
34320
35061
  /**
34321
35062
  * Derive a workspace scope from a scoped package name (`@scope/name`).
34322
35063
  * Returns `undefined` when the name is unscoped.
@@ -34343,17 +35084,26 @@ var TsdocConfig = class _TsdocConfig extends import_projen20.Component {
34343
35084
  ...scopeFromName ? [scopeFromName] : [],
34344
35085
  ...options.workspaceScopes ?? []
34345
35086
  ]);
34346
- const tagSet = /* @__PURE__ */ new Set([
35087
+ const modifierTagSet = /* @__PURE__ */ new Set([
34347
35088
  ...STANDARD_MODIFIER_TAGS,
34348
35089
  ...Array.from(scopeSet),
34349
35090
  ...options.additionalModifierTags ?? []
34350
35091
  ]);
34351
- const tagDefinitions = Array.from(tagSet).sort((a, b) => a.localeCompare(b)).map((tagName) => ({
34352
- tagName,
34353
- syntaxKind: "modifier",
34354
- allowMultiple: true
34355
- }));
34356
- new import_projen20.JsonFile(project, "tsdoc.json", {
35092
+ const inlineTagSet = /* @__PURE__ */ new Set([...STANDARD_INLINE_TAGS]);
35093
+ const tagDefinitions = [
35094
+ ...Array.from(modifierTagSet).map((tagName) => ({
35095
+ tagName,
35096
+ syntaxKind: "modifier",
35097
+ allowMultiple: true
35098
+ })),
35099
+ ...Array.from(inlineTagSet).map((tagName) => ({
35100
+ tagName,
35101
+ syntaxKind: "inline",
35102
+ allowMultiple: true
35103
+ }))
35104
+ ].sort((a, b) => a.tagName.localeCompare(b.tagName));
35105
+ new import_projen21.JsonFile(project, "tsdoc.json", {
35106
+ marker: false,
34357
35107
  obj: {
34358
35108
  $schema: "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
34359
35109
  tagDefinitions
@@ -34365,9 +35115,9 @@ var TsdocConfig = class _TsdocConfig extends import_projen20.Component {
34365
35115
 
34366
35116
  // src/typescript/typescript-config.ts
34367
35117
  var import_node_path2 = require("path");
34368
- var import_projen21 = require("projen");
35118
+ var import_projen22 = require("projen");
34369
35119
  var import_path2 = require("projen/lib/util/path");
34370
- var TypeScriptConfig = class extends import_projen21.Component {
35120
+ var TypeScriptConfig = class extends import_projen22.Component {
34371
35121
  constructor(project) {
34372
35122
  super(project);
34373
35123
  let tsPaths = {};
@@ -34398,7 +35148,7 @@ var TestRunner = {
34398
35148
  JEST: "jest",
34399
35149
  VITEST: "vitest"
34400
35150
  };
34401
- var TypeScriptProject = class extends import_projen22.typescript.TypeScriptProject {
35151
+ var TypeScriptProject = class extends import_projen23.typescript.TypeScriptProject {
34402
35152
  constructor(userOptions) {
34403
35153
  if (!(userOptions.parent instanceof MonorepoProject)) {
34404
35154
  throw new Error(
@@ -34720,10 +35470,10 @@ var AstroProject = class extends TypeScriptProject {
34720
35470
  adapter: options.adapter
34721
35471
  });
34722
35472
  if (options.sampleCode === true) {
34723
- new import_projen23.SampleFile(this, "src/pages/index.astro", {
35473
+ new import_projen24.SampleFile(this, "src/pages/index.astro", {
34724
35474
  contents: DEFAULT_INDEX_ASTRO
34725
35475
  });
34726
- new import_projen23.SampleFile(this, "public/favicon.svg", {
35476
+ new import_projen24.SampleFile(this, "public/favicon.svg", {
34727
35477
  contents: DEFAULT_FAVICON_SVG
34728
35478
  });
34729
35479
  }
@@ -34748,19 +35498,19 @@ var DEFAULT_FAVICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0
34748
35498
  `;
34749
35499
 
34750
35500
  // src/projects/aws-cdk-project.ts
34751
- var import_projen26 = require("projen");
35501
+ var import_projen27 = require("projen");
34752
35502
  var import_javascript5 = require("projen/lib/javascript");
34753
35503
  var import_release2 = require("projen/lib/release");
34754
35504
  var import_ts_deepmerge4 = require("ts-deepmerge");
34755
35505
 
34756
35506
  // src/workflows/aws-deploy-workflow.ts
34757
35507
  var import_utils11 = __toESM(require_lib());
34758
- var import_projen24 = require("projen");
35508
+ var import_projen25 = require("projen");
34759
35509
  var import_build = require("projen/lib/build");
34760
35510
  var import_github5 = require("projen/lib/github");
34761
35511
  var import_workflows_model5 = require("projen/lib/github/workflows-model");
34762
35512
  var PROD_DEPLOY_NAME = "prod-deploy";
34763
- var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen24.Component {
35513
+ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen25.Component {
34764
35514
  constructor(project, options = {}) {
34765
35515
  super(project);
34766
35516
  this.project = project;
@@ -34803,7 +35553,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen24.Compone
34803
35553
  * Handles both exact matches (e.g., "main") and glob patterns (e.g., "feature/*").
34804
35554
  * Also allows workflow_dispatch (manual runs) to proceed.
34805
35555
  *
34806
- * @param branches Array of GitBranch objects with branch patterns
35556
+ * @param branches - Array of GitBranch objects with branch patterns
34807
35557
  * @returns Condition string or empty string if no branches provided
34808
35558
  */
34809
35559
  this.buildBranchFilterCondition = (branches) => {
@@ -34850,7 +35600,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen24.Compone
34850
35600
  */
34851
35601
  {
34852
35602
  name: `AWS Creds ${awsStageType}/${deploymentTargetRole}/${account}/${region}`,
34853
- uses: "aws-actions/configure-aws-credentials@v4",
35603
+ uses: "aws-actions/configure-aws-credentials@v6",
34854
35604
  with: {
34855
35605
  "role-to-assume": roleArn,
34856
35606
  "aws-region": region,
@@ -34863,7 +35613,11 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen24.Compone
34863
35613
  */
34864
35614
  {
34865
35615
  name: `Deploy ${awsStageType}/${deploymentTargetRole}/${account}/${region}`,
34866
- 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
+ })}`
34867
35621
  }
34868
35622
  ];
34869
35623
  };
@@ -35024,7 +35778,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen24.Compone
35024
35778
  };
35025
35779
 
35026
35780
  // src/workflows/aws-teardown-workflow.ts
35027
- var import_projen25 = require("projen");
35781
+ var import_projen26 = require("projen");
35028
35782
  var import_github6 = require("projen/lib/github");
35029
35783
  var import_workflows_model6 = require("projen/lib/github/workflows-model");
35030
35784
  var DEFAULT_TEARDOWN_BRANCH_PATTERNS = [
@@ -35046,7 +35800,7 @@ var resolveBranchPatterns = (explicit, targets) => {
35046
35800
  }
35047
35801
  return [...DEFAULT_TEARDOWN_BRANCH_PATTERNS];
35048
35802
  };
35049
- var AwsTeardownWorkflow = class extends import_projen25.Component {
35803
+ var AwsTeardownWorkflow = class extends import_projen26.Component {
35050
35804
  constructor(rootProject, options) {
35051
35805
  super(rootProject);
35052
35806
  this.rootProject = rootProject;
@@ -35228,7 +35982,7 @@ var AwsTeardownWorkflow = class extends import_projen25.Component {
35228
35982
  };
35229
35983
 
35230
35984
  // src/projects/aws-cdk-project.ts
35231
- var AwsCdkProject = class extends import_projen26.awscdk.AwsCdkTypeScriptApp {
35985
+ var AwsCdkProject = class extends import_projen27.awscdk.AwsCdkTypeScriptApp {
35232
35986
  constructor(userOptions) {
35233
35987
  if (!(userOptions.parent instanceof MonorepoProject)) {
35234
35988
  throw new Error(
@@ -35425,7 +36179,7 @@ var AwsCdkProject = class extends import_projen26.awscdk.AwsCdkTypeScriptApp {
35425
36179
  };
35426
36180
 
35427
36181
  // src/projects/react-vite-site-project.ts
35428
- var import_projen27 = require("projen");
36182
+ var import_projen28 = require("projen");
35429
36183
  var import_ts_deepmerge5 = require("ts-deepmerge");
35430
36184
  var ReactViteSiteProject = class extends TypeScriptProject {
35431
36185
  constructor(userOptions) {
@@ -35464,7 +36218,7 @@ var ReactViteSiteProject = class extends TypeScriptProject {
35464
36218
  };
35465
36219
  super(options);
35466
36220
  this.package.addField("type", "module");
35467
- new import_projen27.TextFile(this, ".nvmrc", { lines: ["v24.11.0"] });
36221
+ new import_projen28.TextFile(this, ".nvmrc", { lines: ["v24.11.0"] });
35468
36222
  this.tsconfig?.file.addOverride("compilerOptions.target", "ES2020");
35469
36223
  this.tsconfig?.file.addOverride("compilerOptions.lib", [
35470
36224
  "ES2020",
@@ -35514,7 +36268,7 @@ var ReactViteSiteProject = class extends TypeScriptProject {
35514
36268
  "build",
35515
36269
  ".turbo"
35516
36270
  ]);
35517
- new import_projen27.SampleFile(this, "vite.config.ts", {
36271
+ new import_projen28.SampleFile(this, "vite.config.ts", {
35518
36272
  contents: `import { defineConfig } from 'vite';
35519
36273
  import react from '@vitejs/plugin-react';
35520
36274
  import tailwindcss from '@tailwindcss/vite';
@@ -35526,7 +36280,7 @@ export default defineConfig({
35526
36280
  });
35527
36281
  `
35528
36282
  });
35529
- new import_projen27.SampleFile(this, "src/vite-env.d.ts", {
36283
+ new import_projen28.SampleFile(this, "src/vite-env.d.ts", {
35530
36284
  contents: `/// <reference types="vite/client" />
35531
36285
 
35532
36286
  interface ImportMetaEnv {
@@ -35541,7 +36295,7 @@ interface ImportMeta {
35541
36295
  });
35542
36296
  if (options.testRunner !== TestRunner.JEST) {
35543
36297
  this.tryRemoveFile("vitest.config.ts");
35544
- new import_projen27.SampleFile(this, "vitest.config.ts", {
36298
+ new import_projen28.SampleFile(this, "vitest.config.ts", {
35545
36299
  contents: `import { defineConfig, mergeConfig } from 'vitest/config';
35546
36300
  import react from '@vitejs/plugin-react';
35547
36301
  import viteConfig from './vite.config';
@@ -35685,7 +36439,7 @@ export default mergeConfig(
35685
36439
  }
35686
36440
  if (userOptions.sampleCode === true) {
35687
36441
  const siteName = options.name;
35688
- new import_projen27.SampleFile(this, "index.html", {
36442
+ new import_projen28.SampleFile(this, "index.html", {
35689
36443
  contents: `<!doctype html>
35690
36444
  <html>
35691
36445
  <head>
@@ -35700,7 +36454,7 @@ export default mergeConfig(
35700
36454
  </html>
35701
36455
  `
35702
36456
  });
35703
- new import_projen27.SampleFile(this, "src/routes.tsx", {
36457
+ new import_projen28.SampleFile(this, "src/routes.tsx", {
35704
36458
  contents: `import { createBrowserRouter } from 'react-router-dom';
35705
36459
  import App from './App';
35706
36460
 
@@ -35709,7 +36463,7 @@ export const router = createBrowserRouter([
35709
36463
  ]);
35710
36464
  `
35711
36465
  });
35712
- new import_projen27.SampleFile(this, "src/main.tsx", {
36466
+ new import_projen28.SampleFile(this, "src/main.tsx", {
35713
36467
  contents: `import React from 'react';
35714
36468
  import ReactDOM from 'react-dom/client';
35715
36469
  import { RouterProvider } from 'react-router-dom';
@@ -35723,7 +36477,7 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
35723
36477
  );
35724
36478
  `
35725
36479
  });
35726
- new import_projen27.SampleFile(this, "src/App.tsx", {
36480
+ new import_projen28.SampleFile(this, "src/App.tsx", {
35727
36481
  contents: `export default function App() {
35728
36482
  return (
35729
36483
  <main className="p-4">
@@ -35733,11 +36487,11 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
35733
36487
  }
35734
36488
  `
35735
36489
  });
35736
- new import_projen27.SampleFile(this, "src/index.css", {
36490
+ new import_projen28.SampleFile(this, "src/index.css", {
35737
36491
  contents: `@import "tailwindcss";
35738
36492
  `
35739
36493
  });
35740
- new import_projen27.SampleFile(this, "src/setupTests.ts", {
36494
+ new import_projen28.SampleFile(this, "src/setupTests.ts", {
35741
36495
  contents: `import '@testing-library/jest-dom';
35742
36496
  `
35743
36497
  });
@@ -35746,7 +36500,7 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
35746
36500
  };
35747
36501
 
35748
36502
  // src/projects/starlight-project.ts
35749
- var import_projen28 = require("projen");
36503
+ var import_projen29 = require("projen");
35750
36504
  var STARLIGHT_ROLE = {
35751
36505
  DOCS: "docs",
35752
36506
  SITE: "site"
@@ -35788,10 +36542,10 @@ var StarlightProject = class extends AstroProject {
35788
36542
  turbo.compileTask.inputs.push("src/content/**");
35789
36543
  }
35790
36544
  if (userOptions.sampleContent === true) {
35791
- new import_projen28.SampleFile(this, "src/content/docs/index.mdx", {
36545
+ new import_projen29.SampleFile(this, "src/content/docs/index.mdx", {
35792
36546
  contents: DEFAULT_INDEX_MDX
35793
36547
  });
35794
- new import_projen28.SampleFile(this, "src/content.config.ts", {
36548
+ new import_projen29.SampleFile(this, "src/content.config.ts", {
35795
36549
  contents: DEFAULT_CONTENT_CONFIG_TS
35796
36550
  });
35797
36551
  }
@@ -35887,8 +36641,23 @@ export const collections = {
35887
36641
  AwsTeardownWorkflow,
35888
36642
  BUILT_IN_BUNDLES,
35889
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,
35890
36658
  CLAUDE_RULE_TARGET,
35891
36659
  COMPLETE_JOB_ID,
36660
+ CdkCli,
35892
36661
  DEFAULT_AC_THRESHOLDS,
35893
36662
  DEFAULT_AGENT_PATHS,
35894
36663
  DEFAULT_AGENT_TIERS,
@@ -36056,6 +36825,7 @@ export const collections = {
36056
36825
  labelsForPhase,
36057
36826
  maintenanceAuditBundle,
36058
36827
  meetingAnalysisBundle,
36828
+ mergeCdkOptions,
36059
36829
  orchestratorBundle,
36060
36830
  parseApiRollup,
36061
36831
  peopleProfileBundle,
@@ -36069,6 +36839,29 @@ export const collections = {
36069
36839
  regulatoryResearchBundle,
36070
36840
  renderAgentTierCaseStatement,
36071
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,
36072
36865
  renderCheckDocSamplesProcedure,
36073
36866
  renderCheckLinksProcedure,
36074
36867
  renderCustomDocSectionBlock,