Files
ukmesh/backend/package.json
T
gadgethd 1d243222ef chore(sync): reconcile with production deploy tree — features, docs, plans gitignored
Bring main up to date with the live UKMesh production tree, reconciled
per-file (tree-wins for deployed features; main-wins where main evolved
past the tree's lineage; hand-merges for mixed files). Verified locally
on the deploy host: backend + frontend typechecks, backend unit suite
(543 pass / 0 fail), frontend suite (147 pass / 0 fail), OpenAPI
contract check, frontend production build, scripts typecheck.

Highlights:
- Deployed features land: tags + recent tags, owner public feed,
  Viterbi path prewarm and prior rebuilds, region participation,
  owner packet-sharing JWT scope, pathing docs, README updates.
- Main-side hardening retained: CI RAM steps + smoke cleanup trap,
  hardened scripts, gitleaks/logging rules, stale-MQTT observer
  protections, alert-receiver queue module, health-status refactor
  with tree retention additions (owner_packet_share_deliveries +
  public_feed_deliveries @30d, node_status_samples @30d — matching
  live TimescaleDB policies).
- Credential-generation client close restored on the tree's ownerAccess
  so the operator revocation tool (owner-auth:revoke) keeps working.
- Migrations renumbered to follow main's 058/059 ledger migrations:
  055_public_feed, 060_region_scope_participation,
  061_packet_share_owner_scope_and_jwt; migration-registry test
  assertions updated to the final numbering.
- Planning/report artifacts removed from the repo; local plans/, *.bak*
  patterns gitignored (deploy tree tidied to match).
2026-10-14 01:48:11 +00:00

58 lines
2.7 KiB
JSON

{
"name": "meshcore-analytics-backend",
"version": "1.0.0",
"private": true,
"type": "module",
"scripts": {
"build": "tsc",
"dev": "tsx watch src/index.ts",
"spam:recompute": "node dist/tools/recomputeSpamSuspects.js",
"spam:messages": "node dist/tools/recomputeSpamMessages.js",
"regions:rebuild": "node dist/tools/rebuildRegionParticipation.js",
"db:migrate": "node dist/tools/migrate.js",
"stats:backfill-rollups": "node dist/tools/backfillStatsRollups.js",
"stats:backfill-multibyte": "node dist/tools/backfillMultibytePathFacts.js",
"stats:seed-chart-snapshot": "node dist/tools/seedStatsChartSnapshot.js",
"db:lifecycle": "node dist/tools/dataLifecycle.js",
"owner-auth:inventory": "node dist/tools/inventoryOwnerAuthorization.js",
"owner-auth:revoke": "node dist/tools/revokeOwnerSessions.js",
"owner-packet-share:encrypt-secret": "node dist/tools/encryptPacketShareSecret.js",
"owner-packet-share:prepare-scotmesh": "node dist/tools/prepareScotmesh.js",
"owner-packet-share:provision-scotmesh": "node dist/tools/provisionScotmesh.js",
"analysis:cleanup-orphans": "node dist/tools/cleanupOrphanedAnalysisRuns.js",
"bench:decode": "tsx src/tools/benchmarkPacketDecode.ts",
"path:accuracy": "tsx src/tools/pathAccuracy.ts",
"load:realtime": "tsx src/tools/loadRealtime.ts",
"test": "node --import tsx --test $(find src -name '*.test.ts' ! -name '*.integration.test.ts' -print) && bash ../scripts/test-alert-receiver.sh",
"test:analysis-integration": "node --import tsx --test src/analysis/runState.integration.test.ts",
"test:ingest-integration": "timeout 300s node --import tsx --test src/db/packetBatch.integration.test.ts src/db/recentRead.integration.test.ts && timeout 90s node --import tsx --test src/ram/ram.integration.test.ts && timeout 60s node --import tsx --test src/ws/publicAuthorization.integration.test.ts",
"test:ram-operational": "timeout 300s node ../scripts/test-ram-redis-acl.mjs",
"typecheck": "tsc --noEmit",
"contract:generate": "tsx src/tools/generateOpenApi.ts",
"contract:check": "tsx src/tools/generateOpenApi.ts --check",
"start": "node dist/index.js"
},
"dependencies": {
"@michaelhart/meshcore-decoder": "^0.3.0",
"compression": "^1.8.2",
"cors": "^2.8.5",
"express": "^5.2.1",
"express-rate-limit": "^8.7.0",
"ioredis": "^6.0.0",
"mqtt": "^5.16.0",
"pg": "^8.23.0",
"prom-client": "^15.1.3",
"ws": "^8.22.0"
},
"devDependencies": {
"@types/compression": "^1.7.5",
"@types/cors": "^2.8.17",
"@types/express": "^5.0.6",
"@types/node": "^26.6.3",
"@types/pg": "^8.23.1",
"@types/ws": "^8.5.12",
"tsx": "^4.23.15",
"typescript": "^7.0.2"
}
}