{"version":3,"file":"parse.mjs","names":["applyDateFns","ParseError","ParseRootNode","ParseState","tellMeWhen","when","options","parse","input","grammar","_tree$find","state","flags","tree","index","length","find","dateFns"],"sources":["../../src/util/parse.ts"],"sourcesContent":["import { applyDateFns } from './applyDateFns'\nimport { DateFn } from './DateFn'\nimport { GrammarNode } from './GrammarNode'\nimport { ParseError } from './ParseError'\nimport { ParseRootNode } from './ParseRootNode'\nimport { ParseState } from './ParseState'\n\nexport function tellMeWhen(\n  when: string,\n  options: { now?: Date; grammar: GrammarNode }\n): Date | [Date, Date] {\n  return applyDateFns(parse(when, options), options)\n}\n\nexport function parse(\n  input: string,\n  { grammar }: { grammar: GrammarNode }\n): DateFn[] {\n  const state = new ParseState(input, { flags: 'gi' })\n  const tree = grammar.parse(state)\n  if (state.index !== input.length) {\n    throw new ParseError(`syntax error at ${state.index}`, state.index)\n  }\n  return tree.find(ParseRootNode)?.dateFns(input) || []\n}\n"],"mappings":"AAAA,SAASA,YAAY;AAGrB,SAASC,UAAU;AACnB,SAASC,aAAa;AACtB,SAASC,UAAU;AAEnB,OAAO,SAASC,UAAUA,CACxBC,IAAY,EACZC,OAA6C,EACxB;EACrB,OAAON,YAAY,CAACO,KAAK,CAACF,IAAI,EAAEC,OAAO,CAAC,EAAEA,OAAO,CAAC;AACpD;AAEA,OAAO,SAASC,KAAKA,CACnBC,KAAa,EACb;EAAEC;AAAkC,CAAC,EAC3B;EAAA,IAAAC,UAAA;EACV,MAAMC,KAAK,GAAG,IAAIR,UAAU,CAACK,KAAK,EAAE;IAAEI,KAAK,EAAE;EAAK,CAAC,CAAC;EACpD,MAAMC,IAAI,GAAGJ,OAAO,CAACF,KAAK,CAACI,KAAK,CAAC;EACjC,IAAIA,KAAK,CAACG,KAAK,KAAKN,KAAK,CAACO,MAAM,EAAE;IAChC,MAAM,IAAId,UAAU,CAAC,mBAAmBU,KAAK,CAACG,KAAK,EAAE,EAAEH,KAAK,CAACG,KAAK,CAAC;EACrE;EACA,OAAO,EAAAJ,UAAA,GAAAG,IAAI,CAACG,IAAI,CAACd,aAAa,CAAC,cAAAQ,UAAA,uBAAxBA,UAAA,CAA0BO,OAAO,CAACT,KAAK,CAAC,KAAI,EAAE;AACvD","ignoreList":[]}