mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-07-26 20:00:08 +00:00
04f35fdf22
@aws-sdk/client-ecr and @aws-sdk/client-s3 each pull in dozens of
@smithy/* and middleware-* transitive packages but only fire when an
operator configures an ECR registry or cloud backup respectively. Move
both to optionalDependencies so the package classification matches
their runtime role and operators who never use either feature can run
`npm ci --omit=optional` for a ~150 MB-slimmer image.
The default Dockerfile install (`npm ci --omit=dev`) keeps shipping
the SDKs, so default installs are unchanged. The dynamic imports in
CloudBackupService.loadS3Sdk and RegistryService.fetchEcrToken now
catch a missing-module failure and throw a wrapped Error whose
message names the recovery path (`reinstall without --omit=optional`)
and whose cause propagates the original module-not-found error for
debugging.
Bumps tsconfig.json's target and lib to ES2022 so `new Error(msg,
{ cause })` is typed; Node 25 already supports this at runtime.
82 lines
2.3 KiB
JSON
82 lines
2.3 KiB
JSON
{
|
|
"name": "backend",
|
|
"version": "1.0.0",
|
|
"description": "",
|
|
"main": "index.js",
|
|
"scripts": {
|
|
"postinstall": "test -f scripts/generate-version.js && node scripts/generate-version.js || true",
|
|
"prebuild": "node scripts/generate-version.js",
|
|
"build": "tsc",
|
|
"start": "node dist/index.js",
|
|
"predev": "node scripts/generate-version.js",
|
|
"dev": "nodemon --watch src --ext ts,json --exec ts-node src/index.ts",
|
|
"test": "vitest run",
|
|
"lint": "eslint src",
|
|
"reset-mfa": "node dist/cli/resetMfa.js"
|
|
},
|
|
"keywords": [],
|
|
"author": "",
|
|
"license": "SEE LICENSE IN LICENSE",
|
|
"type": "commonjs",
|
|
"devDependencies": {
|
|
"@eslint/js": "^10.0.1",
|
|
"@types/bcrypt": "^6.0.0",
|
|
"@types/better-sqlite3": "^7.6.13",
|
|
"@types/compression": "^1.8.1",
|
|
"@types/cookie-parser": "^1.4.10",
|
|
"@types/cors": "^2.8.19",
|
|
"@types/dockerode": "^4.0.1",
|
|
"@types/express": "^5.0.6",
|
|
"@types/http-proxy": "^1.17.17",
|
|
"@types/http-proxy-middleware": "^1.0.0",
|
|
"@types/jsonwebtoken": "^9.0.10",
|
|
"@types/multer": "^2.1.0",
|
|
"@types/node": "^25.3.0",
|
|
"@types/semver": "^7.7.1",
|
|
"@types/supertest": "^7.2.0",
|
|
"@types/tar-stream": "^3.1.4",
|
|
"@types/ws": "^8.18.1",
|
|
"@types/yaml": "^1.9.6",
|
|
"eslint": "^10.1.0",
|
|
"nodemon": "^3.1.13",
|
|
"supertest": "^7.2.2",
|
|
"ts-node": "^10.9.2",
|
|
"typescript": "^6.0.2",
|
|
"typescript-eslint": "^8.0.0",
|
|
"vitest": "^4.1.0"
|
|
},
|
|
"optionalDependencies": {
|
|
"@aws-sdk/client-ecr": "^3.1019.0",
|
|
"@aws-sdk/client-s3": "^3.1037.0"
|
|
},
|
|
"dependencies": {
|
|
"axios": "^1.15.0",
|
|
"bcrypt": "^6.0.0",
|
|
"better-sqlite3": "^12.6.2",
|
|
"composerize": "^1.7.5",
|
|
"compression": "^1.8.1",
|
|
"cookie-parser": "^1.4.7",
|
|
"cors": "^2.8.6",
|
|
"cron-parser": "^5.5.0",
|
|
"dockerode": "^5.0.0",
|
|
"express": "^5.2.1",
|
|
"express-rate-limit": "^8.3.1",
|
|
"helmet": "^8.1.0",
|
|
"http-proxy": "^1.18.1",
|
|
"http-proxy-middleware": "^3.0.5",
|
|
"isomorphic-git": "^1.37.5",
|
|
"jsonwebtoken": "^9.0.3",
|
|
"ldapts": "^8.1.7",
|
|
"multer": "^2.1.1",
|
|
"node-pty": "^1.1.0",
|
|
"openid-client": "^6.8.2",
|
|
"otplib": "^13.4.0",
|
|
"semver": "^7.7.4",
|
|
"systeminformation": "^5.31.1",
|
|
"tar-stream": "^3.1.8",
|
|
"ws": "^8.19.0",
|
|
"yaml": "^2.8.2",
|
|
"zod": "^4.3.6"
|
|
}
|
|
}
|