@mavogel/mvc-projen 0.0.33 → 0.0.34
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/.claude/rules/mvc-projen-toolchain-maintenance.md +17 -10
- package/.jsii +5 -4
- package/lib/projects/cdk-construct.js +1 -1
- package/mavogelmvcprojen/MvcCdkConstructLibraryOptions.go +9 -0
- package/mavogelmvcprojen/go.mod +1 -1
- package/mavogelmvcprojen/jsii/jsii.go +2 -2
- package/mavogelmvcprojen/version +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Toolchain Maintenance: projen / jsii / typescript
|
|
2
2
|
|
|
3
|
-
**Last Updated:** 2026-
|
|
3
|
+
**Last Updated:** 2026-09-12
|
|
4
4
|
|
|
5
5
|
This repo's own build (`.projenrc.ts`, a `cdk.JsiiProject`) pins several versions as literals. These pins exist for specific reasons — don't remove them without understanding why.
|
|
6
6
|
|
|
@@ -9,9 +9,15 @@ This repo's own build (`.projenrc.ts`, a `cdk.JsiiProject`) pins several version
|
|
|
9
9
|
| Setting | Value | Why pinned |
|
|
10
10
|
|---|---|---|
|
|
11
11
|
| `projenVersion` (const, top of file) | `0.101.17` | Source of truth for `package.json`'s `projen` entry — see below |
|
|
12
|
-
| `jsiiVersion` | `~
|
|
12
|
+
| `jsiiVersion` | `~6.0.0` | Compiler compatibility |
|
|
13
13
|
| `typescriptVersion` | `^6.0.2` | **Prevents drifting onto TypeScript 7** (see gotcha below) |
|
|
14
14
|
|
|
15
|
+
## Use Node 24 locally, matching `.nvmrc`
|
|
16
|
+
|
|
17
|
+
This repo's `.nvmrc` pins Node `24` — the version jsii's compiler actually supports (jsii's supported list: `^24.0.0`, `^22.0.0`, `^20.0.0` [deprecated]). Before running `npx projen`, `npm run build`, `npm install`, or any other repo command, switch to it: `nvm use` (reads `.nvmrc` automatically) or `nvm use 24`.
|
|
18
|
+
|
|
19
|
+
Running under a newer Node (e.g. Node 26, the current non-LTS release as of this writing) doesn't break the build, but every `jsii`/`jsii-pacmak` invocation prints an "untested node version" warning and clutters output — annoying to read through and easy to mistake for a real problem. If a shell's default Node is already 26+, run `nvm use 24` first rather than ignoring the warning.
|
|
20
|
+
|
|
15
21
|
## ⚠️ Gotcha: unpinned `typescript` devDependency drifts onto breaking majors
|
|
16
22
|
|
|
17
23
|
If `typescriptVersion` is ever removed from the `JsiiProject` options, projen adds `typescript` as a devDependency with **no version range** (`node_modules/projen/lib/typescript/typescript.js` — `tsDep = options.typescriptVersion ? "typescript@${...}" : "typescript"`). npm then resolves it to whatever is latest at synth time.
|
|
@@ -22,22 +28,23 @@ This broke the build on 2026-07-21: TypeScript 7.0.2 (the new Go-ported compiler
|
|
|
22
28
|
|
|
23
29
|
**Known gap:** `src/projects/cdk-construct.ts` (`MvcCdkConstructLibrary`, what this module scaffolds for *consumers*) does NOT set `typescriptVersion` in its own projen options. Generated consumer projects are exposed to the same drift/break. Worth fixing in `cdk-construct.ts` as a follow-up — not yet done.
|
|
24
30
|
|
|
25
|
-
## Keeping `projen`
|
|
31
|
+
## Keeping `projen` and `jsii` current
|
|
32
|
+
|
|
33
|
+
`projenVersion` and `jsiiVersion` are hardcoded literals, not normal devDependency ranges — they're the source of truth that regenerates `package.json`'s `projen`/`jsii`/`jsii-rosetta` entries on every `npx projen` run. This is why `dependabotOptions.groups.default.excludePatterns`/`ignore` exclude `projen`, `jsii`, and `jsii-rosetta`: a Dependabot PR that only edits `package.json` would get silently reverted by the `self_mutation_happened` check in `.github/workflows/build.yml` (`npx projen` would just re-derive the old pinned literal). `typescriptVersion` doesn't need this — it's a caret range, so `npm update`/Dependabot can already advance it within the current major via lockfile-only changes.
|
|
26
34
|
|
|
27
|
-
|
|
35
|
+
Two generated workflows automate the literal bumps instead (both weekly cron, Monday 06:00 UTC, + manual `workflow_dispatch`), sharing the `addSelfUpgradeWorkflow()` builder in `.projenrc.ts`:
|
|
28
36
|
|
|
29
|
-
**`.github/workflows/upgrade-projen.yml
|
|
37
|
+
- **`.github/workflows/upgrade-projen.yml`**: compares `package.json`'s current `devDependencies.projen` against `npm view projen version`.
|
|
38
|
+
- **`.github/workflows/upgrade-jsii.yml`**: reads the `jsiiVersion` literal out of `.projenrc.ts` and compares it against the latest version *within the current major only* (`npm view jsii@<major>`) — crossing to the next jsii major stays a deliberate, human-reviewed bump, same as the `typescriptVersion` pin.
|
|
30
39
|
|
|
31
|
-
|
|
32
|
-
2. If different: `sed`-updates the `projenVersion` const in `.projenrc.ts`, runs `npx projen` to re-synth everything, then `npm run build` as a gate
|
|
33
|
-
3. Only if the build passes: commits to a `chore/upgrade-projen-<version>` branch and opens a PR via `gh pr create` (labeled `dependencies`, `auto-approve`)
|
|
40
|
+
Both, if the versions differ: `sed`-update the literal in `.projenrc.ts`, run `npx projen` to re-synth everything, then `npm run build` as a gate. Only if the build passes: commit to a `chore/upgrade-<projen|jsii>-<version>` branch and open a PR via `gh pr create` (labeled `dependencies`, `auto-approve`) — auto-approved by a Mergify rule (since the PR is opened by `mvc-bot` via `PROJEN_GITHUB_TOKEN`, and GitHub rejects a PR review from the same account that authored the PR) and merged once required checks pass.
|
|
34
41
|
|
|
35
42
|
To bump manually instead of waiting for the cron (or to debug it):
|
|
36
43
|
|
|
37
44
|
```bash
|
|
38
|
-
npm view projen version
|
|
45
|
+
npm view projen version # check latest
|
|
39
46
|
# edit the `projenVersion` const in .projenrc.ts
|
|
40
|
-
npx projen && npm run build
|
|
47
|
+
npx projen && npm run build # re-synth + verify
|
|
41
48
|
```
|
|
42
49
|
|
|
43
50
|
Same procedure applies to bumping `jsiiVersion` or `typescriptVersion` — always re-run the full build afterward; jsii/projen major bumps can change generated file layout (e.g. the 0.99→0.101 bump split `tsconfig.dev.json` into `tsconfig.json` + `test/tsconfig.json` + `projenrc/tsconfig.json`).
|
package/.jsii
CHANGED
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"stability": "stable"
|
|
87
87
|
},
|
|
88
88
|
"homepage": "https://github.com/mavogel/mvc-projen",
|
|
89
|
-
"jsiiVersion": "6.0.
|
|
89
|
+
"jsiiVersion": "6.0.13 (build 5c05d06)",
|
|
90
90
|
"keywords": [
|
|
91
91
|
"aws",
|
|
92
92
|
"cdk",
|
|
@@ -100,7 +100,8 @@
|
|
|
100
100
|
"hasDefaultInterfaces": true
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
-
"
|
|
103
|
+
"tscOutDir": "lib",
|
|
104
|
+
"tscRootDir": "src"
|
|
104
105
|
},
|
|
105
106
|
"name": "@mavogel/mvc-projen",
|
|
106
107
|
"readme": {
|
|
@@ -223,6 +224,6 @@
|
|
|
223
224
|
"symbolId": "src/projects/cdk-construct:MvcCdkConstructLibraryOptions"
|
|
224
225
|
}
|
|
225
226
|
},
|
|
226
|
-
"version": "0.0.
|
|
227
|
-
"fingerprint": "
|
|
227
|
+
"version": "0.0.34",
|
|
228
|
+
"fingerprint": "Dvk1lcPJC18w4vWI1Golzm2I1WT0M7k3SlnLaEItpMI="
|
|
228
229
|
}
|
|
@@ -57,7 +57,7 @@ const LAST_INTEG_RUNNER_VERSION = '2.203.0';
|
|
|
57
57
|
* @pjid mvc-awscdk-construct
|
|
58
58
|
*/
|
|
59
59
|
class MvcCdkConstructLibrary extends awscdk_1.AwsCdkConstructLibrary {
|
|
60
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@mavogel/mvc-projen.MvcCdkConstructLibrary", version: "0.0.
|
|
60
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@mavogel/mvc-projen.MvcCdkConstructLibrary", version: "0.0.34" };
|
|
61
61
|
constructor(options) {
|
|
62
62
|
const baseAssetsDirectory = options.baseAssetsDirectory ?? `${process.cwd()}/node_modules/@mavogel/mvc-projen/assets`;
|
|
63
63
|
const integTestRegions = options.integTestRegions ?? ['eu-west-1', 'eu-west-2'];
|
|
@@ -266,6 +266,15 @@ type MvcCdkConstructLibraryOptions struct {
|
|
|
266
266
|
//
|
|
267
267
|
// Experimental.
|
|
268
268
|
CodeArtifactOptions *javascript.CodeArtifactOptions `field:"optional" json:"codeArtifactOptions" yaml:"codeArtifactOptions"`
|
|
269
|
+
// Configuration values available to package scripts at runtime.
|
|
270
|
+
//
|
|
271
|
+
// Values should be JSON-serializable.
|
|
272
|
+
// See: https://docs.npmjs.com/cli/v11/configuring-npm/package-json#config
|
|
273
|
+
//
|
|
274
|
+
// Default: - no package configuration.
|
|
275
|
+
//
|
|
276
|
+
// Experimental.
|
|
277
|
+
Config *map[string]interface{} `field:"optional" json:"config" yaml:"config"`
|
|
269
278
|
// Add a `dedupe` task that deduplicates project dependencies.
|
|
270
279
|
//
|
|
271
280
|
// Deduplication prevents multiple versions of the same package from being
|
package/mavogelmvcprojen/go.mod
CHANGED
|
@@ -13,7 +13,7 @@ import (
|
|
|
13
13
|
projen "github.com/projen/projen-go/projen/jsii"
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
-
//go:embed mavogel-mvc-projen-0.0.
|
|
16
|
+
//go:embed mavogel-mvc-projen-0.0.33.tgz
|
|
17
17
|
var tarball []byte
|
|
18
18
|
|
|
19
19
|
// Initialize loads the necessary packages in the @jsii/kernel to support the enclosing module.
|
|
@@ -24,5 +24,5 @@ func Initialize() {
|
|
|
24
24
|
projen.Initialize()
|
|
25
25
|
|
|
26
26
|
// Load this library into the kernel
|
|
27
|
-
_jsii_.Load("@mavogel/mvc-projen", "0.0.
|
|
27
|
+
_jsii_.Load("@mavogel/mvc-projen", "0.0.33", tarball)
|
|
28
28
|
}
|
package/mavogelmvcprojen/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.33
|