@punks/backend-core 0.0.18 → 0.0.20

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/cjs/index.js CHANGED
@@ -210,24 +210,32 @@ const iterate = (values, action) => {
210
210
  };
211
211
 
212
212
  const DEFAULT_DELIMITER = ";";
213
- const splitRows = async (data) => {
213
+ const splitRows = (data) => {
214
214
  if (typeof data === "string") {
215
215
  return data.split("\n");
216
216
  }
217
- if (data instanceof Blob) {
218
- const text = await data.text();
219
- return await splitRows(text);
217
+ if (data instanceof Buffer) {
218
+ const text = data.toString("utf-8");
219
+ return splitRows(text);
220
220
  }
221
221
  return data;
222
222
  };
223
- const csvParseRaw = async (data, separator) => {
224
- const rows = await splitRows(data);
223
+ const csvParseRaw = (data, separator = DEFAULT_DELIMITER) => {
224
+ const rows = splitRows(data);
225
225
  const records = [];
226
- for (const row of rows) {
227
- const record = row.split(separator);
228
- if (record.length > 0) {
229
- records.push(record);
226
+ if (rows.length === 0) {
227
+ return records;
228
+ }
229
+ const headers = rows[0].split(separator);
230
+ for (let i = 1; i < rows.length; i++) {
231
+ const values = rows[i].split(separator);
232
+ const record = {};
233
+ for (let j = 0; j < headers.length; j++) {
234
+ const header = headers[j];
235
+ const value = values[j];
236
+ record[header] = value;
230
237
  }
238
+ records.push(record);
231
239
  }
232
240
  return records;
233
241
  };