kordoc 4.24.0 → 4.24.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 (126) hide show
  1. package/README.md +26 -54
  2. package/dist/{-VEOO4BOM.js → -SRNEV7LS.js} +11 -11
  3. package/dist/{chunk-P35SCAJN.js → chunk-3HN65YAL.js} +2 -2
  4. package/dist/{chunk-H5PDQ66I.js → chunk-4745MFQU.js} +3 -3
  5. package/dist/{chunk-ENCAYXDI.js → chunk-4XC4O7FJ.js} +4 -4
  6. package/dist/{chunk-EN3PK6OT.js → chunk-7NTMM6PO.js} +2 -2
  7. package/dist/{chunk-GEY6ZMXH.js → chunk-C6ZVB547.js} +43 -23
  8. package/dist/{chunk-GEY6ZMXH.js.map → chunk-C6ZVB547.js.map} +1 -1
  9. package/dist/{chunk-CKCJU42Y.js → chunk-DHMBPMKC.js} +74 -30
  10. package/dist/chunk-DHMBPMKC.js.map +1 -0
  11. package/dist/{chunk-ZGNHJCDR.js → chunk-E6VBLBOO.js} +2 -2
  12. package/dist/{chunk-O2SLKE4L.js → chunk-E7B5CXYI.js} +2 -2
  13. package/dist/{chunk-DKWEZWCF.cjs → chunk-HLTPMSYW.cjs} +3 -3
  14. package/dist/{chunk-DKWEZWCF.cjs.map → chunk-HLTPMSYW.cjs.map} +1 -1
  15. package/dist/{chunk-DZT3CHNZ.cjs → chunk-IGG63DFK.cjs} +3 -3
  16. package/dist/{chunk-DZT3CHNZ.cjs.map → chunk-IGG63DFK.cjs.map} +1 -1
  17. package/dist/{chunk-IHNIPVPJ.cjs → chunk-JFUUFJZW.cjs} +6 -6
  18. package/dist/{chunk-IHNIPVPJ.cjs.map → chunk-JFUUFJZW.cjs.map} +1 -1
  19. package/dist/{chunk-PX6X4YOR.js → chunk-JMOAMKAR.js} +4 -4
  20. package/dist/{chunk-P6FNIU5P.js → chunk-KUC5I5MB.js} +2 -2
  21. package/dist/{chunk-Z5G6QNVH.js → chunk-LMEF7FN5.js} +2 -2
  22. package/dist/{chunk-OJISMR2Z.js → chunk-M46PB75E.js} +2 -2
  23. package/dist/{chunk-G4HWEM6Q.js → chunk-MHNJOJQV.js} +4 -4
  24. package/dist/{chunk-Z62PHCSU.js → chunk-NJ5RUDCW.js} +3 -3
  25. package/dist/{chunk-DM5YPONO.js → chunk-NMFFIUI6.js} +2 -2
  26. package/dist/{chunk-HOXHBG4C.cjs → chunk-PNSALBXH.cjs} +2 -2
  27. package/dist/{chunk-HOXHBG4C.cjs.map → chunk-PNSALBXH.cjs.map} +1 -1
  28. package/dist/{chunk-FHFPQ6MX.cjs → chunk-PNX5FYHC.cjs} +24 -24
  29. package/dist/{chunk-FHFPQ6MX.cjs.map → chunk-PNX5FYHC.cjs.map} +1 -1
  30. package/dist/{chunk-IZYYKE5F.js → chunk-R2GIGE5H.js} +2 -2
  31. package/dist/{chunk-55DOBEGD.js → chunk-RIRPLFPN.js} +2 -2
  32. package/dist/{chunk-3M2BIQLZ.js → chunk-TDMBTG7U.js} +2 -2
  33. package/dist/{chunk-6YDPTTIY.js → chunk-TW3V6FSH.js} +2 -2
  34. package/dist/{chunk-OHDGEGDJ.cjs → chunk-UNICY546.cjs} +23 -23
  35. package/dist/{chunk-OHDGEGDJ.cjs.map → chunk-UNICY546.cjs.map} +1 -1
  36. package/dist/{chunk-SRUBDR3Z.js → chunk-VPSF5LEM.js} +3 -3
  37. package/dist/{chunk-4VPN5MHS.js → chunk-W24TJJNN.js} +2 -2
  38. package/dist/{chunk-DBPDAG7N.js → chunk-WDSTW3BD.js} +2 -2
  39. package/dist/{chunk-XLY5ZJRP.js → chunk-WJAFE3Z6.js} +2 -2
  40. package/dist/chunks-AL4P5TO5.js +10 -0
  41. package/dist/cli.js +41 -30
  42. package/dist/cli.js.map +1 -1
  43. package/dist/{formula-4GRNVWIQ.js → formula-DSB574H7.js} +4 -4
  44. package/dist/{formula-R3OWFGCZ.cjs → formula-HK2MNZ3Q.cjs} +9 -9
  45. package/dist/{formula-R3OWFGCZ.cjs.map → formula-HK2MNZ3Q.cjs.map} +1 -1
  46. package/dist/{formula-6Y467S4R.js → formula-U2LZ67KI.js} +3 -3
  47. package/dist/{image-ocr-CGJJCD4E.js → image-ocr-3QB2HLSI.js} +9 -9
  48. package/dist/{image-ocr-ZLL66KNO.js → image-ocr-J54Q3YWP.js} +6 -6
  49. package/dist/{image-ocr-EBKG45KF.cjs → image-ocr-QNIMVE5A.cjs} +17 -17
  50. package/dist/{image-ocr-EBKG45KF.cjs.map → image-ocr-QNIMVE5A.cjs.map} +1 -1
  51. package/dist/index.cjs +683 -619
  52. package/dist/index.cjs.map +1 -1
  53. package/dist/index.d.cts +1 -1
  54. package/dist/index.d.ts +1 -1
  55. package/dist/index.js +106 -42
  56. package/dist/index.js.map +1 -1
  57. package/dist/mcp.js +36 -33
  58. package/dist/mcp.js.map +1 -1
  59. package/dist/{model-bundle-RD4KSNTB.js → model-bundle-CGWU4ALC.js} +5 -5
  60. package/dist/{models-OLGCZBXI.js → models-A3TF3BDV.js} +5 -5
  61. package/dist/{parse-worker-v2-YZY2GQY5.js → parse-worker-v2-MNUD4WAR.js} +20 -13
  62. package/dist/parse-worker-v2-MNUD4WAR.js.map +1 -0
  63. package/dist/{parser-IHCFHLHN.js → parser-C3ARF26I.js} +12 -12
  64. package/dist/{parser-J22QBXPP.js → parser-OBGWEWSU.js} +9 -9
  65. package/dist/{parser-DX4I3GT7.cjs → parser-RPAHN3OR.cjs} +157 -157
  66. package/dist/{parser-DX4I3GT7.cjs.map → parser-RPAHN3OR.cjs.map} +1 -1
  67. package/dist/{pdf-ocr-TYIH23RP.js → pdf-ocr-ENLVEEYL.js} +9 -9
  68. package/dist/pdf-ocr-GA5QJFNK.cjs +31 -0
  69. package/dist/{pdf-ocr-WU7SZHWM.cjs.map → pdf-ocr-GA5QJFNK.cjs.map} +1 -1
  70. package/dist/{pdf-ocr-H2247ZZH.js → pdf-ocr-K53REDNY.js} +6 -6
  71. package/dist/{profile-io-GH3TYTNJ.js → profile-io-ZGFEO7CB.js} +3 -3
  72. package/dist/{rasterize-7TFTVFMB.js → rasterize-QMC2SAUT.js} +3 -3
  73. package/dist/{redact-doc-DSSQOO3A.js → redact-doc-JH6RZZBE.js} +11 -11
  74. package/dist/{render-NKXZQINI.js → render-ZGKQLKPJ.js} +7 -7
  75. package/dist/seal-KMGYTJAV.js +10 -0
  76. package/dist/{setup-JVLMX2TH.js → setup-LAQGCYQ2.js} +3 -3
  77. package/dist/visual-4OYJFGXL.js +21 -0
  78. package/dist/{watch-5RZVHAKI.js → watch-7YPB4TKC.js} +12 -12
  79. package/package.json +1 -1
  80. package/dist/chunk-CKCJU42Y.js.map +0 -1
  81. package/dist/chunks-LV5EJBZ4.js +0 -10
  82. package/dist/parse-worker-v2-YZY2GQY5.js.map +0 -1
  83. package/dist/pdf-ocr-WU7SZHWM.cjs +0 -31
  84. package/dist/seal-JIVSSI3Z.js +0 -10
  85. package/dist/visual-BKVZN6HP.js +0 -21
  86. /package/dist/{-VEOO4BOM.js.map → -SRNEV7LS.js.map} +0 -0
  87. /package/dist/{chunk-P35SCAJN.js.map → chunk-3HN65YAL.js.map} +0 -0
  88. /package/dist/{chunk-H5PDQ66I.js.map → chunk-4745MFQU.js.map} +0 -0
  89. /package/dist/{chunk-ENCAYXDI.js.map → chunk-4XC4O7FJ.js.map} +0 -0
  90. /package/dist/{chunk-EN3PK6OT.js.map → chunk-7NTMM6PO.js.map} +0 -0
  91. /package/dist/{chunk-ZGNHJCDR.js.map → chunk-E6VBLBOO.js.map} +0 -0
  92. /package/dist/{chunk-O2SLKE4L.js.map → chunk-E7B5CXYI.js.map} +0 -0
  93. /package/dist/{chunk-PX6X4YOR.js.map → chunk-JMOAMKAR.js.map} +0 -0
  94. /package/dist/{chunk-P6FNIU5P.js.map → chunk-KUC5I5MB.js.map} +0 -0
  95. /package/dist/{chunk-Z5G6QNVH.js.map → chunk-LMEF7FN5.js.map} +0 -0
  96. /package/dist/{chunk-OJISMR2Z.js.map → chunk-M46PB75E.js.map} +0 -0
  97. /package/dist/{chunk-G4HWEM6Q.js.map → chunk-MHNJOJQV.js.map} +0 -0
  98. /package/dist/{chunk-Z62PHCSU.js.map → chunk-NJ5RUDCW.js.map} +0 -0
  99. /package/dist/{chunk-DM5YPONO.js.map → chunk-NMFFIUI6.js.map} +0 -0
  100. /package/dist/{chunk-IZYYKE5F.js.map → chunk-R2GIGE5H.js.map} +0 -0
  101. /package/dist/{chunk-55DOBEGD.js.map → chunk-RIRPLFPN.js.map} +0 -0
  102. /package/dist/{chunk-3M2BIQLZ.js.map → chunk-TDMBTG7U.js.map} +0 -0
  103. /package/dist/{chunk-6YDPTTIY.js.map → chunk-TW3V6FSH.js.map} +0 -0
  104. /package/dist/{chunk-SRUBDR3Z.js.map → chunk-VPSF5LEM.js.map} +0 -0
  105. /package/dist/{chunk-4VPN5MHS.js.map → chunk-W24TJJNN.js.map} +0 -0
  106. /package/dist/{chunk-DBPDAG7N.js.map → chunk-WDSTW3BD.js.map} +0 -0
  107. /package/dist/{chunk-XLY5ZJRP.js.map → chunk-WJAFE3Z6.js.map} +0 -0
  108. /package/dist/{chunks-LV5EJBZ4.js.map → chunks-AL4P5TO5.js.map} +0 -0
  109. /package/dist/{formula-4GRNVWIQ.js.map → formula-DSB574H7.js.map} +0 -0
  110. /package/dist/{formula-6Y467S4R.js.map → formula-U2LZ67KI.js.map} +0 -0
  111. /package/dist/{image-ocr-CGJJCD4E.js.map → image-ocr-3QB2HLSI.js.map} +0 -0
  112. /package/dist/{image-ocr-ZLL66KNO.js.map → image-ocr-J54Q3YWP.js.map} +0 -0
  113. /package/dist/{model-bundle-RD4KSNTB.js.map → model-bundle-CGWU4ALC.js.map} +0 -0
  114. /package/dist/{models-OLGCZBXI.js.map → models-A3TF3BDV.js.map} +0 -0
  115. /package/dist/{parser-IHCFHLHN.js.map → parser-C3ARF26I.js.map} +0 -0
  116. /package/dist/{parser-J22QBXPP.js.map → parser-OBGWEWSU.js.map} +0 -0
  117. /package/dist/{pdf-ocr-H2247ZZH.js.map → pdf-ocr-ENLVEEYL.js.map} +0 -0
  118. /package/dist/{pdf-ocr-TYIH23RP.js.map → pdf-ocr-K53REDNY.js.map} +0 -0
  119. /package/dist/{profile-io-GH3TYTNJ.js.map → profile-io-ZGFEO7CB.js.map} +0 -0
  120. /package/dist/{rasterize-7TFTVFMB.js.map → rasterize-QMC2SAUT.js.map} +0 -0
  121. /package/dist/{redact-doc-DSSQOO3A.js.map → redact-doc-JH6RZZBE.js.map} +0 -0
  122. /package/dist/{render-NKXZQINI.js.map → render-ZGKQLKPJ.js.map} +0 -0
  123. /package/dist/{seal-JIVSSI3Z.js.map → seal-KMGYTJAV.js.map} +0 -0
  124. /package/dist/{setup-JVLMX2TH.js.map → setup-LAQGCYQ2.js.map} +0 -0
  125. /package/dist/{visual-BKVZN6HP.js.map → visual-4OYJFGXL.js.map} +0 -0
  126. /package/dist/{watch-5RZVHAKI.js.map → watch-7YPB4TKC.js.map} +0 -0
