@lenne.tech/cli 1.45.0 → 1.47.0
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/bin/postinstall.js +28 -5
- package/build/commands/dev/doctor.js +45 -3
- package/build/commands/dev/up.js +3 -0
- package/build/commands/fullstack/update.js +31 -0
- package/build/lib/check-template-sync.js +127 -0
- package/build/lib/claude-cli.js +14 -25
- package/build/lib/codex-cli.js +24 -31
- package/build/lib/dev-env-bridge.js +14 -3
- package/build/lib/dev-env.js +117 -3
- package/build/lib/dev-patches.js +1 -1
- package/build/lib/dev-test-session.js +3 -0
- package/build/lib/ensure-root-dockerignore.js +7 -0
- package/build/lib/heal-check-wrapper.js +128 -11
- package/build/lib/heal-oxlintrc.js +215 -0
- package/build/lib/platform.js +107 -0
- package/build/lib/plugin-utils.js +9 -8
- package/build/templates/check/check.mjs +270 -268
- package/build/templates/check/lib/ansi.mjs +22 -0
- package/build/templates/check/lib/audit-report.mjs +412 -0
- package/build/templates/check/lib/workspace-packages.mjs +150 -0
- package/build/templates/check/lt-monorepo-pin.json +13 -0
- package/docs/commands.md +22 -11
- package/package.json +19 -14
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lenne.tech/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.47.0",
|
|
4
4
|
"description": "lenne.Tech CLI: lt",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lenne.Tech",
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"check:audit": "bash scripts/check.sh --audit-only",
|
|
25
25
|
"check:fix": "npm install && npm audit fix && npm run format && npm run lint:fix && npm run build && npm run check:start",
|
|
26
26
|
"check:start": "bash scripts/check-cli-start.sh",
|
|
27
|
-
"
|
|
27
|
+
"sync:check-template": "ts-node --transpile-only extras/sync-check-template.ts",
|
|
28
|
+
"postinstall": "node bin/postinstall.js",
|
|
28
29
|
"build": "npm run lint && npm run test && npm run clean-build && npm run compile && npm run copy-templates",
|
|
29
30
|
"clean-build": "npx rimraf ./build",
|
|
30
31
|
"compile": "tsc -p .",
|
|
@@ -33,11 +34,11 @@
|
|
|
33
34
|
"test:vendor-init": "bash scripts/test-vendor-init.sh",
|
|
34
35
|
"test:frontend-vendor-init": "bash scripts/test-frontend-vendor-init.sh",
|
|
35
36
|
"test:incremental-fullstack": "bash scripts/test-incremental-fullstack.sh",
|
|
36
|
-
"test:manual": "jest --testMatch
|
|
37
|
-
"test:e2e:service": "jest --testMatch
|
|
38
|
-
"format": "prettier --write
|
|
39
|
-
"lint": "eslint
|
|
40
|
-
"lint:fix": "eslint
|
|
37
|
+
"test:manual": "jest --testMatch \"<rootDir>/*.manual.ts\" --testTimeout=60000",
|
|
38
|
+
"test:e2e:service": "jest --testMatch \"<rootDir>/dev-service-e2e.manual.ts\" --testTimeout=60000",
|
|
39
|
+
"format": "prettier --write \"src/**/*.{js,ts,tsx,json}\" \"!src/templates/**/*\"",
|
|
40
|
+
"lint": "eslint \"./src/**/*.{ts,js,vue}\"",
|
|
41
|
+
"lint:fix": "eslint \"./src/**/*.{ts,js,vue}\" --fix",
|
|
41
42
|
"prepublishOnly": "npm run build",
|
|
42
43
|
"preversion": "npm run lint",
|
|
43
44
|
"reinit": "npx rimraf package-lock.json && npx rimraf node_modules && npm cache clean --force && npm i && npm run build",
|
|
@@ -61,11 +62,12 @@
|
|
|
61
62
|
"@lenne.tech/cli-plugin-helper": "0.0.14",
|
|
62
63
|
"axios": "1.19.0",
|
|
63
64
|
"bcrypt": "6.0.0",
|
|
65
|
+
"cross-spawn": "7.0.6",
|
|
64
66
|
"defuddle": "0.19.2",
|
|
65
67
|
"glob": "13.0.6",
|
|
66
68
|
"gluegun": "5.2.2",
|
|
67
69
|
"js-sha256": "1.0.0",
|
|
68
|
-
"js-yaml": "4.3.
|
|
70
|
+
"js-yaml": "4.3.2",
|
|
69
71
|
"jsdom": "29.1.1",
|
|
70
72
|
"jsonc-parser": "3.3.1",
|
|
71
73
|
"lodash": "4.18.1",
|
|
@@ -77,9 +79,16 @@
|
|
|
77
79
|
"turndown-plugin-gfm": "1.0.2",
|
|
78
80
|
"typescript": "6.0.3"
|
|
79
81
|
},
|
|
82
|
+
"//devDependencies": {
|
|
83
|
+
"@emnapi/core": "Not imported by this CLI. @napi-rs/wasm-runtime 1.x moved @emnapi/core and @emnapi/runtime from dependencies to peerDependencies (napi-rs#3174), and the only path to them here is dev-only AND optional: eslint-plugin-import-x / jest-resolve > unrs-resolver > @unrs/resolver-binding-wasm32-wasi (cpu: wasm32) > @napi-rs/wasm-runtime. npm >= 11.5.0 (arborist 9.1.3) prunes nodes that are both peer and optional from the ideal tree, so it never writes them to the lockfile — while npm <= 11.4 still demands them and fails npm ci with \"Missing: @emnapi/core@1.11.3 from lock file\". Declaring them here is the remedy arborist's own source comment names: an optional peer stops being optional once a root dependency requires it, so both npm generations then agree. Verified: npm ci passes on npm 10 and 11.6, and npm install no longer strips the entries. Remove once @napi-rs/wasm-runtime declares them in peerDependenciesMeta as optional, or once npm >= 11.5 is the floor everywhere (GitHub Actions still runs Node 20 = npm 10).",
|
|
84
|
+
"@emnapi/runtime": "Same as @emnapi/core."
|
|
85
|
+
},
|
|
80
86
|
"devDependencies": {
|
|
87
|
+
"@emnapi/core": "^1.11.3",
|
|
88
|
+
"@emnapi/runtime": "^1.11.3",
|
|
81
89
|
"@lenne.tech/eslint-config-ts": "2.3.0",
|
|
82
90
|
"@lenne.tech/npm-package-helper": "0.0.12",
|
|
91
|
+
"@types/cross-spawn": "6.0.6",
|
|
83
92
|
"@types/ejs": "3.1.5",
|
|
84
93
|
"@types/jest": "30.0.0",
|
|
85
94
|
"@types/js-yaml": "4.0.9",
|
|
@@ -104,8 +113,7 @@
|
|
|
104
113
|
"//minimatch-note": "brace-expansion 1.x and 2.x are END OF LINE for GHSA-mh99-v99m-4gvg: the advisory range is <=5.0.7 across ALL majors and upstream patched ONLY 5.0.8+. 1.1.18 and 2.1.4 are the newest releases of their majors and remain vulnerable. Forcing brace-expansion 5.x globally is NOT an option: 5.x is ESM/tshy and exports an object ({ expand, ... }) while 1.x/2.x export the function itself, so minimatch 3.x/5.x would die on `expand is not a function`. The only real fix is to raise each CONSUMER off minimatch 3.x/5.x, which is what the scoped entries below do. Each was verified against the consumer's actual call site before being added. The eslint / @eslint/eslintrc / @eslint/config-array entries were REMOVED in 1.42.0: eslint 10 requests minimatch ^10.2.5 itself, config-array ^10.2.4, and eslintrc is no longer in the tree at all.",
|
|
105
114
|
"minimatch@>=4 <10": "Bounded raise of every minimatch 4.x-9.x install to 10.2.6, whose brace-expansion ^5.0.8 is patched. Covers filelist (gluegun > ejs > jake > filelist, PRODUCTION-reachable, minimatch ^5.0.1), @typescript-eslint/typescript-estree (^9.0.4) and jest-config/jest-runtime/@jest/reporters (^9). Verified safe per consumer: filelist calls only the static helper `minimatch.match(files, pat, opts)`; typescript-estree calls the named `minimatch(filePath, pattern, { dot: true })`; the three jest packages declare minimatch but never require it. Floored at >=4 so the 3.x line is NOT swept in: minimatch 3.x is callable while 9.x/10.x export an object with __esModule but no `default` key, so sweeping it would break any consumer that calls the default export. Drop once these consumers request minimatch >=10 themselves.",
|
|
106
115
|
"babel-plugin-istanbul > test-exclude@<8": "test-exclude 6.0.0 pins minimatch ^3.0.4 and glob ^7. test-exclude 8.0.0 uses minimatch ^10.2.2 + glob ^13 (the glob major this project already ships) and is still CJS with the same `module.exports = TestExclude` class shape, so babel-plugin-istanbul's _interopRequireDefault + `new TestExclude(opts)` keeps working. Drop once babel-plugin-istanbul widens its ^6.0.0 range.",
|
|
107
|
-
"fs-jetpack > minimatch@<10": "Same chain, PRODUCTION-reachable (gluegun > fs-jetpack). Safe: lib/utils/matcher.js does `require('minimatch').Minimatch` and uses only `new Minimatch(pattern, { matchBase, nocomment, nocase, dot })`, `.negate` and `.match()` - all verified against 10.x. Not fixable by upgrading fs-jetpack: gluegun@5.2.2 is the latest release and fs-jetpack@5.1.0 still requests minimatch ^5.1.0 (brace-expansion ^2.0.1, also unpatched)."
|
|
108
|
-
"@istanbuljs/load-nyc-config": "GHSA-5p4m-2wfm-xmqj (high): quadratic CPU consumption resolving !!omap. Patched only in 4.3.1 - the advisory states the fix was NOT backported to 3.x, so 3.15.0 is the end of its line and there is nothing to raise it to within the major. The one 3.x path is dev-only: ts-jest > @jest/transform > babel-plugin-istanbul > @istanbuljs/load-nyc-config > js-yaml@3.15.0. Cross-major export shape verified before adding (repo policy): load-nyc-config calls `require('js-yaml').load(...)` at index.js:80, and 4.x exports `load` - so the raise is API-compatible. It is also strictly SAFER: 4.x `load` behaves like 3.x `safeLoad`, refusing arbitrary type construction, and the input here is a repo-local .nycrc.yml. Scoped to this ONE consumer rather than raised globally: that is the call site whose shape was verified, and a global raise would silently apply to consumers nobody checked. A top-level `js-yaml@<4.3.1` selector was tried first and npm did not apply it to this nested path at all - the scoped form is what actually resolves. Remove once ts-jest's istanbul chain requests a patched js-yaml itself."
|
|
116
|
+
"fs-jetpack > minimatch@<10": "Same chain, PRODUCTION-reachable (gluegun > fs-jetpack). Safe: lib/utils/matcher.js does `require('minimatch').Minimatch` and uses only `new Minimatch(pattern, { matchBase, nocomment, nocase, dot })`, `.negate` and `.match()` - all verified against 10.x. Not fixable by upgrading fs-jetpack: gluegun@5.2.2 is the latest release and fs-jetpack@5.1.0 still requests minimatch ^5.1.0 (brace-expansion ^2.0.1, also unpatched)."
|
|
109
117
|
},
|
|
110
118
|
"overrides": {
|
|
111
119
|
"semver@*": "7.8.5",
|
|
@@ -118,10 +126,7 @@
|
|
|
118
126
|
"babel-plugin-istanbul": {
|
|
119
127
|
"test-exclude@<8": "8.0.0"
|
|
120
128
|
},
|
|
121
|
-
"minimatch@>=4 <10": "10.2.6"
|
|
122
|
-
"@istanbuljs/load-nyc-config": {
|
|
123
|
-
"js-yaml": "4.3.1"
|
|
124
|
-
}
|
|
129
|
+
"minimatch@>=4 <10": "10.2.6"
|
|
125
130
|
},
|
|
126
131
|
"//jest.workerIdleMemoryLimit": "Recycle a ts-jest worker once its heap passes this. Guards against an intermittent `A jest worker process was terminated by another process: signal=SIGSEGV` that kills ONE suite while every other test passes (seen twice in marketplace*, both under `npm run check`, never reproducible on demand - 0 in 9 targeted runs incl. --maxWorkers=16). It is a worker crash, NOT an assertion failure: the signature is `Test suite failed to run` with the remaining count still green. All versions are current and in-range (node 24 / jest 30 / ts-jest 29 / ts 6), so this is a resilience measure against unbounded worker heap growth, not a proven root-cause fix - if it recurs, capture the suite name and re-open.",
|
|
127
132
|
"jest": {
|