csv-async-generator

所属分类:其他
开发工具:TypeScript
文件大小:0KB
下载次数:0
上传日期:2023-10-23 08:53:40
上 传 者sh-1993
说明:  csv异步发生器,,
(csv async generator,,)

文件列表:
.prettierrc (0, 2023-10-23)
.yarn/ (0, 2023-10-23)
.yarn/releases/ (0, 2023-10-23)
.yarn/releases/yarn-3.6.4.cjs (2231402, 2023-10-23)
.yarnrc.yml (66, 2023-10-23)
package.json (631, 2023-10-23)
src/ (0, 2023-10-23)
src/__tests__/ (0, 2023-10-23)
src/__tests__/serialize-async-generator.test.ts (1412, 2023-10-23)
src/__tests__/serialize.test.ts (1550, 2023-10-23)
src/index.ts (29, 2023-10-23)
src/serialize.ts (2142, 2023-10-23)
tsconfig.json (419, 2023-10-23)
vite.config.ts (302, 2023-10-23)
yarn.lock (83062, 2023-10-23)

# CSV Async Generator A tiny CSV library to serialize and deserialize in a performant way. You can take a look at the kind of memory problems it can solve at [serialize-async-generator.test.ts](https://github.com/SergioMorchon/csv-async-generator/blob/master/src/__tests__/serialize-async-generator.test.ts). ## Usage ### Basic ```typescript expect( serialize( [ { propA: "A1", propB: "B1" }, { propA: "A2", propB: "B2" }, ], [ { header: "A", cell: (item) => item.propA }, { header: "B", cell: (item) => item.propB }, ], ), ).toBe("A;B\r\n" + "A1;B1\r\n" + "A2;B2\r\n"); ``` ### Advanced ```typescript const getPositiveNumbers = async function* () { let number = 1; while (true) { yield Promise.resolve(number); number++; } }; const limit = async function* (items: AsyncIterable, max: number) { let count = 0; for await (const item of items) { if (count >= max) { return; } yield item; count++; } }; const filter = async function* ( items: AsyncIterable, predicate: (item: Item) => any, ) { for await (const item of items) { if (predicate(item)) { yield item; } } }; const map = async function* ( items: AsyncIterable, mapper: (item: Input) => Output, ) { for await (const item of items) { yield mapper(item); } }; const getFirstFiveEvenPositiveNumbersAsItems = () => map( limit( filter(getPositiveNumbers(), (it) => it % 2), 5, ), (it) => ({ value: String(it) }), ); const lines: Array = []; for await (const line of serializeAsyncGenerator( getFirstFiveEvenPositiveNumbersAsItems(), [{ header: "Value", cell: (item) => item.value }], )) { lines.push(line); } expect(lines).toStrictEqual([ "Value\r\n", "1\r\n", "3\r\n", "5\r\n", "7\r\n", "9\r\n", ]); ```

近期下载者

相关文件


收藏者