{"version":3,"file":"CommandStream.cjs","sources":["../../../../../packages/engine-http/src/transfer/CommandStream.ts"],"sourcesContent":["import { Buffer } from 'node:buffer'\nimport * as Typesafe from '@contember/typesafe'\nimport { Command } from './Command'\nimport { ImportError } from './ImportExecutor'\n\nexport async function* toBuffer(lines: AsyncIterable<any>, bufferSize: number = 16 * 1024): AsyncIterable<Buffer> {\n\tlet chunks = []\n\tlet chunksLength = 0\n\n\tfor await (const line of lines) {\n\t\tconst chunk = Buffer.from(JSON.stringify(line) + '\\n')\n\t\tchunks.push(chunk)\n\t\tchunksLength += chunk.length\n\n\t\tif (chunksLength >= bufferSize) {\n\t\t\tyield Buffer.concat(chunks)\n\t\t\tchunks = []\n\t\t\tchunksLength = 0\n\t\t}\n\t}\n\n\tif (chunksLength > 0) {\n\t\tyield Buffer.concat(chunks)\n\t}\n}\n\nexport async function* fromBuffer(stream: AsyncIterable<Buffer>): AsyncIterable<Command> {\n\tyield* readCommands(readLines(stream))\n}\n\nasync function* readCommands(lines: AsyncIterable<string>) {\n\tfor await (let line of lines) {\n\t\ttry {\n\t\t\tyield Command(JSON.parse(line))\n\n\t\t} catch (e) {\n\t\t\tif (e instanceof SyntaxError) {\n\t\t\t\tthrow new ImportError(`Line ${line} is not valid JSON`)\n\n\t\t\t} else if (e instanceof Typesafe.ParseError) {\n\t\t\t\tthrow new ImportError(`Line ${line} is not valid command`)\n\n\t\t\t} else {\n\t\t\t\tthrow e\n\t\t\t}\n\t\t}\n\t}\n}\n\nasync function* readLines(stream: AsyncIterable<Buffer>) {\n\tlet chunks = []\n\n\tfor await (let chunk of stream) {\n\t\twhile (true) {\n\t\t\tconst eolIndex = chunk.indexOf('\\n')\n\n\t\t\tif (eolIndex < 0) {\n\t\t\t\tchunks.push(chunk)\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tchunks.push(chunk.slice(0, eolIndex))\n\t\t\tchunk = chunk.slice(eolIndex + 1)\n\t\t\tyield Buffer.concat(chunks).toString('utf8')\n\t\t\tchunks = []\n\t\t}\n\t}\n\n\tif (Buffer.concat(chunks).length > 0) {\n\t\tthrow new ImportError(`Unexpected stream end`)\n\t}\n}\n"],"names":["Buffer","Command","ImportError","Typesafe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,gBAAuB,SAAS,OAA2B,aAAqB,KAAK,MAA6B;AACjH,MAAI,SAAS,CAAC;AACd,MAAI,eAAe;AAEnB,mBAAiB,QAAQ,OAAO;AAC/B,UAAM,QAAQA,YAAAA,OAAO,KAAK,KAAK,UAAU,IAAI,IAAI,IAAI;AACrD,WAAO,KAAK,KAAK;AACjB,oBAAgB,MAAM;AAEtB,QAAI,gBAAgB,YAAY;AACzB,YAAAA,YAAA,OAAO,OAAO,MAAM;AAC1B,eAAS,CAAC;AACK,qBAAA;AAAA,IAAA;AAAA,EAChB;AAGD,MAAI,eAAe,GAAG;AACf,UAAAA,YAAA,OAAO,OAAO,MAAM;AAAA,EAAA;AAE5B;AAEA,gBAAuB,WAAW,QAAuD;AACjF,SAAA,aAAa,UAAU,MAAM,CAAC;AACtC;AAEA,gBAAgB,aAAa,OAA8B;AAC1D,iBAAe,QAAQ,OAAO;AACzB,QAAA;AACH,YAAMC,gBAAQ,KAAK,MAAM,IAAI,CAAC;AAAA,aAEtB,GAAG;AACX,UAAI,aAAa,aAAa;AAC7B,cAAM,IAAIC,eAAAA,YAAY,QAAQ,IAAI,oBAAoB;AAAA,MAAA,WAE5C,aAAaC,oBAAS,YAAY;AAC5C,cAAM,IAAID,eAAAA,YAAY,QAAQ,IAAI,uBAAuB;AAAA,MAAA,OAEnD;AACA,cAAA;AAAA,MAAA;AAAA,IACP;AAAA,EACD;AAEF;AAEA,gBAAgB,UAAU,QAA+B;AACxD,MAAI,SAAS,CAAC;AAEd,iBAAe,SAAS,QAAQ;AAC/B,WAAO,MAAM;AACN,YAAA,WAAW,MAAM,QAAQ,IAAI;AAEnC,UAAI,WAAW,GAAG;AACjB,eAAO,KAAK,KAAK;AACjB;AAAA,MAAA;AAGD,aAAO,KAAK,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC5B,cAAA,MAAM,MAAM,WAAW,CAAC;AAChC,YAAMF,YAAO,OAAA,OAAO,MAAM,EAAE,SAAS,MAAM;AAC3C,eAAS,CAAC;AAAA,IAAA;AAAA,EACX;AAGD,MAAIA,YAAO,OAAA,OAAO,MAAM,EAAE,SAAS,GAAG;AAC/B,UAAA,IAAIE,eAAAA,YAAY,uBAAuB;AAAA,EAAA;AAE/C;;;"}