{"version":3,"sources":["webpack://casperEventHub/./src/dateRange.ts"],"names":["dateRegex","DateRange","addPredicates","conditions","Error","isObject","start","end","args","startTime","startDate","Date","isGreaterThanOrEqual","endTime","endDate","isLessThanOrEqual","this","allOf","getState","now","nowTime","isValid","date","Rule"],"mappings":"kRASA,IAAMA,EAAN,sBAEqBC,E,iLAEZC,cAAP,YACE,OAAIC,SACF,MAAM,IAAIC,MACR,gEACED,SAFJ,YAKF,IAAKE,YAASF,EAAd,IACE,MAAM,IAAIC,MAAV,iEAR+C,MAa1BD,EAb0B,GAazCG,EAbyC,QAalCC,EAbkC,MAcjD,QACGD,QAAwBN,OAAzB,SACCO,QAAsBP,OAFzB,GAIE,MAAM,IAAII,MAAV,gFAIF,IACA,IACA,IAFMI,EAAN,GAGA,YAAIF,EAAqB,CAGvB,KADAG,GADAC,EAAY,IAAIC,KAAhBD,IACAD,YAEE,IAAeA,GACbC,8BAFJ,EAIE,MAAM,IAAIN,MAAV,6DAIFI,OAAUI,YAAVJ,IAEF,YAAID,EAAmB,CAGrB,KADAM,GADAC,EAAU,IAAIH,KAAdG,IACAD,YAEE,IAAaA,GACXC,8BAFJ,EAIE,MAAM,IAAIV,MAAV,2DAIFI,OAAUO,YAAVP,IAGFQ,KAAA,gBAAqBC,iBAArB,K,EAGKC,SAAP,WACE,IAAMC,EAAM,IAAZ,KACMC,EAAUD,EAAhB,UACA,MAAO,CACLE,QAAS,EAAF,6BAAiB,CADnB,IAELC,KAAMH,I,GA9D2BI","file":"DateRange.js","sourcesContent":["import Rule, { IRule, IRuleState } from './rule'\nimport { Conditions } from './types'\nimport {\n allOf,\n isGreaterThanOrEqual,\n isLessThanOrEqual,\n isObject,\n} from './predicates'\n\nconst dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/\n\nexport default class DateRange extends Rule implements IRule {\n //no more predicate condition support, and limited to one condition\n public addPredicates(conditions: Conditions): void {\n if (conditions.length !== 1) {\n throw new Error(\n 'Error - Casper - isInDateRange requires 1 argument but found ' +\n conditions.length.toString()\n )\n }\n if (!isObject(conditions[0])) {\n throw new Error(\n 'Error - Casper - isInDateRange requires an object as argument'\n )\n }\n\n const { start, end } = conditions[0] as IDateRangeArgument\n if (\n (start !== undefined && !dateRegex.test(start)) ||\n (end !== undefined && !dateRegex.test(end))\n ) {\n throw new Error(\n 'Error - Casper - isInDateRange incorrect date format, YYYY-MM-DD is required'\n )\n }\n const args = []\n let startDate: Date, startTime: number\n let endDate: Date, endTime: number\n if (start !== undefined) {\n startDate = new Date(start)\n startTime = startDate.getTime()\n if (\n (!startTime && startTime !== 0) ||\n !(startDate.toISOString().slice(0, 10) === start)\n ) {\n throw new Error(\n 'Error - Casper - isInDateRange incorrect start date value'\n )\n }\n args.push(isGreaterThanOrEqual(startTime))\n }\n if (end !== undefined) {\n endDate = new Date(end)\n endTime = endDate.getTime()\n if (\n (!endTime && endTime !== 0) ||\n !(endDate.toISOString().slice(0, 10) === end)\n ) {\n throw new Error(\n 'Error - Casper - isInDateRange incorrect end date value'\n )\n }\n args.push(isLessThanOrEqual(endTime))\n }\n\n this.predicates.push(allOf(...args))\n }\n\n public getState(): IDateRangeState {\n const now = new Date()\n const nowTime = now.getTime()\n return {\n isValid: super.validate([nowTime]),\n date: now,\n }\n }\n}\n\nexport interface IDateRangeState extends IRuleState {\n date?: Date\n}\n\nexport interface IDateRangeArgument {\n start?: string\n end?: string\n}\n"],"sourceRoot":""}