kordoc 4.14.0 → 4.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +18 -2
  2. package/dist/{-SLX6IB6Y.js → -AQKXLFIM.js} +10 -10
  3. package/dist/{chunk-WAPKUYGP.cjs → chunk-247ANM72.cjs} +11 -11
  4. package/dist/chunk-247ANM72.cjs.map +1 -0
  5. package/dist/{chunk-EOTAPX2M.js → chunk-3DUADAY2.js} +3 -3
  6. package/dist/{chunk-B7MOYHVR.cjs → chunk-422427XJ.cjs} +6 -6
  7. package/dist/chunk-422427XJ.cjs.map +1 -0
  8. package/dist/{chunk-HG5LXXCC.js → chunk-7IAQ4HOK.js} +1 -1
  9. package/dist/{chunk-XVIJLHCW.js.map → chunk-7IAQ4HOK.js.map} +1 -1
  10. package/dist/{chunk-JIQWI7S2.js → chunk-A7QC2ZVP.js} +3 -3
  11. package/dist/{chunk-HCHA3Y2T.js → chunk-C7FQBSON.js} +2 -2
  12. package/dist/chunk-DCZVOIEO.cjs.map +1 -1
  13. package/dist/{chunk-7VUHZFGQ.js → chunk-DOGPOY4B.js} +2 -2
  14. package/dist/{chunk-6T6MB5ON.js → chunk-EDNJLUSE.js} +2 -2
  15. package/dist/{chunk-EMQZX5QQ.js → chunk-EISO3POT.js} +301 -124
  16. package/dist/chunk-EISO3POT.js.map +1 -0
  17. package/dist/{chunk-LCGAO5LF.js → chunk-EP7KOI2V.js} +3 -3
  18. package/dist/{chunk-WRIHDGGY.cjs → chunk-EQZI77PP.cjs} +3 -3
  19. package/dist/chunk-EQZI77PP.cjs.map +1 -0
  20. package/dist/{chunk-XVIJLHCW.js → chunk-FOJZNMMK.js} +1 -1
  21. package/dist/{chunk-HG5LXXCC.js.map → chunk-FOJZNMMK.js.map} +1 -1
  22. package/dist/{chunk-PLXNW3J4.js → chunk-GDW4YP7K.js} +2 -2
  23. package/dist/chunk-GS7T56RP.cjs.map +1 -1
  24. package/dist/{chunk-ANKDK5DF.cjs → chunk-HR2XNERB.cjs} +2 -2
  25. package/dist/chunk-HR2XNERB.cjs.map +1 -0
  26. package/dist/{chunk-3U3PJGVO.js → chunk-ILU76UF3.js} +13 -2
  27. package/dist/chunk-ILU76UF3.js.map +1 -0
  28. package/dist/{chunk-J3SM7VLM.js → chunk-JQEFP45L.js} +2 -2
  29. package/dist/{chunk-M5NRJMA4.js → chunk-KVWV4ULP.js} +3 -3
  30. package/dist/{chunk-COUGOFT3.cjs → chunk-L7DMSMAG.cjs} +1 -1
  31. package/dist/chunk-L7DMSMAG.cjs.map +1 -0
  32. package/dist/{chunk-GMX6EKCY.js → chunk-NS55SM7A.js} +2 -2
  33. package/dist/{chunk-XH34WJKB.js → chunk-QC5T6D4J.js} +2 -2
  34. package/dist/{chunk-STLNL53H.cjs → chunk-QOMNEWCQ.cjs} +4 -4
  35. package/dist/chunk-QOMNEWCQ.cjs.map +1 -0
  36. package/dist/{chunk-CDQJKMZ5.js → chunk-TNCKOL2O.js} +2 -2
  37. package/dist/{chunk-HH7T6SMB.js → chunk-TSFS5VKD.js} +3072 -1721
  38. package/dist/chunk-TSFS5VKD.js.map +1 -0
  39. package/dist/{chunk-RCTWZYAM.js → chunk-UET462HB.js} +2 -2
  40. package/dist/{chunk-A2JDWBKG.js → chunk-VQ5W4MYO.js} +2 -2
  41. package/dist/{chunk-ZWTEE63A.js → chunk-ZWD734EY.js} +2 -2
  42. package/dist/{chunk-UBNJXMYX.js → chunk-ZWOFQRIB.js} +14 -6
  43. package/dist/chunk-ZWOFQRIB.js.map +1 -0
  44. package/dist/chunks-SX77P5CV.js +10 -0
  45. package/dist/cli.js +1066 -1038
  46. package/dist/cli.js.map +1 -1
  47. package/dist/{formula-VSZIJZXP.js → formula-5S7WWXGH.js} +4 -4
  48. package/dist/{formula-VYDTA27M.js → formula-JGFTXWYT.js} +3 -3
  49. package/dist/{formula-TAYYDV73.cjs → formula-PJJ6S3Z2.cjs} +9 -9
  50. package/dist/formula-PJJ6S3Z2.cjs.map +1 -0
  51. package/dist/{image-ocr-5WBAIBPQ.js → image-ocr-FLIL7MGN.js} +6 -6
  52. package/dist/{image-ocr-N6IBZJAK.js → image-ocr-WCAYXLOA.js} +8 -8
  53. package/dist/{image-ocr-ZX4W2RBS.cjs → image-ocr-ZTYAGV3W.cjs} +12 -12
  54. package/dist/image-ocr-ZTYAGV3W.cjs.map +1 -0
  55. package/dist/index.cjs +3010 -1465
  56. package/dist/index.cjs.map +1 -1
  57. package/dist/index.d.cts +11 -6
  58. package/dist/index.d.ts +11 -6
  59. package/dist/index.js +2547 -1002
  60. package/dist/index.js.map +1 -1
  61. package/dist/mcp.js +973 -932
  62. package/dist/mcp.js.map +1 -1
  63. package/dist/{model-bundle-5CBFVIXA.js → model-bundle-FSPZZ2EM.js} +5 -5
  64. package/dist/{models-L74RBKK3.js → models-CJPAQK5R.js} +5 -5
  65. package/dist/page-range-P7SDW6LR.cjs.map +1 -1
  66. package/dist/{parser-66NMJUOG.js → parser-A4TMPJAM.js} +7 -7
  67. package/dist/{parser-BK66Y5JD.js → parser-SCUTZAIJ.js} +7 -7
  68. package/dist/{parser-WM2DMVLY.cjs → parser-VCXE4I5A.cjs} +27 -27
  69. package/dist/parser-VCXE4I5A.cjs.map +1 -0
  70. package/dist/pdf-ocr-76SAUXMZ.js +13 -0
  71. package/dist/pdf-ocr-CPU55CVF.js +16 -0
  72. package/dist/pdf-ocr-MBZZ57LD.cjs +14 -0
  73. package/dist/pdf-ocr-MBZZ57LD.cjs.map +1 -0
  74. package/dist/{profile-io-JZ3FDHDK.js → profile-io-LBM263K7.js} +3 -3
  75. package/dist/{rasterize-33WOOVSM.js → rasterize-46RG4ZF6.js} +3 -3
  76. package/dist/{render-MLN4ZLVD.js → render-NGP5T24S.js} +7 -7
  77. package/dist/seal-RGUPOLXD.js +10 -0
  78. package/dist/{setup-G6AEN4J7.js → setup-AU4OCHNH.js} +3 -3
  79. package/dist/visual-NZLYIYEM.js +19 -0
  80. package/dist/{watch-OY6XKGC5.js → watch-MKPUCPXM.js} +11 -11
  81. package/package.json +2 -2
  82. package/dist/chunk-3U3PJGVO.js.map +0 -1
  83. package/dist/chunk-ANKDK5DF.cjs.map +0 -1
  84. package/dist/chunk-B7MOYHVR.cjs.map +0 -1
  85. package/dist/chunk-COUGOFT3.cjs.map +0 -1
  86. package/dist/chunk-EMQZX5QQ.js.map +0 -1
  87. package/dist/chunk-HH7T6SMB.js.map +0 -1
  88. package/dist/chunk-STLNL53H.cjs.map +0 -1
  89. package/dist/chunk-UBNJXMYX.js.map +0 -1
  90. package/dist/chunk-WAPKUYGP.cjs.map +0 -1
  91. package/dist/chunk-WRIHDGGY.cjs.map +0 -1
  92. package/dist/chunks-PEHRXW2P.js +0 -10
  93. package/dist/formula-TAYYDV73.cjs.map +0 -1
  94. package/dist/image-ocr-ZX4W2RBS.cjs.map +0 -1
  95. package/dist/parser-WM2DMVLY.cjs.map +0 -1
  96. package/dist/pdf-ocr-322MBLDK.js +0 -16
  97. package/dist/pdf-ocr-A4UBXLM2.js +0 -13
  98. package/dist/pdf-ocr-G4TBDUYL.cjs +0 -14
  99. package/dist/pdf-ocr-G4TBDUYL.cjs.map +0 -1
  100. package/dist/seal-JQWSNHRG.js +0 -10
  101. package/dist/visual-VZ7QGAUC.js +0 -19
  102. /package/dist/{-SLX6IB6Y.js.map → -AQKXLFIM.js.map} +0 -0
  103. /package/dist/{chunk-EOTAPX2M.js.map → chunk-3DUADAY2.js.map} +0 -0
  104. /package/dist/{chunk-JIQWI7S2.js.map → chunk-A7QC2ZVP.js.map} +0 -0
  105. /package/dist/{chunk-HCHA3Y2T.js.map → chunk-C7FQBSON.js.map} +0 -0
  106. /package/dist/{chunk-7VUHZFGQ.js.map → chunk-DOGPOY4B.js.map} +0 -0
  107. /package/dist/{chunk-6T6MB5ON.js.map → chunk-EDNJLUSE.js.map} +0 -0
  108. /package/dist/{chunk-LCGAO5LF.js.map → chunk-EP7KOI2V.js.map} +0 -0
  109. /package/dist/{chunk-PLXNW3J4.js.map → chunk-GDW4YP7K.js.map} +0 -0
  110. /package/dist/{chunk-J3SM7VLM.js.map → chunk-JQEFP45L.js.map} +0 -0
  111. /package/dist/{chunk-M5NRJMA4.js.map → chunk-KVWV4ULP.js.map} +0 -0
  112. /package/dist/{chunk-GMX6EKCY.js.map → chunk-NS55SM7A.js.map} +0 -0
  113. /package/dist/{chunk-XH34WJKB.js.map → chunk-QC5T6D4J.js.map} +0 -0
  114. /package/dist/{chunk-CDQJKMZ5.js.map → chunk-TNCKOL2O.js.map} +0 -0
  115. /package/dist/{chunk-RCTWZYAM.js.map → chunk-UET462HB.js.map} +0 -0
  116. /package/dist/{chunk-A2JDWBKG.js.map → chunk-VQ5W4MYO.js.map} +0 -0
  117. /package/dist/{chunk-ZWTEE63A.js.map → chunk-ZWD734EY.js.map} +0 -0
  118. /package/dist/{chunks-PEHRXW2P.js.map → chunks-SX77P5CV.js.map} +0 -0
  119. /package/dist/{formula-VSZIJZXP.js.map → formula-5S7WWXGH.js.map} +0 -0
  120. /package/dist/{formula-VYDTA27M.js.map → formula-JGFTXWYT.js.map} +0 -0
  121. /package/dist/{image-ocr-5WBAIBPQ.js.map → image-ocr-FLIL7MGN.js.map} +0 -0
  122. /package/dist/{image-ocr-N6IBZJAK.js.map → image-ocr-WCAYXLOA.js.map} +0 -0
  123. /package/dist/{model-bundle-5CBFVIXA.js.map → model-bundle-FSPZZ2EM.js.map} +0 -0
  124. /package/dist/{models-L74RBKK3.js.map → models-CJPAQK5R.js.map} +0 -0
  125. /package/dist/{parser-66NMJUOG.js.map → parser-A4TMPJAM.js.map} +0 -0
  126. /package/dist/{parser-BK66Y5JD.js.map → parser-SCUTZAIJ.js.map} +0 -0
  127. /package/dist/{pdf-ocr-322MBLDK.js.map → pdf-ocr-76SAUXMZ.js.map} +0 -0
  128. /package/dist/{pdf-ocr-A4UBXLM2.js.map → pdf-ocr-CPU55CVF.js.map} +0 -0
  129. /package/dist/{profile-io-JZ3FDHDK.js.map → profile-io-LBM263K7.js.map} +0 -0
  130. /package/dist/{rasterize-33WOOVSM.js.map → rasterize-46RG4ZF6.js.map} +0 -0
  131. /package/dist/{render-MLN4ZLVD.js.map → render-NGP5T24S.js.map} +0 -0
  132. /package/dist/{seal-JQWSNHRG.js.map → seal-RGUPOLXD.js.map} +0 -0
  133. /package/dist/{setup-G6AEN4J7.js.map → setup-AU4OCHNH.js.map} +0 -0
  134. /package/dist/{visual-VZ7QGAUC.js.map → visual-NZLYIYEM.js.map} +0 -0
  135. /package/dist/{watch-OY6XKGC5.js.map → watch-MKPUCPXM.js.map} +0 -0
