{ "name": "heros-web", "version": "0.1.0", "private": true, "type": "module", "scripts": { "dev": "vite --host 0.0.0.0", "debug": "vite --host 0.0.0.0 --debug", "build": "tsc && vite build", "generate:audio": "node scripts/generate-bgm.mjs", "generate:camp-audio": "node scripts/generate-camp-audio.mjs", "generate:sfx": "node scripts/generate-sfx.mjs", "export:battle-map-v2-data": "node scripts/export-battle-map-v2-data.mjs", "generate:battle-maps-v2": "node scripts/export-battle-map-v2-data.mjs && python scripts/generate-battle-maps-v2.py", "audit:equipment-icons": "node scripts/audit-equipment-icon-quality.mjs", "audit:visual-assets": "node scripts/audit-visual-asset-quality.mjs", "preview": "vite preview --host 0.0.0.0", "measure:performance": "node scripts/measure-performance.mjs", "verify:performance": "node scripts/measure-performance.mjs", "verify:battle-data": "node scripts/verify-battle-scenario-data.mjs", "verify:campaign-data": "node scripts/verify-campaign-flow-data.mjs", "verify:campaign-save": "node scripts/verify-campaign-save-normalization.mjs", "verify:battle-save": "node scripts/verify-battle-save-normalization.mjs", "verify:battle-usables": "node scripts/verify-battle-usables.mjs", "verify:sortie-synergy": "node scripts/verify-sortie-synergy.mjs", "verify:sortie-recommendations": "node scripts/verify-sortie-recommendations.mjs", "verify:camp-rewards": "node scripts/verify-camp-reward-data.mjs", "verify:camp-skins": "node scripts/verify-camp-skin-data.mjs", "verify:camp-soundscapes": "node scripts/verify-camp-soundscape-data.mjs", "verify:sound-director": "node scripts/verify-sound-director.mjs", "verify:campaign-recruits": "node scripts/verify-campaign-recruit-data.mjs", "verify:equipment-catalog": "node scripts/verify-equipment-catalog-data.mjs", "verify:inventory-rewards": "node scripts/verify-inventory-reward-data.mjs", "verify:story-assets": "node scripts/verify-story-asset-data.mjs", "verify:story-images": "node scripts/verify-story-image-asset-data.mjs", "verify:visual-assets": "node scripts/verify-visual-asset-data.mjs", "verify:unit-sprites": "node scripts/verify-unit-sprite-asset-data.mjs", "verify:battle-map-assets": "node scripts/verify-battle-map-asset-data.mjs", "verify:audio-assets": "node scripts/verify-audio-asset-data.mjs", "verify:static-data": "node scripts/verify-static-data.mjs", "verify:flow": "node scripts/verify-flow.mjs", "verify:save-flow": "node scripts/verify-save-retry-flow.mjs", "verify:release": "node scripts/verify-release-candidate.mjs", "verify:local-release": "pnpm run verify:static-data && tsc --noEmit && pnpm run build && pnpm run verify:release && pnpm run verify:performance", "verify:public-deploy": "node scripts/verify-public-deploy.mjs", "qa:representative": "node scripts/qa-representative-battles.mjs", "qa:battle-maps:webgl": "node scripts/qa-representative-battles.mjs --set=campaign --battles=1,9,18,22,33,40,46,54,59,61,64,66 --renderer=webgl --report=dist/qa-battle-maps-webgl.json", "qa:smoke": "node scripts/qa-representative-battles.mjs --set=smoke", "qa:early": "node scripts/qa-representative-battles.mjs --set=campaign --battles=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66", "qa:early:repeat": "node scripts/qa-repeat.mjs --set=campaign --battles=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66", "deploy:nas": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/deploy-nas.ps1 -Build", "deploy:nas:dist": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/deploy-nas.ps1", "ship:release": "node scripts/ship-release.mjs" }, "dependencies": { "phaser": "^3.90.0" }, "devDependencies": { "@types/node": "^24.0.4", "playwright": "^1.61.0", "typescript": "^5.8.3", "vite": "^6.3.5" } }