kordoc 4.18.9 → 4.18.10

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 (119) hide show
  1. package/README.md +2 -2
  2. package/dist/{-OOORB3ZM.js → -VE5T6RQW.js} +11 -11
  3. package/dist/{chunk-XB6VRTM3.js → chunk-35ZMC4PU.js} +2 -2
  4. package/dist/{chunk-44LAZYCW.js → chunk-4IKC7MON.js} +2 -2
  5. package/dist/{chunk-LZJ4HHFE.js → chunk-7PSD7KCU.js} +4 -4
  6. package/dist/{chunk-MSGQ6DFT.js → chunk-CRARTST7.js} +2 -2
  7. package/dist/{chunk-S7ED7QP2.js → chunk-DQN33VHN.js} +8 -6
  8. package/dist/chunk-DQN33VHN.js.map +1 -0
  9. package/dist/{chunk-BBMS5Z7N.js → chunk-E7LZVD5P.js} +2 -2
  10. package/dist/{chunk-L3YW7ATL.js → chunk-EQJ2HSZP.js} +2 -2
  11. package/dist/{chunk-IPJ5SVNH.js → chunk-G3TSHCQC.js} +2 -2
  12. package/dist/{chunk-ZMHMIXTU.js → chunk-GHTUC2HG.js} +6 -6
  13. package/dist/{chunk-5K7M5QCG.js → chunk-IIV3RVJ5.js} +2 -2
  14. package/dist/{chunk-H3MGECXS.js → chunk-KKV433FL.js} +2 -2
  15. package/dist/{chunk-H3MGECXS.js.map → chunk-KKV433FL.js.map} +1 -1
  16. package/dist/{chunk-MW2G24XL.js → chunk-KPCMLJ2Q.js} +2 -2
  17. package/dist/{chunk-J6KBWT5D.js → chunk-KRAV7GKW.js} +10 -10
  18. package/dist/{chunk-L65DR4EY.js → chunk-KTN2KZLU.js} +2 -2
  19. package/dist/{chunk-FFUNCANU.cjs → chunk-KZWNZYBP.cjs} +26 -24
  20. package/dist/chunk-KZWNZYBP.cjs.map +1 -0
  21. package/dist/{chunk-5XMZU77R.js → chunk-LEW4QI7B.js} +2 -2
  22. package/dist/{chunk-5Z5VIVZ4.cjs → chunk-PDLCHGUP.cjs} +3 -3
  23. package/dist/{chunk-5Z5VIVZ4.cjs.map → chunk-PDLCHGUP.cjs.map} +1 -1
  24. package/dist/{chunk-O345LTOL.js → chunk-Q75JAM4G.js} +3 -3
  25. package/dist/{chunk-A66VFXSS.cjs → chunk-QZ7SC7D2.cjs} +12 -12
  26. package/dist/{chunk-A66VFXSS.cjs.map → chunk-QZ7SC7D2.cjs.map} +1 -1
  27. package/dist/{chunk-2ZATWIWX.js → chunk-R3PY5Z67.js} +3 -3
  28. package/dist/{chunk-OJGHM3YD.js → chunk-SM5PYAPC.js} +2 -2
  29. package/dist/{chunk-CGRLQJC2.js → chunk-SWNJAS7J.js} +7 -5
  30. package/dist/chunk-SWNJAS7J.js.map +1 -0
  31. package/dist/{chunk-VMGLV3P3.cjs → chunk-TRGD56ZV.cjs} +3 -3
  32. package/dist/{chunk-VMGLV3P3.cjs.map → chunk-TRGD56ZV.cjs.map} +1 -1
  33. package/dist/{chunk-NEQC7PV5.js → chunk-VR4ZBQSV.js} +2 -2
  34. package/dist/{chunk-XMULZUPH.cjs → chunk-WEZHFPYM.cjs} +6 -6
  35. package/dist/{chunk-XMULZUPH.cjs.map → chunk-WEZHFPYM.cjs.map} +1 -1
  36. package/dist/{chunk-SOIGY5LM.cjs → chunk-ZG6RZC33.cjs} +2 -2
  37. package/dist/{chunk-SOIGY5LM.cjs.map → chunk-ZG6RZC33.cjs.map} +1 -1
  38. package/dist/{chunk-NMKCOSXN.js → chunk-ZPSTTVH4.js} +2 -2
  39. package/dist/{chunk-NMKCOSXN.js.map → chunk-ZPSTTVH4.js.map} +1 -1
  40. package/dist/{chunk-SO66Q6ST.js → chunk-ZWWGUH44.js} +2 -2
  41. package/dist/chunks-PAMV6OSJ.js +10 -0
  42. package/dist/cli.js +26 -26
  43. package/dist/{formula-5EGP7AVC.cjs → formula-37RT4OU6.cjs} +9 -9
  44. package/dist/{formula-5EGP7AVC.cjs.map → formula-37RT4OU6.cjs.map} +1 -1
  45. package/dist/{formula-CLVKOQCO.js → formula-HFT7E7V3.js} +4 -4
  46. package/dist/{formula-KOOZT2QS.js → formula-HIO2SUEF.js} +3 -3
  47. package/dist/{image-ocr-AKSRUDIT.js → image-ocr-47OARLS4.js} +9 -9
  48. package/dist/{image-ocr-LLMYXDAL.js → image-ocr-UUZW3JMN.js} +6 -6
  49. package/dist/{image-ocr-BHJFBQ2T.cjs → image-ocr-VBKMLKR2.cjs} +15 -15
  50. package/dist/{image-ocr-BHJFBQ2T.cjs.map → image-ocr-VBKMLKR2.cjs.map} +1 -1
  51. package/dist/index.cjs +277 -277
  52. package/dist/index.js +5 -5
  53. package/dist/mcp.js +22 -22
  54. package/dist/{model-bundle-NT6KCK6Y.js → model-bundle-D4T3GPOO.js} +5 -5
  55. package/dist/{models-SWD6AIAB.js → models-JFCTDIWD.js} +5 -5
  56. package/dist/{parser-ANGCUOPB.js → parser-2ZTSTI4L.js} +8 -8
  57. package/dist/{parser-N5MYD4XA.cjs → parser-4WT66JD4.cjs} +126 -126
  58. package/dist/{parser-N5MYD4XA.cjs.map → parser-4WT66JD4.cjs.map} +1 -1
  59. package/dist/{parser-RYDOM6KM.js → parser-DCHWNMCB.js} +11 -11
  60. package/dist/pdf-ocr-AYBFWY2Q.js +16 -0
  61. package/dist/pdf-ocr-BZNEXS63.cjs +17 -0
  62. package/dist/{pdf-ocr-RX3CQENG.cjs.map → pdf-ocr-BZNEXS63.cjs.map} +1 -1
  63. package/dist/pdf-ocr-L5AF5EJW.js +20 -0
  64. package/dist/{profile-io-CZE4YTYD.js → profile-io-ZZQVBLVD.js} +3 -3
  65. package/dist/{rasterize-KBBEPWJN.js → rasterize-HNMJIZ5R.js} +3 -3
  66. package/dist/{redact-doc-K7HCORXE.js → redact-doc-NXAAIFDC.js} +11 -11
  67. package/dist/{render-TXGEQCW6.js → render-FWNABFLD.js} +7 -7
  68. package/dist/seal-V2IQRAHQ.js +10 -0
  69. package/dist/{setup-EHCY4PGN.js → setup-MVDYTOEG.js} +3 -3
  70. package/dist/visual-Q43BCCIQ.js +20 -0
  71. package/dist/{watch-54O2O32S.js → watch-RSHU77SE.js} +12 -12
  72. package/package.json +1 -1
  73. package/dist/chunk-CGRLQJC2.js.map +0 -1
  74. package/dist/chunk-FFUNCANU.cjs.map +0 -1
  75. package/dist/chunk-S7ED7QP2.js.map +0 -1
  76. package/dist/chunks-2AMQTIMX.js +0 -10
  77. package/dist/pdf-ocr-B23SDZDD.js +0 -20
  78. package/dist/pdf-ocr-RX3CQENG.cjs +0 -17
  79. package/dist/pdf-ocr-SMFPZJGJ.js +0 -16
  80. package/dist/seal-QBDRMEQ3.js +0 -10
  81. package/dist/visual-66VQETYB.js +0 -20
  82. /package/dist/{-OOORB3ZM.js.map → -VE5T6RQW.js.map} +0 -0
  83. /package/dist/{chunk-XB6VRTM3.js.map → chunk-35ZMC4PU.js.map} +0 -0
  84. /package/dist/{chunk-44LAZYCW.js.map → chunk-4IKC7MON.js.map} +0 -0
  85. /package/dist/{chunk-LZJ4HHFE.js.map → chunk-7PSD7KCU.js.map} +0 -0
  86. /package/dist/{chunk-MSGQ6DFT.js.map → chunk-CRARTST7.js.map} +0 -0
  87. /package/dist/{chunk-BBMS5Z7N.js.map → chunk-E7LZVD5P.js.map} +0 -0
  88. /package/dist/{chunk-L3YW7ATL.js.map → chunk-EQJ2HSZP.js.map} +0 -0
  89. /package/dist/{chunk-IPJ5SVNH.js.map → chunk-G3TSHCQC.js.map} +0 -0
  90. /package/dist/{chunk-ZMHMIXTU.js.map → chunk-GHTUC2HG.js.map} +0 -0
  91. /package/dist/{chunk-5K7M5QCG.js.map → chunk-IIV3RVJ5.js.map} +0 -0
  92. /package/dist/{chunk-MW2G24XL.js.map → chunk-KPCMLJ2Q.js.map} +0 -0
  93. /package/dist/{chunk-J6KBWT5D.js.map → chunk-KRAV7GKW.js.map} +0 -0
  94. /package/dist/{chunk-L65DR4EY.js.map → chunk-KTN2KZLU.js.map} +0 -0
  95. /package/dist/{chunk-5XMZU77R.js.map → chunk-LEW4QI7B.js.map} +0 -0
  96. /package/dist/{chunk-O345LTOL.js.map → chunk-Q75JAM4G.js.map} +0 -0
  97. /package/dist/{chunk-2ZATWIWX.js.map → chunk-R3PY5Z67.js.map} +0 -0
  98. /package/dist/{chunk-OJGHM3YD.js.map → chunk-SM5PYAPC.js.map} +0 -0
  99. /package/dist/{chunk-NEQC7PV5.js.map → chunk-VR4ZBQSV.js.map} +0 -0
  100. /package/dist/{chunk-SO66Q6ST.js.map → chunk-ZWWGUH44.js.map} +0 -0
  101. /package/dist/{chunks-2AMQTIMX.js.map → chunks-PAMV6OSJ.js.map} +0 -0
  102. /package/dist/{formula-CLVKOQCO.js.map → formula-HFT7E7V3.js.map} +0 -0
  103. /package/dist/{formula-KOOZT2QS.js.map → formula-HIO2SUEF.js.map} +0 -0
  104. /package/dist/{image-ocr-AKSRUDIT.js.map → image-ocr-47OARLS4.js.map} +0 -0
  105. /package/dist/{image-ocr-LLMYXDAL.js.map → image-ocr-UUZW3JMN.js.map} +0 -0
  106. /package/dist/{model-bundle-NT6KCK6Y.js.map → model-bundle-D4T3GPOO.js.map} +0 -0
  107. /package/dist/{models-SWD6AIAB.js.map → models-JFCTDIWD.js.map} +0 -0
  108. /package/dist/{parser-ANGCUOPB.js.map → parser-2ZTSTI4L.js.map} +0 -0
  109. /package/dist/{parser-RYDOM6KM.js.map → parser-DCHWNMCB.js.map} +0 -0
  110. /package/dist/{pdf-ocr-B23SDZDD.js.map → pdf-ocr-AYBFWY2Q.js.map} +0 -0
  111. /package/dist/{pdf-ocr-SMFPZJGJ.js.map → pdf-ocr-L5AF5EJW.js.map} +0 -0
  112. /package/dist/{profile-io-CZE4YTYD.js.map → profile-io-ZZQVBLVD.js.map} +0 -0
  113. /package/dist/{rasterize-KBBEPWJN.js.map → rasterize-HNMJIZ5R.js.map} +0 -0
  114. /package/dist/{redact-doc-K7HCORXE.js.map → redact-doc-NXAAIFDC.js.map} +0 -0
  115. /package/dist/{render-TXGEQCW6.js.map → render-FWNABFLD.js.map} +0 -0
  116. /package/dist/{seal-QBDRMEQ3.js.map → seal-V2IQRAHQ.js.map} +0 -0
  117. /package/dist/{setup-EHCY4PGN.js.map → setup-MVDYTOEG.js.map} +0 -0
  118. /package/dist/{visual-66VQETYB.js.map → visual-Q43BCCIQ.js.map} +0 -0
  119. /package/dist/{watch-54O2O32S.js.map → watch-RSHU77SE.js.map} +0 -0
