read-excel-file 5.8.6 → 5.8.7

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 (48) hide show
  1. package/README.md +2 -2
  2. package/bundle/read-excel-file.min.js.map +1 -1
  3. package/commonjs/read/readXlsxFileContents.js +3 -3
  4. package/commonjs/read/readXlsxFileContents.js.map +1 -1
  5. package/commonjs/read/schema/{convertToJson.js → mapToObjects.js} +3 -3
  6. package/commonjs/read/schema/mapToObjects.js.map +1 -0
  7. package/commonjs/read/schema/{convertToJson.legacy.js → mapToObjects.legacy.js} +5 -5
  8. package/commonjs/read/schema/mapToObjects.legacy.js.map +1 -0
  9. package/commonjs/read/schema/mapToObjects.legacy.test.js.map +1 -0
  10. package/commonjs/read/schema/{convertToJson.spreadsheet.js → mapToObjects.spreadsheet.js} +5 -5
  11. package/commonjs/read/schema/mapToObjects.spreadsheet.js.map +1 -0
  12. package/commonjs/read/schema/mapToObjects.spreadsheet.test.js.map +1 -0
  13. package/commonjs/read/schema/mapToObjects.test.js.map +1 -0
  14. package/commonjs/read/unpackXlsxFileNode.js +13 -0
  15. package/commonjs/read/unpackXlsxFileNode.js.map +1 -1
  16. package/map/index.cjs +2 -2
  17. package/map/index.cjs.js +2 -2
  18. package/map/index.d.ts +5 -1
  19. package/map/index.js +1 -1
  20. package/modules/read/readXlsxFileContents.js +3 -3
  21. package/modules/read/readXlsxFileContents.js.map +1 -1
  22. package/modules/read/schema/{convertToJson.js → mapToObjects.js} +2 -2
  23. package/modules/read/schema/mapToObjects.js.map +1 -0
  24. package/modules/read/schema/{convertToJson.legacy.js → mapToObjects.legacy.js} +4 -4
  25. package/modules/read/schema/mapToObjects.legacy.js.map +1 -0
  26. package/modules/read/schema/mapToObjects.legacy.test.js.map +1 -0
  27. package/modules/read/schema/{convertToJson.spreadsheet.js → mapToObjects.spreadsheet.js} +4 -4
  28. package/modules/read/schema/mapToObjects.spreadsheet.js.map +1 -0
  29. package/modules/read/schema/mapToObjects.spreadsheet.test.js.map +1 -0
  30. package/modules/read/schema/mapToObjects.test.js.map +1 -0
  31. package/modules/read/unpackXlsxFileNode.js +14 -0
  32. package/modules/read/unpackXlsxFileNode.js.map +1 -1
  33. package/package.json +1 -1
  34. package/schema/index.cjs +2 -2
  35. package/schema/index.cjs.js +2 -2
  36. package/schema/index.js +1 -1
  37. package/commonjs/read/schema/convertToJson.js.map +0 -1
  38. package/commonjs/read/schema/convertToJson.legacy.js.map +0 -1
  39. package/commonjs/read/schema/convertToJson.legacy.test.js.map +0 -1
  40. package/commonjs/read/schema/convertToJson.spreadsheet.js.map +0 -1
  41. package/commonjs/read/schema/convertToJson.spreadsheet.test.js.map +0 -1
  42. package/commonjs/read/schema/convertToJson.test.js.map +0 -1
  43. package/modules/read/schema/convertToJson.js.map +0 -1
  44. package/modules/read/schema/convertToJson.legacy.js.map +0 -1
  45. package/modules/read/schema/convertToJson.legacy.test.js.map +0 -1
  46. package/modules/read/schema/convertToJson.spreadsheet.js.map +0 -1
  47. package/modules/read/schema/convertToJson.spreadsheet.test.js.map +0 -1
  48. package/modules/read/schema/convertToJson.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertToJson.test.js","names":["_convertToJson25","_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","_convertToJson","convertToJson","parse","getTimezoneOffset","DATE","prop","type","NUMBER","Number","BOOLEAN","Boolean","STRING","String","PHONE","value","PHONE_TYPE","rows","errors","toISOString","number","phone","phoneType","string","_convertToJson2","_convertToJson3","required","error","row","column","_convertToJson4","_convertToJson5","NAMES","names","_convertToJson6","INTEGER","Integer","length","reason","_convertToJson7","URL","_convertToJson8","EMAIL","Email","_convertToJson9","NAME","validate","Error","_convertToJson10","_convertToJson11","TRUE","FALSE","INVALID","_convertToJson12","_convertToJson13","_convertToJson14","rowIndexMap","_convertToJson15","STATUS","oneOf","_convertToJson16","_convertToJson17","A","B","C","CA","CB","a","b","c","_convertToJson18","COLUMN_1","COLUMN_2","COLUMN_4","COLUMN_5","column2","column4","_convertToJson19","schemaPropertyValueForMissingColumn","column1","column5","_convertToJson20","schemaPropertyValueForNullCellValue","_convertToJson21","_convertToJson22","_convertToJson23","schemaPropertyShouldSkipRequiredValidationForMissingColumn","_convertToJson24","getTime"],"sources":["../../../source/read/schema/convertToJson.test.js"],"sourcesContent":["import convertToJson, { parseArray, getBlock } from './convertToJson.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('convertToJson', () => {\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson(\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 +0,0 @@
