{"version":3,"sources":["../interpreter/utils/json-to-xml.ts","../interpreter/utils/pipeline-input.ts"],"names":["toScreamingSnakeCase","str","replace","toUpperCase","escapeXml","jsonToXml","data","rootTag","lines","convertValue","value","tagName","indent","undefined","tag","Array","isArray","push","forEach","item","index","entries","Object","length","key","val","content","String","join","parseCSV","text","trim","split","map","line","result","current","inQuotes","i","char","endsWith","parseXML","parsed","JSON","parse","createPipelineInput","format","process","env","MLLD_DEBUG","console","log","textType","textLength","textPreview","substring","input","type","_parsed","toLowerCase","defineProperty","get","Error","e","error","MlldInterpreterError","message","enumerable","configurable","trace","isPipelineInput"],"mappings":"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","file":"chunk-4IHDDJBM.mjs","sourcesContent":["/**\n * Convert JSON data to SCREAMING_SNAKE_CASE XML format\n * Compatible with llmxml's style\n */\n\n/**\n * Convert a string to SCREAMING_SNAKE_CASE\n */\nfunction toScreamingSnakeCase(str: string): string {\n  return str\n    .replace(/([a-z])([A-Z])/g, '$1_$2') // camelCase to snake_case\n    .replace(/[\\s\\-\\.]+/g, '_') // spaces, hyphens, dots to underscores\n    .replace(/[^A-Z0-9_]/gi, '') // remove non-alphanumeric except underscores\n    .toUpperCase()\n    .replace(/^_+|_+$/g, ''); // trim underscores\n}\n\n/**\n * Escape XML special characters\n */\nfunction escapeXml(str: string): string {\n  return str\n    .replace(/&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&apos;');\n}\n\n/**\n * Convert JSON to XML string\n */\nexport function jsonToXml(data: unknown, rootTag?: string): string {\n  const lines: string[] = [];\n  \n  function convertValue(value: unknown, tagName: string, indent: string = ''): void {\n    if (value === null || value === undefined) {\n      // Skip null/undefined values\n      return;\n    }\n    \n    const tag = toScreamingSnakeCase(tagName);\n    \n    if (Array.isArray(value)) {\n      // For arrays, create a container and items\n      lines.push(`${indent}<${tag}>`);\n      value.forEach((item, index) => {\n        convertValue(item, `item`, indent + '  ');\n      });\n      lines.push(`${indent}</${tag}>`);\n    } else if (typeof value === 'object' && value !== null) {\n      // For objects, create nested tags\n      const entries = Object.entries(value);\n      if (entries.length === 0) {\n        // Empty object\n        lines.push(`${indent}<${tag} />`);\n      } else if (rootTag && indent === '') {\n        // Root level object without wrapper\n        entries.forEach(([key, val]) => {\n          convertValue(val, key, indent);\n        });\n      } else {\n        // Nested object with wrapper\n        lines.push(`${indent}<${tag}>`);\n        entries.forEach(([key, val]) => {\n          convertValue(val, key, indent + '  ');\n        });\n        lines.push(`${indent}</${tag}>`);\n      }\n    } else {\n      // Primitive values\n      const content = escapeXml(String(value));\n      lines.push(`${indent}<${tag}>${content}</${tag}>`);\n    }\n  }\n  \n  // Handle root level\n  if (Array.isArray(data)) {\n    convertValue(data, rootTag || 'ROOT');\n  } else if (typeof data === 'object' && data !== null) {\n    // For root objects, output properties directly without wrapper\n    // This matches the expected test output: <NAME>Alice</NAME><AGE>30</AGE>\n    Object.entries(data).forEach(([key, value]) => {\n      convertValue(value, key, '');\n    });\n  } else {\n    // Primitive at root\n    return `<DOCUMENT>${escapeXml(String(data))}</DOCUMENT>`;\n  }\n  \n  return lines.join('\\n');\n}","import { MlldInterpreterError } from '@core/errors';\nimport { llmxmlInstance } from './llmxml-instance';\nimport { jsonToXml } from './json-to-xml';\n\n/**\n * Pipeline input interface that provides both raw text and parsed data\n */\nexport interface PipelineInput {\n  text: string;\n  type: string;\n  // Lazy-loaded parsed data based on format\n  readonly data?: any;\n  readonly csv?: any[][];\n  readonly xml?: any;\n}\n\n/**\n * Parse CSV text into a 2D array\n * Simple implementation - can be enhanced later\n */\nfunction parseCSV(text: string): any[][] {\n  const lines = text.trim().split('\\n');\n  return lines.map(line => {\n    // Simple CSV parsing - handle quoted values\n    const result: string[] = [];\n    let current = '';\n    let inQuotes = false;\n    \n    for (let i = 0; i < line.length; i++) {\n      const char = line[i];\n      \n      if (char === '\"') {\n        if (inQuotes && line[i + 1] === '\"') {\n          // Escaped quote\n          current += '\"';\n          i++;\n        } else {\n          // Toggle quote mode\n          inQuotes = !inQuotes;\n        }\n      } else if (char === ',' && !inQuotes) {\n        // End of field\n        result.push(current);\n        current = '';\n      } else {\n        current += char;\n      }\n    }\n    \n    // Add last field\n    if (current || line.endsWith(',')) {\n      result.push(current);\n    }\n    \n    return result;\n  });\n}\n\n/**\n * Parse XML text using our internal XML handling\n * This is a simplified synchronous version for pipeline compatibility\n * TODO: Add support for async parsing in the future\n */\nfunction parseXML(text: string): any {\n  try {\n    // Try to parse as JSON first\n    const parsed = JSON.parse(text);\n    // Use our JSON to XML converter for structured data\n    return jsonToXml(parsed);\n  } catch {\n    // For non-JSON text, we can't use llmxml synchronously\n    // So we'll just wrap in DOCUMENT tags for now\n    // TODO: Support async XML parsing in pipelines\n    return `<DOCUMENT>\\n${text}\\n</DOCUMENT>`;\n  }\n}\n\n/**\n * Create a pipeline input wrapper with lazy parsing\n */\nexport function createPipelineInput(text: string, format: string = 'json'): PipelineInput {\n  if (process.env.MLLD_DEBUG === 'true') {\n    console.log('createPipelineInput called with:', {\n      textType: typeof text,\n      textLength: typeof text === 'string' ? text.length : 'N/A',\n      format: format,\n      textPreview: typeof text === 'string' ? text.substring(0, 50) : String(text)\n    });\n  }\n  \n  const input: any = {\n    text: String(text), // Ensure it's a string\n    type: format,\n    _parsed: undefined\n  };\n\n  // Define lazy getters based on format\n  switch (format.toLowerCase()) {\n    case 'json':\n    default:\n      Object.defineProperty(input, 'data', {\n        get() {\n          if (this._parsed === undefined) {\n            try {\n              if (process.env.MLLD_DEBUG === 'true') {\n                console.log('JSON getter called');\n                console.log('this:', this);\n                console.log('this.text exists:', 'text' in this);\n                console.log('this.text value:', this.text);\n                console.log('Text type:', typeof this.text);\n                if (this.text) {\n                  console.log('Text length:', this.text.length);\n                  console.log('First 200 chars:', this.text.substring(0, 200));\n                }\n              }\n              \n              if (!this.text) {\n                throw new Error('PipelineInput.text is undefined or null');\n              }\n              \n              this._parsed = JSON.parse(this.text);\n            } catch (e: any) {\n              if (process.env.MLLD_DEBUG === 'true') {\n                console.error('Failed to parse JSON. Text was:', this.text);\n                console.error('First 100 chars:', this.text.substring(0, 100));\n              }\n              throw new MlldInterpreterError(`Failed to parse JSON: ${e.message}`);\n            }\n          }\n          return this._parsed;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      break;\n\n    case 'csv':\n      Object.defineProperty(input, 'csv', {\n        get() {\n          if (this._parsed === undefined) {\n            try {\n              this._parsed = parseCSV(this.text);\n            } catch (e: any) {\n              throw new MlldInterpreterError(`Failed to parse CSV: ${e.message}`);\n            }\n          }\n          return this._parsed;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      break;\n\n    case 'xml':\n      Object.defineProperty(input, 'xml', {\n        get() {\n          if (this._parsed === undefined) {\n            try {\n              this._parsed = parseXML(this.text);\n            } catch (e: any) {\n              throw new MlldInterpreterError(`Failed to parse XML: ${e.message}`);\n            }\n          }\n          return this._parsed;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      break;\n\n    case 'text':\n      // No special parsing for text format\n      // The data property just returns the raw text\n      Object.defineProperty(input, 'data', {\n        get() {\n          return this.text;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      break;\n  }\n\n  // Add toString() for backwards compatibility\n  Object.defineProperty(input, 'toString', {\n    value: function() {\n      if (process.env.MLLD_DEBUG === 'true') {\n        console.log('PipelineInput.toString() called - returning text property');\n        console.trace('toString call stack');\n      }\n      return this.text;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  return input;\n}\n\n/**\n * Check if a value is already a PipelineInput\n */\nexport function isPipelineInput(value: any): value is PipelineInput {\n  return value && \n         typeof value === 'object' && \n         'text' in value && \n         'type' in value &&\n         typeof value.text === 'string' &&\n         typeof value.type === 'string';\n}"]}