OptionaldelimiterCSV field delimiter.
If you want to parse TSV, specify '\t'.
OptionalmaxMaximum internal buffer size in characters.
This option limits the size of the internal buffer used during lexing
to prevent memory exhaustion attacks. The buffer size is measured in
UTF-16 code units (JavaScript string length). When the buffer exceeds
this limit, a RangeError will be thrown.
Set to Infinity to disable the limit (not recommended for untrusted input).
OptionalquotationCSV field quotation.
OptionalsignalThe signal to abort the operation.
const controller = new AbortController();
const csv = "foo,bar\n1,2\n3,4";
try {
const result = await parse(csv, { signal: controller.signal });
} catch (e) {
if (e instanceof DOMException && e.name === "AbortError") {
console.log("Aborted");
}
}
// Abort with user action
document.getElementById("cancel-button")
.addEventListener("click", () => {
controller.abort();
});
OptionalsourceSource identifier for error reporting (e.g., filename, description).
This option allows you to specify a human-readable identifier for the CSV source that will be included in error messages. This is particularly useful when parsing multiple files or streams to help identify which source caused an error.
Security Note: Do not include sensitive information (API keys, tokens, full URLs) in this field as it may be exposed in error messages and logs.
OptionaltrackEnable location tracking for tokens.
When enabled, tokens include location with start, end Position objects
and rowNumber. This is useful for error reporting but adds overhead.
Performance impact:
false (default): No location tracking, maximum performancetrue: Full location tracking with Position objectsWhen to enable:
Note: High-level APIs (parseString, etc.) always use trackLocation: false
for performance. This option is only available in low-level Lexer APIs.
// No location tracking (default, fastest)
const lexer = new FlexibleStringCSVLexer();
for (const token of lexer.lex(csv)) {
console.log(token); // { type: Field, value: 'foo' }
}
// With location tracking
const lexer = new FlexibleStringCSVLexer({ trackLocation: true });
for (const token of lexer.lex(csv)) {
console.log(token);
// { type: Field, value: 'foo', location: { start: {...}, end: {...}, rowNumber: 1 } }
}
CSV Lexer Transformer Options.