csv-parse

  • Version 6.2.1
  • Published
  • 1.45 MB
  • No dependencies
  • MIT license

Install

npm i csv-parse
yarn add csv-parse
pnpm add csv-parse

Overview

CSV parsing implementing the Node.js `stream.Transform` API

Index

Functions

function normalize_options

normalize_options: (opts: Options) => OptionsNormalized;

    function parse

    parse: {
    <T = unknown, U = T>(
    input: string | Buffer | Uint8Array,
    options: OptionsWithColumns<T, U>,
    callback?: Callback<T>
    ): Parser;
    (
    input: any,
    options: Options<string[], string[]>,
    callback?: Callback<string[]>
    ): Parser;
    <T = unknown, U = T>(
    options: OptionsWithColumns<T, U>,
    callback?: Callback<T>
    ): Parser;
    (options: Options<string[], string[]>, callback?: Callback<string[]>): Parser;
    (input: any, callback?: Callback<string[]>): Parser;
    (callback?: Callback<string[]>): Parser;
    };

      Classes

      class CsvError

      class CsvError extends Error {}

        constructor

        constructor(
        code: CsvErrorCode,
        message: string | string[],
        options?: OptionsNormalized<string[], string[]>,
        ...contexts: unknown[]
        );

          property code

          readonly code: CsvErrorCode;

            class Parser

            class Parser extends stream.Transform {}

              constructor

              constructor(options: Options<string[], string[]>);

                property info

                readonly info: Info;

                  property options

                  readonly options: OptionsNormalized<string[], string[]>;

                    Interfaces

                    interface CastingContext

                    interface CastingContext extends InfoField {}
                    • Deprecated

                      Use the InfoField interface instead, the interface will disappear in future versions.

                    interface Info

                    interface Info {}

                      property bytes

                      readonly bytes: number;
                      • The number of processed bytes.

                      property bytes_records

                      readonly bytes_records: number;
                      • The number of processed bytes until the last successfully parsed and emitted records.

                      property comment_lines

                      readonly comment_lines: number;
                      • The number of lines being fully commented.

                      property empty_lines

                      readonly empty_lines: number;
                      • The number of processed empty lines.

                      property invalid_field_length

                      readonly invalid_field_length: number;
                      • The number of non uniform records when relax_column_count is true.

                      property lines

                      readonly lines: number;
                      • The number of lines encountered in the source dataset, start at 1 for the first line.

                      property records

                      readonly records: number;
                      • The number of processed records.

                      interface InfoCallback

                      interface InfoCallback extends Info {}

                        property columns

                        readonly columns: boolean | { name: string }[] | { disabled: true }[];
                        • Normalized version of options.columns when options.columns is true, boolean otherwise.

                        interface InfoDataSet

                        interface InfoDataSet extends Info {}

                          property column

                          readonly column: number | string;

                            interface InfoField

                            interface InfoField extends InfoRecord {}

                              property quoting

                              readonly quoting: boolean;

                                interface InfoRecord

                                interface InfoRecord extends InfoDataSet {}

                                  property error

                                  readonly error: CsvError;

                                    property header

                                    readonly header: boolean;

                                      property index

                                      readonly index: number;

                                        property raw

                                        readonly raw: string | undefined;

                                          interface Options

                                          interface Options<T = string[], U = T> {}

                                            property auto_parse

                                            auto_parse?: boolean | CastingFunction;
                                            • If true, the parser will attempt to convert read data types to native types.

                                              Deprecated

                                              Use cast

                                            property auto_parse_date

                                            auto_parse_date?: boolean | CastingDateFunction;
                                            • If true, the parser will attempt to convert read data types to dates. It requires the "auto_parse" option.

                                              Deprecated

                                              Use cast_date

                                            property autoParse

                                            autoParse?: boolean | CastingFunction;

                                              property autoParseDate

                                              autoParseDate?: boolean | CastingDateFunction;

                                                property bom

                                                bom?: OptionsNormalized['bom'];
                                                • If true, detect and exclude the byte order mark (BOM) from the CSV input if present.

                                                property cast

                                                cast?: OptionsNormalized['cast'];
                                                • If true, the parser will attempt to convert input string to native types. If a function, receive the value as first argument, a context as second argument and return a new value. More information about the context properties is available below.

                                                property cast_date

                                                cast_date?: OptionsNormalized['cast_date'];
                                                • If true, the parser will attempt to convert input string to dates. If a function, receive the value as argument and return a new value. It requires the "auto_parse" option. Be careful, it relies on Date.parse.

                                                property castDate

                                                castDate?: OptionsNormalized['cast_date'];

                                                  property columns

                                                  columns?:
                                                  | OptionsNormalized['columns']
                                                  | ((
                                                  record: T
                                                  ) => ColumnOption<
                                                  T extends string[] ? string : T extends unknown ? string : keyof T
                                                  >[]);
                                                  • List of fields as an array, a user defined callback accepting the first line and returning the column names or true if autodiscovered in the first CSV line, default to null, affect the result data set in the sense that records will be objects instead of arrays.

                                                  property comment

                                                  comment?: OptionsNormalized['comment'] | boolean;
                                                  • Treat all the characters after this one as a comment, default to '' (disabled).

                                                  property comment_no_infix

                                                  comment_no_infix?: OptionsNormalized['comment_no_infix'] | null;
                                                  • Restrict the definition of comments to a full line. Comment characters defined in the middle of the line are not interpreted as such. The option require the activation of comments.

                                                  property delimiter

                                                  delimiter?: OptionsNormalized['delimiter'] | string | string[] | Buffer;
                                                  • Set the field delimiter. One character only, defaults to comma.

                                                  property encoding

                                                  encoding?: OptionsNormalized['encoding'] | boolean | undefined;
                                                  • Set the source and destination encoding, a value of null returns buffer instead of strings.

                                                  property escape

                                                  escape?: OptionsNormalized['escape'] | string | boolean;
                                                  • Set the escape character, one character only, defaults to double quotes.

                                                  property from

                                                  from?: OptionsNormalized['from'] | string;
                                                  • Start handling records from the requested number of records.

                                                  property from_line

                                                  from_line?: OptionsNormalized['from_line'] | null | string;
                                                  • Start handling records from the requested line number.

                                                  property fromLine

                                                  fromLine?: OptionsNormalized['from_line'] | null | string;

                                                    property group_columns_by_name

                                                    group_columns_by_name?: OptionsNormalized['group_columns_by_name'];
                                                    • Convert values into an array of values when columns are activated and when multiple columns of the same name are found.

                                                    property groupColumnsByName

                                                    groupColumnsByName?: OptionsNormalized['group_columns_by_name'];

                                                      property ignore_last_delimiters

                                                      ignore_last_delimiters?: OptionsNormalized['ignore_last_delimiters'];
                                                      • Don't interpret delimiters as such in the last field according to the number of fields calculated from the number of columns, the option require the presence of the column option when true.

                                                      property info

                                                      info?: OptionsNormalized['info'];
                                                      • Generate two properties info and record where info is a snapshot of the info object at the time the record was created and record is the parsed array or object.

                                                      property ltrim

                                                      ltrim?: OptionsNormalized['ltrim'] | null;
                                                      • If true, ignore whitespace immediately following the delimiter (i.e. left-trim all fields), defaults to false. Does not remove whitespace in a quoted field.

                                                      property max_record_size

                                                      max_record_size?: OptionsNormalized['max_record_size'] | null | string;
                                                      • Maximum number of characters to be contained in the field and line buffers before an exception is raised, used to guard against a wrong delimiter or record_delimiter, default to 128000 characters.

                                                      property maxRecordSize

                                                      maxRecordSize?: OptionsNormalized['max_record_size'];

                                                        property objname

                                                        objname?: OptionsNormalized['objname'] | Buffer | null;
                                                        • Name of header-record title to name objects by.

                                                        property on_record

                                                        on_record?: (record: U, context: InfoRecord) => T | null | undefined | U;
                                                        • Alter and filter records by executing a user defined function.

                                                        property on_skip

                                                        on_skip?: OptionsNormalized['on_skip'];
                                                        • Function called when an error occurred if the skip_records_with_error option is activated.

                                                        property onRecord

                                                        onRecord?: (record: U, context: InfoRecord) => T | null | undefined | U;

                                                          property onSkip

                                                          onSkip?: OptionsNormalized['on_skip'];

                                                            property quote

                                                            quote?: OptionsNormalized['quote'] | string | boolean;
                                                            • Optional character surrounding a field, one character only, defaults to double quotes.

                                                            property raw

                                                            raw?: OptionsNormalized['raw'] | null;
                                                            • Generate two properties raw and row where raw is the original CSV row content and row is the parsed array or object.

                                                            property record_delimiter

                                                            record_delimiter?:
                                                            | OptionsNormalized['record_delimiter']
                                                            | string
                                                            | Buffer
                                                            | null
                                                            | (string | null)[];
                                                            • One or multiple characters used to delimit record rows; defaults to auto discovery if not provided. Supported auto discovery method are Linux ("\n"), Apple ("\r") and Windows ("\r\n") row delimiters.

                                                            property recordDelimiter

                                                            recordDelimiter?:
                                                            | OptionsNormalized['record_delimiter']
                                                            | string
                                                            | Buffer
                                                            | null
                                                            | (string | null)[];

                                                              property relax_column_count

                                                              relax_column_count?: OptionsNormalized['relax_column_count'] | null;
                                                              • Discard inconsistent columns count, default to false.

                                                              property relax_column_count_less

                                                              relax_column_count_less?: OptionsNormalized['relax_column_count_less'] | null;
                                                              • Discard inconsistent columns count when the record contains less fields than expected, default to false.

                                                              property relax_column_count_more

                                                              relax_column_count_more?: OptionsNormalized['relax_column_count_more'] | null;
                                                              • Discard inconsistent columns count when the record contains more fields than expected, default to false.

                                                              property relax_quotes

                                                              relax_quotes?: OptionsNormalized['relax_quotes'] | null;
                                                              • Preserve quotes inside unquoted field.

                                                              property relaxColumnCount

                                                              relaxColumnCount?: OptionsNormalized['relax_column_count'] | null;

                                                                property relaxColumnCountLess

                                                                relaxColumnCountLess?: OptionsNormalized['relax_column_count_less'] | null;

                                                                  property relaxColumnCountMore

                                                                  relaxColumnCountMore?: OptionsNormalized['relax_column_count_more'] | null;

                                                                    property relaxQuotes

                                                                    relaxQuotes?: OptionsNormalized['relax_quotes'] | null;

                                                                      property rtrim

                                                                      rtrim?: OptionsNormalized['rtrim'] | null;
                                                                      • If true, ignore whitespace immediately preceding the delimiter (i.e. right-trim all fields), defaults to false. Does not remove whitespace in a quoted field.

                                                                      property skip_empty_lines

                                                                      skip_empty_lines?: OptionsNormalized['skip_empty_lines'] | null;
                                                                      • Dont generate empty values for empty lines. Defaults to false

                                                                      property skip_records_with_empty_values

                                                                      skip_records_with_empty_values?:
                                                                      | OptionsNormalized['skip_records_with_empty_values']
                                                                      | null;
                                                                      • Don't generate records for lines containing empty column values (column matching /\s*/), defaults to false.

                                                                      property skip_records_with_error

                                                                      skip_records_with_error?: OptionsNormalized['skip_records_with_error'] | null;
                                                                      • Skip a line with error found inside and directly go process the next line.

                                                                      property skipEmptyLines

                                                                      skipEmptyLines?: OptionsNormalized['skip_empty_lines'] | null;

                                                                        property skipRecordsWithEmptyValues

                                                                        skipRecordsWithEmptyValues?:
                                                                        | OptionsNormalized['skip_records_with_empty_values']
                                                                        | null;

                                                                          property skipRecordsWithError

                                                                          skipRecordsWithError?: OptionsNormalized['skip_records_with_error'] | null;

                                                                            property to

                                                                            to?: OptionsNormalized['to'] | null | string;
                                                                            • Stop handling records after the requested number of records.

                                                                            property to_line

                                                                            to_line?: OptionsNormalized['to_line'] | null | string;
                                                                            • Stop handling records after the requested line number.

                                                                            property toLine

                                                                            toLine?: OptionsNormalized['to_line'] | null | string;

                                                                              property trim

                                                                              trim?: OptionsNormalized['trim'] | null;
                                                                              • If true, ignore whitespace immediately around the delimiter, defaults to false. Does not remove whitespace in a quoted field.

                                                                              interface OptionsNormalized

                                                                              interface OptionsNormalized<T = string[], U = T> {}

                                                                                property auto_parse

                                                                                auto_parse?: boolean | CastingFunction;

                                                                                  property auto_parse_date

                                                                                  auto_parse_date?: boolean | CastingDateFunction;

                                                                                    property bom

                                                                                    bom?: boolean;
                                                                                    • If true, detect and exclude the byte order mark (BOM) from the CSV input if present.

                                                                                    property cast

                                                                                    cast?: boolean | CastingFunction;
                                                                                    • If true, the parser will attempt to convert input string to native types. If a function, receive the value as first argument, a context as second argument and return a new value. More information about the context properties is available below.

                                                                                    property cast_date

                                                                                    cast_date?: boolean | CastingDateFunction;
                                                                                    • If true, the parser will attempt to convert input string to dates. If a function, receive the value as argument and return a new value. It requires the "auto_parse" option. Be careful, it relies on Date.parse.

                                                                                    property cast_first_line_to_header

                                                                                    cast_first_line_to_header?: (
                                                                                    record: T
                                                                                    ) => ColumnOption<
                                                                                    T extends string[] ? string : T extends unknown ? string : keyof T
                                                                                    >[];
                                                                                    • Internal property string the function to

                                                                                    property columns

                                                                                    columns:
                                                                                    | boolean
                                                                                    | ColumnOption<
                                                                                    T extends string[] ? string : T extends unknown ? string : keyof T
                                                                                    >[];
                                                                                    • List of fields as an array, a user defined callback accepting the first line and returning the column names or true if autodiscovered in the first CSV line, default to null, affect the result data set in the sense that records will be objects instead of arrays.

                                                                                    property comment

                                                                                    comment: string | null;
                                                                                    • Treat all the characters after this one as a comment, default to '' (disabled).

                                                                                    property comment_no_infix

                                                                                    comment_no_infix: boolean;
                                                                                    • Restrict the definition of comments to a full line. Comment characters defined in the middle of the line are not interpreted as such. The option require the activation of comments.

                                                                                    property delimiter

                                                                                    delimiter: Buffer[];
                                                                                    • Set the field delimiter. One character only, defaults to comma.

                                                                                    property encoding

                                                                                    encoding: BufferEncoding | null;
                                                                                    • Set the source and destination encoding, a value of null returns buffer instead of strings.

                                                                                    property escape

                                                                                    escape: null | Buffer;
                                                                                    • Set the escape character, one character only, defaults to double quotes.

                                                                                    property from

                                                                                    from: number;
                                                                                    • Start handling records from the requested number of records.

                                                                                    property from_line

                                                                                    from_line: number;
                                                                                    • Start handling records from the requested line number.

                                                                                    property group_columns_by_name

                                                                                    group_columns_by_name: boolean;
                                                                                    • Convert values into an array of values when columns are activated and when multiple columns of the same name are found.

                                                                                    property ignore_last_delimiters

                                                                                    ignore_last_delimiters: boolean | number;
                                                                                    • Don't interpret delimiters as such in the last field according to the number of fields calculated from the number of columns, the option require the presence of the column option when true.

                                                                                    property info

                                                                                    info: boolean;
                                                                                    • Generate two properties info and record where info is a snapshot of the info object at the time the record was created and record is the parsed array or object.

                                                                                    property ltrim

                                                                                    ltrim: boolean;
                                                                                    • If true, ignore whitespace immediately following the delimiter (i.e. left-trim all fields), defaults to false. Does not remove whitespace in a quoted field.

                                                                                    property max_record_size

                                                                                    max_record_size: number;
                                                                                    • Maximum number of characters to be contained in the field and line buffers before an exception is raised, used to guard against a wrong delimiter or record_delimiter, default to 128000 characters.

                                                                                    property objname

                                                                                    objname: number | string | undefined;
                                                                                    • Name of header-record title to name objects by.

                                                                                    property on_record

                                                                                    on_record?: (record: U, context: InfoRecord) => T | null | undefined;
                                                                                    • Alter and filter records by executing a user defined function.

                                                                                    property on_skip

                                                                                    on_skip?: (err: CsvError | undefined, raw: string | undefined) => undefined;
                                                                                    • Function called when an error occurred if the skip_records_with_error option is activated.

                                                                                    property quote

                                                                                    quote?: Buffer | null;
                                                                                    • Optional character surrounding a field, one character only, defaults to double quotes.

                                                                                    property raw

                                                                                    raw: boolean;
                                                                                    • Generate two properties raw and row where raw is the original CSV row content and row is the parsed array or object.

                                                                                    property record_delimiter

                                                                                    record_delimiter: Buffer[];
                                                                                    • One or multiple characters used to delimit record rows; defaults to auto discovery if not provided. Supported auto discovery method are Linux ("\n"), Apple ("\r") and Windows ("\r\n") row delimiters.

                                                                                    property relax_column_count

                                                                                    relax_column_count: boolean;
                                                                                    • Discard inconsistent columns count, default to false.

                                                                                    property relax_column_count_less

                                                                                    relax_column_count_less: boolean;
                                                                                    • Discard inconsistent columns count when the record contains less fields than expected, default to false.

                                                                                    property relax_column_count_more

                                                                                    relax_column_count_more: boolean;
                                                                                    • Discard inconsistent columns count when the record contains more fields than expected, default to false.

                                                                                    property relax_quotes

                                                                                    relax_quotes: boolean;
                                                                                    • Preserve quotes inside unquoted field.

                                                                                    property rtrim

                                                                                    rtrim: boolean;
                                                                                    • If true, ignore whitespace immediately preceding the delimiter (i.e. right-trim all fields), defaults to false. Does not remove whitespace in a quoted field.

                                                                                    property skip_empty_lines

                                                                                    skip_empty_lines: boolean;
                                                                                    • Dont generate empty values for empty lines. Defaults to false

                                                                                    property skip_records_with_empty_values

                                                                                    skip_records_with_empty_values: boolean;
                                                                                    • Don't generate records for lines containing empty column values (column matching /\s*/), defaults to false.

                                                                                    property skip_records_with_error

                                                                                    skip_records_with_error: boolean;
                                                                                    • Skip a line with error found inside and directly go process the next line.

                                                                                    property to

                                                                                    to: number;
                                                                                    • Stop handling records after the requested number of records.

                                                                                    property to_line

                                                                                    to_line: number;
                                                                                    • Stop handling records after the requested line number.

                                                                                    property trim

                                                                                    trim: boolean;
                                                                                    • If true, ignore whitespace immediately around the delimiter, defaults to false. Does not remove whitespace in a quoted field.

                                                                                    Type Aliases

                                                                                    type Callback

                                                                                    type Callback<T = string[]> = (
                                                                                    err: CsvError | undefined,
                                                                                    records: T[],
                                                                                    info?: InfoCallback
                                                                                    ) => void;

                                                                                      type CastingDateFunction

                                                                                      type CastingDateFunction = (value: string, context: InfoField) => Date;

                                                                                        type CastingFunction

                                                                                        type CastingFunction = (value: string, context: InfoField) => unknown;

                                                                                          type ColumnOption

                                                                                          type ColumnOption<K = string> = K | undefined | null | false | { name: K };

                                                                                            type CsvErrorCode

                                                                                            type CsvErrorCode =
                                                                                            | 'CSV_INVALID_ARGUMENT'
                                                                                            | 'CSV_INVALID_CLOSING_QUOTE'
                                                                                            | 'CSV_INVALID_COLUMN_DEFINITION'
                                                                                            | 'CSV_INVALID_COLUMN_MAPPING'
                                                                                            | 'CSV_INVALID_OPTION_BOM'
                                                                                            | 'CSV_INVALID_OPTION_CAST'
                                                                                            | 'CSV_INVALID_OPTION_CAST_DATE'
                                                                                            | 'CSV_INVALID_OPTION_COLUMNS'
                                                                                            | 'CSV_INVALID_OPTION_COMMENT'
                                                                                            | 'CSV_INVALID_OPTION_DELIMITER'
                                                                                            | 'CSV_INVALID_OPTION_GROUP_COLUMNS_BY_NAME'
                                                                                            | 'CSV_INVALID_OPTION_ON_RECORD'
                                                                                            | 'CSV_MAX_RECORD_SIZE'
                                                                                            | 'CSV_NON_TRIMABLE_CHAR_AFTER_CLOSING_QUOTE'
                                                                                            | 'CSV_OPTION_COLUMNS_MISSING_NAME'
                                                                                            | 'CSV_QUOTE_NOT_CLOSED'
                                                                                            | 'CSV_RECORD_INCONSISTENT_FIELDS_LENGTH'
                                                                                            | 'CSV_RECORD_INCONSISTENT_COLUMNS'
                                                                                            | 'CSV_UNKNOWN_ERROR'
                                                                                            | 'INVALID_OPENING_QUOTE';

                                                                                              type OptionsWithColumns

                                                                                              type OptionsWithColumns<T, U = T> = Omit<Options<T, U>, 'columns'> & {
                                                                                              columns: Exclude<Options['columns'], undefined | false>;
                                                                                              };

                                                                                                Package Files (1)

                                                                                                Dependencies (0)

                                                                                                No dependencies.

                                                                                                Dev Dependencies (17)

                                                                                                Peer Dependencies (0)

                                                                                                No peer dependencies.

                                                                                                Badge

                                                                                                To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                                                                                                You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/csv-parse.

                                                                                                • Markdown
                                                                                                  [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/csv-parse)
                                                                                                • HTML
                                                                                                  <a href="https://www.jsdocs.io/package/csv-parse"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>