@codedrifters/configulator 0.0.240 → 0.0.242

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.d.mts CHANGED
@@ -3597,6 +3597,37 @@ declare class ProjectMetadata extends Component {
3597
3597
  private autoDetectRepository;
3598
3598
  }
3599
3599
 
3600
+ /**
3601
+ * Resolve a sub-project's `outdir` from its package name.
3602
+ *
3603
+ * Given a scoped package name like `@codedrifters/foo`, returns
3604
+ * `<root>/@codedrifters/foo` where `<root>` comes from
3605
+ * {@link MONOREPO_LAYOUT}. The scope segment is preserved verbatim —
3606
+ * including the leading `@` — so the resulting path mirrors the npm
3607
+ * name exactly (e.g. `packages/@codedrifters/foo`).
3608
+ *
3609
+ * Throws when the package name is unscoped or empty. Callers must
3610
+ * either supply a scoped name or pass `outdir` explicitly.
3611
+ *
3612
+ * @param packageName - The npm package name. Typically sourced from
3613
+ * `userOptions.packageName ?? userOptions.name` — both are valid
3614
+ * inputs because projen itself falls back from `packageName` to
3615
+ * `name` when rendering `package.json`.
3616
+ * @param root - Which top-level monorepo folder to place the
3617
+ * sub-project under (e.g. `packages`, `apps`, `sites`).
3618
+ */
3619
+ declare function resolveOutdirFromPackageName(packageName: string | undefined, root: MonorepoLayoutRoot): string;
3620
+ /**
3621
+ * Convenience wrapper that resolves an `outdir` for a `TypeScriptProject`
3622
+ * under the canonical `packages/` root.
3623
+ */
3624
+ declare function resolveTypeScriptProjectOutdir(packageName: string | undefined): string;
3625
+ /**
3626
+ * Convenience wrapper that resolves an `outdir` for an `AwsCdkProject`
3627
+ * under the canonical `apps/` root.
3628
+ */
3629
+ declare function resolveAwsCdkProjectOutdir(packageName: string | undefined): string;
3630
+
3600
3631
  /**
3601
3632
  * A single Starlight social icon link.
3602
3633
  */
@@ -3738,4 +3769,4 @@ declare const COMPLETE_JOB_ID = "complete";
3738
3769
  */
3739
3770
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
3740
3771
 
