@codedrifters/configulator 0.0.129 → 0.0.130

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/README.md CHANGED
@@ -532,28 +532,10 @@ interface MonorepoProjectOptions {
532
532
  version?: string;
533
533
  pnpmWorkspaceOptions?: PnpmWorkspaceOptions;
534
534
  };
535
- upgradeConfigulatorTask?: boolean; // Default: false — see below
536
- upgradeConfigulatorTaskOptions?: UpgradeDependenciesOptions;
537
535
  // ... all TypeScriptProjectOptions
538
536
  }
539
537
  ```
540
538
 
541
- #### Configulator upgrade workflow (default: off)
542
-
543
- By default, `MonorepoProject` does **not** add a separate workflow that upgrades only `@codedrifters/configulator`. Monorepos that use configulator should rely on projen's built-in **upgrade** workflow for all dependency upgrades (including configulator), so there is one source of truth and no duplicate or conflicting automation.
544
-
545
- To opt in to a dedicated scheduled workflow that upgrades only `@codedrifters/configulator` (e.g. nightly), set `upgradeConfigulatorTask: true` and optionally customize with `upgradeConfigulatorTaskOptions` (schedule, etc.):
546
-
547
- ```typescript
548
- const project = new MonorepoProject({
549
- name: 'my-monorepo',
550
- upgradeConfigulatorTask: true,
551
- upgradeConfigulatorTaskOptions: {
552
- workflowOptions: { schedule: UpgradeDependenciesSchedule.DAILY },
553
- },
554
- });
555
- ```
556
-
557
539
  ### TypeScriptProjectOptions
558
540
 
559
541
  Extends Projen's `TypeScriptProjectOptions` with CodeDrifters defaults. See the [TypeScriptProject](#typescriptproject) section for details.
package/lib/index.d.mts CHANGED
@@ -4,9 +4,9 @@ import { AwsStageType, DeploymentTargetRoleType, AwsEnvironmentType, AWS_STAGE_T
4
4
  import * as spec from '@jsii/spec';
5
5
  import { TypeScriptProject as TypeScriptProject$1, TypeScriptAppProject, TypeScriptProjectOptions as TypeScriptProjectOptions$1 } from 'projen/lib/typescript';
6
6
  import { ValueOf } from 'type-fest';
7
- import { NodeProject, UpgradeDependencies, UpgradeDependenciesOptions } from 'projen/lib/javascript';
8
7
  import { Component as Component$1, Project as Project$1, Task } from 'projen/lib';
9
8
  import { BuildWorkflowOptions, BuildWorkflow } from 'projen/lib/build';
9
+ import { NodeProject } from 'projen/lib/javascript';
10
10
  import { JobStep } from 'projen/lib/github/workflows-model';
11
11
 
12
12
  /*******************************************************************************
@@ -1301,21 +1301,6 @@ interface MonorepoProjectOptions extends Omit<TypeScriptProjectOptions$1, "defau
1301
1301
  */
1302
1302
  pnpmWorkspaceOptions?: PnpmWorkspaceOptions;
1303
1303
  };
1304
- /**
1305
- * Turn on a dedicated workflow that upgrades only
1306
- * @codedrifters/configulator on a schedule (e.g. nightly). When false or
1307
- * unset, rely on projen's default upgrade workflow for all dependency
1308
- * upgrades instead.
1309
- *
1310
- * @default false
1311
- */
1312
- readonly upgradeConfigulatorTask?: boolean;
1313
- /**
1314
- * Options for the upgrade configurator task.
1315
- *
1316
- * @default: daily schedule
1317
- */
1318
- readonly upgradeConfigulatorTaskOptions?: UpgradeDependenciesOptions;
1319
1304
  /**
1320
1305
  * When set, adds the approve-and-merge-upgrade workflow (ADR 0001 §2).
1321
1306
  * Uses a second GitHub App to approve and merge the dependency-upgrade PR
@@ -1331,12 +1316,6 @@ declare class MonorepoProject extends TypeScriptAppProject {
1331
1316
  * Version of PNPM which the whole monorepo should use.
1332
1317
  */
1333
1318
  readonly pnpmVersion: string;
1334
- /**
1335
- * Optional task that will attempt to upgrade the @codedrifters/configulator
1336
- * package version nightly. This keeps the project up-to-date with the latest
1337
- * official CodeDrifters configs.
1338
- */
1339
- readonly upgradeConfigulatorTask?: UpgradeDependencies;
1340
1319
  constructor(userOptions: MonorepoProjectOptions);
1341
1320
  /**
1342
1321
  * Allows a sub project to request installation of dependency at the Monorepo root
package/lib/index.d.ts CHANGED
@@ -3,9 +3,9 @@ import { AwsCdkTypeScriptApp } from 'projen/lib/awscdk';
3
3
  import * as spec from '@jsii/spec';
4
4
  import { TypeScriptProject as TypeScriptProject$1, TypeScriptAppProject, TypeScriptProjectOptions as TypeScriptProjectOptions$1 } from 'projen/lib/typescript';
5
5
  import { ValueOf } from 'type-fest';
6
- import { UpgradeDependencies, UpgradeDependenciesOptions, NodeProject } from 'projen/lib/javascript';
7
6
  import { Task, Component as Component$1, Project as Project$1 } from 'projen/lib';
8
7
  import { BuildWorkflow, BuildWorkflowOptions } from 'projen/lib/build';
8
+ import { NodeProject } from 'projen/lib/javascript';
9
9
  import { JobStep } from 'projen/lib/github/workflows-model';
10
10
 
11
11
  /**
@@ -1350,21 +1350,6 @@ interface MonorepoProjectOptions extends Omit<TypeScriptProjectOptions$1, "defau
1350
1350
  */
1351
1351
  pnpmWorkspaceOptions?: PnpmWorkspaceOptions;
1352
1352
  };
1353
- /**
1354
- * Turn on a dedicated workflow that upgrades only
1355
- * @codedrifters/configulator on a schedule (e.g. nightly). When false or
1356
- * unset, rely on projen's default upgrade workflow for all dependency
1357
- * upgrades instead.
1358
- *
1359
- * @default false
1360
- */
1361
- readonly upgradeConfigulatorTask?: boolean;
1362
- /**
1363
- * Options for the upgrade configurator task.
1364
- *
1365
- * @default: daily schedule
1366
- */
1367
- readonly upgradeConfigulatorTaskOptions?: UpgradeDependenciesOptions;
1368
1353
  /**
1369
1354
  * When set, adds the approve-and-merge-upgrade workflow (ADR 0001 §2).
1370
1355
  * Uses a second GitHub App to approve and merge the dependency-upgrade PR
@@ -1380,12 +1365,6 @@ declare class MonorepoProject extends TypeScriptAppProject {
1380
1365
  * Version of PNPM which the whole monorepo should use.
1381
1366
  */
1382
1367
  readonly pnpmVersion: string;
1383
- /**
1384
- * Optional task that will attempt to upgrade the @codedrifters/configulator
1385
- * package version nightly. This keeps the project up-to-date with the latest
1386
- * official CodeDrifters configs.
1387
- */
1388
- readonly upgradeConfigulatorTask?: UpgradeDependencies;
1389
1368
  constructor(userOptions: MonorepoProjectOptions);
1390
1369
  /**
1391
1370
  * Allows a sub project to request installation of dependency at the Monorepo root
package/lib/index.js CHANGED
@@ -1457,6 +1457,18 @@ function addBuildCompleteJob(buildWorkflow) {
1457
1457
  }
1458
1458
 
1459
1459
  // src/projects/monorepo-project.ts
1460
+ var CONFIGULATOR_PACKAGE_NAME = "@codedrifters/configulator";
1461
+ function isConfigulatorRegistryConsumer(project) {
1462
+ const dep = project.deps.all.find(
1463
+ (d) => d.name === CONFIGULATOR_PACKAGE_NAME
1464
+ );
1465
+ if (!dep?.version) return false;
1466
+ const v = dep.version;
1467
+ if (v.startsWith("workspace:") || v.startsWith("file:") || v.startsWith("link:") || v.startsWith("catalog:")) {
1468
+ return false;
1469
+ }
1470
+ return true;
1471
+ }
1460
1472
  var postInstallDependenciesMap = /* @__PURE__ */ new WeakMap();
1461
1473
  var MonorepoProject = class extends import_typescript.TypeScriptAppProject {
1462
1474
  constructor(userOptions) {
@@ -1542,9 +1554,12 @@ var MonorepoProject = class extends import_typescript.TypeScriptAppProject {
1542
1554
  release: false,
1543
1555
  /**
1544
1556
  * Uppgrade dependencies automatically unless otherwise instructed.
1557
+ * Exclude @codedrifters/configulator so the default upgrade task does not
1558
+ * upgrade it (version is often managed in-repo or via a separate sync step).
1545
1559
  */
1546
1560
  depsUpgrade: true,
1547
1561
  depsUpgradeOptions: {
1562
+ exclude: ["@codedrifters/configulator"],
1548
1563
  workflowOptions: {
1549
1564
  schedule: import_javascript3.UpgradeDependenciesSchedule.DAILY
1550
1565
  },
@@ -1675,29 +1690,40 @@ var MonorepoProject = class extends import_typescript.TypeScriptAppProject {
1675
1690
  );
1676
1691
  this.gitignore?.addPatterns(".DS_Store", "test-reports");
1677
1692
  this.addDevDeps("constructs@catalog:");
1678
- if (options.upgradeConfigulatorTask === true) {
1679
- this.upgradeConfigulatorTask = new import_javascript3.UpgradeDependencies(
1680
- this,
1681
- (0, import_ts_deepmerge2.merge)(
1682
- {
1683
- include: ["@codedrifters/configulator"],
1684
- taskName: `upgrade-codedrifters-configulator`,
1685
- workflowOptions: {
1686
- schedule: import_javascript3.UpgradeDependenciesSchedule.DAILY
1687
- }
1688
- },
1689
- options.upgradeConfigulatorTaskOptions ?? {}
1690
- )
1691
- );
1692
- }
1693
1693
  if (options.approveMergeUpgradeOptions) {
1694
1694
  addApproveMergeUpgradeWorkflow(this, options.approveMergeUpgradeOptions);
1695
1695
  }
1696
1696
  if (this.buildWorkflow) {
1697
1697
  addBuildCompleteJob(this.buildWorkflow);
1698
1698
  }
1699
- this.tasks.tryFind("post-upgrade")?.exec("pnpm upgrade -r");
1700
- this.tasks.tryFind("post-upgrade")?.spawn(this.defaultTask);
1699
+ if (isConfigulatorRegistryConsumer(this)) {
1700
+ this.tasks.tryFind("post-upgrade")?.exec(`pnpm update -r ${CONFIGULATOR_PACKAGE_NAME}`);
1701
+ this.tasks.tryFind("post-upgrade")?.spawn(this.defaultTask);
1702
+ }
1703
+ const upgradeWorkflow = this.github?.tryFindWorkflow("upgrade");
1704
+ const upgradeJob = upgradeWorkflow?.getJob("upgrade");
1705
+ const jobWithSteps = upgradeJob && "steps" in upgradeJob ? upgradeJob : void 0;
1706
+ if (jobWithSteps?.steps && Array.isArray(jobWithSteps.steps)) {
1707
+ const insertIndex = 4;
1708
+ if (isConfigulatorRegistryConsumer(this)) {
1709
+ jobWithSteps.steps.splice(insertIndex, 0, {
1710
+ name: `Sync ${CONFIGULATOR_PACKAGE_NAME} in workspace`,
1711
+ run: `pnpm update -r ${CONFIGULATOR_PACKAGE_NAME}`
1712
+ });
1713
+ jobWithSteps.steps.splice(insertIndex + 1, 0, {
1714
+ name: "Synthesize",
1715
+ run: this.runTaskCommand(this.defaultTask)
1716
+ });
1717
+ }
1718
+ jobWithSteps.steps.splice(
1719
+ insertIndex + (isConfigulatorRegistryConsumer(this) ? 2 : 0),
1720
+ 0,
1721
+ {
1722
+ name: "Run subproject upgrades",
1723
+ run: "pnpm -r run upgrade"
1724
+ }
1725
+ );
1726
+ }
1701
1727
  }
1702
1728
  /**
1703
1729
  * Allows a sub project to request installation of dependency at the Monorepo root