csv-parse

  • Version 7.0.0
  • Published
  • 1.54 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 OptionDelimiterAuto

                                          interface OptionDelimiterAuto {}

                                            property preferred

                                            preferred: Record<string, number>;

                                              property score

                                              score: () => number;

                                                property size

                                                size: number;

                                                  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 delimiter_auto

                                                          delimiter_auto?: boolean | Partial<OptionsNormalized['delimiter_auto']>;
                                                          • Discover the field delimiter

                                                          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 delimiter_auto

                                                                                            delimiter_auto: OptionDelimiterAuto;
                                                                                            • Discover the field delimiter.

                                                                                            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>