3741
- export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, type AgentConfigOptions, type AgentModel, type AgentPlatform, type AgentPlatformOverrides, type AgentProcedure, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type ApproveMergeUpgradeOptions, AstroConfig, type AstroConfigOptions, type AstroIntegrationSpec, AstroOutput, AstroProject, type AstroProjectOptions, type AwsAccount, AwsCdkProject, type AwsCdkProjectOptions, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, AwsTeardownWorkflow, type AwsTeardownWorkflowOptions, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, type CiDeploymentConfig, type ClassTypeOptions, type ClaudeAutoModeConfig, type ClaudeHookAction, type ClaudeHookEntry, type ClaudeHooksConfig, type ClaudePermissionsConfig, type ClaudeRuleTarget, type ClaudeSandboxConfig, type ClaudeSettingsConfig, type CopilotHandoff, type CursorHookAction, type CursorHooksConfig, type CursorSettingsConfig, DEFAULT_PRIORITY_LABELS, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, type DeployWorkflowOptions, type DeploymentMetadata, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, type LabelDefinition, type LayoutEnforcement, type LayoutViolation, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, type McpServerConfig, type McpTransport, type MergeMethod, type MonorepoLayoutRoot, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PROD_DEPLOY_NAME, PnpmWorkspace, type PnpmWorkspaceOptions, ProjectMetadata, type ProjectMetadataOptions, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedProjectMetadata, type SlackMetadata, type StarlightEditLink, type StarlightLogo, StarlightProject, type StarlightProjectOptions, type StarlightSidebarItem, type StarlightSocialLink, type SyncLabelsOptions, type TemplateResolveResult, TestRunner, TurboRepo, type TurboRepoOptions, TurboRepoTask, type TurboRepoTaskOptions, TypeScriptConfig, TypeScriptProject, type TypeScriptProjectOptions, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, type VersionKey, Vitest, type VitestConfigOptions, type VitestOptions, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, awsCdkBundle, baseBundle, bcmWriterBundle, companyProfileBundle, formatLayoutViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveModelAlias, resolveTemplateVariables, slackBundle, softwareProfileBundle, turborepoBundle, typescriptBundle, validateMonorepoLayout, vitestBundle };
3772
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, type AgentConfigOptions, type AgentModel, type AgentPlatform, type AgentPlatformOverrides, type AgentProcedure, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type ApproveMergeUpgradeOptions, AstroConfig, type AstroConfigOptions, type AstroIntegrationSpec, AstroOutput, AstroProject, type AstroProjectOptions, type AwsAccount, AwsCdkProject, type AwsCdkProjectOptions, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, AwsTeardownWorkflow, type AwsTeardownWorkflowOptions, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, type CiDeploymentConfig, type ClassTypeOptions, type ClaudeAutoModeConfig, type ClaudeHookAction, type ClaudeHookEntry, type ClaudeHooksConfig, type ClaudePermissionsConfig, type ClaudeRuleTarget, type ClaudeSandboxConfig, type ClaudeSettingsConfig, type CopilotHandoff, type CursorHookAction, type CursorHooksConfig, type CursorSettingsConfig, DEFAULT_PRIORITY_LABELS, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, type DeployWorkflowOptions, type DeploymentMetadata, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, type LabelDefinition, type LayoutEnforcement, type LayoutViolation, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, type McpServerConfig, type McpTransport, type MergeMethod, type MonorepoLayoutRoot, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PROD_DEPLOY_NAME, PnpmWorkspace, type PnpmWorkspaceOptions, ProjectMetadata, type ProjectMetadataOptions, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedProjectMetadata, type SlackMetadata, type StarlightEditLink, type StarlightLogo, StarlightProject, type StarlightProjectOptions, type StarlightSidebarItem, type StarlightSocialLink, type SyncLabelsOptions, type TemplateResolveResult, TestRunner, TurboRepo, type TurboRepoOptions, TurboRepoTask, type TurboRepoTaskOptions, TypeScriptConfig, TypeScriptProject, type TypeScriptProjectOptions, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, type VersionKey, Vitest, type VitestConfigOptions, type VitestOptions, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, awsCdkBundle, baseBundle, bcmWriterBundle, companyProfileBundle, formatLayoutViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAwsCdkProjectOutdir, resolveModelAlias, resolveOutdirFromPackageName, resolveTemplateVariables, resolveTypeScriptProjectOutdir, slackBundle, softwareProfileBundle, turborepoBundle, typescriptBundle, validateMonorepoLayout, vitestBundle };
package/lib/index.d.ts CHANGED
@@ -3646,6 +3646,37 @@ declare class ProjectMetadata extends Component {
3646
3646
  private autoDetectRepository;
3647
3647
  }
3648
3648
 
3649
+ /**
3650
+ * Resolve a sub-project's `outdir` from its package name.
3651
+ *
3652
+ * Given a scoped package name like `@codedrifters/foo`, returns
3653
+ * `<root>/@codedrifters/foo` where `<root>` comes from
3654
+ * {@link MONOREPO_LAYOUT}. The scope segment is preserved verbatim —
3655
+ * including the leading `@` — so the resulting path mirrors the npm
3656
+ * name exactly (e.g. `packages/@codedrifters/foo`).
3657
+ *
3658
+ * Throws when the package name is unscoped or empty. Callers must
3659
+ * either supply a scoped name or pass `outdir` explicitly.
3660
+ *
3661
+ * @param packageName - The npm package name. Typically sourced from
3662
+ * `userOptions.packageName ?? userOptions.name` — both are valid
3663
+ * inputs because projen itself falls back from `packageName` to
3664
+ * `name` when rendering `package.json`.
3665
+ * @param root - Which top-level monorepo folder to place the
3666
+ * sub-project under (e.g. `packages`, `apps`, `sites`).
3667
+ */
3668
+ declare function resolveOutdirFromPackageName(packageName: string | undefined, root: MonorepoLayoutRoot): string;
3669
+ /**
3670
+ * Convenience wrapper that resolves an `outdir` for a `TypeScriptProject`
3671
+ * under the canonical `packages/` root.
3672
+ */
3673
+ declare function resolveTypeScriptProjectOutdir(packageName: string | undefined): string;
3674
+ /**
3675
+ * Convenience wrapper that resolves an `outdir` for an `AwsCdkProject`
3676
+ * under the canonical `apps/` root.
3677
+ */
3678
+ declare function resolveAwsCdkProjectOutdir(packageName: string | undefined): string;
3679
+
3649
3680
  /**
3650
3681
  * A single Starlight social icon link.
3651
3682
  */
