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",
]);
```
近期下载者:
相关文件:
收藏者: