kordoc 4.2.1 → 4.2.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 (94) hide show
  1. package/README.md +5 -0
  2. package/dist/{-BSO3CDQQ.js → -NFHVGTVM.js} +9 -9
  3. package/dist/{chunk-Z6LPEWIX.js → chunk-2L7MIKOM.js} +3 -3
  4. package/dist/chunk-2L7MIKOM.js.map +1 -0
  5. package/dist/{chunk-35U3MVA2.cjs → chunk-DLFZAU4X.cjs} +3 -3
  6. package/dist/{chunk-35U3MVA2.cjs.map → chunk-DLFZAU4X.cjs.map} +1 -1
  7. package/dist/{chunk-QSB2RTX5.js → chunk-DSL6EVFJ.js} +6 -4
  8. package/dist/chunk-DSL6EVFJ.js.map +1 -0
  9. package/dist/{chunk-R22KDUKW.cjs → chunk-EFF2JPPA.cjs} +9 -9
  10. package/dist/{chunk-R22KDUKW.cjs.map → chunk-EFF2JPPA.cjs.map} +1 -1
  11. package/dist/{chunk-BHILWIE6.js → chunk-FHYLLKIP.js} +3 -3
  12. package/dist/chunk-FHYLLKIP.js.map +1 -0
  13. package/dist/{chunk-PLTG6ZRF.js → chunk-GHMVNMUN.js} +3 -3
  14. package/dist/{chunk-HTCKGSSW.js → chunk-GUYIXVV7.js} +3 -3
  15. package/dist/chunk-GUYIXVV7.js.map +1 -0
  16. package/dist/{chunk-7IMNZ2BL.js → chunk-IXHBRMDB.js} +6 -4
  17. package/dist/chunk-IXHBRMDB.js.map +1 -0
  18. package/dist/{chunk-RBUBZ2TA.cjs → chunk-KKZATKQW.cjs} +3 -3
  19. package/dist/chunk-KKZATKQW.cjs.map +1 -0
  20. package/dist/{chunk-QOC7S5VE.js → chunk-L5B7PQOP.js} +2 -2
  21. package/dist/{chunk-WJSGYVFD.js → chunk-LUJN3VFB.js} +3 -3
  22. package/dist/{chunk-KRAYUNFM.js → chunk-MOOVF6CT.js} +2 -2
  23. package/dist/{chunk-BKBYTPSL.js → chunk-MYD3QLBL.js} +2 -2
  24. package/dist/{chunk-L5JWKIOT.js → chunk-OLDIDBJ2.js} +3 -3
  25. package/dist/{chunk-F5ECB53I.js → chunk-T4AWY45Q.js} +2 -2
  26. package/dist/{chunk-WWYAYZ5U.js → chunk-TXYQJXOV.js} +48 -14
  27. package/dist/chunk-TXYQJXOV.js.map +1 -0
  28. package/dist/{chunk-LSXXGUWA.cjs → chunk-WMU2KJHF.cjs} +8 -6
  29. package/dist/chunk-WMU2KJHF.cjs.map +1 -0
  30. package/dist/{chunk-EZHWPKCH.js → chunk-X77U36TV.js} +2 -2
  31. package/dist/{chunk-54WVWWT4.js → chunk-ZF7QL4IY.js} +1 -1
  32. package/dist/chunk-ZF7QL4IY.js.map +1 -0
  33. package/dist/chunks-N4CWHTJI.js +10 -0
  34. package/dist/cli.js +17 -17
  35. package/dist/{image-ocr-N5Z32R4U.cjs → image-ocr-3AFBDDJI.cjs} +9 -9
  36. package/dist/{image-ocr-N5Z32R4U.cjs.map → image-ocr-3AFBDDJI.cjs.map} +1 -1
  37. package/dist/{image-ocr-SLUEM3FA.js → image-ocr-S4REURLR.js} +5 -5
  38. package/dist/{image-ocr-DALT7PFQ.js → image-ocr-TGHAMIQL.js} +4 -4
  39. package/dist/index.cjs +446 -412
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.d.cts +3 -0
  42. package/dist/index.d.ts +3 -0
  43. package/dist/index.js +44 -10
  44. package/dist/index.js.map +1 -1
  45. package/dist/mcp.js +15 -15
  46. package/dist/{parser-F5KY3YSD.js → parser-C3APVZGT.js} +6 -6
  47. package/dist/{parser-33TK5SMH.js → parser-KMC4YOZH.js} +5 -5
  48. package/dist/{parser-R4CXIXRN.cjs → parser-MRM6WICO.cjs} +24 -24
  49. package/dist/{parser-R4CXIXRN.cjs.map → parser-MRM6WICO.cjs.map} +1 -1
  50. package/dist/pdf-ocr-5BRMIJAT.cjs +13 -0
  51. package/dist/{pdf-ocr-WGWZDHMV.cjs.map → pdf-ocr-5BRMIJAT.cjs.map} +1 -1
  52. package/dist/pdf-ocr-UDTEQEWA.js +12 -0
  53. package/dist/{pdf-ocr-BXQZKU3N.js → pdf-ocr-UURMV6FD.js} +5 -5
  54. package/dist/{profile-io-CBYHKLFU.js → profile-io-RLQ62KS5.js} +3 -3
  55. package/dist/{rasterize-AWMM2CSW.js → rasterize-LBABF2WI.js} +2 -2
  56. package/dist/render-CYXQEHS7.js +10 -0
  57. package/dist/seal-SV6PFFYU.js +10 -0
  58. package/dist/{watch-HKXCISVO.js → watch-XEUEGOXW.js} +9 -9
  59. package/package.json +1 -1
  60. package/dist/chunk-54WVWWT4.js.map +0 -1
  61. package/dist/chunk-7IMNZ2BL.js.map +0 -1
  62. package/dist/chunk-BHILWIE6.js.map +0 -1
  63. package/dist/chunk-HTCKGSSW.js.map +0 -1
  64. package/dist/chunk-LSXXGUWA.cjs.map +0 -1
  65. package/dist/chunk-QSB2RTX5.js.map +0 -1
  66. package/dist/chunk-RBUBZ2TA.cjs.map +0 -1
  67. package/dist/chunk-WWYAYZ5U.js.map +0 -1
  68. package/dist/chunk-Z6LPEWIX.js.map +0 -1
  69. package/dist/chunks-LRFS5NJE.js +0 -10
  70. package/dist/pdf-ocr-34F5AQKK.js +0 -12
  71. package/dist/pdf-ocr-WGWZDHMV.cjs +0 -13
  72. package/dist/render-Y3IE2FIK.js +0 -10
  73. package/dist/seal-7RXFCRMT.js +0 -10
  74. /package/dist/{-BSO3CDQQ.js.map → -NFHVGTVM.js.map} +0 -0
  75. /package/dist/{chunk-PLTG6ZRF.js.map → chunk-GHMVNMUN.js.map} +0 -0
  76. /package/dist/{chunk-QOC7S5VE.js.map → chunk-L5B7PQOP.js.map} +0 -0
  77. /package/dist/{chunk-WJSGYVFD.js.map → chunk-LUJN3VFB.js.map} +0 -0
  78. /package/dist/{chunk-KRAYUNFM.js.map → chunk-MOOVF6CT.js.map} +0 -0
  79. /package/dist/{chunk-BKBYTPSL.js.map → chunk-MYD3QLBL.js.map} +0 -0
  80. /package/dist/{chunk-L5JWKIOT.js.map → chunk-OLDIDBJ2.js.map} +0 -0
  81. /package/dist/{chunk-F5ECB53I.js.map → chunk-T4AWY45Q.js.map} +0 -0
  82. /package/dist/{chunk-EZHWPKCH.js.map → chunk-X77U36TV.js.map} +0 -0
  83. /package/dist/{chunks-LRFS5NJE.js.map → chunks-N4CWHTJI.js.map} +0 -0
  84. /package/dist/{image-ocr-SLUEM3FA.js.map → image-ocr-S4REURLR.js.map} +0 -0
  85. /package/dist/{image-ocr-DALT7PFQ.js.map → image-ocr-TGHAMIQL.js.map} +0 -0
  86. /package/dist/{parser-F5KY3YSD.js.map → parser-C3APVZGT.js.map} +0 -0
  87. /package/dist/{parser-33TK5SMH.js.map → parser-KMC4YOZH.js.map} +0 -0
  88. /package/dist/{pdf-ocr-34F5AQKK.js.map → pdf-ocr-UDTEQEWA.js.map} +0 -0
  89. /package/dist/{pdf-ocr-BXQZKU3N.js.map → pdf-ocr-UURMV6FD.js.map} +0 -0
  90. /package/dist/{profile-io-CBYHKLFU.js.map → profile-io-RLQ62KS5.js.map} +0 -0
  91. /package/dist/{rasterize-AWMM2CSW.js.map → rasterize-LBABF2WI.js.map} +0 -0
  92. /package/dist/{render-Y3IE2FIK.js.map → render-CYXQEHS7.js.map} +0 -0
  93. /package/dist/{seal-7RXFCRMT.js.map → seal-SV6PFFYU.js.map} +0 -0
  94. /package/dist/{watch-HKXCISVO.js.map → watch-XEUEGOXW.js.map} +0 -0
