read-excel-file 5.8.4 → 5.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -313,14 +313,14 @@ function parseValue(value, schemaEntry, options) {
313
313
  */
314
314
  function parseCustomValue(value, parse) {
315
315
  try {
316
- value = parse(value);
317
- if (value === undefined) {
316
+ var parsedValue = parse(value);
317
+ if (parsedValue === undefined) {
318
318
  return {
319
319
  value: null
320
320
  };
321
321
  }
322
322
  return {
323
- value: value
323
+ value: parsedValue
324
324
  };
325
325
  } catch (error) {
326
326
  var result = {
@@ -1 +1 @@
1
- {"version":3,"file":"convertToJson.js","names":["_Number","_interopRequireDefault","require","_String","_Boolean","_Date","obj","__esModule","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","r","l","t","Symbol","iterator","e","n","u","a","f","o","call","next","Object","done","push","value","length","Array","isArray","_typeof","constructor","prototype","_createForOfIteratorHelperLoose","allowArrayLike","it","bind","minLen","_arrayLikeToArray","toString","slice","name","from","test","len","arr2","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","Number","DEFAULT_OPTIONS","schemaPropertyValueForMissingColumn","schemaPropertyValueForUndefinedCellValue","schemaPropertyValueForNullCellValue","schemaPropertyShouldSkipRequiredValidationForMissingColumn","getEmptyObjectValue","getEmptyArrayValue","isColumnOriented","arrayValueSeparator","_default","data","schema","options","_options","rowIndexMap","validateSchema","transpose","columns","results","errors","result","read","_iterator","_step","error","row","rows","rowIndex","path","object","isEmptyObject","createError","_ref","column","errorMessage","reason","type","pendingRequiredChecks","_loop","_Object$keys","_i","schemaEntry","isNestedSchema","propertyPath","concat","prop","cellValue","columnIndex","indexOf","isMissingColumn","array","parseArray","map","_value","parseValue","isEmpty","every","isEmptyValue","required","_i2","_pendingRequiredCheck","_pendingRequiredCheck2","skipRequiredValidation","isRequired","parse","parseCustomValue","parseValueOfType","oneOf","validate","message","StringType","NumberType","Date","DateType","properties","Boolean","BooleanType","Error","getBlock","string","endCharacter","startIndex","substring","character","block","blocks","index","_getBlock","_getBlock2","trim","_","_i3","_Object$keys2","entry"],"sources":["../../../source/read/schema/convertToJson.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 schemaPropertyValueForUndefinedCellValue: undefined,\r\n schemaPropertyValueForNullCellValue: 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 arrayValueSeparator: ','\r\n}\r\n\r\n/**\r\n * (this function is exported from `read-excel-file/map`)\r\n * Converts spreadsheet-alike data structure into an array of objects.\r\n * The first row should be the list of column headers.\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.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 * @param {null} [options.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 * @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 {object} [options.rowIndexMap] — Custom row index mapping `data` rows. If present, will overwrite the indexes of `data` rows with the indexes from this `rowIndexMap`.\r\n * @return {object[]}\r\n */\r\nexport default function(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 rowIndexMap\r\n } = options\r\n\r\n validateSchema(schema)\r\n\r\n if (isColumnOriented) {\r\n data = transpose(data)\r\n }\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, options)\r\n results.push(result)\r\n }\r\n\r\n // Set the correct `row` number in `errors` if a custom `rowIndexMap` is supplied.\r\n if (rowIndexMap) {\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 = rowIndexMap[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 column,\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,\r\n value\r\n }\r\n if (reason) {\r\n error.reason = reason\r\n }\r\n if (schema[column].type) {\r\n error.type = schema[column].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 const isNestedSchema = typeof schemaEntry.type === 'object' && !Array.isArray(schemaEntry.type)\r\n\r\n // The path of this property inside the resulting object.\r\n const propertyPath = `${path || ''}.${schemaEntry.prop}`\r\n\r\n // Read the cell value for the schema entry.\r\n let cellValue\r\n const columnIndex = columns.indexOf(key)\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 (isNestedSchema) {\r\n value = read(schemaEntry.type, row, rowIndex, propertyPath, columns, errors, options)\r\n } else {\r\n if (isMissingColumn) {\r\n value = options.schemaPropertyValueForMissingColumn\r\n }\r\n else if (cellValue === undefined) {\r\n value = options.schemaPropertyValueForUndefinedCellValue\r\n }\r\n else if (cellValue === null) {\r\n value = options.schemaPropertyValueForNullCellValue\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({ column: key, 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 column: key,\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 if (value !== undefined) {\r\n object[schemaEntry.prop] = 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 { column, value, isMissingColumn } of pendingRequiredChecks) {\r\n // Can optionally skip `required` validation for missing columns.\r\n const skipRequiredValidation = isMissingColumn && options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })\r\n if (!skipRequiredValidation) {\r\n const { required } = schema[column]\r\n const isRequired = typeof required === 'boolean' ? required : required(object)\r\n if (isRequired) {\r\n errors.push(createError({\r\n column,\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 result = parseCustomValue(value, schemaEntry.parse)\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 and no .parse():\\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 value = parse(value)\r\n if (value === undefined) {\r\n return { value: null }\r\n }\r\n return { value }\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 entry = schema[key]\r\n if (!entry.prop) {\r\n throw new Error(`\"prop\" not defined for schema entry \"${key}\".`)\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
+ {"version":3,"file":"convertToJson.js","names":["_Number","_interopRequireDefault","require","_String","_Boolean","_Date","obj","__esModule","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","r","l","t","Symbol","iterator","e","n","u","a","f","o","call","next","Object","done","push","value","length","Array","isArray","_typeof","constructor","prototype","_createForOfIteratorHelperLoose","allowArrayLike","it","bind","minLen","_arrayLikeToArray","toString","slice","name","from","test","len","arr2","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","Number","DEFAULT_OPTIONS","schemaPropertyValueForMissingColumn","schemaPropertyValueForUndefinedCellValue","schemaPropertyValueForNullCellValue","schemaPropertyShouldSkipRequiredValidationForMissingColumn","getEmptyObjectValue","getEmptyArrayValue","isColumnOriented","arrayValueSeparator","_default","data","schema","options","_options","rowIndexMap","validateSchema","transpose","columns","results","errors","result","read","_iterator","_step","error","row","rows","rowIndex","path","object","isEmptyObject","createError","_ref","column","errorMessage","reason","type","pendingRequiredChecks","_loop","_Object$keys","_i","schemaEntry","isNestedSchema","propertyPath","concat","prop","cellValue","columnIndex","indexOf","isMissingColumn","array","parseArray","map","_value","parseValue","isEmpty","every","isEmptyValue","required","_i2","_pendingRequiredCheck","_pendingRequiredCheck2","skipRequiredValidation","isRequired","parse","parseCustomValue","parseValueOfType","oneOf","validate","message","parsedValue","StringType","NumberType","Date","DateType","properties","Boolean","BooleanType","Error","getBlock","string","endCharacter","startIndex","substring","character","block","blocks","index","_getBlock","_getBlock2","trim","_","_i3","_Object$keys2","entry"],"sources":["../../../source/read/schema/convertToJson.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 schemaPropertyValueForUndefinedCellValue: undefined,\r\n schemaPropertyValueForNullCellValue: 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 arrayValueSeparator: ','\r\n}\r\n\r\n/**\r\n * (this function is exported from `read-excel-file/map`)\r\n * Converts spreadsheet-alike data structure into an array of objects.\r\n * The first row should be the list of column headers.\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.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 * @param {null} [options.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 * @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 {object} [options.rowIndexMap] — Custom row index mapping `data` rows. If present, will overwrite the indexes of `data` rows with the indexes from this `rowIndexMap`.\r\n * @return {object[]}\r\n */\r\nexport default function(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 rowIndexMap\r\n } = options\r\n\r\n validateSchema(schema)\r\n\r\n if (isColumnOriented) {\r\n data = transpose(data)\r\n }\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, options)\r\n results.push(result)\r\n }\r\n\r\n // Set the correct `row` number in `errors` if a custom `rowIndexMap` is supplied.\r\n if (rowIndexMap) {\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 = rowIndexMap[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 column,\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,\r\n value\r\n }\r\n if (reason) {\r\n error.reason = reason\r\n }\r\n if (schema[column].type) {\r\n error.type = schema[column].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 const isNestedSchema = typeof schemaEntry.type === 'object' && !Array.isArray(schemaEntry.type)\r\n\r\n // The path of this property inside the resulting object.\r\n const propertyPath = `${path || ''}.${schemaEntry.prop}`\r\n\r\n // Read the cell value for the schema entry.\r\n let cellValue\r\n const columnIndex = columns.indexOf(key)\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 (isNestedSchema) {\r\n value = read(schemaEntry.type, row, rowIndex, propertyPath, columns, errors, options)\r\n } else {\r\n if (isMissingColumn) {\r\n value = options.schemaPropertyValueForMissingColumn\r\n }\r\n else if (cellValue === undefined) {\r\n value = options.schemaPropertyValueForUndefinedCellValue\r\n }\r\n else if (cellValue === null) {\r\n value = options.schemaPropertyValueForNullCellValue\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({ column: key, 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 column: key,\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 if (value !== undefined) {\r\n object[schemaEntry.prop] = 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 { column, value, isMissingColumn } of pendingRequiredChecks) {\r\n // Can optionally skip `required` validation for missing columns.\r\n const skipRequiredValidation = isMissingColumn && options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })\r\n if (!skipRequiredValidation) {\r\n const { required } = schema[column]\r\n const isRequired = typeof required === 'boolean' ? required : required(object)\r\n if (isRequired) {\r\n errors.push(createError({\r\n column,\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 result = parseCustomValue(value, schemaEntry.parse)\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 and no .parse():\\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 entry = schema[key]\r\n if (!entry.prop) {\r\n throw new Error(`\"prop\" not defined for schema entry \"${key}\".`)\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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"}
package/index.d.ts CHANGED
@@ -9,6 +9,8 @@ import {
9
9
  export {
10
10
  Schema,
11
11
  ParsedObjectsResult,
12
+ Error,
13
+ CellValue,
12
14
  Row,
13
15
  Integer,
14
16
  Email,
@@ -303,14 +303,14 @@ export function parseValue(value, schemaEntry, options) {
303
303
  */
304
304
  function parseCustomValue(value, parse) {
305
305
  try {
306
- value = parse(value);
307
- if (value === undefined) {
306
+ var parsedValue = parse(value);
307
+ if (parsedValue === undefined) {
308
308
  return {
309
309
  value: null
310
310
  };
311
311
  }
312
312
  return {
313
- value: value
313
+ value: parsedValue
314
314
  };
315
315
  } catch (error) {
316
316
  var result = {
@@ -1 +1 @@
1
- {"version":3,"file":"convertToJson.js","names":["NumberType","StringType","BooleanType","DateType","DEFAULT_OPTIONS","schemaPropertyValueForMissingColumn","undefined","schemaPropertyValueForUndefinedCellValue","schemaPropertyValueForNullCellValue","schemaPropertyShouldSkipRequiredValidationForMissingColumn","getEmptyObjectValue","getEmptyArrayValue","isColumnOriented","arrayValueSeparator","data","schema","options","_objectSpread","_options","rowIndexMap","validateSchema","transpose","columns","results","errors","i","length","result","read","push","_iterator","_createForOfIteratorHelperLoose","_step","done","error","value","row","rows","rowIndex","path","object","isEmptyObject","createError","_ref","column","errorMessage","reason","type","pendingRequiredChecks","_loop","key","_Object$keys","_i","schemaEntry","isNestedSchema","_typeof","Array","isArray","propertyPath","concat","prop","cellValue","columnIndex","indexOf","isMissingColumn","array","parseArray","map","_value","parseValue","isEmpty","every","isEmptyValue","required","Object","keys","_i2","_pendingRequiredCheck","_pendingRequiredCheck2","skipRequiredValidation","isRequired","parse","parseCustomValue","parseValueOfType","oneOf","validate","message","String","Number","Date","properties","Boolean","Error","name","getBlock","string","endCharacter","startIndex","substring","character","block","blocks","index","_getBlock","_getBlock2","_slicedToArray","trim","_","_i3","_Object$keys2","entry"],"sources":["../../../source/read/schema/convertToJson.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 schemaPropertyValueForUndefinedCellValue: undefined,\r\n schemaPropertyValueForNullCellValue: 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 arrayValueSeparator: ','\r\n}\r\n\r\n/**\r\n * (this function is exported from `read-excel-file/map`)\r\n * Converts spreadsheet-alike data structure into an array of objects.\r\n * The first row should be the list of column headers.\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.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 * @param {null} [options.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 * @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 {object} [options.rowIndexMap] — Custom row index mapping `data` rows. If present, will overwrite the indexes of `data` rows with the indexes from this `rowIndexMap`.\r\n * @return {object[]}\r\n */\r\nexport default function(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 rowIndexMap\r\n } = options\r\n\r\n validateSchema(schema)\r\n\r\n if (isColumnOriented) {\r\n data = transpose(data)\r\n }\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, options)\r\n results.push(result)\r\n }\r\n\r\n // Set the correct `row` number in `errors` if a custom `rowIndexMap` is supplied.\r\n if (rowIndexMap) {\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 = rowIndexMap[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 column,\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,\r\n value\r\n }\r\n if (reason) {\r\n error.reason = reason\r\n }\r\n if (schema[column].type) {\r\n error.type = schema[column].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 const isNestedSchema = typeof schemaEntry.type === 'object' && !Array.isArray(schemaEntry.type)\r\n\r\n // The path of this property inside the resulting object.\r\n const propertyPath = `${path || ''}.${schemaEntry.prop}`\r\n\r\n // Read the cell value for the schema entry.\r\n let cellValue\r\n const columnIndex = columns.indexOf(key)\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 (isNestedSchema) {\r\n value = read(schemaEntry.type, row, rowIndex, propertyPath, columns, errors, options)\r\n } else {\r\n if (isMissingColumn) {\r\n value = options.schemaPropertyValueForMissingColumn\r\n }\r\n else if (cellValue === undefined) {\r\n value = options.schemaPropertyValueForUndefinedCellValue\r\n }\r\n else if (cellValue === null) {\r\n value = options.schemaPropertyValueForNullCellValue\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({ column: key, 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 column: key,\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 if (value !== undefined) {\r\n object[schemaEntry.prop] = 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 { column, value, isMissingColumn } of pendingRequiredChecks) {\r\n // Can optionally skip `required` validation for missing columns.\r\n const skipRequiredValidation = isMissingColumn && options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })\r\n if (!skipRequiredValidation) {\r\n const { required } = schema[column]\r\n const isRequired = typeof required === 'boolean' ? required : required(object)\r\n if (isRequired) {\r\n errors.push(createError({\r\n column,\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 result = parseCustomValue(value, schemaEntry.parse)\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 and no .parse():\\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 value = parse(value)\r\n if (value === undefined) {\r\n return { value: null }\r\n }\r\n return { value }\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 entry = schema[key]\r\n if (!entry.prop) {\r\n throw new Error(`\"prop\" not defined for schema entry \"${key}\".`)\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
+ {"version":3,"file":"convertToJson.js","names":["NumberType","StringType","BooleanType","DateType","DEFAULT_OPTIONS","schemaPropertyValueForMissingColumn","undefined","schemaPropertyValueForUndefinedCellValue","schemaPropertyValueForNullCellValue","schemaPropertyShouldSkipRequiredValidationForMissingColumn","getEmptyObjectValue","getEmptyArrayValue","isColumnOriented","arrayValueSeparator","data","schema","options","_objectSpread","_options","rowIndexMap","validateSchema","transpose","columns","results","errors","i","length","result","read","push","_iterator","_createForOfIteratorHelperLoose","_step","done","error","value","row","rows","rowIndex","path","object","isEmptyObject","createError","_ref","column","errorMessage","reason","type","pendingRequiredChecks","_loop","key","_Object$keys","_i","schemaEntry","isNestedSchema","_typeof","Array","isArray","propertyPath","concat","prop","cellValue","columnIndex","indexOf","isMissingColumn","array","parseArray","map","_value","parseValue","isEmpty","every","isEmptyValue","required","Object","keys","_i2","_pendingRequiredCheck","_pendingRequiredCheck2","skipRequiredValidation","isRequired","parse","parseCustomValue","parseValueOfType","oneOf","validate","message","parsedValue","String","Number","Date","properties","Boolean","Error","name","getBlock","string","endCharacter","startIndex","substring","character","block","blocks","index","_getBlock","_getBlock2","_slicedToArray","trim","_","_i3","_Object$keys2","entry"],"sources":["../../../source/read/schema/convertToJson.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 schemaPropertyValueForUndefinedCellValue: undefined,\r\n schemaPropertyValueForNullCellValue: 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 arrayValueSeparator: ','\r\n}\r\n\r\n/**\r\n * (this function is exported from `read-excel-file/map`)\r\n * Converts spreadsheet-alike data structure into an array of objects.\r\n * The first row should be the list of column headers.\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.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 * @param {null} [options.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 * @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 {object} [options.rowIndexMap] — Custom row index mapping `data` rows. If present, will overwrite the indexes of `data` rows with the indexes from this `rowIndexMap`.\r\n * @return {object[]}\r\n */\r\nexport default function(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 rowIndexMap\r\n } = options\r\n\r\n validateSchema(schema)\r\n\r\n if (isColumnOriented) {\r\n data = transpose(data)\r\n }\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, options)\r\n results.push(result)\r\n }\r\n\r\n // Set the correct `row` number in `errors` if a custom `rowIndexMap` is supplied.\r\n if (rowIndexMap) {\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 = rowIndexMap[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 column,\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,\r\n value\r\n }\r\n if (reason) {\r\n error.reason = reason\r\n }\r\n if (schema[column].type) {\r\n error.type = schema[column].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 const isNestedSchema = typeof schemaEntry.type === 'object' && !Array.isArray(schemaEntry.type)\r\n\r\n // The path of this property inside the resulting object.\r\n const propertyPath = `${path || ''}.${schemaEntry.prop}`\r\n\r\n // Read the cell value for the schema entry.\r\n let cellValue\r\n const columnIndex = columns.indexOf(key)\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 (isNestedSchema) {\r\n value = read(schemaEntry.type, row, rowIndex, propertyPath, columns, errors, options)\r\n } else {\r\n if (isMissingColumn) {\r\n value = options.schemaPropertyValueForMissingColumn\r\n }\r\n else if (cellValue === undefined) {\r\n value = options.schemaPropertyValueForUndefinedCellValue\r\n }\r\n else if (cellValue === null) {\r\n value = options.schemaPropertyValueForNullCellValue\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({ column: key, 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 column: key,\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 if (value !== undefined) {\r\n object[schemaEntry.prop] = 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 { column, value, isMissingColumn } of pendingRequiredChecks) {\r\n // Can optionally skip `required` validation for missing columns.\r\n const skipRequiredValidation = isMissingColumn && options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })\r\n if (!skipRequiredValidation) {\r\n const { required } = schema[column]\r\n const isRequired = typeof required === 'boolean' ? required : required(object)\r\n if (isRequired) {\r\n errors.push(createError({\r\n column,\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 result = parseCustomValue(value, schemaEntry.parse)\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 and no .parse():\\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 entry = schema[key]\r\n if (!entry.prop) {\r\n throw new Error(`\"prop\" not defined for schema entry \"${key}\".`)\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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"}
package/node/index.d.ts CHANGED
@@ -13,7 +13,10 @@ import {
13
13
  } from '../types.d.js';
14
14
 
15
15
  export {
16
+ Schema,
16
17
  ParsedObjectsResult,
18
+ Error,
19
+ CellValue,
17
20
  Row,
18
21
  Integer,
19
22
  Email,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "read-excel-file",
3
- "version": "5.8.4",
3
+ "version": "5.8.6",
4
4
  "description": "Read small to medium `*.xlsx` files in a browser or Node.js. Parse to JSON with a strict schema.",
5
5
  "module": "index.js",
6
6
  "main": "index.cjs",
package/types.d.ts CHANGED
@@ -2,8 +2,8 @@ export function Integer(): void;
2
2
  export function URL(): void;
3
3
  export function Email(): void;
4
4
 
5
- type Cell = string | number | boolean | typeof Date
6
- export type Row = Cell[]
5
+ export type CellValue = string | number | boolean | typeof Date
6
+ export type Row = CellValue[]
7
7
 
8
8
  type BasicType =
9
9
  | string
@@ -15,7 +15,7 @@ type BasicType =
15
15
  | typeof Email;
16
16
 
17
17
  // A cell "type" is a function that receives a "raw" value and returns a "parsed" value or `undefined`.
18
- export type Type<Value> = (value: Cell) => Value | undefined;
18
+ export type Type<ParsedValue> = (value: CellValue) => ParsedValue | undefined;
19
19
 
20
20
  type SchemaEntryRequiredProperty<Object> = boolean | ((row: Object) => boolean);
21
21
 
@@ -31,7 +31,7 @@ interface SchemaEntryForValue<Key extends keyof Object, Object, TopLevelObject>
31
31
  // Since then, the `parse()` function has been renamed to `type()` function.
32
32
  interface SchemaEntryForValueLegacy<Key extends keyof Object, Object, TopLevelObject> {
33
33
  prop: Key;
34
- parse: (value: Cell) => Object[Key] | undefined;
34
+ parse: (value: CellValue) => Object[Key] | undefined;
35
35
  oneOf?: Object[Key][];
36
36
  required?: SchemaEntryRequiredProperty<TopLevelObject>;
37
37
  validate?(value: Object[Key]): void;
@@ -52,13 +52,13 @@ type SchemaEntry<Key extends keyof Object, Object, TopLevelObject, ColumnTitle e
52
52
 
53
53
  export type Schema<Object = Record<string, any>, ColumnTitle extends string = string> = Record<ColumnTitle, SchemaEntry<keyof Object, Object, Object, ColumnTitle>>
54
54
 
55
- export interface Error<Value = any> {
55
+ export interface Error<CellValue_ = CellValue, ParsedValue = any> {
56
56
  error: string;
57
57
  reason?: string;
58
58
  row: number;
59
59
  column: string;
60
- value?: Value;
61
- type?: Type<Value>;
60
+ value?: CellValue_;
61
+ type?: Type<ParsedValue>;
62
62
  }
63
63
 
64
64
  export interface ParsedObjectsResult<Object> {
@@ -7,7 +7,10 @@ import {
7
7
  } from '../types.d.js';
8
8
 
9
9
  export {
10
+ Schema,
10
11
  ParsedObjectsResult,
12
+ Error,
13
+ CellValue,
11
14
  Row,
12
15
  Integer,
13
16
  Email,