kordoc 4.8.1 → 4.9.1
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.
- package/README.md +14 -0
- package/dist/{-BPSOA7WX.js → -KIYHEVUW.js} +14 -8
- package/dist/{chunk-FZA5HW4K.cjs → chunk-2ULV2DX4.cjs} +4 -4
- package/dist/chunk-2ULV2DX4.cjs.map +1 -0
- package/dist/{chunk-I6Q5K2YF.js → chunk-3PY5YCJP.js} +2 -2
- package/dist/{chunk-D6NDAA72.cjs → chunk-4R73ASZF.cjs} +2 -2
- package/dist/chunk-4R73ASZF.cjs.map +1 -0
- package/dist/{chunk-C5IU7Q3W.js → chunk-55Q76S6S.js} +2 -2
- package/dist/{chunk-YCSXG6SY.js → chunk-5CAKNM2K.js} +2 -2
- package/dist/{chunk-DVEJRBFI.cjs → chunk-65TL66UD.cjs} +3 -3
- package/dist/chunk-65TL66UD.cjs.map +1 -0
- package/dist/{chunk-H25XAYE4.cjs → chunk-D7EMDOX7.cjs} +6 -6
- package/dist/chunk-D7EMDOX7.cjs.map +1 -0
- package/dist/chunk-DCZVOIEO.cjs.map +1 -1
- package/dist/{chunk-YOFMKKCA.js → chunk-GNRBCV4R.js} +3 -3
- package/dist/chunk-GS7T56RP.cjs.map +1 -1
- package/dist/{chunk-KTAWKNYX.js → chunk-GU4NCNCT.js} +2 -2
- package/dist/{chunk-I6EWYT3Y.js → chunk-HFZIYAQQ.js} +2 -2
- package/dist/{chunk-MYOGZQMD.js → chunk-HG7GXBVP.js} +2 -2
- package/dist/{chunk-XZEDL6B4.cjs → chunk-HOSNMNKU.cjs} +7 -7
- package/dist/chunk-HOSNMNKU.cjs.map +1 -0
- package/dist/{chunk-ETMMB6O2.js → chunk-INV3W43Y.js} +2 -2
- package/dist/{chunk-5EWPDL7S.js → chunk-JHXAQDXS.js} +288 -21
- package/dist/chunk-JHXAQDXS.js.map +1 -0
- package/dist/{chunk-DIB2I2HP.js → chunk-L27YEW3T.js} +3 -3
- package/dist/chunk-L5CDTOC3.cjs.map +1 -1
- package/dist/{chunk-N7HKWVGP.js → chunk-Q3IVAWOK.js} +3 -3
- package/dist/{chunk-A6EAUP2J.js → chunk-SFSB3FAL.js} +2 -2
- package/dist/{chunk-66BZATFV.js → chunk-SGTGSV4A.js} +2 -2
- package/dist/{chunk-Y4H75LKS.js → chunk-TC7EDYZD.js} +2 -2
- package/dist/{chunk-4CUEYYQF.js → chunk-TN6AALZG.js} +2 -2
- package/dist/{chunk-NJMWYRLY.js → chunk-UIQWUYOJ.js} +5 -4
- package/dist/{chunk-NJMWYRLY.js.map → chunk-UIQWUYOJ.js.map} +1 -1
- package/dist/{chunk-XGXKICRN.js → chunk-VGRIWMTQ.js} +2 -2
- package/dist/{chunk-6KFW772K.js → chunk-Z2SX4E7K.js} +2 -2
- package/dist/chunks-FB344JZT.js +10 -0
- package/dist/cli.js +47 -25
- package/dist/cli.js.map +1 -1
- package/dist/{formula-T4AIR2LX.js → formula-5DQQ4MFT.js} +4 -4
- package/dist/{formula-ODJ7GSUH.cjs → formula-I5D3UNLV.cjs} +9 -9
- package/dist/formula-I5D3UNLV.cjs.map +1 -0
- package/dist/{formula-7XQLPNSO.js → formula-S4O7SBN3.js} +3 -3
- package/dist/{image-ocr-WMTQ357I.cjs → image-ocr-BKUYR4WU.cjs} +11 -11
- package/dist/image-ocr-BKUYR4WU.cjs.map +1 -0
- package/dist/{image-ocr-TZU64JJF.js → image-ocr-LIH2E7WC.js} +5 -5
- package/dist/{image-ocr-EJLWGR3B.js → image-ocr-SQXFTNYR.js} +7 -7
- package/dist/index.cjs +457 -189
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +46 -1
- package/dist/index.d.ts +46 -1
- package/dist/index.js +286 -18
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +19 -16
- package/dist/mcp.js.map +1 -1
- package/dist/{model-bundle-OT2OTSGH.js → model-bundle-4JMY5E37.js} +5 -5
- package/dist/{models-MUVFWN7M.js → models-D7X5YBWX.js} +5 -5
- package/dist/page-range-P7SDW6LR.cjs.map +1 -1
- package/dist/{parser-ERSNBILY.js → parser-GHRXWFJN.js} +6 -6
- package/dist/{parser-E6NQ666P.js → parser-MY7JJISJ.js} +6 -6
- package/dist/{parser-XVUFA35I.cjs → parser-ZLHOAZAA.cjs} +26 -26
- package/dist/parser-ZLHOAZAA.cjs.map +1 -0
- package/dist/pdf-ocr-FESGFQYN.cjs +14 -0
- package/dist/pdf-ocr-FESGFQYN.cjs.map +1 -0
- package/dist/pdf-ocr-IEAXGG3D.js +13 -0
- package/dist/pdf-ocr-Z6CHIYEM.js +16 -0
- package/dist/{profile-io-IRW6XCXH.js → profile-io-EAPI6M7O.js} +3 -3
- package/dist/{rasterize-BNF6QTLY.js → rasterize-UIDZAEWB.js} +2 -2
- package/dist/render-XL7ZVAHK.js +10 -0
- package/dist/seal-CY7EIWDJ.js +10 -0
- package/dist/{setup-BXOXVBU3.js → setup-UHX3HHWY.js} +3 -3
- package/dist/{watch-7PYYGQUJ.js → watch-23MV3PBX.js} +9 -9
- package/package.json +1 -1
- package/dist/chunk-5EWPDL7S.js.map +0 -1
- package/dist/chunk-D6NDAA72.cjs.map +0 -1
- package/dist/chunk-DVEJRBFI.cjs.map +0 -1
- package/dist/chunk-FZA5HW4K.cjs.map +0 -1
- package/dist/chunk-H25XAYE4.cjs.map +0 -1
- package/dist/chunk-XZEDL6B4.cjs.map +0 -1
- package/dist/chunks-HYXNV3WP.js +0 -10
- package/dist/formula-ODJ7GSUH.cjs.map +0 -1
- package/dist/image-ocr-WMTQ357I.cjs.map +0 -1
- package/dist/parser-XVUFA35I.cjs.map +0 -1
- package/dist/pdf-ocr-KG7X7WRC.js +0 -13
- package/dist/pdf-ocr-KMM24YFF.cjs +0 -14
- package/dist/pdf-ocr-KMM24YFF.cjs.map +0 -1
- package/dist/pdf-ocr-YTZL2UL4.js +0 -16
- package/dist/render-T7QXFTZA.js +0 -10
- package/dist/seal-ITE2NNNH.js +0 -10
- /package/dist/{-BPSOA7WX.js.map → -KIYHEVUW.js.map} +0 -0
- /package/dist/{chunk-I6Q5K2YF.js.map → chunk-3PY5YCJP.js.map} +0 -0
- /package/dist/{chunk-C5IU7Q3W.js.map → chunk-55Q76S6S.js.map} +0 -0
- /package/dist/{chunk-YCSXG6SY.js.map → chunk-5CAKNM2K.js.map} +0 -0
- /package/dist/{chunk-YOFMKKCA.js.map → chunk-GNRBCV4R.js.map} +0 -0
- /package/dist/{chunk-KTAWKNYX.js.map → chunk-GU4NCNCT.js.map} +0 -0
- /package/dist/{chunk-I6EWYT3Y.js.map → chunk-HFZIYAQQ.js.map} +0 -0
- /package/dist/{chunk-MYOGZQMD.js.map → chunk-HG7GXBVP.js.map} +0 -0
- /package/dist/{chunk-ETMMB6O2.js.map → chunk-INV3W43Y.js.map} +0 -0
- /package/dist/{chunk-DIB2I2HP.js.map → chunk-L27YEW3T.js.map} +0 -0
- /package/dist/{chunk-N7HKWVGP.js.map → chunk-Q3IVAWOK.js.map} +0 -0
- /package/dist/{chunk-A6EAUP2J.js.map → chunk-SFSB3FAL.js.map} +0 -0
- /package/dist/{chunk-66BZATFV.js.map → chunk-SGTGSV4A.js.map} +0 -0
- /package/dist/{chunk-Y4H75LKS.js.map → chunk-TC7EDYZD.js.map} +0 -0
- /package/dist/{chunk-4CUEYYQF.js.map → chunk-TN6AALZG.js.map} +0 -0
- /package/dist/{chunk-XGXKICRN.js.map → chunk-VGRIWMTQ.js.map} +0 -0
- /package/dist/{chunk-6KFW772K.js.map → chunk-Z2SX4E7K.js.map} +0 -0
- /package/dist/{chunks-HYXNV3WP.js.map → chunks-FB344JZT.js.map} +0 -0
- /package/dist/{formula-T4AIR2LX.js.map → formula-5DQQ4MFT.js.map} +0 -0
- /package/dist/{formula-7XQLPNSO.js.map → formula-S4O7SBN3.js.map} +0 -0
- /package/dist/{image-ocr-TZU64JJF.js.map → image-ocr-LIH2E7WC.js.map} +0 -0
- /package/dist/{image-ocr-EJLWGR3B.js.map → image-ocr-SQXFTNYR.js.map} +0 -0
- /package/dist/{model-bundle-OT2OTSGH.js.map → model-bundle-4JMY5E37.js.map} +0 -0
- /package/dist/{models-MUVFWN7M.js.map → models-D7X5YBWX.js.map} +0 -0
- /package/dist/{parser-ERSNBILY.js.map → parser-GHRXWFJN.js.map} +0 -0
- /package/dist/{parser-E6NQ666P.js.map → parser-MY7JJISJ.js.map} +0 -0
- /package/dist/{pdf-ocr-KG7X7WRC.js.map → pdf-ocr-IEAXGG3D.js.map} +0 -0
- /package/dist/{pdf-ocr-YTZL2UL4.js.map → pdf-ocr-Z6CHIYEM.js.map} +0 -0
- /package/dist/{profile-io-IRW6XCXH.js.map → profile-io-EAPI6M7O.js.map} +0 -0
- /package/dist/{rasterize-BNF6QTLY.js.map → rasterize-UIDZAEWB.js.map} +0 -0
- /package/dist/{render-T7QXFTZA.js.map → render-XL7ZVAHK.js.map} +0 -0
- /package/dist/{seal-ITE2NNNH.js.map → seal-CY7EIWDJ.js.map} +0 -0
- /package/dist/{setup-BXOXVBU3.js.map → setup-UHX3HHWY.js.map} +0 -0
- /package/dist/{watch-7PYYGQUJ.js.map → watch-23MV3PBX.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
blocksToMarkdown
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-HG7GXBVP.js";
|
|
5
5
|
|
|
6
6
|
// src/chunks.ts
|
|
7
7
|
var LIST_MARKER_RE = /^(?:[□■◇◆○◎●◦ㅇ•▪▸▶※-]|\d{1,3}[.)]|[가나다라마바사아자차카타파하][.)]|\([가나다라마바사아자차카타파하0-9]{1,3}\)|[①-⑳㉮-㉻㈎-㈛])\s/;
|
|
@@ -79,4 +79,4 @@ function blocksToChunks(blocks, options) {
|
|
|
79
79
|
export {
|
|
80
80
|
blocksToChunks
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-VGRIWMTQ.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
safeMax,
|
|
9
9
|
safeMin
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-3PY5YCJP.js";
|
|
11
11
|
|
|
12
12
|
// src/pdf/image-regions.ts
|
|
13
13
|
import { OPS } from "pdfjs-dist/legacy/build/pdf.mjs";
|
|
@@ -3687,4 +3687,4 @@ export {
|
|
|
3687
3687
|
extractPageBlocksWithLines,
|
|
3688
3688
|
mergeCrossPageTables
|
|
3689
3689
|
};
|
|
3690
|
-
//# sourceMappingURL=chunk-
|
|
3690
|
+
//# sourceMappingURL=chunk-Z2SX4E7K.js.map
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
parseFormatProfileJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-5CAKNM2K.js";
|
|
5
5
|
import {
|
|
6
6
|
BODY_FONTS,
|
|
7
7
|
BULLET2_CHARS,
|
|
@@ -22,29 +22,32 @@ import {
|
|
|
22
22
|
hwpxToProfile,
|
|
23
23
|
incompatibleGongmunWarnings,
|
|
24
24
|
lintGongmunText,
|
|
25
|
+
lintMuncheText,
|
|
25
26
|
markdownToHwpx,
|
|
27
|
+
muncheLintWarnings,
|
|
26
28
|
parse,
|
|
27
29
|
readBuiltinTemplate,
|
|
28
30
|
resolveBuiltinTemplate,
|
|
29
|
-
unknownFontWarnings
|
|
30
|
-
|
|
31
|
+
unknownFontWarnings,
|
|
32
|
+
usesGaejosikMunche
|
|
33
|
+
} from "./chunk-JHXAQDXS.js";
|
|
31
34
|
import "./chunk-7FCNOKOR.js";
|
|
32
35
|
import "./chunk-XINP35F4.js";
|
|
33
36
|
import "./chunk-MOL7MDBG.js";
|
|
34
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-Q3IVAWOK.js";
|
|
35
38
|
import "./chunk-DZIXKL7E.js";
|
|
36
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-VGRIWMTQ.js";
|
|
37
40
|
import {
|
|
38
41
|
blocksToMarkdown
|
|
39
|
-
} from "./chunk-
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
42
|
+
} from "./chunk-HG7GXBVP.js";
|
|
43
|
+
import "./chunk-UIQWUYOJ.js";
|
|
44
|
+
import "./chunk-TC7EDYZD.js";
|
|
42
45
|
import {
|
|
43
46
|
VERSION,
|
|
44
47
|
classifyError,
|
|
45
48
|
sanitizeError,
|
|
46
49
|
toArrayBuffer
|
|
47
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-3PY5YCJP.js";
|
|
48
51
|
|
|
49
52
|
// src/cli.ts
|
|
50
53
|
import { readFileSync, writeFileSync, mkdirSync, statSync } from "fs";
|
|
@@ -141,7 +144,7 @@ program.name("kordoc").description("\uBAA8\uB450 \uD30C\uC2F1\uD574\uBC84\uB9AC\
|
|
|
141
144
|
`);
|
|
142
145
|
}
|
|
143
146
|
} else if (opts.format === "chunks") {
|
|
144
|
-
const { blocksToChunks } = await import("./chunks-
|
|
147
|
+
const { blocksToChunks } = await import("./chunks-FB344JZT.js");
|
|
145
148
|
output = JSON.stringify(blocksToChunks(result.blocks), null, 2);
|
|
146
149
|
} else {
|
|
147
150
|
output = markdown;
|
|
@@ -196,7 +199,7 @@ program.command("watch <dir>").description("\uB514\uB809\uD1A0\uB9AC \uAC10\uC2D
|
|
|
196
199
|
if (command.getOptionValueSource("format") === "default" && program.getOptionValueSource("format") === "cli") {
|
|
197
200
|
opts.format = rootOpts.format;
|
|
198
201
|
}
|
|
199
|
-
const { watchDirectory } = await import("./watch-
|
|
202
|
+
const { watchDirectory } = await import("./watch-23MV3PBX.js");
|
|
200
203
|
await watchDirectory({
|
|
201
204
|
dir,
|
|
202
205
|
outDir: opts.outDir,
|
|
@@ -418,7 +421,7 @@ program.command("fill [file]").description("\uC11C\uC2DD \uBB38\uC11C\uC758 \uBE
|
|
|
418
421
|
});
|
|
419
422
|
program.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) => {
|
|
420
423
|
try {
|
|
421
|
-
const { placeSealHwpx, detectFormat: detectFormat2 } = await import("./-
|
|
424
|
+
const { placeSealHwpx, detectFormat: detectFormat2 } = await import("./-KIYHEVUW.js");
|
|
422
425
|
const rootOpts = program.opts();
|
|
423
426
|
const output = opts.output ?? rootOpts.output;
|
|
424
427
|
const silent = opts.silent ?? rootOpts.silent;
|
|
@@ -496,7 +499,7 @@ program.command("seal <file>").description('\uB3C4\uC7A5/\uC11C\uBA85 \uC774\uBB
|
|
|
496
499
|
});
|
|
497
500
|
program.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). \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("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (original, edited, opts) => {
|
|
498
501
|
try {
|
|
499
|
-
const { patchHwpx, patchHwp, detectFormat: detectFormat2 } = await import("./-
|
|
502
|
+
const { patchHwpx, patchHwp, detectFormat: detectFormat2 } = await import("./-KIYHEVUW.js");
|
|
500
503
|
const rootOpts = program.opts();
|
|
501
504
|
const output = opts.output ?? rootOpts.output;
|
|
502
505
|
const silent = opts.silent ?? rootOpts.silent;
|
|
@@ -537,7 +540,7 @@ program.command("patch <original> <edited>").description("\uC11C\uC2DD \uBCF4\uC
|
|
|
537
540
|
});
|
|
538
541
|
program.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) => {
|
|
539
542
|
try {
|
|
540
|
-
const { validateHwpx } = await import("./-
|
|
543
|
+
const { validateHwpx } = await import("./-KIYHEVUW.js");
|
|
541
544
|
const buf = new Uint8Array(readFileSync(resolve(file)));
|
|
542
545
|
const result = await validateHwpx(buf);
|
|
543
546
|
if (opts.json) {
|
|
@@ -652,6 +655,10 @@ program.command("generate <markdown>").alias("gen").description("\uB9C8\uD06C\uB
|
|
|
652
655
|
}
|
|
653
656
|
if (gongmun && !silent) {
|
|
654
657
|
for (const w of gongmunLintWarnings(md, 5)) process.stderr.write(`[kordoc] \u26A0 ${w}
|
|
658
|
+
`);
|
|
659
|
+
}
|
|
660
|
+
if (gongmun && !silent && usesGaejosikMunche(gongmun.preset)) {
|
|
661
|
+
for (const w of muncheLintWarnings(md, 5)) process.stderr.write(`[kordoc] \u26A0 ${w}
|
|
655
662
|
`);
|
|
656
663
|
}
|
|
657
664
|
let profile;
|
|
@@ -728,7 +735,7 @@ program.command("profile <file>").description("HWPX \uD45C \uC11C\uC2DD \uD504\u
|
|
|
728
735
|
process.exit(1);
|
|
729
736
|
}
|
|
730
737
|
});
|
|
731
|
-
program.command("lint <file>").description("\uACF5\uBB38\uC11C \uD45C\uAE30\uBC95 \uAC80\uC218 \u2014 \uB0A0\uC9DC\xB7\uC2DC\uAC04\xB7\uAE08\uC561\xB7\uBD99\uC784 \uB4F1 \uD589\uC815\uC5C5\uBB34\uC6B4\uC601 \uD3B8\uB78C \uD45C\uAE30\uBC95 (md/txt, '-'=stdin). error \uC788\uC73C\uBA74 exit 1").option("--json", "JSON \uCD9C\uB825").action((file, opts) => {
|
|
738
|
+
program.command("lint <file>").description("\uACF5\uBB38\uC11C \uD45C\uAE30\uBC95 \uAC80\uC218 \u2014 \uB0A0\uC9DC\xB7\uC2DC\uAC04\xB7\uAE08\uC561\xB7\uBD99\uC784 \uB4F1 \uD589\uC815\uC5C5\uBB34\uC6B4\uC601 \uD3B8\uB78C \uD45C\uAE30\uBC95 (md/txt, '-'=stdin). error \uC788\uC73C\uBA74 exit 1").option("--json", "JSON \uCD9C\uB825").option("--munche", "\uAC1C\uC870\uC2DD \uBB38\uCCB4 \uAC80\uC218 \uBCD1\uD589 \u2014 \uC11C\uC220\uD615 \uC885\uACB0\xB7\uB2F9\uC704\xB7\uC218\uC0AC\xB7\uD56D\uBAA9 \uAE38\uC774 (\uBCF4\uACE0\uC11C\xB7\uACC4\uD68D\uC11C \uC6D0\uACE0\uC6A9)").action((file, opts) => {
|
|
732
739
|
try {
|
|
733
740
|
const raw = file === "-" ? readFileSync(0) : readFileSync(resolve(file));
|
|
734
741
|
const kind = detectFormat(
|
|
@@ -744,16 +751,31 @@ program.command("lint <file>").description("\uACF5\uBB38\uC11C \uD45C\uAE30\uBC9
|
|
|
744
751
|
}
|
|
745
752
|
const text = raw.toString("utf-8");
|
|
746
753
|
const findings = lintGongmunText(text);
|
|
747
|
-
const
|
|
754
|
+
const munche = opts.munche ? lintMuncheText(text) : [];
|
|
755
|
+
const errors = findings.filter((f) => f.severity === "error").length + munche.filter((f) => f.severity === "error").length;
|
|
748
756
|
if (opts.json) {
|
|
749
|
-
|
|
757
|
+
const total = findings.length + munche.length;
|
|
758
|
+
process.stdout.write(JSON.stringify(
|
|
759
|
+
{ findings, ...opts.munche ? { munche } : {}, summary: { total, errors, ok: errors === 0 } },
|
|
760
|
+
null,
|
|
761
|
+
2
|
|
762
|
+
) + "\n");
|
|
750
763
|
} else {
|
|
751
|
-
process.stderr.write(`[kordoc] \uD45C\uAE30\uBC95 \uAC80\uC218: \uC704\uBC18 ${findings.length}\uAC74 (error ${
|
|
764
|
+
process.stderr.write(`[kordoc] \uD45C\uAE30\uBC95 \uAC80\uC218: \uC704\uBC18 ${findings.length}\uAC74 (error ${findings.filter((f) => f.severity === "error").length}, warning ${findings.filter((f) => f.severity !== "error").length})
|
|
752
765
|
`);
|
|
753
766
|
for (const f of findings) {
|
|
754
767
|
process.stderr.write(` L${f.line} [${f.severity}] ${f.rule}: "${f.match}" \u2014 ${f.message}${f.suggest ? ` \u2192 ${f.suggest}` : ""}
|
|
755
768
|
`);
|
|
756
769
|
}
|
|
770
|
+
if (opts.munche) {
|
|
771
|
+
const me = munche.filter((f) => f.severity === "error").length;
|
|
772
|
+
process.stderr.write(`[kordoc] \uBB38\uCCB4 \uAC80\uC218: \uC704\uBC18 ${munche.length}\uAC74 (error ${me}, warning ${munche.length - me})
|
|
773
|
+
`);
|
|
774
|
+
for (const f of munche) {
|
|
775
|
+
process.stderr.write(` L${f.line} [${f.severity}] ${f.rule}: "${f.match}" \u2014 ${f.message}${f.suggest ? ` \u2192 ${f.suggest}` : ""}
|
|
776
|
+
`);
|
|
777
|
+
}
|
|
778
|
+
}
|
|
757
779
|
}
|
|
758
780
|
process.exit(errors > 0 ? 1 : 0);
|
|
759
781
|
} catch (err) {
|
|
@@ -763,7 +785,7 @@ program.command("lint <file>").description("\uACF5\uBB38\uC11C \uD45C\uAE30\uBC9
|
|
|
763
785
|
}
|
|
764
786
|
});
|
|
765
787
|
program.command("redact <files...>").description("\uAC1C\uC778\uC815\uBCF4 \uC11C\uC2DD \uBCF4\uC874 \uB9C8\uC2A4\uD0B9 \u2014 \uC8FC\uBBFC\uBC88\uD638\xB7\uC804\uD654\xB7\uC774\uBA54\uC77C\xB7\uCE74\uB4DC\xB7\uACC4\uC88C\uB97C \uD0D0\uC9C0\uD574 HWPX/HWP\uB294 \uC6D0\uBCF8 \uC11C\uC2DD \uADF8\uB300\uB85C patch, \uADF8 \uC678 \uD3EC\uB9F7\uC740 \uB9C8\uC2A4\uD0B9\uB41C \uB9C8\uD06C\uB2E4\uC6B4 \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 \uC548 \uD14D\uC2A4\uD2B8\uB294 \uD0D0\uC9C0 \uBD88\uAC00)").option("--rules <csv>", "\uC801\uC6A9 \uB8F0 (\uAE30\uBCF8: rrn,phone,email,card,account \u2014 passport,driver\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) => {
|
|
766
|
-
const { redactMarkdown, DEFAULT_REDACT_RULES, patchHwpx, patchHwp } = await import("./-
|
|
788
|
+
const { redactMarkdown, DEFAULT_REDACT_RULES, patchHwpx, patchHwp } = await import("./-KIYHEVUW.js");
|
|
767
789
|
const rootOpts = program.opts();
|
|
768
790
|
const output = opts.output ?? rootOpts.output;
|
|
769
791
|
const silent = opts.silent ?? rootOpts.silent;
|
|
@@ -852,7 +874,7 @@ program.command("render <file>").description("\uB808\uC774\uC544\uC6C3 \uBCF4\uC
|
|
|
852
874
|
const rootOpts = program.opts();
|
|
853
875
|
const output = opts.output ?? rootOpts.output;
|
|
854
876
|
const silent = opts.silent ?? rootOpts.silent;
|
|
855
|
-
const { renderHwpxToSvg } = await import("./render-
|
|
877
|
+
const { renderHwpxToSvg } = await import("./render-XL7ZVAHK.js");
|
|
856
878
|
const absPath = resolve(file);
|
|
857
879
|
const buffer = readFileSync(absPath);
|
|
858
880
|
const highlights = opts.highlight ? String(opts.highlight).split(",") : void 0;
|
|
@@ -874,7 +896,7 @@ program.command("render <file>").description("\uB808\uC774\uC544\uC6C3 \uBCF4\uC
|
|
|
874
896
|
});
|
|
875
897
|
program.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 () => {
|
|
876
898
|
const { createInterface } = await import("readline");
|
|
877
|
-
const { renderHwpxToSvg } = await import("./render-
|
|
899
|
+
const { renderHwpxToSvg } = await import("./render-XL7ZVAHK.js");
|
|
878
900
|
const rl = createInterface({ input: process.stdin });
|
|
879
901
|
const write = (o) => void process.stdout.write(JSON.stringify(o) + "\n");
|
|
880
902
|
write({ ready: true, version: VERSION });
|
|
@@ -919,12 +941,12 @@ program.command("mcp").description("MCP \uC11C\uBC84 \uC2E4\uD589 (Claude / Curs
|
|
|
919
941
|
await startMcpServer();
|
|
920
942
|
});
|
|
921
943
|
program.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 () => {
|
|
922
|
-
const { runSetup } = await import("./setup-
|
|
944
|
+
const { runSetup } = await import("./setup-UHX3HHWY.js");
|
|
923
945
|
await runSetup();
|
|
924
946
|
});
|
|
925
947
|
program.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) => {
|
|
926
948
|
try {
|
|
927
|
-
const { getFormulaModelStatus, ensureFormulaModels, getFormulaModelsDir } = await import("./formula-
|
|
949
|
+
const { getFormulaModelStatus, ensureFormulaModels, getFormulaModelsDir } = await import("./formula-5DQQ4MFT.js");
|
|
928
950
|
const dir = getFormulaModelsDir();
|
|
929
951
|
if (opts.statusOnly) {
|
|
930
952
|
const status = await getFormulaModelStatus();
|
|
@@ -978,7 +1000,7 @@ program.command("check-formula-models").description("PDF \uC218\uC2DD OCR \uBAA8
|
|
|
978
1000
|
});
|
|
979
1001
|
program.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) => {
|
|
980
1002
|
try {
|
|
981
|
-
const { getOcrModelStatus, ensureOcrModels, getOcrModelsDir } = await import("./models-
|
|
1003
|
+
const { getOcrModelStatus, ensureOcrModels, getOcrModelsDir } = await import("./models-D7X5YBWX.js");
|
|
982
1004
|
const dir = getOcrModelsDir();
|
|
983
1005
|
if (opts.statusOnly) {
|
|
984
1006
|
const status = await getOcrModelStatus();
|
|
@@ -1032,7 +1054,7 @@ program.command("check-ocr-models").description("\uD14D\uC2A4\uD2B8 OCR \uBAA8\u
|
|
|
1032
1054
|
});
|
|
1033
1055
|
program.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) => {
|
|
1034
1056
|
try {
|
|
1035
|
-
const { exportModels, importModels, modelCacheStatus } = await import("./model-bundle-
|
|
1057
|
+
const { exportModels, importModels, modelCacheStatus } = await import("./model-bundle-4JMY5E37.js");
|
|
1036
1058
|
if (opts.status) {
|
|
1037
1059
|
process.stdout.write(JSON.stringify(await modelCacheStatus(), null, 2) + "\n");
|
|
1038
1060
|
return;
|