@jynnantonnyx/nest-csv-parser
TypeScript icon, indicating that this package has built-in type declarations

2.1.0 • Public • Published

CSV Parser for NestJS

Nest framework library.

Wrapper for csv-parser library

This project is a fork of the original nest-csv-parser.

Additions in this version:

  • The ability to inspect the headers that were parsed (via the ParsedData.headers field)

Installation

$ npm install @jynnantonnyx/nest-csv-parser
# or if you using Yarn
$ yarn add @jynnantonnyx/nest-csv-parser

Add @jynnantonnyx/nest-csv-parser as a dependency.

import { Module } from '@nestjs/common'
import { CsvModule } from '@jynnantonnyx/nest-csv-parser'
// ...imports of your app dependecies

@Module({
  imports: [
    CsvModule, // <-- add into imports
    ...
  ],
  controllers: [ ... ],
  providers: [ ... ]
})
export class AppModule {}

Usage

Parser will create instance of entity for each line in CSV stream.

// app.parser.ts
import { Injectable } from '@nestjs/common'
import { CsvParser } from '@jynnantonnyx/nest-csv-parser'

class Entity {
  foo: string
  bar: string
}

@Injectable()
export class AppService {
  constructor(
    private readonly csvParser: CsvParser
  ) {}

  async parse() {
    // Create stream from file (or get it from S3)
    const stream = fs.createReadStream(__dirname + '/some.csv');
    const data: ParsedData<Entitiy> data = await csvParser.parse(stream, Entity);
    const entities: Entity[] = data.list;

    // Inspect headers
    const headers: string[] = data.headers;

    return entities;
  }
}

API

csvParser.parse(stream, Entity, count, offset, csvConfig) has 5 parameters.

stream

required

First parameter has to be the stream of the CSV file. NodeJS Reference

Entity

required

Has to be object from which will parser create instance.

count (optional)

default: null

How many lines you want to parse.

offset (optional)

default: null

Offset is similar to SQL databases. Skips the N lines from the beginning of the file.

csvConfig (optional)

default

{ strict: true, separator: ';' }

Just a configuration object for csv-parser library options you can find here

Development

# clone repository
$ git clone git@github.com:jynnantonnyx/nest-csv-parser.git
$ cd nest-csv-parser

# install dependencies
$ npm install

# watch mode
$ npm test:watch

Test

# unit tests
$ npm test

Readme

Keywords

Package Sidebar

Install

npm i @jynnantonnyx/nest-csv-parser

Weekly Downloads

6

Version

2.1.0

License

MIT

Unpacked Size

81.1 kB

Total Files

29

Last publish

Collaborators

  • jynnantonnyx