123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431 |
- ;(function (undefined) {
- var objectTypes = {
- 'function': true,
- 'object': true
- };
- function checkGlobal(value) {
- return (value && value.Object === Object) ? value : null;
- }
- var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) ? exports : null;
- var freeModule = (objectTypes[typeof module] && module && !module.nodeType) ? module : null;
- var freeGlobal = checkGlobal(freeExports && freeModule && typeof global === 'object' && global);
- var freeSelf = checkGlobal(objectTypes[typeof self] && self);
- var freeWindow = checkGlobal(objectTypes[typeof window] && window);
- var moduleExports = (freeModule && freeModule.exports === freeExports) ? freeExports : null;
- var thisGlobal = checkGlobal(objectTypes[typeof this] && this);
- var root = freeGlobal || ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || freeSelf || thisGlobal || Function('return this')();
- var Rx = {
- internals: {},
- config: {
- Promise: root.Promise
- },
- helpers: { }
- };
-
- var noop = Rx.helpers.noop = function () { },
- identity = Rx.helpers.identity = function (x) { return x; },
- defaultNow = Rx.helpers.defaultNow = (function () { return !!Date.now ? Date.now : function () { return +new Date; }; }()),
- defaultComparer = Rx.helpers.defaultComparer = function (x, y) { return isEqual(x, y); },
- defaultSubComparer = Rx.helpers.defaultSubComparer = function (x, y) { return x > y ? 1 : (x < y ? -1 : 0); },
- defaultKeySerializer = Rx.helpers.defaultKeySerializer = function (x) { return x.toString(); },
- defaultError = Rx.helpers.defaultError = function (err) { throw err; },
- isPromise = Rx.helpers.isPromise = function (p) { return !!p && typeof p.subscribe !== 'function' && typeof p.then === 'function'; },
- isFunction = Rx.helpers.isFunction = (function () {
- var isFn = function (value) {
- return typeof value == 'function' || false;
- };
-
- if (isFn(/x/)) {
- isFn = function(value) {
- return typeof value == 'function' && toString.call(value) == '[object Function]';
- };
- }
- return isFn;
- }());
- function cloneArray(arr) {
- var len = arr.length, a = new Array(len);
- for(var i = 0; i < len; i++) { a[i] = arr[i]; }
- return a;
- }
- var errorObj = {e: {}};
-
- function tryCatcherGen(tryCatchTarget) {
- return function tryCatcher() {
- try {
- return tryCatchTarget.apply(this, arguments);
- } catch (e) {
- errorObj.e = e;
- return errorObj;
- }
- };
- }
- var tryCatch = Rx.internals.tryCatch = function tryCatch(fn) {
- if (!isFunction(fn)) { throw new TypeError('fn must be a function'); }
- return tryCatcherGen(fn);
- };
- function thrower(e) {
- throw e;
- }
- Rx.config.longStackSupport = false;
- var hasStacks = false, stacks = tryCatch(function () { throw new Error(); })();
- hasStacks = !!stacks.e && !!stacks.e.stack;
-
- var rStartingLine = captureLine(), rFileName;
- var STACK_JUMP_SEPARATOR = 'From previous event:';
- function makeStackTraceLong(error, observable) {
-
-
- if (hasStacks &&
- observable.stack &&
- typeof error === 'object' &&
- error !== null &&
- error.stack &&
- error.stack.indexOf(STACK_JUMP_SEPARATOR) === -1
- ) {
- var stacks = [];
- for (var o = observable; !!o; o = o.source) {
- if (o.stack) {
- stacks.unshift(o.stack);
- }
- }
- stacks.unshift(error.stack);
- var concatedStacks = stacks.join('\n' + STACK_JUMP_SEPARATOR + '\n');
- error.stack = filterStackString(concatedStacks);
- }
- }
- function filterStackString(stackString) {
- var lines = stackString.split('\n'), desiredLines = [];
- for (var i = 0, len = lines.length; i < len; i++) {
- var line = lines[i];
- if (!isInternalFrame(line) && !isNodeFrame(line) && line) {
- desiredLines.push(line);
- }
- }
- return desiredLines.join('\n');
- }
- function isInternalFrame(stackLine) {
- var fileNameAndLineNumber = getFileNameAndLineNumber(stackLine);
- if (!fileNameAndLineNumber) {
- return false;
- }
- var fileName = fileNameAndLineNumber[0], lineNumber = fileNameAndLineNumber[1];
- return fileName === rFileName &&
- lineNumber >= rStartingLine &&
- lineNumber <= rEndingLine;
- }
- function isNodeFrame(stackLine) {
- return stackLine.indexOf('(module.js:') !== -1 ||
- stackLine.indexOf('(node.js:') !== -1;
- }
- function captureLine() {
- if (!hasStacks) { return; }
- try {
- throw new Error();
- } catch (e) {
- var lines = e.stack.split('\n');
- var firstLine = lines[0].indexOf('@') > 0 ? lines[1] : lines[2];
- var fileNameAndLineNumber = getFileNameAndLineNumber(firstLine);
- if (!fileNameAndLineNumber) { return; }
- rFileName = fileNameAndLineNumber[0];
- return fileNameAndLineNumber[1];
- }
- }
- function getFileNameAndLineNumber(stackLine) {
-
- var attempt1 = /at .+ \((.+):(\d+):(?:\d+)\)$/.exec(stackLine);
- if (attempt1) { return [attempt1[1], Number(attempt1[2])]; }
-
- var attempt2 = /at ([^ ]+):(\d+):(?:\d+)$/.exec(stackLine);
- if (attempt2) { return [attempt2[1], Number(attempt2[2])]; }
-
- var attempt3 = /.*@(.+):(\d+)$/.exec(stackLine);
- if (attempt3) { return [attempt3[1], Number(attempt3[2])]; }
- }
-
- var toString = Object.prototype.toString;
- var arrayClass = '[object Array]',
- funcClass = '[object Function]',
- stringClass = '[object String]';
- if (!Array.prototype.forEach) {
- Array.prototype.forEach = function (callback, thisArg) {
- var T, k;
- if (this == null) {
- throw new TypeError(' this is null or not defined');
- }
- var O = Object(this);
- var len = O.length >>> 0;
- if (typeof callback !== 'function') {
- throw new TypeError(callback + ' is not a function');
- }
- if (arguments.length > 1) {
- T = thisArg;
- }
- k = 0;
- while (k < len) {
- var kValue;
- if (k in O) {
- kValue = O[k];
- callback.call(T, kValue, k, O);
- }
- k++;
- }
- };
- }
- var boxedString = Object('a'),
- splitString = boxedString[0] !== 'a' || !(0 in boxedString);
- if (!Array.prototype.every) {
- Array.prototype.every = function every(fun /*, thisp */) {
- var object = Object(this),
- self = splitString && toString.call(this) === stringClass ?
- this.split('') :
- object,
- length = self.length >>> 0,
- thisp = arguments[1];
- if (toString.call(fun) !== funcClass) {
- throw new TypeError(fun + ' is not a function');
- }
- for (var i = 0; i < length; i++) {
- if (i in self && !fun.call(thisp, self[i], i, object)) {
- return false;
- }
- }
- return true;
- };
- }
- if (!Array.prototype.map) {
- Array.prototype.map = function map(fun /*, thisp*/) {
- var object = Object(this),
- self = splitString && toString.call(this) === stringClass ?
- this.split('') :
- object,
- length = self.length >>> 0,
- result = new Array(length),
- thisp = arguments[1];
- if (toString.call(fun) !== funcClass) {
- throw new TypeError(fun + ' is not a function');
- }
- for (var i = 0; i < length; i++) {
- if (i in self) {
- result[i] = fun.call(thisp, self[i], i, object);
- }
- }
- return result;
- };
- }
- if (!Array.prototype.filter) {
- Array.prototype.filter = function (predicate) {
- var results = [], item, t = new Object(this);
- for (var i = 0, len = t.length >>> 0; i < len; i++) {
- item = t[i];
- if (i in t && predicate.call(arguments[1], item, i, t)) {
- results.push(item);
- }
- }
- return results;
- };
- }
- if (!Array.isArray) {
- Array.isArray = function (arg) {
- return toString.call(arg) === arrayClass;
- };
- }
- if (!Array.prototype.indexOf) {
- Array.prototype.indexOf = function indexOf(searchElement) {
- var t = Object(this);
- var len = t.length >>> 0;
- if (len === 0) {
- return -1;
- }
- var n = 0;
- if (arguments.length > 1) {
- n = Number(arguments[1]);
- if (n !== n) {
- n = 0;
- } else if (n !== 0 && n !== Infinity && n !== -Infinity) {
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
- }
- }
- if (n >= len) {
- return -1;
- }
- var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
- for (; k < len; k++) {
- if (k in t && t[k] === searchElement) {
- return k;
- }
- }
- return -1;
- };
- }
-
- if (!Object.prototype.propertyIsEnumerable) {
- Object.prototype.propertyIsEnumerable = function (key) {
- for (var k in this) { if (k === key) { return true; } }
- return false;
- };
- }
- if (!Object.keys) {
- Object.keys = (function() {
- 'use strict';
- var hasOwnProperty = Object.prototype.hasOwnProperty,
- hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');
- return function(obj) {
- if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
- throw new TypeError('Object.keys called on non-object');
- }
- var result = [], prop, i;
- for (prop in obj) {
- if (hasOwnProperty.call(obj, prop)) {
- result.push(prop);
- }
- }
- if (hasDontEnumBug) {
- for (i = 0; i < dontEnumsLength; i++) {
- if (hasOwnProperty.call(obj, dontEnums[i])) {
- result.push(dontEnums[i]);
- }
- }
- }
- return result;
- };
- }());
- }
- if (typeof Object.create !== 'function') {
-
-
- Object.create = (function() {
- function Temp() {}
- var hasOwn = Object.prototype.hasOwnProperty;
- return function (O) {
- if (typeof O !== 'object') {
- throw new TypeError('Object prototype may only be an Object or null');
- }
- Temp.prototype = O;
- var obj = new Temp();
- Temp.prototype = null;
- if (arguments.length > 1) {
-
- var Properties = Object(arguments[1]);
- for (var prop in Properties) {
- if (hasOwn.call(Properties, prop)) {
- obj[prop] = Properties[prop];
- }
- }
- }
-
- return obj;
- };
- })();
- }
- root.Element && root.Element.prototype.attachEvent && !root.Element.prototype.addEventListener && (function () {
- function addMethod(name, fn) {
- Window.prototype[name] = HTMLDocument.prototype[name] = Element.prototype[name] = fn;
- }
- addMethod('addEventListener', function (type, listener) {
- var target = this;
- var listeners = target._c1_listeners = target._c1_listeners || {};
- var typeListeners = listeners[type] = listeners[type] || [];
- target.attachEvent('on' + type, typeListeners.event = function (e) {
- e || (e = root.event);
- var documentElement = target.document &&
- target.document.documentElement ||
- target.documentElement ||
- { scrollLeft: 0, scrollTop: 0 };
- e.currentTarget = target;
- e.pageX = e.clientX + documentElement.scrollLeft;
- e.pageY = e.clientY + documentElement.scrollTop;
- e.preventDefault = function () {
- e.bubbledKeyCode = e.keyCode;
- if (e.ctrlKey) {
- try {
- e.keyCode = 0;
- } catch (e) { }
- }
- e.defaultPrevented = true;
- e.returnValue = false;
- e.modified = true;
- e.returnValue = false;
- };
- e.stopImmediatePropagation = function () {
- immediatePropagation = false;
- e.cancelBubble = true;
- };
- e.stopPropagation = function () {
- e.cancelBubble = true;
- };
- e.relatedTarget = e.fromElement || null;
- e.target = e.srcElement || target;
- e.timeStamp = +new Date();
-
- switch(e.type) {
- case 'keypress':
- var c = ('charCode' in e ? e.charCode : e.keyCode);
- if (c === 10) {
- c = 0;
- e.keyCode = 13;
- } else if (c === 13 || c === 27) {
- c = 0;
- } else if (c === 3) {
- c = 99;
- }
- e.charCode = c;
- e.keyChar = e.charCode ? String.fromCharCode(e.charCode) : '';
- break;
- }
- var copiedEvent = {};
- for (var prop in e) {
- copiedEvent[prop] = e[prop];
- }
- for (var i = 0, typeListenersCache = [].concat(typeListeners), typeListenerCache, immediatePropagation = true; immediatePropagation && (typeListenerCache = typeListenersCache[i]); ++i) {
- for (var ii = 0, typeListener; typeListener = typeListeners[ii]; ++ii) {
- if (typeListener === typeListenerCache) { typeListener.call(target, copiedEvent); break; }
- }
- }
- });
- typeListeners.push(listener);
- });
- addMethod('removeEventListener', function (type, listener) {
- var target = this;
- var listeners = target._c1_listeners = target._c1_listeners || {};
- var typeListeners = listeners[type] = listeners[type] || [];
- for (var i = typeListeners.length - 1, typeListener; typeListener = typeListeners[i]; --i) {
- if (typeListener === listener) { typeListeners.splice(i, 1); break; }
- }
- !typeListeners.length &&
- typeListeners.event &&
- target.detachEvent('on' + type, typeListeners.event);
- });
- addMethod('dispatchEvent', function (e) {
- var target = this;
- var type = e.type;
- var listeners = target._c1_listeners = target._c1_listeners || {};
- var typeListeners = listeners[type] = listeners[type] || [];
- try {
- return target.fireEvent('on' + type, e);
- } catch (err) {
- return typeListeners.event && typeListeners.event(e);
- }
- });
- function ready() {
- if (ready.interval && document.body) {
- ready.interval = clearInterval(ready.interval);
- document.dispatchEvent(new CustomEvent('DOMContentLoaded'));
- }
- }
- ready.interval = setInterval(ready, 1);
- root.addEventListener('load', ready);
- }());
- (!root.CustomEvent || typeof root.CustomEvent === 'object') && (function() {
- function CustomEvent (type, params) {
- var event;
- params = params || { bubbles: false, cancelable: false, detail: undefined };
- try {
- if (document.createEvent) {
- event = document.createEvent('CustomEvent');
- event.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);
- } else if (document.createEventObject) {
- event = document.createEventObject();
- }
- } catch (error) {
- event = document.createEvent('Event');
- event.initEvent(type, params.bubbles, params.cancelable);
- event.detail = params.detail;
- }
- return event;
- }
- root.CustomEvent && (CustomEvent.prototype = root.CustomEvent.prototype);
- root.CustomEvent = CustomEvent;
- }());
- var EmptyError = Rx.EmptyError = function() {
- this.message = 'Sequence contains no elements.';
- Error.call(this);
- };
- EmptyError.prototype = Object.create(Error.prototype);
- EmptyError.prototype.name = 'EmptyError';
- var ObjectDisposedError = Rx.ObjectDisposedError = function() {
- this.message = 'Object has been disposed';
- Error.call(this);
- };
- ObjectDisposedError.prototype = Object.create(Error.prototype);
- ObjectDisposedError.prototype.name = 'ObjectDisposedError';
- var ArgumentOutOfRangeError = Rx.ArgumentOutOfRangeError = function () {
- this.message = 'Argument out of range';
- Error.call(this);
- };
- ArgumentOutOfRangeError.prototype = Object.create(Error.prototype);
- ArgumentOutOfRangeError.prototype.name = 'ArgumentOutOfRangeError';
- var NotSupportedError = Rx.NotSupportedError = function (message) {
- this.message = message || 'This operation is not supported';
- Error.call(this);
- };
- NotSupportedError.prototype = Object.create(Error.prototype);
- NotSupportedError.prototype.name = 'NotSupportedError';
- var NotImplementedError = Rx.NotImplementedError = function (message) {
- this.message = message || 'This operation is not implemented';
- Error.call(this);
- };
- NotImplementedError.prototype = Object.create(Error.prototype);
- NotImplementedError.prototype.name = 'NotImplementedError';
- var notImplemented = Rx.helpers.notImplemented = function () {
- throw new NotImplementedError();
- };
- var notSupported = Rx.helpers.notSupported = function () {
- throw new NotSupportedError();
- };
-
- var $iterator$ = (typeof Symbol === 'function' && Symbol.iterator) ||
- '_es6shim_iterator_';
-
- if (root.Set && typeof new root.Set()['@@iterator'] === 'function') {
- $iterator$ = '@@iterator';
- }
- var doneEnumerator = Rx.doneEnumerator = { done: true, value: undefined };
- var isIterable = Rx.helpers.isIterable = function (o) {
- return o && o[$iterator$] !== undefined;
- };
- var isArrayLike = Rx.helpers.isArrayLike = function (o) {
- return o && o.length !== undefined;
- };
- Rx.helpers.iterator = $iterator$;
- var bindCallback = Rx.internals.bindCallback = function (func, thisArg, argCount) {
- if (typeof thisArg === 'undefined') { return func; }
- switch(argCount) {
- case 0:
- return function() {
- return func.call(thisArg)
- };
- case 1:
- return function(arg) {
- return func.call(thisArg, arg);
- };
- case 2:
- return function(value, index) {
- return func.call(thisArg, value, index);
- };
- case 3:
- return function(value, index, collection) {
- return func.call(thisArg, value, index, collection);
- };
- }
- return function() {
- return func.apply(thisArg, arguments);
- };
- };
-
- var dontEnums = ['toString',
- 'toLocaleString',
- 'valueOf',
- 'hasOwnProperty',
- 'isPrototypeOf',
- 'propertyIsEnumerable',
- 'constructor'],
- dontEnumsLength = dontEnums.length;
- var argsTag = '[object Arguments]',
- arrayTag = '[object Array]',
- boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- errorTag = '[object Error]',
- funcTag = '[object Function]',
- mapTag = '[object Map]',
- numberTag = '[object Number]',
- objectTag = '[object Object]',
- regexpTag = '[object RegExp]',
- setTag = '[object Set]',
- stringTag = '[object String]',
- weakMapTag = '[object WeakMap]';
- var arrayBufferTag = '[object ArrayBuffer]',
- float32Tag = '[object Float32Array]',
- float64Tag = '[object Float64Array]',
- int8Tag = '[object Int8Array]',
- int16Tag = '[object Int16Array]',
- int32Tag = '[object Int32Array]',
- uint8Tag = '[object Uint8Array]',
- uint8ClampedTag = '[object Uint8ClampedArray]',
- uint16Tag = '[object Uint16Array]',
- uint32Tag = '[object Uint32Array]';
- var typedArrayTags = {};
- typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
- typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
- typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
- typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
- typedArrayTags[uint32Tag] = true;
- typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
- typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
- typedArrayTags[dateTag] = typedArrayTags[errorTag] =
- typedArrayTags[funcTag] = typedArrayTags[mapTag] =
- typedArrayTags[numberTag] = typedArrayTags[objectTag] =
- typedArrayTags[regexpTag] = typedArrayTags[setTag] =
- typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
- var objectProto = Object.prototype,
- hasOwnProperty = objectProto.hasOwnProperty,
- objToString = objectProto.toString,
- MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
- var keys = Object.keys || (function() {
- var hasOwnProperty = Object.prototype.hasOwnProperty,
- hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),
- dontEnums = [
- 'toString',
- 'toLocaleString',
- 'valueOf',
- 'hasOwnProperty',
- 'isPrototypeOf',
- 'propertyIsEnumerable',
- 'constructor'
- ],
- dontEnumsLength = dontEnums.length;
- return function(obj) {
- if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
- throw new TypeError('Object.keys called on non-object');
- }
- var result = [], prop, i;
- for (prop in obj) {
- if (hasOwnProperty.call(obj, prop)) {
- result.push(prop);
- }
- }
- if (hasDontEnumBug) {
- for (i = 0; i < dontEnumsLength; i++) {
- if (hasOwnProperty.call(obj, dontEnums[i])) {
- result.push(dontEnums[i]);
- }
- }
- }
- return result;
- };
- }());
- function equalObjects(object, other, equalFunc, isLoose, stackA, stackB) {
- var objProps = keys(object),
- objLength = objProps.length,
- othProps = keys(other),
- othLength = othProps.length;
- if (objLength !== othLength && !isLoose) {
- return false;
- }
- var index = objLength, key;
- while (index--) {
- key = objProps[index];
- if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {
- return false;
- }
- }
- var skipCtor = isLoose;
- while (++index < objLength) {
- key = objProps[index];
- var objValue = object[key],
- othValue = other[key],
- result;
- if (!(result === undefined ? equalFunc(objValue, othValue, isLoose, stackA, stackB) : result)) {
- return false;
- }
- skipCtor || (skipCtor = key === 'constructor');
- }
- if (!skipCtor) {
- var objCtor = object.constructor,
- othCtor = other.constructor;
- if (objCtor !== othCtor &&
- ('constructor' in object && 'constructor' in other) &&
- !(typeof objCtor === 'function' && objCtor instanceof objCtor &&
- typeof othCtor === 'function' && othCtor instanceof othCtor)) {
- return false;
- }
- }
- return true;
- }
- function equalByTag(object, other, tag) {
- switch (tag) {
- case boolTag:
- case dateTag:
- return +object === +other;
- case errorTag:
- return object.name === other.name && object.message === other.message;
- case numberTag:
- return (object !== +object) ?
- other !== +other :
- object === +other;
- case regexpTag:
- case stringTag:
- return object === (other + '');
- }
- return false;
- }
- var isObject = Rx.internals.isObject = function(value) {
- var type = typeof value;
- return !!value && (type === 'object' || type === 'function');
- };
- function isObjectLike(value) {
- return !!value && typeof value === 'object';
- }
- function isLength(value) {
- return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;
- }
- var isHostObject = (function() {
- try {
- Object({ 'toString': 0 } + '');
- } catch(e) {
- return function() { return false; };
- }
- return function(value) {
- return typeof value.toString !== 'function' && typeof (value + '') === 'string';
- };
- }());
- function isTypedArray(value) {
- return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];
- }
- var isArray = Array.isArray || function(value) {
- return isObjectLike(value) && isLength(value.length) && objToString.call(value) === arrayTag;
- };
- function arraySome (array, predicate) {
- var index = -1,
- length = array.length;
- while (++index < length) {
- if (predicate(array[index], index, array)) {
- return true;
- }
- }
- return false;
- }
- function equalArrays(array, other, equalFunc, isLoose, stackA, stackB) {
- var index = -1,
- arrLength = array.length,
- othLength = other.length;
- if (arrLength !== othLength && !(isLoose && othLength > arrLength)) {
- return false;
- }
-
- while (++index < arrLength) {
- var arrValue = array[index],
- othValue = other[index],
- result;
- if (result !== undefined) {
- if (result) {
- continue;
- }
- return false;
- }
-
- if (isLoose) {
- if (!arraySome(other, function(othValue) {
- return arrValue === othValue || equalFunc(arrValue, othValue, isLoose, stackA, stackB);
- })) {
- return false;
- }
- } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, isLoose, stackA, stackB))) {
- return false;
- }
- }
- return true;
- }
- function baseIsEqualDeep(object, other, equalFunc, isLoose, stackA, stackB) {
- var objIsArr = isArray(object),
- othIsArr = isArray(other),
- objTag = arrayTag,
- othTag = arrayTag;
- if (!objIsArr) {
- objTag = objToString.call(object);
- if (objTag === argsTag) {
- objTag = objectTag;
- } else if (objTag !== objectTag) {
- objIsArr = isTypedArray(object);
- }
- }
- if (!othIsArr) {
- othTag = objToString.call(other);
- if (othTag === argsTag) {
- othTag = objectTag;
- }
- }
- var objIsObj = objTag === objectTag && !isHostObject(object),
- othIsObj = othTag === objectTag && !isHostObject(other),
- isSameTag = objTag === othTag;
- if (isSameTag && !(objIsArr || objIsObj)) {
- return equalByTag(object, other, objTag);
- }
- if (!isLoose) {
- var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
- othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
- if (objIsWrapped || othIsWrapped) {
- return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, isLoose, stackA, stackB);
- }
- }
- if (!isSameTag) {
- return false;
- }
-
-
- stackA || (stackA = []);
- stackB || (stackB = []);
- var length = stackA.length;
- while (length--) {
- if (stackA[length] === object) {
- return stackB[length] === other;
- }
- }
-
- stackA.push(object);
- stackB.push(other);
- var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, isLoose, stackA, stackB);
- stackA.pop();
- stackB.pop();
- return result;
- }
- function baseIsEqual(value, other, isLoose, stackA, stackB) {
- if (value === other) {
- return true;
- }
- if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
- return value !== value && other !== other;
- }
- return baseIsEqualDeep(value, other, baseIsEqual, isLoose, stackA, stackB);
- }
- var isEqual = Rx.internals.isEqual = function (value, other) {
- return baseIsEqual(value, other);
- };
- var hasProp = {}.hasOwnProperty,
- slice = Array.prototype.slice;
- var inherits = Rx.internals.inherits = function (child, parent) {
- function __() { this.constructor = child; }
- __.prototype = parent.prototype;
- child.prototype = new __();
- };
- var addProperties = Rx.internals.addProperties = function (obj) {
- for(var sources = [], i = 1, len = arguments.length; i < len; i++) { sources.push(arguments[i]); }
- for (var idx = 0, ln = sources.length; idx < ln; idx++) {
- var source = sources[idx];
- for (var prop in source) {
- obj[prop] = source[prop];
- }
- }
- };
-
- var addRef = Rx.internals.addRef = function (xs, r) {
- return new AnonymousObservable(function (observer) {
- return new BinaryDisposable(r.getDisposable(), xs.subscribe(observer));
- });
- };
- function arrayInitialize(count, factory) {
- var a = new Array(count);
- for (var i = 0; i < count; i++) {
- a[i] = factory();
- }
- return a;
- }
-
- var CompositeDisposable = Rx.CompositeDisposable = function () {
- var args = [], i, len;
- if (Array.isArray(arguments[0])) {
- args = arguments[0];
- } else {
- len = arguments.length;
- args = new Array(len);
- for(i = 0; i < len; i++) { args[i] = arguments[i]; }
- }
- this.disposables = args;
- this.isDisposed = false;
- this.length = args.length;
- };
- var CompositeDisposablePrototype = CompositeDisposable.prototype;
-
- CompositeDisposablePrototype.add = function (item) {
- if (this.isDisposed) {
- item.dispose();
- } else {
- this.disposables.push(item);
- this.length++;
- }
- };
-
- CompositeDisposablePrototype.remove = function (item) {
- var shouldDispose = false;
- if (!this.isDisposed) {
- var idx = this.disposables.indexOf(item);
- if (idx !== -1) {
- shouldDispose = true;
- this.disposables.splice(idx, 1);
- this.length--;
- item.dispose();
- }
- }
- return shouldDispose;
- };
-
- CompositeDisposablePrototype.dispose = function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- var len = this.disposables.length, currentDisposables = new Array(len);
- for(var i = 0; i < len; i++) { currentDisposables[i] = this.disposables[i]; }
- this.disposables = [];
- this.length = 0;
- for (i = 0; i < len; i++) {
- currentDisposables[i].dispose();
- }
- }
- };
-
- var Disposable = Rx.Disposable = function (action) {
- this.isDisposed = false;
- this.action = action || noop;
- };
-
- Disposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this.action();
- this.isDisposed = true;
- }
- };
-
- var disposableCreate = Disposable.create = function (action) { return new Disposable(action); };
-
- var disposableEmpty = Disposable.empty = { dispose: noop };
-
- var isDisposable = Disposable.isDisposable = function (d) {
- return d && isFunction(d.dispose);
- };
- var checkDisposed = Disposable.checkDisposed = function (disposable) {
- if (disposable.isDisposed) { throw new ObjectDisposedError(); }
- };
- var disposableFixup = Disposable._fixup = function (result) {
- return isDisposable(result) ? result : disposableEmpty;
- };
-
- var SingleAssignmentDisposable = Rx.SingleAssignmentDisposable = function () {
- this.isDisposed = false;
- this.current = null;
- };
- SingleAssignmentDisposable.prototype.getDisposable = function () {
- return this.current;
- };
- SingleAssignmentDisposable.prototype.setDisposable = function (value) {
- if (this.current) { throw new Error('Disposable has already been assigned'); }
- var shouldDispose = this.isDisposed;
- !shouldDispose && (this.current = value);
- shouldDispose && value && value.dispose();
- };
- SingleAssignmentDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- var old = this.current;
- this.current = null;
- old && old.dispose();
- }
- };
-
- var SerialDisposable = Rx.SerialDisposable = function () {
- this.isDisposed = false;
- this.current = null;
- };
- SerialDisposable.prototype.getDisposable = function () {
- return this.current;
- };
- SerialDisposable.prototype.setDisposable = function (value) {
- var shouldDispose = this.isDisposed;
- if (!shouldDispose) {
- var old = this.current;
- this.current = value;
- }
- old && old.dispose();
- shouldDispose && value && value.dispose();
- };
- SerialDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- var old = this.current;
- this.current = null;
- }
- old && old.dispose();
- };
- var BinaryDisposable = Rx.BinaryDisposable = function (first, second) {
- this._first = first;
- this._second = second;
- this.isDisposed = false;
- };
- BinaryDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- var old1 = this._first;
- this._first = null;
- old1 && old1.dispose();
- var old2 = this._second;
- this._second = null;
- old2 && old2.dispose();
- }
- };
- var NAryDisposable = Rx.NAryDisposable = function (disposables) {
- this._disposables = disposables;
- this.isDisposed = false;
- };
- NAryDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- for (var i = 0, len = this._disposables.length; i < len; i++) {
- this._disposables[i].dispose();
- }
- this._disposables.length = 0;
- }
- };
-
- var RefCountDisposable = Rx.RefCountDisposable = (function () {
- function InnerDisposable(disposable) {
- this.disposable = disposable;
- this.disposable.count++;
- this.isInnerDisposed = false;
- }
- InnerDisposable.prototype.dispose = function () {
- if (!this.disposable.isDisposed && !this.isInnerDisposed) {
- this.isInnerDisposed = true;
- this.disposable.count--;
- if (this.disposable.count === 0 && this.disposable.isPrimaryDisposed) {
- this.disposable.isDisposed = true;
- this.disposable.underlyingDisposable.dispose();
- }
- }
- };
-
- function RefCountDisposable(disposable) {
- this.underlyingDisposable = disposable;
- this.isDisposed = false;
- this.isPrimaryDisposed = false;
- this.count = 0;
- }
-
- RefCountDisposable.prototype.dispose = function () {
- if (!this.isDisposed && !this.isPrimaryDisposed) {
- this.isPrimaryDisposed = true;
- if (this.count === 0) {
- this.isDisposed = true;
- this.underlyingDisposable.dispose();
- }
- }
- };
-
- RefCountDisposable.prototype.getDisposable = function () {
- return this.isDisposed ? disposableEmpty : new InnerDisposable(this);
- };
- return RefCountDisposable;
- })();
- var ScheduledItem = Rx.internals.ScheduledItem = function (scheduler, state, action, dueTime, comparer) {
- this.scheduler = scheduler;
- this.state = state;
- this.action = action;
- this.dueTime = dueTime;
- this.comparer = comparer || defaultSubComparer;
- this.disposable = new SingleAssignmentDisposable();
- };
- ScheduledItem.prototype.invoke = function () {
- this.disposable.setDisposable(this.invokeCore());
- };
- ScheduledItem.prototype.compareTo = function (other) {
- return this.comparer(this.dueTime, other.dueTime);
- };
- ScheduledItem.prototype.isCancelled = function () {
- return this.disposable.isDisposed;
- };
- ScheduledItem.prototype.invokeCore = function () {
- return disposableFixup(this.action(this.scheduler, this.state));
- };
-
- var Scheduler = Rx.Scheduler = (function () {
- function Scheduler() { }
-
- Scheduler.isScheduler = function (s) {
- return s instanceof Scheduler;
- };
- var schedulerProto = Scheduler.prototype;
-
- schedulerProto.schedule = function (state, action) {
- throw new NotImplementedError();
- };
-
- schedulerProto.scheduleFuture = function (state, dueTime, action) {
- var dt = dueTime;
- dt instanceof Date && (dt = dt - this.now());
- dt = Scheduler.normalize(dt);
- if (dt === 0) { return this.schedule(state, action); }
- return this._scheduleFuture(state, dt, action);
- };
- schedulerProto._scheduleFuture = function (state, dueTime, action) {
- throw new NotImplementedError();
- };
-
- Scheduler.now = defaultNow;
-
- Scheduler.prototype.now = defaultNow;
-
- Scheduler.normalize = function (timeSpan) {
- timeSpan < 0 && (timeSpan = 0);
- return timeSpan;
- };
- return Scheduler;
- }());
- var normalizeTime = Scheduler.normalize, isScheduler = Scheduler.isScheduler;
- (function (schedulerProto) {
- function invokeRecImmediate(scheduler, pair) {
- var state = pair[0], action = pair[1], group = new CompositeDisposable();
- action(state, innerAction);
- return group;
- function innerAction(state2) {
- var isAdded = false, isDone = false;
- var d = scheduler.schedule(state2, scheduleWork);
- if (!isDone) {
- group.add(d);
- isAdded = true;
- }
- function scheduleWork(_, state3) {
- if (isAdded) {
- group.remove(d);
- } else {
- isDone = true;
- }
- action(state3, innerAction);
- return disposableEmpty;
- }
- }
- }
- function invokeRecDate(scheduler, pair) {
- var state = pair[0], action = pair[1], group = new CompositeDisposable();
- action(state, innerAction);
- return group;
- function innerAction(state2, dueTime1) {
- var isAdded = false, isDone = false;
- var d = scheduler.scheduleFuture(state2, dueTime1, scheduleWork);
- if (!isDone) {
- group.add(d);
- isAdded = true;
- }
- function scheduleWork(_, state3) {
- if (isAdded) {
- group.remove(d);
- } else {
- isDone = true;
- }
- action(state3, innerAction);
- return disposableEmpty;
- }
- }
- }
-
- schedulerProto.scheduleRecursive = function (state, action) {
- return this.schedule([state, action], invokeRecImmediate);
- };
-
- schedulerProto.scheduleRecursiveFuture = function (state, dueTime, action) {
- return this.scheduleFuture([state, action], dueTime, invokeRecDate);
- };
- }(Scheduler.prototype));
- (function (schedulerProto) {
-
- schedulerProto.schedulePeriodic = function(state, period, action) {
- if (typeof root.setInterval === 'undefined') { throw new NotSupportedError(); }
- period = normalizeTime(period);
- var s = state, id = root.setInterval(function () { s = action(s); }, period);
- return disposableCreate(function () { root.clearInterval(id); });
- };
- }(Scheduler.prototype));
-
- var ImmediateScheduler = (function (__super__) {
- inherits(ImmediateScheduler, __super__);
- function ImmediateScheduler() {
- __super__.call(this);
- }
- ImmediateScheduler.prototype.schedule = function (state, action) {
- return disposableFixup(action(this, state));
- };
- return ImmediateScheduler;
- }(Scheduler));
- var immediateScheduler = Scheduler.immediate = new ImmediateScheduler();
-
- var CurrentThreadScheduler = (function (__super__) {
- var queue;
- function runTrampoline () {
- while (queue.length > 0) {
- var item = queue.dequeue();
- !item.isCancelled() && item.invoke();
- }
- }
- inherits(CurrentThreadScheduler, __super__);
- function CurrentThreadScheduler() {
- __super__.call(this);
- }
- CurrentThreadScheduler.prototype.schedule = function (state, action) {
- var si = new ScheduledItem(this, state, action, this.now());
- if (!queue) {
- queue = new PriorityQueue(4);
- queue.enqueue(si);
- var result = tryCatch(runTrampoline)();
- queue = null;
- if (result === errorObj) { thrower(result.e); }
- } else {
- queue.enqueue(si);
- }
- return si.disposable;
- };
- CurrentThreadScheduler.prototype.scheduleRequired = function () { return !queue; };
- return CurrentThreadScheduler;
- }(Scheduler));
- var currentThreadScheduler = Scheduler.currentThread = new CurrentThreadScheduler();
- var SchedulePeriodicRecursive = Rx.internals.SchedulePeriodicRecursive = (function () {
- function createTick(self) {
- return function tick(command, recurse) {
- recurse(0, self._period);
- var state = tryCatch(self._action)(self._state);
- if (state === errorObj) {
- self._cancel.dispose();
- thrower(state.e);
- }
- self._state = state;
- };
- }
- function SchedulePeriodicRecursive(scheduler, state, period, action) {
- this._scheduler = scheduler;
- this._state = state;
- this._period = period;
- this._action = action;
- }
- SchedulePeriodicRecursive.prototype.start = function () {
- var d = new SingleAssignmentDisposable();
- this._cancel = d;
- d.setDisposable(this._scheduler.scheduleRecursiveFuture(0, this._period, createTick(this)));
- return d;
- };
- return SchedulePeriodicRecursive;
- }());
- var scheduleMethod, clearMethod;
- var localTimer = (function () {
- var localSetTimeout, localClearTimeout = noop;
- if (!!root.setTimeout) {
- localSetTimeout = root.setTimeout;
- localClearTimeout = root.clearTimeout;
- } else if (!!root.WScript) {
- localSetTimeout = function (fn, time) {
- root.WScript.Sleep(time);
- fn();
- };
- } else {
- throw new NotSupportedError();
- }
- return {
- setTimeout: localSetTimeout,
- clearTimeout: localClearTimeout
- };
- }());
- var localSetTimeout = localTimer.setTimeout,
- localClearTimeout = localTimer.clearTimeout;
- (function () {
- var nextHandle = 1, tasksByHandle = {}, currentlyRunning = false;
- clearMethod = function (handle) {
- delete tasksByHandle[handle];
- };
- function runTask(handle) {
- if (currentlyRunning) {
- localSetTimeout(function () { runTask(handle); }, 0);
- } else {
- var task = tasksByHandle[handle];
- if (task) {
- currentlyRunning = true;
- var result = tryCatch(task)();
- clearMethod(handle);
- currentlyRunning = false;
- if (result === errorObj) { thrower(result.e); }
- }
- }
- }
- var reNative = new RegExp('^' +
- String(toString)
- .replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
- .replace(/toString| for [^\]]+/g, '.*?') + '$'
- );
- var setImmediate = typeof (setImmediate = freeGlobal && moduleExports && freeGlobal.setImmediate) == 'function' &&
- !reNative.test(setImmediate) && setImmediate;
- function postMessageSupported () {
-
- if (!root.postMessage || root.importScripts) { return false; }
- var isAsync = false, oldHandler = root.onmessage;
-
- root.onmessage = function () { isAsync = true; };
- root.postMessage('', '*');
- root.onmessage = oldHandler;
- return isAsync;
- }
-
- if (isFunction(setImmediate)) {
- scheduleMethod = function (action) {
- var id = nextHandle++;
- tasksByHandle[id] = action;
- setImmediate(function () { runTask(id); });
- return id;
- };
- } else if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {
- scheduleMethod = function (action) {
- var id = nextHandle++;
- tasksByHandle[id] = action;
- process.nextTick(function () { runTask(id); });
- return id;
- };
- } else if (postMessageSupported()) {
- var MSG_PREFIX = 'ms.rx.schedule' + Math.random();
- var onGlobalPostMessage = function (event) {
-
- if (typeof event.data === 'string' && event.data.substring(0, MSG_PREFIX.length) === MSG_PREFIX) {
- runTask(event.data.substring(MSG_PREFIX.length));
- }
- };
- root.addEventListener('message', onGlobalPostMessage, false);
- scheduleMethod = function (action) {
- var id = nextHandle++;
- tasksByHandle[id] = action;
- root.postMessage(MSG_PREFIX + id, '*');
- return id;
- };
- } else if (!!root.MessageChannel) {
- var channel = new root.MessageChannel();
- channel.port1.onmessage = function (e) { runTask(e.data); };
- scheduleMethod = function (action) {
- var id = nextHandle++;
- tasksByHandle[id] = action;
- channel.port2.postMessage(id);
- return id;
- };
- } else if ('document' in root && 'onreadystatechange' in root.document.createElement('script')) {
- scheduleMethod = function (action) {
- var scriptElement = root.document.createElement('script');
- var id = nextHandle++;
- tasksByHandle[id] = action;
- scriptElement.onreadystatechange = function () {
- runTask(id);
- scriptElement.onreadystatechange = null;
- scriptElement.parentNode.removeChild(scriptElement);
- scriptElement = null;
- };
- root.document.documentElement.appendChild(scriptElement);
- return id;
- };
- } else {
- scheduleMethod = function (action) {
- var id = nextHandle++;
- tasksByHandle[id] = action;
- localSetTimeout(function () {
- runTask(id);
- }, 0);
- return id;
- };
- }
- }());
-
- var DefaultScheduler = (function (__super__) {
- inherits(DefaultScheduler, __super__);
- function DefaultScheduler() {
- __super__.call(this);
- }
- function scheduleAction(disposable, action, scheduler, state) {
- return function schedule() {
- disposable.setDisposable(Disposable._fixup(action(scheduler, state)));
- };
- }
- function ClearDisposable(id) {
- this._id = id;
- this.isDisposed = false;
- }
- ClearDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- clearMethod(this._id);
- }
- };
- function LocalClearDisposable(id) {
- this._id = id;
- this.isDisposed = false;
- }
- LocalClearDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- localClearTimeout(this._id);
- }
- };
- DefaultScheduler.prototype.schedule = function (state, action) {
- var disposable = new SingleAssignmentDisposable(),
- id = scheduleMethod(scheduleAction(disposable, action, this, state));
- return new BinaryDisposable(disposable, new ClearDisposable(id));
- };
- DefaultScheduler.prototype._scheduleFuture = function (state, dueTime, action) {
- if (dueTime === 0) { return this.schedule(state, action); }
- var disposable = new SingleAssignmentDisposable(),
- id = localSetTimeout(scheduleAction(disposable, action, this, state), dueTime);
- return new BinaryDisposable(disposable, new LocalClearDisposable(id));
- };
- function scheduleLongRunning(state, action, disposable) {
- return function () { action(state, disposable); };
- }
- DefaultScheduler.prototype.scheduleLongRunning = function (state, action) {
- var disposable = disposableCreate(noop);
- scheduleMethod(scheduleLongRunning(state, action, disposable));
- return disposable;
- };
- return DefaultScheduler;
- }(Scheduler));
- var defaultScheduler = Scheduler['default'] = Scheduler.async = new DefaultScheduler();
- function IndexedItem(id, value) {
- this.id = id;
- this.value = value;
- }
- IndexedItem.prototype.compareTo = function (other) {
- var c = this.value.compareTo(other.value);
- c === 0 && (c = this.id - other.id);
- return c;
- };
- var PriorityQueue = Rx.internals.PriorityQueue = function (capacity) {
- this.items = new Array(capacity);
- this.length = 0;
- };
- var priorityProto = PriorityQueue.prototype;
- priorityProto.isHigherPriority = function (left, right) {
- return this.items[left].compareTo(this.items[right]) < 0;
- };
- priorityProto.percolate = function (index) {
- if (index >= this.length || index < 0) { return; }
- var parent = index - 1 >> 1;
- if (parent < 0 || parent === index) { return; }
- if (this.isHigherPriority(index, parent)) {
- var temp = this.items[index];
- this.items[index] = this.items[parent];
- this.items[parent] = temp;
- this.percolate(parent);
- }
- };
- priorityProto.heapify = function (index) {
- +index || (index = 0);
- if (index >= this.length || index < 0) { return; }
- var left = 2 * index + 1,
- right = 2 * index + 2,
- first = index;
- if (left < this.length && this.isHigherPriority(left, first)) {
- first = left;
- }
- if (right < this.length && this.isHigherPriority(right, first)) {
- first = right;
- }
- if (first !== index) {
- var temp = this.items[index];
- this.items[index] = this.items[first];
- this.items[first] = temp;
- this.heapify(first);
- }
- };
- priorityProto.peek = function () { return this.items[0].value; };
- priorityProto.removeAt = function (index) {
- this.items[index] = this.items[--this.length];
- this.items[this.length] = undefined;
- this.heapify();
- };
- priorityProto.dequeue = function () {
- var result = this.peek();
- this.removeAt(0);
- return result;
- };
- priorityProto.enqueue = function (item) {
- var index = this.length++;
- this.items[index] = new IndexedItem(PriorityQueue.count++, item);
- this.percolate(index);
- };
- priorityProto.remove = function (item) {
- for (var i = 0; i < this.length; i++) {
- if (this.items[i].value === item) {
- this.removeAt(i);
- return true;
- }
- }
- return false;
- };
- PriorityQueue.count = 0;
-
- var Notification = Rx.Notification = (function () {
- function Notification() {
- }
- Notification.prototype._accept = function (onNext, onError, onCompleted) {
- throw new NotImplementedError();
- };
- Notification.prototype._acceptObserver = function (onNext, onError, onCompleted) {
- throw new NotImplementedError();
- };
-
- Notification.prototype.accept = function (observerOrOnNext, onError, onCompleted) {
- return observerOrOnNext && typeof observerOrOnNext === 'object' ?
- this._acceptObserver(observerOrOnNext) :
- this._accept(observerOrOnNext, onError, onCompleted);
- };
-
- Notification.prototype.toObservable = function (scheduler) {
- var self = this;
- isScheduler(scheduler) || (scheduler = immediateScheduler);
- return new AnonymousObservable(function (o) {
- return scheduler.schedule(self, function (_, notification) {
- notification._acceptObserver(o);
- notification.kind === 'N' && o.onCompleted();
- });
- });
- };
- return Notification;
- })();
- var OnNextNotification = (function (__super__) {
- inherits(OnNextNotification, __super__);
- function OnNextNotification(value) {
- this.value = value;
- this.kind = 'N';
- }
- OnNextNotification.prototype._accept = function (onNext) {
- return onNext(this.value);
- };
- OnNextNotification.prototype._acceptObserver = function (o) {
- return o.onNext(this.value);
- };
- OnNextNotification.prototype.toString = function () {
- return 'OnNext(' + this.value + ')';
- };
- return OnNextNotification;
- }(Notification));
- var OnErrorNotification = (function (__super__) {
- inherits(OnErrorNotification, __super__);
- function OnErrorNotification(error) {
- this.error = error;
- this.kind = 'E';
- }
- OnErrorNotification.prototype._accept = function (onNext, onError) {
- return onError(this.error);
- };
- OnErrorNotification.prototype._acceptObserver = function (o) {
- return o.onError(this.error);
- };
- OnErrorNotification.prototype.toString = function () {
- return 'OnError(' + this.error + ')';
- };
- return OnErrorNotification;
- }(Notification));
- var OnCompletedNotification = (function (__super__) {
- inherits(OnCompletedNotification, __super__);
- function OnCompletedNotification() {
- this.kind = 'C';
- }
- OnCompletedNotification.prototype._accept = function (onNext, onError, onCompleted) {
- return onCompleted();
- };
- OnCompletedNotification.prototype._acceptObserver = function (o) {
- return o.onCompleted();
- };
- OnCompletedNotification.prototype.toString = function () {
- return 'OnCompleted()';
- };
- return OnCompletedNotification;
- }(Notification));
-
- var notificationCreateOnNext = Notification.createOnNext = function (value) {
- return new OnNextNotification(value);
- };
-
- var notificationCreateOnError = Notification.createOnError = function (error) {
- return new OnErrorNotification(error);
- };
-
- var notificationCreateOnCompleted = Notification.createOnCompleted = function () {
- return new OnCompletedNotification();
- };
-
- var Observer = Rx.Observer = function () { };
-
- var observerCreate = Observer.create = function (onNext, onError, onCompleted) {
- onNext || (onNext = noop);
- onError || (onError = defaultError);
- onCompleted || (onCompleted = noop);
- return new AnonymousObserver(onNext, onError, onCompleted);
- };
-
- var AbstractObserver = Rx.internals.AbstractObserver = (function (__super__) {
- inherits(AbstractObserver, __super__);
-
- function AbstractObserver() {
- this.isStopped = false;
- }
-
- AbstractObserver.prototype.next = notImplemented;
- AbstractObserver.prototype.error = notImplemented;
- AbstractObserver.prototype.completed = notImplemented;
-
- AbstractObserver.prototype.onNext = function (value) {
- !this.isStopped && this.next(value);
- };
-
- AbstractObserver.prototype.onError = function (error) {
- if (!this.isStopped) {
- this.isStopped = true;
- this.error(error);
- }
- };
-
- AbstractObserver.prototype.onCompleted = function () {
- if (!this.isStopped) {
- this.isStopped = true;
- this.completed();
- }
- };
-
- AbstractObserver.prototype.dispose = function () { this.isStopped = true; };
- AbstractObserver.prototype.fail = function (e) {
- if (!this.isStopped) {
- this.isStopped = true;
- this.error(e);
- return true;
- }
- return false;
- };
- return AbstractObserver;
- }(Observer));
-
- var AnonymousObserver = Rx.AnonymousObserver = (function (__super__) {
- inherits(AnonymousObserver, __super__);
-
- function AnonymousObserver(onNext, onError, onCompleted) {
- __super__.call(this);
- this._onNext = onNext;
- this._onError = onError;
- this._onCompleted = onCompleted;
- }
-
- AnonymousObserver.prototype.next = function (value) {
- this._onNext(value);
- };
-
- AnonymousObserver.prototype.error = function (error) {
- this._onError(error);
- };
-
- AnonymousObserver.prototype.completed = function () {
- this._onCompleted();
- };
- return AnonymousObserver;
- }(AbstractObserver));
- var observableProto;
-
- var Observable = Rx.Observable = (function () {
- function makeSubscribe(self, subscribe) {
- return function (o) {
- var oldOnError = o.onError;
- o.onError = function (e) {
- makeStackTraceLong(e, self);
- oldOnError.call(o, e);
- };
- return subscribe.call(self, o);
- };
- }
- function Observable() {
- if (Rx.config.longStackSupport && hasStacks) {
- var oldSubscribe = this._subscribe;
- var e = tryCatch(thrower)(new Error()).e;
- this.stack = e.stack.substring(e.stack.indexOf('\n') + 1);
- this._subscribe = makeSubscribe(this, oldSubscribe);
- }
- }
- observableProto = Observable.prototype;
-
- Observable.isObservable = function (o) {
- return o && isFunction(o.subscribe);
- };
-
- observableProto.subscribe = observableProto.forEach = function (oOrOnNext, onError, onCompleted) {
- return this._subscribe(typeof oOrOnNext === 'object' ?
- oOrOnNext :
- observerCreate(oOrOnNext, onError, onCompleted));
- };
-
- observableProto.subscribeOnNext = function (onNext, thisArg) {
- return this._subscribe(observerCreate(typeof thisArg !== 'undefined' ? function(x) { onNext.call(thisArg, x); } : onNext));
- };
-
- observableProto.subscribeOnError = function (onError, thisArg) {
- return this._subscribe(observerCreate(null, typeof thisArg !== 'undefined' ? function(e) { onError.call(thisArg, e); } : onError));
- };
-
- observableProto.subscribeOnCompleted = function (onCompleted, thisArg) {
- return this._subscribe(observerCreate(null, null, typeof thisArg !== 'undefined' ? function() { onCompleted.call(thisArg); } : onCompleted));
- };
- return Observable;
- })();
- var ObservableBase = Rx.ObservableBase = (function (__super__) {
- inherits(ObservableBase, __super__);
- function fixSubscriber(subscriber) {
- return subscriber && isFunction(subscriber.dispose) ? subscriber :
- isFunction(subscriber) ? disposableCreate(subscriber) : disposableEmpty;
- }
- function setDisposable(s, state) {
- var ado = state[0], self = state[1];
- var sub = tryCatch(self.subscribeCore).call(self, ado);
- if (sub === errorObj && !ado.fail(errorObj.e)) { thrower(errorObj.e); }
- ado.setDisposable(fixSubscriber(sub));
- }
- function ObservableBase() {
- __super__.call(this);
- }
- ObservableBase.prototype._subscribe = function (o) {
- var ado = new AutoDetachObserver(o), state = [ado, this];
- if (currentThreadScheduler.scheduleRequired()) {
- currentThreadScheduler.schedule(state, setDisposable);
- } else {
- setDisposable(null, state);
- }
- return ado;
- };
- ObservableBase.prototype.subscribeCore = notImplemented;
- return ObservableBase;
- }(Observable));
- var FlatMapObservable = Rx.FlatMapObservable = (function(__super__) {
- inherits(FlatMapObservable, __super__);
- function FlatMapObservable(source, selector, resultSelector, thisArg) {
- this.resultSelector = isFunction(resultSelector) ? resultSelector : null;
- this.selector = bindCallback(isFunction(selector) ? selector : function() { return selector; }, thisArg, 3);
- this.source = source;
- __super__.call(this);
- }
- FlatMapObservable.prototype.subscribeCore = function(o) {
- return this.source.subscribe(new InnerObserver(o, this.selector, this.resultSelector, this));
- };
- inherits(InnerObserver, AbstractObserver);
- function InnerObserver(observer, selector, resultSelector, source) {
- this.i = 0;
- this.selector = selector;
- this.resultSelector = resultSelector;
- this.source = source;
- this.o = observer;
- AbstractObserver.call(this);
- }
- InnerObserver.prototype._wrapResult = function(result, x, i) {
- return this.resultSelector ?
- result.map(function(y, i2) { return this.resultSelector(x, y, i, i2); }, this) :
- result;
- };
- InnerObserver.prototype.next = function(x) {
- var i = this.i++;
- var result = tryCatch(this.selector)(x, i, this.source);
- if (result === errorObj) { return this.o.onError(result.e); }
- isPromise(result) && (result = observableFromPromise(result));
- (isArrayLike(result) || isIterable(result)) && (result = Observable.from(result));
- this.o.onNext(this._wrapResult(result, x, i));
- };
- InnerObserver.prototype.error = function(e) { this.o.onError(e); };
- InnerObserver.prototype.completed = function() { this.o.onCompleted(); };
- return FlatMapObservable;
- }(ObservableBase));
- var Enumerable = Rx.internals.Enumerable = function () { };
- function IsDisposedDisposable(state) {
- this._s = state;
- this.isDisposed = false;
- }
- IsDisposedDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- this._s.isDisposed = true;
- }
- };
- var ConcatEnumerableObservable = (function(__super__) {
- inherits(ConcatEnumerableObservable, __super__);
- function ConcatEnumerableObservable(sources) {
- this.sources = sources;
- __super__.call(this);
- }
- function scheduleMethod(state, recurse) {
- if (state.isDisposed) { return; }
- var currentItem = tryCatch(state.e.next).call(state.e);
- if (currentItem === errorObj) { return state.o.onError(currentItem.e); }
- if (currentItem.done) { return state.o.onCompleted(); }
-
- var currentValue = currentItem.value;
- isPromise(currentValue) && (currentValue = observableFromPromise(currentValue));
- var d = new SingleAssignmentDisposable();
- state.subscription.setDisposable(d);
- d.setDisposable(currentValue.subscribe(new InnerObserver(state, recurse)));
- }
- ConcatEnumerableObservable.prototype.subscribeCore = function (o) {
- var subscription = new SerialDisposable();
- var state = {
- isDisposed: false,
- o: o,
- subscription: subscription,
- e: this.sources[$iterator$]()
- };
- var cancelable = currentThreadScheduler.scheduleRecursive(state, scheduleMethod);
- return new NAryDisposable([subscription, cancelable, new IsDisposedDisposable(state)]);
- };
- function InnerObserver(state, recurse) {
- this._state = state;
- this._recurse = recurse;
- AbstractObserver.call(this);
- }
- inherits(InnerObserver, AbstractObserver);
- InnerObserver.prototype.next = function (x) { this._state.o.onNext(x); };
- InnerObserver.prototype.error = function (e) { this._state.o.onError(e); };
- InnerObserver.prototype.completed = function () { this._recurse(this._state); };
- return ConcatEnumerableObservable;
- }(ObservableBase));
- Enumerable.prototype.concat = function () {
- return new ConcatEnumerableObservable(this);
- };
- var CatchErrorObservable = (function(__super__) {
- function CatchErrorObservable(sources) {
- this.sources = sources;
- __super__.call(this);
- }
- inherits(CatchErrorObservable, __super__);
- function scheduleMethod(state, recurse) {
- if (state.isDisposed) { return; }
- var currentItem = tryCatch(state.e.next).call(state.e);
- if (currentItem === errorObj) { return state.o.onError(currentItem.e); }
- if (currentItem.done) { return state.lastError !== null ? state.o.onError(state.lastError) : state.o.onCompleted(); }
- var currentValue = currentItem.value;
- isPromise(currentValue) && (currentValue = observableFromPromise(currentValue));
- var d = new SingleAssignmentDisposable();
- state.subscription.setDisposable(d);
- d.setDisposable(currentValue.subscribe(new InnerObserver(state, recurse)));
- }
- CatchErrorObservable.prototype.subscribeCore = function (o) {
- var subscription = new SerialDisposable();
- var state = {
- isDisposed: false,
- e: this.sources[$iterator$](),
- subscription: subscription,
- lastError: null,
- o: o
- };
- var cancelable = currentThreadScheduler.scheduleRecursive(state, scheduleMethod);
- return new NAryDisposable([subscription, cancelable, new IsDisposedDisposable(state)]);
- };
- function InnerObserver(state, recurse) {
- this._state = state;
- this._recurse = recurse;
- AbstractObserver.call(this);
- }
- inherits(InnerObserver, AbstractObserver);
- InnerObserver.prototype.next = function (x) { this._state.o.onNext(x); };
- InnerObserver.prototype.error = function (e) { this._state.lastError = e; this._recurse(this._state); };
- InnerObserver.prototype.completed = function () { this._state.o.onCompleted(); };
- return CatchErrorObservable;
- }(ObservableBase));
- Enumerable.prototype.catchError = function () {
- return new CatchErrorObservable(this);
- };
- var RepeatEnumerable = (function (__super__) {
- inherits(RepeatEnumerable, __super__);
- function RepeatEnumerable(v, c) {
- this.v = v;
- this.c = c == null ? -1 : c;
- }
- RepeatEnumerable.prototype[$iterator$] = function () {
- return new RepeatEnumerator(this);
- };
- function RepeatEnumerator(p) {
- this.v = p.v;
- this.l = p.c;
- }
- RepeatEnumerator.prototype.next = function () {
- if (this.l === 0) { return doneEnumerator; }
- if (this.l > 0) { this.l--; }
- return { done: false, value: this.v };
- };
- return RepeatEnumerable;
- }(Enumerable));
- var enumerableRepeat = Enumerable.repeat = function (value, repeatCount) {
- return new RepeatEnumerable(value, repeatCount);
- };
- var OfEnumerable = (function(__super__) {
- inherits(OfEnumerable, __super__);
- function OfEnumerable(s, fn, thisArg) {
- this.s = s;
- this.fn = fn ? bindCallback(fn, thisArg, 3) : null;
- }
- OfEnumerable.prototype[$iterator$] = function () {
- return new OfEnumerator(this);
- };
- function OfEnumerator(p) {
- this.i = -1;
- this.s = p.s;
- this.l = this.s.length;
- this.fn = p.fn;
- }
- OfEnumerator.prototype.next = function () {
- return ++this.i < this.l ?
- { done: false, value: !this.fn ? this.s[this.i] : this.fn(this.s[this.i], this.i, this.s) } :
- doneEnumerator;
- };
- return OfEnumerable;
- }(Enumerable));
- var enumerableOf = Enumerable.of = function (source, selector, thisArg) {
- return new OfEnumerable(source, selector, thisArg);
- };
- var ScheduledObserver = Rx.internals.ScheduledObserver = (function (__super__) {
- inherits(ScheduledObserver, __super__);
- function ScheduledObserver(scheduler, observer) {
- __super__.call(this);
- this.scheduler = scheduler;
- this.observer = observer;
- this.isAcquired = false;
- this.hasFaulted = false;
- this.queue = [];
- this.disposable = new SerialDisposable();
- }
- function enqueueNext(observer, x) { return function () { observer.onNext(x); }; }
- function enqueueError(observer, e) { return function () { observer.onError(e); }; }
- function enqueueCompleted(observer) { return function () { observer.onCompleted(); }; }
- ScheduledObserver.prototype.next = function (x) {
- this.queue.push(enqueueNext(this.observer, x));
- };
- ScheduledObserver.prototype.error = function (e) {
- this.queue.push(enqueueError(this.observer, e));
- };
- ScheduledObserver.prototype.completed = function () {
- this.queue.push(enqueueCompleted(this.observer));
- };
- function scheduleMethod(state, recurse) {
- var work;
- if (state.queue.length > 0) {
- work = state.queue.shift();
- } else {
- state.isAcquired = false;
- return;
- }
- var res = tryCatch(work)();
- if (res === errorObj) {
- state.queue = [];
- state.hasFaulted = true;
- return thrower(res.e);
- }
- recurse(state);
- }
- ScheduledObserver.prototype.ensureActive = function () {
- var isOwner = false;
- if (!this.hasFaulted && this.queue.length > 0) {
- isOwner = !this.isAcquired;
- this.isAcquired = true;
- }
- isOwner &&
- this.disposable.setDisposable(this.scheduler.scheduleRecursive(this, scheduleMethod));
- };
- ScheduledObserver.prototype.dispose = function () {
- __super__.prototype.dispose.call(this);
- this.disposable.dispose();
- };
- return ScheduledObserver;
- }(AbstractObserver));
- var ToArrayObservable = (function(__super__) {
- inherits(ToArrayObservable, __super__);
- function ToArrayObservable(source) {
- this.source = source;
- __super__.call(this);
- }
- ToArrayObservable.prototype.subscribeCore = function(o) {
- return this.source.subscribe(new InnerObserver(o));
- };
- inherits(InnerObserver, AbstractObserver);
- function InnerObserver(o) {
- this.o = o;
- this.a = [];
- AbstractObserver.call(this);
- }
-
- InnerObserver.prototype.next = function (x) { this.a.push(x); };
- InnerObserver.prototype.error = function (e) { this.o.onError(e); };
- InnerObserver.prototype.completed = function () { this.o.onNext(this.a); this.o.onCompleted(); };
- return ToArrayObservable;
- }(ObservableBase));
-
- observableProto.toArray = function () {
- return new ToArrayObservable(this);
- };
-
- Observable.create = function (subscribe, parent) {
- return new AnonymousObservable(subscribe, parent);
- };
- var Defer = (function(__super__) {
- inherits(Defer, __super__);
- function Defer(factory) {
- this._f = factory;
- __super__.call(this);
- }
- Defer.prototype.subscribeCore = function (o) {
- var result = tryCatch(this._f)();
- if (result === errorObj) { return observableThrow(result.e).subscribe(o);}
- isPromise(result) && (result = observableFromPromise(result));
- return result.subscribe(o);
- };
- return Defer;
- }(ObservableBase));
-
- var observableDefer = Observable.defer = function (observableFactory) {
- return new Defer(observableFactory);
- };
- var EmptyObservable = (function(__super__) {
- inherits(EmptyObservable, __super__);
- function EmptyObservable(scheduler) {
- this.scheduler = scheduler;
- __super__.call(this);
- }
- EmptyObservable.prototype.subscribeCore = function (observer) {
- var sink = new EmptySink(observer, this.scheduler);
- return sink.run();
- };
- function EmptySink(observer, scheduler) {
- this.observer = observer;
- this.scheduler = scheduler;
- }
- function scheduleItem(s, state) {
- state.onCompleted();
- return disposableEmpty;
- }
- EmptySink.prototype.run = function () {
- var state = this.observer;
- return this.scheduler === immediateScheduler ?
- scheduleItem(null, state) :
- this.scheduler.schedule(state, scheduleItem);
- };
- return EmptyObservable;
- }(ObservableBase));
- var EMPTY_OBSERVABLE = new EmptyObservable(immediateScheduler);
-
- var observableEmpty = Observable.empty = function (scheduler) {
- isScheduler(scheduler) || (scheduler = immediateScheduler);
- return scheduler === immediateScheduler ? EMPTY_OBSERVABLE : new EmptyObservable(scheduler);
- };
- var FromObservable = (function(__super__) {
- inherits(FromObservable, __super__);
- function FromObservable(iterable, fn, scheduler) {
- this._iterable = iterable;
- this._fn = fn;
- this._scheduler = scheduler;
- __super__.call(this);
- }
- function createScheduleMethod(o, it, fn) {
- return function loopRecursive(i, recurse) {
- var next = tryCatch(it.next).call(it);
- if (next === errorObj) { return o.onError(next.e); }
- if (next.done) { return o.onCompleted(); }
- var result = next.value;
- if (isFunction(fn)) {
- result = tryCatch(fn)(result, i);
- if (result === errorObj) { return o.onError(result.e); }
- }
- o.onNext(result);
- recurse(i + 1);
- };
- }
- FromObservable.prototype.subscribeCore = function (o) {
- var list = Object(this._iterable),
- it = getIterable(list);
- return this._scheduler.scheduleRecursive(0, createScheduleMethod(o, it, this._fn));
- };
- return FromObservable;
- }(ObservableBase));
- var maxSafeInteger = Math.pow(2, 53) - 1;
- function StringIterable(s) {
- this._s = s;
- }
- StringIterable.prototype[$iterator$] = function () {
- return new StringIterator(this._s);
- };
- function StringIterator(s) {
- this._s = s;
- this._l = s.length;
- this._i = 0;
- }
- StringIterator.prototype[$iterator$] = function () {
- return this;
- };
- StringIterator.prototype.next = function () {
- return this._i < this._l ? { done: false, value: this._s.charAt(this._i++) } : doneEnumerator;
- };
- function ArrayIterable(a) {
- this._a = a;
- }
- ArrayIterable.prototype[$iterator$] = function () {
- return new ArrayIterator(this._a);
- };
- function ArrayIterator(a) {
- this._a = a;
- this._l = toLength(a);
- this._i = 0;
- }
- ArrayIterator.prototype[$iterator$] = function () {
- return this;
- };
- ArrayIterator.prototype.next = function () {
- return this._i < this._l ? { done: false, value: this._a[this._i++] } : doneEnumerator;
- };
- function numberIsFinite(value) {
- return typeof value === 'number' && root.isFinite(value);
- }
- function isNan(n) {
- return n !== n;
- }
- function getIterable(o) {
- var i = o[$iterator$], it;
- if (!i && typeof o === 'string') {
- it = new StringIterable(o);
- return it[$iterator$]();
- }
- if (!i && o.length !== undefined) {
- it = new ArrayIterable(o);
- return it[$iterator$]();
- }
- if (!i) { throw new TypeError('Object is not iterable'); }
- return o[$iterator$]();
- }
- function sign(value) {
- var number = +value;
- if (number === 0) { return number; }
- if (isNaN(number)) { return number; }
- return number < 0 ? -1 : 1;
- }
- function toLength(o) {
- var len = +o.length;
- if (isNaN(len)) { return 0; }
- if (len === 0 || !numberIsFinite(len)) { return len; }
- len = sign(len) * Math.floor(Math.abs(len));
- if (len <= 0) { return 0; }
- if (len > maxSafeInteger) { return maxSafeInteger; }
- return len;
- }
-
- var observableFrom = Observable.from = function (iterable, mapFn, thisArg, scheduler) {
- if (iterable == null) {
- throw new Error('iterable cannot be null.')
- }
- if (mapFn && !isFunction(mapFn)) {
- throw new Error('mapFn when provided must be a function');
- }
- if (mapFn) {
- var mapper = bindCallback(mapFn, thisArg, 2);
- }
- isScheduler(scheduler) || (scheduler = currentThreadScheduler);
- return new FromObservable(iterable, mapper, scheduler);
- }
- var FromArrayObservable = (function(__super__) {
- inherits(FromArrayObservable, __super__);
- function FromArrayObservable(args, scheduler) {
- this._args = args;
- this._scheduler = scheduler;
- __super__.call(this);
- }
- function scheduleMethod(o, args) {
- var len = args.length;
- return function loopRecursive (i, recurse) {
- if (i < len) {
- o.onNext(args[i]);
- recurse(i + 1);
- } else {
- o.onCompleted();
- }
- };
- }
- FromArrayObservable.prototype.subscribeCore = function (o) {
- return this._scheduler.scheduleRecursive(0, scheduleMethod(o, this._args));
- };
- return FromArrayObservable;
- }(ObservableBase));
-
- var observableFromArray = Observable.fromArray = function (array, scheduler) {
- isScheduler(scheduler) || (scheduler = currentThreadScheduler);
- return new FromArrayObservable(array, scheduler)
- };
- var NeverObservable = (function(__super__) {
- inherits(NeverObservable, __super__);
- function NeverObservable() {
- __super__.call(this);
- }
- NeverObservable.prototype.subscribeCore = function (observer) {
- return disposableEmpty;
- };
- return NeverObservable;
- }(ObservableBase));
- var NEVER_OBSERVABLE = new NeverObservable();
-
- var observableNever = Observable.never = function () {
- return NEVER_OBSERVABLE;
- };
- function observableOf (scheduler, array) {
- isScheduler(scheduler) || (scheduler = currentThreadScheduler);
- return new FromArrayObservable(array, scheduler);
- }
-
- Observable.of = function () {
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- return new FromArrayObservable(args, currentThreadScheduler);
- };
-
- Observable.ofWithScheduler = function (scheduler) {
- var len = arguments.length, args = new Array(len - 1);
- for(var i = 1; i < len; i++) { args[i - 1] = arguments[i]; }
- return new FromArrayObservable(args, scheduler);
- };
- var PairsObservable = (function(__super__) {
- inherits(PairsObservable, __super__);
- function PairsObservable(o, scheduler) {
- this._o = o;
- this._keys = Object.keys(o);
- this._scheduler = scheduler;
- __super__.call(this);
- }
- function scheduleMethod(o, obj, keys) {
- return function loopRecursive(i, recurse) {
- if (i < keys.length) {
- var key = keys[i];
- o.onNext([key, obj[key]]);
- recurse(i + 1);
- } else {
- o.onCompleted();
- }
- };
- }
- PairsObservable.prototype.subscribeCore = function (o) {
- return this._scheduler.scheduleRecursive(0, scheduleMethod(o, this._o, this._keys));
- };
- return PairsObservable;
- }(ObservableBase));
-
- Observable.pairs = function (obj, scheduler) {
- scheduler || (scheduler = currentThreadScheduler);
- return new PairsObservable(obj, scheduler);
- };
- var RangeObservable = (function(__super__) {
- inherits(RangeObservable, __super__);
- function RangeObservable(start, count, scheduler) {
- this.start = start;
- this.rangeCount = count;
- this.scheduler = scheduler;
- __super__.call(this);
- }
- function loopRecursive(start, count, o) {
- return function loop (i, recurse) {
- if (i < count) {
- o.onNext(start + i);
- recurse(i + 1);
- } else {
- o.onCompleted();
- }
- };
- }
- RangeObservable.prototype.subscribeCore = function (o) {
- return this.scheduler.scheduleRecursive(
- 0,
- loopRecursive(this.start, this.rangeCount, o)
- );
- };
- return RangeObservable;
- }(ObservableBase));
-
- Observable.range = function (start, count, scheduler) {
- isScheduler(scheduler) || (scheduler = currentThreadScheduler);
- return new RangeObservable(start, count, scheduler);
- };
- var RepeatObservable = (function(__super__) {
- inherits(RepeatObservable, __super__);
- function RepeatObservable(value, repeatCount, scheduler) {
- this.value = value;
- this.repeatCount = repeatCount == null ? -1 : repeatCount;
- this.scheduler = scheduler;
- __super__.call(this);
- }
- RepeatObservable.prototype.subscribeCore = function (observer) {
- var sink = new RepeatSink(observer, this);
- return sink.run();
- };
- return RepeatObservable;
- }(ObservableBase));
- function RepeatSink(observer, parent) {
- this.observer = observer;
- this.parent = parent;
- }
- RepeatSink.prototype.run = function () {
- var observer = this.observer, value = this.parent.value;
- function loopRecursive(i, recurse) {
- if (i === -1 || i > 0) {
- observer.onNext(value);
- i > 0 && i--;
- }
- if (i === 0) { return observer.onCompleted(); }
- recurse(i);
- }
- return this.parent.scheduler.scheduleRecursive(this.parent.repeatCount, loopRecursive);
- };
-
- Observable.repeat = function (value, repeatCount, scheduler) {
- isScheduler(scheduler) || (scheduler = currentThreadScheduler);
- return new RepeatObservable(value, repeatCount, scheduler);
- };
- var JustObservable = (function(__super__) {
- inherits(JustObservable, __super__);
- function JustObservable(value, scheduler) {
- this._value = value;
- this._scheduler = scheduler;
- __super__.call(this);
- }
- JustObservable.prototype.subscribeCore = function (o) {
- var state = [this._value, o];
- return this._scheduler === immediateScheduler ?
- scheduleItem(null, state) :
- this._scheduler.schedule(state, scheduleItem);
- };
- function scheduleItem(s, state) {
- var value = state[0], observer = state[1];
- observer.onNext(value);
- observer.onCompleted();
- return disposableEmpty;
- }
- return JustObservable;
- }(ObservableBase));
-
- var observableReturn = Observable['return'] = Observable.just = function (value, scheduler) {
- isScheduler(scheduler) || (scheduler = immediateScheduler);
- return new JustObservable(value, scheduler);
- };
- var ThrowObservable = (function(__super__) {
- inherits(ThrowObservable, __super__);
- function ThrowObservable(error, scheduler) {
- this._error = error;
- this._scheduler = scheduler;
- __super__.call(this);
- }
- ThrowObservable.prototype.subscribeCore = function (o) {
- var state = [this._error, o];
- return this._scheduler === immediateScheduler ?
- scheduleItem(null, state) :
- this._scheduler.schedule(state, scheduleItem);
- };
- function scheduleItem(s, state) {
- var e = state[0], o = state[1];
- o.onError(e);
- return disposableEmpty;
- }
- return ThrowObservable;
- }(ObservableBase));
-
- var observableThrow = Observable['throw'] = function (error, scheduler) {
- isScheduler(scheduler) || (scheduler = immediateScheduler);
- return new ThrowObservable(error, scheduler);
- };
- var CatchObservable = (function (__super__) {
- inherits(CatchObservable, __super__);
- function CatchObservable(source, fn) {
- this.source = source;
- this._fn = fn;
- __super__.call(this);
- }
- CatchObservable.prototype.subscribeCore = function (o) {
- var d1 = new SingleAssignmentDisposable(), subscription = new SerialDisposable();
- subscription.setDisposable(d1);
- d1.setDisposable(this.source.subscribe(new CatchObserver(o, subscription, this._fn)));
- return subscription;
- };
- return CatchObservable;
- }(ObservableBase));
- var CatchObserver = (function(__super__) {
- inherits(CatchObserver, __super__);
- function CatchObserver(o, s, fn) {
- this._o = o;
- this._s = s;
- this._fn = fn;
- __super__.call(this);
- }
- CatchObserver.prototype.next = function (x) { this._o.onNext(x); };
- CatchObserver.prototype.completed = function () { return this._o.onCompleted(); };
- CatchObserver.prototype.error = function (e) {
- var result = tryCatch(this._fn)(e);
- if (result === errorObj) { return this._o.onError(result.e); }
- isPromise(result) && (result = observableFromPromise(result));
- var d = new SingleAssignmentDisposable();
- this._s.setDisposable(d);
- d.setDisposable(result.subscribe(this._o));
- };
- return CatchObserver;
- }(AbstractObserver));
-
- observableProto['catch'] = function (handlerOrSecond) {
- return isFunction(handlerOrSecond) ? new CatchObservable(this, handlerOrSecond) : observableCatch([this, handlerOrSecond]);
- };
-
- var observableCatch = Observable['catch'] = function () {
- var items;
- if (Array.isArray(arguments[0])) {
- items = arguments[0];
- } else {
- var len = arguments.length;
- items = new Array(len);
- for(var i = 0; i < len; i++) { items[i] = arguments[i]; }
- }
- return enumerableOf(items).catchError();
- };
-
- observableProto.combineLatest = function () {
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- if (Array.isArray(args[0])) {
- args[0].unshift(this);
- } else {
- args.unshift(this);
- }
- return combineLatest.apply(this, args);
- };
- function falseFactory() { return false; }
- function argumentsToArray() {
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- return args;
- }
- var CombineLatestObservable = (function(__super__) {
- inherits(CombineLatestObservable, __super__);
- function CombineLatestObservable(params, cb) {
- this._params = params;
- this._cb = cb;
- __super__.call(this);
- }
- CombineLatestObservable.prototype.subscribeCore = function(observer) {
- var len = this._params.length,
- subscriptions = new Array(len);
- var state = {
- hasValue: arrayInitialize(len, falseFactory),
- hasValueAll: false,
- isDone: arrayInitialize(len, falseFactory),
- values: new Array(len)
- };
- for (var i = 0; i < len; i++) {
- var source = this._params[i], sad = new SingleAssignmentDisposable();
- subscriptions[i] = sad;
- isPromise(source) && (source = observableFromPromise(source));
- sad.setDisposable(source.subscribe(new CombineLatestObserver(observer, i, this._cb, state)));
- }
- return new NAryDisposable(subscriptions);
- };
- return CombineLatestObservable;
- }(ObservableBase));
- var CombineLatestObserver = (function (__super__) {
- inherits(CombineLatestObserver, __super__);
- function CombineLatestObserver(o, i, cb, state) {
- this._o = o;
- this._i = i;
- this._cb = cb;
- this._state = state;
- __super__.call(this);
- }
- function notTheSame(i) {
- return function (x, j) {
- return j !== i;
- };
- }
- CombineLatestObserver.prototype.next = function (x) {
- this._state.values[this._i] = x;
- this._state.hasValue[this._i] = true;
- if (this._state.hasValueAll || (this._state.hasValueAll = this._state.hasValue.every(identity))) {
- var res = tryCatch(this._cb).apply(null, this._state.values);
- if (res === errorObj) { return this._o.onError(res.e); }
- this._o.onNext(res);
- } else if (this._state.isDone.filter(notTheSame(this._i)).every(identity)) {
- this._o.onCompleted();
- }
- };
- CombineLatestObserver.prototype.error = function (e) {
- this._o.onError(e);
- };
- CombineLatestObserver.prototype.completed = function () {
- this._state.isDone[this._i] = true;
- this._state.isDone.every(identity) && this._o.onCompleted();
- };
- return CombineLatestObserver;
- }(AbstractObserver));
-
- var combineLatest = Observable.combineLatest = function () {
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- var resultSelector = isFunction(args[len - 1]) ? args.pop() : argumentsToArray;
- Array.isArray(args[0]) && (args = args[0]);
- return new CombineLatestObservable(args, resultSelector);
- };
-
- observableProto.concat = function () {
- for(var args = [], i = 0, len = arguments.length; i < len; i++) { args.push(arguments[i]); }
- args.unshift(this);
- return observableConcat.apply(null, args);
- };
- var ConcatObserver = (function(__super__) {
- inherits(ConcatObserver, __super__);
- function ConcatObserver(s, fn) {
- this._s = s;
- this._fn = fn;
- __super__.call(this);
- }
- ConcatObserver.prototype.next = function (x) { this._s.o.onNext(x); };
- ConcatObserver.prototype.error = function (e) { this._s.o.onError(e); };
- ConcatObserver.prototype.completed = function () { this._s.i++; this._fn(this._s); };
- return ConcatObserver;
- }(AbstractObserver));
- var ConcatObservable = (function(__super__) {
- inherits(ConcatObservable, __super__);
- function ConcatObservable(sources) {
- this._sources = sources;
- __super__.call(this);
- }
- function scheduleRecursive (state, recurse) {
- if (state.disposable.isDisposed) { return; }
- if (state.i === state.sources.length) { return state.o.onCompleted(); }
-
- var currentValue = state.sources[state.i];
- isPromise(currentValue) && (currentValue = observableFromPromise(currentValue));
- var d = new SingleAssignmentDisposable();
- state.subscription.setDisposable(d);
- d.setDisposable(currentValue.subscribe(new ConcatObserver(state, recurse)));
- }
- ConcatObservable.prototype.subscribeCore = function(o) {
- var subscription = new SerialDisposable();
- var disposable = disposableCreate(noop);
- var state = {
- o: o,
- i: 0,
- subscription: subscription,
- disposable: disposable,
- sources: this._sources
- };
- var cancelable = immediateScheduler.scheduleRecursive(state, scheduleRecursive);
- return new NAryDisposable([subscription, disposable, cancelable]);
- };
- return ConcatObservable;
- }(ObservableBase));
-
- var observableConcat = Observable.concat = function () {
- var args;
- if (Array.isArray(arguments[0])) {
- args = arguments[0];
- } else {
- args = new Array(arguments.length);
- for(var i = 0, len = arguments.length; i < len; i++) { args[i] = arguments[i]; }
- }
- return new ConcatObservable(args);
- };
-
- observableProto.concatAll = function () {
- return this.merge(1);
- };
- var MergeObservable = (function (__super__) {
- inherits(MergeObservable, __super__);
- function MergeObservable(source, maxConcurrent) {
- this.source = source;
- this.maxConcurrent = maxConcurrent;
- __super__.call(this);
- }
- MergeObservable.prototype.subscribeCore = function(observer) {
- var g = new CompositeDisposable();
- g.add(this.source.subscribe(new MergeObserver(observer, this.maxConcurrent, g)));
- return g;
- };
- return MergeObservable;
- }(ObservableBase));
- var MergeObserver = (function (__super__) {
- function MergeObserver(o, max, g) {
- this.o = o;
- this.max = max;
- this.g = g;
- this.done = false;
- this.q = [];
- this.activeCount = 0;
- __super__.call(this);
- }
- inherits(MergeObserver, __super__);
- MergeObserver.prototype.handleSubscribe = function (xs) {
- var sad = new SingleAssignmentDisposable();
- this.g.add(sad);
- isPromise(xs) && (xs = observableFromPromise(xs));
- sad.setDisposable(xs.subscribe(new InnerObserver(this, sad)));
- };
- MergeObserver.prototype.next = function (innerSource) {
- if(this.activeCount < this.max) {
- this.activeCount++;
- this.handleSubscribe(innerSource);
- } else {
- this.q.push(innerSource);
- }
- };
- MergeObserver.prototype.error = function (e) { this.o.onError(e); };
- MergeObserver.prototype.completed = function () { this.done = true; this.activeCount === 0 && this.o.onCompleted(); };
- function InnerObserver(parent, sad) {
- this.parent = parent;
- this.sad = sad;
- __super__.call(this);
- }
- inherits(InnerObserver, __super__);
- InnerObserver.prototype.next = function (x) { this.parent.o.onNext(x); };
- InnerObserver.prototype.error = function (e) { this.parent.o.onError(e); };
- InnerObserver.prototype.completed = function () {
- this.parent.g.remove(this.sad);
- if (this.parent.q.length > 0) {
- this.parent.handleSubscribe(this.parent.q.shift());
- } else {
- this.parent.activeCount--;
- this.parent.done && this.parent.activeCount === 0 && this.parent.o.onCompleted();
- }
- };
- return MergeObserver;
- }(AbstractObserver));
-
- observableProto.merge = function (maxConcurrentOrOther) {
- return typeof maxConcurrentOrOther !== 'number' ?
- observableMerge(this, maxConcurrentOrOther) :
- new MergeObservable(this, maxConcurrentOrOther);
- };
-
- var observableMerge = Observable.merge = function () {
- var scheduler, sources = [], i, len = arguments.length;
- if (!arguments[0]) {
- scheduler = immediateScheduler;
- for(i = 1; i < len; i++) { sources.push(arguments[i]); }
- } else if (isScheduler(arguments[0])) {
- scheduler = arguments[0];
- for(i = 1; i < len; i++) { sources.push(arguments[i]); }
- } else {
- scheduler = immediateScheduler;
- for(i = 0; i < len; i++) { sources.push(arguments[i]); }
- }
- if (Array.isArray(sources[0])) {
- sources = sources[0];
- }
- return observableOf(scheduler, sources).mergeAll();
- };
- var MergeAllObservable = (function (__super__) {
- inherits(MergeAllObservable, __super__);
- function MergeAllObservable(source) {
- this.source = source;
- __super__.call(this);
- }
- MergeAllObservable.prototype.subscribeCore = function (o) {
- var g = new CompositeDisposable(), m = new SingleAssignmentDisposable();
- g.add(m);
- m.setDisposable(this.source.subscribe(new MergeAllObserver(o, g)));
- return g;
- };
- return MergeAllObservable;
- }(ObservableBase));
- var MergeAllObserver = (function (__super__) {
- function MergeAllObserver(o, g) {
- this.o = o;
- this.g = g;
- this.done = false;
- __super__.call(this);
- }
- inherits(MergeAllObserver, __super__);
- MergeAllObserver.prototype.next = function(innerSource) {
- var sad = new SingleAssignmentDisposable();
- this.g.add(sad);
- isPromise(innerSource) && (innerSource = observableFromPromise(innerSource));
- sad.setDisposable(innerSource.subscribe(new InnerObserver(this, sad)));
- };
- MergeAllObserver.prototype.error = function (e) {
- this.o.onError(e);
- };
- MergeAllObserver.prototype.completed = function () {
- this.done = true;
- this.g.length === 1 && this.o.onCompleted();
- };
- function InnerObserver(parent, sad) {
- this.parent = parent;
- this.sad = sad;
- __super__.call(this);
- }
- inherits(InnerObserver, __super__);
- InnerObserver.prototype.next = function (x) {
- this.parent.o.onNext(x);
- };
- InnerObserver.prototype.error = function (e) {
- this.parent.o.onError(e);
- };
- InnerObserver.prototype.completed = function () {
- this.parent.g.remove(this.sad);
- this.parent.done && this.parent.g.length === 1 && this.parent.o.onCompleted();
- };
- return MergeAllObserver;
- }(AbstractObserver));
-
- observableProto.mergeAll = function () {
- return new MergeAllObservable(this);
- };
- var CompositeError = Rx.CompositeError = function(errors) {
- this.innerErrors = errors;
- this.message = 'This contains multiple errors. Check the innerErrors';
- Error.call(this);
- };
- CompositeError.prototype = Object.create(Error.prototype);
- CompositeError.prototype.name = 'CompositeError';
- var MergeDelayErrorObservable = (function(__super__) {
- inherits(MergeDelayErrorObservable, __super__);
- function MergeDelayErrorObservable(source) {
- this.source = source;
- __super__.call(this);
- }
- MergeDelayErrorObservable.prototype.subscribeCore = function (o) {
- var group = new CompositeDisposable(),
- m = new SingleAssignmentDisposable(),
- state = { isStopped: false, errors: [], o: o };
- group.add(m);
- m.setDisposable(this.source.subscribe(new MergeDelayErrorObserver(group, state)));
- return group;
- };
- return MergeDelayErrorObservable;
- }(ObservableBase));
- var MergeDelayErrorObserver = (function(__super__) {
- inherits(MergeDelayErrorObserver, __super__);
- function MergeDelayErrorObserver(group, state) {
- this._group = group;
- this._state = state;
- __super__.call(this);
- }
- function setCompletion(o, errors) {
- if (errors.length === 0) {
- o.onCompleted();
- } else if (errors.length === 1) {
- o.onError(errors[0]);
- } else {
- o.onError(new CompositeError(errors));
- }
- }
- MergeDelayErrorObserver.prototype.next = function (x) {
- var inner = new SingleAssignmentDisposable();
- this._group.add(inner);
-
- isPromise(x) && (x = observableFromPromise(x));
- inner.setDisposable(x.subscribe(new InnerObserver(inner, this._group, this._state)));
- };
- MergeDelayErrorObserver.prototype.error = function (e) {
- this._state.errors.push(e);
- this._state.isStopped = true;
- this._group.length === 1 && setCompletion(this._state.o, this._state.errors);
- };
- MergeDelayErrorObserver.prototype.completed = function () {
- this._state.isStopped = true;
- this._group.length === 1 && setCompletion(this._state.o, this._state.errors);
- };
- inherits(InnerObserver, __super__);
- function InnerObserver(inner, group, state) {
- this._inner = inner;
- this._group = group;
- this._state = state;
- __super__.call(this);
- }
- InnerObserver.prototype.next = function (x) { this._state.o.onNext(x); };
- InnerObserver.prototype.error = function (e) {
- this._state.errors.push(e);
- this._group.remove(this._inner);
- this._state.isStopped && this._group.length === 1 && setCompletion(this._state.o, this._state.errors);
- };
- InnerObserver.prototype.completed = function () {
- this._group.remove(this._inner);
- this._state.isStopped && this._group.length === 1 && setCompletion(this._state.o, this._state.errors);
- };
- return MergeDelayErrorObserver;
- }(AbstractObserver));
-
- Observable.mergeDelayError = function() {
- var args;
- if (Array.isArray(arguments[0])) {
- args = arguments[0];
- } else {
- var len = arguments.length;
- args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- }
- var source = observableOf(null, args);
- return new MergeDelayErrorObservable(source);
- };
- var SkipUntilObservable = (function(__super__) {
- inherits(SkipUntilObservable, __super__);
- function SkipUntilObservable(source, other) {
- this._s = source;
- this._o = isPromise(other) ? observableFromPromise(other) : other;
- this._open = false;
- __super__.call(this);
- }
- SkipUntilObservable.prototype.subscribeCore = function(o) {
- var leftSubscription = new SingleAssignmentDisposable();
- leftSubscription.setDisposable(this._s.subscribe(new SkipUntilSourceObserver(o, this)));
- isPromise(this._o) && (this._o = observableFromPromise(this._o));
- var rightSubscription = new SingleAssignmentDisposable();
- rightSubscription.setDisposable(this._o.subscribe(new SkipUntilOtherObserver(o, this, rightSubscription)));
- return new BinaryDisposable(leftSubscription, rightSubscription);
- };
- return SkipUntilObservable;
- }(ObservableBase));
- var SkipUntilSourceObserver = (function(__super__) {
- inherits(SkipUntilSourceObserver, __super__);
- function SkipUntilSourceObserver(o, p) {
- this._o = o;
- this._p = p;
- __super__.call(this);
- }
- SkipUntilSourceObserver.prototype.next = function (x) {
- this._p._open && this._o.onNext(x);
- };
- SkipUntilSourceObserver.prototype.error = function (err) {
- this._o.onError(err);
- };
- SkipUntilSourceObserver.prototype.onCompleted = function () {
- this._p._open && this._o.onCompleted();
- };
- return SkipUntilSourceObserver;
- }(AbstractObserver));
- var SkipUntilOtherObserver = (function(__super__) {
- inherits(SkipUntilOtherObserver, __super__);
- function SkipUntilOtherObserver(o, p, r) {
- this._o = o;
- this._p = p;
- this._r = r;
- __super__.call(this);
- }
- SkipUntilOtherObserver.prototype.next = function () {
- this._p._open = true;
- this._r.dispose();
- };
- SkipUntilOtherObserver.prototype.error = function (err) {
- this._o.onError(err);
- };
- SkipUntilOtherObserver.prototype.onCompleted = function () {
- this._r.dispose();
- };
- return SkipUntilOtherObserver;
- }(AbstractObserver));
-
- observableProto.skipUntil = function (other) {
- return new SkipUntilObservable(this, other);
- };
- var SwitchObservable = (function(__super__) {
- inherits(SwitchObservable, __super__);
- function SwitchObservable(source) {
- this.source = source;
- __super__.call(this);
- }
- SwitchObservable.prototype.subscribeCore = function (o) {
- var inner = new SerialDisposable(), s = this.source.subscribe(new SwitchObserver(o, inner));
- return new BinaryDisposable(s, inner);
- };
- inherits(SwitchObserver, AbstractObserver);
- function SwitchObserver(o, inner) {
- this.o = o;
- this.inner = inner;
- this.stopped = false;
- this.latest = 0;
- this.hasLatest = false;
- AbstractObserver.call(this);
- }
- SwitchObserver.prototype.next = function (innerSource) {
- var d = new SingleAssignmentDisposable(), id = ++this.latest;
- this.hasLatest = true;
- this.inner.setDisposable(d);
- isPromise(innerSource) && (innerSource = observableFromPromise(innerSource));
- d.setDisposable(innerSource.subscribe(new InnerObserver(this, id)));
- };
- SwitchObserver.prototype.error = function (e) {
- this.o.onError(e);
- };
- SwitchObserver.prototype.completed = function () {
- this.stopped = true;
- !this.hasLatest && this.o.onCompleted();
- };
- inherits(InnerObserver, AbstractObserver);
- function InnerObserver(parent, id) {
- this.parent = parent;
- this.id = id;
- AbstractObserver.call(this);
- }
- InnerObserver.prototype.next = function (x) {
- this.parent.latest === this.id && this.parent.o.onNext(x);
- };
- InnerObserver.prototype.error = function (e) {
- this.parent.latest === this.id && this.parent.o.onError(e);
- };
- InnerObserver.prototype.completed = function () {
- if (this.parent.latest === this.id) {
- this.parent.hasLatest = false;
- this.parent.stopped && this.parent.o.onCompleted();
- }
- };
- return SwitchObservable;
- }(ObservableBase));
-
- observableProto['switch'] = observableProto.switchLatest = function () {
- return new SwitchObservable(this);
- };
- var TakeUntilObservable = (function(__super__) {
- inherits(TakeUntilObservable, __super__);
- function TakeUntilObservable(source, other) {
- this.source = source;
- this.other = isPromise(other) ? observableFromPromise(other) : other;
- __super__.call(this);
- }
- TakeUntilObservable.prototype.subscribeCore = function(o) {
- return new BinaryDisposable(
- this.source.subscribe(o),
- this.other.subscribe(new TakeUntilObserver(o))
- );
- };
- return TakeUntilObservable;
- }(ObservableBase));
- var TakeUntilObserver = (function(__super__) {
- inherits(TakeUntilObserver, __super__);
- function TakeUntilObserver(o) {
- this._o = o;
- __super__.call(this);
- }
- TakeUntilObserver.prototype.next = function () {
- this._o.onCompleted();
- };
- TakeUntilObserver.prototype.error = function (err) {
- this._o.onError(err);
- };
- TakeUntilObserver.prototype.onCompleted = noop;
- return TakeUntilObserver;
- }(AbstractObserver));
-
- observableProto.takeUntil = function (other) {
- return new TakeUntilObservable(this, other);
- };
- function falseFactory() { return false; }
- function argumentsToArray() {
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- return args;
- }
- var WithLatestFromObservable = (function(__super__) {
- inherits(WithLatestFromObservable, __super__);
- function WithLatestFromObservable(source, sources, resultSelector) {
- this._s = source;
- this._ss = sources;
- this._cb = resultSelector;
- __super__.call(this);
- }
- WithLatestFromObservable.prototype.subscribeCore = function (o) {
- var len = this._ss.length;
- var state = {
- hasValue: arrayInitialize(len, falseFactory),
- hasValueAll: false,
- values: new Array(len)
- };
- var n = this._ss.length, subscriptions = new Array(n + 1);
- for (var i = 0; i < n; i++) {
- var other = this._ss[i], sad = new SingleAssignmentDisposable();
- isPromise(other) && (other = observableFromPromise(other));
- sad.setDisposable(other.subscribe(new WithLatestFromOtherObserver(o, i, state)));
- subscriptions[i] = sad;
- }
- var outerSad = new SingleAssignmentDisposable();
- outerSad.setDisposable(this._s.subscribe(new WithLatestFromSourceObserver(o, this._cb, state)));
- subscriptions[n] = outerSad;
- return new NAryDisposable(subscriptions);
- };
- return WithLatestFromObservable;
- }(ObservableBase));
- var WithLatestFromOtherObserver = (function (__super__) {
- inherits(WithLatestFromOtherObserver, __super__);
- function WithLatestFromOtherObserver(o, i, state) {
- this._o = o;
- this._i = i;
- this._state = state;
- __super__.call(this);
- }
- WithLatestFromOtherObserver.prototype.next = function (x) {
- this._state.values[this._i] = x;
- this._state.hasValue[this._i] = true;
- this._state.hasValueAll = this._state.hasValue.every(identity);
- };
- WithLatestFromOtherObserver.prototype.error = function (e) {
- this._o.onError(e);
- };
- WithLatestFromOtherObserver.prototype.completed = noop;
- return WithLatestFromOtherObserver;
- }(AbstractObserver));
- var WithLatestFromSourceObserver = (function (__super__) {
- inherits(WithLatestFromSourceObserver, __super__);
- function WithLatestFromSourceObserver(o, cb, state) {
- this._o = o;
- this._cb = cb;
- this._state = state;
- __super__.call(this);
- }
- WithLatestFromSourceObserver.prototype.next = function (x) {
- var allValues = [x].concat(this._state.values);
- if (!this._state.hasValueAll) { return; }
- var res = tryCatch(this._cb).apply(null, allValues);
- if (res === errorObj) { return this._o.onError(res.e); }
- this._o.onNext(res);
- };
- WithLatestFromSourceObserver.prototype.error = function (e) {
- this._o.onError(e);
- };
- WithLatestFromSourceObserver.prototype.completed = function () {
- this._o.onCompleted();
- };
- return WithLatestFromSourceObserver;
- }(AbstractObserver));
-
- observableProto.withLatestFrom = function () {
- if (arguments.length === 0) { throw new Error('invalid arguments'); }
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- var resultSelector = isFunction(args[len - 1]) ? args.pop() : argumentsToArray;
- Array.isArray(args[0]) && (args = args[0]);
- return new WithLatestFromObservable(this, args, resultSelector);
- };
- function falseFactory() { return false; }
- function emptyArrayFactory() { return []; }
- var ZipObservable = (function(__super__) {
- inherits(ZipObservable, __super__);
- function ZipObservable(sources, resultSelector) {
- this._s = sources;
- this._cb = resultSelector;
- __super__.call(this);
- }
- ZipObservable.prototype.subscribeCore = function(observer) {
- var n = this._s.length,
- subscriptions = new Array(n),
- done = arrayInitialize(n, falseFactory),
- q = arrayInitialize(n, emptyArrayFactory);
- for (var i = 0; i < n; i++) {
- var source = this._s[i], sad = new SingleAssignmentDisposable();
- subscriptions[i] = sad;
- isPromise(source) && (source = observableFromPromise(source));
- sad.setDisposable(source.subscribe(new ZipObserver(observer, i, this, q, done)));
- }
- return new NAryDisposable(subscriptions);
- };
- return ZipObservable;
- }(ObservableBase));
- var ZipObserver = (function (__super__) {
- inherits(ZipObserver, __super__);
- function ZipObserver(o, i, p, q, d) {
- this._o = o;
- this._i = i;
- this._p = p;
- this._q = q;
- this._d = d;
- __super__.call(this);
- }
- function notEmpty(x) { return x.length > 0; }
- function shiftEach(x) { return x.shift(); }
- function notTheSame(i) {
- return function (x, j) {
- return j !== i;
- };
- }
- ZipObserver.prototype.next = function (x) {
- this._q[this._i].push(x);
- if (this._q.every(notEmpty)) {
- var queuedValues = this._q.map(shiftEach);
- var res = tryCatch(this._p._cb).apply(null, queuedValues);
- if (res === errorObj) { return this._o.onError(res.e); }
- this._o.onNext(res);
- } else if (this._d.filter(notTheSame(this._i)).every(identity)) {
- this._o.onCompleted();
- }
- };
- ZipObserver.prototype.error = function (e) {
- this._o.onError(e);
- };
- ZipObserver.prototype.completed = function () {
- this._d[this._i] = true;
- this._d.every(identity) && this._o.onCompleted();
- };
- return ZipObserver;
- }(AbstractObserver));
-
- observableProto.zip = function () {
- if (arguments.length === 0) { throw new Error('invalid arguments'); }
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- var resultSelector = isFunction(args[len - 1]) ? args.pop() : argumentsToArray;
- Array.isArray(args[0]) && (args = args[0]);
- var parent = this;
- args.unshift(parent);
- return new ZipObservable(args, resultSelector);
- };
-
- Observable.zip = function () {
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- if (Array.isArray(args[0])) {
- args = isFunction(args[1]) ? args[0].concat(args[1]) : args[0];
- }
- var first = args.shift();
- return first.zip.apply(first, args);
- };
- function falseFactory() { return false; }
- function emptyArrayFactory() { return []; }
- function argumentsToArray() {
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- return args;
- }
- var ZipIterableObservable = (function(__super__) {
- inherits(ZipIterableObservable, __super__);
- function ZipIterableObservable(sources, cb) {
- this.sources = sources;
- this._cb = cb;
- __super__.call(this);
- }
- ZipIterableObservable.prototype.subscribeCore = function (o) {
- var sources = this.sources, len = sources.length, subscriptions = new Array(len);
- var state = {
- q: arrayInitialize(len, emptyArrayFactory),
- done: arrayInitialize(len, falseFactory),
- cb: this._cb,
- o: o
- };
- for (var i = 0; i < len; i++) {
- (function (i) {
- var source = sources[i], sad = new SingleAssignmentDisposable();
- (isArrayLike(source) || isIterable(source)) && (source = observableFrom(source));
- subscriptions[i] = sad;
- sad.setDisposable(source.subscribe(new ZipIterableObserver(state, i)));
- }(i));
- }
- return new NAryDisposable(subscriptions);
- };
- return ZipIterableObservable;
- }(ObservableBase));
- var ZipIterableObserver = (function (__super__) {
- inherits(ZipIterableObserver, __super__);
- function ZipIterableObserver(s, i) {
- this._s = s;
- this._i = i;
- __super__.call(this);
- }
- function notEmpty(x) { return x.length > 0; }
- function shiftEach(x) { return x.shift(); }
- function notTheSame(i) {
- return function (x, j) {
- return j !== i;
- };
- }
- ZipIterableObserver.prototype.next = function (x) {
- this._s.q[this._i].push(x);
- if (this._s.q.every(notEmpty)) {
- var queuedValues = this._s.q.map(shiftEach),
- res = tryCatch(this._s.cb).apply(null, queuedValues);
- if (res === errorObj) { return this._s.o.onError(res.e); }
- this._s.o.onNext(res);
- } else if (this._s.done.filter(notTheSame(this._i)).every(identity)) {
- this._s.o.onCompleted();
- }
- };
- ZipIterableObserver.prototype.error = function (e) { this._s.o.onError(e); };
- ZipIterableObserver.prototype.completed = function () {
- this._s.done[this._i] = true;
- this._s.done.every(identity) && this._s.o.onCompleted();
- };
- return ZipIterableObserver;
- }(AbstractObserver));
- observableProto.zipIterable = function () {
- if (arguments.length === 0) { throw new Error('invalid arguments'); }
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- var resultSelector = isFunction(args[len - 1]) ? args.pop() : argumentsToArray;
- var parent = this;
- args.unshift(parent);
- return new ZipIterableObservable(args, resultSelector);
- };
- function asObservable(source) {
- return function subscribe(o) { return source.subscribe(o); };
- }
-
- observableProto.asObservable = function () {
- return new AnonymousObservable(asObservable(this), this);
- };
- var DematerializeObservable = (function (__super__) {
- inherits(DematerializeObservable, __super__);
- function DematerializeObservable(source) {
- this.source = source;
- __super__.call(this);
- }
- DematerializeObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new DematerializeObserver(o));
- };
- return DematerializeObservable;
- }(ObservableBase));
- var DematerializeObserver = (function (__super__) {
- inherits(DematerializeObserver, __super__);
- function DematerializeObserver(o) {
- this._o = o;
- __super__.call(this);
- }
- DematerializeObserver.prototype.next = function (x) { x.accept(this._o); };
- DematerializeObserver.prototype.error = function (e) { this._o.onError(e); };
- DematerializeObserver.prototype.completed = function () { this._o.onCompleted(); };
- return DematerializeObserver;
- }(AbstractObserver));
-
- observableProto.dematerialize = function () {
- return new DematerializeObservable(this);
- };
- var DistinctUntilChangedObservable = (function(__super__) {
- inherits(DistinctUntilChangedObservable, __super__);
- function DistinctUntilChangedObservable(source, keyFn, comparer) {
- this.source = source;
- this.keyFn = keyFn;
- this.comparer = comparer;
- __super__.call(this);
- }
- DistinctUntilChangedObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new DistinctUntilChangedObserver(o, this.keyFn, this.comparer));
- };
- return DistinctUntilChangedObservable;
- }(ObservableBase));
- var DistinctUntilChangedObserver = (function(__super__) {
- inherits(DistinctUntilChangedObserver, __super__);
- function DistinctUntilChangedObserver(o, keyFn, comparer) {
- this.o = o;
- this.keyFn = keyFn;
- this.comparer = comparer;
- this.hasCurrentKey = false;
- this.currentKey = null;
- __super__.call(this);
- }
- DistinctUntilChangedObserver.prototype.next = function (x) {
- var key = x, comparerEquals;
- if (isFunction(this.keyFn)) {
- key = tryCatch(this.keyFn)(x);
- if (key === errorObj) { return this.o.onError(key.e); }
- }
- if (this.hasCurrentKey) {
- comparerEquals = tryCatch(this.comparer)(this.currentKey, key);
- if (comparerEquals === errorObj) { return this.o.onError(comparerEquals.e); }
- }
- if (!this.hasCurrentKey || !comparerEquals) {
- this.hasCurrentKey = true;
- this.currentKey = key;
- this.o.onNext(x);
- }
- };
- DistinctUntilChangedObserver.prototype.error = function(e) {
- this.o.onError(e);
- };
- DistinctUntilChangedObserver.prototype.completed = function () {
- this.o.onCompleted();
- };
- return DistinctUntilChangedObserver;
- }(AbstractObserver));
-
- observableProto.distinctUntilChanged = function (keyFn, comparer) {
- comparer || (comparer = defaultComparer);
- return new DistinctUntilChangedObservable(this, keyFn, comparer);
- };
- var TapObservable = (function(__super__) {
- inherits(TapObservable,__super__);
- function TapObservable(source, observerOrOnNext, onError, onCompleted) {
- this.source = source;
- this._oN = observerOrOnNext;
- this._oE = onError;
- this._oC = onCompleted;
- __super__.call(this);
- }
- TapObservable.prototype.subscribeCore = function(o) {
- return this.source.subscribe(new InnerObserver(o, this));
- };
- inherits(InnerObserver, AbstractObserver);
- function InnerObserver(o, p) {
- this.o = o;
- this.t = !p._oN || isFunction(p._oN) ?
- observerCreate(p._oN || noop, p._oE || noop, p._oC || noop) :
- p._oN;
- this.isStopped = false;
- AbstractObserver.call(this);
- }
- InnerObserver.prototype.next = function(x) {
- var res = tryCatch(this.t.onNext).call(this.t, x);
- if (res === errorObj) { this.o.onError(res.e); }
- this.o.onNext(x);
- };
- InnerObserver.prototype.error = function(err) {
- var res = tryCatch(this.t.onError).call(this.t, err);
- if (res === errorObj) { return this.o.onError(res.e); }
- this.o.onError(err);
- };
- InnerObserver.prototype.completed = function() {
- var res = tryCatch(this.t.onCompleted).call(this.t);
- if (res === errorObj) { return this.o.onError(res.e); }
- this.o.onCompleted();
- };
- return TapObservable;
- }(ObservableBase));
-
- observableProto['do'] = observableProto.tap = observableProto.doAction = function (observerOrOnNext, onError, onCompleted) {
- return new TapObservable(this, observerOrOnNext, onError, onCompleted);
- };
-
- observableProto.doOnNext = observableProto.tapOnNext = function (onNext, thisArg) {
- return this.tap(typeof thisArg !== 'undefined' ? function (x) { onNext.call(thisArg, x); } : onNext);
- };
-
- observableProto.doOnError = observableProto.tapOnError = function (onError, thisArg) {
- return this.tap(noop, typeof thisArg !== 'undefined' ? function (e) { onError.call(thisArg, e); } : onError);
- };
-
- observableProto.doOnCompleted = observableProto.tapOnCompleted = function (onCompleted, thisArg) {
- return this.tap(noop, null, typeof thisArg !== 'undefined' ? function () { onCompleted.call(thisArg); } : onCompleted);
- };
- var FinallyObservable = (function (__super__) {
- inherits(FinallyObservable, __super__);
- function FinallyObservable(source, fn, thisArg) {
- this.source = source;
- this._fn = bindCallback(fn, thisArg, 0);
- __super__.call(this);
- }
- FinallyObservable.prototype.subscribeCore = function (o) {
- var d = tryCatch(this.source.subscribe).call(this.source, o);
- if (d === errorObj) {
- this._fn();
- thrower(d.e);
- }
- return new FinallyDisposable(d, this._fn);
- };
- function FinallyDisposable(s, fn) {
- this.isDisposed = false;
- this._s = s;
- this._fn = fn;
- }
- FinallyDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- var res = tryCatch(this._s.dispose).call(this._s);
- this._fn();
- res === errorObj && thrower(res.e);
- }
- };
- return FinallyObservable;
- }(ObservableBase));
-
- observableProto['finally'] = function (action, thisArg) {
- return new FinallyObservable(this, action, thisArg);
- };
- var IgnoreElementsObservable = (function(__super__) {
- inherits(IgnoreElementsObservable, __super__);
- function IgnoreElementsObservable(source) {
- this.source = source;
- __super__.call(this);
- }
- IgnoreElementsObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new InnerObserver(o));
- };
- function InnerObserver(o) {
- this.o = o;
- this.isStopped = false;
- }
- InnerObserver.prototype.onNext = noop;
- InnerObserver.prototype.onError = function (err) {
- if(!this.isStopped) {
- this.isStopped = true;
- this.o.onError(err);
- }
- };
- InnerObserver.prototype.onCompleted = function () {
- if(!this.isStopped) {
- this.isStopped = true;
- this.o.onCompleted();
- }
- };
- InnerObserver.prototype.dispose = function() { this.isStopped = true; };
- InnerObserver.prototype.fail = function (e) {
- if (!this.isStopped) {
- this.isStopped = true;
- this.observer.onError(e);
- return true;
- }
- return false;
- };
- return IgnoreElementsObservable;
- }(ObservableBase));
-
- observableProto.ignoreElements = function () {
- return new IgnoreElementsObservable(this);
- };
- var MaterializeObservable = (function (__super__) {
- inherits(MaterializeObservable, __super__);
- function MaterializeObservable(source, fn) {
- this.source = source;
- __super__.call(this);
- }
- MaterializeObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new MaterializeObserver(o));
- };
- return MaterializeObservable;
- }(ObservableBase));
- var MaterializeObserver = (function (__super__) {
- inherits(MaterializeObserver, __super__);
- function MaterializeObserver(o) {
- this._o = o;
- __super__.call(this);
- }
- MaterializeObserver.prototype.next = function (x) { this._o.onNext(notificationCreateOnNext(x)) };
- MaterializeObserver.prototype.error = function (e) { this._o.onNext(notificationCreateOnError(e)); this._o.onCompleted(); };
- MaterializeObserver.prototype.completed = function () { this._o.onNext(notificationCreateOnCompleted()); this._o.onCompleted(); };
- return MaterializeObserver;
- }(AbstractObserver));
-
- observableProto.materialize = function () {
- return new MaterializeObservable(this);
- };
-
- observableProto.repeat = function (repeatCount) {
- return enumerableRepeat(this, repeatCount).concat();
- };
-
- observableProto.retry = function (retryCount) {
- return enumerableRepeat(this, retryCount).catchError();
- };
- function repeat(value) {
- return {
- '@@iterator': function () {
- return {
- next: function () {
- return { done: false, value: value };
- }
- };
- }
- };
- }
- var RetryWhenObservable = (function(__super__) {
- function createDisposable(state) {
- return {
- isDisposed: false,
- dispose: function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- state.isDisposed = true;
- }
- }
- };
- }
- function RetryWhenObservable(source, notifier) {
- this.source = source;
- this._notifier = notifier;
- __super__.call(this);
- }
- inherits(RetryWhenObservable, __super__);
- RetryWhenObservable.prototype.subscribeCore = function (o) {
- var exceptions = new Subject(),
- notifier = new Subject(),
- handled = this._notifier(exceptions),
- notificationDisposable = handled.subscribe(notifier);
- var e = this.source['@@iterator']();
- var state = { isDisposed: false },
- lastError,
- subscription = new SerialDisposable();
- var cancelable = currentThreadScheduler.scheduleRecursive(null, function (_, recurse) {
- if (state.isDisposed) { return; }
- var currentItem = e.next();
- if (currentItem.done) {
- if (lastError) {
- o.onError(lastError);
- } else {
- o.onCompleted();
- }
- return;
- }
-
- var currentValue = currentItem.value;
- isPromise(currentValue) && (currentValue = observableFromPromise(currentValue));
- var outer = new SingleAssignmentDisposable();
- var inner = new SingleAssignmentDisposable();
- subscription.setDisposable(new BinaryDisposable(inner, outer));
- outer.setDisposable(currentValue.subscribe(
- function(x) { o.onNext(x); },
- function (exn) {
- inner.setDisposable(notifier.subscribe(recurse, function(ex) {
- o.onError(ex);
- }, function() {
- o.onCompleted();
- }));
- exceptions.onNext(exn);
- outer.dispose();
- },
- function() { o.onCompleted(); }));
- });
- return new NAryDisposable([notificationDisposable, subscription, cancelable, createDisposable(state)]);
- };
- return RetryWhenObservable;
- }(ObservableBase));
- observableProto.retryWhen = function (notifier) {
- return new RetryWhenObservable(repeat(this), notifier);
- };
- function repeat(value) {
- return {
- '@@iterator': function () {
- return {
- next: function () {
- return { done: false, value: value };
- }
- };
- }
- };
- }
- var RepeatWhenObservable = (function(__super__) {
- function createDisposable(state) {
- return {
- isDisposed: false,
- dispose: function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- state.isDisposed = true;
- }
- }
- };
- }
- function RepeatWhenObservable(source, notifier) {
- this.source = source;
- this._notifier = notifier;
- __super__.call(this);
- }
- inherits(RepeatWhenObservable, __super__);
- RepeatWhenObservable.prototype.subscribeCore = function (o) {
- var completions = new Subject(),
- notifier = new Subject(),
- handled = this._notifier(completions),
- notificationDisposable = handled.subscribe(notifier);
- var e = this.source['@@iterator']();
- var state = { isDisposed: false },
- lastError,
- subscription = new SerialDisposable();
- var cancelable = currentThreadScheduler.scheduleRecursive(null, function (_, recurse) {
- if (state.isDisposed) { return; }
- var currentItem = e.next();
- if (currentItem.done) {
- if (lastError) {
- o.onError(lastError);
- } else {
- o.onCompleted();
- }
- return;
- }
-
- var currentValue = currentItem.value;
- isPromise(currentValue) && (currentValue = observableFromPromise(currentValue));
- var outer = new SingleAssignmentDisposable();
- var inner = new SingleAssignmentDisposable();
- subscription.setDisposable(new BinaryDisposable(inner, outer));
- outer.setDisposable(currentValue.subscribe(
- function(x) { o.onNext(x); },
- function (exn) { o.onError(exn); },
- function() {
- inner.setDisposable(notifier.subscribe(recurse, function(ex) {
- o.onError(ex);
- }, function() {
- o.onCompleted();
- }));
- completions.onNext(null);
- outer.dispose();
- }));
- });
- return new NAryDisposable([notificationDisposable, subscription, cancelable, createDisposable(state)]);
- };
- return RepeatWhenObservable;
- }(ObservableBase));
- observableProto.repeatWhen = function (notifier) {
- return new RepeatWhenObservable(repeat(this), notifier);
- };
- var ScanObservable = (function(__super__) {
- inherits(ScanObservable, __super__);
- function ScanObservable(source, accumulator, hasSeed, seed) {
- this.source = source;
- this.accumulator = accumulator;
- this.hasSeed = hasSeed;
- this.seed = seed;
- __super__.call(this);
- }
- ScanObservable.prototype.subscribeCore = function(o) {
- return this.source.subscribe(new ScanObserver(o,this));
- };
- return ScanObservable;
- }(ObservableBase));
- var ScanObserver = (function (__super__) {
- inherits(ScanObserver, __super__);
- function ScanObserver(o, parent) {
- this._o = o;
- this._p = parent;
- this._fn = parent.accumulator;
- this._hs = parent.hasSeed;
- this._s = parent.seed;
- this._ha = false;
- this._a = null;
- this._hv = false;
- this._i = 0;
- __super__.call(this);
- }
- ScanObserver.prototype.next = function (x) {
- !this._hv && (this._hv = true);
- if (this._ha) {
- this._a = tryCatch(this._fn)(this._a, x, this._i, this._p);
- } else {
- this._a = this._hs ? tryCatch(this._fn)(this._s, x, this._i, this._p) : x;
- this._ha = true;
- }
- if (this._a === errorObj) { return this._o.onError(this._a.e); }
- this._o.onNext(this._a);
- this._i++;
- };
- ScanObserver.prototype.error = function (e) {
- this._o.onError(e);
- };
- ScanObserver.prototype.completed = function () {
- !this._hv && this._hs && this._o.onNext(this._s);
- this._o.onCompleted();
- };
- return ScanObserver;
- }(AbstractObserver));
-
- observableProto.scan = function () {
- var hasSeed = false, seed, accumulator = arguments[0];
- if (arguments.length === 2) {
- hasSeed = true;
- seed = arguments[1];
- }
- return new ScanObservable(this, accumulator, hasSeed, seed);
- };
- var SkipLastObservable = (function (__super__) {
- inherits(SkipLastObservable, __super__);
- function SkipLastObservable(source, c) {
- this.source = source;
- this._c = c;
- __super__.call(this);
- }
- SkipLastObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new SkipLastObserver(o, this._c));
- };
- return SkipLastObservable;
- }(ObservableBase));
- var SkipLastObserver = (function (__super__) {
- inherits(SkipLastObserver, __super__);
- function SkipLastObserver(o, c) {
- this._o = o;
- this._c = c;
- this._q = [];
- __super__.call(this);
- }
- SkipLastObserver.prototype.next = function (x) {
- this._q.push(x);
- this._q.length > this._c && this._o.onNext(this._q.shift());
- };
- SkipLastObserver.prototype.error = function (e) {
- this._o.onError(e);
- };
- SkipLastObserver.prototype.completed = function () {
- this._o.onCompleted();
- };
- return SkipLastObserver;
- }(AbstractObserver));
-
- observableProto.skipLast = function (count) {
- if (count < 0) { throw new ArgumentOutOfRangeError(); }
- return new SkipLastObservable(this, count);
- };
-
- observableProto.startWith = function () {
- var values, scheduler, start = 0;
- if (!!arguments.length && isScheduler(arguments[0])) {
- scheduler = arguments[0];
- start = 1;
- } else {
- scheduler = immediateScheduler;
- }
- for(var args = [], i = start, len = arguments.length; i < len; i++) { args.push(arguments[i]); }
- return observableConcat.apply(null, [observableFromArray(args, scheduler), this]);
- };
- var TakeLastObserver = (function (__super__) {
- inherits(TakeLastObserver, __super__);
- function TakeLastObserver(o, c) {
- this._o = o;
- this._c = c;
- this._q = [];
- __super__.call(this);
- }
- TakeLastObserver.prototype.next = function (x) {
- this._q.push(x);
- this._q.length > this._c && this._q.shift();
- };
- TakeLastObserver.prototype.error = function (e) {
- this._o.onError(e);
- };
- TakeLastObserver.prototype.completed = function () {
- while (this._q.length > 0) { this._o.onNext(this._q.shift()); }
- this._o.onCompleted();
- };
- return TakeLastObserver;
- }(AbstractObserver));
-
- observableProto.takeLast = function (count) {
- if (count < 0) { throw new ArgumentOutOfRangeError(); }
- var source = this;
- return new AnonymousObservable(function (o) {
- return source.subscribe(new TakeLastObserver(o, count));
- }, source);
- };
- observableProto.flatMapConcat = observableProto.concatMap = function(selector, resultSelector, thisArg) {
- return new FlatMapObservable(this, selector, resultSelector, thisArg).merge(1);
- };
- var MapObservable = (function (__super__) {
- inherits(MapObservable, __super__);
- function MapObservable(source, selector, thisArg) {
- this.source = source;
- this.selector = bindCallback(selector, thisArg, 3);
- __super__.call(this);
- }
- function innerMap(selector, self) {
- return function (x, i, o) { return selector.call(this, self.selector(x, i, o), i, o); };
- }
- MapObservable.prototype.internalMap = function (selector, thisArg) {
- return new MapObservable(this.source, innerMap(selector, this), thisArg);
- };
- MapObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new InnerObserver(o, this.selector, this));
- };
- inherits(InnerObserver, AbstractObserver);
- function InnerObserver(o, selector, source) {
- this.o = o;
- this.selector = selector;
- this.source = source;
- this.i = 0;
- AbstractObserver.call(this);
- }
- InnerObserver.prototype.next = function(x) {
- var result = tryCatch(this.selector)(x, this.i++, this.source);
- if (result === errorObj) { return this.o.onError(result.e); }
- this.o.onNext(result);
- };
- InnerObserver.prototype.error = function (e) {
- this.o.onError(e);
- };
- InnerObserver.prototype.completed = function () {
- this.o.onCompleted();
- };
- return MapObservable;
- }(ObservableBase));
-
- observableProto.map = observableProto.select = function (selector, thisArg) {
- var selectorFn = typeof selector === 'function' ? selector : function () { return selector; };
- return this instanceof MapObservable ?
- this.internalMap(selectorFn, thisArg) :
- new MapObservable(this, selectorFn, thisArg);
- };
- function plucker(args, len) {
- return function mapper(x) {
- var currentProp = x;
- for (var i = 0; i < len; i++) {
- var p = currentProp[args[i]];
- if (typeof p !== 'undefined') {
- currentProp = p;
- } else {
- return undefined;
- }
- }
- return currentProp;
- };
- }
-
- observableProto.pluck = function () {
- var len = arguments.length, args = new Array(len);
- if (len === 0) { throw new Error('List of properties cannot be empty.'); }
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- return this.map(plucker(args, len));
- };
- observableProto.flatMap = observableProto.selectMany = observableProto.mergeMap = function(selector, resultSelector, thisArg) {
- return new FlatMapObservable(this, selector, resultSelector, thisArg).mergeAll();
- };
- observableProto.flatMapLatest = observableProto.switchMap = function(selector, resultSelector, thisArg) {
- return new FlatMapObservable(this, selector, resultSelector, thisArg).switchLatest();
- };
- var SkipObservable = (function(__super__) {
- inherits(SkipObservable, __super__);
- function SkipObservable(source, count) {
- this.source = source;
- this._count = count;
- __super__.call(this);
- }
- SkipObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new SkipObserver(o, this._count));
- };
- function SkipObserver(o, c) {
- this._o = o;
- this._r = c;
- AbstractObserver.call(this);
- }
- inherits(SkipObserver, AbstractObserver);
- SkipObserver.prototype.next = function (x) {
- if (this._r <= 0) {
- this._o.onNext(x);
- } else {
- this._r--;
- }
- };
- SkipObserver.prototype.error = function(e) { this._o.onError(e); };
- SkipObserver.prototype.completed = function() { this._o.onCompleted(); };
- return SkipObservable;
- }(ObservableBase));
-
- observableProto.skip = function (count) {
- if (count < 0) { throw new ArgumentOutOfRangeError(); }
- return new SkipObservable(this, count);
- };
- var SkipWhileObservable = (function (__super__) {
- inherits(SkipWhileObservable, __super__);
- function SkipWhileObservable(source, fn) {
- this.source = source;
- this._fn = fn;
- __super__.call(this);
- }
- SkipWhileObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new SkipWhileObserver(o, this));
- };
- return SkipWhileObservable;
- }(ObservableBase));
- var SkipWhileObserver = (function (__super__) {
- inherits(SkipWhileObserver, __super__);
- function SkipWhileObserver(o, p) {
- this._o = o;
- this._p = p;
- this._i = 0;
- this._r = false;
- __super__.call(this);
- }
- SkipWhileObserver.prototype.next = function (x) {
- if (!this._r) {
- var res = tryCatch(this._p._fn)(x, this._i++, this._p);
- if (res === errorObj) { return this._o.onError(res.e); }
- this._r = !res;
- }
- this._r && this._o.onNext(x);
- };
- SkipWhileObserver.prototype.error = function (e) { this._o.onError(e); };
- SkipWhileObserver.prototype.completed = function () { this._o.onCompleted(); };
- return SkipWhileObserver;
- }(AbstractObserver));
-
- observableProto.skipWhile = function (predicate, thisArg) {
- var fn = bindCallback(predicate, thisArg, 3);
- return new SkipWhileObservable(this, fn);
- };
- var TakeObservable = (function(__super__) {
- inherits(TakeObservable, __super__);
- function TakeObservable(source, count) {
- this.source = source;
- this._count = count;
- __super__.call(this);
- }
- TakeObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new TakeObserver(o, this._count));
- };
- function TakeObserver(o, c) {
- this._o = o;
- this._c = c;
- this._r = c;
- AbstractObserver.call(this);
- }
- inherits(TakeObserver, AbstractObserver);
- TakeObserver.prototype.next = function (x) {
- if (this._r-- > 0) {
- this._o.onNext(x);
- this._r <= 0 && this._o.onCompleted();
- }
- };
- TakeObserver.prototype.error = function (e) { this._o.onError(e); };
- TakeObserver.prototype.completed = function () { this._o.onCompleted(); };
- return TakeObservable;
- }(ObservableBase));
-
- observableProto.take = function (count, scheduler) {
- if (count < 0) { throw new ArgumentOutOfRangeError(); }
- if (count === 0) { return observableEmpty(scheduler); }
- return new TakeObservable(this, count);
- };
- var TakeWhileObservable = (function (__super__) {
- inherits(TakeWhileObservable, __super__);
- function TakeWhileObservable(source, fn) {
- this.source = source;
- this._fn = fn;
- __super__.call(this);
- }
- TakeWhileObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new TakeWhileObserver(o, this));
- };
- return TakeWhileObservable;
- }(ObservableBase));
- var TakeWhileObserver = (function (__super__) {
- inherits(TakeWhileObserver, __super__);
- function TakeWhileObserver(o, p) {
- this._o = o;
- this._p = p;
- this._i = 0;
- this._r = true;
- __super__.call(this);
- }
- TakeWhileObserver.prototype.next = function (x) {
- if (this._r) {
- this._r = tryCatch(this._p._fn)(x, this._i++, this._p);
- if (this._r === errorObj) { return this._o.onError(this._r.e); }
- }
- if (this._r) {
- this._o.onNext(x);
- } else {
- this._o.onCompleted();
- }
- };
- TakeWhileObserver.prototype.error = function (e) { this._o.onError(e); };
- TakeWhileObserver.prototype.completed = function () { this._o.onCompleted(); };
- return TakeWhileObserver;
- }(AbstractObserver));
-
- observableProto.takeWhile = function (predicate, thisArg) {
- var fn = bindCallback(predicate, thisArg, 3);
- return new TakeWhileObservable(this, fn);
- };
- var FilterObservable = (function (__super__) {
- inherits(FilterObservable, __super__);
- function FilterObservable(source, predicate, thisArg) {
- this.source = source;
- this.predicate = bindCallback(predicate, thisArg, 3);
- __super__.call(this);
- }
- FilterObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new InnerObserver(o, this.predicate, this));
- };
- function innerPredicate(predicate, self) {
- return function(x, i, o) { return self.predicate(x, i, o) && predicate.call(this, x, i, o); }
- }
- FilterObservable.prototype.internalFilter = function(predicate, thisArg) {
- return new FilterObservable(this.source, innerPredicate(predicate, this), thisArg);
- };
- inherits(InnerObserver, AbstractObserver);
- function InnerObserver(o, predicate, source) {
- this.o = o;
- this.predicate = predicate;
- this.source = source;
- this.i = 0;
- AbstractObserver.call(this);
- }
- InnerObserver.prototype.next = function(x) {
- var shouldYield = tryCatch(this.predicate)(x, this.i++, this.source);
- if (shouldYield === errorObj) {
- return this.o.onError(shouldYield.e);
- }
- shouldYield && this.o.onNext(x);
- };
- InnerObserver.prototype.error = function (e) {
- this.o.onError(e);
- };
- InnerObserver.prototype.completed = function () {
- this.o.onCompleted();
- };
- return FilterObservable;
- }(ObservableBase));
-
- observableProto.filter = observableProto.where = function (predicate, thisArg) {
- return this instanceof FilterObservable ? this.internalFilter(predicate, thisArg) :
- new FilterObservable(this, predicate, thisArg);
- };
- function createCbObservable(fn, ctx, selector, args) {
- var o = new AsyncSubject();
- args.push(createCbHandler(o, ctx, selector));
- fn.apply(ctx, args);
- return o.asObservable();
- }
- function createCbHandler(o, ctx, selector) {
- return function handler () {
- var len = arguments.length, results = new Array(len);
- for(var i = 0; i < len; i++) { results[i] = arguments[i]; }
- if (isFunction(selector)) {
- results = tryCatch(selector).apply(ctx, results);
- if (results === errorObj) { return o.onError(results.e); }
- o.onNext(results);
- } else {
- if (results.length <= 1) {
- o.onNext(results[0]);
- } else {
- o.onNext(results);
- }
- }
- o.onCompleted();
- };
- }
- Observable.fromCallback = function (fn, ctx, selector) {
- return function () {
- typeof ctx === 'undefined' && (ctx = this);
- var len = arguments.length, args = new Array(len)
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- return createCbObservable(fn, ctx, selector, args);
- };
- };
- function createNodeObservable(fn, ctx, selector, args) {
- var o = new AsyncSubject();
- args.push(createNodeHandler(o, ctx, selector));
- fn.apply(ctx, args);
- return o.asObservable();
- }
- function createNodeHandler(o, ctx, selector) {
- return function handler () {
- var err = arguments[0];
- if (err) { return o.onError(err); }
- var len = arguments.length, results = [];
- for(var i = 1; i < len; i++) { results[i - 1] = arguments[i]; }
- if (isFunction(selector)) {
- var results = tryCatch(selector).apply(ctx, results);
- if (results === errorObj) { return o.onError(results.e); }
- o.onNext(results);
- } else {
- if (results.length <= 1) {
- o.onNext(results[0]);
- } else {
- o.onNext(results);
- }
- }
- o.onCompleted();
- };
- }
- Observable.fromNodeCallback = function (fn, ctx, selector) {
- return function () {
- typeof ctx === 'undefined' && (ctx = this);
- var len = arguments.length, args = new Array(len);
- for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
- return createNodeObservable(fn, ctx, selector, args);
- };
- };
- function isNodeList(el) {
- if (root.StaticNodeList) {
-
-
- return el instanceof root.StaticNodeList || el instanceof root.NodeList;
- } else {
- return Object.prototype.toString.call(el) === '[object NodeList]';
- }
- }
- function ListenDisposable(e, n, fn) {
- this._e = e;
- this._n = n;
- this._fn = fn;
- this._e.addEventListener(this._n, this._fn, false);
- this.isDisposed = false;
- }
- ListenDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this._e.removeEventListener(this._n, this._fn, false);
- this.isDisposed = true;
- }
- };
- function createEventListener (el, eventName, handler) {
- var disposables = new CompositeDisposable();
-
- var elemToString = Object.prototype.toString.call(el);
- if (isNodeList(el) || elemToString === '[object HTMLCollection]') {
- for (var i = 0, len = el.length; i < len; i++) {
- disposables.add(createEventListener(el.item(i), eventName, handler));
- }
- } else if (el) {
- disposables.add(new ListenDisposable(el, eventName, handler));
- }
- return disposables;
- }
-
- Rx.config.useNativeEvents = false;
- var EventObservable = (function(__super__) {
- inherits(EventObservable, __super__);
- function EventObservable(el, name, fn) {
- this._el = el;
- this._n = name;
- this._fn = fn;
- __super__.call(this);
- }
- function createHandler(o, fn) {
- return function handler () {
- var results = arguments[0];
- if (isFunction(fn)) {
- results = tryCatch(fn).apply(null, arguments);
- if (results === errorObj) { return o.onError(results.e); }
- }
- o.onNext(results);
- };
- }
- EventObservable.prototype.subscribeCore = function (o) {
- return createEventListener(
- this._el,
- this._n,
- createHandler(o, this._fn));
- };
- return EventObservable;
- }(ObservableBase));
-
- Observable.fromEvent = function (element, eventName, selector) {
-
- if (element.addListener) {
- return fromEventPattern(
- function (h) { element.addListener(eventName, h); },
- function (h) { element.removeListener(eventName, h); },
- selector);
- }
-
- if (!Rx.config.useNativeEvents) {
-
- if (typeof element.on === 'function' && typeof element.off === 'function') {
- return fromEventPattern(
- function (h) { element.on(eventName, h); },
- function (h) { element.off(eventName, h); },
- selector);
- }
- }
- return new EventObservable(element, eventName, selector).publish().refCount();
- };
- var EventPatternObservable = (function(__super__) {
- inherits(EventPatternObservable, __super__);
- function EventPatternObservable(add, del, fn) {
- this._add = add;
- this._del = del;
- this._fn = fn;
- __super__.call(this);
- }
- function createHandler(o, fn) {
- return function handler () {
- var results = arguments[0];
- if (isFunction(fn)) {
- results = tryCatch(fn).apply(null, arguments);
- if (results === errorObj) { return o.onError(results.e); }
- }
- o.onNext(results);
- };
- }
- EventPatternObservable.prototype.subscribeCore = function (o) {
- var fn = createHandler(o, this._fn);
- var returnValue = this._add(fn);
- return new EventPatternDisposable(this._del, fn, returnValue);
- };
- function EventPatternDisposable(del, fn, ret) {
- this._del = del;
- this._fn = fn;
- this._ret = ret;
- this.isDisposed = false;
- }
- EventPatternDisposable.prototype.dispose = function () {
- if(!this.isDisposed) {
- isFunction(this._del) && this._del(this._fn, this._ret);
- this.isDisposed = true;
- }
- };
- return EventPatternObservable;
- }(ObservableBase));
-
- var fromEventPattern = Observable.fromEventPattern = function (addHandler, removeHandler, selector) {
- return new EventPatternObservable(addHandler, removeHandler, selector).publish().refCount();
- };
- var FromPromiseObservable = (function(__super__) {
- inherits(FromPromiseObservable, __super__);
- function FromPromiseObservable(p, s) {
- this._p = p;
- this._s = s;
- __super__.call(this);
- }
- function scheduleNext(s, state) {
- var o = state[0], data = state[1];
- o.onNext(data);
- o.onCompleted();
- }
- function scheduleError(s, state) {
- var o = state[0], err = state[1];
- o.onError(err);
- }
- FromPromiseObservable.prototype.subscribeCore = function(o) {
- var sad = new SingleAssignmentDisposable(), self = this, p = this._p;
- if (isFunction(p)) {
- p = tryCatch(p)();
- if (p === errorObj) {
- o.onError(p.e);
- return sad;
- }
- }
- p
- .then(function (data) {
- sad.setDisposable(self._s.schedule([o, data], scheduleNext));
- }, function (err) {
- sad.setDisposable(self._s.schedule([o, err], scheduleError));
- });
- return sad;
- };
- return FromPromiseObservable;
- }(ObservableBase));
-
- var observableFromPromise = Observable.fromPromise = function (promise, scheduler) {
- scheduler || (scheduler = defaultScheduler);
- return new FromPromiseObservable(promise, scheduler);
- };
-
- observableProto.toPromise = function (promiseCtor) {
- promiseCtor || (promiseCtor = Rx.config.Promise);
- if (!promiseCtor) { throw new NotSupportedError('Promise type not provided nor in Rx.config.Promise'); }
- var source = this;
- return new promiseCtor(function (resolve, reject) {
-
- var value;
- source.subscribe(function (v) {
- value = v;
- }, reject, function () {
- resolve(value);
- });
- });
- };
-
- Observable.startAsync = function (functionAsync) {
- var promise = tryCatch(functionAsync)();
- if (promise === errorObj) { return observableThrow(promise.e); }
- return observableFromPromise(promise);
- };
- var MulticastObservable = (function (__super__) {
- inherits(MulticastObservable, __super__);
- function MulticastObservable(source, fn1, fn2) {
- this.source = source;
- this._fn1 = fn1;
- this._fn2 = fn2;
- __super__.call(this);
- }
- MulticastObservable.prototype.subscribeCore = function (o) {
- var connectable = this.source.multicast(this._fn1());
- return new BinaryDisposable(this._fn2(connectable).subscribe(o), connectable.connect());
- };
- return MulticastObservable;
- }(ObservableBase));
-
- observableProto.multicast = function (subjectOrSubjectSelector, selector) {
- return isFunction(subjectOrSubjectSelector) ?
- new MulticastObservable(this, subjectOrSubjectSelector, selector) :
- new ConnectableObservable(this, subjectOrSubjectSelector);
- };
-
- observableProto.publish = function (selector) {
- return selector && isFunction(selector) ?
- this.multicast(function () { return new Subject(); }, selector) :
- this.multicast(new Subject());
- };
-
- observableProto.share = function () {
- return this.publish().refCount();
- };
-
- observableProto.publishLast = function (selector) {
- return selector && isFunction(selector) ?
- this.multicast(function () { return new AsyncSubject(); }, selector) :
- this.multicast(new AsyncSubject());
- };
-
- observableProto.publishValue = function (initialValueOrSelector, initialValue) {
- return arguments.length === 2 ?
- this.multicast(function () {
- return new BehaviorSubject(initialValue);
- }, initialValueOrSelector) :
- this.multicast(new BehaviorSubject(initialValueOrSelector));
- };
-
- observableProto.shareValue = function (initialValue) {
- return this.publishValue(initialValue).refCount();
- };
-
- observableProto.replay = function (selector, bufferSize, windowSize, scheduler) {
- return selector && isFunction(selector) ?
- this.multicast(function () { return new ReplaySubject(bufferSize, windowSize, scheduler); }, selector) :
- this.multicast(new ReplaySubject(bufferSize, windowSize, scheduler));
- };
-
- observableProto.shareReplay = function (bufferSize, windowSize, scheduler) {
- return this.replay(null, bufferSize, windowSize, scheduler).refCount();
- };
- var RefCountObservable = (function (__super__) {
- inherits(RefCountObservable, __super__);
- function RefCountObservable(source) {
- this.source = source;
- this._count = 0;
- this._connectableSubscription = null;
- __super__.call(this);
- }
- RefCountObservable.prototype.subscribeCore = function (o) {
- var subscription = this.source.subscribe(o);
- ++this._count === 1 && (this._connectableSubscription = this.source.connect());
- return new RefCountDisposable(this, subscription);
- };
- function RefCountDisposable(p, s) {
- this._p = p;
- this._s = s;
- this.isDisposed = false;
- }
- RefCountDisposable.prototype.dispose = function () {
- if (!this.isDisposed) {
- this.isDisposed = true;
- this._s.dispose();
- --this._p._count === 0 && this._p._connectableSubscription.dispose();
- }
- };
- return RefCountObservable;
- }(ObservableBase));
- var ConnectableObservable = Rx.ConnectableObservable = (function (__super__) {
- inherits(ConnectableObservable, __super__);
- function ConnectableObservable(source, subject) {
- this.source = source;
- this._connection = null;
- this._source = source.asObservable();
- this._subject = subject;
- __super__.call(this);
- }
- function ConnectDisposable(parent, subscription) {
- this._p = parent;
- this._s = subscription;
- }
- ConnectDisposable.prototype.dispose = function () {
- if (this._s) {
- this._s.dispose();
- this._s = null;
- this._p._connection = null;
- }
- };
- ConnectableObservable.prototype.connect = function () {
- if (!this._connection) {
- if (this._subject.isStopped) {
- return disposableEmpty;
- }
- var subscription = this._source.subscribe(this._subject);
- this._connection = new ConnectDisposable(this, subscription);
- }
- return this._connection;
- };
- ConnectableObservable.prototype._subscribe = function (o) {
- return this._subject.subscribe(o);
- };
- ConnectableObservable.prototype.refCount = function () {
- return new RefCountObservable(this);
- };
- return ConnectableObservable;
- }(Observable));
- var TimerObservable = (function(__super__) {
- inherits(TimerObservable, __super__);
- function TimerObservable(dt, s) {
- this._dt = dt;
- this._s = s;
- __super__.call(this);
- }
- TimerObservable.prototype.subscribeCore = function (o) {
- return this._s.scheduleFuture(o, this._dt, scheduleMethod);
- };
- function scheduleMethod(s, o) {
- o.onNext(0);
- o.onCompleted();
- }
- return TimerObservable;
- }(ObservableBase));
- function _observableTimer(dueTime, scheduler) {
- return new TimerObservable(dueTime, scheduler);
- }
- function observableTimerDateAndPeriod(dueTime, period, scheduler) {
- return new AnonymousObservable(function (observer) {
- var d = dueTime, p = normalizeTime(period);
- return scheduler.scheduleRecursiveFuture(0, d, function (count, self) {
- if (p > 0) {
- var now = scheduler.now();
- d = new Date(d.getTime() + p);
- d.getTime() <= now && (d = new Date(now + p));
- }
- observer.onNext(count);
- self(count + 1, new Date(d));
- });
- });
- }
- function observableTimerTimeSpanAndPeriod(dueTime, period, scheduler) {
- return dueTime === period ?
- new AnonymousObservable(function (observer) {
- return scheduler.schedulePeriodic(0, period, function (count) {
- observer.onNext(count);
- return count + 1;
- });
- }) :
- observableDefer(function () {
- return observableTimerDateAndPeriod(new Date(scheduler.now() + dueTime), period, scheduler);
- });
- }
-
- var observableinterval = Observable.interval = function (period, scheduler) {
- return observableTimerTimeSpanAndPeriod(period, period, isScheduler(scheduler) ? scheduler : defaultScheduler);
- };
-
- var observableTimer = Observable.timer = function (dueTime, periodOrScheduler, scheduler) {
- var period;
- isScheduler(scheduler) || (scheduler = defaultScheduler);
- if (periodOrScheduler != null && typeof periodOrScheduler === 'number') {
- period = periodOrScheduler;
- } else if (isScheduler(periodOrScheduler)) {
- scheduler = periodOrScheduler;
- }
- if ((dueTime instanceof Date || typeof dueTime === 'number') && period === undefined) {
- return _observableTimer(dueTime, scheduler);
- }
- if (dueTime instanceof Date && period !== undefined) {
- return observableTimerDateAndPeriod(dueTime, periodOrScheduler, scheduler);
- }
- return observableTimerTimeSpanAndPeriod(dueTime, period, scheduler);
- };
- function observableDelayRelative(source, dueTime, scheduler) {
- return new AnonymousObservable(function (o) {
- var active = false,
- cancelable = new SerialDisposable(),
- exception = null,
- q = [],
- running = false,
- subscription;
- subscription = source.materialize().timestamp(scheduler).subscribe(function (notification) {
- var d, shouldRun;
- if (notification.value.kind === 'E') {
- q = [];
- q.push(notification);
- exception = notification.value.error;
- shouldRun = !running;
- } else {
- q.push({ value: notification.value, timestamp: notification.timestamp + dueTime });
- shouldRun = !active;
- active = true;
- }
- if (shouldRun) {
- if (exception !== null) {
- o.onError(exception);
- } else {
- d = new SingleAssignmentDisposable();
- cancelable.setDisposable(d);
- d.setDisposable(scheduler.scheduleRecursiveFuture(null, dueTime, function (_, self) {
- var e, recurseDueTime, result, shouldRecurse;
- if (exception !== null) {
- return;
- }
- running = true;
- do {
- result = null;
- if (q.length > 0 && q[0].timestamp - scheduler.now() <= 0) {
- result = q.shift().value;
- }
- if (result !== null) {
- result.accept(o);
- }
- } while (result !== null);
- shouldRecurse = false;
- recurseDueTime = 0;
- if (q.length > 0) {
- shouldRecurse = true;
- recurseDueTime = Math.max(0, q[0].timestamp - scheduler.now());
- } else {
- active = false;
- }
- e = exception;
- running = false;
- if (e !== null) {
- o.onError(e);
- } else if (shouldRecurse) {
- self(null, recurseDueTime);
- }
- }));
- }
- }
- });
- return new BinaryDisposable(subscription, cancelable);
- }, source);
- }
- function observableDelayAbsolute(source, dueTime, scheduler) {
- return observableDefer(function () {
- return observableDelayRelative(source, dueTime - scheduler.now(), scheduler);
- });
- }
- function delayWithSelector(source, subscriptionDelay, delayDurationSelector) {
- var subDelay, selector;
- if (isFunction(subscriptionDelay)) {
- selector = subscriptionDelay;
- } else {
- subDelay = subscriptionDelay;
- selector = delayDurationSelector;
- }
- return new AnonymousObservable(function (o) {
- var delays = new CompositeDisposable(), atEnd = false, subscription = new SerialDisposable();
- function start() {
- subscription.setDisposable(source.subscribe(
- function (x) {
- var delay = tryCatch(selector)(x);
- if (delay === errorObj) { return o.onError(delay.e); }
- var d = new SingleAssignmentDisposable();
- delays.add(d);
- d.setDisposable(delay.subscribe(
- function () {
- o.onNext(x);
- delays.remove(d);
- done();
- },
- function (e) { o.onError(e); },
- function () {
- o.onNext(x);
- delays.remove(d);
- done();
- }
- ));
- },
- function (e) { o.onError(e); },
- function () {
- atEnd = true;
- subscription.dispose();
- done();
- }
- ));
- }
- function done () {
- atEnd && delays.length === 0 && o.onCompleted();
- }
- if (!subDelay) {
- start();
- } else {
- subscription.setDisposable(subDelay.subscribe(start, function (e) { o.onError(e); }, start));
- }
- return new BinaryDisposable(subscription, delays);
- }, source);
- }
-
- observableProto.delay = function () {
- var firstArg = arguments[0];
- if (typeof firstArg === 'number' || firstArg instanceof Date) {
- var dueTime = firstArg, scheduler = arguments[1];
- isScheduler(scheduler) || (scheduler = defaultScheduler);
- return dueTime instanceof Date ?
- observableDelayAbsolute(this, dueTime, scheduler) :
- observableDelayRelative(this, dueTime, scheduler);
- } else if (Observable.isObservable(firstArg) || isFunction(firstArg)) {
- return delayWithSelector(this, firstArg, arguments[1]);
- } else {
- throw new Error('Invalid arguments');
- }
- };
- var DebounceObservable = (function (__super__) {
- inherits(DebounceObservable, __super__);
- function DebounceObservable(source, dt, s) {
- isScheduler(s) || (s = defaultScheduler);
- this.source = source;
- this._dt = dt;
- this._s = s;
- __super__.call(this);
- }
- DebounceObservable.prototype.subscribeCore = function (o) {
- var cancelable = new SerialDisposable();
- return new BinaryDisposable(
- this.source.subscribe(new DebounceObserver(o, this._dt, this._s, cancelable)),
- cancelable);
- };
- return DebounceObservable;
- }(ObservableBase));
- var DebounceObserver = (function (__super__) {
- inherits(DebounceObserver, __super__);
- function DebounceObserver(observer, dueTime, scheduler, cancelable) {
- this._o = observer;
- this._d = dueTime;
- this._scheduler = scheduler;
- this._c = cancelable;
- this._v = null;
- this._hv = false;
- this._id = 0;
- __super__.call(this);
- }
- function scheduleFuture(s, state) {
- state.self._hv && state.self._id === state.currentId && state.self._o.onNext(state.x);
- state.self._hv = false;
- }
- DebounceObserver.prototype.next = function (x) {
- this._hv = true;
- this._v = x;
- var currentId = ++this._id, d = new SingleAssignmentDisposable();
- this._c.setDisposable(d);
- d.setDisposable(this._scheduler.scheduleFuture(this, this._d, function (_, self) {
- self._hv && self._id === currentId && self._o.onNext(x);
- self._hv = false;
- }));
- };
- DebounceObserver.prototype.error = function (e) {
- this._c.dispose();
- this._o.onError(e);
- this._hv = false;
- this._id++;
- };
- DebounceObserver.prototype.completed = function () {
- this._c.dispose();
- this._hv && this._o.onNext(this._v);
- this._o.onCompleted();
- this._hv = false;
- this._id++;
- };
- return DebounceObserver;
- }(AbstractObserver));
- function debounceWithSelector(source, durationSelector) {
- return new AnonymousObservable(function (o) {
- var value, hasValue = false, cancelable = new SerialDisposable(), id = 0;
- var subscription = source.subscribe(
- function (x) {
- var throttle = tryCatch(durationSelector)(x);
- if (throttle === errorObj) { return o.onError(throttle.e); }
- isPromise(throttle) && (throttle = observableFromPromise(throttle));
- hasValue = true;
- value = x;
- id++;
- var currentid = id, d = new SingleAssignmentDisposable();
- cancelable.setDisposable(d);
- d.setDisposable(throttle.subscribe(
- function () {
- hasValue && id === currentid && o.onNext(value);
- hasValue = false;
- d.dispose();
- },
- function (e) { o.onError(e); },
- function () {
- hasValue && id === currentid && o.onNext(value);
- hasValue = false;
- d.dispose();
- }
- ));
- },
- function (e) {
- cancelable.dispose();
- o.onError(e);
- hasValue = false;
- id++;
- },
- function () {
- cancelable.dispose();
- hasValue && o.onNext(value);
- o.onCompleted();
- hasValue = false;
- id++;
- }
- );
- return new BinaryDisposable(subscription, cancelable);
- }, source);
- }
- observableProto.debounce = function () {
- if (isFunction (arguments[0])) {
- return debounceWithSelector(this, arguments[0]);
- } else if (typeof arguments[0] === 'number') {
- return new DebounceObservable(this, arguments[0], arguments[1]);
- } else {
- throw new Error('Invalid arguments');
- }
- };
- var TimestampObservable = (function (__super__) {
- inherits(TimestampObservable, __super__);
- function TimestampObservable(source, s) {
- this.source = source;
- this._s = s;
- __super__.call(this);
- }
- TimestampObservable.prototype.subscribeCore = function (o) {
- return this.source.subscribe(new TimestampObserver(o, this._s));
- };
- return TimestampObservable;
- }(ObservableBase));
- var TimestampObserver = (function (__super__) {
- inherits(TimestampObserver, __super__);
- function TimestampObserver(o, s) {
- this._o = o;
- this._s = s;
- __super__.call(this);
- }
- TimestampObserver.prototype.next = function (x) {
- this._o.onNext({ value: x, timestamp: this._s.now() });
- };
- TimestampObserver.prototype.error = function (e) {
- this._o.onError(e);
- };
- TimestampObserver.prototype.completed = function () {
- this._o.onCompleted();
- };
- return TimestampObserver;
- }(AbstractObserver));
-
- observableProto.timestamp = function (scheduler) {
- isScheduler(scheduler) || (scheduler = defaultScheduler);
- return new TimestampObservable(this, scheduler);
- };
- var SampleObservable = (function(__super__) {
- inherits(SampleObservable, __super__);
- function SampleObservable(source, sampler) {
- this.source = source;
- this._sampler = sampler;
- __super__.call(this);
- }
- SampleObservable.prototype.subscribeCore = function (o) {
- var state = {
- o: o,
- atEnd: false,
- value: null,
- hasValue: false,
- sourceSubscription: new SingleAssignmentDisposable()
- };
- state.sourceSubscription.setDisposable(this.source.subscribe(new SampleSourceObserver(state)));
- return new BinaryDisposable(
- state.sourceSubscription,
- this._sampler.subscribe(new SamplerObserver(state))
- );
- };
- return SampleObservable;
- }(ObservableBase));
- var SamplerObserver = (function(__super__) {
- inherits(SamplerObserver, __super__);
- function SamplerObserver(s) {
- this._s = s;
- __super__.call(this);
- }
- SamplerObserver.prototype._handleMessage = function () {
- if (this._s.hasValue) {
- this._s.hasValue = false;
- this._s.o.onNext(this._s.value);
- }
- this._s.atEnd && this._s.o.onCompleted();
- };
- SamplerObserver.prototype.next = function () { this._handleMessage(); };
- SamplerObserver.prototype.error = function (e) { this._s.onError(e); };
- SamplerObserver.prototype.completed = function () { this._handleMessage(); };
- return SamplerObserver;
- }(AbstractObserver));
- var SampleSourceObserver = (function(__super__) {
- inherits(SampleSourceObserver, __super__);
- function SampleSourceObserver(s) {
- this._s = s;
- __super__.call(this);
- }
- SampleSourceObserver.prototype.next = function (x) {
- this._s.hasValue = true;
- this._s.value = x;
- };
- SampleSourceObserver.prototype.error = function (e) { this._s.o.onError(e); };
- SampleSourceObserver.prototype.completed = function () {
- this._s.atEnd = true;
- this._s.sourceSubscription.dispose();
- };
- return SampleSourceObserver;
- }(AbstractObserver));
-
- observableProto.sample = function (intervalOrSampler, scheduler) {
- isScheduler(scheduler) || (scheduler = defaultScheduler);
- return typeof intervalOrSampler === 'number' ?
- new SampleObservable(this, observableinterval(intervalOrSampler, scheduler)) :
- new SampleObservable(this, intervalOrSampler);
- };
- var TimeoutError = Rx.TimeoutError = function(message) {
- this.message = message || 'Timeout has occurred';
- this.name = 'TimeoutError';
- Error.call(this);
- };
- TimeoutError.prototype = Object.create(Error.prototype);
- function timeoutWithSelector(source, firstTimeout, timeoutDurationSelector, other) {
- if (isFunction(firstTimeout)) {
- other = timeoutDurationSelector;
- timeoutDurationSelector = firstTimeout;
- firstTimeout = observableNever();
- }
- Observable.isObservable(other) || (other = observableThrow(new TimeoutError()));
- return new AnonymousObservable(function (o) {
- var subscription = new SerialDisposable(),
- timer = new SerialDisposable(),
- original = new SingleAssignmentDisposable();
- subscription.setDisposable(original);
- var id = 0, switched = false;
- function setTimer(timeout) {
- var myId = id, d = new SingleAssignmentDisposable();
- function timerWins() {
- switched = (myId === id);
- return switched;
- }
- timer.setDisposable(d);
- d.setDisposable(timeout.subscribe(function () {
- timerWins() && subscription.setDisposable(other.subscribe(o));
- d.dispose();
- }, function (e) {
- timerWins() && o.onError(e);
- }, function () {
- timerWins() && subscription.setDisposable(other.subscribe(o));
- }));
- };
- setTimer(firstTimeout);
- function oWins() {
- var res = !switched;
- if (res) { id++; }
- return res;
- }
- original.setDisposable(source.subscribe(function (x) {
- if (oWins()) {
- o.onNext(x);
- var timeout = tryCatch(timeoutDurationSelector)(x);
- if (timeout === errorObj) { return o.onError(timeout.e); }
- setTimer(isPromise(timeout) ? observableFromPromise(timeout) : timeout);
- }
- }, function (e) {
- oWins() && o.onError(e);
- }, function () {
- oWins() && o.onCompleted();
- }));
- return new BinaryDisposable(subscription, timer);
- }, source);
- }
- function timeout(source, dueTime, other, scheduler) {
- if (isScheduler(other)) {
- scheduler = other;
- other = observableThrow(new TimeoutError());
- }
- if (other instanceof Error) { other = observableThrow(other); }
- isScheduler(scheduler) || (scheduler = defaultScheduler);
- Observable.isObservable(other) || (other = observableThrow(new TimeoutError()));
- return new AnonymousObservable(function (o) {
- var id = 0,
- original = new SingleAssignmentDisposable(),
- subscription = new SerialDisposable(),
- switched = false,
- timer = new SerialDisposable();
- subscription.setDisposable(original);
- function createTimer() {
- var myId = id;
- timer.setDisposable(scheduler.scheduleFuture(null, dueTime, function () {
- switched = id === myId;
- if (switched) {
- isPromise(other) && (other = observableFromPromise(other));
- subscription.setDisposable(other.subscribe(o));
- }
- }));
- }
- createTimer();
- original.setDisposable(source.subscribe(function (x) {
- if (!switched) {
- id++;
- o.onNext(x);
- createTimer();
- }
- }, function (e) {
- if (!switched) {
- id++;
- o.onError(e);
- }
- }, function () {
- if (!switched) {
- id++;
- o.onCompleted();
- }
- }));
- return new BinaryDisposable(subscription, timer);
- }, source);
- }
- observableProto.timeout = function () {
- var firstArg = arguments[0];
- if (firstArg instanceof Date || typeof firstArg === 'number') {
- return timeout(this, firstArg, arguments[1], arguments[2]);
- } else if (Observable.isObservable(firstArg) || isFunction(firstArg)) {
- return timeoutWithSelector(this, firstArg, arguments[1], arguments[2]);
- } else {
- throw new Error('Invalid arguments');
- }
- };
-
- observableProto.throttle = function (windowDuration, scheduler) {
- isScheduler(scheduler) || (scheduler = defaultScheduler);
- var duration = +windowDuration || 0;
- if (duration <= 0) { throw new RangeError('windowDuration cannot be less or equal zero.'); }
- var source = this;
- return new AnonymousObservable(function (o) {
- var lastOnNext = 0;
- return source.subscribe(
- function (x) {
- var now = scheduler.now();
- if (lastOnNext === 0 || now - lastOnNext >= duration) {
- lastOnNext = now;
- o.onNext(x);
- }
- },function (e) { o.onError(e); }, function () { o.onCompleted(); }
- );
- }, source);
- };
- var PausableObservable = (function (__super__) {
- inherits(PausableObservable, __super__);
- function PausableObservable(source, pauser) {
- this.source = source;
- this.controller = new Subject();
- this.paused = true;
- if (pauser && pauser.subscribe) {
- this.pauser = this.controller.merge(pauser);
- } else {
- this.pauser = this.controller;
- }
- __super__.call(this);
- }
- PausableObservable.prototype._subscribe = function (o) {
- var conn = this.source.publish(),
- subscription = conn.subscribe(o),
- connection = disposableEmpty;
- var pausable = this.pauser.startWith(!this.paused).distinctUntilChanged().subscribe(function (b) {
- if (b) {
- connection = conn.connect();
- } else {
- connection.dispose();
- connection = disposableEmpty;
- }
- });
- return new NAryDisposable([subscription, connection, pausable]);
- };
- PausableObservable.prototype.pause = function () {
- this.paused = true;
- this.controller.onNext(false);
- };
- PausableObservable.prototype.resume = function () {
- this.paused = false;
- this.controller.onNext(true);
- };
- return PausableObservable;
- }(Observable));
-
- observableProto.pausable = function (pauser) {
- return new PausableObservable(this, pauser);
- };
- function combineLatestSource(source, subject, resultSelector) {
- return new AnonymousObservable(function (o) {
- var hasValue = [false, false],
- hasValueAll = false,
- isDone = false,
- values = new Array(2),
- err;
- function next(x, i) {
- values[i] = x;
- hasValue[i] = true;
- if (hasValueAll || (hasValueAll = hasValue.every(identity))) {
- if (err) { return o.onError(err); }
- var res = tryCatch(resultSelector).apply(null, values);
- if (res === errorObj) { return o.onError(res.e); }
- o.onNext(res);
- }
- isDone && values[1] && o.onCompleted();
- }
- return new BinaryDisposable(
- source.subscribe(
- function (x) {
- next(x, 0);
- },
- function (e) {
- if (values[1]) {
- o.onError(e);
- } else {
- err = e;
- }
- },
- function () {
- isDone = true;
- values[1] && o.onCompleted();
- }),
- subject.subscribe(
- function (x) {
- next(x, 1);
- },
- function (e) { o.onError(e); },
- function () {
- isDone = true;
- next(true, 1);
- })
- );
- }, source);
- }
- var PausableBufferedObservable = (function (__super__) {
- inherits(PausableBufferedObservable, __super__);
- function PausableBufferedObservable(source, pauser) {
- this.source = source;
- this.controller = new Subject();
- this.paused = true;
- if (pauser && pauser.subscribe) {
- this.pauser = this.controller.merge(pauser);
- } else {
- this.pauser = this.controller;
- }
- __super__.call(this);
- }
- PausableBufferedObservable.prototype._subscribe = function (o) {
- var q = [], previousShouldFire;
- function drainQueue() { while (q.length > 0) { o.onNext(q.shift()); } }
- var subscription =
- combineLatestSource(
- this.source,
- this.pauser.startWith(!this.paused).distinctUntilChanged(),
- function (data, shouldFire) {
- return { data: data, shouldFire: shouldFire };
- })
- .subscribe(
- function (results) {
- if (previousShouldFire !== undefined && results.shouldFire !== previousShouldFire) {
- previousShouldFire = results.shouldFire;
-
- if (results.shouldFire) { drainQueue(); }
- } else {
- previousShouldFire = results.shouldFire;
-
- if (results.shouldFire) {
- o.onNext(results.data);
- } else {
- q.push(results.data);
- }
- }
- },
- function (err) {
- drainQueue();
- o.onError(err);
- },
- function () {
- drainQueue();
- o.onCompleted();
- }
- );
- return subscription;
- };
- PausableBufferedObservable.prototype.pause = function () {
- this.paused = true;
- this.controller.onNext(false);
- };
- PausableBufferedObservable.prototype.resume = function () {
- this.paused = false;
- this.controller.onNext(true);
- };
- return PausableBufferedObservable;
- }(Observable));
-
- observableProto.pausableBuffered = function (pauser) {
- return new PausableBufferedObservable(this, pauser);
- };
- var ControlledObservable = (function (__super__) {
- inherits(ControlledObservable, __super__);
- function ControlledObservable (source, enableQueue, scheduler) {
- __super__.call(this);
- this.subject = new ControlledSubject(enableQueue, scheduler);
- this.source = source.multicast(this.subject).refCount();
- }
- ControlledObservable.prototype._subscribe = function (o) {
- return this.source.subscribe(o);
- };
- ControlledObservable.prototype.request = function (numberOfItems) {
- return this.subject.request(numberOfItems == null ? -1 : numberOfItems);
- };
- return ControlledObservable;
- }(Observable));
- var ControlledSubject = (function (__super__) {
- inherits(ControlledSubject, __super__);
- function ControlledSubject(enableQueue, scheduler) {
- enableQueue == null && (enableQueue = true);
- __super__.call(this);
- this.subject = new Subject();
- this.enableQueue = enableQueue;
- this.queue = enableQueue ? [] : null;
- this.requestedCount = 0;
- this.requestedDisposable = null;
- this.error = null;
- this.hasFailed = false;
- this.hasCompleted = false;
- this.scheduler = scheduler || currentThreadScheduler;
- }
- addProperties(ControlledSubject.prototype, Observer, {
- _subscribe: function (o) {
- return this.subject.subscribe(o);
- },
- onCompleted: function () {
- this.hasCompleted = true;
- if (!this.enableQueue || this.queue.length === 0) {
- this.subject.onCompleted();
- this.disposeCurrentRequest();
- } else {
- this.queue.push(Notification.createOnCompleted());
- }
- },
- onError: function (error) {
- this.hasFailed = true;
- this.error = error;
- if (!this.enableQueue || this.queue.length === 0) {
- this.subject.onError(error);
- this.disposeCurrentRequest();
- } else {
- this.queue.push(Notification.createOnError(error));
- }
- },
- onNext: function (value) {
- if (this.requestedCount <= 0) {
- this.enableQueue && this.queue.push(Notification.createOnNext(value));
- } else {
- (this.requestedCount-- === 0) && this.disposeCurrentRequest();
- this.subject.onNext(value);
- }
- },
- _processRequest: function (numberOfItems) {
- if (this.enableQueue) {
- while (this.queue.length > 0 && (numberOfItems > 0 || this.queue[0].kind !== 'N')) {
- var first = this.queue.shift();
- first.accept(this.subject);
- if (first.kind === 'N') {
- numberOfItems--;
- } else {
- this.disposeCurrentRequest();
- this.queue = [];
- }
- }
- }
- return numberOfItems;
- },
- request: function (number) {
- this.disposeCurrentRequest();
- var self = this;
- this.requestedDisposable = this.scheduler.schedule(number,
- function(s, i) {
- var remaining = self._processRequest(i);
- var stopped = self.hasCompleted || self.hasFailed;
- if (!stopped && remaining > 0) {
- self.requestedCount = remaining;
- return disposableCreate(function () {
- self.requestedCount = 0;
- });
-
-
-
- }
- });
- return this.requestedDisposable;
- },
- disposeCurrentRequest: function () {
- if (this.requestedDisposable) {
- this.requestedDisposable.dispose();
- this.requestedDisposable = null;
- }
- }
- });
- return ControlledSubject;
- }(Observable));
-
- observableProto.controlled = function (enableQueue, scheduler) {
- if (enableQueue && isScheduler(enableQueue)) {
- scheduler = enableQueue;
- enableQueue = true;
- }
- if (enableQueue == null) { enableQueue = true; }
- return new ControlledObservable(this, enableQueue, scheduler);
- };
-
- observableProto.pipe = function (dest) {
- var source = this.pausableBuffered();
- function onDrain() {
- source.resume();
- }
- dest.addListener('drain', onDrain);
- source.subscribe(
- function (x) {
- !dest.write(x) && source.pause();
- },
- function (err) {
- dest.emit('error', err);
- },
- function () {
-
- !dest._isStdio && dest.end();
- dest.removeListener('drain', onDrain);
- });
- source.resume();
- return dest;
- };
- var TransduceObserver = (function (__super__) {
- inherits(TransduceObserver, __super__);
- function TransduceObserver(o, xform) {
- this._o = o;
- this._xform = xform;
- __super__.call(this);
- }
- TransduceObserver.prototype.next = function (x) {
- var res = tryCatch(this._xform['@@transducer/step']).call(this._xform, this._o, x);
- if (res === errorObj) { this._o.onError(res.e); }
- };
- TransduceObserver.prototype.error = function (e) { this._o.onError(e); };
- TransduceObserver.prototype.completed = function () {
- this._xform['@@transducer/result'](this._o);
- };
- return TransduceObserver;
- }(AbstractObserver));
- function transformForObserver(o) {
- return {
- '@@transducer/init': function() {
- return o;
- },
- '@@transducer/step': function(obs, input) {
- return obs.onNext(input);
- },
- '@@transducer/result': function(obs) {
- return obs.onCompleted();
- }
- };
- }
-
- observableProto.transduce = function(transducer) {
- var source = this;
- return new AnonymousObservable(function(o) {
- var xform = transducer(transformForObserver(o));
- return source.subscribe(new TransduceObserver(o, xform));
- }, source);
- };
- var AnonymousObservable = Rx.AnonymousObservable = (function (__super__) {
- inherits(AnonymousObservable, __super__);
-
- function fixSubscriber(subscriber) {
- return subscriber && isFunction(subscriber.dispose) ? subscriber :
- isFunction(subscriber) ? disposableCreate(subscriber) : disposableEmpty;
- }
- function setDisposable(s, state) {
- var ado = state[0], self = state[1];
- var sub = tryCatch(self.__subscribe).call(self, ado);
- if (sub === errorObj && !ado.fail(errorObj.e)) { thrower(errorObj.e); }
- ado.setDisposable(fixSubscriber(sub));
- }
- function AnonymousObservable(subscribe, parent) {
- this.source = parent;
- this.__subscribe = subscribe;
- __super__.call(this);
- }
- AnonymousObservable.prototype._subscribe = function (o) {
- var ado = new AutoDetachObserver(o), state = [ado, this];
- if (currentThreadScheduler.scheduleRequired()) {
- currentThreadScheduler.schedule(state, setDisposable);
- } else {
- setDisposable(null, state);
- }
- return ado;
- };
- return AnonymousObservable;
- }(Observable));
- var AutoDetachObserver = (function (__super__) {
- inherits(AutoDetachObserver, __super__);
- function AutoDetachObserver(observer) {
- __super__.call(this);
- this.observer = observer;
- this.m = new SingleAssignmentDisposable();
- }
- var AutoDetachObserverPrototype = AutoDetachObserver.prototype;
- AutoDetachObserverPrototype.next = function (value) {
- var result = tryCatch(this.observer.onNext).call(this.observer, value);
- if (result === errorObj) {
- this.dispose();
- thrower(result.e);
- }
- };
- AutoDetachObserverPrototype.error = function (err) {
- var result = tryCatch(this.observer.onError).call(this.observer, err);
- this.dispose();
- result === errorObj && thrower(result.e);
- };
- AutoDetachObserverPrototype.completed = function () {
- var result = tryCatch(this.observer.onCompleted).call(this.observer);
- this.dispose();
- result === errorObj && thrower(result.e);
- };
- AutoDetachObserverPrototype.setDisposable = function (value) { this.m.setDisposable(value); };
- AutoDetachObserverPrototype.getDisposable = function () { return this.m.getDisposable(); };
- AutoDetachObserverPrototype.dispose = function () {
- __super__.prototype.dispose.call(this);
- this.m.dispose();
- };
- return AutoDetachObserver;
- }(AbstractObserver));
- var InnerSubscription = function (s, o) {
- this._s = s;
- this._o = o;
- };
- InnerSubscription.prototype.dispose = function () {
- if (!this._s.isDisposed && this._o !== null) {
- var idx = this._s.observers.indexOf(this._o);
- this._s.observers.splice(idx, 1);
- this._o = null;
- }
- };
-
- var Subject = Rx.Subject = (function (__super__) {
- inherits(Subject, __super__);
- function Subject() {
- __super__.call(this);
- this.isDisposed = false;
- this.isStopped = false;
- this.observers = [];
- this.hasError = false;
- }
- addProperties(Subject.prototype, Observer.prototype, {
- _subscribe: function (o) {
- checkDisposed(this);
- if (!this.isStopped) {
- this.observers.push(o);
- return new InnerSubscription(this, o);
- }
- if (this.hasError) {
- o.onError(this.error);
- return disposableEmpty;
- }
- o.onCompleted();
- return disposableEmpty;
- },
-
- hasObservers: function () { checkDisposed(this); return this.observers.length > 0; },
-
- onCompleted: function () {
- checkDisposed(this);
- if (!this.isStopped) {
- this.isStopped = true;
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- os[i].onCompleted();
- }
- this.observers.length = 0;
- }
- },
-
- onError: function (error) {
- checkDisposed(this);
- if (!this.isStopped) {
- this.isStopped = true;
- this.error = error;
- this.hasError = true;
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- os[i].onError(error);
- }
- this.observers.length = 0;
- }
- },
-
- onNext: function (value) {
- checkDisposed(this);
- if (!this.isStopped) {
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- os[i].onNext(value);
- }
- }
- },
-
- dispose: function () {
- this.isDisposed = true;
- this.observers = null;
- }
- });
-
- Subject.create = function (observer, observable) {
- return new AnonymousSubject(observer, observable);
- };
- return Subject;
- }(Observable));
-
- var AsyncSubject = Rx.AsyncSubject = (function (__super__) {
- inherits(AsyncSubject, __super__);
-
- function AsyncSubject() {
- __super__.call(this);
- this.isDisposed = false;
- this.isStopped = false;
- this.hasValue = false;
- this.observers = [];
- this.hasError = false;
- }
- addProperties(AsyncSubject.prototype, Observer.prototype, {
- _subscribe: function (o) {
- checkDisposed(this);
- if (!this.isStopped) {
- this.observers.push(o);
- return new InnerSubscription(this, o);
- }
- if (this.hasError) {
- o.onError(this.error);
- } else if (this.hasValue) {
- o.onNext(this.value);
- o.onCompleted();
- } else {
- o.onCompleted();
- }
- return disposableEmpty;
- },
-
- hasObservers: function () { checkDisposed(this); return this.observers.length > 0; },
-
- onCompleted: function () {
- var i, len;
- checkDisposed(this);
- if (!this.isStopped) {
- this.isStopped = true;
- var os = cloneArray(this.observers), len = os.length;
- if (this.hasValue) {
- for (i = 0; i < len; i++) {
- var o = os[i];
- o.onNext(this.value);
- o.onCompleted();
- }
- } else {
- for (i = 0; i < len; i++) {
- os[i].onCompleted();
- }
- }
- this.observers.length = 0;
- }
- },
-
- onError: function (error) {
- checkDisposed(this);
- if (!this.isStopped) {
- this.isStopped = true;
- this.hasError = true;
- this.error = error;
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- os[i].onError(error);
- }
- this.observers.length = 0;
- }
- },
-
- onNext: function (value) {
- checkDisposed(this);
- if (this.isStopped) { return; }
- this.value = value;
- this.hasValue = true;
- },
-
- dispose: function () {
- this.isDisposed = true;
- this.observers = null;
- this.error = null;
- this.value = null;
- }
- });
- return AsyncSubject;
- }(Observable));
- var AnonymousSubject = Rx.AnonymousSubject = (function (__super__) {
- inherits(AnonymousSubject, __super__);
- function AnonymousSubject(observer, observable) {
- this.observer = observer;
- this.observable = observable;
- __super__.call(this);
- }
- addProperties(AnonymousSubject.prototype, Observer.prototype, {
- _subscribe: function (o) {
- return this.observable.subscribe(o);
- },
- onCompleted: function () {
- this.observer.onCompleted();
- },
- onError: function (error) {
- this.observer.onError(error);
- },
- onNext: function (value) {
- this.observer.onNext(value);
- }
- });
- return AnonymousSubject;
- }(Observable));
-
- var BehaviorSubject = Rx.BehaviorSubject = (function (__super__) {
- inherits(BehaviorSubject, __super__);
- function BehaviorSubject(value) {
- __super__.call(this);
- this.value = value;
- this.observers = [];
- this.isDisposed = false;
- this.isStopped = false;
- this.hasError = false;
- }
- addProperties(BehaviorSubject.prototype, Observer.prototype, {
- _subscribe: function (o) {
- checkDisposed(this);
- if (!this.isStopped) {
- this.observers.push(o);
- o.onNext(this.value);
- return new InnerSubscription(this, o);
- }
- if (this.hasError) {
- o.onError(this.error);
- } else {
- o.onCompleted();
- }
- return disposableEmpty;
- },
-
- getValue: function () {
- checkDisposed(this);
- if (this.hasError) { thrower(this.error); }
- return this.value;
- },
-
- hasObservers: function () { checkDisposed(this); return this.observers.length > 0; },
-
- onCompleted: function () {
- checkDisposed(this);
- if (this.isStopped) { return; }
- this.isStopped = true;
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- os[i].onCompleted();
- }
- this.observers.length = 0;
- },
-
- onError: function (error) {
- checkDisposed(this);
- if (this.isStopped) { return; }
- this.isStopped = true;
- this.hasError = true;
- this.error = error;
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- os[i].onError(error);
- }
- this.observers.length = 0;
- },
-
- onNext: function (value) {
- checkDisposed(this);
- if (this.isStopped) { return; }
- this.value = value;
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- os[i].onNext(value);
- }
- },
-
- dispose: function () {
- this.isDisposed = true;
- this.observers = null;
- this.value = null;
- this.error = null;
- }
- });
- return BehaviorSubject;
- }(Observable));
-
- var ReplaySubject = Rx.ReplaySubject = (function (__super__) {
- var maxSafeInteger = Math.pow(2, 53) - 1;
- function createRemovableDisposable(subject, observer) {
- return disposableCreate(function () {
- observer.dispose();
- !subject.isDisposed && subject.observers.splice(subject.observers.indexOf(observer), 1);
- });
- }
- inherits(ReplaySubject, __super__);
-
- function ReplaySubject(bufferSize, windowSize, scheduler) {
- this.bufferSize = bufferSize == null ? maxSafeInteger : bufferSize;
- this.windowSize = windowSize == null ? maxSafeInteger : windowSize;
- this.scheduler = scheduler || currentThreadScheduler;
- this.q = [];
- this.observers = [];
- this.isStopped = false;
- this.isDisposed = false;
- this.hasError = false;
- this.error = null;
- __super__.call(this);
- }
- addProperties(ReplaySubject.prototype, Observer.prototype, {
- _subscribe: function (o) {
- checkDisposed(this);
- var so = new ScheduledObserver(this.scheduler, o), subscription = createRemovableDisposable(this, so);
- this._trim(this.scheduler.now());
- this.observers.push(so);
- for (var i = 0, len = this.q.length; i < len; i++) {
- so.onNext(this.q[i].value);
- }
- if (this.hasError) {
- so.onError(this.error);
- } else if (this.isStopped) {
- so.onCompleted();
- }
- so.ensureActive();
- return subscription;
- },
-
- hasObservers: function () { checkDisposed(this); return this.observers.length > 0; },
- _trim: function (now) {
- while (this.q.length > this.bufferSize) {
- this.q.shift();
- }
- while (this.q.length > 0 && (now - this.q[0].interval) > this.windowSize) {
- this.q.shift();
- }
- },
-
- onNext: function (value) {
- checkDisposed(this);
- if (this.isStopped) { return; }
- var now = this.scheduler.now();
- this.q.push({ interval: now, value: value });
- this._trim(now);
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- var observer = os[i];
- observer.onNext(value);
- observer.ensureActive();
- }
- },
-
- onError: function (error) {
- checkDisposed(this);
- if (this.isStopped) { return; }
- this.isStopped = true;
- this.error = error;
- this.hasError = true;
- var now = this.scheduler.now();
- this._trim(now);
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- var observer = os[i];
- observer.onError(error);
- observer.ensureActive();
- }
- this.observers.length = 0;
- },
-
- onCompleted: function () {
- checkDisposed(this);
- if (this.isStopped) { return; }
- this.isStopped = true;
- var now = this.scheduler.now();
- this._trim(now);
- for (var i = 0, os = cloneArray(this.observers), len = os.length; i < len; i++) {
- var observer = os[i];
- observer.onCompleted();
- observer.ensureActive();
- }
- this.observers.length = 0;
- },
-
- dispose: function () {
- this.isDisposed = true;
- this.observers = null;
- }
- });
- return ReplaySubject;
- }(Observable));
-
- Rx.Pauser = (function (__super__) {
- inherits(Pauser, __super__);
- function Pauser() {
- __super__.call(this);
- }
-
- Pauser.prototype.pause = function () { this.onNext(false); };
-
- Pauser.prototype.resume = function () { this.onNext(true); };
- return Pauser;
- }(Subject));
- if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
- root.Rx = Rx;
- define(function() {
- return Rx;
- });
- } else if (freeExports && freeModule) {
-
- if (moduleExports) {
- (freeModule.exports = Rx).Rx = Rx;
- } else {
- freeExports.Rx = Rx;
- }
- } else {
-
- root.Rx = Rx;
- }
-
- var rEndingLine = captureLine();
- }.call(this));
|