{ "name": "blacktrigram", "version": "0.7.66", "description": "Black Trigram (흑괘) - Korean Martial Arts Combat Simulator. Reusable game systems, combat mechanics, animation framework, and Korean martial arts data built with React, Three.js, and TypeScript.", "type": "module", "main": "./lib/index.js", "module": "./lib/index.js", "types": "./lib/index.d.ts", "sideEffects": [ "**/*.css" ], "exports": { ".": { "types": "./lib/index.d.ts", "import": "./lib/index.js" }, "./systems": { "types": "./lib/systems/index.d.ts", "import": "./lib/systems/index.js" }, "./types": { "types": "./lib/types/index.d.ts", "import": "./lib/types/index.js" }, "./audio": { "types": "./lib/audio/index.d.ts", "import": "./lib/audio/index.js" }, "./utils": { "types": "./lib/utils/index.d.ts", "import": "./lib/utils/index.js" }, "./components": { "types": "./lib/components/index.d.ts", "import": "./lib/components/index.js" }, "./hooks": { "types": "./lib/hooks/index.d.ts", "import": "./lib/hooks/index.js" }, "./data": { "types": "./lib/data/index.d.ts", "import": "./lib/data/index.js" } }, "files": [ "lib", "README.md", "LICENSE", "SECURITY.md", "ARCHITECTURE.md", "SECURITY_ARCHITECTURE.md", "COMBAT_ARCHITECTURE.md", "DATA_MODEL.md", "THREAT_MODEL.md", "ISMS_REFERENCE_MAPPING.md", "CONTROLS.md", "CRA-ASSESSMENT.md" ], "keywords": [ "korean-martial-arts", "combat-simulator", "threejs", "react", "game-engine", "trigram", "vital-points", "hapkido", "taekwondo", "animation-system", "3d-combat", "i-ching", "typescript", "webgl", "react-three-fiber", "gamedev", "fighting-game", "martial-arts", "game-ai", "physics-engine", "state-machine", "cyberpunk", "korean" ], "author": "Hack23 AB", "license": "Apache-2.0", "repository": { "type": "git", "url": "git+https://github.com/Hack23/blacktrigram.git" }, "bugs": { "url": "https://github.com/Hack23/blacktrigram/issues" }, "homepage": "https://hack23.github.io/blacktrigram/", "publishConfig": { "access": "public", "provenance": true, "registry": "https://registry.npmjs.org/" }, "engines": { "node": ">=26.0.0", "npm": ">=11.0.0" }, "scripts": { "dev": "vite --host --open", "build": "tsc -b && vite build --mode production", "build:analyze": "tsc -b && vite build --mode production && npx vite-bundle-analyzer dist/assets/*.js", "build:production": "NODE_ENV=production tsc -b && vite build --mode production --minify esbuild", "build:profile": "tsc -b && vite build --mode production --profile --minify esbuild", "build:stats": "tsc -b && vite build --mode production && npx vite-bundle-analyzer dist/assets/*.js", "build:fast": "tsc -b --incremental && vite build --mode production --minify esbuild", "build:lib": "rm -rf lib && tsc -p tsconfig.lib.json && tsc-alias -p tsconfig.lib.json && vite build --config vite.lib.config.ts", "prepublishOnly": "npm run lint && npm run check && npm run test && npm run build:lib", "check": "tsc -b", "check:test": "tsc -p tsconfig.test.json --noEmit", "test:check": "tsc -p tsconfig.test.json --noEmit", "check:all": "tsc -b && tsc -p tsconfig.test.json --noEmit", "lint": "eslint .", "preview": "vite preview --host", "preview:analyze": "vite preview --host --mode analyze", "test": "NODE_OPTIONS='--max-old-space-size=8192' vitest run", "test:systems": "vitest run src/systems", "test:systems:watch": "vitest src/systems", "test:systems:ui": "vitest --ui src/systems", "test:systems:coverage": "vitest run --coverage src/systems", "test:ai-integration": "vitest run src/systems/ai/__tests__/AI-Combat-Integration.test.ts", "test:ai-performance": "vitest bench src/systems/ai/__tests__/AI-Performance.bench.ts --run", "cypress:install": "cypress install", "cypress:verify": "cypress verify", "coverage": "NODE_OPTIONS='--max-old-space-size=8192' vitest run --coverage --coverage.reportOnFailure ", "test:ci": "vitest run --coverage", "test:e2e": "mkdir -p cypress/results && start-server-and-test dev http://localhost:5173 'cypress run --browser chrome'", "test:e2e:ci": "mkdir -p cypress/results && start-server-and-test dev http://localhost:5173 'cypress run --headless --browser chrome'", "test:e2e:screens": "mkdir -p cypress/results && start-server-and-test dev http://localhost:5173 'cypress run --browser chrome --spec \"cypress/e2e/screens/*.cy.ts\"'", "test:e2e:screens:ci": "mkdir -p cypress/results && start-server-and-test dev http://localhost:5173 'cypress run --headless --browser chrome --spec \"cypress/e2e/screens/*.cy.ts\"'", "test:e2e:smoke": "mkdir -p cypress/results && start-server-and-test dev http://localhost:5173 'cypress run --browser chrome --spec \"cypress/e2e/app.cy.ts,cypress/e2e/game-journey.cy.ts\"'", "test:e2e:smoke:ci": "mkdir -p cypress/results && start-server-and-test dev http://localhost:5173 'cypress run --headless --browser chrome --spec \"cypress/e2e/app.cy.ts,cypress/e2e/game-journey.cy.ts\"'", "test:e2e:webgl": "mkdir -p cypress/results && start-server-and-test dev http://localhost:5173 'cypress run --browser chrome --spec \"cypress/e2e/webgl-verification.cy.ts\"'", "test:e2e:webgl:ci": "mkdir -p cypress/results && start-server-and-test dev http://localhost:5173 'cypress run --headless --browser chrome --spec \"cypress/e2e/webgl-verification.cy.ts\"'", "compress": "gzip -k dist/assets/*.js && gzip -k dist/assets/*.css", "find:unused": "npm run knip", "test:licenses": "license-compliance --direct --allow 'MIT;ISC;0BSD;BSD-2-Clause;BSD-3-Clause;Apache-2.0;Unlicense;CC0-1.0'", "validate:mcp": "bash scripts/validate-mcp-config.sh", "validate:mermaid": "node scripts/validate-mermaid.mjs", "docs": "typedoc --options typedoc.json", "docs:sitemap": "node generate-sitemaps.js", "build:test-reports": "node scripts/copy-test-reports.js", "test:reliability": "node scripts/generate-reliability-report.cjs", "test:e2ereportmerge": "npx mochawesome-merge build/cypress/mochawesome/*.json > build/cypress/mochawesome-all.json", "test:e2ereporthtmlall": "npx marge -f index.html -o build/cypress/mochawesome build/cypress/mochawesome-all.json", "merge-test-reports": "node --experimental-json-modules ./cypress/support/plugins/merge-reports.js", "docs:dependencies": "mkdir -p docs/dependencies && depcruise --config .dependency-cruiser.cjs --output-type dot src | dot -T svg > docs/dependencies/module-dependencies.svg || echo 'Dependency diagram generation failed - continuing' && touch docs/dependencies/module-dependencies.svg", "docs:diagrams": "node scripts/generate-architecture-diagrams.js", "knip": "knip", "gen:sfx:11": "npx tsx scripts/generate_sfx.ts", "gen:image:openai": "npx tsx scripts/generate_image_openai.ts", "gen:video:openai": "npx tsx scripts/generate_video_openai.ts", "gen:image:bedrock": "npx tsx scripts/generate_image_bedrock.ts", "gen:video:bedrock": "npx tsx scripts/generate_video_bedrock.ts", "gen:music:suno": "npx tsx scripts/generate_music_suno.ts", "gen:sprites:archetype": "npx tsx scripts/generate_archetype_sprites.ts", "audit:assets": "npx tsx scripts/audit-assets.ts", "audit:assets:verbose": "npx tsx scripts/audit-assets.ts --verbose", "audit:events": "npx tsx scripts/audit-event-listeners.ts", "audit:events:verbose": "npx tsx scripts/audit-event-listeners.ts --verbose", "audit:memory": "npx tsx scripts/audit-memory-efficiency.ts", "audit:memory:verbose": "npx tsx scripts/audit-memory-efficiency.ts --verbose", "audit:memory:fix-report": "npx tsx scripts/audit-memory-efficiency.ts --fix-report", "audit:physical": "npx tsx scripts/validate-physical-attributes.ts", "audit:threejs": "npx tsx scripts/audit-threejs-disposal.ts", "audit:threejs:verbose": "npx tsx scripts/audit-threejs-disposal.ts --verbose", "audit:threejs:fix-report": "npx tsx scripts/audit-threejs-disposal.ts --fix-report", "audit:threejs:v2": "npx tsx scripts/audit-threejs-disposal-v2.ts", "audit:threejs:v2:verbose": "npx tsx scripts/audit-threejs-disposal-v2.ts --verbose", "audit:threejs:v2:json": "npx tsx scripts/audit-threejs-disposal-v2.ts --json", "screenshots:capture": "start-server-and-test dev http://localhost:5173 'npx tsx scripts/capture-screenshots.ts'", "screenshots:capture:ci": "start-server-and-test preview http://localhost:4173 'BASE_URL=http://localhost:4173 npx tsx scripts/capture-screenshots.ts'", "screenshots:post": "npx tsx scripts/post-screenshots-to-pr.ts", "screenshots:all": "npm run screenshots:capture && npm run screenshots:post" }, "peerDependencies": { "@react-three/drei": "10.0.0", "@react-three/fiber": "9.0.0", "@react-three/postprocessing": "3.0.0", "postprocessing": "6.0.0", "react": "19.0.0", "react-dom": "19.0.0", "three": "0.184.0" }, "devDependencies": { "@aws-sdk/client-bedrock-runtime": "3.1071.0", "@eslint/js": "10.0.1", "@react-three/drei": "10.7.7", "@react-three/fiber": "9.6.1", "@react-three/postprocessing": "3.0.4", "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "6.9.1", "@testing-library/react": "16.3.2", "@testing-library/user-event": "14.6.1", "@types/node": "25.9.3", "@types/react": "19.2.17", "@types/react-dom": "19.2.3", "@types/three": "0.184.1", "@vitejs/plugin-react": "6.0.2", "@vitest/coverage-v8": "4.1.9", "@vitest/ui": "4.1.9", "cypress": "15.17.0", "cypress-junit-reporter": "1.3.1", "cypress-multi-reporters": "2.0.5", "cypress-wait-until": "3.0.2", "dependency-cruiser": "17.4.3", "dotenv": "17.4.2", "eslint": "10.5.0", "eslint-plugin-react-hooks": "7.1.1", "eslint-plugin-react-refresh": "0.5.3", "globals": "17.6.0", "jest-axe": "10.0.0", "jsdom": "29.1.1", "knip": "6.17.1", "license-compliance": "3.0.1", "mermaid": "11.15.0", "mocha-junit-reporter": "2.2.1", "mochawesome": "7.1.4", "mochawesome-merge": "5.1.1", "mochawesome-report-generator": "6.3.2", "openai": "6.44.0", "playwright": "1.61.0", "postprocessing": "6.39.1", "react": "19.2.7", "react-dom": "19.2.7", "start-server-and-test": "3.0.11", "three": "0.184.0", "ts-morph": "28.0.0", "ts-node": "10.9.2", "tsc-alias": "1.8.17", "tsx": "4.22.4", "typedoc": "0.28.19", "typedoc-plugin-markdown": "4.12.0", "typedoc-plugin-mermaid": "1.12.0", "typedoc-plugin-missing-exports": "4.1.3", "typescript": "6.0.3", "typescript-eslint": "8.61.1", "vite": "8.0.16", "vite-bundle-analyzer": "1.3.8", "vite-tsconfig-paths": "6.1.1", "vitest": "4.1.9" }, "overrides": { "eslint-plugin-react-hooks": { "eslint": "$eslint" }, "glob": "13.0.1", "three": "0.184.0", "@types/three": "0.184.1" } }