{"version":3,"sources":["../src/index.ts","../src/version.ts","../src/config/hardcoded.ts","../src/utils/fetcher.ts","../src/form.ts","../src/validator/index.ts","../src/utils/nullable.ts","../src/utils/env.ts","../src/options.default.ts","../src/options.ts","../src/validator/option.ts","../src/validator/path.ts","../src/validator/crawler.ts","../src/utils/casing.ts","../src/utils/camel-case.ts","../src/parser.ts"],"sourcesContent":["/**\n * Anyparser main entry point\n * @module anyparser\n */\nimport { ANYPARSER_VERSION, version } from './version.ts'\nimport { OCR_LANGUAGES, OCR_PRESETS } from './config/hardcoded.ts'\nimport { Anyparser } from './parser.ts'\nimport type { OcrLanguageType, OcrPresetType, AnyparserOption, AnyparserImageReference, AnyparserResultBase, AnyparserCrawlDirectiveBase, AnyparserCrawlDirective, AnyparserUrl, AnyparserRobotsTxtDirective, AnyparserPdfPage, AnyparserPdfResult, AnyparserCrawlResult, AnyparserResult, Result } from './anyparser.d.ts'\n\nexport { version, ANYPARSER_VERSION, OCR_LANGUAGES, OCR_PRESETS, Anyparser }\nexport type { OcrLanguageType, OcrPresetType, AnyparserOption, AnyparserImageReference, AnyparserResultBase, AnyparserCrawlDirectiveBase, AnyparserCrawlDirective, AnyparserUrl, AnyparserRobotsTxtDirective, AnyparserPdfPage, AnyparserPdfResult, AnyparserCrawlResult, AnyparserResult, Result }\n","export const ANYPARSER_VERSION = '1.0.1'\nexport const version = ANYPARSER_VERSION\n","/**\n * Hardcoded configuration constants\n * @module config/hardcoded\n */\n\nexport const FALLBACK_API_URL = 'https://anyparserapi.com'\n\nexport const OCR_PRESETS = Object.freeze({\n  DOCUMENT: 'document',\n  HANDWRITING: 'handwriting',\n  SCAN: 'scan',\n  RECEIPT: 'receipt',\n  MAGAZINE: 'magazine',\n  INVOICE: 'invoice',\n  BUSINESS_CARD: 'business-card',\n  PASSPORT: 'passport',\n  DRIVER_LICENSE: 'driver-license'\n} as const)\n\nexport const OCR_LANGUAGES = Object.freeze({\n  AFRIKAANS: 'afr',\n  AMHARIC: 'amh',\n  ARABIC: 'ara',\n  ASSAMESE: 'asm',\n  AZERBAIJANI: 'aze',\n  AZERBAIJANI_CYRILLIC: 'aze_cyrl',\n  BELARUSIAN: 'bel',\n  BENGALI: 'ben',\n  TIBETAN: 'bod',\n  BOSNIAN: 'bos',\n  BRETON: 'bre',\n  BULGARIAN: 'bul',\n  CATALAN: 'cat',\n  CEBUANO: 'ceb',\n  CZECH: 'ces',\n  SIMPLIFIED_CHINESE: 'chi_sim',\n  SIMPLIFIED_CHINESE_VERTICAL: 'chi_sim_vert',\n  TRADITIONAL_CHINESE: 'chi_tra',\n  TRADITIONAL_CHINESE_VERTICAL: 'chi_tra_vert',\n  CHEROKEE: 'chr',\n  CORSICAN: 'cos',\n  WELSH: 'cym',\n  DANISH: 'dan',\n  DANISH_FRAKTUR: 'dan_frak',\n  GERMAN: 'deu',\n  GERMAN_FRAKTUR: 'deu_frak',\n  GERMAN_LATIN: 'deu_latf',\n  DIVESH: 'div',\n  DZONGKHA: 'dzo',\n  GREEK: 'ell',\n  ENGLISH: 'eng',\n  MIDDLE_ENGLISH: 'enm',\n  ESPERANTO: 'epo',\n  EQUATORIAL_GUINEAN: 'equ',\n  ESTONIAN: 'est',\n  BASQUE: 'eus',\n  FAROESE: 'fao',\n  PERSIAN: 'fas',\n  FILIPINO: 'fil',\n  FINNISH: 'fin',\n  FRENCH: 'fra',\n  OLD_FRENCH: 'frm',\n  FRISIAN: 'fry',\n  SCOTTISH_GAELIC: 'gla',\n  IRISH: 'gle',\n  GALICIAN: 'glg',\n  ANCIENT_GREEK: 'grc',\n  GUJARATI: 'guj',\n  HAITIAN_CREOLE: 'hat',\n  HEBREW: 'heb',\n  HINDI: 'hin',\n  CROATIAN: 'hrv',\n  HUNGARIAN: 'hun',\n  ARMENIAN: 'hye',\n  IGBO: 'iku',\n  INDONESIAN: 'ind',\n  ICELANDIC: 'isl',\n  ITALIAN: 'ita',\n  OLD_ITALIAN: 'ita_old',\n  JAVANESE: 'jav',\n  JAPANESE: 'jpn',\n  JAPANESE_VERTICAL: 'jpn_vert',\n  KANNADA: 'kan',\n  GEORGIAN: 'kat',\n  OLD_GEORGIAN: 'kat_old',\n  KAZAKH: 'kaz',\n  KHMER: 'khm',\n  KIRGHIZ: 'kir',\n  KURDISH: 'kmr',\n  KOREAN: 'kor',\n  KOREAN_VERTICAL: 'kor_vert',\n  LAO: 'lao',\n  LATIN: 'lat',\n  LATVIAN: 'lav',\n  LITHUANIAN: 'lit',\n  LUXEMBOURGISH: 'ltz',\n  MALAYALAM: 'mal',\n  MARATHI: 'mar',\n  MACEDONIAN: 'mkd',\n  MALTESE: 'mlt',\n  MONGOLIAN: 'mon',\n  MAORI: 'mri',\n  MALAY: 'msa',\n  MYANMAR: 'mya',\n  NEPALI: 'nep',\n  DUTCH: 'nld',\n  NORWEGIAN: 'nor',\n  OCCITAN: 'oci',\n  ODISHA: 'ori',\n  OSD: 'osd',\n  PUNJABI: 'pan',\n  POLISH: 'pol',\n  PORTUGUESE: 'por',\n  PASHTO: 'pus',\n  QUECHUA: 'que',\n  ROMANIAN: 'ron',\n  RUSSIAN: 'rus',\n  SANSKRIT: 'san',\n  SINHALA: 'sin',\n  SLOVAK: 'slk',\n  SLOVAK_FRAKTUR: 'slk_frak',\n  SLOVENIAN: 'slv',\n  SINDHI: 'snd',\n  SPANISH: 'spa',\n  OLD_SPANISH: 'spa_old',\n  ALBANIAN: 'sqi',\n  SERBIAN: 'srp',\n  SERBIAN_LATIN: 'srp_latn',\n  SUNDIANESE: 'sun',\n  SWAHILI: 'swa',\n  SWEDISH: 'swe',\n  SYRIAC: 'syr',\n  TAMIL: 'tam',\n  TATAR: 'tat',\n  TELUGU: 'tel',\n  TAJIK: 'tgk',\n  TAGALOG: 'tgl',\n  THAI: 'tha',\n  TIGRINYA: 'tir',\n  TONGAN: 'ton',\n  TURKISH: 'tur',\n  UIGHUR: 'uig',\n  UKRAINIAN: 'ukr',\n  URDU: 'urd',\n  UZBEK: 'uzb',\n  UZBEK_CYRILLIC: 'uzb_cyrl',\n  VIETNAMESE: 'vie',\n  YIDDISH: 'yid',\n  YORUBA: 'yor'\n} as const)\n\nexport type OcrPresetType = (typeof OCR_PRESETS)[keyof typeof OCR_PRESETS]\nexport type OcrLanguageType = (typeof OCR_LANGUAGES)[keyof typeof OCR_LANGUAGES]\n","export class WrappedError extends Error {\n  override cause: Error\n  statusCode: number\n\n  constructor (message: string, cause: Error, statusCode: number) {\n    super(message)\n    this.name = 'WrappedError'\n    this.cause = cause\n    this.statusCode = statusCode\n  }\n}\n\nexport const wrappedFetch = async (input: string | URL | Request, options?: RequestInit) => {\n  const response = await fetch(input, options)\n\n  if (!response.ok) {\n    const { status, statusText } = response\n    const text = await response.text()\n\n    throw new WrappedError(\n      `HTTP ${status} ${statusText}: ${input}`,\n      new Error(text),\n      status\n    )\n  }\n\n  return response\n}\n","/* eslint-disable complexity */\n\n/**\n * Form data builder module for creating multipart form data for API requests.\n * @module form\n */\n\nimport type { AnyparserParsedOption } from './anyparser.d.ts'\n\n/**\n * Builds multipart form data from parsed options.\n * @param parsed - Validated parser options\n * @returns Form data for API request\n */\nexport function buildForm (parsed: AnyparserParsedOption): FormData {\n  const formData = new FormData()\n\n  // Add regular form fields\n  formData.append('format', parsed.format)\n  formData.append('model', parsed.model)\n\n  // Only add image and table fields if not using OCR model or crawler model\n  if (parsed.model !== 'ocr' && parsed.model !== 'crawler') {\n    if (parsed.image !== undefined) {\n      formData.append('image', String(parsed.image))\n    }\n\n    if (parsed.table !== undefined) {\n      formData.append('table', String(parsed.table))\n    }\n  }\n\n  // Add OCR-specific fields\n  if (parsed.model === 'ocr') {\n    if (parsed.ocrLanguage?.length) {\n      formData.append('ocrLanguage', parsed.ocrLanguage.join(','))\n    }\n\n    if (parsed.ocrPreset) {\n      formData.append('ocrPreset', parsed.ocrPreset)\n    }\n  }\n\n  // Add crawler-specific fields\n  if (parsed.model === 'crawler') {\n    formData.append('url', parsed.url ?? '')\n\n    if (parsed.maxDepth !== undefined) {\n      formData.append('maxDepth', String(parsed.maxDepth))\n    }\n\n    if (parsed.maxExecutions !== undefined) {\n      formData.append('maxExecutions', String(parsed.maxExecutions))\n    }\n\n    if (parsed.strategy) {\n      formData.append('strategy', parsed.strategy)\n    }\n\n    if (parsed.traversalScope) {\n      formData.append('traversalScope', parsed.traversalScope)\n    }\n  } else {\n    // Add files to the form for non-crawler models\n    if (parsed.files) {\n      for (const file of parsed.files) {\n        formData.append('files', file.contents, file.fileName)\n      }\n    }\n  }\n\n  return formData\n}\n","/**\n * Option validation and parsing module\n * @module validator\n */\nimport * as fsapi from 'node:fs'\nimport { basename } from 'node:path'\nimport * as fs from 'node:fs/promises'\nimport type { AnyparserOption, AnyparserParsedOption } from '../anyparser.d.ts'\nimport { buildOptions } from '../options.ts'\nimport { validateOption } from './option.ts'\nimport { validatePath } from './path.ts'\nimport type { ValidPathValidationResult } from './validation.d.ts'\nimport { getURLToCrawl } from './crawler.ts'\n\n/**\n * Check if a file is accessible and not locked\n * @param filePath - Path to the file to check\n * @returns Promise that resolves when file is accessible, rejects if file is locked or not found\n */\nasync function checkFileAccess (filePath: string): Promise<void> {\n  try {\n    await fs.access(filePath)\n  } catch (error) {\n    if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {\n      throw new Error(`File ${filePath} was not found or was removed`)\n    }\n\n    throw error\n  }\n\n  try {\n    // Try to open file for reading to check if it's locked\n    const fileHandle = await fs.open(filePath, 'r')\n    await fileHandle.close()\n  } catch (error) {\n    if (error instanceof Error && 'code' in error && (error.code === 'EBUSY' || error.code === 'ELOCK')) {\n      throw new Error(`File ${filePath} is locked by another process`)\n    }\n\n    throw error\n  }\n}\n\n/**\n * Validates options and processes input files\n * @param filePaths - Files to process\n * @param options - Parser options\n * @returns Processed options and files\n */\nexport async function validateAndParse (\n  filePaths: string | string[],\n  options?: AnyparserOption\n): Promise<AnyparserParsedOption> {\n  const parsed = buildOptions(options)\n  validateOption(parsed)\n\n  if (!['json', 'markdown', 'html'].includes(parsed.format)) {\n    throw new Error(`Unsupported format: ${parsed.format}`)\n  }\n\n  // Determine if we're in crawler mode\n  const isCrawler = options?.model === 'crawler'\n\n  // Validate URL for crawler mode, otherwise validate file paths\n  const result = isCrawler ?\n      { valid: true, files: [getURLToCrawl(filePaths)] } as ValidPathValidationResult :\n    await validatePath(filePaths)\n\n  if (result.valid === false) {\n    throw result.error\n  }\n\n  const parsedOption: AnyparserParsedOption = {\n    apiUrl: parsed.apiUrl,\n    apiKey: parsed.apiKey,\n    format: parsed.format,\n    model: parsed.model,\n    image: parsed.image,\n    table: parsed.table,\n    ocrLanguage: parsed.ocrLanguage,\n    ocrPreset: parsed.ocrPreset,\n    url: parsed.url,\n    maxDepth: parsed.maxDepth,\n    maxExecutions: parsed.maxExecutions,\n    strategy: parsed.strategy,\n    traversalScope: parsed.traversalScope,\n    encoding: parsed.encoding\n  }\n\n  // Handle crawler mode\n  if (isCrawler) {\n    parsedOption.url = result.files[0]\n  } else {\n    // Process files for non-crawler mode\n    const processed = []\n\n    for (const filePath of result.files) {\n      await checkFileAccess(filePath)\n\n      const fileStream = fsapi.createReadStream(filePath)\n      const chunks = []\n\n      for await (const chunk of fileStream) {\n        chunks.push(chunk)\n      }\n\n      const buffer = Buffer.concat(chunks)\n      const contents = new File([buffer], basename(filePath), {\n        type: 'application/octet-stream'\n      })\n\n      processed.push({\n        fileName: basename(filePath),\n        contents\n      })\n    }\n\n    parsedOption.files = processed\n  }\n\n  return parsedOption\n}\n","export type Nullable<T> = T | null\nexport type Optional<T> = T | undefined\nexport type Nullish<T> = Nullable<T> | Optional<T>\n\nconst isNullOrUndefined = <T>(suspect: Nullish<T>): suspect is null | undefined => {\n  if (typeof suspect === 'undefined' || suspect === null) {\n    return true\n  }\n\n  if (typeof suspect === 'string') {\n    return suspect.trim() === ''\n  }\n\n  return false\n}\n\nconst isValidObject = (suspect: unknown): suspect is object => {\n  return typeof suspect === 'object' && suspect !== undefined && suspect !== null\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nconst isEmptyObject = (suspect: unknown): suspect is {} => {\n  return isValidObject(suspect) && Object.keys(suspect).length === 0\n}\n\nconst isInvalidOrEmptyArray = <T>(suspect: Nullish<Array<T>>): suspect is null | undefined | [] => {\n  if (isNullOrUndefined(suspect)) {\n    return true\n  }\n\n  if (!Array.isArray(suspect)) {\n    throw new Error('isInvalidOrEmptyArray expects an array')\n  }\n\n  return suspect.length === 0\n}\n\nconst isValidArrayWithMembers = <T>(suspect: Nullish<Array<T>>): suspect is Array<T> => !isInvalidOrEmptyArray(suspect)\n\nconst or = <T>(value: Nullish<T>, or: T): T => {\n  if (isNullOrUndefined(value)) {\n    return or\n  }\n\n  return value\n}\n\nexport {\n  isInvalidOrEmptyArray,\n  isNullOrUndefined,\n  isValidArrayWithMembers,\n  isValidObject,\n  isEmptyObject,\n  or\n}\n","import { isNullOrUndefined } from './nullable.ts'\n\nconst env = (key: string, fallback = '') => {\n  const value = process.env[key]\n\n  if (!isNullOrUndefined(value)) {\n    return value\n  }\n\n  if (!isNullOrUndefined(fallback)) {\n    return fallback\n  }\n\n  return ''\n}\n\nconst envOr = (key: string, fallback = '') => {\n  const value = process.env[key] as string\n\n  if (isNullOrUndefined(value)) {\n    return fallback\n  }\n\n  return ''\n}\n\nexport { env, envOr }\n","/**\n * Configuration module for Anyparser default options\n * @module options.default\n */\n\nimport { FALLBACK_API_URL } from '@/config/hardcoded.ts'\nimport { env } from '@src/utils/env.ts'\nimport type { AnyparserOption } from '@anyparser/core'\n\n/**\n * Retrieves and validates the API URL from environment or fallback\n * @returns {URL} Valid API URL instance\n */\nexport const getApiUrl = (): URL => {\n  const value = env('ANYPARSER_API_URL', FALLBACK_API_URL)\n\n  try {\n    return new URL(value)\n  } catch {\n    console.error('Invalid API URL %s', value)\n  }\n\n  console.debug('Defaulting to %s', FALLBACK_API_URL)\n\n  return new URL(FALLBACK_API_URL)\n}\n\n/**\n * Default configuration options for Anyparser\n * @type {Option}\n */\nexport const defaultOptions: AnyparserOption = {\n  apiUrl: getApiUrl(),\n  apiKey: env('ANYPARSER_API_KEY'),\n  format: 'json',\n  model: 'text',\n  image: true,\n  table: true\n}\n","/**\n * Options module for Anyparser configuration and parsing.\n * @module options\n */\n\nimport type { AnyparserOption, AnyparserParsedOption } from './anyparser.d.ts'\nimport { defaultOptions } from './options.default.ts'\n\n/**\n * Validate API key format and presence\n * @param apiKey - API key to validate\n * @throws {Error} If API key is invalid or missing\n */\nexport function validateApiKey (apiKey: string | undefined): void {\n  if (!apiKey) {\n    throw new Error('API key is required')\n  }\n\n  if (typeof apiKey !== 'string' || apiKey.trim().length === 0) {\n    throw new Error('API key must be a non-empty string')\n  }\n}\n\n/**\n * Build final options by merging defaults with provided options.\n * @param options - User-provided options to override defaults\n * @returns Complete options with all required fields\n * @throws {Error} If required options are missing or invalid\n */\nexport function buildOptions (options?: AnyparserOption): AnyparserParsedOption {\n  const mergedOptions = { ...defaultOptions, ...options }\n\n  validateApiKey(mergedOptions.apiKey)\n\n  if (!mergedOptions.apiUrl) {\n    throw new Error('API URL is required')\n  }\n\n  const parsedOptions: AnyparserParsedOption = {\n    apiUrl: mergedOptions.apiUrl,\n    apiKey: mergedOptions.apiKey as string,\n    format: mergedOptions.format || 'json',\n    model: mergedOptions.model || 'text',\n    encoding: mergedOptions.encoding || 'utf-8',\n    image: mergedOptions.image,\n    table: mergedOptions.table,\n    ocrLanguage: mergedOptions.ocrLanguage,\n    ocrPreset: mergedOptions.ocrPreset,\n    url: mergedOptions.url,\n    maxDepth: mergedOptions.maxDepth,\n    maxExecutions: mergedOptions.maxExecutions,\n    strategy: mergedOptions.strategy,\n    traversalScope: mergedOptions.traversalScope\n  }\n\n  return parsedOptions\n}\n","/**\n * Validation module for options\n * @module validation\n */\n\nimport { isNullOrUndefined } from '@src/utils/nullable.ts'\nimport type { AnyparserOption } from '@anyparser/core'\nimport { OCR_LANGUAGES, OCR_PRESETS } from '../config/hardcoded.ts'\n\n/**\n * Validates parsing options configuration\n * @param {Option} parsed - Options to validate\n * @throws {Error} If validation fails\n */\nexport const validateOption = (parsed: AnyparserOption) => {\n  if (isNullOrUndefined(parsed.apiUrl)) {\n    throw new Error('API URL is required')\n  }\n\n  if (!isNullOrUndefined(parsed.ocrLanguage)) {\n    parsed.ocrLanguage.forEach((language: string) => {\n      if (!Object.values(OCR_LANGUAGES as Record<string, string>).includes(language)) {\n        throw new Error('Invalid OCR language')\n      }\n    })\n  }\n\n  if (!isNullOrUndefined(parsed.ocrPreset)) {\n    if (!Object.values(OCR_PRESETS as Record<string, string>).includes(parsed.ocrPreset)) {\n      throw new Error('Invalid OCR preset')\n    }\n  }\n}\n","/**\n * Validation module for file paths\n * @module validation\n */\n\nimport { access } from 'node:fs/promises'\nimport type { PathValidationResult } from './validation.d.ts'\n\n/**\n * Validates file paths exist and are accessible\n * @param {string|string[]} filePaths - Single path or array of paths\n * @returns {Promise<PathValidationResult>} Validation result\n */\nexport const validatePath = async (filePaths: string | string[]): Promise<PathValidationResult> => {\n  // Add input validation\n  if (!filePaths) {\n    return {\n      valid: false,\n      error: new Error('No files provided')\n    }\n  }\n\n  const files = Array.isArray(filePaths) ? filePaths : [filePaths]\n\n  if (files.length === 0) {\n    return {\n      valid: false,\n      error: new Error('No files provided')\n    }\n  }\n\n  for (const filePath of files) {\n    try {\n      await access(filePath)\n    } catch (error) {\n      return {\n        valid: false,\n        error: error as Error\n      }\n    }\n  }\n\n  return {\n    valid: true,\n    files\n  }\n}\n","import { isNullOrUndefined } from '@src/utils/nullable.ts'\n\nexport const getURLToCrawl = (filePaths: string | string[]) => {\n  if (Array.isArray(filePaths)) {\n    const filePath = filePaths.find(x => !isNullOrUndefined(x))\n\n    if (!isNullOrUndefined(filePath)) {\n      return new URL(filePath).toString()\n    }\n  }\n\n  return new URL(filePaths).toString()\n}\n","export const toUnderscore = (x = '') => x.trim().split(/\\.?(?=[A-Z])/).join('_').toLowerCase()\n\nexport const hyphenToCamel = (x: string) => x.replace(/-+(.)/g, (_, c) => c.toUpperCase())\n\nexport const underscoreToCamel = (x: string) => x.replace(/_+(.)/g, (_, c) => c.toUpperCase())\n\nexport const camelToTitle = (c: string) => c\n// Insert space before capital letters, but not if they're part of an acronym\n  .replace(/([^A-Z])([A-Z])/g, '$1$2')\n// Capitalize first letter\n  .replace(/^./, match => match.toUpperCase())\n// Remove any extra spaces\n  .replace(/\\s+/g, '')\n","import { underscoreToCamel } from './casing.ts'\nimport { isValidObject } from './nullable.ts'\n\nexport const transformToCamel = <T>(item: unknown): T => {\n  if (item instanceof Date || item instanceof RegExp || item instanceof URL) {\n    return item as T\n  }\n\n  // If the item is a Function, return it as-is\n  if (typeof item === 'function') {\n    return item as T\n  }\n\n  // If the item is null or undefined, return it as-is\n  if (item === null || item === undefined) {\n    return item as T\n  }\n\n  // If the item is an array, recursively transform each element\n  if (Array.isArray(item)) {\n    return item.map(el => transformToCamel(el)) as unknown as T\n  }\n\n  // If the item is a Map or Set, do not modify its structure\n  if (item instanceof Map) {\n    const transformedMap = new Map()\n    item.forEach((value, key) => {\n      transformedMap.set(transformToCamel(key), transformToCamel(value))\n    })\n\n    return transformedMap as unknown as T\n  }\n\n  if (item instanceof Set) {\n    const transformedSet = new Set()\n    item.forEach((value) => {\n      transformedSet.add(transformToCamel(value))\n    })\n\n    return transformedSet as unknown as T\n  }\n\n  // If the item is a plain object, recursively transform its keys to camelCase\n  if (isValidObject(item)) {\n    return Object.keys(item).reduce((acc: any, key: string) => { // eslint-disable-line @typescript-eslint/no-explicit-any\n      const camelKey = underscoreToCamel(key)\n      acc[camelKey] = transformToCamel((item as Record<string, unknown>)[key])\n\n      return acc\n    }, {} as T)\n  }\n\n  // If it's a primitive type (string, number, boolean), return it as-is\n  return item as T\n}\n","import { wrappedFetch } from '@src/utils/fetcher.ts'\nimport { ANYPARSER_VERSION } from '@anyparser/core'\nimport { buildForm } from './form.ts'\nimport { validateAndParse } from './validator/index.ts'\nimport { transformToCamel } from '@src/utils/camel-case.ts'\n\nimport type { AnyparserOption, Result } from '@anyparser/core'\n\n/**\n * Main class for parsing items using the Anyparser API.\n */\nexport class Anyparser {\n  public options?: AnyparserOption\n\n  /**\n   * Initialize the parser with optional configuration.\n   * @param options - Configuration options for the parser\n   */\n  constructor (options?: AnyparserOption) {\n    this.options = options\n  }\n\n  /**\n   * Parse files using the Anyparser API.\n   * @param filePathsOrUrl - A single file path or list of file paths to parse, or a start URL for crawling\n   * @returns List of parsed file results if format is JSON, or raw text content if format is text/markdown\n   * @throws Error if the API request fails\n   */\n  async parse (filePathsOrUrl: string | string[]): Promise<Result> {\n    const parsed = await validateAndParse(filePathsOrUrl, this.options)\n    const { apiUrl, apiKey } = parsed\n\n    const formData = buildForm(parsed)\n\n    const fetchOptions = {\n      method: 'POST',\n      body: formData,\n      headers: {\n        ...(apiKey ?\n            {\n              Authorization: `Bearer ${apiKey}`,\n              'User-Agent': `@anyparser/core@${ANYPARSER_VERSION}` // eslint-disable-line @typescript-eslint/naming-convention\n            } :\n            {})\n      }\n    }\n\n    const url = new URL('/parse/v1', apiUrl)\n\n    const response = await wrappedFetch(url, fetchOptions)\n\n    switch (parsed.format) {\n      case 'json':\n        return transformToCamel<Result>(await response.json())\n      case 'markdown':\n      case 'html':\n        return await response.text()\n      default:\n        throw new Error(`Unsupported format: ${parsed.format}`)\n    }\n  }\n}\n"],"mappings":"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","names":[]}