@@ -3787,5 +3818,5 @@ declare const COMPLETE_JOB_ID = "complete";
3787
3818
  */
3788
3819
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
3789
3820
 
3790
- export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, AstroConfig, AstroOutput, AstroProject, AwsCdkProject, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, AwsTeardownWorkflow, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, DEFAULT_PRIORITY_LABELS, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, MonorepoProject, PROD_DEPLOY_NAME, PnpmWorkspace, ProjectMetadata, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, ResetTask, StarlightProject, TestRunner, TurboRepo, TurboRepoTask, TypeScriptConfig, TypeScriptProject, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, Vitest, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, awsCdkBundle, baseBundle, bcmWriterBundle, companyProfileBundle, formatLayoutViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveModelAlias, resolveTemplateVariables, slackBundle, softwareProfileBundle, turborepoBundle, typescriptBundle, validateMonorepoLayout, vitestBundle };
3821
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, AstroConfig, AstroOutput, AstroProject, AwsCdkProject, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, AwsTeardownWorkflow, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, DEFAULT_PRIORITY_LABELS, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, MonorepoProject, PROD_DEPLOY_NAME, PnpmWorkspace, ProjectMetadata, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, ResetTask, StarlightProject, TestRunner, TurboRepo, TurboRepoTask, TypeScriptConfig, TypeScriptProject, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, Vitest, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, awsCdkBundle, baseBundle, bcmWriterBundle, companyProfileBundle, formatLayoutViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAwsCdkProjectOutdir, resolveModelAlias, resolveOutdirFromPackageName, resolveTemplateVariables, resolveTypeScriptProjectOutdir, slackBundle, softwareProfileBundle, turborepoBundle, typescriptBundle, validateMonorepoLayout, vitestBundle };
3791
3822
  export type { AgentConfigOptions, AgentModel, AgentPlatform, AgentPlatformOverrides, AgentProcedure, AgentRule, AgentRuleBundle, AgentRuleScope, AgentSkill, AgentSubAgent, AgentSubAgentPlatformOverrides, ApproveMergeUpgradeOptions, AstroConfigOptions, AstroIntegrationSpec, AstroProjectOptions, AwsAccount, AwsCdkProjectOptions, AwsDeploymentTargetOptions, AwsLocalDeploymentConfig, AwsOrganization, AwsRegion, AwsTeardownWorkflowOptions, CiDeploymentConfig, ClassTypeOptions, ClaudeAutoModeConfig, ClaudeHookAction, ClaudeHookEntry, ClaudeHooksConfig, ClaudePermissionsConfig, ClaudeRuleTarget, ClaudeSandboxConfig, ClaudeSettingsConfig, CopilotHandoff, CursorHookAction, CursorHooksConfig, CursorSettingsConfig, DeployWorkflowOptions, DeploymentMetadata, GitBranch, GitHubBoardMetadata, GitHubProjectMetadata, GitHubSprintMetadata, IDependencyResolver, LabelDefinition, LayoutEnforcement, LayoutViolation, McpServerConfig, McpTransport, MergeMethod, MonorepoLayoutRoot, MonorepoProjectOptions, OrganizationMetadata, PnpmWorkspaceOptions, ProjectMetadataOptions, RemoteCacheOptions, RepositoryMetadata, ResetTaskOptions, ResolvedProjectMetadata, SlackMetadata, StarlightEditLink, StarlightLogo, StarlightProjectOptions, StarlightSidebarItem, StarlightSocialLink, SyncLabelsOptions, TemplateResolveResult, TurboRepoOptions, TurboRepoTaskOptions, TypeScriptProjectOptions, VersionKey, VitestConfigOptions, VitestOptions };
