Source

src/core/parserConfig.js

'use strict';

/**
 * Immutable parser configuration snapshot used for concurrent parsing.
 */
class ParserConfig {
  /**
   * Create a frozen parser configuration snapshot.
   * @param {object} options - Parser configuration options
   * @param {string} [options.delimiter] - Field delimiter
   * @param {string} [options.encoding] - File encoding
   * @param {boolean} [options.isSupportQuotedField] - Support quoted fields
   * @param {boolean} [options.isTrimHeaderFieldWhiteSpace] - Trim whitespace in header names
   * @param {number} [options.indexHeaderValue] - Header row index
   * @param {string} [options.parseSubArrayDelimiter] - Sub-array delimiter character
   * @param {string} [options.parseSubArraySeparator] - Sub-array item separator
   * @param {boolean} [options.printValueFormatByType] - Format values by type
   * @param {function(object, number): object|null} [options.rowMapper] - Row mapper function
   * @param {Array<number>} [options.indexesToIgnore] - Column indexes to ignore
   */
  constructor(options = {}) {
    this.delimiter = options.delimiter;
    this.encoding = options.encoding;
    this.isSupportQuotedField = options.isSupportQuotedField;
    this.isTrimHeaderFieldWhiteSpace = options.isTrimHeaderFieldWhiteSpace;
    this.indexHeaderValue = options.indexHeaderValue;
    this.parseSubArrayDelimiter = options.parseSubArrayDelimiter;
    this.parseSubArraySeparator = options.parseSubArraySeparator;
    this.printValueFormatByType = options.printValueFormatByType;
    this.rowMapper = options.rowMapper;
    this.indexesToIgnore = options.indexesToIgnore ? Object.freeze([...options.indexesToIgnore]) : Object.freeze([]);

    Object.freeze(this);
  }
}

module.exports = ParserConfig;