read-excel-file 7.0.2 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +212 -205
- package/browser/index.cjs +8 -5
- package/browser/index.d.ts +58 -16
- package/browser/index.js +7 -5
- package/browser/input.d.ts +1 -0
- package/bundle/read-excel-file.min.js +1 -1
- package/bundle/read-excel-file.min.js.map +1 -1
- package/commonjs/export/parseSheet.js +20 -0
- package/commonjs/export/parseSheet.js.map +1 -0
- package/commonjs/export/readSheetBrowser.js +29 -0
- package/commonjs/export/readSheetBrowser.js.map +1 -0
- package/commonjs/export/readSheetNode.js +29 -0
- package/commonjs/export/readSheetNode.js.map +1 -0
- package/commonjs/export/readSheetUniversal.js +29 -0
- package/commonjs/export/readSheetUniversal.js.map +1 -0
- package/commonjs/export/readSheetWebWorker.js +29 -0
- package/commonjs/export/readSheetWebWorker.js.map +1 -0
- package/commonjs/export/readXlsxFileBrowser.js +6 -8
- package/commonjs/export/readXlsxFileBrowser.js.map +1 -1
- package/commonjs/export/readXlsxFileNode.js +7 -9
- package/commonjs/export/readXlsxFileNode.js.map +1 -1
- package/commonjs/export/readXlsxFileUniversal.js +7 -9
- package/commonjs/export/readXlsxFileUniversal.js.map +1 -1
- package/commonjs/export/readXlsxFileWebWorker.js +6 -8
- package/commonjs/export/readXlsxFileWebWorker.js.map +1 -1
- package/commonjs/export/unpackXlsxFileBrowser.js +2 -1
- package/commonjs/export/unpackXlsxFileBrowser.js.map +1 -1
- package/commonjs/export/unpackXlsxFileNode.js +4 -3
- package/commonjs/export/unpackXlsxFileNode.js.map +1 -1
- package/commonjs/export/unpackXlsxFileUniversal.js +13 -3
- package/commonjs/export/unpackXlsxFileUniversal.js.map +1 -1
- package/commonjs/parseData/InvalidError.js.map +1 -0
- package/commonjs/parseData/parseData.js +503 -0
- package/commonjs/parseData/parseData.js.map +1 -0
- package/commonjs/parseData/parseData.test.js.map +1 -0
- package/commonjs/{types → parseData/types}/Boolean.js +1 -1
- package/commonjs/parseData/types/Boolean.js.map +1 -0
- package/commonjs/parseData/types/Date.js +21 -0
- package/commonjs/parseData/types/Date.js.map +1 -0
- package/commonjs/{types → parseData/types}/Number.js +1 -1
- package/commonjs/parseData/types/Number.js.map +1 -0
- package/commonjs/{types → parseData/types}/String.js +1 -1
- package/commonjs/parseData/types/String.js.map +1 -0
- package/commonjs/{types → parseData/types/additional}/Email.js +3 -3
- package/commonjs/parseData/types/additional/Email.js.map +1 -0
- package/commonjs/parseData/types/additional/Email.test.js.map +1 -0
- package/commonjs/{types → parseData/types/additional}/Integer.js +2 -2
- package/commonjs/parseData/types/additional/Integer.js.map +1 -0
- package/commonjs/parseData/types/additional/Integer.test.js.map +1 -0
- package/commonjs/{types → parseData/types/additional}/URL.js +3 -3
- package/commonjs/parseData/types/additional/URL.js.map +1 -0
- package/commonjs/parseData/types/additional/URL.test.js.map +1 -0
- package/commonjs/xlsx/{getData.js → convertCellsToData2dArray.js} +16 -37
- package/commonjs/xlsx/convertCellsToData2dArray.js.map +1 -0
- package/commonjs/xlsx/{isDateTimestamp.js → isDateFormat.js} +58 -56
- package/commonjs/xlsx/isDateFormat.js.map +1 -0
- package/commonjs/xlsx/isDateFormat.test.js.map +1 -0
- package/commonjs/xlsx/isDateFormatStyle.js +193 -0
- package/commonjs/xlsx/isDateFormatStyle.js.map +1 -0
- package/commonjs/xlsx/parseCell.js +16 -18
- package/commonjs/xlsx/parseCell.js.map +1 -1
- package/commonjs/xlsx/parseCellCoordinates.js +44 -0
- package/commonjs/xlsx/parseCellCoordinates.js.map +1 -0
- package/commonjs/xlsx/parseCellValue.js +14 -11
- package/commonjs/xlsx/parseCellValue.js.map +1 -1
- package/commonjs/xlsx/parseCells.js +14 -6
- package/commonjs/xlsx/parseCells.js.map +1 -1
- package/commonjs/xlsx/parseExcelDate.js +139 -0
- package/commonjs/xlsx/parseExcelDate.js.map +1 -0
- package/commonjs/xlsx/parseExcelDate.test.js.map +1 -0
- package/commonjs/xlsx/parseSheet.js +9 -11
- package/commonjs/xlsx/parseSheet.js.map +1 -1
- package/commonjs/xlsx/{parseDimensions.js → parseSheetDimensions.js} +7 -6
- package/commonjs/xlsx/parseSheetDimensions.js.map +1 -0
- package/commonjs/xlsx/parseSpreadsheetContents.js +96 -0
- package/commonjs/xlsx/parseSpreadsheetContents.js.map +1 -0
- package/commonjs/xlsx/parseSpreadsheetInfo.js +47 -0
- package/commonjs/xlsx/parseSpreadsheetInfo.js.map +1 -0
- package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js +29 -0
- package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +1 -0
- package/commonjs/xml/xlsx.js +9 -9
- package/commonjs/xml/xlsx.js.map +1 -1
- package/commonjs/xml/xpath/xlsx-xpath.js +8 -8
- package/commonjs/xml/xpath/xlsx-xpath.js.map +1 -1
- package/commonjs/xml/xpath/xpathBrowser.js +4 -4
- package/commonjs/xml/xpath/xpathBrowser.js.map +1 -1
- package/commonjs/xml/xpath/xpathNode.js +2 -2
- package/commonjs/xml/xpath/xpathNode.js.map +1 -1
- package/modules/export/parseSheet.js +13 -0
- package/modules/export/parseSheet.js.map +1 -0
- package/modules/export/readSheetBrowser.js +23 -0
- package/modules/export/readSheetBrowser.js.map +1 -0
- package/modules/export/readSheetNode.js +23 -0
- package/modules/export/readSheetNode.js.map +1 -0
- package/modules/export/readSheetUniversal.js +23 -0
- package/modules/export/readSheetUniversal.js.map +1 -0
- package/modules/export/readSheetWebWorker.js +23 -0
- package/modules/export/readSheetWebWorker.js.map +1 -0
- package/modules/export/readXlsxFileBrowser.js +6 -8
- package/modules/export/readXlsxFileBrowser.js.map +1 -1
- package/modules/export/readXlsxFileNode.js +7 -9
- package/modules/export/readXlsxFileNode.js.map +1 -1
- package/modules/export/readXlsxFileUniversal.js +7 -9
- package/modules/export/readXlsxFileUniversal.js.map +1 -1
- package/modules/export/readXlsxFileWebWorker.js +6 -8
- package/modules/export/readXlsxFileWebWorker.js.map +1 -1
- package/modules/export/unpackXlsxFileBrowser.js +3 -1
- package/modules/export/unpackXlsxFileBrowser.js.map +1 -1
- package/modules/export/unpackXlsxFileNode.js +4 -3
- package/modules/export/unpackXlsxFileNode.js.map +1 -1
- package/modules/export/unpackXlsxFileUniversal.js +13 -3
- package/modules/export/unpackXlsxFileUniversal.js.map +1 -1
- package/modules/parseData/InvalidError.js.map +1 -0
- package/modules/parseData/parseData.js +494 -0
- package/modules/parseData/parseData.js.map +1 -0
- package/modules/parseData/parseData.test.js.map +1 -0
- package/modules/{types → parseData/types}/Boolean.js +1 -1
- package/modules/parseData/types/Boolean.js.map +1 -0
- package/modules/parseData/types/Date.js +14 -0
- package/modules/parseData/types/Date.js.map +1 -0
- package/modules/{types → parseData/types}/Number.js +1 -1
- package/modules/parseData/types/Number.js.map +1 -0
- package/modules/{types → parseData/types}/String.js +1 -1
- package/modules/parseData/types/String.js.map +1 -0
- package/modules/{types → parseData/types/additional}/Email.js +3 -3
- package/modules/parseData/types/additional/Email.js.map +1 -0
- package/modules/parseData/types/additional/Email.test.js.map +1 -0
- package/modules/{types → parseData/types/additional}/Integer.js +2 -2
- package/modules/parseData/types/additional/Integer.js.map +1 -0
- package/modules/parseData/types/additional/Integer.test.js.map +1 -0
- package/modules/{types → parseData/types/additional}/URL.js +3 -3
- package/modules/parseData/types/additional/URL.js.map +1 -0
- package/modules/parseData/types/additional/URL.test.js.map +1 -0
- package/modules/xlsx/{getData.js → convertCellsToData2dArray.js} +15 -36
- package/modules/xlsx/convertCellsToData2dArray.js.map +1 -0
- package/modules/xlsx/{isDateTimestamp.js → isDateFormat.js} +57 -55
- package/modules/xlsx/isDateFormat.js.map +1 -0
- package/modules/xlsx/isDateFormat.test.js.map +1 -0
- package/modules/xlsx/isDateFormatStyle.js +186 -0
- package/modules/xlsx/isDateFormatStyle.js.map +1 -0
- package/modules/xlsx/parseCell.js +17 -19
- package/modules/xlsx/parseCell.js.map +1 -1
- package/modules/xlsx/parseCellCoordinates.js +38 -0
- package/modules/xlsx/parseCellCoordinates.js.map +1 -0
- package/modules/xlsx/parseCellValue.js +14 -11
- package/modules/xlsx/parseCellValue.js.map +1 -1
- package/modules/xlsx/parseCells.js +14 -6
- package/modules/xlsx/parseCells.js.map +1 -1
- package/modules/xlsx/parseExcelDate.js +133 -0
- package/modules/xlsx/parseExcelDate.js.map +1 -0
- package/modules/xlsx/parseExcelDate.test.js.map +1 -0
- package/modules/xlsx/parseSheet.js +9 -11
- package/modules/xlsx/parseSheet.js.map +1 -1
- package/modules/xlsx/{parseDimensions.js → parseSheetDimensions.js} +4 -4
- package/modules/xlsx/parseSheetDimensions.js.map +1 -0
- package/modules/xlsx/parseSpreadsheetContents.js +91 -0
- package/modules/xlsx/parseSpreadsheetContents.js.map +1 -0
- package/modules/xlsx/parseSpreadsheetInfo.js +42 -0
- package/modules/xlsx/parseSpreadsheetInfo.js.map +1 -0
- package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js +23 -0
- package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +1 -0
- package/modules/xml/xlsx.js +6 -6
- package/modules/xml/xlsx.js.map +1 -1
- package/modules/xml/xpath/xlsx-xpath.js +6 -6
- package/modules/xml/xpath/xlsx-xpath.js.map +1 -1
- package/modules/xml/xpath/xpathBrowser.js +4 -4
- package/modules/xml/xpath/xpathBrowser.js.map +1 -1
- package/modules/xml/xpath/xpathNode.js +2 -2
- package/modules/xml/xpath/xpathNode.js.map +1 -1
- package/node/index.cjs +8 -5
- package/node/index.d.ts +56 -21
- package/node/index.js +7 -5
- package/node/input.d.ts +5 -0
- package/package.json +1 -1
- package/rollup.config.mjs +1 -1
- package/types/parseData/parseData.d.ts +38 -0
- package/types/parseData/parseDataError.d.ts +239 -0
- package/types/parseData/parseDataSchema.d.ts +48 -0
- package/types/parseData/parseDataValueType.d.ts +45 -0
- package/types/types.d.ts +20 -0
- package/universal/index.cjs +8 -5
- package/universal/index.d.ts +58 -16
- package/universal/index.js +7 -5
- package/universal/input.d.ts +1 -0
- package/web-worker/index.cjs +8 -5
- package/web-worker/index.d.ts +58 -16
- package/web-worker/index.js +7 -5
- package/web-worker/input.d.ts +1 -0
- package/commonjs/export/readSheetNamesBrowser.js +0 -23
- package/commonjs/export/readSheetNamesBrowser.js.map +0 -1
- package/commonjs/export/readSheetNamesNode.js +0 -23
- package/commonjs/export/readSheetNamesNode.js.map +0 -1
- package/commonjs/export/readSheetNamesUniversal.js +0 -23
- package/commonjs/export/readSheetNamesUniversal.js.map +0 -1
- package/commonjs/export/readSheetNamesWebWorker.js +0 -23
- package/commonjs/export/readSheetNamesWebWorker.js.map +0 -1
- package/commonjs/types/Boolean.js.map +0 -1
- package/commonjs/types/Date.js +0 -36
- package/commonjs/types/Date.js.map +0 -1
- package/commonjs/types/Email.js.map +0 -1
- package/commonjs/types/Email.test.js.map +0 -1
- package/commonjs/types/Integer.js.map +0 -1
- package/commonjs/types/Integer.test.js.map +0 -1
- package/commonjs/types/InvalidError.js.map +0 -1
- package/commonjs/types/Number.js.map +0 -1
- package/commonjs/types/String.js.map +0 -1
- package/commonjs/types/URL.js.map +0 -1
- package/commonjs/types/URL.test.js.map +0 -1
- package/commonjs/xlsx/coordinates.js +0 -55
- package/commonjs/xlsx/coordinates.js.map +0 -1
- package/commonjs/xlsx/getData.js.map +0 -1
- package/commonjs/xlsx/isDateTimestamp.js.map +0 -1
- package/commonjs/xlsx/parseDate.js +0 -73
- package/commonjs/xlsx/parseDate.js.map +0 -1
- package/commonjs/xlsx/parseDate.test.js.map +0 -1
- package/commonjs/xlsx/parseDimensions.js.map +0 -1
- package/commonjs/xlsx/parseProperties.js +0 -46
- package/commonjs/xlsx/parseProperties.js.map +0 -1
- package/commonjs/xlsx/parseXlsxFileContents.js +0 -119
- package/commonjs/xlsx/parseXlsxFileContents.js.map +0 -1
- package/commonjs/xlsx/parseXlsxFileContentsWithOptionalSchema.js +0 -45
- package/commonjs/xlsx/parseXlsxFileContentsWithOptionalSchema.js.map +0 -1
- package/commonjs/xlsx/schema/mapToObjects.js +0 -482
- package/commonjs/xlsx/schema/mapToObjects.js.map +0 -1
- package/commonjs/xlsx/schema/mapToObjects.test.js.map +0 -1
- package/modules/export/readSheetNamesBrowser.js +0 -17
- package/modules/export/readSheetNamesBrowser.js.map +0 -1
- package/modules/export/readSheetNamesNode.js +0 -17
- package/modules/export/readSheetNamesNode.js.map +0 -1
- package/modules/export/readSheetNamesUniversal.js +0 -17
- package/modules/export/readSheetNamesUniversal.js.map +0 -1
- package/modules/export/readSheetNamesWebWorker.js +0 -17
- package/modules/export/readSheetNamesWebWorker.js.map +0 -1
- package/modules/types/Boolean.js.map +0 -1
- package/modules/types/Date.js +0 -29
- package/modules/types/Date.js.map +0 -1
- package/modules/types/Email.js.map +0 -1
- package/modules/types/Email.test.js.map +0 -1
- package/modules/types/Integer.js.map +0 -1
- package/modules/types/Integer.test.js.map +0 -1
- package/modules/types/InvalidError.js.map +0 -1
- package/modules/types/Number.js.map +0 -1
- package/modules/types/String.js.map +0 -1
- package/modules/types/URL.js.map +0 -1
- package/modules/types/URL.test.js.map +0 -1
- package/modules/xlsx/coordinates.js +0 -48
- package/modules/xlsx/coordinates.js.map +0 -1
- package/modules/xlsx/getData.js.map +0 -1
- package/modules/xlsx/isDateTimestamp.js.map +0 -1
- package/modules/xlsx/parseDate.js +0 -67
- package/modules/xlsx/parseDate.js.map +0 -1
- package/modules/xlsx/parseDate.test.js.map +0 -1
- package/modules/xlsx/parseDimensions.js.map +0 -1
- package/modules/xlsx/parseProperties.js +0 -41
- package/modules/xlsx/parseProperties.js.map +0 -1
- package/modules/xlsx/parseXlsxFileContents.js +0 -114
- package/modules/xlsx/parseXlsxFileContents.js.map +0 -1
- package/modules/xlsx/parseXlsxFileContentsWithOptionalSchema.js +0 -39
- package/modules/xlsx/parseXlsxFileContentsWithOptionalSchema.js.map +0 -1
- package/modules/xlsx/schema/mapToObjects.js +0 -472
- package/modules/xlsx/schema/mapToObjects.js.map +0 -1
- package/modules/xlsx/schema/mapToObjects.test.js.map +0 -1
- package/types.d.ts +0 -121
- /package/commonjs/{types → parseData}/InvalidError.js +0 -0
- /package/modules/{types → parseData}/InvalidError.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mapToObjects.js","names":["NumberType","StringType","BooleanType","DateType","DEFAULT_OPTIONS","schemaPropertyValueForMissingColumn","undefined","schemaPropertyValueForMissingValue","schemaPropertyShouldSkipRequiredValidationForMissingColumn","getEmptyObjectValue","getEmptyArrayValue","isColumnOriented","ignoreEmptyRows","arrayValueSeparator","mapToObjects","data","schema","options","_objectSpread","_options","rowIndexSourceMapOriginal","rowIndexSourceMap","schemaTransformOptions","_objectWithoutProperties","_excluded","slice","validateSchema","transpose","filter","row","i","isEmptyRow","every","cell","splice","columns","results","errors","length","result","read","push","_iterator","_createForOfIteratorHelperLoose","_step","done","error","value","rows","rowIndex","path","object","isEmptyObject","createError","_ref","schemaEntry","errorMessage","reason","column","type","pendingRequiredChecks","_loop","key","_Object$keys","_i","propertyName","columnTitle","propertyPath","concat","cellValue","columnIndex","indexOf","isMissingColumn","Array","isArray","array","parseArray","map","_value","parseValue","isEmpty","isEmptyValue","required","Object","keys","_i2","_pendingRequiredCheck","_pendingRequiredCheck2","skipRequiredValidation","isRequired","parse","Error","parseValueOfType","oneOf","validate","message","parseCustomValue","parsedValue","String","Number","Date","properties","Boolean","name","getBlock","string","endCharacter","startIndex","substring","character","block","blocks","index","_getBlock","_getBlock2","_slicedToArray","trim","_","_i3","_Object$keys2","_typeof"],"sources":["../../../source/xlsx/schema/mapToObjects.js"],"sourcesContent":["import NumberType from '../../types/Number.js'\r\nimport StringType from '../../types/String.js'\r\nimport BooleanType from '../../types/Boolean.js'\r\nimport DateType from '../../types/Date.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n schemaPropertyValueForMissingColumn: undefined,\r\n schemaPropertyValueForMissingValue: null,\r\n schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false,\r\n // `getEmptyObjectValue(object, { path })` applies to both the top-level object\r\n // and any of its sub-objects.\r\n getEmptyObjectValue: () => null,\r\n getEmptyArrayValue: () => null,\r\n isColumnOriented: false,\r\n ignoreEmptyRows: true,\r\n arrayValueSeparator: ','\r\n}\r\n\r\n/**\r\n * Converts spreadsheet-alike data structure into an array of objects.\r\n *\r\n * Parameters:\r\n *\r\n * * `data` — An array of rows, each row being an array of cells. The first row should be the list of column headers and the rest of the rows should be the data.\r\n * * `schema` — A \"to JSON\" convertion schema (see above).\r\n * * `options` — (optional) Schema conversion parameters of `read-excel-file`:\r\n * * `schemaPropertyValueForMissingColumn` — By default, when some of the `schema` columns are missing in the input `data`, those properties are set to `undefined` in the output objects. Pass `schemaPropertyValueForMissingColumn: null` to set such \"missing column\" properties to `null` in the output objects.\r\n * * `schemaPropertyValueForNullCellValue` — By default, when it encounters a `null` value in a cell in input `data`, it sets it to `undefined` in the output object. Pass `schemaPropertyValueForNullCellValue: null` to make it set such values as `null`s in output objects.\r\n * * `schemaPropertyValueForUndefinedCellValue` — By default, when it encounters an `undefined` value in a cell in input `data`, it it sets it to `undefined` in the output object. Pass `schemaPropertyValueForUndefinedCellValue: null` to make it set such values as `null`s in output objects.\r\n * * `schemaPropertyShouldSkipRequiredValidationForMissingColumn: (column: string, { object }) => boolean` — By default, it does apply `required` validation to `schema` properties for which columns are missing in the input `data`. One could pass a custom `schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })` to disable `required` validation for missing columns in some or all cases.\r\n * * `getEmptyObjectValue(object, { path? })` — By default, it returns `null` for \"empty\" objects. One could override that value using `getEmptyObjectValue(object, { path })` parameter. The value applies to both top-level object and any nested sub-objects in case of a nested schema, hence the additional (optional) `path?: string` parameter.\r\n * * `getEmptyArrayValue(array, { path })` — By default, it returns `null` for an \"empty\" array value. One could override that value using `getEmptyArrayValue(array, { path })` parameter.\r\n *\r\n * When parsing a property value, in case of an error, the value of that property is gonna be `undefined`.\r\n *\r\n * @param {any[][]} data - An array of rows, each row being an array of cells.\r\n * @param {object} schema\r\n * @param {object} [options]\r\n * @param {null} [options.schemaPropertyValueForMissingColumn] — By default, when some of the `schema` columns are missing in the input `data`, those properties are set to `undefined` in the output objects. Pass `schemaPropertyValueForMissingColumn: null` to set such \"missing column\" properties to `null` in the output objects.\r\n * @param {null} [options.schemaPropertyValueForMissingValue] — By default, when it encounters a `null` value in a cell in input `data`, it leaves the value as is. Pass a custom `schemaPropertyValueForMissingValue` to make it set such values to that value.\r\n * @param {object} [options.properties] — An optional object with optional property `epoch1904: true/false`. It is used when parsing dates.\r\n * @param {boolean} [options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(column: string, { object })] — By default, it does apply `required` validation to `schema` properties for which columns are missing in the input `data`. One could pass a custom `schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })` to disable `required` validation for missing columns in some or all cases.\r\n * @param {function} [options.getEmptyObjectValue(object, { path })] — By default, it returns `null` for an \"empty\" resulting object. One could override that value using `getEmptyObjectValue(object, { path })` parameter. The value applies to both top-level object and any nested sub-objects in case of a nested schema, hence the additional `path?: string` parameter.\r\n * @param {function} [getEmptyArrayValue(array, { path })] — By default, it returns `null` for an \"empty\" array value. One could override that value using `getEmptyArrayValue(array, { path })` parameter.\r\n * @param {boolean} [options.isColumnOriented] — By default, the headers are assumed to be the first row in the `data`. Pass `isColumnOriented: true` if the headers are the first column in the `data`. i.e. if `data` is \"transposed\".\r\n * @param {string} [options.arrayValueSeparator] — When specified, string values will be split by this separator to get the array.\r\n * @param {object} [options.rowIndexSourceMap] — Custom row indexes of `data` rows. If present, will overwrite the indexes of `data` rows with the indexes from this `rowIndexSourceMap`.\r\n * @return {object[]}\r\n */\r\nexport default function mapToObjects(data, schema, options) {\r\n if (options) {\r\n options = {\r\n ...DEFAULT_OPTIONS,\r\n ...options\r\n }\r\n } else {\r\n options = DEFAULT_OPTIONS\r\n }\r\n\r\n const {\r\n isColumnOriented,\r\n ignoreEmptyRows,\r\n rowIndexSourceMap: rowIndexSourceMapOriginal,\r\n ...schemaTransformOptions\r\n } = options\r\n\r\n // `rowIndexSourceMap` could be mutated by `ignoreEmptyRows: true` option.\r\n // Create a copy of it so that the original `rowIndexSourceMap` is not affected by those changes.\r\n let rowIndexSourceMap = rowIndexSourceMapOriginal && rowIndexSourceMapOriginal.slice()\r\n\r\n validateSchema(schema)\r\n\r\n if (isColumnOriented) {\r\n data = transpose(data)\r\n }\r\n\r\n\tif (ignoreEmptyRows) {\r\n\t\tdata = data.filter((row, i) => {\r\n const isEmptyRow = row.every(cell => cell === null)\r\n if (isEmptyRow) {\r\n // Adjust `rowIndexSourceMap` now that the row has been removed.\r\n if (rowIndexSourceMap) {\r\n // Remove the `rowIndexSourceMap` entry that corresponds to the removed row.\r\n rowIndexSourceMap.splice(i, 1)\r\n }\r\n return false;\r\n }\r\n return true;\r\n })\r\n\t}\r\n\r\n const columns = data[0]\r\n\r\n const results = []\r\n const errors = []\r\n\r\n for (let i = 1; i < data.length; i++) {\r\n const result = read(schema, data[i], i, undefined, columns, errors, schemaTransformOptions)\r\n results.push(result)\r\n }\r\n\r\n // Set the correct `row` number in `errors` if a custom `rowIndexSourceMap` is supplied.\r\n if (rowIndexSourceMap) {\r\n for (const error of errors) {\r\n // Convert the `row` index in `data` to the\r\n // actual `row` index in the spreadsheet.\r\n // `- 1` converts row number to row index.\r\n // `+ 1` converts row index to row number.\r\n error.row = rowIndexSourceMap[error.row - 1] + 1\r\n }\r\n }\r\n\r\n return {\r\n rows: results,\r\n errors\r\n }\r\n}\r\n\r\nfunction read(schema, row, rowIndex, path, columns, errors, options) {\r\n const object = {}\r\n let isEmptyObject = true\r\n\r\n const createError = ({\r\n schemaEntry,\r\n value,\r\n error: errorMessage,\r\n reason\r\n }) => {\r\n const error = {\r\n error: errorMessage,\r\n row: rowIndex + 1,\r\n column: schemaEntry.column,\r\n value\r\n }\r\n if (reason) {\r\n error.reason = reason\r\n }\r\n // * Regular values specify a `type?` property, which is included in the `error` object.\r\n // * Nested objects specify a `schema` property, which is not included in the `error` object.\r\n if (schemaEntry.type) {\r\n error.type = schemaEntry.type\r\n }\r\n return error\r\n }\r\n\r\n const pendingRequiredChecks = []\r\n\r\n // For each schema entry.\r\n for (const key of Object.keys(schema)) {\r\n const schemaEntry = schema[key]\r\n\r\n const propertyName = key\r\n const columnTitle = schemaEntry.column\r\n\r\n // The path of this property inside the resulting object.\r\n const propertyPath = `${path || ''}.${propertyName}`\r\n\r\n // Read the cell value for the schema entry.\r\n let cellValue\r\n const columnIndex = columns.indexOf(columnTitle)\r\n const isMissingColumn = columnIndex < 0\r\n if (!isMissingColumn) {\r\n cellValue = row[columnIndex]\r\n }\r\n\r\n let value\r\n let error\r\n let reason\r\n\r\n // Get property `value` from cell value.\r\n if (schemaEntry.schema) {\r\n value = read(schemaEntry.schema, row, rowIndex, propertyPath, columns, errors, options)\r\n } else {\r\n if (isMissingColumn) {\r\n if ('schemaPropertyValueForMissingColumn' in options) {\r\n value = options.schemaPropertyValueForMissingColumn\r\n }\r\n }\r\n else if (cellValue === undefined) {\r\n // This isn't supposed to be possible. Cell values are always `null` when cells are empty.\r\n // Employ some sensible fallback behavior here.\r\n if ('schemaPropertyValueForMissingValue' in options) {\r\n value = options.schemaPropertyValueForMissingValue\r\n }\r\n }\r\n else if (cellValue === null) {\r\n if ('schemaPropertyValueForMissingValue' in options) {\r\n value = options.schemaPropertyValueForMissingValue\r\n }\r\n }\r\n else if (Array.isArray(schemaEntry.type)) {\r\n const array = parseArray(cellValue, options.arrayValueSeparator).map((_value) => {\r\n if (error) {\r\n return\r\n }\r\n const result = parseValue(_value, schemaEntry, options)\r\n if (result.error) {\r\n // In case of an error, `value` won't be returned and will just be reported\r\n // as part of an `error` object, so it's fine assigning just an element of the array.\r\n value = _value\r\n error = result.error\r\n reason = result.reason\r\n }\r\n return result.value\r\n })\r\n if (!error) {\r\n const isEmpty = array.every(isEmptyValue)\r\n value = isEmpty ? options.getEmptyArrayValue(array, { path: propertyPath }) : array\r\n }\r\n } else {\r\n const result = parseValue(cellValue, schemaEntry, options)\r\n error = result.error\r\n reason = result.reason\r\n value = error ? cellValue : result.value\r\n }\r\n }\r\n\r\n // Apply `required` validation if the value is \"empty\".\r\n if (!error && isEmptyValue(value)) {\r\n if (schemaEntry.required) {\r\n // Will perform this `required()` validation in the end,\r\n // when all properties of the mapped object have been mapped.\r\n pendingRequiredChecks.push({ schemaEntry, value, isMissingColumn })\r\n }\r\n }\r\n\r\n if (error) {\r\n // If there was an error then the property value in the `object` will be `undefined`,\r\n // i.e it won't add the property value to the mapped object.\r\n errors.push(createError({\r\n schemaEntry,\r\n value,\r\n error,\r\n reason\r\n }))\r\n } else {\r\n // Possibly unmark the mapped object as \"empty\".\r\n if (isEmptyObject && !isEmptyValue(value)) {\r\n isEmptyObject = false\r\n }\r\n // Set the value in the mapped object.\r\n // Skip setting `undefined` values because they're already `undefined`\r\n // due to not having previously been set.\r\n if (value !== undefined) {\r\n object[propertyName] = value\r\n }\r\n }\r\n }\r\n\r\n // Return `null` for an \"empty\" mapped object.\r\n if (isEmptyObject) {\r\n return options.getEmptyObjectValue(object, { path })\r\n }\r\n\r\n // Perform any `required` validations.\r\n for (const { schemaEntry, value, isMissingColumn } of pendingRequiredChecks) {\r\n // Can optionally skip `required` validation for missing columns.\r\n const skipRequiredValidation = isMissingColumn && options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(schemaEntry.column, { object })\r\n if (!skipRequiredValidation) {\r\n const { required } = schemaEntry\r\n const isRequired = typeof required === 'boolean' ? required : required(object)\r\n if (isRequired) {\r\n errors.push(createError({\r\n schemaEntry,\r\n value,\r\n error: 'required'\r\n }))\r\n }\r\n }\r\n }\r\n\r\n // Return the mapped object.\r\n return object\r\n}\r\n\r\n/**\r\n * Converts textual value to a javascript typed value.\r\n * @param {any} value\r\n * @param {object} schemaEntry\r\n * @return {{ value: any, error: string }}\r\n */\r\nexport function parseValue(value, schemaEntry, options) {\r\n if (value === null) {\r\n return { value: null }\r\n }\r\n let result\r\n if (schemaEntry.parse) {\r\n throw new Error('`schemaEntry.parse` property was renamed to `schemaEntry.type`')\r\n } else if (schemaEntry.type) {\r\n result = parseValueOfType(\r\n value,\r\n // Supports parsing array types.\r\n // See `parseArray()` function for more details.\r\n // Example `type`: String[]\r\n // Input: 'Barack Obama, \"String, with, colons\", Donald Trump'\r\n // Output: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n Array.isArray(schemaEntry.type) ? schemaEntry.type[0] : schemaEntry.type,\r\n options\r\n )\r\n } else {\r\n result = { value: value }\r\n // throw new Error('Invalid schema entry: no `type` specified:\\n\\n' + JSON.stringify(schemaEntry, null, 2))\r\n }\r\n // If errored then return the error.\r\n if (result.error) {\r\n return result\r\n }\r\n if (result.value !== null) {\r\n if (schemaEntry.oneOf && schemaEntry.oneOf.indexOf(result.value) < 0) {\r\n return { error: 'invalid', reason: 'unknown' }\r\n }\r\n if (schemaEntry.validate) {\r\n try {\r\n schemaEntry.validate(result.value)\r\n } catch (error) {\r\n return { error: error.message }\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * Converts textual value to a custom value using supplied `.parse()`.\r\n * @param {any} value\r\n * @param {function} parse\r\n * @return {{ value: any, error: string }}\r\n */\r\nfunction parseCustomValue(value, parse) {\r\n try {\r\n const parsedValue = parse(value)\r\n if (parsedValue === undefined) {\r\n return { value: null }\r\n }\r\n return { value: parsedValue }\r\n } catch (error) {\r\n const result = { error: error.message }\r\n if (error.reason) {\r\n result.reason = error.reason;\r\n }\r\n return result\r\n }\r\n}\r\n\r\n/**\r\n * Converts textual value to a javascript typed value.\r\n * @param {any} value\r\n * @param {} type\r\n * @return {{ value: (string|number|Date|boolean), error: string, reason?: string }}\r\n */\r\nfunction parseValueOfType(value, type, options) {\r\n switch (type) {\r\n case String:\r\n return parseCustomValue(value, StringType)\r\n\r\n case Number:\r\n return parseCustomValue(value, NumberType)\r\n\r\n case Date:\r\n return parseCustomValue(value, (value) => DateType(value, { properties: options.properties }))\r\n\r\n case Boolean:\r\n return parseCustomValue(value, BooleanType)\r\n\r\n default:\r\n if (typeof type === 'function') {\r\n return parseCustomValue(value, type)\r\n }\r\n throw new Error(`Unsupported schema type: ${type && type.name || type}`)\r\n }\r\n}\r\n\r\nexport function getBlock(string, endCharacter, startIndex) {\r\n let i = 0\r\n let substring = ''\r\n let character\r\n while (startIndex + i < string.length) {\r\n const character = string[startIndex + i]\r\n if (character === endCharacter) {\r\n return [substring, i]\r\n }\r\n else if (character === '\"') {\r\n const block = getBlock(string, '\"', startIndex + i + 1)\r\n substring += block[0]\r\n i += '\"'.length + block[1] + '\"'.length\r\n }\r\n else {\r\n substring += character\r\n i++\r\n }\r\n }\r\n return [substring, i]\r\n}\r\n\r\n/**\r\n * Parses a string of comma-separated substrings into an array of substrings.\r\n * (the `export` is just for tests)\r\n * @param {string} string — A string of comma-separated substrings.\r\n * @return {string[]} An array of substrings.\r\n */\r\nexport function parseArray(string, arrayValueSeparator) {\r\n const blocks = []\r\n let index = 0\r\n while (index < string.length) {\r\n const [substring, length] = getBlock(string, arrayValueSeparator, index)\r\n index += length + arrayValueSeparator.length\r\n blocks.push(substring.trim())\r\n }\r\n return blocks\r\n}\r\n\r\n// Transpose a 2D array.\r\n// https://stackoverflow.com/questions/17428587/transposing-a-2d-array-in-javascript\r\nconst transpose = array => array[0].map((_, i) => array.map(row => row[i]))\r\n\r\nfunction validateSchema(schema) {\r\n for (const key of Object.keys(schema)) {\r\n const schemaEntry = schema[key]\r\n // Validate that the `schema` is not using a deprecated `type: nestedSchema` format.\r\n if (typeof schemaEntry.type === 'object' && !Array.isArray(schemaEntry.type)) {\r\n throw new Error('When defining a nested schema, use a `schema` property instead of a `type` property')\r\n }\r\n // Validate that every property has a source `column` title specified for it.\r\n if (!schemaEntry.schema) {\r\n if (!schemaEntry.column) {\r\n throw new Error(`\"column\" not defined for schema entry \"${key}\".`)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction isEmptyValue(value) {\r\n return value === undefined || value === null\r\n}"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"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/types.d.ts
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
export type CellValue = string | number | boolean | typeof Date
|
|
2
|
-
export type Row = (CellValue | null)[]
|
|
3
|
-
|
|
4
|
-
// Schema entry `type` (foundational ones).
|
|
5
|
-
type BaseType =
|
|
6
|
-
| string
|
|
7
|
-
| number
|
|
8
|
-
| boolean
|
|
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 =
|
|
22
|
-
| typeof Integer
|
|
23
|
-
| typeof URL
|
|
24
|
-
| typeof Email;
|
|
25
|
-
|
|
26
|
-
// Schema entry `type`: foundational ones, additional ones, custom ones.
|
|
27
|
-
type SchemaEntryType<ParsedValue> = BaseType | AdditionalType | Type<ParsedValue>;
|
|
28
|
-
|
|
29
|
-
type SchemaEntryRequired<Object> = boolean | ((row: Object) => boolean);
|
|
30
|
-
|
|
31
|
-
interface SchemaEntryForValue<Key extends keyof Object, Object, TopLevelObject, ColumnTitle extends string> {
|
|
32
|
-
column: ColumnTitle;
|
|
33
|
-
type?: SchemaEntryType<Object[Key]>;
|
|
34
|
-
oneOf?: Object[Key][];
|
|
35
|
-
required?: SchemaEntryRequired<TopLevelObject>;
|
|
36
|
-
validate?(value: Object[Key]): void;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Implementing recursive types in TypeScript:
|
|
40
|
-
// https://dev.to/busypeoples/notes-on-typescript-recursive-types-and-immutability-5ck1
|
|
41
|
-
interface SchemaEntryRecursive<Key extends keyof Object, Object, TopLevelObject, ColumnTitle extends string> {
|
|
42
|
-
schema: Record<keyof Object[Key], SchemaEntry<keyof Object[Key], Object[Key], TopLevelObject, ColumnTitle>>;
|
|
43
|
-
required?: SchemaEntryRequired<TopLevelObject>;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
type SchemaEntry<Key extends keyof Object, Object, TopLevelObject, ColumnTitle extends string> =
|
|
47
|
-
SchemaEntryForValue<Key, Object, TopLevelObject, ColumnTitle> |
|
|
48
|
-
SchemaEntryRecursive<Key, Object, TopLevelObject, ColumnTitle>
|
|
49
|
-
|
|
50
|
-
export type Schema<Object = Record<string, any>, ColumnTitle extends string = string> = Record<keyof Object, SchemaEntry<keyof Object, Object, Object, ColumnTitle>>
|
|
51
|
-
|
|
52
|
-
interface SchemaParseCellValueErrorGeneralProperties<CustomType = never> {
|
|
53
|
-
row: number;
|
|
54
|
-
column: string;
|
|
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;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export interface ParsedObjectsResult<Object> {
|
|
71
|
-
rows: Object[];
|
|
72
|
-
errors: Error[];
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
interface ParseCommonOptions {
|
|
76
|
-
sheet?: number | string;
|
|
77
|
-
trim?: boolean;
|
|
78
|
-
parseNumber?: (string: string) => any;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export interface ParseWithSchemaOptions<Object> extends ParseCommonOptions, MappingParametersReadExcelFile {
|
|
82
|
-
schema: Schema<Object>;
|
|
83
|
-
transformData?: (rows: Row[]) => Row[];
|
|
84
|
-
// ignoreEmptyRows?: boolean;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
type MapProperty = string;
|
|
88
|
-
type MapObject = {
|
|
89
|
-
[key: string]: MapProperty | MapObject;
|
|
90
|
-
};
|
|
91
|
-
type Map = MapObject;
|
|
92
|
-
|
|
93
|
-
export interface ParseWithoutSchemaOptions extends ParseCommonOptions {
|
|
94
|
-
dateFormat?: string;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
interface SpreadsheetProperties {
|
|
98
|
-
epoch1904?: true;
|
|
99
|
-
sheets: [{
|
|
100
|
-
id: string,
|
|
101
|
-
name: string,
|
|
102
|
-
relationId: string
|
|
103
|
-
}]
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
interface MappingParametersCommon {
|
|
107
|
-
schemaPropertyValueForMissingColumn?: any;
|
|
108
|
-
schemaPropertyValueForMissingValue?: any;
|
|
109
|
-
schemaPropertyShouldSkipRequiredValidationForMissingColumn?(column: string, parameters: { object: Record<string, any> }): boolean;
|
|
110
|
-
getEmptyObjectValue?(object: Record<string, any>, parameters: { path?: string }): any;
|
|
111
|
-
getEmptyArrayValue?(array: any[], parameters: { path: string }): any;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
interface MappingParametersReadExcelFile extends MappingParametersCommon {}
|
|
115
|
-
|
|
116
|
-
export interface MappingParameters extends MappingParametersCommon {
|
|
117
|
-
isColumnOriented?: boolean;
|
|
118
|
-
arrayValueSeparator?: string;
|
|
119
|
-
rowIndexSourceMap?: Record<string, number>;
|
|
120
|
-
properties?: SpreadsheetProperties;
|
|
121
|
-
}
|
|
File without changes
|
|
File without changes
|