package/dist/index.d.cts CHANGED
@@ -267,7 +267,8 @@ interface OutlineItem {
267
267
  type ErrorCode = "EMPTY_INPUT" | "UNSUPPORTED_FORMAT" | "ENCRYPTED" | "DRM_PROTECTED" | "CORRUPTED" | "DECOMPRESSION_BOMB" | "ZIP_BOMB" | "IMAGE_BASED_PDF" | "NO_SECTIONS" | "PARSE_ERROR" | "MISSING_DEPENDENCY"
268
268
  /** 결과 직렬화가 런타임 문자열 한계를 넘음 — 이미지 다량 문서의 JSON 출력 (#65) */
269
269
  | "OUTPUT_TOO_LARGE";
270
- type FileType = "hwpx" | "hwp" | "hwp3" | "hwpml" | "pdf" | "xlsx" | "xls" | "docx" | "image" | "unknown";
270
+ /** 감지된 파일 형식. pptx는 감지만 지원하며 파싱 시 UNSUPPORTED_FORMAT을 반환한다. */
271
+ type FileType = "hwpx" | "hwp" | "hwp3" | "hwpml" | "pdf" | "xlsx" | "xls" | "docx" | "pptx" | "image" | "unknown";
271
272
  interface ParseResultBase {
272
273
  fileType: FileType;
273
274
  /** 페이지/섹션 수 — PDF: 실제 페이지 수, HWP/HWPX: 섹션 수, XLSX: 시트 수 */
@@ -1316,7 +1317,7 @@ declare const SPACE_EM_FONT = 300;
1316
1317
  * 넓어 함초롬 테이블로 재면 줄당 1~2자 과대적재로 wrap 지점이 어긋난다
1317
1318
  * (bench/verify-linebreak.mjs seoul 코퍼스 실측: fixedPitch 테이블로 74/75 일치).
1318
1319
  */
1319
- type FaceClass = "hcr" | "fixedPitch" | "gothic";
1320
+ type FaceClass = "hcr" | "fixedPitch" | "gothic" | `font:${string}`;
1320
1321
  interface MeasureOptions {
1321
1322
  /** 공백 폭(em×1000). 기본 SPACE_EM_FIXED(500) = useFontSpace 0 */
1322
1323
  spaceEm?: number;
@@ -1331,6 +1332,10 @@ interface MeasureOptions {
1331
1332
  */
1332
1333
  declare function measureTextWidth(text: string, height: number, ratioPct: number, opts?: MeasureOptions): number;
1333
1334
  type WrapMode = "keep" | "charAll";
1335
+ interface WrapOptions extends MeasureOptions {
1336
+ /** UTF-16 단위별 실폭(HWPUNIT) — 주면 height·장평·폭 클래스 대신 쓴다(여러 run 문단, 탭 전진폭) */
1337
+ widths?: number[];
1338
+ }
1334
1339
  interface WrapResult {
1335
1340
  /** 줄 수 */
1336
1341
  lines: number;
@@ -1343,7 +1348,7 @@ interface WrapResult {
1343
1348
  * 문단 줄바꿈 시뮬레이션.
1344
1349
  * mode 'keep' = 어절 단위(공문서 모드 — 저장 속성 breakNonLatinWord="BREAK_WORD", 이름 역전 주의),
1345
1350
  * mode 'charAll' = 글자 단위(breakNonLatinWord="KEEP_WORD" — 한글 기본값·전자결재 변환기).
1346
- * 한 어절이 줄보다 길면 keep에서도 글자 단위로 강제 분해(한컴 동일).
1351
+ * 한 어절이 줄보다 길면 keep에서도 글자 단위로 강제 분해 — 한컴처럼 다음 줄로 넘긴 뒤 쪼갠다(앞 줄은 벌어진다).
1347
1352
  *
1348
1353
  * @param text 문단 전체 텍스트(항목 부호 포함)
1349
1354
  * @param firstWidth 첫 줄 가용 폭(HWPUNIT)
@@ -1351,7 +1356,7 @@ interface WrapResult {
1351
1356
  * @param height charPr height (pt×100)
1352
1357
  * @param ratioPct 장평 %
1353
1358
  */
1354
- declare function simulateWrap(text: string, firstWidth: number, contWidth: number, height: number, ratioPct: number, mode?: WrapMode, opts?: MeasureOptions): WrapResult;
1359
+ declare function simulateWrap(text: string, firstWidth: number, contWidth: number, height: number, ratioPct: number, mode?: WrapMode, opts?: WrapOptions): WrapResult;
1355
1360
  /** @deprecated simulateWrap(text, …, 'keep') 별칭 — 하위 호환 */
1356
1361
  declare function simulateWrapKeepWord(text: string, firstWidth: number, contWidth: number, height: number, ratioPct: number, opts?: MeasureOptions): WrapResult;
1357
1362
  /**
@@ -2155,9 +2160,9 @@ declare function detectFormat(buffer: ArrayBuffer): FileType;
2155
2160
  declare function detectOle2Format(buffer: ArrayBuffer): "hwp" | "xls" | "unknown";
2156
2161
  /**
2157
2162
  * ZIP 내부 구조 기반 포맷 세분화.
2158
- * HWPX, XLSX, DOCX 모두 ZIP이므로 내부 파일로 구분.
2163
+ * HWPX, XLSX, DOCX, PPTX 모두 ZIP이므로 내부 파일로 구분 (PPTX는 감지만 지원).
2159
2164
  */
2160
- declare function detectZipFormat(buffer: ArrayBuffer): Promise<"hwpx" | "xlsx" | "docx" | "unknown">;
2165
+ declare function detectZipFormat(buffer: ArrayBuffer): Promise<"hwpx" | "xlsx" | "docx" | "pptx" | "unknown">;
2161
2166
 
2162
2167
  /**
2163
2168
  * 페이지별 마크다운 사영 (#68)
package/dist/index.d.ts CHANGED
@@ -267,7 +267,8 @@ interface OutlineItem {
267
267
  type ErrorCode = "EMPTY_INPUT" | "UNSUPPORTED_FORMAT" | "ENCRYPTED" | "DRM_PROTECTED" | "CORRUPTED" | "DECOMPRESSION_BOMB" | "ZIP_BOMB" | "IMAGE_BASED_PDF" | "NO_SECTIONS" | "PARSE_ERROR" | "MISSING_DEPENDENCY"
268
268
  /** 결과 직렬화가 런타임 문자열 한계를 넘음 — 이미지 다량 문서의 JSON 출력 (#65) */
269
269
  | "OUTPUT_TOO_LARGE";
270
- type FileType = "hwpx" | "hwp" | "hwp3" | "hwpml" | "pdf" | "xlsx" | "xls" | "docx" | "image" | "unknown";
270
+ /** 감지된 파일 형식. pptx는 감지만 지원하며 파싱 시 UNSUPPORTED_FORMAT을 반환한다. */
271
+ type FileType = "hwpx" | "hwp" | "hwp3" | "hwpml" | "pdf" | "xlsx" | "xls" | "docx" | "pptx" | "image" | "unknown";
271
272
  interface ParseResultBase {
272
273
  fileType: FileType;
273
274
  /** 페이지/섹션 수 — PDF: 실제 페이지 수, HWP/HWPX: 섹션 수, XLSX: 시트 수 */
@@ -1316,7 +1317,7 @@ declare const SPACE_EM_FONT = 300;
1316
1317
  * 넓어 함초롬 테이블로 재면 줄당 1~2자 과대적재로 wrap 지점이 어긋난다
1317
1318
  * (bench/verify-linebreak.mjs seoul 코퍼스 실측: fixedPitch 테이블로 74/75 일치).
1318
1319
  */
1319
- type FaceClass = "hcr" | "fixedPitch" | "gothic";
1320
+ type FaceClass = "hcr" | "fixedPitch" | "gothic" | `font:${string}`;
1320
1321
  interface MeasureOptions {
1321
1322
  /** 공백 폭(em×1000). 기본 SPACE_EM_FIXED(500) = useFontSpace 0 */
1322
1323
  spaceEm?: number;
@@ -1331,6 +1332,10 @@ interface MeasureOptions {
1331
1332
  */
1332
1333
  declare function measureTextWidth(text: string, height: number, ratioPct: number, opts?: MeasureOptions): number;
1333
1334
  type WrapMode = "keep" | "charAll";
1335
+ interface WrapOptions extends MeasureOptions {
1336
+ /** UTF-16 단위별 실폭(HWPUNIT) — 주면 height·장평·폭 클래스 대신 쓴다(여러 run 문단, 탭 전진폭) */
1337
+ widths?: number[];
1338
+ }
1334
1339
  interface WrapResult {
1335
1340
  /** 줄 수 */
1336
1341
  lines: number;
@@ -1343,7 +1348,7 @@ interface WrapResult {
1343
1348
  * 문단 줄바꿈 시뮬레이션.
1344
1349
  * mode 'keep' = 어절 단위(공문서 모드 — 저장 속성 breakNonLatinWord="BREAK_WORD", 이름 역전 주의),
1345
1350
  * mode 'charAll' = 글자 단위(breakNonLatinWord="KEEP_WORD" — 한글 기본값·전자결재 변환기).
1346
- * 한 어절이 줄보다 길면 keep에서도 글자 단위로 강제 분해(한컴 동일).
1351
+ * 한 어절이 줄보다 길면 keep에서도 글자 단위로 강제 분해 — 한컴처럼 다음 줄로 넘긴 뒤 쪼갠다(앞 줄은 벌어진다).
1347
1352
  *
1348
1353
  * @param text 문단 전체 텍스트(항목 부호 포함)
1349
1354
  * @param firstWidth 첫 줄 가용 폭(HWPUNIT)
@@ -1351,7 +1356,7 @@ interface WrapResult {
1351
1356
  * @param height charPr height (pt×100)
1352
1357
  * @param ratioPct 장평 %
1353
1358
  */
1354
- declare function simulateWrap(text: string, firstWidth: number, contWidth: number, height: number, ratioPct: number, mode?: WrapMode, opts?: MeasureOptions): WrapResult;
1359
+ declare function simulateWrap(text: string, firstWidth: number, contWidth: number, height: number, ratioPct: number, mode?: WrapMode, opts?: WrapOptions): WrapResult;
1355
1360
  /** @deprecated simulateWrap(text, …, 'keep') 별칭 — 하위 호환 */
1356
1361
  declare function simulateWrapKeepWord(text: string, firstWidth: number, contWidth: number, height: number, ratioPct: number, opts?: MeasureOptions): WrapResult;
1357
1362
  /**
@@ -2155,9 +2160,9 @@ declare function detectFormat(buffer: ArrayBuffer): FileType;
2155
2160
  declare function detectOle2Format(buffer: ArrayBuffer): "hwp" | "xls" | "unknown";
2156
2161
  /**
2157
2162
  * ZIP 내부 구조 기반 포맷 세분화.
2158
- * HWPX, XLSX, DOCX 모두 ZIP이므로 내부 파일로 구분.
2163
+ * HWPX, XLSX, DOCX, PPTX 모두 ZIP이므로 내부 파일로 구분 (PPTX는 감지만 지원).
2159
2164
  */
2160
- declare function detectZipFormat(buffer: ArrayBuffer): Promise<"hwpx" | "xlsx" | "docx" | "unknown">;
2165
+ declare function detectZipFormat(buffer: ArrayBuffer): Promise<"hwpx" | "xlsx" | "docx" | "pptx" | "unknown">;
2161
2166
 
2162
2167
  /**
2163
2168
  * 페이지별 마크다운 사영 (#68)