1
- {"version":3,"file":"convertToJson.js","names":["NumberType","StringType","BooleanType","DateType","DEFAULT_OPTIONS","schemaPropertyValueForMissingColumn","undefined","schemaPropertyValueForUndefinedCellValue","schemaPropertyValueForNullCellValue","schemaPropertyShouldSkipRequiredValidationForMissingColumn","getEmptyObjectValue","getEmptyArrayValue","isColumnOriented","arrayValueSeparator","data","schema","options","_objectSpread","_options","rowIndexMap","validateSchema","transpose","columns","results","errors","i","length","result","read","push","_iterator","_createForOfIteratorHelperLoose","_step","done","error","value","row","rows","rowIndex","path","object","isEmptyObject","createError","_ref","column","errorMessage","reason","type","pendingRequiredChecks","_loop","key","_Object$keys","_i","schemaEntry","isNestedSchema","_typeof","Array","isArray","propertyPath","concat","prop","cellValue","columnIndex","indexOf","isMissingColumn","array","parseArray","map","_value","parseValue","isEmpty","every","isEmptyValue","required","Object","keys","_i2","_pendingRequiredCheck","_pendingRequiredCheck2","skipRequiredValidation","isRequired","parse","parseCustomValue","parseValueOfType","oneOf","validate","message","parsedValue","String","Number","Date","properties","Boolean","Error","name","getBlock","string","endCharacter","startIndex","substring","character","block","blocks","index","_getBlock","_getBlock2","_slicedToArray","trim","_","_i3","_Object$keys2","entry"],"sources":["../../../source/read/schema/convertToJson.js"],"sourcesContent":["import NumberType from '../../types/Number.js'\r\nimport StringType from '../../types/String.js'\r\nimport BooleanType from '../../types/Boolean.js'\r\nimport DateType from '../../types/Date.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n schemaPropertyValueForMissingColumn: undefined,\r\n schemaPropertyValueForUndefinedCellValue: undefined,\r\n schemaPropertyValueForNullCellValue: null,\r\n schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false,\r\n // `getEmptyObjectValue(object, { path })` applies to both the top-level object\r\n // and any of its sub-objects.\r\n getEmptyObjectValue: () => null,\r\n getEmptyArrayValue: () => null,\r\n isColumnOriented: false,\r\n arrayValueSeparator: ','\r\n}\r\n\r\n/**\r\n * (this function is exported from `read-excel-file/map`)\r\n * Converts spreadsheet-alike data structure into an array of objects.\r\n * The first row should be the list of column headers.\r\n * @param {any[][]} data - An array of rows, each row being an array of cells.\r\n * @param {object} schema\r\n * @param {object} [options]\r\n * @param {null} [options.schemaPropertyValueForMissingColumn] — By default, when some of the `schema` columns are missing in the input `data`, those properties are set to `undefined` in the output objects. Pass `schemaPropertyValueForMissingColumn: null` to set such \"missing column\" properties to `null` in the output objects.\r\n * @param {null} [options.schemaPropertyValueForNullCellValue] — By default, when it encounters a `null` value in a cell in input `data`, it sets it to `undefined` in the output object. Pass `schemaPropertyValueForNullCellValue: null` to make it set such values as `null`s in output objects.\r\n * @param {null} [options.schemaPropertyValueForUndefinedCellValue] — By default, when it encounters an `undefined` value in a cell in input `data`, it it sets it to `undefined` in the output object. Pass `schemaPropertyValueForUndefinedCellValue: null` to make it set such values as `null`s in output objects.\r\n * @param {boolean} [options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(column: string, { object })] — By default, it does apply `required` validation to `schema` properties for which columns are missing in the input `data`. One could pass a custom `schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })` to disable `required` validation for missing columns in some or all cases.\r\n * @param {function} [options.getEmptyObjectValue(object, { path })] — By default, it returns `null` for an \"empty\" resulting object. One could override that value using `getEmptyObjectValue(object, { path })` parameter. The value applies to both top-level object and any nested sub-objects in case of a nested schema, hence the additional `path?: string` parameter.\r\n * @param {function} [getEmptyArrayValue(array, { path })] — By default, it returns `null` for an \"empty\" array value. One could override that value using `getEmptyArrayValue(array, { path })` parameter.\r\n * @param {boolean} [options.isColumnOriented] — By default, the headers are assumed to be the first row in the `data`. Pass `isColumnOriented: true` if the headers are the first column in the `data`. i.e. if `data` is \"transposed\".\r\n * @param {object} [options.rowIndexMap] — Custom row index mapping `data` rows. If present, will overwrite the indexes of `data` rows with the indexes from this `rowIndexMap`.\r\n * @return {object[]}\r\n */\r\nexport default function(data, schema, options) {\r\n if (options) {\r\n options = {\r\n ...DEFAULT_OPTIONS,\r\n ...options\r\n }\r\n } else {\r\n options = DEFAULT_OPTIONS\r\n }\r\n\r\n const {\r\n isColumnOriented,\r\n rowIndexMap\r\n } = options\r\n\r\n validateSchema(schema)\r\n\r\n if (isColumnOriented) {\r\n data = transpose(data)\r\n }\r\n\r\n const columns = data[0]\r\n\r\n const results = []\r\n const errors = []\r\n\r\n for (let i = 1; i < data.length; i++) {\r\n const result = read(schema, data[i], i, undefined, columns, errors, options)\r\n results.push(result)\r\n }\r\n\r\n // Set the correct `row` number in `errors` if a custom `rowIndexMap` is supplied.\r\n if (rowIndexMap) {\r\n for (const error of errors) {\r\n // Convert the `row` index in `data` to the\r\n // actual `row` index in the spreadsheet.\r\n // `- 1` converts row number to row index.\r\n // `+ 1` converts row index to row number.\r\n error.row = rowIndexMap[error.row - 1] + 1\r\n }\r\n }\r\n\r\n return {\r\n rows: results,\r\n errors\r\n }\r\n}\r\n\r\nfunction read(schema, row, rowIndex, path, columns, errors, options) {\r\n const object = {}\r\n let isEmptyObject = true\r\n\r\n const createError = ({\r\n column,\r\n value,\r\n error: errorMessage,\r\n reason\r\n }) => {\r\n const error = {\r\n error: errorMessage,\r\n row: rowIndex + 1,\r\n column,\r\n value\r\n }\r\n if (reason) {\r\n error.reason = reason\r\n }\r\n if (schema[column].type) {\r\n error.type = schema[column].type\r\n }\r\n return error\r\n }\r\n\r\n const pendingRequiredChecks = []\r\n\r\n // For each schema entry.\r\n for (const key of Object.keys(schema)) {\r\n const schemaEntry = schema[key]\r\n const isNestedSchema = typeof schemaEntry.type === 'object' && !Array.isArray(schemaEntry.type)\r\n\r\n // The path of this property inside the resulting object.\r\n const propertyPath = `${path || ''}.${schemaEntry.prop}`\r\n\r\n // Read the cell value for the schema entry.\r\n let cellValue\r\n const columnIndex = columns.indexOf(key)\r\n const isMissingColumn = columnIndex < 0\r\n if (!isMissingColumn) {\r\n cellValue = row[columnIndex]\r\n }\r\n\r\n let value\r\n let error\r\n let reason\r\n\r\n // Get property `value` from cell value.\r\n if (isNestedSchema) {\r\n value = read(schemaEntry.type, row, rowIndex, propertyPath, columns, errors, options)\r\n } else {\r\n if (isMissingColumn) {\r\n value = options.schemaPropertyValueForMissingColumn\r\n }\r\n else if (cellValue === undefined) {\r\n value = options.schemaPropertyValueForUndefinedCellValue\r\n }\r\n else if (cellValue === null) {\r\n value = options.schemaPropertyValueForNullCellValue\r\n }\r\n else if (Array.isArray(schemaEntry.type)) {\r\n const array = parseArray(cellValue, options.arrayValueSeparator).map((_value) => {\r\n if (error) {\r\n return\r\n }\r\n const result = parseValue(_value, schemaEntry, options)\r\n if (result.error) {\r\n // In case of an error, `value` won't be returned and will just be reported\r\n // as part of an `error` object, so it's fine assigning just an element of the array.\r\n value = _value\r\n error = result.error\r\n reason = result.reason\r\n }\r\n return result.value\r\n })\r\n if (!error) {\r\n const isEmpty = array.every(isEmptyValue)\r\n value = isEmpty ? options.getEmptyArrayValue(array, { path: propertyPath }) : array\r\n }\r\n } else {\r\n const result = parseValue(cellValue, schemaEntry, options)\r\n error = result.error\r\n reason = result.reason\r\n value = error ? cellValue : result.value\r\n }\r\n }\r\n\r\n // Apply `required` validation if the value is \"empty\".\r\n if (!error && isEmptyValue(value)) {\r\n if (schemaEntry.required) {\r\n // Will perform this `required()` validation in the end,\r\n // when all properties of the mapped object have been mapped.\r\n pendingRequiredChecks.push({ column: key, value, isMissingColumn })\r\n }\r\n }\r\n\r\n if (error) {\r\n // If there was an error then the property value in the `object` will be `undefined`,\r\n // i.e it won't add the property value to the mapped object.\r\n errors.push(createError({\r\n column: key,\r\n value,\r\n error,\r\n reason\r\n }))\r\n } else {\r\n // Possibly unmark the mapped object as \"empty\".\r\n if (isEmptyObject && !isEmptyValue(value)) {\r\n isEmptyObject = false\r\n }\r\n // Set the value in the mapped object.\r\n // Skip setting `undefined` values because they're already `undefined`.\r\n if (value !== undefined) {\r\n object[schemaEntry.prop] = value\r\n }\r\n }\r\n }\r\n\r\n // Return `null` for an \"empty\" mapped object.\r\n if (isEmptyObject) {\r\n return options.getEmptyObjectValue(object, { path })\r\n }\r\n\r\n // Perform any `required` validations.\r\n for (const { column, value, isMissingColumn } of pendingRequiredChecks) {\r\n // Can optionally skip `required` validation for missing columns.\r\n const skipRequiredValidation = isMissingColumn && options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })\r\n if (!skipRequiredValidation) {\r\n const { required } = schema[column]\r\n const isRequired = typeof required === 'boolean' ? required : required(object)\r\n if (isRequired) {\r\n errors.push(createError({\r\n column,\r\n value,\r\n error: 'required'\r\n }))\r\n }\r\n }\r\n }\r\n\r\n // Return the mapped object.\r\n return object\r\n}\r\n\r\n/**\r\n * Converts textual value to a javascript typed value.\r\n * @param {any} value\r\n * @param {object} schemaEntry\r\n * @return {{ value: any, error: string }}\r\n */\r\nexport function parseValue(value, schemaEntry, options) {\r\n if (value === null) {\r\n return { value: null }\r\n }\r\n let result\r\n if (schemaEntry.parse) {\r\n result = parseCustomValue(value, schemaEntry.parse)\r\n } else if (schemaEntry.type) {\r\n result = parseValueOfType(\r\n value,\r\n // Supports parsing array types.\r\n // See `parseArray()` function for more details.\r\n // Example `type`: String[]\r\n // Input: 'Barack Obama, \"String, with, colons\", Donald Trump'\r\n // Output: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n Array.isArray(schemaEntry.type) ? schemaEntry.type[0] : schemaEntry.type,\r\n options\r\n )\r\n } else {\r\n result = { value: value }\r\n // throw new Error('Invalid schema entry: no .type and no .parse():\\n\\n' + JSON.stringify(schemaEntry, null, 2))\r\n }\r\n // If errored then return the error.\r\n if (result.error) {\r\n return result\r\n }\r\n if (result.value !== null) {\r\n if (schemaEntry.oneOf && schemaEntry.oneOf.indexOf(result.value) < 0) {\r\n return { error: 'invalid', reason: 'unknown' }\r\n }\r\n if (schemaEntry.validate) {\r\n try {\r\n schemaEntry.validate(result.value)\r\n } catch (error) {\r\n return { error: error.message }\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * Converts textual value to a custom value using supplied `.parse()`.\r\n * @param {any} value\r\n * @param {function} parse\r\n * @return {{ value: any, error: string }}\r\n */\r\nfunction parseCustomValue(value, parse) {\r\n try {\r\n const parsedValue = parse(value)\r\n if (parsedValue === undefined) {\r\n return { value: null }\r\n }\r\n return { value: parsedValue }\r\n } catch (error) {\r\n const result = { error: error.message }\r\n if (error.reason) {\r\n result.reason = error.reason;\r\n }\r\n return result\r\n }\r\n}\r\n\r\n/**\r\n * Converts textual value to a javascript typed value.\r\n * @param {any} value\r\n * @param {} type\r\n * @return {{ value: (string|number|Date|boolean), error: string, reason?: string }}\r\n */\r\nfunction parseValueOfType(value, type, options) {\r\n switch (type) {\r\n case String:\r\n return parseCustomValue(value, StringType)\r\n\r\n case Number:\r\n return parseCustomValue(value, NumberType)\r\n\r\n case Date:\r\n return parseCustomValue(value, (value) => DateType(value, { properties: options.properties }))\r\n\r\n case Boolean:\r\n return parseCustomValue(value, BooleanType)\r\n\r\n default:\r\n if (typeof type === 'function') {\r\n return parseCustomValue(value, type)\r\n }\r\n throw new Error(`Unsupported schema type: ${type && type.name || type}`)\r\n }\r\n}\r\n\r\nexport function getBlock(string, endCharacter, startIndex) {\r\n let i = 0\r\n let substring = ''\r\n let character\r\n while (startIndex + i < string.length) {\r\n const character = string[startIndex + i]\r\n if (character === endCharacter) {\r\n return [substring, i]\r\n }\r\n else if (character === '\"') {\r\n const block = getBlock(string, '\"', startIndex + i + 1)\r\n substring += block[0]\r\n i += '\"'.length + block[1] + '\"'.length\r\n }\r\n else {\r\n substring += character\r\n i++\r\n }\r\n }\r\n return [substring, i]\r\n}\r\n\r\n/**\r\n * Parses a string of comma-separated substrings into an array of substrings.\r\n * (the `export` is just for tests)\r\n * @param {string} string — A string of comma-separated substrings.\r\n * @return {string[]} An array of substrings.\r\n */\r\nexport function parseArray(string, arrayValueSeparator) {\r\n const blocks = []\r\n let index = 0\r\n while (index < string.length) {\r\n const [substring, length] = getBlock(string, arrayValueSeparator, index)\r\n index += length + arrayValueSeparator.length\r\n blocks.push(substring.trim())\r\n }\r\n return blocks\r\n}\r\n\r\n// Transpose a 2D array.\r\n// https://stackoverflow.com/questions/17428587/transposing-a-2d-array-in-javascript\r\nconst transpose = array => array[0].map((_, i) => array.map(row => row[i]))\r\n\r\nfunction validateSchema(schema) {\r\n for (const key of Object.keys(schema)) {\r\n const entry = schema[key]\r\n if (!entry.prop) {\r\n throw new Error(`\"prop\" not defined for schema entry \"${key}\".`)\r\n }\r\n }\r\n}\r\n\r\nfunction isEmptyValue(value) {\r\n return value === undefined || value === null\r\n}"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertToJson.legacy.js","names":["convertToJson","convertToJsonLegacyBehavior","data","schema","options","arguments","length","undefined","includeNullValues","ignoreEmptyRows","isColumnOriented","rowMap","defaultConversionOptions","schemaPropertyValueForMissingColumn","schemaPropertyValueForUndefinedCellValue","schemaPropertyValueForNullCellValue","schemaPropertyShouldSkipRequiredValidationForMissingColumn","column","_ref","path","getEmptyObjectValue","object","_ref2","getEmptyArrayValue","arrayValueSeparator","_ref3","result","_objectSpread","rowIndexMap","rows","filter","_"],"sources":["../../../source/read/schema/convertToJson.legacy.js"],"sourcesContent":["import convertToJson from './convertToJson.js'\r\n\r\nexport default function convertToJsonLegacyBehavior(data, schema, options = {}) {\r\n\tconst {\r\n\t\tincludeNullValues,\r\n\t\tignoreEmptyRows,\r\n\t\tisColumnOriented,\r\n\t\trowMap\r\n\t} = options\r\n\tconst defaultConversionOptions = {\r\n\t\tschemaPropertyValueForMissingColumn: undefined,\r\n\t\tschemaPropertyValueForUndefinedCellValue: undefined,\r\n\t\tschemaPropertyValueForNullCellValue: undefined,\r\n\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: (column, { path }) => false,\r\n\t\tgetEmptyObjectValue: (object, { path }) => path ? undefined : null,\r\n\t\tgetEmptyArrayValue: () => null,\r\n\t\tarrayValueSeparator: ','\r\n\t}\r\n\tif (includeNullValues) {\r\n\t\tdefaultConversionOptions.schemaPropertyValueForMissingColumn = null\r\n\t\tdefaultConversionOptions.schemaPropertyValueForUndefinedCellValue = null\r\n\t\tdefaultConversionOptions.schemaPropertyValueForNullCellValue = null\r\n\t\tdefaultConversionOptions.getEmptyObjectValue = (object, { path }) => null\r\n\t}\r\n\tconst result = convertToJson(data, schema, {\r\n\t\t...defaultConversionOptions,\r\n\t\trowIndexMap: rowMap,\r\n\t\tisColumnOriented\r\n\t})\r\n\tif (ignoreEmptyRows !== false) {\r\n\t\tresult.rows = result.rows.filter(_ => _ !== defaultConversionOptions.getEmptyObjectValue(_, { path: undefined }))\r\n\t}\r\n\treturn result\r\n}"],"mappings":";;;;;;AAAA,OAAOA,aAAa,MAAM,oBAAoB;AAE9C,eAAe,SAASC,2BAA2BA,CAACC,IAAI,EAAEC,MAAM,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAC7E,IACCG,iBAAiB,GAIdJ,OAAO,CAJVI,iBAAiB;IACjBC,eAAe,GAGZL,OAAO,CAHVK,eAAe;IACfC,gBAAgB,GAEbN,OAAO,CAFVM,gBAAgB;IAChBC,MAAM,GACHP,OAAO,CADVO,MAAM;EAEP,IAAMC,wBAAwB,GAAG;IAChCC,mCAAmC,EAAEN,SAAS;IAC9CO,wCAAwC,EAAEP,SAAS;IACnDQ,mCAAmC,EAAER,SAAS;IAC9CS,0DAA0D,EAAE,SAAAA,2DAACC,MAAM,EAAAC,IAAA;MAAA,IAAIC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MAAA,OAAO,KAAK;IAAA;IACvFC,mBAAmB,EAAE,SAAAA,oBAACC,MAAM,EAAAC,KAAA;MAAA,IAAIH,IAAI,GAAAG,KAAA,CAAJH,IAAI;MAAA,OAAOA,IAAI,GAAGZ,SAAS,GAAG,IAAI;IAAA;IAClEgB,kBAAkB,EAAE,SAAAA,mBAAA;MAAA,OAAM,IAAI;IAAA;IAC9BC,mBAAmB,EAAE;EACtB,CAAC;EACD,IAAIhB,iBAAiB,EAAE;IACtBI,wBAAwB,CAACC,mCAAmC,GAAG,IAAI;IACnED,wBAAwB,CAACE,wCAAwC,GAAG,IAAI;IACxEF,wBAAwB,CAACG,mCAAmC,GAAG,IAAI;IACnEH,wBAAwB,CAACQ,mBAAmB,GAAG,UAACC,MAAM,EAAAI,KAAA;MAAA,IAAIN,IAAI,GAAAM,KAAA,CAAJN,IAAI;MAAA,OAAO,IAAI;IAAA;EAC1E;EACA,IAAMO,MAAM,GAAG1B,aAAa,CAACE,IAAI,EAAEC,MAAM,EAAAwB,aAAA,CAAAA,aAAA,KACrCf,wBAAwB;IAC3BgB,WAAW,EAAEjB,MAAM;IACnBD,gBAAgB,EAAhBA;EAAgB,EAChB,CAAC;EACF,IAAID,eAAe,KAAK,KAAK,EAAE;IAC9BiB,MAAM,CAACG,IAAI,GAAGH,MAAM,CAACG,IAAI,CAACC,MAAM,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,KAAKnB,wBAAwB,CAACQ,mBAAmB,CAACW,CAAC,EAAE;QAAEZ,IAAI,EAAEZ;MAAU,CAAC,CAAC;IAAA,EAAC;EAClH;EACA,OAAOmB,MAAM;AACd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertToJson.legacy.test.js","names":["convertToJson","Integer","describe","it","_convertToJson","A","prop","type","String","B","C","CA","CB","includeNullValues","rows","should","deep","equal","a","b","c","_convertToJson2","COLUMN_1","required","COLUMN_2","COLUMN_4","COLUMN_5","errors","column2","column4","_convertToJson3","column1","column5","_convertToJson4","NUMBER","Number","STRING","error","row","column","value","undefined","string","_convertToJson5","_convertToJson6","NAMES","names","_convertToJson7","INTEGER","length","reason","_convertToJson8"],"sources":["../../../source/read/schema/convertToJson.legacy.test.js"],"sourcesContent":["import convertToJson from './convertToJson.legacy.js'\r\n\r\nimport Integer from '../../types/Integer.js'\r\n\r\ndescribe('convertToJson (legacy behavior)', () => {\r\n\tit('should include `null` values when `includeNullValues: true` option is passed', function() {\r\n\t\tconst { rows } = convertToJson(\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\t{\r\n\t\t\t\tincludeNullValues: true\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 } = convertToJson([\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}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`includeNullValues: true`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = convertToJson([\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\tincludeNullValues: 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\tit('should require fields when cell value is empty', () => {\r\n\t\tconst { rows, errors } = convertToJson([\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\t// value: null,\r\n\t\t\tvalue: undefined\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\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 } = convertToJson([\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([])\r\n\t})\r\n\r\n\tit('should parse arrays (and remove `null` empty objects from result)', () => {\r\n\t\tconst { rows, errors } = convertToJson([\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}])\r\n\t})\r\n\r\n\tit('should parse integers (and drop `null` errored objects from result)', () =>\r\n\t{\r\n\t\tconst { rows, errors } = convertToJson([\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}])\r\n\t})\r\n\r\n\tit('should not include `null` values by default (and set `null` for an \"empty\" object)', function() {\r\n\t\tconst { rows } = convertToJson(\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' } },\r\n\t\t\t{ a: 'a' },\r\n\t\t])\r\n\t})\r\n})"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertToJson.spreadsheet.js","names":["convertToJsonSpreadsheetBehavior","convertToJson","data","schema","options","arguments","length","undefined","schemaPropertyValueForEmptyCell","restOptions","_objectWithoutProperties","_excluded","_objectSpread","schemaPropertyValueForNullCellValue"],"sources":["../../../source/read/schema/convertToJson.spreadsheet.js"],"sourcesContent":["// Renames some of the `react-excel-file` options to `convertToJson()` options.\r\nexport default function convertToJsonSpreadsheetBehavior(convertToJson, data, schema, options = {}) {\r\n\tconst {\r\n\t\tschemaPropertyValueForEmptyCell,\r\n\t\t...restOptions\r\n\t} = options\r\n\treturn convertToJson(data, schema, {\r\n\t\t...restOptions,\r\n\t\tschemaPropertyValueForNullCellValue: schemaPropertyValueForEmptyCell\r\n\t})\r\n}"],"mappings":";;;;;;;;;AAAA;AACA,eAAe,SAASA,gCAAgCA,CAACC,aAAa,EAAEC,IAAI,EAAEC,MAAM,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACjG,IACCG,+BAA+B,GAE5BJ,OAAO,CAFVI,+BAA+B;IAC5BC,WAAW,GAAAC,wBAAA,CACXN,OAAO,EAAAO,SAAA;EACX,OAAOV,aAAa,CAACC,IAAI,EAAEC,MAAM,EAAAS,aAAA,CAAAA,aAAA,KAC7BH,WAAW;IACdI,mCAAmC,EAAEL;EAA+B,EACpE,CAAC;AACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertToJson.spreadsheet.test.js","names":["convertToJson_","convertToJsonSpreadsheetBehavior","convertToJson","data","schema","options","describe","it","_convertToJson","COLUMN_1","prop","type","String","required","COLUMN_2","COLUMN_4","COLUMN_5","schemaPropertyValueForMissingColumn","rows","errors","should","deep","equal","column1","column2","column4","column5","_convertToJson2","schemaPropertyValueForEmptyCell"],"sources":["../../../source/read/schema/convertToJson.spreadsheet.test.js"],"sourcesContent":["import convertToJson_ from './convertToJson.js'\r\nimport convertToJsonSpreadsheetBehavior from './convertToJson.spreadsheet.js'\r\n\r\nfunction convertToJson(data, schema, options) {\r\n\treturn convertToJsonSpreadsheetBehavior(convertToJson_, data, schema, options)\r\n}\r\n\r\ndescribe('convertToJson (spreadsheet behavior)', () => {\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = convertToJson([\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\t// column4: undefined,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForEmptyCell: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = convertToJson([\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\tschemaPropertyValueForEmptyCell: 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"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertToJson.test.js","names":["convertToJson","parseArray","getBlock","Integer","URL","Email","date","convertToUTCTimezone","Date","describe","it","should","deep","equal","_convertToJson","parse","getTimezoneOffset","DATE","prop","type","NUMBER","Number","BOOLEAN","Boolean","STRING","String","PHONE","value","PHONE_TYPE","rows","errors","toISOString","number","phone","phoneType","string","_convertToJson2","_convertToJson3","required","error","row","column","_convertToJson4","_convertToJson5","NAMES","names","_convertToJson6","INTEGER","length","reason","_convertToJson7","_convertToJson8","EMAIL","_convertToJson9","NAME","validate","Error","_convertToJson10","_convertToJson11","TRUE","FALSE","INVALID","_convertToJson12","_convertToJson13","_convertToJson14","rowIndexMap","_convertToJson15","STATUS","oneOf","_convertToJson16","_convertToJson17","A","B","C","CA","CB","a","b","c","_convertToJson18","COLUMN_1","COLUMN_2","COLUMN_4","COLUMN_5","column2","column4","_convertToJson19","schemaPropertyValueForMissingColumn","column1","column5","_convertToJson20","schemaPropertyValueForNullCellValue","_convertToJson21","_convertToJson22","_convertToJson23","schemaPropertyShouldSkipRequiredValidationForMissingColumn","_convertToJson24","getTime"],"sources":["../../../source/read/schema/convertToJson.test.js"],"sourcesContent":["import convertToJson, { parseArray, getBlock } from './convertToJson.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('convertToJson', () => {\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson(\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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 } = convertToJson([\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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"}