{"version":3,"file":"spreadparser.mjs","sources":["../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../src/StringUtilities/StringUtilities.ts","../../src/NestedObject/NestedObject.ts","../../src/Spreadparser.ts"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","import Keyable from '../KeyableInterface'\nimport {CaseStyles} from \"../CaseStyles\";\n\ninterface ReplaceMethod {\n    from: RegExp;\n    to: any;\n}\n\nexport default class StringUtilities {\n    replacers : ReplaceMethod[] = [];\n\n    constructor(customReplaceMethods: ReplaceMethod[] = []) {\n        this.replacers = [{\n            from: /^TRUE|FALSE$/i,\n            to: function(bool: string){\n                return bool.toLowerCase() === \"true\";\n            }\n        }, {\n            from: /^-?[0-9]+(.[0-9]+)?$/,\n            to: function(numeric: string) {\n                return Number(numeric);\n            }\n        }];\n        this.replacers = this.replacers.concat(customReplaceMethods);\n    }\n\n    fromPatternToValue(value: string): any {\n        const replacer = this.replacers.find((replacer) : boolean => {\n            return replacer.from.test(value);\n        }) || null;\n\n        const callback: any = (value: string, replacer: ReplaceMethod) => {\n            return replacer.to(value, replacer);\n        };\n\n        return replacer === null ? value : callback(value, replacer);\n    }\n\n    static toCase(original: string, caseName: CaseStyles = 'none'): string {\n        const caseNameToMethod: Keyable = {\n            none: this.dontChangeCase,\n            camelCase: this.toCamelCase,\n            snakeCase: this.toSnakeCase\n        };\n\n        return caseNameToMethod[caseName](original);\n    }\n\n    private static clear(original: string): string {\n        return original\n            .toLowerCase()\n            .normalize('NFD')\n            .replace(/[\\u0300-\\u036f]/g, '')\n            .trim()\n    }\n\n    private static toCamelCase(original: string): string {\n        return StringUtilities.clear(original)\n            .replace(/[^a-zA-Z0-9]+(.)/g, (m, char) => char.toUpperCase())\n    }\n\n    private static toSnakeCase(original: string): string {\n        return StringUtilities.clear(original)\n            .replace(/[^a-zA-Z0-9]+(.)/g, (m, char) => `_${char}`)\n    }\n\n    private static dontChangeCase(original: string): string {\n        return original;\n    }\n}\n","import Keyable from '../KeyableInterface';\nimport StringUtilities from '../StringUtilities/StringUtilities';\nimport {CaseStyles} from \"../CaseStyles\";\n\ninterface AssignOptions {\n    separator?: string;\n    titleCase?: CaseStyles\n}\n\nclass NestedObject {\n\n    private static DefaultAssignOptions: AssignOptions = {\n        separator: '__',\n        titleCase: 'none'\n    };\n\n    static assign(target: Keyable, value: any, paths: string, options: AssignOptions = NestedObject.DefaultAssignOptions): void {\n        options = {...NestedObject.DefaultAssignOptions, ...options};\n        const pathList = (paths || \"\").split(options.separator as string);\n        const property: string = StringUtilities.toCase(pathList.shift() || \"\", options.titleCase);\n\n        if(property !== \"\") {\n            target[property] = typeof target[property] === 'undefined'\n                ? (pathList.length === 0 ? value : {})\n                : (pathList.length === 0 ? ([] as any[]).concat(target[property], value) : target[property]);\n\n            this.assign(target[property], value, pathList.join(options.separator), options);\n        }\n    }\n}\n\nexport default NestedObject;\n\n","import Spreadsheet from \"./SpreadsheetInterface\";\nimport Keyable from \"./KeyableInterface\";\nimport NestedObject from \"./NestedObject/NestedObject\";\nimport StringUtilities from \"./StringUtilities/StringUtilities\";\nimport {CaseStyles} from \"./CaseStyles\";\n\ninterface Cell {\n    col: number;\n    row: number;\n    value: string;\n}\n\ninterface SpreadparserOptions {\n    separator?: string;\n    titleCase?: CaseStyles;\n    headerRow?: number;\n    includeEmptyRows?: boolean\n}\n\nclass Spreadparser {\n\n    private static DefaultSpreadparserOptions: SpreadparserOptions = {\n        separator: '__',\n        titleCase: 'none',\n        headerRow: 1,\n        includeEmptyRows: false\n    };\n\n    static parse(original: Spreadsheet, options: SpreadparserOptions = Spreadparser.DefaultSpreadparserOptions): Keyable | any {\n        options = {...Spreadparser.DefaultSpreadparserOptions, ...options};\n\n        const stringUtilities = new StringUtilities();\n        let [headerRowNumber, firstContentRowNumber] = [1, 2];\n\n        const data = (): any[] => {\n            const data: any[] =  original.feed.entry.map(entry => {\n                return {\n                    col: Number(entry.gs$cell.col),\n                    row: Number(entry.gs$cell.row),\n                    value: String(entry.gs$cell.$t)\n                };\n            }).reduce(function (data: Keyable[], cell: Cell, index: number, cells: Cell[]) {\n\n                if(index === 0) {\n                    const rowTitleNumber = Math.max(options.headerRow || 1, cells[0].row);\n                    [headerRowNumber, firstContentRowNumber] = [rowTitleNumber, rowTitleNumber + 1];\n                }\n\n                if (cell.row >= firstContentRowNumber) {\n\n                    const title: Keyable = cells.find(function(c: Cell): boolean {\n                        return c.col === cell.col && c.row === headerRowNumber;\n                    }) || {};\n\n                    data[cell.row - firstContentRowNumber] = data[cell.row - firstContentRowNumber] || {};\n\n                    NestedObject.assign(\n                        data[cell.row - firstContentRowNumber],\n                        stringUtilities.fromPatternToValue(cell.value),\n                        title.value,\n                        options\n                    );\n                }\n                return data;\n            }, []);\n\n            return options.includeEmptyRows === true\n                ? data\n                : data.filter((row: any): boolean => row !== null);\n        };\n\n        return {\n            title: original.feed.title.$t,\n            updated: original.feed.updated.$t,\n            data: data()\n        }\n    }\n\n    static getSpreadsheetUrl(spreadsheetId: string, sheetNumber = 1): string {\n        return `https://spreadsheets.google.com/feeds/cells/${spreadsheetId}/${sheetNumber}/public/full?alt=json`\n    }\n}\n\nexport default Spreadparser;\n"],"names":["StringUtilities","customReplaceMethods","replacers","from","to","bool","toLowerCase","numeric","Number","concat","value","replacer","find","test","callback","original","caseName","caseNameToMethod","none","dontChangeCase","camelCase","toCamelCase","snakeCase","toSnakeCase","normalize","replace","trim","clear","m","char","toUpperCase","NestedObject","target","paths","options","DefaultAssignOptions","pathList","split","separator","property","toCase","shift","titleCase","length","assign","join","Spreadparser","DefaultSpreadparserOptions","stringUtilities","headerRowNumber","firstContentRowNumber","data","feed","entry","map","col","gs$cell","row","String","$t","reduce","cell","index","cells","rowTitleNumber","Math","max","headerRow","title","c","fromPatternToValue","includeEmptyRows","filter","updated","spreadsheetId","sheetNumber"],"mappings":"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"}