UNPKG

@struktoai/mirage-core

Version:

A Unified Virtual Filesystem For AI Agents

38 lines • 1.53 kB
const TOKEN = /%\{([^}]*)\}|%%|\\([nrt\\])/g; const ESCAPES = { n: '\n', r: '\r', t: '\t', '\\': '\\' }; /** Format observable transfer facts; unavailable variables diagnose instead of inventing values. */ export function renderWriteOut(template, values) { const streams = [[], []]; let stream = 0; let cursor = 0; for (const match of template.matchAll(TOKEN)) { streams[stream].push(template.slice(cursor, match.index)); const name = match[1]; if (name === 'stdout' || name === 'stderr') stream = name === 'stderr' ? 1 : 0; else if (name === 'onerror') { if (values.exitcode === '0') return [ new TextEncoder().encode(streams[0].join('')), new TextEncoder().encode(streams[1].join('')), ]; } else if (name !== undefined) { if (Object.hasOwn(values, name)) streams[stream].push(values[name] ?? ''); else streams[1].push(`curl: unknown --write-out variable: '${name}'\n`); } else if (match[2] !== undefined) streams[stream].push(ESCAPES[match[2]] ?? ''); else streams[stream].push('%'); cursor = match.index + match[0].length; } streams[stream].push(template.slice(cursor)); return [ new TextEncoder().encode(streams[0].join('')), new TextEncoder().encode(streams[1].join('')), ]; } //# sourceMappingURL=curl_write_out.js.map