@@ -5,11 +5,11 @@ import {
5
5
  HEADING_RATIO_H2,
6
6
  HEADING_RATIO_H3,
7
7
  tidyScriptTags
8
- } from "./chunk-P6FNIU5P.js";
8
+ } from "./chunk-KUC5I5MB.js";
9
9
  import {
10
10
  safeMax,
11
11
  safeMin
12
- } from "./chunk-Z5G6QNVH.js";
12
+ } from "./chunk-LMEF7FN5.js";
13
13
 
14
14
  // src/pdf/line-extract.ts
15
15
  import { OPS } from "pdfjs-dist/legacy/build/pdf.mjs";
@@ -8977,4 +8977,4 @@ export {
8977
8977
  UNRULED_REGION_TABLES,
8978
8978
  mergeOcrImageRegions
8979
8979
  };
8980
- //# sourceMappingURL=chunk-SRUBDR3Z.js.map
8980
+ //# sourceMappingURL=chunk-VPSF5LEM.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  assertNetworkAllowed
4
- } from "./chunk-3M2BIQLZ.js";
4
+ } from "./chunk-TDMBTG7U.js";
5
5
 
6
6
  // src/pdf/formula/models.ts
7
7
  import { createHash as createHash2 } from "crypto";
@@ -296,4 +296,4 @@ export {
296
296
  ensureFormulaModels,
297
297
  ensureSingleModel
298
298
  };