package/dist/index.d.cts CHANGED
@@ -15,6 +15,7 @@ interface IRSpan {
15
15
  text: string;
16
16
  bold?: boolean;
17
17
  italic?: boolean;
18
+ strike?: boolean;
18
19
  code?: boolean;
19
20
  }
20
21
  interface IRBlock {
@@ -78,6 +79,8 @@ interface BoundingBox {
78
79
  interface InlineStyle {
79
80
  bold?: boolean;
80
81
  italic?: boolean;
82
+ /** 취소선 — 법령 개정문 등의 삭제 표시. 판정은 취소선 모양 whitelist (비트만 믿으면 오탐) */
83
+ strike?: boolean;
81
84
  fontSize?: number;
82
85
  fontName?: string;
83
86
  }
package/dist/index.d.ts CHANGED
@@ -15,6 +15,7 @@ interface IRSpan {
15
15
  text: string;
16
16
  bold?: boolean;
17
17
  italic?: boolean;
18
+ strike?: boolean;
18
19
  code?: boolean;
19
20
  }
20
21
  interface IRBlock {
@@ -78,6 +79,8 @@ interface BoundingBox {
78
79
  interface InlineStyle {
79
80
  bold?: boolean;
80
81
  italic?: boolean;
82
+ /** 취소선 — 법령 개정문 등의 삭제 표시. 판정은 취소선 모양 whitelist (비트만 믿으면 오탐) */
83
+ strike?: boolean;
81
84
  fontSize?: number;
82
85
  fontName?: string;
83
86
  }
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  flattenLayoutTables,
9
9
  inlineImagesIntoMarkdown,
10
10
  mapPuaText
11
- } from "./chunk-7IMNZ2BL.js";
11
+ } from "./chunk-IXHBRMDB.js";
12
12
  import {
13
13
  parsePageRange
14
14
  } from "./chunk-GE43BE46.js";
@@ -27,7 +27,7 @@ import {
27
27
  sanitizeHref,
28
28
  stripDtd,
29
29
  toArrayBuffer
30
- } from "./chunk-HTCKGSSW.js";
30
+ } from "./chunk-GUYIXVV7.js";
31
31
 
32
32
  // src/index.ts
33
33
  import { readFile } from "fs/promises";
@@ -408,7 +408,7 @@ function comResultToParseResult(pages, pageCount, warnings) {
408
408
 
409
409
  // src/hwpx/parser-shared.ts
410
410
  import { DOMParser } from "@xmldom/xmldom";
411
- var MAX_DECOMPRESS_SIZE = 100 * 1024 * 1024;
411
+ var MAX_DECOMPRESS_SIZE = 256 * 1024 * 1024;
412
412
  var MAX_ZIP_ENTRIES = 500;
413
413
  var ZipBombError = class extends KordocError {
414
414
  constructor(message) {
@@ -465,6 +465,26 @@ function extractTextFromNode(node, depth = 0) {
465
465
  }
466
466
 
467
467
  // src/hwpx/styles.ts
468
+ function isRealStrikeShape(shape) {
469
+ switch (shape) {
470
+ case "SOLID":
471
+ case "DASH":
472
+ case "DOT":
473
+ case "DASH_DOT":
474
+ case "DASH_DOT_DOT":
475
+ case "LONG_DASH":
476
+ case "CIRCLE":
477
+ case "DOUBLE_SLIM":
478
+ case "SLIM_THICK":
479
+ case "THICK_SLIM":
480
+ case "SLIM_THICK_SLIM":
481
+ case "WAVE":
482
+ case "DOUBLE_WAVE":
483
+ return true;
484
+ default:
485
+ return false;
486
+ }
487
+ }
468
488
  async function extractHwpxStyles(zip, decompressed) {
469
489
  const result = {
470
490
  charProperties: /* @__PURE__ */ new Map(),
@@ -529,6 +549,10 @@ function parseCharProperties(doc, map) {
529
549
  const localTag = (k.tagName || "").replace(/^[^:]+:/, "");
530
550
  if (localTag === "bold") prop.bold = true;
531
551
  else if (localTag === "italic") prop.italic = true;
552
+ else if (localTag === "strikeout") {
553
+ const shape = k.getAttribute("shape") || "";
554
+ if (isRealStrikeShape(shape)) prop.strike = true;
555
+ }
532
556
  }
533
557
  const fontFaces = el.getElementsByTagName("*");
534
558
  for (let j = 0; j < fontFaces.length; j++) {
@@ -2743,21 +2767,22 @@ function extractRunSpans(para2, ctx, mode, requireMixed) {
2743
2767
  else {
2744
2768
  if (cp?.bold) span.bold = true;
2745
2769
  if (cp?.italic) span.italic = true;
2770
+ if (cp?.strike) span.strike = true;
2746
2771
  }
2747
- if (span.bold || span.italic || span.code) styled = true;
2772
+ if (span.bold || span.italic || span.strike || span.code) styled = true;
2748
2773
  spans.push(span);
2749
2774
  }
2750
2775
  if (!styled || spans.length === 0) return null;
2751
2776
  const merged = [];
2752
2777
  for (const s of spans) {
2753
2778
  const last = merged[merged.length - 1];
2754
- if (last && !!last.bold === !!s.bold && !!last.italic === !!s.italic && !!last.code === !!s.code) {
2779
+ if (last && !!last.bold === !!s.bold && !!last.italic === !!s.italic && !!last.strike === !!s.strike && !!last.code === !!s.code) {
2755
2780
  last.text += s.text;
2756
2781
  } else {
2757
2782
  merged.push(s);
2758
2783
  }
2759
2784
  }
2760
- if (requireMixed && !merged.some((s) => !(s.bold || s.italic || s.code))) return null;
2785
+ if (requireMixed && !merged.some((s) => s.strike) && !merged.some((s) => !(s.bold || s.italic || s.code))) return null;
2761
2786
  return merged;
2762
2787
  }
2763
2788
  function gongmunDepthFromIndent(para2, left, ctx) {
@@ -5149,7 +5174,10 @@ function parseParagraph(records, start, end, ctx) {
5149
5174
  if (headingLevel > 0) block.level = headingLevel;
5150
5175
  if (ctx.docInfo && charShapeIds.length > 0) {
5151
5176
  const style = resolveCharStyle(charShapeIds, ctx.docInfo);
5152
- if (style) block.style = style;
5177
+ if (style) {
5178
+ block.style = style;
5179
+ if (style.strike) block.text = headMarker ? `${headMarker} ~~${trimmed}~~` : `~~${trimmed}~~`;
5180
+ }
5153
5181
  }
5154
5182
  if (footnotes.length > 0) block.footnoteText = footnotes.join("; ");
5155
5183
  blocks.push(block);
@@ -5540,7 +5568,13 @@ function resolveCharStyle(charShapeIds, docInfo) {
5540
5568
  if (cs.fontSize > 0) style.fontSize = cs.fontSize / 10;
5541
5569
  if (cs.attrFlags & 1) style.italic = true;
5542
5570
  if (cs.attrFlags & 2) style.bold = true;
5543
- return style.fontSize || style.bold || style.italic ? style : void 0;
5571
+ if (hasRealStrike(cs.attrFlags)) style.strike = true;
5572
+ return style.fontSize || style.bold || style.italic || style.strike ? style : void 0;
5573
+ }
5574
+ function hasRealStrike(attrFlags) {
5575
+ const strikeBits = attrFlags >> 18 & 7;
5576
+ const shapeId = attrFlags >> 26 & 15;
5577
+ return strikeBits !== 0 && shapeId <= 12;
5544
5578
  }
5545
5579
 
5546
5580
  // src/hwp3/parser.ts
@@ -30463,7 +30497,7 @@ async function parse(input, options) {
30463
30497
  }
30464
30498
  async function parseImage(buffer, options) {
30465
30499
  try {
30466
- const { parseImageDocument } = await import("./image-ocr-DALT7PFQ.js");
30500
+ const { parseImageDocument } = await import("./image-ocr-TGHAMIQL.js");
30467
30501
  const { blocks, warnings } = await parseImageDocument(buffer, options);
30468
30502
  return {
30469
30503
  success: true,
@@ -30521,7 +30555,7 @@ async function parseHwp(buffer, options) {
30521
30555
  async function parsePdf(buffer, options) {
30522
30556
  let parsePdfDocument;
30523
30557
  try {
30524
- const mod = await import("./parser-33TK5SMH.js");
30558
+ const mod = await import("./parser-KMC4YOZH.js");
30525
30559
  parsePdfDocument = mod.parsePdfDocument;
30526
30560
  } catch {
30527
30561
  return {