mirror of
https://github.com/jetkvm/cloud-api.git
synced 2026-05-21 05:20:36 +00:00
b24a057591
* feat: add SKU-aware OTA release artifacts Persist OTA artifact URL/hash data separately from rollout state so stable release responses can choose artifacts by compatible SKU while release rollout remains version/type based. * fix: select compatible OTA releases by SKU Ensure stable release selection only considers releases with artifacts compatible with the requested SKU, and tighten tests around the DB-backed OTA contract. * fix: match production OTA release responses Only expose stable signature URLs that actually exist and preserve production's version-first SKU error behavior. * fix: restrict legacy OTA artifacts and make sync create-only Pre-SKU artifacts (no skus/ folder) are jetkvm-v2 only. Marking them compatible with jetkvm-v2-sdmmc would brick devices that received firmware predating their hardware. Future SKUs must opt in via an explicit skus/<sku>/ upload. sync-releases now skips releases already in the DB instead of upserting them. This prevents routine sync runs from rewriting Release.url/hash or appending duplicate ReleaseArtifact rows if R2_CDN_URL ever changes. Backfills and repairs are left to one-off scripts. * refactor: drop forceUpdate query parameter from /releases The flag is no longer sent by any client. Routine update checks now always go through the rollout-aware default-and-latest path, which is what forceUpdate effectively short-circuited to. Removes one query parameter, one branch in the handler, and the corresponding axis from the compare-releases sweep. * fix: skip incompatible defaults and parallelize stable DB lookups getDefaultRelease previously picked the newest 100%-rolled-out release without checking SKU compatibility. If that release lacked a compatible artifact, the request 404'd downstream even though older 100%-rolled-out releases had valid binaries for the SKU. It now filters to releases that actually ship a compatible artifact before selecting the latest, falling back to a 404 only when no compatible default exists. The four DB lookups in the stable rollout-aware path are independent; run them concurrently so background-check latency drops from ~4 round trips to ~1.
63 lines
2.0 KiB
JSON
63 lines
2.0 KiB
JSON
{
|
|
"name": "jetkvm-cloud-api",
|
|
"version": "1.0.0",
|
|
"description": "JetKVM Cloud API and Websocket Server",
|
|
"main": "dist/src/index.js",
|
|
"scripts": {
|
|
"start": "NODE_ENV=production node -r ts-node/register ./src/index.ts",
|
|
"dev": "NODE_ENV=development node --watch --watch-path=./src --env-file=.env.development -r ts-node/register ./src/index.ts",
|
|
"dev:debug": "NODE_ENV=development node --watch --watch-path=./src --env-file=.env.development -r ts-node/register ./src/index.ts --inspect-brk",
|
|
"prisma-dev": "prisma generate --watch",
|
|
"prisma-dev-migrate": "prisma migrate dev",
|
|
"prisma-migrate": "prisma migrate deploy",
|
|
"seed": "NODE_ENV=development node -r ts-node/register --env-file=.env.development ./scripts/seed.ts",
|
|
"sync-releases": "NODE_ENV=development node -r ts-node/register --env-file=.env.development ./scripts/sync-releases.ts",
|
|
"build": "tsc",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "vitest run --coverage"
|
|
},
|
|
"engines": {
|
|
"node": "22.x"
|
|
},
|
|
"keywords": [],
|
|
"author": "JetKVM",
|
|
"license": "GPL-2.0",
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "^3.654.0",
|
|
"@prisma/client": "^5.13.0",
|
|
"@tsconfig/node22": "^22.0.0",
|
|
"@types/cookie-session": "^2.0.49",
|
|
"@types/cors": "^2.8.17",
|
|
"@types/node": "^20.12.10",
|
|
"@types/ws": "^8.5.10",
|
|
"cookie-session": "^2.1.0",
|
|
"cors": "^2.8.5",
|
|
"dotenv": "^16.4.7",
|
|
"express": "^5",
|
|
"helmet": "^7.1.0",
|
|
"http-proxy-middleware": "^3.0.3",
|
|
"jose": "^5.2.4",
|
|
"lru-cache": "^11.2.2",
|
|
"openid-client": "^5.6.5",
|
|
"prisma": "^5.13.0",
|
|
"semver": "^7.6.3",
|
|
"ts-node": "^10.9.2",
|
|
"typescript": "^5.4.5",
|
|
"ws": "^8.17.1",
|
|
"zod": "^4.3.6"
|
|
},
|
|
"optionalDependencies": {
|
|
"bufferutil": "^4.0.8"
|
|
},
|
|
"devDependencies": {
|
|
"@types/express": "^5.0.6",
|
|
"@types/lru-cache": "^7.10.9",
|
|
"@types/semver": "^7.5.8",
|
|
"@vitest/coverage-v8": "^4.0.18",
|
|
"aws-sdk-client-mock": "^4.1.0",
|
|
"prettier": "3.2.5",
|
|
"vitest": "^4.0.18"
|
|
}
|
|
}
|