@loaders.gl/csv 4.0.0-alpha.4 → 4.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/papaparse/papaparse.ts"],"names":["BYTE_ORDER_MARK","Papa","parse","CsvToJson","unparse","JsonToCsv","RECORD_SEP","String","fromCharCode","UNIT_SEP","BAD_DELIMITERS","WORKERS_SUPPORTED","NODE_STREAM_INPUT","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","Parser","ParserHandle","ChunkStreamer","StringStreamer","_input","_config","UserDefinedStreamer","dynamicTyping","isFunction","dynamicTypingFunction","transform","worker","w","newWorker","userStep","step","userChunk","chunk","userComplete","complete","userError","error","postMessage","input","config","workerId","id","streamer","stream","_quotes","_writeHeader","_delimiter","_newline","_quoteChar","_escapedQuote","_skipEmptyLines","_columns","unpackConfig","quoteCharRegex","RegExp","escapeRegExp","JSON","Array","isArray","length","serialize","objectKeys","data","fields","meta","Error","delimiter","filter","value","indexOf","quotes","skipEmptyLines","newline","quoteChar","header","columns","escapeChar","undefined","obj","keys","key","push","csv","hasHeader","dataKeyedByField","i","safe","row","maxCol","emptyLine","nullLine","Object","join","trim","line","c","cx","col","colIdx","str","constructor","Date","stringify","slice","toString","replace","needsQuotes","hasAny","charAt","substrings","_handle","_finished","_completed","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","replaceConfig","call","parseChunk","isFakeChunk","beforeFirstChunk","modifiedChunk","aggregate","results","paused","aborted","lastIndex","cursor","substring","finishedIncludingPreview","preview","concat","_sendError","configCopy","copy","chunkSize","parseInt","remaining","s","size","substr","prototype","create","FLOAT","ISO_DATE","self","_stepCounter","_rowCounter","_parser","_paused","_aborted","_delimiterError","_fields","_results","needsHeaderRow","processResults","abort","baseIndex","ignoreLastRow","guessLineEndings","delimGuess","guessDelimiter","comments","delimitersToGuess","successful","bestDelimiter","parserConfig","pause","getCharIndex","resume","testEmptyLine","addError","splice","fillHeaderFields","applyHeaderAndDynamicTypingAndTransformation","addHeder","transformHeader","forEach","shouldApplyDynamicTyping","field","parseDynamic","test","parseFloat","processRow","rowSource","j","incrementBy","map","bestDelim","bestDelta","fieldCountPrevRow","delim","delta","avgFieldCount","emptyLinesCount","fieldCount","Math","abs","re","r","split","n","nAppearsFirst","numWithN","type","code","msg","message","string","fastMode","inputLen","delimLen","newlineLen","commentsLen","stepIsFunction","lastCursor","returnable","rows","pushRow","doStep","nextDelim","nextNewline","quoteSearch","index","finish","checkUpTo","min","spacesBetweenQuoteAndDelimiter","extraSpaces","spacesBetweenQuoteAndNewLine","saveRow","spaceLength","textBetweenClosingQuoteAndIndex","newCursor","stopped","isStep","linebreak","truncated","notImplemented","cpy","func"],"mappings":"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","sourcesContent":["// @ts-nocheck\n// This is a fork of papaparse\n// https://github.com/mholt/PapaParse\n/* @license\nPapa Parse\nv5.0.0-beta.0\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n// FORK SUMMARY:\n// - Adopt ES6 exports\n// - Implement new AsyncIteratorStreamer\n// - Remove non Async Iterator streamers (can all be handled by new streamer)\n// - Remove unused Worker support (loaders.gl worker system used instead)\n// - Remove unused jQuery plugin support\n\n/* eslint-disable */\nconst BYTE_ORDER_MARK = '\\ufeff';\n\nconst Papa = {\n parse: CsvToJson,\n unparse: JsonToCsv,\n\n RECORD_SEP: String.fromCharCode(30),\n UNIT_SEP: String.fromCharCode(31),\n BYTE_ORDER_MARK,\n BAD_DELIMITERS: ['\\r', '\\n', '\"', BYTE_ORDER_MARK],\n WORKERS_SUPPORTED: false, // !IS_WORKER && !!globalThis.Worker\n NODE_STREAM_INPUT: 1,\n\n // Configurable chunk sizes for local and remote files, respectively\n LocalChunkSize: 1024 * 1024 * 10, // 10 M,\n RemoteChunkSize: 1024 * 1024 * 5, // 5 M,\n DefaultDelimiter: ',', // Used if not specified and detection fail,\n\n // Exposed for testing and development only\n Parser: Parser,\n ParserHandle: ParserHandle,\n\n // BEGIN FORK\n ChunkStreamer: ChunkStreamer,\n StringStreamer: StringStreamer\n};\nexport default Papa;\n\n/*\nPapa.NetworkStreamer = NetworkStreamer;\nPapa.FileStreamer = FileStreamer;\nPapa.ReadableStreamStreamer = ReadableStreamStreamer;\nif (typeof PAPA_BROWSER_CONTEXT === 'undefined') {\n Papa.DuplexStreamStreamer = DuplexStreamStreamer;\n}\n*/\n// END FORK\n\n// BEGIN FORK\n// Adds an argument to papa.parse\n// function CsvToJson(_input, _config)\nfunction CsvToJson(\n _input,\n _config,\n UserDefinedStreamer? // BEGIN FORK\n) {\n _config = _config || {};\n var dynamicTyping = _config.dynamicTyping || false;\n if (isFunction(dynamicTyping)) {\n _config.dynamicTypingFunction = dynamicTyping;\n // Will be filled on first row call\n dynamicTyping = {};\n }\n _config.dynamicTyping = dynamicTyping;\n\n _config.transform = isFunction(_config.transform) ? _config.transform : false;\n\n if (_config.worker && Papa.WORKERS_SUPPORTED) {\n var w = newWorker();\n\n w.userStep = _config.step;\n w.userChunk = _config.chunk;\n w.userComplete = _config.complete;\n w.userError = _config.error;\n\n _config.step = isFunction(_config.step);\n _config.chunk = isFunction(_config.chunk);\n _config.complete = isFunction(_config.complete);\n _config.error = isFunction(_config.error);\n delete _config.worker; // prevent infinite loop\n\n w.postMessage({\n input: _input,\n config: _config,\n workerId: w.id\n });\n\n return;\n }\n\n var streamer = null;\n /*\n if (_input === Papa.NODE_STREAM_INPUT && typeof PAPA_BROWSER_CONTEXT === 'undefined') {\n // create a node Duplex stream for use\n // with .pipe\n streamer = new DuplexStreamStreamer(_config);\n return streamer.getStream();\n } else\n */\n if (typeof _input === 'string') {\n // if (_config.download) streamer = new NetworkStreamer(_config);\n // else\n streamer = new StringStreamer(_config);\n }\n /*\n else if (_input.readable === true && isFunction(_input.read) && isFunction(_input.on)) {\n streamer = new ReadableStreamStreamer(_config);\n } else if ((globalThis.File && _input instanceof File) || _input instanceof Object)\n // ...Safari. (see issue #106)\n streamer = new FileStreamer(_config);\n */\n\n // BEGIN FORK\n if (!streamer) {\n streamer = new UserDefinedStreamer(_config);\n }\n // END FORK\n\n return streamer.stream(_input);\n}\n\nfunction JsonToCsv(_input, _config) {\n // Default configuration\n\n /** whether to surround every datum with quotes */\n var _quotes = false;\n\n /** whether to write headers */\n var _writeHeader = true;\n\n /** delimiting character(s) */\n var _delimiter = ',';\n\n /** newline character(s) */\n var _newline = '\\r\\n';\n\n /** quote character */\n var _quoteChar = '\"';\n\n /** escaped quote character, either \"\" or <config.escapeChar>\" */\n var _escapedQuote = _quoteChar + _quoteChar;\n\n /** whether to skip empty lines */\n var _skipEmptyLines = false;\n\n /** the columns (keys) we expect when we unparse objects */\n var _columns = null;\n\n unpackConfig();\n\n var quoteCharRegex = new RegExp(escapeRegExp(_quoteChar), 'g');\n\n if (typeof _input === 'string') _input = JSON.parse(_input);\n\n if (Array.isArray(_input)) {\n if (!_input.length || Array.isArray(_input[0])) return serialize(null, _input, _skipEmptyLines);\n else if (typeof _input[0] === 'object')\n return serialize(_columns || objectKeys(_input[0]), _input, _skipEmptyLines);\n } else if (typeof _input === 'object') {\n if (typeof _input.data === 'string') _input.data = JSON.parse(_input.data);\n\n if (Array.isArray(_input.data)) {\n if (!_input.fields) _input.fields = _input.meta && _input.meta.fields;\n\n if (!_input.fields)\n _input.fields = Array.isArray(_input.data[0]) ? _input.fields : objectKeys(_input.data[0]);\n\n if (!Array.isArray(_input.data[0]) && typeof _input.data[0] !== 'object')\n _input.data = [_input.data]; // handles input like [1,2,3] or ['asdf']\n }\n\n return serialize(_input.fields || [], _input.data || [], _skipEmptyLines);\n }\n\n // Default (any valid paths should return before this)\n throw new Error('Unable to serialize unrecognized input');\n\n function unpackConfig() {\n if (typeof _config !== 'object') return;\n\n if (\n typeof _config.delimiter === 'string' &&\n !Papa.BAD_DELIMITERS.filter(function (value) {\n return _config.delimiter.indexOf(value) !== -1;\n }).length\n ) {\n _delimiter = _config.delimiter;\n }\n\n if (typeof _config.quotes === 'boolean' || Array.isArray(_config.quotes))\n _quotes = _config.quotes;\n\n if (typeof _config.skipEmptyLines === 'boolean' || typeof _config.skipEmptyLines === 'string')\n _skipEmptyLines = _config.skipEmptyLines;\n\n if (typeof _config.newline === 'string') _newline = _config.newline;\n\n if (typeof _config.quoteChar === 'string') _quoteChar = _config.quoteChar;\n\n if (typeof _config.header === 'boolean') _writeHeader = _config.header;\n\n if (Array.isArray(_config.columns)) {\n if (_config.columns.length === 0) throw new Error('Option columns is empty');\n\n _columns = _config.columns;\n }\n\n if (_config.escapeChar !== undefined) {\n _escapedQuote = _config.escapeChar + _quoteChar;\n }\n }\n\n /** Turns an object's keys into an array */\n function objectKeys(obj) {\n if (typeof obj !== 'object') return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n }\n\n /** The double for loop that iterates the data and writes out a CSV string including header row */\n function serialize(fields, data, skipEmptyLines) {\n var csv = '';\n\n if (typeof fields === 'string') fields = JSON.parse(fields);\n if (typeof data === 'string') data = JSON.parse(data);\n\n var hasHeader = Array.isArray(fields) && fields.length > 0;\n var dataKeyedByField = !Array.isArray(data[0]);\n\n // If there a header row, write it first\n if (hasHeader && _writeHeader) {\n for (var i = 0; i < fields.length; i++) {\n if (i > 0) csv += _delimiter;\n csv += safe(fields[i], i);\n }\n if (data.length > 0) csv += _newline;\n }\n\n // Then write out the data\n for (var row = 0; row < data.length; row++) {\n var maxCol = hasHeader ? fields.length : data[row].length;\n\n var emptyLine = false;\n var nullLine = hasHeader ? Object.keys(data[row]).length === 0 : data[row].length === 0;\n if (skipEmptyLines && !hasHeader) {\n emptyLine =\n skipEmptyLines === 'greedy'\n ? data[row].join('').trim() === ''\n : data[row].length === 1 && data[row][0].length === 0;\n }\n if (skipEmptyLines === 'greedy' && hasHeader) {\n var line = [];\n for (var c = 0; c < maxCol; c++) {\n var cx = dataKeyedByField ? fields[c] : c;\n line.push(data[row][cx]);\n }\n emptyLine = line.join('').trim() === '';\n }\n if (!emptyLine) {\n for (var col = 0; col < maxCol; col++) {\n if (col > 0 && !nullLine) csv += _delimiter;\n var colIdx = hasHeader && dataKeyedByField ? fields[col] : col;\n csv += safe(data[row][colIdx], col);\n }\n if (row < data.length - 1 && (!skipEmptyLines || (maxCol > 0 && !nullLine))) {\n csv += _newline;\n }\n }\n }\n return csv;\n }\n\n /** Encloses a value around quotes if needed (makes a value safe for CSV insertion) */\n function safe(str, col) {\n if (typeof str === 'undefined' || str === null) return '';\n\n if (str.constructor === Date) return JSON.stringify(str).slice(1, 25);\n\n str = str.toString().replace(quoteCharRegex, _escapedQuote);\n\n var needsQuotes =\n (typeof _quotes === 'boolean' && _quotes) ||\n (Array.isArray(_quotes) && _quotes[col]) ||\n hasAny(str, Papa.BAD_DELIMITERS) ||\n str.indexOf(_delimiter) > -1 ||\n str.charAt(0) === ' ' ||\n str.charAt(str.length - 1) === ' ';\n\n return needsQuotes ? _quoteChar + str + _quoteChar : str;\n }\n\n function hasAny(str, substrings) {\n for (var i = 0; i < substrings.length; i++) if (str.indexOf(substrings[i]) > -1) return true;\n return false;\n }\n}\n\n/** ChunkStreamer is the base prototype for various streamer implementations. */\nfunction ChunkStreamer(config) {\n this._handle = null;\n this._finished = false;\n this._completed = false;\n this._input = null;\n this._baseIndex = 0;\n this._partialLine = '';\n this._rowCount = 0;\n this._start = 0;\n this._nextChunk = null;\n this.isFirstChunk = true;\n this._completeResults = {\n data: [],\n errors: [],\n meta: {}\n };\n replaceConfig.call(this, config);\n\n this.parseChunk = function (chunk, isFakeChunk) {\n // First chunk pre-processing\n if (this.isFirstChunk && isFunction(this._config.beforeFirstChunk)) {\n var modifiedChunk = this._config.beforeFirstChunk(chunk);\n if (modifiedChunk !== undefined) chunk = modifiedChunk;\n }\n this.isFirstChunk = false;\n\n // Rejoin the line we likely just split in two by chunking the file\n var aggregate = this._partialLine + chunk;\n this._partialLine = '';\n\n var results = this._handle.parse(aggregate, this._baseIndex, !this._finished);\n\n if (this._handle.paused() || this._handle.aborted()) return;\n\n var lastIndex = results.meta.cursor;\n\n if (!this._finished) {\n this._partialLine = aggregate.substring(lastIndex - this._baseIndex);\n this._baseIndex = lastIndex;\n }\n\n if (results && results.data) this._rowCount += results.data.length;\n\n var finishedIncludingPreview =\n this._finished || (this._config.preview && this._rowCount >= this._config.preview);\n\n if (isFunction(this._config.chunk) && !isFakeChunk) {\n this._config.chunk(results, this._handle);\n if (this._handle.paused() || this._handle.aborted()) return;\n results = undefined;\n this._completeResults = undefined;\n }\n\n if (!this._config.step && !this._config.chunk) {\n this._completeResults.data = this._completeResults.data.concat(results.data);\n this._completeResults.errors = this._completeResults.errors.concat(results.errors);\n this._completeResults.meta = results.meta;\n }\n\n if (\n !this._completed &&\n finishedIncludingPreview &&\n isFunction(this._config.complete) &&\n (!results || !results.meta.aborted)\n ) {\n this._config.complete(this._completeResults, this._input);\n this._completed = true;\n }\n\n if (!finishedIncludingPreview && (!results || !results.meta.paused)) this._nextChunk();\n\n return results;\n };\n\n this._sendError = function (error) {\n if (isFunction(this._config.error)) this._config.error(error);\n };\n\n function replaceConfig(config) {\n // Deep-copy the config so we can edit it\n var configCopy = copy(config);\n configCopy.chunkSize = parseInt(configCopy.chunkSize); // parseInt VERY important so we don't concatenate strings!\n if (!config.step && !config.chunk) configCopy.chunkSize = null; // disable Range header if not streaming; bad values break IIS - see issue #196\n this._handle = new ParserHandle(configCopy);\n this._handle.streamer = this;\n this._config = configCopy; // persist the copy to the caller\n }\n}\nfunction StringStreamer(config) {\n config = config || {};\n ChunkStreamer.call(this, config);\n\n var remaining;\n this.stream = function (s) {\n remaining = s;\n return this._nextChunk();\n };\n this._nextChunk = function () {\n if (this._finished) return;\n var size = this._config.chunkSize;\n var chunk = size ? remaining.substr(0, size) : remaining;\n remaining = size ? remaining.substr(size) : '';\n this._finished = !remaining;\n return this.parseChunk(chunk);\n };\n}\nStringStreamer.prototype = Object.create(StringStreamer.prototype);\nStringStreamer.prototype.constructor = StringStreamer;\n\n// Use one ParserHandle per entire CSV file or string\nfunction ParserHandle(_config) {\n // One goal is to minimize the use of regular expressions...\n var FLOAT = /^\\s*-?(\\d*\\.?\\d+|\\d+\\.?\\d*)(e[-+]?\\d+)?\\s*$/i;\n var ISO_DATE =\n /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/;\n\n var self = this;\n var _stepCounter = 0; // Number of times step was called (number of rows parsed)\n var _rowCounter = 0; // Number of rows that have been parsed so far\n var _input; // The input being parsed\n var _parser; // The core parser being used\n var _paused = false; // Whether we are paused or not\n var _aborted = false; // Whether the parser has aborted or not\n var _delimiterError; // Temporary state between delimiter detection and processing results\n var _fields = []; // Fields are from the header row of the input, if there is one\n var _results = {\n // The last results returned from the parser\n data: [],\n errors: [],\n meta: {}\n };\n\n if (isFunction(_config.step)) {\n var userStep = _config.step;\n _config.step = function (results) {\n _results = results;\n\n if (needsHeaderRow()) processResults();\n // only call user's step function after header row\n else {\n processResults();\n\n // It's possbile that this line was empty and there's no row here after all\n if (!_results.data || _results.data.length === 0) return;\n\n _stepCounter += results.data.length;\n if (_config.preview && _stepCounter > _config.preview) _parser.abort();\n else userStep(_results, self);\n }\n };\n }\n\n /**\n * Parses input. Most users won't need, and shouldn't mess with, the baseIndex\n * and ignoreLastRow parameters. They are used by streamers (wrapper functions)\n * when an input comes in multiple chunks, like from a file.\n */\n this.parse = function (input, baseIndex, ignoreLastRow) {\n var quoteChar = _config.quoteChar || '\"';\n if (!_config.newline) _config.newline = guessLineEndings(input, quoteChar);\n\n _delimiterError = false;\n if (!_config.delimiter) {\n var delimGuess = guessDelimiter(\n input,\n _config.newline,\n _config.skipEmptyLines,\n _config.comments,\n _config.delimitersToGuess\n );\n if (delimGuess.successful) _config.delimiter = delimGuess.bestDelimiter;\n else {\n _delimiterError = true; // add error after parsing (otherwise it would be overwritten)\n _config.delimiter = Papa.DefaultDelimiter;\n }\n _results.meta.delimiter = _config.delimiter;\n } else if (isFunction(_config.delimiter)) {\n _config.delimiter = _config.delimiter(input);\n _results.meta.delimiter = _config.delimiter;\n }\n\n var parserConfig = copy(_config);\n if (_config.preview && _config.header) parserConfig.preview++; // to compensate for header row\n\n _input = input;\n _parser = new Parser(parserConfig);\n _results = _parser.parse(_input, baseIndex, ignoreLastRow);\n processResults();\n return _paused ? {meta: {paused: true}} : _results || {meta: {paused: false}};\n };\n\n this.paused = function () {\n return _paused;\n };\n\n this.pause = function () {\n _paused = true;\n _parser.abort();\n _input = _input.substr(_parser.getCharIndex());\n };\n\n this.resume = function () {\n _paused = false;\n self.streamer.parseChunk(_input, true);\n };\n\n this.aborted = function () {\n return _aborted;\n };\n\n this.abort = function () {\n _aborted = true;\n _parser.abort();\n _results.meta.aborted = true;\n if (isFunction(_config.complete)) _config.complete(_results);\n _input = '';\n };\n\n function testEmptyLine(s) {\n return _config.skipEmptyLines === 'greedy'\n ? s.join('').trim() === ''\n : s.length === 1 && s[0].length === 0;\n }\n\n function processResults() {\n if (_results && _delimiterError) {\n addError(\n 'Delimiter',\n 'UndetectableDelimiter',\n \"Unable to auto-detect delimiting character; defaulted to '\" + Papa.DefaultDelimiter + \"'\"\n );\n _delimiterError = false;\n }\n\n if (_config.skipEmptyLines) {\n for (var i = 0; i < _results.data.length; i++)\n if (testEmptyLine(_results.data[i])) _results.data.splice(i--, 1);\n }\n\n if (needsHeaderRow()) fillHeaderFields();\n\n return applyHeaderAndDynamicTypingAndTransformation();\n }\n\n function needsHeaderRow() {\n return _config.header && _fields.length === 0;\n }\n\n function fillHeaderFields() {\n if (!_results) return;\n\n function addHeder(header) {\n if (isFunction(_config.transformHeader)) header = _config.transformHeader(header);\n\n _fields.push(header);\n }\n\n if (Array.isArray(_results.data[0])) {\n for (var i = 0; needsHeaderRow() && i < _results.data.length; i++)\n _results.data[i].forEach(addHeder);\n\n _results.data.splice(0, 1);\n }\n // if _results.data[0] is not an array, we are in a step where _results.data is the row.\n else _results.data.forEach(addHeder);\n }\n\n function shouldApplyDynamicTyping(field) {\n // Cache function values to avoid calling it for each row\n if (_config.dynamicTypingFunction && _config.dynamicTyping[field] === undefined) {\n _config.dynamicTyping[field] = _config.dynamicTypingFunction(field);\n }\n return (_config.dynamicTyping[field] || _config.dynamicTyping) === true;\n }\n\n function parseDynamic(field, value) {\n if (shouldApplyDynamicTyping(field)) {\n if (value === 'true' || value === 'TRUE') return true;\n else if (value === 'false' || value === 'FALSE') return false;\n else if (FLOAT.test(value)) return parseFloat(value);\n else if (ISO_DATE.test(value)) return new Date(value);\n else return value === '' ? null : value;\n }\n return value;\n }\n\n function applyHeaderAndDynamicTypingAndTransformation() {\n if (\n !_results ||\n !_results.data ||\n (!_config.header && !_config.dynamicTyping && !_config.transform)\n )\n return _results;\n\n function processRow(rowSource, i) {\n var row = _config.header ? {} : [];\n\n var j;\n for (j = 0; j < rowSource.length; j++) {\n var field = j;\n var value = rowSource[j];\n\n if (_config.header) field = j >= _fields.length ? '__parsed_extra' : _fields[j];\n\n if (_config.transform) value = _config.transform(value, field);\n\n value = parseDynamic(field, value);\n\n if (field === '__parsed_extra') {\n row[field] = row[field] || [];\n row[field].push(value);\n } else row[field] = value;\n }\n\n if (_config.header) {\n if (j > _fields.length)\n addError(\n 'FieldMismatch',\n 'TooManyFields',\n 'Too many fields: expected ' + _fields.length + ' fields but parsed ' + j,\n _rowCounter + i\n );\n else if (j < _fields.length)\n addError(\n 'FieldMismatch',\n 'TooFewFields',\n 'Too few fields: expected ' + _fields.length + ' fields but parsed ' + j,\n _rowCounter + i\n );\n }\n\n return row;\n }\n\n var incrementBy = 1;\n if (!_results.data[0] || Array.isArray(_results.data[0])) {\n _results.data = _results.data.map(processRow);\n incrementBy = _results.data.length;\n } else _results.data = processRow(_results.data, 0);\n\n if (_config.header && _results.meta) _results.meta.fields = _fields;\n\n _rowCounter += incrementBy;\n return _results;\n }\n\n function guessDelimiter(input, newline, skipEmptyLines, comments, delimitersToGuess) {\n var bestDelim, bestDelta, fieldCountPrevRow;\n\n delimitersToGuess = delimitersToGuess || [',', '\\t', '|', ';', Papa.RECORD_SEP, Papa.UNIT_SEP];\n\n for (var i = 0; i < delimitersToGuess.length; i++) {\n var delim = delimitersToGuess[i];\n var delta = 0,\n avgFieldCount = 0,\n emptyLinesCount = 0;\n fieldCountPrevRow = undefined;\n\n var preview = new Parser({\n comments: comments,\n delimiter: delim,\n newline: newline,\n preview: 10\n }).parse(input);\n\n for (var j = 0; j < preview.data.length; j++) {\n if (skipEmptyLines && testEmptyLine(preview.data[j])) {\n emptyLinesCount++;\n continue;\n }\n var fieldCount = preview.data[j].length;\n avgFieldCount += fieldCount;\n\n if (typeof fieldCountPrevRow === 'undefined') {\n fieldCountPrevRow = 0;\n continue;\n } else if (fieldCount > 1) {\n delta += Math.abs(fieldCount - fieldCountPrevRow);\n fieldCountPrevRow = fieldCount;\n }\n }\n\n if (preview.data.length > 0) avgFieldCount /= preview.data.length - emptyLinesCount;\n\n if ((typeof bestDelta === 'undefined' || delta > bestDelta) && avgFieldCount > 1.99) {\n bestDelta = delta;\n bestDelim = delim;\n }\n }\n\n _config.delimiter = bestDelim;\n\n return {\n successful: !!bestDelim,\n bestDelimiter: bestDelim\n };\n }\n\n function guessLineEndings(input, quoteChar) {\n input = input.substr(0, 1024 * 1024); // max length 1 MB\n // Replace all the text inside quotes\n var re = new RegExp(escapeRegExp(quoteChar) + '([^]*?)' + escapeRegExp(quoteChar), 'gm');\n input = input.replace(re, '');\n\n var r = input.split('\\r');\n\n var n = input.split('\\n');\n\n var nAppearsFirst = n.length > 1 && n[0].length < r[0].length;\n\n if (r.length === 1 || nAppearsFirst) return '\\n';\n\n var numWithN = 0;\n for (var i = 0; i < r.length; i++) {\n if (r[i][0] === '\\n') numWithN++;\n }\n\n return numWithN >= r.length / 2 ? '\\r\\n' : '\\r';\n }\n\n function addError(type, code, msg, row) {\n _results.errors.push({\n type: type,\n code: code,\n message: msg,\n row: row\n });\n }\n}\n\n/** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions */\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\n/** The core parser implements speedy and correct CSV parsing */\nfunction Parser(config) {\n // Unpack the config object\n config = config || {};\n var delim = config.delimiter;\n var newline = config.newline;\n var comments = config.comments;\n var step = config.step;\n var preview = config.preview;\n var fastMode = config.fastMode;\n var quoteChar;\n /** Allows for no quoteChar by setting quoteChar to undefined in config */\n if (config.quoteChar === undefined) {\n quoteChar = '\"';\n } else {\n quoteChar = config.quoteChar;\n }\n var escapeChar = quoteChar;\n if (config.escapeChar !== undefined) {\n escapeChar = config.escapeChar;\n }\n\n // Delimiter must be valid\n if (typeof delim !== 'string' || Papa.BAD_DELIMITERS.indexOf(delim) > -1) delim = ',';\n\n // Comment character must be valid\n if (comments === delim) throw new Error('Comment character same as delimiter');\n else if (comments === true) comments = '#';\n else if (typeof comments !== 'string' || Papa.BAD_DELIMITERS.indexOf(comments) > -1)\n comments = false;\n\n // Newline must be valid: \\r, \\n, or \\r\\n\n if (newline !== '\\n' && newline !== '\\r' && newline !== '\\r\\n') newline = '\\n';\n\n // We're gonna need these at the Parser scope\n var cursor = 0;\n var aborted = false;\n\n this.parse = function (input, baseIndex, ignoreLastRow) {\n // For some reason, in Chrome, this speeds things up (!?)\n if (typeof input !== 'string') throw new Error('Input must be a string');\n\n // We don't need to compute some of these every time parse() is called,\n // but having them in a more local scope seems to perform better\n var inputLen = input.length,\n delimLen = delim.length,\n newlineLen = newline.length,\n commentsLen = comments.length;\n var stepIsFunction = isFunction(step);\n\n // Establish starting state\n cursor = 0;\n var data = [],\n errors = [],\n row = [],\n lastCursor = 0;\n\n if (!input) return returnable();\n\n if (fastMode || (fastMode !== false && input.indexOf(quoteChar) === -1)) {\n var rows = input.split(newline);\n for (var i = 0; i < rows.length; i++) {\n row = rows[i];\n cursor += row.length;\n if (i !== rows.length - 1) cursor += newline.length;\n else if (ignoreLastRow) return returnable();\n if (comments && row.substr(0, commentsLen) === comments) continue;\n if (stepIsFunction) {\n data = [];\n pushRow(row.split(delim));\n doStep();\n if (aborted) return returnable();\n } else pushRow(row.split(delim));\n if (preview && i >= preview) {\n data = data.slice(0, preview);\n return returnable(true);\n }\n }\n return returnable();\n }\n\n var nextDelim = input.indexOf(delim, cursor);\n var nextNewline = input.indexOf(newline, cursor);\n var quoteCharRegex = new RegExp(escapeRegExp(escapeChar) + escapeRegExp(quoteChar), 'g');\n var quoteSearch;\n\n // Parser loop\n for (;;) {\n // Field has opening quote\n if (input[cursor] === quoteChar) {\n // Start our search for the closing quote where the cursor is\n quoteSearch = cursor;\n\n // Skip the opening quote\n cursor++;\n\n for (;;) {\n // Find closing quote\n quoteSearch = input.indexOf(quoteChar, quoteSearch + 1);\n\n //No other quotes are found - no other delimiters\n if (quoteSearch === -1) {\n if (!ignoreLastRow) {\n // No closing quote... what a pity\n errors.push({\n type: 'Quotes',\n code: 'MissingQuotes',\n message: 'Quoted field unterminated',\n row: data.length, // row has yet to be inserted\n index: cursor\n });\n }\n return finish();\n }\n\n // Closing quote at EOF\n if (quoteSearch === inputLen - 1) {\n var value = input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar);\n return finish(value);\n }\n\n // If this quote is escaped, it's part of the data; skip it\n // If the quote character is the escape character, then check if the next character is the escape character\n if (quoteChar === escapeChar && input[quoteSearch + 1] === escapeChar) {\n quoteSearch++;\n continue;\n }\n\n // If the quote character is not the escape character, then check if the previous character was the escape character\n if (\n quoteChar !== escapeChar &&\n quoteSearch !== 0 &&\n input[quoteSearch - 1] === escapeChar\n ) {\n continue;\n }\n\n // Check up to nextDelim or nextNewline, whichever is closest\n var checkUpTo = nextNewline === -1 ? nextDelim : Math.min(nextDelim, nextNewline);\n var spacesBetweenQuoteAndDelimiter = extraSpaces(checkUpTo);\n\n // Closing quote followed by delimiter or 'unnecessary spaces + delimiter'\n if (input[quoteSearch + 1 + spacesBetweenQuoteAndDelimiter] === delim) {\n row.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n cursor = quoteSearch + 1 + spacesBetweenQuoteAndDelimiter + delimLen;\n nextDelim = input.indexOf(delim, cursor);\n nextNewline = input.indexOf(newline, cursor);\n\n if (stepIsFunction) {\n doStep();\n if (aborted) return returnable();\n }\n\n if (preview && data.length >= preview) return returnable(true);\n\n break;\n }\n\n var spacesBetweenQuoteAndNewLine = extraSpaces(nextNewline);\n\n // Closing quote followed by newline or 'unnecessary spaces + newLine'\n if (\n input.substr(quoteSearch + 1 + spacesBetweenQuoteAndNewLine, newlineLen) === newline\n ) {\n row.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n saveRow(quoteSearch + 1 + spacesBetweenQuoteAndNewLine + newlineLen);\n nextDelim = input.indexOf(delim, cursor); // because we may have skipped the nextDelim in the quoted field\n\n if (stepIsFunction) {\n doStep();\n if (aborted) return returnable();\n }\n\n if (preview && data.length >= preview) return returnable(true);\n\n break;\n }\n\n // Checks for valid closing quotes are complete (escaped quotes or quote followed by EOF/delimiter/newline) -- assume these quotes are part of an invalid text string\n errors.push({\n type: 'Quotes',\n code: 'InvalidQuotes',\n message: 'Trailing quote on quoted field is malformed',\n row: data.length, // row has yet to be inserted\n index: cursor\n });\n\n quoteSearch++;\n continue;\n }\n\n if (stepIsFunction) {\n doStep();\n if (aborted) return returnable();\n }\n\n if (preview && data.length >= preview) return returnable(true);\n continue;\n }\n\n // Comment found at start of new line\n if (comments && row.length === 0 && input.substr(cursor, commentsLen) === comments) {\n if (nextNewline === -1)\n // Comment ends at EOF\n return returnable();\n cursor = nextNewline + newlineLen;\n nextNewline = input.indexOf(newline, cursor);\n nextDelim = input.indexOf(delim, cursor);\n continue;\n }\n\n // Next delimiter comes before next newline, so we've reached end of field\n if (nextDelim !== -1 && (nextDelim < nextNewline || nextNewline === -1)) {\n row.push(input.substring(cursor, nextDelim));\n cursor = nextDelim + delimLen;\n nextDelim = input.indexOf(delim, cursor);\n continue;\n }\n\n // End of row\n if (nextNewline !== -1) {\n row.push(input.substring(cursor, nextNewline));\n saveRow(nextNewline + newlineLen);\n\n if (stepIsFunction) {\n doStep();\n if (aborted) return returnable();\n }\n\n if (preview && data.length >= preview) return returnable(true);\n\n continue;\n }\n\n break;\n }\n\n return finish();\n\n function pushRow(row) {\n data.push(row);\n lastCursor = cursor;\n }\n\n /**\n * checks if there are extra spaces after closing quote and given index without any text\n * if Yes, returns the number of spaces\n */\n function extraSpaces(index) {\n var spaceLength = 0;\n if (index !== -1) {\n var textBetweenClosingQuoteAndIndex = input.substring(quoteSearch + 1, index);\n if (textBetweenClosingQuoteAndIndex && textBetweenClosingQuoteAndIndex.trim() === '') {\n spaceLength = textBetweenClosingQuoteAndIndex.length;\n }\n }\n return spaceLength;\n }\n\n /**\n * Appends the remaining input from cursor to the end into\n * row, saves the row, calls step, and returns the results.\n */\n function finish(value) {\n if (ignoreLastRow) return returnable();\n if (typeof value === 'undefined') value = input.substr(cursor);\n row.push(value);\n cursor = inputLen; // important in case parsing is paused\n pushRow(row);\n if (stepIsFunction) doStep();\n return returnable();\n }\n\n /**\n * Appends the current row to the results. It sets the cursor\n * to newCursor and finds the nextNewline. The caller should\n * take care to execute user's step function and check for\n * preview and end parsing if necessary.\n */\n function saveRow(newCursor) {\n cursor = newCursor;\n pushRow(row);\n row = [];\n nextNewline = input.indexOf(newline, cursor);\n }\n\n /** Returns an object with the results, errors, and meta. */\n function returnable(stopped, step) {\n var isStep = step || false;\n return {\n data: isStep ? data[0] : data,\n errors: errors,\n meta: {\n delimiter: delim,\n linebreak: newline,\n aborted: aborted,\n truncated: !!stopped,\n cursor: lastCursor + (baseIndex || 0)\n }\n };\n }\n\n /** Executes the user's step function and resets data & errors. */\n function doStep() {\n step(returnable(undefined, true));\n data = [];\n errors = [];\n }\n };\n\n /** Sets the abort flag */\n this.abort = function () {\n aborted = true;\n };\n\n /** Gets the cursor position */\n this.getCharIndex = function () {\n return cursor;\n };\n}\n\nfunction notImplemented() {\n throw new Error('Not implemented.');\n}\n\n/** Makes a deep copy of an array or object (mostly) */\nfunction copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n var cpy = Array.isArray(obj) ? [] : {};\n for (var key in obj) cpy[key] = copy(obj[key]);\n return cpy;\n}\n\nfunction isFunction(func) {\n return typeof func === 'function';\n}\n"],"file":"papaparse.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/csv",
3
- "version": "4.0.0-alpha.4",
3
+ "version": "4.0.0-alpha.5",
4
4
  "description": "Framework-independent loader for CSV and DSV table formats",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -16,7 +16,7 @@
