read-excel-file 5.8.8 → 6.0.0

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.
Files changed (71) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +223 -271
  3. package/bundle/read-excel-file.min.js +1 -1
  4. package/bundle/read-excel-file.min.js.map +1 -1
  5. package/commonjs/read/dropEmptyRows.js +3 -3
  6. package/commonjs/read/dropEmptyRows.js.map +1 -1
  7. package/commonjs/read/dropEmptyRows.test.js.map +1 -1
  8. package/commonjs/read/getData.js +18 -8
  9. package/commonjs/read/getData.js.map +1 -1
  10. package/commonjs/read/readXlsx.js +2 -2
  11. package/commonjs/read/readXlsx.js.map +1 -1
  12. package/commonjs/read/readXlsxFileContents.js +8 -9
  13. package/commonjs/read/readXlsxFileContents.js.map +1 -1
  14. package/commonjs/read/readXlsxFileNode.test.js.map +1 -1
  15. package/commonjs/read/schema/mapToObjects.js +100 -38
  16. package/commonjs/read/schema/mapToObjects.js.map +1 -1
  17. package/commonjs/read/schema/mapToObjects.test.js.map +1 -1
  18. package/index.d.ts +0 -2
  19. package/modules/read/dropEmptyRows.js +3 -3
  20. package/modules/read/dropEmptyRows.js.map +1 -1
  21. package/modules/read/dropEmptyRows.test.js.map +1 -1
  22. package/modules/read/getData.js +18 -8
  23. package/modules/read/getData.js.map +1 -1
  24. package/modules/read/readXlsx.js +2 -2
  25. package/modules/read/readXlsx.js.map +1 -1
  26. package/modules/read/readXlsxFileContents.js +8 -9
  27. package/modules/read/readXlsxFileContents.js.map +1 -1
  28. package/modules/read/readXlsxFileNode.test.js.map +1 -1
  29. package/modules/read/schema/mapToObjects.js +100 -38
  30. package/modules/read/schema/mapToObjects.js.map +1 -1
  31. package/modules/read/schema/mapToObjects.test.js.map +1 -1
  32. package/node/index.d.ts +0 -2
  33. package/package.json +5 -15
  34. package/types.d.ts +25 -39
  35. package/web-worker/index.d.ts +0 -2
  36. package/bundle/index.html +0 -261
  37. package/bundle/lib/prism.css +0 -125
  38. package/bundle/lib/prism.js +0 -7
  39. package/bundle/lib/promise-polyfill.min.js +0 -1
  40. package/commonjs/read/schema/convertMapToSchema.js +0 -27
  41. package/commonjs/read/schema/convertMapToSchema.js.map +0 -1
  42. package/commonjs/read/schema/convertMapToSchema.test.js.map +0 -1
  43. package/commonjs/read/schema/mapToObjects.legacy.js +0 -60
  44. package/commonjs/read/schema/mapToObjects.legacy.js.map +0 -1
  45. package/commonjs/read/schema/mapToObjects.legacy.test.js.map +0 -1
  46. package/commonjs/read/schema/mapToObjects.spreadsheet.js +0 -25
  47. package/commonjs/read/schema/mapToObjects.spreadsheet.js.map +0 -1
  48. package/commonjs/read/schema/mapToObjects.spreadsheet.test.js.map +0 -1
  49. package/map/index.cjs +0 -2
  50. package/map/index.cjs.js +0 -7
  51. package/map/index.d.ts +0 -15
  52. package/map/index.js +0 -1
  53. package/map/package.json +0 -17
  54. package/modules/read/schema/convertMapToSchema.js +0 -21
  55. package/modules/read/schema/convertMapToSchema.js.map +0 -1
  56. package/modules/read/schema/convertMapToSchema.test.js.map +0 -1
  57. package/modules/read/schema/mapToObjects.legacy.js +0 -53
  58. package/modules/read/schema/mapToObjects.legacy.js.map +0 -1
  59. package/modules/read/schema/mapToObjects.legacy.test.js.map +0 -1
  60. package/modules/read/schema/mapToObjects.spreadsheet.js +0 -19
  61. package/modules/read/schema/mapToObjects.spreadsheet.js.map +0 -1
  62. package/modules/read/schema/mapToObjects.spreadsheet.test.js.map +0 -1
  63. package/schema/index.cjs +0 -2
  64. package/schema/index.cjs.js +0 -7
  65. package/schema/index.d.ts +0 -11
  66. package/schema/index.js +0 -1
  67. package/schema/package.json +0 -17
  68. package/website/index.html +0 -261
  69. package/website/lib/prism.css +0 -125
  70. package/website/lib/prism.js +0 -7
  71. package/website/lib/promise-polyfill.min.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mapToObjects.test.js","names":["_mapToObjects25","_interopRequireWildcard","require","_Integer","_interopRequireDefault","_URL","_Email","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","date","convertToUTCTimezone","Date","describe","it","getBlock","should","deep","equal","parseArray","_mapToObjects","mapToObjects","parse","getTimezoneOffset","DATE","prop","type","NUMBER","Number","BOOLEAN","Boolean","STRING","String","PHONE","value","PHONE_TYPE","rows","errors","toISOString","number","phone","phoneType","string","_mapToObjects2","_mapToObjects3","required","error","row","column","_mapToObjects4","_mapToObjects5","NAMES","names","_mapToObjects6","INTEGER","Integer","length","reason","_mapToObjects7","URL","_mapToObjects8","EMAIL","Email","_mapToObjects9","NAME","validate","Error","_mapToObjects10","_mapToObjects11","TRUE","FALSE","INVALID","_mapToObjects12","_mapToObjects13","_mapToObjects14","rowIndexMap","_mapToObjects15","STATUS","oneOf","_mapToObjects16","_mapToObjects17","A","B","C","CA","CB","a","b","c","_mapToObjects18","COLUMN_1","COLUMN_2","COLUMN_4","COLUMN_5","column2","column4","_mapToObjects19","schemaPropertyValueForMissingColumn","column1","column5","_mapToObjects20","schemaPropertyValueForNullCellValue","_mapToObjects21","_mapToObjects22","_mapToObjects23","schemaPropertyShouldSkipRequiredValidationForMissingColumn","_mapToObjects24","getTime"],"sources":["../../../source/read/schema/mapToObjects.test.js"],"sourcesContent":["import mapToObjects, { parseArray, getBlock } from './mapToObjects.js'\r\n\r\nimport Integer from '../../types/Integer.js'\r\nimport URL from '../../types/URL.js'\r\nimport Email from '../../types/Email.js'\r\n\r\nconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24))\r\n\r\ndescribe('mapToObjects', () => {\r\n\tit('should parse arrays', () => {\r\n\t\tgetBlock('abc\"de,f\"g,h', ',', 0).should.deep.equal(['abcde,fg', 10])\r\n\t\tparseArray(' abc\"de,f\"g , h ', ',').should.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n\r\n\tit('should convert to json', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING',\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t'123',\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc',\r\n\t\t\t\t'(123) 456-7890',\r\n\t\t\t\t'(123) 456-7890'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tDATE: {\r\n\t\t\t\tprop: 'date',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number\r\n\t\t\t},\r\n\t\t\tBOOLEAN: {\r\n\t\t\t\tprop: 'boolean',\r\n\t\t\t\ttype: Boolean\r\n\t\t\t},\r\n\t\t\tSTRING: {\r\n\t\t\t\tprop: 'string',\r\n\t\t\t\ttype: String\r\n\t\t\t},\r\n\t\t\tPHONE: {\r\n\t\t\t\tprop: 'phone',\r\n\t\t\t\tparse(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tPHONE_TYPE: {\r\n\t\t\t\tprop: 'phoneType',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tphone: '+11234567890',\r\n\t\t\tphoneType: '+11234567890',\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should support schema entries with no `type`s', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t123,\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tDATE: {\r\n\t\t\t\tprop: 'date'\r\n\t\t\t},\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number'\r\n\t\t\t},\r\n\t\t\tBOOLEAN: {\r\n\t\t\t\tprop: 'boolean'\r\n\t\t\t},\r\n\t\t\tSTRING: {\r\n\t\t\t\tprop: 'string'\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should require fields when cell value is empty', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'STRING'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tSTRING: {\r\n\t\t\t\tprop: 'string',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnumber: null,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should parse arrays', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNAMES: {\r\n\t\t\t\tprop: 'names',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse integers', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'INTEGER'\r\n\t\t\t], [\r\n\t\t\t\t'1'\r\n\t\t\t], [\r\n\t\t\t\t'1.2'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tINTEGER: {\r\n\t\t\t\tprop: 'value',\r\n\t\t\t\ttype: Integer\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].should.deep.equal({\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_integer',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INTEGER',\r\n\t\t\ttype: Integer,\r\n\t\t\tvalue: '1.2'\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 1\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse URLs', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'URL'\r\n\t\t\t], [\r\n\t\t\t\t'https://kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'kremlin.ru'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tURL: {\r\n\t\t\t\tprop: 'value',\r\n\t\t\t\ttype: URL\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(3)\r\n\t\terrors[0].column.should.equal('URL')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 'https://kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse Emails', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'EMAIL'\r\n\t\t\t], [\r\n\t\t\t\t'vladimir.putin@kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tEMAIL: {\r\n\t\t\t\tprop: 'value',\r\n\t\t\t\ttype: Email\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(3)\r\n\t\terrors[0].column.should.equal('EMAIL')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 'vladimir.putin@kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAME'\r\n\t\t\t], [\r\n\t\t\t\t'George Bush'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNAME: {\r\n\t\t\t\tprop: 'name',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidate: (value) => {\r\n\t\t\t\t\tif (value === 'George Bush') {\r\n\t\t\t\t\t\tthrow new Error('custom-error')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NAME',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'George Bush'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate booleans', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'TRUE',\r\n\t\t\t\t'FALSE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\t'TRUE'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tTRUE: {\r\n\t\t\t\tprop: 'true',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tFALSE: {\r\n\t\t\t\tprop: 'false',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tINVALID: {\r\n\t\t\t\tprop: 'invalid',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_boolean',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Boolean,\r\n\t\t\tvalue: 'TRUE'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\ttrue: true,\r\n\t\t\tfalse: false\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\t43183, // 03/24/2018',\r\n\t\t\t\t'-'\r\n\t\t\t], [\r\n\t\t\t\tdate, // 03/24/2018',,\r\n\t\t\t\t'-'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tDATE: {\r\n\t\t\t\tprop: 'date',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tINVALID: {\r\n\t\t\t\tprop: 'invalid',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate\r\n\t\t}, {\r\n\t\t\tdate\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should throw parse() errors', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\t'123',\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tPHONE: {\r\n\t\t\t\tprop: 'phone',\r\n\t\t\t\tparse: () => {\r\n\t\t\t\t\tthrow new Error('invalid')\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tPHONE_TYPE: {\r\n\t\t\t\tprop: 'phoneType',\r\n\t\t\t\tparse: () => {\r\n\t\t\t\t\tthrow new Error('invalid')\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE',\r\n\t\t\tvalue: '123'\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\tvalue: '123'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\trowIndexMap: [2, 5]\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 6,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'STARTED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tSTATUS: {\r\n\t\t\t\tprop: 'status',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(0)\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'SCHEDULED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tSTATUS: {\r\n\t\t\t\tprop: 'status',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'unknown',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'STATUS',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'SCHEDULED'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should not include `null` values by default', function() {\r\n\t\tconst { rows } = mapToObjects(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', 'ca', null],\r\n\t\t\t\t['a', null]\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tA: {\r\n\t\t\t\t\tprop: 'a',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tB: {\r\n\t\t\t\t\tprop: 'b',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tC: {\r\n\t\t\t\t\tprop: 'c',\r\n \t\t\ttype: {\r\n\t\t\t\t\t\tCA: {\r\n\t\t\t\t\t\t\tprop: 'a',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tCB: {\r\n\t\t\t\t\t\t\tprop: 'b',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t\trows.should.deep.equal([\r\n\t\t\t{ a: 'a', b: 'b', c: { a: 'ca', b: null } },\r\n\t\t\t{ a: 'a', b: null, c: null },\r\n\t\t])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (default) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tCOLUMN_1: {\r\n\t\t\t\tprop: 'column1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_2: {\r\n\t\t\t\tprop: 'column2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_4: {\r\n\t\t\t\tprop: 'column4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_5: {\r\n\t\t\t\tprop: 'column5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Legacy behavior.\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14'\r\n\t\t}, {\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tCOLUMN_1: {\r\n\t\t\t\tprop: 'column1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_2: {\r\n\t\t\t\tprop: 'column2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_4: {\r\n\t\t\t\tprop: 'column4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_5: {\r\n\t\t\t\tprop: 'column5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tCOLUMN_1: {\r\n\t\t\t\tprop: 'column1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_2: {\r\n\t\t\t\tprop: 'column2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_4: {\r\n\t\t\t\tprop: 'column4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_5: {\r\n\t\t\t\tprop: 'column5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tCOLUMN_1: {\r\n\t\t\t\tprop: 'column1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_2: {\r\n\t\t\t\tprop: 'column2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_4: {\r\n\t\t\t\tprop: 'column4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_5: {\r\n\t\t\t\tprop: 'column5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn()` not specified) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tCOLUMN_1: {\r\n\t\t\t\tprop: 'column1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_2: {\r\n\t\t\t\tprop: 'column2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_4: {\r\n\t\t\t\tprop: 'column4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_5: {\r\n\t\t\t\tprop: 'column5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tCOLUMN_1: {\r\n\t\t\t\tprop: 'column1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_2: {\r\n\t\t\t\tprop: 'column2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_4: {\r\n\t\t\t\tprop: 'column4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_5: {\r\n\t\t\t\tprop: 'column5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tCOLUMN_1: {\r\n\t\t\t\tprop: 'column1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_2: {\r\n\t\t\t\tprop: 'column2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_4: {\r\n\t\t\t\tprop: 'column4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tCOLUMN_5: {\r\n\t\t\t\tprop: 'column5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"mapToObjects.test.js","names":["_mapToObjects30","_interopRequireWildcard","require","_Integer","_interopRequireDefault","_URL","_Email","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","date","convertToUTCTimezone","Date","describe","it","getBlock","should","deep","equal","parseArray","_mapToObjects","mapToObjects","parse","getTimezoneOffset","column","type","number","Number","Boolean","string","String","phone","value","phoneType","rows","errors","toISOString","_mapToObjects2","_mapToObjects3","required","error","row","_mapToObjects4","ignoreEmptyRows","_mapToObjects5","_mapToObjects6","names","_mapToObjects7","_mapToObjects8","Integer","length","reason","_mapToObjects9","URL","_mapToObjects10","Email","_mapToObjects11","name","validate","Error","_mapToObjects12","_mapToObjects13","invalid","_mapToObjects14","_mapToObjects15","_mapToObjects16","rowIndexSourceMap","_mapToObjects17","status","oneOf","_mapToObjects18","_mapToObjects19","a","b","c","schema","_mapToObjects20","column1","column2","column4","column5","_mapToObjects21","schemaPropertyValueForMissingColumn","_mapToObjects22","_mapToObjects23","schemaPropertyValueForMissingValue","undefined","_mapToObjects24","_mapToObjects25","schemaPropertyValueForNullCellValue","_mapToObjects26","_mapToObjects27","_mapToObjects28","schemaPropertyShouldSkipRequiredValidationForMissingColumn","_mapToObjects29","getTime"],"sources":["../../../source/read/schema/mapToObjects.test.js"],"sourcesContent":["import mapToObjects, { parseArray, getBlock } from './mapToObjects.js'\r\n\r\nimport Integer from '../../types/Integer.js'\r\nimport URL from '../../types/URL.js'\r\nimport Email from '../../types/Email.js'\r\n\r\nconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24))\r\n\r\ndescribe('mapToObjects', () => {\r\n\tit('should parse arrays', () => {\r\n\t\tgetBlock('abc\"de,f\"g,h', ',', 0).should.deep.equal(['abcde,fg', 10])\r\n\t\tparseArray(' abc\"de,f\"g , h ', ',').should.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n\r\n\tit('should convert to json', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING',\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t'123',\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc',\r\n\t\t\t\t'(123) 456-7890',\r\n\t\t\t\t'(123) 456-7890'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN',\r\n\t\t\t\ttype: Boolean\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String\r\n\t\t\t},\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tphone: '+11234567890',\r\n\t\t\tphoneType: '+11234567890',\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should support schema entries with no `type`s', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t123,\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE'\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER'\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN'\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING'\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should require fields when cell value is empty', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'STRING'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnumber: null,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows: false`', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse integers', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'INTEGER'\r\n\t\t\t], [\r\n\t\t\t\t'1'\r\n\t\t\t], [\r\n\t\t\t\t'1.2'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'INTEGER',\r\n\t\t\t\ttype: Integer\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].should.deep.equal({\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_integer',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INTEGER',\r\n\t\t\ttype: Integer,\r\n\t\t\tvalue: '1.2'\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 1\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse URLs', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'URL'\r\n\t\t\t], [\r\n\t\t\t\t'https://kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'kremlin.ru'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'URL',\r\n\t\t\t\ttype: URL\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(3)\r\n\t\terrors[0].column.should.equal('URL')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 'https://kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse Emails', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'EMAIL'\r\n\t\t\t], [\r\n\t\t\t\t'vladimir.putin@kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'EMAIL',\r\n\t\t\t\ttype: Email\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(3)\r\n\t\terrors[0].column.should.equal('EMAIL')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 'vladimir.putin@kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAME'\r\n\t\t\t], [\r\n\t\t\t\t'George Bush'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tname: {\r\n\t\t\t\tcolumn: 'NAME',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidate: (value) => {\r\n\t\t\t\t\tif (value === 'George Bush') {\r\n\t\t\t\t\t\tthrow new Error('custom-error')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NAME',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'George Bush'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate booleans', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'TRUE',\r\n\t\t\t\t'FALSE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\t'TRUE'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\ttrue: {\r\n\t\t\t\tcolumn: 'TRUE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tfalse: {\r\n\t\t\t\tcolumn: 'FALSE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_boolean',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Boolean,\r\n\t\t\tvalue: 'TRUE'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\ttrue: true,\r\n\t\t\tfalse: false\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\t43183, // 03/24/2018',\r\n\t\t\t\t'-'\r\n\t\t\t], [\r\n\t\t\t\tdate, // 03/24/2018',,\r\n\t\t\t\t'-'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate\r\n\t\t}, {\r\n\t\t\tdate\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should throw parse() errors', () => {\r\n\t\tconst type = () => {\r\n\t\t\tthrow new Error('invalid')\r\n\t\t}\r\n\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\t'123',\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\trowIndexSourceMap: [2, 5]\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 6,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'STARTED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(0)\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'SCHEDULED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'unknown',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'STATUS',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'SCHEDULED'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should not include `null` values by default', function() {\r\n\t\tconst { rows } = mapToObjects(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', 'ca', null],\r\n\t\t\t\t['a', null]\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\ta: {\r\n\t\t\t\t\tcolumn: 'A',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tb: {\r\n\t\t\t\t\tcolumn: 'B',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tc: {\r\n\t\t\t\t\tcolumn: 'C',\r\n \t\t\tschema: {\r\n\t\t\t\t\t\ta: {\r\n\t\t\t\t\t\t\tcolumn: 'CA',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tb: {\r\n\t\t\t\t\t\t\tcolumn: 'CB',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t\trows.should.deep.equal([\r\n\t\t\t{ a: 'a', b: 'b', c: { a: 'ca', b: null } },\r\n\t\t\t{ a: 'a', b: null, c: null },\r\n\t\t])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (default) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Legacy behavior.\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14'\r\n\t\t}, {\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue: undefined`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingValue: undefined\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\t// column4: undefined,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn()` not specified) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import {
2
2
  ParseWithSchemaOptions,
3
- ParseWithMapOptions,
4
3
  ParseWithoutSchemaOptions,
5
4
  ParsedObjectsResult,
6
5
  Row
@@ -22,7 +21,6 @@ export function parseExcelDate(excelSerialDate: number) : typeof Date;
22
21
  type Input = File | Blob | ArrayBuffer;
23
22
 
24
23
  export function readXlsxFile<T extends object>(input: Input, options: ParseWithSchemaOptions<T>) : Promise<ParsedObjectsResult<T>>;
25
- export function readXlsxFile<T extends object>(input: Input, options: ParseWithMapOptions) : Promise<ParsedObjectsResult<T>>;
26
24
  export function readXlsxFile(input: Input, options?: ParseWithoutSchemaOptions) : Promise<Row[]>;
27
25
 
28
26
  export function readSheetNames(input: Input) : Promise<string[]>;
@@ -3,7 +3,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
3
3
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
4
4
  export default function dropEmptyRows(data) {
5
5
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
6
- rowIndexMap = _ref.rowIndexMap,
6
+ rowIndexSourceMap = _ref.rowIndexSourceMap,
7
7
  _ref$accessor = _ref.accessor,
8
8
  accessor = _ref$accessor === void 0 ? function (_) {
9
9
  return _;
@@ -24,8 +24,8 @@ export default function dropEmptyRows(data) {
24
24
  // Remove the empty row.
25
25
  if (empty) {
26
26
  data.splice(i, 1);
27
- if (rowIndexMap) {
28
- rowIndexMap.splice(i, 1);
27
+ if (rowIndexSourceMap) {
28
+ rowIndexSourceMap.splice(i, 1);
29
29
  }
30
30
  } else if (onlyTrimAtTheEnd) {
31
31
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"dropEmptyRows.js","names":["dropEmptyRows","data","_ref","arguments","length","undefined","rowIndexMap","_ref$accessor","accessor","_","onlyTrimAtTheEnd","i","empty","_iterator","_createForOfIteratorHelperLoose","_step","done","cell","value","splice"],"sources":["../../source/read/dropEmptyRows.js"],"sourcesContent":["export default function dropEmptyRows(data, {\r\n rowIndexMap,\r\n accessor = _ => _,\r\n onlyTrimAtTheEnd\r\n} = {}) {\r\n // Drop empty rows.\r\n let i = data.length - 1\r\n while (i >= 0) {\r\n // Check if the row is empty.\r\n let empty = true\r\n for (const cell of data[i]) {\r\n if (accessor(cell) !== null) {\r\n empty = false\r\n break\r\n }\r\n }\r\n // Remove the empty row.\r\n if (empty) {\r\n data.splice(i, 1)\r\n if (rowIndexMap) {\r\n rowIndexMap.splice(i, 1)\r\n }\r\n } else if (onlyTrimAtTheEnd) {\r\n break\r\n }\r\n i--\r\n }\r\n return data\r\n}"],"mappings":";;;AAAA,eAAe,SAASA,aAAaA,CAACC,IAAI,EAIlC;EAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAHJG,WAAW,GAAAJ,IAAA,CAAXI,WAAW;IAAAC,aAAA,GAAAL,IAAA,CACXM,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,UAAAE,CAAC;MAAA,OAAIA,CAAC;IAAA,IAAAF,aAAA;IACjBG,gBAAgB,GAAAR,IAAA,CAAhBQ,gBAAgB;EAEhB;EACA,IAAIC,CAAC,GAAGV,IAAI,CAACG,MAAM,GAAG,CAAC;EACvB,OAAOO,CAAC,IAAI,CAAC,EAAE;IACb;IACA,IAAIC,KAAK,GAAG,IAAI;IAChB,SAAAC,SAAA,GAAAC,+BAAA,CAAmBb,IAAI,CAACU,CAAC,CAAC,GAAAI,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;MAAA,IAAjBC,IAAI,GAAAF,KAAA,CAAAG,KAAA;MACb,IAAIV,QAAQ,CAACS,IAAI,CAAC,KAAK,IAAI,EAAE;QAC3BL,KAAK,GAAG,KAAK;QACb;MACF;IACF;IACA;IACA,IAAIA,KAAK,EAAE;MACTX,IAAI,CAACkB,MAAM,CAACR,CAAC,EAAE,CAAC,CAAC;MACjB,IAAIL,WAAW,EAAE;QACfA,WAAW,CAACa,MAAM,CAACR,CAAC,EAAE,CAAC,CAAC;MAC1B;IACF,CAAC,MAAM,IAAID,gBAAgB,EAAE;MAC3B;IACF;IACAC,CAAC,EAAE;EACL;EACA,OAAOV,IAAI;AACb"}
1
+ {"version":3,"file":"dropEmptyRows.js","names":["dropEmptyRows","data","_ref","arguments","length","undefined","rowIndexSourceMap","_ref$accessor","accessor","_","onlyTrimAtTheEnd","i","empty","_iterator","_createForOfIteratorHelperLoose","_step","done","cell","value","splice"],"sources":["../../source/read/dropEmptyRows.js"],"sourcesContent":["export default function dropEmptyRows(data, {\r\n rowIndexSourceMap,\r\n accessor = _ => _,\r\n onlyTrimAtTheEnd\r\n} = {}) {\r\n // Drop empty rows.\r\n let i = data.length - 1\r\n while (i >= 0) {\r\n // Check if the row is empty.\r\n let empty = true\r\n for (const cell of data[i]) {\r\n if (accessor(cell) !== null) {\r\n empty = false\r\n break\r\n }\r\n }\r\n // Remove the empty row.\r\n if (empty) {\r\n data.splice(i, 1)\r\n if (rowIndexSourceMap) {\r\n rowIndexSourceMap.splice(i, 1)\r\n }\r\n } else if (onlyTrimAtTheEnd) {\r\n break\r\n }\r\n i--\r\n }\r\n return data\r\n}"],"mappings":";;;AAAA,eAAe,SAASA,aAAaA,CAACC,IAAI,EAIlC;EAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAHJG,iBAAiB,GAAAJ,IAAA,CAAjBI,iBAAiB;IAAAC,aAAA,GAAAL,IAAA,CACjBM,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,UAAAE,CAAC;MAAA,OAAIA,CAAC;IAAA,IAAAF,aAAA;IACjBG,gBAAgB,GAAAR,IAAA,CAAhBQ,gBAAgB;EAEhB;EACA,IAAIC,CAAC,GAAGV,IAAI,CAACG,MAAM,GAAG,CAAC;EACvB,OAAOO,CAAC,IAAI,CAAC,EAAE;IACb;IACA,IAAIC,KAAK,GAAG,IAAI;IAChB,SAAAC,SAAA,GAAAC,+BAAA,CAAmBb,IAAI,CAACU,CAAC,CAAC,GAAAI,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;MAAA,IAAjBC,IAAI,GAAAF,KAAA,CAAAG,KAAA;MACb,IAAIV,QAAQ,CAACS,IAAI,CAAC,KAAK,IAAI,EAAE;QAC3BL,KAAK,GAAG,KAAK;QACb;MACF;IACF;IACA;IACA,IAAIA,KAAK,EAAE;MACTX,IAAI,CAACkB,MAAM,CAACR,CAAC,EAAE,CAAC,CAAC;MACjB,IAAIL,iBAAiB,EAAE;QACrBA,iBAAiB,CAACa,MAAM,CAACR,CAAC,EAAE,CAAC,CAAC;MAChC;IACF,CAAC,MAAM,IAAID,gBAAgB,EAAE;MAC3B;IACF;IACAC,CAAC,EAAE;EACL;EACA,OAAOV,IAAI;AACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"dropEmptyRows.test.js","names":["dropEmptyRows","describe","it","onlyTrimAtTheEnd","should","deep","equal","rowIndexMap"],"sources":["../../source/read/dropEmptyRows.test.js"],"sourcesContent":["import dropEmptyRows from './dropEmptyRows.js'\r\n\r\ndescribe('dropEmptyRows', () => {\r\n\tit('should drop empty rows (only at the end)', () => {\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G'],\r\n\t\t\t[null, null, null]\r\n\t\t], {\r\n\t\t\tonlyTrimAtTheEnd: true\r\n\t\t})\r\n\t\t.should.deep.equal([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty rows', () => {\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G'],\r\n\t\t\t[null, null, null]\r\n\t\t])\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should generate row map when dropping empty rows', () => {\r\n\t\tconst rowIndexMap = [0, 1, 2, 3, 4]\r\n\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t],\r\n\t\t{ rowIndexMap })\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\r\n\t\trowIndexMap.should.deep.equal([1, 2, 4])\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,aAAa,MAAM,oBAAoB;AAE9CC,QAAQ,CAAC,eAAe,EAAE,YAAM;EAC/BC,EAAE,CAAC,0CAA0C,EAAE,YAAM;IACpDF,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClB,EAAE;MACFG,gBAAgB,EAAE;IACnB,CAAC,CAAC,CACDC,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;EACH,CAAC,CAAC;EAEFJ,EAAE,CAAC,wBAAwB,EAAE,YAAM;IAClCF,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClB,CAAC,CACDI,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;EACH,CAAC,CAAC;EAEFJ,EAAE,CAAC,kDAAkD,EAAE,YAAM;IAC5D,IAAMK,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEnCP,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,EACD;MAAEO,WAAW,EAAXA;IAAY,CAAC,CAAC,CACfH,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;IAEFC,WAAW,CAACH,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACzC,CAAC,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"dropEmptyRows.test.js","names":["dropEmptyRows","describe","it","onlyTrimAtTheEnd","should","deep","equal","rowIndexSourceMap"],"sources":["../../source/read/dropEmptyRows.test.js"],"sourcesContent":["import dropEmptyRows from './dropEmptyRows.js'\r\n\r\ndescribe('dropEmptyRows', () => {\r\n\tit('should drop empty rows (only at the end)', () => {\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G'],\r\n\t\t\t[null, null, null]\r\n\t\t], {\r\n\t\t\tonlyTrimAtTheEnd: true\r\n\t\t})\r\n\t\t.should.deep.equal([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty rows', () => {\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G'],\r\n\t\t\t[null, null, null]\r\n\t\t])\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should generate row map when dropping empty rows', () => {\r\n\t\tconst rowIndexSourceMap = [0, 1, 2, 3, 4]\r\n\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t],\r\n\t\t{ rowIndexSourceMap })\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\r\n\t\trowIndexSourceMap.should.deep.equal([1, 2, 4])\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,aAAa,MAAM,oBAAoB;AAE9CC,QAAQ,CAAC,eAAe,EAAE,YAAM;EAC/BC,EAAE,CAAC,0CAA0C,EAAE,YAAM;IACpDF,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClB,EAAE;MACFG,gBAAgB,EAAE;IACnB,CAAC,CAAC,CACDC,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAClB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;EACH,CAAC,CAAC;EAEFJ,EAAE,CAAC,wBAAwB,EAAE,YAAM;IAClCF,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClB,CAAC,CACDI,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;EACH,CAAC,CAAC;EAEFJ,EAAE,CAAC,kDAAkD,EAAE,YAAM;IAC5D,IAAMK,iBAAiB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzCP,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,EACD;MAAEO,iBAAiB,EAAjBA;IAAkB,CAAC,CAAC,CACrBH,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;IAEFC,iBAAiB,CAACH,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/C,CAAC,CAAC;AACH,CAAC,CAAC"}
@@ -19,7 +19,8 @@ export default function getData(sheet, options) {
19
19
  leftTop = _dimensions[0],
20
20
  rightBottom = _dimensions[1];
21
21
 
22
- // Don't discard empty rows or columns at the start.
22
+ // Don't discard empty rows or columns at the start of the spreadsheet,
23
+ // even when the `*.xlsx` file itself tells that the content starts at an offset.
23
24
  // https://github.com/catamphetamine/read-excel-file/issues/102
24
25
  // const colsCount = (rightBottom.column - leftTop.column) + 1
25
26
  // const rowsCount = (rightBottom.row - leftTop.row) + 1
@@ -46,7 +47,8 @@ export default function getData(sheet, options) {
46
47
  // from some other library that used `XPath`)
47
48
  for (var _iterator = _createForOfIteratorHelperLoose(cells), _step; !(_step = _iterator()).done;) {
48
49
  var cell = _step.value;
49
- // Don't discard empty rows or columns at the start.
50
+ // Don't discard empty rows or columns at the start of the spreadsheet,
51
+ // even when the `*.xlsx` file itself tells that the content starts at an offset.
50
52
  // https://github.com/catamphetamine/read-excel-file/issues/102
51
53
  // const rowIndex = cell.row - leftTop.row
52
54
  // const columnIndex = cell.column - leftTop.column
@@ -59,21 +61,29 @@ export default function getData(sheet, options) {
59
61
  }
60
62
 
61
63
  // Fill in the row map.
62
- var rowIndexMap = options.rowMap;
63
- if (rowIndexMap) {
64
+ var rowIndexSourceMap = options.rowIndexSourceMap;
65
+ if (rowIndexSourceMap) {
64
66
  var _i = 0;
65
67
  while (_i < data.length) {
66
- rowIndexMap[_i] = _i;
68
+ rowIndexSourceMap[_i] = _i;
67
69
  _i++;
68
70
  }
69
71
  }
70
72
 
71
- // Drop empty columns or rows.
73
+ // Drop (discard) empty columns or rows.
74
+ //
75
+ // Don't discard empty rows or columns at the start or in the middle.
76
+ // Only discard empty rows at the bottom or empty columns on the right side.
77
+ // The rationale is that the data should be output in the same shape or form
78
+ // as it can be seen in the actual spreadsheet.
79
+ // If the user decides to discard empty rows or columns, they could do it manually
80
+ // by passing `transformData()` function as an option.
81
+ //
72
82
  data = dropEmptyRows(dropEmptyColumns(data, {
73
83
  onlyTrimAtTheEnd: true
74
84
  }), {
75
85
  onlyTrimAtTheEnd: true,
76
- rowIndexMap: rowIndexMap
86
+ rowIndexSourceMap: rowIndexSourceMap
77
87
  });
78
88
 
79
89
  // Optionally transform data before applying `schema`.
@@ -81,7 +91,7 @@ export default function getData(sheet, options) {
81
91
  data = options.transformData(data);
82
92
  // data = options.transformData(data, {
83
93
  // dropEmptyRowsAndColumns(data) {
84
- // return dropEmptyRows(dropEmptyColumns(data), { rowIndexMap })
94
+ // return dropEmptyRows(dropEmptyColumns(data), { rowIndexSourceMap })
85
95
  // }
86
96
  // })
87
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getData.js","names":["dropEmptyRows","dropEmptyColumns","getData","sheet","options","dimensions","cells","length","_dimensions","_slicedToArray","leftTop","rightBottom","colsCount","column","rowsCount","row","data","Array","i","j","_iterator","_createForOfIteratorHelperLoose","_step","done","cell","value","rowIndex","columnIndex","rowIndexMap","rowMap","onlyTrimAtTheEnd","transformData"],"sources":["../../source/read/getData.js"],"sourcesContent":["import dropEmptyRows from './dropEmptyRows.js'\r\nimport dropEmptyColumns from './dropEmptyColumns.js'\r\n\r\nexport default function getData(sheet, options) {\r\n const { dimensions, cells } = sheet\r\n\r\n // If the sheet is empty.\r\n if (cells.length === 0) {\r\n return []\r\n }\r\n\r\n const [leftTop, rightBottom] = dimensions\r\n\r\n // Don't discard empty rows or columns at the start.\r\n // https://github.com/catamphetamine/read-excel-file/issues/102\r\n // const colsCount = (rightBottom.column - leftTop.column) + 1\r\n // const rowsCount = (rightBottom.row - leftTop.row) + 1\r\n\r\n const colsCount = rightBottom.column\r\n const rowsCount = rightBottom.row\r\n\r\n // Initialize spreadsheet data structure.\r\n let data = new Array(rowsCount)\r\n let i = 0\r\n while (i < rowsCount) {\r\n data[i] = new Array(colsCount)\r\n let j = 0\r\n while (j < colsCount) {\r\n data[i][j] = null\r\n j++\r\n }\r\n i++\r\n }\r\n\r\n // Fill in spreadsheet `data`.\r\n // (this code implies that `cells` aren't necessarily sorted by row and column:\r\n // maybe that's not correct, this piece code was initially copy-pasted\r\n // from some other library that used `XPath`)\r\n for (const cell of cells) {\r\n // Don't discard empty rows or columns at the start.\r\n // https://github.com/catamphetamine/read-excel-file/issues/102\r\n // const rowIndex = cell.row - leftTop.row\r\n // const columnIndex = cell.column - leftTop.column\r\n const rowIndex = cell.row - 1\r\n const columnIndex = cell.column - 1\r\n // Ignore the data in the cell if it's outside of the spreadsheet's \"dimensions\".\r\n if (columnIndex < colsCount && rowIndex < rowsCount) {\r\n data[rowIndex][columnIndex] = cell.value\r\n }\r\n }\r\n\r\n // Fill in the row map.\r\n const { rowMap: rowIndexMap } = options\r\n if (rowIndexMap) {\r\n let i = 0\r\n while (i < data.length) {\r\n rowIndexMap[i] = i\r\n i++\r\n }\r\n }\r\n\r\n // Drop empty columns or rows.\r\n data = dropEmptyRows(\r\n dropEmptyColumns(data, { onlyTrimAtTheEnd: true }),\r\n { onlyTrimAtTheEnd: true, rowIndexMap }\r\n )\r\n\r\n // Optionally transform data before applying `schema`.\r\n if (options.transformData) {\r\n data = options.transformData(data)\r\n // data = options.transformData(data, {\r\n // dropEmptyRowsAndColumns(data) {\r\n // return dropEmptyRows(dropEmptyColumns(data), { rowIndexMap })\r\n // }\r\n // })\r\n }\r\n\r\n return data\r\n}"],"mappings":";;;;;;;AAAA,OAAOA,aAAa,MAAM,oBAAoB;AAC9C,OAAOC,gBAAgB,MAAM,uBAAuB;AAEpD,eAAe,SAASC,OAAOA,CAACC,KAAK,EAAEC,OAAO,EAAE;EAC9C,IAAQC,UAAU,GAAYF,KAAK,CAA3BE,UAAU;IAAEC,KAAK,GAAKH,KAAK,CAAfG,KAAK;;EAEzB;EACA,IAAIA,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,EAAE;EACX;EAEA,IAAAC,WAAA,GAAAC,cAAA,CAA+BJ,UAAU;IAAlCK,OAAO,GAAAF,WAAA;IAAEG,WAAW,GAAAH,WAAA;;EAE3B;EACA;EACA;EACA;;EAEA,IAAMI,SAAS,GAAGD,WAAW,CAACE,MAAM;EACpC,IAAMC,SAAS,GAAGH,WAAW,CAACI,GAAG;;EAEjC;EACA,IAAIC,IAAI,GAAG,IAAIC,KAAK,CAACH,SAAS,CAAC;EAC/B,IAAII,CAAC,GAAG,CAAC;EACT,OAAOA,CAAC,GAAGJ,SAAS,EAAE;IACpBE,IAAI,CAACE,CAAC,CAAC,GAAG,IAAID,KAAK,CAACL,SAAS,CAAC;IAC9B,IAAIO,CAAC,GAAG,CAAC;IACT,OAAOA,CAAC,GAAGP,SAAS,EAAE;MACpBI,IAAI,CAACE,CAAC,CAAC,CAACC,CAAC,CAAC,GAAG,IAAI;MACjBA,CAAC,EAAE;IACL;IACAD,CAAC,EAAE;EACL;;EAEA;EACA;EACA;EACA;EACA,SAAAE,SAAA,GAAAC,+BAAA,CAAmBf,KAAK,GAAAgB,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;IAAA,IAAfC,IAAI,GAAAF,KAAA,CAAAG,KAAA;IACb;IACA;IACA;IACA;IACA,IAAMC,QAAQ,GAAGF,IAAI,CAACT,GAAG,GAAG,CAAC;IAC7B,IAAMY,WAAW,GAAGH,IAAI,CAACX,MAAM,GAAG,CAAC;IACnC;IACA,IAAIc,WAAW,GAAGf,SAAS,IAAIc,QAAQ,GAAGZ,SAAS,EAAE;MACnDE,IAAI,CAACU,QAAQ,CAAC,CAACC,WAAW,CAAC,GAAGH,IAAI,CAACC,KAAK;IAC1C;EACF;;EAEA;EACA,IAAgBG,WAAW,GAAKxB,OAAO,CAA/ByB,MAAM;EACd,IAAID,WAAW,EAAE;IACf,IAAIV,EAAC,GAAG,CAAC;IACT,OAAOA,EAAC,GAAGF,IAAI,CAACT,MAAM,EAAE;MACtBqB,WAAW,CAACV,EAAC,CAAC,GAAGA,EAAC;MAClBA,EAAC,EAAE;IACL;EACF;;EAEA;EACAF,IAAI,GAAGhB,aAAa,CAClBC,gBAAgB,CAACe,IAAI,EAAE;IAAEc,gBAAgB,EAAE;EAAK,CAAC,CAAC,EAClD;IAAEA,gBAAgB,EAAE,IAAI;IAAEF,WAAW,EAAXA;EAAY,CACxC,CAAC;;EAED;EACA,IAAIxB,OAAO,CAAC2B,aAAa,EAAE;IACzBf,IAAI,GAAGZ,OAAO,CAAC2B,aAAa,CAACf,IAAI,CAAC;IAClC;IACA;IACA;IACA;IACA;EACF;;EAEA,OAAOA,IAAI;AACb"}
1
+ {"version":3,"file":"getData.js","names":["dropEmptyRows","dropEmptyColumns","getData","sheet","options","dimensions","cells","length","_dimensions","_slicedToArray","leftTop","rightBottom","colsCount","column","rowsCount","row","data","Array","i","j","_iterator","_createForOfIteratorHelperLoose","_step","done","cell","value","rowIndex","columnIndex","rowIndexSourceMap","onlyTrimAtTheEnd","transformData"],"sources":["../../source/read/getData.js"],"sourcesContent":["import dropEmptyRows from './dropEmptyRows.js'\r\nimport dropEmptyColumns from './dropEmptyColumns.js'\r\n\r\nexport default function getData(sheet, options) {\r\n const { dimensions, cells } = sheet\r\n\r\n // If the sheet is empty.\r\n if (cells.length === 0) {\r\n return []\r\n }\r\n\r\n const [leftTop, rightBottom] = dimensions\r\n\r\n // Don't discard empty rows or columns at the start of the spreadsheet,\r\n // even when the `*.xlsx` file itself tells that the content starts at an offset.\r\n // https://github.com/catamphetamine/read-excel-file/issues/102\r\n // const colsCount = (rightBottom.column - leftTop.column) + 1\r\n // const rowsCount = (rightBottom.row - leftTop.row) + 1\r\n\r\n const colsCount = rightBottom.column\r\n const rowsCount = rightBottom.row\r\n\r\n // Initialize spreadsheet data structure.\r\n let data = new Array(rowsCount)\r\n let i = 0\r\n while (i < rowsCount) {\r\n data[i] = new Array(colsCount)\r\n let j = 0\r\n while (j < colsCount) {\r\n data[i][j] = null\r\n j++\r\n }\r\n i++\r\n }\r\n\r\n // Fill in spreadsheet `data`.\r\n // (this code implies that `cells` aren't necessarily sorted by row and column:\r\n // maybe that's not correct, this piece code was initially copy-pasted\r\n // from some other library that used `XPath`)\r\n for (const cell of cells) {\r\n // Don't discard empty rows or columns at the start of the spreadsheet,\r\n // even when the `*.xlsx` file itself tells that the content starts at an offset.\r\n // https://github.com/catamphetamine/read-excel-file/issues/102\r\n // const rowIndex = cell.row - leftTop.row\r\n // const columnIndex = cell.column - leftTop.column\r\n const rowIndex = cell.row - 1\r\n const columnIndex = cell.column - 1\r\n // Ignore the data in the cell if it's outside of the spreadsheet's \"dimensions\".\r\n if (columnIndex < colsCount && rowIndex < rowsCount) {\r\n data[rowIndex][columnIndex] = cell.value\r\n }\r\n }\r\n\r\n // Fill in the row map.\r\n const { rowIndexSourceMap } = options\r\n if (rowIndexSourceMap) {\r\n let i = 0\r\n while (i < data.length) {\r\n rowIndexSourceMap[i] = i\r\n i++\r\n }\r\n }\r\n\r\n // Drop (discard) empty columns or rows.\r\n //\r\n // Don't discard empty rows or columns at the start or in the middle.\r\n // Only discard empty rows at the bottom or empty columns on the right side.\r\n // The rationale is that the data should be output in the same shape or form\r\n // as it can be seen in the actual spreadsheet.\r\n // If the user decides to discard empty rows or columns, they could do it manually\r\n // by passing `transformData()` function as an option.\r\n //\r\n data = dropEmptyRows(\r\n dropEmptyColumns(data, { onlyTrimAtTheEnd: true }),\r\n { onlyTrimAtTheEnd: true, rowIndexSourceMap }\r\n )\r\n\r\n // Optionally transform data before applying `schema`.\r\n if (options.transformData) {\r\n data = options.transformData(data)\r\n // data = options.transformData(data, {\r\n // dropEmptyRowsAndColumns(data) {\r\n // return dropEmptyRows(dropEmptyColumns(data), { rowIndexSourceMap })\r\n // }\r\n // })\r\n }\r\n\r\n return data\r\n}"],"mappings":";;;;;;;AAAA,OAAOA,aAAa,MAAM,oBAAoB;AAC9C,OAAOC,gBAAgB,MAAM,uBAAuB;AAEpD,eAAe,SAASC,OAAOA,CAACC,KAAK,EAAEC,OAAO,EAAE;EAC9C,IAAQC,UAAU,GAAYF,KAAK,CAA3BE,UAAU;IAAEC,KAAK,GAAKH,KAAK,CAAfG,KAAK;;EAEzB;EACA,IAAIA,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,EAAE;EACX;EAEA,IAAAC,WAAA,GAAAC,cAAA,CAA+BJ,UAAU;IAAlCK,OAAO,GAAAF,WAAA;IAAEG,WAAW,GAAAH,WAAA;;EAE3B;EACA;EACA;EACA;EACA;;EAEA,IAAMI,SAAS,GAAGD,WAAW,CAACE,MAAM;EACpC,IAAMC,SAAS,GAAGH,WAAW,CAACI,GAAG;;EAEjC;EACA,IAAIC,IAAI,GAAG,IAAIC,KAAK,CAACH,SAAS,CAAC;EAC/B,IAAII,CAAC,GAAG,CAAC;EACT,OAAOA,CAAC,GAAGJ,SAAS,EAAE;IACpBE,IAAI,CAACE,CAAC,CAAC,GAAG,IAAID,KAAK,CAACL,SAAS,CAAC;IAC9B,IAAIO,CAAC,GAAG,CAAC;IACT,OAAOA,CAAC,GAAGP,SAAS,EAAE;MACpBI,IAAI,CAACE,CAAC,CAAC,CAACC,CAAC,CAAC,GAAG,IAAI;MACjBA,CAAC,EAAE;IACL;IACAD,CAAC,EAAE;EACL;;EAEA;EACA;EACA;EACA;EACA,SAAAE,SAAA,GAAAC,+BAAA,CAAmBf,KAAK,GAAAgB,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;IAAA,IAAfC,IAAI,GAAAF,KAAA,CAAAG,KAAA;IACb;IACA;IACA;IACA;IACA;IACA,IAAMC,QAAQ,GAAGF,IAAI,CAACT,GAAG,GAAG,CAAC;IAC7B,IAAMY,WAAW,GAAGH,IAAI,CAACX,MAAM,GAAG,CAAC;IACnC;IACA,IAAIc,WAAW,GAAGf,SAAS,IAAIc,QAAQ,GAAGZ,SAAS,EAAE;MACnDE,IAAI,CAACU,QAAQ,CAAC,CAACC,WAAW,CAAC,GAAGH,IAAI,CAACC,KAAK;IAC1C;EACF;;EAEA;EACA,IAAQG,iBAAiB,GAAKxB,OAAO,CAA7BwB,iBAAiB;EACzB,IAAIA,iBAAiB,EAAE;IACrB,IAAIV,EAAC,GAAG,CAAC;IACT,OAAOA,EAAC,GAAGF,IAAI,CAACT,MAAM,EAAE;MACtBqB,iBAAiB,CAACV,EAAC,CAAC,GAAGA,EAAC;MACxBA,EAAC,EAAE;IACL;EACF;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACAF,IAAI,GAAGhB,aAAa,CAClBC,gBAAgB,CAACe,IAAI,EAAE;IAAEa,gBAAgB,EAAE;EAAK,CAAC,CAAC,EAClD;IAAEA,gBAAgB,EAAE,IAAI;IAAED,iBAAiB,EAAjBA;EAAkB,CAC9C,CAAC;;EAED;EACA,IAAIxB,OAAO,CAAC0B,aAAa,EAAE;IACzBd,IAAI,GAAGZ,OAAO,CAAC0B,aAAa,CAACd,IAAI,CAAC;IAClC;IACA;IACA;IACA;IACA;EACF;;EAEA,OAAOA,IAAI;AACb"}
@@ -73,9 +73,9 @@ export default function readXlsx(contents, xml) {
73
73
  // Parse sheet data.
74
74
  var sheet = parseSheet(getXmlFileContent(filePaths.sheets[sheetId]), xml, values, styles, properties, options);
75
75
  options = _objectSpread({
76
- // Create a `rowIndexMap` for the original dataset, if not passed,
76
+ // Create a `rowIndexSourceMap` for the original dataset, if not passed,
77
77
  // because "empty" rows will be dropped from the input data.
78
- rowMap: []
78
+ rowIndexSourceMap: []
79
79
  }, options);
80
80
 
81
81
  // Get spreadsheet data.
@@ -1 +1 @@
1
- {"version":3,"file":"readXlsx.js","names":["parseProperties","parseFilePaths","parseStyles","parseSharedStrings","parseSheet","getData","readXlsx","contents","xml","options","arguments","length","undefined","sheet","_objectSpread","getXmlFileContent","filePath","Error","concat","filePaths","values","sharedStrings","styles","properties","getSheets","sheets","map","_ref","name","sheetId","getSheetId","createSheetNotFoundError","rowMap","data","_sheet","relationId","_iterator","_createForOfIteratorHelperLoose","_step","done","value","sheetsList","i","join"],"sources":["../../source/read/readXlsx.js"],"sourcesContent":["import parseProperties from './parseProperties.js'\r\nimport parseFilePaths from './parseFilePaths.js'\r\nimport parseStyles from './parseStyles.js'\r\nimport parseSharedStrings from './parseSharedStrings.js'\r\nimport parseSheet from './parseSheet.js'\r\nimport getData from './getData.js'\r\n\r\n// For an introduction in reading `*.xlsx` files see \"The minimum viable XLSX reader\":\r\n// https://www.brendanlong.com/the-minimum-viable-xlsx-reader.html\r\n\r\n/**\r\n * Reads an (unzipped) XLSX file structure into a 2D array of cells.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @param {number?} options.sheet - Workbook sheet id (`1` by default).\r\n * @param {string?} options.dateFormat - Date format, e.g. \"mm/dd/yyyy\". Values having this format template set will be parsed as dates.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @return {object} An object of shape `{ data, cells, properties }`. `data: string[][]` is an array of rows, each row being an array of cell values. `cells: string[][]` is an array of rows, each row being an array of cells. `properties: object` is the spreadsheet properties (e.g. whether date epoch is 1904 instead of 1900).\r\n */\r\nexport default function readXlsx(contents, xml, options = {}) {\r\n if (!options.sheet) {\r\n options = {\r\n sheet: 1,\r\n ...options\r\n }\r\n }\r\n\r\n const getXmlFileContent = (filePath) => {\r\n if (!contents[filePath]) {\r\n throw new Error(`\"${filePath}\" file not found inside the *.xlsx file zip archive`)\r\n }\r\n return contents[filePath]\r\n }\r\n\r\n // Some Excel editors don't want to use standard naming scheme for sheet files.\r\n // https://github.com/tidyverse/readxl/issues/104\r\n const filePaths = parseFilePaths(getXmlFileContent('xl/_rels/workbook.xml.rels'), xml)\r\n\r\n // Default file path for \"shared strings\": \"xl/sharedStrings.xml\".\r\n const values = filePaths.sharedStrings\r\n ? parseSharedStrings(getXmlFileContent(filePaths.sharedStrings), xml)\r\n : []\r\n\r\n // Default file path for \"styles\": \"xl/styles.xml\".\r\n const styles = filePaths.styles\r\n ? parseStyles(getXmlFileContent(filePaths.styles), xml)\r\n : {}\r\n\r\n const properties = parseProperties(getXmlFileContent('xl/workbook.xml'), xml)\r\n\r\n // A feature for getting the list of sheets in an Excel file.\r\n // https://github.com/catamphetamine/read-excel-file/issues/14\r\n if (options.getSheets) {\r\n return properties.sheets.map(({ name }) => ({\r\n name\r\n }))\r\n }\r\n\r\n // Find the sheet by name, or take the first one.\r\n const sheetId = getSheetId(options.sheet, properties.sheets)\r\n\r\n // If the sheet wasn't found then throw an error.\r\n // Example: \"xl/worksheets/sheet1.xml\".\r\n if (!sheetId || !filePaths.sheets[sheetId]) {\r\n throw createSheetNotFoundError(options.sheet, properties.sheets)\r\n }\r\n\r\n // Parse sheet data.\r\n const sheet = parseSheet(\r\n getXmlFileContent(filePaths.sheets[sheetId]),\r\n xml,\r\n values,\r\n styles,\r\n properties,\r\n options\r\n )\r\n\r\n options = {\r\n // Create a `rowIndexMap` for the original dataset, if not passed,\r\n // because \"empty\" rows will be dropped from the input data.\r\n rowMap: [],\r\n ...options\r\n }\r\n\r\n // Get spreadsheet data.\r\n const data = getData(sheet, options)\r\n\r\n // Can return properties, if required.\r\n if (options.properties) {\r\n return {\r\n data,\r\n properties\r\n }\r\n }\r\n\r\n // Return spreadsheet data.\r\n return data\r\n}\r\n\r\nfunction getSheetId(sheet, sheets) {\r\n if (typeof sheet === 'number') {\r\n const _sheet = sheets[sheet - 1]\r\n return _sheet && _sheet.relationId\r\n }\r\n for (const _sheet of sheets) {\r\n if (_sheet.name === sheet) {\r\n return _sheet.relationId\r\n }\r\n }\r\n}\r\n\r\nfunction createSheetNotFoundError(sheet, sheets) {\r\n const sheetsList = sheets && sheets.map((sheet, i) => `\"${sheet.name}\" (#${i + 1})`).join(', ')\r\n return new Error(`Sheet ${typeof sheet === 'number' ? '#' + sheet : '\"' + sheet + '\"'} not found in the *.xlsx file.${sheets ? ' Available sheets: ' + sheetsList + '.' : ''}`)\r\n}"],"mappings":"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"}
1
+ {"version":3,"file":"readXlsx.js","names":["parseProperties","parseFilePaths","parseStyles","parseSharedStrings","parseSheet","getData","readXlsx","contents","xml","options","arguments","length","undefined","sheet","_objectSpread","getXmlFileContent","filePath","Error","concat","filePaths","values","sharedStrings","styles","properties","getSheets","sheets","map","_ref","name","sheetId","getSheetId","createSheetNotFoundError","rowIndexSourceMap","data","_sheet","relationId","_iterator","_createForOfIteratorHelperLoose","_step","done","value","sheetsList","i","join"],"sources":["../../source/read/readXlsx.js"],"sourcesContent":["import parseProperties from './parseProperties.js'\r\nimport parseFilePaths from './parseFilePaths.js'\r\nimport parseStyles from './parseStyles.js'\r\nimport parseSharedStrings from './parseSharedStrings.js'\r\nimport parseSheet from './parseSheet.js'\r\nimport getData from './getData.js'\r\n\r\n// For an introduction in reading `*.xlsx` files see \"The minimum viable XLSX reader\":\r\n// https://www.brendanlong.com/the-minimum-viable-xlsx-reader.html\r\n\r\n/**\r\n * Reads an (unzipped) XLSX file structure into a 2D array of cells.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @param {number?} options.sheet - Workbook sheet id (`1` by default).\r\n * @param {string?} options.dateFormat - Date format, e.g. \"mm/dd/yyyy\". Values having this format template set will be parsed as dates.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @return {object} An object of shape `{ data, cells, properties }`. `data: string[][]` is an array of rows, each row being an array of cell values. `cells: string[][]` is an array of rows, each row being an array of cells. `properties: object` is the spreadsheet properties (e.g. whether date epoch is 1904 instead of 1900).\r\n */\r\nexport default function readXlsx(contents, xml, options = {}) {\r\n if (!options.sheet) {\r\n options = {\r\n sheet: 1,\r\n ...options\r\n }\r\n }\r\n\r\n const getXmlFileContent = (filePath) => {\r\n if (!contents[filePath]) {\r\n throw new Error(`\"${filePath}\" file not found inside the *.xlsx file zip archive`)\r\n }\r\n return contents[filePath]\r\n }\r\n\r\n // Some Excel editors don't want to use standard naming scheme for sheet files.\r\n // https://github.com/tidyverse/readxl/issues/104\r\n const filePaths = parseFilePaths(getXmlFileContent('xl/_rels/workbook.xml.rels'), xml)\r\n\r\n // Default file path for \"shared strings\": \"xl/sharedStrings.xml\".\r\n const values = filePaths.sharedStrings\r\n ? parseSharedStrings(getXmlFileContent(filePaths.sharedStrings), xml)\r\n : []\r\n\r\n // Default file path for \"styles\": \"xl/styles.xml\".\r\n const styles = filePaths.styles\r\n ? parseStyles(getXmlFileContent(filePaths.styles), xml)\r\n : {}\r\n\r\n const properties = parseProperties(getXmlFileContent('xl/workbook.xml'), xml)\r\n\r\n // A feature for getting the list of sheets in an Excel file.\r\n // https://github.com/catamphetamine/read-excel-file/issues/14\r\n if (options.getSheets) {\r\n return properties.sheets.map(({ name }) => ({\r\n name\r\n }))\r\n }\r\n\r\n // Find the sheet by name, or take the first one.\r\n const sheetId = getSheetId(options.sheet, properties.sheets)\r\n\r\n // If the sheet wasn't found then throw an error.\r\n // Example: \"xl/worksheets/sheet1.xml\".\r\n if (!sheetId || !filePaths.sheets[sheetId]) {\r\n throw createSheetNotFoundError(options.sheet, properties.sheets)\r\n }\r\n\r\n // Parse sheet data.\r\n const sheet = parseSheet(\r\n getXmlFileContent(filePaths.sheets[sheetId]),\r\n xml,\r\n values,\r\n styles,\r\n properties,\r\n options\r\n )\r\n\r\n options = {\r\n // Create a `rowIndexSourceMap` for the original dataset, if not passed,\r\n // because \"empty\" rows will be dropped from the input data.\r\n rowIndexSourceMap: [],\r\n ...options\r\n }\r\n\r\n // Get spreadsheet data.\r\n const data = getData(sheet, options)\r\n\r\n // Can return properties, if required.\r\n if (options.properties) {\r\n return {\r\n data,\r\n properties\r\n }\r\n }\r\n\r\n // Return spreadsheet data.\r\n return data\r\n}\r\n\r\nfunction getSheetId(sheet, sheets) {\r\n if (typeof sheet === 'number') {\r\n const _sheet = sheets[sheet - 1]\r\n return _sheet && _sheet.relationId\r\n }\r\n for (const _sheet of sheets) {\r\n if (_sheet.name === sheet) {\r\n return _sheet.relationId\r\n }\r\n }\r\n}\r\n\r\nfunction createSheetNotFoundError(sheet, sheets) {\r\n const sheetsList = sheets && sheets.map((sheet, i) => `\"${sheet.name}\" (#${i + 1})`).join(', ')\r\n return new Error(`Sheet ${typeof sheet === 'number' ? '#' + sheet : '\"' + sheet + '\"'} not found in the *.xlsx file.${sheets ? ' Available sheets: ' + sheetsList + '.' : ''}`)\r\n}"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- var _excluded = ["schema", "map"];
2
+ var _excluded = ["schema"];
3
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -8,22 +8,21 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
8
8
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
9
9
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
10
10
  import readXlsx from './readXlsx.js';
11
- import mapToObjectsLegacyBehavior from './schema/mapToObjects.legacy.js';
12
- import mapToObjectsSpreadsheetBehavior from './schema/mapToObjects.spreadsheet.js';
13
- import convertMapToSchema from './schema/convertMapToSchema.js';
11
+ import mapToObjects from './schema/mapToObjects.js';
14
12
  export default function readXlsxFileContents(entries, xml, _ref) {
15
13
  var schema = _ref.schema,
16
- map = _ref.map,
17
14
  options = _objectWithoutProperties(_ref, _excluded);
18
- if (!schema && map) {
19
- schema = convertMapToSchema(map);
15
+ if (options.map) {
16
+ throw new Error('`map` option was removed. Pass a `schema` option instead.');
20
17
  }
21
- // `readXlsx()` adds `options.rowMap`, if not passed.
18
+ // `readXlsx()` function creates `options.rowIndexSourceMap` property.
19
+ // It maps parsed data row indexes to spreadsheet row indexes.
20
+ // That's because empty rows are ignored (discarded) when parsing using `schema`.
22
21
  var result = readXlsx(entries, xml, _objectSpread(_objectSpread({}, options), {}, {
23
22
  properties: schema || options.properties
24
23
  }));
25
24
  if (schema) {
26
- return mapToObjectsSpreadsheetBehavior(mapToObjectsLegacyBehavior, result.data, schema, _objectSpread(_objectSpread({}, options), {}, {
25
+ return mapToObjects(result.data, schema, _objectSpread(_objectSpread({}, options), {}, {
27
26
  properties: result.properties
28
27
  }));
29
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"readXlsxFileContents.js","names":["readXlsx","mapToObjectsLegacyBehavior","mapToObjectsSpreadsheetBehavior","convertMapToSchema","readXlsxFileContents","entries","xml","_ref","schema","map","options","_objectWithoutProperties","_excluded","result","_objectSpread","properties","data"],"sources":["../../source/read/readXlsxFileContents.js"],"sourcesContent":["import readXlsx from './readXlsx.js'\r\n\r\nimport mapToObjectsLegacyBehavior from './schema/mapToObjects.legacy.js'\r\nimport mapToObjectsSpreadsheetBehavior from './schema/mapToObjects.spreadsheet.js'\r\n\r\nimport convertMapToSchema from './schema/convertMapToSchema.js'\r\n\r\nexport default function readXlsxFileContents(entries, xml, { schema, map, ...options}) {\r\n\tif (!schema && map) {\r\n\t\tschema = convertMapToSchema(map)\r\n\t}\r\n\t// `readXlsx()` adds `options.rowMap`, if not passed.\r\n\tconst result = readXlsx(entries, xml, { ...options, properties: schema || options.properties })\r\n\tif (schema) {\r\n\t\treturn mapToObjectsSpreadsheetBehavior(mapToObjectsLegacyBehavior, result.data, schema, {\r\n\t\t\t...options,\r\n\t\t\tproperties: result.properties\r\n\t\t})\r\n\t}\r\n\treturn result\r\n}"],"mappings":";;;;;;;;;AAAA,OAAOA,QAAQ,MAAM,eAAe;AAEpC,OAAOC,0BAA0B,MAAM,iCAAiC;AACxE,OAAOC,+BAA+B,MAAM,sCAAsC;AAElF,OAAOC,kBAAkB,MAAM,gCAAgC;AAE/D,eAAe,SAASC,oBAAoBA,CAACC,OAAO,EAAEC,GAAG,EAAAC,IAAA,EAA8B;EAAA,IAA1BC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAEC,GAAG,GAAAF,IAAA,CAAHE,GAAG;IAAKC,OAAO,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;EACnF,IAAI,CAACJ,MAAM,IAAIC,GAAG,EAAE;IACnBD,MAAM,GAAGL,kBAAkB,CAACM,GAAG,CAAC;EACjC;EACA;EACA,IAAMI,MAAM,GAAGb,QAAQ,CAACK,OAAO,EAAEC,GAAG,EAAAQ,aAAA,CAAAA,aAAA,KAAOJ,OAAO;IAAEK,UAAU,EAAEP,MAAM,IAAIE,OAAO,CAACK;EAAU,EAAE,CAAC;EAC/F,IAAIP,MAAM,EAAE;IACX,OAAON,+BAA+B,CAACD,0BAA0B,EAAEY,MAAM,CAACG,IAAI,EAAER,MAAM,EAAAM,aAAA,CAAAA,aAAA,KAClFJ,OAAO;MACVK,UAAU,EAAEF,MAAM,CAACE;IAAU,EAC7B,CAAC;EACH;EACA,OAAOF,MAAM;AACd"}
1
+ {"version":3,"file":"readXlsxFileContents.js","names":["readXlsx","mapToObjects","readXlsxFileContents","entries","xml","_ref","schema","options","_objectWithoutProperties","_excluded","map","Error","result","_objectSpread","properties","data"],"sources":["../../source/read/readXlsxFileContents.js"],"sourcesContent":["import readXlsx from './readXlsx.js'\r\n\r\nimport mapToObjects from './schema/mapToObjects.js'\r\n\r\nexport default function readXlsxFileContents(entries, xml, { schema, ...options}) {\r\n\tif (options.map) {\r\n\t\tthrow new Error('`map` option was removed. Pass a `schema` option instead.')\r\n\t}\r\n\t// `readXlsx()` function creates `options.rowIndexSourceMap` property.\r\n\t// It maps parsed data row indexes to spreadsheet row indexes.\r\n\t// That's because empty rows are ignored (discarded) when parsing using `schema`.\r\n\tconst result = readXlsx(entries, xml, { ...options, properties: schema || options.properties })\r\n\tif (schema) {\r\n\t\treturn mapToObjects(result.data, schema, {\r\n\t\t\t...options,\r\n\t\t\tproperties: result.properties\r\n\t\t})\r\n\t}\r\n\treturn result\r\n}"],"mappings":";;;;;;;;;AAAA,OAAOA,QAAQ,MAAM,eAAe;AAEpC,OAAOC,YAAY,MAAM,0BAA0B;AAEnD,eAAe,SAASC,oBAAoBA,CAACC,OAAO,EAAEC,GAAG,EAAAC,IAAA,EAAyB;EAAA,IAArBC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAKC,OAAO,GAAAC,wBAAA,CAAAH,IAAA,EAAAI,SAAA;EAC9E,IAAIF,OAAO,CAACG,GAAG,EAAE;IAChB,MAAM,IAAIC,KAAK,CAAC,2DAA2D,CAAC;EAC7E;EACA;EACA;EACA;EACA,IAAMC,MAAM,GAAGZ,QAAQ,CAACG,OAAO,EAAEC,GAAG,EAAAS,aAAA,CAAAA,aAAA,KAAON,OAAO;IAAEO,UAAU,EAAER,MAAM,IAAIC,OAAO,CAACO;EAAU,EAAE,CAAC;EAC/F,IAAIR,MAAM,EAAE;IACX,OAAOL,YAAY,CAACW,MAAM,CAACG,IAAI,EAAET,MAAM,EAAAO,aAAA,CAAAA,aAAA,KACnCN,OAAO;MACVO,UAAU,EAAEF,MAAM,CAACE;IAAU,EAC7B,CAAC;EACH;EACA,OAAOF,MAAM;AACd"}
@@ -1 +1 @@
1
- {"version":3,"file":"readXlsxFileNode.test.js","names":["path","readXlsxFileNode","describe","it","schema","prop","type","Date","Number","required","Boolean","String","parse","value","rowMap","resolve","then","_ref","rows","date","getTime","should","deep","equal","convertToUTCTimezone","numberOfStudents","course","isFree","cost","title","contact","map","_ref2","errors","getTimezoneOffset"],"sources":["../../source/read/readXlsxFileNode.test.js"],"sourcesContent":["import path from 'path'\r\n\r\nimport readXlsxFileNode from './readXlsxFileNode.js'\r\n\r\ndescribe('readXlsxFileNode', () => {\r\n\tit('should read *.xlsx file on Node.js and parse it to JSON', () => {\r\n\t\tconst schema = {\r\n\t\t\t'START DATE': {\r\n\t\t\t\tprop: 'date',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\t'NUMBER OF STUDENTS': {\r\n\t\t\t\tprop: 'numberOfStudents',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\t'COURSE': {\r\n\t\t\t\tprop: 'course',\r\n\t\t\t\ttype: {\r\n\t\t\t\t\t'IS FREE': {\r\n\t\t\t\t\t\tprop: 'isFree',\r\n\t\t\t\t\t\ttype: Boolean\r\n\t\t\t\t\t\t// Excel stores booleans as numbers:\r\n\t\t\t\t\t\t// `1` is `true` and `0` is `false`.\r\n\t\t\t\t\t\t// Such numbers are parsed into booleans.\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'COST': {\r\n\t\t\t\t\t\tprop: 'cost',\r\n\t\t\t\t\t\ttype: Number\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'COURSE TITLE': {\r\n\t\t\t\t\t\tprop: 'title',\r\n\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t'CONTACT': {\r\n\t\t\t\tprop: 'contact',\r\n\t\t\t\trequired: true,\r\n\t\t\t\tparse(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst rowMap = []\r\n\r\n\t\treturn readXlsxFileNode(path.resolve('./test/spreadsheets/course.xlsx'), { schema, rowMap }).then(({ rows }) => {\r\n\t\t\trows[0].date = rows[0].date.getTime()\r\n\t\t\trows.should.deep.equal([{\r\n\t\t\t\tdate: convertToUTCTimezone(new Date(2018, 2, 24)).getTime(),\r\n\t\t\t\tnumberOfStudents: 123,\r\n\t\t\t\tcourse: {\r\n\t\t\t\t\tisFree: false,\r\n\t\t\t\t\tcost: 210.45,\r\n\t\t\t\t\ttitle: 'Chemistry'\r\n\t\t\t\t},\r\n\t\t\t\tcontact: '+11234567890'\r\n\t\t\t}])\r\n\t\t\trowMap.should.deep.equal([0, 1])\r\n\t\t})\r\n\t})\r\n\r\n\tit('should read *.xlsx file on Node.js and map it to JSON', () => {\r\n\t\tconst map = {\r\n\t\t\t'START DATE': 'date',\r\n\t\t\t'NUMBER OF STUDENTS': 'numberOfStudents',\r\n\t\t\t'COURSE': {\r\n\t\t\t\t'course': {\r\n\t\t\t\t\t'IS FREE': 'isFree',\r\n\t\t\t\t\t'COST': 'cost',\r\n\t\t\t\t\t'COURSE TITLE': 'title'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t'CONTACT': 'contact'\r\n\t\t}\r\n\r\n\t\tconst rowMap = []\r\n\r\n\t\treturn readXlsxFileNode(path.resolve('./test/spreadsheets/course.xlsx'), { map, rowMap }).then(({ rows, errors }) => {\r\n\t\t\terrors.should.deep.equal([])\r\n\t\t\trows[0].date = rows[0].date.getTime()\r\n\t\t\trows.should.deep.equal([{\r\n\t\t\t\tdate: convertToUTCTimezone(new Date(2018, 2, 24)).getTime(),\r\n\t\t\t\tnumberOfStudents: 123,\r\n\t\t\t\tcourse: {\r\n\t\t\t\t\tisFree: false,\r\n\t\t\t\t\tcost: 210.45,\r\n\t\t\t\t\ttitle: 'Chemistry'\r\n\t\t\t\t},\r\n\t\t\t\tcontact: '(123) 456-7890'\r\n\t\t\t}])\r\n\t\t\trowMap.should.deep.equal([0, 1])\r\n\t\t})\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,OAAOC,gBAAgB,MAAM,uBAAuB;AAEpDC,QAAQ,CAAC,kBAAkB,EAAE,YAAM;EAClCC,EAAE,CAAC,yDAAyD,EAAE,YAAM;IACnE,IAAMC,MAAM,GAAG;MACd,YAAY,EAAE;QACbC,IAAI,EAAE,MAAM;QACZC,IAAI,EAAEC;MACP,CAAC;MACD,oBAAoB,EAAE;QACrBF,IAAI,EAAE,kBAAkB;QACxBC,IAAI,EAAEE,MAAM;QACZC,QAAQ,EAAE;MACX,CAAC;MACD,QAAQ,EAAE;QACTJ,IAAI,EAAE,QAAQ;QACdC,IAAI,EAAE;UACL,SAAS,EAAE;YACVD,IAAI,EAAE,QAAQ;YACdC,IAAI,EAAEI;YACN;YACA;YACA;UACD,CAAC;;UACD,MAAM,EAAE;YACPL,IAAI,EAAE,MAAM;YACZC,IAAI,EAAEE;UACP,CAAC;UACD,cAAc,EAAE;YACfH,IAAI,EAAE,OAAO;YACbC,IAAI,EAAEK;UACP;QACD;MACD,CAAC;MACD,SAAS,EAAE;QACVN,IAAI,EAAE,SAAS;QACfI,QAAQ,EAAE,IAAI;QACdG,KAAK,WAAAA,MAACC,KAAK,EAAE;UACZ,OAAO,cAAc;QACtB;MACD;IACD,CAAC;IAED,IAAMC,MAAM,GAAG,EAAE;IAEjB,OAAOb,gBAAgB,CAACD,IAAI,CAACe,OAAO,CAAC,iCAAiC,CAAC,EAAE;MAAEX,MAAM,EAANA,MAAM;MAAEU,MAAM,EAANA;IAAO,CAAC,CAAC,CAACE,IAAI,CAAC,UAAAC,IAAA,EAAc;MAAA,IAAXC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MACxGA,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,GAAGD,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAACC,OAAO,CAAC,CAAC;MACrCF,IAAI,CAACG,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;QACvBJ,IAAI,EAAEK,oBAAoB,CAAC,IAAIjB,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAACa,OAAO,CAAC,CAAC;QAC3DK,gBAAgB,EAAE,GAAG;QACrBC,MAAM,EAAE;UACPC,MAAM,EAAE,KAAK;UACbC,IAAI,EAAE,MAAM;UACZC,KAAK,EAAE;QACR,CAAC;QACDC,OAAO,EAAE;MACV,CAAC,CAAC,CAAC;MACHhB,MAAM,CAACO,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC;EACH,CAAC,CAAC;EAEFpB,EAAE,CAAC,uDAAuD,EAAE,YAAM;IACjE,IAAM4B,GAAG,GAAG;MACX,YAAY,EAAE,MAAM;MACpB,oBAAoB,EAAE,kBAAkB;MACxC,QAAQ,EAAE;QACT,QAAQ,EAAE;UACT,SAAS,EAAE,QAAQ;UACnB,MAAM,EAAE,MAAM;UACd,cAAc,EAAE;QACjB;MACD,CAAC;MACD,SAAS,EAAE;IACZ,CAAC;IAED,IAAMjB,MAAM,GAAG,EAAE;IAEjB,OAAOb,gBAAgB,CAACD,IAAI,CAACe,OAAO,CAAC,iCAAiC,CAAC,EAAE;MAAEgB,GAAG,EAAHA,GAAG;MAAEjB,MAAM,EAANA;IAAO,CAAC,CAAC,CAACE,IAAI,CAAC,UAAAgB,KAAA,EAAsB;MAAA,IAAnBd,IAAI,GAAAc,KAAA,CAAJd,IAAI;QAAEe,MAAM,GAAAD,KAAA,CAANC,MAAM;MAC7GA,MAAM,CAACZ,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;MAC5BL,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,GAAGD,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAACC,OAAO,CAAC,CAAC;MACrCF,IAAI,CAACG,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;QACvBJ,IAAI,EAAEK,oBAAoB,CAAC,IAAIjB,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAACa,OAAO,CAAC,CAAC;QAC3DK,gBAAgB,EAAE,GAAG;QACrBC,MAAM,EAAE;UACPC,MAAM,EAAE,KAAK;UACbC,IAAI,EAAE,MAAM;UACZC,KAAK,EAAE;QACR,CAAC;QACDC,OAAO,EAAE;MACV,CAAC,CAAC,CAAC;MACHhB,MAAM,CAACO,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,SAASC,oBAAoBA,CAACL,IAAI,EAAE;EACnC;EACA;EACA;EACA;EACA;EACA;EACA,OAAO,IAAIZ,IAAI,CAACY,IAAI,CAACC,OAAO,CAAC,CAAC,GAAGD,IAAI,CAACe,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvE"}
1
+ {"version":3,"file":"readXlsxFileNode.test.js","names":["path","readXlsxFileNode","describe","it","schema","date","column","type","Date","numberOfStudents","Number","required","course","isFree","Boolean","cost","title","String","contact","value","rowIndexSourceMap","resolve","then","_ref","rows","getTime","should","deep","equal","convertToUTCTimezone","getTimezoneOffset"],"sources":["../../source/read/readXlsxFileNode.test.js"],"sourcesContent":["import path from 'path'\r\n\r\nimport readXlsxFileNode from './readXlsxFileNode.js'\r\n\r\ndescribe('readXlsxFileNode', () => {\r\n\tit('should read *.xlsx file on Node.js and parse it to JSON', () => {\r\n\t\tconst schema = {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'START DATE',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\tnumberOfStudents: {\r\n\t\t\t\tcolumn: 'NUMBER OF STUDENTS',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tcourse: {\r\n\t\t\t\tschema: {\r\n\t\t\t\t\tisFree: {\r\n\t\t\t\t\t\tcolumn: 'IS FREE',\r\n\t\t\t\t\t\ttype: Boolean\r\n\t\t\t\t\t\t// Excel stores booleans as numbers:\r\n\t\t\t\t\t\t// `1` is `true` and `0` is `false`.\r\n\t\t\t\t\t\t// Such numbers are parsed into booleans.\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcost: {\r\n\t\t\t\t\t\tcolumn: 'COST',\r\n\t\t\t\t\t\ttype: Number\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\tcolumn: 'COURSE TITLE',\r\n\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcontact: {\r\n\t\t\t\tcolumn: 'CONTACT',\r\n\t\t\t\trequired: true,\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst rowIndexSourceMap = []\r\n\r\n\t\treturn readXlsxFileNode(path.resolve('./test/spreadsheets/course.xlsx'), { schema, rowIndexSourceMap }).then(({ rows }) => {\r\n\t\t\trows[0].date = rows[0].date.getTime()\r\n\t\t\trows.should.deep.equal([{\r\n\t\t\t\tdate: convertToUTCTimezone(new Date(2018, 2, 24)).getTime(),\r\n\t\t\t\tnumberOfStudents: 123,\r\n\t\t\t\tcourse: {\r\n\t\t\t\t\tisFree: false,\r\n\t\t\t\t\tcost: 210.45,\r\n\t\t\t\t\ttitle: 'Chemistry'\r\n\t\t\t\t},\r\n\t\t\t\tcontact: '+11234567890'\r\n\t\t\t}])\r\n\t\t\trowIndexSourceMap.should.deep.equal([0, 1])\r\n\t\t})\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,OAAOC,gBAAgB,MAAM,uBAAuB;AAEpDC,QAAQ,CAAC,kBAAkB,EAAE,YAAM;EAClCC,EAAE,CAAC,yDAAyD,EAAE,YAAM;IACnE,IAAMC,MAAM,GAAG;MACdC,IAAI,EAAE;QACLC,MAAM,EAAE,YAAY;QACpBC,IAAI,EAAEC;MACP,CAAC;MACDC,gBAAgB,EAAE;QACjBH,MAAM,EAAE,oBAAoB;QAC5BC,IAAI,EAAEG,MAAM;QACZC,QAAQ,EAAE;MACX,CAAC;MACDC,MAAM,EAAE;QACPR,MAAM,EAAE;UACPS,MAAM,EAAE;YACPP,MAAM,EAAE,SAAS;YACjBC,IAAI,EAAEO;YACN;YACA;YACA;UACD,CAAC;;UACDC,IAAI,EAAE;YACLT,MAAM,EAAE,MAAM;YACdC,IAAI,EAAEG;UACP,CAAC;UACDM,KAAK,EAAE;YACNV,MAAM,EAAE,cAAc;YACtBC,IAAI,EAAEU;UACP;QACD;MACD,CAAC;MACDC,OAAO,EAAE;QACRZ,MAAM,EAAE,SAAS;QACjBK,QAAQ,EAAE,IAAI;QACdJ,IAAI,WAAAA,KAACY,KAAK,EAAE;UACX,OAAO,cAAc;QACtB;MACD;IACD,CAAC;IAED,IAAMC,iBAAiB,GAAG,EAAE;IAE5B,OAAOnB,gBAAgB,CAACD,IAAI,CAACqB,OAAO,CAAC,iCAAiC,CAAC,EAAE;MAAEjB,MAAM,EAANA,MAAM;MAAEgB,iBAAiB,EAAjBA;IAAkB,CAAC,CAAC,CAACE,IAAI,CAAC,UAAAC,IAAA,EAAc;MAAA,IAAXC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MACnHA,IAAI,CAAC,CAAC,CAAC,CAACnB,IAAI,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,IAAI,CAACoB,OAAO,CAAC,CAAC;MACrCD,IAAI,CAACE,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;QACvBvB,IAAI,EAAEwB,oBAAoB,CAAC,IAAIrB,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAACiB,OAAO,CAAC,CAAC;QAC3DhB,gBAAgB,EAAE,GAAG;QACrBG,MAAM,EAAE;UACPC,MAAM,EAAE,KAAK;UACbE,IAAI,EAAE,MAAM;UACZC,KAAK,EAAE;QACR,CAAC;QACDE,OAAO,EAAE;MACV,CAAC,CAAC,CAAC;MACHE,iBAAiB,CAACM,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,SAASC,oBAAoBA,CAACxB,IAAI,EAAE;EACnC;EACA;EACA;EACA;EACA;EACA;EACA,OAAO,IAAIG,IAAI,CAACH,IAAI,CAACoB,OAAO,CAAC,CAAC,GAAGpB,IAAI,CAACyB,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvE"}