package/lib/index.js CHANGED
@@ -244,8 +244,11 @@ __export(index_exports, {
244
244
  requirementsReviewerBundle: () => requirementsReviewerBundle,
245
245
  requirementsWriterBundle: () => requirementsWriterBundle,
246
246
  researchPipelineBundle: () => researchPipelineBundle,
247
+ resolveAwsCdkProjectOutdir: () => resolveAwsCdkProjectOutdir,
247
248
  resolveModelAlias: () => resolveModelAlias,
249
+ resolveOutdirFromPackageName: () => resolveOutdirFromPackageName,
248
250
  resolveTemplateVariables: () => resolveTemplateVariables,
251
+ resolveTypeScriptProjectOutdir: () => resolveTypeScriptProjectOutdir,
249
252
  slackBundle: () => slackBundle,
250
253
  softwareProfileBundle: () => softwareProfileBundle,
251
254
  turborepoBundle: () => turborepoBundle,
@@ -16492,6 +16495,43 @@ var MonorepoProject = class extends import_typescript3.TypeScriptAppProject {
16492
16495
  }
16493
16496
  };
16494
16497
 
16498
+ // src/projects/resolve-outdir.ts
16499
+ function parseScopedName(input) {
16500
+ if (!input.startsWith("@")) {
16501
+ return void 0;
16502
+ }
16503
+ const slashIndex = input.indexOf("/");
16504
+ if (slashIndex < 2) {
16505
+ return void 0;
16506
+ }
16507
+ const scope = input.slice(0, slashIndex);
16508
+ const name = input.slice(slashIndex + 1);
16509
+ if (name.length === 0 || name.includes("/")) {
16510
+ return void 0;
16511
+ }
16512
+ return { scope, name };
16513
+ }
16514
+ function resolveOutdirFromPackageName(packageName, root) {
16515
+ if (packageName === void 0 || packageName.length === 0) {
16516
+ throw new Error(
16517
+ "Cannot derive outdir: packageName (or name) is required when outdir is omitted. Either pass a scoped `packageName` / `name` like `@scope/foo`, or set `outdir` explicitly."
16518
+ );
16519
+ }
16520
+ const parsed = parseScopedName(packageName);
16521
+ if (parsed === void 0) {
16522
+ throw new Error(
16523
+ `Cannot derive outdir from unscoped packageName "${packageName}". Either use a scoped name like \`@scope/foo\`, or set \`outdir\` explicitly. Configulator places sub-projects at "${root}/<scope>/<name>".`
16524
+ );
16525
+ }
16526
+ return `${root}/${parsed.scope}/${parsed.name}`;
16527
+ }
16528
+ function resolveTypeScriptProjectOutdir(packageName) {
16529
+ return resolveOutdirFromPackageName(packageName, MONOREPO_LAYOUT.PACKAGES);
16530
+ }
16531
+ function resolveAwsCdkProjectOutdir(packageName) {
16532
+ return resolveOutdirFromPackageName(packageName, MONOREPO_LAYOUT.APPS);
16533
+ }
16534
+
16495
16535
  // src/projects/typescript-project.ts
16496
16536
  var TestRunner = {
16497
16537
  JEST: "jest",
@@ -16507,6 +16547,9 @@ var TypeScriptProject = class extends import_projen16.typescript.TypeScriptProje
16507
16547
  const parent = userOptions.parent;
16508
16548
  const pnpmVersion = parent.pnpmVersion;
16509
16549
  const pnpmWorkspace = PnpmWorkspace.of(parent);
16550
+ const resolvedOutdir = userOptions.outdir ?? resolveTypeScriptProjectOutdir(
16551
+ userOptions.packageName ?? userOptions.name
16552
+ );
16510
16553
  const testRunner = userOptions.testRunner ?? TestRunner.JEST;
16511
16554
  const useJest = testRunner === TestRunner.JEST;
16512
16555
  const defaultOptions = {
@@ -16514,6 +16557,12 @@ var TypeScriptProject = class extends import_projen16.typescript.TypeScriptProje
16514
16557
  * This is a standard, so don't require it to passed in everywhere.
16515
16558
  */
16516
16559
  defaultReleaseBranch: "main",
16560
+ /**
16561
+ * Outdir defaults to `packages/<scope>/<name>` when the caller
16562
+ * omits it. Explicit overrides in `userOptions` always win via
16563
+ * the merge below.
16564
+ */
16565
+ outdir: resolvedOutdir,
16517
16566
  /**
16518
16567
  * Enable reset task by default.
16519
16568
  */
@@ -16584,10 +16633,7 @@ var TypeScriptProject = class extends import_projen16.typescript.TypeScriptProje
16584
16633
  * (version, dependencies) changes.
16585
16634
  */
16586
16635
  releaseTrigger: import_release.ReleaseTrigger.continuous({
16587
- paths: [
16588
- `${userOptions.outdir}/src/**`,
16589
- `${userOptions.outdir}/package.json`
16590
- ]
16636
+ paths: [`${resolvedOutdir}/src/**`, `${resolvedOutdir}/package.json`]
16591
16637
  })
16592
16638
  };
16593
16639
  const options = (0, import_ts_deepmerge2.merge)(defaultOptions, userOptions);
@@ -17263,10 +17309,17 @@ var AwsCdkProject = class extends import_projen20.awscdk.AwsCdkTypeScriptApp {
17263
17309
  const parent = userOptions.parent;
17264
17310
  const pnpmVersion = parent.pnpmVersion;
17265
17311
  const pnpmWorkspace = PnpmWorkspace.of(parent);
17312
+ const resolvedOutdir = userOptions.outdir ?? resolveAwsCdkProjectOutdir(userOptions.packageName ?? userOptions.name);
17266
17313
  const testRunner = userOptions.testRunner ?? TestRunner.JEST;
17267
17314
  const useJest = testRunner === TestRunner.JEST;
17268
17315
  const defaultOptions = {
17269
17316
  defaultReleaseBranch: "main",
17317
+ /**
17318
+ * Outdir defaults to `apps/<scope>/<name>` when the caller omits
17319
+ * it. Explicit overrides in `userOptions` always win via the
17320
+ * merge below.
17321
+ */
17322
+ outdir: resolvedOutdir,
17270
17323
  /**
17271
17324
  * Enable reset task by default.
17272
17325
  */
@@ -17336,10 +17389,7 @@ var AwsCdkProject = class extends import_projen20.awscdk.AwsCdkTypeScriptApp {
17336
17389
  * Only release when the package source content or package.json changes.
17337
17390
  */
17338
17391
  releaseTrigger: import_release2.ReleaseTrigger.continuous({
17339
- paths: [
17340
- `${userOptions.outdir}/src/**`,
17341
- `${userOptions.outdir}/package.json`
17342
- ]
17392
+ paths: [`${resolvedOutdir}/src/**`, `${resolvedOutdir}/package.json`]
17343
17393
  })
17344
17394
  };
17345
17395
  const options = (0, import_ts_deepmerge3.merge)(defaultOptions, userOptions);
@@ -17630,8 +17680,11 @@ var TypeScriptConfig = class extends import_projen22.Component {
17630
17680
  requirementsReviewerBundle,
17631
17681
  requirementsWriterBundle,
17632
17682
  researchPipelineBundle,
17683
+ resolveAwsCdkProjectOutdir,
17633
17684
  resolveModelAlias,
17685
+ resolveOutdirFromPackageName,
17634
17686
  resolveTemplateVariables,
17687
+ resolveTypeScriptProjectOutdir,
17635
17688
  slackBundle,
17636
17689
  softwareProfileBundle,
17637
17690
  turborepoBundle,