package/README.md CHANGED
@@ -111,11 +111,11 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
111
111
 
112
112
  ## 최근 업데이트
113
113
 
114
- 최신 배포: **[4.18.9](https://github.com/chrisryugj/kordoc/releases/tag/v4.18.9)** · 2026-10-04
114
+ 최신 배포: **[4.18.10](https://github.com/chrisryugj/kordoc/releases/tag/v4.18.10)** · 2026-10-04
115
115
 
116
116
  | 버전 | 주요 변경 |
117
117
  | --- | --- |
118
- | 4.18.9 | PDF 쪽 넘김 문단 잇기 뒤 쪽별 마크다운(`pages`)의 쪽 경계 복구 (#136) |
118
+ | 4.18.9–10 | PDF 쪽 넘김 문단 잇기: 쪽별 마크다운(`pages`) 쪽 경계 복구(#136), 쪽 첫머리 제목·목차·항목 오결합 방지 |
119
119
  | 4.18.8 | HWPX 셀 문단의 CRLF·CR·LF 줄바꿈을 보존하며 같은 줄 수의 텍스트 편집 지원 |
120
120
  | 4.18.7 | 셀의 CRLF·CR이 GFM 표의 새 행으로 분리되던 문제와 왕복 패치 좌표 수정 |
121
121
  | 4.18.5–6 | CLI 입력 보호·`generate --plain` 전달, PDF 문단·목록·괄호 문장·측면 탭 처리 개선 |
@@ -51,17 +51,17 @@ import {
51
51
  unknownFontWarnings,
52
52
  usesGaejosikMunche,
53
53
  validateHwpx
54
- } from "./chunk-J6KBWT5D.js";
54
+ } from "./chunk-KRAV7GKW.js";
55
55
  import {
56
56
  blocksToPages
57
- } from "./chunk-5XMZU77R.js";
57
+ } from "./chunk-LEW4QI7B.js";
58
58
  import {
59
59
  applySplices,
60
60
  buildParagraphSplices,
61
61
  buildRangeSplices,
62
62
  placeSealHwpx,
63
63
  scanSectionXml
64
- } from "./chunk-O345LTOL.js";
64
+ } from "./chunk-Q75JAM4G.js";
65
65
  import {
66
66
  DEFAULT_REDACT_RULES,
67
67
  redactMarkdown,
@@ -69,7 +69,7 @@ import {
69
69
  } from "./chunk-3WSNLH4B.js";
70
70
  import {
71
71
  blocksToChunks
72
- } from "./chunk-L65DR4EY.js";
72
+ } from "./chunk-KTN2KZLU.js";
73
73
  import {
74
74
  SPACE_EM_FIXED,
75
75
  SPACE_EM_FONT,
@@ -94,20 +94,20 @@ import {
94
94
  renderSceneToHtml,
95
95
  simulateWrap,
96
96
  simulateWrapKeepWord
97
- } from "./chunk-ZMHMIXTU.js";
97
+ } from "./chunk-GHTUC2HG.js";
98
98
  import "./chunk-7FCNOKOR.js";
99
- import "./chunk-MSGQ6DFT.js";
99
+ import "./chunk-CRARTST7.js";
100
100
  import "./chunk-VQFA55IC.js";
101
- import "./chunk-OJGHM3YD.js";
101
+ import "./chunk-SM5PYAPC.js";
102
102
  import {
103
103
  blocksToMarkdown,
104
104
  flattenLayoutTables,
105
105
  hasStructuredCellContent
106
- } from "./chunk-MW2G24XL.js";
107
- import "./chunk-44LAZYCW.js";
106
+ } from "./chunk-KPCMLJ2Q.js";
107
+ import "./chunk-4IKC7MON.js";
108
108
  import {
109
109
  VERSION
110
- } from "./chunk-H3MGECXS.js";
110
+ } from "./chunk-KKV433FL.js";
111
111
  export {
112
112
  BUILTIN_TEMPLATES,
113
113
  DEFAULT_REDACT_RULES,
@@ -198,4 +198,4 @@ export {
198
198
  usesGaejosikMunche,
199
199
  validateHwpx
200
200
  };
201
- //# sourceMappingURL=-OOORB3ZM.js.map
201
+ //# sourceMappingURL=-VE5T6RQW.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  KordocError
4
- } from "./chunk-H3MGECXS.js";
4
+ } from "./chunk-KKV433FL.js";
5
5
 
