read-excel-file 5.8.7 → 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.
- package/CHANGELOG.md +37 -0
- package/README.md +223 -271
- package/bundle/read-excel-file.min.js +1 -1
- package/bundle/read-excel-file.min.js.map +1 -1
- package/commonjs/read/dropEmptyRows.js +3 -3
- package/commonjs/read/dropEmptyRows.js.map +1 -1
- package/commonjs/read/dropEmptyRows.test.js.map +1 -1
- package/commonjs/read/getData.js +18 -8
- package/commonjs/read/getData.js.map +1 -1
- package/commonjs/read/readXlsx.js +2 -2
- package/commonjs/read/readXlsx.js.map +1 -1
- package/commonjs/read/readXlsxFileContents.js +8 -9
- package/commonjs/read/readXlsxFileContents.js.map +1 -1
- package/commonjs/read/readXlsxFileNode.test.js.map +1 -1
- package/commonjs/read/schema/mapToObjects.js +100 -38
- package/commonjs/read/schema/mapToObjects.js.map +1 -1
- package/commonjs/read/schema/mapToObjects.test.js.map +1 -1
- package/commonjs/read/unpackXlsxFileNode.js +14 -3
- package/commonjs/read/unpackXlsxFileNode.js.map +1 -1
- package/index.d.ts +0 -2
- package/modules/read/dropEmptyRows.js +3 -3
- package/modules/read/dropEmptyRows.js.map +1 -1
- package/modules/read/dropEmptyRows.test.js.map +1 -1
- package/modules/read/getData.js +18 -8
- package/modules/read/getData.js.map +1 -1
- package/modules/read/readXlsx.js +2 -2
- package/modules/read/readXlsx.js.map +1 -1
- package/modules/read/readXlsxFileContents.js +8 -9
- package/modules/read/readXlsxFileContents.js.map +1 -1
- package/modules/read/readXlsxFileNode.test.js.map +1 -1
- package/modules/read/schema/mapToObjects.js +100 -38
- package/modules/read/schema/mapToObjects.js.map +1 -1
- package/modules/read/schema/mapToObjects.test.js.map +1 -1
- package/modules/read/unpackXlsxFileNode.js +14 -3
- package/modules/read/unpackXlsxFileNode.js.map +1 -1
- package/node/index.d.ts +0 -2
- package/package.json +5 -15
- package/types.d.ts +25 -39
- package/web-worker/index.d.ts +0 -2
- package/bundle/index.html +0 -261
- package/bundle/lib/prism.css +0 -125
- package/bundle/lib/prism.js +0 -7
- package/bundle/lib/promise-polyfill.min.js +0 -1
- package/commonjs/read/schema/convertMapToSchema.js +0 -27
- package/commonjs/read/schema/convertMapToSchema.js.map +0 -1
- package/commonjs/read/schema/convertMapToSchema.test.js.map +0 -1
- package/commonjs/read/schema/mapToObjects.legacy.js +0 -60
- package/commonjs/read/schema/mapToObjects.legacy.js.map +0 -1
- package/commonjs/read/schema/mapToObjects.legacy.test.js.map +0 -1
- package/commonjs/read/schema/mapToObjects.spreadsheet.js +0 -25
- package/commonjs/read/schema/mapToObjects.spreadsheet.js.map +0 -1
- package/commonjs/read/schema/mapToObjects.spreadsheet.test.js.map +0 -1
- package/map/index.cjs +0 -2
- package/map/index.cjs.js +0 -7
- package/map/index.d.ts +0 -15
- package/map/index.js +0 -1
- package/map/package.json +0 -17
- package/modules/read/schema/convertMapToSchema.js +0 -21
- package/modules/read/schema/convertMapToSchema.js.map +0 -1
- package/modules/read/schema/convertMapToSchema.test.js.map +0 -1
- package/modules/read/schema/mapToObjects.legacy.js +0 -53
- package/modules/read/schema/mapToObjects.legacy.js.map +0 -1
- package/modules/read/schema/mapToObjects.legacy.test.js.map +0 -1
- package/modules/read/schema/mapToObjects.spreadsheet.js +0 -19
- package/modules/read/schema/mapToObjects.spreadsheet.js.map +0 -1
- package/modules/read/schema/mapToObjects.spreadsheet.test.js.map +0 -1
- package/schema/index.cjs +0 -2
- package/schema/index.cjs.js +0 -7
- package/schema/index.d.ts +0 -11
- package/schema/index.js +0 -1
- package/schema/package.json +0 -17
- package/website/index.html +0 -261
- package/website/lib/prism.css +0 -125
- package/website/lib/prism.js +0 -7
- 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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"}
|
|
@@ -34,15 +34,15 @@ function unpackXlsxFile(input) {
|
|
|
34
34
|
// The `entries` object stores the files
|
|
35
35
|
// and their contents from this XLSX zip archive.
|
|
36
36
|
var entries = {};
|
|
37
|
-
var stream = input instanceof _stream["default"] ? input : input instanceof Buffer ?
|
|
37
|
+
var stream = input instanceof _stream["default"] ? input : input instanceof Buffer ? createReadableStreamFromBuffer(input) : _fs["default"].createReadStream(input);
|
|
38
38
|
return new Promise(function (resolve, reject) {
|
|
39
39
|
var entryPromises = [];
|
|
40
40
|
stream
|
|
41
41
|
// This first "error" listener is for the original stream errors.
|
|
42
42
|
.on('error', reject).pipe(_unzipper["default"].Parse())
|
|
43
43
|
// This second "error" listener is for the unzip stream errors.
|
|
44
|
-
.on('error', reject).on('close', function () {
|
|
45
|
-
|
|
44
|
+
.on('error', reject).on('finish', function () {}).on('close', function () {
|
|
45
|
+
Promise.all(entryPromises).then(function () {
|
|
46
46
|
return resolve(entries);
|
|
47
47
|
});
|
|
48
48
|
}).on('entry', function (entry) {
|
|
@@ -72,4 +72,15 @@ function unpackXlsxFile(input) {
|
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
|
+
|
|
76
|
+
// Creates a readable stream from a `Buffer`.
|
|
77
|
+
function createReadableStreamFromBuffer(buffer) {
|
|
78
|
+
// Node.js seems to have a bug in `Readable.from()` function:
|
|
79
|
+
// it doesn't correctly handle empty buffers, i.e. it doesn't return a correct stream.
|
|
80
|
+
// https://gitlab.com/catamphetamine/read-excel-file/-/issues/106
|
|
81
|
+
if (buffer.length === 0) {
|
|
82
|
+
throw new Error('No data');
|
|
83
|
+
}
|
|
84
|
+
return _stream.Readable.from(buffer);
|
|
85
|
+
}
|
|
75
86
|
//# sourceMappingURL=unpackXlsxFileNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unpackXlsxFileNode.js","names":["_fs","_interopRequireDefault","require","_stream","_interopRequireWildcard","_unzipper","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","unpackXlsxFile","input","entries","stream","Stream","Buffer","
|
|
1
|
+
{"version":3,"file":"unpackXlsxFileNode.js","names":["_fs","_interopRequireDefault","require","_stream","_interopRequireWildcard","_unzipper","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","unpackXlsxFile","input","entries","stream","Stream","Buffer","createReadableStreamFromBuffer","fs","createReadStream","Promise","resolve","reject","entryPromises","on","pipe","unzip","Parse","all","then","entry","contents","push","setEncoding","data","toString","path","buffer","length","Error","Readable","from"],"sources":["../../source/read/unpackXlsxFileNode.js"],"sourcesContent":["import fs from 'fs'\r\nimport Stream, { Readable } from 'stream'\r\n\r\n// `unzipper` has a bug when it doesn't include \"@aws-sdk/client-s3\" package in the `dependencies`\r\n// which causes some \"bundlers\" throw an error.\r\n// https://github.com/ZJONSSON/node-unzipper/issues/330\r\n//\r\n// One workaround is to install \"@aws-sdk/client-s3\" package manually, which would still lead to increased bundle size.\r\n// If the code is bundled for server-side-use only, that is will not be used in a web browser,\r\n// then the increased bundle size would not be an issue.\r\n//\r\n// Another workaround could be to \"alias\" \"@aws-sdk/client-s3\" package in a \"bundler\" configuration file\r\n// with a path to a `*.js` file containing just \"export default null\". But that kind of a workaround would also\r\n// result in errors when using other packages that `import` anything from \"@aws-sdk/client-s3\" package,\r\n// so it's not really a workaround but more of a ticking bomb.\r\n//\r\nimport unzip from 'unzipper'\r\n\r\n/**\r\n * Reads XLSX file in Node.js.\r\n * @param {(string|Stream)} input - A Node.js readable stream or a path to a file.\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n // XLSX file is a zip archive.\r\n // The `entries` object stores the files\r\n // and their contents from this XLSX zip archive.\r\n const entries = {}\r\n\r\n const stream = input instanceof Stream\r\n ? input\r\n : (\r\n input instanceof Buffer\r\n ? createReadableStreamFromBuffer(input)\r\n : fs.createReadStream(input)\r\n )\r\n\r\n return new Promise((resolve, reject) => {\r\n const entryPromises = []\r\n\r\n stream\r\n // This first \"error\" listener is for the original stream errors.\r\n .on('error', reject)\r\n .pipe(unzip.Parse())\r\n // This second \"error\" listener is for the unzip stream errors.\r\n .on('error', reject)\r\n .on('finish', () => {\r\n })\r\n .on('close', () => {\r\n Promise.all(entryPromises).then(() => resolve(entries))\r\n })\r\n .on('entry', (entry) => {\r\n let contents = ''\r\n // To ignore an entry: `entry.autodrain()`.\r\n entryPromises.push(new Promise((resolve) => {\r\n // It's not clear what encoding are the files inside XLSX in.\r\n // https://stackoverflow.com/questions/45194771/are-xlsx-files-utf-8-encoded-by-definition\r\n // For example, for XML files, encoding is specified at the top node:\r\n // `<?xml version=\"1.0\" encoding=\"UTF-8\"/>`.\r\n //\r\n // `unzipper` supports setting encoding when reading an `entry`.\r\n // https://github.com/ZJONSSON/node-unzipper/issues/35\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/54\r\n //\r\n // If the `entry.setEncoding('utf8')` line would be commented out,\r\n // there's a `nonAsciiCharacterEncoding` test that wouldn't pass.\r\n //\r\n entry.setEncoding('utf8')\r\n //\r\n entry\r\n .on('data', data => contents += data.toString())\r\n .on('end', () => resolve(entries[entry.path] = contents))\r\n }))\r\n })\r\n })\r\n}\r\n\r\n// Creates a readable stream from a `Buffer`.\r\nfunction createReadableStreamFromBuffer(buffer) {\r\n // Node.js seems to have a bug in `Readable.from()` function:\r\n // it doesn't correctly handle empty buffers, i.e. it doesn't return a correct stream.\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/106\r\n if (buffer.length === 0) {\r\n throw new Error('No data')\r\n }\r\n return Readable.from(buffer)\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
|
-
|
|
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 (
|
|
28
|
-
|
|
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","
|
|
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","
|
|
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"}
|
package/modules/read/getData.js
CHANGED
|
@@ -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
|
|
63
|
-
if (
|
|
64
|
+
var rowIndexSourceMap = options.rowIndexSourceMap;
|
|
65
|
+
if (rowIndexSourceMap) {
|
|
64
66
|
var _i = 0;
|
|
65
67
|
while (_i < data.length) {
|
|
66
|
-
|
|
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
|
-
|
|
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), {
|
|
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","
|
|
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"}
|
package/modules/read/readXlsx.js
CHANGED
|
@@ -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 `
|
|
76
|
+
// Create a `rowIndexSourceMap` for the original dataset, if not passed,
|
|
77
77
|
// because "empty" rows will be dropped from the input data.
|
|
78
|
-
|
|
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","
|
|
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":";;;;;;;;;AAAA,OAAOA,eAAe,MAAM,sBAAsB;AAClD,OAAOC,cAAc,MAAM,qBAAqB;AAChD,OAAOC,WAAW,MAAM,kBAAkB;AAC1C,OAAOC,kBAAkB,MAAM,yBAAyB;AACxD,OAAOC,UAAU,MAAM,iBAAiB;AACxC,OAAOC,OAAO,MAAM,cAAc;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,QAAQA,CAACC,QAAQ,EAAEC,GAAG,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAC1D,IAAI,CAACD,OAAO,CAACI,KAAK,EAAE;IAClBJ,OAAO,GAAAK,aAAA;MACLD,KAAK,EAAE;IAAC,GACLJ,OAAO,CACX;EACH;EAEA,IAAMM,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,QAAQ,EAAK;IACtC,IAAI,CAACT,QAAQ,CAACS,QAAQ,CAAC,EAAE;MACvB,MAAM,IAAIC,KAAK,MAAAC,MAAA,CAAKF,QAAQ,yDAAqD,CAAC;IACpF;IACA,OAAOT,QAAQ,CAACS,QAAQ,CAAC;EAC3B,CAAC;;EAED;EACA;EACA,IAAMG,SAAS,GAAGlB,cAAc,CAACc,iBAAiB,CAAC,4BAA4B,CAAC,EAAEP,GAAG,CAAC;;EAEtF;EACA,IAAMY,MAAM,GAAGD,SAAS,CAACE,aAAa,GAClClB,kBAAkB,CAACY,iBAAiB,CAACI,SAAS,CAACE,aAAa,CAAC,EAAEb,GAAG,CAAC,GACnE,EAAE;;EAEN;EACA,IAAMc,MAAM,GAAGH,SAAS,CAACG,MAAM,GAC3BpB,WAAW,CAACa,iBAAiB,CAACI,SAAS,CAACG,MAAM,CAAC,EAAEd,GAAG,CAAC,GACrD,CAAC,CAAC;EAEN,IAAMe,UAAU,GAAGvB,eAAe,CAACe,iBAAiB,CAAC,iBAAiB,CAAC,EAAEP,GAAG,CAAC;;EAE7E;EACA;EACA,IAAIC,OAAO,CAACe,SAAS,EAAE;IACrB,OAAOD,UAAU,CAACE,MAAM,CAACC,GAAG,CAAC,UAAAC,IAAA;MAAA,IAAGC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MAAA,OAAQ;QAC1CA,IAAI,EAAJA;MACF,CAAC;IAAA,CAAC,CAAC;EACL;;EAEA;EACA,IAAMC,OAAO,GAAGC,UAAU,CAACrB,OAAO,CAACI,KAAK,EAAEU,UAAU,CAACE,MAAM,CAAC;;EAE5D;EACA;EACA,IAAI,CAACI,OAAO,IAAI,CAACV,SAAS,CAACM,MAAM,CAACI,OAAO,CAAC,EAAE;IAC1C,MAAME,wBAAwB,CAACtB,OAAO,CAACI,KAAK,EAAEU,UAAU,CAACE,MAAM,CAAC;EAClE;;EAEA;EACA,IAAMZ,KAAK,GAAGT,UAAU,CACtBW,iBAAiB,CAACI,SAAS,CAACM,MAAM,CAACI,OAAO,CAAC,CAAC,EAC5CrB,GAAG,EACHY,MAAM,EACNE,MAAM,EACNC,UAAU,EACVd,OACF,CAAC;EAEDA,OAAO,GAAAK,aAAA;IACL;IACA;IACAkB,iBAAiB,EAAE;EAAE,GAClBvB,OAAO,CACX;;EAED;EACA,IAAMwB,IAAI,GAAG5B,OAAO,CAACQ,KAAK,EAAEJ,OAAO,CAAC;;EAEpC;EACA,IAAIA,OAAO,CAACc,UAAU,EAAE;IACtB,OAAO;MACLU,IAAI,EAAJA,IAAI;MACJV,UAAU,EAAVA;IACF,CAAC;EACH;;EAEA;EACA,OAAOU,IAAI;AACb;AAEA,SAASH,UAAUA,CAACjB,KAAK,EAAEY,MAAM,EAAE;EACjC,IAAI,OAAOZ,KAAK,KAAK,QAAQ,EAAE;IAC7B,IAAMqB,MAAM,GAAGT,MAAM,CAACZ,KAAK,GAAG,CAAC,CAAC;IAChC,OAAOqB,MAAM,IAAIA,MAAM,CAACC,UAAU;EACpC;EACA,SAAAC,SAAA,GAAAC,+BAAA,CAAqBZ,MAAM,GAAAa,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;IAAA,IAAlBL,OAAM,GAAAI,KAAA,CAAAE,KAAA;IACf,IAAIN,OAAM,CAACN,IAAI,KAAKf,KAAK,EAAE;MACzB,OAAOqB,OAAM,CAACC,UAAU;IAC1B;EACF;AACF;AAEA,SAASJ,wBAAwBA,CAAClB,KAAK,EAAEY,MAAM,EAAE;EAC/C,IAAMgB,UAAU,GAAGhB,MAAM,IAAIA,MAAM,CAACC,GAAG,CAAC,UAACb,KAAK,EAAE6B,CAAC;IAAA,YAAAxB,MAAA,CAASL,KAAK,CAACe,IAAI,WAAAV,MAAA,CAAOwB,CAAC,GAAG,CAAC;EAAA,CAAG,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAC/F,OAAO,IAAI1B,KAAK,UAAAC,MAAA,CAAU,OAAOL,KAAK,KAAK,QAAQ,GAAG,GAAG,GAAGA,KAAK,GAAG,GAAG,GAAGA,KAAK,GAAG,GAAG,oCAAAK,MAAA,CAAiCO,MAAM,GAAG,qBAAqB,GAAGgB,UAAU,GAAG,GAAG,GAAG,EAAE,CAAE,CAAC;AACjL"}
|
|
@@ -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"
|
|
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
|
|
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 (
|
|
19
|
-
|
|
15
|
+
if (options.map) {
|
|
16
|
+
throw new Error('`map` option was removed. Pass a `schema` option instead.');
|
|
20
17
|
}
|
|
21
|
-
// `readXlsx()`
|
|
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
|
|
25
|
+
return mapToObjects(result.data, schema, _objectSpread(_objectSpread({}, options), {}, {
|
|
27
26
|
properties: result.properties
|
|
28
27
|
}));
|
|
29
28
|
}
|