16
16
  "table",
17
17
  "CSV"
18
18
  ],
19
- "types": "src/index.ts",
19
+ "types": "dist/index.d.ts",
20
20
  "main": "dist/index.js",
21
21
  "module": "dist/index.js",
22
22
  "sideEffects": false,
@@ -27,14 +27,14 @@
27
27
  ],
28
28
  "scripts": {
29
29
  "pre-build": "npm run build-bundle",
30
- "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/bundle.js"
30
+ "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js"
31
31
  },
32
32
  "dependencies": {
33
- "@loaders.gl/loader-utils": "4.0.0-alpha.4",
34
- "@loaders.gl/schema": "4.0.0-alpha.4"
33
+ "@loaders.gl/loader-utils": "4.0.0-alpha.5",
34
+ "@loaders.gl/schema": "4.0.0-alpha.5"
35
35
  },
36
36
  "devDependencies": {
37
37
  "d3-dsv": "^1.2.0"
38
38
  },
39
- "gitHead": "53026061b3c8871f7e96d3a5826125cc6613bddc"
39
+ "gitHead": "7a71a54bdf1ddf985cc3af3db90b82e7fa97d025"
40
40
  }
package/src/csv-loader.ts CHANGED
@@ -8,8 +8,8 @@ import {
8
8
  convertToArrayRow,
9
9
  convertToObjectRow
10
10
  } from '@loaders.gl/schema';
