@sanity/migrate
Version:
Tooling for running data migrations on Sanity.io projects
20 lines (18 loc) • 500 B
text/typescript
export async function* split(
it: AsyncIterableIterator<string>,
delimiter: string,
): AsyncIterableIterator<string> {
let buf = ''
for await (const chunk of it) {
buf += chunk
if (buf.includes(delimiter)) {
const lastIndex = buf.lastIndexOf(delimiter)
const parts = buf.slice(0, Math.max(0, lastIndex)).split(delimiter)
for (const part of parts) {
yield part
}
buf = buf.slice(Math.max(0, lastIndex + delimiter.length))
}
}
yield buf
}