{"version":3,"sources":["webpack://casperEventHub/./src/journey.ts"],"names":["Journey","getState","isValid","this","validate","pages","comparePage","isPredicate","expectedPage","visitedPage","identifier","addExpectedJourney","visIdx","visited","expected","expIdx","addExpectedTime","expectedTime","seconds","callback","time","SessionTime","toValidatePages","page","off","Rule"],"mappings":"uhBAOqBA,E,4SAEZC,SAAP,WACE,MAAO,CACLC,QAASC,KAAKC,SADT,KAELC,Y,EAGIC,YAAR,cAIE,OAAIC,YAAJ,GAEIC,EAAa,CAACC,EAAdD,YAAwCA,EAAa,CAACC,EADxD,MAIO,CAACA,EAAD,SAAuBA,EAAvB,WACL,mBACEC,wBAAiCF,EAAjCE,gBADF,M,EAKCC,mBAAP,YAA2D,WACzD,oCAAoB,CACjB,YACC,IACE,IAAIC,EADN,EAEEA,EAASC,SAAiBC,EAAjBD,OAFX,EAGED,IAEA,IAAK,IAAIG,EAAT,EAAqBA,EAASD,EAA9B,QACO,cAAiBD,EAAQD,EAAzB,GAA2CE,EAAhD,IAD6CC,IAGtC,GAAIA,IAAWD,SAAf,EACL,SAIN,a,EAICE,gBAAP,cAIE,IAAMC,EAAN,IAAqBC,EACrBf,KAAA,qBAA4B,CAC1BgB,SAD0B,EAE1BC,KAAMH,GAERI,0CAAkDlB,KAAlDkB,sBACA,oCAAoB,CACjB,YACC,OACEJ,GACAK,EAAA,QAAuB,qBAAiBF,EAAQG,EAAzB,OAAvB,GACEF,kBAHJ,uB,EAQCG,IAAP,WACMrB,KAAJ,sBACEkB,6CACElB,KADFkB,uB,GAjE+BI","file":"Journey.js","sourcesContent":["import Rule, { IRule } from './rule'\nimport { pages } from './store'\nimport { ITargetingRulesEvaluationResult } from './experience'\nimport { Predicate, IUnknownObject } from './types'\nimport { isPredicate } from './predicates'\nimport SessionTime, { ITimeEllapsedCallback } from './session-time'\n\nexport default class Journey extends Rule implements IRule {\n private timeEllapsedCallback?: ITimeEllapsedCallback\n public getState(): JourneyState {\n return {\n isValid: this.validate(pages),\n pages,\n }\n }\n private comparePage(\n visitedPage: IJourneyPage,\n expectedPage: PageCondition\n ): boolean {\n if (isPredicate(expectedPage)) {\n return (\n expectedPage([visitedPage.pageName]) || expectedPage([visitedPage.url])\n )\n } else {\n return [visitedPage.pageName, visitedPage.url].some(\n (identifier) =>\n identifier.toLowerCase().indexOf(expectedPage.toLowerCase()) > -1\n )\n }\n }\n public addExpectedJourney(expected: PageCondition[]): void {\n super.addPredicates([\n ((visited: IJourneyPage[]) => {\n for (\n let visIdx = 0;\n visIdx < visited.length - expected.length + 1;\n visIdx++\n ) {\n for (let expIdx = 0; expIdx < expected.length; expIdx++) {\n if (!this.comparePage(visited[visIdx + expIdx], expected[expIdx])) {\n break\n } else if (expIdx === expected.length - 1) {\n return true\n }\n }\n }\n return false\n }) as Predicate,\n ])\n }\n public addExpectedTime(\n seconds: number,\n callback: () => Promise<ITargetingRulesEvaluationResult>\n ): void {\n const expectedTime = seconds * 1000\n this.timeEllapsedCallback = {\n callback,\n time: expectedTime,\n }\n SessionTime.getInstance().addTimeEllapsedCallback(this.timeEllapsedCallback)\n super.addPredicates([\n ((toValidatePages: IJourneyPage[]) => {\n return (\n expectedTime <=\n toValidatePages.reduce((time, page) => (time += page.time), 0) +\n SessionTime.getInstance().timeInMilliseconds\n )\n }) as Predicate,\n ])\n }\n public off(): void {\n if (this.timeEllapsedCallback) {\n SessionTime.getInstance().removeTimeEllapsedCallback(\n this.timeEllapsedCallback\n )\n }\n }\n}\n\nexport type PageCondition = string | Predicate\n\nexport interface IJourneyPage extends IUnknownObject {\n url: string\n time: number\n pageName: string\n}\n\ninterface JourneyState {\n isValid: boolean\n pages: IJourneyPage[]\n}\n"],"sourceRoot":""}