11
- import Papa from './libs/papaparse';
12
- import AsyncIteratorStreamer from './lib/async-iterator-streamer';
11
+ import Papa from './papaparse/papaparse';
12
+ import AsyncIteratorStreamer from './papaparse/async-iterator-streamer';
13
13
 
14
14
  // __VERSION__ is injected by babel-plugin-version-inline
15
15
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
@@ -1,12 +1,12 @@
1
+ // @ts-nocheck
1
2
  // A custom papaparse `Streamer` for async iterators
2
3
  // Ideally this can be contributed back to papaparse
3
4
  // Or papaparse can expose Streamer API so we can extend without forking.
4
5
 
5
- // @ts-nocheck
6
6
  /* eslint-disable no-invalid-this */
7
7
 
8
8
  // Note: papaparse is not an ES6 module
9
- import Papa from '../libs/papaparse';
9
+ import Papa from './papaparse';
10
10
  const {ChunkStreamer} = Papa;
11
11
 
12
12
  export default function AsyncIteratorStreamer(config) {
@@ -1,3 +1,4 @@
1
+ // @ts-nocheck
1
2
  // This is a fork of papaparse
2
3
  // https://github.com/mholt/PapaParse
3
4
  /* @license
@@ -14,52 +15,34 @@ License: MIT
14
15
  // - Remove unused jQuery plugin support
15
16
 
16
17
  /* eslint-disable */
17
- // @ts-nocheck
18
- var global = (function() {
19
- // alternative method, similar to `Function('return this')()`
20
- // but without using `eval` (which is disabled when
21
- // using Content Security Policy).
22
-
23
- if (typeof self !== 'undefined') {
24
- return self;
25
- }
26
- if (typeof window !== 'undefined') {
27
- return window;
28
- }
29
- if (typeof global !== 'undefined') {
30
- return global;
31
- }
18
+ const BYTE_ORDER_MARK = '\ufeff';
32
19
 
33
- // When running tests none of the above have been defined
34
- return {};
35
- })();
20
+ const Papa = {
21
+ parse: CsvToJson,
22
+ unparse: JsonToCsv,
36
23
 
37
- var IS_PAPA_WORKER = false;
24
+ RECORD_SEP: String.fromCharCode(30),
25
+ UNIT_SEP: String.fromCharCode(31),
26
+ BYTE_ORDER_MARK,
27
+ BAD_DELIMITERS: ['\r', '\n', '"', BYTE_ORDER_MARK],
28
+ WORKERS_SUPPORTED: false, // !IS_WORKER && !!globalThis.Worker
29
+ NODE_STREAM_INPUT: 1,
38
30
 
39
- var Papa = {};
40
- module.exports = Papa;
41
- Papa.parse = CsvToJson;
42
- Papa.unparse = JsonToCsv;
31
+ // Configurable chunk sizes for local and remote files, respectively
32
+ LocalChunkSize: 1024 * 1024 * 10, // 10 M,
33
+ RemoteChunkSize: 1024 * 1024 * 5, // 5 M,
34
+ DefaultDelimiter: ',', // Used if not specified and detection fail,
43
35
 
44
- Papa.RECORD_SEP = String.fromCharCode(30);
45
- Papa.UNIT_SEP = String.fromCharCode(31);
46
- Papa.BYTE_ORDER_MARK = '\ufeff';
47
- Papa.BAD_DELIMITERS = ['\r', '\n', '"', Papa.BYTE_ORDER_MARK];
48
- Papa.WORKERS_SUPPORTED = false; // !IS_WORKER && !!global.Worker;
49
- Papa.NODE_STREAM_INPUT = 1;
36
+ // Exposed for testing and development only
37
+ Parser: Parser,
38
+ ParserHandle: ParserHandle,
50
39
 
51
- // Configurable chunk sizes for local and remote files, respectively
52
- Papa.LocalChunkSize = 1024 * 1024 * 10; // 10 MB
53
- Papa.RemoteChunkSize = 1024 * 1024 * 5; // 5 MB
54
- Papa.DefaultDelimiter = ','; // Used if not specified and detection fails
55
-
56
- // Exposed for testing and development only
57
- Papa.Parser = Parser;
58
- Papa.ParserHandle = ParserHandle;
40
+ // BEGIN FORK
41
+ ChunkStreamer: ChunkStreamer,
42
+ StringStreamer: StringStreamer
43
+ };
44
+ export default Papa;
59
45
 
60
- // BEGIN FORK
61
- Papa.ChunkStreamer = ChunkStreamer;
62
- Papa.StringStreamer = StringStreamer;
63
46
  /*
64
47
  Papa.NetworkStreamer = NetworkStreamer;
65
48
  Papa.FileStreamer = FileStreamer;
@@ -76,7 +59,7 @@ if (typeof PAPA_BROWSER_CONTEXT === 'undefined') {
76
59
  function CsvToJson(
77
60
  _input,
78
61
  _config,
79
- UserDefinedStreamer // BEGIN FORK
62
+ UserDefinedStreamer? // BEGIN FORK
80
63
  ) {
81
64
  _config = _config || {};
82
65
  var dynamicTyping = _config.dynamicTyping || false;
@@ -129,7 +112,7 @@ function CsvToJson(
129
112
  /*
130
113
  else if (_input.readable === true && isFunction(_input.read) && isFunction(_input.on)) {
131
114
  streamer = new ReadableStreamStreamer(_config);
132
- } else if ((global.File && _input instanceof File) || _input instanceof Object)
115
+ } else if ((globalThis.File && _input instanceof File) || _input instanceof Object)
133
116
  // ...Safari. (see issue #106)
134
117
  streamer = new FileStreamer(_config);
135
118
  */
@@ -204,7 +187,7 @@ function JsonToCsv(_input, _config) {
204
187
 
205
188
  if (
206
189
  typeof _config.delimiter === 'string' &&
207
- !Papa.BAD_DELIMITERS.filter(function(value) {
190
+ !Papa.BAD_DELIMITERS.filter(function (value) {
208
191
  return _config.delimiter.indexOf(value) !== -1;
209
192
  }).length
210
193
  ) {
@@ -339,7 +322,7 @@ function ChunkStreamer(config) {
339
322
  };
340
323
  replaceConfig.call(this, config);
341
324
 
342
- this.parseChunk = function(chunk, isFakeChunk) {
325
+ this.parseChunk = function (chunk, isFakeChunk) {
343
326
  // First chunk pre-processing
344
327
  if (this.isFirstChunk && isFunction(this._config.beforeFirstChunk)) {
345
328
  var modifiedChunk = this._config.beforeFirstChunk(chunk);
@@ -367,13 +350,7 @@ function ChunkStreamer(config) {
367
350
  var finishedIncludingPreview =
368
351
  this._finished || (this._config.preview && this._rowCount >= this._config.preview);
369
352
 
370
- if (IS_PAPA_WORKER) {
371
- global.postMessage({
372
- results: results,
373
- workerId: Papa.WORKER_ID,
374
- finished: finishedIncludingPreview
375
- });
376
- } else if (isFunction(this._config.chunk) && !isFakeChunk) {
353
+ if (isFunction(this._config.chunk) && !isFakeChunk) {
377
354
  this._config.chunk(results, this._handle);
378
355
  if (this._handle.paused() || this._handle.aborted()) return;
379
356
  results = undefined;
@@ -401,15 +378,8 @@ function ChunkStreamer(config) {
401
378
  return results;
402
379
  };
403
380
 
404
- this._sendError = function(error) {
381
+ this._sendError = function (error) {
405
382
  if (isFunction(this._config.error)) this._config.error(error);
406
- else if (IS_PAPA_WORKER && this._config.error) {
407
- global.postMessage({
408
- workerId: Papa.WORKER_ID,
409
- error: error,
410
- finished: false
411
- });
412
- }
413
383
  };
414
384
 
415
385
  function replaceConfig(config) {
@@ -427,11 +397,11 @@ function StringStreamer(config) {
427
397
  ChunkStreamer.call(this, config);
428
398
 
429
399
  var remaining;
430
- this.stream = function(s) {
400
+ this.stream = function (s) {
431
401
  remaining = s;
432
402
  return this._nextChunk();
433
403
  };
434
- this._nextChunk = function() {
404
+ this._nextChunk = function () {
435
405
  if (this._finished) return;
436
406
  var size = this._config.chunkSize;
437
407
  var chunk = size ? remaining.substr(0, size) : remaining;
@@ -447,7 +417,8 @@ StringStreamer.prototype.constructor = StringStreamer;
447
417
  function ParserHandle(_config) {
448
418
  // One goal is to minimize the use of regular expressions...
449
419
  var FLOAT = /^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i;
450
- var ISO_DATE = /(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/;
420
+ var ISO_DATE =
421
+ /(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/;
451
422
 
452
423
  var self = this;
453
424
  var _stepCounter = 0; // Number of times step was called (number of rows parsed)
@@ -467,7 +438,7 @@ function ParserHandle(_config) {
467
438
 
468
439
  if (isFunction(_config.step)) {
469
440
  var userStep = _config.step;
470
- _config.step = function(results) {
441
+ _config.step = function (results) {
471
442
  _results = results;
472
443
 
473
444
  if (needsHeaderRow()) processResults();
@@ -490,7 +461,7 @@ function ParserHandle(_config) {
490
461
  * and ignoreLastRow parameters. They are used by streamers (wrapper functions)
491
462
  * when an input comes in multiple chunks, like from a file.
492
463
  */
493
- this.parse = function(input, baseIndex, ignoreLastRow) {
464
+ this.parse = function (input, baseIndex, ignoreLastRow) {
494
465
  var quoteChar = _config.quoteChar || '"';
495
466
  if (!_config.newline) _config.newline = guessLineEndings(input, quoteChar);
496
467
 
@@ -524,26 +495,26 @@ function ParserHandle(_config) {
524
495
  return _paused ? {meta: {paused: true}} : _results || {meta: {paused: false}};
525
496
  };
526
497
 
527
- this.paused = function() {
498
+ this.paused = function () {
528
499
  return _paused;
529
500
  };
530
501
 
531
- this.pause = function() {
502
+ this.pause = function () {
532
503
  _paused = true;
533
504
  _parser.abort();
534
505
  _input = _input.substr(_parser.getCharIndex());
535
506
  };
536
507
 
537
- this.resume = function() {
508
+ this.resume = function () {
538
509
  _paused = false;
539
510
  self.streamer.parseChunk(_input, true);
540
511
  };
541
512
 
542
- this.aborted = function() {
513
+ this.aborted = function () {
543
514
  return _aborted;
544
515
  };
545
516
 
546
- this.abort = function() {
517
+ this.abort = function () {
547
518
  _aborted = true;
548
519
  _parser.abort();
549
520
  _results.meta.aborted = true;
@@ -620,7 +591,11 @@ function ParserHandle(_config) {
620
591
  }
621
592
 
622
593
  function applyHeaderAndDynamicTypingAndTransformation() {
623
- if (!_results || !_results.data || (!_config.header && !_config.dynamicTyping && !_config.transform))
594
+ if (
595
+ !_results ||
596
+ !_results.data ||
597
+ (!_config.header && !_config.dynamicTyping && !_config.transform)
598
+ )
624
599
  return _results;
625
600
 
626
601
  function processRow(rowSource, i) {
@@ -802,7 +777,7 @@ function Parser(config) {
802
777
  var cursor = 0;
803
778
  var aborted = false;
804
779
 
805
- this.parse = function(input, baseIndex, ignoreLastRow) {
780
+ this.parse = function (input, baseIndex, ignoreLastRow) {
806
781
  // For some reason, in Chrome, this speeds things up (!?)
807
782
  if (typeof input !== 'string') throw new Error('Input must be a string');
808
783
 
@@ -1075,12 +1050,12 @@ function Parser(config) {
1075
1050
  };
1076
1051
 
1077
1052
  /** Sets the abort flag */
1078
- this.abort = function() {
1053
+ this.abort = function () {
1079
1054
  aborted = true;
1080
1055
  };
1081
1056
 
1082
1057
  /** Gets the cursor position */
1083
- this.getCharIndex = function() {
1058
+ this.getCharIndex = function () {
1084
1059
  return cursor;
1085
1060
  };
1086
1061
  }
@@ -1,35 +0,0 @@
1
- import Papa from '../libs/papaparse';
2
- const {
3
- ChunkStreamer
4
- } = Papa;
5
- export default function AsyncIteratorStreamer(config) {
6
- config = config || {};
7
- ChunkStreamer.call(this, config);
8
- this.textDecoder = new TextDecoder(this._config.encoding);
9
-
10
- this.stream = async function (asyncIterator) {
11
- this._input = asyncIterator;
12
-
13
- try {
14
- for await (const chunk of asyncIterator) {
15
- this.parseChunk(this.getStringChunk(chunk));
16
- }
17
-
18
- this._finished = true;
19
- this.parseChunk('');
20
- } catch (error) {
21
- this._sendError(error);
22
- }
23
- };
24
-
25
- this._nextChunk = function nextChunk() {};
26
-
27
- this.getStringChunk = function (chunk) {
28
- return typeof chunk === 'string' ? chunk : this.textDecoder.decode(chunk, {
29
- stream: true
30
- });
31
- };
32
- }
33
- AsyncIteratorStreamer.prototype = Object.create(ChunkStreamer.prototype);
34
- AsyncIteratorStreamer.prototype.constructor = AsyncIteratorStreamer;
35
- //# sourceMappingURL=async-iterator-streamer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/async-iterator-streamer.ts"],"names":["Papa","ChunkStreamer","AsyncIteratorStreamer","config","call","textDecoder","TextDecoder","_config","encoding","stream","asyncIterator","_input","chunk","parseChunk","getStringChunk","_finished","error","_sendError","_nextChunk","nextChunk","decode","prototype","Object","create","constructor"],"mappings":"AAQA,OAAOA,IAAP,MAAiB,mBAAjB;AACA,MAAM;AAACC,EAAAA;AAAD,IAAkBD,IAAxB;AAEA,eAAe,SAASE,qBAAT,CAA+BC,MAA/B,EAAuC;AACpDA,EAAAA,MAAM,GAAGA,MAAM,IAAI,EAAnB;AAEAF,EAAAA,aAAa,CAACG,IAAd,CAAmB,IAAnB,EAAyBD,MAAzB;AAEA,OAAKE,WAAL,GAAmB,IAAIC,WAAJ,CAAgB,KAAKC,OAAL,CAAaC,QAA7B,CAAnB;;AAaA,OAAKC,MAAL,GAAc,gBAAgBC,aAAhB,EAA+B;AAC3C,SAAKC,MAAL,GAAcD,aAAd;;AAEA,QAAI;AAGF,iBAAW,MAAME,KAAjB,IAA0BF,aAA1B,EAAyC;AACvC,aAAKG,UAAL,CAAgB,KAAKC,cAAL,CAAoBF,KAApB,CAAhB;AACD;;AAcD,WAAKG,SAAL,GAAiB,IAAjB;AACA,WAAKF,UAAL,CAAgB,EAAhB;AACD,KArBD,CAqBE,OAAOG,KAAP,EAAc;AAEd,WAAKC,UAAL,CAAgBD,KAAhB;AACD;AACF,GA5BD;;AA8BA,OAAKE,UAAL,GAAkB,SAASC,SAAT,GAAqB,CAEtC,CAFD;;AAKA,OAAKL,cAAL,GAAsB,UAAUF,KAAV,EAAiB;AACrC,WAAO,OAAOA,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoC,KAAKP,WAAL,CAAiBe,MAAjB,CAAwBR,KAAxB,EAA+B;AAACH,MAAAA,MAAM,EAAE;AAAT,KAA/B,CAA3C;AACD,GAFD;AAGD;AAEDP,qBAAqB,CAACmB,SAAtB,GAAkCC,MAAM,CAACC,MAAP,CAActB,aAAa,CAACoB,SAA5B,CAAlC;AACAnB,qBAAqB,CAACmB,SAAtB,CAAgCG,WAAhC,GAA8CtB,qBAA9C","sourcesContent":["// A custom papaparse `Streamer` for async iterators\n// Ideally this can be contributed back to papaparse\n// Or papaparse can expose Streamer API so we can extend without forking.\n\n// @ts-nocheck\n/* eslint-disable no-invalid-this */\n\n// Note: papaparse is not an ES6 module\nimport Papa from '../libs/papaparse';\nconst {ChunkStreamer} = Papa;\n\nexport default function AsyncIteratorStreamer(config) {\n config = config || {};\n\n ChunkStreamer.call(this, config);\n\n this.textDecoder = new TextDecoder(this._config.encoding);\n\n // Implement ChunkStreamer base class methods\n\n // this.pause = function() {\n // ChunkStreamer.prototype.pause.apply(this, arguments);\n // };\n\n // this.resume = function() {\n // ChunkStreamer.prototype.resume.apply(this, arguments);\n // this._input.resume();\n // };\n\n this.stream = async function (asyncIterator) {\n this._input = asyncIterator;\n\n try {\n // ES2018 version\n // TODO - check for pause and abort flags?\n for await (const chunk of asyncIterator) {\n this.parseChunk(this.getStringChunk(chunk));\n }\n\n // ES5 VERSION\n // while (true) {\n // asyncIterator.next().then(function(value) {\n // if (value.done) {\n // // finalize iterator?\n // }\n // }\n // const = await ;\n // if (done) return total;\n // total += value.length;\n // }\n\n this._finished = true;\n this.parseChunk('');\n } catch (error) {\n // Inform ChunkStreamer base class of error\n this._sendError(error);\n }\n };\n\n this._nextChunk = function nextChunk() {\n // Left empty, as async iterator automatically pulls next chunk\n };\n\n // HELPER METHODS\n this.getStringChunk = function (chunk) {\n return typeof chunk === 'string' ? chunk : this.textDecoder.decode(chunk, {stream: true});\n };\n}\n\nAsyncIteratorStreamer.prototype = Object.create(ChunkStreamer.prototype);\nAsyncIteratorStreamer.prototype.constructor = AsyncIteratorStreamer;\n"],"file":"async-iterator-streamer.js"}
@@ -1,71 +0,0 @@
1
- // A custom papaparse `Streamer` for async iterators
2
- // Ideally this can be contributed back to papaparse
3
- // Or papaparse can expose Streamer API so we can extend without forking.
4
-
5
- // @ts-nocheck
6
- /* eslint-disable no-invalid-this */
7
-
8
- // Note: papaparse is not an ES6 module
9
- import Papa from '../libs/papaparse';
10
- const {ChunkStreamer} = Papa;
11
-
12
- export default function AsyncIteratorStreamer(config) {
13
- config = config || {};
14
-
15
- ChunkStreamer.call(this, config);
16
-
17
- this.textDecoder = new TextDecoder(this._config.encoding);
18
-
19
- // Implement ChunkStreamer base class methods
20
-
21
- // this.pause = function() {
22
- // ChunkStreamer.prototype.pause.apply(this, arguments);
23
- // };
24
-
25
- // this.resume = function() {
26
- // ChunkStreamer.prototype.resume.apply(this, arguments);
27
- // this._input.resume();
28
- // };
29
-
30
- this.stream = async function (asyncIterator) {
31
- this._input = asyncIterator;
32
-
33
- try {
34
- // ES2018 version
35
- // TODO - check for pause and abort flags?
36
- for await (const chunk of asyncIterator) {
37
- this.parseChunk(this.getStringChunk(chunk));
38
- }
39
-
40
- // ES5 VERSION
41
- // while (true) {
42
- // asyncIterator.next().then(function(value) {
43
- // if (value.done) {
44
- // // finalize iterator?
45
- // }
46
- // }
47
- // const = await ;
48
- // if (done) return total;
49
- // total += value.length;
50
- // }
51
-
52
- this._finished = true;
53
- this.parseChunk('');
54
- } catch (error) {
55
- // Inform ChunkStreamer base class of error
56
- this._sendError(error);
57
- }
58
- };
59
-
60
- this._nextChunk = function nextChunk() {
61
- // Left empty, as async iterator automatically pulls next chunk
62
- };
63
-
64
- // HELPER METHODS
65
- this.getStringChunk = function (chunk) {
66
- return typeof chunk === 'string' ? chunk : this.textDecoder.decode(chunk, {stream: true});
67
- };
68
- }
69
-
70
- AsyncIteratorStreamer.prototype = Object.create(ChunkStreamer.prototype);
71
- AsyncIteratorStreamer.prototype.constructor = AsyncIteratorStreamer;