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.
- package/README.md +26 -54
- package/dist/{-VEOO4BOM.js → -SRNEV7LS.js} +11 -11
- package/dist/{chunk-P35SCAJN.js → chunk-3HN65YAL.js} +2 -2
- package/dist/{chunk-H5PDQ66I.js → chunk-4745MFQU.js} +3 -3
- package/dist/{chunk-ENCAYXDI.js → chunk-4XC4O7FJ.js} +4 -4
- package/dist/{chunk-EN3PK6OT.js → chunk-7NTMM6PO.js} +2 -2
- package/dist/{chunk-GEY6ZMXH.js → chunk-C6ZVB547.js} +43 -23
- package/dist/{chunk-GEY6ZMXH.js.map → chunk-C6ZVB547.js.map} +1 -1
- package/dist/{chunk-CKCJU42Y.js → chunk-DHMBPMKC.js} +74 -30
- package/dist/chunk-DHMBPMKC.js.map +1 -0
- package/dist/{chunk-ZGNHJCDR.js → chunk-E6VBLBOO.js} +2 -2
- package/dist/{chunk-O2SLKE4L.js → chunk-E7B5CXYI.js} +2 -2
- package/dist/{chunk-DKWEZWCF.cjs → chunk-HLTPMSYW.cjs} +3 -3
- package/dist/{chunk-DKWEZWCF.cjs.map → chunk-HLTPMSYW.cjs.map} +1 -1
- package/dist/{chunk-DZT3CHNZ.cjs → chunk-IGG63DFK.cjs} +3 -3
- package/dist/{chunk-DZT3CHNZ.cjs.map → chunk-IGG63DFK.cjs.map} +1 -1
- package/dist/{chunk-IHNIPVPJ.cjs → chunk-JFUUFJZW.cjs} +6 -6
- package/dist/{chunk-IHNIPVPJ.cjs.map → chunk-JFUUFJZW.cjs.map} +1 -1
- package/dist/{chunk-PX6X4YOR.js → chunk-JMOAMKAR.js} +4 -4
- package/dist/{chunk-P6FNIU5P.js → chunk-KUC5I5MB.js} +2 -2
- package/dist/{chunk-Z5G6QNVH.js → chunk-LMEF7FN5.js} +2 -2
- package/dist/{chunk-OJISMR2Z.js → chunk-M46PB75E.js} +2 -2
- package/dist/{chunk-G4HWEM6Q.js → chunk-MHNJOJQV.js} +4 -4
- package/dist/{chunk-Z62PHCSU.js → chunk-NJ5RUDCW.js} +3 -3
- package/dist/{chunk-DM5YPONO.js → chunk-NMFFIUI6.js} +2 -2
- package/dist/{chunk-HOXHBG4C.cjs → chunk-PNSALBXH.cjs} +2 -2
- package/dist/{chunk-HOXHBG4C.cjs.map → chunk-PNSALBXH.cjs.map} +1 -1
- package/dist/{chunk-FHFPQ6MX.cjs → chunk-PNX5FYHC.cjs} +24 -24
- package/dist/{chunk-FHFPQ6MX.cjs.map → chunk-PNX5FYHC.cjs.map} +1 -1
- package/dist/{chunk-IZYYKE5F.js → chunk-R2GIGE5H.js} +2 -2
- package/dist/{chunk-55DOBEGD.js → chunk-RIRPLFPN.js} +2 -2
- package/dist/{chunk-3M2BIQLZ.js → chunk-TDMBTG7U.js} +2 -2
- package/dist/{chunk-6YDPTTIY.js → chunk-TW3V6FSH.js} +2 -2
- package/dist/{chunk-OHDGEGDJ.cjs → chunk-UNICY546.cjs} +23 -23
- package/dist/{chunk-OHDGEGDJ.cjs.map → chunk-UNICY546.cjs.map} +1 -1
- package/dist/{chunk-SRUBDR3Z.js → chunk-VPSF5LEM.js} +3 -3
- package/dist/{chunk-4VPN5MHS.js → chunk-W24TJJNN.js} +2 -2
- package/dist/{chunk-DBPDAG7N.js → chunk-WDSTW3BD.js} +2 -2
- package/dist/{chunk-XLY5ZJRP.js → chunk-WJAFE3Z6.js} +2 -2
- package/dist/chunks-AL4P5TO5.js +10 -0
- package/dist/cli.js +41 -30
- package/dist/cli.js.map +1 -1
- package/dist/{formula-4GRNVWIQ.js → formula-DSB574H7.js} +4 -4
- package/dist/{formula-R3OWFGCZ.cjs → formula-HK2MNZ3Q.cjs} +9 -9
- package/dist/{formula-R3OWFGCZ.cjs.map → formula-HK2MNZ3Q.cjs.map} +1 -1
- package/dist/{formula-6Y467S4R.js → formula-U2LZ67KI.js} +3 -3
- package/dist/{image-ocr-CGJJCD4E.js → image-ocr-3QB2HLSI.js} +9 -9
- package/dist/{image-ocr-ZLL66KNO.js → image-ocr-J54Q3YWP.js} +6 -6
- package/dist/{image-ocr-EBKG45KF.cjs → image-ocr-QNIMVE5A.cjs} +17 -17
- package/dist/{image-ocr-EBKG45KF.cjs.map → image-ocr-QNIMVE5A.cjs.map} +1 -1
- package/dist/index.cjs +683 -619
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +106 -42
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +36 -33
- package/dist/mcp.js.map +1 -1
- package/dist/{model-bundle-RD4KSNTB.js → model-bundle-CGWU4ALC.js} +5 -5
- package/dist/{models-OLGCZBXI.js → models-A3TF3BDV.js} +5 -5
- package/dist/{parse-worker-v2-YZY2GQY5.js → parse-worker-v2-MNUD4WAR.js} +20 -13
- package/dist/parse-worker-v2-MNUD4WAR.js.map +1 -0
- package/dist/{parser-IHCFHLHN.js → parser-C3ARF26I.js} +12 -12
- package/dist/{parser-J22QBXPP.js → parser-OBGWEWSU.js} +9 -9
- package/dist/{parser-DX4I3GT7.cjs → parser-RPAHN3OR.cjs} +157 -157
- package/dist/{parser-DX4I3GT7.cjs.map → parser-RPAHN3OR.cjs.map} +1 -1
- package/dist/{pdf-ocr-TYIH23RP.js → pdf-ocr-ENLVEEYL.js} +9 -9
- package/dist/pdf-ocr-GA5QJFNK.cjs +31 -0
- package/dist/{pdf-ocr-WU7SZHWM.cjs.map → pdf-ocr-GA5QJFNK.cjs.map} +1 -1
- package/dist/{pdf-ocr-H2247ZZH.js → pdf-ocr-K53REDNY.js} +6 -6
- package/dist/{profile-io-GH3TYTNJ.js → profile-io-ZGFEO7CB.js} +3 -3
- package/dist/{rasterize-7TFTVFMB.js → rasterize-QMC2SAUT.js} +3 -3
- package/dist/{redact-doc-DSSQOO3A.js → redact-doc-JH6RZZBE.js} +11 -11
- package/dist/{render-NKXZQINI.js → render-ZGKQLKPJ.js} +7 -7
- package/dist/seal-KMGYTJAV.js +10 -0
- package/dist/{setup-JVLMX2TH.js → setup-LAQGCYQ2.js} +3 -3
- package/dist/visual-4OYJFGXL.js +21 -0
- package/dist/{watch-5RZVHAKI.js → watch-7YPB4TKC.js} +12 -12
- package/package.json +1 -1
- package/dist/chunk-CKCJU42Y.js.map +0 -1
- package/dist/chunks-LV5EJBZ4.js +0 -10
- package/dist/parse-worker-v2-YZY2GQY5.js.map +0 -1
- package/dist/pdf-ocr-WU7SZHWM.cjs +0 -31
- package/dist/seal-JIVSSI3Z.js +0 -10
- package/dist/visual-BKVZN6HP.js +0 -21
- /package/dist/{-VEOO4BOM.js.map → -SRNEV7LS.js.map} +0 -0
- /package/dist/{chunk-P35SCAJN.js.map → chunk-3HN65YAL.js.map} +0 -0
- /package/dist/{chunk-H5PDQ66I.js.map → chunk-4745MFQU.js.map} +0 -0
- /package/dist/{chunk-ENCAYXDI.js.map → chunk-4XC4O7FJ.js.map} +0 -0
- /package/dist/{chunk-EN3PK6OT.js.map → chunk-7NTMM6PO.js.map} +0 -0
- /package/dist/{chunk-ZGNHJCDR.js.map → chunk-E6VBLBOO.js.map} +0 -0
- /package/dist/{chunk-O2SLKE4L.js.map → chunk-E7B5CXYI.js.map} +0 -0
- /package/dist/{chunk-PX6X4YOR.js.map → chunk-JMOAMKAR.js.map} +0 -0
- /package/dist/{chunk-P6FNIU5P.js.map → chunk-KUC5I5MB.js.map} +0 -0
- /package/dist/{chunk-Z5G6QNVH.js.map → chunk-LMEF7FN5.js.map} +0 -0
- /package/dist/{chunk-OJISMR2Z.js.map → chunk-M46PB75E.js.map} +0 -0
- /package/dist/{chunk-G4HWEM6Q.js.map → chunk-MHNJOJQV.js.map} +0 -0
- /package/dist/{chunk-Z62PHCSU.js.map → chunk-NJ5RUDCW.js.map} +0 -0
- /package/dist/{chunk-DM5YPONO.js.map → chunk-NMFFIUI6.js.map} +0 -0
- /package/dist/{chunk-IZYYKE5F.js.map → chunk-R2GIGE5H.js.map} +0 -0
- /package/dist/{chunk-55DOBEGD.js.map → chunk-RIRPLFPN.js.map} +0 -0
- /package/dist/{chunk-3M2BIQLZ.js.map → chunk-TDMBTG7U.js.map} +0 -0
- /package/dist/{chunk-6YDPTTIY.js.map → chunk-TW3V6FSH.js.map} +0 -0
- /package/dist/{chunk-SRUBDR3Z.js.map → chunk-VPSF5LEM.js.map} +0 -0
- /package/dist/{chunk-4VPN5MHS.js.map → chunk-W24TJJNN.js.map} +0 -0
- /package/dist/{chunk-DBPDAG7N.js.map → chunk-WDSTW3BD.js.map} +0 -0
- /package/dist/{chunk-XLY5ZJRP.js.map → chunk-WJAFE3Z6.js.map} +0 -0
- /package/dist/{chunks-LV5EJBZ4.js.map → chunks-AL4P5TO5.js.map} +0 -0
- /package/dist/{formula-4GRNVWIQ.js.map → formula-DSB574H7.js.map} +0 -0
- /package/dist/{formula-6Y467S4R.js.map → formula-U2LZ67KI.js.map} +0 -0
- /package/dist/{image-ocr-CGJJCD4E.js.map → image-ocr-3QB2HLSI.js.map} +0 -0
- /package/dist/{image-ocr-ZLL66KNO.js.map → image-ocr-J54Q3YWP.js.map} +0 -0
- /package/dist/{model-bundle-RD4KSNTB.js.map → model-bundle-CGWU4ALC.js.map} +0 -0
- /package/dist/{models-OLGCZBXI.js.map → models-A3TF3BDV.js.map} +0 -0
- /package/dist/{parser-IHCFHLHN.js.map → parser-C3ARF26I.js.map} +0 -0
- /package/dist/{parser-J22QBXPP.js.map → parser-OBGWEWSU.js.map} +0 -0
- /package/dist/{pdf-ocr-H2247ZZH.js.map → pdf-ocr-ENLVEEYL.js.map} +0 -0
- /package/dist/{pdf-ocr-TYIH23RP.js.map → pdf-ocr-K53REDNY.js.map} +0 -0
- /package/dist/{profile-io-GH3TYTNJ.js.map → profile-io-ZGFEO7CB.js.map} +0 -0
- /package/dist/{rasterize-7TFTVFMB.js.map → rasterize-QMC2SAUT.js.map} +0 -0
- /package/dist/{redact-doc-DSSQOO3A.js.map → redact-doc-JH6RZZBE.js.map} +0 -0
- /package/dist/{render-NKXZQINI.js.map → render-ZGKQLKPJ.js.map} +0 -0
- /package/dist/{seal-JIVSSI3Z.js.map → seal-KMGYTJAV.js.map} +0 -0
- /package/dist/{setup-JVLMX2TH.js.map → setup-LAQGCYQ2.js.map} +0 -0
- /package/dist/{visual-BKVZN6HP.js.map → visual-4OYJFGXL.js.map} +0 -0
- /package/dist/{watch-5RZVHAKI.js.map → watch-7YPB4TKC.js.map} +0 -0
package/dist/chunks-LV5EJBZ4.js
DELETED
|
@@ -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
|
package/dist/seal-JIVSSI3Z.js
DELETED
package/dist/visual-BKVZN6HP.js
DELETED
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|