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
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- blocksToChunks
4
- } from "./chunk-DM5YPONO.js";
5
- import "./chunk-DBPDAG7N.js";
6
- import "./chunk-Z5G6QNVH.js";
7
- export {
8
- blocksToChunks
9
- };
10
- //# sourceMappingURL=chunks-LV5EJBZ4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/parse-worker-v2.ts"],"sourcesContent":["/**\n * parse-worker protocol 2 — Java·Python SDK 용 상주 워커 계약 (docs/parse-worker-protocol.md).\n * protocol 1 과 같은 parseWorkerFile 로 파싱하고, 요청 검증·옵션 허용 목록·이미지 파일 전송·입출력 상한만 더한다.\n */\n\nimport { createHash } from \"crypto\"\nimport { mkdtempSync, realpathSync, rmSync, statSync, writeFileSync } from \"fs\"\nimport { basename, isAbsolute, join } from \"path\"\nimport { z } from \"zod\"\nimport type { IRBlock, ParseOptions, ParseResult } from \"../types.js\"\nimport { VERSION, sanitizeError } from \"../utils.js\"\nimport { parseWorkerFile } from \"./worker-parse.js\"\nimport { validateOcrOptions } from \"../ocr/options.js\"\nimport { lintBlocks } from \"../hwpx/lint-blocks.js\"\nimport { PRESET_ALIAS } from \"../hwpx/gongmun.js\"\n\nexport const PARSE_WORKER_PROTOCOL_V2 = 2\nexport const CAPABILITIES = [\"parse\", \"options\", \"transport.images.inline\", \"transport.images.files\", \"lint.blocks\"] as const\n/** 요청 한 줄 기본 상한 — parse 요청은 경로·옵션뿐이지만 lint_blocks 는 문서 글(블록)을 싣는다 */\nexport const DEFAULT_MAX_REQUEST_BYTES = 8 * 1024 * 1024\n/** 응답 한 줄 기본 상한 — V8 문자열 한계(약 512MB) 아래. 넘으면 transport.images \"files\" 로 */\nexport const DEFAULT_MAX_RESPONSE_BYTES = 256 * 1024 * 1024\n\nexport type WorkerErrorCode =\n | \"INVALID_JSON\" | \"INVALID_REQUEST\" | \"INVALID_OPTIONS\" | \"UNSUPPORTED_COMMAND\" | \"DUPLICATE_ID\"\n | \"REQUEST_TOO_LARGE\" | \"RESPONSE_TOO_LARGE\" | \"ASSET_WRITE_FAILED\"\n\n/** 파싱 실패(result.success:false)가 아닌 요청·전송 오류 — 응답 {id?, error:{code, message}} */\nexport class WorkerProtocolError extends Error {\n constructor(readonly code: WorkerErrorCode, message: string) {\n super(message)\n this.name = \"WorkerProtocolError\"\n }\n}\n\n/** 로컬 OCR 모델 파일 {path, sha256} — 값 검증(절대 경로·16진 64자)은 validateOcrOptions 가 parse() 와 같은 문구로 */\nconst modelFileSchema = z.object({ path: z.string(), sha256: z.string() }).strict()\n\n/** wire 로 받는 ParseOptions 허용 목록. 함수 값(ocr 프로바이더·onProgress)과 filePath 는 받지 않는다 */\nconst optionsSchema = z.object({\n tableFormat: z.literal(\"gfm\"),\n htmlTables: z.boolean(),\n layoutTables: z.enum([\"visual\", \"keep\"]),\n classifyTables: z.boolean(),\n tables: z.boolean(),\n plain: z.boolean(),\n scriptTags: z.boolean(),\n removeHeaderFooter: z.boolean(),\n dedupeRunningHeaders: z.boolean(),\n keepTrailingEmptyCols: z.boolean(),\n keepEmptyParagraphs: z.boolean(),\n includeFieldPlaceholders: z.boolean(),\n pages: z.union([z.string(), z.array(z.number().int().positive())]),\n images: z.boolean(),\n inlineImages: z.boolean(),\n ocr: z.union([z.boolean(), z.literal(\"force\")]),\n ocrLines: z.union([z.boolean(), z.literal(\"all\")]),\n ocrDet: z.union([z.enum([\"mobile\", \"server\"]), modelFileSchema]),\n ocrDetLongSide: z.number().int(),\n ocrRec: z.union([z.literal(\"handwriting\"), modelFileSchema]),\n ocrRecDict: modelFileSchema,\n formulaOcr: z.boolean(),\n password: z.string(),\n}).partial().strict()\n\nconst transportSchema = z.object({\n images: z.enum([\"inline\", \"files\"]).optional(),\n assetsDir: z.string().optional(),\n}).strict()\n\nconst parseRequestSchema = z.object({\n id: z.number(),\n cmd: z.literal(\"parse\"),\n file: z.string().min(1),\n options: z.unknown().optional(),\n transport: transportSchema.optional(),\n}).strict()\n\n/** lint_blocks — 열린 문서의 문단·표 칸 블록을 검수해 블록 id·블록 안 위치로 (lint-blocks.ts) */\nconst lintBlocksRequestSchema = z.object({\n id: z.number(),\n cmd: z.literal(\"lint_blocks\"),\n blocks: z.array(z.object({\n id: z.string().min(1).max(200),\n text: z.string().max(100_000),\n table: z.object({ id: z.string().min(1).max(200), row: z.number().int().min(0).max(10_000), col: z.number().int().min(0).max(1_000) }).strict().optional(),\n }).strict()).max(20_000),\n options: z.object({\n munche: z.boolean(), slop: z.boolean(), logic: z.boolean(), numbers: z.boolean(), budget: z.boolean(), gate: z.boolean(), preset: z.string(),\n }).partial().strict().optional(),\n}).strict()\n\nconst issueText = (e: z.ZodError, prefix: string): string =>\n e.issues.map(i => `${[prefix, ...i.path].filter(Boolean).join(\".\")}: ${i.message}`).join(\"; \")\n\n/** wire options → ParseOptions. 미지정은 키를 두지 않아(엔진 기본값) false 와 구분한다. filePath 는 실제 입력 경로 */\nexport function toParseOptions(wire: unknown, absPath: string): ParseOptions {\n const parsed = optionsSchema.safeParse(wire ?? {})\n if (!parsed.success) throw new WorkerProtocolError(\"INVALID_OPTIONS\", issueText(parsed.error, \"options\"))\n const o = parsed.data\n // parse() 는 실패 결과로 막지만, 요청 자체의 잘못이라 프로토콜 오류로 돌려준다\n if (o.htmlTables && o.tableFormat) throw new WorkerProtocolError(\"INVALID_OPTIONS\", \"options: htmlTables 와 tableFormat 은 함께 쓸 수 없습니다\")\n const ocrError = validateOcrOptions(o)\n if (ocrError) throw new WorkerProtocolError(\"INVALID_OPTIONS\", `options: ${ocrError}`)\n const out: ParseOptions = { filePath: absPath }\n for (const [k, v] of Object.entries(o)) if (v !== undefined) (out as Record<string, unknown>)[k] = v\n return out\n}\n\ninterface ImageHolder { data?: unknown; filename?: string; dataRef?: { path: string; byteLength: number } }\n\n/** 결과 안의 이미지 바이트(result.images[]·블록 imageData — children·셀 blocks·captionBlocks 까지)를 모은다 */\nfunction collectImageHolders(result: ParseResult): ImageHolder[] {\n if (!result.success) return []\n const holders: ImageHolder[] = [...(result.images ?? [])]\n const walk = (blocks: IRBlock[] | undefined, depth: number): void => {\n if (!blocks || depth > 64) return\n for (const b of blocks) {\n if (b.imageData) holders.push(b.imageData)\n walk(b.children, depth + 1)\n if (b.table) {\n for (const row of b.table.cells) for (const cell of row) walk(cell.blocks, depth + 1)\n walk(b.table.captionBlocks, depth + 1)\n }\n }\n }\n walk(result.blocks, 0)\n return holders\n}\n\n/** 파일 이름으로 쓸 수 있는 글자만 — 경로 구분자·상위 경로·제어 문자를 막는다 */\nfunction safeFileName(name: string | undefined, fallback: string): string {\n const base = basename((name ?? \"\").replace(/\\\\/g, \"/\")).replace(/[\\u0000-\\u001f<>:\"|?*]/g, \"_\").replace(/^\\.+/, \"\")\n const safe = base && base !== \".\" && base !== \"..\" ? base.slice(0, 120) : fallback\n // 확장자는 그림 형식만 — 문서가 정한 이름(payload.html·x.svg)을 그대로 쓰면 자산 폴더를 열거나 서빙할 때 스크립트가 돈다\n return /\\.(?:png|jpe?g|gif|bmp|tiff?|wmf|emf|webp|bin)$/i.test(safe) ? safe : safe.replace(/(\\.[^.]*)?$/, \".bin\")\n}\n\n/**\n * transport.images \"files\" — 이미지 바이트를 assetsDir 아래 요청별 새 디렉터리에 쓰고 data 를 dataRef {path, byteLength} 로 바꾼다.\n * path 는 그 디렉터리 기준 파일 이름. 같은 바이트는 한 파일을 함께 가리키고, 이름이 같아도 바이트가 다르면 다른 파일로 쓴다.\n * 파일은 배타 생성(wx)이라 기존 파일·링크를 덮어쓰지 않는다. 실패하면 이 요청이 만든 디렉터리만 지운다.\n * 이미지가 없으면 디렉터리를 만들지 않고 undefined\n */\nexport async function externalizeImages(result: ParseResult, assetsRoot: string, id: number): Promise<string | undefined> {\n const holders = collectImageHolders(result).filter(h => h.data !== undefined)\n if (!holders.length) return undefined\n const root = realpathSync(assetsRoot)\n const dir = mkdtempSync(join(root, `kordoc-${id}-`))\n try {\n const byHash = new Map<string, string>()\n const used = new Set<string>()\n let n = 0\n for (const h of holders) {\n if (!(h.data instanceof Uint8Array)) throw new WorkerProtocolError(\"ASSET_WRITE_FAILED\", \"이미지 바이트가 Uint8Array 가 아닙니다\")\n const bytes = h.data\n const hash = createHash(\"sha256\").update(bytes).digest(\"hex\")\n let path = byHash.get(hash)\n if (!path) {\n const name = safeFileName(h.filename, `image_${String(++n).padStart(3, \"0\")}.bin`)\n path = name\n for (let k = 2; used.has(path); k++) path = name.replace(/(\\.[^.]*)?$/, ext => `-${k}${ext}`)\n writeFileSync(join(dir, path), bytes, { flag: \"wx\" })\n used.add(path)\n byHash.set(hash, path)\n }\n delete h.data\n h.dataRef = { path, byteLength: bytes.byteLength }\n }\n return dir\n } catch (err) {\n rmSync(dir, { recursive: true, force: true })\n if (err instanceof WorkerProtocolError) throw err\n throw new WorkerProtocolError(\"ASSET_WRITE_FAILED\", sanitizeError(err))\n }\n}\n\n/** stdin 을 바이트 단위로 줄로 자른다 — 멀티바이트 글자가 read 경계에 걸려도 줄 단위로 해독. 상한을 넘은 줄은 tooLarge */\nasync function* readLines(input: NodeJS.ReadableStream, maxBytes: number): AsyncGenerator<{ line?: string; tooLarge?: true }> {\n let pending: Buffer[] = []\n let pendingBytes = 0\n let discarding = false\n for await (const chunk of input as AsyncIterable<Buffer>) {\n let buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n for (let nl = buf.indexOf(0x0a); nl !== -1; nl = buf.indexOf(0x0a)) {\n const head = buf.subarray(0, nl)\n buf = buf.subarray(nl + 1)\n if (discarding) { discarding = false; continue }\n if (pendingBytes + head.length > maxBytes) { pending = []; pendingBytes = 0; yield { tooLarge: true }; continue }\n const line = Buffer.concat([...pending, head]).toString(\"utf8\").replace(/\\r$/, \"\")\n pending = []\n pendingBytes = 0\n yield { line }\n }\n if (discarding) continue\n if (pendingBytes + buf.length > maxBytes) { pending = []; pendingBytes = 0; discarding = true; yield { tooLarge: true }; continue }\n if (buf.length) { pending.push(buf); pendingBytes += buf.length }\n }\n if (!discarding && pendingBytes) yield { line: Buffer.concat(pending).toString(\"utf8\").replace(/\\r$/, \"\") }\n}\n\nconst bytesToBase64 = (_key: string, value: unknown): unknown =>\n value instanceof Uint8Array ? Buffer.from(value).toString(\"base64\") : value\n\nconst validId = (v: unknown): v is number => typeof v === \"number\" && Number.isSafeInteger(v) && v > 0\n\nexport interface ParseWorkerV2Options {\n maxRequestBytes?: number\n maxResponseBytes?: number\n input?: NodeJS.ReadableStream\n output?: NodeJS.WritableStream\n}\n\n/** protocol 2 워커 루프 — ready 를 쓰고 요청을 하나씩 처리한다. quit 또는 stdin EOF 에서 마지막 응답을 비우고 돌아온다 */\nexport async function runParseWorkerV2(opts: ParseWorkerV2Options = {}): Promise<void> {\n const input = opts.input ?? process.stdin\n const output = opts.output ?? process.stdout\n const maxRequestBytes = opts.maxRequestBytes ?? DEFAULT_MAX_REQUEST_BYTES\n const maxResponseBytes = opts.maxResponseBytes ?? DEFAULT_MAX_RESPONSE_BYTES\n const seen = new Set<number>()\n let broken = false\n // 쓰기 오류는 write 콜백이 다룬다 — 리스너가 없으면 뒤따르는 'error' 가 uncaught 로 exit 1 을 낸다\n output.on(\"error\", () => {})\n\n /** 한 줄 쓰기 — 상한을 넘거나 직렬화가 터지면 잘린 성공 대신 RESPONSE_TOO_LARGE(false 반환). stdout 이 닫혀 못 보냈어도 false */\n const write = async (o: Record<string, unknown>): Promise<boolean> => {\n let text: string\n let sent = true\n try {\n text = JSON.stringify(o, bytesToBase64)\n if (Buffer.byteLength(text) > maxResponseBytes) throw new RangeError(\"limit\")\n } catch {\n sent = false\n text = JSON.stringify({ ...(validId(o.id) ? { id: o.id } : {}), error: { code: \"RESPONSE_TOO_LARGE\", message: `응답이 상한(${maxResponseBytes}바이트)을 넘습니다 — transport.images \"files\" 로 이미지를 파일로 받으세요` } })\n }\n // 쓰기 콜백까지 기다린다 — drain 대기를 겸한다\n const delivered = await new Promise<boolean>((done, reject) => output.write(text + \"\\n\", err => {\n if (!err) return done(true)\n const code = (err as NodeJS.ErrnoException).code\n if (code !== \"EPIPE\" && code !== \"ERR_STREAM_DESTROYED\") return reject(err)\n // 답할 곳이 없으니 stdin 도 끊어 다음 줄이나 EOF 를 기다리지 않는다\n broken = true\n ;(input as { destroy?: () => void }).destroy?.()\n done(false)\n }))\n return sent && delivered\n }\n const fail = (id: unknown, code: WorkerErrorCode, message: string) =>\n write({ ...(validId(id) ? { id } : {}), error: { code, message } })\n\n await write({ ready: true, version: VERSION, protocol: PARSE_WORKER_PROTOCOL_V2, capabilities: [...CAPABILITIES] })\n\n /** stdout 이 닫혀 stdin 을 끊어 생긴 premature close 는 입력의 끝으로 본다 */\n async function* requests(): AsyncGenerator<{ line?: string; tooLarge?: true }> {\n try { yield* readLines(input, maxRequestBytes) } catch (err) {\n if (!broken || (err as NodeJS.ErrnoException).code !== \"ERR_STREAM_PREMATURE_CLOSE\") throw err\n }\n }\n\n for await (const { line, tooLarge } of requests()) {\n // stdout 이 닫혔으면 남은 요청은 답할 곳이 없다 — 파싱하지 않고 끝낸다\n if (broken) break\n if (tooLarge) { await fail(undefined, \"REQUEST_TOO_LARGE\", `요청이 상한(${maxRequestBytes}바이트)을 넘습니다`); continue }\n const t = line!.trim()\n if (!t) continue\n let raw: unknown\n try { raw = JSON.parse(t) } catch { await fail(undefined, \"INVALID_JSON\", \"잘못된 JSON 라인\"); continue }\n if (raw === null || typeof raw !== \"object\" || Array.isArray(raw)) { await fail(undefined, \"INVALID_REQUEST\", \"JSON 객체가 아닙니다\"); continue }\n const msg = raw as Record<string, unknown>\n if (msg.cmd === \"quit\") break\n const id = msg.id\n if (!validId(id)) { await fail(undefined, \"INVALID_REQUEST\", \"id 는 양의 안전한 정수여야 합니다\"); continue }\n if (msg.cmd !== undefined && msg.cmd !== \"parse\" && msg.cmd !== \"lint_blocks\") { await fail(id, \"UNSUPPORTED_COMMAND\", `지원하지 않는 cmd: ${String(msg.cmd).slice(0, 40)}`); continue }\n if (seen.has(id)) { await fail(id, \"DUPLICATE_ID\", `이미 쓴 id: ${id}`); continue }\n seen.add(id)\n if (msg.cmd === \"lint_blocks\") {\n const lr = lintBlocksRequestSchema.safeParse(msg)\n if (!lr.success) { await fail(id, \"INVALID_REQUEST\", issueText(lr.error, \"\")); continue }\n const { preset, ...flags } = lr.data.options ?? {}\n const key = preset?.trim()\n // 자기 키만 — 프로토타입 키(\"constructor\")가 프리셋으로 통과하지 않게\n if (key !== undefined && !Object.hasOwn(PRESET_ALIAS, key)) { await fail(id, \"INVALID_OPTIONS\", `알 수 없는 프리셋: ${key.slice(0, 40)}`); continue }\n await write({ id, result: lintBlocks(lr.data.blocks, { ...flags, ...(key !== undefined ? { preset: PRESET_ALIAS[key] } : {}) }) })\n continue\n }\n const req = parseRequestSchema.safeParse(msg)\n if (!req.success) { await fail(id, \"INVALID_REQUEST\", issueText(req.error, \"\")); continue }\n const { file, transport } = req.data\n if (!isAbsolute(file)) { await fail(id, \"INVALID_REQUEST\", \"file 은 절대 경로여야 합니다\"); continue }\n const files = transport?.images === \"files\"\n if (files) {\n const dir = transport?.assetsDir\n let isDir = false\n try { isDir = !!dir && isAbsolute(dir) && statSync(dir).isDirectory() } catch { /* 없는 경로 */ }\n if (!isDir) { await fail(id, \"INVALID_REQUEST\", \"transport.images \\\"files\\\" 는 있는 디렉터리의 절대 경로 assetsDir 가 필요합니다\"); continue }\n }\n let options: ParseOptions\n try { options = toParseOptions(req.data.options, file) } catch (err) {\n await fail(id, (err as WorkerProtocolError).code, (err as Error).message)\n continue\n }\n const result = await parseWorkerFile(file, options)\n let assetsDir: string | undefined\n if (files) {\n try { assetsDir = await externalizeImages(result, transport!.assetsDir!, id) } catch (err) {\n await fail(id, \"ASSET_WRITE_FAILED\", (err as Error).message)\n continue\n }\n }\n const sent = await write({ id, rss: process.memoryUsage.rss(), ...(assetsDir ? { assetsDir } : {}), result })\n // 응답을 못 보냈으면(상한 초과·stdout 닫힘) 그 요청의 자산은 아무도 가리키지 않는다 — 미완료 자산으로 지운다\n if (!sent && assetsDir) rmSync(assetsDir, { recursive: true, force: true })\n }\n // 파이프 stdout 은 맥·윈도에서 비동기라 다 비운 뒤 돌아간다\n await new Promise<void>(done => output.write(\"\", () => done()))\n}\n"],"mappings":"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","names":[]}
@@ -1,31 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
- var _chunkFHFPQ6MXcjs = require('./chunk-FHFPQ6MX.cjs');
13
- require('./chunk-TK3FDAEE.cjs');
14
- require('./chunk-OHDGEGDJ.cjs');
15
- require('./chunk-IHNIPVPJ.cjs');
16
- require('./chunk-DKWEZWCF.cjs');
17
- require('./chunk-HOXHBG4C.cjs');
18
- require('./chunk-GS7T56RP.cjs');
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
- exports.DEFAULT_BUILTIN_OCR = _chunkFHFPQ6MXcjs.DEFAULT_BUILTIN_OCR; exports.MAX_OCR_PIXELS = _chunkFHFPQ6MXcjs.MAX_OCR_PIXELS; exports.builtinOcrConfig = _chunkFHFPQ6MXcjs.builtinOcrConfig; exports.groupOcrLines = _chunkFHFPQ6MXcjs.groupOcrLines; exports.ocrItemsToBlocks = _chunkFHFPQ6MXcjs.ocrItemsToBlocks; exports.ocrOnePage = _chunkFHFPQ6MXcjs.ocrOnePage; exports.pageLines = _chunkFHFPQ6MXcjs.pageLines; exports.reportModelDownload = _chunkFHFPQ6MXcjs.reportModelDownload; exports.runPdfOcr = _chunkFHFPQ6MXcjs.runPdfOcr; exports.toOcrLine = _chunkFHFPQ6MXcjs.toOcrLine;
31
- //# sourceMappingURL=pdf-ocr-WU7SZHWM.cjs.map
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- placeSealHwpx
4
- } from "./chunk-Z62PHCSU.js";
5
- import "./chunk-55DOBEGD.js";
6
- import "./chunk-Z5G6QNVH.js";
7
- export {
8
- placeSealHwpx
9
- };
10
- //# sourceMappingURL=seal-JIVSSI3Z.js.map
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- extractTables
4
- } from "./chunk-GEY6ZMXH.js";
5
- import "./chunk-DM5YPONO.js";
6
- import "./chunk-CKCJU42Y.js";
7
- import "./chunk-ZGNHJCDR.js";
8
- import "./chunk-EN3PK6OT.js";
9
- import "./chunk-VKVDMH7X.js";
10
- import "./chunk-VQFA55IC.js";
11
- import "./chunk-BYMPPVT3.js";
12
- import "./chunk-P6FNIU5P.js";
13
- import "./chunk-DBPDAG7N.js";
14
- import "./chunk-Z62PHCSU.js";
15
- import "./chunk-55DOBEGD.js";
16
- import "./chunk-Z5G6QNVH.js";
17
- import "./chunk-3WSNLH4B.js";
18
- export {
19
- extractTables
20
- };
21
- //# sourceMappingURL=visual-BKVZN6HP.js.map
File without changes