read-excel-file 4.0.8 → 4.1.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 +11 -0
- package/README.md +53 -8
- package/bundle/read-excel-file.min.js +2 -2
- package/bundle/read-excel-file.min.js.map +1 -1
- package/commonjs/convertMapToSchema.js +41 -0
- package/commonjs/convertMapToSchema.js.map +1 -0
- package/commonjs/convertMapToSchema.test.js.map +1 -0
- package/commonjs/convertToJson.js +9 -4
- package/commonjs/convertToJson.js.map +1 -1
- package/commonjs/convertToJson.test.js.map +1 -1
- package/commonjs/readXlsxFileContents.js +17 -4
- package/commonjs/readXlsxFileContents.js.map +1 -1
- package/commonjs/readXlsxFileNode.test.js.map +1 -1
- package/index.d.ts.test +2 -0
- package/modules/convertMapToSchema.js +34 -0
- package/modules/convertMapToSchema.js.map +1 -0
- package/modules/convertMapToSchema.test.js.map +1 -0
- package/modules/convertToJson.js +9 -4
- package/modules/convertToJson.js.map +1 -1
- package/modules/convertToJson.test.js.map +1 -1
- package/modules/readXlsxFileContents.js +14 -4
- package/modules/readXlsxFileContents.js.map +1 -1
- package/modules/readXlsxFileNode.test.js.map +1 -1
- package/node/index.d.ts.test +2 -0
- package/package.json +1 -1
- package/types.d.ts +17 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../source/convertToJson.test.js"],"names":["convertToJson","parseArray","getBlock","Integer","URL","Email","date","convertToUTCTimezone","Date","describe","it","should","deep","equal","parse","getTimezoneOffset","DATE","prop","type","NUMBER","Number","BOOLEAN","Boolean","STRING","String","PHONE","value","rows","errors","toISOString","number","phone","boolean","string","required","error","row","column","NAMES","names","INTEGER","length","EMAIL","NAME","validate","Error","TRUE","FALSE","INVALID","true","false","rowMap","STATUS","oneOf","getTime"],"mappings":"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","file":"convertToJson.test.js","sourcesContent":["import convertToJson, { parseArray, getBlock } from './convertToJson'\r\nimport Integer from './types/Integer'\r\nimport URL from './types/URL'\r\nimport Email from './types/Email'\r\n\r\nconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24, 12))\r\n\r\ndescribe('convertToJson', () => {\r\n\tit('should parse arrays', () => {\r\n\t\tgetBlock('abc\"de,f\"g,h', ',', 0).should.deep.equal(['abcde,fg', 10])\r\n\t\tparseArray(' abc\"de,f\"g , h ').should.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n\r\n\tit('should convert to json', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING',\r\n\t\t\t\t'PHONE'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000 + 12 * 60 * 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]\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\t// template: 'MM/DD/YYYY',\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})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\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\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should require fields', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\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\terrors.should.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 1,\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})\r\n\r\n\tit('should parse arrays', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNAMES: {\r\n\t\t\t\tprop: 'names',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse integers', () =>\r\n\t{\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'INTEGER'\r\n\t\t\t], [\r\n\t\t\t\t'1'\r\n\t\t\t], [\r\n\t\t\t\t'1.2'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tINTEGER: {\r\n\t\t\t\tprop: 'value',\r\n\t\t\t\ttype: Integer\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(2)\r\n\t\terrors[0].column.should.equal('INTEGER')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 1\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse URLs', () =>\r\n\t{\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'URL'\r\n\t\t\t], [\r\n\t\t\t\t'https://kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'kremlin.ru'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tURL: {\r\n\t\t\t\tprop: 'value',\r\n\t\t\t\ttype: URL\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(2)\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}])\r\n\t})\r\n\r\n\tit('should parse Emails', () =>\r\n\t{\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'EMAIL'\r\n\t\t\t], [\r\n\t\t\t\t'vladimir.putin@kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tEMAIL: {\r\n\t\t\t\tprop: 'value',\r\n\t\t\t\ttype: Email\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(2)\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}])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NAME'\r\n\t\t\t], [\r\n\t\t\t\t'George Bush'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNAME: {\r\n\t\t\t\tprop: 'name',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidate: (value) => {\r\n\t\t\t\t\tif (value === 'George Bush') {\r\n\t\t\t\t\t\tthrow new Error('custom-error')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\trow: 1,\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([])\r\n\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 1,\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([])\r\n\t})\r\n\r\n\tit('should validate booleans', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'TRUE',\r\n\t\t\t\t'FALSE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\t'TRUE'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tTRUE: {\r\n\t\t\t\tprop: 'true',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tFALSE: {\r\n\t\t\t\tprop: 'false',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tINVALID: {\r\n\t\t\t\tprop: 'invalid',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 1,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Boolean,\r\n\t\t\tvalue: 'TRUE'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\ttrue: true,\r\n\t\t\tfalse: false\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\t43183, // 03/24/2018',\r\n\t\t\t\t'-'\r\n\t\t\t], [\r\n\t\t\t\tdate, // 03/24/2018',,\r\n\t\t\t\t'-'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tDATE: {\r\n\t\t\t\tprop: 'date',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\t// template: 'MM/DD/YYYY',\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\t// template: 'MM/DD/YYYY',\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\trow: 1,\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\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\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate\r\n\t\t}, {\r\n\t\t\tdate\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should throw parse() errors', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'PHONE'\r\n\t\t\t], [\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})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 1,\r\n\t\t\tcolumn: 'PHONE',\r\n\t\t\tvalue: '123'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\trowMap: [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\trow: 6,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (valid)', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'STARTED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tSTATUS: {\r\n\t\t\t\tprop: 'status',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(0)\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'SCHEDULED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tSTATUS: {\r\n\t\t\t\tprop: 'status',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 1,\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\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"]}
|
|
1
|
+
{"version":3,"sources":["../source/convertToJson.test.js"],"names":["convertToJson","parseArray","getBlock","Integer","URL","Email","date","convertToUTCTimezone","Date","describe","it","should","deep","equal","parse","getTimezoneOffset","DATE","prop","type","NUMBER","Number","BOOLEAN","Boolean","STRING","String","PHONE","value","PHONE_TYPE","rows","errors","toISOString","number","phone","phoneType","boolean","string","required","error","row","column","NAMES","names","INTEGER","length","EMAIL","NAME","validate","Error","TRUE","FALSE","INVALID","true","false","rowMap","STATUS","oneOf","getTime"],"mappings":"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","file":"convertToJson.test.js","sourcesContent":["import convertToJson, { parseArray, getBlock } from './convertToJson'\r\nimport Integer from './types/Integer'\r\nimport URL from './types/URL'\r\nimport Email from './types/Email'\r\n\r\nconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24, 12))\r\n\r\ndescribe('convertToJson', () => {\r\n\tit('should parse arrays', () => {\r\n\t\tgetBlock('abc\"de,f\"g,h', ',', 0).should.deep.equal(['abcde,fg', 10])\r\n\t\tparseArray(' abc\"de,f\"g , h ').should.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n\r\n\tit('should convert to json', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING',\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000 + 12 * 60 * 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\t// template: 'MM/DD/YYYY',\r\n\t\t\t},\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number\r\n\t\t\t},\r\n\t\t\tBOOLEAN: {\r\n\t\t\t\tprop: 'boolean',\r\n\t\t\t\ttype: Boolean\r\n\t\t\t},\r\n\t\t\tSTRING: {\r\n\t\t\t\tprop: 'string',\r\n\t\t\t\ttype: String\r\n\t\t\t},\r\n\t\t\tPHONE: {\r\n\t\t\t\tprop: 'phone',\r\n\t\t\t\tparse(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tPHONE_TYPE: {\r\n\t\t\t\tprop: 'phoneType',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tphone: '+11234567890',\r\n\t\t\tphoneType: '+11234567890',\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should support schema entries with no `type`s', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000 + 12 * 60 * 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', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\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\terrors.should.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 1,\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})\r\n\r\n\tit('should parse arrays', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNAMES: {\r\n\t\t\t\tprop: 'names',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse integers', () =>\r\n\t{\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'INTEGER'\r\n\t\t\t], [\r\n\t\t\t\t'1'\r\n\t\t\t], [\r\n\t\t\t\t'1.2'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tINTEGER: {\r\n\t\t\t\tprop: 'value',\r\n\t\t\t\ttype: Integer\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(2)\r\n\t\terrors[0].column.should.equal('INTEGER')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 1\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse URLs', () =>\r\n\t{\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'URL'\r\n\t\t\t], [\r\n\t\t\t\t'https://kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'kremlin.ru'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tURL: {\r\n\t\t\t\tprop: 'value',\r\n\t\t\t\ttype: URL\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(2)\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}])\r\n\t})\r\n\r\n\tit('should parse Emails', () =>\r\n\t{\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'EMAIL'\r\n\t\t\t], [\r\n\t\t\t\t'vladimir.putin@kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tEMAIL: {\r\n\t\t\t\tprop: 'value',\r\n\t\t\t\ttype: Email\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(2)\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}])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NAME'\r\n\t\t\t], [\r\n\t\t\t\t'George Bush'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNAME: {\r\n\t\t\t\tprop: 'name',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidate: (value) => {\r\n\t\t\t\t\tif (value === 'George Bush') {\r\n\t\t\t\t\t\tthrow new Error('custom-error')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\trow: 1,\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([])\r\n\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 1,\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([])\r\n\t})\r\n\r\n\tit('should validate booleans', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'TRUE',\r\n\t\t\t\t'FALSE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\t'TRUE'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tTRUE: {\r\n\t\t\t\tprop: 'true',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tFALSE: {\r\n\t\t\t\tprop: 'false',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tINVALID: {\r\n\t\t\t\tprop: 'invalid',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 1,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Boolean,\r\n\t\t\tvalue: 'TRUE'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\ttrue: true,\r\n\t\t\tfalse: false\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\t43183, // 03/24/2018',\r\n\t\t\t\t'-'\r\n\t\t\t], [\r\n\t\t\t\tdate, // 03/24/2018',,\r\n\t\t\t\t'-'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tDATE: {\r\n\t\t\t\tprop: 'date',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\t// template: 'MM/DD/YYYY',\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\t// template: 'MM/DD/YYYY',\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\trow: 1,\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\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\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate\r\n\t\t}, {\r\n\t\t\tdate\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should throw parse() errors', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\t'123',\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tPHONE: {\r\n\t\t\t\tprop: 'phone',\r\n\t\t\t\tparse: () => {\r\n\t\t\t\t\tthrow new Error('invalid')\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tPHONE_TYPE: {\r\n\t\t\t\tprop: 'phoneType',\r\n\t\t\t\tparse: () => {\r\n\t\t\t\t\tthrow new Error('invalid')\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 1,\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: 1,\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([])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tNUMBER: {\r\n\t\t\t\tprop: 'number',\r\n\t\t\t\ttype: Number\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\trowMap: [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\trow: 6,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (valid)', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'STARTED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tSTATUS: {\r\n\t\t\t\tprop: 'status',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(0)\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst { rows, errors } = convertToJson([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'SCHEDULED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tSTATUS: {\r\n\t\t\t\tprop: 'status',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 1,\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\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"]}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
2
2
|
|
|
3
|
+
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
|
|
4
|
+
|
|
3
5
|
import readXlsx from './readXlsx';
|
|
4
6
|
import convertToJson from './convertToJson';
|
|
7
|
+
import convertMapToSchema from './convertMapToSchema';
|
|
8
|
+
|
|
9
|
+
export default function readXlsxFileContents(entries, xml, _ref) {
|
|
10
|
+
var schema = _ref.schema,
|
|
11
|
+
map = _ref.map,
|
|
12
|
+
options = _objectWithoutProperties(_ref, ['schema', 'map']);
|
|
5
13
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
14
|
+
if (!schema && map) {
|
|
15
|
+
schema = convertMapToSchema(map);
|
|
16
|
+
}
|
|
17
|
+
var result = readXlsx(entries, xml, _extends({}, options, { properties: schema || options.properties }));
|
|
18
|
+
if (schema) {
|
|
19
|
+
return convertToJson(result.data, schema, _extends({}, options, { properties: result.properties }));
|
|
10
20
|
}
|
|
11
21
|
return result;
|
|
12
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../source/readXlsxFileContents.js"],"names":["readXlsx","convertToJson","readXlsxFileContents","entries","xml","options","result","properties","
|
|
1
|
+
{"version":3,"sources":["../source/readXlsxFileContents.js"],"names":["readXlsx","convertToJson","convertMapToSchema","readXlsxFileContents","entries","xml","schema","map","options","result","properties","data"],"mappings":";;;;AAAA,OAAOA,QAAP,MAAqB,YAArB;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA,OAAOC,kBAAP,MAA+B,sBAA/B;;AAEA,eAAe,SAASC,oBAAT,CAA8BC,OAA9B,EAAuCC,GAAvC,QAAwE;AAAA,KAA1BC,MAA0B,QAA1BA,MAA0B;AAAA,KAAlBC,GAAkB,QAAlBA,GAAkB;AAAA,KAAVC,OAAU;;AACtF,KAAI,CAACF,MAAD,IAAWC,GAAf,EAAoB;AACnBD,WAASJ,mBAAmBK,GAAnB,CAAT;AACA;AACD,KAAME,SAAST,SAASI,OAAT,EAAkBC,GAAlB,eAA4BG,OAA5B,IAAqCE,YAAYJ,UAAUE,QAAQE,UAAnE,IAAf;AACA,KAAIJ,MAAJ,EAAY;AACX,SAAOL,cAAcQ,OAAOE,IAArB,EAA2BL,MAA3B,eAAwCE,OAAxC,IAAiDE,YAAYD,OAAOC,UAApE,IAAP;AACA;AACD,QAAOD,MAAP;AACA","file":"readXlsxFileContents.js","sourcesContent":["import readXlsx from './readXlsx'\r\nimport convertToJson from './convertToJson'\r\nimport convertMapToSchema from './convertMapToSchema'\r\n\r\nexport default function readXlsxFileContents(entries, xml, { schema, map, ...options}) {\r\n\tif (!schema && map) {\r\n\t\tschema = convertMapToSchema(map)\r\n\t}\r\n\tconst result = readXlsx(entries, xml, { ...options, properties: schema || options.properties })\r\n\tif (schema) {\r\n\t\treturn convertToJson(result.data, schema, { ...options, properties: result.properties })\r\n\t}\r\n\treturn result\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../source/readXlsxFileNode.test.js"],"names":["path","readXlsxFileNode","describe","it","schema","prop","type","Date","template","Number","required","Boolean","String","parse","value","rowMap","resolve","__dirname","then","rows","
|
|
1
|
+
{"version":3,"sources":["../source/readXlsxFileNode.test.js"],"names":["path","readXlsxFileNode","describe","it","schema","prop","type","Date","template","Number","required","Boolean","String","parse","value","rowMap","resolve","__dirname","then","rows","date","getTime","should","deep","equal","convertToUTCTimezone","numberOfStudents","course","isFree","cost","title","contact","map","errors","getTimezoneOffset"],"mappings":"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","file":"readXlsxFileNode.test.js","sourcesContent":["import path from 'path'\r\n\r\nimport readXlsxFileNode from './readXlsxFileNode'\r\n\r\ndescribe('readXlsxFileNode', () => {\r\n\tit('should read *.xlsx file on Node.js and parse it to JSON', () => {\r\n\t\tconst schema = {\r\n\t\t\t'START DATE': {\r\n\t\t\t\tprop: 'date',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\ttemplate: 'MM/DD/YYYY',\r\n\t\t\t},\r\n\t\t\t'NUMBER OF STUDENTS': {\r\n\t\t\t\tprop: 'numberOfStudents',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\t'COURSE': {\r\n\t\t\t\tprop: 'course',\r\n\t\t\t\ttype: {\r\n\t\t\t\t\t'IS FREE': {\r\n\t\t\t\t\t\tprop: 'isFree',\r\n\t\t\t\t\t\ttype: Boolean\r\n\t\t\t\t\t\t// Excel stored booleans as numbers:\r\n\t\t\t\t\t\t// `1` is `true` and `0` is `false`.\r\n\t\t\t\t\t\t// Such numbers are parsed to booleans.\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'COST': {\r\n\t\t\t\t\t\tprop: 'cost',\r\n\t\t\t\t\t\ttype: Number\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'COURSE TITLE': {\r\n\t\t\t\t\t\tprop: 'title',\r\n\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t'CONTACT': {\r\n\t\t\t\tprop: 'contact',\r\n\t\t\t\trequired: true,\r\n\t\t\t\tparse(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst rowMap = []\r\n\r\n\t\treturn readXlsxFileNode(path.resolve(__dirname, '../test/spreadsheets/course.xlsx'), { schema, rowMap }).then(({ rows }) => {\r\n\t\t\trows[0].date = rows[0].date.getTime()\r\n\t\t\trows.should.deep.equal([{\r\n\t\t\t\tdate: convertToUTCTimezone(new Date(2018, 2, 24, 12)).getTime(),\r\n\t\t\t\tnumberOfStudents: 123,\r\n\t\t\t\tcourse: {\r\n\t\t\t\t\tisFree: false,\r\n\t\t\t\t\tcost: 210.45,\r\n\t\t\t\t\ttitle: 'Chemistry'\r\n\t\t\t\t},\r\n\t\t\t\tcontact: '+11234567890'\r\n\t\t\t}])\r\n\t\t\trowMap.should.deep.equal([0, 1])\r\n\t\t})\r\n\t})\r\n\r\n\tit('should read *.xlsx file on Node.js and map it to JSON', () => {\r\n\t\tconst map = {\r\n\t\t\t'START DATE': 'date',\r\n\t\t\t'NUMBER OF STUDENTS': 'numberOfStudents',\r\n\t\t\t'COURSE': {\r\n\t\t\t\t'course': {\r\n\t\t\t\t\t'IS FREE': 'isFree',\r\n\t\t\t\t\t'COST': 'cost',\r\n\t\t\t\t\t'COURSE TITLE': 'title'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t'CONTACT': 'contact'\r\n\t\t}\r\n\r\n\t\tconst rowMap = []\r\n\r\n\t\treturn readXlsxFileNode(path.resolve(__dirname, '../test/spreadsheets/course.xlsx'), { map, rowMap }).then(({ rows, errors }) => {\r\n\t\t\terrors.should.deep.equal([])\r\n\t\t\trows[0].date = rows[0].date.getTime()\r\n\t\t\trows.should.deep.equal([{\r\n\t\t\t\tdate: convertToUTCTimezone(new Date(2018, 2, 24, 12)).getTime(),\r\n\t\t\t\tnumberOfStudents: 123,\r\n\t\t\t\tcourse: {\r\n\t\t\t\t\tisFree: false,\r\n\t\t\t\t\tcost: 210.45,\r\n\t\t\t\t\ttitle: 'Chemistry'\r\n\t\t\t\t},\r\n\t\t\t\tcontact: '(123) 456-7890'\r\n\t\t\t}])\r\n\t\t\trowMap.should.deep.equal([0, 1])\r\n\t\t})\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"]}
|
package/node/index.d.ts.test
CHANGED
|
@@ -6,6 +6,7 @@ import { Stream } from 'stream';
|
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
ParseWithSchemaOptions,
|
|
9
|
+
ParseWithMapOptions,
|
|
9
10
|
ParseWithoutSchemaOptions,
|
|
10
11
|
ParsedObjectsResult,
|
|
11
12
|
Row
|
|
@@ -16,6 +17,7 @@ export function parseExcelDate(excelSerialDate: number) : typeof Date;
|
|
|
16
17
|
export type Input = Stream | PathLike;
|
|
17
18
|
|
|
18
19
|
function readXlsxFile(input: Input, options: ParseWithSchemaOptions) : Promise<ParsedObjectsResult>;
|
|
20
|
+
function readXlsxFile(input: Input, options: ParseWithMapOptions) : Promise<ParsedObjectsResult>;
|
|
19
21
|
function readXlsxFile(input: Input, options?: ParseWithoutSchemaOptions) : Promise<Row[]>;
|
|
20
22
|
|
|
21
23
|
export default readXlsxFile;
|
package/package.json
CHANGED
package/types.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
// See the discussion:
|
|
2
2
|
// https://github.com/catamphetamine/read-excel-file/issues/71
|
|
3
3
|
|
|
4
|
+
export function Integer(): void;
|
|
5
|
+
export function URL(): void;
|
|
6
|
+
export function Email(): void;
|
|
7
|
+
|
|
4
8
|
type BasicType =
|
|
5
9
|
| string
|
|
6
10
|
| number
|
|
@@ -9,10 +13,15 @@ type BasicType =
|
|
|
9
13
|
| 'Integer'
|
|
10
14
|
| 'URL'
|
|
11
15
|
| 'Email'
|
|
16
|
+
| Integer
|
|
17
|
+
| URL
|
|
18
|
+
| Email
|
|
19
|
+
|
|
20
|
+
export type Type = <T>(value: Cell) => T?;
|
|
12
21
|
|
|
13
22
|
interface SchemaEntryBasic {
|
|
14
23
|
prop: string;
|
|
15
|
-
type
|
|
24
|
+
type?: BasicType | Type;
|
|
16
25
|
oneOf?<T>: T[];
|
|
17
26
|
required?: boolean;
|
|
18
27
|
validate?<T>(value: T): void;
|
|
@@ -20,7 +29,7 @@ interface SchemaEntryBasic {
|
|
|
20
29
|
|
|
21
30
|
interface SchemaEntryParsed {
|
|
22
31
|
prop: string;
|
|
23
|
-
parse<T>: (value:
|
|
32
|
+
parse<T>: (value: Cell) => T?;
|
|
24
33
|
oneOf?<T>: T[];
|
|
25
34
|
required?: boolean;
|
|
26
35
|
validate?<T>(value: T): void;
|
|
@@ -60,6 +69,12 @@ export interface ParseWithSchemaOptions {
|
|
|
60
69
|
sheet?: number | string;
|
|
61
70
|
}
|
|
62
71
|
|
|
72
|
+
export interface ParseWithMapOptions {
|
|
73
|
+
map: object;
|
|
74
|
+
transformData?: (rows: Row[]) => Row[];
|
|
75
|
+
sheet?: number | string;
|
|
76
|
+
}
|
|
77
|
+
|
|
63
78
|
export interface ParseWithoutSchemaOptions {
|
|
64
79
|
sheet?: number | string;
|
|
65
80
|
}
|