299
- //# sourceMappingURL=chunk-4VPN5MHS.js.map
299
+ //# sourceMappingURL=chunk-W24TJJNN.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  escapeHtml,
4
4
  sanitizeHref
5
- } from "./chunk-Z5G6QNVH.js";
5
+ } from "./chunk-LMEF7FN5.js";
6
6
 
7
7
  // src/shared/symbol-fonts.ts
8
8
  var WINGDINGS = [
@@ -1179,4 +1179,4 @@ export {
1179
1179
  visibleText,
1180
1180
  escapeHtmlCellText
1181
1181
  };
1182
- //# sourceMappingURL=chunk-DBPDAG7N.js.map
1182
+ //# sourceMappingURL=chunk-WDSTW3BD.js.map
@@ -1,5 +1,5 @@
1
1
  // src/utils.ts
2
- var VERSION = true ? "4.24.0" : "0.0.0-dev";
2
+ var VERSION = true ? "4.24.2" : "0.0.0-dev";
3
3
  function toArrayBuffer(buf) {
4
4
  if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {
5
5
  return buf.buffer;
@@ -161,4 +161,4 @@ export {
161
161
  classifyError,
162
162
  partExtension
163
163
  };
164
- //# sourceMappingURL=chunk-XLY5ZJRP.js.map
164
+ //# sourceMappingURL=chunk-WJAFE3Z6.js.map
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ blocksToChunks
4
+ } from "./chunk-NMFFIUI6.js";
5
+ import "./chunk-WDSTW3BD.js";
6
+ import "./chunk-LMEF7FN5.js";
7
+ export {
8
+ blocksToChunks
9
+ };
10
+ //# sourceMappingURL=chunks-AL4P5TO5.js.map
package/dist/cli.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  parseFormatProfileJson
4
- } from "./chunk-OJISMR2Z.js";
4
+ } from "./chunk-M46PB75E.js";
5
5
  import {
6
6
  parseWorkerFile
7
- } from "./chunk-H5PDQ66I.js";
7
+ } from "./chunk-4745MFQU.js";
8
8
  import {
9
9
  BODY_FONTS,
10
10
  BULLET2_CHARS,
@@ -44,31 +44,31 @@ import {
44
44
  unknownFontWarnings,
45
45
  usesGaejosikMunche,
46
46
  usesLogicStructure
47
- } from "./chunk-GEY6ZMXH.js";
48
- import "./chunk-DM5YPONO.js";
47
+ } from "./chunk-C6ZVB547.js";
48
+ import "./chunk-NMFFIUI6.js";
49
49
  import {
50
50
  detectFormat,
51
51
  detectImageMime,
52
52
  detectZipFormat
53
- } from "./chunk-CKCJU42Y.js";
54
- import "./chunk-ZGNHJCDR.js";
55
- import "./chunk-EN3PK6OT.js";
53
+ } from "./chunk-DHMBPMKC.js";
54
+ import "./chunk-E6VBLBOO.js";
55
+ import "./chunk-7NTMM6PO.js";
56
56
  import "./chunk-VKVDMH7X.js";
