UNPKG

asyncerator

Version:

Provide supporting types for AsyncIterable/AsyncIterableIterators, promisified stream.pipeline implementation, and Array-like utility operators, sources and sinks.

40 lines (39 loc) 2.49 kB
// src/operator/split.ts function split_default(separator, limit = Number.POSITIVE_INFINITY) { return async function* (iterator) { const actualLimit = limit <= -1 ? Number.POSITIVE_INFINITY : limit <= 0 ? 0 : Math.floor(limit); if (actualLimit === 0) { return; } let previous = ""; let count = 0; let receivedChunks = false; for await (const chunk of iterator) { if ( // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition chunk === void 0 || // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition chunk === null || typeof chunk.toString !== "function" ) { throw new Error(`${JSON.stringify(chunk)} not convertible to a string`); } receivedChunks = true; previous += chunk.toString(); let index; while (previous.length > 0 && (index = separator === "" ? 1 : previous.indexOf(separator)) >= 0) { const line = previous.slice(0, index); yield line; if (++count >= actualLimit) { return; } previous = previous.slice(index + (separator === "" ? 0 : 1)); } } if (separator !== "" && receivedChunks || previous.length > 0 && count < actualLimit) { yield previous; } }; } export { split_default as default }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29wZXJhdG9yL3NwbGl0LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQW9CZSxTQUFSLGNBQ0wsV0FDQSxRQUFnQixPQUFPLG1CQUNFO0FBQ3pCLFNBQU8saUJBQWlCLFVBQThCO0FBR3BELFVBQU0sY0FBYyxTQUFTLEtBQUssT0FBTyxvQkFBb0IsU0FBUyxJQUFJLElBQUksS0FBSyxNQUFNLEtBQUs7QUFDOUYsUUFBSSxnQkFBZ0IsR0FBRztBQUNyQjtBQUFBLElBQ0Y7QUFFQSxRQUFJLFdBQVc7QUFDZixRQUFJLFFBQVE7QUFDWixRQUFJLGlCQUFpQjtBQUVyQixxQkFBaUIsU0FBUyxVQUFVO0FBQ2xDO0FBQUE7QUFBQSxRQUVFLFVBQVU7QUFBQSxRQUVWLFVBQVUsUUFDVixPQUFRLE1BQXFDLGFBQWE7QUFBQSxRQUMxRDtBQUNBLGNBQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxVQUFVLEtBQUssQ0FBQyw4QkFBOEI7QUFBQSxNQUN4RTtBQUNBLHVCQUFpQjtBQUNqQixrQkFBWSxNQUFNLFNBQVM7QUFDM0IsVUFBSTtBQUNKLGFBQU8sU0FBUyxTQUFTLE1BQU0sUUFBUSxjQUFjLEtBQUssSUFBSSxTQUFTLFFBQVEsU0FBUyxNQUFNLEdBQUc7QUFDL0YsY0FBTSxPQUFPLFNBQVMsTUFBTSxHQUFHLEtBQUs7QUFDcEMsY0FBTTtBQUNOLFlBQUksRUFBRSxTQUFTLGFBQWE7QUFDMUI7QUFBQSxRQUNGO0FBQ0EsbUJBQVcsU0FBUyxNQUFNLFNBQVMsY0FBYyxLQUFLLElBQUksRUFBRTtBQUFBLE1BQzlEO0FBQUEsSUFDRjtBQUVBLFFBQUssY0FBYyxNQUFNLGtCQUFvQixTQUFTLFNBQVMsS0FBSyxRQUFRLGFBQWM7QUFDeEYsWUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==