read-excel-file 9.0.4 → 9.0.6
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 +3 -2
- package/README.md +16 -5
- package/commonjs/parseSheetData/parseSheetData.js +9 -5
- package/commonjs/parseSheetData/parseSheetData.js.map +1 -1
- package/commonjs/parseSheetData/parseSheetData.test.js.map +1 -1
- package/modules/parseSheetData/parseSheetData.js +9 -5
- package/modules/parseSheetData/parseSheetData.js.map +1 -1
- package/modules/parseSheetData/parseSheetData.test.js.map +1 -1
- package/package.json +1 -1
- package/types/parseSheetData/parseSheetDataError.d.ts +14 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseSheetData.test.js","names":["_mocha","require","_chai","_parseSheetData2","_interopRequireWildcard","_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","Date","UTC","describe","it","_parseSheetData","parseSheetData","number","column","type","Number","required","errors","objects","expect","to","be","undefined","not","deep","equal","error","row","value","results","parseSheetDataWithPerRowErrors","parse","getTimezoneOffset","Boolean","string","String","phone","phoneType","length","object","exist","name","schema","courseTitle","notExists","parsedObject","data","names","reason","Integer","URL","Email","validate","Error","invalid","status","oneOf","a","b","c","column1","column2","column4","column5","propertyValueWhenColumnIsMissing","propertyValueWhenCellIsEmpty","getNextSubstring","parseSeparatedSubstrings"],"sources":["../../source/parseSheetData/parseSheetData.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport parseSheetData, { parseSheetDataWithPerRowErrors, parseSeparatedSubstrings, getNextSubstring } from './parseSheetData.js'\r\n\r\n// Additional included types.\r\nimport Integer from './types/additional/Integer.js'\r\nimport URL from './types/additional/URL.js'\r\nimport Email from './types/additional/Email.js'\r\n\r\nconst date = new Date(Date.UTC(2018, 3 - 1, 24))\r\n\r\ndescribe('parseSheetData', () => {\r\n\tit('should include data row number in error objects', () => {\r\n\t\tconst { errors, objects } = parseSheetData([\r\n\t\t\t['NUMBER'],\r\n\t\t\t[null]\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\texpect(objects).to.be.undefined\r\n\t\texpect(errors).to.not.be.undefined\r\n\r\n\t\texpect(errors).to.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\t})\r\n})\r\n\r\ndescribe('parseSheetDataWithPerRowErrors', () => {\r\n\tit('should parse object from sheet data', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tdate: date,\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 results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tdate: date,\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 return an error when a propertry is required and the cell value is empty', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 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\t})\r\n\r\n\tit('should not skip empty rows', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\r\n\t\t\t['NAME'],\r\n\t\t\t// Non-empty row\r\n\t\t\t['Barack Obama'],\r\n\t\t\t// Empty row\r\n\t\t\t[null]\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}\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tname: 'Barack Obama'\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.equal(null)\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\t})\r\n\r\n\tit('should support `required` function', () => {\r\n\t\tconst schema = {\r\n\t\t\tcourseTitle: {\r\n\t\t\t\tcolumn: 'COURSE TITLE',\r\n\t\t\t\ttype: String\r\n\t\t\t},\r\n\t\t\tnotExists: {\r\n\t\t\t\tcolumn: 'NOT EXISTS',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: (parsedObject) => parsedObject.courseTitle === 'Chemistry'\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst data = [\r\n\t\t\t['COURSE TITLE'],\r\n\t\t\t// `required: true`.\r\n\t\t\t['Chemistry'],\r\n\t\t\t// `required: false`.\r\n\t\t\t['Math']\r\n\t\t]\r\n\r\n\t\tconst results = parseSheetDataWithPerRowErrors(data, schema)\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.not.be.undefined\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'NOT EXISTS',\r\n\t\t\tvalue: undefined,\r\n\t\t\t// value: null,\r\n\t\t\ttype: Number\r\n\t\t}])\r\n\r\n\t\texpect(results[1].object).to.not.be.undefined\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\r\n\t\t\tcourseTitle: 'Math',\r\n\t\t\tnotExists: undefined\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse arrays', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\r\n\t\t\t['NAMES'],\r\n\t\t\t// 'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t['Barack Obama, String, Donald Trump'],\r\n\t\t\t// Invalid syntax\r\n\t\t\t[', String'],\r\n\t\t\t// Empty row\r\n\t\t\t[null]\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\texpect(results.length).to.equal(3)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\t// names: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t\tnames: ['Barack Obama', 'String', 'Donald Trump']\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'syntax',\r\n\t\t\tcolumn: 'NAMES',\r\n\t\t\tvalue: ', String',\r\n\t\t\ttype: [String]\r\n\t\t}])\r\n\r\n\t\texpect(results[2].object).to.deep.equal(null)\r\n\t\texpect(results[2].errors).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse integers', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tvalue: 1\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\t\texpect(results[1].errors.length).to.equal(1)\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_integer',\r\n\t\t\t// row: 2,\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\t})\r\n\r\n\tit('should parse URLs', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tvalue: 'https://kremlin.ru'\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\t\texpect(results[1].errors.length).to.equal(1)\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_url',\r\n\t\t\t// row: 2,\r\n\t\t\tcolumn: 'URL',\r\n\t\t\ttype: URL,\r\n\t\t\tvalue: 'kremlin.ru'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse Emails', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tvalue: 'vladimir.putin@kremlin.ru'\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\t\texpect(results[1].errors.length).to.equal(1)\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_email',\r\n\t\t\t// row: 2,\r\n\t\t\tcolumn: 'EMAIL',\r\n\t\t\ttype: Email,\r\n\t\t\tvalue: '123'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\t// row: 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\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\t// row: 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\t})\r\n\r\n\tit('should validate booleans', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_boolean',\r\n\t\t\t// row: 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\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\t// row: 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})\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 results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\t// row: 1,\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\t// row: 1,\r\n\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\r\n\t\t// , { rowIndexSourceMap: [2, 5] })\r\n\r\n\t\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\t// row: 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\t})\r\n\r\n\tit('should validate \"oneOf\" (valid)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tstatus: 'STARTED'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'unknown',\r\n\t\t\t// row: 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\tit('should support `required: undefined` on nested objects (nested object properties are not required)', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', null, 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\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.not.exist\r\n\r\n\t\texpect(results[0].object).to.deep.equal(\r\n\t\t\t{ a: 'a', b: 'b', c: null }\r\n\t\t)\r\n\t})\r\n\r\n\tit('should support `required: undefined` on nested objects (some of nested object properties are required)', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', null, 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\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\trequired: true\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.not.exist\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\tcolumn: 'CB',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should support `required: false` on nested objects (nested object is completely absent)', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', null, 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\trequired: false,\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\trequired: true\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal(\r\n\t\t\t{ a: 'a', b: 'b', c: null }\r\n\t\t)\r\n\t})\r\n\r\n\tit('should support `required: false` on nested objects (nested object is not absent)', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\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],\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\trequired: false,\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\trequired: true\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.not.exist\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\tcolumn: 'CB',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should reduce empty nested objects to `null` by default', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\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\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal(\r\n\t\t\t{ a: 'a', b: 'b', c: { a: 'ca', b: null } }\r\n\t\t)\r\n\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal(\r\n\t\t\t{ a: 'a', b: null, c: null }\r\n\t\t)\r\n\t})\r\n\r\n\tit('should parse missing columns (`undefined` by default) and empty cells (`null` by default) (`required: false`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tcolumn1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: undefined\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\r\n\t\t\tcolumn1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: undefined\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse missing columns (`undefined` by default) and empty cells (`null` by default) (`propertyValueWhenColumnIsMissing: null`) (`required: false`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\tpropertyValueWhenColumnIsMissing: null\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.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\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\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 parse missing columns (`undefined` by default) and empty cells (`null` by default) (`propertyValueWhenCellIsEmpty: undefined`) (`required: false`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\tpropertyValueWhenCellIsEmpty: undefined\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tcolumn1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: undefined\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\r\n\t\t\tcolumn1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: undefined,\r\n\t\t\tcolumn5: undefined\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse missing columns (`undefined` by default) and empty cells (`null` by default) (`propertyValueWhenColumnIsMissing: null` and `propertyValueWhenCellIsEmpty: null`) (`required: false`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\tpropertyValueWhenColumnIsMissing: null,\r\n\t\t\tpropertyValueWhenCellIsEmpty: null\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.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\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\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 parse missing columns (`undefined` by default) and empty cells (`null` by default) (`propertyValueWhenColumnIsMissing: null` and `propertyValueWhenCellIsEmpty: null`) (`required: true`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\tpropertyValueWhenColumnIsMissing: null,\r\n\t\t\tpropertyValueWhenCellIsEmpty: null\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 1,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\t})\r\n})\r\n\r\ndescribe('getNextSubstring', () => {\r\n\tit('should parse substrings from a string with a given separator character', () => {\r\n\t\texpect(getNextSubstring('abcde,fg,h', ',', 0)).to.deep.equal(['abcde', 5])\r\n\r\n\t\t// Custom separator and trimming.\r\n\t\texpect(parseSeparatedSubstrings(' abcde,fg , h ', ',')).to.deep.equal(['abcde', 'fg', 'h'])\r\n\r\n\t\t// Should ignore commas inside quotes.\r\n\t\t// expect(getNextSubstring('abc\"de,f\"g,h', ',', 0)).to.deep.equal(['abcde,fg', 10])\r\n\r\n\t\t// Custom separator and trimming.\r\n\t\t// Should ignore commas inside quotes.\r\n\t\t// expect(parseSeparatedSubstrings(' abc\"de,f\"g , h ', ',')).to.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n})"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parseSheetData.test.js","names":["_mocha","require","_chai","_parseSheetData3","_interopRequireWildcard","_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","Date","UTC","describe","it","_parseSheetData","parseSheetData","number","column","type","Number","required","errors","objects","expect","to","be","undefined","not","deep","equal","error","row","columnIndex","value","_parseSheetData2","columnNotExists","results","parseSheetDataWithPerRowErrors","parse","getTimezoneOffset","Boolean","string","String","phone","phoneType","length","object","exist","name","schema","courseTitle","notExists","parsedObject","data","names","reason","Integer","URL","Email","validate","Error","invalid","status","oneOf","a","b","c","column1","column2","column4","column5","propertyValueWhenColumnIsMissing","propertyValueWhenCellIsEmpty","getNextSubstring","parseSeparatedSubstrings"],"sources":["../../source/parseSheetData/parseSheetData.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport parseSheetData, { parseSheetDataWithPerRowErrors, parseSeparatedSubstrings, getNextSubstring } from './parseSheetData.js'\r\n\r\n// Additional included types.\r\nimport Integer from './types/additional/Integer.js'\r\nimport URL from './types/additional/URL.js'\r\nimport Email from './types/additional/Email.js'\r\n\r\nconst date = new Date(Date.UTC(2018, 3 - 1, 24))\r\n\r\ndescribe('parseSheetData', () => {\r\n\tit('should include data row number in error objects', () => {\r\n\t\tconst { errors, objects } = parseSheetData([\r\n\t\t\t['NUMBER'],\r\n\t\t\t[null]\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\texpect(objects).to.be.undefined\r\n\t\texpect(errors).to.not.be.undefined\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 1,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\tcolumnIndex: 0,\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should include column index in error objects', () => {\r\n\t\tconst { errors, objects } = parseSheetData([\r\n\t\t\t['IRRELEVANT COLUMN 1', 'IRRELEVANT COLUMN 2', 'NUMBER'],\r\n\t\t\t[null, null, null]\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\tcolumnNotExists: {\r\n\t\t\t\tcolumn: 'COLUMN NOT EXISTS',\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\texpect(objects).to.be.undefined\r\n\t\texpect(errors).to.not.be.undefined\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 1,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\tcolumnIndex: 2,\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\terror: 'required',\r\n\t\t\trow: 1,\r\n\t\t\tcolumn: 'COLUMN NOT EXISTS',\r\n\t\t\tcolumnIndex: -1,\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: undefined\r\n\t\t}])\r\n\t})\r\n})\r\n\r\ndescribe('parseSheetDataWithPerRowErrors', () => {\r\n\tit('should parse object from sheet data', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tdate: date,\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 results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tdate: date,\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 return an error when a propertry is required and the cell value is empty', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\tcolumnIndex: 0,\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should not skip empty rows', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\r\n\t\t\t['NAME'],\r\n\t\t\t// Non-empty row\r\n\t\t\t['Barack Obama'],\r\n\t\t\t// Empty row\r\n\t\t\t[null]\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}\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tname: 'Barack Obama'\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.equal(null)\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\t})\r\n\r\n\tit('should support `required` function', () => {\r\n\t\tconst schema = {\r\n\t\t\tcourseTitle: {\r\n\t\t\t\tcolumn: 'COURSE TITLE',\r\n\t\t\t\ttype: String\r\n\t\t\t},\r\n\t\t\tnotExists: {\r\n\t\t\t\tcolumn: 'NOT EXISTS',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: (parsedObject) => parsedObject.courseTitle === 'Chemistry'\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst data = [\r\n\t\t\t['COURSE TITLE'],\r\n\t\t\t// `required: true`.\r\n\t\t\t['Chemistry'],\r\n\t\t\t// `required: false`.\r\n\t\t\t['Math']\r\n\t\t]\r\n\r\n\t\tconst results = parseSheetDataWithPerRowErrors(data, schema)\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.not.be.undefined\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'NOT EXISTS',\r\n\t\t\tcolumnIndex: -1,\r\n\t\t\tvalue: undefined,\r\n\t\t\t// value: null,\r\n\t\t\ttype: Number\r\n\t\t}])\r\n\r\n\t\texpect(results[1].object).to.not.be.undefined\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\r\n\t\t\tcourseTitle: 'Math',\r\n\t\t\tnotExists: undefined\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse arrays', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\r\n\t\t\t['NAMES'],\r\n\t\t\t// 'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t['Barack Obama, String, Donald Trump'],\r\n\t\t\t// Invalid syntax\r\n\t\t\t[', String'],\r\n\t\t\t// Empty row\r\n\t\t\t[null]\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\texpect(results.length).to.equal(3)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\t// names: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t\tnames: ['Barack Obama', 'String', 'Donald Trump']\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'syntax',\r\n\t\t\tcolumn: 'NAMES',\r\n\t\t\tcolumnIndex: 0,\r\n\t\t\tvalue: ', String',\r\n\t\t\ttype: [String]\r\n\t\t}])\r\n\r\n\t\texpect(results[2].object).to.deep.equal(null)\r\n\t\texpect(results[2].errors).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse integers', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tvalue: 1\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\t\texpect(results[1].errors.length).to.equal(1)\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_integer',\r\n\t\t\t// row: 2,\r\n\t\t\tcolumn: 'INTEGER',\r\n\t\t\tcolumnIndex: 0,\r\n\t\t\ttype: Integer,\r\n\t\t\tvalue: '1.2'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse URLs', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tvalue: 'https://kremlin.ru'\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\t\texpect(results[1].errors.length).to.equal(1)\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_url',\r\n\t\t\t// row: 2,\r\n\t\t\tcolumn: 'URL',\r\n\t\t\tcolumnIndex: 0,\r\n\t\t\ttype: URL,\r\n\t\t\tvalue: 'kremlin.ru'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse Emails', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tvalue: 'vladimir.putin@kremlin.ru'\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\t\texpect(results[1].errors.length).to.equal(1)\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_email',\r\n\t\t\t// row: 2,\r\n\t\t\tcolumn: 'EMAIL',\r\n\t\t\tcolumnIndex: 0,\r\n\t\t\ttype: Email,\r\n\t\t\tvalue: '123'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'NAME',\r\n\t\t\tcolumnIndex: 0,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'George Bush'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\tcolumnIndex: 0,\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 booleans', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_boolean',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\tcolumnIndex: 2,\r\n\t\t\ttype: Boolean,\r\n\t\t\tvalue: 'TRUE'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\tcolumnIndex: 1,\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\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 results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'PHONE',\r\n\t\t\tcolumnIndex: 0,\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\t// row: 1,\r\n\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\tcolumnIndex: 1,\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\r\n\t\t// , { rowIndexSourceMap: [2, 5] })\r\n\r\n\t\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\tcolumnIndex: 0,\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 results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tstatus: 'STARTED'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'unknown',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'STATUS',\r\n\t\t\tcolumnIndex: 0,\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 support `required: undefined` on nested objects (nested object properties are not required)', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', null, 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\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.not.exist\r\n\r\n\t\texpect(results[0].object).to.deep.equal(\r\n\t\t\t{ a: 'a', b: 'b', c: null }\r\n\t\t)\r\n\t})\r\n\r\n\tit('should support `required: undefined` on nested objects (some of nested object properties are required)', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', null, 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\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\trequired: true\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.not.exist\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'CB',\r\n\t\t\tcolumnIndex: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should support `required: false` on nested objects (nested object is completely absent)', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', null, 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\trequired: false,\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\trequired: true\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal(\r\n\t\t\t{ a: 'a', b: 'b', c: null }\r\n\t\t)\r\n\t})\r\n\r\n\tit('should support `required: false` on nested objects (nested object is not absent)', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\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],\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\trequired: false,\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\trequired: true\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\texpect(results.length).to.equal(1)\r\n\r\n\t\texpect(results[0].object).to.not.exist\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'CB',\r\n\t\t\tcolumnIndex: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should reduce empty nested objects to `null` by default', function() {\r\n\t\tconst results = parseSheetDataWithPerRowErrors(\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\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal(\r\n\t\t\t{ a: 'a', b: 'b', c: { a: 'ca', b: null } }\r\n\t\t)\r\n\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal(\r\n\t\t\t{ a: 'a', b: null, c: null }\r\n\t\t)\r\n\t})\r\n\r\n\tit('should parse missing columns (`undefined` by default) and empty cells (`null` by default) (`required: false`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tcolumn1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: undefined\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\r\n\t\t\tcolumn1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: undefined\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse missing columns (`undefined` by default) and empty cells (`null` by default) (`propertyValueWhenColumnIsMissing: null`) (`required: false`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\tpropertyValueWhenColumnIsMissing: null\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.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\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\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 parse missing columns (`undefined` by default) and empty cells (`null` by default) (`propertyValueWhenCellIsEmpty: undefined`) (`required: false`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\tpropertyValueWhenCellIsEmpty: undefined\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.deep.equal({\r\n\t\t\tcolumn1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: undefined\r\n\t\t})\r\n\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\r\n\t\t\tcolumn1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: undefined,\r\n\t\t\tcolumn5: undefined\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse missing columns (`undefined` by default) and empty cells (`null` by default) (`propertyValueWhenColumnIsMissing: null` and `propertyValueWhenCellIsEmpty: null`) (`required: false`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\tpropertyValueWhenColumnIsMissing: null,\r\n\t\t\tpropertyValueWhenCellIsEmpty: null\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.exist\r\n\t\texpect(results[0].errors).to.be.undefined\r\n\r\n\t\texpect(results[0].object).to.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\r\n\t\texpect(results[1].object).to.exist\r\n\t\texpect(results[1].errors).to.be.undefined\r\n\r\n\t\texpect(results[1].object).to.deep.equal({\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 parse missing columns (`undefined` by default) and empty cells (`null` by default) (`propertyValueWhenColumnIsMissing: null` and `propertyValueWhenCellIsEmpty: null`) (`required: true`)', () => {\r\n\t\tconst results = parseSheetDataWithPerRowErrors([\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\tpropertyValueWhenColumnIsMissing: null,\r\n\t\t\tpropertyValueWhenCellIsEmpty: null\r\n\t\t})\r\n\r\n\t\texpect(results.length).to.equal(2)\r\n\r\n\t\texpect(results[0].object).to.be.undefined\r\n\t\texpect(results[0].errors).to.exist\r\n\r\n\t\texpect(results[0].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 1,\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\tcolumnIndex: -1,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\texpect(results[1].object).to.be.undefined\r\n\t\texpect(results[1].errors).to.exist\r\n\r\n\t\texpect(results[1].errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\t// row: 2,\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\tcolumnIndex: -1,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\t})\r\n})\r\n\r\ndescribe('getNextSubstring', () => {\r\n\tit('should parse substrings from a string with a given separator character', () => {\r\n\t\texpect(getNextSubstring('abcde,fg,h', ',', 0)).to.deep.equal(['abcde', 5])\r\n\r\n\t\t// Custom separator and trimming.\r\n\t\texpect(parseSeparatedSubstrings(' abcde,fg , h ', ',')).to.deep.equal(['abcde', 'fg', 'h'])\r\n\r\n\t\t// Should ignore commas inside quotes.\r\n\t\t// expect(getNextSubstring('abc\"de,f\"g,h', ',', 0)).to.deep.equal(['abcde,fg', 10])\r\n\r\n\t\t// Custom separator and trimming.\r\n\t\t// Should ignore commas inside quotes.\r\n\t\t// expect(parseSeparatedSubstrings(' abc\"de,f\"g , h ', ',')).to.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n})"],"mappings":";;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,gBAAA,GAAAC,uBAAA,CAAAH,OAAA;AAGA,IAAAI,QAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,IAAA,GAAAD,sBAAA,CAAAL,OAAA;AACA,IAAAO,MAAA,GAAAF,sBAAA,CAAAL,OAAA;AAA+C,SAAAK,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAAA,SAAAE,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAR,wBAAAK,GAAA,EAAAG,WAAA,SAAAA,WAAA,IAAAH,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAO,OAAA,CAAAP,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAQ,KAAA,GAAAN,wBAAA,CAAAC,WAAA,OAAAK,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,cAAAX,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAH/C;;AAKA,IAAMW,IAAI,GAAG,IAAIC,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAEhD,IAAAC,eAAQ,EAAC,gBAAgB,EAAE,YAAM;EAChC,IAAAC,SAAE,EAAC,iDAAiD,EAAE,YAAM;IAC3D,IAAAC,eAAA,GAA4B,IAAAC,2BAAc,EAAC,CAC1C,CAAC,QAAQ,CAAC,EACV,CAAC,IAAI,CAAC,CACN,EAAE;QACFC,MAAM,EAAE;UACPC,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEC,MAAM;UACZC,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MATMC,MAAM,GAAAP,eAAA,CAANO,MAAM;MAAEC,OAAO,GAAAR,eAAA,CAAPQ,OAAO;IAWvB,IAAAC,YAAM,EAACD,OAAO,CAAC,CAACE,EAAE,CAACC,EAAE,CAACC,SAAS;IAC/B,IAAAH,YAAM,EAACF,MAAM,CAAC,CAACG,EAAE,CAACG,GAAG,CAACF,EAAE,CAACC,SAAS;IAElC,IAAAH,YAAM,EAACF,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MAC7BC,KAAK,EAAE,UAAU;MACjBC,GAAG,EAAE,CAAC;MACNd,MAAM,EAAE,QAAQ;MAChBe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEC,MAAM;MACZc,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,8CAA8C,EAAE,YAAM;IACxD,IAAAqB,gBAAA,GAA4B,IAAAnB,2BAAc,EAAC,CAC1C,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,QAAQ,CAAC,EACxD,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClB,EAAE;QACFC,MAAM,EAAE;UACPC,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEC,MAAM;UACZC,QAAQ,EAAE;QACX,CAAC;QACDe,eAAe,EAAE;UAChBlB,MAAM,EAAE,mBAAmB;UAC3BC,IAAI,EAAEC,MAAM;UACZC,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MAdMC,MAAM,GAAAa,gBAAA,CAANb,MAAM;MAAEC,OAAO,GAAAY,gBAAA,CAAPZ,OAAO;IAgBvB,IAAAC,YAAM,EAACD,OAAO,CAAC,CAACE,EAAE,CAACC,EAAE,CAACC,SAAS;IAC/B,IAAAH,YAAM,EAACF,MAAM,CAAC,CAACG,EAAE,CAACG,GAAG,CAACF,EAAE,CAACC,SAAS;IAElC,IAAAH,YAAM,EAACF,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MAC7BC,KAAK,EAAE,UAAU;MACjBC,GAAG,EAAE,CAAC;MACNd,MAAM,EAAE,QAAQ;MAChBe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEC,MAAM;MACZc,KAAK,EAAE;IACR,CAAC,EAAE;MACFH,KAAK,EAAE,UAAU;MACjBC,GAAG,EAAE,CAAC;MACNd,MAAM,EAAE,mBAAmB;MAC3Be,WAAW,EAAE,CAAC,CAAC;MACfd,IAAI,EAAEC,MAAM;MACZc,KAAK,EAAEP;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,IAAAd,eAAQ,EAAC,gCAAgC,EAAE,YAAM;EAChD,IAAAC,SAAE,EAAC,qCAAqC,EAAE,YAAM;IAC/C,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,YAAY,CACZ,EAAE,CACF,IAAI3B,IAAI,CAACA,IAAI,CAAC4B,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI5B,IAAI,CAAC,CAAC,CAAC6B,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAAE;IACjF,KAAK,EACL,IAAI,EACJ,KAAK,EACL,gBAAgB,EAChB,gBAAgB,CAChB,CACD,EAAE;MACF9B,IAAI,EAAE;QACLQ,MAAM,EAAE,MAAM;QACdC,IAAI,EAAER;MACP,CAAC;MACDM,MAAM,EAAE;QACPC,MAAM,EAAE,QAAQ;QAChBC,IAAI,EAAEC;MACP,CAAC;MACD,WAAS;QACRF,MAAM,EAAE,SAAS;QACjBC,IAAI,EAAEsB;MACP,CAAC;MACDC,MAAM,EAAE;QACPxB,MAAM,EAAE,QAAQ;QAChBC,IAAI,EAAEwB;MACP,CAAC;MACDC,KAAK,EAAE;QACN1B,MAAM,EAAE,OAAO;QACfC,IAAI,WAAAA,KAACe,KAAK,EAAE;UACX,OAAO,cAAc;QACtB;MACD,CAAC;MACDW,SAAS,EAAE;QACV3B,MAAM,EAAE,YAAY;QACpBC,IAAI,WAAAA,KAACe,KAAK,EAAE;UACX,OAAO,cAAc;QACtB;MACD;IACD,CAAC,CAAC;IAEF,IAAAV,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCpB,IAAI,EAAEA,IAAI;MACVO,MAAM,EAAE,GAAG;MACX2B,KAAK,EAAE,cAAc;MACrBC,SAAS,EAAE,cAAc;MACzB,WAAS,IAAI;MACbH,MAAM,EAAE;IACT,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAA5B,SAAE,EAAC,+CAA+C,EAAE,YAAM;IACzD,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,CACR,EAAE,CACF,IAAI3B,IAAI,CAACA,IAAI,CAAC4B,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI5B,IAAI,CAAC,CAAC,CAAC6B,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAAE;IACjF,GAAG,EACH,IAAI,EACJ,KAAK,CACL,CACD,EAAE;MACF9B,IAAI,EAAE;QACLQ,MAAM,EAAE;MACT,CAAC;MACDD,MAAM,EAAE;QACPC,MAAM,EAAE;MACT,CAAC;MACD,WAAS;QACRA,MAAM,EAAE;MACT,CAAC;MACDwB,MAAM,EAAE;QACPxB,MAAM,EAAE;MACT;IACD,CAAC,CAAC;IAEF,IAAAM,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCpB,IAAI,EAAEA,IAAI;MACVO,MAAM,EAAE,GAAG;MACX,WAAS,IAAI;MACbyB,MAAM,EAAE;IACT,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAA5B,SAAE,EAAC,iFAAiF,EAAE,YAAM;IAC3F,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,QAAQ,EACR,QAAQ,CACR,EACD,CACC,IAAI,EACJ,KAAK,CACL,CACD,EAAE;MACFrB,MAAM,EAAE;QACPC,MAAM,EAAE,QAAQ;QAChBC,IAAI,EAAEC,MAAM;QACZC,QAAQ,EAAE;MACX,CAAC;MACDqB,MAAM,EAAE;QACPxB,MAAM,EAAE,QAAQ;QAChBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX;IACD,CAAC,CAAC;IAEF,IAAAG,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,UAAU;MACjB;MACAb,MAAM,EAAE,QAAQ;MAChBe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEC,MAAM;MACZc,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,4BAA4B,EAAE,YAAM;IACtC,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CAAC,MAAM,CAAC;IACR;IACA,CAAC,cAAc,CAAC;IAChB;IACA,CAAC,IAAI,CAAC,CACN,EAAE;MACFW,IAAI,EAAE;QACL/B,MAAM,EAAE,MAAM;QACdC,IAAI,EAAEwB;MACP;IACD,CAAC,CAAC;IAEF,IAAAnB,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCmB,IAAI,EAAE;IACP,CAAC,CAAC;IAEF,IAAAzB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACK,KAAK,CAAC,IAAI,CAAC;IACxC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;EAC1C,CAAC,CAAC;EAEF,IAAAb,SAAE,EAAC,oCAAoC,EAAE,YAAM;IAC9C,IAAMoC,MAAM,GAAG;MACdC,WAAW,EAAE;QACZjC,MAAM,EAAE,cAAc;QACtBC,IAAI,EAAEwB;MACP,CAAC;MACDS,SAAS,EAAE;QACVlC,MAAM,EAAE,YAAY;QACpBC,IAAI,EAAEC,MAAM;QACZC,QAAQ,EAAE,SAAAA,SAACgC,YAAY;UAAA,OAAKA,YAAY,CAACF,WAAW,KAAK,WAAW;QAAA;MACrE;IACD,CAAC;IAED,IAAMG,IAAI,GAAG,CACZ,CAAC,cAAc,CAAC;IAChB;IACA,CAAC,WAAW,CAAC;IACb;IACA,CAAC,MAAM,CAAC,CACR;IAED,IAAMjB,OAAO,GAAG,IAAAC,+CAA8B,EAACgB,IAAI,EAAEJ,MAAM,CAAC;IAE5D,IAAA1B,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACG,GAAG,CAACF,EAAE,CAACC,SAAS;IAE7C,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,UAAU;MACjB;MACAb,MAAM,EAAE,YAAY;MACpBe,WAAW,EAAE,CAAC,CAAC;MACfC,KAAK,EAAEP,SAAS;MAChB;MACAR,IAAI,EAAEC;IACP,CAAC,CAAC,CAAC;IAEH,IAAAI,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACG,GAAG,CAACF,EAAE,CAACC,SAAS;IAC7C,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCqB,WAAW,EAAE,MAAM;MACnBC,SAAS,EAAEzB;IACZ,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAAb,SAAE,EAAC,qBAAqB,EAAE,YAAM;IAC/B,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CAAC,OAAO,CAAC;IACT;IACA,CAAC,oCAAoC,CAAC;IACtC;IACA,CAAC,UAAU,CAAC;IACZ;IACA,CAAC,IAAI,CAAC,CACN,EAAE;MACFiB,KAAK,EAAE;QACNrC,MAAM,EAAE,OAAO;QACfC,IAAI,EAAE,CAACwB,MAAM;MACd;IACD,CAAC,CAAC;IAEF,IAAAnB,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvC;MACAyB,KAAK,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,cAAc;IACjD,CAAC,CAAC;IAEF,IAAA/B,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChByB,MAAM,EAAE,QAAQ;MAChBtC,MAAM,EAAE,OAAO;MACfe,WAAW,EAAE,CAAC;MACdC,KAAK,EAAE,UAAU;MACjBf,IAAI,EAAE,CAACwB,MAAM;IACd,CAAC,CAAC,CAAC;IAEH,IAAAnB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC;IAC7C,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;EAC1C,CAAC,CAAC;EAEF,IAAAb,SAAE,EAAC,uBAAuB,EAAE,YAAM;IACjC,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,SAAS,CACT,EAAE,CACF,GAAG,CACH,EAAE,CACF,KAAK,CACL,CACD,EAAE;MACFJ,KAAK,EAAE;QACNhB,MAAM,EAAE,SAAS;QACjBC,IAAI,EAAEsC;MACP;IACD,CAAC,CAAC;IAEF,IAAAjC,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCI,KAAK,EAAE;IACR,CAAC,CAAC;IAEF,IAAAV,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAACwB,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAE5C,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChByB,MAAM,EAAE,gBAAgB;MACxB;MACAtC,MAAM,EAAE,SAAS;MACjBe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEsC,mBAAO;MACbvB,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,mBAAmB,EAAE,YAAM;IAC7B,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,KAAK,CACL,EAAE,CACF,oBAAoB,CACpB,EAAE,CACF,YAAY,CACZ,CACD,EAAE;MACFJ,KAAK,EAAE;QACNhB,MAAM,EAAE,KAAK;QACbC,IAAI,EAAEuC;MACP;IACD,CAAC,CAAC;IAEF,IAAAlC,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCI,KAAK,EAAE;IACR,CAAC,CAAC;IAEF,IAAAV,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAACwB,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAE5C,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChByB,MAAM,EAAE,WAAW;MACnB;MACAtC,MAAM,EAAE,KAAK;MACbe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEuC,eAAG;MACTxB,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,qBAAqB,EAAE,YAAM;IAC/B,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,OAAO,CACP,EAAE,CACF,2BAA2B,CAC3B,EAAE,CACF,KAAK,CACL,CACD,EAAE;MACFJ,KAAK,EAAE;QACNhB,MAAM,EAAE,OAAO;QACfC,IAAI,EAAEwC;MACP;IACD,CAAC,CAAC;IAEF,IAAAnC,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCI,KAAK,EAAE;IACR,CAAC,CAAC;IAEF,IAAAV,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAACwB,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAE5C,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChByB,MAAM,EAAE,cAAc;MACtB;MACAtC,MAAM,EAAE,OAAO;MACfe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEwC,iBAAK;MACXzB,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,yBAAyB,EAAE,YAAM;IACnC,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,MAAM,CACN,EAAE,CACF,aAAa,CACb,CACD,EAAE;MACFW,IAAI,EAAE;QACL/B,MAAM,EAAE,MAAM;QACdC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE,IAAI;QACduC,QAAQ,EAAE,SAAAA,SAAC1B,KAAK,EAAK;UACpB,IAAIA,KAAK,KAAK,aAAa,EAAE;YAC5B,MAAM,IAAI2B,KAAK,CAAC,cAAc,CAAC;UAChC;QACD;MACD;IACD,CAAC,CAAC;IAEF,IAAArC,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,cAAc;MACrB;MACAb,MAAM,EAAE,MAAM;MACde,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEwB,MAAM;MACZT,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,yBAAyB,EAAE,YAAM;IACnC,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,QAAQ,CACR,EAAE,CACF,QAAQ,CACR,CACD,EAAE;MACFrB,MAAM,EAAE;QACPC,MAAM,EAAE,QAAQ;QAChBC,IAAI,EAAEC,MAAM;QACZC,QAAQ,EAAE;MACX;IACD,CAAC,CAAC;IAEF,IAAAG,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChByB,MAAM,EAAE,cAAc;MACtB;MACAtC,MAAM,EAAE,QAAQ;MAChBe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEC,MAAM;MACZc,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,0BAA0B,EAAE,YAAM;IACpC,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,MAAM,EACN,OAAO,EACP,SAAS,CACT,EAAE,CACF,IAAI,EACJ,KAAK,EACL,MAAM,CACN,CACD,EAAE;MACF,QAAM;QACLpB,MAAM,EAAE,MAAM;QACdC,IAAI,EAAEsB,OAAO;QACbpB,QAAQ,EAAE;MACX,CAAC;MACD,SAAO;QACNH,MAAM,EAAE,OAAO;QACfC,IAAI,EAAEsB,OAAO;QACbpB,QAAQ,EAAE;MACX,CAAC;MACDyC,OAAO,EAAE;QACR5C,MAAM,EAAE,SAAS;QACjBC,IAAI,EAAEsB,OAAO;QACbpB,QAAQ,EAAE;MACX;IACD,CAAC,CAAC;IAEF,IAAAG,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChByB,MAAM,EAAE,eAAe;MACvB;MACAtC,MAAM,EAAE,SAAS;MACjBe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEsB,OAAO;MACbP,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,uBAAuB,EAAE,YAAM;IACjC,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,MAAM,EACN,SAAS,CACT,EAAE,CACF5B,IAAI;IAAE;IACN,GAAG,CACH,CACD,EAAE;MACFA,IAAI,EAAE;QACLQ,MAAM,EAAE,MAAM;QACdC,IAAI,EAAER,IAAI;QACVU,QAAQ,EAAE;MACX,CAAC;MACDyC,OAAO,EAAE;QACR5C,MAAM,EAAE,SAAS;QACjBC,IAAI,EAAER,IAAI;QACVU,QAAQ,EAAE;MACX;IACD,CAAC,CAAC;IAEF,IAAAG,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChByB,MAAM,EAAE,YAAY;MACpB;MACAtC,MAAM,EAAE,SAAS;MACjBe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAER,IAAI;MACVuB,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,6BAA6B,EAAE,YAAM;IACvC,IAAMK,IAAI,GAAG,SAAPA,IAAIA,CAAA,EAAS;MAClB,MAAM,IAAI0C,KAAK,CAAC,SAAS,CAAC;IAC3B,CAAC;IAED,IAAMxB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,OAAO,EACP,YAAY,CACZ,EAAE,CACF,KAAK,EACL,KAAK,CACL,CACD,EAAE;MACFM,KAAK,EAAE;QACN1B,MAAM,EAAE,OAAO;QACfC,IAAI,EAAJA;MACD,CAAC;MACD0B,SAAS,EAAE;QACV3B,MAAM,EAAE,YAAY;QACpBC,IAAI,EAAJA;MACD;IACD,CAAC,CAAC;IAEF,IAAAK,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChB;MACAb,MAAM,EAAE,OAAO;MACfe,WAAW,EAAE,CAAC;MACdC,KAAK,EAAE,KAAK;MACZf,IAAI,EAAJA;IACD,CAAC,EAAE;MACFY,KAAK,EAAE,SAAS;MAChB;MACAb,MAAM,EAAE,YAAY;MACpBe,WAAW,EAAE,CAAC;MACdC,KAAK,EAAE,KAAK;MACZf,IAAI,EAAJA;IACD,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAAL,SAAE,EAAC,wBAAwB,EAAE,YAAM;IAClC,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,QAAQ,CACR,EAAE,CACF,QAAQ,CACR,CACD,EAAE;MACFrB,MAAM,EAAE;QACPC,MAAM,EAAE,QAAQ;QAChBC,IAAI,EAAEC;MACP;IACD,CAAC,CAAC;;IAEF;;IAEA,IAAAI,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChByB,MAAM,EAAE,cAAc;MACtB;MACAtC,MAAM,EAAE,QAAQ;MAChBe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEC,MAAM;MACZc,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,iCAAiC,EAAE,YAAM;IAC3C,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,QAAQ,CACR,EACD,CACC,SAAS,CACT,CACD,EAAE;MACFyB,MAAM,EAAE;QACP7C,MAAM,EAAE,QAAQ;QAChBC,IAAI,EAAEwB,MAAM;QACZqB,KAAK,EAAE,CACN,SAAS,EACT,UAAU;MAEZ;IACD,CAAC,CAAC;IAEF,IAAAxC,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCiC,MAAM,EAAE;IACT,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAAjD,SAAE,EAAC,qCAAqC,EAAE,YAAM;IAC/C,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,QAAQ,CACR,EACD,CACC,WAAW,CACX,CACD,EAAE;MACFyB,MAAM,EAAE;QACP7C,MAAM,EAAE,QAAQ;QAChBC,IAAI,EAAEwB,MAAM;QACZqB,KAAK,EAAE,CACN,SAAS,EACT,UAAU;MAEZ;IACD,CAAC,CAAC;IAEF,IAAAxC,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,SAAS;MAChByB,MAAM,EAAE,SAAS;MACjB;MACAtC,MAAM,EAAE,QAAQ;MAChBe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEwB,MAAM;MACZT,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,oGAAoG,EAAE,YAAW;IACnH,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAC7C,CACC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACtB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CACtB,EACD;MACC2B,CAAC,EAAE;QACF/C,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDuB,CAAC,EAAE;QACFhD,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDwB,CAAC,EAAE;QACAjB,MAAM,EAAE;UACTe,CAAC,EAAE;YACF/C,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB;UACP,CAAC;UACDuB,CAAC,EAAE;YACFhD,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB;UACP;QACD;MACD;IACD,CACD,CAAC;IAED,IAAAnB,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACG,GAAG,CAACoB,KAAK;IAEtC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CACtC;MAAEmC,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE;IAAK,CAC3B,CAAC;EACF,CAAC,CAAC;EAEF,IAAArD,SAAE,EAAC,wGAAwG,EAAE,YAAW;IACvH,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAC7C,CACC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACtB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CACtB,EACD;MACC2B,CAAC,EAAE;QACF/C,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDuB,CAAC,EAAE;QACFhD,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDwB,CAAC,EAAE;QACAjB,MAAM,EAAE;UACTe,CAAC,EAAE;YACF/C,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB;UACP,CAAC;UACDuB,CAAC,EAAE;YACFhD,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB,MAAM;YACZtB,QAAQ,EAAE;UACX;QACD;MACD;IACD,CACD,CAAC;IAED,IAAAG,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACG,GAAG,CAACoB,KAAK;IACtC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,UAAU;MACjB;MACAb,MAAM,EAAE,IAAI;MACZe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEwB,MAAM;MACZT,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,yFAAyF,EAAE,YAAW;IACxG,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAC7C,CACC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACtB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CACtB,EACD;MACC2B,CAAC,EAAE;QACF/C,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDuB,CAAC,EAAE;QACFhD,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDwB,CAAC,EAAE;QACF9C,QAAQ,EAAE,KAAK;QACb6B,MAAM,EAAE;UACTe,CAAC,EAAE;YACF/C,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB;UACP,CAAC;UACDuB,CAAC,EAAE;YACFhD,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB,MAAM;YACZtB,QAAQ,EAAE;UACX;QACD;MACD;IACD,CACD,CAAC;IAED,IAAAG,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CACtC;MAAEmC,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE;IAAK,CAC3B,CAAC;EACF,CAAC,CAAC;EAEF,IAAArD,SAAE,EAAC,kFAAkF,EAAE,YAAW;IACjG,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAC7C,CACC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACtB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CACtB,EACD;MACC2B,CAAC,EAAE;QACF/C,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDuB,CAAC,EAAE;QACFhD,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDwB,CAAC,EAAE;QACF9C,QAAQ,EAAE,KAAK;QACb6B,MAAM,EAAE;UACTe,CAAC,EAAE;YACF/C,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB;UACP,CAAC;UACDuB,CAAC,EAAE;YACFhD,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB,MAAM;YACZtB,QAAQ,EAAE;UACX;QACD;MACD;IACD,CACD,CAAC;IAED,IAAAG,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACG,GAAG,CAACoB,KAAK;IACtC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,UAAU;MACjB;MACAb,MAAM,EAAE,IAAI;MACZe,WAAW,EAAE,CAAC;MACdd,IAAI,EAAEwB,MAAM;MACZT,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAApB,SAAE,EAAC,yDAAyD,EAAE,YAAW;IACxE,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAC7C,CACC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACtB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACtB,CAAC,GAAG,EAAE,IAAI,CAAC,CACX,EACD;MACC2B,CAAC,EAAE;QACF/C,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDuB,CAAC,EAAE;QACFhD,MAAM,EAAE,GAAG;QACXC,IAAI,EAAEwB;MACP,CAAC;MACDwB,CAAC,EAAE;QACAjB,MAAM,EAAE;UACTe,CAAC,EAAE;YACF/C,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB;UACP,CAAC;UACDuB,CAAC,EAAE;YACFhD,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEwB;UACP;QACD;MACD;IACD,CACD,CAAC;IAED,IAAAnB,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CACtC;MAAEmC,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE;QAAEF,CAAC,EAAE,IAAI;QAAEC,CAAC,EAAE;MAAK;IAAE,CAC3C,CAAC;IAED,IAAA1C,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CACtC;MAAEmC,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE,IAAI;MAAEC,CAAC,EAAE;IAAK,CAC5B,CAAC;EACF,CAAC,CAAC;EAEF,IAAArD,SAAE,EAAC,+GAA+G,EAAE,YAAM;IACzH,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,UAAU,EACV,UAAU,EACV,UAAU,CACV,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,CACD,EAAE;MACF8B,OAAO,EAAE;QACRlD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDgD,OAAO,EAAE;QACRnD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDiD,OAAO,EAAE;QACRpD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDkD,OAAO,EAAE;QACRrD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX;IACD,CAAC,CAAC;IAEF,IAAAG,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCsC,OAAO,EAAEzC,SAAS;MAClB0C,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE5C;IACV,CAAC,CAAC;IAEF,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCsC,OAAO,EAAEzC,SAAS;MAClB0C,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE5C;IACV,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAAb,SAAE,EAAC,0JAA0J,EAAE,YAAM;IACpK,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,UAAU,EACV,UAAU,EACV,UAAU,CACV,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,CACD,EAAE;MACF8B,OAAO,EAAE;QACRlD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDgD,OAAO,EAAE;QACRnD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDiD,OAAO,EAAE;QACRpD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDkD,OAAO,EAAE;QACRrD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX;IACD,CAAC,EAAE;MACFmD,gCAAgC,EAAE;IACnC,CAAC,CAAC;IAEF,IAAAhD,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCsC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC;IAEF,IAAA/C,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCsC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAAzD,SAAE,EAAC,2JAA2J,EAAE,YAAM;IACrK,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,UAAU,EACV,UAAU,EACV,UAAU,CACV,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,CACD,EAAE;MACF8B,OAAO,EAAE;QACRlD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDgD,OAAO,EAAE;QACRnD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDiD,OAAO,EAAE;QACRpD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDkD,OAAO,EAAE;QACRrD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX;IACD,CAAC,EAAE;MACFoD,4BAA4B,EAAE9C;IAC/B,CAAC,CAAC;IAEF,IAAAH,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCsC,OAAO,EAAEzC,SAAS;MAClB0C,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE5C;IACV,CAAC,CAAC;IAEF,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCsC,OAAO,EAAEzC,SAAS;MAClB0C,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE3C,SAAS;MAClB4C,OAAO,EAAE5C;IACV,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAAb,SAAE,EAAC,mMAAmM,EAAE,YAAM;IAC7M,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,UAAU,EACV,UAAU,EACV,UAAU,CACV,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,CACD,EAAE;MACF8B,OAAO,EAAE;QACRlD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDgD,OAAO,EAAE;QACRnD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDiD,OAAO,EAAE;QACRpD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDkD,OAAO,EAAE;QACRrD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX;IACD,CAAC,EAAE;MACFmD,gCAAgC,EAAE,IAAI;MACtCC,4BAA4B,EAAE;IAC/B,CAAC,CAAC;IAEF,IAAAjD,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCsC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC;IAEF,IAAA/C,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACuB,KAAK;IAClC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,SAAS;IAEzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC;MACvCsC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAAzD,SAAE,EAAC,kMAAkM,EAAE,YAAM;IAC5M,IAAMuB,OAAO,GAAG,IAAAC,+CAA8B,EAAC,CAC9C,CACC,UAAU,EACV,UAAU,EACV,UAAU,CACV,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,EAAE,CACF,IAAI,EACJ,IAAI,EACJ,IAAI,CACJ,CACD,EAAE;MACF8B,OAAO,EAAE;QACRlD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDgD,OAAO,EAAE;QACRnD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDiD,OAAO,EAAE;QACRpD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX,CAAC;MACDkD,OAAO,EAAE;QACRrD,MAAM,EAAE,UAAU;QAClBC,IAAI,EAAEwB,MAAM;QACZtB,QAAQ,EAAE;MACX;IACD,CAAC,EAAE;MACFmD,gCAAgC,EAAE,IAAI;MACtCC,4BAA4B,EAAE;IAC/B,CAAC,CAAC;IAEF,IAAAjD,YAAM,EAACa,OAAO,CAACS,MAAM,CAAC,CAACrB,EAAE,CAACK,KAAK,CAAC,CAAC,CAAC;IAElC,IAAAN,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,UAAU;MACjB;MACAb,MAAM,EAAE,UAAU;MAClBe,WAAW,EAAE,CAAC,CAAC;MACfd,IAAI,EAAEwB,MAAM;MACZT,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;IAEH,IAAAV,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACU,MAAM,CAAC,CAACtB,EAAE,CAACC,EAAE,CAACC,SAAS;IACzC,IAAAH,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACuB,KAAK;IAElC,IAAAxB,YAAM,EAACa,OAAO,CAAC,CAAC,CAAC,CAACf,MAAM,CAAC,CAACG,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC;MACxCC,KAAK,EAAE,UAAU;MACjB;MACAb,MAAM,EAAE,UAAU;MAClBe,WAAW,EAAE,CAAC,CAAC;MACfd,IAAI,EAAEwB,MAAM;MACZT,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,IAAArB,eAAQ,EAAC,kBAAkB,EAAE,YAAM;EAClC,IAAAC,SAAE,EAAC,wEAAwE,EAAE,YAAM;IAClF,IAAAU,YAAM,EAAC,IAAAkD,iCAAgB,EAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAACjD,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;;IAE1E;IACA,IAAAN,YAAM,EAAC,IAAAmD,yCAAwB,EAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAClD,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;;IAE5F;IACA;;IAEA;IACA;IACA;EACD,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -157,7 +157,7 @@ function parseDataRow(dataRow, schema, columns, options) {
|
|
|
157
157
|
//
|
|
158
158
|
var requiredErrors = runPendingRequiredValidations(schemaEntry, value, isEmptyValue, errors, children,
|
|
159
159
|
// Simulate a "dummy" parent object for the top-level object.
|
|
160
|
-
dummyParentObject.isRequired, dummyParentObject.value, dummyParentObject.isEmptyValue, dummyParentObject.errors);
|
|
160
|
+
dummyParentObject.isRequired, dummyParentObject.value, dummyParentObject.isEmptyValue, dummyParentObject.errors, columns);
|
|
161
161
|
|
|
162
162
|
// If there were any errors, whether caused by `required`
|
|
163
163
|
// or occured while parsing the values, return those errors.
|
|
@@ -219,7 +219,7 @@ function parseProperty(row, schemaEntry, path, columns, options) {
|
|
|
219
219
|
var _ref = schemaEntry.column ? isMissingColumn ? {
|
|
220
220
|
value: options.propertyValueWhenColumnIsMissing,
|
|
221
221
|
isEmptyValue: true
|
|
222
|
-
} : parseCellValueWithPossibleErrors(row[columnIndex], schemaEntry, options) : parseObject(row, schemaEntry.schema, path, columns, options),
|
|
222
|
+
} : parseCellValueWithPossibleErrors(row[columnIndex], schemaEntry, columnIndex, options) : parseObject(row, schemaEntry.schema, path, columns, options),
|
|
223
223
|
value = _ref.value,
|
|
224
224
|
isEmptyValue = _ref.isEmptyValue,
|
|
225
225
|
errors = _ref.errors,
|
|
@@ -241,7 +241,7 @@ function parseProperty(row, schemaEntry, path, columns, options) {
|
|
|
241
241
|
children: children
|
|
242
242
|
};
|
|
243
243
|
}
|
|
244
|
-
function parseCellValueWithPossibleErrors(cellValue, schemaEntry, options) {
|
|
244
|
+
function parseCellValueWithPossibleErrors(cellValue, schemaEntry, columnIndex, options) {
|
|
245
245
|
var _parseCellValue = parseCellValue(cellValue, schemaEntry, options),
|
|
246
246
|
value = _parseCellValue.value,
|
|
247
247
|
isEmptyValue = _parseCellValue.isEmptyValue,
|
|
@@ -252,6 +252,7 @@ function parseCellValueWithPossibleErrors(cellValue, schemaEntry, options) {
|
|
|
252
252
|
error: errorMessage,
|
|
253
253
|
reason: errorReason,
|
|
254
254
|
column: schemaEntry.column,
|
|
255
|
+
columnIndex: columnIndex,
|
|
255
256
|
valueType: schemaEntry.type,
|
|
256
257
|
value: cellValue
|
|
257
258
|
});
|
|
@@ -563,7 +564,7 @@ function getPropertyPath(propertyName, parentObjectPath) {
|
|
|
563
564
|
}
|
|
564
565
|
|
|
565
566
|
// Recursively runs `required` validations for the parsed data row tree.
|
|
566
|
-
function runPendingRequiredValidations(schemaEntry, value, isEmptyValue, errors, children, parentObjectIsRequired, parentObjectValue, parentObjectValueIsEmpty, parentObjectErrors) {
|
|
567
|
+
function runPendingRequiredValidations(schemaEntry, value, isEmptyValue, errors, children, parentObjectIsRequired, parentObjectValue, parentObjectValueIsEmpty, parentObjectErrors, columns) {
|
|
567
568
|
var requiredErrors = [];
|
|
568
569
|
|
|
569
570
|
// See if this property is required.
|
|
@@ -574,6 +575,7 @@ function runPendingRequiredValidations(schemaEntry, value, isEmptyValue, errors,
|
|
|
574
575
|
requiredErrors.push(createError({
|
|
575
576
|
error: 'required',
|
|
576
577
|
column: schemaEntry.column,
|
|
578
|
+
columnIndex: columns.indexOf(schemaEntry.column),
|
|
577
579
|
valueType: schemaEntry.type,
|
|
578
580
|
value: value
|
|
579
581
|
}));
|
|
@@ -586,7 +588,7 @@ function runPendingRequiredValidations(schemaEntry, value, isEmptyValue, errors,
|
|
|
586
588
|
var requiredErrorsOfChild = runPendingRequiredValidations(child.schemaEntry, child.value, child.isEmptyValue, child.errors, child.children,
|
|
587
589
|
// The following properties describe the parent object of the `child`,
|
|
588
590
|
// i.e. the current (iterated) object.
|
|
589
|
-
isRequired, value, isEmptyValue, errors);
|
|
591
|
+
isRequired, value, isEmptyValue, errors, columns);
|
|
590
592
|
if (requiredErrorsOfChild) {
|
|
591
593
|
requiredErrors = requiredErrors.concat(requiredErrorsOfChild);
|
|
592
594
|
}
|
|
@@ -628,6 +630,7 @@ function isPropertyRequired(schemaEntry, parentObjectIsRequired, parentObjectVal
|
|
|
628
630
|
}
|
|
629
631
|
function createError(_ref2) {
|
|
630
632
|
var column = _ref2.column,
|
|
633
|
+
columnIndex = _ref2.columnIndex,
|
|
631
634
|
valueType = _ref2.valueType,
|
|
632
635
|
value = _ref2.value,
|
|
633
636
|
errorMessage = _ref2.error,
|
|
@@ -635,6 +638,7 @@ function createError(_ref2) {
|
|
|
635
638
|
var error = {
|
|
636
639
|
error: errorMessage,
|
|
637
640
|
column: column,
|
|
641
|
+
columnIndex: columnIndex,
|
|
638
642
|
value: value
|
|
639
643
|
};
|
|
640
644
|
if (reason) {
|