57
57
  import "./chunk-VQFA55IC.js";
58
58
  import "./chunk-BYMPPVT3.js";
59
- import "./chunk-P6FNIU5P.js";
59
+ import "./chunk-KUC5I5MB.js";
60
60
  import {
61
61
  blocksToMarkdown
62
- } from "./chunk-DBPDAG7N.js";
62
+ } from "./chunk-WDSTW3BD.js";
63
63
  import {
64
64
  extractFormFields,
65
65
  fillPlan,
66
66
  fillWithUniqueGuard
67
- } from "./chunk-Z62PHCSU.js";
67
+ } from "./chunk-NJ5RUDCW.js";
68
68
  import {
69
69
  createXmlParser,
70
70
  readZipEntry
71
- } from "./chunk-55DOBEGD.js";
71
+ } from "./chunk-RIRPLFPN.js";
72
72
  import {
73
73
  KordocError,
74
74
  VERSION,
@@ -78,7 +78,7 @@ import {
78
78
  sanitizeError,
79
79
  stripDtd,
80
80
  toArrayBuffer
81
- } from "./chunk-Z5G6QNVH.js";
81
+ } from "./chunk-LMEF7FN5.js";
82
82
  import "./chunk-3WSNLH4B.js";
83
83
 
84
84
  // src/cli.ts
