@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.mjs CHANGED
@@ -16418,6 +16418,43 @@ var MonorepoProject = class extends TypeScriptAppProject {
16418
16418
  }
16419
16419
  };
16420
16420
 
16421
+ // src/projects/resolve-outdir.ts
16422
+ function parseScopedName(input) {
16423
+ if (!input.startsWith("@")) {
16424
+ return void 0;
16425
+ }
16426
+ const slashIndex = input.indexOf("/");
16427
+ if (slashIndex < 2) {
16428
+ return void 0;
16429
+ }
16430
+ const scope = input.slice(0, slashIndex);
16431
+ const name = input.slice(slashIndex + 1);
16432
+ if (name.length === 0 || name.includes("/")) {
16433
+ return void 0;
16434
+ }
16435
+ return { scope, name };
16436
+ }
16437
+ function resolveOutdirFromPackageName(packageName, root) {
16438
+ if (packageName === void 0 || packageName.length === 0) {
16439
+ throw new Error(
16440
+ "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."
16441
+ );
16442
+ }
16443
+ const parsed = parseScopedName(packageName);
16444
+ if (parsed === void 0) {
16445
+ throw new Error(
16446
+ `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>".`
16447
+ );
16448
+ }
16449
+ return `${root}/${parsed.scope}/${parsed.name}`;
16450
+ }
16451
+ function resolveTypeScriptProjectOutdir(packageName) {
16452
+ return resolveOutdirFromPackageName(packageName, MONOREPO_LAYOUT.PACKAGES);
16453
+ }
16454
+ function resolveAwsCdkProjectOutdir(packageName) {
16455
+ return resolveOutdirFromPackageName(packageName, MONOREPO_LAYOUT.APPS);
16456
+ }
16457
+
16421
16458
  // src/projects/typescript-project.ts
16422
16459
  var TestRunner = {
16423
16460
  JEST: "jest",
@@ -16433,6 +16470,9 @@ var TypeScriptProject = class extends typescript.TypeScriptProject {
16433
16470
  const parent = userOptions.parent;
16434
16471
  const pnpmVersion = parent.pnpmVersion;
16435
16472
  const pnpmWorkspace = PnpmWorkspace.of(parent);
16473
+ const resolvedOutdir = userOptions.outdir ?? resolveTypeScriptProjectOutdir(
16474
+ userOptions.packageName ?? userOptions.name
16475
+ );
16436
16476
  const testRunner = userOptions.testRunner ?? TestRunner.JEST;
16437
16477
  const useJest = testRunner === TestRunner.JEST;
16438
16478
  const defaultOptions = {
@@ -16440,6 +16480,12 @@ var TypeScriptProject = class extends typescript.TypeScriptProject {
16440
16480
  * This is a standard, so don't require it to passed in everywhere.
16441
16481
  */
16442
16482
  defaultReleaseBranch: "main",
16483
+ /**
16484
+ * Outdir defaults to `packages/<scope>/<name>` when the caller
16485
+ * omits it. Explicit overrides in `userOptions` always win via
16486
+ * the merge below.
16487
+ */
16488
+ outdir: resolvedOutdir,
16443
16489
  /**
16444
16490
  * Enable reset task by default.
16445
16491
  */
@@ -16510,10 +16556,7 @@ var TypeScriptProject = class extends typescript.TypeScriptProject {
16510
16556
  * (version, dependencies) changes.
16511
16557
  */
16512
16558
  releaseTrigger: ReleaseTrigger.continuous({
16513
- paths: [
16514
- `${userOptions.outdir}/src/**`,
16515
- `${userOptions.outdir}/package.json`
16516
- ]
16559
+ paths: [`${resolvedOutdir}/src/**`, `${resolvedOutdir}/package.json`]
16517
16560
  })
16518
16561
  };
16519
16562
  const options = merge2(defaultOptions, userOptions);
@@ -17193,10 +17236,17 @@ var AwsCdkProject = class extends awscdk.AwsCdkTypeScriptApp {
17193
17236
  const parent = userOptions.parent;
17194
17237
  const pnpmVersion = parent.pnpmVersion;
17195
17238
  const pnpmWorkspace = PnpmWorkspace.of(parent);
17239
+ const resolvedOutdir = userOptions.outdir ?? resolveAwsCdkProjectOutdir(userOptions.packageName ?? userOptions.name);
17196
17240
  const testRunner = userOptions.testRunner ?? TestRunner.JEST;
17197
17241
  const useJest = testRunner === TestRunner.JEST;
17198
17242
  const defaultOptions = {
17199
17243
  defaultReleaseBranch: "main",
17244
+ /**
17245
+ * Outdir defaults to `apps/<scope>/<name>` when the caller omits
17246
+ * it. Explicit overrides in `userOptions` always win via the
17247
+ * merge below.
17248
+ */
17249
+ outdir: resolvedOutdir,
17200
17250
  /**
17201
17251
  * Enable reset task by default.
17202
17252
  */
@@ -17266,10 +17316,7 @@ var AwsCdkProject = class extends awscdk.AwsCdkTypeScriptApp {
17266
17316
  * Only release when the package source content or package.json changes.
17267
17317
  */
17268
17318
  releaseTrigger: ReleaseTrigger2.continuous({
17269
- paths: [
17270
- `${userOptions.outdir}/src/**`,
17271
- `${userOptions.outdir}/package.json`
17272
- ]
17319
+ paths: [`${resolvedOutdir}/src/**`, `${resolvedOutdir}/package.json`]
17273
17320
  })
17274
17321
  };
17275
17322
  const options = merge3(defaultOptions, userOptions);
@@ -17559,8 +17606,11 @@ export {
17559
17606
  requirementsReviewerBundle,
17560
17607
  requirementsWriterBundle,
17561
17608
  researchPipelineBundle,
17609
+ resolveAwsCdkProjectOutdir,
17562
17610
  resolveModelAlias,
17611
+ resolveOutdirFromPackageName,
17563
17612
  resolveTemplateVariables,
17613
+ resolveTypeScriptProjectOutdir,
17564
17614
  slackBundle,
17565
17615
  softwareProfileBundle,
17566
17616
  turborepoBundle,