@loaders.gl/csv 4.0.0-alpha.9 → 4.0.0-beta.2
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.
- package/dist/dist.min.js +60 -42
- package/dist/es5/csv-loader.js +37 -31
- package/dist/es5/csv-loader.js.map +1 -1
- package/dist/es5/csv-writer.js +7 -8
- package/dist/es5/csv-writer.js.map +1 -1
- package/dist/es5/lib/encoders/encode-csv.js.map +1 -1
- package/dist/esm/csv-loader.js +32 -28
- package/dist/esm/csv-loader.js.map +1 -1
- package/dist/esm/csv-writer.js +7 -8
- package/dist/esm/csv-writer.js.map +1 -1
- package/dist/esm/lib/encoders/encode-csv.js.map +1 -1
- package/dist/src/bundle.d.ts.map +1 -0
- package/dist/{csv-loader.d.ts → src/csv-loader.d.ts} +1 -1
- package/dist/src/csv-loader.d.ts.map +1 -0
- package/dist/src/csv-writer.d.ts +11 -0
- package/dist/src/csv-writer.d.ts.map +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/lib/encoders/encode-csv.d.ts +7 -0
- package/dist/src/lib/encoders/encode-csv.d.ts.map +1 -0
- package/dist/src/papaparse/async-iterator-streamer.d.ts.map +1 -0
- package/dist/src/papaparse/papaparse.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +4 -4
- package/src/csv-loader.ts +51 -54
- package/src/csv-writer.ts +15 -11
- package/src/lib/encoders/encode-csv.ts +1 -8
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/csv-loader.d.ts.map +0 -1
- package/dist/csv-loader.js +0 -268
- package/dist/csv-writer.d.ts +0 -6
- package/dist/csv-writer.d.ts.map +0 -1
- package/dist/csv-writer.js +0 -23
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -8
- package/dist/lib/encoders/encode-csv.d.ts +0 -13
- package/dist/lib/encoders/encode-csv.d.ts.map +0 -1
- package/dist/lib/encoders/encode-csv.js +0 -50
- package/dist/papaparse/async-iterator-streamer.d.ts.map +0 -1
- package/dist/papaparse/async-iterator-streamer.js +0 -63
- package/dist/papaparse/papaparse.d.ts.map +0 -1
- package/dist/papaparse/papaparse.js +0 -935
- /package/dist/{bundle.d.ts → src/bundle.d.ts} +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{papaparse → src/papaparse}/async-iterator-streamer.d.ts +0 -0
- /package/dist/{papaparse → src/papaparse}/papaparse.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv-loader.js","names":["AsyncQueue","TableBatchBuilder","convertToArrayRow","convertToObjectRow","Papa","AsyncIteratorStreamer","VERSION","DEFAULT_CSV_LOADER_OPTIONS","csv","shape","optimizeMemoryUsage","header","columnPrefix","quoteChar","escapeChar","dynamicTyping","comments","skipEmptyLines","delimitersToGuess","CSVLoader","id","module","name","version","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCSV","TextDecoder","decode","parseText","text","parseInBatches","parseCSVInBatches","csvText","csvOptions","firstRow","readFirstRow","isHeaderRow","Boolean","parseWithHeader","papaparseConfig","download","transformHeader","duplicateColumnTransformer","undefined","error","e","Error","result","data","rows","headerRow","meta","fields","generateHeader","length","map","row","Array","isArray","asyncIterator","_options","batchSize","asyncQueue","isFirstRow","tableBatchBuilder","schema","config","chunkSize","step","results","collapsedRow","flat","join","trim","bytesUsed","cursor","deduceSchema","JSON","stringify","addRow","batch","getFullBatch","enqueue","complete","getFinalBatch","close","every","value","preview","observedColumns","Set","col","colName","counter","has","concat","add","count","arguments","headers","i","push","columnName","String","index","type","Float32Array"],"sources":["../../src/csv-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {Batch, TableBatch} from '@loaders.gl/schema';\n\nimport {\n AsyncQueue,\n Table,\n TableBatchBuilder,\n convertToArrayRow,\n convertToObjectRow\n} from '@loaders.gl/schema';\nimport Papa from './papaparse/papaparse';\nimport AsyncIteratorStreamer from './papaparse/async-iterator-streamer';\n\ntype ObjectField = {name: string; index: number; type: any};\ntype ObjectSchema = {[key: string]: ObjectField} | ObjectField[];\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type CSVLoaderOptions = LoaderOptions & {\n csv?: {\n // loaders.gl options\n shape?: 'array-row-table' | 'object-row-table' | 'columnar-table';\n /** optimizes memory usage but increases parsing time. */\n optimizeMemoryUsage?: boolean;\n columnPrefix?: string;\n header?: 'auto';\n\n // CSV options (papaparse)\n // delimiter: auto\n // newline: auto\n quoteChar?: string;\n escapeChar?: string;\n // Convert numbers and boolean values in rows from strings\n dynamicTyping?: boolean;\n comments?: boolean;\n skipEmptyLines?: boolean | 'greedy';\n // transform: null?\n delimitersToGuess?: string[];\n // fastMode: auto\n };\n};\n\nconst DEFAULT_CSV_LOADER_OPTIONS = {\n csv: {\n shape: 'object-row-table',\n optimizeMemoryUsage: false,\n // CSV options\n header: 'auto',\n columnPrefix: 'column',\n // delimiter: auto\n // newline: auto\n quoteChar: '\"',\n escapeChar: '\"',\n dynamicTyping: true,\n comments: false,\n skipEmptyLines: true,\n // transform: null?\n delimitersToGuess: [',', '\\t', '|', ';']\n // fastMode: auto\n }\n};\n\nexport const CSVLoader: LoaderWithParser<Table, TableBatch, CSVLoaderOptions> = {\n id: 'csv',\n module: 'csv',\n name: 'CSV',\n version: VERSION,\n extensions: ['csv', 'tsv', 'dsv'],\n mimeTypes: ['text/csv', 'text/tab-separated-values', 'text/dsv'],\n category: 'table',\n parse: async (arrayBuffer: ArrayBuffer, options?: CSVLoaderOptions) =>\n parseCSV(new TextDecoder().decode(arrayBuffer), options),\n parseText: (text: string, options?: CSVLoaderOptions) => parseCSV(text, options),\n parseInBatches: parseCSVInBatches,\n // @ts-ignore\n // testText: null,\n options: DEFAULT_CSV_LOADER_OPTIONS as CSVLoaderOptions\n};\n\nasync function parseCSV(csvText: string, options?: CSVLoaderOptions) {\n // Apps can call the parse method directly, we so apply default options here\n const csvOptions = {...DEFAULT_CSV_LOADER_OPTIONS.csv, ...options?.csv};\n\n const firstRow = readFirstRow(csvText);\n const header: boolean =\n csvOptions.header === 'auto' ? isHeaderRow(firstRow) : Boolean(csvOptions.header);\n\n const parseWithHeader = header;\n\n const papaparseConfig = {\n // dynamicTyping: true,\n ...csvOptions,\n header: parseWithHeader,\n download: false, // We handle loading, no need for papaparse to do it for us\n transformHeader: parseWithHeader ? duplicateColumnTransformer() : undefined,\n error: (e) => {\n throw new Error(e);\n }\n };\n\n const result = Papa.parse(csvText, papaparseConfig);\n let {data: rows} = result;\n\n const headerRow = result.meta.fields || generateHeader(csvOptions.columnPrefix, firstRow.length);\n\n switch (csvOptions.shape) {\n case 'object-row-table':\n rows = rows.map((row) => (Array.isArray(row) ? convertToObjectRow(row, headerRow) : row));\n break;\n case 'array-row-table':\n rows = rows.map((row) => (Array.isArray(row) ? row : convertToArrayRow(row, headerRow)));\n break;\n default:\n }\n\n /*\n if (!header && shape === 'object-row-table') {\n // If the dataset has no header, transform the array result into an object shape with an\n // autogenerated header\n return result.data.map((row) =>\n row.reduce((acc, value, i) => {\n acc[headerRow[i]] = value;\n return acc;\n }, {})\n );\n }\n */\n return rows;\n}\n\n// TODO - support batch size 0 = no batching/single batch?\nfunction parseCSVInBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options?: CSVLoaderOptions\n): AsyncIterable<Batch> {\n // Papaparse does not support standard batch size handling\n // TODO - investigate papaparse chunks mode\n options = {...options};\n if (options.batchSize === 'auto') {\n options.batchSize = 4000;\n }\n\n // Apps can call the parse method directly, we so apply default options here\n const csvOptions = {...DEFAULT_CSV_LOADER_OPTIONS.csv, ...options?.csv};\n\n const asyncQueue = new AsyncQueue<Batch>();\n\n let isFirstRow: boolean = true;\n let headerRow: string[] | null = null;\n let tableBatchBuilder: TableBatchBuilder | null = null;\n let schema: ObjectSchema | null = null;\n\n const config = {\n // dynamicTyping: true, // Convert numbers and boolean values in rows from strings,\n ...csvOptions,\n header: false, // Unfortunately, header detection is not automatic and does not infer shapes\n download: false, // We handle loading, no need for papaparse to do it for us\n // chunkSize is set to 5MB explicitly (same as Papaparse default) due to a bug where the\n // streaming parser gets stuck if skipEmptyLines and a step callback are both supplied.\n // See https://github.com/mholt/PapaParse/issues/465\n chunkSize: 1024 * 1024 * 5,\n // skipEmptyLines is set to a boolean value if supplied. Greedy is set to true\n // skipEmptyLines is handled manually given two bugs where the streaming parser gets stuck if\n // both of the skipEmptyLines and step callback options are provided:\n // - true doesn't work unless chunkSize is set: https://github.com/mholt/PapaParse/issues/465\n // - greedy doesn't work: https://github.com/mholt/PapaParse/issues/825\n skipEmptyLines: false,\n\n // step is called on every row\n // eslint-disable-next-line complexity\n step(results) {\n let row = results.data;\n\n if (csvOptions.skipEmptyLines) {\n // Manually reject lines that are empty\n const collapsedRow = row.flat().join('').trim();\n if (collapsedRow === '') {\n return;\n }\n }\n const bytesUsed = results.meta.cursor;\n\n // Check if we need to save a header row\n if (isFirstRow && !headerRow) {\n // Auto detects or can be forced with csvOptions.header\n const header = csvOptions.header === 'auto' ? isHeaderRow(row) : Boolean(csvOptions.header);\n if (header) {\n headerRow = row.map(duplicateColumnTransformer());\n return;\n }\n }\n\n // If first data row, we can deduce the schema\n if (isFirstRow) {\n isFirstRow = false;\n if (!headerRow) {\n headerRow = generateHeader(csvOptions.columnPrefix, row.length);\n }\n schema = deduceSchema(row, headerRow);\n }\n\n if (csvOptions.optimizeMemoryUsage) {\n // A workaround to allocate new strings and don't retain pointers to original strings.\n // https://bugs.chromium.org/p/v8/issues/detail?id=2869\n row = JSON.parse(JSON.stringify(row));\n }\n\n // Add the row\n tableBatchBuilder =\n tableBatchBuilder ||\n new TableBatchBuilder(\n // @ts-expect-error TODO this is not a proper schema\n schema,\n {\n shape: csvOptions.shape || 'array-row-table',\n ...options\n }\n );\n\n try {\n tableBatchBuilder.addRow(row);\n // If a batch has been completed, emit it\n const batch = tableBatchBuilder && tableBatchBuilder.getFullBatch({bytesUsed});\n if (batch) {\n asyncQueue.enqueue(batch);\n }\n } catch (error) {\n asyncQueue.enqueue(error as Error);\n }\n },\n\n // complete is called when all rows have been read\n complete(results) {\n try {\n const bytesUsed = results.meta.cursor;\n // Ensure any final (partial) batch gets emitted\n const batch = tableBatchBuilder && tableBatchBuilder.getFinalBatch({bytesUsed});\n if (batch) {\n asyncQueue.enqueue(batch);\n }\n } catch (error) {\n asyncQueue.enqueue(error as Error);\n }\n\n asyncQueue.close();\n }\n };\n\n Papa.parse(asyncIterator, config, AsyncIteratorStreamer);\n\n // TODO - Does it matter if we return asyncIterable or asyncIterator\n // return asyncQueue[Symbol.asyncIterator]();\n return asyncQueue;\n}\n\n/**\n * Checks if a certain row is a header row\n * @param row the row to check\n * @returns true if the row looks like a header\n */\nfunction isHeaderRow(row: string[]): boolean {\n return row && row.every((value) => typeof value === 'string');\n}\n\n/**\n * Reads, parses, and returns the first row of a CSV text\n * @param csvText the csv text to parse\n * @returns the first row\n */\nfunction readFirstRow(csvText: string): any[] {\n const result = Papa.parse(csvText, {\n download: false,\n dynamicTyping: true,\n preview: 1\n });\n return result.data[0];\n}\n\n/**\n * Creates a transformer that renames duplicate columns. This is needed as Papaparse doesn't handle\n * duplicate header columns and would use the latest occurrence by default.\n * See the header option in https://www.papaparse.com/docs#config\n * @returns a transform function that returns sanitized names for duplicate fields\n */\nfunction duplicateColumnTransformer() {\n const observedColumns = new Set();\n return (col) => {\n let colName = col;\n let counter = 1;\n while (observedColumns.has(colName)) {\n colName = `${col}.${counter}`;\n counter++;\n }\n observedColumns.add(colName);\n return colName;\n };\n}\n\n/**\n * Generates the header of a CSV given a prefix and a column count\n * @param columnPrefix the columnPrefix to use\n * @param count the count of column names to generate\n * @returns an array of column names\n */\nfunction generateHeader(columnPrefix: string, count: number = 0): string[] {\n const headers: string[] = [];\n for (let i = 0; i < count; i++) {\n headers.push(`${columnPrefix}${i + 1}`);\n }\n return headers;\n}\n\nfunction deduceSchema(row, headerRow): ObjectSchema {\n const schema: ObjectSchema = headerRow ? {} : [];\n for (let i = 0; i < row.length; i++) {\n const columnName = (headerRow && headerRow[i]) || i;\n const value = row[i];\n switch (typeof value) {\n case 'number':\n case 'boolean':\n // TODO - booleans could be handled differently...\n schema[columnName] = {name: String(columnName), index: i, type: Float32Array};\n break;\n case 'string':\n default:\n schema[columnName] = {name: String(columnName), index: i, type: Array};\n // We currently only handle numeric rows\n // TODO we could offer a function to map strings to numbers?\n }\n }\n return schema;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"csv-loader.js","names":["AsyncQueue","TableBatchBuilder","convertToArrayRow","convertToObjectRow","Papa","AsyncIteratorStreamer","VERSION","DEFAULT_CSV_SHAPE","CSVLoader","id","module","name","version","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCSV","TextDecoder","decode","parseText","text","parseInBatches","parseCSVInBatches","csv","shape","optimizeMemoryUsage","header","columnPrefix","quoteChar","escapeChar","dynamicTyping","comments","skipEmptyLines","delimitersToGuess","csvText","csvOptions","firstRow","readFirstRow","isHeaderRow","Boolean","parseWithHeader","papaparseConfig","download","transformHeader","duplicateColumnTransformer","undefined","error","e","Error","result","rows","data","headerRow","meta","fields","generateHeader","length","map","row","Array","isArray","asyncIterator","_options","batchSize","asyncQueue","isFirstRow","tableBatchBuilder","schema","config","chunkSize","step","results","collapsedRow","flat","join","trim","bytesUsed","cursor","deduceSchema","JSON","stringify","addRow","batch","getFullBatch","enqueue","complete","getFinalBatch","close","every","value","preview","observedColumns","Set","col","colName","counter","has","concat","add","count","arguments","headers","i","push","columnName","String","index","type","Float32Array"],"sources":["../../src/csv-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {ArrayRowTable, ObjectRowTable, TableBatch} from '@loaders.gl/schema';\n\nimport {\n AsyncQueue,\n Table,\n TableBatchBuilder,\n convertToArrayRow,\n convertToObjectRow\n} from '@loaders.gl/schema';\nimport Papa from './papaparse/papaparse';\nimport AsyncIteratorStreamer from './papaparse/async-iterator-streamer';\n\ntype ObjectField = {name: string; index: number; type: any};\ntype ObjectSchema = {[key: string]: ObjectField} | ObjectField[];\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst DEFAULT_CSV_SHAPE = 'object-row-table';\n\nexport type CSVLoaderOptions = LoaderOptions & {\n csv?: {\n // loaders.gl options\n shape?: 'array-row-table' | 'object-row-table';\n /** optimizes memory usage but increases parsing time. */\n optimizeMemoryUsage?: boolean;\n columnPrefix?: string;\n header?: 'auto';\n\n // CSV options (papaparse)\n // delimiter: auto\n // newline: auto\n quoteChar?: string;\n escapeChar?: string;\n // Convert numbers and boolean values in rows from strings\n dynamicTyping?: boolean;\n comments?: boolean;\n skipEmptyLines?: boolean | 'greedy';\n // transform: null?\n delimitersToGuess?: string[];\n // fastMode: auto\n };\n};\n\nexport const CSVLoader: LoaderWithParser<Table, TableBatch, CSVLoaderOptions> = {\n id: 'csv',\n module: 'csv',\n name: 'CSV',\n version: VERSION,\n extensions: ['csv', 'tsv', 'dsv'],\n mimeTypes: ['text/csv', 'text/tab-separated-values', 'text/dsv'],\n category: 'table',\n parse: async (arrayBuffer: ArrayBuffer, options?: CSVLoaderOptions) =>\n parseCSV(new TextDecoder().decode(arrayBuffer), options),\n parseText: (text: string, options?: CSVLoaderOptions) => parseCSV(text, options),\n parseInBatches: parseCSVInBatches,\n // @ts-ignore\n // testText: null,\n options: {\n csv: {\n shape: DEFAULT_CSV_SHAPE, // 'object-row-table'\n optimizeMemoryUsage: false,\n // CSV options\n header: 'auto',\n columnPrefix: 'column',\n // delimiter: auto\n // newline: auto\n quoteChar: '\"',\n escapeChar: '\"',\n dynamicTyping: true,\n comments: false,\n skipEmptyLines: true,\n // transform: null?\n delimitersToGuess: [',', '\\t', '|', ';']\n // fastMode: auto\n }\n }\n};\n\nasync function parseCSV(\n csvText: string,\n options?: CSVLoaderOptions\n): Promise<ObjectRowTable | ArrayRowTable> {\n // Apps can call the parse method directly, we so apply default options here\n const csvOptions = {...CSVLoader.options.csv, ...options?.csv};\n\n const firstRow = readFirstRow(csvText);\n const header: boolean =\n csvOptions.header === 'auto' ? isHeaderRow(firstRow) : Boolean(csvOptions.header);\n\n const parseWithHeader = header;\n\n const papaparseConfig = {\n // dynamicTyping: true,\n ...csvOptions,\n header: parseWithHeader,\n download: false, // We handle loading, no need for papaparse to do it for us\n transformHeader: parseWithHeader ? duplicateColumnTransformer() : undefined,\n error: (e) => {\n throw new Error(e);\n }\n };\n\n const result = Papa.parse(csvText, papaparseConfig);\n const rows = result.data as any[];\n\n const headerRow = result.meta.fields || generateHeader(csvOptions.columnPrefix!, firstRow.length);\n\n const shape = csvOptions.shape || DEFAULT_CSV_SHAPE;\n switch (shape) {\n case 'object-row-table':\n return {\n shape: 'object-row-table',\n data: rows.map((row) => (Array.isArray(row) ? convertToObjectRow(row, headerRow) : row))\n };\n case 'array-row-table':\n return {\n shape: 'array-row-table',\n data: rows.map((row) => (Array.isArray(row) ? row : convertToArrayRow(row, headerRow)))\n };\n default:\n throw new Error(shape);\n }\n}\n\n// TODO - support batch size 0 = no batching/single batch?\nfunction parseCSVInBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options?: CSVLoaderOptions\n): AsyncIterable<TableBatch> {\n // Papaparse does not support standard batch size handling\n // TODO - investigate papaparse chunks mode\n options = {...options};\n if (options.batchSize === 'auto') {\n options.batchSize = 4000;\n }\n\n // Apps can call the parse method directly, we so apply default options here\n const csvOptions = {...CSVLoader.options.csv, ...options?.csv};\n\n const asyncQueue = new AsyncQueue<TableBatch>();\n\n let isFirstRow: boolean = true;\n let headerRow: string[] | null = null;\n let tableBatchBuilder: TableBatchBuilder | null = null;\n let schema: ObjectSchema | null = null;\n\n const config = {\n // dynamicTyping: true, // Convert numbers and boolean values in rows from strings,\n ...csvOptions,\n header: false, // Unfortunately, header detection is not automatic and does not infer shapes\n download: false, // We handle loading, no need for papaparse to do it for us\n // chunkSize is set to 5MB explicitly (same as Papaparse default) due to a bug where the\n // streaming parser gets stuck if skipEmptyLines and a step callback are both supplied.\n // See https://github.com/mholt/PapaParse/issues/465\n chunkSize: 1024 * 1024 * 5,\n // skipEmptyLines is set to a boolean value if supplied. Greedy is set to true\n // skipEmptyLines is handled manually given two bugs where the streaming parser gets stuck if\n // both of the skipEmptyLines and step callback options are provided:\n // - true doesn't work unless chunkSize is set: https://github.com/mholt/PapaParse/issues/465\n // - greedy doesn't work: https://github.com/mholt/PapaParse/issues/825\n skipEmptyLines: false,\n\n // step is called on every row\n // eslint-disable-next-line complexity, max-statements\n step(results) {\n let row = results.data;\n\n if (csvOptions.skipEmptyLines) {\n // Manually reject lines that are empty\n const collapsedRow = row.flat().join('').trim();\n if (collapsedRow === '') {\n return;\n }\n }\n const bytesUsed = results.meta.cursor;\n\n // Check if we need to save a header row\n if (isFirstRow && !headerRow) {\n // Auto detects or can be forced with csvOptions.header\n const header = csvOptions.header === 'auto' ? isHeaderRow(row) : Boolean(csvOptions.header);\n if (header) {\n headerRow = row.map(duplicateColumnTransformer());\n return;\n }\n }\n\n // If first data row, we can deduce the schema\n if (isFirstRow) {\n isFirstRow = false;\n if (!headerRow) {\n headerRow = generateHeader(csvOptions.columnPrefix!, row.length);\n }\n schema = deduceSchema(row, headerRow);\n }\n\n if (csvOptions.optimizeMemoryUsage) {\n // A workaround to allocate new strings and don't retain pointers to original strings.\n // https://bugs.chromium.org/p/v8/issues/detail?id=2869\n row = JSON.parse(JSON.stringify(row));\n }\n\n const shape = csvOptions.shape || DEFAULT_CSV_SHAPE;\n\n // Add the row\n tableBatchBuilder =\n tableBatchBuilder ||\n new TableBatchBuilder(\n // @ts-expect-error TODO this is not a proper schema\n schema,\n {\n shape,\n ...options\n }\n );\n\n try {\n tableBatchBuilder.addRow(row);\n // If a batch has been completed, emit it\n const batch = tableBatchBuilder && tableBatchBuilder.getFullBatch({bytesUsed});\n if (batch) {\n asyncQueue.enqueue(batch);\n }\n } catch (error) {\n asyncQueue.enqueue(error as Error);\n }\n },\n\n // complete is called when all rows have been read\n complete(results) {\n try {\n const bytesUsed = results.meta.cursor;\n // Ensure any final (partial) batch gets emitted\n const batch = tableBatchBuilder && tableBatchBuilder.getFinalBatch({bytesUsed});\n if (batch) {\n asyncQueue.enqueue(batch);\n }\n } catch (error) {\n asyncQueue.enqueue(error as Error);\n }\n\n asyncQueue.close();\n }\n };\n\n Papa.parse(asyncIterator, config, AsyncIteratorStreamer);\n\n // TODO - Does it matter if we return asyncIterable or asyncIterator\n // return asyncQueue[Symbol.asyncIterator]();\n return asyncQueue;\n}\n\n/**\n * Checks if a certain row is a header row\n * @param row the row to check\n * @returns true if the row looks like a header\n */\nfunction isHeaderRow(row: string[]): boolean {\n return row && row.every((value) => typeof value === 'string');\n}\n\n/**\n * Reads, parses, and returns the first row of a CSV text\n * @param csvText the csv text to parse\n * @returns the first row\n */\nfunction readFirstRow(csvText: string): any[] {\n const result = Papa.parse(csvText, {\n download: false,\n dynamicTyping: true,\n preview: 1\n });\n return result.data[0];\n}\n\n/**\n * Creates a transformer that renames duplicate columns. This is needed as Papaparse doesn't handle\n * duplicate header columns and would use the latest occurrence by default.\n * See the header option in https://www.papaparse.com/docs#config\n * @returns a transform function that returns sanitized names for duplicate fields\n */\nfunction duplicateColumnTransformer(): (column: string) => string {\n const observedColumns = new Set<string>();\n return (col) => {\n let colName = col;\n let counter = 1;\n while (observedColumns.has(colName)) {\n colName = `${col}.${counter}`;\n counter++;\n }\n observedColumns.add(colName);\n return colName;\n };\n}\n\n/**\n * Generates the header of a CSV given a prefix and a column count\n * @param columnPrefix the columnPrefix to use\n * @param count the count of column names to generate\n * @returns an array of column names\n */\nfunction generateHeader(columnPrefix: string, count: number = 0): string[] {\n const headers: string[] = [];\n for (let i = 0; i < count; i++) {\n headers.push(`${columnPrefix}${i + 1}`);\n }\n return headers;\n}\n\nfunction deduceSchema(row, headerRow): ObjectSchema {\n const schema: ObjectSchema = headerRow ? {} : [];\n for (let i = 0; i < row.length; i++) {\n const columnName = (headerRow && headerRow[i]) || i;\n const value = row[i];\n switch (typeof value) {\n case 'number':\n case 'boolean':\n // TODO - booleans could be handled differently...\n schema[columnName] = {name: String(columnName), index: i, type: Float32Array};\n break;\n case 'string':\n default:\n schema[columnName] = {name: String(columnName), index: i, type: Array};\n // We currently only handle numeric rows\n // TODO we could offer a function to map strings to numbers?\n }\n }\n return schema;\n}\n"],"mappings":"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"}
|
package/dist/esm/csv-writer.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import { encodeTableAsCSV } from './lib/encoders/encode-csv';
|
|
2
|
-
const DEFAULT_WRITER_OPTIONS = {
|
|
3
|
-
csv: {
|
|
4
|
-
useDisplayNames: false
|
|
5
|
-
},
|
|
6
|
-
useDisplayNames: false
|
|
7
|
-
};
|
|
8
2
|
export const CSVWriter = {
|
|
9
3
|
id: 'csv',
|
|
10
4
|
version: 'latest',
|
|
@@ -12,9 +6,14 @@ export const CSVWriter = {
|
|
|
12
6
|
name: 'CSV',
|
|
13
7
|
extensions: ['csv'],
|
|
14
8
|
mimeTypes: ['text/csv'],
|
|
15
|
-
options:
|
|
9
|
+
options: {
|
|
10
|
+
csv: {
|
|
11
|
+
useDisplayNames: false
|
|
12
|
+
},
|
|
13
|
+
useDisplayNames: false
|
|
14
|
+
},
|
|
16
15
|
text: true,
|
|
17
16
|
encode: async (table, options) => new TextEncoder().encode(encodeTableAsCSV(table, options)).buffer,
|
|
18
|
-
|
|
17
|
+
encodeTextSync: (table, options) => encodeTableAsCSV(table, options)
|
|
19
18
|
};
|
|
20
19
|
//# sourceMappingURL=csv-writer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv-writer.js","names":["encodeTableAsCSV","
|
|
1
|
+
{"version":3,"file":"csv-writer.js","names":["encodeTableAsCSV","CSVWriter","id","version","module","name","extensions","mimeTypes","options","csv","useDisplayNames","text","encode","table","TextEncoder","buffer","encodeTextSync"],"sources":["../../src/csv-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n/* global TextEncoder */\nimport type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport {encodeTableAsCSV} from './lib/encoders/encode-csv';\n\nexport type CSVWriterOptions = WriterOptions & {\n csv?: {\n useDisplayNames?: boolean;\n };\n /** @deprecated */\n useDisplayNames?: boolean;\n};\n\nexport const CSVWriter: Writer<Table, TableBatch, CSVWriterOptions> = {\n id: 'csv',\n version: 'latest',\n module: 'csv',\n name: 'CSV',\n extensions: ['csv'],\n mimeTypes: ['text/csv'],\n options: {\n csv: {\n useDisplayNames: false\n },\n /** @deprecated use csv.displayNames */\n useDisplayNames: false\n },\n text: true,\n encode: async (table, options) =>\n new TextEncoder().encode(encodeTableAsCSV(table, options)).buffer,\n encodeTextSync: (table, options) => encodeTableAsCSV(table, options)\n};\n"],"mappings":"AAKA,SAAQA,gBAAgB,QAAO,2BAA2B;AAU1D,OAAO,MAAMC,SAAsD,GAAG;EACpEC,EAAE,EAAE,KAAK;EACTC,OAAO,EAAE,QAAQ;EACjBC,MAAM,EAAE,KAAK;EACbC,IAAI,EAAE,KAAK;EACXC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,UAAU,CAAC;EACvBC,OAAO,EAAE;IACPC,GAAG,EAAE;MACHC,eAAe,EAAE;IACnB,CAAC;IAEDA,eAAe,EAAE;EACnB,CAAC;EACDC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,MAAAA,CAAOC,KAAK,EAAEL,OAAO,KAC3B,IAAIM,WAAW,CAAC,CAAC,CAACF,MAAM,CAACZ,gBAAgB,CAACa,KAAK,EAAEL,OAAO,CAAC,CAAC,CAACO,MAAM;EACnEC,cAAc,EAAEA,CAACH,KAAK,EAAEL,OAAO,KAAKR,gBAAgB,CAACa,KAAK,EAAEL,OAAO;AACrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-csv.js","names":["makeArrayRowIterator","getTableNumCols","csvFormatRows","encodeTableAsCSV","table","_options$csv","_table$schema","options","arguments","length","undefined","csv","useDisplayNames","fields","schema","columnNames","map","f","_f$metadata","displayName","metadata","name","formattedData","row","formattedRow","columnIndex","value","preformatFieldValue","push","Date","toISOString","JSON","stringify","String"],"sources":["../../../../src/lib/encoders/encode-csv.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Table, makeArrayRowIterator, getTableNumCols} from '@loaders.gl/schema';\nimport {csvFormatRows} from 'd3-dsv';\n\ntype EncodableData = string | null;\n\
|
|
1
|
+
{"version":3,"file":"encode-csv.js","names":["makeArrayRowIterator","getTableNumCols","csvFormatRows","encodeTableAsCSV","table","_options$csv","_table$schema","options","arguments","length","undefined","csv","useDisplayNames","fields","schema","columnNames","map","f","_f$metadata","displayName","metadata","name","formattedData","row","formattedRow","columnIndex","value","preformatFieldValue","push","Date","toISOString","JSON","stringify","String"],"sources":["../../../../src/lib/encoders/encode-csv.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Table, makeArrayRowIterator, getTableNumCols} from '@loaders.gl/schema';\nimport {csvFormatRows} from 'd3-dsv';\nimport type {CSVWriterOptions} from '../../csv-writer';\n\ntype EncodableData = string | null;\n\n/**\n * Encode a Table object as CSV\n */\nexport function encodeTableAsCSV(\n table: Table,\n options: CSVWriterOptions = {csv: {useDisplayNames: true}}\n): string {\n const useDisplayNames = options.useDisplayNames || options.csv?.useDisplayNames;\n\n const fields = table.schema?.fields || [];\n\n const columnNames = fields.map((f) => {\n // This is a leaky abstraction, assuming Kepler metadata\n const displayName = f.metadata?.displayName;\n return useDisplayNames && typeof displayName === 'string' ? displayName : f.name;\n });\n const formattedData: EncodableData[][] = [columnNames];\n\n for (const row of makeArrayRowIterator(table)) {\n const formattedRow: EncodableData[] = [];\n for (let columnIndex = 0; columnIndex < getTableNumCols(table); ++columnIndex) {\n const value = row[columnIndex];\n formattedRow[columnIndex] = preformatFieldValue(value);\n }\n formattedData.push(formattedRow);\n }\n\n return csvFormatRows(formattedData);\n}\n\n/**\n * Stringifies a value\n * @todo Why is it called parse?\n */\nconst preformatFieldValue = (value: unknown): EncodableData => {\n if (value === null || value === undefined) {\n // TODO: It would be nice to distinguish between missing values and the empty string\n // https://github.com/d3/d3-dsv/issues/84\n return null;\n }\n if (value instanceof Date) {\n // d3-dsv formats dates without timezones if they don't have time info;\n // this forces them to always use fully-qualified ISO time strings\n return value.toISOString();\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n};\n"],"mappings":"AAGA,SAAeA,oBAAoB,EAAEC,eAAe,QAAO,oBAAoB;AAC/E,SAAQC,aAAa,QAAO,QAAQ;AAQpC,OAAO,SAASC,gBAAgBA,CAC9BC,KAAY,EAEJ;EAAA,IAAAC,YAAA,EAAAC,aAAA;EAAA,IADRC,OAAyB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG;IAACG,GAAG,EAAE;MAACC,eAAe,EAAE;IAAI;EAAC,CAAC;EAE1D,MAAMA,eAAe,GAAGL,OAAO,CAACK,eAAe,MAAAP,YAAA,GAAIE,OAAO,CAACI,GAAG,cAAAN,YAAA,uBAAXA,YAAA,CAAaO,eAAe;EAE/E,MAAMC,MAAM,GAAG,EAAAP,aAAA,GAAAF,KAAK,CAACU,MAAM,cAAAR,aAAA,uBAAZA,aAAA,CAAcO,MAAM,KAAI,EAAE;EAEzC,MAAME,WAAW,GAAGF,MAAM,CAACG,GAAG,CAAEC,CAAC,IAAK;IAAA,IAAAC,WAAA;IAEpC,MAAMC,WAAW,IAAAD,WAAA,GAAGD,CAAC,CAACG,QAAQ,cAAAF,WAAA,uBAAVA,WAAA,CAAYC,WAAW;IAC3C,OAAOP,eAAe,IAAI,OAAOO,WAAW,KAAK,QAAQ,GAAGA,WAAW,GAAGF,CAAC,CAACI,IAAI;EAClF,CAAC,CAAC;EACF,MAAMC,aAAgC,GAAG,CAACP,WAAW,CAAC;EAEtD,KAAK,MAAMQ,GAAG,IAAIvB,oBAAoB,CAACI,KAAK,CAAC,EAAE;IAC7C,MAAMoB,YAA6B,GAAG,EAAE;IACxC,KAAK,IAAIC,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAGxB,eAAe,CAACG,KAAK,CAAC,EAAE,EAAEqB,WAAW,EAAE;MAC7E,MAAMC,KAAK,GAAGH,GAAG,CAACE,WAAW,CAAC;MAC9BD,YAAY,CAACC,WAAW,CAAC,GAAGE,mBAAmB,CAACD,KAAK,CAAC;IACxD;IACAJ,aAAa,CAACM,IAAI,CAACJ,YAAY,CAAC;EAClC;EAEA,OAAOtB,aAAa,CAACoB,aAAa,CAAC;AACrC;AAMA,MAAMK,mBAAmB,GAAID,KAAc,IAAoB;EAC7D,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKhB,SAAS,EAAE;IAGzC,OAAO,IAAI;EACb;EACA,IAAIgB,KAAK,YAAYG,IAAI,EAAE;IAGzB,OAAOH,KAAK,CAACI,WAAW,CAAC,CAAC;EAC5B;EACA,IAAI,OAAOJ,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOK,IAAI,CAACC,SAAS,CAACN,KAAK,CAAC;EAC9B;EACA,OAAOO,MAAM,CAACP,KAAK,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/bundle.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,aAAa,KAAqB,CAAC"}
|
|
@@ -3,7 +3,7 @@ import type { TableBatch } from '@loaders.gl/schema';
|
|
|
3
3
|
import { Table } from '@loaders.gl/schema';
|
|
4
4
|
export type CSVLoaderOptions = LoaderOptions & {
|
|
5
5
|
csv?: {
|
|
6
|
-
shape?: 'array-row-table' | 'object-row-table'
|
|
6
|
+
shape?: 'array-row-table' | 'object-row-table';
|
|
7
7
|
/** optimizes memory usage but increases parsing time. */
|
|
8
8
|
optimizeMemoryUsage?: boolean;
|
|
9
9
|
columnPrefix?: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-loader.d.ts","sourceRoot":"","sources":["../../src/csv-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAgC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAEL,KAAK,EAIN,MAAM,oBAAoB,CAAC;AAa5B,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QAEJ,KAAK,CAAC,EAAE,iBAAiB,GAAG,kBAAkB,CAAC;QAC/C,yDAAyD;QACzD,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAKhB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;QAEpC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAE9B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAiC3E,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Writer, WriterOptions } from '@loaders.gl/loader-utils';
|
|
2
|
+
import type { Table, TableBatch } from '@loaders.gl/schema';
|
|
3
|
+
export type CSVWriterOptions = WriterOptions & {
|
|
4
|
+
csv?: {
|
|
5
|
+
useDisplayNames?: boolean;
|
|
6
|
+
};
|
|
7
|
+
/** @deprecated */
|
|
8
|
+
useDisplayNames?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare const CSVWriter: Writer<Table, TableBatch, CSVWriterOptions>;
|
|
11
|
+
//# sourceMappingURL=csv-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-writer.d.ts","sourceRoot":"","sources":["../../src/csv-writer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAC,KAAK,EAAE,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAG1D,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,kBAAkB;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAkBjE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AACnD,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAEvC,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AACnD,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Table } from '@loaders.gl/schema';
|
|
2
|
+
import type { CSVWriterOptions } from '../../csv-writer';
|
|
3
|
+
/**
|
|
4
|
+
* Encode a Table object as CSV
|
|
5
|
+
*/
|
|
6
|
+
export declare function encodeTableAsCSV(table: Table, options?: CSVWriterOptions): string;
|
|
7
|
+
//# sourceMappingURL=encode-csv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode-csv.d.ts","sourceRoot":"","sources":["../../../../src/lib/encoders/encode-csv.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,KAAK,EAAwC,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAIvD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,gBAAiD,GACzD,MAAM,CAsBR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-iterator-streamer.d.ts","sourceRoot":"","sources":["../../../src/papaparse/async-iterator-streamer.ts"],"names":[],"mappings":"AAWA,iBAAwB,qBAAqB,CAAC,MAAM,KAAA,QAwDnD;kBAxDuB,qBAAqB;;;eAArB,qBAAqB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"papaparse.d.ts","sourceRoot":"","sources":["../../../src/papaparse/papaparse.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;CAuBT,CAAC;AACF,eAAe,IAAI,CAAC;AAepB,iBAAS,SAAS,CAChB,MAAM,KAAA,EACN,OAAO,KAAA,EACP,mBAAmB,CAAC,KAAA,OAiErB;AAED,iBAAS,SAAS,CAAC,MAAM,KAAA,EAAE,OAAO,KAAA,UA+KjC;AAED,gFAAgF;AAChF,iBAAS,aAAa,CAAC,MAAM,KAAA,QAuF5B;AACD,iBAAS,cAAc,CAAC,MAAM,KAAA,QAiB7B;kBAjBQ,cAAc;;;AAsBvB,iBAAS,YAAY,CAAC,OAAO,KAAA,QA8T5B;AAOD,gEAAgE;AAChE,iBAAS,MAAM,CAAC,MAAM,KAAA,QA8TrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2020.full.d.ts","../src/bundle.ts","../../loader-utils/dist/types.d.ts","../../loader-utils/dist/loader-types.d.ts","../../loader-utils/dist/writer-types.d.ts","../../loader-utils/dist/lib/env-utils/assert.d.ts","../../loader-utils/dist/lib/env-utils/globals.d.ts","../../loader-utils/dist/lib/option-utils/merge-loader-options.d.ts","../../loader-utils/dist/lib/worker-loader-utils/create-loader-worker.d.ts","../../loader-utils/dist/lib/worker-loader-utils/parse-with-worker.d.ts","../../loader-utils/dist/lib/worker-loader-utils/encode-with-worker.d.ts","../../loader-utils/dist/lib/parser-utils/parse-json.d.ts","../../loader-utils/dist/lib/binary-utils/array-buffer-utils.d.ts","../../loader-utils/dist/lib/binary-utils/memory-copy-utils.d.ts","../../loader-utils/dist/lib/binary-utils/dataview-copy-utils.d.ts","../../loader-utils/dist/lib/binary-utils/get-first-characters.d.ts","../../loader-utils/dist/lib/iterators/text-iterators.d.ts","../../loader-utils/dist/lib/iterators/async-iteration.d.ts","../../loader-utils/node_modules/@probe.gl/stats/dist/lib/stat.d.ts","../../loader-utils/node_modules/@probe.gl/stats/dist/lib/stats.d.ts","../../loader-utils/node_modules/@probe.gl/stats/dist/utils/hi-res-timestamp.d.ts","../../loader-utils/node_modules/@probe.gl/stats/dist/index.d.ts","../../loader-utils/dist/lib/request-utils/request-scheduler.d.ts","../../loader-utils/dist/lib/path-utils/file-aliases.d.ts","../../schema/dist/types/types.d.ts","../../schema/dist/types/schema.d.ts","../../../node_modules/apache-arrow/node_modules/flatbuffers/js/constants.d.ts","../../../node_modules/apache-arrow/node_modules/flatbuffers/js/encoding.d.ts","../../../node_modules/apache-arrow/node_modules/flatbuffers/js/byte-buffer.d.ts","../../../node_modules/apache-arrow/node_modules/flatbuffers/js/builder.d.ts","../../../node_modules/apache-arrow/node_modules/flatbuffers/js/types.d.ts","../../../node_modules/apache-arrow/node_modules/flatbuffers/js/utils.d.ts","../../../node_modules/apache-arrow/node_modules/flatbuffers/js/flatbuffers.d.ts","../../../node_modules/apache-arrow/fb/body-compression-method.d.ts","../../../node_modules/apache-arrow/fb/compression-type.d.ts","../../../node_modules/apache-arrow/fb/body-compression.d.ts","../../../node_modules/apache-arrow/fb/buffer.d.ts","../../../node_modules/apache-arrow/fb/field-node.d.ts","../../../node_modules/apache-arrow/fb/record-batch.d.ts","../../../node_modules/apache-arrow/fb/dictionary-batch.d.ts","../../../node_modules/apache-arrow/fb/endianness.d.ts","../../../node_modules/apache-arrow/fb/dictionary-kind.d.ts","../../../node_modules/apache-arrow/fb/int.d.ts","../../../node_modules/apache-arrow/fb/dictionary-encoding.d.ts","../../../node_modules/apache-arrow/fb/key-value.d.ts","../../../node_modules/apache-arrow/fb/binary.d.ts","../../../node_modules/apache-arrow/fb/bool.d.ts","../../../node_modules/apache-arrow/fb/date-unit.d.ts","../../../node_modules/apache-arrow/fb/date.d.ts","../../../node_modules/apache-arrow/fb/decimal.d.ts","../../../node_modules/apache-arrow/fb/time-unit.d.ts","../../../node_modules/apache-arrow/fb/duration.d.ts","../../../node_modules/apache-arrow/fb/fixed-size-binary.d.ts","../../../node_modules/apache-arrow/fb/fixed-size-list.d.ts","../../../node_modules/apache-arrow/fb/precision.d.ts","../../../node_modules/apache-arrow/fb/floating-point.d.ts","../../../node_modules/apache-arrow/fb/interval-unit.d.ts","../../../node_modules/apache-arrow/fb/interval.d.ts","../../../node_modules/apache-arrow/fb/large-binary.d.ts","../../../node_modules/apache-arrow/fb/large-list.d.ts","../../../node_modules/apache-arrow/fb/large-utf8.d.ts","../../../node_modules/apache-arrow/fb/list.d.ts","../../../node_modules/apache-arrow/fb/map.d.ts","../../../node_modules/apache-arrow/fb/null.d.ts","../../../node_modules/apache-arrow/fb/run-end-encoded.d.ts","../../../node_modules/apache-arrow/fb/struct-.d.ts","../../../node_modules/apache-arrow/fb/time.d.ts","../../../node_modules/apache-arrow/fb/timestamp.d.ts","../../../node_modules/apache-arrow/fb/union-mode.d.ts","../../../node_modules/apache-arrow/fb/union.d.ts","../../../node_modules/apache-arrow/fb/utf8.d.ts","../../../node_modules/apache-arrow/fb/type.d.ts","../../../node_modules/apache-arrow/fb/field.d.ts","../../../node_modules/apache-arrow/fb/schema.d.ts","../../../node_modules/apache-arrow/fb/sparse-matrix-compressed-axis.d.ts","../../../node_modules/apache-arrow/fb/sparse-matrix-index-csx.d.ts","../../../node_modules/apache-arrow/fb/sparse-tensor-index-coo.d.ts","../../../node_modules/apache-arrow/fb/sparse-tensor-index-csf.d.ts","../../../node_modules/apache-arrow/fb/sparse-tensor-index.d.ts","../../../node_modules/apache-arrow/fb/tensor-dim.d.ts","../../../node_modules/apache-arrow/fb/sparse-tensor.d.ts","../../../node_modules/apache-arrow/fb/tensor.d.ts","../../../node_modules/apache-arrow/fb/message-header.d.ts","../../../node_modules/apache-arrow/enum.d.ts","../../../node_modules/apache-arrow/schema.d.ts","../../../node_modules/apache-arrow/row/map.d.ts","../../../node_modules/apache-arrow/row/struct.d.ts","../../../node_modules/apache-arrow/builder/buffer.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/apache-arrow/io/node/builder.d.ts","../../../node_modules/apache-arrow/io/whatwg/builder.d.ts","../../../node_modules/apache-arrow/builder.d.ts","../../../node_modules/apache-arrow/builder/bool.d.ts","../../../node_modules/apache-arrow/builder/null.d.ts","../../../node_modules/apache-arrow/builder/date.d.ts","../../../node_modules/apache-arrow/builder/decimal.d.ts","../../../node_modules/apache-arrow/builder/int.d.ts","../../../node_modules/apache-arrow/builder/dictionary.d.ts","../../../node_modules/apache-arrow/builder/fixedsizebinary.d.ts","../../../node_modules/apache-arrow/builder/float.d.ts","../../../node_modules/apache-arrow/builder/time.d.ts","../../../node_modules/apache-arrow/builder/timestamp.d.ts","../../../node_modules/apache-arrow/builder/interval.d.ts","../../../node_modules/apache-arrow/builder/utf8.d.ts","../../../node_modules/apache-arrow/builder/binary.d.ts","../../../node_modules/apache-arrow/builder/list.d.ts","../../../node_modules/apache-arrow/builder/fixedsizelist.d.ts","../../../node_modules/apache-arrow/builder/map.d.ts","../../../node_modules/apache-arrow/builder/struct.d.ts","../../../node_modules/apache-arrow/builder/union.d.ts","../../../node_modules/apache-arrow/interfaces.d.ts","../../../node_modules/apache-arrow/type.d.ts","../../../node_modules/apache-arrow/vector.d.ts","../../../node_modules/apache-arrow/data.d.ts","../../../node_modules/apache-arrow/recordbatch.d.ts","../../../node_modules/apache-arrow/table.d.ts","../../../node_modules/apache-arrow/visitor.d.ts","../../../node_modules/apache-arrow/factories.d.ts","../../../node_modules/apache-arrow/io/interfaces.d.ts","../../../node_modules/apache-arrow/util/buffer.d.ts","../../../node_modules/apache-arrow/io/stream.d.ts","../../../node_modules/apache-arrow/fb/block.d.ts","../../../node_modules/apache-arrow/ipc/metadata/file.d.ts","../../../node_modules/apache-arrow/ipc/metadata/json.d.ts","../../../node_modules/apache-arrow/ipc/metadata/message.d.ts","../../../node_modules/apache-arrow/io/file.d.ts","../../../node_modules/apache-arrow/ipc/message.d.ts","../../../node_modules/apache-arrow/ipc/reader.d.ts","../../../node_modules/apache-arrow/ipc/writer.d.ts","../../../node_modules/apache-arrow/ipc/serialization.d.ts","../../../node_modules/apache-arrow/util/bn.d.ts","../../../node_modules/apache-arrow/util/int.d.ts","../../../node_modules/apache-arrow/util/bit.d.ts","../../../node_modules/apache-arrow/visitor/typecomparator.d.ts","../../../node_modules/apache-arrow/arrow.d.ts","../../../node_modules/apache-arrow/arrow.dom.d.ts","../../../node_modules/apache-arrow/arrow.node.d.ts","../../schema/dist/types/batch.d.ts","../../../node_modules/@types/geojson/index.d.ts","../../schema/dist/types/flat-geometries.d.ts","../../schema/dist/types/binary-geometries.d.ts","../../schema/dist/types/category-gis.d.ts","../../schema/dist/types/category-table.d.ts","../../schema/dist/lib/table/batches/table-batch-aggregator.d.ts","../../schema/dist/lib/table/batches/table-batch-builder.d.ts","../../schema/dist/lib/table/batches/row-table-batch-aggregator.d.ts","../../schema/dist/lib/table/batches/columnar-table-batch-aggregator.d.ts","../../schema/dist/lib/table/simple-table/table-accessors.d.ts","../../schema/dist/lib/table/arrow-api/enum.d.ts","../../schema/dist/lib/table/arrow-api/arrow-like-type.d.ts","../../schema/dist/lib/table/arrow-api/arrow-like-field.d.ts","../../schema/dist/lib/table/arrow-api/arrow-like-schema.d.ts","../../schema/dist/lib/table/arrow-api/arrow-like-table.d.ts","../../schema/dist/lib/table/simple-table/make-table.d.ts","../../schema/dist/lib/table/simple-table/convert-table.d.ts","../../schema/dist/lib/table/simple-table/table-schema.d.ts","../../schema/dist/lib/table/simple-table/row-utils.d.ts","../../schema/dist/lib/table/simple-table/data-type.d.ts","../../schema/dist/types/category-mesh.d.ts","../../schema/dist/lib/mesh/mesh-utils.d.ts","../../schema/dist/lib/mesh/deduce-mesh-schema.d.ts","../../schema/dist/types/category-image.d.ts","../../schema/dist/types/category-texture.d.ts","../../schema/dist/lib/table/arrow-api/index.d.ts","../../schema/dist/lib/table/arrow-api/get-type-info.d.ts","../../schema/dist/lib/table/arrow/arrow-type-utils.d.ts","../../schema/dist/lib/utils/async-queue.d.ts","../../schema/dist/index.d.ts","../../loader-utils/dist/json-loader.d.ts","../../loader-utils/dist/lib/binary-utils/memory-conversion-utils.d.ts","../../loader-utils/dist/lib/node/promisify.d.ts","../../loader-utils/dist/lib/path-utils/path.d.ts","../../loader-utils/dist/lib/node/fs.d.ts","../../loader-utils/dist/lib/node/stream.d.ts","../../loader-utils/dist/lib/filesystems/filesystem.d.ts","../../loader-utils/dist/lib/filesystems/node-filesystem.d.ts","../../loader-utils/dist/lib/file-provider/file-provider.d.ts","../../loader-utils/dist/lib/file-provider/file-handle.d.ts","../../loader-utils/dist/lib/file-provider/file-handle-file.d.ts","../../loader-utils/dist/lib/file-provider/data-view-file.d.ts","../../loader-utils/dist/lib/filesystems/readable-file.d.ts","../../loader-utils/dist/lib/filesystems/writable-file.d.ts","../../loader-utils/dist/lib/sources/data-source.d.ts","../../loader-utils/dist/lib/sources/utils/image-type.d.ts","../../loader-utils/dist/lib/sources/image-source.d.ts","../../loader-utils/dist/service-types.d.ts","../../loader-utils/dist/lib/sources/tile-source.d.ts","../../loader-utils/dist/lib/sources/image-tile-source.d.ts","../../loader-utils/dist/lib/sources/vector-tile-source.d.ts","../../loader-utils/dist/index.d.ts","../src/papaparse/papaparse.ts","../src/papaparse/async-iterator-streamer.ts","../src/csv-loader.ts","../src/lib/encoders/encode-csv.ts","../src/csv-writer.ts","../src/index.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/brotli/compress.d.ts","../../../node_modules/@types/brotli/decompress.d.ts","../../../node_modules/@types/brotli/index.d.ts","../../../node_modules/@types/command-line-args/index.d.ts","../../../node_modules/@types/command-line-usage/index.d.ts","../../../node_modules/@types/crypto-js/index.d.ts","../../../node_modules/@types/emscripten/index.d.ts","../../../node_modules/@types/send/node_modules/@types/mime/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/mime/mime.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/ndarray/index.d.ts","../../../node_modules/@types/get-pixels/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/hammerjs/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/node-int64/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/offscreencanvas/index.d.ts","../../../node_modules/@types/pad-left/index.d.ts","../../../node_modules/@types/pako/index.d.ts","../../../node_modules/@types/pbf/index.d.ts","../../../node_modules/@types/pngjs/index.d.ts","../../../node_modules/@types/proj4/index.d.ts","../../../node_modules/@types/q/index.d.ts","../../../node_modules/@types/sql.js/index.d.ts","../../../node_modules/@types/through/index.d.ts","../../../node_modules/@types/tape/index.d.ts","../../../node_modules/@types/tape-promise/index.d.ts","../../../node_modules/@types/thrift/index.d.ts","../../../node_modules/@types/varint/index.d.ts","../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"322cc0ca9c311414642c0d7ef3b57beedbac198ca074e3e109a4be4c366dcb81",{"version":"9d3c44c5662654459def646b30ff930d4198e5b77d57cf1d21d5de5f7b30dc07","signature":"1160f1801f74994542376d565e986ec3e49c83b662019fe09e2b5107e75977fb","affectsGlobalScope":true},"33e032e02fe1909039aba738d93c54a3552ee2347f47c811c0decd0b8f5b2f3e","eb6943b690bf74e4ad9976b3ef54735a9105af9c8705213a919016049ac97048","354ada2e04452d05bc4aa6f471ed6f917772c954e8a325d98892c74ceed21109","27939d01f8d6be041c1d5c1816b428b3e8229829233e073f7b45b6af3b660ebe","7c4dd44256edda6b1e653ade809a4834ea1672557c32740e7018a89082e67f98","50cccf12df778f241ed7bc0924507debdc3ea0aab99bd8567f4f62ec66ce1e71","16945fb857d0467c9990ab40c66ee4b548b9aac85fdb1dee0a51d7dc93962c57","394462987ac0b4c19b7c59b4eb984f9e5db86af93a96e752918d945197e22982","d20beb3b34cb36fa1a97972df3321ec8e4462a842544c81877f2150bc9c2ddf9","e0f7c61f78b9d64f5c05de758086d992bea83dbdf0c6cace9c5df02534cd0bb2","8312a4d6aa569fc57d9f564678e5817483feb50fedebe84e50cc9c1cf0c33459","65e0b1ad130fc07161f051c2a5e5c3c4a5d3fc9ae70806b87aa3d91e21f25fb4","2ad4364f8229359d8d87035a32a6a4adf4ae17ae417c3020e5051177856f0d6c","d1c7ce4be3ae34ad0b2ea4a685f2521701a36382808d049ac5e2d259025479ed","ab844b5925c28e479fc12a62d863d475404134f4d5c55f9287666ea94aa30d1f","2da34af5c8cf099add4be5774fd504f802e6e0711820b0cddd76da9182c90f19","8432aee1c4d9e7490d0276956afb4945285aa54ca0ef2ea33c94a1362ad40656","289c93fe295277a33119aaee688863eee6d7ec57111f428a12f77ab6af9790a9","476cc782a34c53072c7b585184fab1da9cc381337ce8c7562e2d50d1a16ef5ad","6dd764e36d98ddf0b22e042d5a693a3e7664accff7029a75492e061d763febed","8b789c97d89d9a45ac1005dd50350aecc2c4e9d9ec56efacc3edf41171324ef4","1d6736f895b28f9db177573a41c4b33566a0764b149f0e0dc92116786ae375a2","49e837668d4c989f90c458286cef8ba31dff74baa3101b7246cb4bb0d1401cfe","4407fb1764e98192ae81b9d86e0bda41402fa9dcdc5993feb5f1687fcd4a3d67","05adb45e3dde250b6ae4a50b9dd26457489cbe6bb5de36468aea83df2324e3b8","b71da9f22a46322f03f5900108c7bc23fe598e2dcd3955d94df0bf9b03adc9ef","15d54b1dc36761e843f740e13d896928b5bcb76c9cca250faded032e552ff447","791b89410fb8a65d6993c0bc12abc6a404ffaf21609d752b00228116b2ee1897","a6ce2450e3b08abb086b77e0408b4717322b370715b77f0b9f185619e2523b8c","5bcefd704c479b68d8050f61beeb84911739d7db5ce22b50c2c8396a7f8a973e","1bf22eff6631acc2d999b72cb87f26781fe2d449000beab70e5becba665237aa","cb31fbd38e527e01368c338daa15c472c9dacb72a0a6e483d7f338d2a2b88d92","9a056e9b9acc76b8320976d9fe6cd87c53bc1f4e2919613bcceebcff6b539cfa","a8f09ab4bfbaf32009c5ceb09f267c45d3e9fad63a9640c3dfc824480522eb1c","8d6da1d6d75e21fc322882a7a6cce39c4a85279582c0652fad76ae658f1fa4d8","2dcb4881af7d254e20cef0d36e33ef63025cea48ac9b739e310ac8dfb6a4d4d1","0e8c1b7ce40dab54106b02db1b529a9d1d34b0bec61bdd3af9c27dfc5041b8d5","fdd8e8b914f1d8c32363f45e37f9577be9f65e9171833a4c8c117afde983df3b","9fa2d338f2c6e4fb5a2cf20bc83f24102f177c9996a9550ab9cb295afc443322","b6b354bd57b44849015d119134a2adf6136dd459fb38f3625fbb35c844343362","831e08bc1e0e0fed9f34180a42bcffa15437283b3a90c453f98fd82f639784c0","576d3ac930288e7fe44873f24dd8ba11873ab8c536c5f67464e9acdbdbf5f0be","6210058f2ce3e9052681f3d2df475d6bda1cee4584dd3a5ef1ef0e60959522d7","7a04ce0e85d6db683f63ec9f2699fac3e2d9fdd6a9313dda42e25761a3c83a2c","2b9c4aed45c33a93dc6de1e5894094090363aaee045921a0e6ef245657c5315d","b9c7f144f9051934bba76cb051d806377a0676ed488ae5764daa9bf7a198fbad","dd36b72841bc2a5edbe39640abc5d0175f06b9de32d6b767615c62c460330382","de06c3051539ddd64044947bf5a804005e98b09613699b19de1c09ef8e8df95f","681c8a82369365bef1360957b467844e8bb3e9626df2162d904c8bbfc92863f8","8585b7a7cc1cb48171fd9e168ca0126a921189c6643cc4dd5dac43de6d3b61e4","7eb739af12059b8c368641641776937254b381ba298e43820b78696d4e12d3c9","f85ef2b6b6243d398b2146de3186f12c825a18295d3913aee1d7ad237856c6c3","e83218020bb0bc9a527cf10bca9f3afe489900c60dee03e8398fe135054c81ae","d30f3ae4c835c4006e1676170181461e7e97b4e1d2fa0c96a4d0a355cd97fd8f","989b02e98599537eccb0e89c3c737b75159fc64299bcee5ecf495535a4096efd","b0cfe92f5a41d98256df17702e2e30afbcbc5d33fcde330b20dcac2df26b393e","7de22e2447797056c5bbf57153d8e7d7106bab19b2bb8111cf9c9776935b81e9","74ecda5bfdd35b1b365b3069acb0224303c20b458e92dbacf6954eef4d9f30db","7e1862fcb5a27f449515e7ad569afb738896183889a3dfbf09f125d2ad1effaa","c3bc001ab25d65e716b576b0c607d413802122e85fedf847629227fdbf73298e","e0644b2e6e5f5709fd5b0377e801ae12fbd1a9d612312ed86b823159421e29fd","1dfa53faf0395d8e6714329b001659009171d5268f7231ad05fefeb19b7dd0a2","baf281afcc69097878a9f76190ec1139cdcb6d39adb1e0685644789fe99769ed","6d0e0c26cd26694ef8f4776443fdd846add0a327244424b5be1eb3320a770486","77df8e8553d35e13728f6d0a37ca982520046645694ec1edab9df2df4e905dc2","387575cfe4ed66a1e3b066d2b6923c41be68d39905d62a8fa00e95cee9d4e719","03c9cee66774b18d3c20119b5fd25b3a94f95757aa82cb5bfe9cf7cb91400bd9","0c7aadf8379300a1dba35b087663c682f440aa5923ea96a8ff9ff483b891766c","70f8da676faa53028982803fb3b389b98119fb0b41df9020a3130b008ac6dc74","2409017257471ec5e3bf053cb4a0e0a5f3a7f11901a247118c1654980d7e1fe7","8b729a1d9b4f457b23b790a07111742b5c2714b614da768550e0a7309350e438","07ae8276b1ded724db7342f1271258bdf7d897ad47affecde328f89543fbef71","959e21dddaa3d50c7a9573c033371f8a8eb75e1da2e4f0d2ffc2e44862a7939f","5c5150c7774dcedeaf599b1372b8158b3f8a0e665d602a35e34470822da59f59","fbe77f3f07a47c30835cb7b88d1aeaf605052884b819f0669977a9977bbd4a8f","07cf01ae7f286d5c1390bec1fc2cad285c2cd96b3778b61eddfadd2305786040","d07829c9a6e7288abc6d1df2d0e3ffd31a2418b38e7bf3d374437042844ed17f","7299ae6e1cd70af673d26872a2c7616ea6fa287021669473bdd7842c94094f61","820567b6f3633584ecd3e57c8cc192a6a18f2803edfe730fd1531d9cb6fed891","2ae462dea06b9d0a202c1c034ae686d225169038c33242052f4edf93db00b254","5ffe14c99d9130074d6bbc1edeabe4b4ef9168a05986ac7aff84ac5735c4d77b","e5fdfb44e69cc7ddaf28db39288c24b1116f33539aee0b0fc7b7a436c73cb727","980826c7be8addf3ca7bb0c238d26a682442dfbe0abe8103e63fbba13b942a2c","7f9371e6554e4e48793a31a353d00fa92dd92a0b8fa8ae00e480036e3a4d2776","fdcd57d2575b4e00c4c92b1a2fa15c791365aa763c4d4c901c3f3a362acd27d5","f59156c06f6c0cdbffd04ca6d99b093ba6deceffa921e68e9aebc8f49cb6ec4e","7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"f749812878fecfa53cfc13b36e5d35086fb6377983a9df44175da83ccc23af1f","affectsGlobalScope":true},"7d2e3fea24c712c99c03ad8f556abedbfe105f87f1be10b95dbd409d24bc05a3",{"version":"211e3f15fbced4ab4be19f49ffa990b9ff20d749d33b65ff753be691e7616239","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","e596c9bb2f29a2699fdd4ae89139612652245192f67f45617c5a4b20832aaae9","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","1cdcfc1f624d6c08aa12c73935f6e13f095919cd99edf95752951796eb225729","216717f17c095cde1dc19375e1ab3af0a4a485355860c077a4f9d6ea59fab5b5","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"00dee7cdca8b8420c47ea4a31a34b8e8294013ebc4f463fd941e867e7bf05029","affectsGlobalScope":true},"80473bd0dd90ca1e166514c2dfead9d5803f9c51418864ca35abbeec6e6847e1","1c84b46267610a34028edfd0d035509341751262bac1062857f3c8df7aff7153","3bd1b21f21d18995315d232c5c7e868651e109396f3ca48fa8ab15f57a20d911","a3d541d303ee505053f5dcbf9fafb65cac3d5631037501cd616195863a6c5740","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true},"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"0715e4cd28ad471b2a93f3e552ff51a3ae423417a01a10aa1d3bc7c6b95059d6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","4f3fdeba4e28e21aa719c081b8dc8f91d47e12e773389b9d35679c08151c9d37","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","f69ff39996a61a0dd10f4bce73272b52e8024a4d58b13ab32bf4712909d0a2b7",{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","1422cd9e705adcc09088fda85a900c2b70e3ad36ea85846f68bd1a884cdf4e2b","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"a73ae8c0e62103bb9e21bb6538700881bf135b9a8b125b857ec68edfa0da4ed3","affectsGlobalScope":true},{"version":"e1c1b2fbe236bf7ee3e342eeae7e20efb8988a0ac7da1cbbfa2c1f66b76c3423","affectsGlobalScope":true},"868831cab82b65dfe1d68180e898af1f2101e89ba9b754d1db6fb8cc2fac1921","0fe8985a28f82c450a04a6edf1279d7181c0893f37da7d2a27f8efd4fd5edb03","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"52120bb7e4583612225bdf08e7c12559548170f11e660d33a33623bae9bbdbba","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a6dd3dba8e665ac43d279e0fdf5219edda0eed69b5e9a5061f46cd6a65c4f7a1","73812e98e1ea55e4183fc4cd49c968ce9fb5affad9cd7503781f58160ac830df","dd1f84835041fb21fbcb6d213290cfdb07fbd7551c5b9340db3f5a8906d403c9","d1cf164102945309b279ff06bc2d121ac737e5487a2408914655f689ecc2be1f","fd2d5cc8041746b1cc71ab247163982c68b4fad0522b2a8f555368d57f1aa134","7f56883fceba869ca2e3bab049cf33272bac1a6937c235c652e0bbd9aef67624","af1f132f95a4a56d9304f8dfe68f116d2324b0368411574932c55cbe2fafa214","4e0a5de3811fcb44426b7f6bea3458d1c794591d0b4a715c51c3ad5d70f08ab4","68b735874e866f37d072bf674535a9f33965132ed9e1e4164a6fbc494d590604","9cec0cc895584e0e42d5c97c4a16ebd25a4fa60730c186edf0d28df0a5bc3702","94d41a754d3dda0f2517d49d181f1ba1d812b85e7bc2c822c40be945328edc33","842ffda229092b37ce0bc6748b09a38aaedc8490a69b3a10ec48ebf47baa3224","0449afb9de90d153878437b4004c6c5ce1e2f8f33e93ace383d387b683bac845","358999876ec96fa23597d354ed2fe6ae495d7c654e720ab3be349179133ed14d","8daf1c92a5955e61e5f82160f1d3db34beb4b60657a20ed91e450b32c4d09350","74e3a9065b290394d3ee7fb111bb4523d846663d898aa21bb76c8e9af979ffa2","e19b2a73885f75f29b2adcf1077c8dde7d69137af24c065b5ae7d7fa9bd3b820","0e720e8c78a3398bb6fe498919c4e21ce991c093a93235d7641891b65d0cad54","207e465a5c27537cd6c987739a0ccdd2bd0b13dc69511d11bfe979e19fcbbbbd","7008aa856c52cc0af5aa6c755abfba94dbc5e0a9dac3f9a985eb5ed52e6d535d","27551a71453552cdb14453753b2808fb405e6b1495f53b1de318953ac4ac73b5","0bb991b7c106b013ccd1b236bca252a34d8cfd2a61387409c1c407e8e07acada","0d510711f47a9337d385f7f53cb9bca5a59c245c40d5499ca6db75410a8a9436","865cad10c204bb43eafcdb1957ff4dd810c3caf290cbc18a67d5ca5d48a9b398","a8129d8de89732097a12fa202536d1f18d418be881e1fe2d40cb8883d141a3ea","02fad3c2d4fb705ad84df9e48beeb60b55e803913d504bdb7f37ec80f088d26f","fe47866cf57ede76bc97ddce7d33933ec21a4ffda175a10841e8fba45de7330f","ffe308a8dca440f45388b685bd7bee2a61d9d40624fcd0d6383844d90843bb68","3b7f2318cf351fcf9883a2c87ca85ce4dd3027dfbf6931fc034c9d3f23a2b6c3","8f9fdb0a9539cb998c359c0b991b6c687092306141076a7843d31b016adcd154","533ab639c90c7b6dc53c792dc20e8eecd08b87f7d8b7b9b76df681169a6c097d","f8f1b109894f78f146db848fe2989a01200b094b46677345ba90c0d9a218786a","dd01829a1232dc969066f1a1f478a25ee453a4e76f4e033080e279520b4460ba","d6bf6f2a8f1bf3fdc6ad05035672d8c38a04f72f39c5a55db9f1844689eec144","ec1e72c665317467b85ad4d27f5c106e6a888116f8757d883c8600e5f299192e","414e31d3a66f5c79cb49e82c3960a6983f1c031df82de1008bd255bf7aee58ae","d5d9c822987d673eabe9f058211e5d4015e38023e99738a63157fdf98ad17705","87b5a7dce771abfa0ea41eca3935c98f98148b9f563a62c582f0b456a63d951a","5d176ae3b4b1d9b4fd09dd2181d8822dbdfda2975efbe688289e7799e4acc3f1","9c43cd99639d7a77f9fdbfbc083dc5e074a2755be234dd19005bf01ab6ba1451","26f5cc01fbfc3491b155f37a4972de5df84e9f732ec20c3279992004a695b5aa","27496861e0db6ede90b48607bccd9ea9a18aeac897b463cfadead98abe105ccc","c9be5b0a527826562a6f4026b846647af717bb1366327b31e8eef98ea630b349","87fd703309f6f640f2a0a6ce79c0b14c02cbbfdbd3913d6af601be883ab8cf18","9bb021b1303e52cdc159ad2a254e449c68b9b5157ae26b9d918f19e2c8d94223","ce3e8890c187fdab18aa9c41aeadd0bb3fb13875dea5ea03e1d3c07e8446ee79","2d4ad114f5c2e8d7ca7cbcb94035fd4f45bfdb53dbbc82bd5be39431326ade39","1a90db26f4f4dee02b8bd2a7d470bb08162c644185630c5d71436592d9331536","b01d9cda99bd4a3363a6605f0e20de677fb6942eadd642991fb05a27abbba73e","933684c327bcf518415160c9279befae18e006f3650ad56f6745bc2e1916323f","a3b6c93a9838b8c94c6998e85646d6f2d07c20ecfe1e235dba62158b29451391","0fa5fb053d5976cfc833eac924af0e4d12bcc148a22d2bc05eb4a56dcdfe5c0d","63cf7392a0c1877d0b3d25648e16b32bddebe11f08ba474035b191c960cee0f2","202a0f6f9eff1d888a7a360df4f871a7de8aa7be9d2a14ab6b06943ff5fd46f2","333214d4175cfc3fc50ce50c59204c240a1d79e22adee2fef0f358d5ad5a9c8d","9ebdf3e2e4de01b5761d7863c61e0d7fa690637d92393ef31790a580c5e2f5a9","907a7f4a2f1e385ac53af2c6543acac6b9adab1ef1f827ef2663e4e7f1a98aa4","95f146c547caf2f02fbbd80dd1889aab37912af904d3f70e388ec4fd5c3946a4","f89f5c94352802530fb3801545d83ffa8ce8f9d6d996ce82aa24ddc019e97e47","63c917bca35d28e15479dc2b1b6e572881ba4ee2495390ea8eb91374e43745e3","31fa6e8452bef01da6aa5ad57e621e240c87bc3175ce2d2de552c85d710db746","3014b762a92a846346ae6f1e44164ec30ef6e41e9290fbde51802ae472c7379e","5329a5972c3953a19a37ce65ac539a47de96e36ff87e7eda90d68760e9ed2a5e","cce4acd479fa79d1662ce4fd3b1bc098b3b43d347e4f7c563ea9c5bb38182a8c","11a10cec3cf5b452d4d1729841296cfd7bd52f9834004f690c6f1fd41a3281fb","f21309ea38bcb63431532d4c139c235c1d5c5bc4ce15eb8c5cf2055b6b4f1d82","b7eee16c3d82d32ee916e9a663d0e6da58b6620ba094227a3b8bc51c88d83ba9","5283047c95c3895b54471261aada51dd47b4e7c6fb00d58f8a8b4034bd0be517","e29e9bad6fb8e05f3ce22b495ed839301dd8d057484fbd4f4c7218d360f941af","406134b920a681373ceba80dda358a015b0379d752b82b4a4430367196a6f4b5","99ee232ec78662869c921fee90c3809fec53e0e9fcdb0f225b63365a799bc38b","d1ada1111c2d8c6f20f940b0185fcd6f20562c0045d25433d5e2af37bee85fc1","7de5231dae45cbe3be9061a3da7ad310a7b0ee69a485926cb19e9914d3903659","cec525a8b23a69471866f78df566f48b3dec3d1325d2e32b24435bb17b0fbc2e","d9c400c03120bd59a0f8c61ca675a92d17679980ec3fd03c8fd566c2962f8cc8","8f1a5455aeff08cbc457dd6779a1ad32dfbb45f8e19075d2a99cbbbb8d519937","dd743ab18dd99672635b11dfc9c6a4ec2e586a018878b6b7d2b6456fabb1c493","6eeeac9646fd4c561c7aa730b9c4a1475eb31a13b0bb682a370cac5faa3feaba","9ee3277aa530d275d666fb69afbb6282c480e7aa5fdd3acede75afda7518abe0","8ad7bb10245defe33f41541c9ae6ba370ba1d691aa76c8bc6ed20834d2770926","417723bcd93ea77a71730d4326b2e9eb3f29ddcf3c217a307dd23fba6921f05b","b3b44303e3858ca1299d6d90165d9e9ef8f9a3a6a430edb31e3001fdc7dc0c68","0eb0ddc4a3111b0e63e4580d71017c73e63bc07e340ca0bcc6635573b3fdde7a","74607de7ffe82d5cea87b084f47bd689e5b32866a79434a2153377cf148dce66","1133c27ca4c37e4b52f6d9734aebfe3bae666447725f7f7a8c0541ae7f898b77","25cf1493daa6661a8a955338741a31c5423d519c197c3c554f4b73ad7e393027","de71c909039b1fedfb18cdd165c2e5cb6689ab64075727acb401d4911c6f2d0b","227df7b107274d6ffaceb1d88ec959c3db787ece3f68b13f170208b9d46825c7","cc452d7aee67d7c81a107da08d17d36bf5e89a13c3819dff8441deee3d4be005","7f9c8e3b58f1af8e935b9e072587cfc3a3a18f798dc11ffbecf9ac7bf194bf8f","5387fd5eb366c494db9bc2c5f1f5fa6c41d363757fd7231e4d8f38fdd0a4bf41","e62d41c984ae275aa3676b2ec6fee1d8ea5148f641a017f9bd6f8944f0b5686a","a814321be049bf59256278f68dce5bd5199c521394b3032b74fde53265c3d492","aedd3163c1b62854300b573c8245a7ac347fdb5ffc27c92a00bb6db9e1871e30","7c76ab476606c9854a69848f7840db3f5e8c59e6756731084225a0ff18cfc943","8866ab4e6485e32b7d70c8e100f4e89db84d880b58d09b5c95966aef09632ffc","1a9a1c754b492ae0755c1c33cca2f8892d39b1453c01c09448904327e8f85bad","4f59c4fffe84fbdb76212c4220071d4b7e583489294297be51c45a4a8db17219","7268ec23902797ad5aea59730b57d42ccd71c6eb887ffa802f0ca5afc71ffcc8","ff21e7e7c360c3d979877f7ce5edc7fa4bd1bf1f7d388fdcaebb701e035e3052","ee84e5a974673240fabe54fec55bda6a6695bd7ef027b47cd246397963cfdc7c","56f18cbaef6cfcb413f308dd3a0ebb4eaabb058c36b4bc43866642e12771aaf1",{"version":"8f2869cc655b12580adec567b745e567de74b417e4eab8628ba5ecd23ef5e5ff","signature":"8820074b3a54efa1de40568042869cff26f44887f0fa76c2ed14a302ef95c803"},{"version":"f71038a5cd16db3b8c0589d932af619436578e2f773f575590d66f69795dce66","signature":"589a00baf40c4fbd6f99457f626951617e39f3402179a2c5a705a3992e334fb8"},{"version":"89d3d98ec40e971b77d46fcbf4017baf94526cdd5f78493b1b4dea6a48651ee2","signature":"7bf018741694e71ceae7a6fadb6d2f41aa774b61f4558e4ce9d11859b71ff5b0"},{"version":"c8a61d40a36913b9c837bade8d97521ffd4e58bccd7a55de42d83c5ac3ec284a","signature":"ee4d7ded21074f95556f600b417f19a6c70f4392bf4a8f4238d23e42408cc87a"},{"version":"efca8eefe90e9487b8034e2b45d4ea04a05fcc9dceccc719a546710bc701c5d6","signature":"d9acf1c0fa6e12e0288f18309c4997c7fdd97f5da9bb91248c3fba1932705ba9"},{"version":"f7368e68b2ff356ff5c27cc635fcb50ad45f6e281d382f2649a354f756511ddf","signature":"2b5ff11e59fb01d503155bf670b2c07dc18a5c37bedc54f2e880ceea186279c0"},"6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","39c18ea70fa2449cb00c97e73b3b8f96983e423678cfede0fbcb9319cbefa67c","a6f0218395ecb8e0d736e0a19524223ab7a8a7ed217c4a99c165df2532e1beec","287bb1a9e0f935417f8e753687737d3c90c35a56d07448773fc3ec8f0f97a6be","629766229f541d92210f30a92b6038568ec165fab14b7ee53bdf13667da37ca3","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8",{"version":"4f9362850bb427525ba05c0e861dae06d9918bd16ccb38d504cb7294f69e8496","affectsGlobalScope":true},{"version":"82fcf338bc21711d93d65f981a7182f9942d3ac1f268c4480537c9b62c89d10d","affectsGlobalScope":true},"84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","aad5ffa61406b8e19524738fcf0e6fda8b3485bba98626268fdf252d1b2b630a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"352fc8497a30bc806d7defa0043d85802e5f35a7688731ee9a21456f5cb32a94","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","f7a9cb83c8fbc081a8b605880d191e0d0527cde2c1b2b2b623beca8f0203a2cd","43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","23790f2da8d5370068bf8ba250786babee91f619ba9f8e067957c7166c824432","9226af9c56e77e2de484e3778a33a53a1dfb11ead282a7bdc55c2ffd84136837","963d59066dd6742da1918a6213a209bcc205b8ee53b1876ee2b4e6d80f97c85e","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33",{"version":"3e947c8dc536e569ceb62a7cb0255e4866fd54dd5d35d21e49c7e755f5c134a6","affectsGlobalScope":true},"f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","cddf5c26907c0b8378bc05543161c11637b830da9fadf59e02a11e675d11e180","5774751340e987a6a9e4a5dcc03ff68a6515adc2b91423e1af2f660fc8f30e81","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","86889bc3e5323b1e92f5d23d41395ccee3dc91c37b5a5dbf115ea40fc13edd28","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a",{"version":"86cc8969b76067ccf25e02c62b7df6ccdb419481fbce594b5ae9da21e9015e39","affectsGlobalScope":true},"b92ae8263cac4e5a79f55fe6cb63c030b096679b98f603fbc13963c30ab7da5e","4e9d375d05a75efefcdae0a6a7be76861b5c96683acd31d1c8b120f60c0f6194","2a856615ecd0af49997dfbb38cf94fd787d529062a2e96ce26b84432e61d785d","0b6a0b628776a3e3a4aeeba090438a26e7ffa15373ce658452c78c1f2254665d","5764c1db026d0f1070ff009879d8f90dec70cebc3d1b27ca20f7beeac2afcae2","62b931417104c7cb35d0725e1869f51d52d7b18462fd58f32f846a314a42ba10","77b89017a4f1a1e5497efbbb0b742506b6c5c725d7d6855e793a12a97c7ace61","656424ca784760c679bf2677d8aaf55d1cb8452cd0ac04bbe1c0f659f45f8c11","bed28de34a5dd2b08d47b584da338e5fba92de84ce8727dd153d9ec16bc0f2e4","6745e41d07e777a049bb25425bb1c6c1a9b437bc2568ca8eef03daa8e8913ac0","032667dd4a981d2b58dfaf5840f5a2ea76160ab18658fdd5abd0a0bba1565af1","7382cbf0d8a841a91d7ae2217897bd53bcb9584ca6fbe123771167a7f641c157","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[49,[291,296]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":2,"module":1,"noImplicitAny":false,"noUnusedLocals":true,"outDir":"./","skipLibCheck":true,"strict":true,"target":7},"fileIdsList":[[182],[182,268,290,291,292],[182,268,290,294],[182,293,295],[182,268,295],[182,291],[50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,70,71,182,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289],[51,182,268],[50,182],[182,189],[182,277],[182,189,273],[182,189,273,275],[170,182,189],[153,182,189],[51,182],[69,182],[182,290],[182,283,284],[182,284,287],[182,287],[52,182],[182,285],[66,67,68,182],[66,182],[72,73,182,238,242,243,244,245,246,247,248,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267],[73,182,259],[72,182,259],[182,250],[73,182,251],[182,243,252],[182,249,251],[182,250,251,252,253],[72,182,237],[73,182,243,244],[73,182,243],[182,243],[72,73,182],[73,182,237],[72,182],[182,239,240,241],[72,73,182,243],[73,182,238,242],[182,262],[182,239],[155,182,189,297],[182,189,299,300],[155,182,189],[152,155,182,189,307,308,309],[182,298,309,310,314],[182,189,316],[152,153,182,189,318],[182,323],[182,311],[182,312],[136,182],[139,182],[140,145,173,182],[141,152,153,160,170,181,182],[141,142,152,160,182],[143,182],[144,145,153,161,182],[145,170,178,182],[146,148,152,160,182],[147,182],[148,149,182],[152,182],[150,152,182],[152,153,154,170,181,182],[152,153,154,167,170,173,182],[182,186],[148,155,160,170,181,182],[152,153,155,156,160,170,178,181,182],[155,157,170,178,181,182],[136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188],[152,158,182],[159,181,182],[148,152,160,170,182],[161,182],[162,182],[139,163,182],[164,180,182,186],[165,182],[166,182],[152,167,168,182],[167,169,182,184],[140,152,170,171,172,173,182],[140,170,172,182],[170,171,182],[173,182],[174,182],[152,176,177,182],[176,177,182],[145,160,170,178,182],[179,182],[160,180,182],[140,155,166,181,182],[145,182],[170,182,183],[182,184],[182,185],[140,145,152,154,163,170,181,182,184,186],[170,182,187],[170,182,187,189],[153,170,182,189,306],[155,182,189,312,313],[182,189,305],[182,337],[182,189,336],[152,155,157,160,178,182,189,326,334],[152,170,182,189],[130,131,132,133,134,182,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,225,227,228,229,230,231,232,233,234],[182,235],[182,236],[135,170,182,190,191,212,213,214],[182,192,212],[182,211],[182,192,197,212,213,214],[135,182,192,212],[131,182,212,213],[182,192,211,212,213,214,216],[80,182],[80,81,82,182],[80,95,182],[80,86,182],[80,89,90,182],[80,98,182],[80,91,92,119,182],[80,102,182],[80,104,182],[86,87,121,128,129,182],[80,83,84,85,182],[80,88,92,120,182],[80,84,90,122,182],[80,84,90,182],[123,124,125,182],[80,84,119,126,127,182],[80,84,119,127,182],[90,93,94,96,97,99,100,101,103,105,106,107,108,109,110,111,112,113,114,115,117,118,182],[80,116,182],[131,182,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,212],[182,219,220,221],[153,170,182,189],[170,182,189,192,212],[182,189,219,220],[182,192,212,213],[131,132,182,219,220,221,225],[80,131,132,182,220,222,225],[132,182,212,225],[80,84,85,86,87,120,121,131,132,182,212,220,224,225],[131,132,170,182,189,212,213,214,215,219,220,221,223,225,226,227],[182,212,216,228],[131,132,170,182,189,212,214,215,216,219,220,221,223,225],[76,78,182],[75,78,182],[74,75,76,77,78,79,182],[76,77,182],[132,182,212,213,214,216,225,235],[182,212,213,214],[182,212,214],[131,182,212],[132,182,211,212,213,214,215,225],[131,132,133,134,182,211,213,225],[182,211,220],[80,182,211],[182,211,212,214],[131,182],[132,182,212,213,214,217,225],[268,290],[293,295],[268,295]],"referencedMap":[[49,1],[293,2],[295,3],[296,4],[294,5],[292,6],[291,1],[290,7],[269,8],[60,1],[62,9],[63,1],[270,10],[61,1],[53,1],[54,1],[280,11],[279,11],[278,12],[277,1],[275,1],[276,13],[281,10],[282,14],[65,1],[64,1],[273,15],[271,1],[274,14],[55,16],[59,1],[71,1],[272,1],[70,17],[283,18],[285,19],[288,20],[287,1],[284,1],[289,21],[56,16],[58,22],[57,16],[51,9],[286,23],[50,1],[52,1],[69,24],[66,1],[67,25],[68,1],[268,26],[261,27],[260,28],[251,29],[252,30],[253,31],[250,32],[249,1],[265,29],[264,33],[266,34],[247,35],[246,35],[244,36],[245,35],[255,37],[258,38],[254,37],[257,1],[248,37],[256,36],[267,1],[238,39],[241,40],[242,41],[262,1],[259,42],[243,43],[263,44],[240,45],[73,1],[72,1],[298,46],[299,1],[300,1],[301,47],[302,1],[303,1],[297,48],[304,1],[305,1],[310,49],[315,50],[239,1],[317,51],[319,52],[320,1],[313,1],[321,1],[322,1],[324,53],[312,54],[311,55],[318,1],[325,1],[316,1],[326,10],[136,56],[137,56],[139,57],[140,58],[141,59],[142,60],[143,61],[144,62],[145,63],[146,64],[147,65],[148,66],[149,66],[151,67],[150,68],[152,67],[153,69],[154,70],[138,71],[188,1],[155,72],[156,73],[157,74],[189,75],[158,76],[159,77],[160,78],[161,79],[162,80],[163,81],[164,82],[165,83],[166,84],[167,85],[168,85],[169,86],[170,87],[172,88],[171,89],[173,90],[174,91],[175,1],[176,92],[177,93],[178,94],[179,95],[180,96],[181,97],[182,98],[183,99],[184,100],[185,101],[186,102],[187,103],[327,1],[328,1],[329,1],[330,1],[331,1],[332,104],[333,1],[334,1],[309,1],[308,1],[307,105],[306,1],[314,106],[335,107],[338,108],[337,109],[339,110],[336,14],[323,1],[340,10],[341,111],[235,112],[236,113],[237,114],[192,115],[205,116],[193,116],[135,117],[195,116],[196,116],[198,118],[199,116],[207,116],[200,116],[197,116],[203,116],[206,119],[208,116],[194,116],[209,116],[201,116],[202,116],[210,119],[204,116],[214,120],[131,1],[218,121],[93,122],[222,122],[81,1],[83,123],[94,122],[84,122],[82,1],[95,1],[96,124],[97,122],[87,125],[91,126],[89,1],[99,127],[88,1],[85,122],[120,128],[100,122],[101,122],[103,129],[90,122],[104,1],[105,130],[92,122],[106,122],[107,122],[108,122],[109,122],[110,122],[130,131],[111,122],[102,1],[86,132],[112,122],[121,133],[122,1],[123,134],[124,135],[125,135],[126,136],[128,137],[113,122],[127,122],[129,138],[98,1],[114,127],[115,127],[119,139],[116,1],[117,140],[118,122],[211,141],[226,142],[219,143],[190,144],[221,145],[191,146],[227,147],[223,148],[224,149],[225,150],[228,151],[230,152],[229,153],[77,154],[76,155],[74,1],[75,1],[80,156],[78,157],[79,1],[215,158],[133,159],[134,160],[132,161],[216,162],[212,163],[233,1],[231,164],[220,165],[232,1],[213,166],[217,167],[234,168],[46,1],[47,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[48,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[11,1],[10,1]],"exportedModulesMap":[[293,169],[295,169],[296,170],[294,171],[290,7],[269,8],[60,1],[62,9],[63,1],[270,10],[61,1],[53,1],[54,1],[280,11],[279,11],[278,12],[277,1],[275,1],[276,13],[281,10],[282,14],[65,1],[64,1],[273,15],[271,1],[274,14],[55,16],[59,1],[71,1],[272,1],[70,17],[283,18],[285,19],[288,20],[287,1],[284,1],[289,21],[56,16],[58,22],[57,16],[51,9],[286,23],[50,1],[52,1],[69,24],[66,1],[67,25],[68,1],[268,26],[261,27],[260,28],[251,29],[252,30],[253,31],[250,32],[249,1],[265,29],[264,33],[266,34],[247,35],[246,35],[244,36],[245,35],[255,37],[258,38],[254,37],[257,1],[248,37],[256,36],[267,1],[238,39],[241,40],[242,41],[262,1],[259,42],[243,43],[263,44],[240,45],[73,1],[72,1],[298,46],[299,1],[300,1],[301,47],[302,1],[303,1],[297,48],[304,1],[305,1],[310,49],[315,50],[239,1],[317,51],[319,52],[320,1],[313,1],[321,1],[322,1],[324,53],[312,54],[311,55],[318,1],[325,1],[316,1],[326,10],[136,56],[137,56],[139,57],[140,58],[141,59],[142,60],[143,61],[144,62],[145,63],[146,64],[147,65],[148,66],[149,66],[151,67],[150,68],[152,67],[153,69],[154,70],[138,71],[188,1],[155,72],[156,73],[157,74],[189,75],[158,76],[159,77],[160,78],[161,79],[162,80],[163,81],[164,82],[165,83],[166,84],[167,85],[168,85],[169,86],[170,87],[172,88],[171,89],[173,90],[174,91],[175,1],[176,92],[177,93],[178,94],[179,95],[180,96],[181,97],[182,98],[183,99],[184,100],[185,101],[186,102],[187,103],[327,1],[328,1],[329,1],[330,1],[331,1],[332,104],[333,1],[334,1],[309,1],[308,1],[307,105],[306,1],[314,106],[335,107],[338,108],[337,109],[339,110],[336,14],[323,1],[340,10],[341,111],[235,112],[236,113],[237,114],[192,115],[205,116],[193,116],[135,117],[195,116],[196,116],[198,118],[199,116],[207,116],[200,116],[197,116],[203,116],[206,119],[208,116],[194,116],[209,116],[201,116],[202,116],[210,119],[204,116],[214,120],[131,1],[218,121],[93,122],[222,122],[81,1],[83,123],[94,122],[84,122],[82,1],[95,1],[96,124],[97,122],[87,125],[91,126],[89,1],[99,127],[88,1],[85,122],[120,128],[100,122],[101,122],[103,129],[90,122],[104,1],[105,130],[92,122],[106,122],[107,122],[108,122],[109,122],[110,122],[130,131],[111,122],[102,1],[86,132],[112,122],[121,133],[122,1],[123,134],[124,135],[125,135],[126,136],[128,137],[113,122],[127,122],[129,138],[98,1],[114,127],[115,127],[119,139],[116,1],[117,140],[118,122],[211,141],[226,142],[219,143],[190,144],[221,145],[191,146],[227,147],[223,148],[224,149],[225,150],[228,151],[230,152],[229,153],[77,154],[76,155],[74,1],[75,1],[80,156],[78,157],[79,1],[215,158],[133,159],[134,160],[132,161],[216,162],[212,163],[233,1],[231,164],[220,165],[232,1],[213,166],[217,167],[234,168],[46,1],[47,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[48,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[11,1],[10,1]],"semanticDiagnosticsPerFile":[49,293,295,296,294,292,291,290,269,60,62,63,270,61,53,54,280,279,278,277,275,276,281,282,65,64,273,271,274,55,59,71,272,70,283,285,288,287,284,289,56,58,57,51,286,50,52,69,66,67,68,268,261,260,251,252,253,250,249,265,264,266,247,246,244,245,255,258,254,257,248,256,267,238,241,242,262,259,243,263,240,73,72,298,299,300,301,302,303,297,304,305,310,315,239,317,319,320,313,321,322,324,312,311,318,325,316,326,136,137,139,140,141,142,143,144,145,146,147,148,149,151,150,152,153,154,138,188,155,156,157,189,158,159,160,161,162,163,164,165,166,167,168,169,170,172,171,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,327,328,329,330,331,332,333,334,309,308,307,306,314,335,338,337,339,336,323,340,341,235,236,237,192,205,193,135,195,196,198,199,207,200,197,203,206,208,194,209,201,202,210,204,214,131,218,93,222,81,83,94,84,82,95,96,97,87,91,89,99,88,85,120,100,101,103,90,104,105,92,106,107,108,109,110,130,111,102,86,112,121,122,123,124,125,126,128,113,127,129,98,114,115,119,116,117,118,211,226,219,190,221,191,227,223,224,225,228,230,229,77,76,74,75,80,78,79,215,133,134,132,216,212,233,231,220,232,213,217,234,46,47,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,48,43,44,39,40,41,42,1,45,11,10],"latestChangedDtsFile":"./src/index.d.ts"},"version":"5.1.6"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/csv",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-beta.2",
|
|
4
4
|
"description": "Framework-independent loader for CSV and DSV table formats",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -30,11 +30,11 @@
|
|
|
30
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-
|
|
34
|
-
"@loaders.gl/schema": "4.0.0-
|
|
33
|
+
"@loaders.gl/loader-utils": "4.0.0-beta.2",
|
|
34
|
+
"@loaders.gl/schema": "4.0.0-beta.2"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"d3-dsv": "^1.2.0"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "79c2033f755e88e11bc30a04428e3666b177b8fc"
|
|
40
40
|
}
|
package/src/csv-loader.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// loaders.gl, MIT license
|
|
2
2
|
|
|
3
3
|
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
-
import type {
|
|
4
|
+
import type {ArrayRowTable, ObjectRowTable, TableBatch} from '@loaders.gl/schema';
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
7
|
AsyncQueue,
|
|
@@ -20,10 +20,12 @@ type ObjectSchema = {[key: string]: ObjectField} | ObjectField[];
|
|
|
20
20
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
21
21
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
22
22
|
|
|
23
|
+
const DEFAULT_CSV_SHAPE = 'object-row-table';
|
|
24
|
+
|
|
23
25
|
export type CSVLoaderOptions = LoaderOptions & {
|
|
24
26
|
csv?: {
|
|
25
27
|
// loaders.gl options
|
|
26
|
-
shape?: 'array-row-table' | 'object-row-table'
|
|
28
|
+
shape?: 'array-row-table' | 'object-row-table';
|
|
27
29
|
/** optimizes memory usage but increases parsing time. */
|
|
28
30
|
optimizeMemoryUsage?: boolean;
|
|
29
31
|
columnPrefix?: string;
|
|
@@ -44,26 +46,6 @@ export type CSVLoaderOptions = LoaderOptions & {
|
|
|
44
46
|
};
|
|
45
47
|
};
|
|
46
48
|
|
|
47
|
-
const DEFAULT_CSV_LOADER_OPTIONS = {
|
|
48
|
-
csv: {
|
|
49
|
-
shape: 'object-row-table',
|
|
50
|
-
optimizeMemoryUsage: false,
|
|
51
|
-
// CSV options
|
|
52
|
-
header: 'auto',
|
|
53
|
-
columnPrefix: 'column',
|
|
54
|
-
// delimiter: auto
|
|
55
|
-
// newline: auto
|
|
56
|
-
quoteChar: '"',
|
|
57
|
-
escapeChar: '"',
|
|
58
|
-
dynamicTyping: true,
|
|
59
|
-
comments: false,
|
|
60
|
-
skipEmptyLines: true,
|
|
61
|
-
// transform: null?
|
|
62
|
-
delimitersToGuess: [',', '\t', '|', ';']
|
|
63
|
-
// fastMode: auto
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
|
|
67
49
|
export const CSVLoader: LoaderWithParser<Table, TableBatch, CSVLoaderOptions> = {
|
|
68
50
|
id: 'csv',
|
|
69
51
|
module: 'csv',
|
|
@@ -78,12 +60,33 @@ export const CSVLoader: LoaderWithParser<Table, TableBatch, CSVLoaderOptions> =
|
|
|
78
60
|
parseInBatches: parseCSVInBatches,
|
|
79
61
|
// @ts-ignore
|
|
80
62
|
// testText: null,
|
|
81
|
-
options:
|
|
63
|
+
options: {
|
|
64
|
+
csv: {
|
|
65
|
+
shape: DEFAULT_CSV_SHAPE, // 'object-row-table'
|
|
66
|
+
optimizeMemoryUsage: false,
|
|
67
|
+
// CSV options
|
|
68
|
+
header: 'auto',
|
|
69
|
+
columnPrefix: 'column',
|
|
70
|
+
// delimiter: auto
|
|
71
|
+
// newline: auto
|
|
72
|
+
quoteChar: '"',
|
|
73
|
+
escapeChar: '"',
|
|
74
|
+
dynamicTyping: true,
|
|
75
|
+
comments: false,
|
|
76
|
+
skipEmptyLines: true,
|
|
77
|
+
// transform: null?
|
|
78
|
+
delimitersToGuess: [',', '\t', '|', ';']
|
|
79
|
+
// fastMode: auto
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
82
|
};
|
|
83
83
|
|
|
84
|
-
async function parseCSV(
|
|
84
|
+
async function parseCSV(
|
|
85
|
+
csvText: string,
|
|
86
|
+
options?: CSVLoaderOptions
|
|
87
|
+
): Promise<ObjectRowTable | ArrayRowTable> {
|
|
85
88
|
// Apps can call the parse method directly, we so apply default options here
|
|
86
|
-
const csvOptions = {...
|
|
89
|
+
const csvOptions = {...CSVLoader.options.csv, ...options?.csv};
|
|
87
90
|
|
|
88
91
|
const firstRow = readFirstRow(csvText);
|
|
89
92
|
const header: boolean =
|
|
@@ -103,40 +106,32 @@ async function parseCSV(csvText: string, options?: CSVLoaderOptions) {
|
|
|
103
106
|
};
|
|
104
107
|
|
|
105
108
|
const result = Papa.parse(csvText, papaparseConfig);
|
|
106
|
-
|
|
109
|
+
const rows = result.data as any[];
|
|
107
110
|
|
|
108
|
-
const headerRow = result.meta.fields || generateHeader(csvOptions.columnPrefix
|
|
111
|
+
const headerRow = result.meta.fields || generateHeader(csvOptions.columnPrefix!, firstRow.length);
|
|
109
112
|
|
|
110
|
-
|
|
113
|
+
const shape = csvOptions.shape || DEFAULT_CSV_SHAPE;
|
|
114
|
+
switch (shape) {
|
|
111
115
|
case 'object-row-table':
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
return {
|
|
117
|
+
shape: 'object-row-table',
|
|
118
|
+
data: rows.map((row) => (Array.isArray(row) ? convertToObjectRow(row, headerRow) : row))
|
|
119
|
+
};
|
|
114
120
|
case 'array-row-table':
|
|
115
|
-
|
|
116
|
-
|
|
121
|
+
return {
|
|
122
|
+
shape: 'array-row-table',
|
|
123
|
+
data: rows.map((row) => (Array.isArray(row) ? row : convertToArrayRow(row, headerRow)))
|
|
124
|
+
};
|
|
117
125
|
default:
|
|
126
|
+
throw new Error(shape);
|
|
118
127
|
}
|
|
119
|
-
|
|
120
|
-
/*
|
|
121
|
-
if (!header && shape === 'object-row-table') {
|
|
122
|
-
// If the dataset has no header, transform the array result into an object shape with an
|
|
123
|
-
// autogenerated header
|
|
124
|
-
return result.data.map((row) =>
|
|
125
|
-
row.reduce((acc, value, i) => {
|
|
126
|
-
acc[headerRow[i]] = value;
|
|
127
|
-
return acc;
|
|
128
|
-
}, {})
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
*/
|
|
132
|
-
return rows;
|
|
133
128
|
}
|
|
134
129
|
|
|
135
130
|
// TODO - support batch size 0 = no batching/single batch?
|
|
136
131
|
function parseCSVInBatches(
|
|
137
132
|
asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,
|
|
138
133
|
options?: CSVLoaderOptions
|
|
139
|
-
): AsyncIterable<
|
|
134
|
+
): AsyncIterable<TableBatch> {
|
|
140
135
|
// Papaparse does not support standard batch size handling
|
|
141
136
|
// TODO - investigate papaparse chunks mode
|
|
142
137
|
options = {...options};
|
|
@@ -145,9 +140,9 @@ function parseCSVInBatches(
|
|
|
145
140
|
}
|
|
146
141
|
|
|
147
142
|
// Apps can call the parse method directly, we so apply default options here
|
|
148
|
-
const csvOptions = {...
|
|
143
|
+
const csvOptions = {...CSVLoader.options.csv, ...options?.csv};
|
|
149
144
|
|
|
150
|
-
const asyncQueue = new AsyncQueue<
|
|
145
|
+
const asyncQueue = new AsyncQueue<TableBatch>();
|
|
151
146
|
|
|
152
147
|
let isFirstRow: boolean = true;
|
|
153
148
|
let headerRow: string[] | null = null;
|
|
@@ -171,7 +166,7 @@ function parseCSVInBatches(
|
|
|
171
166
|
skipEmptyLines: false,
|
|
172
167
|
|
|
173
168
|
// step is called on every row
|
|
174
|
-
// eslint-disable-next-line complexity
|
|
169
|
+
// eslint-disable-next-line complexity, max-statements
|
|
175
170
|
step(results) {
|
|
176
171
|
let row = results.data;
|
|
177
172
|
|
|
@@ -198,7 +193,7 @@ function parseCSVInBatches(
|
|
|
198
193
|
if (isFirstRow) {
|
|
199
194
|
isFirstRow = false;
|
|
200
195
|
if (!headerRow) {
|
|
201
|
-
headerRow = generateHeader(csvOptions.columnPrefix
|
|
196
|
+
headerRow = generateHeader(csvOptions.columnPrefix!, row.length);
|
|
202
197
|
}
|
|
203
198
|
schema = deduceSchema(row, headerRow);
|
|
204
199
|
}
|
|
@@ -209,6 +204,8 @@ function parseCSVInBatches(
|
|
|
209
204
|
row = JSON.parse(JSON.stringify(row));
|
|
210
205
|
}
|
|
211
206
|
|
|
207
|
+
const shape = csvOptions.shape || DEFAULT_CSV_SHAPE;
|
|
208
|
+
|
|
212
209
|
// Add the row
|
|
213
210
|
tableBatchBuilder =
|
|
214
211
|
tableBatchBuilder ||
|
|
@@ -216,7 +213,7 @@ function parseCSVInBatches(
|
|
|
216
213
|
// @ts-expect-error TODO this is not a proper schema
|
|
217
214
|
schema,
|
|
218
215
|
{
|
|
219
|
-
shape
|
|
216
|
+
shape,
|
|
220
217
|
...options
|
|
221
218
|
}
|
|
222
219
|
);
|
|
@@ -286,8 +283,8 @@ function readFirstRow(csvText: string): any[] {
|
|
|
286
283
|
* See the header option in https://www.papaparse.com/docs#config
|
|
287
284
|
* @returns a transform function that returns sanitized names for duplicate fields
|
|
288
285
|
*/
|
|
289
|
-
function duplicateColumnTransformer() {
|
|
290
|
-
const observedColumns = new Set();
|
|
286
|
+
function duplicateColumnTransformer(): (column: string) => string {
|
|
287
|
+
const observedColumns = new Set<string>();
|
|
291
288
|
return (col) => {
|
|
292
289
|
let colName = col;
|
|
293
290
|
let counter = 1;
|