read-excel-file 7.0.0 → 7.0.1
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 +7 -0
- package/README.md +4 -4
- package/browser/index.d.ts +2 -1
- package/commonjs/types/Email.test.js.map +1 -1
- package/commonjs/types/Integer.test.js.map +1 -1
- package/commonjs/types/URL.test.js.map +1 -1
- package/commonjs/xlsx/dropEmptyColumns.test.js.map +1 -1
- package/commonjs/xlsx/dropEmptyRows.test.js.map +1 -1
- package/commonjs/xlsx/parseDate.test.js.map +1 -1
- package/commonjs/xlsx/schema/mapToObjects.test.js.map +1 -1
- package/modules/types/Email.test.js.map +1 -1
- package/modules/types/Integer.test.js.map +1 -1
- package/modules/types/URL.test.js.map +1 -1
- package/modules/xlsx/dropEmptyColumns.test.js.map +1 -1
- package/modules/xlsx/dropEmptyRows.test.js.map +1 -1
- package/modules/xlsx/parseDate.test.js.map +1 -1
- package/modules/xlsx/schema/mapToObjects.test.js.map +1 -1
- package/node/index.d.ts +2 -1
- package/package.json +4 -3
- package/types.d.ts +32 -16
- package/universal/index.d.ts +2 -1
- package/web-worker/index.d.ts +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
7.0.1 / 04.03.2026
|
|
2
|
+
==================
|
|
3
|
+
|
|
4
|
+
* [Fixed](https://github.com/catamphetamine/read-excel-file/issues/120) `CellValue` TypeScript type (it didn't include `null` value).
|
|
5
|
+
|
|
6
|
+
* (TypeScript minor breaking change) Renamed exported `Error` TypeScript interface to `SchemaParseCellValueError`, and removed `CellValue` generic from it.
|
|
7
|
+
|
|
1
8
|
7.0.0 / 23.02.2026
|
|
2
9
|
==================
|
|
3
10
|
|
package/README.md
CHANGED
|
@@ -251,10 +251,10 @@ A key of a `schema` entry represents the name of the property. The value of the
|
|
|
251
251
|
* `required: (object) => boolean` — A function returning `true` or `false` depending on the other properties of the object.
|
|
252
252
|
* It could be configured to skip `required` validation for missing columns by passing `schemaPropertyShouldSkipRequiredValidationForMissingColumn` function as an option. By default it's `(column, { object }) => false` meaning that when `column` is missing from the spreadsheet, it will not skip `required` validation for it.
|
|
253
253
|
* `validate(value)` — (optional) Validates the value. Is only called for non-empty cells. If the value is invalid, this function should throw an error.
|
|
254
|
-
* `schema` — (optional) If the value is
|
|
255
|
-
* If all of its property values happen to be empty (`undefined` or `null`), the object
|
|
254
|
+
* `schema` — (optional) If the value is going to be a nested object, `schema` should describe all of its properties.
|
|
255
|
+
* If all of its property values happen to be empty (`undefined` or `null`), the nested object will be replaced with `null`.
|
|
256
256
|
* This can be overridden by passing `getEmptyObjectValue(object, { path? })` function as an option. By default, it returns `null`.
|
|
257
|
-
* `type` — (optional) If the value is not
|
|
257
|
+
* `type` — (optional) If the value is not going to be a nested object, `type` should define the type of the value. It will determine how the cell value will be converted to the property value. If no `type` is specified then the cell value is returned "as is": as a string, number, date or boolean.
|
|
258
258
|
* Valid `type`s:
|
|
259
259
|
* Standard types:
|
|
260
260
|
* `String`
|
|
@@ -266,7 +266,7 @@ A key of a `schema` entry represents the name of the property. The value of the
|
|
|
266
266
|
* `Email`
|
|
267
267
|
* `URL`
|
|
268
268
|
* Custom type:
|
|
269
|
-
* A function that receives a cell value and returns a parsed value. If the value is invalid, it should throw an error.
|
|
269
|
+
* A function that receives a cell value and returns a parsed value. Returning `undefined` will have same effect as returning `null`. If the value is invalid, it should throw an error.
|
|
270
270
|
* If the cell value consists of comma-separated values (example: `"a, b, c"`) then `type` could be specified as `[type]` for any of the valid `type`s described above.
|
|
271
271
|
* Example: `{ type: [String] }` or `{ type: [(value) => parseValue(value)] }`
|
|
272
272
|
* If the cell value is empty, or if every element of the array is `null` or `undefined`, then the array property value is gonna be `null` by default.
|
package/browser/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Email.test.js","names":["
|
|
1
|
+
{"version":3,"file":"Email.test.js","names":["_mocha","require","_chai","_Email","describe","it","expect","isEmail","to","equal"],"sources":["../../source/types/Email.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport { isEmail } from './Email.js'\r\n\r\ndescribe('Email', () => {\r\n\tit('should validate an Email', () => {\r\n\t\texpect(isEmail('123')).to.equal(false)\r\n\t\texpect(isEmail('vladimir.putin@kremlin.ru')).to.equal(true)\r\n\t})\r\n})"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAEA,IAAAG,eAAQ,EAAC,OAAO,EAAE,YAAM;EACvB,IAAAC,SAAE,EAAC,0BAA0B,EAAE,YAAM;IACpC,IAAAC,YAAM,EAAC,IAAAC,cAAO,EAAC,KAAK,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;IACtC,IAAAH,YAAM,EAAC,IAAAC,cAAO,EAAC,2BAA2B,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC;EAC5D,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Integer.test.js","names":["
|
|
1
|
+
{"version":3,"file":"Integer.test.js","names":["_mocha","require","_chai","_Integer","describe","it","expect","isInteger","to","equal"],"sources":["../../source/types/Integer.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport { isInteger } from './Integer.js'\r\n\r\ndescribe('Integer', () => {\r\n\tit('should validate an Integer', () => {\r\n\t\texpect(isInteger(1.2)).to.equal(false)\r\n\t\texpect(isInteger(1)).to.equal(true)\r\n\t})\r\n})"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AAEA,IAAAG,eAAQ,EAAC,SAAS,EAAE,YAAM;EACzB,IAAAC,SAAE,EAAC,4BAA4B,EAAE,YAAM;IACtC,IAAAC,YAAM,EAAC,IAAAC,kBAAS,EAAC,GAAG,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;IACtC,IAAAH,YAAM,EAAC,IAAAC,kBAAS,EAAC,CAAC,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC;EACpC,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"URL.test.js","names":["
|
|
1
|
+
{"version":3,"file":"URL.test.js","names":["_mocha","require","_chai","_URL","describe","it","expect","isURL","to","equal"],"sources":["../../source/types/URL.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport { isURL } from './URL.js'\r\n\r\ndescribe('URL', () => {\r\n\tit('should validate a URL', () => {\r\n\t\texpect(isURL('123')).to.equal(false)\r\n\t\texpect(isURL('https://stackoverflow.com/questions/8667070/javascript-regular-expression-to-validate-url')).to.equal(true)\r\n\t})\r\n})"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,IAAA,GAAAF,OAAA;AAEA,IAAAG,eAAQ,EAAC,KAAK,EAAE,YAAM;EACrB,IAAAC,SAAE,EAAC,uBAAuB,EAAE,YAAM;IACjC,IAAAC,YAAM,EAAC,IAAAC,UAAK,EAAC,KAAK,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;IACpC,IAAAH,YAAM,EAAC,IAAAC,UAAK,EAAC,2FAA2F,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC;EAC1H,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropEmptyColumns.test.js","names":["
|
|
1
|
+
{"version":3,"file":"dropEmptyColumns.test.js","names":["_mocha","require","_chai","_dropEmptyColumns","_interopRequireDefault","obj","__esModule","describe","it","expect","dropEmptyColumns","onlyTrimAtTheEnd","to","deep","equal"],"sources":["../../source/xlsx/dropEmptyColumns.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport dropEmptyColumns from './dropEmptyColumns.js'\r\n\r\ndescribe('dropEmptyColumns', () => {\r\n\tit('should drop empty columns (only at the end)', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyColumns([\r\n\t\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t\t[null, null, null, null, null, null],\r\n\t\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t\t], {\r\n\t\t\t\tonlyTrimAtTheEnd: true\r\n\t\t\t})\r\n\t\t).to.deep.equal([\r\n\t\t\t[null, 'A', 'B', 'C', null],\r\n\t\t\t[null, 'D', null, null, null],\r\n\t\t\t[null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty columns', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyColumns([\r\n\t\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t\t[null, null, null, null, null, null],\r\n\t\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t\t])\r\n\t\t).to.deep.equal([\r\n\t\t\t['A', 'B', 'C', null],\r\n\t\t\t['D', null, null, null],\r\n\t\t\t[null, null, null, null],\r\n\t\t\t[null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n})"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoD,SAAAG,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAEpD,IAAAE,eAAQ,EAAC,kBAAkB,EAAE,YAAM;EAClC,IAAAC,SAAE,EAAC,6CAA6C,EAAE,YAAM;IACvD,IAAAC,YAAM,EACL,IAAAC,4BAAgB,EAAC,CAChB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACnC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACpC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CACjC,EAAE;MACFC,gBAAgB,EAAE;IACnB,CAAC,CACF,CAAC,CAACC,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAC3B,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC7B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC9B,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC3B,CAAC;EACH,CAAC,CAAC;EAEF,IAAAN,SAAE,EAAC,2BAA2B,EAAE,YAAM;IACrC,IAAAC,YAAM,EACL,IAAAC,4BAAgB,EAAC,CAChB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACnC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACpC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CACjC,CACF,CAAC,CAACE,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EACrB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACvB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACxB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACrB,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropEmptyRows.test.js","names":["
|
|
1
|
+
{"version":3,"file":"dropEmptyRows.test.js","names":["_mocha","require","_chai","_dropEmptyRows","_interopRequireDefault","obj","__esModule","describe","it","expect","dropEmptyRows","onlyTrimAtTheEnd","to","deep","equal","rowIndexSourceMap"],"sources":["../../source/xlsx/dropEmptyRows.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport dropEmptyRows from './dropEmptyRows.js'\r\n\r\ndescribe('dropEmptyRows', () => {\r\n\tit('should drop empty rows (only at the end)', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G'],\r\n\t\t\t\t[null, null, null]\r\n\t\t\t], {\r\n\t\t\t\tonlyTrimAtTheEnd: true\r\n\t\t\t})\r\n\t\t).to.deep.equal([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty rows', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G'],\r\n\t\t\t\t[null, null, null]\r\n\t\t\t])\r\n\t\t).to.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should generate row map when dropping empty rows', () => {\r\n\t\tconst rowIndexSourceMap = [0, 1, 2, 3, 4]\r\n\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G']\r\n\t\t\t],\r\n\t\t\t{ rowIndexSourceMap }\r\n\t\t)).to.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\r\n\t\texpect(rowIndexSourceMap).to.deep.equal([1, 2, 4])\r\n\t})\r\n})"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseDate.test.js","names":["
|
|
1
|
+
{"version":3,"file":"parseDate.test.js","names":["_mocha","require","_chai","_parseDate","_interopRequireDefault","obj","__esModule","describe","it","date","convertToUTCTimezone","Date","expect","parseDate","getTime","to","equal","getTimezoneOffset"],"sources":["../../source/xlsx/parseDate.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport parseDate from './parseDate.js'\r\n\r\ndescribe('parseDate', () => {\r\n\tit('should parse Excel \"serial\" dates', () => {\r\n\t\tconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24))\r\n // Excel stores dates as integers.\r\n // E.g. '24/03/2018' === 43183\r\n\t\texpect(parseDate(43183).getTime()).to.equal(date.getTime())\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAsC,SAAAG,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAEtC,IAAAE,eAAQ,EAAC,WAAW,EAAE,YAAM;EAC3B,IAAAC,SAAE,EAAC,mCAAmC,EAAE,YAAM;IAC7C,IAAMC,IAAI,GAAGC,oBAAoB,CAAC,IAAIC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D;IACA;IACF,IAAAC,YAAM,EAAC,IAAAC,qBAAS,EAAC,KAAK,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAACP,IAAI,CAACK,OAAO,CAAC,CAAC,CAAC;EAC5D,CAAC,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,SAASJ,oBAAoBA,CAACD,IAAI,EAAE;EACnC;EACA;EACA;EACA;EACA;EACA;EACA,OAAO,IAAIE,IAAI,CAACF,IAAI,CAACK,OAAO,CAAC,CAAC,GAAGL,IAAI,CAACQ,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapToObjects.test.js","names":["_mapToObjects30","_interopRequireWildcard","require","_Integer","_interopRequireDefault","_URL","_Email","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","date","convertToUTCTimezone","Date","describe","it","getBlock","should","deep","equal","parseArray","_mapToObjects","mapToObjects","parse","getTimezoneOffset","column","type","number","Number","Boolean","string","String","phone","value","phoneType","rows","errors","toISOString","_mapToObjects2","_mapToObjects3","required","error","row","_mapToObjects4","ignoreEmptyRows","_mapToObjects5","_mapToObjects6","names","_mapToObjects7","_mapToObjects8","Integer","length","reason","_mapToObjects9","URL","_mapToObjects10","Email","_mapToObjects11","name","validate","Error","_mapToObjects12","_mapToObjects13","invalid","_mapToObjects14","_mapToObjects15","_mapToObjects16","rowIndexSourceMap","_mapToObjects17","status","oneOf","_mapToObjects18","_mapToObjects19","a","b","c","schema","_mapToObjects20","column1","column2","column4","column5","_mapToObjects21","schemaPropertyValueForMissingColumn","_mapToObjects22","_mapToObjects23","schemaPropertyValueForMissingValue","undefined","_mapToObjects24","_mapToObjects25","schemaPropertyValueForNullCellValue","_mapToObjects26","_mapToObjects27","_mapToObjects28","schemaPropertyShouldSkipRequiredValidationForMissingColumn","_mapToObjects29","getTime"],"sources":["../../../source/xlsx/schema/mapToObjects.test.js"],"sourcesContent":["import mapToObjects, { parseArray, getBlock } from './mapToObjects.js'\r\n\r\nimport Integer from '../../types/Integer.js'\r\nimport URL from '../../types/URL.js'\r\nimport Email from '../../types/Email.js'\r\n\r\nconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24))\r\n\r\ndescribe('mapToObjects', () => {\r\n\tit('should parse arrays', () => {\r\n\t\tgetBlock('abc\"de,f\"g,h', ',', 0).should.deep.equal(['abcde,fg', 10])\r\n\t\tparseArray(' abc\"de,f\"g , h ', ',').should.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n\r\n\tit('should convert to json', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING',\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t'123',\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc',\r\n\t\t\t\t'(123) 456-7890',\r\n\t\t\t\t'(123) 456-7890'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN',\r\n\t\t\t\ttype: Boolean\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String\r\n\t\t\t},\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tphone: '+11234567890',\r\n\t\t\tphoneType: '+11234567890',\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should support schema entries with no `type`s', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t123,\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE'\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER'\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN'\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING'\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should require fields when cell value is empty', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'STRING'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnumber: null,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows: false`', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse integers', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'INTEGER'\r\n\t\t\t], [\r\n\t\t\t\t'1'\r\n\t\t\t], [\r\n\t\t\t\t'1.2'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'INTEGER',\r\n\t\t\t\ttype: Integer\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].should.deep.equal({\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_integer',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INTEGER',\r\n\t\t\ttype: Integer,\r\n\t\t\tvalue: '1.2'\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 1\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse URLs', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'URL'\r\n\t\t\t], [\r\n\t\t\t\t'https://kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'kremlin.ru'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'URL',\r\n\t\t\t\ttype: URL\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(3)\r\n\t\terrors[0].column.should.equal('URL')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 'https://kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse Emails', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'EMAIL'\r\n\t\t\t], [\r\n\t\t\t\t'vladimir.putin@kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'EMAIL',\r\n\t\t\t\ttype: Email\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(3)\r\n\t\terrors[0].column.should.equal('EMAIL')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 'vladimir.putin@kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAME'\r\n\t\t\t], [\r\n\t\t\t\t'George Bush'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tname: {\r\n\t\t\t\tcolumn: 'NAME',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidate: (value) => {\r\n\t\t\t\t\tif (value === 'George Bush') {\r\n\t\t\t\t\t\tthrow new Error('custom-error')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NAME',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'George Bush'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate booleans', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'TRUE',\r\n\t\t\t\t'FALSE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\t'TRUE'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\ttrue: {\r\n\t\t\t\tcolumn: 'TRUE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tfalse: {\r\n\t\t\t\tcolumn: 'FALSE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_boolean',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Boolean,\r\n\t\t\tvalue: 'TRUE'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\ttrue: true,\r\n\t\t\tfalse: false\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\t43183, // 03/24/2018',\r\n\t\t\t\t'-'\r\n\t\t\t], [\r\n\t\t\t\tdate, // 03/24/2018',,\r\n\t\t\t\t'-'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate\r\n\t\t}, {\r\n\t\t\tdate\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should throw parse() errors', () => {\r\n\t\tconst type = () => {\r\n\t\t\tthrow new Error('invalid')\r\n\t\t}\r\n\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\t'123',\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\trowIndexSourceMap: [2, 5]\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 6,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'STARTED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(0)\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'SCHEDULED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'unknown',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'STATUS',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'SCHEDULED'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should not include `null` values by default', function() {\r\n\t\tconst { rows } = mapToObjects(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', 'ca', null],\r\n\t\t\t\t['a', null]\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\ta: {\r\n\t\t\t\t\tcolumn: 'A',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tb: {\r\n\t\t\t\t\tcolumn: 'B',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tc: {\r\n\t\t\t\t\tcolumn: 'C',\r\n \t\t\tschema: {\r\n\t\t\t\t\t\ta: {\r\n\t\t\t\t\t\t\tcolumn: 'CA',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tb: {\r\n\t\t\t\t\t\t\tcolumn: 'CB',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t\trows.should.deep.equal([\r\n\t\t\t{ a: 'a', b: 'b', c: { a: 'ca', b: null } },\r\n\t\t\t{ a: 'a', b: null, c: null },\r\n\t\t])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (default) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Legacy behavior.\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14'\r\n\t\t}, {\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue: undefined`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingValue: undefined\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\t// column4: undefined,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn()` not specified) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapToObjects.test.js","names":["_mocha","require","_chai","_mapToObjects30","_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","convertToUTCTimezone","Date","describe","it","expect","getBlock","to","deep","equal","parseArray","_mapToObjects","mapToObjects","parse","getTimezoneOffset","column","type","number","Number","Boolean","string","String","phone","value","phoneType","rows","errors","toISOString","_mapToObjects2","_mapToObjects3","required","error","row","_mapToObjects4","ignoreEmptyRows","_mapToObjects5","_mapToObjects6","names","_mapToObjects7","_mapToObjects8","Integer","length","reason","_mapToObjects9","URL","_mapToObjects10","Email","_mapToObjects11","name","validate","Error","_mapToObjects12","_mapToObjects13","invalid","_mapToObjects14","_mapToObjects15","_mapToObjects16","rowIndexSourceMap","_mapToObjects17","status","oneOf","_mapToObjects18","_mapToObjects19","a","b","c","schema","_mapToObjects20","column1","column2","column4","column5","_mapToObjects21","schemaPropertyValueForMissingColumn","_mapToObjects22","_mapToObjects23","schemaPropertyValueForMissingValue","undefined","_mapToObjects24","_mapToObjects25","schemaPropertyValueForNullCellValue","_mapToObjects26","_mapToObjects27","_mapToObjects28","schemaPropertyShouldSkipRequiredValidationForMissingColumn","_mapToObjects29","getTime"],"sources":["../../../source/xlsx/schema/mapToObjects.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport mapToObjects, { parseArray, getBlock } from './mapToObjects.js'\r\n\r\nimport Integer from '../../types/Integer.js'\r\nimport URL from '../../types/URL.js'\r\nimport Email from '../../types/Email.js'\r\n\r\nconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24))\r\n\r\ndescribe('mapToObjects', () => {\r\n\tit('should parse arrays', () => {\r\n\t\texpect(getBlock('abc\"de,f\"g,h', ',', 0)).to.deep.equal(['abcde,fg', 10])\r\n\t\texpect(parseArray(' abc\"de,f\"g , h ', ',')).to.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n\r\n\tit('should convert to json', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING',\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t'123',\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc',\r\n\t\t\t\t'(123) 456-7890',\r\n\t\t\t\t'(123) 456-7890'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN',\r\n\t\t\t\ttype: Boolean\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String\r\n\t\t\t},\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tphone: '+11234567890',\r\n\t\t\tphoneType: '+11234567890',\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should support schema entries with no `type`s', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t123,\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE'\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER'\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN'\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING'\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should require fields when cell value is empty', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'STRING'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tnumber: null,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows: false`', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\texpect(rows).to.deep.equal([null])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(rows).to.deep.equal([])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse integers', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'INTEGER'\r\n\t\t\t], [\r\n\t\t\t\t'1'\r\n\t\t\t], [\r\n\t\t\t\t'1.2'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'INTEGER',\r\n\t\t\t\ttype: Integer\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors.length).to.equal(1)\r\n\t\texpect(errors[0]).to.deep.equal({\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_integer',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INTEGER',\r\n\t\t\ttype: Integer,\r\n\t\t\tvalue: '1.2'\r\n\t\t})\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tvalue: 1\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse URLs', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'URL'\r\n\t\t\t], [\r\n\t\t\t\t'https://kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'kremlin.ru'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'URL',\r\n\t\t\t\ttype: URL\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors.length).to.equal(1)\r\n\t\texpect(errors[0].row).to.equal(3)\r\n\t\texpect(errors[0].column).to.equal('URL')\r\n\t\texpect(errors[0].error).to.equal('invalid')\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tvalue: 'https://kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse Emails', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'EMAIL'\r\n\t\t\t], [\r\n\t\t\t\t'vladimir.putin@kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'EMAIL',\r\n\t\t\t\ttype: Email\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors.length).to.equal(1)\r\n\t\texpect(errors[0].row).to.equal(3)\r\n\t\texpect(errors[0].column).to.equal('EMAIL')\r\n\t\texpect(errors[0].error).to.equal('invalid')\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tvalue: 'vladimir.putin@kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAME'\r\n\t\t\t], [\r\n\t\t\t\t'George Bush'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tname: {\r\n\t\t\t\tcolumn: 'NAME',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidate: (value) => {\r\n\t\t\t\t\tif (value === 'George Bush') {\r\n\t\t\t\t\t\tthrow new Error('custom-error')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NAME',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'George Bush'\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate booleans', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'TRUE',\r\n\t\t\t\t'FALSE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\t'TRUE'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\ttrue: {\r\n\t\t\t\tcolumn: 'TRUE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tfalse: {\r\n\t\t\t\tcolumn: 'FALSE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_boolean',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Boolean,\r\n\t\t\tvalue: 'TRUE'\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\ttrue: true,\r\n\t\t\tfalse: false\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\t43183, // 03/24/2018',\r\n\t\t\t\t'-'\r\n\t\t\t], [\r\n\t\t\t\tdate, // 03/24/2018',,\r\n\t\t\t\t'-'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tdate\r\n\t\t}, {\r\n\t\t\tdate\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should throw parse() errors', () => {\r\n\t\tconst type = () => {\r\n\t\t\tthrow new Error('invalid')\r\n\t\t}\r\n\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\t'123',\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([null])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\trowIndexSourceMap: [2, 5]\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 6,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'STARTED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors.length).to.equal(0)\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'SCHEDULED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'unknown',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'STATUS',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'SCHEDULED'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should not include `null` values by default', function() {\r\n\t\tconst { rows } = mapToObjects(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', 'ca', null],\r\n\t\t\t\t['a', null]\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\ta: {\r\n\t\t\t\t\tcolumn: 'A',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tb: {\r\n\t\t\t\t\tcolumn: 'B',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tc: {\r\n\t\t\t\t\tcolumn: 'C',\r\n \t\t\tschema: {\r\n\t\t\t\t\t\ta: {\r\n\t\t\t\t\t\t\tcolumn: 'CA',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tb: {\r\n\t\t\t\t\t\t\tcolumn: 'CB',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t\texpect(rows).to.deep.equal([\r\n\t\t\t{ a: 'a', b: 'b', c: { a: 'ca', b: null } },\r\n\t\t\t{ a: 'a', b: null, c: null },\r\n\t\t])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (default) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\t// Legacy behavior.\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14'\r\n\t\t}, {\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue: undefined`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingValue: undefined\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\t// column4: undefined,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn()` not specified) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Email.test.js","names":["
|
|
1
|
+
{"version":3,"file":"Email.test.js","names":["describe","it","expect","isEmail","to","equal"],"sources":["../../source/types/Email.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport { isEmail } from './Email.js'\r\n\r\ndescribe('Email', () => {\r\n\tit('should validate an Email', () => {\r\n\t\texpect(isEmail('123')).to.equal(false)\r\n\t\texpect(isEmail('vladimir.putin@kremlin.ru')).to.equal(true)\r\n\t})\r\n})"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,OAAO;AACpC,SAASC,MAAM,QAAQ,MAAM;AAE7B,SAASC,OAAO,QAAQ,YAAY;AAEpCH,QAAQ,CAAC,OAAO,EAAE,YAAM;EACvBC,EAAE,CAAC,0BAA0B,EAAE,YAAM;IACpCC,MAAM,CAACC,OAAO,CAAC,KAAK,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;IACtCH,MAAM,CAACC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC;EAC5D,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Integer.test.js","names":["
|
|
1
|
+
{"version":3,"file":"Integer.test.js","names":["describe","it","expect","isInteger","to","equal"],"sources":["../../source/types/Integer.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport { isInteger } from './Integer.js'\r\n\r\ndescribe('Integer', () => {\r\n\tit('should validate an Integer', () => {\r\n\t\texpect(isInteger(1.2)).to.equal(false)\r\n\t\texpect(isInteger(1)).to.equal(true)\r\n\t})\r\n})"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,OAAO;AACpC,SAASC,MAAM,QAAQ,MAAM;AAE7B,SAASC,SAAS,QAAQ,cAAc;AAExCH,QAAQ,CAAC,SAAS,EAAE,YAAM;EACzBC,EAAE,CAAC,4BAA4B,EAAE,YAAM;IACtCC,MAAM,CAACC,SAAS,CAAC,GAAG,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;IACtCH,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC;EACpC,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"URL.test.js","names":["
|
|
1
|
+
{"version":3,"file":"URL.test.js","names":["describe","it","expect","isURL","to","equal"],"sources":["../../source/types/URL.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport { isURL } from './URL.js'\r\n\r\ndescribe('URL', () => {\r\n\tit('should validate a URL', () => {\r\n\t\texpect(isURL('123')).to.equal(false)\r\n\t\texpect(isURL('https://stackoverflow.com/questions/8667070/javascript-regular-expression-to-validate-url')).to.equal(true)\r\n\t})\r\n})"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,OAAO;AACpC,SAASC,MAAM,QAAQ,MAAM;AAE7B,SAASC,KAAK,QAAQ,UAAU;AAEhCH,QAAQ,CAAC,KAAK,EAAE,YAAM;EACrBC,EAAE,CAAC,uBAAuB,EAAE,YAAM;IACjCC,MAAM,CAACC,KAAK,CAAC,KAAK,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;IACpCH,MAAM,CAACC,KAAK,CAAC,2FAA2F,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC;EAC1H,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropEmptyColumns.test.js","names":["
|
|
1
|
+
{"version":3,"file":"dropEmptyColumns.test.js","names":["describe","it","expect","dropEmptyColumns","onlyTrimAtTheEnd","to","deep","equal"],"sources":["../../source/xlsx/dropEmptyColumns.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport dropEmptyColumns from './dropEmptyColumns.js'\r\n\r\ndescribe('dropEmptyColumns', () => {\r\n\tit('should drop empty columns (only at the end)', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyColumns([\r\n\t\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t\t[null, null, null, null, null, null],\r\n\t\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t\t], {\r\n\t\t\t\tonlyTrimAtTheEnd: true\r\n\t\t\t})\r\n\t\t).to.deep.equal([\r\n\t\t\t[null, 'A', 'B', 'C', null],\r\n\t\t\t[null, 'D', null, null, null],\r\n\t\t\t[null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty columns', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyColumns([\r\n\t\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t\t[null, null, null, null, null, null],\r\n\t\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t\t])\r\n\t\t).to.deep.equal([\r\n\t\t\t['A', 'B', 'C', null],\r\n\t\t\t['D', null, null, null],\r\n\t\t\t[null, null, null, null],\r\n\t\t\t[null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n})"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,OAAO;AACpC,SAASC,MAAM,QAAQ,MAAM;AAE7B,OAAOC,gBAAgB,MAAM,uBAAuB;AAEpDH,QAAQ,CAAC,kBAAkB,EAAE,YAAM;EAClCC,EAAE,CAAC,6CAA6C,EAAE,YAAM;IACvDC,MAAM,CACLC,gBAAgB,CAAC,CAChB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACnC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACpC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CACjC,EAAE;MACFC,gBAAgB,EAAE;IACnB,CAAC,CACF,CAAC,CAACC,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAC3B,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC7B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC9B,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC3B,CAAC;EACH,CAAC,CAAC;EAEFN,EAAE,CAAC,2BAA2B,EAAE,YAAM;IACrCC,MAAM,CACLC,gBAAgB,CAAC,CAChB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACnC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACpC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CACjC,CACF,CAAC,CAACE,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EACrB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACvB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACxB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACrB,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropEmptyRows.test.js","names":["
|
|
1
|
+
{"version":3,"file":"dropEmptyRows.test.js","names":["describe","it","expect","dropEmptyRows","onlyTrimAtTheEnd","to","deep","equal","rowIndexSourceMap"],"sources":["../../source/xlsx/dropEmptyRows.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport dropEmptyRows from './dropEmptyRows.js'\r\n\r\ndescribe('dropEmptyRows', () => {\r\n\tit('should drop empty rows (only at the end)', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G'],\r\n\t\t\t\t[null, null, null]\r\n\t\t\t], {\r\n\t\t\t\tonlyTrimAtTheEnd: true\r\n\t\t\t})\r\n\t\t).to.deep.equal([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty rows', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G'],\r\n\t\t\t\t[null, null, null]\r\n\t\t\t])\r\n\t\t).to.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should generate row map when dropping empty rows', () => {\r\n\t\tconst rowIndexSourceMap = [0, 1, 2, 3, 4]\r\n\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G']\r\n\t\t\t],\r\n\t\t\t{ rowIndexSourceMap }\r\n\t\t)).to.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\r\n\t\texpect(rowIndexSourceMap).to.deep.equal([1, 2, 4])\r\n\t})\r\n})"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,OAAO;AACpC,SAASC,MAAM,QAAQ,MAAM;AAE7B,OAAOC,aAAa,MAAM,oBAAoB;AAE9CH,QAAQ,CAAC,eAAe,EAAE,YAAM;EAC/BC,EAAE,CAAC,0CAA0C,EAAE,YAAM;IACpDC,MAAM,CACLC,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClB,EAAE;MACFC,gBAAgB,EAAE;IACnB,CAAC,CACF,CAAC,CAACC,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;EACH,CAAC,CAAC;EAEFN,EAAE,CAAC,wBAAwB,EAAE,YAAM;IAClCC,MAAM,CACLC,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClB,CACF,CAAC,CAACE,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;EACH,CAAC,CAAC;EAEFN,EAAE,CAAC,kDAAkD,EAAE,YAAM;IAC5D,IAAMO,iBAAiB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzCN,MAAM,CACLC,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,EACD;MAAEK,iBAAiB,EAAjBA;IAAkB,CACrB,CAAC,CAAC,CAACH,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CAChB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;IAEFL,MAAM,CAACM,iBAAiB,CAAC,CAACH,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACnD,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseDate.test.js","names":["
|
|
1
|
+
{"version":3,"file":"parseDate.test.js","names":["describe","it","expect","parseDate","date","convertToUTCTimezone","Date","getTime","to","equal","getTimezoneOffset"],"sources":["../../source/xlsx/parseDate.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport parseDate from './parseDate.js'\r\n\r\ndescribe('parseDate', () => {\r\n\tit('should parse Excel \"serial\" dates', () => {\r\n\t\tconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24))\r\n // Excel stores dates as integers.\r\n // E.g. '24/03/2018' === 43183\r\n\t\texpect(parseDate(43183).getTime()).to.equal(date.getTime())\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,OAAO;AACpC,SAASC,MAAM,QAAQ,MAAM;AAE7B,OAAOC,SAAS,MAAM,gBAAgB;AAEtCH,QAAQ,CAAC,WAAW,EAAE,YAAM;EAC3BC,EAAE,CAAC,mCAAmC,EAAE,YAAM;IAC7C,IAAMG,IAAI,GAAGC,oBAAoB,CAAC,IAAIC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D;IACA;IACFJ,MAAM,CAACC,SAAS,CAAC,KAAK,CAAC,CAACI,OAAO,CAAC,CAAC,CAAC,CAACC,EAAE,CAACC,KAAK,CAACL,IAAI,CAACG,OAAO,CAAC,CAAC,CAAC;EAC5D,CAAC,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,SAASF,oBAAoBA,CAACD,IAAI,EAAE;EACnC;EACA;EACA;EACA;EACA;EACA;EACA,OAAO,IAAIE,IAAI,CAACF,IAAI,CAACG,OAAO,CAAC,CAAC,GAAGH,IAAI,CAACM,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapToObjects.test.js","names":["mapToObjects","parseArray","getBlock","Integer","URL","Email","date","convertToUTCTimezone","Date","describe","it","should","deep","equal","_mapToObjects","parse","getTimezoneOffset","column","type","number","Number","Boolean","string","String","phone","value","phoneType","rows","errors","toISOString","_mapToObjects2","_mapToObjects3","required","error","row","_mapToObjects4","ignoreEmptyRows","_mapToObjects5","_mapToObjects6","names","_mapToObjects7","_mapToObjects8","length","reason","_mapToObjects9","_mapToObjects10","_mapToObjects11","name","validate","Error","_mapToObjects12","_mapToObjects13","invalid","_mapToObjects14","_mapToObjects15","_mapToObjects16","rowIndexSourceMap","_mapToObjects17","status","oneOf","_mapToObjects18","_mapToObjects19","a","b","c","schema","_mapToObjects20","column1","column2","column4","column5","_mapToObjects21","schemaPropertyValueForMissingColumn","_mapToObjects22","_mapToObjects23","schemaPropertyValueForMissingValue","undefined","_mapToObjects24","_mapToObjects25","schemaPropertyValueForNullCellValue","_mapToObjects26","_mapToObjects27","_mapToObjects28","schemaPropertyShouldSkipRequiredValidationForMissingColumn","_mapToObjects29","getTime"],"sources":["../../../source/xlsx/schema/mapToObjects.test.js"],"sourcesContent":["import mapToObjects, { parseArray, getBlock } from './mapToObjects.js'\r\n\r\nimport Integer from '../../types/Integer.js'\r\nimport URL from '../../types/URL.js'\r\nimport Email from '../../types/Email.js'\r\n\r\nconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24))\r\n\r\ndescribe('mapToObjects', () => {\r\n\tit('should parse arrays', () => {\r\n\t\tgetBlock('abc\"de,f\"g,h', ',', 0).should.deep.equal(['abcde,fg', 10])\r\n\t\tparseArray(' abc\"de,f\"g , h ', ',').should.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n\r\n\tit('should convert to json', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING',\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t'123',\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc',\r\n\t\t\t\t'(123) 456-7890',\r\n\t\t\t\t'(123) 456-7890'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN',\r\n\t\t\t\ttype: Boolean\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String\r\n\t\t\t},\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tphone: '+11234567890',\r\n\t\t\tphoneType: '+11234567890',\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should support schema entries with no `type`s', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t123,\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE'\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER'\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN'\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING'\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should require fields when cell value is empty', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'STRING'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnumber: null,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows: false`', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse integers', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'INTEGER'\r\n\t\t\t], [\r\n\t\t\t\t'1'\r\n\t\t\t], [\r\n\t\t\t\t'1.2'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'INTEGER',\r\n\t\t\t\ttype: Integer\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].should.deep.equal({\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_integer',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INTEGER',\r\n\t\t\ttype: Integer,\r\n\t\t\tvalue: '1.2'\r\n\t\t})\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 1\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse URLs', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'URL'\r\n\t\t\t], [\r\n\t\t\t\t'https://kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'kremlin.ru'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'URL',\r\n\t\t\t\ttype: URL\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(3)\r\n\t\terrors[0].column.should.equal('URL')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 'https://kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse Emails', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'EMAIL'\r\n\t\t\t], [\r\n\t\t\t\t'vladimir.putin@kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'EMAIL',\r\n\t\t\t\ttype: Email\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(1)\r\n\t\terrors[0].row.should.equal(3)\r\n\t\terrors[0].column.should.equal('EMAIL')\r\n\t\terrors[0].error.should.equal('invalid')\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tvalue: 'vladimir.putin@kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAME'\r\n\t\t\t], [\r\n\t\t\t\t'George Bush'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tname: {\r\n\t\t\t\tcolumn: 'NAME',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidate: (value) => {\r\n\t\t\t\t\tif (value === 'George Bush') {\r\n\t\t\t\t\t\tthrow new Error('custom-error')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NAME',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'George Bush'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate booleans', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'TRUE',\r\n\t\t\t\t'FALSE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\t'TRUE'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\ttrue: {\r\n\t\t\t\tcolumn: 'TRUE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tfalse: {\r\n\t\t\t\tcolumn: 'FALSE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_boolean',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Boolean,\r\n\t\t\tvalue: 'TRUE'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\ttrue: true,\r\n\t\t\tfalse: false\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\t43183, // 03/24/2018',\r\n\t\t\t\t'-'\r\n\t\t\t], [\r\n\t\t\t\tdate, // 03/24/2018',,\r\n\t\t\t\t'-'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tdate\r\n\t\t}, {\r\n\t\t\tdate\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should throw parse() errors', () => {\r\n\t\tconst type = () => {\r\n\t\t\tthrow new Error('invalid')\r\n\t\t}\r\n\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\t'123',\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([null])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\trowIndexSourceMap: [2, 5]\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 6,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'STARTED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.length.should.equal(0)\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'SCHEDULED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'unknown',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'STATUS',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'SCHEDULED'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should not include `null` values by default', function() {\r\n\t\tconst { rows } = mapToObjects(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', 'ca', null],\r\n\t\t\t\t['a', null]\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\ta: {\r\n\t\t\t\t\tcolumn: 'A',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tb: {\r\n\t\t\t\t\tcolumn: 'B',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tc: {\r\n\t\t\t\t\tcolumn: 'C',\r\n \t\t\tschema: {\r\n\t\t\t\t\t\ta: {\r\n\t\t\t\t\t\t\tcolumn: 'CA',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tb: {\r\n\t\t\t\t\t\t\tcolumn: 'CB',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t\trows.should.deep.equal([\r\n\t\t\t{ a: 'a', b: 'b', c: { a: 'ca', b: null } },\r\n\t\t\t{ a: 'a', b: null, c: null },\r\n\t\t])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (default) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\t// Legacy behavior.\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14'\r\n\t\t}, {\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue: undefined`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingValue: undefined\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\t// column4: undefined,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn()` not specified) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true\r\n\t\t})\r\n\r\n\t\terrors.should.deep.equal([])\r\n\r\n\t\trows.should.deep.equal([{\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\tcolumn5: null\r\n\t\t}, {\r\n\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"AAAA,OAAOA,YAAY,IAAIC,UAAU,EAAEC,QAAQ,QAAQ,mBAAmB;AAEtE,OAAOC,OAAO,MAAM,wBAAwB;AAC5C,OAAOC,GAAG,MAAM,oBAAoB;AACpC,OAAOC,KAAK,MAAM,sBAAsB;AAExC,IAAMC,IAAI,GAAGC,oBAAoB,CAAC,IAAIC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAE5DC,QAAQ,CAAC,cAAc,EAAE,YAAM;EAC9BC,EAAE,CAAC,qBAAqB,EAAE,YAAM;IAC/BR,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,CAACS,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACpEZ,UAAU,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAACU,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;EAC1E,CAAC,CAAC;EAEFH,EAAE,CAAC,wBAAwB,EAAE,YAAM;IAClC,IAAAI,aAAA,GAAyBd,YAAY,CAAC,CACrC,CACC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,YAAY,CACZ,EAAE,CACF,IAAIQ,IAAI,CAACA,IAAI,CAACO,KAAK,CAAC,YAAY,CAAC,GAAG,IAAIP,IAAI,CAAC,CAAC,CAACQ,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;MAAE;MACjF,KAAK,EACL,IAAI,EACJ,KAAK,EACL,gBAAgB,EAChB,gBAAgB,CAChB,CACD,EAAE;QACFV,IAAI,EAAE;UACLW,MAAM,EAAE,MAAM;UACdC,IAAI,EAAEV;QACP,CAAC;QACDW,MAAM,EAAE;UACPF,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEE;QACP,CAAC;QACD,WAAS;UACRH,MAAM,EAAE,SAAS;UACjBC,IAAI,EAAEG;QACP,CAAC;QACDC,MAAM,EAAE;UACPL,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEK;QACP,CAAC;QACDC,KAAK,EAAE;UACNP,MAAM,EAAE,OAAO;UACfC,IAAI,WAAAA,KAACO,KAAK,EAAE;YACX,OAAO,cAAc;UACtB;QACD,CAAC;QACDC,SAAS,EAAE;UACVT,MAAM,EAAE,YAAY;UACpBC,IAAI,WAAAA,KAACO,KAAK,EAAE;YACX,OAAO,cAAc;UACtB;QACD;MACD,CAAC,CAAC;MA7CME,IAAI,GAAAb,aAAA,CAAJa,IAAI;MAAEC,MAAM,GAAAd,aAAA,CAANc,MAAM;IA+CpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;;IAE5B;IACAc,IAAI,CAAC,CAAC,CAAC,CAACrB,IAAI,GAAGqB,IAAI,CAAC,CAAC,CAAC,CAACrB,IAAI,CAACuB,WAAW,CAAC,CAAC;IAEzCF,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBP,IAAI,EAAEA,IAAI,CAACuB,WAAW,CAAC,CAAC;MACxBV,MAAM,EAAE,GAAG;MACXK,KAAK,EAAE,cAAc;MACrBE,SAAS,EAAE,cAAc;MACzB,WAAS,IAAI;MACbJ,MAAM,EAAE;IACT,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFZ,EAAE,CAAC,+CAA+C,EAAE,YAAM;IACzD,IAAAoB,cAAA,GAAyB9B,YAAY,CAAC,CACrC,CACC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,CACR,EAAE,CACF,IAAIQ,IAAI,CAACA,IAAI,CAACO,KAAK,CAAC,YAAY,CAAC,GAAG,IAAIP,IAAI,CAAC,CAAC,CAACQ,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;MAAE;MACjF,GAAG,EACH,IAAI,EACJ,KAAK,CACL,CACD,EAAE;QACFV,IAAI,EAAE;UACLW,MAAM,EAAE;QACT,CAAC;QACDE,MAAM,EAAE;UACPF,MAAM,EAAE;QACT,CAAC;QACD,WAAS;UACRA,MAAM,EAAE;QACT,CAAC;QACDK,MAAM,EAAE;UACPL,MAAM,EAAE;QACT;MACD,CAAC,CAAC;MAzBMU,IAAI,GAAAG,cAAA,CAAJH,IAAI;MAAEC,MAAM,GAAAE,cAAA,CAANF,MAAM;IA2BpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;;IAE5B;IACAc,IAAI,CAAC,CAAC,CAAC,CAACrB,IAAI,GAAGqB,IAAI,CAAC,CAAC,CAAC,CAACrB,IAAI,CAACuB,WAAW,CAAC,CAAC;IAEzCF,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBP,IAAI,EAAEA,IAAI,CAACuB,WAAW,CAAC,CAAC;MACxBV,MAAM,EAAE,GAAG;MACX,WAAS,IAAI;MACbG,MAAM,EAAE;IACT,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFZ,EAAE,CAAC,gDAAgD,EAAE,YAAM;IAC1D,IAAAqB,cAAA,GAAyB/B,YAAY,CAAC,CACrC,CACC,QAAQ,EACR,QAAQ,CACR,EACD,CACC,IAAI,EACJ,KAAK,CACL,CACD,EAAE;QACFmB,MAAM,EAAE;UACPF,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEE,MAAM;UACZY,QAAQ,EAAE;QACX,CAAC;QACDV,MAAM,EAAE;UACPL,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MApBML,IAAI,GAAAI,cAAA,CAAJJ,IAAI;MAAEC,MAAM,GAAAG,cAAA,CAANH,MAAM;IAsBpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBoB,KAAK,EAAE,UAAU;MACjBC,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,QAAQ;MAChBC,IAAI,EAAEE,MAAM;MACZK,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;IAEHE,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBM,MAAM,EAAE,IAAI;MACZG,MAAM,EAAE;IACT,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFZ,EAAE,CAAC,sGAAsG,EAAE,YAAM;IAChH,IAAAyB,cAAA,GAAyBnC,YAAY,CAAC,CACrC,CACC,QAAQ,CACR,EACD,CACC,IAAI,CACJ,CACD,EAAE;QACFmB,MAAM,EAAE;UACPF,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEE,MAAM;UACZY,QAAQ,EAAE;QACX;MACD,CAAC,EAAE;QACFI,eAAe,EAAE;MAClB,CAAC,CAAC;MAfMT,IAAI,GAAAQ,cAAA,CAAJR,IAAI;MAAEC,MAAM,GAAAO,cAAA,CAANP,MAAM;IAiBpBD,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;EAC/B,CAAC,CAAC;EAEFH,EAAE,CAAC,8GAA8G,EAAE,YAAM;IACxH,IAAA2B,cAAA,GAAyBrC,YAAY,CAAC,CACrC,CACC,QAAQ,CACR,EACD,CACC,IAAI,CACJ,CACD,EAAE;QACFmB,MAAM,EAAE;UACPF,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEE,MAAM;UACZY,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MAbML,IAAI,GAAAU,cAAA,CAAJV,IAAI;MAAEC,MAAM,GAAAS,cAAA,CAANT,MAAM;IAepBD,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;EAC3B,CAAC,CAAC;EAEFH,EAAE,CAAC,gDAAgD,EAAE,YAAM;IAC1D,IAAA4B,cAAA,GAAyBtC,YAAY,CAAC,CACrC,CACC,OAAO,CACP,EAAE,CACF,oDAAoD,CACpD,EAAE,CACF,IAAI,CACJ,CACD,EAAE;QACFuC,KAAK,EAAE;UACNtB,MAAM,EAAE,OAAO;UACfC,IAAI,EAAE,CAACK,MAAM;QACd;MACD,CAAC,EAAE;QACFa,eAAe,EAAE;MAClB,CAAC,CAAC;MAfMT,IAAI,GAAAW,cAAA,CAAJX,IAAI;MAAEC,MAAM,GAAAU,cAAA,CAANV,MAAM;IAiBpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAE5Bc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvB0B,KAAK,EAAE,CAAC,cAAc,EAAE,sBAAsB,EAAE,cAAc;IAC/D,CAAC,EAAE,IAAI,CAAC,CAAC;EACV,CAAC,CAAC;EAEF7B,EAAE,CAAC,uDAAuD,EAAE,YAAM;IACjE,IAAA8B,cAAA,GAAyBxC,YAAY,CAAC,CACrC,CACC,OAAO,CACP,EAAE,CACF,oDAAoD,CACpD,EAAE,CACF,IAAI,CACJ,CACD,EAAE;QACFuC,KAAK,EAAE;UACNtB,MAAM,EAAE,OAAO;UACfC,IAAI,EAAE,CAACK,MAAM;QACd;MACD,CAAC,CAAC;MAbMI,IAAI,GAAAa,cAAA,CAAJb,IAAI;MAAEC,MAAM,GAAAY,cAAA,CAANZ,MAAM;IAepBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAE5Bc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvB0B,KAAK,EAAE,CAAC,cAAc,EAAE,sBAAsB,EAAE,cAAc;IAC/D,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF7B,EAAE,CAAC,uBAAuB,EAAE,YAC5B;IACC,IAAA+B,cAAA,GAAyBzC,YAAY,CAAC,CACrC,CACC,SAAS,CACT,EAAE,CACF,GAAG,CACH,EAAE,CACF,KAAK,CACL,CACD,EAAE;QACFyB,KAAK,EAAE;UACNR,MAAM,EAAE,SAAS;UACjBC,IAAI,EAAEf;QACP;MACD,CAAC,CAAC;MAbMwB,IAAI,GAAAc,cAAA,CAAJd,IAAI;MAAEC,MAAM,GAAAa,cAAA,CAANb,MAAM;IAepBA,MAAM,CAACc,MAAM,CAAC/B,MAAM,CAACE,KAAK,CAAC,CAAC,CAAC;IAC7Be,MAAM,CAAC,CAAC,CAAC,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC;MAC3BoB,KAAK,EAAE,SAAS;MAChBU,MAAM,EAAE,gBAAgB;MACxBT,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,SAAS;MACjBC,IAAI,EAAEf,OAAO;MACbsB,KAAK,EAAE;IACR,CAAC,CAAC;IAEFE,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBY,KAAK,EAAE;IACR,CAAC,EAAE,IAAI,CAAC,CAAC;EACV,CAAC,CAAC;EAEFf,EAAE,CAAC,mBAAmB,EAAE,YACxB;IACC,IAAAkC,cAAA,GAAyB5C,YAAY,CAAC,CACrC,CACC,KAAK,CACL,EAAE,CACF,oBAAoB,CACpB,EAAE,CACF,YAAY,CACZ,CACD,EAAE;QACFyB,KAAK,EAAE;UACNR,MAAM,EAAE,KAAK;UACbC,IAAI,EAAEd;QACP;MACD,CAAC,CAAC;MAbMuB,IAAI,GAAAiB,cAAA,CAAJjB,IAAI;MAAEC,MAAM,GAAAgB,cAAA,CAANhB,MAAM;IAepBA,MAAM,CAACc,MAAM,CAAC/B,MAAM,CAACE,KAAK,CAAC,CAAC,CAAC;IAC7Be,MAAM,CAAC,CAAC,CAAC,CAACM,GAAG,CAACvB,MAAM,CAACE,KAAK,CAAC,CAAC,CAAC;IAC7Be,MAAM,CAAC,CAAC,CAAC,CAACX,MAAM,CAACN,MAAM,CAACE,KAAK,CAAC,KAAK,CAAC;IACpCe,MAAM,CAAC,CAAC,CAAC,CAACK,KAAK,CAACtB,MAAM,CAACE,KAAK,CAAC,SAAS,CAAC;IAEvCc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBY,KAAK,EAAE;IACR,CAAC,EAAE,IAAI,CAAC,CAAC;EACV,CAAC,CAAC;EAEFf,EAAE,CAAC,qBAAqB,EAAE,YAC1B;IACC,IAAAmC,eAAA,GAAyB7C,YAAY,CAAC,CACrC,CACC,OAAO,CACP,EAAE,CACF,2BAA2B,CAC3B,EAAE,CACF,KAAK,CACL,CACD,EAAE;QACFyB,KAAK,EAAE;UACNR,MAAM,EAAE,OAAO;UACfC,IAAI,EAAEb;QACP;MACD,CAAC,CAAC;MAbMsB,IAAI,GAAAkB,eAAA,CAAJlB,IAAI;MAAEC,MAAM,GAAAiB,eAAA,CAANjB,MAAM;IAepBA,MAAM,CAACc,MAAM,CAAC/B,MAAM,CAACE,KAAK,CAAC,CAAC,CAAC;IAC7Be,MAAM,CAAC,CAAC,CAAC,CAACM,GAAG,CAACvB,MAAM,CAACE,KAAK,CAAC,CAAC,CAAC;IAC7Be,MAAM,CAAC,CAAC,CAAC,CAACX,MAAM,CAACN,MAAM,CAACE,KAAK,CAAC,OAAO,CAAC;IACtCe,MAAM,CAAC,CAAC,CAAC,CAACK,KAAK,CAACtB,MAAM,CAACE,KAAK,CAAC,SAAS,CAAC;IAEvCc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBY,KAAK,EAAE;IACR,CAAC,EAAE,IAAI,CAAC,CAAC;EACV,CAAC,CAAC;EAEFf,EAAE,CAAC,yBAAyB,EAAE,YAAM;IACnC,IAAAoC,eAAA,GAAyB9C,YAAY,CAAC,CACrC,CACC,MAAM,CACN,EAAE,CACF,aAAa,CACb,CACD,EAAE;QACF+C,IAAI,EAAE;UACL9B,MAAM,EAAE,MAAM;UACdC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE,IAAI;UACdgB,QAAQ,EAAE,SAAAA,SAACvB,KAAK,EAAK;YACpB,IAAIA,KAAK,KAAK,aAAa,EAAE;cAC5B,MAAM,IAAIwB,KAAK,CAAC,cAAc,CAAC;YAChC;UACD;QACD;MACD,CAAC,CAAC;MAjBMtB,IAAI,GAAAmB,eAAA,CAAJnB,IAAI;MAAEC,MAAM,GAAAkB,eAAA,CAANlB,MAAM;IAmBpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBoB,KAAK,EAAE,cAAc;MACrBC,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,MAAM;MACdC,IAAI,EAAEK,MAAM;MACZE,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;IAEHE,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;EAC/B,CAAC,CAAC;EAEFH,EAAE,CAAC,yBAAyB,EAAE,YAAM;IACnC,IAAAwC,eAAA,GAAyBlD,YAAY,CAAC,CACrC,CACC,QAAQ,CACR,EAAE,CACF,QAAQ,CACR,CACD,EAAE;QACFmB,MAAM,EAAE;UACPF,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEE,MAAM;UACZY,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MAZML,IAAI,GAAAuB,eAAA,CAAJvB,IAAI;MAAEC,MAAM,GAAAsB,eAAA,CAANtB,MAAM;IAcpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBoB,KAAK,EAAE,SAAS;MAChBU,MAAM,EAAE,cAAc;MACtBT,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,QAAQ;MAChBC,IAAI,EAAEE,MAAM;MACZK,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;IAEHE,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;EAC/B,CAAC,CAAC;EAEFH,EAAE,CAAC,0BAA0B,EAAE,YAAM;IACpC,IAAAyC,eAAA,GAAyBnD,YAAY,CAAC,CACrC,CACC,MAAM,EACN,OAAO,EACP,SAAS,CACT,EAAE,CACF,IAAI,EACJ,KAAK,EACL,MAAM,CACN,CACD,EAAE;QACF,QAAM;UACLiB,MAAM,EAAE,MAAM;UACdC,IAAI,EAAEG,OAAO;UACbW,QAAQ,EAAE;QACX,CAAC;QACD,SAAO;UACNf,MAAM,EAAE,OAAO;UACfC,IAAI,EAAEG,OAAO;UACbW,QAAQ,EAAE;QACX,CAAC;QACDoB,OAAO,EAAE;UACRnC,MAAM,EAAE,SAAS;UACjBC,IAAI,EAAEG,OAAO;UACbW,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MA1BML,IAAI,GAAAwB,eAAA,CAAJxB,IAAI;MAAEC,MAAM,GAAAuB,eAAA,CAANvB,MAAM;IA4BpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBoB,KAAK,EAAE,SAAS;MAChBU,MAAM,EAAE,eAAe;MACvBT,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,SAAS;MACjBC,IAAI,EAAEG,OAAO;MACbI,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;IAEHE,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvB,QAAM,IAAI;MACV,SAAO;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFH,EAAE,CAAC,uBAAuB,EAAE,YAAM;IACjC,IAAA2C,eAAA,GAAyBrD,YAAY,CAAC,CACrC,CACC,MAAM,EACN,SAAS,CACT,EAAE,CACF,KAAK;MAAE;MACP,GAAG,CACH,EAAE,CACFM,IAAI;MAAE;MACN,GAAG,CACH,CACD,EAAE;QACFA,IAAI,EAAE;UACLW,MAAM,EAAE,MAAM;UACdC,IAAI,EAAEV,IAAI;UACVwB,QAAQ,EAAE;QACX,CAAC;QACDoB,OAAO,EAAE;UACRnC,MAAM,EAAE,SAAS;UACjBC,IAAI,EAAEV,IAAI;UACVwB,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MAtBML,IAAI,GAAA0B,eAAA,CAAJ1B,IAAI;MAAEC,MAAM,GAAAyB,eAAA,CAANzB,MAAM;IAwBpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBoB,KAAK,EAAE,SAAS;MAChBU,MAAM,EAAE,YAAY;MACpBT,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,SAAS;MACjBC,IAAI,EAAEV,IAAI;MACViB,KAAK,EAAE;IACR,CAAC,EAAE;MACFQ,KAAK,EAAE,SAAS;MAChBU,MAAM,EAAE,YAAY;MACpBT,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,SAAS;MACjBC,IAAI,EAAEV,IAAI;MACViB,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;IAEHE,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBP,IAAI,EAAJA;IACD,CAAC,EAAE;MACFA,IAAI,EAAJA;IACD,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFI,EAAE,CAAC,6BAA6B,EAAE,YAAM;IACvC,IAAMQ,IAAI,GAAG,SAAPA,IAAIA,CAAA,EAAS;MAClB,MAAM,IAAI+B,KAAK,CAAC,SAAS,CAAC;IAC3B,CAAC;IAED,IAAAK,eAAA,GAAyBtD,YAAY,CAAC,CACrC,CACC,OAAO,EACP,YAAY,CACZ,EAAE,CACF,KAAK,EACL,KAAK,CACL,CACD,EAAE;QACFwB,KAAK,EAAE;UACNP,MAAM,EAAE,OAAO;UACfC,IAAI,EAAJA;QACD,CAAC;QACDQ,SAAS,EAAE;UACVT,MAAM,EAAE,YAAY;UACpBC,IAAI,EAAJA;QACD;MACD,CAAC,CAAC;MAjBMS,IAAI,GAAA2B,eAAA,CAAJ3B,IAAI;MAAEC,MAAM,GAAA0B,eAAA,CAAN1B,MAAM;IAmBpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBoB,KAAK,EAAE,SAAS;MAChBC,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,OAAO;MACfQ,KAAK,EAAE,KAAK;MACZP,IAAI,EAAJA;IACD,CAAC,EAAE;MACFe,KAAK,EAAE,SAAS;MAChBC,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,YAAY;MACpBQ,KAAK,EAAE,KAAK;MACZP,IAAI,EAAJA;IACD,CAAC,CAAC,CAAC;IAEHS,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;EAC/B,CAAC,CAAC;EAEFH,EAAE,CAAC,wBAAwB,EAAE,YAAM;IAClC,IAAA6C,eAAA,GAAyBvD,YAAY,CAAC,CACrC,CACC,QAAQ,CACR,EAAE,CACF,QAAQ,CACR,CACD,EAAE;QACFmB,MAAM,EAAE;UACPF,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEE;QACP;MACD,CAAC,EAAE;QACFoC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;MACzB,CAAC,CAAC;MAbM7B,IAAI,GAAA4B,eAAA,CAAJ5B,IAAI;MAAEC,MAAM,GAAA2B,eAAA,CAAN3B,MAAM;IAepBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBoB,KAAK,EAAE,SAAS;MAChBU,MAAM,EAAE,cAAc;MACtBT,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,QAAQ;MAChBC,IAAI,EAAEE,MAAM;MACZK,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFf,EAAE,CAAC,iCAAiC,EAAE,YAAM;IAC3C,IAAA+C,eAAA,GAAyBzD,YAAY,CAAC,CACrC,CACC,QAAQ,CACR,EACD,CACC,SAAS,CACT,CACD,EAAE;QACF0D,MAAM,EAAE;UACPzC,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEK,MAAM;UACZoC,KAAK,EAAE,CACN,SAAS,EACT,UAAU;QAEZ;MACD,CAAC,CAAC;MAhBMhC,IAAI,GAAA8B,eAAA,CAAJ9B,IAAI;MAAEC,MAAM,GAAA6B,eAAA,CAAN7B,MAAM;IAkBpBA,MAAM,CAACc,MAAM,CAAC/B,MAAM,CAACE,KAAK,CAAC,CAAC,CAAC;EAC9B,CAAC,CAAC;EAEFH,EAAE,CAAC,qCAAqC,EAAE,YAAM;IAC/C,IAAAkD,eAAA,GAAyB5D,YAAY,CAAC,CACrC,CACC,QAAQ,CACR,EACD,CACC,WAAW,CACX,CACD,EAAE;QACF0D,MAAM,EAAE;UACPzC,MAAM,EAAE,QAAQ;UAChBC,IAAI,EAAEK,MAAM;UACZoC,KAAK,EAAE,CACN,SAAS,EACT,UAAU;QAEZ;MACD,CAAC,CAAC;MAhBMhC,IAAI,GAAAiC,eAAA,CAAJjC,IAAI;MAAEC,MAAM,GAAAgC,eAAA,CAANhC,MAAM;IAkBpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBoB,KAAK,EAAE,SAAS;MAChBU,MAAM,EAAE,SAAS;MACjBT,GAAG,EAAE,CAAC;MACNjB,MAAM,EAAE,QAAQ;MAChBC,IAAI,EAAEK,MAAM;MACZE,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFf,EAAE,CAAC,6CAA6C,EAAE,YAAW;IAC5D,IAAAmD,eAAA,GAAiB7D,YAAY,CAC5B,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;QACC8D,CAAC,EAAE;UACF7C,MAAM,EAAE,GAAG;UACXC,IAAI,EAAEK;QACP,CAAC;QACDwC,CAAC,EAAE;UACF9C,MAAM,EAAE,GAAG;UACXC,IAAI,EAAEK;QACP,CAAC;QACDyC,CAAC,EAAE;UACF/C,MAAM,EAAE,GAAG;UACTgD,MAAM,EAAE;YACTH,CAAC,EAAE;cACF7C,MAAM,EAAE,IAAI;cACZC,IAAI,EAAEK;YACP,CAAC;YACDwC,CAAC,EAAE;cACF9C,MAAM,EAAE,IAAI;cACZC,IAAI,EAAEK;YACP;UACD;QACD;MACD,CACD,CAAC;MA7BOI,IAAI,GAAAkC,eAAA,CAAJlC,IAAI;IA+BZA,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CACtB;MAAEiD,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE;QAAEF,CAAC,EAAE,IAAI;QAAEC,CAAC,EAAE;MAAK;IAAE,CAAC,EAC3C;MAAED,CAAC,EAAE,GAAG;MAAEC,CAAC,EAAE,IAAI;MAAEC,CAAC,EAAE;IAAK,CAAC,CAC5B,CAAC;EACH,CAAC,CAAC;EAEFtD,EAAE,CAAC,2EAA2E,EAAE,YAAM;IACrF,IAAAwD,eAAA,GAAyBlE,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MAnCML,IAAI,GAAAuC,eAAA,CAAJvC,IAAI;MAAEC,MAAM,GAAAsC,eAAA,CAANtC,MAAM;IAqCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;;IAE5B;IACAc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBuD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,EAAE;MACFD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF3D,EAAE,CAAC,+GAA+G,EAAE,YAAM;IACzH,IAAA6D,eAAA,GAAyBvE,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,EAAE;QACFwC,mCAAmC,EAAE;MACtC,CAAC,CAAC;MArCM7C,IAAI,GAAA4C,eAAA,CAAJ5C,IAAI;MAAEC,MAAM,GAAA2C,eAAA,CAAN3C,MAAM;IAuCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAE5Bc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBsD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,EAAE;MACFH,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF5D,EAAE,CAAC,6HAA6H,EAAE,YAAM;IACvI,IAAA+D,eAAA,GAAyBzE,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MAnCML,IAAI,GAAA8C,eAAA,CAAJ9C,IAAI;MAAEC,MAAM,GAAA6C,eAAA,CAAN7C,MAAM;IAqCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAE5Bc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvB;MACAuD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;MACT;IACD,CAAC,EAAE;MACF;MACAD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;MACT;IACD,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;;EAEF3D,EAAE,CAAC,mHAAmH,EAAE,YAAM;IAC7H,IAAAgE,eAAA,GAAyB1E,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,EAAE;QACF2C,kCAAkC,EAAEC;MACrC,CAAC,CAAC;MArCMjD,IAAI,GAAA+C,eAAA,CAAJ/C,IAAI;MAAEC,MAAM,GAAA8C,eAAA,CAAN9C,MAAM;IAuCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAE5Bc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvB;MACAuD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;MACT;IACD,CAAC,EAAE;MACF;MACAD,OAAO,EAAE;MACT;MACA;IACD,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;;EAEF1D,EAAE,CAAC,8HAA8H,EAAE,YAAM;IACxI,IAAAmE,eAAA,GAAyB7E,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,CAAC;MAnCML,IAAI,GAAAkD,eAAA,CAAJlD,IAAI;MAAEC,MAAM,GAAAiD,eAAA,CAANjD,MAAM;IAqCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAE5Bc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvB;MACAuD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;MACT;IACD,CAAC,EAAE;MACF;MACAD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;MACT;IACD,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;;EAEF3D,EAAE,CAAC,+GAA+G,EAAE,YAAM;IACzH,IAAAoE,eAAA,GAAyB9E,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,EAAE;QACF+C,mCAAmC,EAAE;MACtC,CAAC,CAAC;MArCMpD,IAAI,GAAAmD,eAAA,CAAJnD,IAAI;MAAEC,MAAM,GAAAkD,eAAA,CAANlD,MAAM;IAuCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAE5Bc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvB;MACAuD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;MACT;IACD,CAAC,EAAE;MACF;MACAD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;MACT;IACD,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;;EAEF3D,EAAE,CAAC,+JAA+J,EAAE,YAAM;IACzK,IAAAsE,eAAA,GAAyBhF,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,EAAE;QACFwC,mCAAmC,EAAE,IAAI;QACzCO,mCAAmC,EAAE;MACtC,CAAC,CAAC;MAtCMpD,IAAI,GAAAqD,eAAA,CAAJrD,IAAI;MAAEC,MAAM,GAAAoD,eAAA,CAANpD,MAAM;IAwCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAE5Bc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBsD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,EAAE;MACFH,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF5D,EAAE,CAAC,+OAA+O,EAAE,YAAM;IACzP,IAAAuE,eAAA,GAAyBjF,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,EAAE;QACFwC,mCAAmC,EAAE,IAAI;QACzCO,mCAAmC,EAAE;MACtC,CAAC,CAAC;MAtCMpD,IAAI,GAAAsD,eAAA,CAAJtD,IAAI;MAAEC,MAAM,GAAAqD,eAAA,CAANrD,MAAM;IAwCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBI,MAAM,EAAE,UAAU;MAClBgB,KAAK,EAAE,UAAU;MACjBC,GAAG,EAAE,CAAC;MACNhB,IAAI,EAAEK,MAAM;MACZE,KAAK,EAAE;IACR,CAAC,EAAE;MACFR,MAAM,EAAE,UAAU;MAClBgB,KAAK,EAAE,UAAU;MACjBC,GAAG,EAAE,CAAC;MACNhB,IAAI,EAAEK,MAAM;MACZE,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;IAEHE,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBsD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,EAAE;MACFH,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF5D,EAAE,CAAC,4OAA4O,EAAE,YAAM;IACtP,IAAAwE,eAAA,GAAyBlF,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,EAAE;QACFwC,mCAAmC,EAAE,IAAI;QACzCO,mCAAmC,EAAE,IAAI;QACzCI,0DAA0D,EAAE,SAAAA,2DAAA;UAAA,OAAM,KAAK;QAAA;MACxE,CAAC,CAAC;MAvCMxD,IAAI,GAAAuD,eAAA,CAAJvD,IAAI;MAAEC,MAAM,GAAAsD,eAAA,CAANtD,MAAM;IAyCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACzBI,MAAM,EAAE,UAAU;MAClBgB,KAAK,EAAE,UAAU;MACjBC,GAAG,EAAE,CAAC;MACNhB,IAAI,EAAEK,MAAM;MACZE,KAAK,EAAE;IACR,CAAC,EAAE;MACFR,MAAM,EAAE,UAAU;MAClBgB,KAAK,EAAE,UAAU;MACjBC,GAAG,EAAE,CAAC;MACNhB,IAAI,EAAEK,MAAM;MACZE,KAAK,EAAE;IACR,CAAC,CAAC,CAAC;IAEHE,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBsD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,EAAE;MACFH,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF5D,EAAE,CAAC,2OAA2O,EAAE,YAAM;IACrP,IAAA0E,eAAA,GAAyBpF,YAAY,CAAC,CACrC,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;QACFmE,OAAO,EAAE;UACRlD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDoC,OAAO,EAAE;UACRnD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDqC,OAAO,EAAE;UACRpD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX,CAAC;QACDsC,OAAO,EAAE;UACRrD,MAAM,EAAE,UAAU;UAClBC,IAAI,EAAEK,MAAM;UACZS,QAAQ,EAAE;QACX;MACD,CAAC,EAAE;QACFwC,mCAAmC,EAAE,IAAI;QACzCO,mCAAmC,EAAE,IAAI;QACzCI,0DAA0D,EAAE,SAAAA,2DAAA;UAAA,OAAM,IAAI;QAAA;MACvE,CAAC,CAAC;MAvCMxD,IAAI,GAAAyD,eAAA,CAAJzD,IAAI;MAAEC,MAAM,GAAAwD,eAAA,CAANxD,MAAM;IAyCpBA,MAAM,CAACjB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAE5Bc,IAAI,CAAChB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;MACvBsD,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,EAAE;MACFH,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACV,CAAC,CAAC,CAAC;EACJ,CAAC,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,SAAS/D,oBAAoBA,CAACD,IAAI,EAAE;EACnC;EACA;EACA;EACA;EACA;EACA;EACA,OAAO,IAAIE,IAAI,CAACF,IAAI,CAAC+E,OAAO,CAAC,CAAC,GAAG/E,IAAI,CAACU,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvE"}
|
|
1
|
+
{"version":3,"file":"mapToObjects.test.js","names":["describe","it","expect","mapToObjects","parseArray","getBlock","Integer","URL","Email","date","convertToUTCTimezone","Date","to","deep","equal","_mapToObjects","parse","getTimezoneOffset","column","type","number","Number","Boolean","string","String","phone","value","phoneType","rows","errors","toISOString","_mapToObjects2","_mapToObjects3","required","error","row","_mapToObjects4","ignoreEmptyRows","_mapToObjects5","_mapToObjects6","names","_mapToObjects7","_mapToObjects8","length","reason","_mapToObjects9","_mapToObjects10","_mapToObjects11","name","validate","Error","_mapToObjects12","_mapToObjects13","invalid","_mapToObjects14","_mapToObjects15","_mapToObjects16","rowIndexSourceMap","_mapToObjects17","status","oneOf","_mapToObjects18","_mapToObjects19","a","b","c","schema","_mapToObjects20","column1","column2","column4","column5","_mapToObjects21","schemaPropertyValueForMissingColumn","_mapToObjects22","_mapToObjects23","schemaPropertyValueForMissingValue","undefined","_mapToObjects24","_mapToObjects25","schemaPropertyValueForNullCellValue","_mapToObjects26","_mapToObjects27","_mapToObjects28","schemaPropertyShouldSkipRequiredValidationForMissingColumn","_mapToObjects29","getTime"],"sources":["../../../source/xlsx/schema/mapToObjects.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport mapToObjects, { parseArray, getBlock } from './mapToObjects.js'\r\n\r\nimport Integer from '../../types/Integer.js'\r\nimport URL from '../../types/URL.js'\r\nimport Email from '../../types/Email.js'\r\n\r\nconst date = convertToUTCTimezone(new Date(2018, 3 - 1, 24))\r\n\r\ndescribe('mapToObjects', () => {\r\n\tit('should parse arrays', () => {\r\n\t\texpect(getBlock('abc\"de,f\"g,h', ',', 0)).to.deep.equal(['abcde,fg', 10])\r\n\t\texpect(parseArray(' abc\"de,f\"g , h ', ',')).to.deep.equal(['abcde,fg', 'h'])\r\n\t})\r\n\r\n\tit('should convert to json', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING',\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t'123',\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc',\r\n\t\t\t\t'(123) 456-7890',\r\n\t\t\t\t'(123) 456-7890'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN',\r\n\t\t\t\ttype: Boolean\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String\r\n\t\t\t},\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tphone: '+11234567890',\r\n\t\t\tphoneType: '+11234567890',\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should support schema entries with no `type`s', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'BOOLEAN',\r\n\t\t\t\t'STRING'\r\n\t\t\t], [\r\n\t\t\t\tnew Date(Date.parse('03/24/2018') - new Date().getTimezoneOffset() * 60 * 1000), // '43183', // '03/24/2018',\r\n\t\t\t\t123,\r\n\t\t\t\ttrue,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE'\r\n\t\t\t},\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER'\r\n\t\t\t},\r\n\t\t\tboolean: {\r\n\t\t\t\tcolumn: 'BOOLEAN'\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING'\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\t// Convert `Date` to `String` for equality check.\r\n\t\trows[0].date = rows[0].date.toISOString()\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tdate: date.toISOString(),\r\n\t\t\tnumber: 123,\r\n\t\t\tboolean: true,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should require fields when cell value is empty', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER',\r\n\t\t\t\t'STRING'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull,\r\n\t\t\t\t'abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tstring: {\r\n\t\t\t\tcolumn: 'STRING',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tnumber: null,\r\n\t\t\tstring: 'abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows: false`', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\texpect(rows).to.deep.equal([null])\r\n\t})\r\n\r\n\tit('shouldn\\'t require fields when cell value is empty and object is empty too (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(rows).to.deep.equal([])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tignoreEmptyRows: false\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse arrays (`ignoreEmptyRows` not specified)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAMES'\r\n\t\t\t], [\r\n\t\t\t\t'Barack Obama, \"String, with, colons\", Donald Trump'\r\n\t\t\t], [\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnames: {\r\n\t\t\t\tcolumn: 'NAMES',\r\n\t\t\t\ttype: [String]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tnames: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should parse integers', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'INTEGER'\r\n\t\t\t], [\r\n\t\t\t\t'1'\r\n\t\t\t], [\r\n\t\t\t\t'1.2'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'INTEGER',\r\n\t\t\t\ttype: Integer\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors.length).to.equal(1)\r\n\t\texpect(errors[0]).to.deep.equal({\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_an_integer',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INTEGER',\r\n\t\t\ttype: Integer,\r\n\t\t\tvalue: '1.2'\r\n\t\t})\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tvalue: 1\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse URLs', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'URL'\r\n\t\t\t], [\r\n\t\t\t\t'https://kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'kremlin.ru'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'URL',\r\n\t\t\t\ttype: URL\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors.length).to.equal(1)\r\n\t\texpect(errors[0].row).to.equal(3)\r\n\t\texpect(errors[0].column).to.equal('URL')\r\n\t\texpect(errors[0].error).to.equal('invalid')\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tvalue: 'https://kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should parse Emails', () =>\r\n\t{\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'EMAIL'\r\n\t\t\t], [\r\n\t\t\t\t'vladimir.putin@kremlin.ru'\r\n\t\t\t], [\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tvalue: {\r\n\t\t\t\tcolumn: 'EMAIL',\r\n\t\t\t\ttype: Email\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors.length).to.equal(1)\r\n\t\texpect(errors[0].row).to.equal(3)\r\n\t\texpect(errors[0].column).to.equal('EMAIL')\r\n\t\texpect(errors[0].error).to.equal('invalid')\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tvalue: 'vladimir.putin@kremlin.ru'\r\n\t\t}, null])\r\n\t})\r\n\r\n\tit('should call .validate()', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NAME'\r\n\t\t\t], [\r\n\t\t\t\t'George Bush'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tname: {\r\n\t\t\t\tcolumn: 'NAME',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidate: (value) => {\r\n\t\t\t\t\tif (value === 'George Bush') {\r\n\t\t\t\t\t\tthrow new Error('custom-error')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'custom-error',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NAME',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'George Bush'\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([null])\r\n\t})\r\n\r\n\tit('should validate booleans', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'TRUE',\r\n\t\t\t\t'FALSE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\t'TRUE'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\ttrue: {\r\n\t\t\t\tcolumn: 'TRUE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tfalse: {\r\n\t\t\t\tcolumn: 'FALSE',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_boolean',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Boolean,\r\n\t\t\tvalue: 'TRUE'\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\ttrue: true,\r\n\t\t\tfalse: false\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate dates', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'DATE',\r\n\t\t\t\t'INVALID'\r\n\t\t\t], [\r\n\t\t\t\t43183, // 03/24/2018',\r\n\t\t\t\t'-'\r\n\t\t\t], [\r\n\t\t\t\tdate, // 03/24/2018',,\r\n\t\t\t\t'-'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'DATE',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tinvalid: {\r\n\t\t\t\tcolumn: 'INVALID',\r\n\t\t\t\ttype: Date,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_date',\r\n\t\t\trow: 3,\r\n\t\t\tcolumn: 'INVALID',\r\n\t\t\ttype: Date,\r\n\t\t\tvalue: '-'\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tdate\r\n\t\t}, {\r\n\t\t\tdate\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should throw parse() errors', () => {\r\n\t\tconst type = () => {\r\n\t\t\tthrow new Error('invalid')\r\n\t\t}\r\n\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'PHONE',\r\n\t\t\t\t'PHONE_TYPE'\r\n\t\t\t], [\r\n\t\t\t\t'123',\r\n\t\t\t\t'123'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tphone: {\r\n\t\t\t\tcolumn: 'PHONE',\r\n\t\t\t\ttype\r\n\t\t\t},\r\n\t\t\tphoneType: {\r\n\t\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\t\ttype\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}, {\r\n\t\t\terror: 'invalid',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'PHONE_TYPE',\r\n\t\t\tvalue: '123',\r\n\t\t\ttype\r\n\t\t}])\r\n\r\n\t\texpect(rows).to.deep.equal([null])\r\n\t})\r\n\r\n\tit('should map row numbers', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'NUMBER'\r\n\t\t\t], [\r\n\t\t\t\t'123abc'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tnumber: {\r\n\t\t\t\tcolumn: 'NUMBER',\r\n\t\t\t\ttype: Number\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\trowIndexSourceMap: [2, 5]\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'not_a_number',\r\n\t\t\trow: 6,\r\n\t\t\tcolumn: 'NUMBER',\r\n\t\t\ttype: Number,\r\n\t\t\tvalue: '123abc'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'STARTED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors.length).to.equal(0)\r\n\t})\r\n\r\n\tit('should validate \"oneOf\" (not valid)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'STATUS'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'SCHEDULED'\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tstatus: {\r\n\t\t\t\tcolumn: 'STATUS',\r\n\t\t\t\ttype: String,\r\n\t\t\t\toneOf: [\r\n\t\t\t\t\t'STARTED',\r\n\t\t\t\t\t'FINISHED'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\terror: 'invalid',\r\n\t\t\treason: 'unknown',\r\n\t\t\trow: 2,\r\n\t\t\tcolumn: 'STATUS',\r\n\t\t\ttype: String,\r\n\t\t\tvalue: 'SCHEDULED'\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should not include `null` values by default', function() {\r\n\t\tconst { rows } = mapToObjects(\r\n\t\t\t[\r\n\t\t\t\t['A', 'B', 'CA', 'CB'],\r\n\t\t\t\t['a', 'b', 'ca', null],\r\n\t\t\t\t['a', null]\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\ta: {\r\n\t\t\t\t\tcolumn: 'A',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tb: {\r\n\t\t\t\t\tcolumn: 'B',\r\n\t\t\t\t\ttype: String\r\n\t\t\t\t},\r\n\t\t\t\tc: {\r\n\t\t\t\t\tcolumn: 'C',\r\n \t\t\tschema: {\r\n\t\t\t\t\t\ta: {\r\n\t\t\t\t\t\t\tcolumn: 'CA',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tb: {\r\n\t\t\t\t\t\t\tcolumn: 'CB',\r\n\t\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t\texpect(rows).to.deep.equal([\r\n\t\t\t{ a: 'a', b: 'b', c: { a: 'ca', b: null } },\r\n\t\t\t{ a: 'a', b: null, c: null },\r\n\t\t])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (default) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\t// Legacy behavior.\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14'\r\n\t\t}, {\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingValue: undefined`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingValue: undefined\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\t// column4: undefined,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn` option is not passed) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).to.deep.equal([{\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '12',\r\n\t\t\tcolumn4: '14',\r\n\t\t\t// column5: undefined\r\n\t\t}, {\r\n\t\t\t// column1: undefined,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\t// column5: undefined\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null`) (`required: false`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn()` not specified) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([{\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 2,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}, {\r\n\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\terror: 'required',\r\n\t\t\trow: 3,\r\n\t\t\ttype: String,\r\n\t\t\tvalue: null\r\n\t\t}])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should handle missing columns / empty cells (`schemaPropertyValueForMissingColumn: null` and `schemaPropertyValueForNullCellValue: null` and `schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true`) (`required: true`)', () => {\r\n\t\tconst { rows, errors } = mapToObjects([\r\n\t\t\t[\r\n\t\t\t\t'COLUMN_2',\r\n\t\t\t\t'COLUMN_3',\r\n\t\t\t\t'COLUMN_4'\r\n\t\t\t], [\r\n\t\t\t\t'12',\r\n\t\t\t\t'13',\r\n\t\t\t\t'14'\r\n\t\t\t], [\r\n\t\t\t\t'22',\r\n\t\t\t\t'23',\r\n\t\t\t\tnull\r\n\t\t\t]\r\n\t\t], {\r\n\t\t\tcolumn1: {\r\n\t\t\t\tcolumn: 'COLUMN_1',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn2: {\r\n\t\t\t\tcolumn: 'COLUMN_2',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn4: {\r\n\t\t\t\tcolumn: 'COLUMN_4',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\tcolumn5: {\r\n\t\t\t\tcolumn: 'COLUMN_5',\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tschemaPropertyValueForMissingColumn: null,\r\n\t\t\tschemaPropertyValueForNullCellValue: null,\r\n\t\t\tschemaPropertyShouldSkipRequiredValidationForMissingColumn: () => true\r\n\t\t})\r\n\r\n\t\texpect(errors).to.deep.equal([])\r\n\r\n\t\texpect(rows).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\t\t\tcolumn1: null,\r\n\t\t\tcolumn2: '22',\r\n\t\t\tcolumn4: null,\r\n\t\t\tcolumn5: null\r\n\t\t}])\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"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"}
|
package/node/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "read-excel-file",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.1",
|
|
4
4
|
"description": "Read `*.xlsx` files of moderate size in a web browser or on a server.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
},
|
|
29
29
|
"sideEffects": false,
|
|
30
30
|
"scripts": {
|
|
31
|
-
"test": "mocha --
|
|
31
|
+
"test": "mocha --bail \"source/**/*.test.js\" \"test/*.test.js\" \"test/!(exports)/**/*.test.js\"",
|
|
32
|
+
"test:exports": "mocha --bail \"test/exports/**/*.test.js\"",
|
|
32
33
|
"clean-for-build": "rimraf ./commonjs/**/* ./modules/**/*",
|
|
33
34
|
"build-commonjs-modules": "better-npm-run build-commonjs-modules",
|
|
34
35
|
"build-commonjs-package.json": "node build-scripts/create-commonjs-package-json.js",
|
|
@@ -36,7 +37,7 @@
|
|
|
36
37
|
"build-es6-modules": "better-npm-run build-es6-modules",
|
|
37
38
|
"browser-build": "rollup --config rollup.config.mjs",
|
|
38
39
|
"build": "npm-run-all clean-for-build build-commonjs build-es6-modules browser-build",
|
|
39
|
-
"prepublishOnly": "npm-run-all build test browser-build"
|
|
40
|
+
"prepublishOnly": "npm-run-all build test test:exports browser-build"
|
|
40
41
|
},
|
|
41
42
|
"engines": {
|
|
42
43
|
"node": ">=18"
|
package/types.d.ts
CHANGED
|
@@ -1,23 +1,30 @@
|
|
|
1
|
-
export function Integer(): void;
|
|
2
|
-
export function URL(): void;
|
|
3
|
-
export function Email(): void;
|
|
4
|
-
|
|
5
1
|
export type CellValue = string | number | boolean | typeof Date
|
|
6
|
-
export type Row = CellValue[]
|
|
2
|
+
export type Row = (CellValue | null)[]
|
|
7
3
|
|
|
8
|
-
type
|
|
4
|
+
// Schema entry `type` (foundational ones).
|
|
5
|
+
type BaseType =
|
|
9
6
|
| string
|
|
10
7
|
| number
|
|
11
8
|
| boolean
|
|
12
|
-
| typeof Date
|
|
9
|
+
| typeof Date;
|
|
10
|
+
|
|
11
|
+
// Schema entry custom `type`.
|
|
12
|
+
// A function that receives a cell value and returns a "parsed" one.
|
|
13
|
+
// Returning `undefined` will have same effect as returning `null`.
|
|
14
|
+
export type Type<ParsedValue> = (value: CellValue) => ParsedValue | undefined | null;
|
|
15
|
+
|
|
16
|
+
export function Integer(value: CellValue): number;
|
|
17
|
+
export function URL(value: CellValue): string;
|
|
18
|
+
export function Email(value: CellValue): string;
|
|
19
|
+
|
|
20
|
+
// Schema entry `type` (additional ones).
|
|
21
|
+
type AdditionalType =
|
|
13
22
|
| typeof Integer
|
|
14
23
|
| typeof URL
|
|
15
24
|
| typeof Email;
|
|
16
25
|
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
type SchemaEntryType<ParsedValue> = BasicType | Type<ParsedValue>;
|
|
26
|
+
// Schema entry `type`: foundational ones, additional ones, custom ones.
|
|
27
|
+
type SchemaEntryType<ParsedValue> = BaseType | AdditionalType | Type<ParsedValue>;
|
|
21
28
|
|
|
22
29
|
type SchemaEntryRequired<Object> = boolean | ((row: Object) => boolean);
|
|
23
30
|
|
|
@@ -42,13 +49,22 @@ type SchemaEntry<Key extends keyof Object, Object, TopLevelObject, ColumnTitle e
|
|
|
42
49
|
|
|
43
50
|
export type Schema<Object = Record<string, any>, ColumnTitle extends string = string> = Record<keyof Object, SchemaEntry<keyof Object, Object, Object, ColumnTitle>>
|
|
44
51
|
|
|
45
|
-
|
|
46
|
-
error: string;
|
|
47
|
-
reason?: string;
|
|
52
|
+
interface SchemaParseCellValueErrorGeneralProperties<CustomType = never> {
|
|
48
53
|
row: number;
|
|
49
54
|
column: string;
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
type?: BasicType | CustomType;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface SchemaParseCellValueError<ParsedValue = any> extends SchemaParseCellValueErrorGeneralProperties<ParsedValue> {
|
|
59
|
+
error: string;
|
|
60
|
+
reason?: string;
|
|
61
|
+
value: CellValue;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface CellValueRequiredError<ParsedValue = any> extends SchemaParseCellValueErrorGeneralProperties<ParsedValue> {
|
|
65
|
+
error: 'required';
|
|
66
|
+
reason?: undefined;
|
|
67
|
+
value: null;
|
|
52
68
|
}
|
|
53
69
|
|
|
54
70
|
export interface ParsedObjectsResult<Object> {
|
package/universal/index.d.ts
CHANGED