6
6
  // src/shared/offline.ts
7
7
  import { realpathSync } from "fs";
@@ -49,4 +49,4 @@ export {
49
49
  getAccessRoot,
50
50
  assertWithinRoot
51
51
  };
52
- //# sourceMappingURL=chunk-XB6VRTM3.js.map
52
+ //# sourceMappingURL=chunk-35ZMC4PU.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  KordocError,
4
4
  OPTIONAL_DEP_INSTALL_HINT
5
- } from "./chunk-H3MGECXS.js";
5
+ } from "./chunk-KKV433FL.js";
6
6
 
7
7
  // src/render/rasterize.ts
8
8
  var densityExponent = null;
@@ -88,4 +88,4 @@ export {
88
88
  rasterizeSvg,
89
89
  rasterizePageSvg
90
90
  };
91
- //# sourceMappingURL=chunk-44LAZYCW.js.map
91
+ //# sourceMappingURL=chunk-4IKC7MON.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-6H25SXDI.js";
5
5
  import {
6
6
  extractPageBlocksWithLines
7
- } from "./chunk-CGRLQJC2.js";
7
+ } from "./chunk-SWNJAS7J.js";
8
8
  import {
9
9
  OCR_DET_MODEL,
10
10
  OCR_REC_DICT,
@@ -12,10 +12,10 @@ import {
12
12
  ensureOcrModels,
13
13
  getOcrModelsDir,
14
14
  parseCharacterDict
15
- } from "./chunk-NEQC7PV5.js";
15
+ } from "./chunk-VR4ZBQSV.js";
16
16
  import {
17
17
  OPTIONAL_DEP_INSTALL_HINT
18
- } from "./chunk-H3MGECXS.js";
18
+ } from "./chunk-KKV433FL.js";
19
19
 
