{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { spawn } from 'child_process';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst JAR_NAME = 'opendataloader-pdf-cli.jar';\n\ninterface JarExecutionOptions {\n  debug?: boolean;\n  streamOutput?: boolean;\n}\n\nfunction executeJar(args: string[], executionOptions: JarExecutionOptions = {}): Promise<string> {\n  const { debug = false, streamOutput = false } = executionOptions;\n\n  return new Promise((resolve, reject) => {\n    const jarPath = path.join(__dirname, '..', 'lib', JAR_NAME);\n\n    if (!fs.existsSync(jarPath)) {\n      return reject(\n        new Error(`JAR file not found at ${jarPath}. Please run the build script first.`),\n      );\n    }\n\n    const command = 'java';\n    const commandArgs = ['-jar', jarPath, ...args];\n\n    const javaProcess = spawn(command, commandArgs);\n\n    let stdout = '';\n    let stderr = '';\n\n    javaProcess.stdout.on('data', (data) => {\n      const chunk = data.toString();\n      if (streamOutput) {\n        process.stdout.write(chunk);\n      }\n      stdout += chunk;\n    });\n\n    javaProcess.stderr.on('data', (data) => {\n      const chunk = data.toString();\n      if (streamOutput) {\n        process.stderr.write(chunk);\n      }\n      stderr += chunk;\n    });\n\n    javaProcess.on('close', (code) => {\n      if (code === 0) {\n        resolve(stdout);\n      } else {\n        const errorOutput = stderr || stdout;\n        const error = new Error(\n          `The opendataloader-pdf CLI exited with code ${code}.\\n\\n${errorOutput}`,\n        );\n        reject(error);\n      }\n    });\n\n    javaProcess.on('error', (err: Error) => {\n      if (err.message.includes('ENOENT')) {\n        reject(\n          new Error(\n            \"'java' command not found. Please ensure Java is installed and in your system's PATH.\",\n          ),\n        );\n      } else {\n        reject(err);\n      }\n    });\n  });\n}\n\nexport interface RunOptions {\n  outputFolder?: string;\n  password?: string;\n  replaceInvalidChars?: string;\n  generateMarkdown?: boolean;\n  generateHtml?: boolean;\n  generateAnnotatedPdf?: boolean;\n  keepLineBreaks?: boolean;\n  contentSafetyOff?: string;\n  htmlInMarkdown?: boolean;\n  addImageToMarkdown?: boolean;\n  noJson?: boolean;\n  debug?: boolean;\n  useStructTree?: boolean;\n}\n\nexport function run(inputPath: string, options: RunOptions = {}): Promise<string> {\n  return new Promise((resolve, reject) => {\n    if (!fs.existsSync(inputPath)) {\n      return reject(new Error(`Input file or folder not found: ${inputPath}`));\n    }\n\n    const args: string[] = [];\n    if (options.outputFolder) {\n      args.push('--output-dir', options.outputFolder);\n    }\n    if (options.password) {\n      args.push('--password', options.password);\n    }\n    if (options.replaceInvalidChars) {\n      args.push('--replace-invalid-chars', options.replaceInvalidChars);\n    }\n    if (options.generateMarkdown) {\n      args.push('--markdown');\n    }\n    if (options.generateHtml) {\n      args.push('--html');\n    }\n    if (options.generateAnnotatedPdf) {\n      args.push('--pdf');\n    }\n    if (options.keepLineBreaks) {\n      args.push('--keep-line-breaks');\n    }\n    if (options.contentSafetyOff) {\n      args.push('--content-safety-off', options.contentSafetyOff);\n    }\n    if (options.htmlInMarkdown) {\n      args.push('--markdown-with-html');\n    }\n    if (options.addImageToMarkdown) {\n      args.push('--markdown-with-images');\n    }\n    if (options.noJson) {\n      args.push('--no-json');\n    }\n    if (options.useStructTree) {\n      args.push('--use-struct-tree')\n    }\n\n    args.push(inputPath);\n    executeJar(args, {\n      debug: options.debug,\n      streamOutput: Boolean(options.debug),\n    })\n      .then(resolve)\n      .catch(reject);\n  });\n}\n\nexport interface ConvertOptions {\n  outputDir?: string;\n  password?: string;\n  format?: string[];\n  quiet?: boolean;\n  contentSafetyOff?: string[];\n  keepLineBreaks?: boolean;\n  replaceInvalidChars?: string;\n  useStructTree?: boolean;\n}\n\nexport function convert(inputPaths: string[], options: ConvertOptions = {}): Promise<string> {\n  if (inputPaths.length === 0) {\n    return Promise.reject(new Error('At least one input path must be provided.'));\n  }\n\n  for (const input of inputPaths) {\n    if (!fs.existsSync(input)) {\n      return Promise.reject(new Error(`Input file or folder not found: ${input}`));\n    }\n  }\n\n  const args: string[] = [...inputPaths];\n  if (options.outputDir) {\n    args.push('--output-dir', options.outputDir);\n  }\n  if (options.password) {\n    args.push('--password', options.password);\n  }\n  if (options.format && options.format.length > 0) {\n    args.push('--format', ...options.format);\n  }\n  if (options.quiet) {\n    args.push('--quiet');\n  }\n  if (options.contentSafetyOff && options.contentSafetyOff.length > 0) {\n    args.push('--content-safety-off', ...options.contentSafetyOff);\n  }\n  if (options.keepLineBreaks) {\n    args.push('--keep-line-breaks');\n  }\n  if (options.replaceInvalidChars) {\n    args.push('--replace-invalid-chars', options.replaceInvalidChars);\n  }\n  if (options.useStructTree) {\n    args.push('--use-struct-tree')\n  }\n\n  return executeJar(args, {\n    streamOutput: !options.quiet,\n  });\n}\n"],"mappings":"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","names":[]}