@@ -222,7 +222,7 @@ async function convertFiles(files, opts, writeOutput = (text) => {
222
222
  `);
223
223
  }
224
224
  } else if (opts.format === "chunks") {
225
- const { blocksToChunks } = await import("./chunks-LV5EJBZ4.js");
225
+ const { blocksToChunks } = await import("./chunks-AL4P5TO5.js");
226
226
  const chunks = blocksToChunks(result.blocks, { tableFormat: parseOptions.tableFormat }).map((c) => {
227
227
  let text = c.text;
228
228
  if (opts.plain) text = toPlainMarkdown(text);
@@ -390,7 +390,7 @@ function registerDocCommands(program2) {
390
390
  if (command.getOptionValueSource("format") === "default" && program2.getOptionValueSource("format") === "cli") {
391
391
  opts.format = rootOpts.format;
392
392
  }
393
- const { watchDirectory } = await import("./watch-5RZVHAKI.js");
393
+ const { watchDirectory } = await import("./watch-7YPB4TKC.js");
394
394
  await watchDirectory({
395
395
  dir,
396
396
  outDir: opts.outDir,
@@ -625,7 +625,7 @@ function registerDocCommands(program2) {
625
625
  });
626
626
  program2.command("seal <file>").description('\uB3C4\uC7A5/\uC11C\uBA85 \uC774\uBBF8\uC9C0\uB97C \uC575\uCEE4 \uBB38\uAD6C \uC704\uC5D0 \uBD80\uC720 \uBC30\uCE58 (\uD45C/\uD398\uC774\uC9C0 \uBD88\uD655\uC7A5) \u2014 kordoc seal \uC2E0\uCCAD\uC11C.hwpx --image \uB3C4\uC7A5.png --anchor "(\uC778)" -o \uACB0\uACFC.hwpx').requiredOption("--image <path>", "\uB3C4\uC7A5/\uC11C\uBA85 \uC774\uBBF8\uC9C0 (\uD22C\uBA85 \uBC30\uACBD PNG \uAD8C\uC7A5)").option("--anchor <text>", "\uC575\uCEE4 \uBB38\uAD6C", "(\uC778)").option("-n, --occurrence <num>", "\uAC19\uC740 \uC575\uCEE4\uAC00 \uC5EC\uB7FF\uC77C \uB54C 0-based \uC120\uD0DD", "0").option("--size-mm <num>", "\uB3C4\uC7A5 \uD55C \uBCC0 \uD06C\uAE30 mm (\uAE30\uBCF8: \uC904\uB192\uC774\xD71.6, 7~18 \uD074\uB7A8\uD504)").option("--mode <mode>", "overlap(\uBB38\uAD6C \uC704 \uACB9\uCE68) | right(\uC624\uB978\uCABD \uC606) | auto", "auto").option("--dx <mm>", "x \uBBF8\uC138\uC870\uC815 mm", "0").option("--dy <mm>", "y \uBBF8\uC138\uC870\uC815 mm", "0").option("-o, --output <path>", "\uCD9C\uB825 \uACBD\uB85C (\uAE30\uBCF8: <\uC785\uB825>.sealed.hwpx)").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (file, opts) => {
627
627
  try {
628
- const { placeSealHwpx, detectFormat: detectFormat2 } = await import("./-VEOO4BOM.js");
628
+ const { placeSealHwpx, detectFormat: detectFormat2 } = await import("./-SRNEV7LS.js");
629
629
  const rootOpts = program2.opts();
630
630
  const output = opts.output ?? rootOpts.output;
631
631
  const silent = opts.silent ?? rootOpts.silent;
@@ -703,7 +703,7 @@ function registerDocCommands(program2) {
703
703
  });
704
704
  program2.command("patch <original> <edited>").description("\uC11C\uC2DD \uBCF4\uC874 \uB77C\uC6B4\uB4DC\uD2B8\uB9BD \uD328\uCE58 \u2014 \uD3B8\uC9D1\uB41C \uB9C8\uD06C\uB2E4\uC6B4\uC744 \uC6D0\uBCF8 HWPX/HWP\uC5D0 in-place \uBC18\uC601 (kordoc patch \uC6D0\uBCF8.hwpx \uD3B8\uC9D1.md -o \uCD9C\uB825.hwpx). \uACAC\uBCF8 \uC11C\uC2DD \uADF8\uB300\uB85C \uC0C8 \uBB38\uC11C \uC4F0\uAE30(\uC11C\uC2DD \uBCA0\uB07C\uAE30)\uB3C4 \uC774 \uACBD\uB85C: \uACAC\uBCF8\uC744 --keep-layout-tables \uB85C \uC77D\uC5B4 \uB0B4\uC6A9\uB9CC \uC0C8\uB85C \uC4F4 \uB4A4 patch \u2014 HWPX \uB294 \uBB38\uB2E8 \uCD94\uAC00\xB7\uC0AD\uC81C\uB97C \uAC19\uC740 \uD56D\uBAA9 \uBD80\uD638 \uACAC\uBCF8 \uBB38\uB2E8 \uC11C\uC2DD\uC73C\uB85C \uBC18\uC601. \uBBF8\uC801\uC6A9(skip) \uD3B8\uC9D1\uC774 \uC788\uC73C\uBA74 exit 2").option("-o, --output <path>", "\uCD9C\uB825 \uACBD\uB85C (\uAE30\uBCF8: <\uC6D0\uBCF8>.patched.hwpx|.hwp)").option("--no-verify", "\uD328\uCE58 \uD6C4 \uC7AC\uD30C\uC2F1 \uC790\uB3D9 \uAC80\uC99D \uC0DD\uB7B5").option("--no-structure", "\uBB38\uB2E8 \uCD94\uAC00\xB7\uC0AD\uC81C\uB97C \uBC18\uC601\uD558\uC9C0 \uC54A\uACE0 \uAC74\uB108\uB700 (HWPX \u2014 \uAE00 \uC218\uC815\uB9CC, \uBB38\uC11C \uACE8\uACA9 \uACE0\uC815)").option("--keep-lineseg", "\uAE00\uC774 \uBC14\uB010 \uBB38\uB2E8\uC758 \uC904 \uB098\uB214 \uC815\uBCF4\uB97C \uC9C0\uC6B0\uC9C0 \uC54A\uACE0 \uC6D0\uBCF8 \uC904 \uC704\uCE58\uB97C \uB0A8\uAE40 (HWP 5.x \u2014 \uAE30\uBCF8\uC740 \uC9C0\uC6CC\uC11C \uD55C\uCEF4\uC774 \uB2E4\uC2DC \uC9EC)").option("--json", "\uACB0\uACFC(\uC801\uC6A9 \uC218\xB7\uAC74\uB108\uB6F4 \uD3B8\uC9D1\xB7\uAC80\uC99D \uC794\uCC28)\uB97C JSON \uC73C\uB85C stdout \uCD9C\uB825 \u2014 --silent \uC640 \uD568\uAED8 \uC368\uB3C4 \uB098\uC628\uB2E4").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (original, edited, opts) => {
705
705
  try {
706
- const { patchHwpx, patchHwp, detectFormat: detectFormat2 } = await import("./-VEOO4BOM.js");
706
+ const { patchHwpx, patchHwp, detectFormat: detectFormat2 } = await import("./-SRNEV7LS.js");
707
707
  const rootOpts = program2.opts();
708
708
  const output = opts.output ?? rootOpts.output;
709
709
  const silent = opts.silent ?? rootOpts.silent;
@@ -757,7 +757,7 @@ function registerDocCommands(program2) {
757
757
  });
758
758
  program2.command("compare <a> <b>").description("\uB450 \uBB38\uC11C \uBE44\uAD50 \u2014 \uCD94\uAC00\xB7\uC0AD\uC81C\xB7\uBCC0\uACBD \uBE14\uB85D (HWP\u2194HWPX \uB4F1 \uD615\uC2DD\uC774 \uB2EC\uB77C\uB3C4 \uB428, \uC2E0\uAD6C\uB300\uC870\uD45C\uC6A9). \uCC28\uC774\uAC00 \uC788\uC73C\uBA74 exit 1").option("--json", "\uBE44\uAD50 \uACB0\uACFC(stats\xB7diffs)\uB97C JSON \uC73C\uB85C stdout \uCD9C\uB825").action(async (a, b, opts) => {
759
759
  try {
760
- const { compare } = await import("./-VEOO4BOM.js");
760
+ const { compare } = await import("./-SRNEV7LS.js");
761
761
  const read = (p) => {
762
762
  const buf = readFileSync2(resolve3(p));
763
763
  return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
@@ -788,7 +788,7 @@ function registerDocCommands(program2) {
788
788
  });
789
789
  program2.command("validate <file>").description("HWPX \uAD6C\uC870 \uAC80\uC99D \u2014 ZIP\xB7mimetype\xB7\uD544\uC218 \uD30C\uC77C\xB7XML \uC6F0\uD3FC\uB4DC\xB7secCnt\xB7manifest \uCC38\uC870 (\uD55C\uCEF4\uB3C5\uC2A4 \uAC70\uBD80 \uC694\uC778 \uC0AC\uC804 \uCC28\uB2E8)").option("--json", "\uACB0\uACFC\uB97C JSON\uC73C\uB85C stdout\uC5D0 \uCD9C\uB825").action(async (file, opts) => {
790
790
  try {
791
- const { validateHwpx } = await import("./-VEOO4BOM.js");
791
+ const { validateHwpx } = await import("./-SRNEV7LS.js");
792
792
  const buf = new Uint8Array(readFileSync2(resolve3(file)));
793
793
  const result = await validateHwpx(buf);
794
794
  if (opts.json) {
@@ -1048,6 +1048,17 @@ function registerGenerateCommands(program2) {
1048
1048
  if (!silent) for (const w of warnings) process.stderr.write(`[kordoc] \u26A0 ${w}
1049
1049
  `);
1050
1050
  const outPath2 = resolve4(output ?? (markdown === "-" ? `${baseName}.hwpx` : markdown.replace(/\.(md|markdown|txt)$/i, "") + ".hwpx"));
1051
+ let sameAsTemplate = outPath2 === tplPath;
1052
+ try {
1053
+ const a = statSync4(outPath2), b = statSync4(tplPath);
1054
+ sameAsTemplate ||= a.ino === b.ino && a.dev === b.dev;
1055
+ } catch {
1056
+ }
1057
+ if (sameAsTemplate) {
1058
+ process.stderr.write(`[kordoc] \uCD9C\uB825 \uACBD\uB85C\uAC00 \uACAC\uBCF8\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uACAC\uBCF8\uC744 \uB36E\uC5B4\uC4F0\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -o \uB85C \uB2E4\uB978 \uACBD\uB85C\uB97C \uC9C0\uC815\uD558\uC138\uC694
1059
+ `);
1060
+ process.exit(1);
1061
+ }
1051
1062
  mkdirSync3(dirname2(outPath2), { recursive: true });
1052
1063
  writeFileSync3(outPath2, Buffer.from(buf2));
1053
1064
  if (!silent) process.stderr.write(`[kordoc] HWPX \uC0DD\uC131 (\uACAC\uBCF8:${basename5(tplPath)}) \u2192 ${outPath2}
@@ -1307,7 +1318,7 @@ function registerGenerateCommands(program2) {
1307
1318
  let irBlocks;
1308
1319
  if (kind === "unknown") text = raw.toString("utf-8");
1309
1320
  else {
1310
- const { parse: parse2 } = await import("./-VEOO4BOM.js");
1321
+ const { parse: parse2 } = await import("./-SRNEV7LS.js");
1311
1322
  const parsed = await parse2(ab, file === "-" ? void 0 : { filePath: resolve4(file) });
1312
1323
  if (!parsed.success) {
1313
1324
  process.stderr.write(`[kordoc] \uC624\uB958: ${kind} \uBB38\uC11C\uB97C \uC77D\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4 \u2014 ${parsed.error}
@@ -1422,7 +1433,7 @@ function registerGenerateCommands(program2) {
1422
1433
  });
1423
1434
  program2.command("redact <files...>").description("\uAC1C\uC778\uC815\uBCF4 \uC11C\uC2DD \uBCF4\uC874 \uB9C8\uC2A4\uD0B9 \u2014 \uC8FC\uBBFC\xB7\uC678\uAD6D\uC778\uB4F1\uB85D\uBC88\uD638\xB7\uC804\uD654\xB7\uC774\uBA54\uC77C\xB7\uCE74\uB4DC\xB7\uACC4\uC88C\xB7\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638\xB7\uC5EC\uAD8C\xB7\uC6B4\uC804\uBA74\uD5C8(--rules \uB85C \uC778\uBA85\xB7\uC8FC\uC18C opt-in)\uB97C \uD0D0\uC9C0\uD574 HWPX/HWP\uB294 \uC6D0\uBCF8 \uC11C\uC2DD \uADF8\uB300\uB85C \uAC19\uC740 \uAE38\uC774\uB85C \uAC00\uB9B0 \uD30C\uC77C(\uBCF8\uBB38\xB7\uD45C\xB7\uBA38\uB9AC\uB9D0/\uAF2C\uB9AC\uB9D0\xB7\uAC01\uC8FC\xB7\uAE00\uC0C1\uC790\xB7\uBBF8\uB9AC\uBCF4\uAE30\xB7\uBA54\uD0C0\uB370\uC774\uD130 \uD3EC\uD568), \uADF8 \uC678 \uD3EC\uB9F7(PDF \uB4F1)\uC740 \uC6D0\uBCF8\uC744 \uAC74\uB4DC\uB9AC\uC9C0 \uC54A\uACE0 \uB9C8\uC2A4\uD0B9\uB41C \uB9C8\uD06C\uB2E4\uC6B4\uB9CC \uCD9C\uB825. \uC790\uB3D9 \uAC80\uCD9C \uBCF4\uC870 \uB3C4\uAD6C\uC774\uBBC0\uB85C \uACB0\uACFC\uB294 \uBC18\uB4DC\uC2DC \uC0AC\uB78C\uC774 \uCD5C\uC885 \uD655\uC778\uD558\uC138\uC694 (\uC774\uBBF8\uC9C0 \uC18D \uAE00\uC790\uB294 \uD0D0\uC9C0 \uBD88\uAC00)").option("--rules <csv>", "\uC801\uC6A9 \uB8F0 (\uAE30\uBCF8: rrn,phone,email,card,account,brn,passport,driver \u2014 crn(\uBC95\uC778\uB4F1\uB85D\uBC88\uD638),ip,name(\uC778\uBA85),address(\uC8FC\uC18C)\uB294 opt-in)").option("--mask-char <ch>", "\uB9C8\uC2A4\uD06C \uBB38\uC790 1\uAE00\uC790 (\uAE30\uBCF8: \u25CF)").option("-o, --output <path>", "\uCD9C\uB825 \uACBD\uB85C (\uB2E8\uC77C \uD30C\uC77C \uC2DC)").option("-d, --out-dir <dir>", "\uCD9C\uB825 \uB514\uB809\uD1A0\uB9AC (\uB2E4\uC911 \uD30C\uC77C \uC2DC)").option("--dry-run", "\uD0D0\uC9C0 \uB9AC\uD3EC\uD2B8\uB9CC \uCD9C\uB825, \uD30C\uC77C \uBBF8\uC0DD\uC131").option("--json", "\uB9AC\uD3EC\uD2B8\uB97C JSON\uC73C\uB85C stdout \uCD9C\uB825").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (files, opts) => {
1424
1435
  const { ALL_REDACT_RULES, DEFAULT_REDACT_RULES, redactText } = await import("./redact-NV2QCDGE.js");
1425
- const { redactDocument } = await import("./redact-doc-DSSQOO3A.js");
1436
+ const { redactDocument } = await import("./redact-doc-JH6RZZBE.js");
1426
1437
  const rootOpts = program2.opts();
1427
1438
  const output = opts.output ?? rootOpts.output;
1428
1439
  const outDir = opts.outDir ?? rootOpts.outDir;
@@ -1584,7 +1595,7 @@ function registerRenderCommands(program2) {
1584
1595
  const absPath = resolve5(file);
1585
1596
  const stem = file.replace(/\.hwpx?$/i, "");
1586
1597
  if (fmt === "svg" && !outDir && !pages && !/\.hwp$/i.test(absPath)) {
1587
- const { renderHwpxToSvg } = await import("./render-NKXZQINI.js");
1598
+ const { renderHwpxToSvg } = await import("./render-ZGKQLKPJ.js");
1588
1599
  const buffer = readFileSync4(absPath);
1589
1600
  const result = await renderHwpxToSvg(toArrayBuffer(buffer), { highlights, reflow: opts.reflow, reflowMode: opts.reflowMode });
1590
1601
  const outPath = resolve5(output ?? stem + ".svg");
@@ -1598,7 +1609,7 @@ function registerRenderCommands(program2) {
1598
1609
  }
1599
1610
  return;
1600
1611
  }
1601
- const { renderDocument } = await import("./render-NKXZQINI.js");
1612
+ const { renderDocument } = await import("./render-ZGKQLKPJ.js");
1602
1613
  const { scene, assets } = await renderDocument(absPath, {
1603
1614
  format: fmt,
1604
1615
  pages,
@@ -1648,7 +1659,7 @@ function registerRenderCommands(program2) {
1648
1659
  if (!outDir) throw new KordocError("--out-dir \uC774 \uD544\uC694\uD569\uB2C8\uB2E4 (crop \uC740 \uD30C\uC77C \uC5EC\uB7EC \uAC1C\uB97C \uB0C5\uB2C8\uB2E4)");
1649
1660
  const types = String(opts.target).split(",").map((t) => t.trim()).filter(Boolean);
1650
1661
  for (const t of types) if (!["table", "image", "paragraph", "shape"].includes(t)) throw new KordocError(`--target \uC720\uD615 \uC624\uB958: ${t}`);
1651
- const { extractRenderedRegions } = await import("./render-NKXZQINI.js");
1662
+ const { extractRenderedRegions } = await import("./render-ZGKQLKPJ.js");
1652
1663
  const regions = await extractRenderedRegions(resolve5(file), {
1653
1664
  types,
1654
1665
  format: fmt,
@@ -1686,7 +1697,7 @@ function registerRenderCommands(program2) {
1686
1697
  if (policy !== "none" && !outDir) throw new KordocError("--visual \uC740 crop \uD30C\uC77C\uC744 \uB0B4\uBBC0\uB85C --out-dir \uC774 \uD544\uC694\uD569\uB2C8\uB2E4");
1687
1698
  const cropFmt = String(opts.cropFormat);
1688
1699
  if (!["png", "jpeg"].includes(cropFmt)) throw new KordocError(`--crop-format \uC740 png|jpeg: ${cropFmt}`);
1689
- const { extractTables } = await import("./visual-BKVZN6HP.js");
1700
+ const { extractTables } = await import("./visual-4OYJFGXL.js");
1690
1701
  const tables = await extractTables(resolve5(file), { policy, format: cropFmt, paddingPt: Number(opts.padding) || 0 });
1691
1702
  const dir = outDir ? resolve5(outDir) : void 0;
1692
1703
  if (dir) mkdirSync4(dir, { recursive: true });
@@ -1730,7 +1741,7 @@ function registerRenderCommands(program2) {
1730
1741
  });
1731
1742
  program2.command("render-worker").description("persistent \uB80C\uB354 \uC6CC\uCEE4 \u2014 stdin NDJSON \uC694\uCCAD \u2192 \uC870\uD310 SVG \uD30C\uC77C \uCD9C\uB825 (\uD504\uB85C\uC138\uC2A4 \uC720\uC9C0, \uCF5C\uB4DC\uC2A4\uD0C0\uD2B8 \uC81C\uAC70)").action(async () => {
1732
1743
  const { createInterface } = await import("readline");
1733
- const { renderHwpxToSvg } = await import("./render-NKXZQINI.js");
1744
+ const { renderHwpxToSvg } = await import("./render-ZGKQLKPJ.js");
1734
1745
  const rl = createInterface({ input: process.stdin });
1735
1746
  const write = (o) => void process.stdout.write(JSON.stringify(o) + "\n");
1736
1747
  write({ ready: true, version: VERSION });
@@ -1779,12 +1790,12 @@ function registerSystemCommands(program2) {
1779
1790
  await startMcpServer();
1780
1791
  });
1781
1792
  program2.command("setup").description("\uB300\uD654\uD615 \uC124\uCE58 \uB9C8\uBC95\uC0AC \u2014 AI \uD074\uB77C\uC774\uC5B8\uD2B8 \uC790\uB3D9 \uB4F1\uB85D (Mac/Win/Linux)").action(async () => {
1782
- const { runSetup } = await import("./setup-JVLMX2TH.js");
1793
+ const { runSetup } = await import("./setup-LAQGCYQ2.js");
1783
1794
  await runSetup();
1784
1795
  });
1785
1796
  program2.command("check-formula-models").description("PDF \uC218\uC2DD OCR \uBAA8\uB378(MFD + MFR + tokenizer, ~155MB) \uC0C1\uD0DC \uD655\uC778 \u2014 \uC5C6\uAC70\uB098 SHA \uBD88\uC77C\uCE58\uBA74 \uB2E4\uC6B4\uB85C\uB4DC").option("--status-only", "\uC0C1\uD0DC\uB9CC JSON \uC73C\uB85C \uCD9C\uB825 (\uB2E4\uC6B4\uB85C\uB4DC \uC548 \uD568)").action(async (opts) => {
1786
1797
  try {
1787
- const { getFormulaModelStatus, ensureFormulaModels, getFormulaModelsDir } = await import("./formula-4GRNVWIQ.js");
1798
+ const { getFormulaModelStatus, ensureFormulaModels, getFormulaModelsDir } = await import("./formula-DSB574H7.js");
1788
1799
  const dir = getFormulaModelsDir();
1789
1800
  if (opts.statusOnly) {
1790
1801
  const status = await getFormulaModelStatus();
@@ -1838,7 +1849,7 @@ function registerSystemCommands(program2) {
1838
1849
  });
1839
1850
  program2.command("check-ocr-models").description("\uD14D\uC2A4\uD2B8 OCR \uBAA8\uB378(PP-OCRv5 korean det+rec, ~18MB) \uC0C1\uD0DC \uD655\uC778 \u2014 \uC5C6\uAC70\uB098 SHA \uBD88\uC77C\uCE58\uBA74 \uB2E4\uC6B4\uB85C\uB4DC").option("--status-only", "\uC0C1\uD0DC\uB9CC JSON \uC73C\uB85C \uCD9C\uB825 (\uB2E4\uC6B4\uB85C\uB4DC \uC548 \uD568)").action(async (opts) => {
1840
1851
  try {
1841
- const { getOcrModelStatus, ensureOcrModels, getOcrModelsDir } = await import("./models-OLGCZBXI.js");
1852
+ const { getOcrModelStatus, ensureOcrModels, getOcrModelsDir } = await import("./models-A3TF3BDV.js");
1842
1853
  const dir = getOcrModelsDir();
1843
1854
  if (opts.statusOnly) {
1844
1855
  const status = await getOcrModelStatus();
@@ -1892,7 +1903,7 @@ function registerSystemCommands(program2) {
1892
1903
  });
1893
1904
  program2.command("models").description("OCR/\uC218\uC2DD \uBAA8\uB378 \uC624\uD504\uB77C\uC778 \uC0AC\uC774\uB4DC\uB85C\uB4DC \u2014 \uD3D0\uC1C4\uB9DD \uBC18\uC785\uC6A9 \uB0B4\uBCF4\uB0B4\uAE30/\uAC00\uC838\uC624\uAE30 (SHA-256 \uAC80\uC99D)").option("--status", "\uCE90\uC2DC\uC5D0 \uC124\uCE58\uB41C \uBAA8\uB378 \uC0C1\uD0DC\uB97C JSON \uC73C\uB85C \uCD9C\uB825").option("--export <dir>", "\uB85C\uCEEC \uCE90\uC2DC \u2192 \uBC88\uB4E4 \uB514\uB809\uD1A0\uB9AC\uB85C \uB0B4\uBCF4\uB0B4\uAE30 (\uC628\uB77C\uC778 PC\uC5D0\uC11C \uC2E4\uD589)").option("--import <dir>", "\uBC88\uB4E4 \uB514\uB809\uD1A0\uB9AC \u2192 \uB85C\uCEEC \uCE90\uC2DC\uB85C \uC124\uCE58 (\uB0B4\uBD80\uB9DD PC\uC5D0\uC11C \uC2E4\uD589)").action(async (opts) => {
1894
1905
  try {
1895
- const { exportModels, importModels, modelCacheStatus } = await import("./model-bundle-RD4KSNTB.js");
1906
+ const { exportModels, importModels, modelCacheStatus } = await import("./model-bundle-CGWU4ALC.js");
1896
1907
  if (opts.status) {
1897
1908
  process.stdout.write(JSON.stringify(await modelCacheStatus(), null, 2) + "\n");
1898
1909
  return;
@@ -1958,7 +1969,7 @@ function registerWorkerCommands(program2) {
1958
1969
  const maxRequestBytes = limit(opts.maxRequestBytes, "--max-request-bytes");
1959
1970
  const maxResponseBytes = limit(opts.maxResponseBytes, "--max-response-bytes");
1960
1971
  routeConsoleToStderr();
1961
- const { runParseWorkerV2 } = await import("./parse-worker-v2-YZY2GQY5.js");
1972
+ const { runParseWorkerV2 } = await import("./parse-worker-v2-MNUD4WAR.js");
1962
1973
  await runParseWorkerV2({ maxRequestBytes, maxResponseBytes });
1963
1974
  process.exit(0);
1964
1975
  }