20
20
  // src/ocr/ruling-lines.ts
21
21
  var INK_LUMA_MAX = 205;
@@ -2065,4 +2065,4 @@ export {
2065
2065
  runPdfOcr,
2066
2066
  ocrItemsToBlocks
2067
2067
  };
2068
- //# sourceMappingURL=chunk-LZJ4HHFE.js.map
2068
+ //# sourceMappingURL=chunk-7PSD7KCU.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  visibleText
4
- } from "./chunk-MW2G24XL.js";
4
+ } from "./chunk-KPCMLJ2Q.js";
5
5
 
6
6
  // src/script-tags.ts
7
7
  var LITERAL_TAG = /<(?=\/?(?:u|sup|sub)>)/g;
@@ -274,4 +274,4 @@ export {
274
274
  HEADING_RATIO_H2,
275
275
  HEADING_RATIO_H3
276
276
  };
277
- //# sourceMappingURL=chunk-MSGQ6DFT.js.map
277
+ //# sourceMappingURL=chunk-CRARTST7.js.map
@@ -4,15 +4,15 @@ import {
4
4
  HEADING_RATIO_H2,
5
5
  HEADING_RATIO_H3,
6
6
  tidyScriptTags
7
- } from "./chunk-IPJ5SVNH.js";
7
+ } from "./chunk-G3TSHCQC.js";
8
8
  import {
9
9
  ensureModelsIn,
10
10
  getModelsDir
11
- } from "./chunk-L3YW7ATL.js";
11
+ } from "./chunk-EQJ2HSZP.js";
12
12
  import {
13
13
  safeMax,
14
14
  safeMin
15
- } from "./chunk-NMKCOSXN.js";
15
+ } from "./chunk-ZPSTTVH4.js";
16
16
 
