배포 도메인 블랭크(vite preview allowedHosts 누락) 재발을 막는 행동 검증 스크립트를 추가. preview를 띄워 공개 Host(vnet/api-vnet/chanpaca) 3종이 200으로 허용되고 임의 Host는 403으로 차단(DNS 리바인딩 보호 유지)되는지 http.request로 직접 Host 헤더를 보내 확인한다. package.json에 check:preview-hosts로 등록. 검증: npm run check:preview-hosts → 공개 3 allowed + unlisted blocked PASS, exit 0. 대시보드 104차 갱신.
39 lines
1.2 KiB
JSON
39 lines
1.2 KiB
JSON
{
|
|
"name": "@vignette/web",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"description": "Vignette — AI 심리상담 시뮬레이션 훈련 플랫폼 (React 19 프론트)",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"generate:api-types": "node scripts/generate-api-types.mjs",
|
|
"check:api-types": "node scripts/generate-api-types.mjs --check",
|
|
"check:preview-hosts": "node scripts/check-preview-hosts.mjs",
|
|
"generate:live2d-assets": "node scripts/generate-live2d-assets.mjs",
|
|
"preview": "vite preview",
|
|
"typecheck": "tsc -b",
|
|
"lint": "tsc -b",
|
|
"e2e": "playwright test",
|
|
"e2e:headed": "playwright test --headed",
|
|
"e2e:ui": "playwright test --ui"
|
|
},
|
|
"dependencies": {
|
|
"react": "^19.1.0",
|
|
"react-dom": "^19.1.0",
|
|
"react-router-dom": "^6.30.1"
|
|
},
|
|
"overrides": {
|
|
"gh-pages": "^6.3.0"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.61.1",
|
|
"@types/react": "^19.1.8",
|
|
"@types/react-dom": "^19.1.6",
|
|
"@vitejs/plugin-react": "^4.6.0",
|
|
"openapi-typescript": "^7.13.0",
|
|
"puppeteer-core": "^25.2.1",
|
|
"typescript": "^5.8.3",
|
|
"vite": "^6.3.5"
|
|
}
|
|
}
|