{
  "url": "https://unifast.dev/ko/docs/packages/core/overview/",
  "locale": "ko",
  "title": "@unifast/core",
  "description": "unifast 런타임 패키지 간에 공유되는 TypeScript 타입 정의, HAST 유틸리티, 에러 클래스",
  "section": "packages",
  "body": "## 개요\n\n`@unifast/core`는 컴파일 옵션, 결과, HAST(HTML Abstract Syntax Tree) 노드, 플러그인 인터페이스, 에러 클래스에 대한 공유 TypeScript 타입 정의를 제공합니다. `@unifast/node` 같은 런타임 패키지의 의존성이므로 일반적으로 직접 설치할 **필요가 없습니다**.\n\n컴파일러와 빌트인 플러그인을 사용하려면 [`@unifast/node`](/docs/packages/node/overview)를 사용하세요.\n\n## 설치\n\n## 타입 정의\n\n### CompileOptions\n\n`compile()` 함수의 설정.\n\n| 속성 | 타입 | 기본값 | 설명 |\n|----------|------|---------|-------------|\n| `inputKind` | `\"md\" \\| \"mdx\"` | `\"md\"` | 입력 형식 |\n| `outputKind` | `\"html\" \\| \"hast\" \\| \"mdast\" \\| \"mdxJs\"` | `\"html\"` | 출력 형식 |\n| `gfm` | `object` | - | GitHub Flavored Markdown 설정 |\n| `gfm.tables` | `boolean` | - | GFM 표 활성화 |\n| `gfm.taskList` | `boolean` | - | 작업 목록 체크박스 활성화 |\n| `gfm.strikethrough` | `boolean` | - | `~~취소선~~` 활성화 |\n| `gfm.footnotes` | `boolean` | - | 각주 활성화 |\n| `gfm.autolink` | `boolean` | - | URL 자동 링크 활성화 |\n| `frontmatter` | `object` | - | frontmatter 파싱 설정 |\n| `frontmatter.yaml` | `boolean` | - | YAML frontmatter 파싱 |\n| `frontmatter.toml` | `boolean` | - | TOML frontmatter 파싱 |\n| `frontmatter.json` | `boolean` | - | JSON frontmatter 파싱 |\n| `rawHtml` | `\"disallow\" \\| \"allowDangerous\" \\| \"parseAndSanitize\"` | - | 원본 HTML 처리 방식 |\n| `sanitize` | `object` | - | HTML 새니타이즈 설정 |\n| `sanitize.enabled` | `boolean` | - | 새니타이즈 활성화 |\n| `sanitize.schema` | `SanitizeSchema` | - | 커스텀 새니타이즈 규칙 |\n| `highlight` | `object` | - | 구문 강조 설정 |\n| `highlight.enabled` | `boolean` | - | 구문 강조 활성화 |\n| `highlight.engine` | `\"none\" \\| \"syntect\" \\| \"treeSitter\"` | - | 강조 엔진 |\n| `slug` | `object` | - | 제목 슬러그 생성 설정 |\n| `slug.mode` | `\"github\" \\| \"unicode\"` | - | 슬러그 생성 알고리즘 |\n| `toc` | `object` | - | 목차 설정 |\n| `toc.enabled` | `boolean` | - | TOC 추출 활성화 |\n| `toc.maxDepth` | `number` | - | 포함할 최대 제목 레벨 |\n| `diagnostics` | `object` | - | 진단 출력 설정 |\n| `diagnostics.format` | `\"compact\" \\| \"verbose\"` | - | 진단 형식 |\n| `cache` | `object` | - | 캐시 설정 |\n| `cache.enabled` | `boolean` | - | 결과 캐시 활성화 |\n| `cache.dir` | `string` | - | 캐시 디렉터리 경로 |\n| `plugins` | `UnifastPlugin[]` | `[]` | 적용할 플러그인 배열 |\n\n### CompileResult\n\n`compile()` 함수의 반환값.\n\n| 속성 | 타입 | 설명 |\n|----------|------|-------------|\n| `output` | `string \\| object` | 컴파일된 결과 (HTML 문자열, HAST JSON, MDAST JSON — `outputKind`에 따라 달라짐) |\n| `frontmatter` | `Record<string, unknown>` | 파싱된 frontmatter 메타데이터 |\n| `diagnostics` | `Diagnostic[]` | 경고와 오류 배열 |\n| `stats` | `{ parseMs, transformMs, emitMs }` | 단계별 소요 시간(ms) |\n| `toc` | `TocEntry[]` | 추출된 목차 항목 |\n\n### Diagnostic\n\n| 속성 | 타입 | 설명 |\n|----------|------|-------------|\n| `level` | `\"error\" \\| \"warn\"` | 심각도 |\n| `message` | `string` | 사람이 읽을 수 있는 메시지 |\n| `start` | `number \\| undefined` | 소스의 시작 바이트 오프셋 |\n| `end` | `number \\| undefined` | 소스의 끝 바이트 오프셋 |\n| `line` | `number \\| undefined` | 줄 번호 (1부터 시작) |\n| `column` | `number \\| undefined` | 열 번호 (1부터 시작) |\n\n### TocEntry\n\n목차를 위해 추출된 단일 제목.\n\n| 속성 | 타입 | 설명 |\n|----------|------|-------------|\n| `depth` | `number` | 제목 레벨 (1-6) |\n| `text` | `string` | 제목의 평문 내용 |\n| `slug` | `string` | 앵커 링크용으로 생성된 슬러그 |\n\n### SanitizeSchema\n\n커스텀 새니타이즈 규칙.\n\n| 속성 | 타입 | 설명 |\n|----------|------|-------------|\n| `allowedTags` | `string[]` | 허용할 HTML 태그 |\n| `allowedAttributes` | `Record<string, string[]>` | 태그별 허용 속성 |\n| `allowedProtocols` | `Record<string, string[]>` | 속성별 허용 URL 프로토콜 |\n\n### UnifastPlugin\n\nunifast를 확장하기 위한 플러그인 인터페이스.\n\n| 속성 | 타입 | 설명 |\n|----------|------|-------------|\n| `name` | `string` | 고유한 플러그인 이름 |\n| `options?` | `Partial<CompileOptions>` | 컴파일 옵션에 병합할 옵션 |\n| `hastTransform?` | `(hast: HastRoot) => HastRoot` | 컴파일 후 HAST 트리를 변환 |\n\n### HAST 노드 타입\n\n| 타입 | `type` 필드 | 속성 | 설명 |\n|------|-------------|------------|-------------|\n| `HastRoot` | `\"root\"` | `children: HastNode[]` | 트리의 루트 노드 |\n| `HastElement` | `\"element\"` | `tagName`, `properties`, `children` | HTML 요소 |\n| `HastText` | `\"text\"` | `value: string` | 텍스트 노드 |\n| `HastRaw` | `\"raw\"` | `value: string` | 원본 HTML 패스스루 |\n| `HastComment` | `\"comment\"` | `value: string` | HTML 주석 |\n| `HastDoctype` | `\"doctype\"` | - | `<!DOCTYPE html>` 노드 |\n\n`HastNode`는 유니언 타입입니다: `HastRoot | HastElement | HastText | HastRaw | HastComment | HastDoctype`\n\n## 에러 클래스\n\n| 클래스 | 확장 | 속성 | 설명 |\n|-------|---------|------------|-------------|\n| `UnifastError` | `Error` | `code?: string`, `span?: { start, end }` | 모든 unifast 에러의 기반 클래스 |\n| `ParseError` | `UnifastError` | `code: \"PARSE_ERROR\"` | Markdown/MDX 입력을 파싱할 수 없을 때 발생 |\n| `CompileError` | `UnifastError` | `code: \"COMPILE_ERROR\"` | 파싱 이후 컴파일이 실패할 때 발생 |\n\n```ts\n\ntry {\n  // ... 컴파일 수행\n} catch (err) {\n  if (err instanceof ParseError) {\n    console.error(`Parse error at ${err.span?.start}: ${err.message}`);\n  } else if (err instanceof CompileError) {\n    console.error(`Compile error: ${err.message}`);\n  }\n}\n```\n\n## Exports 요약\n\n| Export | 종류 | 설명 |\n|--------|------|-------------|\n| `CompileOptions` | type | 컴파일 설정 |\n| `CompileResult` | type | 컴파일 결과 |\n| `TocEntry` | type | 목차 항목 |\n| `SanitizeSchema` | type | 새니타이즈 규칙 |\n| `UnifastPlugin` | type | 플러그인 인터페이스 |\n| `HastNode` | type | 모든 HAST 노드 타입의 유니언 |\n| `HastRoot` | type | HAST 루트 노드 |\n| `HastElement` | type | HAST 요소 노드 |\n| `HastText` | type | HAST 텍스트 노드 |\n| `HastRaw` | type | HAST 원본 HTML 노드 |\n| `HastComment` | type | HAST 주석 노드 |\n| `HastDoctype` | type | HAST doctype 노드 |\n| `hastToHtml` | function | HAST-to-HTML 시리얼라이저 |\n| `escapeHtml` | function | HTML 특수 문자 이스케이프 (`&`, `<`, `>`, `\"`) |\n| `extractLang` | function | HAST `<code>` 요소에서 언어 식별자 추출 |\n| `extractText` | function | HAST 노드에서 평문 텍스트 추출 |\n| `findCodeChild` | function | `<pre>` 요소 안의 `<code>` 자식 요소 찾기 |\n| `visitHast` | function | HAST 트리를 순회하기 위한 비지터 유틸리티 |\n| `UnifastError` | class | 기반 에러 클래스 |\n| `ParseError` | class | 파싱 에러 클래스 |\n| `CompileError` | class | 컴파일 에러 클래스 |",
  "alternates": [
    {
      "locale": "en",
      "url": "https://unifast.dev/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/docs/packages/core/overview.json"
    },
    {
      "locale": "ja",
      "url": "https://unifast.dev/ja/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/ja/docs/packages/core/overview.json"
    },
    {
      "locale": "zh-CN",
      "url": "https://unifast.dev/zh-CN/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/zh-CN/docs/packages/core/overview.json"
    },
    {
      "locale": "zh-TW",
      "url": "https://unifast.dev/zh-TW/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/zh-TW/docs/packages/core/overview.json"
    },
    {
      "locale": "ko",
      "url": "https://unifast.dev/ko/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/ko/docs/packages/core/overview.json"
    },
    {
      "locale": "fr",
      "url": "https://unifast.dev/fr/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/fr/docs/packages/core/overview.json"
    },
    {
      "locale": "it",
      "url": "https://unifast.dev/it/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/it/docs/packages/core/overview.json"
    },
    {
      "locale": "es",
      "url": "https://unifast.dev/es/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/es/docs/packages/core/overview.json"
    },
    {
      "locale": "pt-BR",
      "url": "https://unifast.dev/pt-BR/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/pt-BR/docs/packages/core/overview.json"
    },
    {
      "locale": "de",
      "url": "https://unifast.dev/de/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/de/docs/packages/core/overview.json"
    },
    {
      "locale": "ru",
      "url": "https://unifast.dev/ru/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/ru/docs/packages/core/overview.json"
    },
    {
      "locale": "hi",
      "url": "https://unifast.dev/hi/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/hi/docs/packages/core/overview.json"
    },
    {
      "locale": "id",
      "url": "https://unifast.dev/id/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/id/docs/packages/core/overview.json"
    },
    {
      "locale": "tr",
      "url": "https://unifast.dev/tr/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/tr/docs/packages/core/overview.json"
    },
    {
      "locale": "vi",
      "url": "https://unifast.dev/vi/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/vi/docs/packages/core/overview.json"
    }
  ]
}
