diff --git a/templates/api-reference/README.md b/templates/api-reference/README.md index d582223..7bb3d54 100644 --- a/templates/api-reference/README.md +++ b/templates/api-reference/README.md @@ -31,6 +31,7 @@ The seeded content documents Hooklane, a fictional webhook delivery API with fou - **Build tool:** Nest CLI (`nest build`, tsc under the hood) - **Styling:** Plain hand-written CSS with centralized design tokens - **Linting:** ESLint (flat config with typescript-eslint) +- **Overrides:** `handlebars@^4.7.10` — `hbs@4.3.1` (latest) pins `handlebars@4.7.9` exactly (GHSA-8r5x-fm3f-whwj, GHSA-p8wg-vrv2-v86f, GHSA-xw65-4hp5-5hc7). Remove when `hbs` releases with a newer pin. ## Getting started diff --git a/templates/api-reference/package-lock.json b/templates/api-reference/package-lock.json index c37ba14..9ffadce 100644 --- a/templates/api-reference/package-lock.json +++ b/templates/api-reference/package-lock.json @@ -2355,12 +2355,12 @@ } }, "node_modules/handlebars": { - "version": "4.7.9", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", - "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "version": "4.7.10", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.10.tgz", + "integrity": "sha512-P5VJMVM7qgBn6vjXMw8WG9uVI+ncf2pi72j4de4yz5ZULLj2RGqLYaKOYGsgyrViQ0tePOVlN1tDCCXXtFqXKg==", "license": "MIT", "dependencies": { - "minimist": "^1.2.5", + "minimist": "^1.2.8", "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" diff --git a/templates/api-reference/package.json b/templates/api-reference/package.json index cfd03cf..92eeeec 100644 --- a/templates/api-reference/package.json +++ b/templates/api-reference/package.json @@ -41,5 +41,8 @@ "eslint": "^10.9.1", "typescript": "^6.0.2", "typescript-eslint": "^8.68.0" + }, + "overrides": { + "handlebars": "^4.7.10" } } diff --git a/templates/sunday-league/package-lock.json b/templates/sunday-league/package-lock.json index 5e0f479..8eeae69 100644 --- a/templates/sunday-league/package-lock.json +++ b/templates/sunday-league/package-lock.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@angular/build": "^21.2.25", - "@angular/cli": "^21.2.0", + "@angular/cli": "^21.2.27", "@angular/compiler-cli": "^21.2.0", "@eslint/js": "^10.0.1", "angular-eslint": "21.4.0", @@ -255,13 +255,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2102.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.23.tgz", - "integrity": "sha512-ipRoLCsfI7NiAKKl8EpDYXLFn09df1Cyz2Qy+VOOvoWO1D4VZo9GeW76U2CnrJm7VuBANfMKwhN5FitZr0HPxQ==", + "version": "0.2102.27", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.27.tgz", + "integrity": "sha512-nMxXG8j9Pb+wYdn4WuNdf1xC04Nk8EfRaA1CH9PAvbmk3S07tvymrWpoGjUf+8V0pMQk5vubGQLG4pYhsxxLNQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.23", + "@angular-devkit/core": "21.2.27", "rxjs": "7.8.2" }, "bin": { @@ -274,9 +274,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "21.2.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.23.tgz", - "integrity": "sha512-CUFy9nUzuLwH4GIIe4nqHPKM8OOnW1T0aYBr64yYoz75v3xN4239Pz3fdvF3JvRPR4S1hmWORZsiSQLfWhdlOw==", + "version": "21.2.27", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.27.tgz", + "integrity": "sha512-phny+RUMoyntTPW/F0Mx9vUlftptyePX1aPsd4s53h227qs/m66NMPO+0MzQpi2YGyHfgqv905cB6X4h096y7w==", "dev": true, "license": "MIT", "dependencies": { @@ -302,13 +302,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "21.2.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.23.tgz", - "integrity": "sha512-SHrhkO0fdHRl01lxL5SnPGBjnL2o6KiTfD0r9132KbNGe7HjWp0BgwGmUVKROMkPWGAdVpgNmuirPgT6wdISLA==", + "version": "21.2.27", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.27.tgz", + "integrity": "sha512-plZD0b3TlITN3v/Z9Tk2dMlU1Cu1vH4dgx3aehz4cdGrJoKEdjmJ+cgEjiGRjrgiRzKO3jGucFM/gZ3g0+aIwQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.23", + "@angular-devkit/core": "21.2.27", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", "ora": "9.3.0", @@ -577,19 +577,19 @@ } }, "node_modules/@angular/cli": { - "version": "21.2.23", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.23.tgz", - "integrity": "sha512-8FLVNm+HnSS7LPNoWv0tIWbEIy09YAaRj3HCRrCNKpfAksn6LHUXNT+EGsY3UvWEnymhQYWXf7y28p9yoOVY4Q==", + "version": "21.2.27", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.27.tgz", + "integrity": "sha512-B/RtfOhx/oMVXmmdea41T498YGPKA0mBv19gzypjEsw00o2LP9ALdzooIqZBPKq5N8gYHE5vuJcCx5OUkjNHHg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2102.23", - "@angular-devkit/core": "21.2.23", - "@angular-devkit/schematics": "21.2.23", + "@angular-devkit/architect": "0.2102.27", + "@angular-devkit/core": "21.2.27", + "@angular-devkit/schematics": "21.2.27", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.30.0", - "@schematics/angular": "21.2.23", + "@modelcontextprotocol/sdk": "1.31.0", + "@schematics/angular": "21.2.27", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.48.1", "ini": "6.0.0", @@ -600,7 +600,7 @@ "parse5-html-rewriting-stream": "8.0.0", "semver": "7.7.4", "yargs": "18.0.0", - "zod": "4.3.6" + "zod": "4.6.6" }, "bin": { "ng": "bin/ng.js" @@ -1649,16 +1649,16 @@ "optional": true }, "node_modules/@hono/node-server": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.1.tgz", - "integrity": "sha512-ELuehkj5VCBdgEw9zs+ivkKwyzzUCSQuE96YmiPvn1ECBoZCczbFXJLeEGMTYjphP6gydh4pHMqEYPVMYUVgQg==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.5.tgz", + "integrity": "sha512-MgP/I06GdvsilDspMk/qmRzpk8LOUStP6jFAbSRi40W09DhoyUn+Mj7eyKICPqeYKybOjVFLVIAQzvu1bfIa7Q==", "dev": true, "license": "MIT", "engines": { "node": ">=20" }, "peerDependencies": { - "hono": "^4" + "hono": "^4 || ^5.0.0-0" } }, "node_modules/@humanfs/core": { @@ -2290,9 +2290,9 @@ ] }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz", - "integrity": "sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.31.0.tgz", + "integrity": "sha512-UvTMgnNlnIBO/22ob2RcVGDlcvOslQs8T59+FTGdA0L27a39fdGF/EDETNtDVK4DZGpwomlsYpRdA8UXcVL/pw==", "dev": true, "license": "MIT", "dependencies": { @@ -3869,14 +3869,14 @@ ] }, "node_modules/@schematics/angular": { - "version": "21.2.23", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.23.tgz", - "integrity": "sha512-bsQm5NbmaOhYzplQbanMp/PTTnZkxcK8ZlWTIrEO2kb5GzOUyl8RGddG4uM35mNyDcQHFEwNLbYkNK9WZM3x1g==", + "version": "21.2.27", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.27.tgz", + "integrity": "sha512-QFI9VIlguYqubM/kOAO5Te++QAzcdI8cPkKpkcxCarskd3NecXya1dF1thSFj9f7UjZVOc7JKb6gbsjVH7n90A==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.23", - "@angular-devkit/schematics": "21.2.23", + "@angular-devkit/core": "21.2.27", + "@angular-devkit/schematics": "21.2.27", "jsonc-parser": "3.3.1" }, "engines": { @@ -5679,9 +5679,9 @@ "license": "MIT" }, "node_modules/content-disposition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", - "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-2.0.1.tgz", + "integrity": "sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==", "dev": true, "license": "MIT", "engines": { @@ -6422,16 +6422,16 @@ "license": "Apache-2.0" }, "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.3.0.tgz", + "integrity": "sha512-qCqy1xSoaugxOD4IVHb1ZWdkvCF2W3aE2okKouWj8VwJ+ztskSiXoBnCSJqfKT+cVPJhuJqe9YLbY425+Zh00g==", "dev": true, "license": "MIT", "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", + "body-parser": "^2.3.0", + "content-disposition": "^2.0.1", + "content-type": "^2.0.0", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", @@ -6447,14 +6447,14 @@ "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", + "proxy-addr": "^2.0.8", + "qs": "^6.16.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", - "type-is": "^2.0.1", + "type-is": "^2.1.0", "vary": "^1.1.2" }, "engines": { @@ -6466,9 +6466,9 @@ } }, "node_modules/express-rate-limit": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.0.tgz", - "integrity": "sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.1.tgz", + "integrity": "sha512-2FXbqkygil3mZiXzEtM0IjE/UBmBNot0J1GEVrJT4JbrvwOSoEtqtO+wHbiMQELWe1eNvHoYRg2dkjOid+6JkA==", "dev": true, "license": "MIT", "dependencies": { @@ -6485,6 +6485,20 @@ "express": ">= 4.11" } }, + "node_modules/express/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -8740,9 +8754,9 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz", - "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.1.tgz", + "integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10444,9 +10458,9 @@ } }, "node_modules/zod": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", - "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.6.tgz", + "integrity": "sha512-4UmzQUF5fxvfcYHlbjBmejU+w+hbDnWFx4aS8kBx7nPBHcO2SqPbpAG8snbdg+Xse4pRefR98hgjFgIMCI/UhA==", "dev": true, "license": "MIT", "funding": { diff --git a/templates/sunday-league/package.json b/templates/sunday-league/package.json index 991b159..1bad2b6 100644 --- a/templates/sunday-league/package.json +++ b/templates/sunday-league/package.json @@ -31,7 +31,7 @@ }, "devDependencies": { "@angular/build": "^21.2.25", - "@angular/cli": "^21.2.0", + "@angular/cli": "^21.2.27", "@angular/compiler-cli": "^21.2.0", "@eslint/js": "^10.0.1", "angular-eslint": "21.4.0",