import{open}from'node:fs/promises';import{validateText,importLines,LIMITS}from'./engine.mjs';
async function readBounded(file){const handle=await open(file,'r');try{const info=await handle.stat();if(!info.isFile())throw Error('Ожидается обычный файл JSON или NDJSON.');if(info.size>LIMITS.bytes)throw Error('Максимальный размер файла — 64 КиБ.');const buffer=Buffer.alloc(LIMITS.bytes+1);let used=0;while(used<buffer.length){const {bytesRead}=await handle.read(buffer,used,buffer.length-used,null);if(!bytesRead)break;used+=bytesRead;}if(used>LIMITS.bytes)throw Error('Максимальный размер файла — 64 КиБ.');return buffer.subarray(0,used).toString('utf8');}finally{await handle.close();}}
const[key,file]=process.argv.slice(2);if(!key||!file){console.error('node src/cli.mjs customer examples/customer.json | import examples/import.ndjson');process.exitCode=2;}else{try{const text=await readBounded(file),result=key==='import'?importLines(text):validateText(key,text);console.log(JSON.stringify(result,null,2));process.exitCode=(key==='import'?result.rejected===0:result.valid)?0:1;}catch(e){console.error(e.message);process.exitCode=2;}}
