Files
healer-man/package.json
T
2026-09-23 16:14:19 -04:00

180 lines
15 KiB
JSON

{
"name": "healer-man",
"private": true,
"version": "0.1.58",
"type": "module",
"scripts": {
"dev": "vite --host 0.0.0.0",
"dev:shelved": "vite --host 0.0.0.0 --mode shelved",
"start": "node server/server.mjs",
"db:init": "node scripts/init-game-database.mjs",
"db:backup": "node scripts/backup-game-database.mjs",
"server:test": "node --test server/*.test.mjs",
"content:publish": "node scripts/content/publish-content.mjs",
"web:prepare": "node scripts/content/prepare-web-bootstrap.mjs",
"android:prepare": "node scripts/content/prepare-android-bootstrap.mjs",
"content:test": "node --test scripts/content/*.test.mjs",
"effects:generate": "node scripts/combat-effects/generate-manifest.mjs --package-audio && node scripts/combat-effects/package-wow-original.mjs",
"effects:audit": "node scripts/combat-effects/package-wow-original.mjs --audit",
"effects:wow": "node scripts/combat-effects/package-wow-original.mjs",
"effects:priest": "npm run effects:wow",
"effects:test": "node --test scripts/combat-effects/*.test.mjs",
"wow335:abilities": "node scripts/generate-wow335-abilities.mjs",
"coa:sync": "node scripts/sync-ascension-coa.mjs",
"coa:sync:live": "node scripts/sync-ascension-coa.mjs --tooltips",
"coa:icons": "node scripts/export-spell-icons.mjs",
"ascension:talents": "node scripts/generate-wow335-talents.mjs ../wow335a/Interface/AddOns/PlayerBotManager/PBM/PBM_TalentData.lua ../LadiksMPQEditor/client-current/area-52/patch-D/DBFilesClient/Spell.dbc src/game/wow335Talents.generated.ts ../LadiksMPQEditor/client-current/area-52/patch-D/DBFilesClient/Talent.dbc",
"catalogs:shard": "vite-node scripts/generate-catalog-shards.ts",
"talents:generate": "vite-node scripts/generate-party-runtime-talents.ts",
"ascension:sync": "npm run coa:sync && npm run wow335:abilities && npm run ascension:talents && npm run coa:icons && npm run catalogs:shard",
"manastorm:import": "node scripts/manastorm-import/cli.mjs",
"manastorm:forensics": "node scripts/manastorm-import/forensics-cli.mjs",
"manastorm:sync": "npm run manastorm:import && npm run manastorm:forensics && npm run coa:icons",
"manastorm:maps:discover": "node scripts/manastorm-pipeline/cli.mjs discover",
"manastorm:maps:scaffold": "node scripts/manastorm-pipeline/cli.mjs scaffold",
"manastorm:maps:import": "node scripts/manastorm-assets/import-existing-stage.mjs",
"manastorm:maps:validate": "node scripts/manastorm-pipeline/cli.mjs validate",
"manastorm:maps:khronos": "node scripts/manastorm-assets/validate-package-glbs.cjs public/assets/game/manastorm",
"loot:generate": "node scripts/generate-loot-catalog.mjs",
"dungeon:discover": "node scripts/dungeon-pipeline/cli.mjs discover",
"dungeon:discover:all": "node scripts/dungeon-pipeline/discover-all.mjs",
"dungeon:epoch:catalog": "node scripts/dungeon-pipeline/import-epoch-client.mjs",
"dungeon:epoch:build": "node scripts/dungeon-pipeline/build-epoch-dungeons.mjs",
"dungeon:epoch:creatures:package": "node scripts/dungeon-pipeline/package-epoch-creatures.mjs",
"dungeon:epoch:creatures": "node scripts/dungeon-pipeline/build-epoch-creatures.mjs",
"dungeon:epoch:scripts": "node scripts/dungeon-pipeline/import-azerothcore-scripts.mjs",
"dungeon:epoch:sync": "node scripts/dungeon-pipeline/sync-epoch-dungeons.mjs",
"dungeon:source:azerothcore": "node scripts/dungeon-pipeline/import-azerothcore-world.mjs",
"dungeon:catalog": "node scripts/dungeon-pipeline/compile-campaign-catalog.mjs",
"dungeon:maps:import": "node scripts/dungeon-pipeline/import-wow-maps.mjs",
"dungeon:canonicalize-environments": "node scripts/dungeon-pipeline/relink-canonical-environments.mjs",
"dungeon:dedupe-creatures": "node scripts/dungeon-pipeline/dedupe-shared-creatures.mjs",
"dungeon:test-creature-animation-policy": "node --test scripts/dungeon-pipeline/runtime-creature-animations.test.mjs",
"dungeon:test-creature-mesh-policy": "node --test scripts/dungeon-pipeline/creature-mesh-consolidation.test.mjs",
"dungeon:optimize-creature-animations": "node scripts/dungeon-pipeline/optimize-shipped-creature-animations.mjs && node scripts/dungeon-pipeline/optimize-shared-creatures.mjs && npm run dungeon:catalog",
"dungeon:optimize-shared-creatures": "node scripts/dungeon-pipeline/optimize-shared-creatures.mjs",
"dungeon:five-player:import": "node scripts/dungeon-pipeline/import-five-player-dungeon.mjs",
"dungeon:five-player:import:remaining": "node scripts/dungeon-pipeline/import-remaining-five-player-dungeons.mjs",
"dungeon:five-player:verify": "node scripts/dungeon-pipeline/verify-five-player-dungeon-imports.mjs",
"dungeon:wow:audit": "vite-node scripts/dungeon-pipeline/audit-wow-dungeon-content.mjs",
"dungeon:boss-effects:audit": "node scripts/dungeon-pipeline/audit-boss-spell-effects.mjs",
"dungeon:boss-pressure:audit": "vite-node scripts/dungeon-pipeline/audit-boss-party-pressure.ts",
"dungeon:routes:generate": "node scripts/dungeon-pipeline/generate-dungeon-route-candidates.mjs",
"dungeon:wow:functionality:audit": "vite-node scripts/dungeon-pipeline/audit-wow-dungeon-functionality.ts",
"dungeon:wow:stairs:audit": "node --max-old-space-size=8192 scripts/dungeon-pipeline/audit-wow-stairs.ts",
"dungeon:wow:stairs:refresh": "node --max-old-space-size=8192 scripts/dungeon-pipeline/audit-wow-stairs.ts --write",
"dungeon:wow:test": "vitest run src/game/wowDungeonContent.test.ts",
"dungeon:wow:export-tool:test": "node --test scripts/dungeon-pipeline/wow-export-tool.test.mjs",
"dungeon:ascension:recovery:validate": "node scripts/dungeon-pipeline/validate-ascension-custom-dungeon-recovery.mjs --skip-dbc",
"dungeon:wow:all": "node scripts/dungeon-pipeline/run-all-wow-dungeons.mjs",
"dungeon:extract": "node scripts/dungeon-pipeline/cli.mjs extract",
"dungeon:creatures": "node scripts/dungeon-pipeline/cli.mjs creatures",
"dungeon:convert": "node scripts/dungeon-pipeline/cli.mjs convert",
"dungeon:optimize": "node scripts/dungeon-pipeline/cli.mjs optimize",
"dungeon:build": "node scripts/dungeon-pipeline/cli.mjs build",
"dungeon:navmesh": "node scripts/dungeon-pipeline/cli.mjs navmesh",
"dungeon:navmesh:conversion": "node scripts/dungeon-pipeline/cli.mjs navmesh-conversion",
"dungeon:validate": "node scripts/dungeon-pipeline/cli.mjs validate",
"arena:assets:build": "node scripts/arena-pipeline/build-wmo-arenas.mjs && node scripts/arena-pipeline/build-custom-arenas.mjs && node scripts/arena-pipeline/prepare-warnorken.mjs",
"arena:assets:validate": "node scripts/arena-pipeline/validate-arenas.mjs",
"arena:abilities:build": "node scripts/arena-pipeline/build-combat-runtime.mjs && node scripts/arena-pipeline/build-runtime-geometry.mjs",
"dungeon:enable": "node scripts/dungeon-pipeline/cli.mjs enable",
"runewaker:forsaken": "node \"%INIT_CWD%\\scripts\\runewaker-pipeline\\build-forsaken-abbey.mjs\"",
"runewaker:forsaken:actors": "node scripts/runewaker-pipeline/build-forsaken-population.mjs --actors-only",
"runewaker:forsaken:population": "node scripts/runewaker-pipeline/build-forsaken-population.mjs",
"runewaker:forsaken:population:refresh": "node scripts/runewaker-pipeline/refresh-forsaken-population.mjs",
"runewaker:discover": "node scripts/runewaker-pipeline/cli.mjs discover",
"runewaker:prepare:all": "node scripts/runewaker-pipeline/cli.mjs prepare-all",
"runewaker:build:all": "node scripts/runewaker-pipeline/cli.mjs build-all --resume",
"runewaker:register:all": "node scripts/runewaker-pipeline/cli.mjs register-all",
"runewaker:refresh:all": "node scripts/runewaker-pipeline/cli.mjs refresh-all",
"runewaker:spells:refresh": "node scripts/runewaker-pipeline/export-spell-catalog.mjs",
"runewaker:loot:refresh": "node scripts/runewaker-pipeline/export-loot-catalog.mjs",
"runewaker:audit:formula-loot": "node --test scripts/runewaker-pipeline/runewaker-formula-export.test.mjs scripts/runewaker-pipeline/runewaker-loot-import.test.mjs && vitest run src/game/runewakerCombatFormula.test.ts src/game/runewakerLootCatalog.test.ts",
"runewaker:bosses:refresh": "npm run runewaker:spells:refresh && node scripts/runewaker-pipeline/import-boss-mechanics.mjs",
"runewaker:players:refresh": "node scripts/runewaker-pipeline/export-player-catalog.mjs && npm run runewaker:players:avatars",
"runewaker:players:avatars": "node scripts/runewaker-pipeline/build-population.mjs --recipe scripts/runewaker-pipeline/recipes/runewaker-player-avatars.json --actors-only && node scripts/runewaker-pipeline/finalize-player-avatar-manifest.mjs",
"runewaker:paperdolls:refresh": "node scripts/runewaker-pipeline/refresh-paperdoll-appearances.mjs",
"runewaker:audit:animation-readiness": "node scripts/runewaker-pipeline/audit-animation-readiness.mjs",
"runewaker:audit:animation-inventory": "node scripts/runewaker-pipeline/inventory-animation-assets.mjs",
"runewaker:audit:runtime-clips": "node scripts/runewaker-pipeline/audit-runtime-clip-coverage.mjs",
"runewaker:audit:pose-batch": "node scripts/runewaker-pipeline/audit-animated-poses.mjs",
"runewaker:audit:pose-master": "node scripts/runewaker-pipeline/generate-master-actor-pose-audit.mjs",
"runewaker:audit:animations": "npm run runewaker:audit:animation-readiness && vitest run src/game/runewakerDungeonAnimation.test.ts src/game/mobAnimation.test.ts src/game/runewakerDungeonRegistry.test.ts",
"runewaker:audit:gameplay": "node scripts/runewaker-pipeline/audit-gameplay-content.mjs && node --test scripts/runewaker-pipeline/encounter-implementation-report.test.mjs",
"runewaker:audit:encounters": "node scripts/runewaker-pipeline/audit-encounter-implementation.mjs && node --test scripts/runewaker-pipeline/encounter-implementation-report.test.mjs",
"runewaker:audit:environment-assembly": "node scripts/runewaker-pipeline/audit-environment-assembly.mjs && node --test scripts/runewaker-pipeline/environment-assembly.test.mjs",
"runewaker:audit:navigation": "node scripts/runewaker-pipeline/analyze-navigation-gaps.mjs && vitest run src/game/runewakerObjectiveRouteAudit.test.ts",
"runewaker:audit:material-alpha": "node scripts/runewaker-pipeline/audit-material-alpha.mjs",
"assets:wailing:instance": "gltf-transform instance ../wow335a/dungeon-export-work/WailingCaverns/converted/wailing-caverns.visual.glb src/assets/game/dungeons/wailing-caverns/wailing-caverns-visual.glb --min 3",
"assets:wailing:creatures:animated": "node scripts/prepareAnimatedCreatures.mjs",
"assets:wailing:creatures:combat": "node scripts/add-combat-creature-clips.mjs",
"assets:wailing:creatures:audit": "node scripts/audit-combat-creature-clips.mjs",
"assets:ktx2": "node scripts/asset-pipeline/compress-ktx2.mjs",
"assets:ktx2:visuals": "node scripts/asset-pipeline/compress-ktx2.mjs --visual-only && npm run assets:ktx2:refresh-metadata",
"assets:ktx2:creatures": "node scripts/asset-pipeline/compress-creature-ktx2.mjs",
"assets:ktx2:audit": "node scripts/asset-pipeline/audit-ktx2.mjs --visual-only --require-all",
"assets:ktx2:refresh-metadata": "node scripts/asset-pipeline/refresh-ktx2-metadata.mjs",
"assets:performance:audit": "node scripts/asset-pipeline/audit-environment-performance.mjs",
"balance:benchmark": "vite-node scripts/combat-benchmark/run.ts",
"balance:lab": "python scripts/balance_lab.py",
"balance:lab:brackets": "python scripts/balance_lab_brackets.py --ready-only",
"balance:lab:npc-audit": "python scripts/balance_lab_brackets.py --ready-only --seat-sweep",
"balance:gui": "vite --mode balance-lab-gui --host 127.0.0.1 --open",
"balance:lab:regression": "python scripts/balance_lab_brackets.py --ready-only --check",
"balance:lab:playtest": "node scripts/playtest-balance-lab.cjs",
"readiness:playtest": "node scripts/playtest-companion-readiness.cjs",
"test:ready-five": "vitest run src/game/companionSpecReadiness.test.ts src/game/readyFiveCertification.test.ts && python -m unittest scripts.test_balance_lab scripts.test_balance_lab_brackets",
"test:rom-five": "vitest run src/game/romFiveValidation.test.ts src/game/romCombatRuntime.test.ts src/game/romCombatMechanics.test.ts src/game/romAbilityCatalogSemantics.test.ts src/game/romPlayerCatalog.test.ts src/game/specializationCatalog.test.ts",
"balance:smoke": "vite-node scripts/combat-benchmark/run.ts --class mage --role damage --scenario damage-single-burst --seeds 1 --duration-scale 0.2",
"prebuild": "npm run loot:generate && npm run web:prepare && npm run assets:ktx2:audit && npm run assets:performance:audit",
"build": "node --max-old-space-size=8192 node_modules/typescript/bin/tsc -b && node --max-old-space-size=8192 node_modules/vite/bin/vite.js build",
"postbuild": "node scripts/content/precompress-static.mjs dist && node scripts/content/verify-release-bundle.mjs dist",
"prebuild:shelved": "npm run loot:generate && npm run arena:abilities:build && npm run web:prepare && npm run arena:assets:validate && npm run assets:ktx2:audit && npm run assets:performance:audit",
"build:shelved": "node --max-old-space-size=8192 node_modules/typescript/bin/tsc -b && node --max-old-space-size=8192 node_modules/vite/bin/vite.js build --mode shelved",
"build:android:web": "npm run prebuild && npm run android:prepare && node --max-old-space-size=8192 node_modules/typescript/bin/tsc -b && node --max-old-space-size=8192 node_modules/vite/bin/vite.js build --mode android && node scripts/content/verify-release-bundle.mjs dist-android",
"android:sync": "npm run build:android:web && cap sync android",
"android:apk": "npm run android:sync && powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/runAndroidGradle.ps1 assembleDebug",
"android:apk:release": "npm run android:sync && powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/runAndroidGradle.ps1 assembleRelease",
"android:install": "npm run android:sync && powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts/runAndroidGradle.ps1 installDebug",
"release:check": "python scripts/release_manager.py --check-release",
"release:gui": "python scripts/release_manager.py",
"preview": "vite preview --host 0.0.0.0",
"pretest": "npm run loot:generate",
"test": "vitest run",
"pretest:shelved": "npm run loot:generate",
"test:shelved": "vitest run --mode shelved",
"test:watch": "vitest"
},
"dependencies": {
"@capacitor/android": "8.4.1",
"@capacitor/core": "8.4.1",
"@react-three/drei": "^10.7.7",
"@react-three/fiber": "^9.6.0",
"@react-three/rapier": "^2.2.0",
"fflate": "^0.8.3",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"three": "^0.179.1",
"zustand": "^5.0.8"
},
"devDependencies": {
"@capacitor/cli": "8.4.1",
"@dimforge/rapier3d-compat": "0.19.2",
"@gltf-transform/cli": "^4.4.1",
"@gltf-transform/core": "^4.4.2",
"@recast-navigation/core": "0.43.1",
"@recast-navigation/generators": "0.43.1",
"@recast-navigation/three": "0.43.1",
"@types/react": "^19.2.0",
"@types/react-dom": "^19.2.0",
"@types/three": "^0.179.0",
"@vitejs/plugin-react": "^5.0.2",
"sharp": "^0.34.5",
"stormlib-js": "^0.1.1",
"typescript": "~5.8.3",
"vite": "^7.3.0",
"vitest": "^3.2.4"
}
}