{"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":""}