UNPKG

mlld

Version:

mlld: a modular prompt scripting language

1 lines 17.7 kB
{"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}"]}