17
17
  // src/ocr/models.ts
18
18
  import { join } from "path";
@@ -2242,6 +2242,8 @@ function wrapJoiner(prevText, nextText, lex) {
2242
2242
  return " ";
2243
2243
  }
2244
2244
  var PARA_LAST_LINE = /* @__PURE__ */ new WeakMap();
2245
+ var PAGE_REF_TAIL = /(?:\t|…|·{2}|\.{3})\s*\d{1,4}(?:\s*\/\s*\d{1,4})?\s*$/;
2246
+ var PAGE_HEAD_MARK = /^(?:[\u0000-\u001f\ue000-\uf8ff\u25a0-\u25ff\u2750-\u275f<〈《〔\[]|ㅇ\s)/;
2245
2247
  var PAGE_BREAK_JOINS = /* @__PURE__ */ new WeakMap();
2246
2248
  function joinPageBreakWraps(blocks, lex) {
2247
2249
  const pageRight = /* @__PURE__ */ new Map();
@@ -2255,8 +2257,8 @@ function joinPageBreakWraps(blocks, lex) {
2255
2257
  if (a.type !== "paragraph" && a.type !== "list" || b.type !== "paragraph") continue;
2256
2258
  const last = a.bbox && PARA_LAST_LINE.get(a.bbox), fs = last ? last.fontSize : 0;
2257
2259
  if (!last || fs <= 0 || (pageRight.get(a.pageNumber) ?? Infinity) - last.right >= BODY_FULL_TOL * fs) continue;
2258
- if (last.width < BODY_MIN_WIDTH_EM * fs || Math.abs((b.style?.fontSize ?? 0) - fs) > 0.15 * fs) continue;
2259
- if (startsNewItem(a.text, b.text)) continue;
2260
+ if (last.width < BODY_MIN_WIDTH_EM * fs || Math.round(b.style?.fontSize ?? 0) !== Math.round(fs)) continue;
2261
+ if (startsNewItem(a.text, b.text) || PAGE_REF_TAIL.test(a.text) || PAGE_HEAD_MARK.test(b.text.replace(MARKUP, ""))) continue;
2260
2262
  const head = a.text, joiner = wrapJoiner(a.text, b.text, lex);
2261
2263
  a.text += joiner + b.text;
2262
2264
  const later = b.bbox && PAGE_BREAK_JOINS.get(b.bbox) || [];
@@ -8355,4 +8357,4 @@ export {
8355
8357
  removeSideTabs,
8356
8358
  extractPageBlocksWithLines
8357
8359
  };
8358
- //# sourceMappingURL=chunk-S7ED7QP2.js.map
8360
+ //# sourceMappingURL=chunk-DQN33VHN.js.map